Re: New draft :draft-ietf-dccp-serv-codes-01.txt

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

 



Eddie, thank you for your comments, this has been very helpful.

I'm pleased to try to address the issues you raised (see below), and will make a new revision soon. My belief is that draft is converging (and it is shortening each rev). I note that several fundamental issues will still need to be agreed by the WG, before we can finalise things.

Gorry

Eddie Kohler wrote:
Gorry, some comments.

1.0

=> "It is not intended to be used to
   specify a variant of an application, or a specific variant of a
   protocol."
==> I would soften this, to say "It is not intended to be used to differentiate minor variants in applications or protocols." I could see using a service code to differentiate major variants; why not.

I'm not happy in softening it this much. My take would be, that I would not like to encourage use of it to denote flavours of applications or specific vendor versions, this makes the use by midboxes more cumbersome (I included a forward ref to section 2.2, which tries to be more concrete:

"Applications/protocols that provide version negotiation or indication in the protocol operating over DCCP do not require a new server port for each new protocol version. New versions of such applications/protocols SHOULD continue to use the same Service Code. If the application developers feel that the new version provides significant new capabilities (e.g. that will change the behavior of middleboxes), they MAY allocate a new Service Code associated with the same or a different set of well-known ports. If the new Service Code is associated with well-known ports, the DCCP Well-Known Ports registry MUST also be updated to include the new Service Code value."

=> "Only one application may listen on a specific port
   at any time,"
==> This contradicts RFC4340.
Not intended.
"Passive sockets MAY, at the implementation's discretion, be
   associated with more than one Service Code; this might let multiple
   applications, or multiple versions of the same application, listen on
the same port, differentiated by Service Code." RFC4340, 8.1.2. Also this paragraph contradicts itself; the last sentence seems to indicate multiple applications per listening port.

"An application identifies the requested service by the Service Code value in a DCCP-CONNECT. Each application may listen on one or more ports associated with one or more Service Codes."

=> "Use of a Service Code value, instead of binding a service to a
   particular publicly-known port number, permits a larger number of
   concurrent connections for a particular service. For example, this
   may be useful for applications where servers need to handle very
   large numbers of simultaneous open ports to the same service."
==> This is misleading. A new connection can only be accepted if BOTH
the Service Code AND the Destination Port match.
True.
I propose:
"The more flexible use of server ports can offer benefit to applications where servers need to handle very large numbers of simultaneous open ports to the same service."


Service Codes do not change the fact that services will most likely bind to well known ports. Service Codes do not on their own increase the port space. The
most a Service Code does is identify the intended meaning of a port.

Well as I understand a DCCP server that is willing to accept connections on several ports can associate these all with the same SC (and passively listen - even if other applications with other codes all "share" listening to these ports). It can either do this directly, by opening several ports, or if the OS supports it, the OS could monitor the ports (as in inetd) and launch on demand. We don't say how applications choose which specific port to use.
- I will update the later text to explain.

1.1

=> "   o  The use of port-based firewalls encourages application-writers to
      disguise one application as another in an attempt to bypass
      firewall filter rules. This encourages firewall writers to use
      deep packet inspection in an attempt to validate that the
      application actually is that associated with a port number. "
==> And Service Codes do not change this, either. A smart firewall would STILL use deep packet inspection to verify that data wasn't being smuggled through a fake Service Code. Service Codes do very little to increase security on their own, at least from the point of view of network admins, since they are controlled by possibly malicious parties (the end hosts). The security impact of Service Codes is simply that they allow middleboxes to make assumptions based on "intended protocol" rather than port. Middleboxes must still VERIFY these assumptions.

All true, will rewrite this section, and also include:
"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), there is no guarantee that the actual connection data corresponds to the associated Service Code. A Middlebox implementor may still therefore desire to use deep packet inspection, and other means, in an attempt to verify the content of a connection."

=> "RFC 43404"?

Fixed:-(.

=> "The intent was that the Service Code maintained its original role of
   being the globally-unique identifier for the application or protocol
   being used over DCCP, and that the pair of ports would effectively be
   a 32-bit connection identifier, unique at both end-systems, even
   though the two parts were allocated by the two different ends of a
   connection. "
==> I don't know what "globally unique" means here. I would cut that phrase and say "The intent was that the Service Code identify the application or protocol being used over DCCP, providing middleboxes with information about the intended use of a connection,".

Agreed. I now have problems with this too. I propose:

"The intent was that the Service Code identified the application or protocol using DCCP, providing middleboxes with information about the intended use of a connection, and that the pair of ports effectively formed a 32-bit connection identifier, which was unique between a pair of end-systems."

2.1

=> "   This section updates section 19.9 of [RFC4340] in the following way:

   "Each DCCP port entered in this registry MUST be associated with at
   least one pre-defined Service Code (see section 2.2)." "
==> How is this an update?  RFC4340:

"   Each port registration SHALL include the following information:
...
   o  A short English phrase describing the port's purpose.  This MUST
      include one or more space-separated textual Service Code
      descriptors naming the port's corresponding Service Codes (see
      Section 8.1.2)."

I adapted this from Mark's input, he may be able to explain whether an update was intended. For now, I shall refer to RFC4340: "DCCP supports well-known and reserved ports, which are allocated in the DCCP IANA port registry (Section 19.9 of [RFC4340]). A registered DCCP port MUST be associated with at least one pre-defined Service Code."

2.2

=> "A single destination port may be associated with more than one
   Service Code value."
==> Prefer "passively opened socket" or "listening port" to "destination port".

I'll make a change.

=> "they MAY allocate a new Service Code (which MAY be associated with
   the same set of DCCP well-known ports). "
==> I would advise that people SHOULD update the Well Known Ports registry in this case, to add the new textual Service Code.

I suggest - if there is a new SC using a well-known port it MUST be updated in the registry?

3

=> "This section explicitly updates RFC 4340 as follows:

   "A DCCP implementation MUST allow multiple applications using
   different DCCP service codes to listen on the same server port.

   A DCCP implementation SHOULD provide a method that informs a server
   of the Service Code value that was selected by an active connection." "
==> I disagree with the first requirement, the MUST. That is too harsh and I see no need for it.
>
I expect Mark was trying to mandate that multiple passive listeners could use the same port, to "solve" the limited port-space issues. However, I agree care is needed. I'm curious how far the working group would go with this: Is an implementation that supports one listener not compliant? The current text actually only requires 2 or more listeners to be supported... Linux (I believe) currently supports 32.

"SHOULD allow more than one Service Code to be associated with a passive socket, enabling multiple applications, or multiple versions of an application, to listen on the same port, differentiated by Service Code."

I like the second requirement.

OK
3.2

=> "Middleboxes [RFC3234] SHOULD instead use the Service Code
   to identify the application-service (even when running on a non-
   standard port). Middlebox devices are therefore expected to check
   Service Code values before port numbers for DCCP. "
==> Please drop the word "instead",
Fine.
and replace "before" with "as well as, or even instead of,". There are good reasons for middleboxes to check both ports and service codes.
>
Fine.

3.3.1

=> "A Service Code of zero MUST only be accepted for servers that
   have no associated Service Code or are explicitly associated with the
   Service Code value of zero."
==> Delete "have no associated Service Code or". As RFC4340 and this draft state, every socket has at least one service code. An implementation may choose to supply a default of zero, of course, but that still associates a service code with the app
>
On this we seem to be all at cross-purposes. My take is that RFC4340 says this is "permanently reserved (it represents the absence of a meaningful Service Code)".

Do we NEED to revise RFC4340 to allow use at all? and if so why?

I am now suggesting: "This document clarifies section 19.8 of RFC 4340:
"Implementations MUST NOT permit applications to listen with a Service Code of zero"."

That is MUST reject connection using the reserved service code (zero), and MUST NOT permit applications to listen to this Service Code.


=> "   RFC 4340 states that a Service Code MAY be associated with more than
   one destination port (corresponding to a set of port values). Also a
   single destination port MAY be associated with multiple Service
   Codes, although an active (open) connection can only be associated
   with a single Service Code. "
==> Actually, RFC4340 only explicitly says the second of these (that a single passively opened port MAY have multiple SCs), although both are true.

RFC4340 states that a single passively opened (listening) port MAY be associated with multiple Service Codes, although an active (open) connection can only be associated with a single Service Code. This document updates RFC4340 to add: "A Service Code MAY be associated with more than one destination port (corresponding to a specified set of server port values)."

5.1

=> I would cut this section. I disagree with it. In particular I do not think we should recommend a change in the way OSes allocate DCCP port numbers.

Could you say more?

6

=> It does not make sense to allocate a single PERF service code for a number of different and incompatible applications ("e.g., iperf, ttcp, etc."). This allocation should be dropped or made more specific.

Well, yes and no. I can see why one would comment so from the host-side, the tools need different servers, hence different service codes.

I can see why this was suggested as a way to identify performance tests in the network and let such applications transit middlebox interfaces. Inventing a separate treatment for each perf test seems annoying.

The rationale cited to me is that SC=RTPV covers many different codecs that do alsorts of different things and are used by a range of incompatible applications. They all however carry video over RTP. So, is there a case for all test applications that try to measure performance be allowed to call them selves "SC=PERF". If not, why not?


Eddie

<snip>


> => Some text here is copied from RFC4340.  I do not see the value of
> repeating this text here.  But if it is repeated, then it should be
> clearly identified as repeated.  A general problem with the document is
> lack of guidance as to what is old and what is new.
>
This is true - and  will be addressed.

If you have further responses or comments, do send, and I'll prepare a new revision.

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