Re: New revision of "The DCCP Service Code"

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

 



Gorry, comments on service-codes-04.

The original draft of the DCCP specification did not use traditional ports; instead the client allocated a 32-bit identifier to uniquely identify the connection. ... This design suffered from the downside of being sufficiently different from existing protocols that there were concerns that it would hinder the use of DCCP through NATs and other middleboxes.

An additional downside is that this design prevents the deployment of two servers for the same service on a single machine, something that is trivial with ports. This is the true reason why ports reappeared, although NAT/middlebox concerns also played a part.

This permits a flexible correspondence between services and port numbers than possible using the corresponding socket pair (4-tuple of layer-3 addresses and layer-4 ports).

"a MORE flexible correspondence"

Note that more than one DCCP server may share the same server port, since in DCCP the Service Code mechanism is the method for unique identification of a service.

This is not correct: the COMBINATION of server port and Service Code uniquely identifies a LISTENING APPLICATION. It is important to get this right.

2.7. A method to hash the Service Code to a Dynamic Port

I do not find this section convincing.  Among other things:

- operating systems use the dynamic port range for client ports, and therefore there is a chance that a server attempting to open the indicated port for listening will be prevented from doing so because of an existing short-lived client port.

- the function can return port 65535 which i believe some OSes refuse to open

- there is no need for a large range of server ports (because of the unique mapping of server port + service code to application).

- the section is unclear whether it is suggesting a possible procedure or defining a requirement.

I suggest instead that the document allocate one Registered Port intended for use by DCCP applications with no port allocation of their own. This port would become something like a "default DCCP port," and applications using it would be using the originally intended service code model.

If because of current OS constraints (such as the Linux implementation's) more than one "default DCCP port" is required, that is too bad, but a small range of, say, 256 or 1024 Registered Ports would suffice in practice until that implementation limitation is overcome.

Port numbers and IP addresses are the traditional methods to identify a flow within an IP network. When the DCCP header has not been encrypted, Middleboxes [RFC3234] should use the Service Code to identify the application-service (even when running on a non-standard port). When consistently used, the Service Code can provide a more specific indication of the actual service (e.g. indicate the type of multimedia flow, or intended application behaviour). Middlebox devices are therefore expected to check Service Code values as well as, or even instead of port numbers for DCCP.

I disagree with this paragraph. It puts requirements on middleboxes and recommends shifting away from well-known practices (e.g., port numbers) to unknown practices with few practical benefits (Service Codes cannot be trusted). "are therefore expected" is too strong. There are good reasons to manage DCCP applications based on ports, including familiarity. The most I would say is something like "Middleboxes that use DCCP may additionally use the Service Code to identify an application service, even when running on a non-standard port. When consistently used, the Service Code can provide a specific hint of the intended service, such as the type of multimedia flow or intended application behavior." Additional text, if any, should explain WHY middleboxes should shift towards using the Service Code; this would be more convincing and appropriate than the current requirement.

This section would be more useful if it pointed out to middlebox authors some issues with port numbers. For example:

"Middlebox authors are cautioned that new DCCP connections are identified by the pair of Server Port and Service Code. In particular, this means that IANA may allocate a server port to more than one application. All such applications will be distinguished by Service Code. A middlebox that intends to differentiate applications SHOULD therefore test the Service Code as well as the destination or source port on a DCCP-Request or DCCP-Response packet.

Security Consideration: DCCP's use of Service Codes as well as ports to demultiplex incoming connections may change the service model expected by middleboxes. The port-numbers registry already contains some instances of multiple application registrations for a single port number for TCP and UDP. This is relatively rare, however. Since DCCP's Service Code allows multiple applications to safely share the same port number, even on the same machine, port number reuse in DCCP may be more common than in TCP and UDP. Middleboxes that intend to differentiate applications should therefore examine Service Codes on connection requests as well as port numbers."

DCCP connections identified by the Service Code continue to use IP addresses and ports, although neither port number may be Well Known.

Nothing about this is different from TCP or UDP.  It should be cut.

Although Service Codes label a connection and can (and is encouraged to) associate specific delivery properties (e.g. use Service Codes to identify the real-time nature of a flow that claims to be using RTP),

Not good English.

This document updates RFC4340 to also add: "A specific Service Code value MAY be associated with more than one server port, although only a single port is registered by IANA."

It would be good to define exactly what the updates to RFC 4340 are doing here. So far all of the updates are clarifications, i.e., do not change the meaning, except arguably for the "SHOULD" requirement for multiple applications on the same listening port. Please explain exactly what each change does. E.g., not "This document updates RFC4340 to also add:", but "This document updates RFC4340 to also add: .... This change clarifies RFC4340, but does not change its meaning."


o "IANA should normally assign a value above 1024 to a DCCP server port. IANA allocation requests to allocate port numbers in the Well Known Ports range (0 through 1023), require Expert Review prior to allocation by IANA [RFC4340]. Requests for registered ports in the range 1024-49151, do not normally require Expert Review."

What's the logic for this requirement? I would remove it. Service Code demultiplexing should mean that ANY allocation request for a port does not normally require Expert Review.

o "IANA MUST NOT allocate more than one DCCP server port with a single Service Code value.

Strongly disagree. I see no reason for such a restriction. This also goes against what you recommend middleboxes do.

o A request for additional Service Codes to be associated with an already allocated Port Number requires expert review. These requests will normally be accepted when they originate from the contact associated with the port registration. In other cases, these applications will be expected to use an unallocated port, when this is available."

Again, I disagree. What is the logic? Is this designed to keep the meanings of ports stable for middlebox authors? See my text above.


RFC 4340 notes that a short port name MUST be associated with each DCCP server port that has been registered, and that this name is expected to be unique within the registry. This document updates this by adding that: o "A port name may be generated from the Service Code value represented in hexadecimal, e.g. SC:fdpz corresponds to the port name '0x6664707a'." In the case of DCCP, it is considered useful to use a value that shows the association with the Service Code, and since service codes are 32-bit numbers this requires the a hexadecimal representation. This differs with the tradition of naming ports in UDP and TCP.

Again, I disagree. This uglifies port numbers. The colon character is not used in any existing port number registration. The registrations in the service-codes draft itself do not follow this logic. And finally there is already a well-known mechanism for associating Service Codes with ports: RFC4340 requires that the port number registration's short English phrase include the Service Code; this is easily parsed. Please remove this.

This document notes that it is not required to supply an approved document (e.g. a published RFC) to support an application for a DCCP Service Code or port number value, although RFCs may be used to request Service Code values via the IANA Considerations section (e.g. [ID.SC]). A specification is however required to allocate a Service Code that uses a combination of ASCII digits, uppercase letters, and character space, '-', '.', and '/') [RFC4340].

This is not a change from RFC4340 and should be marked as such.

Hope this helps.

Eddie



Gorry Fairhurst wrote:
Dear all,

I've just posted a new revision of the Service Codes draft. This version contains the result of some discussion on the IANA procedures and some editorial work to prepare this for a WGLC.

I'd appreciate inputs from those interested in the IANA procedures to help determine if the text reflects the new procedures intended for DCCP - this change should ideally track the changes proposed for UDP, TCP, etc - but also needs to clarify some of the things presented in RFC 4340.

I hope the draft will appear soon,

Best wishes,

Gorry
(as a document author)

[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