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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html