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

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

 



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