230 likes | 505 Views
学术交流. 第 53 期. P2P 通信之 ——UDP 穿越 NAT 方案的讨论. 周红敏. 哈理工 网络信息中心 2007-10-17. Agenda. P2P 之 NAT 穿越 NAT 产生的背景 NAT 的分类 问题之所在 各种解决方案. P2P 之 NAT 穿越 —NAT 产生的背景. 为了解决 IP 地址日渐不足的问题, RFC1918 为私有和内部使用的网络留出了 3 个 IP 地址段(A类、B类和C类地址范围各一段),在此范围内的地址将不被 Internet 主干路由
E N D
学术交流 第53期 P2P通信之 ——UDP穿越NAT方案的讨论 周红敏 哈理工 网络信息中心2007-10-17
Agenda P2P之NAT穿越 • NAT产生的背景 • NAT的分类 • 问题之所在 • 各种解决方案
P2P之NAT穿越—NAT产生的背景 • 为了解决IP地址日渐不足的问题,RFC1918为私有和内部使用的网络留出了3个IP地址段(A类、B类和C类地址范围各一段),在此范围内的地址将不被Internet主干路由 A类: 10.0.0.0~10.255.255.255 B类: 172.16.0.0~172.131.255.255 C类: 192.168.0.0~192.168.255.255
P2P之NAT穿越—NAT产生的背景 • 私有IP地址有它的缺点,那就是使用私有IP地址的用户将无法访问Internet。这就需要使用网络地址转换 NAT(Network Address Translation),根据RFC1631的定义,这是将IP数据包包头中一个地址转换为另一个地址的过程,NAT让使用私有IP地址的主机能够访问Internet。利用NAT转换功能可以更有效地利用IP地址资源,进而解决IP地址短缺的问题。在将私有IP转换为合法IP的动作中,通常由防火墙或 路由器担任IP转换的功能。
P2P之NAT穿越—NAT的分类 • 从NAT的地址映射范围来看: -基础 NAT -NAPT(端口转换NAT) • 从NAT对向内转发数据的限制程度来看: -Full Cone NAT(完全圆锥型) -Restricted Cone NAT(地址限制圆锥型 ) -Port Restricted Cone NAT(端口限制圆锥型) -Symmetric NAT(对称型)
P2P之NAT穿越—NAT的分类 Full Cone NAT(完全圆锥型NAT ) Public Private M A,b P X,y Full Cone NAT S • NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定 • 任何包都可以通过地址{A:b}送到客户主机的{X:y}地址上
P2P之NAT穿越—NAT的分类 Restricted Cone NAT(地址限制圆锥型 ) Public Private M X P,q A,b P,r X,y X Restricted Cone NAT S • NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定 • 只有来自主机{P}的包才能和主机{X:y}通信
P2P之NAT穿越—NAT的分类 Port Restricted Cone NAT(端口限制圆锥型 ) Public Private M,n P,q X A,b P,r X,y X Port Restricted Cone NAT S • NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定 • 只有来自主机{P,q}的包才能和主机{X:y}通信
P2P之NAT穿越—NAT的分类 Symmetric NAT(对称型) Public Private M,n C,d P,q X A,b P,r X,y X Symmetric NAT S • NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定为{X:y}|{A:b}<->{P:q} • NAT只接受来自{P:q}的incoming packet,将它转给{X:y} • 每次客户机请求一个不同的公网地址和端口,NAT会新分配一个端口号{C,d}
Private host IP : 192 . 168 . 1 . 223 P2P之NAT穿越—问题之所在 • Public 节点无法穿过NAT访问Private节点 Private Public UDP包 X Firewall /NAT NAT 阻碍主机进行P2P 通信的主要原因是NAT 不允许外网主机主动访问内网主机,这使得Internet 上具有公网IP 地址的主机不能主动访问NAT 之后的主机,而位于不同NAT 之后的主机之间更是无法相互识别因而不能直接交换信息。因此,要在目前的网络环境中进行有效的P2P 通信,就必须研究相应的方案来穿越NAT。
Private host IP : 192 . 168 . 1 . 223 P2P之NAT穿越—UDP Hole Punching • 什么是UDP Hole? Public Private UDP包 Public host IP:211.136.91.58 Firewall /NAT 这个内网的NAT上打了一个方向为211.136.91.58的“洞”,(这就是称为UDP Hole Punching的技术)以后211.136.91.58就可以通过这个洞与内网的192.168.1.223联系了,但是其他的IP不能利用这个洞。
P2P之NAT穿越—UDP Hole Punching • UDP Hole PunchingTechnology: 在没有活动的时候,这个Hole会过期: NAT对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一个新的地址转换关系。
P2P之NAT穿越—解决方案 • 几种解决方案 • Connection reversal • STUN • TURN • A novel solution based on ICMP
P2P之NAT穿越—Connection reversal Connection reversal Solution Main Internet 2 rendezvous S 1 NAT 1.1.1.4 3 host B Local network 192.168.2.99 host A
P2P之NAT穿越—STUN STUN(Simple Traversalof UDP Through Network) Solution Main Internet 1 rendezvous Server 2 NAT NAT Local network Local network 10.0.0.12 192.168.2.99 host B host A
P2P之NAT穿越—STUN STUN的优点: • 无需现有NAT设备做任何改动 • 可在多个NAT串联的网络环境中使用 STUN的局限性: • 需要终端支持STUN CLIENT的功能 • 不适合支持TCP连接的穿越,所以不支持H.323 • 不支持Symmetric NAT • 不支持对防火墙的穿越
P2P之NAT穿越—TURN TURN ( Traversal Using Relay NAT) Solution Main Internet 1 Relay S 2 NAT NAT Local network Local network 10.0.0.12 192.168.2.99 host B host A
P2P之NAT穿越—TURN TURN的优点: • 无需现有NAT设备做任何改动 • 可在多个NAT串联的网络环境中使用 • 支持Symmetric NAT • 支持TCP连接的穿越 TURN的局限性: • 需要终端支持TURN CLIENT的功能 • 所有报文都必须经过TURN Server转发,增大了包的延迟和丢包的可能性
P2P之NAT穿越—Summary F: Full Cone NAT R: Restricted Cone NAT PR: Port Restricted Cone NAT S : Symmetric NAT SR: Symmetric Random NAT STUN: Applicable STUN: Not applicable
P2P之NAT穿越—Result F: Full Cone NAT R: Restricted Cone NAT PR: Port Restricted Cone NAT S : Symmetric NAT SR: Symmetric Random NAT STUN: Applicable STUN: Not applicable STUN: Applicable ( for new solution)
P2P之NAT穿越—References • Peer-to-Peer Communication Across NAT http://www.brynosaurus.com/pub/net/p2pnat/ • STUN Protocol RFC. http://www.ietf.org/rfc/rfc3489.txt • TCP NAT traversal. http://nutss.gforge.cis.cornell.edu//stunt.php • Traversal Using Relay NAT (TURN) IETF RFC • NAT Traversal Techniques and Peer-to-Peer Applications • 邓庚盛,占传杰.P2P网络中基于UDP穿透NAT技术的研究[J] • 刘向东, 潘 为.处于NAT之后的主机之间互联的方法研究 • 沈许杰.基于UDP协议P2P通信技术的分析及实现 • Blog: http://blog.csdn.net/max2008
P2P之NAT穿越 Q & A