Network Working Group S. Nandakumar
Internet-Draft C. Jennings
Intended status: Informational Cisco
Expires: November 10, 2020 May 09, 2020

Annotated Example SDP for WebRTC
draft-ietf-rtcweb-sdp-12

Abstract

The Web Real Time Communications (WebRTC) family of protocols defines mechanisms for direct interactive rich communication using audio, video and data between two peers' web browsers. Within the WebRTC framework, the Session Description protocol (SDP) is used for negotiating session capabilities between the peers. Such a negotiation happens based on the SDP Offer/Answer exchange mechanism

This document provides an informational reference in describing the role of SDP and the Offer/Answer exchange mechanism for the most common WebRTC use-cases.

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 https://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 November 10, 2020.

Copyright Notice

Copyright (c) 2020 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 (https://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.


Table of Contents

1. Introduction

Javascript Session Establishment Protocol (JSEP) [I-D.ietf-rtcweb-jsep] specifies a generic protocol needed to generate [RFC3264] Offers and Answers negotiated between the [WebRTC] peers for setting up, updating and tearing down a WebRTC session. For this purpose, SDP is used to construct [RFC3264] Offers/Answers for describing (media and non-media) streams as appropriate for the recipients of the session description to participate in the session.

The remainder of this document is organized as follows: Sections 3 and 4 provide an overview of SDP and the Offer/Answer exchange mechanism. Section 5 provides sample SDP generated for the most common WebRTC use-cases.

2. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

Readers should be familiar with the terminology defined in [RFC3264] and in [RFC7656].

3. SDP and the WebRTC

The purpose of this section is to provide a general overview of SDP and its components. For a more in-depth understanding, the readers are advised to refer to [RFC4566].

The Session Description Protocol (SDP) [RFC4566] describes multimedia sessions, which can contain audio, video, whiteboard, fax, modem, and other streams. SDP provides a general purpose, standard representation to describe various aspects of multimedia sessions such as media capabilities, transport addresses and related metadata in a transport agnostic manner, for the purposes of session announcement, session invitation and parameter negotiation.

SDP is widely used in the context of Session Initiation Protocol [RFC3261], Real-time Transport Protocol [RFC3550] and Real-time Streaming Protocol applications [RFC7826].

Below figure introduces high-level breakup of SDP into components that semantically describe a multimedia session, in our case, a WebRTC session [WebRTC]. It by no means captures everything about SDP and hence, should be used for informational purposes only.

                                                +---------------------+
                                                |        v=           |
                                                +---------------------+
                +---------------------+         +---------------------+
        ====    |   Session Metadata  |  =====  |        o=           |
        |       +---------------------+         +----------------------
        |                                       +---------------------+
        |                                       |        t=           |
        |                                       +---------------------+
        |
        |
        |                                       +---------------------+
        |                                       |        c=           |
        |                                       +---------------------+
        |       +---------------------+
        ====    | Network Description |   =====
        |       +---------------------+
        |                                       +---------------------+
        |                                       |    a=candidate      |
        |                                       +---------------------+
        |
        |
        |                                       +---------------------+
        |                                       |        m=           |
        |                                       +---------------------+
        |        +---------------------+        +---------------------+
        ====     | Stream Description  |  ===== |      a=rtpmap       |
        |        +---------------------+        +----------------------
        |                                       +---------------------+
        |                                       |      a=fmtp         |
        |                                       +---------------------+
        |                                       +---------------------+
        |                                       |      a=sendrecv..   |
        |                                       +---------------------+
+---------------+
|    SEMANTIC   |
| COMPONENTS OF |
|     SDP       |
+---------------+
        |                                       +---------------------+
        |                                       |      a=crypto       |
        |                                       +---------------------+
        |         +---------------------+       +---------------------+
        ====      |Security Descriptions|  =====|      a=ice-frag     |
        |         +---------------------+       +----------------------
        |                                       +---------------------+
        |                                       |      a=ice-pwd      |
        |                                       +---------------------+
        |                                       +---------------------+
        |                                       |     a=fingerprint   |
        |                                       +---------------------+
        |
        |
        |
        |                                       +---------------------+
        |                                       |      a=rtcp-fb      |
        |                                       +---------------------+
        |         +---------------------+       +---------------------+
        ====      |   Qos,Grouping      |       |                     |
                  |   Descriptions      |  =====|       a=group       |
                  +---------------------+       +----------------------
                                                +---------------------+
                                                |       a=rtcpmux     |
                                                +---------------------+




          

Figure 1: Semantic Components of SDP

[WebRTC] is designed so that the design of the control plane is specified and implemented by the JavaScript application, as described in the JSEP specification [I-D.ietf-rtcweb-jsep]. JSEP provides mechanisms to create session characterization and media definition information to conduct the session based on SDP exchanges.

In this context, SDP serves two purposes:

  1. Provide grammatical structure syntactically.
  2. Semantically convey participant's intention and capabilities required to successfully negotiate a session.

4. Offer/Answer and the WebRTC

This section introduces SDP Offer/Answer Exchange mechanism mandated by WebRTC for negotiating session capabilities while setting up, updating and tearing down a WebRTC session. This section is intentionally brief in nature and interested readers are recommended to refer [RFC3264] for specific details on the protocol operation.

The Offer/Answer [RFC3264] model specifies rules for the bilateral exchange of Session Description Protocol (SDP) messages for creation of multimedia streams. It defines protocol with involved participants exchanging desired session characteristics from each others perspective constructed as SDP to negotiate the session between them.

In the most basic form, the protocol operation begins by one of the participants sending an initial SDP Offer describing its intent to start a multimedia communication session. The participant receiving the offer MAY generate an SDP Answer accepting the offer or it MAY reject the offer. If the session is accepted the Offer/Answer model guarantees a common view of the multimedia session between the participants.

Within the context of WebRTC, the Offer/Answer model defines the state-machinery for WebRTC peers to negotiate session descriptions between them during the initial setup stages as well as for eventual session updates. JSEP specification [I-D.ietf-rtcweb-jsep] for WebRTC provides the mechanism for generating [RFC3264] SDP Offers and Answers in order for both sides of the session to agree upon the details such as the list of media formats to be sent/received, bandwidth information, crypto parameters, transport parameters, for example.

5. WebRTC Session Description Examples

A typical web based real-time multimedia communication session can be characterized as below:

5.1. Some Conventions

The examples given in this document follow the conventions listed below:

5.2. Basic Examples

5.2.1. Audio Only Session

This common scenario shows SDP for secure two-way audio session with Alice offering Opus, PCMU, PCMA and Bob accepting all the offered audio codecs.

This example also shows the endpoints being [RFC8445] compliant by including "ice2" ice-options attribute.

        2-Way Audio Only Session

Alice                                Bob
|                                     |
|                                     |
|    Offer(Audio:Opus,PCMU,PCMA)      |
|------------------------------------>|
|                                     |
|                                     |
|   Answer(Audio:Opus,PCMU,PCMA)      |
|<------------------------------------|
|                                     |
|                                     |
|Two-way Opus Audio (preferred-codec) |
|.....................................|
|                                     |
|                                     |

5.2.1 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
a=ice-options:ice2 [RFC8445]
a=identity:eyJpZHAiOnsiZG9tYWluIjoibmlpZi5odSIsInByb3RvY29sIjoiaWRwLmh0bWwifSwiYXNzZXJ0a W9uIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhVeUo5LmV5SmpiMjUwWlc1MGN5STZleUptYVc1b lpYSndjbWx1ZENJNlczc2lZV3huYjNKcGRHaHRJam9pYzJoaExUSTFOaUlzSW1ScFoyVnpkQ0k2SWprek9rTXdPa kl6T2pKR09rRXlPakF3T2pBd09qQkVPalV4T2tGRE9rUXlPalUwT2pZMU9rWTBPak5DT2pkRU9qa3lPa1JET2pnN E9qTXpPalV4T2pJek9qUXdPamN5T2preE9qZ3pPalZDT2pBeE9qSkdPalV3T2pjNE9qTkdJbjFkZlN3aWFXUmxib lJwZEhraU9pSnRhWE5wUUc1cGFXWXVhSFVpZlEuSTVQdGhKNFFDT05TOFVXd25OOUh3MEdaTDl3d0RBVGRrTWtFW llmdlNVTTJ6Umd5R09WSGgzRmpnc2FPZklkRnFsNUx6azBFbndVOTNQOUlCQ0xZOWtia3V1c0V1S25YRGVNLTNIN WFmdTJvZl9CTlZjUnB3MmdBdlNBbVR6SlltcEpqMFEtdmV0TmtVT1huZE9HLUIzT3ZGb3QwZVNENlZSNUdhb2wyc GduS3FSTktOd3dacEZ1eUZZbFRodHJIdGNiT19WV3o4QnZpTThKS25OdExWd1JxNUhMX2ZLTlRCNzFDYkoyWmh5W XU1UEdwWDhXcXJMWC1ybm5YSFY3RnhoTTh5OHdrLWd5cnRZazVnbFlZeUFrcTVqZklSXzRzWER5d19Qc1BWTW1aZ XltenVGV3BQTzVFWlJYR0ZpRjFET0o4Q0Q3Z3Zta2dUdlBXSWpkemtBIn0= Section 5.6 of [I-D.ietf-rtcweb-security-arch]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Opus Codec 48khz, 2 channels
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Alice can perform RTP/RTCP Muxing
a=rtcp:60065 IN IP4 203.0.113.141 [RFC3605]
a=rtcp-rsize [RFC5506] - Alice intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464] Alice supports RTP header extension to indicate audio levels
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP Host Candidate
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp] - RTP Server Reflexive ICE Candidate
a=candidate:0 2 UDP 2122194687 192.0.2.4 61667 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTCP Host Candidate
a=candidate:1 2 UDP 1685987071 203.0.113.141 60065 typ srflx raddr 192.0.2.4 rport 61667 [I-D.ietf-mmusic-ice-sip-sdp] - RTCP Server Reflexive ICE Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.1 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
a=ice-options:ice2 [RFC8445]
a=identity:ew0KICAiaWRwIjp7DQogICAgImRvbWFpbiI6ICJjaXNjb3NwYXJrLmNvbSIsDQogICAg InByb3RvY29sIjogImRlZmF1bHQiDQogIH0sDQogICJhc3NlcnRpb24iOiAibEp3WkVocmFVOXBTblJo V0U1d1VVYzFjR0ZYV1hWaFNGVnBabEV1U1RWUWRHaEtORkZEVDA1VE9GVlhkMjVPT1VoM01FZGFURGwz ZDBSQlZHUnJUV3RGVw0KICAgICAgICAgICAgICBsbG1kbE5WVFRKNlVtZDVSMDlXU0dnelJtcG5jMkZQ Wmtsa1JuRnNOVXg2YXpCRmJuZFZPVE5RT1VsQ1EweFpPV3RpYTNWMWMwVjFTMjVZUkdWTkxUTklODQog ICAgICAgICAgICAgIFdGbWRUSnZabDlDVGxaalVuQjNNbWRCZGxOQmJWUjZTbGx0Y0VwcU1GRXRkbVYw VG10VlQxaHVaRTlITFVJelQzWkdiM1F3WlZORU5sWlNOVWRoYjJ3eWMNCiAgICAgICAgICAgICAgR2R1 UzNGU1RrdE9kM2RhY0VaMWVVWlpiRlJvZEhKSWRHTmlUMTlXVjNvNFFuWnBUVGhLUzI1T2RFeFdkMUp4 TlVoTVgyWkxUbFJDTnpGRFlrb3lXbWg1VyINCn0= Section 5.6 of [I-D.ietf-rtcweb-security-arch]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta [I-D.ietf-mmusic-msid] Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Bob can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] Opus Codec
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:05067423 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:1747d1ee3474a28a397a4c3f3af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password parameter
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing on port 49203
a=rtcp-rsize [RFC5506] - Bob intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464] Bob supports audio level RTP header extension as well
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Host ICE Candidate
a=candidate:1 1 UDP 1685987071 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Server Reflexive ICE Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.2. Audio/Video Session

Alice and Bob establish a two-way audio and video session with Opus as the audio codec and H.264 as the video codec.


         2-Way Audio,Video Session

Alice                                       Bob
|                                            |
|                                            |
|Offer(Audio:Opus,PCMU,PCMA Video:H.264,VP8) |
|------------------------------------------->|
|                                            |
|                                            |
|      Answer(Audio:Opus,Video:H.264)        |
|<-------------------------------------------|
|                                            |
|                                            |
|     Two-way Opus Audio, H.264 Video        |
|............................................|
|                                            |



5.2.2.1. IPv4 audio/video session

This section shows the IPv4 only Offer/Answer exchange.

5.2.2.1 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888] - Alice wants to lip sync her audio and video sreams
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta [I-D.ietf-mmusic-msid] Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Opus Codec 48khz, 2 channels
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password parameter
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Alice can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506] - Alice intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Host Candidate
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Server Reflexive ICE Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 99 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264] - Alice can send and recv video
a=rtpmap:99 H264/90000 [RFC6184] - H.264 Video Codec
a=fmtp:99 profile-level-id=4d0028;packetization-mode=1 [RFC6184]
a=rtpmap:120 VP8/90000 [RFC7741] - VP8 video codec
a=rtcp-fb:99 nack [RFC4585] - Indicates NACK RTCP feedback support
a=rtcp-fb:99 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:99 ccm fir [RFC5104] - Full Intra Frame Request-Codec Control Message support
a=rtcp-fb:120 nack [RFC4585] - Indicates NACK RTCP feedback support
a=rtcp-fb:120 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:120 ccm fir [RFC5104] - Full Intra Frame Request-Codec Control Message support
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.2.1 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888] - Bob agrees to do the same
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Bob can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Bob accepts only Opus Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp] - ICE username frag
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506] - Bob intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 3618095783 198.51.100.7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Host ICE Candidate
a=candidate:1 1 UDP 565689203 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Server Reflexive ICE Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 99 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264] - Bob can send and recv video
a=rtpmap:99 H264/90000 [RFC6184] - Bob accepts H.264 Video Codec.
a=fmtp:99 profile-level-id=4d0028;packetization-mode=1 [RFC6184]
a=rtcp-fb:99 nack [RFC4585] - Indicates support for NACK based RTCP feedback
a=rtcp-fb:99 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:99 ccm fir [RFC5104] - Full Intra Frame Request- Codec Control Message support
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.2.2. Dual Stack audio/video session

This section captures offer/answer exchange when Alice and Bob support both IPv4 and IPv6 host addresses.

5.2.2.2 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888] - Alice wants to lip sync her audio and video sreams
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Opus Codec 48khz, 2 channels
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password parameter
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Alice can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506] - Alice intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Host Candidate
a=candidate:0 1 UDP 2122194687 2001:db8:8101:3a55:4858:a2a9:22ff:99b9 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP IPv6 Host Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 99 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264] - Alice can send and recv video
a=rtpmap:99 H264/90000 [RFC6184] - H.264 Video Codec
a=fmtp:99 profile-level-id=4d0028;packetization-mode=1 [RFC6184]
a=rtpmap:120 VP8/90000 [RFC7741] - VP8 video codec
a=rtcp-fb:99 nack [RFC4585] - Indicates NACK RTCP feedback support
a=rtcp-fb:99 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:99 ccm fir [RFC5104] - Full Intra Frame Request-Codec Control Message support
a=rtcp-fb:120 nack [RFC4585] - Indicates NACK RTCP feedback support
a=rtcp-fb:120 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:120 ccm fir [RFC5104] - Full Intra Frame Request-Codec Control Message support
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.2.2 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888] - Bob agrees to do the same
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Bob can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Bob accepts only Opus Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp] - ICE username frag
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506] - Bob intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 3618095783 198.51.100.7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP Host ICE Candidate
a=candidate:0 1 UDP 3618095783 2001:db8:30c:1266:5916:3779:22f6:77f7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP/RTCP IPv6 Host ICE Candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 99 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264] - Bob can send and recv video
a=rtpmap:99 H264/90000 [RFC6184] - Bob accepts H.264 Video Codec.
a=fmtp:99 profile-level-id=4d0028;packetization-mode=1 [RFC6184]
a=rtcp-fb:99 nack [RFC4585] - Indicates support for NACK based RTCP feedback
a=rtcp-fb:99 nack pli [RFC4585] - Indicates support for Picture loss Indication and NACK
a=rtcp-fb:99 ccm fir [RFC5104] - Full Intra Frame Request- Codec Control Message support
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.3. Data Only Session

This scenario illustrates the SDP negotiated to setup a data-only session based on the SCTP Data Channel, thus enabling use-cases such as file-transfer, real-time game control for example.


      2-Way DataChannel Session

Alice                            Bob
|                                 |
|                                 |
|                                 |
|      Offer(DataChannel)         |
|-------------------------------->|
|                                 |
|                                 |
|      Answer(DataChannel)        |
|<--------------------------------|
|                                 |
|                                 |
| Two-way SCTP based DataChannel  |
|.................................|
|                                 |
|                                 |

5.2.3 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE data [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Application m=line ********* *****************************
m=application 54609 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-rtcweb-data-channel]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:data [RFC5888]
a=sendrecv [RFC3264] - Alice can send and recv non-media data
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - Session Level ICE parameter
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - Session Level ICE parameter
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - Session DTLS Fingerprint for SRTP
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.3 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE data [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Application m=line ********* *****************************
m=application 49203 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-mmusic-sctp-sdp]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:data [RFC5888]
a=sendrecv [RFC3264] - Bob can send and recv non-media data
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp] - Session Level ICE username frag
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp] - Session Level ICE password
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - Session DTLS Fingerprint for SRTP
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.4. Audio Call On Hold

Alice calls Bob, but when Bob answers he places Alice on hold by setting the SDP direction attribute to a=inactive in the Answer.


           Audio On Hold

Alice                            Bob
|                                 |
|                                 |
|      Offer(Audio:Opus)          |
|-------------------------------->|
|                                 |
|                                 |
|  Answer(Audio:Opus,a=inactive)  |
|<--------------------------------|
|                                 |
|                                 |
|      One-way Opus Audio         |
|.................................|
|                                 |
|
5.2.4 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Opus Codec 48khz, 2 channels
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Alice can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.4 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=inactive [RFC3264] - Bob puts call On Hold
a=rtpmap:109 opus/48000/2 [RFC7587] - Bob accepts Opus Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp] - ICE username frag
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp] - Host candidate
a=candidate:1 1 UDP 1685987071 203.0.113.141 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp] - Server Reflexive candidate
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.5. Audio with DTMF Session

In this example, Alice wishes to establish two separate audio streams, one for normal audio and the other for telephone-events. Alice offers first audio stream with three codecs and the other with [RFC4733] tones (for DTMF). Bob accepts both the audio streams by choosing Opus as the audio codec and telephone-event for the other stream.


            Audio Session with DTMF

Alice                                              Bob
|                                                   |
|                                                   |
|                                                   |
|  Offer(Audio:Opus,PCMU,PCMA Audio:telephone-event)|
|-------------------------------------------------->|
|                                                   |
|                                                   |
|    Answer(Audio:Opus, Audio:telephone-event)      |
|<--------------------------------------------------|
|                                                   |
|                                                   |
|   Opus audio stream and telephone-event stream    |
|...................................................|
|                                                   |
            
5.2.5 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio dtmf [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Opus Codec 48khz, 2 channels
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp] - ICE user fragment
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password parameter
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122] - DTLS Fingerprint for SRTP
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Alice can perform RTP/RTCP Muxing
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** DTMF m=line ********* *****************************
m=audio 0 UDP/TLS/RTP/SAVPF 126 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:dtmf [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendonly [RFC3264] - Alice can send DTMF Events
a=rtpmap:126 telephone-event/8000 [RFC4733]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.5 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio dtmf [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Bob can send and receive Opus audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Bob accepts Opus Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp] - ICE username frag
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp] - ICE password
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122] - Fingerprint for SRTP
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing on port 49203
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506] - Alice intends to use reduced size RTCP for this session
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** DTMF m=line ********* *****************************
m=audio 0 UDP/TLS/RTP/SAVPF 126 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:dtmf [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264] - Alice can receive DTMF events
a=rtpmap:126 telephone-event/8000 [RFC4733]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.6. One Way Audio/Video Session - Document Camera

In this scenario Alice and Bob engage in a 1 way audio and video session with Bob receiving Alice's audio and her presentation slides as video stream.



   One Way Audio & Video Session - Document Camera


Alice                                                 Bob
|                                                      |
|                                                      |
|                                                      |
|   Alice Offers sendonly audio and video streams.     |
|  The video stream corresponds to her presentation    |
|                                                      |
|           Offer(Audio:Opus, Video: VP8)              |
|----------------------------------------------------->|
|                                                      |
|                                                      |
|            (Audio:Opus, Video: VP8)                  |
|<-----------------------------------------------------|
|                                                      |
|                                                      |
|          One-way Opus Audio, VP8 Video               |
|......................................................|
|   Bob can hear Alice and see her presentation slides.|
|                                                      |
|                                                      |

5.2.6 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264] - Send only audio stream
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 203.0.113.141 54609 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendonly [RFC3264] - Send only video stream
a=rtpmap:120 VP8/90000 [RFC7741]
a=content:slides [RFC4796] - Alice's presentation video stream
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.6 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264] - Receive only audio stream
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 203.0.113.77 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=content:slides [RFC4796] - presentation stream
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.7. Audio, Video Session with BUNDLE Support Unknown

In this example, since Alice is unsure of the Bob's support of the BUNDLE framework, following steps are performed in order to negotiate and setup a BUNDLE Address for the session

Once the Offer/Answer exchange completes, both Alice and Bob each end up using single RTP Session for both the Media Streams.



 Two-Way Secure Audio,Video with BUNDLE support unknown

Alice                                                 Bob
|                                                      |
|                                                      |
|   Alice offers BUNDLE support with unique address    |
|        for the audio and video m-line                |
|                                                      |
|                                                      |
|          Offer(Audio:Opus Video:VP8)                 |
|----------------------------------------------------->|
|                                                      |Bob
|                                                      |supports
|                                                      |BUNDLE,
|                                                      |Uses
|                                                      |identical
|                                                      |address
|          Answer(Audio:Opus Video:VP8)                |
|<-----------------------------------------------------|
|                                                      |
|    2 Way Call with Audio and Video Multiplexed       |
|......................................................|
|                                                      |

5.2.7 SDP Offer w/BUNDLE
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp:54610 IN IP4 203.0.113.141 [RFC3605] - RTCP port different from RTP Port
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP host candidate
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp] - RTP Server Reflexive candidate
a=candidate:0 2 UDP 2122194687 192.0.2.4 61666 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTCP host candidate
a=candidate:1 2 UDP 1685987071 203.0.113.141 54610 typ srflx raddr 192.0.2.4 rport 61666 [I-D.ietf-mmusic-ice-sip-sdp] - RTCP Server Reflexive candidate
****** Video m=line ********* *****************************
m=video 62537 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:video [RFC5888] Video m=line part of the Bundle group with a unique port number
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=ice-ufrag:6550074c [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:74af08a068a28a397a4c3f31747d1ee34 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:UKA29UQLTF69OJW4WNPNUO2Y0GF1FJOZ [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp:62538 IN IP4 203.0.113.141 [RFC3605]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61886 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTP Host candidate
a=candidate:1 1 UDP 1685987071 203.0.113.141 62537 typ srflx raddr 192.0.2.4 rport 61886 [I-D.ietf-mmusic-ice-sip-sdp] - RTP Server Reflexive candidate
a=candidate:0 2 UDP 2122194687 192.0.2.4 61888 typ host [I-D.ietf-mmusic-ice-sip-sdp] - RTCP host candidate
a=candidate:1 2 UDP 1685987071 203.0.113.141 62538 typ srflx raddr 192.0.2.4 rport 61888 [I-D.ietf-mmusic-ice-sip-sdp] - RTCP Server Reflexive candidate



5.2.7 SDP Answer w/BUNDLE
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation] Bob supports BUNDLE semantics.
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888] Audio m=line part of the BUNDLE group
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 198.51.100.7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.77 51556 typ srflx raddr 198.51.100.7 rport 49203 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888] Video m=line part of the BUNDLE group with the port from audio line repeated
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.8. Audio, Video and Data Session

This example shows SDP for negotiating a session with Audio, Video and data streams between Alice and Bob with BUNDLE support known.



    Audio,Video,Data with BUNDLE support known

Alice                                       Bob
|                                            |
|                                            |
|   Alice indicates BUNDLE support with      |
|  identical address across all the m=lines  |
|                                            |
|                                            |
|     Offer(Audio:Opus Video:VP8 Data)       |
|------------------------------------------->|
|                                            |Bob does
|                                            |the same
|    Answer(Audio:Opus,Video:VP8 Data)       |
|<-------------------------------------------|
|                                            |
|                                            |
|                                            |
|    Two-way Audio,Video, Data multiplexed   |
|............................................|
|                                            |
|                                            |

5.2.8 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video data [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=mid:audio [RFC5888]
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Application m=line ********* *****************************
m=application 0 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-rtcweb-data-channel]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:data [RFC5888]
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=sendrecv [RFC3264]



5.2.8 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video data [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=mid:audio [RFC5888]
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Application m=line ********* *****************************
m=application 0 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-mmusic-sctp-sdp]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:data [RFC5888]
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=sendrecv [RFC3264]



5.2.9. Audio, Video Session with BUNDLE Unsupported

This use-case illustrates SDP Offer/Answer exchange where the far-end (Bob) either doesn't support media bundling or doesn't want to group m=lines over a single 5-tuple.

The same is indicated by dropping the "a=group:BUNDLE" line and BUNDLE RTP header extension in the Answer SDP.

On successful Offer/Answer exchange, Alice and Bob each end up using unique 5-tuple for audio and video media streams respectively.



   Two-Way Secure Audio,Video with BUNDLE Unsupported

Alice                                                 Bob
|                                                      |
|                                                      |
|     Alice offers BUNDLE support with unique address  |
|           for the audio and video m-line             |
|                                                      |
|                                                      |
|           Offer(Audio:Opus Video:VP8)                |
|----------------------------------------------------->|
|                                                      |Bob
|                                                      |doesn't
|                                                      |support
|                                                      |BUNDLE
|           Answer(Audio:Opus Video:VP8)               |
|<-----------------------------------------------------|
|                                                      |Bob uses
|                                                      |unique
|                                                      |addresses
|                                                      |across the
|                                                      |m=lines
|                                                      |
|2Way Call with Audio and Video on different 5-tuples  |
|......................................................|
|                                                      |
|                                                      |

5.2.9 SDP Offer w/BUNDLE
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp:55232 IN IP4 203.0.113.141 [RFC3605] - RTCP port different from RTP port
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2122194687 192.0.2.4 61666 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1685987071 203.0.113.141 55232 typ srflx raddr 192.0.2.4 rport 61666 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 54332 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:video [RFC5888] Video m=line part of the BUNDLE group with a unique port number
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=ice-ufrag:7872093 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:ee3474af08a068a28a397a4c3f31747d1 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763] - Alice can act as DTLS client or server
a=tls-id:UKA29UQLTF69OJW4WNPNUO2Y0GF1FJOZ [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp:60052 IN IP4 203.0.113.141 [RFC3605]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2122194687 192.0.2.4 71775 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.141 54332 typ srflx raddr 192.0.2.4 rport 71775 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2122194687 192.0.2.4 71776 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1685987071 203.0.113.141 60052 typ srflx raddr 192.0.2.4 rport 71776 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.9 SDP Answer without BUNDLE
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 53214 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=candidate:0 1 UDP 2122194687 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.77 53214 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2122194687 198.51.100.7 51558 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1685987071 203.0.113.77 60065 typ srflx raddr 198.51.100.7 rport 51558 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video m=line ********* *****************************
m=video 58679 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=ice-ufrag:85bC300 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:325921d5d47efbabd9a2de4e99bd291c [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35 :DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763] - Bob is the DTLS client
a=tls-id:9AIFS8AQ009IXF5D6QQUJ7P8BXPEZJ8G [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=candidate:0 1 UDP 2122194687 198.51.100.7 61556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1685987071 203.0.113.77 58679 typ srflx raddr 198.51.100.7 rport 61556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.10. Audio, Video BUNDLED, but Data (Not BUNDLED)

This example show-cases SDP for negotiating a session with Audio, Video and data streams between Alice and Bob with data stream not being part of the BUNDLE group. This is shown by assigning unique port for data media section and not adding the "mid" identification tag to the BUNDLE group.


       Audio, Video, with Data (Not in BUNDLE)

Alice                                                 Bob
|                                                      |
|                                                      |
|Alice wants to multiplex audio, video but not data    |
|                                                      |
|                                                      |
|  Offer(Audio:Opus Video:VP8, Data(not in BUNDLE))    |
|----------------------------------------------------->|
|                                                      |
|                                                      |
|       Answer(Audio:Opus Video:VP8, Data)             |
|<-----------------------------------------------------|
|                                                      |
|                                                      |
|2 Way Call with Audio, Video Multiplexed except data  |
|......................................................|
|                                                      |


5.2.10 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice wants to BUNDLE only audio and video media.
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 54609 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Application m=line ********* *****************************
m=application 10000 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-rtcweb-data-channel]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:data [RFC5888]
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=sendrecv [RFC3264]
a=setup:actpass [RFC5763]
a=tls-id:UKA29UQLTF69OJW4WNPNUO2Y0GF1FJOZ [I-D.ietf-mmusic-dtls-sdp]
a=ice-ufrag:89819013 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:1747d1ee3474af08a068a28a397a4c3f3 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 29:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=candidate:0 1 UDP 2113667327 192.0.2.4 10000 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.10 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Application m=line ********* *****************************
m=application 20000 UDP/DTLS/SCTP webrtc-datachannel [I-D.ietf-mmusic-sctp-sdp]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:data [RFC5888]
a=sctp-port:5000 [I-D.ietf-mmusic-sctp-sdp]
a=max-message-size:100000 [I-D.ietf-mmusic-sctp-sdp]
a=setup:active [RFC5763]
a=tls-id:9AIFS8AQ009IXF5D6QQUJ7P8BXPEZJ8G [I-D.ietf-mmusic-dtls-sdp]
a=sendrecv [RFC3264]
a=ice-ufrag:991Ca2a5e [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:921d5d47efbabd9a2de4e99bd291c325 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 7B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=candidate:0 1 UDP 2113667327 198.51.100.7 20000 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.11. Audio Only, Add Video to BUNDLE

This example involves 2 Offer/Answer exchanges. First one is used to negotiate and setup BUNDLE support for Audio-only session followed by an updated Offer/Answer exchange to add video stream to the ongoing session. Also the newly added video stream is BUNDLED with the audio stream.



         Audio Only , Add Video and BUNDLE

Alice                                                 Bob
|                                                      |
|                                                      |
|        Alice indicates support for BUNDLE            |
|                                                      |
|                Offer(Audio:Opus)                     |
|----------------------------------------------------->|
|                                                      |Bob
|                                                      |supports
|                                                      |BUNDLE
|                Answer(Audio:Opus)                    |
|<-----------------------------------------------------|
|                                                      |Alice adds
|                                                      |video stream
|        Updated Offer(Audio:Opus, Video:VP8)          |to BUNDLE
|----------------------------------------------------->|
|                                                      |
|                                                      |Bob accepts
|        Updated Answer(Audio:Opus, Video:VP8)         |
|<-----------------------------------------------------|
|                                                      |
|   2Way Call with Audio and Video Multiplexed         |
|......................................................|
|                                                      |
|                                                      |

5.2.11 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice adds audio m=line to the BUNDLE group
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.10 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.2.11 SDP Updated Offer
Updated Offer SDP Contents RFC#/Notes
v=0 Version number incremented
o=- 20518 1 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]Alice want's to use the same DTLS association
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.2.11 SDP Updated Answer
Updated Answer SDP Contents RFC#/Notes
v=0 [RFC4566] Version number incremented
o=- 16833 1 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio video [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS audio video [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp] - Bob agrees to use the same DTLS association
a=rtcp-mux [RFC5761]
a=rtcp-mux-only [I-D.ietf-mmusic-mux-exclusive]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 120 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:video [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:120 VP8/90000 [RFC7741]
a=rtcp-fb:120 nack [RFC4585]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.3. MultiResolution, RTX, FEC Examples

This section provides examples related to multi-source, multi-stream negotiation such as layered coding, simulcast. Further included are few examples that cover techniques to deal with providing robustness against transmission errors such as FEC and RTX. Also to note, mechanisms such as FEC and RTX could be envisioned in the above basic scenarios as well.

5.3.1. Sendonly Simulcast Session with 2 cameras and 2 encodings per camera

The SDP below shows Offer/Answer exchange with one audio and two video sources (say 2 video cameras). Each of the video source can be sent at two different resolutions.

One video source corresponds to VP8 encoding, while the other corresponds to H.264 encoding.

[I-D.ietf-mmusic-rid] framework is used to further constrain the media format encodings and map the payload types (PT) to the 'rid' identifiers.

[I-D.ietf-mmusic-sdp-simulcast] framework identifies the simulcast streams via their 'rid' identifiers.

bundle-only attribute is used for the video sources in the Offer to ensure enabling video sources in the context of BUNDLE alone.

BUNDLE grouping framework enables multiplexing of all the 5 Source RTP Streams (1 audio stream + 4 video streams) over a single RTP Session.

Also, the audio and one video source RTP stream form a lip sync group while the other video source RTP stream represents a non-interactive media data.


       1 Way Successful Simulcast w/BUNDLE

Alice                                            Bob
|                                                 |
|                                                 |
|     Alice offers 2 sendonly video sources       |
|     with 2 simulcast encodings per source       |
|           and bundle-only for video             |
|                                                 |
|                                                 |
|   Offer(Audio:Opus,Video1:VP8,Video2:H.264)     |
|------------------------------------------------>|
|                                                 |
|                                                 |
|    Answer(Audio:Opus Video1:VP8,Video2:H.264)   |
|<------------------------------------------------|
|                                                 |
|One-Way 1 Opus, 2 H.264 and 2 VP8 video streams, |
| all multiplexed                                 |
|.................................................|
|                                                 |
|                                                 |


5.3.1 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 m2 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video-1 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendonly [RFC3264] - Send only video stream
a=rtpmap:98 VP8/90000 [RFC7741]
a=fmtp:98 max-fr=30 [RFC4566]
a=rtpmap:100 VP8/90000 [RFC7741]
a=fmtp:100 max-fr=15 [RFC4566]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 send pt=98;max-width=1280;max-height=720 [I-D.ietf-mmusic-rid] 1:1 rid mapping to payload type and specify resolution constraints
a=rid:2 send pt=100;max-width=640;max-height=480 [I-D.ietf-mmusic-rid] 1:1 rid mapping to payload type and specify resolution constraints
a=simulcast:send 1;~2 [I-D.ietf-mmusic-sdp-simulcast] Alice can send 2 resolutions identified by the 'rid' identifiers Also, the second stream is initially paused.
****** Video-2 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 101 102 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m2 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tc Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc)
a=sendonly [RFC3264] - Send only video stream
a=rtpmap:101 H264/90000 [RFC6184]
a=rtpmap:102 H264/90000 [RFC6184]
a=fmtp:101 profile-level-id=42401f;packetization-mode=0;max-fr=30 [RFC6184]Camera-2,Encoding-1
a=fmtp:102 profile-level-id=42401f;packetization-mode=1;max-fr=15 [RFC6184]Camera-2,Encoding-2
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:3 send pt=101;max-width=1280;max-height=720 [I-D.ietf-mmusic-rid] 1:1 rid mapping to payload type and specify resolution constraints
a=rid:4 send pt=102;max-width=640;max-height=360 [I-D.ietf-mmusic-rid] 1:1 rid mapping to payload type and specify resolution constraints
a=simulcast:send 3;4 [I-D.ietf-mmusic-sdp-simulcast] Alice can send 2 resolutions identified by the 'rid' identifiers



5.3.1 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 m2 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video-1 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 BUNDLE accepted
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264] - receive only video stream
a=rtpmap:98 VP8/90000 [RFC7741]
a=rtpmap:100 VP8/90000 [RFC7741]
a=fmtp:98 max-fr=30 [RFC4566]
a=fmtp:100 max-fr=15 [RFC4566]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 recv pt=98;max-width=1280;max-height=720 [I-D.ietf-mmusic-rid] Bob accepts the offered payload format constraints
a=rid:2 recv pt=100;max-width=640;max-height=480 [I-D.ietf-mmusic-rid] Bob accepts the offered payload format constraints
a=simulcast:recv 1;2 [I-D.ietf-mmusic-sdp-simulcast] Bob accepts the offered simulcast streams and removes the paused state of stream with 'rid' value 2.
****** Video-2 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 101 102 BUNDLE accepted
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m2 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tc Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc)
a=recvonly [RFC3264]
a=rtpmap:101 H264/90000 [RFC6184]
a=rtpmap:102 H264/90000 [RFC6184]
a=fmtp:101 profile-level-id=42401f;packetization-mode=1;max-fr=30 [RFC6184]
a=fmtp:102 profile-level-id=42401f;packetization-mode=1;max-fr=15 [RFC6184]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:3 recv pt=101;max-width=1280;max-height=720 [I-D.ietf-mmusic-rid] Bob accepts the offered payload format constraints
a=rid:4 recv pt=102;max-width=640;max-height=360 [I-D.ietf-mmusic-rid] Bob accepts the offered payload format constraints
a=simulcast:recv 3;4 [I-D.ietf-mmusic-sdp-simulcast] Bob accepts the offered simulcast streams.



5.3.2. Successful SVC Video Session

This section shows an SDP Offer/Answer for a session with an audio and a single video source. The video source being encoded both as non-scalable and scalable H.264-SVC RTP stream (in the SST mode).

The Answerer picks the payload type corresponding to scalable encoding.


        SVC Session - 3 Layers w/BUNDLE

Alice                                            Bob
|                                                 |
|                                                 |
|      Alice offers sendonly video stream         |
|      with non-scalable and scalable encodings.  |
|                                                 |
|                                                 |
|            Offer(Video:H.264/H.264-SVC)         |
|------------------------------------------------>|
|                                                 |
|                                                 |Bob accepts Alice's
|                                                 |offered Codec
|                                                 |operation points
|                                                 |
|             Answer(Video:H.264-SVC)             |
|<------------------------------------------------|
|                                                 |
|One-Way  H.264-SVC video streams                 |
|.................................................|
|                                                 |
|                                                 |


5.3.2 SDP Offer with SVC
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 96 100 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc)
a=sendonly [RFC3264] - Send only video stream
a=rtpmap:96 H264/90000 [RFC6184]
a=fmtp:96 profile-level-id=4d0028; packetization-mode=1;max-fr=30;max-fs=8040 [RFC6184]H.264 Non Scalable
a=rtpmap:100 H264-SVC/90000 [RFC6190]
a=fmtp:100 profile-level-id=53001f;packetization-mode=0 [RFC6190] H.264 Scalable Encoding
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.3.2 SDP Answer with SVC
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667326 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302206 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 100 BUNDLE accepted.
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264] - Receive only video stream
a=rtpmap:100 H264-SVC/90000 [RFC6190]
a=fmtp:100 profile-level-id=53001f;packetization-mode=0 [RFC6190]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.3.3. Successful Simulcast Video Session with Retransmission

This section shows an SDP Offer/Answer exchange for a simulcast scenario with 3 resolutions and has [RFC4588] style re-transmission flows.

[I-D.ietf-mmusic-rid] framework is used to specify all the (3) resolution constraints mapped to a single Payload Type (98).

[I-D.ietf-mmusic-sdp-simulcast] framework identifies the simulcast streams via their 'rid' identifiers.



        Simulcast Streams with Retransmission

Alice                                                    Bob
|                                                         |
|                                                         |
|Alice offers single audio and simulcasted video streams  |
|                                                         |
|                                                         |
|    Offer(Audio:Opus Video:VP8 with 3 resolutions)       |
|    & RTX stream                                         |
|-------------------------------------------------------->|
|                                                         |
|                                                         |
|          Answer (Bob accepts Alice's offer)             |
|<--------------------------------------------------------|
|                                                         |
|                                                         |
|One-Way 1 Opus, 3 VP8 and RTX video streams,all muxed    |
|.........................................................|
|                                                         |
|                                                         |

5.3.3 SDP Offer w/Simulcast, RTX
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 103 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=fmtp:98 max-fr=30 [RFC4566]
a=rtpmap:103 rtx/90000 [RFC4588]
a=fmtp:103 apt=98;rtx-time=200 [RFC4588]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 send pt=98;max-fs=921600;max-fr=30 [I-D.ietf-mmusic-rid]
a=rid:2 send pt=98;max-fs=614400;max-fr=15 [I-D.ietf-mmusic-rid]
a=rid:3 send pt=98;max-fs=230400;max-fr=30 [I-D.ietf-mmusic-rid]
a=simulcast:send 1;2;3 [I-D.ietf-mmusic-sdp-simulcast] Alice can send all the simulcast streams



5.3.3 SDP Answer w/Simulcast, RTX
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Bob supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667326 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302206 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 103 BUNDLE accepted
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=fmtp:98 max-fr=30 [RFC4566]
a=rtpmap:103 rtx/90000 [RFC4588]
a=fmtp:103 apt=98;rtx-time=200 [RFC4588]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 recv pt=98;max-fs=921600;max-fr=30 [I-D.ietf-mmusic-rid]
a=rid:2 recv pt=98;max-fs=614400;max-fr=15 [I-D.ietf-mmusic-rid]
a=rid:3 recv pt=98;max-fs=230400;max-fr=30 [I-D.ietf-mmusic-rid]
a=simulcast:recv 1;2;3 [I-D.ietf-mmusic-sdp-simulcast] Bob accepts the offered simulcast streams



5.3.4. Successful 1-way Simulcast Session with 2 resolutions and RTX - One resolution rejected

This section shows an SDP Offer/Answer exchange for a simulcast scenario with 2 two resolutions.

It also showcases where Bob rejects one of the Simulcast Video Stream which results in the rejection of the associated repair stream implicitly.



     Simulcast Streams with Retransmission Rejected

Alice                                                    Bob
|                                                         |
|                                                         |
|Alice offers single audio and simulcasted video streams  |
| with bundle-only for video                              |
|                                                         |
|                                                         |
|Offer(Audio:Opus Video:VP8 with 2 resolutions,RTX Stream)|
|-------------------------------------------------------->|
|                                                         |
|                                                         |Bob accepts 1
|                                                         |simulcast,rtx
|                                                         |rejects the
|                                                         |other
|   Answer(Audio:Opus Video:VP8 with 1 res & RTX Stream)  |
|<--------------------------------------------------------|
|                                                         |
|                                                         |
|1-way audio,video session and its associated RTX stream, |
| all multiplexed                                         |
|.........................................................|
|                                                         |
|                                                         |


5.3.4 SDP Offer w/Simulcast, RTX
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 103 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb
a=sendonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=rtpmap:100 VP8/90000 [RFC7741]
a=rtpmap:101 rtx/90000 [RFC4588]
a=rtpmap:103 rtx/90000 [RFC4588]
a=fmtp:98 max-fr=30;max-fs=8040 [RFC4566]
a=fmtp:100 max-fr=15;max-fs=1200 [RFC4566]
a=fmtp:101 apt=98;rtx-time=200 [RFC4588]
a=fmtp:103 apt=100;rtx-time=200 [RFC4588]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 send pt=98 [I-D.ietf-mmusic-rid] 1:1 mapping between the PT and the 'rid' identifier
a=rid:2 send pt=100 [I-D.ietf-mmusic-rid] 1:1 mapping between the PT and the 'rid' identifier
a=simulcast:send 1;2 [I-D.ietf-mmusic-sdp-simulcast]



5.3.4 SDP Answer (one Simulcast Rejected)
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Bob supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667326 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302206 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 101 BUNDLE accepted
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888]
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=rtpmap:101 rtx/90000 [RFC4588]
a=fmtp:101 apt=98;rtx-time=200 [RFC4588]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 recv pt=98 [I-D.ietf-mmusic-rid]
a=simulcast:recv 1 [I-D.ietf-mmusic-sdp-simulcast] Bob rejects the second simulcast stream and the associated rtx stream.



5.3.5. Simulcast Video Session with Forward Error Correction

This section shows an SDP Offer/Answer exchange for Simulcast video stream at two resolutions and and has [RFC5956] style FEC flows.

On completion of the Offer/Answer exchange mechanism we end up one audio stream, 2 simulcast video streams and 2 associated FEC streams are sent over a single 5-tuple.


      Simulcast Streams with Forward Error Correction

Alice                                                            Bob
|                                                               |
|                                                               |
|                                                               |
|Alice offers single audio and simulcasted video streams        |
|with bundle-only                                               |
|                                                               |
|                                                               |
|Offer(Audio:Opus Video:VP8 with 2 resolutions with FEC Streams)|
|-------------------------------------------------------------->|
|                                                               |
|                                                               |Bob
|                                                               |accepts
|                                                               |Alice's
|                                                               |offer
|Answer(Audio:Opus Video:VP8 with 2 resolutions w/FEC Streams)  |
|<--------------------------------------------------------------|
|                                                               |
|One-Way Audio,Video session with 4 video streams(Simulcast     |
| and FEC) all multiplexed                                      |
|...............................................................|
|                                                               |
|                                                               |
|                                                               |

5.3.5 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=rtcp-mux [RFC5761]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=rtpmap:100 VP8/90000 [RFC7741]
a=rtpmap:101 flexfec/90000 [I-D.ietf-payload-flexible-fec-scheme]
a=fmtp:98 max-fr=30;max-fs=8040 [RFC4566]
a=fmtp:100 max-fr=15;max-fs=1200 [RFC4566]
a=fmtp:101 L=5; D=10; ToP=2; repair-window=200000 [I-D.ietf-payload-flexible-fec-scheme]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 send pt=98 [I-D.ietf-mmusic-rid] 1:1 mapping between the PT and the 'rid' identifier
a=rid:2 send pt=100 [I-D.ietf-mmusic-rid] 1:1 mapping between the PT and the 'rid' identifier
a=simulcast:send 1;2 [I-D.ietf-mmusic-sdp-simulcast]



5.3.5 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:m0 [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=recvonly [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667326 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302206 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 BUNDLE accepted.
c=IN IP4 203.0.113.77 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=recvonly [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=rtpmap:100 VP8/90000 [RFC7741]
a=rtpmap:101 flexfec/90000 [I-D.ietf-payload-flexible-fec-scheme]
a=fmtp:98 max-fr=30;max-fs=8040 [RFC4566]
a=fmtp:100 max-fr=15;max-fs=1200 [RFC4566]
a=fmtp:101 L=5; D=10; ToP=2; repair-window=200000 [I-D.ietf-payload-flexible-fec-scheme]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id [I-D.ietf-avtext-rid]
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id [I-D.ietf-avtext-rid]
a=rid:1 recv pt=98 [I-D.ietf-mmusic-rid]
a=rid:2 recv pt=100 [I-D.ietf-mmusic-rid]
a=simulcast:recv 1;2 [I-D.ietf-mmusic-sdp-simulcast]



5.4. Others

The examples in the section provide SDP Offer/Answer exchange for a variety of scenarios related to RTP Header extension for conference usages, Legacy Interop scenarios and more.

5.4.1. Audio Session - Voice Activity Detection

This example shows Alice indicating the support of the RTP header extension to include the audio-level of the audio sample carried in the RTP packet.

           2-Way Audio with VAD

 Alice                                    Bob
 |                                         |
 |                                         |
 |Alice indicates support for including    |
 |audio level in RTP header                |
 |                                         |
 |     Offer(Audio:Opus,PCMU,PCMA)         |
 |---------------------------------------->|
 |                                         |
 |                                         |
 |     Answer(Audio:Opus,PCMU,PCMA)        |
 |<----------------------------------------|
 |                                         |
 |                                         |Bob accepts and
 |                                         |indicates his
 |                                         |support as well
 |                                         |
 |     Two way Opus Audio                  |
 |.........................................|
 |                                         |
 |Per packet audio-level is included in the|
 |RTP header                               |
 |                                         |


5.4.1 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=rtpmap:0 PCMU/8000 [RFC3551]
a=rtpmap:8 PCMA/8000 [RFC3551]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:* nack [RFC4585]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.4.1 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Bob can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587] - Bob accepts only Opus Codec
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761] - Bob can perform RTP/RTCP Muxing on port 49203
a=rtcp-rsize [RFC5506]
a=rtcp-fb:* nack [RFC4585]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.4.2. Audio Conference - Voice Activity Detection

This example shows SDP for RTP header extension that allows RTP-level mixers in audio conferences to deliver information about the audio level of individual participants.



     Audio Conference with VAD Support

Alice                                    Mixer
|                                         |
|Alice indicates her interest to audio    |
|levels for the contributing sources      |
|                                         |
|Offer(Audio:Opus,PCMU,PCMA)              |
|---------------------------------------->|
|                                         |
|                                         |
|Answer(Audio:Opus,PCMU,PCMA)             |
|<----------------------------------------|
|                                         |
|                                         |Mixer indicates
|                                         |it can provide
|                                         |audio-levels
|Two way Opus Audio                       |
|.........................................|
|                                         |
|Audio-levels per CSRCS is included in the|
|RTP header                               |
|                                         |


5.4.2 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264] - Alice can send and recv audio
a=rtpmap:109 opus/48000/2 [RFC7587]
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:* nack [RFC4585]
a=extmap:1/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level [RFC6465]
a=extmap:2 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.4.2 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566] - Session Origin Information
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE audio [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 8 [RFC4566]
c=IN IP4 203.0.113.77 [RFC4566]
a=mid:audio [RFC5888]
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=rtpmap:0 PCMU/8000 [RFC3551] PCMU Audio Codec
a=rtpmap:8 PCMA/8000 [RFC3551] PCMA Audio Codec
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=tls-id:CJ6FF9ZZMJW7MDRJIR7XVIQM48GE1G31 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp-rsize [RFC5506]
a=rtcp-fb:* nack [RFC4585]
a=extmap:1/sendonly urn:ietf:params:rtp-hdrext:csrc-audio-level [RFC6465]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=end-of-candidates [I-D.ietf-mmusic-trickle-ice]



5.4.3. Successful legacy Interop Fallback with bundle-only

In the scenario described below, Alice is a multi-stream capable WebRTC endpoint while Bob is a legacy VOIP end-point. The SDP Offer/Answer exchange demonstrates successful session setup with fallback to audio only stream negotiated via bundle-only framework between the end-points. Specifically,

NOTE: Since Alice is unaware of Bob's support for BUNDLE framework, Alice includes separate RTP/RTCP ports and candidate information.


         Successful 2-Way WebRTC <-> VOIP Interop

Alice                                                       Bob
|                                                           |
|                                                           |
|       Alice is a multistream capable WebRTC end-point     |
|          & Bob is behind a legacy VOIP system             |
|                                                           |
|Offer(Audio:Opus Video:2 VP8,2 H.264 Streams) with         |
|          bundle-only                                      |
|---------------------------------------------------------->|
|     Alice marks both the video streams as bundle-only     |
|                                                           |
|                                                           |
|                  Answer(Audio:Opus)                       |
|<----------------------------------------------------------|
|                                                           |Bob
|                                                           |accepts
|                                                           |audio
|                                                           |stream,
|                                                           |since he
|                                                           |doesn't
|                                                           |recognize
|                                                           |bundle-only
|                                                           |
|                   Two way Opus Audio                      |
|...........................................................|
|                                                           |
|                                                           |

5.4.3 SDP Simulcast bundle-only
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=group:BUNDLE m0 m1 m2 [I-D.ietf-mmusic-sdp-bundle-negotiation] Alice supports grouping of m=lines under BUNDLE semantics
a=group:LS m0 m1 [RFC5888]
a=ice-options:trickle [I-D.ietf-mmusic-trickle-ice]
****** Audio m=line ********* *****************************
m=audio 54609 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=mid:m0 [RFC5888] Audio m=line part of BUNDLE group with a unique port number
a=msid:ma ta Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=setup:actpass [RFC5763]
a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 [I-D.ietf-mmusic-dtls-sdp]
a=rtcp-mux [RFC5761]
a=rtcp:64678 IN IP4 203.0.113.141 [RFC3605]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=candidate:0 1 UDP 2113667327 192.0.2.4 61665 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54609 typ srflx raddr 192.0.2.4 rport 61665 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 1 UDP 2113667326 192.0.2.4 61667 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302206 203.0.113.141 64678 typ srflx raddr 192.0.2.4 rport 61667 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video-1 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m1 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tb Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
a=sendrecv [RFC3264]
a=rtpmap:98 VP8/90000 [RFC7741]
a=imageattr:98 [x=1280,y=720] [RFC6236]
a=fmtp:98 max-fr=30 [RFC4566]
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]
****** Video-2 m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 101 103 bundle-only video line with port number set to zero
c=IN IP4 203.0.113.141 [RFC4566]
a=bundle-only [I-D.ietf-mmusic-sdp-bundle-negotiation]
a=mid:m2 [RFC5888] Video m=line part of BUNDLE group
a=msid:ma tc Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc)
a=sendrecv [RFC3264]
a=rtpmap:101 H264/90000 [RFC6184]
a=rtpmap:103 H264/90000 [RFC6184]
a=fmtp:101 profile-level-id=4d0028;packetization-mode=1;max-fr=30 [RFC6184]Camera-2,Encoding-1 Resolution
a=rtcp-fb:* nack [RFC4585]
a=rtcp-fb:* nack pli [RFC4585]
a=rtcp-fb:* ccm fir [RFC5104]
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid [I-D.ietf-mmusic-sdp-bundle-negotiation]



5.4.3 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20519 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
****** Audio m=line ********* *****************************
m=audio 49203 UDP/TLS/RTP/SAVPF 109 [RFC4566]
c=IN IP4 203.0.113.141 [RFC4566]
a=rtcp:60065 IN IP4 203.0.113.141 [RFC3605]
a=sendrecv [RFC3264]
a=rtpmap:109 opus/48000/2 [RFC7587]
a=maxptime:120 [RFC4566]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 [RFC8122]
a=setup:active [RFC5763]
a=rtcp-rsize [RFC5506]
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level [RFC6464]
a=candidate:0 1 UDP 2113667327 198.51.100.7 51556 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 51556 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2113667326 198.51.100.7 51558 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1694302206 203.0.113.77 60065 typ srflx raddr 198.51.100.7 rport 51558 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 Bob doesn't recognize bundle-only and hence the m=line is rejected implicitly due to port 0
****** Video m=line ********* *****************************
m=video 0 UDP/TLS/RTP/SAVPF 98 100 Bob doesn't recognize bundle-only and hence the m=line is rejected implicitly due to port 0



5.4.4. Legacy Interop with RTP/AVP profile

In the scenario described below, Alice is a legacy end-point which sends [RFC3264] Offer with RTP/AVP based audio and video descriptions along with DTLS fingerprint and RTCP feedback information.

On the other hand, Bob being a WebRTC end-point follows procedures in section 5.1.2 of [I-D.ietf-rtcweb-jsep] and accepts the Alice's offer for DTLS-SRTP based session with RTCP feedback.


           Successful 2-Way WebRTC <-> VOIP Interop

Alice                                                       Bob
|                                                            |
|                                                            |
|Alice is a legacy VOIP End-point & Bob is a WebRTC End-Point|
|                                                            |
|                                                            |
|                                                            |
|              Offer(Audio:Opus Video:H.264)                 |
|----------------------------------------------------------->|
|                                                            |
|                                                            |
|Alice includes :                                            |
|Legacy compliant media description (RTP/AVP) with dtls      |
|fingerprint and rtcp feedback support                       |
|                                                            |
|             Answer(Audio:Opus, Video:H.264)                |
|<-----------------------------------------------------------|
|                                                            |Bob
|                                                            |accepts
|                                                            |"legacy
|                                                            |compliant"
|                                                            |m=line
|                                                            |
|                                                            |
|             Two way Opus Audio, H.264 Video                |
|............................................................|
|       Session also supports RTP/RTCP Mux, RTCP Feedback    |
|                                                            |

5.4.5 SDP Offer
Offer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 20518 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
a=ice-ufrag:074c6550 [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068 [I-D.ietf-mmusic-ice-sip-sdp]
a=rtcp-rsize [RFC5506]
****** Audio m=line ********* *****************************
m=audio 54732 RTP/AVP 109 [RFC4566]Alice includes RTP/AVP audio stream description
c=IN IP4 203.0.113.141 [RFC4566]
a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04:BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 [RFC8122]
a=rtpmap:109 opus/48000
a=ptime:20
a=sendrecv [RFC3264]
a=rtcp-mux [RFC5761]Alice still includes RTP/RTCP Mux support
a=rtcp:64678 IN IP4 203.0.113.141 [RFC3605]
a=candidate:0 1 UDP 2113667327 192.0.2.4 54732 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 694302207 203.0.113.141 54732 typ srflx raddr 192.0.2.4 rport 54732 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2113667326 192.0.2.4 64678 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1694302206 203.0.113.141 64678 typ srflx raddr 192.0.2.4 rport 64678 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video m=line ********* *****************************
m=video 62445 RTP/AVP 120 [RFC4566]Alice includes RTP/AVP video stream description
c=IN IP4 203.0.113.141 [RFC4566]
a=fingerprint:sha-256 DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08:6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35 [RFC8122]
a=rtpmap:120 VP8/90000 [RFC7741]
a=sendrecv [RFC3264]
a=rtcp-mux [RFC5761]Alice intends to perform RTP/RTCP Mux
a=rtcp:54721 IN IP4 203.0.113.141 [RFC3605]
a=candidate:0 1 UDP 2113667327 192.0.2.4 62445 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.141 62537 typ srflx raddr 192.0.2.4 rport 62445 [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:0 2 UDP 2113667326 192.0.2.4 54721 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 2 UDP 1694302206 203.0.113.141 54721 typ srflx raddr 192.0.2.4 rport 54721 [I-D.ietf-mmusic-ice-sip-sdp]
a=rtcp-fb:120 nack pli [RFC4585] Alice indicates support for Picture loss Indication and NACK RTCP feedback
a=rtcp-fb:120 ccm fir [RFC5104]



5.4.5 SDP Answer
Answer SDP Contents RFC#/Notes
v=0 [RFC4566]
o=- 16833 0 IN IP4 0.0.0.0 [RFC4566]
s=- [RFC4566]
t=0 0 [RFC4566]
****** Audio m=line ********* *****************************
m=audio 49203 RTP/AVP 109 [RFC4566] Bob accepts RTP/AVP based audio stream
c=IN IP4 203.0.113.77 [RFC4566]
a=rtpmap:109 opus/48000
a=ptime:20
a=sendrecv [RFC3264]
a=ice-ufrag:c300d85b [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2:19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04 [RFC8122]
a=rtcp-mux [RFC5761]
a=candidate:0 1 UDP 2113667327 198.51.100.7 49203 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 49203 typ srflx raddr 198.51.100.7 rport 49203 [I-D.ietf-mmusic-ice-sip-sdp]
****** Video m=line ********* *****************************
m=video 63130 RTP/AVP 120 [RFC4566] Bob accepts RTP/AVP based video stram
c=IN IP4 203.0.113.77 [RFC4566]
a=rtpmap:120 VP8/90000 [RFC7741]
a=sendrecv [RFC3264]
a=ice-ufrag:e39091na [I-D.ietf-mmusic-ice-sip-sdp]
a=ice-pwd:dbc325921d5dd29e4e99147efbabd9a2 [I-D.ietf-mmusic-ice-sip-sdp]
a=fingerprint:sha-256 BB:0A:0E:05:E9:26:33:E8:70:88:A2:2F:70:9F:04:19:E2:1C:3B:4B:9F:81:56:2F:70:9F:04:F4:A5:A8:D8 [RFC8122]
a=rtcp-mux [RFC5761]
a=candidate:0 1 UDP 2113667327 198.51.100.7 63130 typ host [I-D.ietf-mmusic-ice-sip-sdp]
a=candidate:1 1 UDP 1694302207 203.0.113.77 63130 typ srflx raddr 198.51.100.7 rport 63130 [I-D.ietf-mmusic-ice-sip-sdp]
a=rtcp-fb:120 nack pli [RFC4585]
a=rtcp-fb:120 ccm fir [RFC5104]



6. IANA Considerations

This document requires no actions from IANA.

7. Security Considerations

The IETF has published separate documents [I-D.ietf-rtcweb-security-arch] [I-D.ietf-rtcweb-security] describing the security architecture for WebRTC as a whole.

In addition, since the SDP offer and answer messages can contain private information about addresses and sessions to be established between parties, if this information needs to be kept private, some security mechanism (using TLS transport for example) in the protocol used to carry the offers and answers must be used.

8. Acknowledgments

We would like to thank Justin Uberti, Chris Flo, Paul Kyzivat, Nils Ohlmeier, Flemming Andreason, Magnus Westerlund for their detailed review and inputs. Thanks to Adam Roach for providing syntax validation script to help highlight syntax and formatting errors.

9. Change Log

[RFC EDITOR NOTE: Please remove this section when publishing]

Changes from draft-ietf-rtcweb-sdp-11

Changes from draft-ietf-rtcweb-sdp-09

Changes from draft-ietf-rtcweb-sdp-08

Changes from draft-ietf-rtcweb-sdp-07

Changes from draft-ietf-rtcweb-sdp-06

Changes from draft-ietf-rtcweb-sdp-05

Changes from draft-ietf-rtcweb-sdp-04

Changes from draft-ietf-rtcweb-sdp-02 to draft-ietf-rtcweb-sdp-04

Changes from draft-ietf-rtcweb-sdp-02

Changes from draft-ietf-rtcweb-sdp-01

Changes from draft-ietf-rtcweb-sdp-00

Changes from draft-nandakumar-rtcweb-sdp-08

Changes from draft-nandakumar-rtcweb-sdp-06 and draft-nandakumar-rtcweb-sdp-07

Changes from draft-nandakumar-rtcweb-sdp-05

Changes from draft-nandakumar-rtcweb-sdp-04

Changes from draft-nandakumar-rtcweb-sdp-03

Changes from draft-nandakumar-rtcweb-sdp-02

Changes from draft-nandakumar-rtcweb-sdp-01

Changes from draft-nandakumar-rtcweb-sdp-00

10. Informative References

[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002.
[RFC4566] Handley, M., Jacobson, V. and C. Perkins, "SDP: Session Description Protocol", RFC 4566, DOI 10.17487/RFC4566, July 2006.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[RFC5506] Johansson, I. and M. Westerlund, "Support for Reduced-Size Real-Time Transport Control Protocol (RTCP): Opportunities and Consequences", RFC 5506, DOI 10.17487/RFC5506, April 2009.
[RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control", STD 65, RFC 3551, DOI 10.17487/RFC3551, July 2003.
[RFC4796] Hautakorpi, J. and G. Camarillo, "The Session Description Protocol (SDP) Content Attribute", RFC 4796, DOI 10.17487/RFC4796, February 2007.
[RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and Control Packets on a Single Port", RFC 5761, DOI 10.17487/RFC5761, April 2010.
[RFC5763] Fischl, J., Tschofenig, H. and E. Rescorla, "Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)", RFC 5763, DOI 10.17487/RFC5763, May 2010.
[RFC5104] Wenger, S., Chandra, U., Westerlund, M. and B. Burman, "Codec Control Messages in the RTP Audio-Visual Profile with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104, February 2008.
[RFC4585] 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, DOI 10.17487/RFC4585, July 2006.
[RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V. and R. Hakenberg, "RTP Retransmission Payload Format", RFC 4588, DOI 10.17487/RFC4588, July 2006.
[RFC5956] Begen, A., "Forward Error Correction Grouping Semantics in the Session Description Protocol", RFC 5956, DOI 10.17487/RFC5956, September 2010.
[RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description Protocol (SDP) Grouping Framework", RFC 5888, DOI 10.17487/RFC5888, June 2010.
[RFC6236] Johansson, I. and K. Jung, "Negotiation of Generic Image Attributes in the Session Description Protocol (SDP)", RFC 6236, DOI 10.17487/RFC6236, May 2011.
[RFC6184] Wang, Y., Even, R., Kristensen, T. and R. Jesup, "RTP Payload Format for H.264 Video", RFC 6184, DOI 10.17487/RFC6184, May 2011.
[RFC6190] Wenger, S., Wang, Y., Schierl, T. and A. Eleftheriadis, "RTP Payload Format for Scalable Video Coding", RFC 6190, DOI 10.17487/RFC6190, May 2011.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002.
[RFC3605] Huitema, C., "Real Time Control Protocol (RTCP) attribute in Session Description Protocol (SDP)", RFC 3605, DOI 10.17487/RFC3605, October 2003.
[RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals", RFC 4733, DOI 10.17487/RFC4733, December 2006.
[RFC6464] Lennox, J., Ivov, E. and E. Marocco, "A Real-time Transport Protocol (RTP) Header Extension for Client-to-Mixer Audio Level Indication", RFC 6464, DOI 10.17487/RFC6464, December 2011.
[RFC6465] Ivov, E., Marocco, E. and J. Lennox, "A Real-time Transport Protocol (RTP) Header Extension for Mixer-to-Client Audio Level Indication", RFC 6465, DOI 10.17487/RFC6465, December 2011.
[RFC7587] Spittka, J., Vos, K. and JM. Valin, "RTP Payload Format for the Opus Speech and Audio Codec", RFC 7587, DOI 10.17487/RFC7587, June 2015.
[RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G. and B. Burman, "A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources", RFC 7656, DOI 10.17487/RFC7656, November 2015.
[RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J. and F. Galligan, "RTP Payload Format for VP8 Video", RFC 7741, DOI 10.17487/RFC7741, March 2016.
[RFC7826] Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M. and M. Stiemerling, "Real-Time Streaming Protocol Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December 2016.
[RFC8122] Lennox, J. and C. Holmberg, "Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP)", RFC 8122, DOI 10.17487/RFC8122, March 2017.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.
[RFC8445] Keranen, A., Holmberg, C. and J. Rosenberg, "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal", RFC 8445, DOI 10.17487/RFC8445, July 2018.
[I-D.ietf-mmusic-sdp-bundle-negotiation] Holmberg, C., Alvestrand, H. and C. Jennings, "Negotiating Media Multiplexing Using the Session Description Protocol (SDP)", Internet-Draft draft-ietf-mmusic-sdp-bundle-negotiation-54, December 2018.
[I-D.ietf-mmusic-sdp-simulcast] Burman, B., Westerlund, M., Nandakumar, S. and M. Zanaty, "Using Simulcast in SDP and RTP Sessions", Internet-Draft draft-ietf-mmusic-sdp-simulcast-14, March 2019.
[I-D.ietf-mmusic-rid] Roach, A., "RTP Payload Format Restrictions", Internet-Draft draft-ietf-mmusic-rid-15, May 2018.
[I-D.ietf-mmusic-ice-sip-sdp] Petit-Huguenin, M., Nandakumar, S., Holmberg, C., Keranen, A. and R. Shpount, "Session Description Protocol (SDP) Offer/Answer procedures for Interactive Connectivity Establishment (ICE)", Internet-Draft draft-ietf-mmusic-ice-sip-sdp-39, August 2019.
[I-D.ietf-rtcweb-jsep] Uberti, J., Jennings, C. and E. Rescorla, "JavaScript Session Establishment Protocol", Internet-Draft draft-ietf-rtcweb-jsep-26, February 2019.
[I-D.ietf-mmusic-trickle-ice] Ivov, E., Rescorla, E. and J. Uberti, "Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol", Internet-Draft draft-ietf-mmusic-trickle-ice-02, January 2015.
[I-D.ietf-mmusic-msid] Alvestrand, H., "WebRTC MediaStream Identification in the Session Description Protocol", Internet-Draft draft-ietf-mmusic-msid-17, December 2018.
[I-D.ietf-mmusic-sctp-sdp] Holmberg, C., Shpount, R., Loreto, S. and G. Camarillo, "Session Description Protocol (SDP) Offer/Answer Procedures For Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport.", Internet-Draft draft-ietf-mmusic-sctp-sdp-26, April 2017.
[I-D.ietf-rtcweb-data-channel] Jesup, R., Loreto, S. and M. Tuexen, "WebRTC Data Channels", Internet-Draft draft-ietf-rtcweb-data-channel-13, January 2015.
[I-D.ietf-payload-flexible-fec-scheme] Zanaty, M., Singh, V., Begen, A. and G. Mandyam, "RTP Payload Format for Flexible Forward Error Correction (FEC)", Internet-Draft draft-ietf-payload-flexible-fec-scheme-20, May 2019.
[I-D.ietf-mmusic-mux-exclusive] Holmberg, C., "Indicating Exclusive Support of RTP/RTCP Multiplexing using SDP", Internet-Draft draft-ietf-mmusic-mux-exclusive-12, May 2017.
[I-D.ietf-mmusic-dtls-sdp] Holmberg, C. and R. Shpount, "Session Description Protocol (SDP) Offer/Answer Considerations for Datagram Transport Layer Security (DTLS) and Transport Layer Security (TLS)", Internet-Draft draft-ietf-mmusic-dtls-sdp-32, October 2017.
[I-D.ietf-rtcweb-security-arch] Rescorla, E., "WebRTC Security Architecture", Internet-Draft draft-ietf-rtcweb-security-arch-20, July 2019.
[I-D.ietf-rtcweb-security] Rescorla, E., "Security Considerations for WebRTC", Internet-Draft draft-ietf-rtcweb-security-12, July 2019.
[I-D.ietf-avtext-rid] Roach, A., Nandakumar, S. and P. Thatcher, "RTP Stream Identifier Source Description (SDES)", Internet-Draft draft-ietf-avtext-rid-09, October 2016.
[WebRTC] , "WebRTC 1.0: Real-time Communication Between Browsers", <http://dev.w3.org/2011/webrtc/editor/webrtc.html>

Appendix A. Appendix

A.1. JSEP SDP Attributes Checklist

This section compiles a high-level checklist of the required SDP attributes to be verified against the examples defined in this specification. The goal here is to ensure that the examples are compliant to the rules defined in section 5 of the [I-D.ietf-rtcweb-jsep] specification.

A.1.1. Common Checklist

This subsection lists SDP attributes that mostly apply at the session level.

A.1.2. RTP Media Description Checklist

Following set of checklist items apply to RTP audio and video media descriptions.

A.1.3. DataChannel Media Description checklist

If a datachannel is required, an 'application' type media description MUST be included with the following properties:

Authors' Addresses

Suhas Nandakumar Cisco 170 West Tasman Drive San Jose, CA 95134 USA EMail: snandaku@cisco.com
Cullen Jennings Cisco 170 West Tasman Drive San Jose, CA 95134 USA Phone: +1 408 421-9990 EMail: fluffy@cisco.com