Re: draft-ietf-dccp-udpencap-03 - 6-tuple

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

 



I like 4-tuple IP/UDP.

  - Look up IP+UDP 4-tuple
  - If flow exists and DCCP ports conflict, send Reset; otherwise continue

This seems no more complex than a straight-up 6-tuple.

The draft could introduce a new Reset Reason for "encapsulated port reuse" so a tunneled endpoint could immediately try again.

*

The IP/UDP 4-tuple would become SUFFICIENT, as well as necessary -- and we would avoid the need for Resets -- if we could guarantee that each separate DCCP flow would have its own UDP flow, even given NATs.

It's also clean for network accounting when a flow is a flow is a flow.

This is not true with the current draft because of default port numbers for UDP SOURCE ports -- a feature I've never much liked. A user-space daemon could just as easily assign different UDP source ports to different DCCP flows; source UDP ports are by default chosen at random from the dynamic port range. A kernel implementation could too.

So what about: "An endpoint MUST ensure that UDP-based flow identifiers differ whenever DCCP-based flow identifiers differ. Specifically, two connections with different <source address, source DCCP port, destination address, destination DCCP port> 4-tuples MUST have different <source address, source UDP port, destination address, destination UDP port> 4-tuples. This can be ensured, for example, by choosing distinct source UDP ports for distinct DCCP connections."

*

Gerrit suggested that we leave this up to the implementer. I initially disagreed. However, on reflection, this could work well. If the above suggestion about distinct UDP 4-tuples is not adopted, I would prefer allowing implementations to EITHER send Reset(encapsulated port reuse) OR demultiplex using a 6-tuple.

*

To summarize, my strong preference is IP/UDP 4-tuple, plus language about ensuring distinct IP/UDP 4-tuples.

Eddie


On 02/02/2011 12:09 AM, Gorry Fairhurst wrote:
On 01/02/2011 09:02, Pasi Sarolahti wrote:
Hi,

On Jan 19, 2011, at 9:40 PM, Gorry Fairhurst wrote:

I have now implemented all the corrections in the UDP encaps draft, except
for the issue of how we implement transport demultiplexing, where there
seems to be multiple ideas. We clearly need to choose either
the 4-tuple demux or the 6-tuple demux.

Indeed. I think there are three choices

* 6-tuple
* 4-tuple IP/UDP (with checks against conflicting DCCP connections)
* 4-tuple IP/DCCP (with checks against conflicting UDP ports at UDP
decapsulation point)

There have been arguments suspecting kernel implementation feasibility of
6-tuple. People have also wanted to see UDP tunneling work with unmodified
DCCP implementation. If I understand correctly this would be difficult with
the first two option. Would there be something wrong with the last option?

I think this is the only remaining open issue (right?). So let's try to
reach a conclusion. If you don't have clear favorite, is some of the options
out of question?

- Pasi



I vote for:

* 4-tuple IP/UDP (with checks against conflicting DCCP connections)

Gorry


[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