draft-ietf-ecm-cm-02.txt   draft-ietf-ecm-cm-03.txt 
Internet Engineering Task Force Hari Balakrishnan Internet Engineering Task Force Hari Balakrishnan
INTERNET DRAFT MIT LCS INTERNET DRAFT MIT LCS
Document: draft-ietf-ecm-cm-02.txt Srinivasan Seshan Document: draft-ietf-ecm-cm-03.txt Srinivasan Seshan
CMU CMU
October, 2000 November, 2000
The Congestion Manager The Congestion Manager
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC-2026 [Bradner96]. all provisions of Section 10 of RFC-2026 [Bradner96].
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
skipping to change at line 699 skipping to change at line 699
occurred, as defined in [Floyd99b]), TCP assumes that a packet occurred, as defined in [Floyd99b]), TCP assumes that a packet
was lost and that the retransmitted packet has reached the was lost and that the retransmitted packet has reached the
recipient. Therefore, it calls cm_update(streamid, 2 * recipient. Therefore, it calls cm_update(streamid, 2 *
avg_pkt_size, avg_pkt_size, CM_NO_CONGESTION, avg_pkt_size, avg_pkt_size, CM_NO_CONGESTION,
rtt). CM_NO_CONGESTION is used since the loss period has already rtt). CM_NO_CONGESTION is used since the loss period has already
been reported. TCP also enqueues a retransmission of the lost been reported. TCP also enqueues a retransmission of the lost
segment and calls cm_request(). segment and calls cm_request().
When the TCP retransmission timer expires, the sender identifies When the TCP retransmission timer expires, the sender identifies
that a segment has been lost and calls cm_update(streamid, that a segment has been lost and calls cm_update(streamid,
avg_pkt_size, 0, CM_NO_FEEDBACK, 0) to signify the occurrence of avg_pkt_size, 0, CM_NO_FEEDBACK, 0) to signify that no feedback has
persistent congestion to the CM. TCP also enqueues a been received from the receiver and that one segment is sure to
retransmission of the lost segment and calls cm_request(). have "left the pipe." TCP also enqueues a retransmission of the
lost segment and calls cm_request().
6.1.2 Congestion-controlled UDP 6.1.2 Congestion-controlled UDP
Congestion-controlled UDP is a useful CM application, which we Congestion-controlled UDP is a useful CM application, which we
describe in the context of Berkeley sockets [Stevens94]. They describe in the context of Berkeley sockets [Stevens94]. They
provide the same functionality as standard Berkeley UDP sockets, provide the same functionality as standard Berkeley UDP sockets,
but instead of immediately sending the data from the kernel packet but instead of immediately sending the data from the kernel packet
queue to lower layers for transmission, the buffered socket queue to lower layers for transmission, the buffered socket
implementation makes calls to the API exported by the CM inside the implementation makes calls to the API exported by the CM inside the
kernel and gets callbacks from the CM. When a CM UDP socket is kernel and gets callbacks from the CM. When a CM UDP socket is
skipping to change at line 787 skipping to change at line 788
returns the smoothed rtt estimate as srtt. returns the smoothed rtt estimate as srtt.
- notify(): AIMD_CC adds the number of bytes sent to its - notify(): AIMD_CC adds the number of bytes sent to its
outstanding data window (ownd). outstanding data window (ownd).
- update(): AIMD_CC subtracts nsent from ownd. If the value of rtt - update(): AIMD_CC subtracts nsent from ownd. If the value of rtt
is non-zero, AIMD_CC updates srtt using the TCP srtt calculation. is non-zero, AIMD_CC updates srtt using the TCP srtt calculation.
If the update indicates that data has been lost, AIMD_CC sets If the update indicates that data has been lost, AIMD_CC sets
cwnd to 1 MTU if the loss_mode is CM_NO_FEEDBACK and to cwnd/2 cwnd to 1 MTU if the loss_mode is CM_NO_FEEDBACK and to cwnd/2
(with a minimum of 1 MTU) if the loss_mode is CM_LOSS_FEEDBACK or (with a minimum of 1 MTU) if the loss_mode is CM_LOSS_FEEDBACK or
CM_EXPLICIT_CONGESTION. AIMD_CC also sets its internal ssthresh variable CM_EXPLICIT_CONGESTION. AIMD_CC also sets its internal ssthresh
to variable to cwnd/2. If no loss had occurred, AIMD_CC mimics TCP
cwnd/2. If no loss had occurred, AIMD_CC mimics TCP slow start slow start and linear growth modes. It increments cwnd by nsent
and linear growth modes. It increments cwnd by nsent when cwnd < when cwnd < ssthresh (bounded by a maximum of ssthresh-cwnd) and
ssthresh (bounded by a maximum of ssthresh-cwnd) and by nsent * by nsent * MTU/cwnd when cwnd > ssthresh.
MTU/cwnd when cwnd > ssthresh.
- When cwnd or ownd are updated and indicate that at least one MTU - When cwnd or ownd are updated and indicate that at least one MTU
may be transmitted, AIMD_CC calls the CM to schedule a may be transmitted, AIMD_CC calls the CM to schedule a
transmission. transmission.
6.4 Example Scheduler Module 6.4 Example Scheduler Module
To clarify the responsibilities of a scheduler module, the To clarify the responsibilities of a scheduler module, the
following describes some of the actions of a simple round robin following describes some of the actions of a simple round robin
scheduler module (RR_sched): scheduler module (RR_sched):
skipping to change at line 912 skipping to change at line 912
We thank David Andersen, Deepak Bansal, and Dorothy Curtis for We thank David Andersen, Deepak Bansal, and Dorothy Curtis for
their work on the CM design and implementation. We thank Vern their work on the CM design and implementation. We thank Vern
Paxson for his detailed comments and patience, and Sally Floyd, Paxson for his detailed comments and patience, and Sally Floyd,
Mark Handley, and Steven McCanne for useful feedback on the CM Mark Handley, and Steven McCanne for useful feedback on the CM
architecture. architecture.
10. Authors' addresses 10. Authors' addresses
Hari Balakrishnan Hari Balakrishnan
Laboratory for Computer Science Laboratory for Computer Science
545 Technology Square 200 Technology Square
Massachusetts Institute of Technology Massachusetts Institute of Technology
Cambridge, MA 02139 Cambridge, MA 02139
Email: hari@lcs.mit.edu Email: hari@lcs.mit.edu
Web: http://nms.lcs.mit.edu/~hari/ Web: http://nms.lcs.mit.edu/~hari/
Srinivasan Seshan Srinivasan Seshan
School of Computer Science School of Computer Science
Carnegie Mellon University Carnegie Mellon University
5000 Forbes Ave. 5000 Forbes Ave.
Pittsburgh, PA 15213 Pittsburgh, PA 15213
 End of changes. 5 change blocks. 
12 lines changed or deleted 12 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/