Internet DRAFT - draft-leiwm-avtcore-mprtp-ra
draft-leiwm-avtcore-mprtp-ra
AVT Core Working Group W. Lei
Internet-Draft W. Zhang
Intended status: Experimental S. Liu
Expires: September 12, 2013 Northeastern University
March 12, 2013
Multipath RTP based on RTP Relay Application (MPRTP-RA)
draft-leiwm-avtcore-mprtp-ra-00
Abstract
This document defines the framework of multipath transmission of real-time
media based on relay. The framework allows participants to use multiple
paths,including the default IP path and relay paths, to transport media in a
RTP session. A relay path may via one or more RTP relay nodes which provide
relay services for media data. This framework describes function blocks and
behaviors of MPRTP-RA-capable RTP agent and RTP relay. The framework also
defines multipath transport protocol by extending RTP, and relay control
protocol named OpenPath.
Status of this Memo
This Internet-Draft is submitted in full conformance with the provisions of
BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force
(IETF). Note that other groups may also distribute working documents as
Internet-Drafts. The list of current Internet-Drafts is at
http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and
may be updated, replaced, or obsoleted by other documents at any time. It is
inappropriate to use Internet-Drafts as reference material or to cite them
other than as "work in progress."
This Internet-Draft will expire on September 12, 2013.
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the document
authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions
Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect
on the date of publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect to
this document. Code Components extracted from this document must include
Simplified BSD License text as described in Section 4.e of the Trust Legal
Provisions and are provided without warranty as described in the
Simplified BSD License.
Leiwm, et al. Expires September 12, 2013 [Page 1]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Table of Contents
1 Introduction................................................. 3
2 Terminology.................................................. 4
3 Definitions.................................................. 4
4 Goals........................................................ 5
4.1 Functional goals............................................. 5
4.2 Compatibility goals.......................................... 5
5 MPRTP-RA Topologies.......................................... 6
6 MPRTP-RA Use Scenarios....................................... 7
7 Overview of operation........................................ 9
7.1 Usage Scenario in SIP system................................. 10
8 MPRTP-RA Agent Behavior...................................... 12
8.1 MPRTP-RA session management.................................. 12
8.2 Path management.............................................. 12
8.3 Flow partitioning and scheduling............................. 15
8.4 Subflow recombination........................................ 15
8.5 Subflow RTP transmission..................................... 15
8.6 Subflow RTCP transmission.................................... 15
9 RTP Relay Behavior........................................... 16
9.1 Path-Table................................................... 16
9.2 Connection Management........................................ 18
9.3 Relay Service Management..................................... 18
9.4 Path Validity Management..................................... 19
9.5 Query Messages Processing.................................... 19
9.6 Path-Table Modification Messages Processing.................. 19
9.7 RTP/RTCP Packet Processing................................... 20
10 OpenPath Protocol............................................ 20
10.1 Protocol Overview............................................ 21
10.1.1 Relay-to-Controller.......................................... 21
10.1.2 Controller-to-Relay.......................................... 22
10.1.3 Symmetric.................................................... 23
10.2 Common Structures............................................ 23
10.2.1 OpenPath Common Header....................................... 23
10.2.2 Common Body of OpenPath Failure Responses.................... 24
10.2.3 Transport Address Structure.................................. 25
10.3 OpenPath Request and Success Response Message Format......... 26
10.3.1 HELLO........................................................ 26
10.3.2 START/STOP/BYE............................................... 26
10.3.3 ECHO......................................................... 26
10.3.4 NOTIFY/DELETE_PATH........................................... 27
10.3.5 FEATURES..................................................... 27
10.3.6 STATISTICS................................................... 28
10.3.7 ADD-PATH/ UPDATE_PATH........................................ 28
11 MPRTP-RA Packet Formats...................................... 28
11.1 RTP Header Extension for MPRTP-RA............................ 29
11.1.1 MPRTP-RA RTP Extensions for a Subflow........................ 30
11.2 RTCP Extension for MPRTP-RA (MPRTCP-RA)...................... 30
Leiwm, et al. Expires September 12, 2013 [Page 2]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
11.2.1 MPRTCP-RA Extensions for Subflow Reporting (SR/RR)........... 31
11.2.2 MPRTCP-RA Extensions for Subflow Path Probe.................. 33
11.2.3 MPRTCP-RA Extensions for Subflow Keepalive................... 34
12 SDP Considerations........................................... 34
12.1 Signaling MPRTP-RA Header Extension in SDP................... 34
12.2 Signaling MPRTP-RA Capability in SDP......................... 35
12.3 Relay Path Advertisement in SDP.............................. 35
12.4 Offer/Answer................................................. 36
12.4.1 An Example................................................... 37
13 IANA Considerations.......................................... 38
13.1 MPRTP-RA Header Extension.................................... 38
13.2 MPRTCP-RA Packet Type........................................ 39
13.3 SDP Attributes............................................... 39
14 Security Considerations...................................... 40
15 References................................................... 40
15.1 Normative References......................................... 40
15.2 Informative References....................................... 4E
1. Introduction
Media transmission in traditional networks mainly depends on a single path,
such as the default IP path determined by routing protocols. However, the
default IP path usually is not optimal and sometimes even worse when the
path via different Internet Service Provider (ISP) networks.
IP communication applications usually adopt a relay-based way to transfer
media. Relay-based media transmission is used to be a general solution for
NAT and firewall traversal which usually makes direct media transmission
between the sender and the receiver unfeasible. And this can provide
communication applications with opportunities to autonomously select media
transmission path by replacing the default IP path with a relay path.
Whether the default IP path or the relay path, the end-to-end media session
mainly uses transport protocols dedicated to single-path media transmission,
such as RTP. However, the single path may not be capable of handling load
requirements of media transmission, especially when transporting high bit-
rate multimedia content.
Using multiple paths between source and destination for media transmission
has been shown to be an effective method to increase throughput and
reliability. This document defines the framework of multipath transmission
of real-time media based on relay. The framework allows participants to use
multiple paths, including the default IP path and relay paths, to transport
media in a RTP session.
This framework describes the function blocks and behaviors of the MPRTP-RA-
capable RTP agent and RTP relay. The framework also defines the application-
level multipath transport protocol by extending RTP, and the relay control
Leiwm, et al. Expires September 12, 2013 [Page 3]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
protocol named OpenPath.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to
be interpreted as described in RFC2119 [2].
3. Definitions
1) Endpoint: host either initiating or terminating a RTP flow.
2) Subflow: flow of RTP packets along a specific path, i.e., a subset of the
packets belonging to an RTP stream. The combination of all RTP subflows
forms the complete RTP stream. Typically, a subflow should map to a unique
path.
3) Path: sequence of logical links between a sender and a receiver. We
define it by a set of addresses. All available paths for a MPRTP-RA session
include a default path and one or more relay paths.
4) Default path: a path between a sender and a receiver, which is same as
the path negotiated and established by a normal RTP session. It is
determined by the c= and m= lines in Session Description Protocol (SDP)
during session setup. If either the sender or the receiver is not behind a
symmetric NAT, the default path may be the direct network path between the
sender and the receiver. Otherwise, it may traverse a third-party node, such
as a TURN server or a media server which is responsible for relaying RTP
packets.
5) Relay path: a path via one or multiple RTP relay nodes between a sender
and a receiver. A relay path is defined by a sequence of (S, R1, ..., Rm, D),
where Ri denotes the address of the i-th relay node and m denotes the number
of relay nodes in this path.
6) Candidate path: a path that is either a default path or a relay path.
7) Active path: a path that carries media data.
8) RTP Relay: an intermediary entity that primarily plays the role of
forwarding RTP subflow according to a Path-Table. RTP Relay receives RTP
packets from its upstream entity of the subflow that the received RTP
packets belong to, obtains the next-hop transport address based on the
matching results in the Path-Table, and forwards the RTP packets to the
corresponding next-hop transport address. All RTP fields produced by initial
RTP protocol remain intact.
9) Path-Table: a table consisting of a set of path entries.
10) MPRTP-RA Session: a special type of RTP session in which the original
Leiwm, et al. Expires September 12, 2013 [Page 4]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
single media stream is split into multiple subflows and each subflow is
mapped to a unique path.
4. Goals
This section outlines the basic goals that multipath RTP based on RTP relay
aims to meet. These are broadly classified as Functional goals and
Compatibility goals.
4.1 Functional goals
In multipath RTP based on RTP relay, the original media flow in a RTP
session is split into multiple subflows which are carried over multiple
paths. This may prove beneficial in case of video streaming.
1) Increased Throughput: In some cases, the relay path, which is assigned to
a media session according to the location of participants and the current
network status, has better transport capacity than the default path between
the participants. And cumulative transport capacity of multiple paths may
better meet the requirements of the high bit-rate media session.
2) Improved Reliability: when multiple paths are available, MPRTP-RA agent
can use some of them to send redundant packets or re-transmit packets to
increase reliability. When one active path occurs failure such as errors,
unreachability or congestion, MPRTP-RA agent can tear down the corresponding
subflow or switch the subflow load to other candidate paths based on a
scheduling strategy.
3) Load balancing: transmitting a RTP stream over multiple paths reduces the
bandwidth usage on a single path, which in turn reduces the impact of the
media stream on other traffic on that path and then avoids congestion in
network hot-spots. From the perspective of the whole network, the network
load balancing and network utilization can be significantly improved.
4.2 Compatibility goals
MPRTP-RA MUST be backwards compatible. In other words, if multiple paths are
not available, the endpoints supporting the extension in this document
should fall back to be compatible with legacy RTP stacks.
1) Application Compatibility: MPRTP-RA-capable RTP applications MUST be
backwards compatible with existing RTP applications and not require any
change to them. Moreover, regardless of whether the receiver is MPRTP-RA-
capable, the MPRTP-RA-capable sender is allowed to use multiple paths for
transmission. The media receiver with legacy RTP stack is still able to
reconstruct and playback the media stream because the received RTP packets
are compliant to [RFC3550].
Leiwm, et al. Expires September 12, 2013 [Page 5]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
2) Network Compatibility: individual RTP subflows MUST themselves be well-
formed RTP flows, so that they are able to traverse NATs and firewalls.
5. MPRTP-RA Topologies
For a multimedia session, the media transmission path from the source to its
receiver is usually the default IP path determined by routing protocols,
such as OSPF. However, the default IP path usually is not optimal and
sometimes even when the path goes through different ISP networks. If the
media transmission path is switched to another path, referred to as a relay
path, which goes through one or more relay nodes, and if network bandwidth
and other performance metrics between the endpoints and its neighboring
relay nodes and between two successive relay nodes if they exist can be
ensured, the quality of the received media can be improved.
In addition, when transporting high bit-rate multimedia content, the single
path may not be capable of handling the load requirements of media
transmission. It is an increasingly common practice for the endpoints with
high access bandwidth through well-connected access networks. The bandwidth
constraints of an end-to-end multimedia session are gradually migrating from
user access network to inside the network. In this case, using multiple
paths, including the default IP path and the relay paths, between the source
and the destination for media transmission has been shown to be a more
effective method than using a single path. The media sender balances their
multimedia stream across multiple paths based on the path reception
statistics (e.g. RTT, loss-rate, delay etc.). The resource capacity of
multiple paths can well meet the throughput requirements, better packet
losses and delays within a predictable range, such that enhance user
experience.
The relay nodes mentioned above may be deployed in a variety of ways.
Combined with application requirements, application service providers can
deploy a large number of proprietary media servers with high network
bandwidth and computing performance in their system. The participating nodes
that access the same application may also self-organize to form a dynamic
overlay network among which the nodes with higher performance can provide
media relay service to others.
This specification presents the notion of "RTP relay", which could be
considered as intermediate systems at the RTP level. The deployment of RTP
relay nodes provides more options of media transport paths different from
the default path.
RFC3550 supports the use of RTP-level translators and mixers, and discusses
the impact on RTP and RTCP packets in detail. RFC5117 describes a number of
scenarios using mixers and translators in point-to-point and point-to-
multipoint topologies. MPRTP-RA presented in this document assumes that if a
mixer or translator exists in the network, then either all of the multiple
Leiwm, et al. Expires September 12, 2013 [Page 6]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
paths or none of the multiple paths go via this component.
6. MPRTP-RA Usage Scenarios
MPRTP-RA can be applied in many multimedia application scenarios for
multipath multimedia transport, including point-to-point real-time
communication, many-to-one parallel streaming and one-to-many multicast
streaming. In these scenarios, higher bit-rate and higher quality codecs are
allowed to be used.
Figure 1 illustrates a point-to-point MPRTP-RA session. There are three
paths between the sender and the receiver, including the default path, one
relay path via one RTP relay node and one relay path via two RTP relay
nodes. Applications running at the sender side can choose a data
partitioning method according to its particular requirements. Then, each
flow is assigned to a path. The receiver reassembles the received flows
using a resequencing buffer to retrieve the reconstructed flow which is
decoded and displayed.
RTP data(A, Relay-1,B)
+------------+
+------------------->| RTP Relay-1|------------------------+
| +------------+ |
| V
+--------+ RTP data(A,B) +--------+
| User A |----------------------------------------------->| User B |
+--------+ +--------+
| ^
| RTP data(A, Relay-2,Relay-3,B) |
| +------------+ +------------+ |
+--->| RTP Relay-2|-------------------->| RTP Relay-3|-----+
+------------+ +------------+
Figure 1. A point-to-point multipath RTP session
A wide range of applications require data transmission from geographically
distributed sources to one destination. For instance, large volume data of
high definition movies are stored at multiple geographically distributed
locations. The audiences need to retrieve and integrate data from several
locations. This usage scenario can be completed by a many-to-one MPRTP
session, which is depicted in Figure 2. A MPRTP-RA agent streams different
portions of a video from three servers concurrently. The path between the
server and the MPRTP-RA agent may go through one or more RTP relay nodes.
Leiwm, et al. Expires September 12, 2013 [Page 7]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
+---+
| A |----------------------------------------------------+
+---+ |
|
V
+---+ +---------+ +---+
| B |------------------|RTP Relay|-------------------->| D |
+---+ +---------+ +---+
^
|
+---+ +---------+ |
| C |------------------|RTP Relay|-----------------------+
+---+ +---------+
Figure 2. A many-to-one multipath RTP session
Many video applications are typically characterized by a wide range of
connection qualities and receiving devices which are with different
capabilities ranging from cell phones with small screens and restricted
processing power to high-end PC with high-definition display. These systems
are usually adopting layered coding. Layered coding enables the encoding of
a high-quality video bit stream containing one or more subset bit streams
that can themselves be decoded independently. This usage scenario can be
completed by a one-to-many MPRTP-RA session, which is depicted in figure 3.
A video source is encoded into multiple streams, each of which is
transported by a source tree for video multicast.
+---+
+------------------------->| A |
| +--->+---+
| |
+---------+ |
+------------------->|RTP Relay|----------------|------+
| +---------+ | |
| | | |
| | | V
+---+ +------------------+ | +---+
| S | | | | B |
+---+ +------------------|--+ +---+
| | | ^
| | | |
| +---------+ | |
+------------------->|RTP Relay|-------------|---------+
+---------+ |
| |
| +------>+---+
+------------------------->| C |
+---+
Figure 3. A one-to-many multipath RTP session
Leiwm, et al. Expires September 12, 2013 [Page 8]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
7. Overview of operation
As intermediate entities, RTP relay nodes provide data relay service to the
communicating endpoints. Then multiple relay paths may be generated between
a sender and a receiver.
If the RTP relay nodes are deployed by application service provider, the
relay paths may be assigned by the server system. If the RTP relay nodes are
those participating nodes with higher performance, MPRTP-RA-capable
endpoints can query the third-party component to obtain relay paths when
they want to establish MPRTP-RA session. Whether it is the server system or
the third party component, for simplicity sake, we call it controller below.
The controller is responsible for selecting one or multiple relay paths for
a media flow.
Considering the execution efficiency, the relay path is designed to be
unidirectional. A bidirectional media flow in a conversational use-case is
regarded as two independent unidirectional flows in opposite directions.
Relay paths are assigned for each unidirectional flow.
The sender and the RTP relay nodes need to know the relay path information
so they can correctly forward subflow data along a particular relay path. An
alternative approach, similar to source routing, is that the sender can
store the entire route in packet headers. Each intermediate node will simply
examine the headers of a received packet and forward it to the next node as
indicated in the source route. The advantage of the method is to simplify
the implementation of RTP relay nodes. They need not store any path
information and can perform routing of RTP packets only based on RTP
extension headers. But this method introduces traffic overhead considerably,
especially when the payload traffic is relatively small.
In practice, the sender and the RTP relay nodes need not to know the
complete information of the associated path. They just need to know the
next-hop transport address for each path associated with them. A pair of
transport address comprises one network address plus one port. During
assigning the relay paths for a media flow, the controller associates a
unique path identifier to each relay path and communicates with RTP relay
nodes to set the corresponding path information. When the controller is
located in server system, the next-hop transport addresses of the sender for
each relay paths and the associated path identifiers should be advertised to
the sender using a kind of out-of-band signaling (e.g., Session Description
Protocol (SDP) in Session Initiation Protocol (SIP), Real-Time Streaming
Protocol (RTSP)).
A RTP relay node performs packet lookups and forwarding based on Path-Table
which stores path information. The Path-Table contains a set of path entries
which can be added, updated and deleted by the controller via OpenPath
protocol. The controller is free to be implemented in any way, provided that
Leiwm, et al. Expires September 12, 2013 [Page 9]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
correct semantics of OpenPath protocol are preserved. For example, the
controller can be implemented as a function module of SIP server or a
standalone component.
The sender performs connectivity checks on multiple relay paths to ascertain
reachability before using them. If the path is reachable, then it is
referred to available path. According to the transmission requirements of
the current RTP session, the sender selects the default path and one or
multiple available relay paths as active paths among all the available paths
to transmit multimedia data to the receiver. The sender distributes the
packets across the active paths based on a scheduling strategy and
dynamically adjusts the load on each path. The receiver combines the
received subflows to recreate the original RTP session.
A multipath RTP session should be established before using multiple paths to
transport media flow. It can be set up in many possible ways e.g., during
session establishment, or at anytime during the session. To reduce media
startup time, endpoints can start transporting multimedia data via the
default path and then perform path connectivity checks for relay paths. If
there are one or multiple available relay paths, the endpoints update the
single path session to a multipath session.
For a multipath RTP session, each subflow appears as an independent RTP
flow. To monitor the transport quality of the path, the participants MUST
generate individual RTCP messages for per subflow. To maintain backward
compatibility with legacy applications, the participants MUST also send
aggregate RTCP packets along with the subflow specific RTCP packets.
Specifically, the participants generate aggregate RTCP following the normal
RTCP defined in RFC3550, and send them along the default path. Meanwhile,
the sender generates RTCP Sender Reports (SR) for each subflow and sends
them along the same path as the subflow RTP packets. The receiver responds
with a RTCP Receiver Report (RR) for each subflow, which is sent along the
default path.
7.1 Usage Scenario in SIP system
Figure 4 depicts a kind of usage scenario in which SIP is used as a separate
signaling to advertise relay paths information. In this case, two
participants are MPRTP-RA-capable.
Leiwm, et al. Expires September 12, 2013 [Page 10]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
+-----------------+
(1)INVITE | SIP Server | (3)INVITE
+---------------------->| --------------|------------------------+
| +-------------------| | Controller |<-------------------+ |
| | (6)200OK +-----------------+ (4)200OK | |
| | ^ ^ ^ | |
| | (2)(5) | |(2)(5) | (2)(5) | |
| V +-------+ V +------+ | V
+--------+ P-1/P-3 | +------------+ | P-1/P-3 +--------+
| User A |<---------|----->| RTP Relay-1|<-------|----------->| User B |
+--------+ | +------------+ | +--------+
^ | | ^
| V V |
| +------------+ +------------+ |
+--->| RTP Relay-2|<------------------->| RTP Relay-3|<-------+
P-2/P-4 +------------+ +------------+ P-2/P-4
Figure 4. Usage Scenario for Relay-based Multipath Transmission in SIP System
(1) User A sends the INVITE to the SIP server that serves her domain. SIP
server extracts the current addressable locations of the caller and the
callee, and the media information including media types and listed media
codecs. SIP server assigns the appropriate relay paths for the media flow
from user B to user A with the aid of a dedicated component named
controller.
(2) In this example, two relay paths assigned to the media flow from user B
to user A are (B, Relay-1, A) and (B, Relay-3, Relay-2, A), named P-1 and
P-2. And each relay path is associated with a globally unique path
identifier, separately named PID-1 and PID-2. The controller component sends
an AddPath request of OpenPath protocol to each of the three selected RTP
relay nodes. AddPath request includes the corresponding path identifier and
next-hop transport address of the receiving RTP relay node. For Relay-1, the
path identifier is PID-1 and the next-hop transport address is the current
addressable location of user A. For Relay-2, the path identifier is PID-2
and the next-hop transport address is the current addressable location of
user A.For Relay-3, the path identifier is PID-2 and the next-hop transport
address is Relay-2's IP address and relay service port.
(3) SIP server inserts the path identifiers and the next-hop transport
addresses of user B into SDP body of INVITE and forward the modified INVITE
to user B. The next-hop transport addresses of user B for P-1 and P-2 are
separately the rely address of Relay-1 and Relay-3.
(4) User B answers the call and sends back a 200 OK response. In the same
way, SIP server assigns the appropriate relay paths for the media flow from
user A to user B with the aid of the controller.
(5) In this example, the controller assigns the same relay paths with
Leiwm, et al. Expires September 12, 2013 [Page 11]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
opposite direction for the media flow from user A to user B based on
symmetry principle.They are separately (A, Relay-1, B) and (A, Relay-2,
Relay-3, B), named P-3 and P-4, associated with the path identifiers of
PID-3 and PID-4. The controller component sends an AddPath request of
OpenPath protocol to each of the three selected RTP relay nodes. For Relay-
1, the path identifier is PID-3 and the next-hop transport address is the
current addressable location of user B. For Relay-2, the path identifier is
PID-4 and the next-hop transport address is Relay-3's IP address and relay
service port. For Relay-3, the path identifier is PID-4 and the next-hop
transport address is the current addressable location of user B.
(6) SIP server inserts the path identifiers and the next-hop transport
addresses of user A into SDP body of 200 OK response and forwards it to user
A. The next-hop transport addresses of user A for P-3 and P-4 are separately
the rely address of Relay-1 and Relay-2.
(7) Through the signaling process above, user A and user B separately obtain
the information of candidate relay paths as the sending peer of the
corresponding media flow. After connectivity check, user A and user B take
advantage of multiple paths to transport the media flow.
8. MRTP Agent Behavior
Given multiple paths, MPRTP-RA and its companion control protocol, multipath
RTCP (MRTCP-RA), need to provide essential support for multipath media
transport, including session and path management, flow partitioning and
scheduling, subflow recombination, QoS feedback for each subflow as well as
payload type identification, sequence numbering, timestamping and delivery
monitoring.
8.1 MPRTP-RA session management
RTP is a session-oriented protocol. At the same way, a multipath RTP session
needs to be established before transporting data on multiple paths. The
multipath RTP session setup uses a way of out-of-band signaling (e.g., SDP
in SIP or RTSP). The capability exchange and relay path advertisement should
be done during the signaling process. A multipath RTP session may be setup
from the beginning, or may be upgraded from a typical single path RTP
session.
To be backward compatibility with legacy applications, a multipath RTP
session must look like a bundle of individual RTP sessions.
8.2 Path management
The sender gathers candidate paths from the out-of-band signaling for the
multipath RTP session setup. The default path is determined by the c= and m=
lines in SDP. It may be the direct network path between the sender and the
Leiwm, et al. Expires September 12, 2013 [Page 12]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
receiver, or may traverse a third-party node, such as a TURN server or a
dedicated relay server. For the latter, IP address and port of the third-
party node is in the c= and m= lines in SDP.
Candidate relay paths may change during a session. For example, a relay node
on the relay path fails during the session, or additional relay paths are
assigned for the session. The changes should be advertised to the sender by
the same way of out-of-band signaling.
The sender needs to perform path probes to determine if the path is
available and if so, obtains the transmission quality of the path at the
same time. After obtaining a new candidate path, the sender first performs
path probe process, if the path is available, marks it available and puts it
into the available path list ordered based on a decreasing priority level;
if the path is not available, marks it unavailable and puts it into the
unavailable path list. The sender will periodically perform path probes for
all the paths in available path list to actively detect path failure and
perceive the dynamic changes to the path. If the probe process for a
particular path fails, the path will be marked unavailable and removed from
the available path list to the unavailable path list. The sender should also
perform path probes for the paths in unavailable path list in a longer
cycle. If the probe process for a particular path successes, the path will
be marked available and removed from the unavailable path list to the
available path list.
If no media is received on a relay path within a given time, RTP relay nodes
will withdraw the corresponding resources allocated for this path.Therefore,
all the relay paths should be kept alive periodically. To meet this
requirement, the sender MUST multiplex the subflow specific RTP and RTCP
packets on the same port. On the one hand, the multiplexed RTCP packets can
be used to keep alive the relay path. This is in line with the
recommendation made in RFC6263. On the other hand, multiplexing RTP and RTCP
reduces the number of ports used by per multipath RTP session. For non-
active paths, the sender only needs to periodically send RTCP keepalive
packets.
When RTP and RTCP packets are multiplexed onto a single port, the RTCP
packet type field occupies the same position in the packet as the
combination of the RTP marker (M) bit and the RTP payload type (PT). This
field is used to distinguish RTP and RTCP packets. It is RECOMMENDED to
follow the guidelines in the RTP/AVP profile [RFC3551] for the choice of RTP
payload type values, with the additional restriction in RFC5761.
Using the information in the subflow reports, a sender can monitor active
paths for failure (e.g., errors, unreachability, and congestion). If failure
happens in an active path, the sender may perform flow repartitioning and
spread the RTP load across other active paths, or may select a new path from
the available path list to replace the failure path.
Leiwm, et al. Expires September 12, 2013 [Page 13]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
8.3 Flow partitioning and scheduling
This document does not limit the usage of multiple paths. The sender may
concurrently use multiple paths to obtain higher throughput, or may send all
traffic on a specified path while all other available paths are used only
rarely to enhance resilience (e.g., for retransmission, for error-repair, or
for redundancy packets). The sender MUST only use the default path and the
relay paths in available path list as the active path. How to select
multiple paths among all available paths and how many paths to use
concurrently are outside the scope of this document.
If multiple paths are used concurrently, the original multimedia stream
should be divided into several substreams. The partition may be done based
on media type, encoding scheme and path characteristics. Flow partitioning
methods are outside the scope of this document. An application should make
appropriate choices according to its own needs. Payload format
specifications for particular payload types should be developed to adapt
them to multipath transport. Here, we introduce several options for
reference only.
A simple flow partitioning scheme is to assign packets to multiple subflows
using the round-robin algorithm. Specifically, the original media stream is
first divided into blocks of equal-sized temporal length. Then, a subflow is
assembled by picking blocks periodically from the original blocks in an
increasing order. This method can be applied to both audio and video
formats. However, all the data are treated equally and not distinguished
based on their different importance in terms of decoded media quality.And
great correlations exist among subflows which are sent along paths with
different transport capacity.
Furthermore, a multistream coder using layered coding, multiple description
coding or object-oriented coding can produce multiple compressed media
flows. In layered coding, a flow is either the base layer or one of the
enhancement layers; in multiple description coding, a flow typically
consists of packets from a description; in object-oriented coding, various
objects are coded individually and placed in so-called elementary steams.
Each coding flow corresponds to a separate subflow, or several coding flows
are multiplexed into one subflow. Data participant in this way can
effectively reduce the correlations among subflows.
The sender should associate a subflow with an active path based on a
scheduling strategy. A scheduling policy should jointly consider various
factors including the estimated path bandwidth information, the path
reception statistics (e.g. RTT, loss-rate, delay etc.), the relative
importance of subflow data and so on. Due to the changes in path
characteristics, the sender should be able to change its scheduling strategy
during an ongoing session to fully explore the potential of multipath
transport.
Leiwm, et al. Expires September 12, 2013 [Page 14]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
8.4 Subflow recombination
A media receiver, irrespective of MPRTP-RA support or not, should be able to
process the media stream received from multiple paths correctly. A legacy
receiver just ignores the MPRTP-RA extension headers and follows the normal
process defined in RTP. A MPRTP-RA-capable receiver first restores the order
of each subflow using path identifier and subflow sequence numbers. It then
examines the head-of-line packets of the subflows and orders them according
to their timestamps and original flow sequence numbers. Therefore, the
multipath subflows appear as a single RTP stream to the existing up-level
applications which do not require changes.
8.5 Subflow RTP transmission
In a multipath RTP session, if multiple paths are used to send the media
stream, RTP packets MUST follow the subflow specific fields described in the
MPRTP-RA extension headers. Specifically, the subflow specific fields
include path identifier and subflow-specific sequence number. The
corresponding RTP header extension is shown in section 10.
A Path identifier, which is globally unique, is used to identify a specific
path by the sender and RTP relay nodes. Meanwhile, the path identifier in
RTP packets is also used to identify a subflow by the receiver. Apart from
normal RTP sequence numbers defined in RTP, the multipath sender MUST add
subflow-specific sequence numbers to help calculate fractional losses,
jitter, RTT, playout time, etc, for each path. The initial subflow sequence
number is randomly generated when the subflow is first established in the
MPRTP-RA session.
8.6 Subflow RTCP transmission
The participants generate aggregate RTCP reports to provide the overall
media statistics and follow the normal RTCP defined in [RFC3550]. Aggregate
RTCP reports are transmitted along the default path.
Meanwhile, the participants also generate individual RTCP reports for per
subflow to provide the per path media statistics. The sender generates RTCP
Sender Reports for each unique subflow and sends them along the same path as
the subflow RTP packets. The subflow specific RTP and RTCP packets are
multiplexed on a single port. As the relay path is unidirectional, the
receiver generates RTCP Receiver Reports for each unique subflow and sends
them along the default path. The aggregate and subflow-specific RTCP reports
MUST NOT be compounded as defined in RFC 5506.
Although subflow RTCP SRs and RRs are not sent along the same path, they
still can be used to measure round-trip propagation to the receiver along
different paths as defined in RFC3550. Since all subflow RTCP RRs are sent
along the default path, the calculated round-trip propagation delays can
Leiwm, et al. Expires September 12, 2013 [Page 15]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
correctly represent relative size of transmission delays of different paths.
In RTP, RTCP reports are transmitted at a low rate. This algorithm
effectively keeps the bandwidth used by RTCP to a relatively constant ratio
of the total session bandwidth. However, such a feedback rate may not be
frequent enough for the sender to quickly adapt to path fluctuation and
transmission errors. Timely RTCP reports are necessary for multipath
transport environments. The additional subflow RTCP reports MUST follow the
timing rules defined in RFC 4585 [5]. For point-to-point applications, since
the number of the participants is relatively small, subflow RTCP reports are
usually sent sufficiently frequently.
The RTCP reporting interval may be locally implemented and may depend on the
behavior of each path. For instance, the RTCP interval may be different for
an active path, an alternate path, and an unavailable path. Additionally, an
endpoint may decide to share the RTCP reporting bandwidth equally across all
its paths or schedule based on the rate on each path.
9. RTP Relay Behavior
A RTP relay node performs RTP/RTCP packet lookups and forwarding based on a
Path-Table. All the RTP Relay nodes are managed by a controller over
connections using a protocol referred to as OpenPath protocol.
9.1 Path-Table
The Path-Table contains a set of path entries each of which corresponds to
an associated relay path. Each path entry consists of match fields, result
fields and counters (see table 1).
Leiwm, et al. Expires September 12, 2013 [Page 16]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Table 1: Fields in a path entry.
+-------------------------------------+---------------------------+
| Fields | Bits |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| Match fields |
+-----------------------------------------------------------------+
| Path Identifier | 32 |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| Result fields |
+-----------------------------------------------------------------+
| Next-hop transport address type | 8 |
+-------------------------------------+---------------------------+
| | For an IPv6 address, this |
|Next-hop transport IP address | is 128;for an IPv4 address|
| | , this is 32. |
+-------------------------------------+---------------------------+
| Next-hop transport port | 16 |
+-------------------------------------+---------------------------+
| Idle timeout | 16 |
+-------------------------------------+---------------------------+
| Hard timeout | 16 |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| Counters |
+-----------------------------------------------------------------+
| Received packets | 64 |
+-------------------------------------+---------------------------+
| Received bytes | 64 |
+-------------------------------------+---------------------------+
| Duration (seconds) | 32 |
+-------------------------------------+---------------------------+
| Duration (nanoseconds | 32 |
+-----------------------------------------------------------------+
Match fields are used to match against RTP/RTCP packets. Match fields only
consist of Path ID in this document.
Path ID: a 32 bit unsigned integer uniquely identifying the associated path.
Result fields include next-hop transport address and idle timeout. Next-hop
transport address is to determine where the matched packets are forwarded.
Type: corresponds to the type of the next-hop transport address. Namely:
1: IPv4 address
2: IPv6 address
IP Address: the address to which the relay node forwards the matched
packets.
Leiwm, et al. Expires September 12, 2013 [Page 17]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Port: the port number to which the relay node forwards the matched packets.
It is multiplexed by RTP and RTCP packets.
Counters are maintained for each path entry and updated for matching RTP
packets.
Received packets: the amount of packets the path has matched.
Received bytes: the amount of bytes the path has matched.
Duration: the amount of time the path has been installed in the RTP relay
node.
9.2 Connection Management
A RTP relay node communicates with the controller over a connection which
may be encrypted using TLS or run directly over TCP.
The RTP relay node initiates a standard TLS or TCP connection to the
controller. The RTP relay node can get the IP address of the controller in a
number of ways, such as manual configuration, DNS domain name queries and so
on.
When a connection is established, the RTP relay node immediately sends a
HELLO message to the controller. The relay ID field is set to the unique
identifier of the RTP relay node. The version field is set to the highest
OpenPath protocol version supported by the RTP relay node. The HELLO message
contains the IP address and port of the RTP relay node for the relay
service. Upon receipt of this message, the controller checks the included
OpenPath protocol version. If the version is not supported, the controller
responds to the HELLO with a failure response; otherwise, the controller
replies with a success response. The RTP relay node completes the
registration process by exchanging HELLO messages.
If a failure response to the HELLO message is received, the RTP relay node
then terminate the connection. Otherwise, the connection proceeds and the
RTP relay node may start relay service.
During the lifetime of the connection, Echo requests should be sent
periodically from either the RTP relay node or the controller, and the
request receiver must return an ECHO reply.
9.3 Relay Service Management
After receiving a success response to the HELLO message, the RTP relay node
may send a START message to the controller to indicate that it has enough
capacity to provide relay service.
In the case that the RTP relay node is overloaded, or under other some
situations, the RTP relay node may send a STOP message to the controller to
Leiwm, et al. Expires September 12, 2013 [Page 18]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
indicate that it will no longer receive new relay service requests (i.e.
ADD_PATH messages) for a while. During this period, the RTP relay node still
provides relay service for those existing relay paths. And ECHO messages
still need to be sent periodically between the RTP relay node and the
controller.When the RTP relay node recovers from an overloaded state, it may
send a START message to the controller to indicate that it has additional
capacities to provide new relay services.
When the RTP relay node wants to stop relay service permanently, it should
actively send a BYE message to the controller before terminating the
connection. In this way, the controller can be ready in time to do some
remedial measures. For instance, the controller may assign new relay paths
for the affected media flow.
9.4 Path Validity Management
Each path entry has an idle timeout and a hard timeout associated with it.
These two fields control how quickly a path entry expires. When a path entry
is inserted by an ADD_PATH request or modified by a UPDATE_PATH request, its
idle timeout and hard timeout are set with the values from the message.
If either value is non-zero, the RTP relay node must note the arrival time
of RTP/RTCP packet on the associated path, as it may need to evict the path
entry later. A non-zero hard timeout field causes the path entry to be
removed after the given number of seconds, regardless of how many packets it
has matched. A non-zero idle timeout field causes the path entry to be
removed when it has matched no packets in the given number of seconds. Using
these two fields, the RTP relay node can actively clear those expired path
entries. In addition, the controller may actively remove path entries by
sending DELETE_PATH messages.If the RTP relay node actively removes a path
entry, it must send a NOTIFY message to the controller. The NOTIFY message
contains a complete description of the path entry including the reason for
removal, the path entry duration and statistics at the time of removal.
9.5 Query Messages Processing
After connection establishment, the RTP relay node may receive Feature
requests from the controller to provide capabilities information. The RTP
relay node must respond with a Feature reply that specifies its
capabilities.
During the lifetime of the connection, the controller may periodically
collect statistics from a RTP relay node by sending STATISTICS requests. The
RTP relay node must respond with a Statistics reply that specifies its
current statistics.
9.6 Path-Table Modification Messages Processing
Leiwm, et al. Expires September 12, 2013 [Page 19]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Path-Table in the RTP relay node is managed by the controller through Path-
Table modification messages. This document defines three Path-Table
modification message types: ADD_PATH for inserting a new path entry,
DELETE_PATH for removing an existing path entry, and UPDATE_PATH for
modifying an existing path entry.
For ADD_PATH requests, the RTP relay node must first check if any path entry
with the same path identifier has existed in the Path-Table. If an overlap
conflict exists between an existing path entry and the ADD_PATH request, the
RTP relay node must refuse the addition and respond with a failure response.
For valid ADD_PATH requests, the RTP relay node must insert a new path entry
in the Path-Table and respond to the controller with a success response. The
counters of received packets and received bytes in the new inserted entry
are set to zero.
For DELETE_PATH requests, if a matching entry exists in the Path-Table, it
must be removed, and a success response is returned to the controller. For
DELETE_PATH requests, if no path entry matches, no path entry modification
occurs, and a failure response is returned to the controller.
For UPDATE_PATH requests, if a matching entry exists in the Path-Table, the
result fields of this entry is updated with the value from the request, and
counter fields are left unchanged. For UPDATE_PATH requests, if no path
entry matches, no path entry modification occurs, and a failure response is
returned to the controller.
9.7 RTP/RTCP Packet Processing
The main function of RTP relay node is to provide media relay service to the
associated subflows. All subflows associated with a RTP relay node share a
common relay port of the RTP relay node.
On receiving a data packet, RTP relay node first distinguishes whether it is
a RTP packet or a RTCP packet. Then RTP relay node extracts the path ID from
the appropriate position in the packet and does matching in the Path-Table.
If the received packet does not match a path entry in the Path-Table, RTP
relay node should drop the packet. If the received packet matches a path
entry in the Path-Table, RTP relay node forwards it to the associated next-
hop transport address in the matched path entry. Meanwhile, RTP relay node
updates the associated statistical counters in the matched path entry.
If the received packet is a RTCP probe packet, RTP relay node needs to do
some special handling before forwarding it to the associated next-hop
transport address. In this case, RTP relay node generates a Relay Node block
and appends it to the received RTCP probe packet.
10. OpenPath Protocol
Leiwm, et al. Expires September 12, 2013 [Page 20]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
The controller is implementation-specific. However, between the controller
and the RTP relay node, all messages MUST be formatted according to the
OpenPath protocol.
10.1 Protocol Overview
OpenPath is based on a request/response transaction model. Each transaction
consists of a request and a response. A response uses the same transaction
id as is in the associated request to facilitate pairing. The transaction id
is a 32-bit identifier generated by the request sender.
All OpenPath messages begin with a common OpenPath header. OpenPath messages
MAY contain a body. The structure and interpretation of a body depends on
the message type.
OpenPath messages are guaranteed delivery over a connection-oriented
channel. All integer fields are carried in network octet order, that is,
most significant byte first. Octets designated as padding have the value
zero.
OpenPath message types fall into three classes: relay-to-controller,
controller-to-relay and symmetric. Relay-to-controller messages are
initiated by the RTP relay node and used to manage the channel connection
and update the controller of changes to the RTP relay node. Controller-to-
relay messages are initiated by the controller and used to manage the Path-
Table or inspect the state of the RTP relay node. Symmetric messages are
initiated by either the controller or the RTP relay node. The message types
used by OpenPath are described below.
10.1.1 Relay-to-Controller
Relay-to-Controller messages are initiated by the controller and require a
response from the controller.
HELLO: The RTP relay node registers with the controller by sending a HELLO
request. The HELLO request contain the unique identifier of the RTP relay
node, the highest OpenPath protocol version supported by the RTP relay node,
and the IP address and port of the RTP relay node for the relay service. The
controller must respond with a HELLO response that indicates the outcome of
registration. This is commonly performed upon establishment of the OpenPath
connection channel.
START: The RTP relay node starts relay service by sending a START request.
The controller must respond with a START response that indicates the
outcome of relay service startup.
STOP: The RTP relay node may stop relay service temporarily by sending a
STOP request. For instance, when the RTP relay node is overloaded, it may
Leiwm, et al. Expires September 12, 2013 [Page 21]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
want to refuse accepting any new relay service requests for a while. The
controller must respond with a STOP response that indicates the outcome of
relay service pause. During relay service pause, the RTP relay node still
provides relay service for those existing relay paths. The RTP relay node
may restart relay service by sending a START request after a while.
BYE: The RTP relay node may terminate the relay service permanently by
sending a BYE request, such as before terminating the OpenPath connection
channel or exiting. Meanwhile, the RTP relay node ceases relay service for
all existing relay paths. If the RTP relay node wants to start relay service
again, it must first perform registration with the controller.
NOTIFY: When the RTP relay node actively removes a path entry, it may notify
the controller by sending a NOTIFY request. For instance, in order to save
the resource, the RTP relay node actively removes those path entries which
lack activity.
10.1.2 Controller-to-Relay
Controller-to-Relay messages are initiated by the controller and require a
response from the RTP relay node.
FEATURES: The controller may request the capabilities of a RTP relay node by
sending a FEATURES request. The RTP relay node must respond with a FEATURES
response that specifies the capabilities of the RTP relay node. This is
commonly performed after successful registration of the RTP relay node.
STATISTICS: The controller may periodically collect statistics from the RTP
relay node by sending STATISTICS requests. The RTP relay node must respond
with a STATISTICS response that specifies current statistics of the RTP
relay node.
ADD_PATH: When the controller needs to assign relay paths for a media flow,
the controller must send an ADD_PATH request to each RTP relay node on the
assigned relay path. The RTP relay node must respond with an ADD_PATH
response that specifies the outcome of adding a new path entry. A relay path
is assigned successfully only when each RTP relay node replies with an
ADD_PATH success response.
UPDATE_PATH: The controller may want to modify an existing path entry in the
Path-Table of a RTP relay node by sending a UPDATE_PATH request. For
instance, a media stream may be "put on hold" and transmission of media
may be ceased for a while. In this case, the controller may update the idle
timeout and hard timeout of the corresponding path entries of all the RTP
relay nodes on the affected relay paths to a longer time. The RTP relay node
must respond with an UPDATE_PATH response that specifies the outcome of
updating an existing path entry.
Leiwm, et al. Expires September 12, 2013 [Page 22]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
DELETE_PATH: The controller may delete an existing path entry in the Path-
Table of a RTP relay node by sending a DELETE_PATH request, such as when a
media stream ends normally. The RTP relay node must respond with a
DELETE_PATH response that specifies the outcome of deleting an existing path
entry.
10.1.3 Symmetric
Symmetric messages are sent in either direction.
ECHO: Echo requests MUST be sent periodically from either the controller or
the RTP relay node. And the receiver must return an ECHO response. ECHO
messages can be used to measure the latency of a controller-relay
connection, as well as verify the peer's liveness. The receiver of an ECHO
request must respond with an ECHO response, which consists of an OpenPath
header plus the unmodified body of an ECHO request message.
10.2 Common Structures
This section describes structures used by multiple messages.
10.2.1 OpenPath Common Header
Common OpenPath header is defined below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |R|S| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Relay ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transaction ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Version (V): 6 bits
This field identifies the version of OpenPath protocol version being
used.The version defined by this document is one (1).
R: 1 bit
If the R bit is set, the message is an OpenPath request; otherwise, the
message is an OpenPath response.
S: 1 bit
When the message is a request, this bit is reserved. When the message is
a response, if the S bit is set, the message is a success response;
otherwise, the message is a failure response.
Leiwm, et al. Expires September 12, 2013 [Page 23]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Type: 8 bits
This field identifies the type of the OpenPath messages. This document
defines 11 OpenPath message types:
+----------------------------------------------------------------+
| Type Value | Type Name | Sending Direction |
+--------------+---------------+---------------------------------+
| 1 | HELLO | RTP relay -> Controller |
+--------------+---------------+---------------------------------+
| 2 | BYTE | RTP relay -> Controller |
+--------------+---------------+---------------------------------+
| 3 | ECHO | RTP relay -> Controller or |
| | | Controller -> RTP relay |
+--------------+---------------+---------------------------------+
| 4 | START | RTP relay -> Controller |
+--------------+---------------+---------------------------------+
| 5 | STOP | RTP relay -> Controller |
+--------------+---------------+---------------------------------+
| 6 | NOTIFY | RTP relay -> Controller |
+--------------+---------------+---------------------------------+
| 7 | FEATURES | Controller -> RTP relay |
+--------------+---------------+---------------------------------+
| 8 | STATISTICS | Controller -> RTP relay |
+--------------+---------------+---------------------------------+
| 9 | ADD-PATH | Controller -> RTP relay |
+--------------+---------------+---------------------------------+
| 10 | DETELE-PATH | Controller -> RTP relay |
+--------------+---------------+---------------------------------+
| 11 | UPDATE-PATH | Controller -> RTP relay |
+----------------------------------------------------------------+
Length: 16 bits
The length field indicates the total length of the message in 32-bit
words including the header and any padding.
Relay ID: 32 bits
This field is a 32-bit identifier that corresponds to a globally unique
RTP relay node. It is generated by the RTP relay node when it startups,
and remains unchanged during the entire lifecycle of the RTP relay node.
Transaction ID: 32 bits
This field identifies the transaction id associated with this message. It
is randomly generated by the request sender and discarded when the
associated response message is received. The transaction ids of responses
must always match the request that prompted them.
10.2.2 Common Body of OpenPath Failure Responses
Leiwm, et al. Expires September 12, 2013 [Page 24]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
OpenPath failure responses of all message types MAY contain an optional body
after the common OpenPath header. If the body is present, it conforms to a
common structure defined below.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status code | Rlength | reason |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reason |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Status code: 8 bits
This field is a numeric result code that indicates the outcome of a
request processing.
Rlength: 8 bits
This field is the length of the reason phrase in 16-bit word length.
Reason: variable size
This field is a short textual description of the status code.
10.2.3 Transport Address Structure
A RTP relay node needs to advertise the controller about its transport
address for relay service. The controller also needs to tell the RTP relay
node about the transport address of its next-hop node for each associated
path. A transport address is defined as follow.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Type | Pad(0) | Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 8 bits
This field is the type of transport address. Namely:
1: IPv4 address
2: IPv6 address
Port: 16 bits
This field is the port number part of transport address.
Address: 4 octets (IPv4), 16 octets (IPv6)
Leiwm, et al. Expires September 12, 2013 [Page 25]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
The IP address part of transport address.
10.3 OpenPath Request and Success Response Message Format
10.3.1 HELLO
The HELLO request contains a body beyond a common OpenPath header. The body
contains the transport address of the RTP relay node to provide relay
service.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |R|S| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Relay ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transaction ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Type | Pad(0) | Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The HELLO success response only contains a common OpenPath header.
10.3.2 START/STOP/BYE
The START/STOP/BYE requests and their success responses have no body; that
is, they only contain a common OpenPath header.
10.3.3 ECHO
An ECHO request consists of a common OpenPath header and an optional body.
If the body is absent, the ECHO request/response messages are used to simply
verify liveness between the controller and the RTP relay node. The body may
contain a timestamp to check latency between the controller and the RTP
relay node. Example:
Leiwm, et al. Expires September 12, 2013 [Page 26]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |R|S| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Relay ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transaction ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, most significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp,least significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
NTP timestamp: Using the timestamp format of the Network Time Protocol
(NTP), which is in seconds relative to 0h UTC on 1 January 1900 [RFC1305].
The full resolution NTP timestamp is a 64-bit unsigned fixed-point number
with the integer part in the first 32 bits and the fractional part in the
last 32 bits.
10.3.4 NOTIFY/DELETE_PATH
The NOTIFY/DELETE_PATH requests contain a body beyond a common OpenPath
header. The body only contains a Path ID field.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |R|S| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Relay ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transaction ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Path ID: 32 bits
This field is a 32-bit identifier that corresponds to a globally unique
path. It is generated by the controller when assigning relay paths for a
media flow.
The NOTIFY/DELETE_PATH success responses only contain a common OpenPath
header.
10.3.5 FEATURES
Leiwm, et al. Expires September 12, 2013 [Page 27]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
The FEATURES request only contains a common OpenPath header.
The FEATURES success response contains a body beyond the common OpenPath
header.
(to be continued)
10.3.6 STATISTICS
The STATISTICS request only contains a common OpenPath header.
The STATISTICS success response contains a body beyond the common OpenPath
header.
(to be continued)
10.3.7 ADD-PATH/ UPDATE_PATH
The ADD-PATH/ UPDATE_PATH requests contain a body beyond a common OpenPath
header. The body contains match fields and result fields of a path entry.
The result fields contain next-hop transport address and idle/hard timeout.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| V |R|S| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Relay ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transaction ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Type | Pad(0) | Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Idle timeout | Hard timeout |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Idle timeout: 16 bits
This field is the number of seconds after which the path will timeout if
no traffic.
Hard timeout: 16 bits
This field is the number of seconds after which the path must expire
regardless of whether or not packets go through the path.
The ADD-PATH/ UPDATE_PATH success responses only contain a common OpenPath
header.
11. MPRTP-RA Packet Formats
Leiwm, et al. Expires September 12, 2013 [Page 28]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
In this section we define the RTP/RTCP protocol structures to meet the
requirements described in the previous sections.
11.1 RTP Header Extension for MPRTP-RA
The MPRTP-RA header extension is used to distribute a single RTP stream over
multiple subflows which are transmitted along different paths.
The header conforms to the one-byte RTP header extension defined in [9]. The
header extension contains a 16-bit length field that counts the number of
32-bit words in the extension, excluding the four-octet extension header
(therefore zero is a valid length; see Section 5.3.1 of [1] for details).
The RTP header for each subflow is defined below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|1| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xBE | 0xDE | length=N-1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPID | LEN | reserved | MPRTP-RA header data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP payload |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPID:This field corresponds to the type of MPRTP-RA packet.Namely:
+----------------------------------------------------------------+
| MPID value | Use |
+--------------+-------------------------------------------------+
| 0x01 | Subflow RTP header. For this case the LEN |
| | is set to 6. |
+--------------+-------------------------------------------------+
LEN:
This field is the number that minus one of extension data bytes following
the one-byte header.
MPRTP-RA header data:
This field carries the MPID specific data as described in the following
sub-sections.
Leiwm, et al. Expires September 12, 2013 [Page 29]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
11.1.1 MPRTP-RA RTP Extensions for a Subflow
The RTP header for each subflow is defined below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|1| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| 0xBE | 0xDE | length=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x1 | LEN=6 | reserved | Subflow-specific Seq Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| RTP payload |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPID=0x1:
This field indicates that the MPRTP-RA header extension carries subflow
specific information.
Subflow-Specific Sequence Number (SSSN):
This field is sequence of the packet in the subflow. Each subflow has its
own strictly monotonically increasing sequence number space.
Path ID:
This field is identifier of the path as well as the subflow. Every RTP
along the same path carries the same unique path identifier.
11.2 RTCP Extension for MPRTP-RA (MPRTCP-RA)
The RTCP header extension for MPRTP-RA is used to 1) provide RTCP feedback
of per subflow to determine the characteristics of each path, 2) probe the
transport capability of each path, and 3) keep alive each path.
Leiwm, et al. Expires September 12, 2013 [Page 30]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=MPRTCP-RA | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of the first source) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|MPRTCP-RA Type | block length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| MPRTCP-RA data |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PT=MPRTCP-RA=211:
This field identifies that it is a Multipath RTCP packets.
MPRTCP-RA Type: 8 bits
This field corresponds to the type of MPRTP-RA RTCP packet. Namely:
+---------------------------------------------------------------+
|MPRTCP-RA Type value | Use |
+---------------------+-----------------------------------------+
| 0 | Subflow Specific Report |
+---------------------+-----------------------------------------+
| 1 | Path Probe |
+---------------------+-----------------------------------------+
| 2 | Keep Alive |
+---------------------+-----------------------------------------+
block length: 8 bits
This field is the length of the encapsulated MPRTCP-RA data in 16-bit word
length following block length field. The value zero indicates there is no
data following.
MPRTCP-RA data: variable size
This field will be defined later in the following sub-sections.
11.2.1 MPRTCP-RA Extensions for Subflow Reporting (SR/RR)
When sending a report for a specific subflow the sender or receiver MUST add
only the reports associated with that path. Each subflow is reported
independently using the following MPRTCP-RA Feedback header.
Leiwm, et al. Expires September 12, 2013 [Page 31]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=MPRTCP-RA | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of the first source) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | block length | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Subflow-specific reports |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | block length | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID #2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Subflow-specific reports |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPRTCP-RA Type=0
The value indicates that the encapsulated block is a subflow report.
Path ID: 32 bits
This field is the identifier of the path associated with the subflow that
the endpoint is reporting about.
Subflow-specific reports: variable
Subflow-specific report contains all the reports associated with the path
ID. For a sender, it MUST include a Subflow-specific Sender Report (SSR).
For a receiver, it MUST include a Subflow-specific Receiver Report (SRR).
Additionally, if the receiver supports subflow-specific extension reports
then it MUST append them to the SRR.
An example of SSR is shown below:
Leiwm, et al. Expires September 12, 2013 [Page 32]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=MPRTCP-RA | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of the first source) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | block length | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID #1 |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|V=2|P| RC | PT=SR=200 | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| NTP timestamp, most significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, least significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| subflow's packet count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| subflow's octet count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11.2.2 MPRTCP-RA Extensions for Subflow Path Probe
The Relay Node block describes a method to represent capacity information of
the relay node in a block format.
(to be continued)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=MPRTCP-RA | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of the first source) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 |block length=3 | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPRTCP-RA Type=1
The value indicates that the encapsulated block is a subflow path probe.
Leiwm, et al. Expires September 12, 2013 [Page 33]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
11.2.3 MPRTCP-RA Extensions for Subflow Keep Alive
This sub-section defines the RTCP header extension for keeping alive a relay
path.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=MPRTCP-RA | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of the first source) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 |block length=3 | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Path ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MPRTCP_Type=2
The value indicates that the encapsulated block is a subflow Keep Alive.
Path ID: 32 bits
This field is the identifier of the path that the endpoint is keeping
alive.
12. SDP Considerations
The indication of the presence of the RTP header extension, and the
advertisement of MPRTP-RA capability and relay paths, MUST be performed out-
of-band, for example, as part of a SIP offer/answer exchange using SDP. This
section defines dedicated extensions in SDP. SDP syntax and procedures are
available that can be re-used or easily adapted to provide the necessary
capabilities.
12.1 Signaling MPRTP-RA Header Extension in SDP
The RTP header extensions (see Section 11) which used in a MPRTP-RA session
need to be signaled in the out-of-band signaling during session setup. As
defined in RFC5285, the sender MUST use the following URI in extmap:
urn:ietf:params:rtp-hdrext:mprtp-relay. This is a media level parameter.
Legacy RTP clients will ignore this header extension.
Example:
v=0
o=alice 2890844526 2890844527 IN IP4 192.0.2.1
s=
Leiwm, et al. Expires September 12, 2013 [Page 34]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
c=IN IP4 192.0.2.1
t=0 0
m=video 49170 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E;
a=extmap:1 urn:ietf:params:rtp-hdrext:mprtp-relay
12.2 Signaling MPRTP-RA Capability in SDP
A MPRTP-RA-capable participant of a media session MUST use SDP to indicate
that it supports MPRTP-RA. The mprtp-relay attribute defined here will be
used to indicate the support for MPRTP-RA. The syntax of the mprtp-relay
attribute is defined using the following Augmented BNF, as defined in
[RFC5234].
mprtp-relay-attrib = "a=" "mprtp-relay" CRLF ; flag to enable MPRTP-RA
The endpoint MUST use "a=mprtp-relay" if it supports MPRTP-RA and would
like to use it in the specific media session being signaling. The mprtp-
relay attribute is a media level parameter.
A MPRTP-RA-capable sender multiplexes RTP and RTCP packets of each subflow
on a single port. To be compatible with legacy endpoints, the MPRTP-RA-
capable endpoint MUST indicate support of multiplexing by adding "a=rtcp-
mux" in SDP [RFC5761]. When an MPRTP-RA-capable endpoint receives an SDP
containing "a=mprtp-relay" but without "a=rtcp-mux", the endpoint MUST
infer that the peer, if as a sender, supports multiplexing of RTP and RTCP
packets.
The MPRTP-RA-capable sender MAY use multiple paths concurrently to increase
throughput. If the desired media rate exceeds the current media rate, the
MPRTP-RA-capable sender MUST renegotiate the application specific
("b=AS:xxx") [RFC4566] bandwidth.
12.3 Relay Path Advertisement in SDP
The information of candidate relay paths MUST be advertised to the sender in
the out-of-band signaling. The relay-path attribute is extended to advertise
candidate relay paths in SDP. The syntax of the mprtp-relay attribute is
defined using the following Augmented BNF, as defined in [RFC5234]. The
definitions of DIGIT, SP and CRLF are according to RFC4234.
relay-path-attrib = "a=" relay-path-label ":" counter SP path-id SP
transport-address CRLF
relay-path-label = "relay-path"
counter = 1*DIGIT
path-id = 32token-char
transport-address = addrtype ":" unicast-address ":" port
Leiwm, et al. Expires September 12, 2013 [Page 35]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
; addrtype from RFC4566, typically "IP4" | "IP6"
; port from RFC4566
unicast-address = IP4-address / IP6-address
; IP4-address from RFC4566
; IP6-address from RFC4566
token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 / %x41-5A / %x5E-
7E
The path identifier and the next-hop transport address of the sender for
each candidate relay path is encapsulated in a relay-path attribute.
The <counter> parameter indicates the priority of the associated relay path
and it is a monotonically increasing positive integer starting at 1. Number
1 is the highest priority. The counter must be reset for each media line.
The relay-path attributes are ordered based on a decreasing priority level.
The <path-id> parameter indicates the path identifier of the associated
relay path.
The <transport-address> is the next-hop transport address of the sender for
associated candidate relay path. The <addrtype> is the address type. This
document only defines IP4 and IP6 for IPv4 addresses and IPv6 addresses
respectively.
Example:
a=relay-path:1 1a3b6c9d0e2f6g1qazxsw23edcvfr45t IP4/192.0.3.2/10000
12.4 Offer/Answer
When SDP is used to negotiate MPRTP-RA sessions following the offer/answer
mode [RFC3264], the "mprtp-relay" attribute indicates the desire to
transport media flow on multiple paths. If the offerer wishes to use MPRTP-
RA, it MUST include a media-level "a=mprtp-relay" attribution in the
initial SDP offer. If the answerer wishes to use MPRTP-RA, it MUST include
this attribute in the answer.
Even if the other party does not support MPRTP-RA, the offerer or the
answerer can still unilaterally enable MPRTP-RA which is backwards
compatible.
When SDP is used in a declarative manner, the "mprtp-relay" attribute
indicates that the message sender can send or receive media data over
multiple paths. The message receiver SHOULD be capable to stream media to
multiple paths or be prepared to receive media from multiple paths.
The following sub-section shows an example of SDP offer and answer to
negotiate MPRTP-RA sessions.
Leiwm, et al. Expires September 12, 2013 [Page 36]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
12.4.1 An Example
We take the usage scenario shown in Figure 4 in Section 7.1 as an example.
In this example, both the endpoints are MPRTP-RA capable.
User A includes an initial SDP offer in the session invitation message. The
initial SDP offer is shown as following.
Initial Offer:
v=0
o=alice 2890866901 2890866902 IN IP4 192.0.2.1
s=
c=IN IP4 192.0.2.1
t=0 0
m=video 39160 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E
a=rtcp-mux
a=mprtp-relay
When the invitation message is processed by the server system, two candidate
relay paths are assigned for the media flow from user B to user A. The
initial SDP offer in the session invitation message is modified as shown
below. The IP addresses of RTP relay-1/relay-2/relay-3 are 192.0.3.1,
192.0.4.1 and 192.0.5.1 respectively.
Modified Offer:
v=0
o=alice 2890866901 2890866902 IN IP4 192.0.2.1
s=
c=IN IP4 192.0.2.1
t=0 0
m=video 39160 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E
a=rtcp-mux
a=mprtp-relay
a=relay-path:1 1a3b6c9d0e2f6g1qazxsw23edcvfr45t IP4/192.0.3.1/10000
a=relay-path:2 0o9i8u7y6t5r4e3w2q0okm9ijn8uhb7y IP4/192.0.5.1/10000
If User B accepts the invitation, it includes an initial SDP answer in the
session reply message. The initial SDP answer is shown as following.
Initial Answer:
v=0
o=bob 2890866903 2890866904 IN IP4 192.0.6.1
s=
c=IN IP4 192.0.6.1
Leiwm, et al. Expires September 12, 2013 [Page 37]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
t=0 0
m=video 36120 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E;
a=rtcp-mux
a=mprtp-relay
When the relay message is processed by the server system, two candidate
relay paths are assigned for the media flow from user A to user B. The
initial SDP answer in the session invitation message is modified as shown
below.
Modified Answer:
v=0
o=bob 2890866903 2890866904 IN IP4 192.0.6.1
s=
c=IN IP4 192.0.6.1
t=0 0
m=video 36120 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E;
a=rtcp-mux
a=mprtp-relay
a=relay-path:1 2w3e4r5t6y7u8i9o0p1q2wsx3edc4rfv IP4/192.0.3.1/10000
a=relay-path:2 4r5t6y7u8i9o0p1q2w3e4rfv5tgb6yhn IP4/192.0.4.1/10000
13. IANA Considerations
The following contact information shall be used for all registrations in
this document:
Contact: Weimin Lei
mailto:leiweimin@ise.neu.edu.cn
tel:+86-24-8368-3048
Note to the RFC-Editor: When publishing this document as an RFC, please
replace "RFC XXXX" with the actual RFC number of this document and delete
this sentence.
13.1 MPRTP-RA Header Extension
This document defines a new extension URI to the RTP Compact Header
Extensions sub-registry of the Real-Time Transport Protocol (RTP) Parameters
registry, according to the following data:
Extension URI: urn:ietf:params:rtp-hdrext:mprtp-relay
Description: Multipath RTP based on relay
Reference: RFC XXXX
Leiwm, et al. Expires September 12, 2013 [Page 38]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
13.2 MPRTCP-RA Packet Type
A new RTCP packet format has been registered with the RTCP Packet type (PT)
Registry:
Name: MPRTCP-RA
Long name: Multipath RTCP base on Relay Application
Value: 211
Reference: RFC XXXX.
This document defines a substructure for MPRTCP-RA packets. A new
sub-registry has been set up for the sub-report block type (MPRTCP-RA Type)
values for the MPRTCP-RA packet, with the following registrations created
initially:
Name: Subflow Specific Report
Long name: Subflow Specific Report for Multipath RTP based on Relay
Application
Value: 0
Reference: RFC XXXX.
Name: Path Probe
Long name: Path Probe for Multipath RTP based on Relay Application
Value: 1
Reference: RFC XXXX.
Name: Keep Alive
Long name: Keep Alive for Multipath RTP based on Relay Application
Value: 2
Reference: RFC XXXX.
Further values may be registered on a first come, first served basis. For
each new registration, it is mandatory that a permanent, stable, and
publicly accessible document exists that specifies the semantics of the
registered parameter as well as the syntax and semantics of the associated
sub-report block. The general registration procedures of [RFC4566] apply.
13.3 SDP Attributes
In the registry for SDP parameters, the attributes named "mprtp-relay" and
"relay-path" have been registered as follows:
SDP Attribute ("att-field"):
Attribute Name: mprtp-relay
Long form: Multipath RTP based on Relay Application
Type of name: att-field
Type of attribute: Media level only
Subject to charset: No
Purpose: This attribute is used to indicate support for
Multipath RTP based on Relay Application.
Leiwm, et al. Expires September 12, 2013 [Page 39]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
Reference: See this document
Values: See this document.
SDP Attribute ("att-field"):
Attribute Name: relay-path
Long form: Relay Path of Multipath RTP based on Relay
Application
Type of name: att-field
Type of attribute: Media level only
Subject to charset: No
Purpose: This attribute is used to describe the path
identifier and the next-hop transport address of the
sender for a relay path.
Reference: See this document
Values: See this document.
14. Security Considerations
TBD
All drafts are required to have a security considerations section. See RFC
3552 [13] for a guide.
15. References
15.1 Normative References
[1] Mills, D., "Network Time Protocol (Version 3) Specification,
Implementation and Analysis", RFC 1305, March 1992.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A
Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July
2003.
[4] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
Conferences with Minimal Control", STD 65, RFC 3551, July 2003.
[5] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, "Extended
RTP Profile for Real-time Transport Control Protocol (RTCP)-Based
Feedback (RTP/AVPF)", RFC 4585, July 2006.
[6] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications:
ABNF", STD 68, RFC 5234, January 2008.
[7] Singer, D. and H. Desineni, "A General Mechanism for RTP Header
Extensions", RFC 5285, July 2008.
Leiwm, et al. Expires September 12, 2013 [Page 40]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
[8] Johansson, I. and M. Westerlund, "Support for Reduced-Size Real-Time
Transport Control Protocol (RTCP): Opportunities and Consequences", RFC
5506, April 2009.
[9] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and Control
Packets on a Single Port", RFC 5761, April 2010.
15.2 Informative References
[10] Schulzrinne, H., Rao, A., Lanphier, R., "Real Time Streaming Protocol
(RTSP)", RFC2326, April 1998.
[11] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson,
J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation
Protocol", RFC 3261, June 2002.
[12] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session
Description Protocol (SDP)", RFC 3264, June 2002.
[13] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on
Security Considerations", BCP 72, RFC 3552, July 2003.
[14] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description
Protocol", RFC 4566, July 2006.
[15] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117, January
2008.
[16] Marjou, X. and A. Sollaud, "Application Mechanism for Keeping Alive
the NAT Mappings Associated with RTP / RTP Control Protocol (RTCP)
Flows", RFC 6263, June 2011.
Authors' Addresses
Weimin Lei
Northeastern University
Institute of Communication and Information System
College of Information Science and Engineering
Shenyang, China, 110819
P. R. China
Phone: +86-24-8368-3048
Email: leiweimin@ise.neu.edu.cn
Wei Zhang
Northeastern University
Institute of Communication and Information System
Leiwm, et al. Expires September 12, 2013 [Page 41]
Internet-Draft MPRTP: Multipath RTP based on RTP Relay Application Mar 2013
College of Information Science and Engineering
Shenyang, China, 110819
P. R. China
Email: zhangwei1@ise.neu.edu.cn
Shaowei Liu
Northeastern University
Institute of Communication and Information System
College of Information Science and Engineering
Shenyang, China, 110819
P. R. China
Email: liushaowei@research.neu.edu.cn
Leiwm, et al. Expires 2013 [Page 42]