[nzlug] Uncommon Transport Protocols + Linux
Daniel Pittman
daniel at rimspace.net
Fri Jan 5 18:51:19 NZDT 2007
Raimund Eimann <raimund at cs.auckland.ac.nz> writes:
> I suppose that packets with uncommon transport protocols or, more
> precisely protocol numbers for which no handler (such as a TCP stack)
> exists on a host are simply dropped on arrival?
No -- they should have an ICMP error generated informing the sender that
the protocol in question is not supported.
That only happens for packets destined for this machine, though. A
forwarding system will pass *any* IP protocol regardless of local
understanding -- absent any other restrictions.
This allows an IP compliant machine to participate in an IPv4 network
without needing to understand all, or even any, of the higher level
protocols. That is, as they say, a feature.
> I mean transport protocol weirdos such as PUP, ARGUS or EMCON, for
> instance. Does anyone here know which source file in Linux is
> responsible for forwarding incoming packets according to the transport
> protocol number found in the IP header to their appropriate handlers?
net/ipv4/ip_forward.c, in the 'ip_forward' function.
You want ip_input.c in the same place for the first part of your
question, where the protocol error is generated.
The code here, essentially, runs like this:
* grab the IP packet
* decrement the TTL and reject dead packets
* find the outbound route for the packet
* deliver the packet to the outbound queue
It seems likely you have a question behind these specific technical
details; if you state that perhaps it can be explained?
Regards,
Daniel
--
Digital Infrastructure Solutions -- making IT simple, stable and secure
Phone: 0401 155 707 email: contact at digital-infrastructure.com.au
http://digital-infrastructure.com.au/
More information about the NZLUG
mailing list