RFC 7261

Offer/Answer Considerations for G723 Annex A and G729 Annex B

πŸ“… published May 2014, from ietf

RFC 7261 πŸŽ€ Offer/Answer Considerations for G723 Annex A and G729 Annex B

Title block πŸ’–

  • Authors: M. Perumal (Cisco Systems) and P. Ravindran (NSN) πŸ‘―
  • Category: Standards Track πŸ”₯
  • Date: May 2014 πŸ“…
  • ISSN: 2070-1721
  • Obsoletes / Updates: the header doesn't list anything this one obsoletes or updates 🫢

Abstract ✨

okay so this doc is all about what happens when two devices are negotiating a call and they don't agree on the annexa setting for G723 or the annexb setting for G729, G729D, and G729E πŸ“ž it covers the offer/answer rules for when those values don't match in the SDP offer and answer πŸ¦‹

Status of This Memo 🌸

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7261.

Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents 🧚

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
3.  Offer/Answer Considerations . . . . . . . . . . . . . . . . .   3
  3.1.  Considerations for Use of Comfort Noise Frames  . . . . .   3
  3.2.  Offer/Answer Considerations for G723 Annex A  . . . . . .   3
  3.3.  Offer/Answer Considerations for G729 Annex B, G729D Annex
        B, and G729E Annex B  . . . . . . . . . . . . . . . . . .   4
4.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . . .   5
  4.1.  Offer with G729 annexb=yes and Answer with G729 annexb=no   5
  4.2.  Offer with G729 annexb=yes and Answer with G729 and No
        annexb Parameter  . . . . . . . . . . . . . . . . . . . .   5
  4.3.  Offer with G729 and No annexb Parameter and Answer with
        G729 annexb=no  . . . . . . . . . . . . . . . . . . . . .   6
5.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
6.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   7
7.  Normative References  . . . . . . . . . . . . . . . . . . . .   7

1. Introduction 🌈

okay so [RFC4856] defines the annexa parameter for G723 like this:

annexa: indicates that Annex A, voice activity detection, is used
or preferred.  Permissible values are "yes" and "no" (without the
quotes); "yes" is implied if this parameter is omitted.

and it also defines the annexb parameter for G729, G729D, and G729E like this:

annexb: indicates that Annex B, voice activity detection, is used
or preferred.  Permissible values are "yes" and "no" (without the
quotes); "yes" is implied if this parameter is omitted.

but here's the drama 😭 things get messy when the value of annexa or annexb doesn't match between the SDP [RFC4566] offer and answer πŸ’€

for example, say the offer has G729 with annexb=yes and the answer has G729 with annexb=no. that can be read two different ways:

  • the offerer and answerer act like G729 was negotiated with annexb=yes, or
  • the offerer and answerer act like G729 was negotiated with annexb=no.

since the existing specs don't make this clear, different implementations picked their own interpretations πŸ™ˆ which ended up with a different codec getting chosen, or the call failing, whenever the parameter values didn't match πŸ’…

[RFC3264] says that SDP extensions defining new fmtp parameters have to spell out how those parameters should be interpreted in offer/answer. this document does exactly that for the annexa and annexb parameters πŸŽ€

2. Terminology πŸ“

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

3. Offer/Answer Considerations πŸ¦‹

the big goal of these offer/answer rules is simple: if the offerer or answerer says it doesn't support Annex A or Annex B, then Annex A or Annex B doesn't get used ✨

3.1. Considerations for Use of Comfort Noise Frames 🌸

[RFC3551] says:

Receivers MUST accept comfort noise frames if restriction of their
use has not been signaled.  The MIME registration for G729 in RFC
3555 specifies a parameter that MAY be used with MIME or SDP to
restrict the use of comfort noise frames.

so basically, if the SDP offer or answer says comfort noise isn't supported, then comfort noise frames MUST NOT be used πŸ™…β€β™€οΈ

3.2. Offer/Answer Considerations for G723 Annex A πŸ’œ

when the offer or answer has G723 and there's no annexa parameter, the offerer or answerer knows it has implied the default annexa=yes. that's because the annexa attribute was part of the original registration of audio/G723 [RFC4856]. every implementation that supports G723 understands the annexa attribute, so this case MUST be treated as if the offer or answer has G723 with annexa=yes 🫢

when the offer has G723 with annexa=yes and the answer has G723 with annexa=no, the offerer and answerer MUST proceed as if G723 is negotiated with annexa=no πŸ”₯

when the offer has G723 with annexa=no, then after the offer/answer completion, the offerer and answerer MUST proceed as if G723 is negotiated with annexa=no πŸ’…

the reason the answer isn't required to have annexa=no when the offer has G723 with annexa=no is that some implementations leave the annexa parameter out of the answer πŸ™ƒ in those cases, the offerer and answerer still proceed as if G723 is negotiated with annexa=no. so the answer MUST have annexa=no is not a rule here, it's just a reason for the design 🧐

when the offer has G723 with no annexa parameter and the answer has G723 with annexa=yes, the offerer and answerer MUST proceed as if G723 is negotiated with annexa=yes πŸŽ€

3.3. Offer/Answer Considerations for G729 Annex B, G729D Annex B, and G729E Annex B 🧚

in this section, G729 means any of G729, G729D, or G729E. the whole family, periodt πŸ’–

when the offer or answer has G729 and there's no annexb parameter, the offerer or answerer knows it has implied the default annexb=yes. that's because the annexb attribute was part of the original registration of audio/G729 [RFC4856]. every implementation that supports G729 understands the annexb attribute, so this case MUST be treated as if the offer or answer has G729 with annexb=yes πŸ‘‘

when the offer has G729 with annexb=yes and the answer has G729 with annexb=no, the offerer and answerer MUST proceed as if G729 is negotiated with annexb=no ✨

when the offer has G729 with annexb=no, then after the offer/answer completion, the offerer and answerer MUST proceed as if G729 is negotiated with annexb=no 🌈

the reason the answer isn't required to have annexb=no when the offer has G729 with annexb=no is that some implementations leave the annexb parameter out of the answer πŸ™ˆ in those cases, the offerer and answerer still proceed as if G729 is negotiated with annexb=no. so the answer MUST have annexb=no is not a rule here, it's just a reason for the design 🫠

when the offer has G729 with no annexb parameter and the answer has G729 with annexb=yes, the offerer and answerer MUST proceed as if G729 is negotiated with annexb=yes πŸ’œ


part 1 of 2 ✨ part 2 is coming with the examples, security, acknowledgments and refs 🫢

7. Normative References ✨

Okay so these are the docs this RFC leans on for the important stuff, the ones you have to know to actually get it right, bestie 🫢

  • [RFC2119]: Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. This is the one that defines the capital-letter key words, so it's basically the rulebook for how strong each requirement is πŸ“–
  • [RFC3264]: Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002. This is the offer/answer model that the whole negotiation thing is built on πŸ’…
  • [RFC3551]: Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control", STD 65, RFC 3551, July 2003. The RTP profile for audio and video, so the payload types and all that jazz πŸŽ€
  • [RFC4566]: Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006. This is SDP itself, the format everything gets described in πŸ¦‹
  • [RFC4856]: Casner, S., "Media Type Registration of Payload Formats in the RTP Profile for Audio and Video Conferences", RFC 4856, February 2007. This one's about registering media types for payload formats, very organized of them 🌸
  • [RFC6562]: Perkins, C. and JM. Valin, "Guidelines for the Use of Variable Bit Rate Audio with Secure RTP", RFC 6562, March 2012. This covers variable bit rate audio when you're running secure RTP, which is iconic for keeping things safe πŸ”₯

Authors' Addresses πŸ’Œ

Okay, so here's who wrote it, bestie 🧚

Muthu Arul Mozhi Perumal Cisco Systems Cessna Business Park Sarjapur-Marathahalli Outer Ring Road Bangalore, Karnataka 560103 India

EMail: mperumal@cisco.com

Parthasarathi Ravindran NSN Manyata Embassy Business park Bangalore, Karnataka 560045 India

EMail: partha@parthasarathi.co.in

πŸ“¦ where this page comes from