1. Introduction(介绍)
RFC3264[4]基于为多媒体会话建立连接的目的,定义一个两阶段交互的SDP消息。请求/应答机制在SIP[3]等协议中也得到应用。
使用请求/应答机制的协议难于通过NAT。因为它们的目的是建立一个媒体包的流程,它们往往是通过它们的消息携带IP地址,而这对于通过NAT[4]是存在问题的。协议还探索在两个参与者之间创建一个直接流程,所以,在它们之间不存在应用层仲裁者。这样就降低了媒体时延,减少包丢失,并减少运行开销。但是,这对于穿越NAT来说是很困难的。一个完全的解决这个问题的方法将在本规范中给出。
提出了众多解决方案来允许这些协议操作通过NAT,它们包括ALGs(Application Layer Gateways)、Middlebox Control Protocol[15]、STUN (Simple Traversal of UDP through NAT[13])、TURN(Traversal Using Relay NAT)、RSIP(Realm Specific IP[17][18])、symmetric RTP等。不幸的是,这些技术在用于某些网络拓扑结构是都有某些利与弊。以至于我们只能根据不同的接入方式来应用不同的方案,所以未能很好地解决All-NAT与Efficiency的问题,同时还会给系统引入了许多复杂性和脆弱性因素。所以我们目前需要一种综合的足够灵活的方法,使之能在各种情况下对NAT/FW的信令穿透问题提供最优解。
本规范提供一个用于通过基于请求/应答模型的信令协议为媒体流建立连接的解决方案。称为Interactive Connectivity Establishment或ICE。ICE使用STUN和它的中继器扩展,通常所说的TURN,但是只是通过一些特殊的方法使用它们,这样避免只使用某一个所存在的缺陷。
2. Overview of ICE(ICE概述)
在典型的ICE配置中,有两个想要通信的终端(即RFC3264中的术语Agent)。它们不能通过SIP之类的信令协议直接通信,通过SIP协议可以执行请求/应答交互SDP消息。注意,ICE不是打算为SIP穿越NAT,SIP穿越NAT假定已经通过其他机制[31]实现了。在ICE处理的开始,Agent忽略它们自己的拓扑结构。尤其,它们可能在或者不在NAT之后(或者多层NATs)。ICE允许Agent发现足够的关于它自己的拓扑结构的信息,用于找到一条路径或者通过该路径通信。
图1显示了典型的ICE配置环境。两个终端标识为L和R。L和R都位于NATs之后——可是之前提到,他们彼此不知。NAT的类型和性质也不知道。Agent L和R能够通过传输SDP消息的请求/应答交互中结合,这种交互是为了为L和R之间建立一条媒体会话。典型的这种交互会通过SIP服务器发生。
在网络中,除Agent之外,一个SIP服务器和NATs,还有STUN服务器都被ICE使用。每个Agent可以有自己的STUN服务器,也可以共用一个。
+-------+
| SIP |
+-------+ | Srvr | +-- -- -- -+
| STUN | | | | STUN |
| Srvr | +-------+ | Srvr |
| | / / | |
+------- + / / +-- -- -- -+
/ /
/ &nbs