Link and network level in the tcp/ip stack

Erik Nørgaard norgaard at
Fri May 6 21:17:14 UTC 2011


This is a generic question about may, should and must:

I have the following setup:

  |.196		 |.1
SRV		GW--------- RN
  |.28		 |.1

The server, SRV, has default gateway set to, no routing has 
been configured for the 10.225.162/24 network. The gateway is a router, 
no NAT or firewall. Yup, we do have this setup, don't ask why.

Now, the remote node RN pings the server on fine, no 
problem. Then it pings and get destination unreachable.

OK, so I did tcpdump first on the interface, and saw icmp 
echo requests coming in, but no replies going out. Then I did tcpdump on 
the other interface and got this:

13:39:43.233419 arp who-has tell

obviously no reply, wrong network.

So, the system strips the link layer and completely forgets about it? 
with the added overhead of having to figure things out again to send a 
reply? Since the server also keeps an updated arp table it's not like 
the link layer is completely delegated to the nic to take care of.

For incoming connections, I would assume that the link address is 
preserved for replying, no need to send any arp requests. This also 
means that no routing would need to be defined on the 
interface to receive connections from non-local nodes.

What is the may/should/must protocol recommendation on this?

I can't figure whether keeping the link layer for the reply will 
introduce loop problems or rather solve them.

Thanks, Erik

More information about the freebsd-questions mailing list