Network Working Group                                  Magnus Westerlund
INTERNET-DRAFT                                                  Ericsson
Category: Standards Track                              February 21, 2003
Expires: August 2003




      How to make Real-Time Streaming Protocol (RTSP) traverse Network
           Address Translators (NAT) and interact with Firewalls.
                     <draft-ietf-mmusic-rtsp-nat-00.txt>


Status of this memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   material or cite them other than as "work in progress".

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/lid-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This document is an individual submission to the IETF. Comments
   should be directed to the authors.

Copyright Notice

   Copyright (C) The Internet Society (2003). All Rights Reserved.

Abstract

   This document describes four different types of NAT traversal
   techniques that can be used by RTSP. For each technique a description
   on how it shall be used, what security implications it has and other
   deployment considerations that exist is given. Further a description
   on how RTSP relates to firewalls are also given.






Westerlund                                                      [Page 1]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


TABLE OF CONTENTS

1. Definitions.........................................................3
   1.1. Glossary.......................................................3
   1.2. Terminology....................................................3
2. Introduction........................................................3
   2.1. NATs...........................................................4
   2.2. Firewalls......................................................5
3. NAT Traversal Techniques............................................5
   3.1. STUN...........................................................5
      3.1.1. Introduction..............................................5
      3.1.2. Usage with RTSP...........................................5
      3.1.3. Deployment Considerations.................................7
      3.1.4. Security Considerations...................................7
   3.2. Symmetric RTP..................................................8
      3.2.1. Introduction..............................................8
      3.2.2. Necessary RTSP extensions.................................8
      3.2.3. Using Symmetric RTP in RTSP...............................9
      3.2.4. Open Issues..............................................10
      3.2.5. Deployment Considerations................................10
      3.2.6. Security Consideration...................................11
   3.3. Application Level Gateways....................................12
      3.3.1. Introduction.............................................12
      3.3.2. Using ALG for RTSP.......................................12
      3.3.3. Deployment Considerations................................13
      3.3.4. Security Considerations..................................13
   3.4. TCP Tunneling.................................................13
      3.4.1. Introduction.............................................13
      3.4.2. Usage of TCP tunneling in RTSP...........................14
      3.4.3. Deployment Considerations................................14
      3.4.4. Security Considerations..................................14
4. Firewalls..........................................................14
5. Security Consideration.............................................15
6. IANA Consideration.................................................15
7. Acknowledgments....................................................15
8. Author's Addresses.................................................16
9. References.........................................................16
   9.1. Normative references..........................................16
   9.2. Informative References........................................16
10. IPR Notice........................................................17
11. Copyright Notice..................................................18













Westerlund                  Standards Track                    [Page 2]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


1. Definitions

1.1. Glossary

   NAT - Network Address Translator, see [8].
   NAT-PT -  Network Address Translator Protocol Translator, see [9]
   RTSP - Real-Time Streaming Protocol, see [1] and [7].
   SDP - Session Description Protocol, see [2].

1.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 RFC 2119 [4].

   [Authors Note: This document reference a number of RTSP transport
   header parameters that will not be part of the next RTSP draft
   version. These parameter are "client_rtcp_port", "server_rtcp_port",
   and will instead be replace with a more general mechanism. However as
   this is not available in a published draft this will reference the
   mechanism present in draft version 02 of [7]. ]

2. Introduction

   Today there is unfortunately Network Address Translators (NAT) [8]
   everywhere and a protocol needs to try to make sure that it can work
   through them in some fashion. The problem with RTSP is that it
   carries information about network addresses and ports inside itself.
   It is primarily the media streams that are being blocked by NAT.

   Firewalls are also middle boxes that needs to be considered. They are
   deployed to prevent non-desired traffic/protocols to be used or reach
   the protected network. RTSP is designed to allow a firewall to let
   RTSP controlled streams through, if chosen to, with minimal
   implementation problems. However there is need for more detailed
   information on how a firewall may be configured to allow RTSP to be
   used through it.

   This document explains how some NAT traversal mechanism can be used
   with RTSP. The necessary RTSP protocol extensions are defined. What
   security problems arise from the different mechanisms is also
   explained.

   This document is not based on the so proposed standard RTSP of RFC
   2326 [1]. It is instead based and depending on the updated RTSP
   specification [7], which is under development in the MMUSIC WG. The
   updated specification is a much-needed attempt to correct a number of
   shortcomings of RFC 2326. One important change is that the
   specification is split into several parts. So far only the updated
   core specification of RTSP is available in [7]. This document is one
   extension document to this core spec documenting a special



Westerlund                  Standards Track                    [Page 3]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   functionality that extends the RTSP protocol. It is intended to
   maintain and update this document to be consistent with the core
   protocol.

2.1. NATs

   Today there exist a number of different NAT types and usage areas.
   The different NAT types, cited from STUN [31]:

   Full Cone: A full cone NAT is one where all requests from the same
   internal IP address and port are mapped to the same external IP
   address and port. Furthermore, any external host can send a packet to
   the internal host, by sending a packet to the mapped external
   address.

   Restricted Cone: A restricted cone NAT is one where all requests from
   the same internal IP address and port are mapped to the same external
   IP address and port. Unlike a full cone NAT, an external host (with
   IP address X) can send a packet to the internal host only if the
   internal host had previously sent a packet to IP address X.

   Port Restricted Cone: A port restricted cone NAT is like a restricted
   cone NAT, but the restriction includes port numbers. Specifically, an
   external host can send a packet, with source IP address X and source
   port P, to the internal host only if the internal host had previously
   sent a packet to IP address X and port P.

   Symmetric: A symmetric NAT is one where all requests from the same
   internal IP address and port, to a specific destination IP address
   and port, are mapped to the same external IP address and port. If the
   same host sends a packet with the same source address and port, but
   to a different destination, a different mapping is used. Furthermore,
   only the external host that receives a packet can send a UDP packet
   back to the internal host.

   NAT's are used on both small and large scale. The normal small-scale
   user is home user that has a NAT to allow multiple computers share
   the single IP address given by their Internet Service Provider (ISP).
   The large scale users are the ISP's themselves that gives there users
   private addresses. This is done both for control and lack of
   addresses.

   Native Address Translation and Protocol Translation (NAT-PT) [9] is
   mechanism used for IPv4 to IPv6 transition. This device is used to
   allow devices only having connectivity using one of the IP versions
   to communicate with the other address domain. The other address
   domain is addressable through the use of domain names. Then a DNS ALG
   assigns temporary IP addresses in the requestor's domain. The NAT-PT
   device translates this temporary address to the receivers true IP
   address and at the same time modify all necessary fields to be
   correct in the receiver's address domain.



Westerlund                  Standards Track                    [Page 4]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003



2.2. Firewalls

   [TBW]

3. NAT Traversal Techniques

   There exist a number of NAT traversal techniques that can be to allow
   RTSP to function through the NAT. However they have different
   applicability and trade offs. There are also differing in there
   security considerations. Each techniques chapter will outline the
   advantage and disadvantage of using it.

3.1. STUN

3.1.1. Introduction

   The STUN protocol [6] allows a client to discover the type of NAT(s)
   he is behind and also discover a mappings public address and port
   number. The protocol also allows discovery of the mappings timeout
   period and can be used as keep alive mechanism.

   How useful this protocol is depends on the type of NAT(s) the client
   is behind. If the user is behind a full cone NAT, STUN allows the
   RTSP client to traverse the NAT with some simple client side
   adaptations. For restricted cone NATs STUN is still useful but
   require some more adaptations. For symmetric NATs STUN requires such
   severe server adaptations that it is not practical to use.

3.1.2. Usage with RTSP

   A RTSP client using RTP transport over UDP can use STUN to traverse a
   full cone NAT in the following way:

   1. Use STUN to discover the type of NAT, if any, and the timeout
      period for any UDP mapping on the NAT. This is RECOMMENDED to be
      performed in the background as soon as IP connectivity is
      established. If this is performed prior to the attempt to
      establish a streaming session the possible delays in the session
      establishment will be reduced. If no NAT is present, use the
      normal SETUP behavior.

   2. The RTSP client determines the number of UDP ports needed by
      counting the number of RTP sessions part of the multi-media
      presentation. This information is available in the media
      description protocol used, e.g. SDP. In general each RTP session
      will require two UDP ports, one for RTP, and one for RTCP. Ensure
      that the same public IP address is used for each RTP/RTCP port
      pair established.





Westerlund                  Standards Track                    [Page 5]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   3. For each UDP port required, establish a mapping and discover the
      public IP address and port number with use of STUN. If successful
      this results in that the client now knows for each port know the
      mapping: clients local address/port <-> public address/port.

   4. Perform the RTSP SETUP for each media. In the transport header the
      following parameters SHOULD be included with the given values:
      "destination" with the public IP address, "client_port" with the
      public port of the mapping determined to be used for RTP,
      "client_rtcp_port" with the port number of the mapping to be used
      for RTCP. The parameter "client_rtcp_port" needs to be used unless
      the client has managed to establish a mapping with two consecutive
      numbers starting with an even one. To allow this to work servers
      MUST allow a client to setup the RTP stream on any port, not only
      even ports. The server SHALL respond with a transport header
      containing the source IP address of the media streams.

   5. To keep the mappings alive the client SHOULD periodically send UDP
      traffic over all mappings needed for the session. STUN can be used
      to determine the timeout period of the NAT(s) UDP mappings. For
      the mapping carrying RTCP traffic the periodic RTCP traffic may be
      sent frequently enough. If not or for RTP carrying mappings, empty
      IP/UDP messages SHOULD be sent to the streaming servers discard
      port (port number 9).

   If a UDP mapping is lost above process is required to be performed
   again and the media stream needs to be SETUP again changing the
   transport parameters to the new ones.

   To allow the UDP packets to arrive from the server to a client behind
   a restricted NAT, any UDP messages must be sent to the server.
   Therefore SHOULD the client, before sending a RTSP PLAY request send
   an empty UDP message, on each mapping, to the IP address given as the
   servers source address and its discard port (port number 9).
   Otherwise no difference in procedure compared with a full cone NAT is
   needed.

   For a port restricted NAT the client must send messages to the exact
   ports used by the server to send messages. This makes it possible to
   use the above described process with the following additions: For
   each port mapping, a UDP message needs to be sent to the servers
   source address/port. To minimize potential effects on the server from
   these messages the following type of messages MUST be sent. RTP: An
   empty UDP message with out any payload. RTCP: A correctly formed RTCP
   message. Unless enough bandwidth is assigned to RTCP it might not be
   possible to keep the UDP mapping open. These messages SHOULD be sent
   before sending a PLAY request and then periodically. As the messages
   are unreliable there is no possibility to guarantee that mappings are
   kept open. However to achieve good probability and at the same time
   don't send unnecessary traffic it is RECOMMENDED that the client




Westerlund                  Standards Track                    [Page 6]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   sends the message with a period that is equal to the bindings timeout
   divided by 10.

   To be able to use STUN to traverse symmetric NATs the STUN server
   needs to be co-located with the streaming server media distribution
   ports. This creates an unclear demultiplexing point within the
   server. As this will create implementations difficulties and possibly
   security problems this SHOULD NOT be done.
   If a NAT supports RTSP ALG and are not aware of the STUN traversal
   option this may cause service failure. The problem arises it the STUN
   using client inserts the public address and port number into a SETUP
   request. When the RTSP ALG processes the SETUP request it may change
   the destination and port number if it does not detect the fact that
   the destination is one of the NAT's public addresses. If the NAT
   creates mappings assuming that the client uses its local address and
   ports in the request this will create unpredictable results.

3.1.3. Deployment Considerations

   Advantages:

   - Does not require RTSP server modifications, totally client
      implemented tool.

   Disadvantages:

   - Requires a STUN server deployed in the public address space.
   - Does only work well behind Cone NATs. Does not normally work with
      Symmetric NATs.
   - Will mostly not work from behind NATs using multiple IP addresses,
      as it requires all streams to have the same IP, see below.
   - Interaction problems when a RTSP ALG is not aware of STUN.
   - Requires RTSP servers supporting the updated specification.

3.1.4. Security Considerations

   To prevent RTSP server being Denial of Service (DoS) attack tools the
   RTSP Transport header parameter "Destination" is not allowed to point
   at other IP addresses then the one the RTSP message transport
   originates from. The server is only allowed to do exception from this
   when the client is trusted through a secure authentication process
   with secure transport of RTSP message or a secure method of
   challenging the destination that verify its acceptance of the traffic
   is used. The restriction result in that STUN does not work for NATs
   that would assign different IP addresses to different UDP flows on
   its public side. Which results in that most multi-address NATs will
   not work.

   STUN used with destination address restrictions in place has the same
   security properties as core RTSP. It cannot be used as a DoS attack
   tool unless the attacker has possibility to intercept or reroute the



Westerlund                  Standards Track                    [Page 7]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   RTSP control traffic going from the server towards the intended
   target IP.

3.2. Symmetric RTP

3.2.1. Introduction

   Symmetric RTP is a NAT traversal solution that is based on that NATed
   client sends packets to the server address to the servers send ports.
   When the server receives the packet, it copies the source IP and Port
   number and uses them as delivery address for servers packets. By
   having the server send media traffic back the same way as the
   client's packet are sent to the server they will use the opened
   mappings. Therefore this technique also works for symmetric NATs.

   It has the advantage of working for all types of NATs. However it
   requires server modifications. Symmetric RTP is somewhat more
   vulnerable to hijacking attacks, which will be explained in more
   details below.

3.2.2. Necessary RTSP extensions

   To support symmetric RTP the RTSP signaling must be extended to allow
   the client to indicate that it will use symmetric RTP. The client
   also needs to be able to signal its RTP SSRC to the server. The RTP
   SSRC is used to establish a basic security level against hijacking
   attacks.

   A RTP specific Transport header parameter is defined to indicate that
   symmetric RTP shall be used for the media transport. The parameter is
   included in each Transport header specification where the client will
   use symmetric RTP. A Server SHALL NOT accept the transport
   specification unless it supports symmetric RTP. If the client has
   requested to use symmetric RTP for a session the server MUST include
   the parameter in the response.

   The parameter is defined in ABNF [3] as:

     symm-usage = "sym_rtp" "=" "1"

   Which follows the definition in [7] for transport parameter
   extensions.

   Further a RTSP options tag that can be used to indicate support of
   symmetric RTP according to this specification is defined.

     nat.sym-rtp

   This tag SHALL be included in the supported header by both clients
   and server supporting symmetric RTP according to this specification.




Westerlund                  Standards Track                    [Page 8]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


3.2.3. Using Symmetric RTP in RTSP

   The server and client uses Symmetric RTP in the following way:

   1. The client knows or has determined by the use of STUN that it is
       located behind a NAT. It may also determined the type of NAT it
       is behind.

   2. The client MAY investigate if the server supports symmetric RTP
       by including the supported header with the tag "nat.sym-rtp" in
       an OPTIONS or DESCRIBE request to the server. A server supporting
       symmetric RTP will include the tag in its response.

   3. The client determines that it will use symmetric RTP to traverse
       the NAT. This decision is based on knowledge about the NAT type
       and necessary support from the server.

   4. The client sends a SETUP request to the server where all
       transport specs using RTP/UDP for which the client desires to use
       symmetric RTP for includes the parameter "sym_rtp=1". It MUST
       also include the parameter "client_ssrc" in each transport
       specification containing "sym_rtp=1". The "client_ssrc" contains
       the random SSRC it is going to use for that RTP session. The SSRC
       MUST be assigned in a random way as the randomness of the SSRC is
       the basic security mechanism that prevents hijacking. Symmetric
       RTP MUST only be requested for unicast transport.

   5. The server chose the transport specification that it will use to
       transport the media and send it response. When this transport
       specification is one declaring the use of symmetric RTP the
       server performs the following:
       - The server MUST include the transport parameters "sym_rtp=1",
       "source", and "server_port" in the response.
       - The server MUST both send and receive data on the indicated
       ports. Otherwise the NAT traversal will not work if the NAT is a
       symmetric or port restricted one.
       - The server ignores any of the transport header parameters
       "destination", client_port, and client_rtcp_port.

   6. The Server starts listening on the declared server ports after an
       RTP/UDP packet containing the SSRC the client has declared it
       will use. Any received RTP/UDP packet not containing the SSRC
       that the client has declared MUST be ignored. When the server
       receives a RTP/UDP packet containing the matching SSRC the server
       stores the source IP and Port as being the destination address
       and port for that media. It performs the corresponding actions
       for the RTCP port to establish the destination of the RTCP
       transmissions.

   7. The client establishes the address binding at the server by
       sending RTP or RTCP to the servers declared media address and



Westerlund                  Standards Track                    [Page 9]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


       port from the port it desires to receive RTP/RTCP on. For the RTP
       channel it sends a RTP/UDP message containing the SSRC that it
       declared to the server that it would use. The RTP/UDP packet
       SHALL NOT contain any payload data and use payload type 0. To the
       servers RTCP port it sends a normal RTCP packet.

   8. Upon reception of a packet creating the binding the server SHALL
       respond. On the RTP port it SHALL respond with a single RTP/UDP
       packet using payload type 0 and having a 0 byte payload. For each
       received client packet that contains the correct SSRC the server
       SHALL respond with a single packet. For RTCP it starts
       transmitting RTCP packets according to the rules.

   9. To prevent that the clients binding packets are not lost the
       client SHOULD retransmit the binding RTP packet every 250 ms
       until it receives a response with an empty RTP packet or it has
       retransmitted 20 times. For RTCP it is enough to transmit RTCP
       packet according to the normal rules. However a client MAY send
       one RTCP packet every 500 ms until it receives an answer, or it
       has tried for 10 seconds.

   10. When the client has received answers for both RTP and RTCP it can
       safely progress the session and send a PLAY request.

   11. To ensure that the binding is not lost the client SHOULD send a
       empty RTP/UDP packet with PT=0 to the server every tenth of the
       mapping timeout time that has been discovered for the NAT. The
       discovery can be performed by using STUN. The client SHOULD not
       send these packets as long as the server transmit RTP packets to
       the client. Unless the NAT mappings has very short timeouts or
       the RTCP bandwidth is severely restricted the RTCP traffic should
       automatically keep its connection open.

3.2.4. Open Issues

   The proposal for symmetric RTP contains some open issues that needs
   to be addressed.

   What RTP payload type(s) shall the client use. Should it use one of
   the types that the server has declared is going to use in the server
   -> client direction or a static one?

   Should the security be improved by having a RTP challenge that can
   contain longer random identifiers? If that is the case it should have
   a static payload type as the client can't establish dynamic payload
   type declarations.

3.2.5. Deployment Considerations

   Advantages:




Westerlund                  Standards Track                   [Page 10]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   - Works for all types of NATs, including those using multiple IP
      addresses.
   - Have no interaction problems with any RTSP ALG changing the
      client's information in the transport header.

   Disadvantages:

   - Requires Server support.
   - Has somewhat worse security situation then STUN when using address
      restrictions.

3.2.6. Security Consideration

   Symmetric RTP's major security issues are that streams can be
   hijacked and directed towards any target that the attacker desires
   the server's traffic to go to.

   The attack can be performed in a few variations. The basic attack is
   based on that an attacker can read the RTSP signaling packets and
   those learn the address and port the server will send from and also
   the SSRC the client will use. Having this information the attacker
   can send its own RTP packets containing the correct RTP SSRC to the
   correct address and port on the server. The destination of the
   packets is set as the source IP and port in these RTP packets.

   Another variation of this attack is to look at the RTP traffic being
   directed to the server and simple change the source IP to the target
   one desires to attack.

   The first attack is possible to protect one self by applying
   encryption of the RTSP signaling transport. However the second
   variation is impossible to defend against. As the NAT rewrites the
   source IP and port this can't be authenticated which would be
   required to protect against this attack.

   Symmetric RTP's strength against hijacking attacks by others then a
   man in the middle is dependent on the random tag that is included in
   the binding packets. This proposal uses the 32-bit RTP SSRC field to
   this effect. Therefore it is important that this field is derived
   with a non-predictive randomizer. It shall not be possible by knowing
   the algorithm used and a couple of basic facts, be able to derive
   what random number a certain client will use.

   A attacker not knowing the SSRC but knowing which port numbers that a
   server sends from can deploy a brute force attack on the server by
   testing a lot of different SSRCs until it founds a matching one.
   Therefore a server SHOULD implement functionality that blocks ports
   that receive multiple binding packets with different SSRCs, especialy
   if they are coming from the same IP/Port.





Westerlund                  Standards Track                   [Page 11]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   To improve the security against attackers not being man in the
   middles the random tags length needs to be increased. To perform this
   while still using RTP and RTCP would require the development of a RTP
   payload format for carrying these and a corresponding one in RTCP.

3.3. Application Level Gateways

3.3.1. Introduction

   An Application Level Gateway (ALG) reads the application level
   messages and perform the necessary changes to allow the protocol to
   work through the middle box. However this behavior has some problems
   in regards to RTSP:

   1. Does not work when protocol is used with end-to-end security. As
   the ALG can't inspect and change the application level messages the
   protocol will fail due to the middle box.

   2. Needs to be updated if extensions to the protocol are added. Due
   to deployment issues with changing ALG's this may also break the end-
   to-end functionality of RTSP.

   Due to the above reasons it is NOT RECOMMENDED to use an RTSP ALG in
   NATs. This is especially important for NAT's targeted to home users
   and small office environments.

3.3.2. Using ALG for RTSP

   An ALG for the RTSP core specification [7] would need to perform the
   following tasks and changes to RTSP:

   1. Detect any SETUP request.

   2. Determine if the SETUP request already employ STUN type traversal.
      This is detected by detecting a destination header that contains
      one of the NAT's public IP addresses. If that is present the ALG
      MUST NOT modify the request.

   3. Create UDP mappings (client given IP/port <-> public IP/port)
      where needed for all possible transport specification in the
      transport header of the request found in (1). Enter the public
      address and port(s) of these mappings in transport header.
      Mappings SHALL be created with consecutive public port number
      starting on an even number for RTP each stream. Mappings SHOULD
      also be given a long timeout period, at least 5 minutes.

   4. When the response is received from the server the ALG MAY remove
      the unused UDP mappings, i.e. the ones not present in the
      transport header. The session ID SHOULD also be bound to the UDP
      mappings part of that session.




Westerlund                  Standards Track                   [Page 12]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   5. The ALG SHOULD keep alive the UDP mappings belonging to the an
      RTSP session as long as: RTSP messages with the session's ID has
      been sent in the last RTSP session timeout interval, or UDP
      messages are sent on any of the UDP mappings during the last RTSP
      timeout interval.

   6. The ALG MAY remove a mapping as soon a TEARDOWN response has been
      received for that media stream.

3.3.3. Deployment Considerations

   Advantage:

   - No impact on either client or server
   - Can be made for any type of NATs

   Disadvantage:

   - When deployed they are hard to have updated to reflect protocol
      modifications and extensions. If not updated they will prevent
      functionality.
   - When end-to-end security is used the ALG functionality fails and
      prevents the protocol functionality.
   - Can interfere with other type of traversal mechanisms.

3.3.4. Security Considerations

   An ALG will not work when deployment of end-to-end RTSP signaling
   security. Therefore deployment of ALG will result in that end-to-end
   security will not be used by clients located behind NATs.

3.4. TCP Tunneling

3.4.1. Introduction

   Using a TCP connection that is established from the client to the
   server ensures that the server can send data to the client. The
   connection opened from the private domain ensures that the server can
   send data back to the client. To send data original intended to be
   transport over RTP requires the TCP connection to support some type
   of framing of the RTP packets.

   Using TCP also results in that the client has to accept that real-
   time performance may no longer be possible. TCP's problem of ensuring
   timely deliver was the reasons why RTP was developed. Problems that
   arise with TCP are: Head of line blocking, Retransmissions, Highly
   varying congestion control.







Westerlund                  Standards Track                   [Page 13]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


3.4.2. Usage of TCP tunneling in RTSP

   The RTSP core specification [7] supports interleaving of media data
   on the RTSP TCP signaling TCP connection. See section 10.13 in [7]
   for how to perform this TCP tunneling.

   There is currently work on one more way of transporting RTP over TCP
   in AVT and MMUSIC. For signaling and rules on how to establish the
   TCP connection is place of using UDP ports see [12]. Another draft
   describes how to frame RTP over the TCP connection, see [13].

3.4.3. Deployment Considerations

   Advantage:

   - Works through all types of NATs.

   Disadvantage:

   - Functionality needs to be implemented on both server and client.
   - May not give real-time performance.

3.4.4. Security Considerations

   The TCP tunneling of RTP has no known security problem besides them
   already present in RTSP. It is not possible to get any amplification
   effect that is desired for denial of service attacks due to TCP's
   flow control.

   Opening further server ports that one can connect does not worsen any
   denial of service attacks that the server can be target of.

   A possible consideration will be the performance bottleneck any RTSP
   signaling encryption will become when all session media needs to be
   encrypted.

4. Firewalls

   Firewalls exist for a purpose to protect a network from traffic not
   desired by the firewall owner. Therefore it is a policy decision if a
   firewall will let RTSP and its media streams through or not. RTSP is
   designed to be as easy as possible to process for a firewall with a
   policy to let the traffic pass through.

   The firewall will need to allow the media streams associated with a
   RTSP session pass through it. Therefore the firewall will need an ALG
   that reads RTSP SETUP and TEARDOWN messages. By reading the SETUP
   message the firewall can determine what type of transport and from
   where the media streams will use. Very common will be the need to
   open UDP ports for RTP/RTCP. By looking at the source and destination
   addresses and ports the opening in the firewall can be minimized to



Westerlund                  Standards Track                   [Page 14]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   the least necessary. The opening in the firewall can be closed after
   a teardown message for that session or the session itself times out.

5. Security Consideration

   The presence of NAT(s) is a security risk, as a client cannot perform
   source authentication of its IP address. This prevents the deployment
   of any future RTSP extensions providing security against hijacking of
   sessions by a man in the middle.

   Each of the different technique for doing NAT traversal has security
   implications.

   Using STUN as long as the server do not grant a client request to
   send media to different IP addresses will provide the same level of
   security as RTSP with out transport level security and source
   authentication provides.

   Usage of symmetric RTP will have a slightly higher risk of session
   hijacking than normal RTSP. The reason is that there exists a
   probability that an attacker is able to guess the random tag that the
   client uses to prove its identity when creating the address bindings.

   The usage of an RTSP ALG does not increase in itself the risk for
   session hijacking. However the deployment of ALGs are sole mechanism
   for RTSP NAT traversal will result in that usage of signaling
   security will be prevented.

   The usage of TCP tunneling has no known security problems. However it
   might provide a bottleneck when it comes to end-to-end RTSP signaling
   security if TCP tunneling is used on a interleaved RTSP signaling
   connection.

6. IANA Consideration

   This specification would like to register 1 new Transport header
   parameter "sym_rtp" as defined in section 3.2.2.

   It does also register one more RTSP option tag "nat.sym-rtp" as
   defined in section 3.2.2.

7. Acknowledgments

   The author would also like to thank all persons on the MMUSIC working
   group's mailing list that has commented on this specification.
   Persons having contributed in such way in special order to this
   protocol are: Jonathan Rosenberg, Philippe Gentric, Tom Marshall,
   David Yon, Amir Wolf, Anders Klemets, and Colin Perkins.






Westerlund                  Standards Track                   [Page 15]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


8. Author's Addresses

    Magnus Westerlund Tel: +46 8 4048287
    Ericsson Research Email: Magnus.Westerlund@ericsson.com
    Ericsson AB
    Torshamnsgatan 23
    SE-164 80 Stockholm, SWEDEN

9. References

9.1. Normative references

   [1]  H. Schulzrinne, et. al., "Real Time Streaming Protocol (RTSP)",
        IETF RFC 2326, April 1998.
   [2]  M. Handley, V. Jacobson, "Session Description Protocol (SDP)",
        IETF RFC 2327, April 1998.
   [3]  D. Crocker and P. Overell, "Augmented BNF for syntax specifica-
        tions: ABNF," RFC 2234, Internet Engineering Task Force, Nov.
        1997.
   [4]  S. Bradner, "Key words for use in RFCs to Indicate Requirement
        Levels", RFC 2119, March 1997.
   [5]  H. Schulzrinne, et. al., "RTP: A Transport Protocol for Real-
        Time Applications", IETF RFC 1889, January 1996.
   [6]  J. Rosenberg, et. Al., " STUN - Simple Traversal of UDP Through
        Network Address Translators", IETF Draft, draft-ietf-midcom-
        stun-05.txt, Dec. 2002.
   [7]  H. Schulzrinne, et. al., "Real Time Streaming Protocol (RTSP)",
        draft-ietf-mmusic-rfc2326bis-02.txt, IETF draft, November 2002,
        work in progress.

9.2. Informative References

   [8]  P. Srisuresh, K. Egevang, "Traditional IP Network Address
        Translator (Traditional NAT)," RFC 3022, Internet Engineering
        Task Force, January 2001.
   [9]  Tsirtsis, G. and Srisuresh, P., "Network Address Translation -
        Protocol Translation (NAT-PT)", RFC 2766, Internet Engineering
        Task Force, February 2000.
   [10] S. Deering and R. Hinden, "Internet Protocol, Version 6 (IPv6)
        Specification", RFC 2460, Internet Engineering Task Force,
        December 1998.
   [11] J. Postel, "internet protocol", RFC 791, Internet Engineering
        Task Force, September 1981.
   [12] D. Yon, "Connection-Oriented Media Transport in SDP", IETF
        draft, draft-ietf-mmusic-sdp-comedia-04.txt, July 2002.





Westerlund                  Standards Track                   [Page 16]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


   [13] John Lazzaro, "Framing RTP and RTCP Packets over Connection-
        Oriented Transport", IETF Draft, draft-lazzaro-avt-rtp-framing-
        contrans-00.txt, January 2003.


10. IPR Notice

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; neither does it represent that it
   has made any effort to identify any such rights. Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11. Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
   obtain a general license or permission for the use of such
   proprietary rights by implementors or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard. Please address the information to the IETF Executive
   Director.



























Westerlund                  Standards Track                   [Page 17]


INTERNET-DRAFT     How to make RTSP traverse NAT & FW     Feb. 21, 2003


11. Copyright Notice

   Copyright (C) The Internet Society (2003). All Rights Reserved.

   This document and translations of it may be copied and
   furnished to others, and derivative works that comment on or
   otherwise explain it or assist in its implementation may be
   prepared, copied, published and distributed, in whole or in
   part, without restriction of any kind, provided that the above
   copyright notice and this paragraph are included on all such
   copies and derivative works. However, this document itself may
   not be modified in any way, such as by removing the copyright
   notice or references to the Internet Society or other Internet
   organizations, except as needed for the purpose of developing
   Internet standards in which case the procedures for copyrights
   defined in the Internet Standards process must be followed, or
   as required to translate it into languages other than English.

   The limited permissions granted above are perpetual and will
   not be revoked by the Internet Society or its successors or
   assigns.

   This document and the information contained herein is provided
   on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
   OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
   IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
   PARTICULAR PURPOSE.



This Internet-Draft expires in August 2003.





















Westerlund                  Standards Track                   [Page 18]