idnits 2.17.1 draft-ietf-rtcweb-sdp-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 4 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (April 9, 2017) is 2567 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'I-D.ietf-rtcweb-data-channel' is defined on line 4682, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-payload-flexible-fec-scheme' is defined on line 4687, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-mmusic-mux-exclusive' is defined on line 4693, but no explicit reference was found in the text -- Obsolete informational reference (is this intentional?): RFC 4566 (Obsoleted by RFC 8866) -- Obsolete informational reference (is this intentional?): RFC 5245 (Obsoleted by RFC 8445, RFC 8839) == Outdated reference: A later version (-54) exists of draft-ietf-mmusic-sdp-bundle-negotiation-37 == Outdated reference: A later version (-14) exists of draft-ietf-mmusic-sdp-simulcast-08 == Outdated reference: A later version (-15) exists of draft-ietf-mmusic-rid-10 == Outdated reference: A later version (-26) exists of draft-ietf-rtcweb-jsep-20 == Outdated reference: A later version (-17) exists of draft-ietf-mmusic-msid-16 == Outdated reference: A later version (-26) exists of draft-ietf-mmusic-sctp-sdp-25 == Outdated reference: A later version (-20) exists of draft-ietf-payload-flexible-fec-scheme-04 == Outdated reference: A later version (-12) exists of draft-ietf-mmusic-mux-exclusive-11 == Outdated reference: A later version (-32) exists of draft-ietf-mmusic-dtls-sdp-22 == Outdated reference: A later version (-20) exists of draft-ietf-rtcweb-security-arch-12 == Outdated reference: A later version (-12) exists of draft-ietf-rtcweb-security-08 Summary: 0 errors (**), 0 flaws (~~), 17 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Nandakumar 3 Internet-Draft C. Jennings 4 Intended status: Informational Cisco 5 Expires: October 11, 2017 April 9, 2017 7 SDP for the WebRTC 8 draft-ietf-rtcweb-sdp-05 10 Abstract 12 The Real-Time Communications in WEB-browsers (Rtcweb) working group 13 is charged to provide protocol support for direct interactive rich 14 communication using audio, video and data between two peers' web 15 browsers. With in the Rtcweb framework, Session Description protocol 16 (SDP) is used for negotiating session capabilities between the peers. 17 Such a negotiation happens based on the SDP Offer/Answer exchange 18 mechanism. 20 This document provides an informational reference in describing the 21 role of SDP and the Offer/Answer exchange mechanism for the most 22 common Rtcweb use-cases. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at http://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on October 11, 2017. 41 Copyright Notice 43 Copyright (c) 2017 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (http://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 59 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 60 3. SDP and the WebRTC . . . . . . . . . . . . . . . . . . . . . 3 61 4. Offer/Answer and the WebRTC . . . . . . . . . . . . . . . . . 5 62 5. WebRTC Session Description Examples . . . . . . . . . . . . . 6 63 5.1. Some Conventions . . . . . . . . . . . . . . . . . . . . 7 64 5.2. Basic Examples . . . . . . . . . . . . . . . . . . . . . 9 65 5.2.1. Audio Only Session . . . . . . . . . . . . . . . . . 9 66 5.2.2. Audio/Video Session . . . . . . . . . . . . . . . . . 13 67 5.2.2.1. IPv4 audio/video session . . . . . . . . . . . . 14 68 5.2.2.2. Dual Stack audio/video session . . . . . . . . . 18 69 5.2.3. Data Only Session . . . . . . . . . . . . . . . . . . 22 70 5.2.4. Audio Call On Hold . . . . . . . . . . . . . . . . . 24 71 5.2.5. Audio with DTMF Session . . . . . . . . . . . . . . . 27 72 5.2.6. One Way Audio/Video Session - Document Camera . . . . 31 73 5.2.7. Audio, Video Session with BUNDLE Support Unknown . . 35 74 5.2.8. Audio, Video and Data Session . . . . . . . . . . . . 40 75 5.2.9. Audio, Video Session with BUNDLE Unsupported . . . . 43 76 5.2.10. Audio, Video BUNDLED, but Data (Not BUNDLED) . . . . 48 77 5.2.11. Audio Only, Add Video to BUNDLE . . . . . . . . . . . 53 78 5.3. MultiResolution, RTX, FEC Examples . . . . . . . . . . . 58 79 5.3.1. Sendonly Simulcast Session with 2 cameras and 2 80 encodings per camera . . . . . . . . . . . . . . 59 81 5.3.2. Successful SVC Video Session . . . . . . . . . . . . 65 82 5.3.3. Successful Simulcast Video Session with 83 Retransmission . . . . . . . . . . . . . . . . . . . 69 84 5.3.4. Successful 1-way Simulcast Session with 2 resolutions 85 and RTX - One resolution rejected . . . . . . 73 86 5.3.5. Simulcast Video Session with Forward Error Correction 77 87 5.4. Others . . . . . . . . . . . . . . . . . . . . . . . . . 82 88 5.4.1. Audio Session - Voice Activity Detection . . . . . . 82 89 5.4.2. Audio Conference - Voice Activity Detection . . . . . 85 90 5.4.3. Successful legacy Interop Fallback with bundle-only . 88 91 5.4.4. Legacy Interop with RTP/AVP profile . . . . . . . . . 93 92 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 96 93 7. Security Considerations . . . . . . . . . . . . . . . . . . . 96 94 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 97 95 9. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 97 96 10. Informative References . . . . . . . . . . . . . . . . . . . 100 97 Appendix A. Appendix . . . . . . . . . . . . . . . . . . . . . . 104 98 A.1. JSEP SDP Attributes Checklist . . . . . . . . . . . . . . 104 99 A.1.1. Common Checklist . . . . . . . . . . . . . . . . . . 104 100 A.1.2. RTP Media Description Checklist . . . . . . . . . . . 105 101 A.1.3. DataChannel Media Description checklist . . . . . . . 106 102 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 107 104 1. Introduction 106 Javascript Session Establishment Protocol(JSEP) 107 [I-D.ietf-rtcweb-jsep] specifies a generic protocol needed to 108 generate [RFC3264] Offers and Answers negotiated between the [WebRTC] 109 peers for setting up, updating and tearing down a WebRTC session. 110 For this purpose, SDP is used to construct [RFC3264] Offers/Answers 111 for describing (media and non-media) streams as appropriate for the 112 recipients of the session description to participate in the session. 114 The remainder of this document is organized as follows: Sections 3 115 and 4 provides an overview of SDP and the Offer/Answer exchange 116 mechanism. Section 5 provides sample SDP generated for the most 117 common WebRTC use-cases. 119 2. Terminology 121 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 122 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 123 interpreted as described in [RFC2119]. 125 3. SDP and the WebRTC 127 The purpose of this section is to provide a general overview of SDP 128 and its components. For a more in-depth understanding, the readers 129 are advised to refer to [RFC4566]. 131 The Session Description Protocol (SDP) [RFC4566] describes multimedia 132 sessions, which can contain audio, video, whiteboard, fax, modem, and 133 other streams. SDP provides a general purpose, standard 134 representation to describe various aspects of multimedia session such 135 as media capabilities, transport addresses and related metadata in a 136 transport agnostic manner, for the purposes of session announcement, 137 session invitation and parameter negotiation. 139 As of today SDP is widely used in the context of Session Initiation 140 Protocol [RFC3261], Real-time Transport Protocol [RFC3550] and Real- 141 time Streaming Protocol applications [RFC7826]. 143 Below figure introduces high-level breakup of SDP into components 144 that semantically describe a multimedia session, in our case, a 145 WebRTC session [WebRTC]. It by no means captures everything about 146 SDP and hence, should be used for informational purposes only. 148 +---------------------+ 149 | v= | 150 +---------------------+ 151 +---------------------+ +---------------------+ 152 ==== | Session Metadata | ===== | o= | 153 | +---------------------+ +---------------------- 154 | +---------------------+ 155 | | t= | 156 | +---------------------+ 157 | 158 | 159 | +---------------------+ 160 | | c= | 161 | +---------------------+ 162 | +---------------------+ 163 ==== | Network Description | ===== 164 | +---------------------+ 165 | +---------------------+ 166 | | a=candidate | 167 | +---------------------+ 168 | 169 | 170 | +---------------------+ 171 | | m= | 172 | +---------------------+ 173 | +---------------------+ +---------------------+ 174 ==== | Stream Description | ===== | a=rtpmap | 175 | +---------------------+ +---------------------- 176 | +---------------------+ 177 | | a=fmtp | 178 | +---------------------+ 179 | +---------------------+ 180 | | a=sendrecv.. | 181 | +---------------------+ 182 +---------------+ 183 | SEMANTIC | 184 | COMPONENTS OF | 185 | SDP | 186 +---------------+ 187 | +---------------------+ 188 | | a=crypto | 189 | +---------------------+ 190 | +---------------------+ +---------------------+ 191 ==== |Security Descriptions| =====| a=ice-frag | 192 | +---------------------+ +---------------------- 193 | +---------------------+ 194 | | a=ice-pwd | 195 | +---------------------+ 196 | +---------------------+ 197 | | a=fingerprint | 198 | +---------------------+ 199 | 200 | 201 | 202 | +---------------------+ 203 | | a=rtcp-fb | 204 | +---------------------+ 205 | +---------------------+ +---------------------+ 206 ==== | Qos,Grouping | | | 207 | Descriptions | =====| a=group | 208 +---------------------+ +---------------------- 209 +---------------------+ 210 | a=rtcpmux | 211 +---------------------+ 213 Figure 1: Semantic Components of SDP 215 [WebRTC] proposes JavaScript application to fully specify and control 216 the signaling plane of a multimedia session as described in the JSEP 217 specification [I-D.ietf-rtcweb-jsep]. JSEP provides mechanisms to 218 create session characterization and media definition information to 219 conduct the session based on SDP exchanges. 221 In this context, SDP serves two purposes: 223 1. Provide grammatical structure syntactically. 225 2. Semantically convey participant's intention and capabilities 226 required to successfully negotiate a session. 228 4. Offer/Answer and the WebRTC 230 This section introduces SDP Offer/Answer Exchange mechanism mandated 231 by WebRTC for negotiating session capabilities while setting up, 232 updating and tearing down a WebRTC session. This section is 233 intentionally brief in nature and interested readers are recommended 234 to refer [RFC3264] for specific details on the protocol operation. 236 The Offer/Answer [RFC3264] model specifies rule for the bilateral 237 exchange of Session Description Protocol (SDP) messages for creation 238 of multimedia streams. It defines protocol with involved 239 participants exchanging desired session characteristics from each 240 others perspective constructed as SDP to negotiate the session 241 between them. 243 In the most basic form,the protocol operation begins by one of the 244 participants sending an initial SDP Offer describing its intent to 245 start a multimedia communication session. The participant receiving 246 the offer MAY generate an SDP Answer accepting the offer or it MAY 247 reject the offer. If the session is accepted the Offer/Answer model 248 guarantees a common view of the multimedia session between the 249 participants. 251 At any time, either participant MAY generate a new SDP offer that 252 updates the session in progress. 254 With in the context of WebRTC, the Offer/Answer model defines the 255 state-machinery for WebRTC peers to negotiate session descriptions 256 between them during the initial setup stages as well as for eventual 257 session updates. JSEP specification [I-D.ietf-rtcweb-jsep] for 258 WebRTC provides the mechanism for generating [RFC3264] SDP Offers and 259 Answers in order for both sides of the session to agree upon the 260 details such as the list of media formats to be sent/received, 261 bandwidth information, crypto parameters, transport parameters, for 262 example. 264 5. WebRTC Session Description Examples 266 A typical web based real-time multimedia communication session can be 267 characterized as below: 269 o It has zero or more Audio only, Video only or Audio/Video RTP 270 Sessions, 272 o MAY contain zero or more non-media data sessions, 274 o All the sessions are secured with DTLS-SRTP, 276 o Supports NAT traversal using ICE mechanism, 278 o Provides RTCP based feedback mechanisms, 280 o Sessions can be over IPv4-only, IPv6-only, dual-stack based 281 clients. 283 5.1. Some Conventions 285 The examples given in this document follow the conventions listed 286 below: 288 o In all the examples, Alice and Bob are assumed to be the WebRTC 289 peers. 291 o It is assumed that for most of the examples, the support for 292 [I-D.ietf-mmusic-sdp-bundle-negotiation] is established apriori 293 either out-of-band or as a consequence of successful Offer/Answer 294 negotiation between Alice and Bob, unless explicitly stated 295 otherwise. 297 o Call-flow diagrams that accompany the use-cases capture only the 298 prominent aspects of the system behavior and intentionally is not 299 detailed to improve readability. 301 o Eventhough the call-flow diagrams shows SDP being exchanged 302 between the parties, it doesn't represent the only way an WebRTC 303 setup is expected to work. Other approaches may involve WebRTC 304 applications to exchange the media setup information via non-SDP 305 mechanisms as long as they confirm to the [I-D.ietf-rtcweb-jsep] 306 API specification. 308 o The SDP examples deviate from actual on-the-wire SDP notation in 309 several ways. This is done to facilitate readability and to 310 conform to the restrictions imposed by the RFC formatting rules. 312 * Visual markers/Empty lines in any SDP example are inserted to 313 make functional divisions in the SDP clearer, and are not 314 actually part of the SDP syntax. 316 * Any SDP line that is indented (compared to the initial line in 317 the SDP block) is a continuation of the preceding line. The 318 line break and indent are to be interpreted as a single space 319 character. 321 * Excepting the above two conventions, line endings are to be 322 interpreted as pairs (that is, an ASCII 13 followed by 323 an ASCII 10). 325 o Against each SDP line, pointers to the appropriate RFCs are 326 provided for further informational reference. Also an attempt has 327 been made to provide explanatory notes to enable better 328 understanding of the SDP usage, wherever appropriate. 330 o Following SDP details are common across all the use-cases defined 331 in this document unless mentioned otherwise. 333 * DTLS fingerprint for SRTP (a=fingerprint) 335 * RTP/RTCP Multiplexing (a=rtcp-mux) 337 * RTCP Feedback support (a=rtcp-fb) 339 * Host and server-reflexive candidate lines (a=candidate) 341 * SRTP Setup framework parameters (a=setup) 343 * RTCP attribute (a=rtcp) 345 * RTP header extension indicating audio-levels from client to the 346 mixer 348 For specific details, readers must refer to [I-D.ietf-rtcweb-jsep] 349 specification. 351 o The term "Session" is used rather loosely in this document to 352 refer to either a "Communication Session" or a "RTP Session" or a 353 "RTP Stream" depending on the context. 355 o Payload type 109 is usually used for OPUS, 0 for PCMU, 8 for PCMA, 356 99 for H.264 and 120 for VP8 in most of the examples to maintain 357 uniformity. 359 o The IP Address:Port combinations '192.0.2.4:61665' (host) and 360 '203.0.113.141:54609' (Server Reflexive) is typically used for 361 Alice. 363 o The IP Address:Port combinations '198.51.100.7:51556' (host) and 364 '203.0.113.77:49203' (Server Reflexive) is typically used for Bob. 366 o The IPv6 addresses 2001:DB8:8101:3a55:4858:a2a9:22ff:99b9 and 367 2001:DB8:30c:1266:5916:3779:22f6:77f7 are used to represent Alice 368 and Bob host addresses respectively. 370 o In the actual use the values that represent SSRCs, ICE candidate 371 foundations, WebRTC Mediastream and MediaStreamTrack Ids shall be 372 much larger and/or random than the ones shown in the examples. 374 o SDP attributes in the examples closely follow the checklist 375 defined in section Appendix A.1. 377 5.2. Basic Examples 379 5.2.1. Audio Only Session 381 This common scenario shows SDP for secure two-way audio session with 382 Alice offering Opus, PCMU, PCMA and Bob accepting all the offered 383 audio codecs. 385 2-Way Audio Only Session 387 Alice Bob 388 | | 389 | | 390 | Offer(Audio:Opus,PCMU,PCMA) | 391 |------------------------------------>| 392 | | 393 | | 394 | Answer(Audio:Opus,PCMU,PCMA) | 395 |<------------------------------------| 396 | | 397 | | 398 |Two-way Opus Audio (preferred-codec) | 399 |.....................................| 400 | | 401 | | 403 +--------------------------------------------+----------------------+ 404 | Offer SDP Contents | RFC#/Notes | 405 +--------------------------------------------+----------------------+ 406 | v=0 | [RFC4566] | 407 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session | 408 | | Origin Information | 409 | s=- | [RFC4566] | 410 | t=0 0 | [RFC4566] | 411 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp | 412 | | -bundle-negotiation] | 413 | a=ice-options:trickle | [I-D.ietf-mmusic-tri | 414 | | ckle-ice] | 415 | a=identity:eyJpZHAiOnsiZG9tYWluIjoibmlpZi5 | Section 5.6 of [I-D. | 416 | odSIsInByb3RvY29sIjoiaWRwLmh0bWwifSwiYXNzZ | ietf-rtcweb-security | 417 | XJ0a W9uIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbl | -arch] | 418 | I1Y0NJNklrcFhVeUo5LmV5SmpiMjUwWlc1MGN5STZl | | 419 | eUptYVc1b lpYSndjbWx1ZENJNlczc2lZV3huYjNKc | | 420 | GRHaHRJam9pYzJoaExUSTFOaUlzSW1ScFoyVnpkQ0k | | 421 | 2SWprek9rTXdPa kl6T2pKR09rRXlPakF3T2pBd09q | | 422 | QkVPalV4T2tGRE9rUXlPalUwT2pZMU9rWTBPak5DT2 | | 423 | pkRU9qa3lPa1JET2pnN E9qTXpPalV4T2pJek9qUXd | | 424 | PamN5T2preE9qZ3pPalZDT2pBeE9qSkdPalV3T2pjN | | 425 | E9qTkdJbjFkZlN3aWFXUmxib lJwZEhraU9pSnRhWE | | 426 | 5wUUc1cGFXWXVhSFVpZlEuSTVQdGhKNFFDT05TOFVX | | 427 | d25OOUh3MEdaTDl3d0RBVGRrTWtFW llmdlNVTTJ6U | | 428 | md5R09WSGgzRmpnc2FPZklkRnFsNUx6azBFbndVOTN | | 429 | QOUlCQ0xZOWtia3V1c0V1S25YRGVNLTNIN WFmdTJv | | 430 | Zl9CTlZjUnB3MmdBdlNBbVR6SlltcEpqMFEtdmV0Tm | | 431 | tVT1huZE9HLUIzT3ZGb3QwZVNENlZSNUdhb2wyc Gd | | 432 | uS3FSTktOd3dacEZ1eUZZbFRodHJIdGNiT19WV3o4Q | | 433 | nZpTThKS25OdExWd1JxNUhMX2ZLTlRCNzFDYkoyWmh | | 434 | 5W XU1UEdwWDhXcXJMWC1ybm5YSFY3RnhoTTh5OHdr | | 435 | LWd5cnRZazVnbFlZeUFrcTVqZklSXzRzWER5d19Qc1 | | 436 | BWTW1aZ XltenVGV3BQTzVFWlJYR0ZpRjFET0o4Q0Q | | 437 | 3Z3Zta2dUdlBXSWpkemtBIn0= | | 438 | ****** Audio m=line ********* | ******************** | 439 | | ********* | 440 | m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8 | [RFC4566] | 441 | c=IN IP4 203.0.113.141 | [RFC4566] | 442 | a=mid:audio | [RFC5888] | 443 | a=msid:ma ta | Identifies | 444 | | RTCMediaStream ID | 445 | | (ma) and | 446 | | RTCMediaStreamTrack | 447 | | ID (ta) | 448 | a=sendrecv | [RFC3264] - Alice | 449 | | can send and recv | 450 | | audio | 451 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Opus | 452 | | Codec 48khz, 2 | 453 | | channels | 454 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio | 455 | | Codec | 456 | a=rtpmap:8 PCMA/8000 | [RFC3551] PCMA Audio | 457 | | Codec | 458 | a=maxptime:120 | [RFC4566] | 459 | a=ice-ufrag:074c6550 | [RFC5245] - ICE user | 460 | | fragment | 461 | a=ice- | [RFC5245] - ICE | 462 | pwd:a28a397a4c3f31747d1ee3474af08a068 | password | 463 | a=fingerprint:sha-256 19:E2:1C:3B:4B:9F:81 | [RFC5245] - DTLS | 464 | :E6:B8:5C:F4:A5:A8:D8:73:04 :BB:05:2F:70:9 | Fingerprint for SRTP | 465 | F:04:A9:0E:05:E9:26:33:E8:70:88:A2 | | 466 | a=setup:actpass | [RFC4145] - Alice | 467 | | can perform DTLS | 468 | | before Answer | 469 | | arrives | 470 | a=dtls-id:1 | [I-D.ietf-mmusic-dtl | 471 | | s-sdp] | 472 | a=rtcp-mux | [RFC5761] - Alice | 473 | | can perform RTP/RTCP | 474 | | Muxing | 475 | a=rtcp:60065 IN IP4 203.0.113.141 | [RFC3605] | 476 | a=rtcp-rsize | [RFC5506] - Alice | 477 | | intends to use | 478 | | reduced size RTCP | 479 | | for this session | 480 | a=rtcp-fb:109 nack | [RFC5104] - | 481 | | Indicates NACK RTCP | 482 | | feedback support | 483 | a=extmap:1 urn:ietf:params:rtp-hdrext | [RFC6464] Alice | 484 | :ssrc-audio-level | supports RTP header | 485 | | extension to | 486 | | indicate audio | 487 | | levels | 488 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp | 489 | hdrext:sdes:mid | -bundle-negotiation] | 490 | a=candidate:0 1 UDP 2122194687 192.0.2.4 | [RFC5245] - RTP Host | 491 | 61665 typ host | Candidate | 492 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - RTP | 493 | 203.0.113.141 54609 typ srflx raddr | Server Reflexive ICE | 494 | 192.0.2.4 rport 61665 | Candidate | 495 | a=candidate:0 2 UDP 2122194687 192.0.2.4 | [RFC5245] - RTCP | 496 | 61667 typ host | Host Candidate | 497 | a=candidate:1 2 UDP 1685987071 | [RFC5245] - RTCP | 498 | 203.0.113.141 60065 typ srflx raddr | Server Reflexive ICE | 499 | 192.0.2.4 rport 61667 | Candidate | 500 | a=end-of-candidates | [I-D.ietf-mmusic-tri | 501 | | ckle-ice] | 502 +--------------------------------------------+----------------------+ 504 Table 1: 5.2.1 SDP Offer 506 +-------------------------------------------+-----------------------+ 507 | Answer SDP Contents | RFC#/Notes | 508 +-------------------------------------------+-----------------------+ 509 | v=0 | [RFC4566] | 510 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session | 511 | | Origin Information | 512 | s=- | [RFC4566] | 513 | t=0 0 | [RFC4566] | 514 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp- | 515 | | bundle-negotiation] | 516 | a=ice-options:trickle | [I-D.ietf-mmusic-tric | 517 | | kle-ice] | 518 | a=identity:ew0KICAiaWRwIjp7DQogICAgImRvbW | Section 5.6 of [I-D.i | 519 | FpbiI6ICJjaXNjb3NwYXJrLmNvbSIsDQogICAg In | etf-rtcweb-security-a | 520 | Byb3RvY29sIjogImRlZmF1bHQiDQogIH0sDQogICJ | rch] | 521 | hc3NlcnRpb24iOiAibEp3WkVocmFVOXBTblJo V0U | | 522 | 1d1VVYzFjR0ZYV1hWaFNGVnBabEV1U1RWUWRHaEtO | | 523 | RkZEVDA1VE9GVlhkMjVPT1VoM01FZGFURGwz ZDBS | | 524 | QlZHUnJUV3RGVw0KICAgICAgICAgICAgICBsbG1kb | | 525 | E5WVFRKNlVtZDVSMDlXU0dnelJtcG5jMkZQ Wmtsa | | 526 | 1JuRnNOVXg2YXpCRmJuZFZPVE5RT1VsQ1EweFpPV3 | | 527 | RpYTNWMWMwVjFTMjVZUkdWTkxUTklODQog ICAgIC | | 528 | AgICAgICAgIFdGbWRUSnZabDlDVGxaalVuQjNNbWR | | 529 | CZGxOQmJWUjZTbGx0Y0VwcU1GRXRkbVYw VG10VlQ | | 530 | xaHVaRTlITFVJelQzWkdiM1F3WlZORU5sWlNOVWRo | | 531 | YjJ3eWMNCiAgICAgICAgICAgICAgR2R1 UzNGU1Rr | | 532 | dE9kM2RhY0VaMWVVWlpiRlJvZEhKSWRHTmlUMTlXV | | 533 | jNvNFFuWnBUVGhLUzI1T2RFeFdkMUp4 | | 534 | TlVoTVgyWkxUbFJDTnpGRFlrb3lXbWg1VyINCn0= | | 535 | ****** Audio m=line ********* | ********************* | 536 | | ******** | 537 | m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 8 | [RFC4566] | 538 | c=IN IP4 203.0.113.77 | [RFC4566] | 539 | a=mid:audio | [RFC5888] | 540 | a=msid:ma ta | [I-D.ietf-mmusic-msid | 541 | | ] Identifies | 542 | | RTCMediaStream ID | 543 | | (ma) and | 544 | | RTCMediaStreamTrack | 545 | | ID (ta) | 546 | a=sendrecv | [RFC3264] - Bob can | 547 | | send and recv audio | 548 | a=rtpmap:109 opus/48000/2 | [RFC7587] Opus Codec | 549 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio | 550 | | Codec | 551 | a=rtpmap:8 PCMA/8000 | [RFC3551] PCMA Audio | 552 | | Codec | 553 | a=maxptime:120 | [RFC4566] | 554 | a=ice-ufrag:05067423 | [RFC5245] - ICE user | 555 | | fragment | 556 | a=ice- | [RFC5245] - ICE | 557 | pwd:1747d1ee3474a28a397a4c3f3af08a068 | password parameter | 558 | a=fingerprint:sha-256 6B:8B:F0:65:5F:78:E | [RFC5245] - DTLS | 559 | 2:51:3B:AC:6F:F3:3F:46:1B:35 :DC:B8:5F:64 | Fingerprint for SRTP | 560 | :1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 | | 561 | a=setup:active | [RFC4145] - Bob | 562 | | carries out DTLS | 563 | | Handshake in parallel | 564 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls | 565 | | -sdp] | 566 | a=rtcp-mux | [RFC5761] - Bob can | 567 | | perform RTP/RTCP | 568 | | Muxing on port 49203 | 569 | a=rtcp-rsize | [RFC5506] - Bob | 570 | | intends to use | 571 | | reduced size RTCP for | 572 | | this session | 573 | a=rtcp-fb:109 nack | [RFC5104] - Indicates | 574 | | NACK RTCP feedback | 575 | | support | 576 | a=extmap:1 urn:ietf:params:rtp-hdrext | [RFC6464] Bob | 577 | :ssrc-audio-level | supports audio level | 578 | | RTP header extension | 579 | | as well | 580 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp- | 581 | hdrext:sdes:mid | bundle-negotiation] | 582 | a=candidate:0 1 UDP 2122194687 | [RFC5245] - RTP/RTCP | 583 | 198.51.100.7 51556 typ host | Host ICE Candidate | 584 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - RTP/RTCP | 585 | 203.0.113.77 49203 typ srflx raddr | Server Reflexive ICE | 586 | 198.51.100.7 rport 51556 | Candidate | 587 | a=end-of-candidates | [I-D.ietf-mmusic-tric | 588 | | kle-ice] | 589 +-------------------------------------------+-----------------------+ 591 Table 2: 5.2.1 SDP Answer 593 5.2.2. Audio/Video Session 595 Alice and Bob establish a two-way audio and video session with Opus 596 as the audio codec and H.264 as the video codec. 598 2-Way Audio,Video Session 600 Alice Bob 601 | | 602 | | 603 |Offer(Audio:Opus,PCMU,PCMA Video:H.264,VP8) | 604 |------------------------------------------->| 605 | | 606 | | 607 | Answer(Audio:Opus,Video:H.264) | 608 |<-------------------------------------------| 609 | | 610 | | 611 | Two-way Opus Audio, H.264 Video | 612 |............................................| 613 | | 615 5.2.2.1. IPv4 audio/video session 617 This section shows the IPv4 only Offer/Answer exchange. 619 +-----------------------------------+-------------------------------+ 620 | Offer SDP Contents | RFC#/Notes | 621 +-----------------------------------+-------------------------------+ 622 | v=0 | [RFC4566] | 623 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 624 | | Information | 625 | s=- | [RFC4566] | 626 | t=0 0 | [RFC4566] | 627 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 628 | | egotiation] | 629 | a=group:LS audio video | [RFC5888] - Alice wants to | 630 | | lip sync her audio and video | 631 | | sreams | 632 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 633 | ****** Audio m=line ********* | ***************************** | 634 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 635 | 109 0 8 | | 636 | c=IN IP4 203.0.113.141 | [RFC4566] | 637 | a=mid:audio | [RFC5888] | 638 | a=msid:ma ta | [I-D.ietf-mmusic-msid] | 639 | | Identifies RTCMediaStream ID | 640 | | (ma) and RTCMediaStreamTrack | 641 | | ID (ta) | 642 | a=sendrecv | [RFC3264] - Alice can send | 643 | | and recv audio | 644 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Opus Codec 48khz, | 645 | | 2 channels | 646 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 647 | a=rtpmap:8 PCMA/8000 | [RFC3551] PCMA Audio Codec | 648 | a=maxptime:120 | [RFC4566] | 649 | a=ice-ufrag:074c6550 | [RFC5245] - ICE user fragment | 650 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] - ICE password | 651 | 74af08a068 | parameter | 652 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] - DTLS Fingerprint | 653 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | for SRTP | 654 | :04: BB:05:2F:70:9F:04:A9:0E:05:E | | 655 | 9:26:33:E8:70:88:A2 | | 656 | a=setup:actpass | [RFC4145] - Alice can perform | 657 | | DTLS before Answer arrives | 658 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 659 | a=rtcp-mux | [RFC5761] - Alice can perform | 660 | | RTP/RTCP Muxing | 661 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 662 | | e] | 663 | a=rtcp-rsize | [RFC5506] - Alice intends to | 664 | | use reduced size RTCP for | 665 | | this session | 666 | a=rtcp-fb:109 nack | [RFC5104] - Indicates NACK | 667 | | RTCP feedback support | 668 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 669 | hdrext:ssrc-audio-level | | 670 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 671 | hdrext:sdes:mid | egotiation] | 672 | a=candidate:0 1 UDP 2122194687 | [RFC5245] - RTP/RTCP Host | 673 | 192.0.2.4 61665 typ host | Candidate | 674 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - RTP/RTCP Server | 675 | 203.0.113.141 54609 typ srflx | Reflexive ICE Candidate | 676 | raddr 192.0.2.4 rport 61665 | | 677 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 678 | ****** Video m=line ********* | ***************************** | 679 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 680 | 99 120 | | 681 | c=IN IP4 203.0.113.141 | [RFC4566] | 682 | a=mid:video | [RFC5888] | 683 | a=msid:ma tb | Identifies RTCMediaStream ID | 684 | | (ma) and RTCMediaStreamTrack | 685 | | ID (tb) | 686 | a=sendrecv | [RFC3264] - Alice can send | 687 | | and recv video | 688 | a=rtpmap:99 H264/90000 | [RFC6184] - H.264 Video Codec | 689 | a=fmtp:99 profile-level-id=4d0028 | [RFC6184] | 690 | ;packetization-mode=1 | | 691 | a=rtpmap:120 VP8/90000 | [RFC7741] - VP8 video codec | 692 | a=rtcp-fb:99 nack | [RFC5104] - Indicates NACK | 693 | | RTCP feedback support | 694 | a=rtcp-fb:99 nack pli | [RFC5104] - Indicates support | 695 | | for Picture loss Indication | 696 | | and NACK | 697 | a=rtcp-fb:99 ccm fir | [RFC5104] - Full Intra Frame | 698 | | Request-Codec Control Message | 699 | | support | 700 | a=rtcp-fb:120 nack | [RFC5104] - Indicates NACK | 701 | | RTCP feedback support | 702 | a=rtcp-fb:120 nack pli | [RFC5104] - Indicates support | 703 | | for Picture loss Indication | 704 | | and NACK | 705 | a=rtcp-fb:120 ccm fir | [RFC5104] - Full Intra Frame | 706 | | Request-Codec Control Message | 707 | | support | 708 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 709 | hdrext:sdes:mid | egotiation] | 710 +-----------------------------------+-------------------------------+ 712 Table 3: 5.2.2.1 SDP Offer 714 +-----------------------------------+-------------------------------+ 715 | Answer SDP Contents | RFC#/Notes | 716 +-----------------------------------+-------------------------------+ 717 | v=0 | [RFC4566] | 718 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 719 | | Information | 720 | s=- | [RFC4566] | 721 | t=0 0 | [RFC4566] | 722 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 723 | | egotiation] | 724 | a=group:LS audio video | [RFC5888] - Bob agrees to do | 725 | | the same | 726 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 727 | ****** Audio m=line ********* | ***************************** | 728 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 729 | 109 | | 730 | c=IN IP4 203.0.113.77 | [RFC4566] | 731 | a=mid:audio | [RFC5888] | 732 | a=msid:ma ta | Identifies RTCMediaStream ID | 733 | | (ma) and RTCMediaStreamTrack | 734 | | ID (ta) | 735 | a=sendrecv | [RFC3264] - Bob can send and | 736 | | recv audio | 737 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Bob accepts only | 738 | | Opus Codec | 739 | a=maxptime:120 | [RFC4566] | 740 | a=ice-ufrag:c300d85b | [RFC5245] - ICE username | 741 | | frag | 742 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] - ICE password | 743 | efbabd9a2 | | 744 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] - DTLS Fingerprint | 745 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | for SRTP | 746 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 747 | 1:58:D0:A1:2C:19:08 | | 748 | a=setup:active | [RFC4145] - Bob carries out | 749 | | DTLS Handshake in parallel | 750 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 751 | a=rtcp-mux | [RFC5761] - Bob can perform | 752 | | RTP/RTCP Muxing | 753 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 754 | | e] | 755 | a=rtcp-rsize | [RFC5506] - Bob intends to | 756 | | use reduced size RTCP for | 757 | | this session | 758 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 759 | hdrext:ssrc-audio-level | | 760 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 761 | hdrext:sdes:mid | egotiation] | 762 | a=candidate:0 1 UDP 3618095783 | [RFC5245] - RTP/RTCP Host ICE | 763 | 198.51.100.7 49203 typ host | Candidate | 764 | a=candidate:1 1 UDP 565689203 | [RFC5245] - RTP/RTCP Server | 765 | 203.0.113.77 49203 typ srflx | Reflexive ICE Candidate | 766 | raddr 198.51.100.7 rport 51556 | | 767 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 768 | ****** Video m=line ********* | ***************************** | 769 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 770 | 99 | | 771 | c=IN IP4 203.0.113.77 | [RFC4566] | 772 | a=mid:video | [RFC5888] | 773 | a=msid:ma tb | Identifies RTCMediaStream ID | 774 | | (ma) and RTCMediaStreamTrack | 775 | | ID (tb) | 776 | a=sendrecv | [RFC3264] - Bob can send and | 777 | | recv video | 778 | a=rtpmap:99 H264/90000 | [RFC6184] - Bob accepts H.264 | 779 | | Video Codec. | 780 | a=fmtp:99 profile-level-id=4d0028 | [RFC6184] | 781 | ;packetization-mode=1 | | 782 | a=rtcp-fb:99 nack | [RFC5104] - Indicates support | 783 | | for NACK based RTCP feedback | 784 | a=rtcp-fb:99 nack pli | [RFC5104] - Indicates support | 785 | | for Picture loss Indication | 786 | | and NACK | 787 | a=rtcp-fb:99 ccm fir | [RFC5104] - Full Intra Frame | 788 | | Request- Codec Control | 789 | | Message support | 790 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 791 | hdrext:sdes:mid | egotiation] | 792 +-----------------------------------+-------------------------------+ 794 Table 4: 5.2.2.1 SDP Answer 796 5.2.2.2. Dual Stack audio/video session 798 This section captures offer/answer exchange when Alice and Bob 799 support both IPv4 and IPv6 host addresses. 801 +-----------------------------------+-------------------------------+ 802 | Offer SDP Contents | RFC#/Notes | 803 +-----------------------------------+-------------------------------+ 804 | v=0 | [RFC4566] | 805 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 806 | | Information | 807 | s=- | [RFC4566] | 808 | t=0 0 | [RFC4566] | 809 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 810 | | egotiation] | 811 | a=group:LS audio video | [RFC5888] - Alice wants to | 812 | | lip sync her audio and video | 813 | | sreams | 814 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 815 | ****** Audio m=line ********* | ***************************** | 816 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 817 | 109 0 8 | | 818 | c=IN IP4 203.0.113.141 | [RFC4566] | 819 | a=mid:audio | [RFC5888] | 820 | a=msid:ma ta | Identifies RTCMediaStream ID | 821 | | (ma) and RTCMediaStreamTrack | 822 | | ID (ta) | 823 | a=sendrecv | [RFC3264] - Alice can send | 824 | | and recv audio | 825 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Opus Codec 48khz, | 826 | | 2 channels | 827 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 828 | a=rtpmap:8 PCMA/8000 | [RFC3551] PCMA Audio Codec | 829 | a=maxptime:120 | [RFC4566] | 830 | a=ice-ufrag:074c6550 | [RFC5245] - ICE user fragment | 831 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] - ICE password | 832 | 74af08a068 | parameter | 833 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] - DTLS Fingerprint | 834 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | for SRTP | 835 | :04: BB:05:2F:70:9F:04:A9:0E:05:E | | 836 | 9:26:33:E8:70:88:A2 | | 837 | a=setup:actpass | [RFC4145] - Alice can perform | 838 | | DTLS before Answer arrives | 839 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 840 | a=rtcp-mux | [RFC5761] - Alice can perform | 841 | | RTP/RTCP Muxing | 842 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 843 | | e] | 844 | a=rtcp-rsize | [RFC5506] - Alice intends to | 845 | | use reduced size RTCP for | 846 | | this session | 847 | a=rtcp-fb:109 nack | [RFC5104] - Indicates NACK | 848 | | RTCP feedback support | 849 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 850 | hdrext:ssrc-audio-level | | 851 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 852 | hdrext:sdes:mid | egotiation] | 853 | a=candidate:0 1 UDP 2122194687 | [RFC5245] - RTP/RTCP Host | 854 | 192.0.2.4 61665 typ host | Candidate | 855 | a=candidate:0 1 UDP 2122194687 2 | [RFC5245] - RTP/RTCP IPv6 | 856 | 001:DB8:8101:3a55:4858:a2a9:22ff: | Host Candidate | 857 | 99b9 61665 typ host | | 858 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 859 | ****** Video m=line ********* | ***************************** | 860 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 861 | 99 120 | | 862 | c=IN IP4 203.0.113.141 | [RFC4566] | 863 | a=mid:video | [RFC5888] | 864 | a=msid:ma tb | Identifies RTCMediaStream ID | 865 | | (ma) and RTCMediaStreamTrack | 866 | | ID (tb) | 867 | a=sendrecv | [RFC3264] - Alice can send | 868 | | and recv video | 869 | a=rtpmap:99 H264/90000 | [RFC6184] - H.264 Video Codec | 870 | a=fmtp:99 profile-level-id=4d0028 | [RFC6184] | 871 | ;packetization-mode=1 | | 872 | a=rtpmap:120 VP8/90000 | [RFC7741] - VP8 video codec | 873 | a=rtcp-fb:99 nack | [RFC5104] - Indicates NACK | 874 | | RTCP feedback support | 875 | a=rtcp-fb:99 nack pli | [RFC5104] - Indicates support | 876 | | for Picture loss Indication | 877 | | and NACK | 878 | a=rtcp-fb:99 ccm fir | [RFC5104] - Full Intra Frame | 879 | | Request-Codec Control Message | 880 | | support | 881 | a=rtcp-fb:120 nack | [RFC5104] - Indicates NACK | 882 | | RTCP feedback support | 883 | a=rtcp-fb:120 nack pli | [RFC5104] - Indicates support | 884 | | for Picture loss Indication | 885 | | and NACK | 886 | a=rtcp-fb:120 ccm fir | [RFC5104] - Full Intra Frame | 887 | | Request-Codec Control Message | 888 | | support | 889 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 890 | hdrext:sdes:mid | egotiation] | 891 +-----------------------------------+-------------------------------+ 893 Table 5: 5.2.2.2 SDP Offer 895 +-----------------------------------+-------------------------------+ 896 | Answer SDP Contents | RFC#/Notes | 897 +-----------------------------------+-------------------------------+ 898 | v=0 | [RFC4566] | 899 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 900 | | Information | 901 | s=- | [RFC4566] | 902 | t=0 0 | [RFC4566] | 903 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 904 | | egotiation] | 905 | a=group:LS audio video | [RFC5888] - Bob agrees to do | 906 | | the same | 907 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 908 | ****** Audio m=line ********* | ***************************** | 909 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 910 | 109 | | 911 | c=IN IP4 203.0.113.77 | [RFC4566] | 912 | a=mid:audio | [RFC5888] | 913 | a=msid:ma ta | Identifies RTCMediaStream ID | 914 | | (ma) and RTCMediaStreamTrack | 915 | | ID (ta) | 916 | a=sendrecv | [RFC3264] - Bob can send and | 917 | | recv audio | 918 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Bob accepts only | 919 | | Opus Codec | 920 | a=maxptime:120 | [RFC4566] | 921 | a=ice-ufrag:c300d85b | [RFC5245] - ICE username | 922 | | frag | 923 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] - ICE password | 924 | efbabd9a2 | | 925 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] - DTLS Fingerprint | 926 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | for SRTP | 927 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 928 | 1:58:D0:A1:2C:19:08 | | 929 | a=setup:active | [RFC4145] - Bob carries out | 930 | | DTLS Handshake in parallel | 931 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 932 | a=rtcp-mux | [RFC5761] - Bob can perform | 933 | | RTP/RTCP Muxing | 934 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 935 | | e] | 936 | a=rtcp-rsize | [RFC5506] - Bob intends to | 937 | | use reduced size RTCP for | 938 | | this session | 939 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 940 | hdrext:ssrc-audio-level | | 941 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 942 | hdrext:sdes:mid | egotiation] | 943 | a=candidate:0 1 UDP 3618095783 | [RFC5245] - RTP/RTCP Host ICE | 944 | 198.51.100.7 49203 typ host | Candidate | 945 | a=candidate:0 1 UDP 3618095783 20 | [RFC5245] - RTP/RTCP IPv6 | 946 | 01:DB8:30c:1266:5916:3779:22f6:77 | Host ICE Candidate | 947 | f7 49203 typ host | | 948 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 949 | ****** Video m=line ********* | ***************************** | 950 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 951 | 99 | | 952 | c=IN IP4 203.0.113.77 | [RFC4566] | 953 | a=mid:video | [RFC5888] | 954 | a=msid:ma tb | Identifies RTCMediaStream ID | 955 | | (ma) and RTCMediaStreamTrack | 956 | | ID (tb) | 957 | a=sendrecv | [RFC3264] - Bob can send and | 958 | | recv video | 959 | a=rtpmap:99 H264/90000 | [RFC6184] - Bob accepts H.264 | 960 | | Video Codec. | 961 | a=fmtp:99 profile-level-id=4d0028 | [RFC6184] | 962 | ;packetization-mode=1 | | 963 | a=rtcp-fb:99 nack | [RFC5104] - Indicates support | 964 | | for NACK based RTCP feedback | 965 | a=rtcp-fb:99 nack pli | [RFC5104] - Indicates support | 966 | | for Picture loss Indication | 967 | | and NACK | 968 | a=rtcp-fb:99 ccm fir | [RFC5104] - Full Intra Frame | 969 | | Request- Codec Control | 970 | | Message support | 971 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 972 | hdrext:sdes:mid | egotiation] | 973 +-----------------------------------+-------------------------------+ 975 Table 6: 5.2.2.2 SDP Answer 977 5.2.3. Data Only Session 979 This scenario illustrates the SDP negotiated to setup a data-only 980 session based on the SCTP Data Channel, thus enabling use-cases such 981 as file-transfer, real-time game control for example. 983 2-Way DataChannel Session 985 Alice Bob 986 | | 987 | | 988 | | 989 | Offer(DataChannel) | 990 |-------------------------------->| 991 | | 992 | | 993 | Answer(DataChannel) | 994 |<--------------------------------| 995 | | 996 | | 997 | Two-way SCTP based DataChannel | 998 |.................................| 999 | | 1000 | | 1001 +-----------------------------------+-------------------------------+ 1002 | Offer SDP Contents | RFC#/Notes | 1003 +-----------------------------------+-------------------------------+ 1004 | v=0 | [RFC4566] | 1005 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1006 | | Information | 1007 | s=- | [RFC4566] | 1008 | t=0 0 | [RFC4566] | 1009 | a=group:BUNDLE data | [I-D.ietf-mmusic-sdp-bundle-n | 1010 | | egotiation] | 1011 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1012 | ****** Application m=line | ***************************** | 1013 | ********* | | 1014 | m=application 54609 UDP/DTLS/SCTP | [I-D.ietf-rtcweb-data-channel | 1015 | webrtc-datachannel | ] | 1016 | c=IN IP4 203.0.113.141 | [RFC4566] | 1017 | a=mid:data | [RFC5888] | 1018 | a=sendrecv | [RFC3264] - Alice can send | 1019 | | and recv non-media data | 1020 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 1021 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 1022 | a=setup:actpass | [RFC4145] - Alice can perform | 1023 | | DTLS before Answer arrives | 1024 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1025 | a=ice-ufrag:074c6550 | [RFC5245] - Session Level ICE | 1026 | | parameter | 1027 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] - Session Level ICE | 1028 | 74af08a068 | parameter | 1029 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] - Session DTLS | 1030 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | Fingerprint for SRTP | 1031 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1032 | 9:26:33:E8:70:88:A2 | | 1033 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 1034 | 192.0.2.4 61665 typ host | | 1035 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 1036 | 203.0.113.141 54609 typ srflx | | 1037 | raddr 192.0.2.4 rport 61665 | | 1038 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1039 +-----------------------------------+-------------------------------+ 1041 Table 7: 5.2.3 SDP Offer 1043 +-----------------------------------+-------------------------------+ 1044 | Answer SDP Contents | RFC#/Notes | 1045 +-----------------------------------+-------------------------------+ 1046 | v=0 | [RFC4566] | 1047 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1048 | | Information | 1049 | s=- | [RFC4566] | 1050 | t=0 0 | [RFC4566] | 1051 | a=group:BUNDLE data | [I-D.ietf-mmusic-sdp-bundle-n | 1052 | | egotiation] | 1053 | ****** Application m=line | ***************************** | 1054 | ********* | | 1055 | m=application 49203 UDP/DTLS/SCTP | [I-D.ietf-mmusic-sctp-sdp] | 1056 | webrtc-datachannel | | 1057 | c=IN IP4 203.0.113.77 | [RFC4566] | 1058 | a=mid:data | [RFC5888] | 1059 | a=sendrecv | [RFC3264] - Bob can send and | 1060 | | recv non-media data | 1061 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 1062 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 1063 | a=setup:active | [RFC4145] - Bob carries out | 1064 | | DTLS Handshake in parallel | 1065 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1066 | a=ice-ufrag:c300d85b | [RFC5245] - Session Level ICE | 1067 | | username frag | 1068 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] - Session Level ICE | 1069 | efbabd9a2 | password | 1070 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] - Session DTLS | 1071 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | Fingerprint for SRTP | 1072 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1073 | 1:58:D0:A1:2C:19:08 | | 1074 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 1075 | 198.51.100.7 51556 typ host | | 1076 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 1077 | 203.0.113.77 49203 typ srflx | | 1078 | raddr 198.51.100.7 rport 51556 | | 1079 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1080 +-----------------------------------+-------------------------------+ 1082 Table 8: 5.2.3 SDP Answer 1084 5.2.4. Audio Call On Hold 1086 Alice calls Bob, but when Bob answers he places Alice on hold by 1087 setting the SDP direction attribute to a=inactive in the Answer. 1089 Audio On Hold 1091 Alice Bob 1092 | | 1093 | | 1094 | Offer(Audio:Opus) | 1095 |-------------------------------->| 1096 | | 1097 | | 1098 | Answer(Audio:Opus,a=inactive) | 1099 |<--------------------------------| 1100 | | 1101 | | 1102 | One-way Opus Audio | 1103 |.................................| 1104 | | 1105 | 1107 +-----------------------------------+-------------------------------+ 1108 | Offer SDP Contents | RFC#/Notes | 1109 +-----------------------------------+-------------------------------+ 1110 | v=0 | [RFC4566] | 1111 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1112 | | Information | 1113 | s=- | [RFC4566] | 1114 | t=0 0 | [RFC4566] | 1115 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 1116 | | egotiation] | 1117 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1118 | ****** Audio m=line ********* | ***************************** | 1119 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1120 | 109 | | 1121 | c=IN IP4 203.0.113.141 | [RFC4566] | 1122 | a=mid:audio | [RFC5888] | 1123 | a=msid:ma ta | Identifies RTCMediaStream ID | 1124 | | (ma) and RTCMediaStreamTrack | 1125 | | ID (ta) | 1126 | a=sendrecv | [RFC3264] - Alice can send | 1127 | | and recv audio | 1128 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Opus Codec 48khz, | 1129 | | 2 channels | 1130 | a=maxptime:120 | [RFC4566] | 1131 | a=ice-ufrag:074c6550 | [RFC5245] - ICE user | 1132 | | fragment | 1133 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] - ICE password | 1134 | 74af08a068 | | 1135 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] - DTLS Fingerprint | 1136 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | for SRTP | 1137 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1138 | 9:26:33:E8:70:88:A2 | | 1139 | a=setup:actpass | [RFC4145] - Alice can perform | 1140 | | DTLS before Answer arrives | 1141 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1142 | a=rtcp-mux | [RFC5761] - Alice can perform | 1143 | | RTP/RTCP Muxing | 1144 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1145 | | e] | 1146 | a=rtcp-rsize | [RFC5506] | 1147 | a=rtcp-fb:109 nack | [RFC5104] - Indicates NACK | 1148 | | RTCP feedback support | 1149 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1150 | hdrext:ssrc-audio-level | | 1151 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1152 | hdrext:sdes:mid | egotiation] | 1153 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 1154 | 192.0.2.4 61665 typ host | | 1155 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1156 | 203.0.113.141 54609 typ srflx | | 1157 | raddr 192.0.2.4 rport 61665 | | 1158 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1159 +-----------------------------------+-------------------------------+ 1161 Table 9: 5.2.4 SDP Offer 1163 +-----------------------------------+-------------------------------+ 1164 | Answer SDP Contents | RFC#/Notes | 1165 +-----------------------------------+-------------------------------+ 1166 | v=0 | [RFC4566] | 1167 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1168 | | Information | 1169 | s=- | [RFC4566] | 1170 | t=0 0 | [RFC4566] | 1171 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 1172 | | egotiation] | 1173 | ****** Audio m=line ********* | ***************************** | 1174 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1175 | 109 | | 1176 | c=IN IP4 203.0.113.77 | [RFC4566] | 1177 | a=mid:audio | [RFC5888] | 1178 | a=msid:ma ta | Identifies RTCMediaStream ID | 1179 | | (ma) and RTCMediaStreamTrack | 1180 | | ID (ta) | 1181 | a=inactive | [RFC3264] - Bob puts call On | 1182 | | Hold | 1183 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Bob accepts Opus | 1184 | | Codec | 1185 | a=maxptime:120 | [RFC4566] | 1186 | a=ice-ufrag:c300d85b | [RFC5245] - ICE username frag | 1187 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] - ICE password | 1188 | efbabd9a2 | | 1189 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] - DTLS Fingerprint | 1190 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | for SRTP | 1191 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1192 | 1:58:D0:A1:2C:19:08 | | 1193 | a=setup:active | [RFC4145] - Bob carries out | 1194 | | DTLS Handshake in parallel | 1195 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1196 | a=rtcp-mux | [RFC5761] - Bob can perform | 1197 | | RTP/RTCP Muxing | 1198 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1199 | | e] | 1200 | a=rtcp-rsize | [RFC5506] | 1201 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1202 | hdrext:ssrc-audio-level | | 1203 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1204 | hdrext:sdes:mid | egotiation] | 1205 | a=candidate:0 1 UDP 2113667327 | [RFC5245] - Host candidate | 1206 | 198.51.100.7 51556 typ host | | 1207 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - Server Reflexive | 1208 | 203.0.113.141 49203 typ srflx | candidate | 1209 | raddr 198.51.100.7 rport 51556 | | 1210 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1211 +-----------------------------------+-------------------------------+ 1213 Table 10: 5.2.4 SDP Answer 1215 5.2.5. Audio with DTMF Session 1217 In this example, Alice wishes to establish two separate audio 1218 streams, one for normal audio and the other for telephone-events. 1219 Alice offers first audio stream with three codecs and the other with 1220 [RFC4733] tones (for DTMF). Bob accepts both the audio streams by 1221 choosing Opus as the audio codec and telephone-event for the other 1222 stream. 1224 Audio Session with DTMF 1226 Alice Bob 1227 | | 1228 | | 1229 | | 1230 | Offer(Audio:Opus,PCMU,PCMA Audio:telephone-event)| 1231 |-------------------------------------------------->| 1232 | | 1233 | | 1234 | Answer(Audio:Opus, Audio:telephone-event) | 1235 |<--------------------------------------------------| 1236 | | 1237 | | 1238 | Opus audio stream and telephone-event stream | 1239 |...................................................| 1240 | | 1242 +-----------------------------------+-------------------------------+ 1243 | Offer SDP Contents | RFC#/Notes | 1244 +-----------------------------------+-------------------------------+ 1245 | v=0 | [RFC4566] | 1246 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1247 | | Information | 1248 | s=- | [RFC4566] | 1249 | t=0 0 | [RFC4566] | 1250 | a=group:BUNDLE audio dtmf | [I-D.ietf-mmusic-sdp-bundle-n | 1251 | | egotiation] | 1252 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1253 | ****** Audio m=line ********* | ***************************** | 1254 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1255 | 109 0 8 | | 1256 | c=IN IP4 203.0.113.141 | [RFC4566] | 1257 | a=mid:audio | [RFC5888] | 1258 | a=msid:ma ta | Identifies RTCMediaStream ID | 1259 | | (ma) and RTCMediaStreamTrack | 1260 | | ID (ta) | 1261 | a=sendrecv | [RFC3264] - Alice can send | 1262 | | and recv audio | 1263 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Opus Codec 48khz, | 1264 | | 2 channels | 1265 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 1266 | a=rtpmap:8 PCMA/8000 | [RFC3551] PCMA Audio Codec | 1267 | a=maxptime:120 | [RFC4566] | 1268 | a=ice-ufrag:074c6550 | [RFC5245] - ICE user | 1269 | | fragment | 1270 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] - ICE password | 1271 | 74af08a068 | parameter | 1272 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] - DTLS Fingerprint | 1273 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | for SRTP | 1274 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1275 | 9:26:33:E8:70:88:A2 | | 1276 | a=setup:actpass | [RFC4145] - Alice can perform | 1277 | | DTLS before Answer arrives | 1278 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1279 | a=rtcp-mux | [RFC5761] - Alice can perform | 1280 | | RTP/RTCP Muxing | 1281 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1282 | | e] | 1283 | a=rtcp-rsize | [RFC5506] | 1284 | a=rtcp-fb:109 nack | [RFC5104] - Indicates NACK | 1285 | | RTCP feedback support | 1286 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1287 | hdrext:ssrc-audio-level | | 1288 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1289 | hdrext:sdes:mid | egotiation] | 1290 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1291 | 192.0.2.4 61665 typ host | | 1292 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1293 | 203.0.113.141 54609 typ srflx | | 1294 | raddr 192.0.2.4 rport 61665 | | 1295 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1296 | ****** DTMF m=line ********* | ***************************** | 1297 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1298 | 126 | | 1299 | c=IN IP4 203.0.113.141 | [RFC4566] | 1300 | a=mid:dtmf | [RFC5888] | 1301 | a=msid:ma tb | Identifies RTCMediaStream ID | 1302 | | (ma) and RTCMediaStreamTrack | 1303 | | ID (tb) | 1304 | a=sendonly | [RFC3264] - Alice can send | 1305 | | DTMF Events | 1306 | a=rtpmap:126 telephone-event/8000 | [RFC4733] | 1307 | a=rtcp-fb:109 nack | [RFC5104] - Indicates NACK | 1308 | | RTCP feedback support | 1309 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1310 | hdrext:sdes:mid | egotiation] | 1311 +-----------------------------------+-------------------------------+ 1313 Table 11: 5.2.5 SDP Offer 1315 +-----------------------------------+-------------------------------+ 1316 | Answer SDP Contents | RFC#/Notes | 1317 +-----------------------------------+-------------------------------+ 1318 | v=0 | [RFC4566] | 1319 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1320 | | Information | 1321 | s=- | [RFC4566] | 1322 | t=0 0 | [RFC4566] | 1323 | a=group:BUNDLE audio dtmf | [I-D.ietf-mmusic-sdp-bundle-n | 1324 | | egotiation] | 1325 | ****** Audio m=line ********* | ***************************** | 1326 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1327 | 109 | | 1328 | c=IN IP4 203.0.113.77 | [RFC4566] | 1329 | a=mid:audio | [RFC5888] | 1330 | a=msid:ma ta | Identifies RTCMediaStream ID | 1331 | | (ma) and RTCMediaStreamTrack | 1332 | | ID (ta) | 1333 | a=sendrecv | [RFC3264] - Bob can send and | 1334 | | receive Opus audio | 1335 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Bob accepts Opus | 1336 | | Codec | 1337 | a=maxptime:120 | [RFC4566] | 1338 | a=ice-ufrag:c300d85b | [RFC5245] - ICE username | 1339 | | frag | 1340 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] - ICE password | 1341 | efbabd9a2 | | 1342 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] - Fingerprint for | 1343 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | SRTP | 1344 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1345 | 1:58:D0:A1:2C:19:08 | | 1346 | a=setup:active | [RFC4145] - Bob carries out | 1347 | | DTLS Handshake in parallel | 1348 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1349 | a=rtcp-mux | [RFC5761] - Bob can perform | 1350 | | RTP/RTCP Muxing on port 49203 | 1351 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1352 | | e] | 1353 | a=rtcp-rsize | [RFC5506] - Alice intends to | 1354 | | use reduced size RTCP for | 1355 | | this session | 1356 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1357 | hdrext:ssrc-audio-level | | 1358 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1359 | hdrext:sdes:mid | egotiation] | 1360 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1361 | 198.51.100.7 51556 typ host | | 1362 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1363 | 203.0.113.77 49203 typ srflx | | 1364 | raddr 198.51.100.7 rport 51556 | | 1365 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1366 | ****** DTMF m=line ********* | ***************************** | 1367 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1368 | 126 | | 1369 | c=IN IP4 203.0.113.77 | [RFC4566] | 1370 | a=mid:dtmf | [RFC5888] | 1371 | a=msid:ma tb | Identifies RTCMediaStream ID | 1372 | | (ma) and RTCMediaStreamTrack | 1373 | | ID (tb) | 1374 | a=recvonly | [RFC3264] - Alice can receive | 1375 | | DTMF events | 1376 | a=rtpmap:126 telephone-event/8000 | [RFC4733] | 1377 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1378 | hdrext:sdes:mid | egotiation] | 1379 +-----------------------------------+-------------------------------+ 1381 Table 12: 5.2.5 SDP Answer 1383 5.2.6. One Way Audio/Video Session - Document Camera 1385 In this scenario Alice and Bob engage in a 1 way audio and video 1386 session with Bob receiving Alice's audio and her presentation slides 1387 as video stream. 1389 One Way Audio & Video Session - Document Camera 1391 Alice Bob 1392 | | 1393 | | 1394 | | 1395 | Alice Offers sendonly audio and video streams. | 1396 | The video stream corresponds to her presentation | 1397 | | 1398 | Offer(Audio:Opus, Video: VP8) | 1399 |----------------------------------------------------->| 1400 | | 1401 | | 1402 | (Audio:Opus, Video: VP8) | 1403 |<-----------------------------------------------------| 1404 | | 1405 | | 1406 | One-way Opus Audio, VP8 Video | 1407 |......................................................| 1408 | Bob can hear Alice and see her presentation slides.| 1409 | | 1410 | | 1412 +-----------------------------------+-------------------------------+ 1413 | Offer SDP Contents | RFC#/Notes | 1414 +-----------------------------------+-------------------------------+ 1415 | v=0 | [RFC4566] | 1416 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 1417 | s=- | [RFC4566] | 1418 | t=0 0 | [RFC4566] | 1419 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 1420 | | egotiation] | 1421 | a=group:LS audio video | [RFC5888] | 1422 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1423 | ****** Audio m=line ********* | ***************************** | 1424 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1425 | 109 | | 1426 | c=IN IP4 203.0.113.141 | [RFC4566] | 1427 | a=mid:audio | [RFC5888] | 1428 | a=msid:ma ta | Identifies RTCMediaStream ID | 1429 | | (ma) and RTCMediaStreamTrack | 1430 | | ID (ta) | 1431 | a=sendonly | [RFC3264] - Send only audio | 1432 | | stream | 1433 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1434 | a=maxptime:120 | [RFC4566] | 1435 | a=ice-ufrag:074c6550 | [RFC5245] | 1436 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 1437 | 74af08a068 | | 1438 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 1439 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 1440 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1441 | 9:26:33:E8:70:88:A2 | | 1442 | a=setup:actpass | [RFC4145] - Alice can perform | 1443 | | DTLS before Answer arrives | 1444 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1445 | a=rtcp-mux | [RFC5761] | 1446 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1447 | | e] | 1448 | a=rtcp-rsize | [RFC5506] | 1449 | a=rtcp-fb:109 nack | [RFC5104] | 1450 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1451 | hdrext:ssrc-audio-level | | 1452 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1453 | hdrext:sdes:mid | egotiation] | 1454 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1455 | 203.0.113.141 54609 typ host | | 1456 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1457 | ****** Video m=line ********* | ***************************** | 1458 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1459 | 120 | | 1460 | c=IN IP4 203.0.113.141 | [RFC4566] | 1461 | a=mid:video | [RFC5888] | 1462 | a=msid:ma tb | Identifies RTCMediaStream ID | 1463 | | (ma) and RTCMediaStreamTrack | 1464 | | ID (tb) | 1465 | a=sendonly | [RFC3264] - Send only video | 1466 | | stream | 1467 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1468 | a=content:slides | [RFC4796] - Alice's | 1469 | | presentation video stream | 1470 | a=rtcp-fb:120 nack | [RFC5104] | 1471 | a=rtcp-fb:120 nack pli | [RFC5104] | 1472 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1473 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1474 | hdrext:sdes:mid | egotiation] | 1475 +-----------------------------------+-------------------------------+ 1477 Table 13: 5.2.6 SDP Offer 1479 +-----------------------------------+-------------------------------+ 1480 | Answer SDP Contents | RFC#/Notes | 1481 +-----------------------------------+-------------------------------+ 1482 | v=0 | [RFC4566] | 1483 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] | 1484 | s=- | [RFC4566] | 1485 | t=0 0 | [RFC4566] | 1486 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 1487 | | egotiation] | 1488 | a=group:LS audio video | [RFC5888] | 1489 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1490 | ****** Audio m=line ********* | ***************************** | 1491 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1492 | 109 | | 1493 | c=IN IP4 203.0.113.77 | [RFC4566] | 1494 | a=mid:audio | [RFC5888] | 1495 | a=msid:ma ta | Identifies RTCMediaStream ID | 1496 | | (ma) and RTCMediaStreamTrack | 1497 | | ID (ta) | 1498 | a=recvonly | [RFC3264] - Receive only | 1499 | | audio stream | 1500 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1501 | a=maxptime:120 | [RFC4566] | 1502 | a=ice-ufrag:c300d85b | [RFC5245] | 1503 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 1504 | efbabd9a2 | | 1505 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 1506 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 1507 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1508 | 1:58:D0:A1:2C:19:08 | | 1509 | a=setup:active | [RFC4145] - Bob carries out | 1510 | | DTLS Handshake in parallel | 1511 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1512 | a=rtcp-mux | [RFC5761] | 1513 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1514 | | e] | 1515 | a=rtcp-fb:109 nack | [RFC5104] | 1516 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1517 | hdrext:ssrc-audio-level | | 1518 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1519 | hdrext:sdes:mid | egotiation] | 1520 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 1521 | 203.0.113.77 49203 typ host | | 1522 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1523 | ****** Video m=line ********* | ***************************** | 1524 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1525 | 120 | | 1526 | c=IN IP4 203.0.113.77 | [RFC4566] | 1527 | a=mid:video | [RFC5888] | 1528 | a=msid:ma tb | Identifies RTCMediaStream ID | 1529 | | (ma) and RTCMediaStreamTrack | 1530 | | ID (tb) | 1531 | a=recvonly | [RFC3264] | 1532 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1533 | a=content:slides | [RFC4796] - presentation | 1534 | | stream | 1535 | a=rtcp-fb:120 nack | [RFC5104] | 1536 | a=rtcp-fb:120 nack pli | [RFC5104] | 1537 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1538 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1539 | hdrext:sdes:mid | egotiation] | 1540 +-----------------------------------+-------------------------------+ 1542 Table 14: 5.2.6 SDP Answer 1544 5.2.7. Audio, Video Session with BUNDLE Support Unknown 1546 In this example, since Alice is unsure of the Bob's support of the 1547 BUNDLE framework, following steps are performed in order to negotiate 1548 and setup a BUNDLE Address for the session 1550 o An SDP Offer, in which the Alice assigns unique addresses to each 1551 "m=" line in the BUNDLE group, and requests the Answerer to select 1552 the Offerer's BUNDLE address. 1554 o An SDP Answer, in which the Bob indicates its support for BUNDLE, 1555 selects the offerer's BUNDLE address, selects its own BUNDLE 1556 address and associates it with each BUNDLED m=line within the 1557 BUNDLE group. 1559 Once the Offer/Answer exchange completes, both Alice and Bob each end 1560 up using single RTP Session for both the Media Streams. 1562 Two-Way Secure Audio,Video with BUNDLE support unknown 1564 Alice Bob 1565 | | 1566 | | 1567 | Alice offers BUNDLE support with unique address | 1568 | for the audio and video m-line | 1569 | | 1570 | | 1571 | Offer(Audio:Opus Video:VP8) | 1572 |----------------------------------------------------->| 1573 | |Bob 1574 | |supports 1575 | |BUNDLE, 1576 | |Uses 1577 | |identical 1578 | |address 1579 | Answer(Audio:Opus Video:VP8) | 1580 |<-----------------------------------------------------| 1581 | | 1582 | 2 Way Call with Audio and Video Multiplexed | 1583 |......................................................| 1584 | | 1586 +-----------------------------------+-------------------------------+ 1587 | Offer SDP Contents | RFC#/Notes | 1588 +-----------------------------------+-------------------------------+ 1589 | v=0 | [RFC4566] | 1590 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 1591 | s=- | [RFC4566] | 1592 | t=0 0 | [RFC4566] | 1593 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 1594 | | egotiation] Alice supports | 1595 | | grouping of m=lines under | 1596 | | BUNDLE semantics | 1597 | a=group:LS audio video | [RFC5888] | 1598 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1599 | ****** Audio m=line ********* | ***************************** | 1600 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1601 | 109 | | 1602 | c=IN IP4 203.0.113.141 | [RFC4566] | 1603 | a=mid:audio | [RFC5888] Audio m=line part | 1604 | | of BUNDLE group with a unique | 1605 | | port number | 1606 | a=msid:ma ta | Identifies RTCMediaStream ID | 1607 | | (ma) and RTCMediaStreamTrack | 1608 | | ID (ta) | 1609 | a=sendrecv | [RFC3264] | 1610 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1611 | a=maxptime:120 | [RFC4566] | 1612 | a=ice-ufrag:074c6550 | [RFC5245] | 1613 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 1614 | 74af08a068 | | 1615 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 1616 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 1617 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1618 | 9:26:33:E8:70:88:A2 | | 1619 | a=setup:actpass | [RFC4145] - Alice can perform | 1620 | | DTLS before Answer arrives | 1621 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1622 | a=rtcp-mux | [RFC5761] | 1623 | a=rtcp:54610 IN IP4 203.0.113.141 | [RFC3605] - RTCP port | 1624 | | different from RTP Port | 1625 | a=rtcp-rsize | [RFC5506] | 1626 | a=rtcp-fb:109 nack | [RFC5104] | 1627 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1628 | hdrext:ssrc-audio-level | | 1629 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1630 | hdrext:sdes:mid | egotiation] | 1631 | a=candidate:0 1 UDP 2122194687 | [RFC5245] - RTP host | 1632 | 192.0.2.4 61665 typ host | candidate | 1633 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - RTP Server | 1634 | 203.0.113.141 54609 typ srflx | Reflexive candidate | 1635 | raddr 192.0.2.4 rport 61665 | | 1636 | a=candidate:0 2 UDP 2122194687 | [RFC5245] - RTCP host | 1637 | 192.0.2.4 61666 typ host | candidate | 1638 | a=candidate:1 2 UDP 1685987071 | [RFC5245] - RTCP Server | 1639 | 203.0.113.141 54610 typ srflx | Reflexive candidate | 1640 | raddr 192.0.2.4 rport 61666 | | 1641 | ****** Video m=line ********* | ***************************** | 1642 | m=video 62537 UDP/TLS/RTP/SAVPF | [RFC4566] | 1643 | 120 | | 1644 | c=IN IP4 203.0.113.141 | [RFC4566] | 1645 | a=mid:video | [RFC5888] Video m=line part | 1646 | | of the Bundle group with a | 1647 | | unique port number | 1648 | a=msid:ma tb | Identifies RTCMediaStream ID | 1649 | | (ma) and RTCMediaStreamTrack | 1650 | | ID (tb) | 1651 | a=sendrecv | [RFC3264] | 1652 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1653 | a=ice-ufrag:6550074c | [RFC5245] | 1654 | a=ice-pwd:74af08a068a28a397a4c3f3 | [RFC5245] | 1655 | 1747d1ee34 | | 1656 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 1657 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 1658 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1659 | 9:26:33:E8:70:88:A2 | | 1660 | a=setup:actpass | [RFC4145] - Alice can perform | 1661 | | DTLS before Answer arrives | 1662 | a=dtls-id:2 | [I-D.ietf-mmusic-dtls-sdp] | 1663 | a=rtcp-mux | [RFC5761] | 1664 | a=rtcp:62538 IN IP4 203.0.113.141 | [RFC3605] | 1665 | a=rtcp-rsize | [RFC5506] | 1666 | a=rtcp-fb:120 nack | [RFC5104] | 1667 | a=rtcp-fb:120 nack pli | [RFC5104] | 1668 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1669 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1670 | hdrext:sdes:mid | egotiation] | 1671 | a=candidate:0 1 UDP 2122194687 | [RFC5245] - RTP Host | 1672 | 192.0.2.4 61886 typ host | candidate | 1673 | a=candidate:1 1 UDP 1685987071 | [RFC5245] - RTP Server | 1674 | 203.0.113.141 62537 typ srflx | Reflexive candidate | 1675 | raddr 192.0.2.4 rport 61886 | | 1676 | a=candidate:0 2 2122194687 | [RFC5245] - RTCP host | 1677 | 192.0.2.4 61888 typ host | candidate | 1678 | a=candidate:1 2 UDP 1685987071 | [RFC5245] - RTCP Server | 1679 | 203.0.113.141 62538 typ srflx | Reflexive candidate | 1680 | raddr 192.0.2.4 rport 61888 | | 1681 +-----------------------------------+-------------------------------+ 1683 Table 15: 5.2.7 SDP Offer w/BUNDLE 1685 +-----------------------------------+-------------------------------+ 1686 | Answer SDP Contents | RFC#/Notes | 1687 +-----------------------------------+-------------------------------+ 1688 | v=0 | [RFC4566] | 1689 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] | 1690 | s=- | [RFC4566] | 1691 | t=0 0 | [RFC4566] | 1692 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 1693 | | egotiation] Bob supports | 1694 | | BUNDLE semantics. | 1695 | a=group:LS audio video | [RFC5888] | 1696 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1697 | ****** Audio m=line ********* | ***************************** | 1698 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1699 | 109 | | 1700 | c=IN IP4 203.0.113.77 | [RFC4566] | 1701 | a=mid:audio | [RFC5888] Audio m=line part | 1702 | | of the BUNDLE group | 1703 | a=msid:ma ta | Identifies RTCMediaStream ID | 1704 | | (ma) and RTCMediaStreamTrack | 1705 | | ID (ta) | 1706 | a=sendrecv | [RFC3264] | 1707 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1708 | a=maxptime:120 | [RFC4566] | 1709 | a=ice-ufrag:c300d85b | [RFC5245] | 1710 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 1711 | efbabd9a2 | | 1712 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 1713 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 1714 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1715 | 1:58:D0:A1:2C:19:08 | | 1716 | a=setup:active | [RFC4145] - Bob carries out | 1717 | | DTLS Handshake in parallel | 1718 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1719 | a=rtcp-mux | [RFC5761] | 1720 | a=rtcp-rsize | [RFC5506] | 1721 | a=rtcp-fb:109 nack | [RFC5104] | 1722 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1723 | hdrext:ssrc-audio-level | | 1724 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1725 | hdrext:sdes:mid | egotiation] | 1726 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1727 | 198.51.100.7 49203 typ host | | 1728 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1729 | 203.0.113.77 51556 typ srflx | | 1730 | raddr 198.51.100.7 rport 49203 | | 1731 | ****** Video m=line ********* | ***************************** | 1732 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1733 | 120 | | 1734 | c=IN IP4 203.0.113.77 | [RFC4566] | 1735 | a=mid:video | [RFC5888] Video m=line part | 1736 | | of the BUNDLE group with the | 1737 | | port from audio line repeated | 1738 | a=msid:ma tb | Identifies RTCMediaStream ID | 1739 | | (ma) and RTCMediaStreamTrack | 1740 | | ID (tb) | 1741 | a=sendrecv | [RFC3264] | 1742 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1743 | a=rtcp-fb:120 nack | [RFC5104] | 1744 | a=rtcp-fb:120 nack pli | [RFC5104] | 1745 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1746 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1747 | hdrext:sdes:mid | egotiation] | 1748 +-----------------------------------+-------------------------------+ 1750 Table 16: 5.2.7 SDP Answer w/BUNDLE 1752 5.2.8. Audio, Video and Data Session 1754 This example shows SDP for negotiating a session with Audio, Video 1755 and data streams between Alice and Bob with BUNDLE support known. 1757 Audio,Video,Data with BUNDLE support known 1759 Alice Bob 1760 | | 1761 | | 1762 | Alice indicates BUNDLE support with | 1763 | identical address across all the m=lines | 1764 | | 1765 | | 1766 | Offer(Audio:Opus Video:VP8 Data) | 1767 |------------------------------------------->| 1768 | |Bob does 1769 | |the same 1770 | Answer(Audio:Opus,Video:VP8 Data) | 1771 |<-------------------------------------------| 1772 | | 1773 | | 1774 | | 1775 | Two-way Audio,Video, Data multiplexed | 1776 |............................................| 1777 | | 1778 | | 1780 +-----------------------------------+-------------------------------+ 1781 | Offer SDP Contents | RFC#/Notes | 1782 +-----------------------------------+-------------------------------+ 1783 | v=0 | [RFC4566] | 1784 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 1785 | s=- | [RFC4566] | 1786 | t=0 0 | [RFC4566] | 1787 | a=group:BUNDLE audio video data | [I-D.ietf-mmusic-sdp-bundle-n | 1788 | | egotiation] | 1789 | a=group:LS audio video | [RFC5888] | 1790 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1791 | ****** Audio m=line ********* | ***************************** | 1792 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1793 | 109 | | 1794 | c=IN IP4 203.0.113.141 | [RFC4566] | 1795 | a=msid:ma ta | Identifies RTCMediaStream ID | 1796 | | (ma) and RTCMediaStreamTrack | 1797 | | ID (ta) | 1798 | a=mid:audio | [RFC5888] | 1799 | a=sendrecv | [RFC3264] | 1800 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1801 | a=maxptime:120 | [RFC4566] | 1802 | a=ice-ufrag:074c6550 | [RFC5245] | 1803 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 1804 | 74af08a068 | | 1805 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 1806 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 1807 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 1808 | 9:26:33:E8:70:88:A2 | | 1809 | a=setup:actpass | [RFC4145] | 1810 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1811 | a=rtcp-mux | [RFC5761] | 1812 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1813 | | e] | 1814 | a=rtcp-rsize | [RFC5506] | 1815 | a=rtcp-fb:109 nack | [RFC5104] | 1816 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1817 | hdrext:ssrc-audio-level | | 1818 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1819 | hdrext:sdes:mid | egotiation] | 1820 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1821 | 192.0.2.4 61665 typ host | | 1822 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1823 | 203.0.113.141 54609 typ srflx | | 1824 | raddr 192.0.2.4 rport 61665 | | 1825 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1826 | ****** Video m=line ********* | ***************************** | 1827 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1828 | 120 | | 1829 | c=IN IP4 203.0.113.141 | [RFC4566] | 1830 | a=mid:video | [RFC5888] | 1831 | a=msid:ma tb | Identifies RTCMediaStream ID | 1832 | | (ma) and RTCMediaStreamTrack | 1833 | | ID (tb) | 1834 | a=sendrecv | [RFC3264] | 1835 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1836 | a=rtcp-fb:120 nack | [RFC5104] | 1837 | a=rtcp-fb:120 nack pli | [RFC5104] | 1838 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1839 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1840 | hdrext:sdes:mid | egotiation] | 1841 | ****** Application m=line | ***************************** | 1842 | ********* | | 1843 | m=application 54609 UDP/DTLS/SCTP | [I-D.ietf-rtcweb-data-channel | 1844 | webrtc-datachannel | ] | 1845 | c=IN IP4 203.0.113.141 | [RFC4566] | 1846 | a=mid:data | [RFC5888] | 1847 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 1848 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 1849 | a=sendrecv | [RFC3264] | 1850 +-----------------------------------+-------------------------------+ 1852 Table 17: 5.2.8 SDP Offer 1854 +-----------------------------------+-------------------------------+ 1855 | Answer SDP Contents | RFC#/Notes | 1856 +-----------------------------------+-------------------------------+ 1857 | v=0 | [RFC4566] | 1858 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 1859 | | Information | 1860 | s=- | [RFC4566] | 1861 | t=0 0 | [RFC4566] | 1862 | a=group:BUNDLE audio video data | [I-D.ietf-mmusic-sdp-bundle-n | 1863 | | egotiation] | 1864 | a=group:LS audio video | [RFC5888] | 1865 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1866 | ****** Audio m=line ********* | ***************************** | 1867 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1868 | 109 | | 1869 | c=IN IP4 203.0.113.77 | [RFC4566] | 1870 | a=msid:ma ta | Identifies RTCMediaStream ID | 1871 | | (ma) and RTCMediaStreamTrack | 1872 | | ID (ta) | 1873 | a=mid:audio | [RFC5888] | 1874 | a=sendrecv | [RFC3264] | 1875 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1876 | a=maxptime:120 | [RFC4566] | 1877 | a=ice-ufrag:c300d85b | [RFC5245] | 1878 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 1879 | efbabd9a2 | | 1880 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 1881 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 1882 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 1883 | 1:58:D0:A1:2C:19:08 | | 1884 | a=setup:active | [RFC4145] | 1885 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 1886 | a=rtcp-mux | [RFC5761] | 1887 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 1888 | | e] | 1889 | a=rtcp-rsize | [RFC5506] | 1890 | a=rtcp-fb:109 nack | [RFC5104] | 1891 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 1892 | hdrext:ssrc-audio-level | | 1893 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1894 | hdrext:sdes:mid | egotiation] | 1895 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 1896 | 198.51.100.7 51556 typ host | | 1897 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 1898 | 203.0.113.77 49203 typ srflx | | 1899 | raddr 198.51.100.7 rport 51556 | | 1900 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 1901 | ****** Video m=line ********* | ***************************** | 1902 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 1903 | 120 | | 1904 | c=IN IP4 203.0.113.77 | [RFC4566] | 1905 | a=mid:video | [RFC5888] | 1906 | a=msid:ma tb | Identifies RTCMediaStream ID | 1907 | | (ma) and RTCMediaStreamTrack | 1908 | | ID (tb) | 1909 | a=sendrecv | [RFC3264] | 1910 | a=rtpmap:120 VP8/90000 | [RFC7741] | 1911 | a=rtcp-fb:120 nack | [RFC5104] | 1912 | a=rtcp-fb:120 nack pli | [RFC5104] | 1913 | a=rtcp-fb:120 ccm fir | [RFC5104] | 1914 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 1915 | hdrext:sdes:mid | egotiation] | 1916 | ****** Application m=line | ***************************** | 1917 | ********* | | 1918 | m=application 49203 UDP/DTLS/SCTP | [I-D.ietf-mmusic-sctp-sdp] | 1919 | webrtc-datachannel | | 1920 | c=IN IP4 203.0.113.77 | [RFC4566] | 1921 | a=mid:data | [RFC5888] | 1922 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 1923 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 1924 | a=sendrecv | [RFC3264] | 1925 +-----------------------------------+-------------------------------+ 1927 Table 18: 5.2.8 SDP Answer 1929 5.2.9. Audio, Video Session with BUNDLE Unsupported 1931 This use-case illustrates SDP Offer/Answer exchange where the far-end 1932 (Bob) either doesn't support media bundling or doesn't want to group 1933 m=lines over a single 5-tuple. 1935 The same is indicated by dropping the "a=group:BUNDLE" line and 1936 BUNDLE RTP header extension in the Answer SDP. 1938 On successful Offer/Answer exchange, Alice and Bob each end up using 1939 unique 5-tuple for audio and video media streams respectively. 1941 Two-Way Secure Audio,Video with BUNDLE Unsupported 1943 Alice Bob 1944 | | 1945 | | 1946 | Alice offers BUNDLE support with unique address | 1947 | for the audio and video m-line | 1948 | | 1949 | | 1950 | Offer(Audio:Opus Video:VP8) | 1951 |----------------------------------------------------->| 1952 | |Bob 1953 | |doesn't 1954 | |support 1955 | |BUNDLE 1956 | Answer(Audio:Opus Video:VP8) | 1957 |<-----------------------------------------------------| 1958 | |Bob uses 1959 | |unique 1960 | |addresses 1961 | |across the 1962 | |m=lines 1963 | | 1964 |2Way Call with Audio and Video on different 5-tuples | 1965 |......................................................| 1966 | | 1967 | | 1969 +-----------------------------------+-------------------------------+ 1970 | Offer SDP Contents | RFC#/Notes | 1971 +-----------------------------------+-------------------------------+ 1972 | v=0 | [RFC4566] | 1973 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 1974 | s=- | [RFC4566] | 1975 | t=0 0 | [RFC4566] | 1976 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 1977 | | egotiation] Alice supports | 1978 | | grouping of m=lines under | 1979 | | BUNDLE semantics | 1980 | a=group:LS audio video | [RFC5888] | 1981 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 1982 | ****** Audio m=line ********* | ***************************** | 1983 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 1984 | 109 | | 1985 | c=IN IP4 203.0.113.141 | [RFC4566] | 1986 | a=mid:audio | [RFC5888] Audio m=line part | 1987 | | of BUNDLE group with a unique | 1988 | | port number | 1989 | a=msid:ma ta | Identifies RTCMediaStream ID | 1990 | | (ma) and RTCMediaStreamTrack | 1991 | | ID (ta) | 1992 | a=sendrecv | [RFC3264] | 1993 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 1994 | a=maxptime:120 | [RFC4566] | 1995 | a=ice-ufrag:074c6550 | [RFC5245] | 1996 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 1997 | 74af08a068 | | 1998 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 1999 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2000 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2001 | 9:26:33:E8:70:88:A2 | | 2002 | a=setup:actpass | [RFC4145] - Alice can perform | 2003 | | DTLS before Answer arrives | 2004 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2005 | a=rtcp-mux | [RFC5761] | 2006 | a=rtcp:55232 IN IP4 203.0.113.141 | [RFC3605] - RTCP port | 2007 | | different from RTP port | 2008 | a=rtcp-rsize | [RFC5506] | 2009 | a=rtcp-fb:109 nack | [RFC5104] | 2010 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2011 | hdrext:ssrc-audio-level | | 2012 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2013 | hdrext:sdes:mid | egotiation] | 2014 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 2015 | 192.0.2.4 61665 typ host | | 2016 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 2017 | 203.0.113.141 54609 typ srflx | | 2018 | raddr 192.0.2.4 rport 61665 | | 2019 | a=candidate:0 2 UDP 2122194687 | [RFC5245] | 2020 | 192.0.2.4 61666 typ host | | 2021 | a=candidate:1 2 UDP 1685987071 | [RFC5245] | 2022 | 203.0.113.141 55232 typ srflx | | 2023 | raddr 192.0.2.4 rport 61666 | | 2024 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2025 | ****** Video m=line ********* | ***************************** | 2026 | m=video 54332 UDP/TLS/RTP/SAVPF | [RFC4566] | 2027 | 120 | | 2028 | c=IN IP4 203.0.113.141 | [RFC4566] | 2029 | a=mid:video | [RFC5888] Video m=line part | 2030 | | of the BUNDLE group with a | 2031 | | unique port number | 2032 | a=msid:ma tb | Identifies RTCMediaStream ID | 2033 | | (ma) and RTCMediaStreamTrack | 2034 | | ID (tb) | 2035 | a=sendrecv | [RFC3264] | 2036 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2037 | a=ice-ufrag:7872093 | [RFC5245] | 2038 | a=ice-pwd:ee3474af08a068a28a397a4 | [RFC5245] | 2039 | c3f31747d1 | | 2040 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 2041 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2042 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2043 | 9:26:33:E8:70:88:A2 | | 2044 | a=setup:actpass | [RFC4145] - Alice can perform | 2045 | | DTLS before Answer arrives | 2046 | a=dtls-id:2 | [I-D.ietf-mmusic-dtls-sdp] | 2047 | a=rtcp-mux | [RFC5761] | 2048 | a=rtcp:60052 IN IP4 203.0.113.141 | [RFC3605] | 2049 | a=rtcp-rsize | [RFC5506] | 2050 | a=rtcp-fb:120 nack | [RFC5104] | 2051 | a=rtcp-fb:120 nack pli | [RFC5104] | 2052 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2053 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2054 | hdrext:sdes:mid | egotiation] | 2055 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 2056 | 192.0.2.4 71775 typ host | | 2057 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 2058 | 203.0.113.141 54332 typ srflx | | 2059 | raddr 192.0.2.4 rport 71775 | | 2060 | a=candidate:0 2 2122194687 | [RFC5245] | 2061 | 192.0.2.4 71776 typ host | | 2062 | a=candidate:1 2 UDP 1685987071 | [RFC5245] | 2063 | 203.0.113.141 60052 typ srflx | | 2064 | raddr 192.0.2.4 rport 71776 | | 2065 +-----------------------------------+-------------------------------+ 2067 Table 19: 5.2.9 SDP Offer w/BUNDLE 2069 +----------------------------------------+--------------------------+ 2070 | Answer SDP Contents | RFC#/Notes | 2071 +----------------------------------------+--------------------------+ 2072 | v=0 | [RFC4566] | 2073 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] | 2074 | s=- | [RFC4566] | 2075 | t=0 0 | [RFC4566] | 2076 | a=group:LS audio video | [RFC5888] | 2077 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle | 2078 | | -ice] | 2079 | ****** Audio m=line ********* | ************************ | 2080 | | ***** | 2081 | m=audio 53214 UDP/TLS/RTP/SAVPF 109 | [RFC4566] | 2082 | c=IN IP4 203.0.113.77 | [RFC4566] | 2083 | a=mid:audio | [RFC5888] | 2084 | a=msid:ma ta | Identifies | 2085 | | RTCMediaStream ID (ma) | 2086 | | and RTCMediaStreamTrack | 2087 | | ID (ta) | 2088 | a=sendrecv | [RFC3264] | 2089 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2090 | a=maxptime:120 | [RFC4566] | 2091 | a=ice-ufrag:c300d85b | [RFC5245] | 2092 | a=ice- | [RFC5245] | 2093 | pwd:de4e99bd291c325921d5d47efbabd9a2 | | 2094 | a=fingerprint:sha-256 6B:8B:F0:65:5F:7 | [RFC5245] | 2095 | 8:E2:51:3B:AC:6F:F3:3F:46:1B:35 :DC:B8 | | 2096 | :5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:1 | | 2097 | 9:08 | | 2098 | a=setup:active | [RFC4145] - Bob carries | 2099 | | out DTLS Handshake in | 2100 | | parallel | 2101 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sd | 2102 | | p] | 2103 | a=rtcp-mux | [RFC5761] | 2104 | a=rtcp-rsize | [RFC5506] | 2105 | a=rtcp-fb:109 nack | [RFC5104] | 2106 | a=extmap:1 urn:ietf:params:rtp-hdrext | [RFC6464] | 2107 | :ssrc-audio-level | | 2108 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 2109 | 198.51.100.7 51556 typ host | | 2110 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 2111 | 203.0.113.77 53214 typ srflx raddr | | 2112 | 198.51.100.7 rport 51556 | | 2113 | a=candidate:0 2 UDP 2122194687 | [RFC5245] | 2114 | 198.51.100.7 51558 typ host | | 2115 | a=candidate:1 2 UDP 1685987071 | [RFC5245] | 2116 | 203.0.113.77 60065 typ srflx raddr | | 2117 | 198.51.100.7 rport 51558 | | 2118 | ****** Video m=line ********* | ************************ | 2119 | | ***** | 2120 | m=video 58679 UDP/TLS/RTP/SAVPF 120 | [RFC4566] | 2121 | c=IN IP4 203.0.113.77 | [RFC4566] | 2122 | a=mid:video | [RFC5888] | 2123 | a=msid:ma tb | Identifies | 2124 | | RTCMediaStream ID (ma) | 2125 | | and RTCMediaStreamTrack | 2126 | | ID (tb) | 2127 | a=sendrecv | [RFC3264] | 2128 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2129 | a=ice-ufrag:85bC300 | [RFC5245] | 2130 | a=ice- | [RFC5245] | 2131 | pwd:325921d5d47efbabd9a2de4e99bd291c | | 2132 | a=fingerprint:sha-256 6B:8B:F0:65:5F:7 | [RFC5245] | 2133 | 8:E2:51:3B:AC:6F:F3:3F:46:1B:35 :DC:B8 | | 2134 | :5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:1 | | 2135 | 9:08 | | 2136 | a=setup:active | [RFC4145] - Bob carries | 2137 | | out DTLS Handshake in | 2138 | | parallel | 2139 | a=dtls-id:2 | [I-D.ietf-mmusic-dtls-sd | 2140 | | p] | 2141 | a=rtcp-mux | [RFC5761] | 2142 | a=rtcp-rsize | [RFC5506] | 2143 | a=rtcp-fb:120 nack | [RFC5104] | 2144 | a=rtcp-fb:120 nack pli | [RFC5104] | 2145 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2146 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 2147 | 198.51.100.7 61556 typ host | | 2148 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 2149 | 203.0.113.77 58679 typ srflx raddr | | 2150 | 198.51.100.7 rport 61556 | | 2151 | a=candidate:0 1 UDP 2122194687 | [RFC5245] | 2152 | 198.51.100.7 61558 typ host | | 2153 | a=candidate:1 1 UDP 1685987071 | [RFC5245] | 2154 | 203.0.113.77 56507 typ srflx raddr | | 2155 | 198.51.100.7 rport 61558 | | 2156 +----------------------------------------+--------------------------+ 2158 Table 20: 5.2.9 SDP Answer without BUNDLE 2160 5.2.10. Audio, Video BUNDLED, but Data (Not BUNDLED) 2162 This example show-cases SDP for negotiating a session with Audio, 2163 Video and data streams between Alice and Bob with data stream not 2164 being part of the BUNDLE group. This is shown by assigning unique 2165 port for data media section and not adding the "mid" identification 2166 tag to the BUNDLE group. 2168 Audio, Video, with Data (Not in BUNDLE) 2170 Alice Bob 2171 | | 2172 | | 2173 |Alice wants to multiplex audio, video but not data | 2174 | | 2175 | | 2176 | Offer(Audio:Opus Video:VP8, Data(not in BUNDLE)) | 2177 |----------------------------------------------------->| 2178 | | 2179 | | 2180 | Answer(Audio:Opus Video:VP8, Data) | 2181 |<-----------------------------------------------------| 2182 | | 2183 | | 2184 |2 Way Call with Audio, Video Multiplexed except data | 2185 |......................................................| 2186 | | 2188 +-----------------------------------+-------------------------------+ 2189 | Offer SDP Contents | RFC#/Notes | 2190 +-----------------------------------+-------------------------------+ 2191 | v=0 | [RFC4566] | 2192 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 2193 | s=- | [RFC4566] | 2194 | t=0 0 | [RFC4566] | 2195 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 2196 | | egotiation] Alice wants to | 2197 | | BUNDLE only audio and video | 2198 | | media. | 2199 | a=group:LS audio video | [RFC5888] | 2200 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2201 | ****** Audio m=line ********* | ***************************** | 2202 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2203 | 109 | | 2204 | c=IN IP4 203.0.113.141 | [RFC4566] | 2205 | a=mid:audio | [RFC5888] | 2206 | a=msid:ma ta | Identifies RTCMediaStream ID | 2207 | | (ma) and RTCMediaStreamTrack | 2208 | | ID (ta) | 2209 | a=sendrecv | [RFC3264] | 2210 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2211 | a=maxptime:120 | [RFC4566] | 2212 | a=ice-ufrag:074c6550 | [RFC5245] | 2213 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 2214 | 74af08a068 | | 2215 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 2216 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2217 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2218 | 9:26:33:E8:70:88:A2 | | 2219 | a=setup:actpass | [RFC4145] | 2220 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2221 | a=rtcp-mux | [RFC5761] | 2222 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2223 | | e] | 2224 | a=rtcp-rsize | [RFC5506] | 2225 | a=rtcp-fb:109 nack | [RFC5104] | 2226 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2227 | hdrext:ssrc-audio-level | | 2228 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2229 | hdrext:sdes:mid | egotiation] | 2230 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2231 | 192.0.2.4 54609 typ host | | 2232 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2233 | ****** Video m=line ********* | ***************************** | 2234 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2235 | 120 | | 2236 | c=IN IP4 203.0.113.141 | [RFC4566] | 2237 | a=mid:video | [RFC5888] | 2238 | a=msid:ma tb | Identifies RTCMediaStream ID | 2239 | | (ma) and RTCMediaStreamTrack | 2240 | | ID (tb) | 2241 | a=sendrecv | [RFC3264] | 2242 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2243 | a=rtcp-fb:120 nack | [RFC5104] | 2244 | a=rtcp-fb:120 nack pli | [RFC5104] | 2245 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2246 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2247 | hdrext:sdes:mid | egotiation] | 2248 | ****** Application m=line | ***************************** | 2249 | ********* | | 2250 | m=application 10000 UDP/DTLS/SCTP | [I-D.ietf-rtcweb-data-channel | 2251 | webrtc-datachannel | ] | 2252 | c=IN IP4 203.0.113.141 | [RFC4566] | 2253 | a=mid:data | [RFC5888] | 2254 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 2255 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 2256 | a=sendrecv | [RFC3264] | 2257 | a=setup:actpass | [RFC4145] | 2258 | a=ice-ufrag:89819013 | [RFC5245] | 2259 | a=ice-pwd:1747d1ee3474af08a068a28 | [RFC5245] | 2260 | a397a4c3f3 | | 2261 | a=fingerprint:sha-256 29:E2:1C:3B | [RFC5245] | 2262 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2263 | :04: BB:05:2F:70:9F:04:A9:0E:05:E | | 2264 | 9:26:33:E8:70:88:A2 | | 2265 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2266 | 192.0.2.4 10000 typ host | | 2267 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2268 +-----------------------------------+-------------------------------+ 2270 Table 21: 5.2.10 SDP Offer 2272 +-----------------------------------+-------------------------------+ 2273 | Answer SDP Contents | RFC#/Notes | 2274 +-----------------------------------+-------------------------------+ 2275 | v=0 | [RFC4566] | 2276 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 2277 | | Information | 2278 | s=- | [RFC4566] | 2279 | t=0 0 | [RFC4566] | 2280 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 2281 | | egotiation] | 2282 | a=group:LS audio video | [RFC5888] | 2283 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2284 | ****** Audio m=line ********* | ***************************** | 2285 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 2286 | 109 | | 2287 | c=IN IP4 203.0.113.77 | [RFC4566] | 2288 | a=mid:audio | [RFC5888] | 2289 | a=msid:ma ta | Identifies RTCMediaStream ID | 2290 | | (ma) and RTCMediaStreamTrack | 2291 | | ID (ta) | 2292 | a=sendrecv | [RFC3264] | 2293 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2294 | a=maxptime:120 | [RFC4566] | 2295 | a=ice-ufrag:c300d85b | [RFC5245] | 2296 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 2297 | efbabd9a2 | | 2298 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 2299 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 2300 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 2301 | 1:58:D0:A1:2C:19:08 | | 2302 | a=setup:active | [RFC4145] | 2303 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2304 | a=rtcp-mux | [RFC5761] | 2305 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2306 | | e] | 2307 | a=rtcp-rsize | [RFC5506] | 2308 | a=rtcp-fb:109 nack | [RFC5104] | 2309 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2310 | hdrext:ssrc-audio-level | | 2311 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2312 | hdrext:sdes:mid | egotiation] | 2313 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2314 | 198.51.100.7 49203 typ host | | 2315 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2316 | ****** Video m=line ********* | ***************************** | 2317 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 2318 | 120 | | 2319 | c=IN IP4 203.0.113.77 | [RFC4566] | 2320 | a=mid:video | [RFC5888] | 2321 | a=msid:ma tb | Identifies RTCMediaStream ID | 2322 | | (ma) and RTCMediaStreamTrack | 2323 | | ID (tb) | 2324 | a=sendrecv | [RFC3264] | 2325 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2326 | a=rtcp-fb:120 nack | [RFC5104] | 2327 | a=rtcp-fb:120 nack pli | [RFC5104] | 2328 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2329 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2330 | hdrext:sdes:mid | egotiation] | 2331 | ****** Application m=line | ***************************** | 2332 | ********* | | 2333 | m=application 20000 UDP/DTLS/SCTP | [I-D.ietf-mmusic-sctp-sdp] | 2334 | webrtc-datachannel | | 2335 | c=IN IP4 203.0.113.77 | [RFC4566] | 2336 | a=mid:data | [RFC5888] | 2337 | a=sctp-port:5000 | [I-D.ietf-mmusic-sctp-sdp] | 2338 | a=max-message-size:100000 | [I-D.ietf-mmusic-sctp-sdp] | 2339 | a=setup:active | [RFC4145] | 2340 | a=sendrecv | [RFC3264] | 2341 | a=ice-ufrag:991Ca2a5e | [RFC5245] | 2342 | a=ice-pwd:921d5d47efbabd9a2de4e99 | [RFC5245] | 2343 | bd291c325 | | 2344 | a=fingerprint:sha-256 7B:8B:F0:65 | [RFC5245] | 2345 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 2346 | :35: DC:B8:5F:64:1A:24:C2:43:F0:A | | 2347 | 1:58:D0:A1:2C:19:08 | | 2348 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2349 | 198.51.100.7 20000 typ host | | 2350 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2351 +-----------------------------------+-------------------------------+ 2353 Table 22: 5.2.10 SDP Answer 2355 5.2.11. Audio Only, Add Video to BUNDLE 2357 This example involves 2 Offer/Answer exchanges. First one is used to 2358 negotiate and setup BUNDLE support for Audio-only session followed by 2359 an updated Offer/Answer exchange to add video stream to the ongoing 2360 session. Also the newly added video stream is BUNDLED with the audio 2361 stream. 2363 Audio Only , Add Video and BUNDLE 2365 Alice Bob 2366 | | 2367 | | 2368 | Alice indicates support for BUNDLE | 2369 | | 2370 | Offer(Audio:Opus) | 2371 |----------------------------------------------------->| 2372 | |Bob 2373 | |supports 2374 | |BUNDLE 2375 | Answer(Audio:Opus) | 2376 |<-----------------------------------------------------| 2377 | |Alice adds 2378 | |video stream 2379 | Updated Offer(Audio:Opus, Video:VP8) |to BUNDLE 2380 |----------------------------------------------------->| 2381 | | 2382 | |Bob accepts 2383 | Updated Answer(Audio:Opus, Video:VP8) | 2384 |<-----------------------------------------------------| 2385 | | 2386 | 2Way Call with Audio and Video Multiplexed | 2387 |......................................................| 2388 | | 2389 | | 2391 +-----------------------------------+-------------------------------+ 2392 | Offer SDP Contents | RFC#/Notes | 2393 +-----------------------------------+-------------------------------+ 2394 | v=0 | [RFC4566] | 2395 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 2396 | s=- | [RFC4566] | 2397 | t=0 0 | [RFC4566] | 2398 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 2399 | | egotiation] Alice adds audio | 2400 | | m=line to the BUNDLE group | 2401 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2402 | ****** Audio m=line ********* | ***************************** | 2403 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2404 | 109 | | 2405 | c=IN IP4 203.0.113.141 | [RFC4566] | 2406 | a=mid:audio | [RFC5888] | 2407 | a=msid:ma ta | Identifies RTCMediaStream ID | 2408 | | (ma) and RTCMediaStreamTrack | 2409 | | ID (ta) | 2410 | a=sendrecv | [RFC3264] | 2411 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2412 | a=maxptime:120 | [RFC4566] | 2413 | a=ice-ufrag:074c6550 | [RFC5245] | 2414 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 2415 | 74af08a068 | | 2416 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 2417 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2418 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2419 | 9:26:33:E8:70:88:A2 | | 2420 | a=setup:actpass | [RFC4145] | 2421 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2422 | a=rtcp-mux | [RFC5761] | 2423 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2424 | | e] | 2425 | a=rtcp-rsize | [RFC5506] | 2426 | a=rtcp-fb:109 nack | [RFC5104] | 2427 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2428 | hdrext:ssrc-audio-level | | 2429 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2430 | hdrext:sdes:mid | egotiation] | 2431 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2432 | 192.0.2.4 61665 typ host | | 2433 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 2434 | 203.0.113.141 54609 typ srflx | | 2435 | raddr 192.0.2.4 rport 61665 | | 2436 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2437 +-----------------------------------+-------------------------------+ 2439 Table 23: 5.2.11 SDP Offer 2441 +-----------------------------------+-------------------------------+ 2442 | Answer SDP Contents | RFC#/Notes | 2443 +-----------------------------------+-------------------------------+ 2444 | v=0 | [RFC4566] | 2445 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 2446 | | Information | 2447 | s=- | [RFC4566] | 2448 | t=0 0 | [RFC4566] | 2449 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 2450 | | egotiation] | 2451 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2452 | ****** Audio m=line ********* | ***************************** | 2453 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 2454 | 109 | | 2455 | c=IN IP4 203.0.113.77 | [RFC4566] | 2456 | a=mid:audio | [RFC5888] | 2457 | a=msid:ma ta | Identifies RTCMediaStream ID | 2458 | | (ma) and RTCMediaStreamTrack | 2459 | | ID (ta) | 2460 | a=sendrecv | [RFC3264] | 2461 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2462 | a=maxptime:120 | [RFC4566] | 2463 | a=ice-ufrag:c300d85b | [RFC5245] | 2464 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 2465 | efbabd9a2 | | 2466 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 2467 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 2468 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 2469 | 1:58:D0:A1:2C:19:08 | | 2470 | a=setup:active | [RFC4145] | 2471 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2472 | a=rtcp-mux | [RFC5761] | 2473 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2474 | | e] | 2475 | a=rtcp-rsize | [RFC5506] | 2476 | a=rtcp-fb:109 nack | [RFC5104] | 2477 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2478 | hdrext:ssrc-audio-level | | 2479 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2480 | hdrext:sdes:mid | egotiation] | 2481 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2482 | 198.51.100.7 51556 typ host | | 2483 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 2484 | 203.0.113.77 49203 typ srflx | | 2485 | raddr 198.51.100.7 rport 51556 | | 2486 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2487 +-----------------------------------+-------------------------------+ 2489 Table 24: 5.2.10 SDP Answer 2491 +-----------------------------------+-------------------------------+ 2492 | Updated Offer SDP Contents | RFC#/Notes | 2493 +-----------------------------------+-------------------------------+ 2494 | v=0 | Version number incremented | 2495 | | [RFC4566] | 2496 | o=- 20518 1 IN IP4 0.0.0.0 | [RFC4566] | 2497 | s=- | [RFC4566] | 2498 | t=0 0 | [RFC4566] | 2499 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 2500 | | egotiation] | 2501 | a=group:LS audio video | [RFC5888] | 2502 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2503 | ****** Audio m=line ********* | ***************************** | 2504 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2505 | 109 | | 2506 | c=IN IP4 203.0.113.141 | [RFC4566] | 2507 | a=mid:audio | [RFC5888] | 2508 | a=msid:ma ta | Identifies RTCMediaStream ID | 2509 | | (ma) and RTCMediaStreamTrack | 2510 | | ID (ta) | 2511 | a=sendrecv | [RFC3264] | 2512 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2513 | a=maxptime:120 | [RFC4566] | 2514 | a=ice-ufrag:074c6550 | [RFC5245] | 2515 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 2516 | 74af08a068 | | 2517 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 2518 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2519 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2520 | 9:26:33:E8:70:88:A2 | | 2521 | a=setup:actpass | [RFC4145] | 2522 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp]Ali | 2523 | | ce want's to use the same | 2524 | | DTLS association | 2525 | a=rtcp-mux | [RFC5761] | 2526 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2527 | | e] | 2528 | a=rtcp-rsize | [RFC5506] | 2529 | a=rtcp-fb:109 nack | [RFC5104] | 2530 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2531 | hdrext:ssrc-audio-level | | 2532 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2533 | hdrext:sdes:mid | egotiation] | 2534 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2535 | 192.0.2.4 61665 typ host | | 2536 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 2537 | 203.0.113.141 54609 typ srflx | | 2538 | raddr 192.0.2.4 rport 61665 | | 2539 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2540 | ****** Video m=line ********* | ***************************** | 2541 | m=video 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2542 | 120 | | 2543 | c=IN IP4 203.0.113.141 | [RFC4566] | 2544 | a=mid:video | [RFC5888] | 2545 | a=msid:ma tb | Identifies RTCMediaStream ID | 2546 | | (ma) and RTCMediaStreamTrack | 2547 | | ID (tb) | 2548 | a=sendrecv | [RFC3264] | 2549 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2550 | a=rtcp-fb:120 nack | [RFC5104] | 2551 | a=rtcp-fb:120 nack pli | [RFC5104] | 2552 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2553 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2554 | hdrext:sdes:mid | egotiation] | 2555 +-----------------------------------+-------------------------------+ 2557 Table 25: 5.2.11 SDP Updated Offer 2559 +-----------------------------------+-------------------------------+ 2560 | Updated Answer SDP Contents | RFC#/Notes | 2561 +-----------------------------------+-------------------------------+ 2562 | v=0 | [RFC4566] Version number | 2563 | | incremented | 2564 | o=- 16833 1 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 2565 | | Information | 2566 | s=- | [RFC4566] | 2567 | t=0 0 | [RFC4566] | 2568 | a=group:BUNDLE audio video | [I-D.ietf-mmusic-sdp-bundle-n | 2569 | | egotiation] | 2570 | a=group:LS audio video | [RFC5888] | 2571 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2572 | ****** Audio m=line ********* | ***************************** | 2573 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 2574 | 109 | | 2575 | c=IN IP4 203.0.113.77 | [RFC4566] | 2576 | a=mid:audio | [RFC5888] | 2577 | a=msid:ma ta | Identifies RTCMediaStream ID | 2578 | | (ma) and RTCMediaStreamTrack | 2579 | | ID (ta) | 2580 | a=sendrecv | [RFC3264] | 2581 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2582 | a=maxptime:120 | [RFC4566] | 2583 | a=ice-ufrag:c300d85b | [RFC5245] | 2584 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 2585 | efbabd9a2 | | 2586 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 2587 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 2588 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 2589 | 1:58:D0:A1:2C:19:08 | | 2590 | a=setup:active | [RFC4145] | 2591 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] - | 2592 | | Bob agrees to use the same | 2593 | | DTLS association | 2594 | a=rtcp-mux | [RFC5761] | 2595 | a=rtcp-mux-only | [I-D.ietf-mmusic-mux-exclusiv | 2596 | | e] | 2597 | a=rtcp-rsize | [RFC5506] | 2598 | a=rtcp-fb:109 nack | [RFC5104] | 2599 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2600 | hdrext:ssrc-audio-level | | 2601 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2602 | hdrext:sdes:mid | egotiation] | 2603 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2604 | 198.51.100.7 51556 typ host | | 2605 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 2606 | 203.0.113.77 49203 typ srflx | | 2607 | raddr 198.51.100.7 rport 51556 | | 2608 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 2609 | ****** Video m=line ********* | ***************************** | 2610 | m=video 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 2611 | 120 | | 2612 | c=IN IP4 203.0.113.77 | [RFC4566] | 2613 | a=mid:video | [RFC5888] | 2614 | a=msid:ma tb | Identifies RTCMediaStream ID | 2615 | | (ma) and RTCMediaStreamTrack | 2616 | | ID (tb) | 2617 | a=sendrecv | [RFC3264] | 2618 | a=rtpmap:120 VP8/90000 | [RFC7741] | 2619 | a=rtcp-fb:120 nack | [RFC5104] | 2620 | a=rtcp-fb:120 nack pli | [RFC5104] | 2621 | a=rtcp-fb:120 ccm fir | [RFC5104] | 2622 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 2623 | hdrext:sdes:mid | egotiation] | 2624 +-----------------------------------+-------------------------------+ 2626 Table 26: 5.2.11 SDP Updated Answer 2628 5.3. MultiResolution, RTX, FEC Examples 2630 This section deals with scenarios related to multi-source, multi- 2631 stream negotiation such as layered coding, simulcast, along with 2632 techniques that deal with providing robustness against transmission 2633 errors such as FEC and RTX. Also to note, mechanisms such as FEC and 2634 RTX could be envisioned in the above basic scenarios as well. 2636 5.3.1. Sendonly Simulcast Session with 2 cameras and 2 encodings per 2637 camera 2639 The SDP below shows Offer/Answer exchange with one audio and two 2640 video sources. Each of the video source can be sent at two different 2641 resolutions. 2643 One video source corresponds to VP8 encoding, while the other 2644 corresponds to H.264 encoding. 2646 [I-D.ietf-mmusic-rid] framework is used to further constrain the 2647 media format encodings and map the payload types (PT) to the 'rid' 2648 identifiers. 2650 [I-D.ietf-mmusic-sdp-simulcast] framework identifies the simulcast 2651 streams via their 'rid' identifiers. 2653 bundle-only attribute is used for the video sources in the Offer to 2654 ensure enabling video sources in the context of BUNDLE alone. 2656 BUNDLE grouping framework enables multiplexing of all the 5 streams 2657 (1 audio stream + 4 video streams) over a single RTP Session. 2659 1 Way Successful Simulcast w/BUNDLE 2661 Alice Bob 2662 | | 2663 | | 2664 | Alice offers 2 sendonly video sources | 2665 | with 2 simulcast encodings per source | 2666 | and bundle-only for video | 2667 | | 2668 | | 2669 | Offer(Audio:Opus,Video1:VP8,Video2:H.264) | 2670 |------------------------------------------------>| 2671 | | 2672 | | 2673 | Answer(Audio:Opus Video1:VP8,Video2:H.264) | 2674 |<------------------------------------------------| 2675 | | 2676 |One-Way 1 Opus, 2 H.264 and 2 VP8 video streams, | 2677 | all multiplexed | 2678 |.................................................| 2679 | | 2680 | | 2681 +-------------------------------------+-----------------------------+ 2682 | Offer SDP Contents | RFC#/Notes | 2683 +-------------------------------------+-----------------------------+ 2684 | v=0 | [RFC4566] | 2685 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 2686 | s=- | [RFC4566] | 2687 | t=0 0 | [RFC4566] | 2688 | a=group:BUNDLE m0 m1 m2 | [I-D.ietf-mmusic-sdp-bundle | 2689 | | -negotiation] Alice | 2690 | | supports grouping of | 2691 | | m=lines under BUNDLE | 2692 | | semantics | 2693 | a=group:LS m0 m1 | [RFC5888] | 2694 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ic | 2695 | | e] | 2696 | ****** Audio m=line ********* | *************************** | 2697 | | ** | 2698 | m=audio 54609 UDP/TLS/RTP/SAVPF 109 | [RFC4566] | 2699 | c=IN IP4 203.0.113.141 | [RFC4566] | 2700 | a=mid:m0 | [RFC5888] | 2701 | a=msid:ma ta | Identifies RTCMediaStream | 2702 | | ID (ma) and | 2703 | | RTCMediaStreamTrack ID (ta) | 2704 | a=sendonly | [RFC3264] | 2705 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2706 | a=maxptime:120 | [RFC4566] | 2707 | a=ice-ufrag:074c6550 | [RFC5245] | 2708 | a=ice-pwd:a28a397a4c3f31747d1ee3474 | [RFC5245] | 2709 | af08a068 | | 2710 | a=fingerprint:sha-256 19:E2:1C:3B:4 | [RFC5245] | 2711 | B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04 | | 2712 | :BB:05:2F:70:9F:04:A9:0E:05:E9:26:3 | | 2713 | 3:E8:70:88:A2 | | 2714 | a=setup:actpass | [RFC4145] | 2715 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2716 | a=rtcp-mux | [RFC5761] | 2717 | a=rtcp-rsize | [RFC5506] | 2718 | a=rtcp-fb:109 nack | [RFC5104] | 2719 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2720 | hdrext:ssrc-audio-level | | 2721 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2722 | hdrext:sdes:mid | -negotiation] | 2723 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2724 | 192.0.2.4 61665 typ host | | 2725 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 2726 | 203.0.113.141 54609 typ srflx raddr | | 2727 | 192.0.2.4 rport 61665 | | 2728 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ic | 2729 | | e] | 2730 | ****** Video-1 m=line ********* | *************************** | 2731 | | ** | 2732 | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | bundle-only video line with | 2733 | | port number set to zero | 2734 | c=IN IP4 203.0.113.141 | [RFC4566] | 2735 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle | 2736 | | -negotiation] | 2737 | a=mid:m1 | [RFC5888] Video m=line part | 2738 | | of BUNDLE group | 2739 | a=msid:ma tb | Identifies RTCMediaStream | 2740 | | ID (ma) and | 2741 | | RTCMediaStreamTrack ID (tb) | 2742 | a=sendonly | [RFC3264] - Send only video | 2743 | | stream | 2744 | a=rtpmap:98 VP8/90000 | [RFC7741] | 2745 | a=fmtp:98 max-fr=30 | [RFC4566] | 2746 | a=rtpmap:100 VP8/90000 | [RFC7741] | 2747 | a=fmtp:100 max-fr=15 | [RFC4566] | 2748 | a=rtcp-fb:* nack | [RFC5104] | 2749 | a=rtcp-fb:* nack pli | [RFC5104] | 2750 | a=rtcp-fb:* ccm fir | [RFC5104] | 2751 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2752 | hdrext:sdes:mid | -negotiation] | 2753 | a=rid:1 send pt=98;max-width=1280 | [I-D.ietf-mmusic-rid] 1:1 | 2754 | ;max-height=720; | rid mapping to payload type | 2755 | | and specify resolution | 2756 | | constraints | 2757 | a=rid:2 send pt=100;max-width=640 | [I-D.ietf-mmusic-rid] 1:1 | 2758 | ;max-height=480; | rid mapping to payload type | 2759 | | and specify resolution | 2760 | | constraints | 2761 | a=simulcast: send 1;~2 | [I-D.ietf-mmusic-sdp-simulc | 2762 | | ast] Alice can send 2 | 2763 | | resolutions identified by | 2764 | | the 'rid' identifiers Also, | 2765 | | the second stream is | 2766 | | initially paused. | 2767 | ****** Video-2 m=line ********* | *************************** | 2768 | | ** | 2769 | m=video 0 UDP/TLS/RTP/SAVPF 101 102 | bundle-only video line with | 2770 | | port number set to zero | 2771 | c=IN IP4 203.0.113.141 | [RFC4566] | 2772 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle | 2773 | | -negotiation] | 2774 | a=mid:m2 | [RFC5888] Video m=line part | 2775 | | of BUNDLE group | 2776 | a=msid:ma tc | Identifies RTCMediaStream | 2777 | | ID (ma) and | 2778 | | RTCMediaStreamTrack ID (tc) | 2779 | a=sendonly | [RFC3264] - Send only video | 2780 | | stream | 2781 | a=rtpmap:101 H264/90000 | [RFC6184] | 2782 | a=rtpmap:102 H264/90000 | [RFC6184] | 2783 | a=fmtp:101 profile-level-id=42401f | [RFC6184]Camera-2,Encoding- | 2784 | ;packetization-mode=0;max-fr=30 | 1 | 2785 | a=fmtp:102 profile-level-id=42401f | [RFC6184]Camera-2,Encoding- | 2786 | ;packetization-mode=1;max-fr=15 | 2 | 2787 | a=rtcp-fb:* nack | [RFC5104] | 2788 | a=rtcp-fb:* nack pli | [RFC5104] | 2789 | a=rtcp-fb:* ccm fir | [RFC5104] | 2790 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2791 | hdrext:sdes:mid | -negotiation] | 2792 | a=rid:3 send pt=101;max-width=1280 | [I-D.ietf-mmusic-rid] 1:1 | 2793 | ;max-height=720; | rid mapping to payload type | 2794 | | and specify resolution | 2795 | | constraints | 2796 | a=rid:4 send pt=102;max-width=640 | [I-D.ietf-mmusic-rid] 1:1 | 2797 | ;max-height=360; | rid mapping to payload type | 2798 | | and specify resolution | 2799 | | constraints | 2800 | a=simulcast: send 3;4 | [I-D.ietf-mmusic-sdp-simulc | 2801 | | ast] Alice can send 2 | 2802 | | resolutions identified by | 2803 | | the 'rid' identifiers | 2804 +-------------------------------------+-----------------------------+ 2806 Table 27: 5.3.1 SDP Offer 2808 +-------------------------------------+-----------------------------+ 2809 | Answer SDP Contents | RFC#/Notes | 2810 +-------------------------------------+-----------------------------+ 2811 | v=0 | [RFC4566] | 2812 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 2813 | s=- | [RFC4566] | 2814 | t=0 0 | [RFC4566] | 2815 | a=group:BUNDLE m0 m1 m2 | [I-D.ietf-mmusic-sdp-bundle | 2816 | | -negotiation] Alice | 2817 | | supports grouping of | 2818 | | m=lines under BUNDLE | 2819 | | semantics | 2820 | a=group:LS m0 m1 | [RFC5888] | 2821 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ic | 2822 | | e] | 2823 | ****** Audio m=line ********* | *************************** | 2824 | | ** | 2825 | m=audio 49203 UDP/TLS/RTP/SAVPF 109 | [RFC4566] | 2826 | c=IN IP4 203.0.113.77 | [RFC4566] | 2827 | a=mid:m0 | [RFC5888] | 2828 | a=msid:ma ta | Identifies RTCMediaStream | 2829 | | ID (ma) and | 2830 | | RTCMediaStreamTrack ID (ta) | 2831 | a=recvonly | [RFC3264] | 2832 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2833 | a=rtcp-fb:109 nack | [RFC5104] | 2834 | a=maxptime:120 | [RFC4566] | 2835 | a=ice-ufrag:c300d85b | [RFC5245] | 2836 | a=ice-pwd:de4e99bd291c325921d5d47ef | [RFC5245] | 2837 | babd9a2 | | 2838 | a=fingerprint:sha-256 6B:8B:F0:65:5 | [RFC5245] | 2839 | F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35 | | 2840 | :DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D | | 2841 | 0:A1:2C:19:08 | | 2842 | a=setup:active | [RFC4145] | 2843 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2844 | a=rtcp-mux | [RFC5761] | 2845 | a=rtcp-rsize | [RFC5506] | 2846 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2847 | hdrext:ssrc-audio-level | | 2848 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2849 | hdrext:sdes:mid | -negotiation] | 2850 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 2851 | 198.51.100.7 61665 typ host | | 2852 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 2853 | 203.0.113.77 49203 typ srflx raddr | | 2854 | 198.51.100.7 rport 61665 | | 2855 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ic | 2856 | | e] | 2857 | ****** Video-1 m=line ********* | *************************** | 2858 | | ** | 2859 | m=video 49203 UDP/TLS/RTP/SAVPF 98 | BUNDLE accepted with port | 2860 | 100 | repeated from the audio | 2861 | | port | 2862 | c=IN IP4 203.0.113.77 | [RFC4566] | 2863 | a=mid:m1 | [RFC5888] Video m=line part | 2864 | | of BUNDLE group | 2865 | a=msid:ma tb | Identifies RTCMediaStream | 2866 | | ID (ma) and | 2867 | | RTCMediaStreamTrack ID (tb) | 2868 | a=recvonly | [RFC3264] - receive only | 2869 | | video stream | 2870 | a=rtpmap:98 VP8/90000 | [RFC7741] | 2871 | a=rtpmap:100 VP8/90000 | [RFC7741] | 2872 | a=fmtp:98 max-fr=30 | [RFC4566] | 2873 | a=fmtp:100 max-fr=15 | [RFC4566] | 2874 | a=rtcp-fb:* nack | [RFC5104] | 2875 | a=rtcp-fb:* nack pli | [RFC5104] | 2876 | a=rtcp-fb:* ccm fir | [RFC5104] | 2877 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2878 | hdrext:sdes:mid | -negotiation] | 2879 | a=rid:1 recv pt=98;max-width=1280 | [I-D.ietf-mmusic-rid] Bob | 2880 | ;max-height=720; | accepts the offered payload | 2881 | | format constraints | 2882 | a=rid:2 recv pt=100;max-width=640 | [I-D.ietf-mmusic-rid] Bob | 2883 | ;max-height=480; | accepts the offered payload | 2884 | | format constraints | 2885 | a=simulcast: recv 1;2 | [I-D.ietf-mmusic-sdp-simulc | 2886 | | ast] Bob accepts the | 2887 | | offered simulcast streams | 2888 | | and removes the paused | 2889 | | state of stream with 'rid' | 2890 | | value 2. | 2891 | ****** Video-2 m=line ********* | *************************** | 2892 | | ** | 2893 | m=video 49203 UDP/TLS/RTP/SAVPF 101 | BUNDLE accepted with port | 2894 | 102 | repeated from the audio | 2895 | | port | 2896 | c=IN IP4 203.0.113.77 | [RFC4566] | 2897 | a=mid:m2 | [RFC5888] Video m=line part | 2898 | | of BUNDLE group | 2899 | a=msid:ma tc | Identifies RTCMediaStream | 2900 | | ID (ma) and | 2901 | | RTCMediaStreamTrack ID (tc) | 2902 | a=recvonly | [RFC3264] | 2903 | a=rtpmap:101 H264/90000 | [RFC6184] | 2904 | a=rtpmap:102 H264/90000 | [RFC6184] | 2905 | a=fmtp:101 profile-level-id=42401f | [RFC6184] | 2906 | ;packetization-mode=1;max-fr=30 | | 2907 | a=fmtp:102 profile-level-id=42401f | [RFC6184] | 2908 | ;packetization-mode=1;max-fr=15 | | 2909 | a=rtcp-fb:* nack | [RFC5104] | 2910 | a=rtcp-fb:* nack pli | [RFC5104] | 2911 | a=rtcp-fb:* ccm fir | [RFC5104] | 2912 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 2913 | hdrext:sdes:mid | -negotiation] | 2914 | a=rid:3 recv pt=101;max-width=1280 | [I-D.ietf-mmusic-rid] Bob | 2915 | ;max-height=720; | accepts the offered payload | 2916 | | format constraints | 2917 | a=rid:4 recv pt=102;max-width=640 | [I-D.ietf-mmusic-rid] Bob | 2918 | ;max-height=360; | accepts the offered payload | 2919 | | format constraints | 2920 | a=simulcast: recv 3;4 | [I-D.ietf-mmusic-sdp-simulc | 2921 | | ast] Bob accepts the | 2922 | | offered simulcast streams. | 2923 +-------------------------------------+-----------------------------+ 2925 Table 28: 5.3.1 SDP Answer 2927 5.3.2. Successful SVC Video Session 2929 This section shows an SDP Offer/Answer for a session with an audio 2930 and a single video source. The video source is encoded as layered 2931 coding at 3 different resolutions based on [RFC5583]. The video 2932 m=line shows 3 streams with last stream (payload 100) dependent on 2933 streams with payload 96 and 97 for decoding. 2935 SVC Session - 3 Layers w/BUNDLE 2937 Alice Bob 2938 | | 2939 | | 2940 | Alice offers 3 sendonly video streams | 2941 | as 3 layers of SVC and bundle-only | 2942 | for video streams. | 2943 | | 2944 | Offer(Video:H.264 SVC) | 2945 |------------------------------------------------>| 2946 | | 2947 | |Bob accepts Alice's 2948 | |offered Codec 2949 | |operation points 2950 | | 2951 | Answer(Video:H.264) | 2952 |<------------------------------------------------| 2953 | | 2954 |One-Way H.264 SVC video streams | 2955 |.................................................| 2956 | | 2957 | | 2959 +-----------------------------------+-------------------------------+ 2960 | Offer SDP Contents | RFC#/Notes | 2961 +-----------------------------------+-------------------------------+ 2962 | v=0 | [RFC4566] | 2963 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 2964 | s=- | [RFC4566] | 2965 | t=0 0 | [RFC4566] | 2966 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 2967 | | egotiation] Alice supports | 2968 | | grouping of m=lines under | 2969 | | BUNDLE semantics | 2970 | a=group:LS m0 m1 | [RFC5888] | 2971 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 2972 | ****** Audio m=line ********* | ***************************** | 2973 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 2974 | 109 | | 2975 | c=IN IP4 203.0.113.141 | [RFC4566] | 2976 | a=mid:m0 | [RFC5888] Audio m=line part | 2977 | | of BUNDLE group with a unique | 2978 | | port number | 2979 | a=msid:ma ta | Identifies RTCMediaStream ID | 2980 | | (ma) and RTCMediaStreamTrack | 2981 | | ID (ta) | 2982 | a=sendonly | [RFC3264] | 2983 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 2984 | a=maxptime:120 | [RFC4566] | 2985 | a=ice-ufrag:074c6550 | [RFC5245] | 2986 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 2987 | 74af08a068 | | 2988 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 2989 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 2990 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 2991 | 9:26:33:E8:70:88:A2 | | 2992 | a=setup:actpass | [RFC4145] | 2993 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 2994 | a=rtcp-mux | [RFC5761] | 2995 | a=rtcp-rsize | [RFC5506] | 2996 | a=rtcp-fb:109 nack | [RFC5104] | 2997 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 2998 | hdrext:ssrc-audio-level | | 2999 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3000 | hdrext:sdes:mid | egotiation] | 3001 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3002 | 192.0.2.4 61665 typ host | | 3003 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3004 | 203.0.113.141 54609 typ srflx | | 3005 | raddr 192.0.2.4 rport 61665 | | 3006 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3007 | ****** Video m=line ********* | ***************************** | 3008 | m=video 0 UDP/TLS/RTP/SAVPF 96 97 | bundle-only video line with | 3009 | 100 | port number set to zero | 3010 | c=IN IP4 203.0.113.141 | [RFC4566] | 3011 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle-n | 3012 | | egotiation] | 3013 | a=mid:m1 | [RFC5888] Video m=line part | 3014 | | of BUNDLE group | 3015 | a=msid:ma tb | Identifies RTCMediaStream ID | 3016 | | (ma) and RTCMediaStreamTrack | 3017 | | ID (tc) | 3018 | a=sendonly | [RFC3264] - Send only video | 3019 | | stream | 3020 | a=rtpmap:96 H264/90000 | [RFC6184] | 3021 | a=fmtp:96 profile-level- | [RFC6184]H.264 Layer 1 | 3022 | id=4d0028; packetization-mode=1 | | 3023 | ;max-fr=30;max-fs=8040 | | 3024 | a=rtpmap:97 H264/90000 | [RFC6184] | 3025 | a=fmtp:97 profile-level-id=4d0028 | [RFC6184] H.264 Layer 2 | 3026 | ;packetization-mode=1; max-fr=15 | | 3027 | ;max-fs=1200 | | 3028 | a=rtpmap:100 H264-SVC/90000 | [RFC6184] | 3029 | a=fmtp:100 profile-level- | [RFC6184] | 3030 | id=4d0028;packetization-mode=1; | | 3031 | max-fr=30;max-fs=8040 | | 3032 | a=depend:100 lay m1:96,97; | [RFC5583]Layer 3 dependent on | 3033 | | layers 1 and 2 | 3034 | a=rtcp-fb:* nack | [RFC5104] | 3035 | a=rtcp-fb:* nack pli | [RFC5104] | 3036 | a=rtcp-fb:* ccm fir | [RFC5104] | 3037 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3038 | hdrext:sdes:mid | egotiation] | 3039 +-----------------------------------+-------------------------------+ 3041 Table 29: 5.3.2 SDP Offer with SVC 3043 +-----------------------------------+-------------------------------+ 3044 | Answer SDP Contents | RFC#/Notes | 3045 +-----------------------------------+-------------------------------+ 3046 | v=0 | [RFC4566] | 3047 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3048 | s=- | [RFC4566] | 3049 | t=0 0 | [RFC4566] | 3050 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3051 | | egotiation] | 3052 | a=group:LS m0 m1 | [RFC5888] | 3053 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3054 | ****** Audio m=line ********* | ***************************** | 3055 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3056 | 109 | | 3057 | c=IN IP4 203.0.113.77 | [RFC4566] | 3058 | a=mid:m0 | [RFC5888] | 3059 | a=msid:ma ta | Identifies RTCMediaStream ID | 3060 | | (ma) and RTCMediaStreamTrack | 3061 | | ID (ta) | 3062 | a=recvonly | [RFC3264] | 3063 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3064 | a=maxptime:120 | [RFC4566] | 3065 | a=ice-ufrag:074c6550 | [RFC5245] | 3066 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3067 | 74af08a068 | | 3068 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3069 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3070 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3071 | 1:58:D0:A1:2C:19:08 | | 3072 | a=setup:active | [RFC4145] | 3073 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3074 | a=rtcp-mux | [RFC5761] | 3075 | a=rtcp-rsize | [RFC5506] | 3076 | a=rtcp-fb:109 nack | [RFC5104] | 3077 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3078 | hdrext:ssrc-audio-level | | 3079 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3080 | hdrext:sdes:mid | egotiation] | 3081 | a=candidate:0 1 UDP 2113667326 | [RFC5245] | 3082 | 198.51.100.7 51556 typ host | | 3083 | a=candidate:1 1 UDP 1694302206 | [RFC5245] | 3084 | 203.0.113.77 49203 typ srflx | | 3085 | raddr 198.51.100.7 rport 51556 | | 3086 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3087 | ****** Video m=line ********* | ***************************** | 3088 | m=video 49203 UDP/TLS/RTP/SAVPF | BUNDLE accepted Bundle | 3089 | 96 100 | address same as audio m=line. | 3090 | c=IN IP4 203.0.113.77 | [RFC4566] | 3091 | a=mid:m1 | [RFC5888] Video m=line part | 3092 | | of BUNDLE group | 3093 | a=msid:ma tb | Identifies RTCMediaStream ID | 3094 | | (ma) and RTCMediaStreamTrack | 3095 | | ID (tb) | 3096 | a=recvonly | [RFC3264] - Receive only | 3097 | | video stream | 3098 | a=rtpmap:96 H264/90000 | [RFC6184] | 3099 | a=fmtp:96 profile-level-id=4d0028 | [RFC6184]H.264 Layer 1 | 3100 | ;packetization-mode=1; max-fr=30 | | 3101 | ;max-fs=8040 | | 3102 | a=rtpmap:100 H264-SVC/90000 | [RFC6184] | 3103 | a=fmtp:100 profile-level- | [RFC6184] | 3104 | id=4d0028;packetization-mode=1; | | 3105 | max-fr=30;max-fs=8040 | | 3106 | a=depend:100 lay m1:96; | [RFC5583] Bob chooses 2 Codec | 3107 | | Operation points | 3108 | a=rtcp-fb:* nack | [RFC5104] | 3109 | a=rtcp-fb:* nack pli | [RFC5104] | 3110 | a=rtcp-fb:* ccm fir | [RFC5104] | 3111 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3112 | hdrext:sdes:mid | egotiation] | 3113 +-----------------------------------+-------------------------------+ 3115 Table 30: 5.3.2 SDP Answer with SVC 3117 5.3.3. Successful Simulcast Video Session with Retransmission 3119 This section shows an SDP Offer/Answer exchange for a simulcast 3120 scenario with 3 resolutions and has [RFC4588] style re-transmission 3121 flows. 3123 [I-D.ietf-mmusic-rid] framework is used to specify all the (3) 3124 resolution constraints mapped to a single Payload Type (98). 3126 [I-D.ietf-mmusic-sdp-simulcast] framework identifies the simulcast 3127 streams via their 'rid' identifiers. 3129 Simulcast Streams with Retransmission 3131 Alice Bob 3132 | | 3133 | | 3134 |Alice offers single audio and simulcasted video streams | 3135 | | 3136 | | 3137 | Offer(Audio:Opus Video:VP8 with 3 resolutions) | 3138 | & RTX stream | 3139 |-------------------------------------------------------->| 3140 | | 3141 | | 3142 | Answer (Bob accepts Alice's offer) | 3143 |<--------------------------------------------------------| 3144 | | 3145 | | 3146 |One-Way 1 Opus, 3 VP8 and RTX video streams,all muxed | 3147 |.........................................................| 3148 | | 3149 | | 3150 +-----------------------------------+-------------------------------+ 3151 | Offer SDP Contents | RFC#/Notes | 3152 +-----------------------------------+-------------------------------+ 3153 | v=0 | [RFC4566] | 3154 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3155 | s=- | [RFC4566] | 3156 | t=0 0 | [RFC4566] | 3157 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3158 | | egotiation] Alice supports | 3159 | | grouping of m=lines under | 3160 | | BUNDLE semantics | 3161 | a=group:LS m0 m1 | [RFC5888] | 3162 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3163 | ****** Audio m=line ********* | ***************************** | 3164 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 3165 | 109 | | 3166 | c=IN IP4 203.0.113.141 | [RFC4566] | 3167 | a=mid:m0 | [RFC5888] Audio m=line part | 3168 | | of BUNDLE group with a unique | 3169 | | port number | 3170 | a=msid:ma ta | Identifies RTCMediaStream ID | 3171 | | (ma) and RTCMediaStreamTrack | 3172 | | ID (ta) | 3173 | a=sendonly | [RFC3264] | 3174 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3175 | a=maxptime:120 | [RFC4566] | 3176 | a=ice-ufrag:074c6550 | [RFC5245] | 3177 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3178 | 74af08a068 | | 3179 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 3180 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 3181 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 3182 | 9:26:33:E8:70:88:A2 | | 3183 | a=setup:actpass | [RFC4145] | 3184 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3185 | a=rtcp-mux | [RFC5761] | 3186 | a=rtcp-rsize | [RFC5506] | 3187 | a=rtcp-fb:109 nack | [RFC5104] | 3188 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3189 | hdrext:ssrc-audio-level | | 3190 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3191 | hdrext:sdes:mid | egotiation] | 3192 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3193 | 192.0.2.4 61665 typ host | | 3194 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3195 | 203.0.113.141 54609 typ srflx | | 3196 | raddr 192.0.2.4 rport 61665 | | 3197 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3198 | ****** Video m=line ********* | ***************************** | 3199 | m=video 0 UDP/TLS/RTP/SAVPF 98 | bundle-only video line with | 3200 | 103 | port number set to zero | 3201 | c=IN IP4 203.0.113.141 | [RFC4566] | 3202 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle-n | 3203 | | egotiation] | 3204 | a=mid:m1 | [RFC5888] | 3205 | a=msid:ma tb | Identifies RTCMediaStream ID | 3206 | | (ma) and RTCMediaStreamTrack | 3207 | | ID (tb) | 3208 | a=sendonly | [RFC3264] | 3209 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3210 | a=fmtp:98 max-fr=30 | [RFC4566] | 3211 | a=rtpmap:103 rtx/90000 | [RFC4588] | 3212 | a=fmtp:103 apt=98;rtx-time=200 | [RFC4588] | 3213 | a=rtcp-fb:* nack | [RFC5104] | 3214 | a=rtcp-fb:* nack pli | [RFC5104] | 3215 | a=rtcp-fb:* ccm fir | [RFC5104] | 3216 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3217 | hdrext:sdes:mid | egotiation] | 3218 | a=rid:1 send pt=98;max-fs=921600 | [I-D.ietf-mmusic-rid] | 3219 | ;max-fr=30; | | 3220 | a=rid:2 send pt=98;max-fs=614400 | [I-D.ietf-mmusic-rid] | 3221 | ;max-fr=15; | | 3222 | a=rid:3 send pt=98;max-fs=230400 | [I-D.ietf-mmusic-rid] | 3223 | ;max-fr=30; | | 3224 | a=simulcast: send 1;2;3 | [I-D.ietf-mmusic-sdp-simulcas | 3225 | | t] Alice can send all the | 3226 | | simulcast streams | 3227 +-----------------------------------+-------------------------------+ 3229 Table 31: 5.3.3 SDP Offer w/Simulcast, RTX 3231 +-----------------------------------+-------------------------------+ 3232 | Answer SDP Contents | RFC#/Notes | 3233 +-----------------------------------+-------------------------------+ 3234 | v=0 | [RFC4566] | 3235 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3236 | s=- | [RFC4566] | 3237 | t=0 0 | [RFC4566] | 3238 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3239 | | egotiation] Bob supports | 3240 | | grouping of m=lines under | 3241 | | BUNDLE semantics | 3242 | a=group:LS m0 m1 | [RFC5888] | 3243 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3244 | ****** Audio m=line ********* | ***************************** | 3245 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3246 | 109 | | 3247 | c=IN IP4 203.0.113.77 | [RFC4566] | 3248 | a=mid:m0 | [RFC5888] | 3249 | a=msid:ma ta | Identifies RTCMediaStream ID | 3250 | | (ma) and RTCMediaStreamTrack | 3251 | | ID (ta) | 3252 | a=recvonly | [RFC3264] | 3253 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3254 | a=maxptime:120 | [RFC4566] | 3255 | a=ice-ufrag:074c6550 | [RFC5245] | 3256 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3257 | 74af08a068 | | 3258 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3259 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3260 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3261 | 1:58:D0:A1:2C:19:08 | | 3262 | a=setup:active | [RFC4145] | 3263 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3264 | a=rtcp-mux | [RFC5761] | 3265 | a=rtcp-rsize | [RFC5506] | 3266 | a=rtcp-fb:109 nack | [RFC5104] | 3267 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3268 | hdrext:ssrc-audio-level | | 3269 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3270 | hdrext:sdes:mid | egotiation] | 3271 | a=candidate:0 1 UDP 2113667326 | [RFC5245] | 3272 | 198.51.100.7 51556 typ host | | 3273 | a=candidate:1 1 UDP 1694302206 | [RFC5245] | 3274 | 203.0.113.77 49203 typ srflx | | 3275 | raddr 198.51.100.7 rport 51556 | | 3276 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3277 | ****** Video m=line ********* | ***************************** | 3278 | m=video 49203 UDP/TLS/RTP/SAVPF | BUNDLE accepted with Bundle | 3279 | 98 100 101 103 | address identical to audio | 3280 | | m-line | 3281 | c=IN IP4 203.0.113.77 | [RFC4566] | 3282 | a=mid:m1 | [RFC5888] Video m=line part | 3283 | | of BUNDLE group | 3284 | a=msid:ma tb | Identifies RTCMediaStream ID | 3285 | | (ma) and RTCMediaStreamTrack | 3286 | | ID (tb) | 3287 | a=recvonly | [RFC3264] | 3288 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3289 | a=fmtp:98 max-fr=30 | [RFC4566] | 3290 | a=rtpmap:103 rtx/90000 | [RFC4588] | 3291 | a=fmtp:103 apt=98;rtx-time=200 | [RFC4588] | 3292 | a=rtcp-fb:* nack | [RFC5104] | 3293 | a=rtcp-fb:* nack pli | [RFC5104] | 3294 | a=rtcp-fb:* ccm fir | [RFC5104] | 3295 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3296 | hdrext:sdes:mid | egotiation] | 3297 | a=rid:1 recv pt=98;max-fs=921600 | [I-D.ietf-mmusic-rid] | 3298 | ;max-fr=30; | | 3299 | a=rid:2 recv pt=98;max-fs=614400 | [I-D.ietf-mmusic-rid] | 3300 | ;max-fr=15; | | 3301 | a=rid:3 recv pt=98;max-fs=230400 | [I-D.ietf-mmusic-rid] | 3302 | ;max-fr=30; | | 3303 | a=simulcast: recv 1;2;3 | [I-D.ietf-mmusic-sdp-simulcas | 3304 | | t] Bob accepts the offered | 3305 | | simulcast streams | 3306 +-----------------------------------+-------------------------------+ 3308 Table 32: 5.3.3 SDP Answer w/Simulcast, RTX 3310 5.3.4. Successful 1-way Simulcast Session with 2 resolutions and RTX - 3311 One resolution rejected 3313 This section shows an SDP Offer/Answer exchange for a simulcast 3314 scenario with 2 two resolutions. 3316 It also showcases where Bob rejects one of the Simulcast Video Stream 3317 which results in the rejection of the associated repair stream 3318 implicitly. 3320 Simulcast Streams with Retransmission Rejected 3322 Alice Bob 3323 | | 3324 | | 3325 |Alice offers single audio and simulcasted video streams | 3326 | with bundle-only for video | 3327 | | 3328 | | 3329 |Offer(Audio:Opus Video:VP8 with 2 resolutions,RTX Stream)| 3330 |-------------------------------------------------------->| 3331 | | 3332 | |Bob accepts 1 3333 | |simulcast,rtx 3334 | |rejects the 3335 | |other 3336 | Answer(Audio:Opus Video:VP8 with 1 res & RTX Stream) | 3337 |<--------------------------------------------------------| 3338 | | 3339 | | 3340 |1-way audio,video session and its associated RTX stream, | 3341 | all multiplexed | 3342 |.........................................................| 3343 | | 3344 | | 3346 +-----------------------------------+-------------------------------+ 3347 | Offer SDP Contents | RFC#/Notes | 3348 +-----------------------------------+-------------------------------+ 3349 | v=0 | [RFC4566] | 3350 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3351 | s=- | [RFC4566] | 3352 | t=0 0 | [RFC4566] | 3353 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3354 | | egotiation] Alice supports | 3355 | | grouping of m=lines under | 3356 | | BUNDLE semantics | 3357 | a=group:LS m0 m1 | [RFC5888] | 3358 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3359 | ****** Audio m=line ********* | ***************************** | 3360 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 3361 | 109 | | 3362 | c=IN IP4 203.0.113.141 | [RFC4566] | 3363 | a=mid:m0 | [RFC5888] | 3364 | a=msid:ma ta | Identifies RTCMediaStream ID | 3365 | | (ma) and RTCMediaStreamTrack | 3366 | | ID (ta) | 3367 | a=sendonly | [RFC3264] | 3368 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3369 | a=maxptime:120 | [RFC4566] | 3370 | a=ice-ufrag:074c6550 | [RFC5245] | 3371 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3372 | 74af08a068 | | 3373 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 3374 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 3375 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 3376 | 9:26:33:E8:70:88:A2 | | 3377 | a=setup:actpass | [RFC4145] | 3378 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3379 | a=rtcp-mux | [RFC5761] | 3380 | a=rtcp-rsize | [RFC5506] | 3381 | a=rtcp-fb:109 nack | [RFC5104] | 3382 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3383 | hdrext:ssrc-audio-level | | 3384 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3385 | hdrext:sdes:mid | egotiation] | 3386 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3387 | 192.0.2.4 61665 typ host | | 3388 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3389 | 203.0.113.141 54609 typ srflx | | 3390 | raddr 192.0.2.4 rport 61665 | | 3391 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3392 | ****** Video m=line ********* | ***************************** | 3393 | m=video 0 UDP/TLS/RTP/SAVPF 98 | bundle-only video line with | 3394 | 100 101 103 | port number set to zero | 3395 | c=IN IP4 203.0.113.141 | [RFC4566] | 3396 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle-n | 3397 | | egotiation] | 3398 | a=mid:m1 | [RFC5888] | 3399 | a=msid:ma tb | Identifies RTCMediaStream ID | 3400 | | (ma) and RTCMediaStreamTrack | 3401 | | ID (tb | 3402 | a=sendonly | [RFC3264] | 3403 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3404 | a=rtpmap:100 VP8/90000 | [RFC7741] | 3405 | a=rtpmap:101 rtx/90000 | [RFC4588] | 3406 | a=rtpmap:103 rtx/90000 | [RFC4588] | 3407 | a=fmtp:98 max-fr=30;max-fs=8040 | [RFC4566] | 3408 | a=fmtp:100 max-fr=15;max-fs=1200 | [RFC4566] | 3409 | a=fmtp:101 apt=98;rtx-time=200 | [RFC4588] | 3410 | a=fmtp:103 apt=100;rtx-time=200 | [RFC4588] | 3411 | a=rtcp-fb:* nack | [RFC5104] | 3412 | a=rtcp-fb:* nack pli | [RFC5104] | 3413 | a=rtcp-fb:* ccm fir | [RFC5104] | 3414 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3415 | hdrext:sdes:mid | egotiation] | 3416 | a=rid:1 send pt=98; | [I-D.ietf-mmusic-rid] 1:1 | 3417 | | mapping between the PT and | 3418 | | the 'rid' identifier | 3419 | a=rid:2 send pt=100; | [I-D.ietf-mmusic-rid] 1:1 | 3420 | | mapping between the PT and | 3421 | | the 'rid' identifier | 3422 | a=simulcast: send 1;2 | [I-D.ietf-mmusic-sdp-simulcas | 3423 | | t] | 3424 +-----------------------------------+-------------------------------+ 3426 Table 33: 5.3.4 SDP Offer w/Simulcast, RTX 3428 +-----------------------------------+-------------------------------+ 3429 | Answer SDP Contents | RFC#/Notes | 3430 +-----------------------------------+-------------------------------+ 3431 | v=0 | [RFC4566] | 3432 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3433 | s=- | [RFC4566] | 3434 | t=0 0 | [RFC4566] | 3435 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3436 | | egotiation] Bob supports | 3437 | | grouping of m=lines under | 3438 | | BUNDLE semantics | 3439 | a=group:LS m0 m1 | [RFC5888] | 3440 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3441 | ****** Audio m=line ********* | ***************************** | 3442 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3443 | 109 | | 3444 | c=IN IP4 203.0.113.77 | [RFC4566] | 3445 | a=mid:m0 | [RFC5888] | 3446 | a=msid:ma ta | Identifies RTCMediaStream ID | 3447 | | (ma) and RTCMediaStreamTrack | 3448 | | ID (ta) | 3449 | a=recvonly | [RFC3264] | 3450 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3451 | a=maxptime:120 | [RFC4566] | 3452 | a=ice-ufrag:074c6550 | [RFC5245] | 3453 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3454 | 74af08a068 | | 3455 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3456 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3457 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3458 | 1:58:D0:A1:2C:19:08 | | 3459 | a=setup:active | [RFC4145] | 3460 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3461 | a=rtcp-mux | [RFC5761] | 3462 | a=rtcp-rsize | [RFC5506] | 3463 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3464 | hdrext:ssrc-audio-level | | 3465 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3466 | hdrext:sdes:mid | egotiation] | 3467 | a=candidate:0 1 UDP 2113667326 | [RFC5245] | 3468 | 198.51.100.7 51556 typ host | | 3469 | a=candidate:1 1 UDP 1694302206 | [RFC5245] | 3470 | 203.0.113.77 49203 typ srflx | | 3471 | raddr 198.51.100.7 rport 51556 | | 3472 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3473 | ****** Video m=line ********* | ***************************** | 3474 | m=video 49203 UDP/TLS/RTP/SAVPF | BUNDLE accepted with Bundle | 3475 | 98 101 | address identical to audio | 3476 | | m-line | 3477 | c=IN IP4 203.0.113.77 | [RFC4566] | 3478 | a=mid:m1 | [RFC5888] | 3479 | a=msid:ma tb | Identifies RTCMediaStream ID | 3480 | | (ma) and RTCMediaStreamTrack | 3481 | | ID (tb) | 3482 | a=recvonly | [RFC3264] | 3483 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3484 | a=rtpmap:101 VP8/90000 | [RFC7741] | 3485 | a=fmtp:98 max-fr=30;max-fs=8040 | [RFC4566] | 3486 | a=fmtp:101 apt=98;rtx-time=200 | [RFC4588] | 3487 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3488 | hdrext:sdes:mid | egotiation] | 3489 | a=rid:1 recv pt=98; | [I-D.ietf-mmusic-rid] | 3490 | a=simulcast: recv 1 | [I-D.ietf-mmusic-sdp-simulcas | 3491 | | t] Bob rejects the second | 3492 | | simulcast stream and the | 3493 | | associated rtx stream. | 3494 +-----------------------------------+-------------------------------+ 3496 Table 34: 5.3.4 SDP Answer (one Simulcast Rejected) 3498 5.3.5. Simulcast Video Session with Forward Error Correction 3500 This section shows an SDP Offer/Answer exchange for Simulcast video 3501 stream at two resolutions and and has [RFC5956] style FEC flows. 3503 On completion of the Offer/Answer exchange mechanism we end up one 3504 audio stream, 2 simulcast video streams and 2 associated FEC streams 3505 are sent over a single 5-tuple. 3507 Simulcast Streams with Forward Error Correction 3509 Alice Bob 3510 | | 3511 | | 3512 | | 3513 |Alice offers single audio and simulcasted video streams | 3514 |with bundle-only | 3515 | | 3516 | | 3517 |Offer(Audio:Opus Video:VP8 with 2 resolutions with FEC Streams)| 3518 |-------------------------------------------------------------->| 3519 | | 3520 | |Bob 3521 | |accepts 3522 | |Alice's 3523 | |offer 3524 |Answer(Audio:Opus Video:VP8 with 2 resolutions w/FEC Streams) | 3525 |<--------------------------------------------------------------| 3526 | | 3527 |One-Way Audio,Video session with 4 video streams(Simulcast | 3528 | and FEC) all multiplexed | 3529 |...............................................................| 3530 | | 3531 | | 3532 | | 3534 +-----------------------------------+-------------------------------+ 3535 | Offer SDP Contents | RFC#/Notes | 3536 +-----------------------------------+-------------------------------+ 3537 | v=0 | [RFC4566] | 3538 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3539 | s=- | [RFC4566] | 3540 | t=0 0 | [RFC4566] | 3541 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3542 | | egotiation] Alice supports | 3543 | | grouping of m=lines under | 3544 | | BUNDLE semantics | 3545 | a=group:LS m0 m1 | [RFC5888] | 3546 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3547 | ****** Audio m=line ********* | ***************************** | 3548 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 3549 | 109 | | 3550 | c=IN IP4 203.0.113.141 | [RFC4566] | 3551 | a=mid:m0 | [RFC5888] | 3552 | a=msid:ma ta | Identifies RTCMediaStream ID | 3553 | | (ma) and RTCMediaStreamTrack | 3554 | | ID (ta) | 3555 | a=sendonly | [RFC3264] | 3556 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3557 | a=maxptime:120 | [RFC4566] | 3558 | a=ice-ufrag:074c6550 | [RFC5245] | 3559 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3560 | 74af08a068 | | 3561 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 3562 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 3563 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 3564 | 9:26:33:E8:70:88:A2 | | 3565 | a=setup:actpass | [RFC4145] | 3566 | a=rtcp-mux | [RFC5761] | 3567 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3568 | a=rtcp-rsize | [RFC5506] | 3569 | a=rtcp-fb:109 nack | [RFC5104] | 3570 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3571 | hdrext:ssrc-audio-level | | 3572 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3573 | hdrext:sdes:mid | egotiation] | 3574 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3575 | 192.0.2.4 61665 typ host | | 3576 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3577 | 203.0.113.141 54609 typ srflx | | 3578 | raddr 192.0.2.4 rport 61665 | | 3579 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3580 | ****** Video m=line ********* | ***************************** | 3581 | m=video 0 UDP/TLS/RTP/SAVPF 98 | bundle-only video line with | 3582 | 100 101 103 | port number set to zero | 3583 | c=IN IP4 203.0.113.141 | [RFC4566] | 3584 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle-n | 3585 | | egotiation] | 3586 | a=mid:m1 | [RFC5888] Video m=line part | 3587 | | of BUNDLE group | 3588 | a=msid:ma tb | Identifies RTCMediaStream ID | 3589 | | (ma) and RTCMediaStreamTrack | 3590 | | ID (tb) | 3591 | a=sendonly | [RFC3264] | 3592 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3593 | a=rtpmap:100 VP8/90000 | [RFC7741] | 3594 | a=rtpmap:101 flexfec/90000 | [I-D.ietf-payload-flexible-fe | 3595 | | c-scheme] | 3596 | a=rtpmap:103 flexfec/90000 | [I-D.ietf-payload-flexible-fe | 3597 | | c-scheme] | 3598 | a=fmtp:98 max-fr=30;max-fs=8040 | [RFC4566] | 3599 | a=fmtp:100 max-fr=15;max-fs=1200 | [RFC4566] | 3600 | a=fmtp:101 L=5; D=10; ToP=2; | [I-D.ietf-payload-flexible-fe | 3601 | repair-window=200000 | c-scheme] | 3602 | a=fmtp:103 L=5; D=10; ToP=2; | [I-D.ietf-payload-flexible-fe | 3603 | repair-window=200000 | c-scheme] | 3604 | a=rtcp-fb:* nack | [RFC5104] | 3605 | a=rtcp-fb:* nack pli | [RFC5104] | 3606 | a=rtcp-fb:* ccm fir | [RFC5104] | 3607 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3608 | hdrext:sdes:mid | egotiation] | 3609 | a=rid:1 send pt=98; | [I-D.ietf-mmusic-rid] 1:1 | 3610 | | mapping between the PT and | 3611 | | the 'rid' identifier | 3612 | a=rid:2 send pt=100; | [I-D.ietf-mmusic-rid] 1:1 | 3613 | | mapping between the PT and | 3614 | | the 'rid' identifier | 3615 | a=simulcast: send 1;2 | [I-D.ietf-mmusic-sdp-simulcas | 3616 | | t] | 3617 +-----------------------------------+-------------------------------+ 3619 Table 35: 5.3.5 SDP Offer 3621 +-----------------------------------+-------------------------------+ 3622 | Answer SDP Contents | RFC#/Notes | 3623 +-----------------------------------+-------------------------------+ 3624 | v=0 | [RFC4566] | 3625 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 3626 | s=- | [RFC4566] | 3627 | t=0 0 | [RFC4566] | 3628 | a=group:BUNDLE m0 m1 | [I-D.ietf-mmusic-sdp-bundle-n | 3629 | | egotiation] | 3630 | a=group:LS m0 m1 | [RFC5888] | 3631 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3632 | ****** Audio m=line ********* | ***************************** | 3633 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3634 | 109 | | 3635 | c=IN IP4 203.0.113.77 | [RFC4566] | 3636 | a=mid:m0 | [RFC5888] Audio m=line part | 3637 | | of BUNDLE group with a unique | 3638 | | port number | 3639 | a=msid:ma ta | Identifies RTCMediaStream ID | 3640 | | (ma) and RTCMediaStreamTrack | 3641 | | ID (ta) | 3642 | a=recvonly | [RFC3264] | 3643 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3644 | a=maxptime:120 | [RFC4566] | 3645 | a=ice-ufrag:074c6550 | [RFC5245] | 3646 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3647 | 74af08a068 | | 3648 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3649 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3650 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3651 | 1:58:D0:A1:2C:19:08 | | 3652 | a=setup:active | [RFC4145] | 3653 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3654 | a=rtcp-mux | [RFC5761] | 3655 | a=rtcp-rsize | [RFC5506] | 3656 | a=rtcp-fb:109 nack | [RFC5104] | 3657 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3658 | hdrext:ssrc-audio-level | | 3659 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3660 | hdrext:sdes:mid | egotiation] | 3661 | a=candidate:0 1 UDP 2113667326 | [RFC5245] | 3662 | 198.51.100.7 51556 typ host | | 3663 | a=candidate:1 1 UDP 1694302206 | [RFC5245] | 3664 | 203.0.113.77 49203 typ srflx | | 3665 | raddr 198.51.100.7 rport 51556 | | 3666 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3667 | ****** Video m=line ********* | ***************************** | 3668 | m=video 49203 UDP/TLS/RTP/SAVPF | BUNDLE accepted with Bundle | 3669 | 98 100 101 103 | Address identical to audio | 3670 | | m=line. | 3671 | c=IN IP4 203.0.113.77 | [RFC4566] | 3672 | a=mid:m1 | [RFC5888] Video m=line part | 3673 | | of BUNDLE group | 3674 | a=msid:ma tb | Identifies RTCMediaStream ID | 3675 | | (ma) and RTCMediaStreamTrack | 3676 | | ID (tb) | 3677 | a=recvonly | [RFC3264] | 3678 | a=rtpmap:98 VP8/90000 | [RFC7741] | 3679 | a=rtpmap:100 VP8/90000 | [RFC7741] | 3680 | a=rtpmap:101 flexfec/90000 | [I-D.ietf-payload-flexible-fe | 3681 | | c-scheme] | 3682 | a=rtpmap:103 flexfec/90000 | [I-D.ietf-payload-flexible-fe | 3683 | | c-scheme] | 3684 | a=fmtp:98 max-fr=30;max-fs=8040 | [RFC4566] | 3685 | a=fmtp:100 max-fr=15;max-fs=1200 | [RFC4566] | 3686 | a=fmtp:101 L=5; D=10; ToP=2; | [I-D.ietf-payload-flexible-fe | 3687 | repair-window=200000 | c-scheme] | 3688 | a=fmtp:103 L=5; D=10; ToP=2; | [I-D.ietf-payload-flexible-fe | 3689 | repair-window=200000 | c-scheme] | 3690 | a=rtcp-fb:* nack | [RFC5104] | 3691 | a=rtcp-fb:* nack pli | [RFC5104] | 3692 | a=rtcp-fb:* ccm fir | [RFC5104] | 3693 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3694 | hdrext:sdes:mid | egotiation] | 3695 | a=rid:1 recv pt=98; | [I-D.ietf-mmusic-rid] | 3696 | a=rid:2 recv pt=100; | [I-D.ietf-mmusic-rid] | 3697 | a=simulcast: recv 1;2 | [I-D.ietf-mmusic-sdp-simulcas | 3698 | | t] | 3699 +-----------------------------------+-------------------------------+ 3701 Table 36: 5.3.5 SDP Answer 3703 5.4. Others 3705 The examples in the section provide SDP Offer/Answer exchange for a 3706 variety of scenarios related to RTP Header extension for conference 3707 usages, Legacy Interop scenarios and more. 3709 5.4.1. Audio Session - Voice Activity Detection 3711 This example shows Alice indicating the support of the RTP header 3712 extension to include the audio-level of the audio sample carried in 3713 the RTP packet. 3715 2-Way Audio with VAD 3717 Alice Bob 3718 | | 3719 | | 3720 |Alice indicates support for including | 3721 |audio level in RTP header | 3722 | | 3723 | Offer(Audio:Opus,PCMU,PCMA) | 3724 |---------------------------------------->| 3725 | | 3726 | | 3727 | Answer(Audio:Opus,PCMU,PCMA) | 3728 |<----------------------------------------| 3729 | | 3730 | |Bob accepts and 3731 | |indicates his 3732 | |support as well 3733 | | 3734 | Two way Opus Audio | 3735 |.........................................| 3736 | | 3737 |Per packet audio-level is included in the| 3738 |RTP header | 3739 | | 3741 +-----------------------------------+-------------------------------+ 3742 | Offer SDP Contents | RFC#/Notes | 3743 +-----------------------------------+-------------------------------+ 3744 | v=0 | [RFC4566] | 3745 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 3746 | s=- | [RFC4566] | 3747 | t=0 0 | [RFC4566] | 3748 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 3749 | | egotiation] | 3750 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3751 | ****** Audio m=line ********* | ***************************** | 3752 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 3753 | 109 0 8 | | 3754 | c=IN IP4 203.0.113.141 | [RFC4566] | 3755 | a=mid:audio | [RFC5888] | 3756 | a=msid:ma ta | Identifies RTCMediaStream ID | 3757 | | (ma) and RTCMediaStreamTrack | 3758 | | ID (ta) | 3759 | a=sendrecv | [RFC3264] | 3760 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3761 | a=rtpmap:0 PCMU/8000 | [RFC3551] | 3762 | a=rtpmap:8 PCMA/8000 | [RFC3551] | 3763 | a=maxptime:120 | [RFC4566] | 3764 | a=ice-ufrag:074c6550 | [RFC5245] | 3765 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3766 | 74af08a068 | | 3767 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 3768 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 3769 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 3770 | 9:26:33:E8:70:88:A2 | | 3771 | a=setup:actpass | [RFC4145] | 3772 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3773 | a=rtcp-mux | [RFC5761] | 3774 | a=rtcp-rsize | [RFC5506] | 3775 | a=rtcp-fb:* nack | [RFC5104] | 3776 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3777 | hdrext:ssrc-audio-level | | 3778 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3779 | hdrext:sdes:mid | egotiation] | 3780 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3781 | 192.0.2.4 61665 typ host | | 3782 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3783 | 203.0.113.141 54609 typ srflx | | 3784 | raddr 192.0.2.4 rport 61665 | | 3785 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3786 +-----------------------------------+-------------------------------+ 3788 Table 37: 5.4.1 SDP Offer 3790 +-----------------------------------+-------------------------------+ 3791 | Answer SDP Contents | RFC#/Notes | 3792 +-----------------------------------+-------------------------------+ 3793 | v=0 | [RFC4566] | 3794 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] | 3795 | s=- | [RFC4566] | 3796 | t=0 0 | [RFC4566] | 3797 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 3798 | | egotiation] | 3799 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3800 | ****** Audio m=line ********* | ***************************** | 3801 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3802 | 109 0 98 | | 3803 | c=IN IP4 203.0.113.77 | [RFC4566] | 3804 | a=mid:audio | [RFC5888] | 3805 | a=msid:ma ta | Identifies RTCMediaStream ID | 3806 | | (ma) and RTCMediaStreamTrack | 3807 | | ID (ta) | 3808 | a=sendrecv | [RFC3264] - Bob can send and | 3809 | | recv audio | 3810 | a=rtpmap:109 opus/48000/2 | [RFC7587] - Bob accepts only | 3811 | | Opus Codec | 3812 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 3813 | a=rtpmap:0 PCMA/8000 | [RFC3551] PCMA Audio Codec | 3814 | a=maxptime:120 | [RFC4566] | 3815 | a=ice-ufrag:c300d85b | [RFC5245] | 3816 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 3817 | efbabd9a2 | | 3818 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3819 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3820 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3821 | 1:58:D0:A1:2C:19:08 | | 3822 | a=setup:active | [RFC4145] | 3823 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3824 | a=rtcp-mux | [RFC5761] - Bob can perform | 3825 | | RTP/RTCP Muxing on port 49203 | 3826 | a=rtcp-rsize | [RFC5506] | 3827 | a=rtcp-fb:* nack | [RFC5104] | 3828 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 3829 | hdrext:ssrc-audio-level | | 3830 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3831 | hdrext:sdes:mid | egotiation] | 3832 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3833 | 198.51.100.7 51556 typ host | | 3834 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 3835 | 203.0.113.77 49203 typ srflx | | 3836 | raddr 198.51.100.7 rport 51556 | | 3837 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3838 +-----------------------------------+-------------------------------+ 3840 Table 38: 5.4.1 SDP Answer 3842 5.4.2. Audio Conference - Voice Activity Detection 3844 This example shows SDP for RTP header extension that allows RTP-level 3845 mixers in audio conferences to deliver information about the audio 3846 level of individual participants. 3848 Audio Conference with VAD Support 3850 Alice Mixer 3851 | | 3852 |Alice indicates her interest to audio | 3853 |levels for the contributing sources | 3854 | | 3855 |Offer(Audio:Opus,PCMU,PCMA) | 3856 |---------------------------------------->| 3857 | | 3858 | | 3859 |Answer(Audio:Opus,PCMU,PCMA) | 3860 |<----------------------------------------| 3861 | | 3862 | |Mixer indicates 3863 | |it can provide 3864 | |audio-levels 3865 |Two way Opus Audio | 3866 |.........................................| 3867 | | 3868 |Audio-levels per CSRCS is included in the| 3869 |RTP header | 3870 | | 3872 +-----------------------------------+-------------------------------+ 3873 | Offer SDP Contents | RFC#/Notes | 3874 +-----------------------------------+-------------------------------+ 3875 | v=0 | [RFC4566] | 3876 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 3877 | | Information | 3878 | s=- | [RFC4566] | 3879 | t=0 0 | [RFC4566] | 3880 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 3881 | | egotiation] | 3882 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3883 | ****** Audio m=line ********* | ***************************** | 3884 | m=audio 54609 UDP/TLS/RTP/SAVPF | [RFC4566] | 3885 | 109 0 8 | | 3886 | c=IN IP4 203.0.113.141 | [RFC4566] | 3887 | a=mid:audio | [RFC5888] | 3888 | a=msid:ma ta | Identifies RTCMediaStream ID | 3889 | | (ma) and RTCMediaStreamTrack | 3890 | | ID (ta) | 3891 | a=sendrecv | [RFC3264] - Alice can send | 3892 | | and recv audio | 3893 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3894 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 3895 | a=rtpmap:0 PCMA/8000 | [RFC3551] PCMA Audio Codec | 3896 | a=maxptime:120 | [RFC4566] | 3897 | a=ice-ufrag:074c6550 | [RFC5245] | 3898 | a=ice-pwd:a28a397a4c3f31747d1ee34 | [RFC5245] | 3899 | 74af08a068 | | 3900 | a=fingerprint:sha-256 19:E2:1C:3B | [RFC5245] | 3901 | :4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73 | | 3902 | :04 :BB:05:2F:70:9F:04:A9:0E:05:E | | 3903 | 9:26:33:E8:70:88:A2 | | 3904 | a=setup:actpass | [RFC4145] | 3905 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3906 | a=rtcp-mux | [RFC5761] | 3907 | a=rtcp-rsize | [RFC5506] | 3908 | a=rtcp-fb:* nack | [RFC5104] | 3909 | a=extmap:1/recvonly | [RFC6465] | 3910 | urn:ietf:params:rtp-hdrext:csrc- | | 3911 | audio-level | | 3912 | a=extmap:2 urn:ietf:params:rtp- | [RFC6464] | 3913 | hdrext:ssrc-audio-level | | 3914 | a=extmap:3 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3915 | hdrext:sdes:mid | egotiation] | 3916 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3917 | 192.0.2.4 61665 typ host | | 3918 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 3919 | 203.0.113.141 54609 typ srflx | | 3920 | raddr 192.0.2.4 rport 61665 | | 3921 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3922 +-----------------------------------+-------------------------------+ 3924 Table 39: 5.4.2 SDP Offer 3926 +-----------------------------------+-------------------------------+ 3927 | Answer SDP Contents | RFC#/Notes | 3928 +-----------------------------------+-------------------------------+ 3929 | v=0 | [RFC4566] | 3930 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] - Session Origin | 3931 | | Information | 3932 | s=- | [RFC4566] | 3933 | t=0 0 | [RFC4566] | 3934 | a=group:BUNDLE audio | [I-D.ietf-mmusic-sdp-bundle-n | 3935 | | egotiation] | 3936 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ice] | 3937 | ****** Audio m=line ********* | ***************************** | 3938 | m=audio 49203 UDP/TLS/RTP/SAVPF | [RFC4566] | 3939 | 109 0 98 | | 3940 | c=IN IP4 203.0.113.77 | [RFC4566] | 3941 | a=mid:audio | [RFC5888] | 3942 | a=msid:ma ta | Identifies RTCMediaStream ID | 3943 | | (ma) and RTCMediaStreamTrack | 3944 | | ID (ta) | 3945 | a=sendrecv | [RFC3264] | 3946 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 3947 | a=rtpmap:0 PCMU/8000 | [RFC3551] PCMU Audio Codec | 3948 | a=rtpmap:0 PCMA/8000 | [RFC3551] PCMA Audio Codec | 3949 | a=maxptime:120 | [RFC4566] | 3950 | a=ice-ufrag:c300d85b | [RFC5245] | 3951 | a=ice-pwd:de4e99bd291c325921d5d47 | [RFC5245] | 3952 | efbabd9a2 | | 3953 | a=fingerprint:sha-256 6B:8B:F0:65 | [RFC5245] | 3954 | :5F:78:E2:51:3B:AC:6F:F3:3F:46:1B | | 3955 | :35 :DC:B8:5F:64:1A:24:C2:43:F0:A | | 3956 | 1:58:D0:A1:2C:19:08 | | 3957 | a=setup:active | [RFC4145] | 3958 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 3959 | a=rtcp-mux | [RFC5761] | 3960 | a=rtcp-rsize | [RFC5506] | 3961 | a=rtcp-fb:* nack | [RFC5104] | 3962 | a=extmap:1/sendonly | [RFC6465] | 3963 | urn:ietf:params:rtp-hdrext:csrc- | | 3964 | audio-level | | 3965 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle-n | 3966 | hdrext:sdes:mid | egotiation] | 3967 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 3968 | 198.51.100.7 51556 typ host | | 3969 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 3970 | 203.0.113.77 49203 typ srflx | | 3971 | raddr 198.51.100.7 rport 51556 | | 3972 | a=end-of-candidates | [I-D.ietf-mmusic-trickle-ice] | 3973 +-----------------------------------+-------------------------------+ 3975 Table 40: 5.4.2 SDP Answer 3977 5.4.3. Successful legacy Interop Fallback with bundle-only 3979 In the scenario described below, Alice is a multi-stream capable 3980 WebRTC endpoint while Bob is a legacy VOIP end-point. The SDP Offer/ 3981 Answer exchange demonstrates successful session setup with fallback 3982 to audio only stream negotiated via bundle-only framework between the 3983 end-points. Specifically, 3985 o Offer from Alice describes 2 cameras via 2 video m=lines with both 3986 marked as bundle-only. 3988 o Since Bob doesnot recognize either the BUNDLE mechanism or the 3989 bundle-only attribute, he accepts only the audio stream from 3990 Alice. 3992 NOTE: Since Alice is unaware of Bob's support for BUNDLE framework, 3993 Alice ensures to include separate RTP/RTCP ports and candidate 3994 information. 3996 Successful 2-Way WebRTC <-> VOIP Interop 3998 Alice Bob 3999 | | 4000 | | 4001 | Alice is a multistream capable WebRTC end-point | 4002 | & Bob is behind a legacy VOIP system | 4003 | | 4004 |Offer(Audio:Opus Video:2 VP8,2 H2.64 Streams) with | 4005 | bundle-only | 4006 |---------------------------------------------------------->| 4007 | Alice marks both the video streams as bundle-only | 4008 | | 4009 | | 4010 | Answer(Audio:Opus) | 4011 |<----------------------------------------------------------| 4012 | |Bob 4013 | |accepts 4014 | |audio 4015 | |stream, 4016 | |since he 4017 | |doesn't 4018 | |recognize 4019 | |bundle-only 4020 | | 4021 | Two way Opus Audio | 4022 |...........................................................| 4023 | | 4024 | | 4026 +-------------------------------------+-----------------------------+ 4027 | Offer SDP Contents | RFC#/Notes | 4028 +-------------------------------------+-----------------------------+ 4029 | v=0 | [RFC4566] | 4030 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 4031 | s=- | [RFC4566] | 4032 | t=0 0 | [RFC4566] | 4033 | a=group:BUNDLE m0 m1 m2 | [I-D.ietf-mmusic-sdp-bundle | 4034 | | -negotiation] Alice | 4035 | | supports grouping of | 4036 | | m=lines under BUNDLE | 4037 | | semantics | 4038 | a=group:LS m0 m1 | [RFC5888] | 4039 | a=ice-options:trickle | [I-D.ietf-mmusic-trickle-ic | 4040 | | e] | 4041 | ****** Audio m=line ********* | *************************** | 4042 | | ** | 4043 | m=audio 54609 UDP/TLS/RTP/SAVPF 109 | [RFC4566] | 4044 | c=IN IP4 203.0.113.141 | [RFC4566] | 4045 | a=mid:m0 | [RFC5888] Audio m=line part | 4046 | | of BUNDLE group with a | 4047 | | unique port number | 4048 | a=msid:ma ta | Identifies RTCMediaStream | 4049 | | ID (ma) and | 4050 | | RTCMediaStreamTrack ID (ta) | 4051 | a=sendrecv | [RFC3264] | 4052 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 4053 | a=rtcp-fb:109 nack | [RFC5104] | 4054 | a=maxptime:120 | [RFC4566] | 4055 | a=ice-ufrag:074c6550 | [RFC5245] | 4056 | a=ice-pwd:a28a397a4c3f31747d1ee3474 | [RFC5245] | 4057 | af08a068 | | 4058 | a=fingerprint:sha-256 19:E2:1C:3B:4 | [RFC5245] | 4059 | B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04 | | 4060 | :BB:05:2F:70:9F:04:A9:0E:05:E9:26:3 | | 4061 | 3:E8:70:88:A2 | | 4062 | a=setup:actpass | [RFC4145] | 4063 | a=dtls-id:1 | [I-D.ietf-mmusic-dtls-sdp] | 4064 | a=rtcp-mux | [RFC5761] | 4065 | a=rtcp:64678 IN IP4 203.0.113.141 | [RFC3605] | 4066 | a=rtcp-rsize | [RFC5506] | 4067 | a=extmap:1 urn:ietf:params:rtp- | [RFC6464] | 4068 | hdrext:ssrc-audio-level | | 4069 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 4070 | hdrext:sdes:mid | -negotiation] | 4071 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4072 | 192.0.2.4 61665 typ host | | 4073 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 4074 | 203.0.113.141 54609 typ srflx raddr | | 4075 | 192.0.2.4 rport 61665 | | 4076 | a=candidate:0 1 UDP 2113667326 | [RFC5245] | 4077 | 192.0.2.4 61667 typ host | | 4078 | a=candidate:1 1 UDP 1694302206 | [RFC5245] | 4079 | 203.0.113.141 64678 typ srflx raddr | | 4080 | 192.0.2.4 rport 61667 | | 4081 | ****** Video-1 m=line ********* | *************************** | 4082 | | ** | 4083 | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | bundle-only video line with | 4084 | | port number set to zero | 4085 | c=IN IP4 203.0.113.141 | [RFC4566] | 4086 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle | 4087 | | -negotiation] | 4088 | a=mid:m1 | [RFC5888] Video m=line part | 4089 | | of BUNDLE group | 4090 | a=msid:ma tb | Identifies RTCMediaStream | 4091 | | ID (ma) and | 4092 | | RTCMediaStreamTrack ID (tb) | 4093 | a=sendrecv | [RFC3264] | 4094 | a=rtpmap:98 VP8/90000 | [RFC7741] | 4095 | a=imageattr:98 [x=1280,y=720] | [RFC6236] | 4096 | a=fmtp:98 max-fr=30 | [RFC4566] | 4097 | a=rtcp-fb:* nack | [RFC5104] | 4098 | a=rtcp-fb:* nack pli | [RFC5104] | 4099 | a=rtcp-fb:* ccm fir | [RFC5104] | 4100 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 4101 | hdrext:sdes:mid | -negotiation] | 4102 | ****** Video-2 m=line ********* | *************************** | 4103 | | ** | 4104 | m=video 0 UDP/TLS/RTP/SAVPF 101 103 | bundle-only video line with | 4105 | | port number set to zero | 4106 | c=IN IP4 203.0.113.141 | [RFC4566] | 4107 | a=bundle-only | [I-D.ietf-mmusic-sdp-bundle | 4108 | | -negotiation] | 4109 | a=mid:m2 | [RFC5888] Video m=line part | 4110 | | of BUNDLE group | 4111 | a=msid:ma tc | Identifies RTCMediaStream | 4112 | | ID (ma) and | 4113 | | RTCMediaStreamTrack ID (tc) | 4114 | a=sendrecv | [RFC3264] | 4115 | a=rtpmap:101 H264/90000 | [RFC6184] | 4116 | a=rtpmap:103 H264/90000 | [RFC6184] | 4117 | a=fmtp:101 profile-level-id=4d0028 | [RFC6184]Camera-2,Encoding- | 4118 | ;packetization-mode=1;max-fr=30 | 1 Resolution | 4119 | a=rtcp-fb:* nack | [RFC5104] | 4120 | a=rtcp-fb:* nack pli | [RFC5104] | 4121 | a=rtcp-fb:* ccm fir | [RFC5104] | 4122 | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sdp-bundle | 4123 | hdrext:sdes:mid | -negotiation] | 4124 +-------------------------------------+-----------------------------+ 4126 Table 41: 5.4.3 SDP Simulcast bundle-only 4128 +----------------------------------------+--------------------------+ 4129 | Answer SDP Contents | RFC#/Notes | 4130 +----------------------------------------+--------------------------+ 4131 | v=0 | [RFC4566] | 4132 | o=- 20519 0 IN IP4 0.0.0.0 | [RFC4566] | 4133 | s=- | [RFC4566] | 4134 | t=0 0 | [RFC4566] | 4135 | ****** Audio m=line ********* | ************************ | 4136 | | ***** | 4137 | m=audio 49203 UDP/TLS/RTP/SAVPF 109 | [RFC4566] | 4138 | c=IN IP4 203.0.113.141 | [RFC4566] | 4139 | a=rtcp:60065 IN IP4 203.0.113.141 | [RFC3605] | 4140 | a=sendrecv | [RFC3264] | 4141 | a=rtpmap:109 opus/48000/2 | [RFC7587] | 4142 | a=maxptime:120 | [RFC4566] | 4143 | a=ice-ufrag:ufrag:c300d85b | [RFC5245] | 4144 | a=ice- | [RFC5245] | 4145 | pwd:de4e99bd291c325921d5d47efbabd9a2 | | 4146 | a=fingerprint:sha-256 6B:8B:F0:65:5F:7 | [RFC5245] | 4147 | 8:E2:51:3B:AC:6F:F3:3F:46:1B:35 :DC:B8 | | 4148 | :5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:1 | | 4149 | 9:08 | | 4150 | a=setup:active | [RFC4145] | 4151 | a=rtcp-rsize | [RFC5506] | 4152 | a=rtcp-fb:109 nack | [RFC5104] | 4153 | a=extmap:1 urn:ietf:params:rtp-hdrext | [RFC6464] | 4154 | :ssrc-audio-level | | 4155 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4156 | 198.51.100.7 51556 typ host | | 4157 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 4158 | 203.0.113.77 49203 typ srflx raddr | | 4159 | 198.51.100.7 rport 51556 | | 4160 | a=candidate:0 2 UDP 2113667326 | [RFC5245] | 4161 | 198.51.100.7 51558 typ host | | 4162 | a=candidate:1 2 UDP 1694302206 | [RFC5245] | 4163 | 203.0.113.77 60065 typ srflx raddr | | 4164 | 198.51.100.7 rport 51558 | | 4165 | ****** Video m=line ********* | ************************ | 4166 | | ***** | 4167 | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | Bob doesn't recognize | 4168 | | bundle-only and hence | 4169 | | the m=line is rejected | 4170 | | implicitly due to port 0 | 4171 | ****** Video m=line ********* | ************************ | 4172 | | ***** | 4173 | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | Bob doesn't recognize | 4174 | | bundle-only and hence | 4175 | | the m=line is rejected | 4176 | | implicitly due to port 0 | 4177 +----------------------------------------+--------------------------+ 4179 Table 42: 5.4.3 SDP Answer 4181 5.4.4. Legacy Interop with RTP/AVP profile 4183 In the scenario desribed below, Alice is a legacy end-point which 4184 sends [RFC3264] Offer with RTP/AVP based audio and video descriptions 4185 along with DTLS fingerprint and RTCP feedback information. 4187 On the other hand, Bob being a WebRTC end-point follows the 4188 procedures in section 5.1.2 of [I-D.ietf-rtcweb-jsep] and accepts the 4189 Alice's offer for DTLS-SRTP based session with RTCP feedback. 4191 Successful 2-Way WebRTC <-> VOIP Interop 4193 Alice Bob 4194 | | 4195 | | 4196 |Alice is a legacy VOIP End-point & Bob is a WebRTC End-Point| 4197 | | 4198 | | 4199 | | 4200 | Offer(Audio:Opus Video:H.264) | 4201 |----------------------------------------------------------->| 4202 | | 4203 | | 4204 |Alice includes : | 4205 |Legacy compliant media description (RTP/AVP) with dtls | 4206 |fingerprint and rtcp feedback support | 4207 | | 4208 | Answer(Audio:Opus, Video:H.264) | 4209 |<-----------------------------------------------------------| 4210 | |Bob 4211 | |accepts 4212 | |"legacy 4213 | |compliant" 4214 | |m=line 4215 | | 4216 | | 4217 | Two way Opus Audio, H.264 Video | 4218 |............................................................| 4219 | Session also suports RTP/RTCP Mux, RTCP Feedback | 4220 | | 4222 +----------------------------------------+--------------------------+ 4223 | Offer SDP Contents | RFC#/Notes | 4224 +----------------------------------------+--------------------------+ 4225 | v=0 | [RFC4566] | 4226 | o=- 20518 0 IN IP4 0.0.0.0 | [RFC4566] | 4227 | s=- | [RFC4566] | 4228 | t=0 0 | [RFC4566] | 4229 | a=ice-ufrag:074c6550 | [RFC5245] | 4230 | a=ice- | [RFC5245] | 4231 | pwd:a28a397a4c3f31747d1ee3474af08a068 | | 4232 | a=rtcp-rsize | [RFC5506] | 4233 | ****** Audio m=line ********* | ************************ | 4234 | | ***** | 4235 | m=audio 54732 RTP/AVP 109 | [RFC4566]Alice includes | 4236 | | RTP/AVP audio stream | 4237 | | description | 4238 | c=IN IP4 203.0.113.141 | [RFC4566] | 4239 | a=fingerprint:sha-256 19:E2:1C:3B:4B:9 | [RFC5245] | 4240 | F:81:E6:B8:5C:F4:A5:A8:D8:73:04 :BB:05 | | 4241 | :2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:8 | | 4242 | 8:A2 | | 4243 | a=rtpmap:109 opus/48000 | | 4244 | a=ptime:20 | | 4245 | a=sendrecv | [RFC3264] | 4246 | a=rtcp-mux | [RFC5761]Alice still | 4247 | | includes RTP/RTCP Mux | 4248 | | support | 4249 | a=rtcp:64678 IN IP4 203.0.113.141 | [RFC3605] | 4250 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4251 | 192.0.2.4 54732 typ host | | 4252 | a=candidate:1 1 UDP 694302207 | [RFC5245] | 4253 | 203.0.113.141 54732 typ srflx raddr | | 4254 | 192.0.2.4 rport 54732 | | 4255 | a=candidate:0 2 UDP 2113667326 | [RFC5245] | 4256 | 192.0.2.4 64678 typ host | | 4257 | a=candidate:1 2 UDP 1694302206 | [RFC5245] | 4258 | 203.0.113.141 64678 typ srflx raddr | | 4259 | 192.0.2.4 rport 64678 | | 4260 | a=rtcp-fb:109 nack | [RFC5104]She adds her | 4261 | | intent for NACK RTCP | 4262 | | feedback support | 4263 | ****** Video m=line ********* | ************************ | 4264 | | ***** | 4265 | m=video 62445 RTP/AVP 120 | [RFC4566]Alice includes | 4266 | | RTP/AVP video stream | 4267 | | description | 4268 | c=IN IP4 203.0.113.141 | [RFC4566] | 4269 | a=fingerprint:sha-256 DC:B8:5F:64:1A:2 | [RFC5245] | 4270 | 4:C2:43:F0:A1:58:D0:A1:2C:19:08 :6B:8B | | 4271 | :F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1 | | 4272 | B:35 | | 4273 | a=rtpmap:120 VP8/90000 | [RFC7741] | 4274 | a=sendrecv | [RFC3264] | 4275 | a=rtcp-mux | [RFC5761]Alice intends | 4276 | | to perform RTP/RTCP Mux | 4277 | a=rtcp:54721 IN IP4 203.0.113.141 | [RFC3605] | 4278 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4279 | 192.0.2.4 62445 typ host | | 4280 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 4281 | 203.0.113.141 62537 typ srflx raddr | | 4282 | 192.0.2.4 rport 62445 | | 4283 | a=candidate:0 2 2113667326 192.0.2.4 | [RFC5245] | 4284 | 54721 typ host | | 4285 | a=candidate:1 2 UDP 1694302206 | [RFC5245] | 4286 | 203.0.113.141 54721 typ srflx raddr | | 4287 | 192.0.2.4 rport 54721 | | 4288 | a=rtcp-fb:120 nack pli | [RFC5104] Alice | 4289 | | indicates support for | 4290 | | Picture loss Indication | 4291 | | and NACK RTCP feedback | 4292 | a=rtcp-fb:120 ccm fir | [RFC5104] | 4293 +----------------------------------------+--------------------------+ 4295 Table 43: 5.4.5 SDP Offer 4297 +----------------------------------------+--------------------------+ 4298 | Answer SDP Contents | RFC#/Notes | 4299 +----------------------------------------+--------------------------+ 4300 | v=0 | [RFC4566] | 4301 | o=- 16833 0 IN IP4 0.0.0.0 | [RFC4566] | 4302 | s=- | [RFC4566] | 4303 | t=0 0 | [RFC4566] | 4304 | ****** Audio m=line ********* | ************************ | 4305 | | ***** | 4306 | m=audio 49203 RTP/AVP 109 | [RFC4566] Bob accepts | 4307 | | RTP/AVP based audio | 4308 | | stream | 4309 | c=IN IP4 203.0.113.77 | [RFC4566] | 4310 | a=rtpmap:109 opus/48000 | | 4311 | a=ptime:20 | | 4312 | a=sendrecv | [RFC3264] | 4313 | a=ice-ufrag:c300d85b | [RFC5245] | 4314 | a=ice- | [RFC5245] | 4315 | pwd:de4e99bd291c325921d5d47efbabd9a2 | | 4316 | a=fingerprint:sha-256 BB:05:2F:70:9F:0 | [RFC5245] | 4317 | 4:A9:0E:05:E9:26:33:E8:70:88:A2 :19:E2 | | 4318 | :1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:7 | | 4319 | 3:04 | | 4320 | a=rtcp-mux | [RFC5761] | 4321 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4322 | 198.51.100.7 49203 typ host | | 4323 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 4324 | 203.0.113.77 49203 typ srflx raddr | | 4325 | 198.51.100.7 rport 49203 | | 4326 | a=rtcp-fb:109 nack | [RFC5104] | 4327 | ****** Video m=line ********* | ************************ | 4328 | | ***** | 4329 | m=video 63130 RTP/SAVP 120 | [RFC4566] Bob accepts | 4330 | | RTP/AVP based video | 4331 | | stram | 4332 | c=IN IP4 203.0.113.77 | [RFC4566] | 4333 | a=rtpmap:120 VP8/90000 | [RFC7741] | 4334 | a=sendrecv | [RFC3264] | 4335 | a=ice-ufrag:e39091na | [RFC5245] | 4336 | a=ice- | [RFC5245] | 4337 | pwd:dbc325921d5dd29e4e99147efbabd9a2 | | 4338 | a=fingerprint:sha-256 BB:0A9:0E:05:E9: | [RFC5245] | 4339 | 26:33:E8:70:88:A25:2F:70:9F:04: :19:E2 | | 4340 | :1C:3B:4B:9F:81:5:2F:70:9F:04::F4:A5:A | | 4341 | 8:D8: | | 4342 | a=rtcp-mux | [RFC5761] | 4343 | a=candidate:0 1 UDP 2113667327 | [RFC5245] | 4344 | 198.51.100.7 63130 typ host | | 4345 | a=candidate:1 1 UDP 1694302207 | [RFC5245] | 4346 | 203.0.113.77 63130 typ srflx raddr | | 4347 | 198.51.100.7 rport 63130 | | 4348 | a=rtcp-fb:120 nack pli | [RFC5104] | 4349 | a=rtcp-fb:120 ccm fir | [RFC5104] | 4350 +----------------------------------------+--------------------------+ 4352 Table 44: 5.4.5 SDP Answer 4354 6. IANA Considerations 4356 This document requires no actions from IANA. 4358 7. Security Considerations 4360 The IETF has published separate documents 4361 [I-D.ietf-rtcweb-security-arch] [I-D.ietf-rtcweb-security] describing 4362 the security architecture for WebRTC as a whole. 4364 In addition, since the SDP offer and answer messages can contain 4365 private information about addresses and sessions to be established 4366 between parties, if this information needs to be kept private, some 4367 security mechanism (using TLS transport for example) in the protocol 4368 used to carry the offers and answers must be used. 4370 8. Acknowledgments 4372 We would like to thank Justin Uberti, Chris Flo, Paul Kyzivat for 4373 their detailed review and inputs. 4375 9. Change Log 4377 [RFC EDITOR NOTE: Please remove this section when publishing] 4379 Changes from draft-ietf-rtcweb-sdp-04 4381 o Add IPv6 Example. 4383 o Add a=rtcp-mux-only and fix a=rtcp in examples. 4385 o Fix Idnits. 4387 o Add Security Considerations section. 4389 Changes from draft-ietf-rtcweb-sdp-02 to draft-ietf-rtcweb-sdp-04 4391 o Alignment with JSEP-19. 4393 o Added a=identity example. 4395 o Added a=dtls-id, a=group:LS in the examples. 4397 o Added Appendix section to capture list of checklists for the 4398 attributes. 4400 o Removed SSRC lines to match JSEP-19. 4402 o Closed open issues on a=fingerprint, a=rtcp and a=rtcp-mux-only 4403 from ietf96 to reflect JSEP-19. 4405 o Simplied Inter-op example 4407 Changes from draft-ietf-rtcweb-sdp-02 4409 o Version increment to avoid expiry 4411 Changes from draft-ietf-rtcweb-sdp-01 4413 o Complete face-lift 4415 o Added visual markers around m=lines to indicate their type, added 4416 spacing between tables for aiding readers 4418 o Updated table names to indicate offer vs answer 4420 o Attempted to align to latest versions of SCTP, BUNDLE, MSID drafts 4422 o Added mid header extensions to all the lines 4424 o Harmonized BUNDLE semantics and conventions updated. 4426 Changes from draft-ietf-rtcweb-sdp-00 4428 o Updated Simulcast/FEC/RTX examples to use RID framework 4430 o Fixed BUNDLE references for a=bundle-only 4432 Changes from draft-nandakumar-rtcweb-sdp-08 4434 o Fixed typos 4436 o Moved to a WG version 4438 Changes from draft-nandakumar-rtcweb-sdp-06 and draft-nandakumar- 4439 rtcweb-sdp-07 4441 o Added clarification on Call-Flow diagram usage 4443 o More cleanups 4445 Changes from draft-nandakumar-rtcweb-sdp-05 4447 o Added Ascii chart for all the SDP Eaxamples 4449 o Improved text and updated SDP Examples for Simulcast and FEC 4451 o Fixed MediaStream ID Semantics SDP Errors 4453 Changes from draft-nandakumar-rtcweb-sdp-04 4455 o Interim version of the draft to avert expiry 4457 o Corrected placement of c= line as per RFC4566 4459 o Updated simulcast SDP to reflect draft-westerlund-avtcore-rtp- 4460 simulcast-04 4462 Changes from draft-nandakumar-rtcweb-sdp-03 4464 o Aligned more closely with JSEP version -05 4465 o Added Conventions to help readability 4467 o Add more examples to clarify BUNDLE use-cases 4469 Changes from draft-nandakumar-rtcweb-sdp-02 4471 o Major refactoring was done to group the examples in to categories 4473 o SDP was updated through out to reflect JSEP-04 style of defining 4474 attributes per m=line than at the session level. 4476 o Added 8 new examples. 4478 o Updated references for Trickle, Unified Plan 4480 o Add section to explain the syntax conventions followed in the 4481 examples. 4483 Changes from draft-nandakumar-rtcweb-sdp-01 4485 o Updated references to OPUS RTP Payload Specification. 4487 o Updated BUNDLE examples based on the latest draft-ietf-mmusic-sdp- 4488 bundle-negotiation. 4490 o Added examples for multiple audio and video flows based on Unified 4491 Plan. 4493 o Added new examples for RTX and FEC streams 4495 o Updated Simulcast and SVC examples 4497 Changes from draft-nandakumar-rtcweb-sdp-00 4499 o Fixed editorial comments on the mailing list. 4501 o Updated Data-channel SDP information based on draft-ietf-mmusic- 4502 sctp-sdp. 4504 o Updated BUNDLE examples based on draft-ietf-mmusic-sdp-bundle- 4505 negotiation. 4507 o Added examples for few more BUNDLE variants 4509 o Added new examples for Simulcast and SVC 4511 10. Informative References 4513 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 4514 with Session Description Protocol (SDP)", RFC 3264, DOI 4515 10.17487/RFC3264, June 2002, 4516 . 4518 [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in 4519 the Session Description Protocol (SDP)", RFC 4145, DOI 4520 10.17487/RFC4145, September 2005, 4521 . 4523 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 4524 Description Protocol", RFC 4566, DOI 10.17487/RFC4566, 4525 July 2006, . 4527 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4528 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 4529 RFC2119, March 1997, 4530 . 4532 [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment 4533 (ICE): A Protocol for Network Address Translator (NAT) 4534 Traversal for Offer/Answer Protocols", RFC 5245, DOI 4535 10.17487/RFC5245, April 2010, 4536 . 4538 [RFC5506] Johansson, I. and M. Westerlund, "Support for Reduced-Size 4539 Real-Time Transport Control Protocol (RTCP): Opportunities 4540 and Consequences", RFC 5506, DOI 10.17487/RFC5506, April 4541 2009, . 4543 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and 4544 Video Conferences with Minimal Control", STD 65, RFC 3551, 4545 DOI 10.17487/RFC3551, July 2003, 4546 . 4548 [RFC4796] Hautakorpi, J. and G. Camarillo, "The Session Description 4549 Protocol (SDP) Content Attribute", RFC 4796, DOI 10.17487/ 4550 RFC4796, February 2007, 4551 . 4553 [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and 4554 Control Packets on a Single Port", RFC 5761, DOI 10.17487/ 4555 RFC5761, April 2010, 4556 . 4558 [RFC5104] Wenger, S., Chandra, U., Westerlund, M., and B. Burman, 4559 "Codec Control Messages in the RTP Audio-Visual Profile 4560 with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104, 4561 February 2008, . 4563 [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R. 4564 Hakenberg, "RTP Retransmission Payload Format", RFC 4588, 4565 DOI 10.17487/RFC4588, July 2006, 4566 . 4568 [RFC5956] Begen, A., "Forward Error Correction Grouping Semantics in 4569 the Session Description Protocol", RFC 5956, DOI 10.17487/ 4570 RFC5956, September 2010, 4571 . 4573 [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description 4574 Protocol (SDP) Grouping Framework", RFC 5888, DOI 4575 10.17487/RFC5888, June 2010, 4576 . 4578 [RFC6236] Johansson, I. and K. Jung, "Negotiation of Generic Image 4579 Attributes in the Session Description Protocol (SDP)", RFC 4580 6236, DOI 10.17487/RFC6236, May 2011, 4581 . 4583 [RFC6184] Wang, Y., Even, R., Kristensen, T., and R. Jesup, "RTP 4584 Payload Format for H.264 Video", RFC 6184, DOI 10.17487/ 4585 RFC6184, May 2011, 4586 . 4588 [RFC5583] Schierl, T. and S. Wenger, "Signaling Media Decoding 4589 Dependency in the Session Description Protocol (SDP)", RFC 4590 5583, DOI 10.17487/RFC5583, July 2009, 4591 . 4593 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 4594 Jacobson, "RTP: A Transport Protocol for Real-Time 4595 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 4596 July 2003, . 4598 [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, 4599 A., Peterson, J., Sparks, R., Handley, M., and E. 4600 Schooler, "SIP: Session Initiation Protocol", RFC 3261, 4601 DOI 10.17487/RFC3261, June 2002, 4602 . 4604 [RFC3605] Huitema, C., "Real Time Control Protocol (RTCP) attribute 4605 in Session Description Protocol (SDP)", RFC 3605, DOI 4606 10.17487/RFC3605, October 2003, 4607 . 4609 [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF 4610 Digits, Telephony Tones, and Telephony Signals", RFC 4733, 4611 DOI 10.17487/RFC4733, December 2006, 4612 . 4614 [RFC6464] Lennox, J., Ed., Ivov, E., and E. Marocco, "A Real-time 4615 Transport Protocol (RTP) Header Extension for Client-to- 4616 Mixer Audio Level Indication", RFC 6464, DOI 10.17487/ 4617 RFC6464, December 2011, 4618 . 4620 [RFC6465] Ivov, E., Ed., Marocco, E., Ed., and J. Lennox, "A Real- 4621 time Transport Protocol (RTP) Header Extension for Mixer- 4622 to-Client Audio Level Indication", RFC 6465, DOI 10.17487/ 4623 RFC6465, December 2011, 4624 . 4626 [RFC7587] Spittka, J., Vos, K., and JM. Valin, "RTP Payload Format 4627 for the Opus Speech and Audio Codec", RFC 7587, DOI 4628 10.17487/RFC7587, June 2015, 4629 . 4631 [RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. 4632 Galligan, "RTP Payload Format for VP8 Video", RFC 7741, 4633 DOI 10.17487/RFC7741, March 2016, 4634 . 4636 [RFC7826] Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M., 4637 and M. Stiemerling, Ed., "Real-Time Streaming Protocol 4638 Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December 4639 2016, . 4641 [I-D.ietf-mmusic-sdp-bundle-negotiation] 4642 Holmberg, C., Alvestrand, H., and C. Jennings, 4643 "Negotiating Media Multiplexing Using the Session 4644 Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- 4645 negotiation-37 (work in progress), March 2017. 4647 [I-D.ietf-mmusic-sdp-simulcast] 4648 Burman, B., Westerlund, M., Nandakumar, S., and M. Zanaty, 4649 "Using Simulcast in SDP and RTP Sessions", draft-ietf- 4650 mmusic-sdp-simulcast-08 (work in progress), March 2017. 4652 [I-D.ietf-mmusic-rid] 4653 Thatcher, P., Zanaty, M., Nandakumar, S., Burman, B., 4654 Roach, A., and B. Campen, "RTP Payload Format 4655 Restrictions", draft-ietf-mmusic-rid-10 (work in 4656 progress), March 2017. 4658 [I-D.ietf-rtcweb-jsep] 4659 Uberti, J., Jennings, C., and E. Rescorla, "Javascript 4660 Session Establishment Protocol", draft-ietf-rtcweb-jsep-20 4661 (work in progress), March 2017. 4663 [I-D.ietf-mmusic-trickle-ice] 4664 Ivov, E., Rescorla, E., and J. Uberti, "Trickle ICE: 4665 Incremental Provisioning of Candidates for the Interactive 4666 Connectivity Establishment (ICE) Protocol", draft-ietf- 4667 mmusic-trickle-ice-02 (work in progress), January 2015. 4669 [I-D.ietf-mmusic-msid] 4670 Alvestrand, H., "WebRTC MediaStream Identification in the 4671 Session Description Protocol", draft-ietf-mmusic-msid-16 4672 (work in progress), February 2017. 4674 [I-D.ietf-mmusic-sctp-sdp] 4675 Holmberg, C., Shpount, R., Loreto, S., and G. Camarillo, 4676 "Session Description Protocol (SDP) Offer/Answer 4677 Procedures For Stream Control Transmission Protocol (SCTP) 4678 over Datagram Transport Layer Security (DTLS) Transport.", 4679 draft-ietf-mmusic-sctp-sdp-25 (work in progress), March 4680 2017. 4682 [I-D.ietf-rtcweb-data-channel] 4683 Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data 4684 Channels", draft-ietf-rtcweb-data-channel-13 (work in 4685 progress), January 2015. 4687 [I-D.ietf-payload-flexible-fec-scheme] 4688 Singh, V., Begen, A., Zanaty, M., and G. Mandyam, "RTP 4689 Payload Format for Flexible Forward Error Correction 4690 (FEC)", draft-ietf-payload-flexible-fec-scheme-04 (work in 4691 progress), March 2017. 4693 [I-D.ietf-mmusic-mux-exclusive] 4694 Holmberg, C., "Indicating Exclusive Support of RTP/RTCP 4695 Multiplexing using SDP", draft-ietf-mmusic-mux- 4696 exclusive-11 (work in progress), February 2017. 4698 [I-D.ietf-mmusic-dtls-sdp] 4699 Holmberg, C. and R. Shpount, "Using the SDP Offer/Answer 4700 Mechanism for DTLS", draft-ietf-mmusic-dtls-sdp-22 (work 4701 in progress), March 2017. 4703 [I-D.ietf-rtcweb-security-arch] 4704 Rescorla, E., "WebRTC Security Architecture", draft-ietf- 4705 rtcweb-security-arch-12 (work in progress), June 2016. 4707 [I-D.ietf-rtcweb-security] 4708 Rescorla, E., "Security Considerations for WebRTC", draft- 4709 ietf-rtcweb-security-08 (work in progress), February 2015. 4711 [WebRTC] W3C, "WebRTC 1.0: Real-time Communication Between 4712 Browsers", 4713 , . 4715 Appendix A. Appendix 4717 A.1. JSEP SDP Attributes Checklist 4719 This section compiles a high-level checklist of the required SDP 4720 attributes to be verified against the examples defined in this 4721 specification. The goal here is to ensure that the examples are 4722 compliant to the rules defined in section 5 of the 4723 [I-D.ietf-rtcweb-jsep] specification. 4725 A.1.1. Common Checklist 4727 This subsection lists SDP attributes that mostly apply at the session 4728 level. 4730 o v=0 MUST be the first SDP line. 4732 o o= line MUST follow with values '-' for username, 64 bit value for 4733 session id and dummy values for 'nettype', 'addrtype' and 4734 'unicast-address' (for example: IN IP4 0.0.0.0). 4736 o o= line MUST have the session version incremented in the cases of 4737 subsequent offers. 4739 o s= MUST be the third line with the value of '-'. 4741 o t= line MUST follow with the values for 'start-time' and 'stop- 4742 time' set to zeroes. 4744 o a=identity line MUST be included at the session level if WEBRTC 4745 Identity mechanism is being used. 4747 o a=ice-options:trickle MUST be present at the session level in all 4748 offers and answers when supported. 4750 A.1.2. RTP Media Description Checklist 4752 Following set of checklist items apply to RTP audio and video media 4753 descriptions. 4755 o The media description's port value MUST either be set to dummy 4756 value of '9' or MUST use the port from the default candidate, if 4757 available. 4759 o The media description's proto value MUST be 'UDP/TLS/RTP/SAVPF' 4760 for JSEP offers. 4762 o JSEP answerer MUST support any combination of "RTP/[S]AVP[F]" for 4763 interoperability scenarios as defined in section 5 of 4764 [I-D.ietf-rtcweb-jsep] 4766 o c= line MUST be the first line in a media description. A dummy 4767 value of 'IN IP 0.0.0.0' is set if there are no candidates 4768 gathered or its value MUST match the default candidate. 4770 o a=mid attribute MUST be in included. 4772 o One of a=sendrecv/a=sendonly/a=recvonly/a=inactive SDP direction 4773 attributes MUST be present. 4775 o a=rtpmap and a=fmtp attributes per primary, retransmission and 4776 forward error correction media format MUST be included. 4778 o a=rtcp-fb lines for each supported feedback mechanism MUST be 4779 included when using RTP with feedback 4781 o a=imageattr can be optionally present for video media 4782 descriptions. 4784 o a=msid line MUST be included for all the media senders identifying 4785 the MediaStreamTrack (i.e when a=sendonly/a=sendrecv attribute is 4786 present). 4788 o a=extmap line identifying the BUNDLE header extension MUST be 4789 present. 4791 o a=extmap lines for other supported RTP header extensions MUST be 4792 included. 4794 o a=rid line 'per encoding' with the direction of 'send' MUST be 4795 included when further constraining the media format or multiple 4796 encodings per media format is needed. 4798 o a=simulcast line MUST be present if there exists more than one 4799 'a=rid' lines for the media senders. 4801 o a=bundle-only attribute MUST be present for media descriptions 4802 that are impacted by various bundle policies (such as max-bundle/ 4803 balanced) 4805 o For media descriptions that aren't "a=bundle-only" and that have 4806 unique address, following attributes MUST be present: 4808 * a=ice-ufrag and a=ice-pwd 4810 * a=fingerprint 4812 * a=setup with value 'actpass' in the offers and a value of 4813 'active'/'passive' in the answerer. 4815 * a=dtls-id 4817 * a=rtcp 4819 * a=rtcp-mux 4821 * For offerers requiring RTCP to be multiplexed, 'a=rtcp-mux- 4822 only' line 4824 * a=rtcp-rsize 4826 o a=group:BUNDLE line with all the 'mid' identifiers part of the 4827 BUNDLE group is included at the session level. 4829 o a=group:LS session level attribute MUST be included wth the 'mid' 4830 identifiers that are part of the lip same sync group. 4832 A.1.3. DataChannel Media Description checklist 4834 If a datachannel is required, an 'application' type media description 4835 MUST be included with the following properties: 4837 o Media description's proto value MUST be 'UDP/DTLS/SCTP' in the 4838 JSEP offers. 4840 o An JSEP answerer MUST support reception of 4841 'UDP/DTLS/SCTP'/'TCP/DTLS/SCTP'/'DTLS/SCTP' for backward 4842 compatibility reasons. 4844 o A value of 'webrtc-datachannel' MUST be used for the media 4845 description 'fmt' value. 4847 o a=mid line MUST be present. 4849 o a=sctp-port with SCTP port number MUST be included. 4851 o a=max-message-size MAY be included, if appropriate. 4853 Authors' Addresses 4855 Suhas Nandakumar 4856 Cisco 4857 170 West Tasman Drive 4858 San Jose, CA 95134 4859 USA 4861 Email: snandaku@cisco.com 4863 Cullen Jennings 4864 Cisco 4865 170 West Tasman Drive 4866 San Jose, CA 95134 4867 USA 4869 Phone: +1 408 421-9990 4870 Email: fluffy@cisco.com