随着计算机和通信技术的快速发展,透过公众网域承载语音、数据、图 像等信息的业务,已成为各式网络服务业者努
力发展的业务方向,在下一代 网络(Next Generation Networks,简称NGN)中,网络服务业者是透过电信 服务网络,提供语音、数据和多媒体等各种综合开放性的网络服务,目前, NGN的网络构建方式还在变革中,但重要的发展目标是将应用服务和传输技 术分离,以达成所有应用服务都可不受限制地运作在任何传输技术上,也就 是说,下一代网络是服务导向的网络:服务与呼叫控制分离,呼叫与承载分 离,分离的目的是让服务能真正独立于网络之上,灵活有效地提供应用服务, 因此,下一代网络的用户可自行配置和定义自己的服务特征,不必关心承载 服务的网络型式及终端类型,此一特色将使服务和应用的提供有较大的灵活 性,也就是说,现有信息网络,无论是电信网络、
计算机网络和
有线电视网 络中的任何一种网络,原本都无法成为唯一的
基础平台,发展出与其特性相 异的服务,但随着近几年IP技术的发展,电信网络(包括有线和无线)、计算 机网络及有线电视网络已可通过先进的IP技术,整合成统一的网络,即所谓的 「三网整合」,或再加上行动通信网路构成所谓的「四网合一」,IP协议使得 各种以IP为基础的业务都能在不同的网络上实现互通。
在上述网络业务的驱动和网络融合的趋势下,下一代网络(NGN)的实 现将采用分布式网络架构,有效承载语音、视频和多媒体业务,实现业务应 用、业务控制和业务传送三功能分离的架构,在建构网络的过程中,NGN可 从现有数据网中进行平滑过渡,其优点是现有网络设备和终端设备可直接应 用到NGN中,许多基于IP的协议仍可继续使用,惟,所面临的诸多问题中, 最重要的一个问题即是如何穿透私有网域的问题。
按,NGN是融合语音、数据、多媒体和移动业务的网络,从网络层次上 可划分为下列几层:
(1)接入层:由各种网关、智慧接入终端设备和综合接入设备组成,透过 各种接入手段将各类用户连接至网络(包括宽带接入、移动接入等),并将 信息格式转换成能够在网络上传递的信息格式;
(2)传送层:指NGN的承载网络,负责对各种不同的业务和
媒体流,提供 公共的传送平台,多采用分组的传送方式;目前,主要的核心传送网络是宽 带IP网络;
(3)控制层:完成呼叫处理控制、接入协议适配、互连互通等综合控制处 理功能和业务逻辑的具体执行;控制层决定了用户收到的业务,并能控制低 层网络元素对业务流的处理,其主要实体为软交换设备;及
(4)业务层:处理业务逻辑,提供面向客户的综合智慧业务,实现业务的 客户化及与业务相关的管理功能,如业务认证和业务计费等。
NGN宽带接入中存在的穿透问题,就是NGN中边缘接入层面的宽带接入 问题。按,NGN的核心承载网和宽带接入是建设在现有IP网络基础上,接入 用户必需透过对IP地址的寻址,惟,目前的实际情况是,由于Internet的快速 膨胀,IP地址空间处于严重耗尽状态,为了解决这个问题,大量企业网络和局 部网络都在网络出口部署网络地址转换器(Network Address Transfer,简称 NAT),NAT是定义于RFC 1631的一个Internet标准,基本上,是设在一路由 器中,位于私有网域和公众网域的边界处,用以对私有网域的网络终端装置 所发出的封包,进行IP地址转换的动作,以便让私有网域中多台网络终端装置 能够共享一个IP地址連接上因特网,意即当私有网域发出的IP数据包到达 NAT设备时,NAT负责将内部私有网域IP地址转换成公众网域的合法IP地址; 当有外部发来的数据到达NAT设备后,NAT透过查阅NAT保存的映像表里的 信息,将公众网域地址转换成私有网域地址,再转发到内部接收点。通常, 对于一般的数据包,NAT设备只需对IP地址和端口号进行转换,但对于H.323、 会话发起协议(Session Initiation Protocol,简称SIP)和MGCP(Media Gateway Control Protocol,简称MGCP)等标准的应用来说,真正的媒体连接信息是放 在数据包负载中传递的,此时,就出现了下列的问题,假设终端A向终端B发 起呼叫,软交换将终端A的呼叫信息转发到终端B上,根据H.323、SIP等协议, 终端B从该数据包负载中获取到终端A的专用网IP地址后,就会试图与终端A 建立RTP(Real-time Transport Protocol,简称RTP)连接,但由于这个IP地址 是私有的,私有地址在公众网域上是不可识别的,故无法在终端A及终端B间 建立通信联机。此外,由于为了提高内部网络的安全性,大多数企业在网络 出口处会使用防火墙,限定进入内部网络的数据包的类型和流量,而基于IP 的语音、视频通信协议,均会要求终端间使用IP地址和端口号,建立数据通信 通道,因此,出现了一个两难的情形,即NGN各个终端必须随时侦听外来的 呼叫,但是防火墙却不允许外网任何不请自来的数据包,使用某种机制,透 过打开防火墙的一个端口,将外网的呼叫传达至网内的一个终端,但由于语 音、视频通信中的RTP/RTCP(Real-time Transport Control Protocol,简称RTCP), 需要透过动态分配端口,实现媒体流的发送和接收,所以,防火墙的问题即 在NGN实际发展的过程中成为一无法避免的重要问题。
因此,如何设计出一种网络系统,令一私有网域的网络终端装置能穿透 防火墙,透过公众网域,与另一私有网域的网络终端装置,建立一无障碍的 联机通道,顺利联机沟通,或进行数据的存取,即成为许多网络服务业者刻 正努力研发并亟欲达成的一重要目标。
有鉴于上述问题,
发明人经过长久努力研究与实验,终于开发设计出本 发明的
一种穿透防火墙在网络终端装置间建立联机信道的方法,期令一私有 网域的网络装置能穿透防火墙,透过公众网域,与另一私有网域的网络装置, 建立一无障碍的联机通道,彼此联机,进行数据的存取。
本发明的一目的,提供一种穿透防火墙在网络终端装置间穿建立联机信 道的方法,该方法应用于一网络系统,该网络系统包括至少二个私有网域 (private network)及因特网(internet),其中各该私有网域包括至少一个网络地址 转译(简称NAT)路由器(router)及至少一个网络终端装置(如:设有网络接口的 计算机、网络摄影机、网络电话、网络磁盘驱动器及网络打印机等),各该网 络终端装置是经由对应的NAT路由器,分别连接至因特网,该方法是使该二 私有网域的各该网络终端装置能侦测出对应的NAT路由器的防火墙政策 (firewall policy),以根据防火墙的类型,选择使用点对点(简称p2p)的方式、 局部
中继器(local relay)或远程中继器(remote relay),穿透对应的NAT路由器 上安装的防火墙,透过因特网,在该二私有网域的网络终端装置间,建立一 联机通道,彼此联机,进行数据的存取。
本发明的另一目的,是在使各该网络终端装置能侦测对应的NAT路由器 的防火墙政策,判断对应的NAT路由器是否允许各该网络终端装置直接联机 至因特网,若是,再判断对应的NAT路由器是否允许各该网络终端装置使用 TCP/UDP(User Datagram Protocol,简称UDP)联机至因特网,且在判断出对 应的NAT路由器允许各该网络终端装置使用UDP联机至因特网时,再判断 对应的NAT路由器是否允许各该网络终端装置使用UPnP IGD或STUN,以 点对点(p2p)的方式,直接透过因特网,与远程私有网域的网络终端装置相联 机。
本发明的又一目的,是在使各该网络终端装置判断出对应的NAT路由器 不允许各该网络终端装置使用TCP/UDP联机至因特网时,再判断对应的NAT 路由器是否允许各该网络终端装置依序使用TCP端口(port)及TCP通道 (tunnel),透过一远程中继器(remote relay)联机至因特网。
本发明的又另一目的,是在使各该网络终端装置判断出对应的NAT路由 器不允许各该网络终端装置直接联机至因特网时,再判断对应的NAT路由器 是否允许各该网络终端装置使用一代理
服务器(Proxy/Socks),即透过一局部中 继器(loca lrelay),联机至因特网。
下面结合
附图,对本
申请进一步详细说明。
本发明是一种穿透防火墙在网络终端装置间建立联机信道的方法,该方 法应用于一网络系统,请参阅图1所示,该方法是应用至一网络系统1,该网 络系统1包括因特网(internet)2及至少二私有网域,在本发明的下列实施例中, 是以第一私有网域3及第二私有网域4为例,加以说明,各该私有网域3、4 包括至少一网络地址转译(Network Address Translation,简称NAT)路由器 (router)31、41及至少一网络终端装置32、42(如:网络摄影机、网络电话、 网络磁盘驱动器及网络打印机等),在本发明的下列实施例中,该第一私有网 域3包括一台第一NAT路由器31及一台第一网络终端装置32,该第二私有 网域4则包括一台第二NAT路由器41及一台第二网络终端装置42,惟,在 本发明的其它实施例中,并不局限于此,各该私有网域3、4也可包括二台以 上的网络终端装置;各该网络终端装置32、42是分别经由对应的NAT路由 器31、41,连接至因特网2。该方法是使各该私有网域3、4的网络终端装置 32、42能依下列步骤进行处理,请参阅图2所示,由于各该网络终端装置32、 42是执行相同的步骤,所以,为方便起见,仅以第一私有网域3的第一网络 终端装置32为例,说明如下:
(200)发出多个侦测
信号,对第一NAT路由器31的防火墙政策(firewall policy)进行侦测;
(201)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32直接联机至因特网2;若是,进行步骤(202);否 则,进行步骤(206);
(202)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否不允许第一网络终端装置32使用UDP(User Datagram Protocol,简称UDP) 联机至因特网;若是,进行步骤(203);否则,进行步骤(208);按,TCP/IP通 讯协议在传输层中,可细分为TCP(Transmission Control Protocol)与UDP (User Datagram Protocol)两种通讯协议,UDP是非固接式(connectionless) 的通讯协议,提供最有效率的非联机式的数据封包传递服务,但不保证数据 封包的传达,或不确认任何数据封包的传递顺序,因此,UDP封包并没有顺 序号码,接收端除不会产生响应封包外,也不会对所接收到的封包进行检查, 以确认是否收到重复或遗失的封包,故,一般言,某些防火墙
软件不封
锁 (block)UDP封包的主要原因,是为使网络终端装置间,能快速地传送数据封 包,但不保证数据封包的完整性或正确性。
(203)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32使用TCP端口(port)联机至因特网;若是,进行 步骤(204);否则,进行步骤(212);
(204)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32使用TCP信道(tunnel)联机至因特网;若是,进 行步骤(205);否则,进行步骤(212);
(205)透过一远程中继器(remote relay)23联机至因特网2;如此,第一网 络终端装置32即可穿透第一NAT路由器31上所设的防火墙,透过该远程中 继器23,经因特网,与第二私有网域4的第二NAT路由器41相联机,并通 过第二NAT路由器41,将所分配到的IP地址,传送到第二私有网域4的第 二网络终端装置42;同理,第二网络终端装置42也可利用同样的作法,将所 分配到的IP地址,传送到第一网络终端装置32,使得该二网络终端装置32 及42得据以穿透对应的NAT路由器31及41上所设的防火墙,在该二网络 终端装置32及42间建立一无障碍的联机通道,彼此联机,进行数据的存取;
(206)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32使用一代理服务器(Proxy/Socks)联机至因特网; 若是,进行步骤(207);否则,进行步骤(212);
(207)透过第一局部中继器(local relay)33联机至因特网2;如此,第一网 络终端装置32即可穿透第一NAT路由器31上所设的防火墙,透过该局部中 继器33,经因特网,与第二私有网域4的第二NAT路由器41相联机;同理, 第二网络终端装置42亦可利用同样的作法,穿透对应的NAT路由器41上所 设的防火墙,透过第二局部中继器43,与第一网络终端装置32建立一无障碍 的联机通道,彼此联机,进行数据的存取;
(208)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32使用UPnP IGD联机至因特网;若是,进行步骤 (209);否则,进行步骤(210);按,通用即插即用(UPnP)是一种使用于计算 机和接口设备间常见的
对等网络连接结构,尤其是,UPnP是以Internet标准 和技术为基础,使得不同设备间能彼此自动连接和协同工作,且在网络控制 设备的管理下,实现设备间的数据通讯,然而,NAT的设置会「瓦解」许多 家庭或小型企业中经常使用到的UPnP网络连接技术。一般言,网络连接的应 用程序必须使用公众网域的地址,且每个传输对话都须使用唯一的端口号, 因此,若在因特网(即公众网域)上使用私有地址或同时使用同一端口号,应用 程序就会中止,由于大型机构配设有专
门的信息人员,所以可确保公司应用 程序在NAT上仍可正常使用,但,小型机构和一般用户则不具备如此奢侈 的条件,有鉴于此,UPnP NAT Traversal穿透技术的发展即是为了解决NAT 给应用程序带来的许多问题,以为小型机构和一般用户提供理想的解决方案, UPnP NAT Traversal解决方案是UPnPIGD Working Committee为因特网网 关设备(Internet Gateway Device,简称IGD)制定的解决方案,其作法包括下 列两种方式:
(1)手动方式:NAT Traversal的手动方式是要求用户使用浏览器,或计 算机上的
命令行界面工具,来更改IGD上的某些设定,尽管少数热衷网络技 术的用户不会有很大困难,但大多数的用户却感到困难重重,许多用户甚至 不知道NAT Traversal问题正对其因特网服务的使用造成干扰,例如:用户可 能想体验一种多玩家游戏或使用其它某些对等服务,却发现由于某种原因而 无法连接,导致用户采取疑难解答步骤、寻求电话支持、感到不满,甚至无 意愿使用新的服务或尝试新的技术。
(2)自动方式:为避免要求用户以手动方式解决NAT Traversal问题,许 多IGD的制造厂商已编写出支持应用层的软件,并将其设计至IGD中,该应 用层软件是特殊设计的应用程序,意即制造厂商是透过编写和测试特殊的代 码,自动使一个应用程序完成NAT Traversal。如果该应用程序软件进行了更 新,则制造厂商所编写的应用层代码必须重新进行更新和测试。当只需要考 虑几个对等或相关的应用程序时,这种一对一解决NAT Traversal问题的方 式,对于制造厂商而言,是可管理的,但它无法对数百或数千个应用程序伸 展自如,这时不仅开发成本高,并可能需要有关这些应用程序各自原理方面 的知识。解决该问题较好的方法,就是让制造厂商为设备添加能理解UPnP的 软件或
固件,然后,使得其它设备和软件能利用同一技术与NAT设备进行 通讯,现在只有UPnP能够完成这种职责。
(209)对TCP端口(port)进行映射(mapping),进行步骤(210);
(210)根据第一NAT路由器31的响应信号,判断第一NAT路由器31是 否允许第一网络终端装置32使用STUN联机至因特网;若是,进行步骤(211); 否则,进行步骤(203);按,STUN(Simple Traversal of UDP over NAT,简称 STUN)是一通讯协议,用以找出目前网络终端装置(如:网络电话(IP Phone)) 是处在何种NAT的环境,且令使用SIP的VoIP封包穿透NAT路由器,因 此,一个支持STUN的网络电话能够自行更改合法IP和虚拟IP间在SIP/SDP 信息中IP地址及端口号的相应关系,能让SIP和RTP封包在不更改NAT 路由器的任何设定的情形下,成功地穿透NAT路由器。此外,STUN服务器 允许所有私有网域中与NAT路由器连接的网络终端装置(如:防火墙后边的计 算机),与位于私有网域外的VoIP网络服务业者间实现网络通话联机,透过 STUN服务器,用户的网络终端装置可找出自己的公众网域地址、查出自己位 于哪种类型的NAT后面及NAT被某一个本地端口所绑定的因特网端的UDP 端口(port)等信息,该等信息可被用来在两个同时处于NAT路由器后的网络 终端装置间,建立UDP通信,以实现网络通话联机。按,SIP类的协议是使 用UDP数据包在Internet上传输音频和/或视频数据,但,不幸的是,由于通 信的两个末端往往位于NAT之后,所以,使用传统方法并无法在其间建立连 接,此时,即STUN发挥作用的时候。
(211)以点对点(p2p)的方式,直接联机至因特网2;如此,第一网络终端 装置32即可穿透第一NAT路由器31上所设的防火墙,以点对点(p2p)的方式, 经因特网,与第二私有网域4的第二NAT路由器41相联机;同理,第二网 络终端装置42也可利用同样的作法,穿透对应的NAT路由器41上所设的防 火墙,与第一网络终端装置32建立一无障碍的联机通道,彼此联机,进行数 据的存取;
(212)在该第一网络终端装置32的一屏幕上,显示联机失败的信息,以 表示第一网络终端装置32无法穿透第一NAT路由器31上安装的防火墙,且 结束处理程序。
在本发明的一实施例中,复参阅图1所示,第一网络终端装置32及第二 网络终端装置42分别为一网络电话(IP Phone),且第一网络终端装置32及第 二网络终端装置42是分别透过第一NAT路由器31及第二NAT路由器41, 与因特网上的一通道服务器(Tunnel server)51相连接,参阅图3所示是该第一 网络终端装置32及第二网络终端装置42依上述步骤,建立一联机信道,彼 此传送数据的时序图,兹依其时序,说明如下:
(300)首先,当第一网络终端装置32发出UPnP封包,向第一NAT路由 器31进行UPnP注册,并由第一NAT路由器31分配到一IP地址为a1及port 地址为b1的接入点(connection point)时,即表示第一NAT路由器31的防火墙 政策允许第二网络终端装置42由接入点连接网络终端设备32;
(301)第一网络终端装置32即穿透第一NAT路由器31,与信道服务器 51建立TCP信道(Tunnel),并且送出UDP封包,经由TCP信道(Tunnel),向 信道服务器51进行注册,并由通道服务器51分配到一IP地址为c1及port 地址为d1的中继点(relay point);
(302)第一网络终端装置32透过SIP,对第二网络终端装置42,发出邀 请(invite)封包,并将上述接入点(a1,b1)及中继点(c1,d1)写入SDP(Session Description Protocol)封包中,作为两个新增的候选接入点(candidates)X;故, 此时,连同SDP封包中ICE(Interactive Connectivity Establishment,简称ICE) 原先提供的三个候选接入点,第二网络终端装置42将接收到第一网络终端装 置32传来的五个候选接入点;
(303)第二网络终端装置42发出UPnP封包,向第二NAT路由器41进行 UPnP注册,并由第二NAT路由器41分配到一IP地址为a2及port地址为b2 的接入点(connection point)时,即表示第二NAT路由器41的防火墙政策允许 第一网络终端装置32由接入点连接网络终端设备42;
(304)第二网络终端装置42即穿透第二NAT路由器41,与信道服务器 51建立TCP信道(Tunnel),并且送出UDP封包,经由TCP信道(Tunnel),向 信道服务器51进行注册,并由通道服务器51分配到一IP地址为c2及port 地址为d2的中继点(relay point);
(305)第二网络终端装置42透过SIP,对第一网络终端装置32,发出同 意(Okay)封包,以告知同意第一网络终端装置32的通话邀请,并将上述接入 点(a2,b2)及中继点(c2,d2)写入SDP(Session Description Protocol)封包中,作 为两个新增的候选接入点(candidates)Y;此时,连同SDP封包中ICE原先提 供的三个候选接入点,第一网络终端装置32将接收到第二网络终端装置42 传来的五个候选接入点;
(306)第一网络终端装置32在接收到确认封包后,将回复一确认 (acknowledgement)封包;如此,第一网络终端装置32与第二网络终端装置42 间,即可根据所接收到的五个候选接入点,选择透过25组候选路径中的一组 路径,进行联机;
(307)第一网络终端装置32与第二网络终端装置42分别对所接收到的五 个候选接入点,进行联机检查(connection check);在图3所示的时序表中,第 二网络终端装置42是分别根据所接收到的二个候选接入点,即接入点(a1,b1) 或中继点(c1,d1),对第一NAT路由器31或通道服务器51进行联机检查;该 第一网络终端装置32是分别根据所接收到的二个候选接入点,即接入点(a2, b2)或中继点(c2,d2),对第二NAT路由器41或通道服务器51进行联机检查;
(308)俟,第一网络终端装置32与第二网络终端装置42对该等候选接入 点的联机状态,检查无误后,该第一网络终端装置32与第二网络终端装置42 即可选择以下列联机通道中的一个联机通道,穿透第一NAT路由器31及第 二NAT路由器41上所设的防火墙,在该二网络终端装置32及42间建立一 无障碍的联机通道,彼此联机,进行数据的存取:
(308a)二者分别使用对应NAT路由器分配的UPnP端口,建立一联机信 道,进行RTP数据流(streaming)的传输;
(308b)一网络终端装置使用对应NAT路由器分配的UPnP端口,另一网 络终端装置则使用信道服务器51分配的通道(Tunnel)端口(port),建立一联机 信道,进行RTP数据流的传输;
(308c)二者分别使用通道服务器51分配的通道端口,建立一联机信道, 进行RTP数据流的传输。
按,以上所述,仅为本发明的一最佳具体实施例,但本发明的特征并不 局限于此,任何熟悉该项技术人员在本发明领域内,可轻易思及的变化或修 饰,都应涵盖在本发明
权利要求保护的范围之内。