Re: relating code to RFC 4342, RFC 3448, rfc3448bis-00

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

 



Hi Ian,

below is as promised the list of differences of the CCID3 code, this has the most relevant differences.

The list may not be exhaustive, but this is all I can get hold of for the moment.

Most is also documented online at
      http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3_packet_reception/



1. General
----------
The code conforms to RFC 4342 as far as possible. Where deviating, the changes introduced
in draft rfc3448bis, revision 00, are used as reference.

2. TFRC code
-------------
* loss detection is fully compliant with RFC 4342, including the handling of DUPACKS

* details on 
  http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3_packet_reception/loss_detection/loss_detection_algorithm_notes.txt 

* receiver RTT sampling uses a modified algorithm from RFC 4342, 8.1. This is an extension
  (uses all data it can get), but the principle is the algorithm from RFC 4342.

* the loss interval handling uses rfc3448bis rather than RFC 3448, due to the following
  limitation of RFC 3448: 
	RFC 3448 considers only a fixed set of n=8 loss intervals. It takes quite a while
        until that many loss intervals have accumulated. rfc3448bis is better in this regard,
        since it specifies handling up to k < n = 8 loss intervals. This is more realistic 
        and hence has been adapted for the code.     

* the weights used for the individual loss intervals use the precise, not the mod-2 rounded
  values, from RFC 3448, section 5.4 rather than section 8. This is because it gives a better
  performance and since there is no real gain in using shift operations here.

* lost packets are always assumed to be data packets (cf. section 7 of the above URL for clarification)

* updating I_mean, in contrast, is based on section 10.2 of RFC 4342 rather than RFC 3448/rfc3448bis.
  RFC 4342 introduced a method to find out where a new loss interval starts, with respect to sequence
  number wrap-around (field li_is_closed).

* similarly, determining whether a newly identified loss event does indeed designate a new loss 
  interval depends is based on RFC 4342, 10.2 rather than RFC 3448/rfc3448bis


3. CCID3 code
--------------
* RFC3390 initial rate uses `s' instead of MSS described in RFC 4342, as per previous discussion

* all non-RFC 4342 based code uses revision 00 of draft rfc3448bis as basis, in particular:
	- computation procedures in ccid3_hc_tx_update_x(),
	- updating X when feedback is received in ccid3_hc_tx_packet_recv(),
	- updating X in ccid3_hc_tx_no_feedback_timer(),

* TX CCID3 uses RTT from Request/Response handshake - as per RFC 4342 erratum.

* packet scheduling closely follows section 4.6 of RFC 3448. Still not sure that this is the best
  way to do this, but recent tests (cf. bug reports and dropping of `send credit' patch) showed that
  apparently this works quite satisfactorily.

* the value of `s' is not fixed but uses EWMA - something which rfc3448bis clarified and introduced.

* computing X_recv uses a disambiguation which tries to reconcile between the different definitions
  of RFC 3448 and 4342, cf. 
  http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3_packet_reception/#8._Computing_X_recv_

* introduced the possibility of changing the t_nfb to avoid frequently calling the no_feedback_timer
  when the RTT is small (Kconfig option)

* CCID3 packet reception (RX CCID) is largely conformant with RFC 3448/rfc3448bis rev 00 and was a
  pain to get right. See http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3_packet_reception why.

* sending feedback is also largely conformant with RFC 4342/3448, with the addition of the clarification
  for computing X_recv when the time interval between sending the last feedback and now is less than one
  RTT - in this case the previously computed X_recv value is reused (would otherwise lead to false 
  estimates of X_recv).

HTH
Gerrit

|  > |  If you do have a list of them it would be great. I see quite a few
|  > |  comments about bis in the code.
|  > I don't have a list at present, need to go through the works. Will post at a later point.
|  >
|  Don't worry too much about this, as this is my research so don't want
|  to waste your time :-)
-
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