肖坚
摘要:网络技术快速发展,联网设备的数量也愈来愈多且多样化,为了解决IP地址短缺及提升网络安全性,大部分的联网设备都会通过网络地址转换器(Network Address Translator;NAT)与其他设备互联,由于NAT会提供网络地址的转换,并对封包的传输有所限制,导致设备与设备之间的传输会因封包无法穿透NAT而出现问题。因此,如何穿透NAT变成一个重要的研究议题。建立中继联机及点对点直接联机,并提出一个协同式NAT穿透方法,以兼顾成功穿透率、传输效率及节省网络带宽的使用。
关键词:网络地址转换; 中继服务器;点对点;网络地址转换穿透
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2020)23-0050-02
1 前言
现今网络技术快速发展,加上物联网(Internet of Things; IoT)[1][2]的觀念也愈来愈成熟,连上网络的设备愈来愈多,设备与设备之间的数据传输也愈来愈多元,除了信息的传输外,还有大量的多媒体信息。
为了提升网络安全性,设备与设备之间的网络环境也愈来愈复杂,据统计至少有超过70%的联网设备都会通过NAT与其他设备互联,由于 NAT 会提供网络地址的转换,并对封包的传输有所限制,因此常导致设备与设备之间的数据无法直接传输,因此如何穿透NAT是一个重要的研究议题。
现行网络上的NAT大致分成四种形态,分别为一对一NAT 、地址限制 NAT 、端口限制NAT及对称式NAT [3]。由于对称式NAT对于封包进出的限制最为严格,且因为对称式NAT在现行网络环境中愈来愈普及,对于点对点之间网络传输成功率也带来更多的不确定性。
2 文献研究
在文献[6]中,提出一个设备可以先与其他设备建立一种主要点对点传输信道,此设备并可以利用此主要传输通道再建立多条次要点对点传输通道,若侦测主要传输信道失败或传输质量降低,则次要传输通道可以取代原本的主要传输通道成为之后传输的主要通道,在这个方法当中,并没有考虑使用中继服务器来穿透 NAT ,故若在对称式 NAT 的网络环境下,仍然很容易造成无法穿透NAT的情况。文献[7]的研究当中,会先判断点对点直接穿透NAT是否可行,若可行,则尝试建立点对点直接联机,若判断点对点直接穿透NAT不可行,或是建立点对点直接联机失败,则会使用中继服务器来建立中继联机,并用中继联机传送数据。在这个方法当中有几个缺点,第一,当一端设备为对称式 NAT 且另一端设备为对称式NAT或端口限制NAT时,在这个研究当中都判断为点对点直接穿透NAT不可行,然而,在这些网络环境下,只要适当运用端口预测技术及hole punching 技术,利用点对点的方式仍有可穿透的机会。第二,如同文献[5],仍会有联机延迟的问题。在文献[4]的研究当中,设备与设备之间可以先利用隧道(tunneling) 技术通过中继服务器来穿透NAT,建立中继联机后即可开始传送数据,因此不会有传输延迟的问题,中继联机建立后再尝试建立点对点直接联机,若点对点直接联机被成功建立,则可利用点对点直接联机传送数据,并于适当时机终止中继联机;若点对点直接联机没有成功建立,则使用中继联机传输。在这个方法当中,在点对点直接联机可以建立却建立失败的情况下,未再重新做端口预测跟设定,因此也未再尝试建立点对点直接联机,导致传输的效率降低、传输成本提高。
3 协同式NAT穿透方法
由于借由中继服务器的协助能有很高的NAT穿透率,另一方面,点对点NAT穿透率虽然较低,但使用点对点联机传输能提升传输效率并降低传输成本,因此这个研究的概念是两端设备分别先后与对方尝试建立中继联机及点对点联机,并用一种协同机制来决定何时需采用中继联机机制、何时采用点对点联机机制来传输以达到穿透NAT并兼顾传输效率、传输成本等目的。
基于这样的机制,若点对点直接联机可建立成功,则可利用点对点直接联机传输以提升传输效率,同时并将中继联机删除以减少中继转传成本;若点对点直接联机无法建立或是被判断可建立却建立失败,则可直接用中继联机来传输,也不会造成因需要等待建立联机而造成的传输延迟。另外,在点对点直接联机被判断为可以建立却建立失败的情况,通常都是因为NAT外部的通讯端口被占用而导致联机建立失败,因此在这种情况,则在利用中继联机传输的同时仍会持续尝试建立点对点直接联机,待点对点直接联机建立成功,则可进一步将中继联机删除。
3.1 设备与NAT的信息搜集及交换
本方法在一个设备尝试与另一个设备联机或是当一个设备接受其他设备联机的请求时,会先与中继服务器注册,以便之后建立中继联机,接着会通过STUN 服务器的协助来取得与设备连接的NAT 的外部IP 位置,并搭配端口预测算法来预测与设备连接的NAT的外部端口配置(以下称为映射端口) 以便通过映像端口来传送封包,如多媒体串流等。
做完映像端口预测,接着会做与设备连接的NAT形态辨识,并将点对点直接联机所需信息与另一设备交换,另外,若映射端口无法预测,则映射端口值为0。
3.2 建立中继联机
当设备收到另一设备的点对点直接联机所需信息,则可先通过中继服务器穿透NAT以建立中继联机,并开始通过中继联机传送与接收数据。接着可使用连接两端设备的NAT的形态及映像端口这两个信息来判断设备间的点对点直接联机的可行性。
3.3 点对点直接联机的可行性判断
由于在对称式NAT 中每一个NAT 内部地址对应不同的目的地,都对应到不同的NAT外部地址,且NAT外部位元址的配置有的是有规则性的,有的则是没有规则性的,因此对称式NAT的映射端口有的是可预测,有的是不能预测的,而一对一NAT、地址限制NAT及端口限制NAT这三种形态的NAT的映像端口皆可预测。
3.4 协同式NAT穿透
若依上述判断方法判断点对点直接联机不可行,则不建立点对点直接联机,只通过中继联机传送/接收数据;若判断点对点直接联机可行,则会利用接收到的点对点直接联机所需信息的与设备连接的NAT外部IP地址及预测的映像端口尝试与另一设备建立点对点直接联机,若点对点直接联机成功建立,则会马上删除中继联机,使用点对点直接联机来传送/接收数据以提升传输效率、降低传输成本。另一方面,若点对点直接联机被判断可行但却因映像端口被占用而建立失败( 即数据无法通过所建立的点对点联机正常接收),则会再次尝试建立点对点直接联机。
当再尝试建立点对点直接联机,设备会重新作映像端口的配置,包含发送请求至某台STUN服务器以获得目前NAT映像端口配置的情况,依据目前的情况做接下来的映像端口配置,并再次与其他设备交换点对点直接联机所需信息,重新利用新收到的点对点直接联机所需信息的与设备连接的NAT外部IP地址及预测的映像端口再尝试与另一设备建立点对点直接联机,待点对点直接联机成功建立,再将中继联机删除改由使用点对点直接联机进行传输。
然而,如果多次尝试建立点对点直接联机皆失败,则设备会改用收到的点对点直接联机所需信息的设备所在本地网络地址与另一设备建立点对点直接联机,会采用此机制是因为有些无线网络基地台并不支持NAT loopback,在这种情况,若两端设备同时连上此基地台时,用NAT外部地址来建立联机是无法建立成功的。
3.5 实施方式及流程
基于上述所提出的方法,我们使用市面上普遍可见的无线路由器来做实验,两端设备分别连上各式无线路由器,不同的无线路由器呈现不同的NAT形态,其点对点直接联机的成功率实验结果如表1所示。有部分设备连到D-link无线路由器,在双方协调好映射端口之后,当要开始传输多媒体串流数据时,这些设备的数据却是从另外一个随意选择的映像端口送出而不是当初协调好的映射端口,当这种情形发生,如果另外一个设备的 NAT 形态为端口限制或是对称式NAT时,将导致点对点直接联机传输失败,如表1的符号“x”所处的情形,在这种情形发生时,只能使用中继联机来传输,但如表1所示,大部分点对点直接联机传输是可行的。
4 结论
本论文所提出的方法,借由先建立传输成功率较高的中继联机,再尝试建立传输效率较高、传输成本较低的点对点联机,而可节省使用者等待尝试建立點对点联机的时间,并且尽量使用传输效率较高、传输成本较低的点对点联机,可同时具有传输效率更高、传输成本更低的方式且传输成功率更高的效果。
参考文献:
[1] 方承志,程宥铖,火兴龙.基于MLS的窄带物联网系统下行信道估计算法[J/OL]. 计算机工程,2019(5).
[2] 周童.嵌入式系统在物联网领域中的应用[J/OL].电子技术与软件工程,2019(10):197.
[3] 陈恒勋,闫永航,孟丹,等.NAT穿越技术研究[J].现代信息科技,2020,4(6):94-98.
[4] 贺清碧,黄大荣,赵玲.网络地址转换器友好通讯构件的设计与实现[J].科学技术与工程,2016,16(18):197-203,224.
[5] Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols, RFC 5245, 2010.
[6] Berkat S. Tung, Barry A. Whitebook, Joe S. Abuan, H. Jeong, Y. Yang and R. Garcia, “Apparatus and method for establishing and utilizing backup communication channels,” U.S. Patent 8 819 244, Aug. 26, 2014.
[7] Andrew H. Vyrros, Jeremy Matthew Werner and Patrick Gates, “Apparatus and method for inviting users to online sessions,” U.S. Patent 8 412 833, Apr. 2, 2013.
【通联编辑:代影】