[e2e] Port numbers in the network layer?
John Day
jeanjour at comcast.net
Sat May 4 15:25:21 PDT 2013
Thanks, Dave. Those emails clarify a lot.
At 7:53 AM -0400 5/3/13, dpreed at reed.com wrote:
>The binding of a pseudoheader does not thwart mobility. The
>binding that thwarts mobility was the binding between the 32-bit
>address and network physical topology. The actual authors of the
>pseudoheader *idea* which was proposed in the same Marina del Rey
>meeting where the split of layers was sketched (by about 5 of us).to
>create TCP, UDP, .... on top of a common IP actually occurred at a
>time when routing was not *defined* to be prefix-based. In fact, at
>that same meeting, source routing (with route services providing
>routes on demand along the way to be cached) - separate from the
>32-bit address space, which was expected to be "managerial" not
>topological under all proposals - was under active discussion as
>*the* ultimate routing approach. The alternative that those of us
>focused on "internetworking" and not just ARPANET improvement were
>also considering was some form of "hash based" routing at gateways
>(i.e. totally non-physical).
>
>
>
>Source routing, like the pseudoheader, was very much a modular element of IP.
>
>
>
>Now this rewrite of history that implies that conflating addressing
>and routing was inherent, so that "mobility" was omitted is just not
>valid.
>
>
>
>I do agree technically that there might have been a better "endpoint
>identifier" on an end-to-end basis than the pseudoheader turned out
>to be (especially due to the much later decision to conflate
>endpoint-identifier with route that got made by default at BBN,
>perhaps just to get the thing bootstrapped).
>
>
>
>I can provide more evidence of this: for example, it was expected
>that MIT's address space included mobile devices and subnets (we
>were doing packet radio and LANs), as did Xerox PARC's PUP. We were
>planning to handle efficient routing to these across alternative
>paths by using the source-routing mechanism. (as you may know I
>wrote, with Jerry Saltzer, a well-known paper on why source routing
>was good).
>
>
>
>But hey, no one wants to understand the actual design. In fact, a
>bunch of idiots call UDP the "unreliable" datagram protocol, which
>was not at all the point. Instead it was a demultiplexing layer
>that enabled a range of useful non-circuit oriented (M2M) protocols
>to be designed.
>
>
>
>But the inmates grabbed hold of the asylum at some point in the
>history of IETF. Rather ignorant ones, who did not ever read
>Parnas, did not understand control theory, imagined that TCP was
>"sender controlled", etc.
>
>
>
>
>
>
>
>
>
>On Thursday, May 2, 2013 7:58pm, "Joe Touch" <touch at ISI.EDU> said:
>
> > Hi, John,
>>
>> On 5/2/2013 4:42 PM, John Day wrote:
>> ...
>> >>> The argument for the pseudoheader has always been a bit shaky. No
>> other
>> >>> Transport Protocol except UDP either within or outside the IETF
>> found
>> >>> the need for it. There have been many discussions about removing
>> it,
>> >>> but as you know tradition has always won out.
>> >>
>> >> The pseudoheader is an artifact of the TCP/IP split, which isn't as
>> >> clean as often claimed.
>> >>
>> >> It is used in other transport protocols built on IP, e.g., DCCP and
>> SCTP.
>> >>
>> >> It is not a matter of tradition; it is deeply entrenched with the
>> >> notion of endpoint and that this notion exists at two different layers
>> >> that share at least some of the context (IP addresses).
>> >
>> > "Deeply entrenched," indeed. (Some would say a synonym for tradition.)
>> > Strongly reasoned, less so. As recently described by its author, it is
>> > this binding that thwarts mobility.
>> >
>> > Indeed this "notion" exists in two different layers. In fact, it is a
>> > general property of all layers. But I fail to see how that is an
>> > argument to require a pseudo-header.
>>
>> It's an argument that it IS required in all current Internet transports.
>> It is NOT an argument that it has to be required in a new transport
> > protocol in the Internet, or in other new stacks.
>>
>> ...
>> >>>>> According to this socket pair definition then, is the
>> connection id a
>> >>>>> Network Layer identifier or a Transport Layer identifier?
>> >>>>
>> >>>> Transport layer ID that is based on a transport header that
>> subsumes a
>> >>>> subset of the network header.
>> >>>
>> >>> Huh? Next you are going to tell me that it is "small, green and
>> split
>> >>> three ways"! ;-)
>> >>
>> >> The transport layer flow is *defined* as the socket pair, which is
>> >> defined in TCP (and used in other Internet transports) as combining
>> >> the transport header context (port pair) with the IP context (IP
>> >> address pair), the latter of which is part of the pseudoheader for
>> >> that reason.
>> >
>> > I realize this is the definition, and I would even agree with including
>> > the same error-check-code, if they were in the same layer. But since it
>> > is said they aren't, I fail to see the need and I definitely see the
>> > constraints.
>> >
>> > Is there some condition in which a router might put a TCP packet on a
>> > different IP packet? The only reason I can see for having it.
>>
>> A router should never do anything to the contents of an IP payload, IMO.
>>
>> However, isn't that the definition of how a NAT works?
>>
>> ...
>> >> So I interpret "protocol-id" as I think most people do.
>> >
>> > Excellent. That was my point. The field has the wrong name.
>>
>> Yes, but when we're talking about existing protocols, the name is there.
>> New protocols might use more accurate terms, just as IPv6 has a
>> "hopcount" instead of a "TTL".
>>
>> ...
>> > If there was a "protocol-instance-id" I would think it would be more
>> > useful if one left the protocol out of it entirely. Of course, then it
>> > would be a port-id. ;-)
>>
>> The destination port ID in a SYN encodes the service protocol, which is
>> a protocol-type-id. It isn't an instance-id; the instance-id is the
>> combination of the IP addresses and port numbers taken as a set.
>>
>> >>> Why does the receiver need to know the type of protocol? Perhaps so
>> it
>> >>> knows how to interpret the header in the layer above?
>> >>
>> >> Yes, that's what I said several times ;-)
>> >
>> > Excellent! then you agree! The purpose of the protocol-id field in IP
>> > is identify the syntax of the encapsulated protocol.
>>
>> Yes. Same for the destination port of the initial SYN in TCP.
>>
>> ...
>> > Good discussion, Joe.
>>
>> Back at ya' ;-)
>>
>> Joe
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.postel.org/pipermail/end2end-interest/attachments/20130504/1412ef2f/attachment.html
More information about the end2end-interest
mailing list