AMT/RTSP Proxy Server

Want to capture AMT messages in Wireshark? You can find what you need here.

The AMT/RTSP Proxy Server provides hosts that have no native multicast support, or are located in an isolated multicast-enabled site, with a means for accessing multicast media presentations originating in a remote multicast-enabled network.

The proxy server combines the Real-Time Streaming Protocol (RTSP) with Automatic Multicast Tunneling (AMT) to provide this capability. The proxy server functions both as an RTSP server and as an AMT application gateway. On the "front-end", it uses the RTSP protocol to communicate with applications that wish to receive multicast data. On the "back-end" it uses the AMT protocol to communicate with an AMT relay to construct a tunnel that is used to request and receive multicast packet streams.

The AMT/RTSP Proxy Server is implemented in pure Java. It can be run as a Java applet or application. Once the proxy server has been started, clients use the RTSP protocol to access a multicast streaming media presentation by passing the URL for a Session Description Protocol (SDP) presentation description to the proxy server in an RTSP URL. For example, if the proxy server is configured to listen on port 8054, a client would use the following URL to request delivery of multicast streams for a presentation described in live.sdp:

rtsp://127.0.0.1:8054/?http://sites.google.com/site/amtproxy/live.sdp

The SDP file for a source-specific multicast (SSM) media presentation must include at least one a=source-filter record to identify the source(s) for the media streams (as described in [RFC-4570]). This record will often need to be added manually after the SDP has been generated by a streaming server. For example:

v=0
o=- 200 4292005450 IN IP4 127.0.0.0
s=QuickTime
t=0 0
a=range:npt=now-
a=source-filter: incl IN IP4 * 149.20.1.154
m=audio 5432 RTP/AVP 96
c=IN IP4 232.123.123.2/64
b=AS:8
a=rtpmap:96 mpeg4-generic/8000/1
a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588
a=mpeg4-esid:101
m=video 5434 RTP/AVP 97
c=IN IP4 232.123.123.2/64
a=rtpmap:97 H264/90000
a=fmtp:97 packetization-mode=1;profile-level-id=4D400C;sprop-parameter-sets=J01ADKkYKD9gDUGAQa2wrXvfAQ==,KN4JF6A=
a=mpeg4-esid:201
a=cliprect:0,0,240,320
a=framesize:97 320-240

Information contained in the source SDP is used to generate the IGMP/MLD requests necessary to join the specified SSM or ASM multicast streams. These requests are sent through the AMT tunnel to the AMT relay connected to the remote multicast-enabled network. Once group membership has been established the AMT relay will deliver packets from those groups through the tunnel to the proxy server.

While the presentation may be sourced via multicast, the proxy server typically communicates with clients using unicast connections. The original SDP is rewritten before fowarding to the client as part of the RTSP message exchange. The client connects to the proxy server using addresses and ports negotiated between themselves, independent of the original stream addresses and ports.

The proxy server can stream incoming packets using UDP, TCP over the RTSP control connection, or TCP over an HTTP tunnel.