idnits 2.17.1 draft-ietf-avt-app-rtp-keepalive-09.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 : ---------------------------------------------------------------------------- No issues found here. 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. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (September 24, 2010) is 4963 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC3261' is defined on line 363, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5405 (Obsoleted by RFC 8085) -- 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) -- Obsolete informational reference (is this intentional?): RFC 5389 (Obsoleted by RFC 8489) -- Obsolete informational reference (is this intentional?): RFC 5766 (Obsoleted by RFC 8656) Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 6 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Marjou 3 Internet-Draft A. Sollaud 4 Intended status: Standards Track France Telecom Orange 5 Expires: March 28, 2011 September 24, 2010 7 Application Mechanism for keeping alive the Network Address Translator 8 (NAT) mappings associated to RTP flows. 9 draft-ietf-avt-app-rtp-keepalive-09 11 Abstract 13 This document lists the different mechanisms that enable applications 14 using Real-time Transport Protocol (RTP) to maintain their RTP 15 Network Address Translator (NAT) mappings alive. It also makes a 16 recommendation for a preferred mechanism. This document is not 17 applicable to Interactive Connectivity Establishment (ICE) agents. 19 Status of this Memo 21 This Internet-Draft is submitted to IETF in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at http://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on March 28, 2011. 36 Copyright Notice 38 Copyright (c) 2010 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (http://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 54 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 55 3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 4 56 4. List of Alternatives for Performing RTP Keepalive . . . . . . 5 57 4.1. Transport Packet of 0-byte . . . . . . . . . . . . . . . . 5 58 4.2. RTP Packet with Comfort Noise Payload . . . . . . . . . . 5 59 4.3. RTCP Packets Multiplexed with RTP Packets . . . . . . . . 6 60 4.4. STUN Indication Packet . . . . . . . . . . . . . . . . . . 6 61 4.5. RTP Packet with Incorrect Version Number . . . . . . . . . 6 62 4.6. RTP Packet with Unknown Payload Type . . . . . . . . . . . 6 63 5. Recommended Solution for Keepalive Mechanism . . . . . . . . . 7 64 6. Media Format Exceptions . . . . . . . . . . . . . . . . . . . 7 65 7. Timing and Transport Considerations . . . . . . . . . . . . . 7 66 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 67 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 68 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8 69 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 70 11.1. Normative references . . . . . . . . . . . . . . . . . . . 8 71 11.2. Informative references . . . . . . . . . . . . . . . . . . 9 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10 74 1. Introduction 76 Documents [RFC4787] and [RFC5382] describe Network Address Translator 77 (NAT) behaviors and point out that two key aspects of NAT are 78 mappings (a.k.a. bindings) and keeping them refreshed. This 79 introduces a derived requirement for applications engaged in a 80 multimedia session involving NAT traversal: they need to generate a 81 minimum of flow activity in order to create NAT mappings and maintain 82 them. 84 When applied to applications using the real-time transport protocol 85 (RTP) [RFC3550], the RTP media stream packets themselves normally 86 fulfill this requirement. However there exist some cases where RTP 87 does not generate the minimum required flow activity. 89 The examples are: 91 o In some RTP usages, such as the Session Inititation Protocol (SIP) 92 [RFC3550], agents can negotiate a unidirectional media stream by 93 using the Session Description Protocol (SDP) [RFC4566] "recvonly" 94 attribute on one agent and "sendonly" on the peer, as defined in 95 [RFC3264]. [RFC3264] directs implementations not to transmit 96 media on the receiving agent. In case the agent receiving the 97 media is located in the private side of a NAT, it will never 98 receive RTP packets from the public peer if the NAT mapping has 99 not been created. 101 o Similarly, a bidirectional media stream can be "put on hold". 102 This is accomplished by using the SDP "sendonly" or "inactive" 103 attributes. Again [RFC3264] directs implementations to cease 104 transmission of media in these cases. However, doing so may cause 105 NAT bindings to timeout, and media won't be able to come off hold. 107 o Some RTP payload formats, such as the payload format for text 108 conversation [RFC4103], may send packets so infrequently that the 109 interval exceeds the NAT binding timeouts. 111 To solve these problems, an agent therefore needs to periodically 112 send keepalive data within the outgoing RTP session of an RTP media 113 stream regardless of whether the media stream is currently inactive, 114 sendonly, recvonly or sendrecv, and regardless of the presence or 115 value of the bandwidth attribute. 117 It is important to note that the above examples also require the 118 agents to use symmetric RTP [RFC4961] in addition to RTP keepalive. 120 This document first states the requirements that must be supported to 121 perform RTP keepalives (Section 3). In a second step, the document 122 reports the different mechanisms to overcome this problem 123 (Section 4). Section 5 finally states the recommended solution for 124 RTP keepalive. 126 This document is not applicable to Interactive Connectivity 127 Establishment (ICE) [RFC5245] agents. Indeed, the ICE protocol 128 together with Session Traversal Utilities for NAT (STUN) [RFC5389] 129 and Traversal Using Relays around NAT (TURN) [RFC5766] solve the 130 overall Network Address Translator (NAT) traversal mechanism of media 131 streams. In the context of RTP media streams, some agents may not 132 require all ICE functionalities and may only need a keepalive 133 mechanism. This document thus applies to such agents, and does not 134 apply to agents implementing ICE. 136 The scope of the draft is also limited to RTP flows. In particular, 137 this document does not address keepalive activity related to: 139 o Session signaling flows, such as the Session Initiation Protocol 140 (SIP). 142 o RTP Control Protocol (RTCP) flows. 143 Recall that [RFC3550] recommends a minimum interval of 5 144 seconds and that "on hold" procedures of [RFC3264] do not 145 impact RTCP transmissions. Therefore, when in use, there is 146 always some RTCP flow activity. 148 Note that if a given media uses a codec that already integrates a 149 keepalive mechanism, no additional keepalive mechanism is required at 150 the RTP level. 152 As mentionned in Section 3.5 of [RFC5405] "It is important to note 153 that keep-alive messages are NOT RECOMMENDED for general use -- they 154 are unnecessary for many applications and can consume significant 155 amounts of system and network resources." 157 2. Terminology 159 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 160 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 161 and "OPTIONAL" are to be interpreted as described in RFC 2119 162 [RFC2119]. 164 3. Requirements 166 This section outlines the key requirements that need to be satisfied 167 in order to provide RTP media keepalive. 169 REQ-1 Some data is sent periodically within the outgoing RTP session 170 for the whole duration of the RTP media stream. 172 REQ-2 Any type of transport (e.g. UDP, TCP) MUST be supported. 174 REQ-3 Any media type (e.g. audio, video, text) MUST be supported. 176 REQ-4 Any media format (e.g. G.711, H.263) MUST be supported. 178 REQ-5 Session signaling protocols SHOULD NOT be impacted. 180 REQ-6 Impacts on existing software SHOULD be minimized. 182 REQ-7 Remote peer SHOULD NOT be impacted. 184 REQ-8 The support for RTP keepalive SHOULD be described in the SDP. 186 REQ-9 The solution SHOULD cover the integration with RTCP. 188 4. List of Alternatives for Performing RTP Keepalive 190 This section lists, in no particular order, some alternatives that 191 can be used to perform a keepalive message within RTP media streams. 193 4.1. Transport Packet of 0-byte 195 The application sends an empty transport packet (e.g. UDP packet, 196 DCCP packet). 198 Cons: 199 o This alternative is specific to each transport protocol. 201 4.2. RTP Packet with Comfort Noise Payload 203 The application sends an RTP packet with a comfort-noise payload 204 [RFC3389]. 206 Cons: 207 o This alternative is limited to audio formats only. 208 o Comfort Noise needs to be supported by the remote peer. 209 o Comfort Noise needs to be signalled in SDP offer/answer. 210 o The peer is likely to render comfort noise at the other side, so 211 the content of the payload (the noise level) needs to be carefully 212 chosen. 214 4.3. RTCP Packets Multiplexed with RTP Packets 216 The application sends RTCP packets in the RTP media path itself (i.e. 217 same tuples for both RTP and RTCP packets) [RFC5761]. RTCP packets 218 therefore maintain the NAT mappings open. 220 Cons: 221 o Multiplexing RTP and RTCP must be supported by the remote peer. 222 o Some RTCP monitoring tools expect that RTCP packets are not 223 multiplexed. 225 4.4. STUN Indication Packet 227 The application sends a STUN [RFC5389] Binding Indication packet as 228 specified in ICE [RFC5245]. 230 Thanks to the RTP validity check, STUN packets will be ignored by the 231 RTP stack. 233 Cons: 234 o The sending agent needs to support STUN. 236 4.5. RTP Packet with Incorrect Version Number 238 The application sends an RTP packet with an incorrect version number, 239 which value is zero. 241 Based on RTP specification [RFC3550], the peer should perform a 242 header validity check, and therefore ignore these types of packet. 244 Cons: 245 o Only four version numbers are possible. Using one of them for RTP 246 keepalive would be wasteful. 247 o [RFC4566] and [RFC3264] mandate not to send media with inactive 248 and recvonly attributes, however this is mitigated as no real 249 media is sent with this mechanism. 251 4.6. RTP Packet with Unknown Payload Type 253 The application sends an RTP packet of 0 length with a dynamic 254 payload type that has not been negotiated by the peers (e.g. not 255 negotiated within the SDP offer/answer, and thus not mapped to any 256 media format). 258 The sequence number is incremented by one for each packet, as it is 259 sent within the same RTP session as the actual media. The timestamp 260 contains the same value a media packet would have at this time. The 261 marker bit is not significant for the keepalive packets and is thus 262 set to zero. 264 The SSRC is the same as for the media for which keepalive is sent. 266 Normally the peer will ignore this packet, as RTP [RFC3550] states 267 that "a receiver MUST ignore packets with payload types that it does 268 not understand". 270 Cons: 271 o [RFC4566] and [RFC3264] mandate not to send media with inactive 272 and recvonly attributes, however this is mitigated as no real 273 media is sent with this mechanism. 274 o [RFC3550] does not preclude examination of received packets by the 275 peer in an attempt to determine if it is under attack. 276 o The statement "RTP Packet with Unknown Payload Type" of RFC3550 is 277 not always observed in real life. 279 5. Recommended Solution for Keepalive Mechanism 281 The RECOMMENDED mechanism is the "RTCP packets multiplexed with RTP 282 packets" (Section 4.3). This mechanism is desirable because it 283 reduces the number of ports when RTP and RTCP are used. It also has 284 the advantage of taking into account RTCP aspects, which is not the 285 case of other mechanisms. 287 Other mechanisms (Section 4.1, Section 4.2, Section 4.4, Section 4.5, 288 Section 4.6) are NOT RECOMMENDED. 290 6. Media Format Exceptions 292 When a given media format does not allow the keepalive solution 293 recommended in Section 5, an alternative mechanism SHOULD be defined 294 in the payload format specification for this media format. 296 7. Timing and Transport Considerations 298 An application supporting this specification MUST transmit either 299 keepalive packets or media packets at least once every Tr seconds 300 during the whole duration of the media session. 302 Tr has different value according to the transport protocol 304 For UDP, the minimum RECOMMENDED Tr value is 15 seconds, and Tr 305 SHOULD be configurable to larger values. 307 For TCP, the recommended Tr value is 7200 seconds. 309 When using the "RTCP packets multiplexed with RTP packets" solution 310 for keepalive, Tr MUST comply with the RTCP timing rules of 311 [RFC3550]. 313 Keepalive packets within a particular RTP session MUST use the tuple 314 (source IP address, source TCP/UDP ports, target IP address, target 315 TCP/UDP Port) of the regular RTP packets. 317 The agent SHOULD only send RTP keepalive when it does not send 318 regular RTP packets. 320 8. Security Considerations 322 The RTP keepalive packets are sent on the same path as regular RTP 323 media packets and may be perceived as an attack by a peer. However, 324 [RFC3550] mandates a peer to "ignore packets with payload types that 325 it does not understand". A peer that does not understand the 326 keepalive message will thus appropriately drop the received packets. 328 9. IANA Considerations 330 None. 332 10. Acknowledgements 334 Jonathan Rosenberg provided the major inputs for this draft via the 335 ICE specification. In addition, thanks to Alfred E. Heggestad, Colin 336 Perkins, Dan Wing, Gunnar Hellstrom, Hadriel Kaplan, Magnus 337 Westerlund, Randell Jesup, Remi Denis-Courmont, Robert Sparks, and 338 Steve Casner for their useful inputs and comments. 340 11. References 342 11.1. Normative references 344 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 345 Requirement Levels", BCP 14, RFC 2119, March 1997. 347 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 348 Jacobson, "RTP: A Transport Protocol for Real-Time 349 Applications", STD 64, RFC 3550, July 2003. 351 [RFC4961] Wing, D., "Symmetric RTP / RTP Control Protocol (RTCP)", 352 BCP 131, RFC 4961, July 2007. 354 [RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines 355 for Application Designers", BCP 145, RFC 5405, 356 November 2008. 358 [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and 359 Control Packets on a Single Port", RFC 5761, April 2010. 361 11.2. Informative references 363 [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, 364 A., Peterson, J., Sparks, R., Handley, M., and E. 365 Schooler, "SIP: Session Initiation Protocol", RFC 3261, 366 June 2002. 368 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 369 with Session Description Protocol (SDP)", RFC 3264, 370 June 2002. 372 [RFC3389] Zopf, R., "Real-time Transport Protocol (RTP) Payload for 373 Comfort Noise (CN)", RFC 3389, September 2002. 375 [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text 376 Conversation", RFC 4103, June 2005. 378 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session 379 Description Protocol", RFC 4566, July 2006. 381 [RFC4787] Audet, F. and C. Jennings, "Network Address Translation 382 (NAT) Behavioral Requirements for Unicast UDP", BCP 127, 383 RFC 4787, January 2007. 385 [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment 386 (ICE): A Protocol for Network Address Translator (NAT) 387 Traversal for Offer/Answer Protocols", RFC 5245, 388 April 2010. 390 [RFC5382] Guha, S., Biswas, K., Ford, B., Sivakumar, S., and P. 391 Srisuresh, "NAT Behavioral Requirements for TCP", BCP 142, 392 RFC 5382, October 2008. 394 [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing, 395 "Session Traversal Utilities for NAT (STUN)", RFC 5389, 396 October 2008. 398 [RFC5766] Mahy, R., Matthews, P., and J. Rosenberg, "Traversal Using 399 Relays around NAT (TURN): Relay Extensions to Session 400 Traversal Utilities for NAT (STUN)", RFC 5766, April 2010. 402 Authors' Addresses 404 Xavier Marjou 405 France Telecom Orange 406 2, avenue Pierre Marzin 407 Lannion 22307 408 France 410 Email: xavier.marjou@orange-ftgroup.com 412 Aurelien Sollaud 413 France Telecom Orange 414 2, avenue Pierre Marzin 415 Lannion 22307 416 France 418 Email: aurelien.sollaud@orange-ftgroup.com