Re: Port numbers in the network layer?
Joe Touch <[email protected]>
| Newsgroups | gmane.network.end2end |
|---|---|
| Message-ID | <[email protected]> |
On 4/25/2013 12:56 PM, Hagen Paul Pfeifer wrote: > * Joe Touch | 2013-04-25 11:46:38 [-0700]: >> Consider that ethernet ethertype 0x0800 was originally intended to >> mean "IP", allowing the IP version number to be determined at the IP >> layer, but packet demuxing efficiency concerns resulted in a new >> ethertype for IPv6 (0x86DD). So the ethertype includes not only the >> upper layer protocol, but it's redundant with the version at the next >> layer. >> >> Similarly we could allocate a new ethertype to "IPv4:TCP" or "IPv4:SCTP". >> >> So any "mix and match" architecture needs to have some indication of >> what the particular mix is, but it need not be cascaded >> layer-by-layer. > > In theory, but in practice this do not work because not every link is Ethernet > and you may end up re-parsing the packet to determine the transport protocol > at each hop. Routers translate between different link layers; you're suggesting that how the layers are encoding affects translation efficiency. That's true, and a good argument for pushing information up the stack as late as possible, however doing so makes some kinds of multilayer decisions more complex - it's a trade-off. > Limit the ethertype to the next layer was fine. The redundant information in > Ethernet/IP header comes from the fact that we don't life in a perfect world > and things evolve over time. IMO, it comes from a bad decision to support a short-term fix based on the hardware limits at the time (which couldn't keep up with parsing multiple layers in hardware), vs. keeping a cleaner architecture. However, as you note, in this case it resulted in redundancy (rather than an either-or decision), so it 'just' wasted space and processing. ;-) Joe