Re: Comments on draft-fairhurst-dccp-serv-codes-03.txt

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

 





Tom, here are my notes - Eddie may like to reply - but from my side most of this seems in-line with my thinking, and hopefully is now better reflected in the new rev of the draft to be published soon.

My understanding (tell me if I am wrong) is that multiple applications ARE allowed to share the port using different service codes - but there can only be ONE active application with any combination of {src-IP,dst-IP,src-port,dst-port}, and this MUST be associated with the SC used in the connect. I see ths as the "Enhanced Support" model, not the default for the moment.

The dst port is still used for demux of packets in the flow.

Comments are MOST welcome on the next rev of the draft (ask again if needed!!!)

Gorry


Phelan, Tom wrote:

Hi Eddie,

So I've gone back and reread what the spec says on service codes, and
you're correct that what I suggested is in conflict.  I didn't mean to
be in conflict; I'm only trying for clarity.  I'll try again and please
comment.

I see two possible scenarios that result from what the spec says,
depending on what the implementer decides to do about "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".

If the implementer decides to not do this (only one service code per
port):

 o Each actively listening destination port is associated with one and
only one service code.

 o The same service code can be associated with multiple ports.

 o Applications that want to support multiple versions of their protocol
on one port must not use different service codes for those versions (the
HTTP/1.0--HTTP/1.1 example below).  They must differentiate the versions
at the application level.

 o At the listening system, the service code functions as an "are you
sure?" mechanism.  You've connected to a port, now prove you really know
what you're doing by giving me a second indication that this is what you
intend.

If the implementer decides to support this (multiple service codes
associated with a port):

 o Each actively listening destination port is associated with one or
more service codes.

 o The service code sets associated with different ports can overlap in
any manner.

 o The service code functions as an additional demux mechanism -- OK,
you've connected to a port that supports multiple services, which one do
you want?  It's like the tcpmux service on port 1 for tcp.

 o The spec then gives the implementer two more choices to make --
whether a single application is allowed to use multiple service codes,
and whether multiple applications are allowed to share the port using
different service codes.

 o If the implementer supports multiple service codes per application,
then version differentiation through service codes is possible.

 o If the implementer supports multiple applications sharing the same
port, then I'm not sure what destination port means anymore -- one port
could support all of the services the system wants to offer (or not
depending on the next item).

 o Implementers will need to apply some limit to the number of service
codes that can share a port -- the spec is silent on what this should
be.  Some implementers will choose a large number, others a small one.

Is this correct?

Tom P.


-----Original Message-----
From: Eddie Kohler [mailto:kohler@xxxxxxxxxxx]
Sent: Wednesday, June 06, 2007 3:11 PM
To: Phelan, Tom
Cc: gorry@xxxxxxxxxxxxxx; DCCP mailing list
Subject: Re:  Comments on draft-fairhurst-dccp-serv-codes-03.txt

Tom,


The addition of service codes by DCCP allows us to break this
demultiplexing/identifying duality.  We can now say that the

*exclusive*

use of port numbers is for demultiplexing, and the *exclusive* use

of

service codes is for identifying applications.  This implies a few
rules:

We COULD say this, but why would we?  It also goes against the

language

in the DCCP RFC, which explicitly allows a listening socket to be
associated with multiple Service Codes.  (Think HTTP/1.0 and

HTTP/1.1.)

Similarly, the DCCP stack MUST understand Service Codes, as it is
required to send an error if service codes don't match.

Gorry's draft should not be redefining the RFC in my opinion.  On the
other hand I still don't quite understand the goal of Gorry's draft.

Eddie




o Demultiplexing is based on the source and destination IP address

and

source and destination port numbers only, just as it is for the

other

connection-oriented transports.  Only one application/socket can
"listen" on a port number for incoming connection requests.

o It is not necessary for the DCCP stack to know the service code
associated with an application that is listening on a port number,

since

the DCCP stack is really only concerned with demultiplexing, not
application identity.  A DCCP stack SHOULD (MUST?) allow an

application

to check the service code in an incoming DCCP-Request and decide

whether

or not to proceed with the connection.  A DCCP stack MUST NOT

require an

application to perform this check.  A DCCP stack MAY (SHOULD?) allow

an

application to pre-specify the service code[s] that it will accept

and

process incoming DCCP-Requests based on that information.

o A DCCP stack MUST allow an application to specify the service

code to

be used in DCCP_Request packets.

o Applications MAY use well-known port numbers to facilitate
client/server rendezvous.

o Applications SHOULD register and use a service code specific to

the

application.

o Devices, for example, firewalls, wishing to identify an

application

associated with a connection MUST use only the service code.

Devices

MUST NOT use port numbers to identify the type of application using

a

connection.

Comments appreciated :-).

Tom P.







[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