Subject: ICMP REQUEST

Hi, All

i am developing a ping program, through my program I get ECHO_REPLY..but I
dont get ECHO_REQUEST.

is that the ECHO_REQUEST is handled by kernel.?

please respond as it is urgent.

thanks,
-hemanshu


2003-07-23 17:57:49

by jw schultz

[permalink] [raw]
Subject: Re: ICMP REQUEST

On Wed, Jul 23, 2003 at 12:53:35PM +0530, Hemanshu Kanji Bhadra, Noida wrote:
> Hi, All
>
> i am developing a ping program, through my program I get ECHO_REPLY..but I
> dont get ECHO_REQUEST.
>
> is that the ECHO_REQUEST is handled by kernel.?
>
> please respond as it is urgent.

In most cases ICMP ECHO_REQUEST is handled by the NIC. The
kernel doesn't even see it. That is why you can ping a
crashed system; the NIC is still configured.

--
________________________________________________________________
J.W. Schultz Pegasystems Technologies
email address: [email protected]

Remember Cernan and Schmitt

2003-07-23 18:08:01

by David Miller

[permalink] [raw]
Subject: Re: ICMP REQUEST

On Wed, 23 Jul 2003 11:12:12 -0700
jw schultz <[email protected]> wrote:

> On Wed, Jul 23, 2003 at 12:53:35PM +0530, Hemanshu Kanji Bhadra, Noida wrote:
> > Hi, All
> >
> > i am developing a ping program, through my program I get ECHO_REPLY..but I
> > dont get ECHO_REQUEST.
> >
> > is that the ECHO_REQUEST is handled by kernel.?
> >
> > please respond as it is urgent.
>
> In most cases ICMP ECHO_REQUEST is handled by the NIC. The
> kernel doesn't even see it. That is why you can ping a
> crashed system; the NIC is still configured.

False.

The reason you can ping a crashed system is that the network
stack and the card are still functioning in the kernel.

2003-07-23 18:11:42

by Richard B. Johnson

[permalink] [raw]
Subject: Re: ICMP REQUEST

On Wed, 23 Jul 2003, jw schultz wrote:

> On Wed, Jul 23, 2003 at 12:53:35PM +0530, Hemanshu Kanji Bhadra, Noida wrote:
> > Hi, All
> >
> > i am developing a ping program, through my program I get ECHO_REPLY..but I
> > dont get ECHO_REQUEST.
> >
> > is that the ECHO_REQUEST is handled by kernel.?
> >
> > please respond as it is urgent.
>
> In most cases ICMP ECHO_REQUEST is handled by the NIC. The
> kernel doesn't even see it. That is why you can ping a
> crashed system; the NIC is still configured.
>

No. It may be handled entirely in an interrupt service routine, but
never by the hardware alone, even the "smart" hardware that does
IP checksumming. There isn't enough information available. The
echo request contains the IP that the caller seeks to respond.
The responder needs to know, not only its IP address, but also the
IP address of all the IPs it's going to ARP (proxy ARP).

Cheers,
Dick Johnson
Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.

2003-07-23 18:58:00

by jw schultz

[permalink] [raw]
Subject: Re: ICMP REQUEST

On Wed, Jul 23, 2003 at 02:26:41PM -0400, Richard B. Johnson wrote:
> On Wed, 23 Jul 2003, jw schultz wrote:
>
> > On Wed, Jul 23, 2003 at 12:53:35PM +0530, Hemanshu Kanji Bhadra, Noida wrote:
> > > Hi, All
> > >
> > > i am developing a ping program, through my program I get ECHO_REPLY..but I
> > > dont get ECHO_REQUEST.
> > >
> > > is that the ECHO_REQUEST is handled by kernel.?
> > >
> > > please respond as it is urgent.
> >
> > In most cases ICMP ECHO_REQUEST is handled by the NIC. The
> > kernel doesn't even see it. That is why you can ping a
> > crashed system; the NIC is still configured.
> >
>
> No. It may be handled entirely in an interrupt service routine, but
> never by the hardware alone, even the "smart" hardware that does
> IP checksumming. There isn't enough information available. The
> echo request contains the IP that the caller seeks to respond.
> The responder needs to know, not only its IP address, but also the
> IP address of all the IPs it's going to ARP (proxy ARP).

Thanks for the correction although i wouldn't say "never".

I did have experience with some minis where the NIC did
handle ICMP internally for anything on the local subnet for
which it already had an arp entry. But these NICs had
68000s as embedded processors, did bi-directional DMA and
offloaded part of the network stack. The NIC would continue
to respond even while a new kernel was being booted,
glitching only when the NIC was reset. Back when CPU clocks
were 16MHz this kind of offloading made sense. My
experience seems to have clouded current expectations.

--
________________________________________________________________
J.W. Schultz Pegasystems Technologies
email address: [email protected]

Remember Cernan and Schmitt