Re: One ring to rule them all (generic UDP encap of transports)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Michael,

Thanks for the info on SCTP.  That makes it sound like SCTP and DCCP encaps could be high-level-approach compatible.  Is there a draft you're working from for SCTP encap?  The last one I saw was substantially different from what you describe.

Tom P.

> -----Original Message-----
> From: Michael Tüxen [mailto:Michael.Tuexen@xxxxxxxxxxxxxxxxx]
> Sent: Friday, November 20, 2009 3:18 PM
> To: Phelan, Tom
> Cc: gorry@xxxxxxxxxxxxxx; Pasi Sarolahti; DCCP working group
> Subject: Re:  One ring to rule them all (generic UDP encap of
> transports)
> 
> On Nov 20, 2009, at 8:07 PM, Phelan, Tom wrote:
> 
> > Hi Gorry,
> >
> > You've raised a couple of issues below that I think we could better keep
> > track of if we have a new thread, so I've renamed the subject here.
> > What I'd like to discuss here is the thought that we can have a generic
> > approach to UDP encapsulation of transport protocols.  Since we have no
> > concrete approach on the table, it's a little difficult to comment, but
> > here are my thoughts on what I've heard bandied about.
> >
> > Just tunnel it -- To me this means IP Header/UDP Header/IP
> > Header/Transport Header.  The problem is the addresses in the inner IP
> > Header.  In tunneling, the endpoints of the tunnel need to understand
> > the addresses in the inner IP Header.  But in the usual situation with
> > NAT in between client and server, at least one of the addresses won't
> > make sense to the receiving endpoint.  That address will be from the
> > private address realm of the other endpoint, and could duplicate an
> > address used by another device communicating with the receiver.  So what
> > do you do with these inner IP addresses?  Ignore them?  What do you send
> > in the return packets?  How do you form a unique 4-tuple that identifies
> > the socket (source address/port + destination address/port) when two
> > endpoints could have the same source address?
> >
> > So drop the inner IP Header -- This gives you IP Header/UDP
> > Header/Transport Header.  I think of this as "encapsulation" rather than
> > "tunneling".  You can now make the 4-tuple from the IP addresses and the
> > Transport Header ports.  But this breaks the checksum in the Transport
> > Header.  Where are the IP addresses used in the checksum pseudo-header?
> > From the IP Header?  But those might be changed en route.
> We use IP Header/UDP/SCTP when encapsulating SCTP in UDP.
> Please note that SCTP does NOT use a pseudoheader for checksum
> computation.
> The SCTP checksum (actually a CRC32c) is computed only over the SCTP
> packet, not taking into account anything from the IP header.
> >
> > So change the rules for checksums -- Fortunately, TCP, SCTP and DCCP use
> > pretty much the same rules for computing the checksum field.  Saying
> > encapsulated transports ignore their own checksum field and use the UDP
> > checksum probably works here.
> >
> > But has anything else been broken? -- For DCCP, yes.  Partial checksums
> > don't work.  Also, I believe SCTP has a stronger checksum option that I
> > believe has been broken by this approach so far.  You still need some
> > protocol-specific rules.
> SCTP works, we also use the UDP checksum. Since it is computed normally
> by the NIC it is not that much of a performance issue. And I thought
> it is better to do the same for IPv4 and IPv6.
> >
> > So it looks to me like completely generic UDP encap is not possible,
> > although mostly generic is possible.  The mostly-generic draft would say
> > use IP Header/UDP Header/Transport Header, use these generic rules for
> > dealing with the encapsulated checksum, and then use these
> > protocol-specific rules for dealing with protocol-specific issues.
> >
> > This is the approach taken by dccp-natencap, plus some additional
> > optimizations -- since the DCCP checksum field is now useless, why carry
> > it?  And once you eliminate that, the DCCP header can be made more
> > efficient.  Are these additional optimizations worth it?  I'd like to
> > hear opinions...
> We also need SCTP specific rules for dealing with multihoming and NAT
> traversal... But that is specific.
> >
> > Note that another approach that's been talked about is to eliminate the
> > ports from the inner Transport Header and use the ports in the UDP
> > Header to indicate the actual application.  This seems unworkable to me
> > in that it means that a port can only be used for one transport and
> > that's likely to break all sorts of things.
> The does NOT work for SCTP, since the UDP ports on different paths might
> be different, due to independent NAT boxes on different paths. SCTP,
> however,
> does require one port for all paths.
> So for SCTP we really need the IP Header/UDP Header/SCTP Packet
> approach...
> 
> Best regards
> Michael
> >
> > Tom P.
> >
> >> -----Original Message-----
> >> From: dccp-bounces@xxxxxxxx [mailto:dccp-bounces@xxxxxxxx] On Behalf
> > Of
> >> Gorry Fairhurst
> >> Sent: Friday, November 20, 2009 11:48 AM
> >> To: Pasi Sarolahti
> >> Cc: DCCP working group
> >> Subject: Re:  Soliciting input on UDP encapsulation for DCCP
> >>
> >> A few comments in-line, some of which I raised last time, but don't
> >> recall the answers.
> >>
> >>
> >> Pasi Sarolahti wrote:
> >>> Hello,
> >>>
> >>> During the Hiroshima meeting last week some support (and some
> > concerns)
> >>> was voiced about working on UDP encapsulation for DCCP, with a
> >>> suggestion to allocate an UDP port to be used for DCCP
> > encapsulation. To
> >>> make this happen, it was proposed that we bring back
> >>> draft-phelan-dccp-natencap, for the WG to submit it for Experimental
> >>> RFC. Tom has now updated the draft and the refreshed version can be
> >>> found at http://tools.ietf.org/html/draft-phelan-dccp-natencap-03
> >>>
> >>> With the above background in mind, I'm now looking for input on the
> >>> following questions:
> >>>
> >>> a) in your opinion, should the DCCP WG start working on UDP
> >>> encapsulation for DCCP?
> >>>
> >> No, or at least unsure.
> >>
> >> I'd love to see a tunnel encapsulation, however I'd also like to
> >> consider the feasibility of a common method for all transports - or at
> >> least one that handles UDP-Lite, SCTP and DCCP consistently with the
> >> possibility of later extension. If I were in the DCCP meeting I would
> >> have tried to push on this one and see what people said, hence I'd be
> >> keen to seen feedback via the list. If there are good reasons to
> >> continue separate approaches for each, that would be fine, but I'd
> >> expect to see this rationale somewhere in the draft.
> >>
> >>> b) if yes, do you think draft-phelan-dccp-natencap is a good
> > starting
> >>> point for this, and therefore should become a WG document?
> >>>
> >> Maybe, although I would think it is worth considering a straight UDP
> >> encapsulation that does not adjust the position and order of the
> > fields.
> >>
> >>> In addition, please speak up if you have other technical comments
> > about
> >>> the draft.
> >>>
> >> Separate email sent to the list.
> >>
> >>> Thanks!
> >>>
> >>> - Pasi
> >>>
> >>
> >> Finally, I think I'd say it was essential that any encapsulation draft
> >> also notes the drawbacks of this mode, and hence advocates native
> >> transport were possible!
> >>
> >> e.g.
> >> No currently defined support for ECN
> >> No currently defined support for shared PMTUD
> >> Restricted support for partial coverage
> >>
> >> - The pros would seem to outweigh the cons, but there are
> > disadvantages.
> >>
> >> Gorry
> >>
> >> P.S. I also believe this should be discussed at TSVWG, since there is
> >> already a proposal for an SCTP encapsulation.
> >
> >



[Index of Archives]     [Linux Kernel Development]     [Linux DCCP]     [IETF Annouce]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [DDR & Rambus]

  Powered by Linux