| < draft-ietf-mmusic-rfc8843bis-04.txt | draft-ietf-mmusic-rfc8843bis-05.txt > | |||
|---|---|---|---|---|
| MMUSIC Working Group C. Holmberg | MMUSIC Working Group C. Holmberg | |||
| Internet-Draft Ericsson | Internet-Draft Ericsson | |||
| Obsoletes: 8843 (if approved) H. Alvestrand | Obsoletes: 8843 (if approved) H. Alvestrand | |||
| Updates: 3264, 5888, 7941 (if approved) Google | Updates: 3264, 5888, 7941 (if approved) Google | |||
| Intended status: Standards Track C. Jennings | Intended status: Standards Track C. Jennings | |||
| Expires: 5 January 2022 Cisco | Expires: 10 March 2022 Cisco | |||
| 4 July 2021 | 6 September 2021 | |||
| Negotiating Media Multiplexing Using the Session Description Protocol | Negotiating Media Multiplexing Using the Session Description Protocol | |||
| (SDP) | (SDP) | |||
| draft-ietf-mmusic-rfc8843bis-04 | draft-ietf-mmusic-rfc8843bis-05 | |||
| Abstract | Abstract | |||
| This specification defines a new Session Description Protocol (SDP) | This specification defines a new Session Description Protocol (SDP) | |||
| Grouping Framework extension called 'BUNDLE'. The extension can be | Grouping Framework extension called 'BUNDLE'. The extension can be | |||
| used with the SDP offer/answer mechanism to negotiate the usage of a | used with the SDP offer/answer mechanism to negotiate the usage of a | |||
| single transport (5-tuple) for sending and receiving media described | single transport (5-tuple) for sending and receiving media described | |||
| by multiple SDP media descriptions ("m=" sections). Such transport | by multiple SDP media descriptions ("m=" sections). Such transport | |||
| is referred to as a BUNDLE transport, and the media is referred to as | is referred to as a BUNDLE transport, and the media is referred to as | |||
| bundled media. The "m=" sections that use the BUNDLE transport form | bundled media. The "m=" sections that use the BUNDLE transport form | |||
| skipping to change at page 1, line 48 ¶ | skipping to change at page 1, line 48 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 5 January 2022. | This Internet-Draft will expire on 10 March 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 48 ¶ | skipping to change at page 2, line 48 ¶ | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. Applicability Statement . . . . . . . . . . . . . . . . . . . 8 | 4. Applicability Statement . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. SDP Grouping Framework BUNDLE Extension . . . . . . . . . . . 8 | 5. SDP Grouping Framework BUNDLE Extension . . . . . . . . . . . 8 | |||
| 6. SDP 'bundle-only' Attribute . . . . . . . . . . . . . . . . . 9 | 6. SDP 'bundle-only' Attribute . . . . . . . . . . . . . . . . . 9 | |||
| 7. SDP Offer/Answer Procedures . . . . . . . . . . . . . . . . . 10 | 7. SDP Offer/Answer Procedures . . . . . . . . . . . . . . . . . 10 | |||
| 7.1. Generic SDP Considerations . . . . . . . . . . . . . . . 11 | 7.1. Generic SDP Considerations . . . . . . . . . . . . . . . 11 | |||
| 7.1.1. Connection Data ("c=") . . . . . . . . . . . . . . . 11 | 7.1.1. Connection Data ("c=") . . . . . . . . . . . . . . . 11 | |||
| 7.1.2. Bandwidth ("b=") . . . . . . . . . . . . . . . . . . 11 | 7.1.2. Bandwidth ("b=") . . . . . . . . . . . . . . . . . . 11 | |||
| 7.1.3. Attributes ("a=") . . . . . . . . . . . . . . . . . . 11 | 7.1.3. Attributes ("a=") . . . . . . . . . . . . . . . . . . 11 | |||
| 7.2. Generating the Initial SDP Offer . . . . . . . . . . . . 12 | 7.2. Generating the Initial BUNDLE Offer . . . . . . . . . . . 12 | |||
| 7.2.1. Suggesting the Offerer-Tagged 'm=' Section . . . . . 13 | 7.2.1. Suggesting the Offerer-Tagged 'm=' Section . . . . . 13 | |||
| 7.2.2. Example: Initial SDP Offer . . . . . . . . . . . . . 14 | 7.2.2. Example: Initial BUNDLE Offer . . . . . . . . . . . . 14 | |||
| 7.3. Generating the SDP Answer . . . . . . . . . . . . . . . . 15 | 7.3. Generating the SDP Answer . . . . . . . . . . . . . . . . 15 | |||
| 7.3.1. Answerer Selection of Tagged 'm=' Sections . . . . . 17 | 7.3.1. Answerer Selection of Tagged 'm=' Sections . . . . . 17 | |||
| 7.3.2. Moving a Media Description Out of a BUNDLE Group . . 17 | 7.3.2. Moving a Media Description Out of a BUNDLE Group . . 17 | |||
| 7.3.3. Rejecting a Media Description in a BUNDLE Group . . . 18 | 7.3.3. Rejecting a Media Description in a BUNDLE Group . . . 18 | |||
| 7.3.4. Example: SDP Answer . . . . . . . . . . . . . . . . . 19 | 7.3.4. Example: SDP Answer . . . . . . . . . . . . . . . . . 19 | |||
| 7.3.5. RFC 8843 Considerations . . . . . . . . . . . . . . . 20 | 7.3.5. RFC 8843 Considerations . . . . . . . . . . . . . . . 20 | |||
| 7.4. Offerer Processing of the SDP Answer . . . . . . . . . . 21 | 7.4. Offerer Processing of the SDP Answer . . . . . . . . . . 21 | |||
| 7.4.1. RFC 8843 Considerations . . . . . . . . . . . . . . . 21 | 7.4.1. RFC 8843 Considerations . . . . . . . . . . . . . . . 21 | |||
| 7.5. Modifying the Session . . . . . . . . . . . . . . . . . . 22 | 7.5. Modifying the Session . . . . . . . . . . . . . . . . . . 22 | |||
| 7.5.1. Adding a Media Description to a BUNDLE Group . . . . 23 | 7.5.1. Adding a Media Description to a BUNDLE Group . . . . 23 | |||
| skipping to change at page 6, line 14 ¶ | skipping to change at page 6, line 14 ¶ | |||
| * updates [RFC5888] by allowing an SDP 'group' attribute to contain | * updates [RFC5888] by allowing an SDP 'group' attribute to contain | |||
| an identification-tag that identifies an "m=" section with the | an identification-tag that identifies an "m=" section with the | |||
| port value set to zero. | port value set to zero. | |||
| 1.4. Changes from RFC 8843 | 1.4. Changes from RFC 8843 | |||
| When RFC 8843 and [RFC8829] were published an inconsistency between | When RFC 8843 and [RFC8829] were published an inconsistency between | |||
| the specifications was identified. The procedures regarding | the specifications was identified. The procedures regarding | |||
| assigning the port value to a bundled "m=" section in an answer | assigning the port value to a bundled "m=" section in an answer | |||
| (initial or subsequent) and a subsequent offer were inconsistent. At | (initial or subsequent) and a subsequent offer were inconsistent. | |||
| the IETF 110 meeting it was agreed to publish new versions of the | This specification removes the inconsistency by aligning the port | |||
| RFCs, in which the inconsistency is removed. This specification | value assignment procedure with the procedure in RFC 8829. | |||
| removes the inconsistency by aligning the port value assignment | ||||
| procedure with the procedure in RFC 8829. | ||||
| In addition, this document implements the following erratas: 6431, | In addition, this document implements the following erratas: 6431, | |||
| 6437 | 6437 | |||
| 2. Terminology | 2. Terminology | |||
| "m=" section: SDP bodies contain one or more media descriptions, | "m=" section: SDP bodies contain one or more media descriptions, | |||
| referred to as "m=" sections. Each "m=" section is represented | referred to as "m=" sections. Each "m=" section is represented | |||
| by an SDP "m=" line and zero or more SDP attributes associated | by an SDP "m=" line and zero or more SDP attributes associated | |||
| with the "m=" line. A local address:port combination is | with the "m=" line. A local address:port combination is | |||
| skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
| * In the initial BUNDLE offer, the offerer MUST NOT include | * In the initial BUNDLE offer, the offerer MUST NOT include | |||
| IDENTICAL and TRANSPORT multiplexing category SDP attributes | IDENTICAL and TRANSPORT multiplexing category SDP attributes | |||
| (BUNDLE attributes) in bundle-only "m=" sections. The offerer | (BUNDLE attributes) in bundle-only "m=" sections. The offerer | |||
| MUST include such attributes in all other bundled "m=" sections. | MUST include such attributes in all other bundled "m=" sections. | |||
| In the initial BUNDLE offer, each bundled "m=" line can contain a | In the initial BUNDLE offer, each bundled "m=" line can contain a | |||
| different set of BUNDLE attributes and attribute values. Once the | different set of BUNDLE attributes and attribute values. Once the | |||
| offerer-tagged "m=" section has been selected, the BUNDLE | offerer-tagged "m=" section has been selected, the BUNDLE | |||
| attributes contained in the offerer-tagged "m=" section will apply | attributes contained in the offerer-tagged "m=" section will apply | |||
| to each bundled "m=" section within the BUNDLE group. | to each bundled "m=" section within the BUNDLE group. | |||
| * In a subsequent offer, or in an answer (initial of subsequent), | * In a subsequent offer, or in an answer (initial or subsequent), | |||
| the offerer and answerer MUST include IDENTICAL and TRANSPORT | the offerer and answerer MUST include IDENTICAL and TRANSPORT | |||
| multiplexing category SDP attributes (BUNDLE attributes) only in | multiplexing category SDP attributes (BUNDLE attributes) only in | |||
| the tagged "m=" section (offerer-tagged "m=" section or answerer- | the tagged "m=" section (offerer-tagged "m=" section or answerer- | |||
| tagged "m=" section). The offerer and answerer MUST NOT include | tagged "m=" section). The offerer and answerer MUST NOT include | |||
| such attributes in any other bundled "m=" section. The BUNDLE | such attributes in any other bundled "m=" section. The BUNDLE | |||
| attributes contained in the tagged "m=" section will apply to each | attributes contained in the tagged "m=" section will apply to each | |||
| bundled "m=" section within the BUNDLE group. | bundled "m=" section within the BUNDLE group. | |||
| * In an offer (initial BUNDLE offer or subsequent), or in an answer | * In an offer (initial BUNDLE offer or subsequent), or in an answer | |||
| (initial BUNDLE answer or subsequent), the offerer and answerer | (initial BUNDLE answer or subsequent), the offerer and answerer | |||
| skipping to change at page 12, line 32 ¶ | skipping to change at page 12, line 32 ¶ | |||
| NOTE: A consequence of the rules above is that media-specific | NOTE: A consequence of the rules above is that media-specific | |||
| IDENTICAL and TRANSPORT multiplexing category SDP attributes that are | IDENTICAL and TRANSPORT multiplexing category SDP attributes that are | |||
| applicable only to some of the bundled "m=" sections within the | applicable only to some of the bundled "m=" sections within the | |||
| BUNDLE group might appear in the tagged "m=" section for which they | BUNDLE group might appear in the tagged "m=" section for which they | |||
| are not applicable. For instance, the tagged "m=" section might | are not applicable. For instance, the tagged "m=" section might | |||
| contain an SDP 'rtcp-mux' attribute even if the tagged "m=" section | contain an SDP 'rtcp-mux' attribute even if the tagged "m=" section | |||
| does not describe RTP-based media (but another bundled "m=" section | does not describe RTP-based media (but another bundled "m=" section | |||
| within the BUNDLE group does describe RTP-based media). | within the BUNDLE group does describe RTP-based media). | |||
| 7.2. Generating the Initial SDP Offer | 7.2. Generating the Initial BUNDLE Offer | |||
| The procedures in this section apply to the first offer, within an | The procedures in this section apply to the first offer, within an | |||
| SDP session (e.g., a SIP dialog when SIP [RFC3261] is used to carry | SDP session (e.g., a SIP dialog when SIP [RFC3261] is used to carry | |||
| SDP), in which the offerer indicates that it wants to negotiate a | SDP), in which the offerer indicates that it wants to negotiate a | |||
| given BUNDLE group. This could occur in the initial offer, or in a | given BUNDLE group. This could occur in the initial offer, or in a | |||
| subsequent offer, of the SDP session. | subsequent offer, of the SDP session. | |||
| When an offerer generates an initial BUNDLE offer, in order to | When an offerer generates an initial BUNDLE offer, in order to | |||
| negotiate a BUNDLE group, it MUST: | negotiate a BUNDLE group, it MUST: | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 14, line 5 ¶ | |||
| within the negotiated BUNDLE group. | within the negotiated BUNDLE group. | |||
| The offerer MUST NOT suggest a bundle-only "m=" section as the | The offerer MUST NOT suggest a bundle-only "m=" section as the | |||
| offerer-tagged "m=" section. | offerer-tagged "m=" section. | |||
| It is RECOMMENDED that the suggested offerer-tagged "m=" section be a | It is RECOMMENDED that the suggested offerer-tagged "m=" section be a | |||
| bundled "m=" section that the offerer believes is unlikely that the | bundled "m=" section that the offerer believes is unlikely that the | |||
| answerer will reject or move out of the BUNDLE group. How such | answerer will reject or move out of the BUNDLE group. How such | |||
| assumption is made is outside the scope of this document. | assumption is made is outside the scope of this document. | |||
| 7.2.2. Example: Initial SDP Offer | 7.2.2. Example: Initial BUNDLE Offer | |||
| The example shows an initial BUNDLE offer. The offer includes two | The following example shows an initial BUNDLE offer. The offer | |||
| "m=" sections in the offer and suggests that both "m=" sections are | includes two "m=" sections in the offer and suggests that both "m=" | |||
| included in a BUNDLE group. The audio "m=" section is the suggested | sections are included in a BUNDLE group. The audio "m=" section is | |||
| offerer-tagged "m=" section, indicated by placing the identification- | the suggested offerer-tagged "m=" section, indicated by placing the | |||
| tag associated with the "m=" section (offerer BUNDLE-tag) first in | identification-tag associated with the "m=" section (offerer BUNDLE- | |||
| the SDP group:BUNDLE attribute identification-id list. | tag) first in the SDP group:BUNDLE attribute identification-id list. | |||
| SDP Offer | SDP Offer | |||
| v=0 | v=0 | |||
| o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
| s= | s= | |||
| c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
| t=0 0 | t=0 0 | |||
| a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
| skipping to change at page 14, line 40 ¶ | skipping to change at page 14, line 40 ¶ | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
| m=video 10002 RTP/AVP 31 32 | m=video 10002 RTP/AVP 31 32 | |||
| b=AS:1000 | b=AS:1000 | |||
| a=mid:bar | a=mid:bar | |||
| a=rtcp-mux | a=rtcp-mux | |||
| a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
| a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
| The example shows an initial BUNDLE offer. The offer includes two | The following example shows an initial BUNDLE offer. The offer | |||
| "m=" sections in the offer and suggests that both "m=" sections are | includes two "m=" sections in the offer and suggests that both "m=" | |||
| included in a BUNDLE group. The offerer includes an SDP 'bundle- | sections are included in a BUNDLE group. The offerer includes an SDP | |||
| only' attribute in the video "m=" section, to request that the | 'bundle-only' attribute in the video "m=" section, to request that | |||
| answerer accepts the "m=" section only if the answerer supports the | the answerer accepts the "m=" section only if the answerer supports | |||
| BUNDLE extension and if the answerer keeps the "m=" section within | the BUNDLE extension and if the answerer keeps the "m=" section | |||
| the associated BUNDLE group. The audio "m=" section is the suggested | within the associated BUNDLE group. The audio "m=" section is the | |||
| offerer-tagged "m=" section, indicated by placing the identification- | suggested offerer-tagged "m=" section, indicated by placing the | |||
| tag associated with the "m=" section (offerer BUNDLE-tag) first in | identification-tag associated with the "m=" section (offerer BUNDLE- | |||
| the SDP group:BUNDLE attribute identification-id list. | tag) first in the SDP group:BUNDLE attribute identification-id list. | |||
| SDP Offer | SDP Offer | |||
| v=0 | v=0 | |||
| o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
| s= | s= | |||
| c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
| t=0 0 | t=0 0 | |||
| a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
| m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
| skipping to change at page 17, line 29 ¶ | skipping to change at page 17, line 29 ¶ | |||
| the "m=" section as the offerer-tagged "m=" section and MUST also | the "m=" section as the offerer-tagged "m=" section and MUST also | |||
| mark the corresponding "m=" section in the answer as the answerer- | mark the corresponding "m=" section in the answer as the answerer- | |||
| tagged "m=" section. In the answer, the answerer BUNDLE-tag | tagged "m=" section. In the answer, the answerer BUNDLE-tag | |||
| indicates the answerer-tagged "m=" section. | indicates the answerer-tagged "m=" section. | |||
| If one or more of the criteria are not fulfilled, the answerer MUST | If one or more of the criteria are not fulfilled, the answerer MUST | |||
| pick the next identification-tag in the identification-tag list in | pick the next identification-tag in the identification-tag list in | |||
| the offer and perform the same criteria check for the "m=" section | the offer and perform the same criteria check for the "m=" section | |||
| indicated by that identification-tag. If there are no more | indicated by that identification-tag. If there are no more | |||
| identification-tags in the identification-tag list, the answerer MUST | identification-tags in the identification-tag list, the answerer MUST | |||
| NOT create the BUNDLE group. Unless the answerer rejects the whole | NOT create the BUNDLE group. In addition, unless the answerer | |||
| offer, the answerer MUST apply the answerer procedures for moving an | rejects the whole offer, the answerer MUST apply the answerer | |||
| "m=" section out of a BUNDLE group (Section 7.3.2) or rejecting an | procedures for moving an "m=" section out of a BUNDLE group | |||
| "m=" section within a BUNDLE group (Section 7.3.3) to every bundled | (Section 7.3.2) or rejecting an "m=" section within a BUNDLE group | |||
| "m=" section in the offer when creating the answer. | (Section 7.3.3) to every bundled "m=" section in the offer when | |||
| creating the answer. | ||||
| Section 18.1 shows an example of an offerer BUNDLE address:port | Section 18.1 shows an example of an offerer BUNDLE address:port | |||
| selection. | selection. | |||
| Sections 7.3.4 and 18.1 show an example of an answerer-tagged "m=" | Sections 7.3.4 and 18.1 show an example of an answerer-tagged "m=" | |||
| section selection. | section selection. | |||
| 7.3.2. Moving a Media Description Out of a BUNDLE Group | 7.3.2. Moving a Media Description Out of a BUNDLE Group | |||
| When an answerer generates the answer, if the answerer wants to move | When an answerer generates the answer, if the answerer wants to move | |||
| skipping to change at page 18, line 43 ¶ | skipping to change at page 18, line 43 ¶ | |||
| answerer wants to move an "m=" section from one BUNDLE group to | answerer wants to move an "m=" section from one BUNDLE group to | |||
| another, it MUST first move the "m=" section out of the current | another, it MUST first move the "m=" section out of the current | |||
| BUNDLE group and then generate an offer where the "m=" section is | BUNDLE group and then generate an offer where the "m=" section is | |||
| added to another BUNDLE group (Section 7.5.1). | added to another BUNDLE group (Section 7.5.1). | |||
| 7.3.3. Rejecting a Media Description in a BUNDLE Group | 7.3.3. Rejecting a Media Description in a BUNDLE Group | |||
| When an answerer wants to reject a bundled "m=" section in an answer, | When an answerer wants to reject a bundled "m=" section in an answer, | |||
| it MUST first check the following criterion: | it MUST first check the following criterion: | |||
| * In the corresponding offer, the "m=" section is the offerer-tagged | * In the corresponding offer (subsequent), the "m=" section is the | |||
| "m=" section. | offerer-tagged "m=" section. | |||
| If the criterion above is fulfilled, the answerer cannot reject the | If the criterion above is fulfilled, the answerer cannot reject the | |||
| "m=" section in the answer. The answerer can reject the whole offer, | "m=" section in the answer. The answerer can reject the whole offer, | |||
| reject each bundled "m=" section within the BUNDLE group, or keep the | reject each bundled "m=" section within the BUNDLE group, or keep the | |||
| "m=" section within the BUNDLE group in the answer and later create | "m=" section within the BUNDLE group in the answer and later create | |||
| an offer where the "m=" section is disabled within the BUNDLE group | an offer where the "m=" section is disabled within the BUNDLE group | |||
| (Section 7.5.3). | (Section 7.5.3). | |||
| When an answerer generates an answer, in which it rejects a bundled | When an answerer generates an answer, in which it rejects a bundled | |||
| "m=" section, the answerer: | "m=" section, the answerer: | |||
| skipping to change at page 21, line 9 ¶ | skipping to change at page 21, line 9 ¶ | |||
| a=mid:bar | a=mid:bar | |||
| a=bundle-only | a=bundle-only | |||
| a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
| a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
| 7.4. Offerer Processing of the SDP Answer | 7.4. Offerer Processing of the SDP Answer | |||
| When an offerer receives an answer, if the answer contains a BUNDLE | When an offerer receives an answer, if the answer contains a BUNDLE | |||
| group, the offerer MUST check that any bundled "m=" section in the | group, the offerer MUST check that any bundled "m=" section in the | |||
| answer was indicated as bundled in the corresponding offer. If there | answer was indicated as bundled in the corresponding offer (for the | |||
| is no mismatch, the offerer MUST apply the properties (BUNDLE | same BUNDLE group). If there is no mismatch, the offerer MUST apply | |||
| address:port, BUNDLE attributes, etc.) of the offerer-tagged "m=" | the properties (BUNDLE address:port, BUNDLE attributes, etc.) of the | |||
| section (selected by the answerer; see Section 7.3.1) to each bundled | offerer-tagged "m=" section (selected by the answerer; see | |||
| "m=" section within the BUNDLE group. | Section 7.3.1) to each bundled "m=" section within the BUNDLE group. | |||
| NOTE: As the answerer might reject one or more bundled "m=" sections | NOTE: As the answerer might reject one or more bundled "m=" sections | |||
| in an initial BUNDLE offer, or move a bundled "m=" section out of a | in an initial BUNDLE offer, or move a bundled "m=" section out of a | |||
| BUNDLE group, a given bundled "m=" section in the offer might not be | BUNDLE group, a given bundled "m=" section in the offer might not be | |||
| indicated as bundled in the corresponding answer. | indicated as bundled in the corresponding answer. | |||
| If the answer does not contain a BUNDLE group, the offerer MUST | If the answer does not contain a BUNDLE group, the offerer MUST | |||
| process the answer as a normal answer. | process the answer as a normal answer. | |||
| 7.4.1. RFC 8843 Considerations | 7.4.1. RFC 8843 Considerations | |||
| skipping to change at page 23, line 27 ¶ | skipping to change at page 23, line 27 ¶ | |||
| 7.5.1. Adding a Media Description to a BUNDLE Group | 7.5.1. Adding a Media Description to a BUNDLE Group | |||
| When an offerer generates a subsequent offer, in which it wants to | When an offerer generates a subsequent offer, in which it wants to | |||
| add a bundled "m=" section to a previously negotiated BUNDLE group, | add a bundled "m=" section to a previously negotiated BUNDLE group, | |||
| the offerer follows the procedures in Section 7.5. The offerer picks | the offerer follows the procedures in Section 7.5. The offerer picks | |||
| either the added "m=" section or an "m=" section previously added to | either the added "m=" section or an "m=" section previously added to | |||
| the BUNDLE group as the offerer-tagged "m=" section. | the BUNDLE group as the offerer-tagged "m=" section. | |||
| NOTE: As described in Section 7.3.2, the answerer cannot move the | NOTE: As described in Section 7.3.2, the answerer cannot move the | |||
| added "m=" section out of the BUNDLE group in its answer. If the | added "m=" section out of the BUNDLE group in its answer. If the | |||
| answer wants to move the "m=" section out of the BUNDLE group, it | answerer wants to move the "m=" section out of the BUNDLE group, it | |||
| will have to first accept it into the BUNDLE group in the answer, and | will have to first accept it into the BUNDLE group in the answer, and | |||
| then send a subsequent offer where the "m=" section is moved out of | then send a subsequent offer where the "m=" section is moved out of | |||
| the BUNDLE group (Section 7.5.2). | the BUNDLE group (Section 7.5.2). | |||
| 7.5.2. Moving a Media Description Out of a BUNDLE Group | 7.5.2. Moving a Media Description Out of a BUNDLE Group | |||
| When an offerer generates a subsequent offer, in which it wants to | When an offerer generates a subsequent offer, in which it wants to | |||
| remove a bundled "m=" section from a BUNDLE group, the offerer: | remove a bundled "m=" section from a BUNDLE group, the offerer: | |||
| * MUST assign a unique address:port to the "m=" section; | * MUST assign a unique address:port to the "m=" section; | |||
| skipping to change at page 26, line 32 ¶ | skipping to change at page 26, line 32 ¶ | |||
| * A specific payload type value can be used in multiple bundled "m=" | * A specific payload type value can be used in multiple bundled "m=" | |||
| sections only if each codec associated with the payload type | sections only if each codec associated with the payload type | |||
| number shares an identical codec configuration (Section 9.1.1). | number shares an identical codec configuration (Section 9.1.1). | |||
| * The proto value in each bundled RTP-based "m=" section MUST be | * The proto value in each bundled RTP-based "m=" section MUST be | |||
| identical (e.g., RTP/AVPF). | identical (e.g., RTP/AVPF). | |||
| * The RTP MID header extension MUST be enabled, by including an SDP | * The RTP MID header extension MUST be enabled, by including an SDP | |||
| 'extmap' attribute [RFC8285], with a 'urn:ietf:params:rtp- | 'extmap' attribute [RFC8285], with a 'urn:ietf:params:rtp- | |||
| hdrext:sdes:mid' URI value, in each bundled RTP-based "m=" section | hdrext:sdes:mid' URI value defined in this specification, in each | |||
| in every offer and answer. | bundled RTP-based "m=" section in every offer and answer. | |||
| * A given SSRC MUST NOT transmit RTP packets using payload types | * A given SSRC MUST NOT transmit RTP packets using payload types | |||
| that originate from different bundled "m=" sections. | that originate from different bundled "m=" sections. | |||
| NOTE: The last bullet above is to avoid sending multiple media types | NOTE: The last bullet above is to avoid sending multiple media types | |||
| from the same SSRC. If transmission of multiple media types are done | from the same SSRC. If transmission of multiple media types are done | |||
| with time overlap, RTP and RTCP fail to function. Even if done in | with time overlap, RTP and RTCP fail to function. Even if done in | |||
| proper sequence, this causes RTP timestamp rate switching issues | proper sequence, this causes RTP timestamp rate switching issues | |||
| [RFC7160]. However, once an SSRC has left the RTP session (by | [RFC7160]. However, once an SSRC has left the RTP session (by | |||
| sending an RTCP BYE packet), that SSRC can be reused by another | sending an RTCP BYE packet), that SSRC can be reused by another | |||
| skipping to change at page 28, line 39 ¶ | skipping to change at page 28, line 39 ¶ | |||
| to ensure unique payload type values, it will be impossible to | to ensure unique payload type values, it will be impossible to | |||
| associate the RTP stream using that payload type value to a | associate the RTP stream using that payload type value to a | |||
| particular "m=" section. Note that when using the payload type to | particular "m=" section. Note that when using the payload type to | |||
| associate RTP streams with "m=" sections, an RTP stream, identified | associate RTP streams with "m=" sections, an RTP stream, identified | |||
| by its SSRC, will be mapped to an "m=" section when the first packet | by its SSRC, will be mapped to an "m=" section when the first packet | |||
| of that RTP stream is received, and the mapping will not be changed | of that RTP stream is received, and the mapping will not be changed | |||
| even if the payload type used by that RTP stream changes. In other | even if the payload type used by that RTP stream changes. In other | |||
| words, the SSRC cannot "move" to a different "m=" section simply by | words, the SSRC cannot "move" to a different "m=" section simply by | |||
| changing the payload type. | changing the payload type. | |||
| Applications can implement RTP stacks in many different ways. The | Applications can implement RTP stacks in different ways. The | |||
| algorithm below details one way that RTP streams can be associated | algorithm below details one way that RTP streams can be associated | |||
| with "m=" sections, but it is not meant to be prescriptive about | with "m=" sections, but it is not meant to be prescriptive about | |||
| exactly how an RTP stack needs to be implemented. Applications MAY | exactly how an RTP stack needs to be implemented. Applications MAY | |||
| use any algorithm that achieves equivalent results to those described | use any algorithm that achieves equivalent results to those described | |||
| in the algorithm below. | in the algorithm below. | |||
| To prepare to associate RTP streams with the correct "m=" section, | To prepare to associate RTP streams with the correct "m=" section, | |||
| the following steps MUST be followed for each BUNDLE group: | the following steps MUST be followed for each BUNDLE group: | |||
| * Construct a table mapping a MID to an "m=" section for each "m=" | * Construct a table mapping a MID to an "m=" section for each "m=" | |||
| skipping to change at page 29, line 35 ¶ | skipping to change at page 29, line 35 ¶ | |||
| their configurations are changed, the tables above MUST also be | their configurations are changed, the tables above MUST also be | |||
| updated. | updated. | |||
| When an RTP packet is received, it MUST be delivered to the RTP | When an RTP packet is received, it MUST be delivered to the RTP | |||
| stream corresponding to its SSRC. That RTP stream MUST then be | stream corresponding to its SSRC. That RTP stream MUST then be | |||
| associated with the correct "m=" section within a BUNDLE group, for | associated with the correct "m=" section within a BUNDLE group, for | |||
| additional processing, according to the following steps: | additional processing, according to the following steps: | |||
| * If the MID associated with the RTP stream is not in the table | * If the MID associated with the RTP stream is not in the table | |||
| mapping a MID to an "m=" section, then the RTP stream is not | mapping a MID to an "m=" section, then the RTP stream is not | |||
| decoded and the payload data is discarded. | decoded, and the payload data is discarded. | |||
| * If the packet has a MID, and the packet's extended sequence number | * If the packet has a MID, and the packet's extended sequence number | |||
| is greater than that of the last MID update, as discussed in | is greater than that of the last MID update, as discussed in | |||
| [RFC7941], Section 4.2.6, update the MID associated with the RTP | [RFC7941], Section 4.2.6, update the MID associated with the RTP | |||
| stream to match the MID carried in the RTP packet, and then update | stream to match the MID carried in the RTP packet, and then update | |||
| the mapping tables to include an entry that maps the SSRC of that | the mapping tables to include an entry that maps the SSRC of that | |||
| RTP stream to the "m=" section for that MID. | RTP stream to the "m=" section for that MID. | |||
| * If the SSRC of the RTP stream is in the incoming SSRC mapping | * If the SSRC of the RTP stream is in the incoming SSRC mapping | |||
| table, check that the payload type used by the RTP stream matches | table, check that the payload type used by the RTP stream matches | |||
| a payload type included on the matching "m=" section. If so, | a payload type included on the matching "m=" section. If so, | |||
| associate the RTP stream with that "m=" section. Otherwise, the | associate the RTP stream with that "m=" section. Otherwise, the | |||
| RTP stream is not decoded and the payload data is discarded. | RTP stream is not decoded, and the payload data is discarded. | |||
| * If the payload type used by the RTP stream is in the payload type | * If the payload type used by the RTP stream is in the payload type | |||
| table, update the incoming SSRC mapping table to include an entry | table, update the incoming SSRC mapping table to include an entry | |||
| that maps the RTP stream's SSRC to the "m=" section for that | that maps the RTP stream's SSRC to the "m=" section for that | |||
| payload type. Associate the RTP stream with the corresponding | payload type. Associate the RTP stream with the corresponding | |||
| "m=" section. | "m=" section. | |||
| * Otherwise, mark the RTP stream as "not for decoding" and discard | * Otherwise, mark the RTP stream as "not for decoding" and discard | |||
| the payload. | the payload. | |||
| skipping to change at page 33, line 31 ¶ | skipping to change at page 33, line 31 ¶ | |||
| This section describes how an offerer and answerer use the SDP 'rtcp- | This section describes how an offerer and answerer use the SDP 'rtcp- | |||
| mux' [RFC5761] and SDP 'rtcp-mux-only' attributes [RFC8858] to | mux' [RFC5761] and SDP 'rtcp-mux-only' attributes [RFC8858] to | |||
| negotiate usage of RTP/RTCP multiplexing for RTP-based bundled media. | negotiate usage of RTP/RTCP multiplexing for RTP-based bundled media. | |||
| RTP/RTCP multiplexing only applies to RTP-based media. However, as | RTP/RTCP multiplexing only applies to RTP-based media. However, as | |||
| described in Section 7.1.3, within an offer or answer the SDP 'rtcp- | described in Section 7.1.3, within an offer or answer the SDP 'rtcp- | |||
| mux' and SDP 'rtcp-mux-only' attributes might be included in a | mux' and SDP 'rtcp-mux-only' attributes might be included in a | |||
| bundled "m=" section for non-RTP-based media (if such "m=" section is | bundled "m=" section for non-RTP-based media (if such "m=" section is | |||
| the offerer-tagged "m=" section or answerer-tagged "m=" section). | the offerer-tagged "m=" section or answerer-tagged "m=" section). | |||
| 9.3.1.1. Generating the Initial SDP BUNDLE Offer | 9.3.1.1. Generating the Initial BUNDLE Offer | |||
| When an offerer generates an initial BUNDLE offer, if the offer | When an offerer generates an initial BUNDLE offer, if the offer | |||
| contains one or more bundled "m=" sections for RTP-based media (or, | contains one or more bundled "m=" sections for RTP-based media (or, | |||
| if there is a chance that "m=" sections for RTP-based media will | if there is a chance that "m=" sections for RTP-based media will | |||
| later be added to the BUNDLE group), the offerer MUST include an SDP | later be added to the BUNDLE group), the offerer MUST include an SDP | |||
| 'rtcp-mux' attribute [RFC5761] in each bundled "m=" section | 'rtcp-mux' attribute [RFC5761] in each bundled "m=" section | |||
| (excluding any bundle-only "m=" sections). In addition, the offerer | (excluding any bundle-only "m=" sections). In addition, the offerer | |||
| MAY include an SDP 'rtcp-mux-only' attribute [RFC8858] in one or more | MAY include an SDP 'rtcp-mux-only' attribute [RFC8858] in one or more | |||
| bundled "m=" sections for RTP-based media. | bundled "m=" sections for RTP-based media. | |||
| skipping to change at page 34, line 29 ¶ | skipping to change at page 34, line 29 ¶ | |||
| sections for RTP-based media within the BUNDLE group. The answerer | sections for RTP-based media within the BUNDLE group. The answerer | |||
| MUST include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" | MUST include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" | |||
| section, following the procedures for BUNDLE attributes | section, following the procedures for BUNDLE attributes | |||
| (Section 7.1.3). In addition, if the "m=" section that is selected | (Section 7.1.3). In addition, if the "m=" section that is selected | |||
| as the offerer-tagged "m=" section contained an SDP 'rtcp-mux-only' | as the offerer-tagged "m=" section contained an SDP 'rtcp-mux-only' | |||
| attribute, the answerer MUST include an SDP 'rtcp-mux-only' attribute | attribute, the answerer MUST include an SDP 'rtcp-mux-only' attribute | |||
| in the answerer-tagged "m=" section. | in the answerer-tagged "m=" section. | |||
| In an initial BUNDLE offer, if the suggested offerer-tagged "m=" | In an initial BUNDLE offer, if the suggested offerer-tagged "m=" | |||
| section contained an SDP 'rtcp-mux-only' attribute, the "m=" section | section contained an SDP 'rtcp-mux-only' attribute, the "m=" section | |||
| was for RTP-based media; thus, the answerer does not accept the "m=" | was for RTP-based media. If the answerer does not accept the "m=" | |||
| section in the created BUNDLE group, and the answerer MUST move the | section in the created BUNDLE group, and moves the "m=" section out | |||
| "m=" section out of the BUNDLE group (Section 7.3.2); include the | of the BUNDLE group (Section 7.3.2), the answerer MUST include the | |||
| attribute in the moved "m=" section and enable RTP/RTCP multiplexing | attribute in the moved "m=" section and enable RTP/RTCP multiplexing | |||
| for the media associated with the "m=" section; or reject the "m=" | for the media associated with the "m=" section. If the answerer | |||
| section (Section 7.3.3). | rejects the "m=" section (Section 7.3.3) the answerer MUST NOT | |||
| include the attribute. | ||||
| The answerer MUST NOT include an SDP 'rtcp' attribute in any bundled | The answerer MUST NOT include an SDP 'rtcp' attribute in any bundled | |||
| "m=" section in the answer. The answerer will use the port value of | "m=" section in the answer. The answerer will use the port value of | |||
| the offerer-tagged "m=" section sending RTP and RTCP packets | the offerer-tagged "m=" section sending RTP and RTCP packets | |||
| associated with RTP-based bundled media towards the offerer. | associated with RTP-based bundled media towards the offerer. | |||
| If the usage of RTP/RTCP multiplexing within a BUNDLE group has been | If the usage of RTP/RTCP multiplexing within a BUNDLE group has been | |||
| negotiated in a previous offer/answer exchange, the answerer MUST | negotiated in a previous offer/answer exchange, the answerer MUST | |||
| include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" | include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" | |||
| section. It is not possible to disable RTP/RTCP multiplexing within | section. It is not possible to disable RTP/RTCP multiplexing within | |||
| skipping to change at page 41, line 50 ¶ | skipping to change at page 41, line 50 ¶ | |||
| do take into account that some single characters when UTF-8 encoded | do take into account that some single characters when UTF-8 encoded | |||
| will result in multiple octets. The identification-tag MUST NOT | will result in multiple octets. The identification-tag MUST NOT | |||
| contain any user information, and applications SHALL avoid generating | contain any user information, and applications SHALL avoid generating | |||
| the identification-tag using a pattern that enables user or | the identification-tag using a pattern that enables user or | |||
| application identification. | application identification. | |||
| 16. IANA Considerations | 16. IANA Considerations | |||
| 16.1. New SDES Item | 16.1. New SDES Item | |||
| This document adds the MID SDES item to the IANA "RTP SDES Item | This document updates the MID SDES item to the IANA "RTP SDES Item | |||
| Types" registry as follows: | Types" registry as follows: | |||
| Value: 15 | Value: 15 | |||
| Abbrev.: MID | Abbrev.: MID | |||
| Name: Media Identification | Name: Media Identification | |||
| Reference: RFC XXXX | Reference: RFC XXXX | |||
| 16.2. New RTP SDES Header Extension URI | 16.2. New RTP SDES Header Extension URI | |||
| This document defines a new extension URI in the RTP SDES Compact | This document updates the extension URI in the RTP SDES Compact | |||
| Header Extensions sub-registry of the RTP Compact Header Extensions | Header Extensions sub-registry of the RTP Compact Header Extensions | |||
| registry sub-registry, according to the following data: | registry sub-registry, according to the following data: | |||
| Extension URI: urn:ietf:params:rtp-hdrext:sdes:mid | Extension URI: urn:ietf:params:rtp-hdrext:sdes:mid | |||
| Description: Media identification | Description: Media identification | |||
| Contact: IESG (iesg@ietf.org) | Contact: IESG (iesg@ietf.org) | |||
| Reference: RFC XXXX | Reference: RFC XXXX | |||
| skipping to change at page 42, line 38 ¶ | skipping to change at page 42, line 38 ¶ | |||
| It is simply used to associate RTP-based media with the correct SDP | It is simply used to associate RTP-based media with the correct SDP | |||
| media description ("m=" section) in the SDP used to negotiate the | media description ("m=" section) in the SDP used to negotiate the | |||
| media. | media. | |||
| The purpose of the extension is for the offerer to be able to | The purpose of the extension is for the offerer to be able to | |||
| associate received multiplexed RTP-based media before the offerer | associate received multiplexed RTP-based media before the offerer | |||
| receives the associated answer. | receives the associated answer. | |||
| 16.3. New SDP Attribute | 16.3. New SDP Attribute | |||
| This document defines a new SDP media-level attribute, 'bundle-only', | This document updates the SDP media-level attribute, 'bundle-only', | |||
| according to the following data: | according to the following data: | |||
| Attribute name: bundle-only | Attribute name: bundle-only | |||
| Type of attribute: media | Type of attribute: media | |||
| Subject to charset: No | Subject to charset: No | |||
| Purpose: Request a media description to be accepted in the answer | Purpose: Request a media description to be accepted in the answer | |||
| only if kept within a BUNDLE group by the answerer. | only if kept within a BUNDLE group by the answerer. | |||
| skipping to change at page 43, line 12 ¶ | skipping to change at page 43, line 12 ¶ | |||
| Contact name: IESG | Contact name: IESG | |||
| Contact e-mail: iesg@ietf.org | Contact e-mail: iesg@ietf.org | |||
| Reference: RFC XXXX | Reference: RFC XXXX | |||
| Mux category: NORMAL | Mux category: NORMAL | |||
| 16.4. New SDP Group Semantics | 16.4. New SDP Group Semantics | |||
| This document registers the following semantics with IANA in the | This document updates the following semantics in the "Semantics for | |||
| "Semantics for the 'group' SDP Attribute" subregistry (under the | the 'group' SDP Attribute" subregistry (under the "Session | |||
| "Session Description Protocol (SDP) Parameters" registry): | Description Protocol (SDP) Parameters" registry): | |||
| +================+========+==============+===========+ | +================+========+==============+===========+ | |||
| | Semantics | Token | Mux Category | Reference | | | Semantics | Token | Mux Category | Reference | | |||
| +================+========+==============+===========+ | +================+========+==============+===========+ | |||
| | Media bundling | BUNDLE | NORMAL | RFC XXXX | | | Media bundling | BUNDLE | NORMAL | RFC XXXX | | |||
| +----------------+--------+--------------+-----------+ | +----------------+--------+--------------+-----------+ | |||
| Table 1 | Table 1 | |||
| 17. Security Considerations | 17. Security Considerations | |||
| The security considerations defined in [RFC3264] and [RFC5888] apply | The security considerations defined in [RFC3264] and [RFC5888] apply | |||
| to the BUNDLE extension. BUNDLE does not change which information, | to the BUNDLE extension. BUNDLE does not change which information, | |||
| e.g., RTP streams, flows over the network, with the exception of the | e.g., RTP streams, flows over the network, except for the usage of | |||
| usage of the MID SDES item as discussed below. Primarily, it changes | the MID SDES item as discussed below. Primarily, it changes which | |||
| which addresses and ports, and thus in which (RTP) sessions, the | addresses and ports, and thus in which (RTP) sessions, the | |||
| information flows to. This affects the security contexts being used | information flows to. This affects the security contexts being used | |||
| and can cause previously separated information flows to share the | and can cause previously separated information flows to share the | |||
| same security context. This has very little impact on the | same security context. This has very little impact on the | |||
| performance of the security mechanism of the RTP sessions. In cases | performance of the security mechanism of the RTP sessions. In cases | |||
| where one would have applied different security policies on the | where one would have applied different security policies on the | |||
| different RTP streams being bundled, or where the parties having | different RTP streams being bundled, or where the parties having | |||
| access to the security contexts would have differed between the RTP | access to the security contexts would have differed between the RTP | |||
| streams, additional analysis of the implications are needed before | streams, additional analysis of the implications are needed before | |||
| selecting to apply BUNDLE. | selecting to apply BUNDLE. | |||
| The identification-tag, independent of transport, RTCP SDES packet, | The identification-tag, independent of transport, RTCP SDES packet, | |||
| or RTP header extension, can expose the value to parties beyond the | or RTP header extension, can expose the value to parties beyond the | |||
| signaling chain. Therefore, the identification-tag values MUST be | signaling chain. Therefore, the identification-tag values MUST be | |||
| generated in a fashion that does not leak user information, e.g., | generated in a fashion that does not leak user information, e.g., | |||
| randomly or using a per-bundle group counter, and SHOULD be 3 bytes | randomly or using a per-bundle group counter, and SHOULD be 3 bytes | |||
| or less to allow them to efficiently fit into the MID RTP header | or fewer to allow them to efficiently fit into the MID RTP header | |||
| extension. Note that if implementations use different methods for | extension. Note that if implementations use different methods for | |||
| generating identification-tags, this could enable fingerprinting of | generating identification-tags, this could enable fingerprinting of | |||
| the implementation making it vulnerable to targeted attacks. The | the implementation making it vulnerable to targeted attacks. The | |||
| identification-tag is exposed on the RTP stream level when included | identification-tag is exposed on the RTP stream level when included | |||
| in the RTP header extensions; however, what it reveals of the RTP | in the RTP header extensions; however, what it reveals of the RTP | |||
| media stream structure of the endpoint and application was already | media stream structure of the endpoint and application was already | |||
| possible to deduce from the RTP streams without the MID SDES header | possible to deduce from the RTP streams without the MID SDES header | |||
| extensions. As the identification-tag is also used to route the | extensions. As the identification-tag is also used to route the | |||
| media stream to the right application functionality, it is important | media stream to the right application functionality, it is important | |||
| that the value received is the one intended by the sender; thus, | that the value received is the one intended by the sender; thus, | |||
| skipping to change at page 55, line 46 ¶ | skipping to change at page 55, line 46 ¶ | |||
| Protocol (SDP) Attributes When Multiplexing", RFC 8859, | Protocol (SDP) Attributes When Multiplexing", RFC 8859, | |||
| DOI 10.17487/RFC8859, January 2021, | DOI 10.17487/RFC8859, January 2021, | |||
| <https://www.rfc-editor.org/info/rfc8859>. | <https://www.rfc-editor.org/info/rfc8859>. | |||
| 19.2. Informative References | 19.2. Informative References | |||
| [LLR-RTCP] Lennox, J., Hong, D., Uberti, J., Holmer, S., and M. | [LLR-RTCP] Lennox, J., Hong, D., Uberti, J., Holmer, S., and M. | |||
| Flodman, "The Layer Refresh Request (LRR) RTCP Feedback | Flodman, "The Layer Refresh Request (LRR) RTCP Feedback | |||
| Message", Work in Progress, Internet-Draft, draft-ietf- | Message", Work in Progress, Internet-Draft, draft-ietf- | |||
| avtext-lrr-07, 2 July 2017, | avtext-lrr-07, 2 July 2017, | |||
| <https://tools.ietf.org/html/draft-ietf-avtext-lrr-07>. | <https://datatracker.ietf.org/doc/html/draft-ietf-avtext- | |||
| lrr-07>. | ||||
| [RFC2543] Handley, M., Schulzrinne, H., Schooler, E., and J. | [RFC2543] Handley, M., Schulzrinne, H., Schooler, E., and J. | |||
| Rosenberg, "SIP: Session Initiation Protocol", RFC 2543, | Rosenberg, "SIP: Session Initiation Protocol", RFC 2543, | |||
| DOI 10.17487/RFC2543, March 1999, | DOI 10.17487/RFC2543, March 1999, | |||
| <https://www.rfc-editor.org/info/rfc2543>. | <https://www.rfc-editor.org/info/rfc2543>. | |||
| [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
| A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
| Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
| DOI 10.17487/RFC3261, June 2002, | DOI 10.17487/RFC3261, June 2002, | |||
| skipping to change at page 59, line 43 ¶ | skipping to change at page 59, line 43 ¶ | |||
| happen to the ICE candidates associated with the "m=" section, as | happen to the ICE candidates associated with the "m=" section, as | |||
| they are also used for the BUNDLE address:port. | they are also used for the BUNDLE address:port. | |||
| A.3. B2BUA and Proxy Interoperability | A.3. B2BUA and Proxy Interoperability | |||
| Some back-to-back user agents may be configured in a mode where if | Some back-to-back user agents may be configured in a mode where if | |||
| the incoming call leg contains an SDP attribute the B2BUA does not | the incoming call leg contains an SDP attribute the B2BUA does not | |||
| understand, the B2BUA still generates that SDP attribute in the Offer | understand, the B2BUA still generates that SDP attribute in the Offer | |||
| for the outgoing call leg. Consider a B2BUA that did not understand | for the outgoing call leg. Consider a B2BUA that did not understand | |||
| the SDP 'rtcp' attribute, defined in RFC 3605, yet acted this way. | the SDP 'rtcp' attribute, defined in RFC 3605, yet acted this way. | |||
| Further assume that the B2BUA was configured to tear down any call | Further, assume that the B2BUA was configured to tear down any call | |||
| where it did not see any RTCP for 5 minutes. In this case, if the | where it did not see any RTCP for 5 minutes. In this case, if the | |||
| B2BUA received an Offer like: | B2BUA received an Offer like: | |||
| SDP Offer | SDP Offer | |||
| v=0 | v=0 | |||
| o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | |||
| s= | s= | |||
| c=IN IP4 atlanta.example.com | c=IN IP4 atlanta.example.com | |||
| t=0 0 | t=0 0 | |||
| End of changes. 30 change blocks. | ||||
| 66 lines changed or deleted | 67 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||