1、SIP之穿越NAT,Agenda,SIP穿越NAT NAT分类 问题之所在 各种解决方案,SIP穿越NAT NAT分类,Full Cone NAT(完全圆锥型)Address Restricted Cone NAT(地址限制圆锥型 )Port Restricted Cone NAT(端口限制圆锥型) Symmetric NAT(对称型),私网,公网,X,y,A,b,M,NAT,P,S,SIP穿越NAT NAT分类,Full Cone NAT(完全圆锥型NAT ),私网,公网,X,y,A,b,M,Full ConeNAT,P,S,NAT会将客户机地址X:y转换成公网地址A:b并绑定任何包都可以通
2、过地址A:b送到客户主机的X:y地址上,SIP穿越NAT NAT分类,Address Restricted Cone NAT(地址限制圆锥型 ),私网,公网,X,y,A,b,M,Restricted ConeNAT,S,NAT会将客户机地址X:y转换成公网地址A:b并绑定只有来自主机P的包才能和主机X:y通信,P,q,P,r,X,X,SIP穿越NAT NAT分类,Port Restricted Cone NAT(端口限制圆锥型 ),私网,公网,X,y,A,b,M,n,Port Restricted ConeNAT,S,NAT会将客户机地址X:y转换成公网地址A:b并绑定只有来自主机P,q的包才
3、能和主机X:y通信,P,q,P,r,X,X,SIP穿越NAT NAT分类,Symmetric NAT(对称型),私网,公网,X,y,A,b,M,n,Port Restricted ConeNAT,S,NAT会将客户机地址X:y转换成公网地址A:b并绑定为X:y|A:bP:q NAT只接受来自P:q的incoming packet,将它转给X:y 每次客户机请求一个不同的公网地址和端口,NAT会新分配一个端口号C,d,P,q,P,r,X,X,C,d,SIP穿越NAT 问题之所在,SIP Proxy无法穿过NAT回送SIP信令,私网,公网,私网,SIPProxy,SIP信令,Firewall/NA
4、T,Firewall/NAT,X,X,因为SIP信令中的From和Contact头域记录的是私网地址和端口,NAT无法识别和转换。,SIP穿越NAT 问题之所在,如果是UDP Hole Punching呢? 什么是UDP Hole?,私网,公网,UDP包,Firewall/NAT,这个内网的NAT上打了一个方向为211.136.91.58的“洞”,(这就是称为UDP Hole Punching的技术)以后211.136.91.58就可以通过这个洞与内网的192.168.1.223联系了,但是其他的IP不能利用这个洞。,SIP穿越NAT 问题之所在,如果是UDP Hole Punching呢?
5、在没有活动的时候,这个Hole会过期: NAT对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一个新的地址转换关系。,SIP穿越NAT 解决问题,几种解决方案ALGMidComSTUNTURNSBC,Application Level Gateway Solution,ALG可以识别SIP信令,能够适当地修改数据包ALG可以是单独的连接于外网和内网之间的设备,也可以是内置于防火墙内的插件当FW/NAT发现外网呼叫信令为SIP时,将其转发到ALG(应用层网关),通过ALG建立起内网伪地址终端与外网终端的通信连接需要对现有设备升级改
6、造,SIP穿越NAT ALG,IETF MIDCOM(Middlebox Communications) Solution,允许第三方(MIDCOM Agent )成为受FW/NAT信任的实体,然后代表FW/NAT做出决定,强迫其开放端口传送媒体流或数据流。这些受信任的实体通过“MidCom”定义的新协议与FW/NAT进行通信。协议的识别不由Middlebox完成,而是由外部的MIDCOM Agent完成需要对现有设备升级改造,SIP穿越NAT MidCom,STUN(Simple Traversalof UDP Through Network) Solution,私网,公网,X,y,A,b,
7、S,t,NAT,A,b,SIP穿越NAT STUN,希望在5060端口接收数据,从5060端口发送请求STUN服务器,NAT映射端口为12345,STUN回包告诉客户端公网IP和12345端口,Whats my ip?,IETF RFC 3489定义了如何确定由NAT分配的公网地址和端口不需要改造现有NAT主要特色:能够让客户端发现NAT的存在以及类型能够让客户端发现NAT的绑定生命周期可以工作在多NAT串联环境下非常简单的协议,易于实现,负载低STUN服务器可以位于公网任何地方适用范围:不适用于Symmetric NAT对于Non- Symmetric NAT都适用如果双方都位于同一个NAT
8、之后,就不适用,SIP穿越NAT STUN,STUN的优点:无需现有NAT设备做任何改动 可在多个NAT串联的网络环境中使用 STUN的局限性:需要终端支持STUN CLIENT的功能 不适合支持TCP连接的穿越,所以不支持H.323不支持Symmetric NAT不支持对防火墙的穿越,SIP穿越NAT STUN,SIP穿越NAT STUN,SIP穿越NAT STUN,成熟的STUN Server/Client方案: http:/ 下载stund_0.94_Oct29.gz运行其中的WinStun.exe测试程序,即可获知NAT类型以及分配的公网地址:,SIP穿越NAT STUN,TURN(T
9、raveral Using Relay NAT) Solution,私网,公网,X,y,A,b,S,t,NAT,O,p,O,p,M,n,O,p,M,n,SIP穿越NAT TURN,通过Relay方式穿越NAT的方式:私网终端发出的报文都要经过TURN Server进行Relay转发,Give my ip,分配一个IP和端口:O,p,IETF draft “draft-rosenberg-midcom-turn-06”TURN Server控制分配地址和端口,能分配RTP/RTCP地址对(RTCP端口号为RTP端口号加1)作为私网终端用户的接收地址,避免了STUN方式中出口NAT对RTP/RTC
10、P地址端口号的任意分配,使得客户端无法收到对端发来的RTCP报文(对端发RTCP报文时,目的端口号缺省按RTP端口号加 1发送)。,SIP穿越NAT TURN,与STUN的类似之处:私网中的终端通过某种机制预先得到公网上的服务地址,然后在报文净载中所要求的地址信息就直接填写该公网地址。与STUN的区别:STUN得到的地址为出口NAT上外部地址;TURN得到的地址为TURN Server上的公网地址 TURN支持Symmetric NATTURN支持基于TCP的应用,如H.323,SIP穿越NAT TURN,TURN的优点:无需现有NAT设备做任何改动 可在多个NAT串联的网络环境中使用 支持S
11、ymmetric NAT支持TCP连接的穿越TURN的局限性:需要终端支持TURN CLIENT的功能 所有报文都必须经过TURN Server转发,增大了包的延迟和丢包的可能性,SIP穿越NAT TURN,ICE(Interactive Connectivity Establishment) Solution,IETF draft “draft-ietf-mmusic-ice-03”综合运用 STUN、TURN或RSIP(Realm Specific IP)协议,使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷 在 SIP client开发上显著地增加了复杂性适用于各种类
12、型的NAT需要每一个终端支持 traversal 方法资源:可以参考论文基于ICE方式SIP信令穿透Symmetric NAT技术研究 ,SIP穿越NAT ICE,SBC(Session Border Controller) Solution,SIP Proxy,RTP/RTCP Media,SIPSignaling,Firewall,Firewall,SIP穿越NAT SBC,Signaling SolutionSBC可以帮助SIP信令穿越已经存在的FW/NAT,而不需要对现有的FW/NAT设备做任何改变对于SIP终端,SIP终端设备会周期性发送注册消息到SBCMedia Traversal SolutionSBC可以把相应的媒体流发送到防火墙上的相关IP地址和端口,然后正确地使媒体流到达防火墙后的用户侧,SIP穿越NAT SBC,谢谢!,