Re: CCID 2 will increase Congestion Window > Sequence Window

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

 



| In doing some DCCP testing, I have identified a bug in the CCID 2
| implementation.  Right now, CCID 2 will willingly increase it's
| congestion window (the number of packets it tries to keep in the
| network) greater than the sequence window.  This, of course, causes
| acknowledgments from the receiver to be deemed sequence invalid which
| causes a Sync/SyncAck exchange. In at least one test, this has resulted
| in a loss of 1/3rd of the bandwidth because of repeated Sync/SyncAck
| exchanges. I am working on a patch; however, I am interested to know if
| anyone else has seen similar problems and/or is working on a solution...
| 
The problem is known and the fix so far is ugly ("simply increase the
value of the seq_window sysctl to an improbably high value").

Limiting the cwnd to the value of seq_window would be one way. With
regard to a recent change I was also thinking whether a per-connection
socket option for seq_window would make sense, which overrides seq_window
(taking u64/u48 values).

The whole thing is complicated since three variables constrain each other:
 a) According to RFC 4340, 7.5.2, 
      seq_window =~ 5 * cwnd
 b) ack_ratio must be less than or equal to ceil(cwnd/2) (already done)
 
If 5 * cwnd >= current_seq_window, we should be sending an NN option to
the remote peer to inform about this change. There is already support for
this signalling in the test tree,

http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=dccp_exp.git;a=commitdiff;h=a39e30e09a9e31ddeadc44d4a2baef4eac4cde25

The same should actually be done for (b), but it is currently disabled, since
it was found to misbehave (re-activating it requires only to disable the
preprocessor conditional).

I think that sending an update would be the right thing to do.

Gerrit
--
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