draft-thornburgh-adobe-rtmfp-05.txt   draft-thornburgh-adobe-rtmfp-06.txt 
Network Working Group M. Thornburgh Network Working Group M. Thornburgh
Internet-Draft Adobe Internet-Draft Adobe
Intended status: Informational April 5, 2013 Intended status: Informational April 15, 2013
Expires: October 7, 2013 Expires: October 17, 2013
Adobe's Secure Real-Time Media Flow Protocol Adobe's Secure Real-Time Media Flow Protocol
draft-thornburgh-adobe-rtmfp-05 draft-thornburgh-adobe-rtmfp-06
Abstract Abstract
This memo describes the Secure Real-Time Media Flow Protocol (RTMFP), This memo describes the Secure Real-Time Media Flow Protocol (RTMFP),
an endpoint-to-endpoint communication protocol designed to securely an endpoint-to-endpoint communication protocol designed to securely
transport parallel flows of real-time video, audio, and data transport parallel flows of real-time video, audio, and data
messages, as well as bulk data, over IP networks. RTMFP has features messages, as well as bulk data, over IP networks. RTMFP has features
making it effective for peer-to-peer (P2P) as well as client-server making it effective for peer-to-peer (P2P) as well as client-server
communications, even when Network Address Translators (NATs) are communications, even when Network Address Translators (NATs) are
used. used.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 7, 2013. This Internet-Draft will expire on October 17, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 103, line 26 skipping to change at page 103, line 26
Let TC_SENT indicate whether a Time Critical Forward Notification has Let TC_SENT indicate whether a Time Critical Forward Notification has
been sent on this session within the last 800 milliseconds. been sent on this session within the last 800 milliseconds.
Implement the method of Section 3.6.2.6 to manage transmission Implement the method of Section 3.6.2.6 to manage transmission
timeouts, including setting the TIMEOUT_ALARM. timeouts, including setting the TIMEOUT_ALARM.
On being notified that the TIMEOUT_ALARM has fired, perform the On being notified that the TIMEOUT_ALARM has fired, perform the
function in Figure 23: function in Figure 23:
on TimeoutNotification(WAS_LOSS): on TimeoutNotification(WAS_LOSS):
SSTHRESH <- MAX(SSTHRESH, CWND * 3/4); set SSTHRESH to MAX(SSTHRESH, CWND * 3/4).
ACKED_BYTES_ACCUMULATOR <- 0; set ACKED_BYTES_ACCUMULATOR to 0.
if WAS_LOSS is TRUE: if WAS_LOSS is TRUE:
CWND <- CWND_TIMEDOUT; set CWND to CWND_TIMEDOUT.
else: else:
CWND <- CWND_INIT; set CWND to CWND_INIT.
Figure 23: Pseudocode for handling a timeout notification Figure 23: Pseudocode for handling a timeout notification
Before processing each received packet in this session: Before processing each received packet in this session:
1. Set ANY_LOSS to FALSE; 1. Set ANY_LOSS to FALSE;
2. Set ANY_NAKS to FALSE; 2. Set ANY_NAKS to FALSE;
3. Set ACKED_BYTES_THIS_PACKET to 0; and 3. Set ACKED_BYTES_THIS_PACKET to 0; and
4. Set PRE_ACK_OUTSTANDING to S_OUTSTANDING_BYTES; 4. Set PRE_ACK_OUTSTANDING to S_OUTSTANDING_BYTES.
On notification of loss (Section 3.6.2.5): set ANY_LOSS to TRUE. On notification of loss (Section 3.6.2.5): set ANY_LOSS to TRUE.
On notification of negative acknowledgement (Section 3.6.2.5): set On notification of negative acknowledgement (Section 3.6.2.5): set
ANY_NAKS to TRUE. ANY_NAKS to TRUE.
On notification of acknowledgement of data (Section 3.6.2.4): set On notification of acknowledgement of data (Section 3.6.2.4): set
ANY_ACKS to TRUE, and add the count of acknowledged bytes to ANY_ACKS to TRUE, and add the count of acknowledged bytes to
ACKED_BYTES_THIS_PACKET. ACKED_BYTES_THIS_PACKET.
After processing all chunks in each received packet for this session, After processing all chunks in each received packet for this session,
perform the function in Figure 24: perform the function in Figure 24:
if ANY_LOSS is TRUE: if ANY_LOSS is TRUE:
if (TC_SENT is TRUE) OR (PRE_ACK_OUTSTANDING > 67200 AND \ if (TC_SENT is TRUE) OR (PRE_ACK_OUTSTANDING > 67200 AND \
FASTGROW_ALLOWED is TRUE): FASTGROW_ALLOWED is TRUE):
SSTHRESH <- MAX(PRE_ACK_OUTSTANDING * 7/8, CWND_INIT); set SSTHRESH to MAX(PRE_ACK_OUTSTANDING * 7/8, CWND_INIT).
else: else:
SSHTRESH <- MAX(PRE_ACK_OUTSTANDING * 1/2, CWND_INIT); set SSHTRESH to MAX(PRE_ACK_OUTSTANDING * 1/2, CWND_INIT).
CWND <- SSTHRESH; set CWND to SSTHRESH.
ACKED_BYTES_ACCUMULATOR <- 0; set ACKED_BYTES_ACCUMULATOR to 0.
else if (ANY_ACKS is TRUE) AND (ANY_NAKS is FALSE) AND \ else if (ANY_ACKS is TRUE) AND (ANY_NAKS is FALSE) AND \
(PRE_ACK_OUTSTANDING >= CWND): (PRE_ACK_OUTSTANDING >= CWND):
var INCREASE <- 0; set var INCREASE to 0.
var AITHRESH; var AITHRESH.
if FASTGROW_ALLOWED is TRUE: if FASTGROW_ALLOWED is TRUE:
if CWND < SSTHRESH: if CWND < SSTHRESH:
INCREASE <- ACKED_BYTES_THIS_PACKET; set INCREASE to ACKED_BYTES_THIS_PACKET.
else: else:
ACKED_BYTES_ACCUMULATOR += ACKED_BYTES_THIS_PACKET; add ACKED_BYTES_THIS_PACKET to ACKED_BYTES_ACCUMULATOR.
AITHRESH <- MIN(MAX(FLOOR(CWND / 16), 64), 4800); set AITHRESH to MIN(MAX(CWND / 16, 64), 4800).
while ACKED_BYTES_ACCUMULATOR >= AITHRESH: while ACKED_BYTES_ACCUMULATOR >= AITHRESH:
ACKED_BYTES_ACCUMULATOR -= AITHRESH; subtract AITHRESH from ACKED_BYTES_ACCUMULATOR.
INCREASE += 48; add 48 to INCREASE.
else FASTGROW_ALLOWED is FALSE: else FASTGROW_ALLOWED is FALSE:
if CWND < SSTHRESH AND TC_SENT is TRUE: if CWND < SSTHRESH AND TC_SENT is TRUE:
INCREASE <- CEIL(ACKED_BYTES_THIS_PACKET / 4); set INCREASE to CEIL(ACKED_BYTES_THIS_PACKET / 4).
else: else:
var AITHRESH_CAP; var AITHRESH_CAP.
if TC_SENT is TRUE: if TC_SENT is TRUE:
AITHRESH_CAP <- 2400; set AITHRESH_CAP to 2400.
else: else:
AITHRESH_CAP <- 4800; set AITHRESH_CAP to 4800.
ACKED_BYTES_ACCUMULATOR += ACKED_BYTES_THIS_PACKET; add ACKED_BYTES_THIS_PACKET to ACKED_BYTES_ACCUMULATOR.
AITHRESH <- MIN(MAX(FLOOR(CWND / 16), 64), AITHRESH_CAP); set AITHRESH to MIN(MAX(CWND / 16, 64), AITHRESH_CAP).
while ACKED_BYTS_ACCUMULATOR >= AITHRESH: while ACKED_BYTES_ACCUMULATOR >= AITHRESH:
ACKED_BYTES_ACCUMULATOR -= AITHRESH; subtract AITHRESH from ACKED_BYTES_ACCUMULATOR.
INCREASE += 24; add 24 to INCREASE.
CWND <- MAX(CWND + MIN(INCREASE, SMSS), CWND_INIT); set CWND to MAX(CWND + MIN(INCREASE, SMSS), CWND_INIT).
Figure 24: Pseudocode for congestion window adjustment after Figure 24: Pseudocode for congestion window adjustment after
processing a packet processing a packet
Author's Address Author's Address
Michael C. Thornburgh Michael C. Thornburgh
Adobe Systems Incorporated Adobe Systems Incorporated
345 Park Avenue 345 Park Avenue
San Jose, CA 95110-2704 San Jose, CA 95110-2704
 End of changes. 17 change blocks. 
30 lines changed or deleted 30 lines changed or added

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