Internet Engineering Task Force (IETF) M. Perumal Request for Comments: 7261 Cisco Systems Category: Standards Track P. Ravindran ISSN: 2070-1721 NSN May 2014
Offer/Answer Considerations for G723 Annex A and G729 Annex B
Abstract
This document provides the offer/answer considerations for the annexa parameter of G723 and the annexb parameter of G729, G729D, and G729E when the value of the annexa or annexb parameter does not match in the Session Description Protocol (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 Notice
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.
Perumal & Ravindran Standards Track [Page 1]
RFC 7261 Offer/Answer G723 AnnexA and G729 AnnexB May 2014
[RFC4856] describes the annexa parameter for G723 as follows:
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.
Also, [RFC4856] describes the annexb parameter for G729, G729D, and G729E as follows:
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.
However, a problem arises when the value of the annexa or annexb parameter does not match in the SDP [RFC4566] offer and answer.
For example, if the offer has G729 with annexb=yes and the answer has G729 with annexb=no, it can be interpreted in two different ways:
o The offerer and answerer proceed as if G729 is negotiated with annexb=yes, or
o The offerer and answerer proceed as if G729 is negotiated with annexb=no.
Perumal & Ravindran Standards Track [Page 2]
RFC 7261 Offer/Answer G723 AnnexA and G729 AnnexB May 2014
Since this is not clear in the existing specifications, various implementations have interpreted the offer/answer in their own ways, resulting in a different codec being chosen to call failure, when the parameter value does not match in the offer and answer.
[RFC3264] requires SDP extensions that define new fmtp parameters to specify their proper interpretation in offer/answer. This document specifies the proper interpretation for the annexa and annexb parameters in offer/answer.
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].
The general objective of the offer/answer considerations is to make sure that if the offerer or answerer indicates it does not support Annex A or Annex B, then Annex A or Annex B is not used.
3.1. Considerations for Use of Comfort Noise Frames
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.
Hence, if the SDP offer or answer indicates that comfort noise is not supported, comfort noise frames MUST NOT be used.
When the offer or answer has G723 and the annexa parameter is absent, the offerer or answerer knows that it has implied the default "annexa=yes". This is because the annexa attribute is part of the original registration of audio/G723 [RFC4856]. All implementations that support G723 understand the annexa attribute. Hence, this case MUST be considered 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.
Perumal & Ravindran Standards Track [Page 3]
RFC 7261 Offer/Answer G723 AnnexA and G729 AnnexB May 2014
When the offer has G723 with annexa=no, after the offer/answer completion the offerer and answerer MUST proceed as if G723 is negotiated with annexa=no.
When the offer has G723 with annexa=no, the reason for not mandating that the answer MUST have annexa=no for G723 is that there are implementations that omit the annexa parameter in answer. In such cases, the offerer and answerer proceed as if G723 is negotiated with annexa=no.
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 represents any of G729 or G729D or G729E.
When the offer or answer has G729 and the annexb parameter is absent, the offerer or answerer knows that it has implied the default "annexb=yes". This is because the annexb attribute is part of the original registration of audio/G729 [RFC4856]. All implementations that support G729 understand the annexb attribute. Hence, this case MUST be considered 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, after the offer/answer completion the offerer and answerer MUST proceed as if G729 is negotiated with annexb=no.
When the offer has G729 with annexb=no, the reason for not mandating that the answer MUST have annexb=no for G729 is that there are implementations that omit the annexb parameter in the answer. In such cases, the offerer and answerer proceed as if G729 is negotiated with annexb=no.
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.
Perumal & Ravindran Standards Track [Page 4]
RFC 7261 Offer/Answer G723 AnnexA and G729 AnnexB May 2014
The guidelines described in [RFC6562] are to be followed for Use of Voice Activity Detection (i.e., Annex A or Annex B) with the Secure Real-time Transport Protocol (SRTP).
Perumal & Ravindran Standards Track [Page 6]
RFC 7261 Offer/Answer G723 AnnexA and G729 AnnexB May 2014
Thanks to Flemming Andreasen (Cisco), Miguel A. Garcia (Ericsson), Ali C. Begen (Cisco), Paul Kyzivat (Huawei), Roni Even (Huawei), Kevin Riley (Sonus), Ashish Sharma (Sonus), Kevin P. Fleming (Digium), Dale Worley (Avaya), Cullen Jennings (Cisco), Ari Keranen (Ericsson), Harprit S. Chhatwal (InnoMedia), Aurelien Sollaud (Orange), SM, Stephen Casner, Keith Drage (Alcatel-Lucent), Stephen Farrell, Barry Leiba, and Ted Lemon for their valuable input and comments. Martin Dolly (ATT) and Hadriel Kaplan (Acme Packet) provided useful suggestions at the mic at IETF 83.