[RFC]: Feature negotiation

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

 



For some time I have been working away at improving feature negotiation support,
following a discussion with Ian regarding the disabling of Ack Vectors.

I have found some limitations of the present implementation and would like to fix
this. There is full documentation on the issues on 
http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/

It is not necessary to read all of this, what I would like people to have a look at
and would value comments for are the implementation notes on:

http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/implementation_notes.html#concept

Please do send comments, suggestions etc.

There are some good ideas in the present implementation; some of the problems encountered are:

 * if one end is configured to use CCID2, the other CCID3, then both end up
   using these values (with horrible performance results);

 * when changing features anytime during a conversation, traffic needs
   to be stopped until negotiation is over (no provision currently made);

 * negotiation during connection setup changes the properties of the
   listening socket rather than the child socket (accept queue); i.e.
   if the first incoming connection requests CCID3, the listening socket
   changes from CCID2 to CCID3; the second incoming connection may again
   change this, and so on;

 * the code uses some ingenuous, but cryptic wizardry. It is hard to figure
   out how parameters are negotiated, which makes the code prone to oversights
   (in dccp_feat_update_ccid() for instance, RX and TX CCID are reversed, it
   should be the other way around);

 * receiving empty confirms is currently not handled.

-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux