用于实现nat穿越的方法和系统的制作方法

xiaoxiao2020-9-10  3

【知识产权代理】【专利服务】Tel:18215660330

用于实现nat穿越的方法和系统的制作方法【专利摘要】本发明涉及一种用于促进NAT的穿越的方法和系统。该方法包括:服务器将针对第一NAT类型的NAT的NAT相关信息提供给第一局部网络中的至少一个终端,第一局部网络包括第一NAT类型的NAT。针对第一NAT类型的NAT的NAT相关信息能够使第一局部网络中的终端穿越该局部网络中的NAT。通过测试特定NAT类型(诸如例如,NAT的特定品牌、型号和/或固件版本)的NAT获得的NAT相关信息可被重新用于相同类型的其它NAT,而不管其中使用这些NAT的局部网络如何,因此减轻单独测试包含这些NAT的每个局部网络中的相同类型的NAT的需要。【专利说明】【
技术领域
】[0001]一般地,本发明涉及数据通信的领域。更具体地讲,本发明涉及NAT穿越的领域。用于实现NAT穿越的方法和系统【
背景技术
】[0002]网络地址转换器(NAT)已被设计用于通过针对放置在路由器后面的内部局部网络(例如,家庭和公司网络)中的装置允许使用私有互联网协议(IP)地址来减缓IPv4地址耗尽,该路由器具有被呈现给外部网络(诸如,互联网)的单个公共IP地址。通过将输出请求的源地址改变为局部网络中的NAT的源地址并且随后将输入答复转送回起源EUD,NAT允许局部网络中的终端用户装置(EUD)与外部网络中的装置通信。这意味着:仅当由属于局部网络的装置发起时,穿过NAT的通信是可能的。作为结果,需要建立由来自外部网络的装置发起的连接的服务(诸如例如,对等(P2P)文件共享、IP语音(VoIP)服务或视频游戏控制台的在线服务)失败,除非采取用于避免这种失败的特殊措施。现有技术中的这种特殊措施包括通用即插即用(UPnP)、会话边界控制器(SBC)和交互式连接建立(ICE)。[0003]许多目前的NAT穿越技术需要对关于NAT及其行为的某一类型的信息进行确定,即能够被称为"行为发现"的过程。通常,所谓的STUN协议被用于这个目的,其中在NAT后面的EUD上的通信应用(被称为"STUN客户机")与外部网络中的STUN服务器交换许多消息以便确定NAT的行为。在IETFRFC5389中描述了STUN服务器的使用,并且还在IETFRFC5780中描述了可能的行为发现。[0004]在大多数当前的解决方案中,例如在VoIP呼叫建立期间,紧接在使用相关NAT信息之前执行相关NAT信息的确定,在VoIP呼叫建立中,该信息被请求,并且作为结果,确定被立即进行。然而,这产生许多另外的问题。一个问题是:NAT相关信息的发现(特别地,NAT行为的详细调查)需要在网络上交换许多消息,这在局部和外部网络上以及在辅助NAT行为确定的STUN服务器上都增加了负载。另一问题时:NAT行为发现花费时间,并且在需要更详细的信息的情况下,花费相应地更长的时间以进行发现。这意味着:在能够建立连接之前的等待时间可能相当长。[0005]W02009/018004提出一种用于在确定NAT行为时减少时间的量和交换的消息的量的解决方案。该解决方案包括:局部网络中的EUD共享关于它们的局部网络中的NAT的被发现行为的信息。另外,EUD能够主动地协作以进一步确定它们的网络中的NAT的行为,而非被动地共享它们彼此独立发现的NAT行为。关于该NAT的NAT信息随后被存储在位于该NAT后面的所有EUD能够访问的中心位置。现有技术文档XP002512209"Anonymous:〃HomeGatewayTechnicalRequirements:ResidentionalProfileversion1.029-04-2008,'解释了位于NAT后面的终端(CPE)如何能够以通信方式耦合到管理服务器(ACS)。在XP002512209中描述的方法包括:每个终端使用STUN发现它的NAT相关信息。【
发明内容】[0006]本发明的目的在于提供用于NAT穿越的改进的方法和系统。[0007]为此,根据本发明的一个方面,提供一种用于促进NAT的穿越的方法。该方法包括:优选地由"NAT信息提供商"或"NIP"将针对第一NAT类型的NAT的NAT相关信息提供给第一局部网络中的至少一个终端,其中第一局部网络包括第一NAT类型的第一NAT并且其中针对第一NAT类型的NAT的NAT相关信息使终端能够穿越第一NAT。[0008]NIP被配置为:优选地在必须将NAT相关信息提供给第一终端之前获得并且保持存储针对不同NAT类型的NAT的NAT相关信息的数据库;以及从数据库选择针对第一NAT类型的NAT相关信息。[0009]如这里所使用,短语"终端穿越NAT"及其变型被用于描述使位于NAT后面的终端上的一个或多个软件应用能够接收来自外部网络中的应用或客户机的数据交通,换句话说,使来自外部网络中的一个或多个应用或客户机的数据交通能够到达位于NAT后面的一个或多个应用或客户机。而且,换句话说,短语"穿越NAT"被在一般意义上使用,意味着实现位于NAT后面的终端和外部网络中的装置之间的通信。这种通信是双向的,不仅允许从里面到NAT外面的交通,而且具有从外面去到NAT里面的终端的交通。[0010]如这里所使用,术语"终端"表示局部网络内的任何终端用户装置或计算系统。终端能够包括但不限于例如计算机、手提式互联网浏览器、电子邮件装置、VoIP电话、游戏控制台或手提式游戏装置。[0011]另外,如这里所使用,术语"NAT相关信息"表示允许在某个点穿越NAT的任何信息。本领域技术人员将会理解,这种信息能够包括但不限于例如由NAT使用的一个或多个当前端口、NAT的当前WANIP地址、实现在NAT中的当前虚拟服务器规则、NAT的端口映射行为和过滤行为、对发夹的支持、由NAT使用的一个或多个端口分配算法、NAT绑定的超时值、在拥塞期间、在繁忙网络交通期间、在大量同时会话期间和/或在多个同时NAT绑定期间的NAT的行为。[0012]还另外,在本发明的实施例的上下文中,如果两个NAT在多数实际上可行的情况下表现基本上相同,则它们被称为"是相同的NAT类型"。这通常意味着它们是相同品牌、型号和固件,但这也可以意味着它们只是相同的品牌(如果该品牌的所有NAT装置具有基本上相同的行为的话)。[0013]本发明基于这样的认识:通过测试特定NAT类型(例如,NAT的特定品牌、型号和/或固件版本)的NAT获得的NAT相关信息可被重新用于相同类型的其它NAT,而不管在其中使用这些NAT的局部网络如何。针对相同类型的不同NAT装置的相同或基本上相同的NAT相关信息因此应该被称为类型特有信息或类型特有NAT相关信息。这种类型特有信息被提供给需要通过NAT与外部网络中的终端或装备建立通信的第一(优选地,局部)网络中的终端。本发明基于这样的认识:类型特有信息能够被重新用于第一NAT类型的不同NAT。类型特有(NAT相关)信息的例子包括:第一NAT类型的NAT的端口映射行为;第一NAT类型的NAT的过滤行为;由第一NAT类型的NAT对发夹的支持;在第一NAT类型的NAT中实现的端口分配算法中的一个或多个;第一NAT类型的NAT中的NAT绑定的一个或多个超时值;以及在拥塞期间、在繁忙网络交通期间、在多个同时会话期间和/或在多个同时NAT绑定期间的第一NAT类型的NAT的行为。装置特有(NAT相关)信息也能够被单独地或与类型特有(NAT相关)信息同时提供给终端。装置特有信息也能够由终端以现有技术中已知的其它方式获得。[0014]换句话说,特定NAT类型的NAT可被测试一次,并且作为测试的结果获得的NAT相关信息可被重新用于在其中部署这个特定类型的NAT的任何情况,因此减轻单独测试包含这些NAT的每个局部网络中的相同类型的NAT的需要。以这种方式,与在W02009/018004中描述的技术不同,可设想这样的情况:位于这个类型的特定NAT后面的终端都不需要执行任何NAT测试以便获得必要的NAT相关信息。提出的方法允许减小网络上和参与NAT行为发现过程的STUN服务器上的负载,因为不需要由每个局部网络中的每个个体终端执行复杂的NAT发现处理,甚至不需要由部署特定NAT类型的NAT的局部网络内的一个终端执行复杂的NAT发现处理。在本发明的实施例中,可利用被实现在NAT上的STUN服务器功能执行NAT的测试。STUN客户机功能可能也能够被实现在NAT上。本发明的这个实施例中的STUN服务器被以这种方式实现在NAT上,即通过NAT的地址转换部分对例如用于NAT的NAT行为的测试的消息(例如,STUN消息)进行路由。[0015]提出的方案具有几个另外的优点。一个另外的优点是:至少针对一些NAT类型在每个类型基础上将服务器上的NAT相关信息存储在数据库中提供节省服务器存储空间的优点,与针对那些NAT类型的NAT装置在每个装置基础上存储NAT相关信息形成对比。另一优点包括增加局部网络内的安全和信任的水平。本领域技术人员将会理解,与从同一局部网络中的另一终端接收NAT相关信息相比,终端从终端"信任"的运营商接收NAT相关信息是更有价值的,因为另一终端可能正在提供恶意的或仅仅不正确的NAT相关信息。另外,通过在请求NAT相关信息的时间之前执行NAT测试,在建立来自和去往局部网络中的终端的连接中的延迟能够减小。[0016]当然,设想一些实施例并且这些实施例落在本发明的范围内,其中位于特定类型的NAT后面的终端仍然需要执行一些附加的测试以便例如补充从NIP获得的NAT相关信息。然而,即使对于这种实施例,上述优点仍然显著。[0017]根据本发明的另一方面,还公开了一种用在以上方法中的服务器,该服务器被描述为NAT信息提供商(NIP)。而且,本公开涉及:一种计算机程序,具有用于执行这里描述的各种功能的部分,可能是分布式的;以及针对这种软件部分的数据载体。另外,本公开还涉及一种用于与如这里所述的NIP-起使用的中间网络节点,诸如例如家庭网关、路由器或包括路由器的家庭网关。本公开还涉及一种至少包括如上所述的服务器的电信系统。[0018]以下,将更详细地描述本发明的实施例。然而,应该认识到,这些实施例不可被解释为限制本发明的保护的范围。【专利附图】【附图说明】[0019]在附图中:图1是根据本发明的一个实施例的具有将NAT相关信息提供给一个或多个EUD的NIP的计算环境的示意性示图;图2是根据本发明的一个实施例的实践中如何能够实现图1中图示的环境的示意性示图;图3阐述根据本发明的一个实施例的EUD的NIP管理的TR-069序列的方法步骤的流程图;图4是根据本发明的一个实施例的使用RPC执行图3的方法的例子的示意性示图;图5提供根据本发明的一个实施例的可能的CWMP设置参数值请求的例子;图6A-6C图示根据本发明的各种实施例标识EUD位于其后面的NAT的类型的NAT类型标识符如何能够被提供给NIP。图7是根据本发明的一个实施例的其中NIP能够将NAT相关信息提供给EUD的示例性设置的示意性示图;图8A和8B阐述根据本发明的不同实施例的NIP收集NAT相关信息的方法步骤的流程图;图9是根据本发明的一个实施例的NIP、STUN客户机和STUN服务器之间的交互的示意性示图;图10和11提供根据本发明的各种实施例的用于部署STUN客户机的不同方式的示意性示图;图12A提供根据本发明的一个实施例的用于部署STUN客户机的再另一方式;图12B提供根据本发明的一个实施例的能够实现如图12A中所示的STUN客户机功能的NAT的示意性示图;图13A提供根据本发明的一个实施例的部署STUN服务器作为NAT的一部分的示意性示图;图13B提供根据本发明的一个实施例的能够实现如图13A中所示的STUN服务器功能的NAT的示意性示图;图14A提供根据本发明的一个实施例的部署STUN客户机和STUN服务器两者作为NAT的部分的示意性示图;和图14B提供根据本发明的一个实施例的能够实现如图14A中所示的STUN客户机和STUN服务器功能的NAT的示意性示图。【具体实施方式】[0020]图1是根据本发明的一个实施例的具有将NAT相关信息提供给一个或多个EUD3的NIP2的计算环境1的示意性示图。在本发明的上下文中,如以上所定义,术语"EUD"被用于描述"终端"。如所示的,NIP2可经IP网络4连接到许多NAT5-7。每个NAT可将存在于位于相应NAT后面的局域网(LAN)中的一个或多个EUD3连接到IP网络4,如针对NAT6和7所示。当然,位于NAT后面的LAN也可以没有EUD,如针对NAT5所示。[0021]不同的NAT5-7可具有相同的类型,但也可具有不同的类型。在示例性实施例中,在图1中分派给NAT的不同数字(5、6和7)意图图示:NAT5可以是一个NAT类型的NAT,两个NAT6可以是另一NAT类型的NAT,而NAT7可以是第三NAT类型的NAT。[0022]要注意的是,利用相同参考数字在图1中图示的两个或更多的元件(诸如例如,两个NAT6和多个EUD3)不意图指示具有这些参考数字中的每一个的元件是唯一装置,而是更意图指示它们中的每一个是这些装置中的不同装置。因此,图1图示相同终端(即,EUD3)的多个实现方式和相同NAT类型的NAT(即,NAT6)的多个实现。[0023]NIP2被配置为:一旦NIP2获得特定类型的NAT的标识,针对该特定类型的NAT需要NAT相关信息,就把针对特定NAT类型的NAT相关信息提供给任何一个或多个EUD3和/或NAT5-7自身。为此,NIP2可至少包括数据库8,数据库8包含针对不同NAT类型的NAT相关信息,其中针对不同NAT类型的NAT相关信息被以这种方式存储,即能够基于特定NAT类型的标识(NAT类型ID)检索NAT相关信息。NIP2还可包括用于处理NAT相关信息的处理器9。NIP2还可包括用于将消息/数据发送给其它装置和从其它装置接收消息/数据的通信模块(图1中未示出)。[0024]能够由NIP2针对特定NAT类型提供的NAT相关信息包括使位于该类型的NAT后面的局部网络中的终端能够穿越该NAT的信息,即由NIP2提供的NAT相关信息使位于NAT后面的终端上的一个或多个客户机能够从外部网络中的一个或多个客户机接收数据交通。[0025]在每个类型基础上而非每个装置基础上将NAT相关信息提供给终端的NIP2允许把通过测试特定NAT类型(例如,NAT的特定品牌、型号和/或固件版本)的一个或多个NAT获得的NAT相关信息重新用于相同类型的其它NAT,而不管使用这些NAT的局部网络如何。换句话说,特定NAT类型可被测试一次,并且作为测试的结果获得的NAT相关信息可被重新用于其中部署这个类型的NAT的任何情况,因此减轻单独测试包含这些NAT的每个局部网络中的相同类型的NAT的需要。对于图1中图示的示例性方案,这意味着NIP2可将相同的NAT相关信息提供给在第一局部网络中位于第一NAT6后面的一个EUD3和在第二局部网络中位于第二NAT6后面的三个EUD3中的一个或多个,在图1中利用虚线图示局部网络。[0026]可实现NAT相关信息的这种重新使用,因为这些NAT6是相同NAT类型的NAT装置,例如相同品牌、型号和固件的NAT。[0027]要注意的是,图1将NAT5-7中的每一个图示为被包括在相应局部网络内,并且这里提供的讨论适应于NAT的典型使用,即NAT将局域网连接到外部网络或广域网的情况。然而,本领域技术人员将认识到,这里提供的构思也将会起作用于并且能够适应于NAT的其它实现方式,诸如提供商NAT,即提供商在网络中实现NAT并且将私有地址分派给用户装备的情况。在这种实现方式中,NAT将不必被包括在局部网络中。而且,尽管典型NAT问题针对IPv4NAT穿越,但本发明的实施例也适用于其它形式的NAT,诸如IPv4/IPv6NAT或提供商间NAT,即由网络提供商在与其它网络提供商的互连中应用的NAT。[0028]在各种实施例中,针对每个不同NAT类型的NAT相关信息可包括例如使用中的当前端口中的一个或多个、一个或多个当前WANIP地址、当前虚拟服务器规则、端口映射行为、过滤行为、对发夹(hairpinning)的支持、端口分配算法中的一个或多个、NAT绑定的超时值、在拥塞期间的行为、在繁忙网络交通期间的行为、在大量的同时会话和/或多个同时NAT绑定期间的行为。当然,能够设想能够被用于促进NAT穿越的其它种类的NAT相关信息并且这些其它种类的NAT相关信息落在本发明的范围内。[0029]上述NAT相关信息中的一些可能看起来是装置特有的而非类型特有的。换句话说,上述NAT相关信息中的一些可能看起来针对特定NAT是特有的而不是针对特定NAT类型的所有不同NAT的特性。这种信息的一些例子包括使用中的当前端口或虚拟服务器规贝1J。然而,结果表明:令人惊讶地,这种信息可实际上对于某一类型的NAT的所有实现方式而言是典型的,并且因此可被视为是类型特有的。[0030]在各种实施例中,NIP2还能够被配置为不仅提供针对某些NAT类型的NAT相关信息,而且提供针对特定NAT的特有信息。NIP2还可被配置为把提供针对某一NAT类型的NAT的一般NAT相关信息与提供关于特定NAT的特有信息组合。[0031]在本发明的上下文中,如果两个NAT在多数或所有实际上可行的情况下基本上相同地表现,则它们被称为"是相同的NAT类型"。这通常意味着它们是相同品牌、型号和固件,但这也可意味着它们只是相同的品牌(如果该品牌的所有NAT装置具有基本上相同的行为的话)。在各种实施例中,特定NAT类型的标识(S卩,NAT类型ID)可包括指示下面的一项或多项的信息:例如NAT的销售商的组织唯一标识符(0UI)、销售商或制造商的名称、型号编号、型号名称、硬件版本、软件版本、引导rom版本、NAT装置序列号、销售商的企业编号和销售商的分类数据。然而,NAT类型ID不一定必须是作为上述例子之一的实际ID,而能够是使NIP2能够确定NAT类型ID的任何信息,诸如例如由NIP2接收的对NAT相关信息的请求中所包括的NAT的公共IP地址(如果NIP2知道哪个NAT具有这个IP地址的话)。因此,可设想使NIP2能够标识特定NAT类型的各种其它方式并且这些其它方式落在本发明的范围内。[0032]应该注意的是,与由上述W02009/018004提出的技术不同,根据本发明的实施例,独自使用媒体访问控制(MAC)地址作为NAT类型的标识符通常将是不足够的。如果NAT相关信息在每个装置基础上在NIP2中可用,则这将会是足够的,因为MAC地址在世界范围是唯一的。然而,根据本发明的实施例,至少针对一些NAT类型的ΝΑΤ,ΝΙΡ2的数据库8在每个类型基础上包含NAT相关信息。由于虽然MAC地址标识NAT的销售商,但它不标识特定产品类型,所以当使用数据库8时,独自使用MAC地址作为NAT类型标识符将是不足够的。MAC地址仍然能够被用于标识装置类型,但在那种情况下,数据库8将会需要包含MAC地址或MAC地址范围和装置类型的列表。在一些实现方式中,诸如例如由互联网服务提供商提供的家庭网关,这种列表可以是可获得的,因为这种提供商经常为了其它目的(诸如例如,为了网络中的网关验证)而保持对该信息的跟踪。此外,装置制造商能够通过某种离线过程供应该信息。[0033]类似于使用MAC地址,NAT的广域网(WAN)IP地址也可在某一时间点被用作唯一标识符。当例如使用DHCP分派WANIP地址时,这个IP地址在该时间被链接到MAC地址,并且因此在该时间被链接到特定装置。[0034]结合图8A-14B更详细地描述NIP2如何可获得以及保持数据库8。[0035]图2是根据本发明的一个实施例的如何能够在实践中实现图1中图示的环境1的示意性示图。为此,图2图示针对遵循宽带论坛的TR-069规范的远程装置管理的典型设置。图2中示出的NAT可以是图1中图示的NAT5-7之一,并且可以包括管理的互联网网关装置(管理的IGD)(诸如例如,家庭网关(HG))或者被包括在管理的IGD中。在本描述中,符号"NAT5-7"被用于指示NAT,该NAT可以是图1中图示和描述的NAT5、NAT6或NAT7。[0036]如图2中所示,NAT5-7在其的WAN接口上连接到NIP2。NIP2能够被实现为自动配置服务器(ACS)的部分。在图2的右侧,示出典型的LAN,包括NAT5-7和各种EUD3,诸如电话、机顶盒(STB)、平板计算机或PC。[0037]NIP2能够执行对LAN中的各种EUD3的远程管理,或者换句话说,能够将NAT相关信息提供给各种EUD3和/或根据提供的NAT相关信息配置EUD。为此,NIP2具有南向接口并且可具有许多北向接口,如图2中所示。可经NIP的、基于IP的、南向接口使用例如CPEWAN管理协议(CWMP)执行管理。在典型设置中,将会在互联网服务提供商(ISP)的IP核心网络中在某处连接NIP2。NAT5-7可随后经边缘和接入网络连接到这个IP核心网络。以这种方式,NAT5-7将会具有与NIP2的IP连接。北向接口将NIP2连接到OSS/BSS11和策略中心12,用于执行例如预定履行、账单编制、订户管理、策略管理、改变管理、制造管理、性能分析或服务水平协议管理。北向接口还将NIP2连接到呼叫中心13,用于例如接收配置、安装以及供呼叫中心雇员使用。[0038]图3阐述根据本发明的一个实施例的EUD的NIP管理的TR-069序列的方法步骤的流程图。尽管结合图1和2描述这些方法步骤,但本领域技术人员将会认识到,被配置为以任何顺序执行这些方法步骤的任何系统落在本发明的范围内。[0039]该方法开始于步骤15,在步骤15,EUD3发起NIP发现过程以发现NIP2。为此,在根据TR-069的一个实施例中,能够在EUD3中预先配置NIP2的URL。在另一实施例中,EUD3能够从I⑶接收NIP2的URL作为DHCP选项。TR-069也提供落在本发明的范围内的其它选项。一个这种选项是:EUD3将不会被配置有NIP2的地址,而是配置有中间实体(诸如例如,某一中间网络节点)的地址。这个中间实体能够随后将来自EUD3的请求转发或代理发送给NIP2。能够出于可扩展性目的,或者为了例如根据做出的请求的类型将请求路由至不同的NIP而执行这种设置。[0040]在由EUD3发现NIP2之后,在步骤16中,EUD3可设立与NIP2的传输控制协议(TCP)连接。可通过交换TCPsyn数据包和TCPack数据包来实现这一点,如关于TCP的IETFRFC793中所规定的。如果连接设立由于某一原因而失败,则EUD3可重试连接发起直至成功,如步骤17中所示。[0041]在发起连接之后,在步骤18中,通过将CWMP通知请求发送给NIP2并且接收CWMP通知响应并且随后将空的HTTPPost发送给NIP2,EUD3发起事务会话(transactionsession)的设立。在已建立这个会话之后,EUD3能够从NIP2接收请求。如果EUD3接收到请求(步骤19),则EUD3分析请求(步骤20)。作为分析的结果,EUD3确定请求的类型(步骤21),即确定请求包含空的HTTPPost还是包含远程过程调用(RPC)。空的HTTPPost是可以结束会话的标志,如步骤22中所示。然而,如果在步骤21中EUD确定该请求包含PRC的形式的实际指令,则EUD3可继续根据指令继续执行RPC方法(步骤23)。[0042]在步骤19中由EUD3接收的请求的一个例子可以是CWMPGetParameterValues请求。利用这种请求,NIP2将会在步骤18中建立会话之后请求EUD3中存在的参数的列表。由于这个请求不是空的HTTPPost,所以EUD3将会发送CWMPGetParameterValues响应,作为步骤23的部分。在此之后,NIP2将会知道哪些参数存在于EUD3中,并且能够随后使用EUD3将会在步骤19中接收的CWMPSetParameterValues请求设置这些的值。因此,CWMPSetParameterValues请求能够由NIP2用于指令EUD配置NAT行为参数(S卩,提供针对EUD位于其后面的NAT的特定NAT类型的NAT相关信息,其中提供的信息允许配置EUD以便能够穿越NAT),作为接收CWMPSetParameterValues请求之后的步骤23的一部分。这些步骤的流程被示出在图4中。如本领域技术人员将理解的,图4中的步骤的流程从图4的顶部到底部以时间顺序被示出,并且遵循与图3中所示的方法步骤的相同顺序,但该流程是RPC方法GetParameterValues和SetParameterValues的使用的具体例子。[0043]图5提供根据本发明的一个实施例的作为能够由NIP2发送给EUD3的请求的可能的CWMPSetParameterValues请求的例子。CWMP使用SOAP作为包络并且使用HTTP作为应用层协议,在TCP上面作为传输协议。SetParameterValues请求因此是典型SOAP请求,在这种情况下,SOAP请求符合如TR-069中所规定的XML方案。尽管TR-069未规定参数NATMappingType和NATFilteringType,但它们被包括在图5中作为在TR-069被适配为包含对NAT行为描述参数的支持的情况下CWMPSetParameterValues请求将会如何使用TR-069工作的例子。这个特定CWMPSetParameterValues请求将会指令EUD3将两个参数设置为新值。参数NATMappingType将会被设置为DevicePortDependent并且参数NATFilteringType将会被设置为Devicelndependent。[0044]图2-5图示EUD如何能够根据EUD位于其后面的NAT的特定类型从NIP请求NAT相关信息。为此,NIP需要知道这个NAT的身份。可按照不同方式发现这个身份,并且这个身份可被以不同方式提供给NIP。[0045]图6A-6C图示根据本发明的各种实施例标识EUD3位于其后面的NAT的类型的NAT类型标识符(NAT类型ID)如何能够被提供给NIP2。[0046]如图6A中所示,根据一个实施例,EUD3能够自己将NAT类型ID提供给NIP2。EUD3能够通过允许唯一标识特定NAT类型的各种方式访问NAT类型ID,诸如例如使用来自IETFRFC1925的DHCP销售商标识DHCP选项、使用UPnP装置描述或使用装置网关协会的TR-069规范。在这种实施例中,EUD3将会把NAT类型ID提供给NIP2,可能作为对NAT相关信息的请求的部分或作为一般配置请求的部分,该NAT相关信息针对由NAT类型ID标识的类型的NAT。[0047]如图6B中所示,根据另一实施例,NIP2可以是NAT5-7的部分,并且作为结果,知道NAT5-7的NAT类型的身份。在这种实施例中,EUD3将会把对NAT相关信息的请求发送给包含NIP2的NAT5-7。[0048]如图6C中所示,根据再另一实施例,来自EUD3的对NAT相关信息的请求能够经过NAT5-7而到达NIP2。在这种实施例中,NIP2可以获知NAT类型ID,因为NAT5-7将NAT类型ID附着于从EUD3发送的请求,或者因为NIP2能够例如基于NAT5-7的公共IP地址从接收的请求标识NAT类型ID(如果NIP2知道哪个NAT具有这个IP地址的话)。[0049]在图6C的一个实施例中,EUD3可不配置有NIP2的地址。替代地,可在NAT5-7中配置NIP2的地址。EUD3可随后将它的请求发送给NAT5-7,并且NAT5-7可随后用作针对这些请求的代理,将这些请求转发给NIP2。[0050]针对图6B和6C中图示的实施例提供的讨论对于下面的实施例也是有效的:在这些实施例中这些附图中图示的NAT5-7由某一中间网络节点(例如,家庭网关、路由器或包含路由器的家庭网关)替换,这种中间网络节点包含NAT5-7。[0051]在另外的其它实施例(图6A-6C中未图示)中,NAT类型ID可在沿着EUD3和NIP2之间的路径的其它某处被附着于该请求。例如,位于NAT5-7和NIP2之间的网络节点(诸如,DSLAM或路由器)可将NAT类型ID附着于该请求。这种网络节点甚至可位于EUD3和NAT5-7之间的家庭网络中。在所有这些情况下,这些网络节点还可用作对于由EUD3发送给NIP2的请求的代理。[0052]只要NAT类型ID经某一中间网络节点被提供给NIP2(作为对于针对特定NAT类型的NAT的NAT相关信息的请求的部分或者没有这种明确的请求),中间网络节点就可被配置成用能够对NIP2有用的附加信息(诸如例如,根据例如对该特定NAT的网络负载表达的网络状态)来补充消息。如果EUD3和NIP2不使用相同协议,则中间网络节点还可被配置为重新格式化该消息,例如在相同协议的不同版本之间重新格式化。另外,中间网络节点可被配置为确认在消息中发送的NAT类型ID是正确的。在EUD3或EUD3上的客户机不"受信任"并且中间网络节点受信任的情况下,这可能是有用的。对于将NAT类型ID提供给NIP2的所有的不同方式,NIP2能够通过从数据库8把针对由NAT类型ID标识的NAT类型的NAT相关信息提供给EUD3来响应于对NAT相关信息的请求,NAT相关信息能够由EUD3在接收时使用或者被存储在EUD3中供稍后使用。在图6C中图示的实施例中,NIP2能够经NAT5-7或包含NAT5-7的中间网络节点把NAT相关信息提供给EUD3,直接地(换句话说,通过跳过NAT5-7或包含NAT5-7的中间网络节点)把NAT相关信息提供给EUD3。替代地,NIP2能够经图6C中未示出的某一其它中间网络节点把NAT相关信息提供给EUD3。在由NIP2经某一中间网络节点(例如,NAT5-7、包含NAT5-7的网络节点或不包含NAT5-7的某一其它网络节点)把NAT相关信息提供给EUD3的实施例中,中间网络节点可被配置成用可能对EUD3有用的附加信息(诸如例如,网络的状态)来补充该响应,或者在EUD3或EUD3上的客户机和NIP2不使用相同协议的情况下重新格式化该消息。替代地或附加地,例如如果中间网络节点也代理发送初始请求,则中间网络节点可被配置为代理发送响应消息。[0053]尽管以上在NIP2接收对NAT相关信息的请求的情况下解释了图6A-6C中图示的例子,但如结合图6A-6C所述将NAT类型ID提供给NIP2的各种方式也对于下面的实施例有效:该实施例中在没有对NAT相关信息的明确请求的情况下提供NAT类型ID。在这种实施例中,只要NIP2访问例如以图6A-6C中图示的方式之一获得的针对该EUD的NAT类型ID,以及只要EUD3被配置为从NIP2收听消息,NIP2就能够在NIP2被利用某一其它触发因素触发时提供NAT相关信息。以上例子中的触发因素可以是例如:NIP2被配置为周期地提供NAT相关信息的特定时间段到期、EUD3启动、EUD3连接到局部网络或在网络中发生的某一其它改变。而且,NIP2能够被配置为将NAT相关信息提供给EUD3作为对来自EUD3的更一般的请求(诸如例如,一般配置请求)的响应。这可以例如是当NIP2是图6A-6C中未示出的自动配置服务器(ACS)的部分、还将其它非NAT相关配置信息提供给EUD3时的情况。EUD3可能不知道ACS能够提供NAT相关信息,但可接收NAT相关信息作为对非NAT相关配置请求的响应。[0054]图7是根据本发明的一个实施例的其中NIP2能够将NAT相关信息提供给EUD3的示例性设置的示意性示图。如图7中所示,NAT能够被包括在家庭网关(HG)10内,并且NIP2能够是ACS14的部分。HG10能够是例如路由器或包含路由器以及包含附加功能的家庭网关。在启动(步骤25)之后,HG10将会使用例如TR-069从ACS14请求配置(步骤26)。这个配置请求的部分能够被用于获得附加信息,该附加信息将在稍后用在对EUD3的DHCP响应中。由于HG10正在将请求提供给ACS14,所以ACS14知道HG10中的NAT5-7的NAT类型的身份,并且能够提供针对标识的NAT类型的NAT相关信息(步骤27)。HG10不需要理解从ACS14接收的NAT相关信息,因为HG10能够被配置为仅仅立即将信息传送给EUD或存储信息以在稍后将其提供给EUD。[0055]如图7中另外所示,在启动(步骤28)时,EUD3能够使用DHCP向HG10请求配置(步骤29)。在各种实施例中,IP地址信息、默认网关和DNS服务器地址可以是由EUD3经DHCP提供的主要信息,但更多信息能够被包含在DHCP响应中。在这种情况下,HG10将会在它的响应中包括NAT相关信息(步骤30)。以这种方式,HG10用作NIP2的代理,存储适合于EUD3的NAT相关信息(S卩,针对EUD3位于其后面的特定NAT类型的NAT的NAT相关信息)并且在某一稍后时点将该信息提供给EUD3,可能响应于来自EUD3的请求而这样做。[0056]图7可以被视为图6C中图示的实施例的特殊情况。因此,这里关于图6C提供的所有讨论(包括关于图6C中的可能的变型的那些讨论)适用于图7。为了简洁,这里不重复那些讨论。[0057]图8A和8B阐述根据本发明的各种实施例的NIP2收集NAT相关信息的方法步骤的流程图。尽管结合图1和2描述这些方法步骤,但本领域技术人员将会认识到,被配置为以任何顺序执行这些方法步骤的任何系统落在本发明的范围内。[0058]图8A图示针对NIP2的基本流程。该方法开始于步骤31,在步骤31中,NIP2确定对NAT相关信息的需要。例如,在一个实施例中,如果NIP2不具有针对特定NAT类型的任何NAT相关信息或仅具有不完整的NAT相关信息,则NIP2可以确定需要针对该NAT类型的NAT相关信息。在另一实施例中,外部网络能够检测到新的网关装置的存在(新的网关装置是新的NAT和/或包括新的NAT),并且向NIP2指示可能存在应该确定针对其的NAT相关信息的新的NAT。在再另一实施例中,NIP2可能接收到NIP2不能履行的对NAT相关信息的请求,并且因此确定应该获取附加的NAT相关信息。NIP2还能够被配置为从某些IP范围尝试和收集NAT相关信息,而预先不知道这些IP地址是否被NAT使用。在它们的LAN中的NAT或EUD还可被配置为向NIP2指示它们向NIP2提供NAT相关信息(包括它们相应的NAT的标识)的能力。[0059]该方法然后前进至步骤32,在步骤32,NIP2可明确地或暗示地将对NAT相关信息的请求发送给STUN客户机。以下结合图9-14B更详细地描述STUN客户机的功能。[0060]在步骤33中,STUN客户机执行NAT行为检测并且将这种检测的结果提供给NIP2作为针对对NAT相关信息的请求的响应(步骤34)。该方法结束于步骤35,在步骤35,NIP2以这种方式将接收的NAT相关信息存储在数据库8中,即NIP2能够基于NAT类型IDNAT类型ID来检索这种信息。[0061]根据例如可用于NAT目的的存储和处理的量并且因此根据由装置上的其它过程或应用使用的量,NAT可在不同情况下表现不同。NAT还可根据网络负载和/或活动会话的数量而表现不同。因此,可能有益的是,实现多个STUN客户机,每个STUN客户机提供针对特定NAT类型的NAT相关信息的部分,和/或实现一个或多个STUN客户机,所述一个或多个STUN客户机可在一个时间点提供NAT相关信息的部分并且在另一时间点提供附加的NAT相关信息。图8B示出根据这种实施例的用于收集针对某一NAT类型的NAT行为信息的更复杂的流程。[0062]如图8B中所示,该方法在步骤36中开始于NIP2确定对NAT相关信息的需要,类似于上述步骤31。然而,在步骤36中,NIP2可被配置为不仅确定NIP2不具有关于哪些NAT类型的NAT相关信息,而且确定它具有关于哪些NAT类型的部分信息。附加或者替代地,NIP2可被配置为确定它在当时不需要或者根本不需要关于某一NAT类型的完整NAT相关信息,而仅需要部分NAT相关信息。如果存在或预期存在对部分NAT相关信息的请求(例如,对在特定情况下的NAT行为信息的请求),则情况可能是这样。[0063]在确定对NAT相关信息的需要和需要的信息的类型之后,NIP2找到可用的STUN客户机(步骤37)。在一个实施例中,NIP2可能已经知道某些STUN客户机能够提供关于某些NAT类型的特定信息。NIP2还可与网络管理系统交互以获取这种信息和/或可被配置为通过试错法(例如,通过尝试某些IP地址范围)来找到可用的STUN客户机。[0064]如果在步骤37中NIP2不能找到任何可用的STUN客户机,则它能够延迟一定量的时间并且稍后再次尝试,如图8B中利用步骤38和39所示的。这种实施例可以是有益的,因为NAT和STUN客户机两者都可以来来去去,即随着时间而变为与网络连接和从网络断开。[0065]当NIP2找到一个或多个可用的STUN客户机时,NIP2随后确定它们的情况(步骤40)。当NIP2仅需要要求特定情况(例如,特定网络负载或特定数量的同时会话)的部分NAT相关信息时,需要标识在那些特定情况下的一个或多个NAT。为了确定这些情况,NIP2可从NAT自己和/或从LAN或WAN中的监测功能请求这些情况。在标识能够提供需要的信息的STUN客户机之后,该方法前进至步骤41,在步骤41,NIP2把对特定NAT相关信息的一个或多个请求发送给在步骤4〇中标识的所述一个或多个STUN客户机。在步骤42中,NIP2从STUN客户机接收请求的信息。该方法结束于步骤43,在步骤43,NIP2把接收的NAT相关信息存储在数据库8中。[0066]图9是根据本发明的一个实施例的使用STUN协议获得NAT相关信息的NIP2的示意性示图。尽管这里描述的实施例参照如IETFRFC5389中所规定的STUN协议,但也能够使用类似的、可能的非标准化的协议,利用对于本领域技术人员而言将显而易见的适当修改来实现这些实施例。换句话说,尽管参照STUN客户机和STUN服务器描述了图8A-14B,但对于被配置为出于根据除STUN协议之外的某一协议确定NAT相关信息的目的而交换一个或多个消息的任何客户机和任何服务器,可获得类似的教导。本领域技术人员将会认识至IJ,术语"任何客户机"和"任何服务器"在这个上下文中能够指代在装置上的合适地配置的软件段。[0067]结合图9提供的、STUN客户机获得NAT相关信息以提供给NIP2的描述可以例如被应用于在图8A和8B中讨论的STUN客户机。[0068]如图9中所示,在步骤47中,NIP2可将对NAT相关信息的请求发送给STUN客户机(SC)45。如果STUN客户机45不具有已经可用的NAT相关信息,则STUN客户机45可能必须确定请求的信息,可通过与STUN服务器(SS)46交换许多STUN消息来实现这一点(步骤48)。也如图9中所示,在最后的步骤49中,STUN客户机45把包含所请求的NAT相关信息的消息发送给NIP2。[0069]在一个实施例中,STUN客户机45能够被实现在位于NAT的一侧的EUD上,而STUN服务器46能够被实现在位于NAT的另一侧的服务器上,其中NAT可以是这里描述的NAT5-7之一。在一个特定实施例中,STUN客户机45能够被实现在位于NAT的LAN侧的EUD(诸如,这里描述的EUD3之一)上,而STUN服务器46能够被实现在位于NAT的WAN侧的服务器上。然而,以下描述其它实施例,其中STUN客户机45和/或STUN服务器46可被以不同方式实现。[0070]在步骤48中在STUN客户机45和STUN服务器46之间交换的特定消息的性质和消息的数量取决于待确定的NAT相关信息的性质。如以上所讨论的,例如,如果不能确定所有的请求的信息和/或如果仅在特定时间点向特定STUN客户机45请求部分信息,则STUN客户机45能够被配置为递送部分信息。[0071]图9中图示的实施例假设NIP2主动地发送对NAT相关信息的请求,如利用图9中示出的步骤47所示。然而,步骤47是可选的,因为结合图9提供的讨论也能够被应用于这样的实施例:STUN客户机45将会被配置为在NIP2未发送明确的对NAT相关信息的请求的情况下把NAT相关信息提供给NIP2。STUN客户机45能够被配置为可能响应于某一其它触发因素将信息提供给NIP2。例如,在特定预定时间、在预定时间间隔到期时、在STUN客户机和/或EUD启动时、当EUD正连接到LAN时或者当在LAN中某些事物改变时,信息能够被从STUN客户机45提供给NIP2。这种用于将NAT相关信息从STUN客户机45提供给NIP2的触发因素类似于可被用于NIP2将NAT相关信息提供给EUD3的触发因素。[0072]不管步骤47是否存在于NIP2从STUN客户机45获得NAT相关信息的过程中,STUN客户机45应该位于NAT"后面",因为在上述步骤48中在STUN客户机45和STUN服务器46之间交换的消息应该在合适的方向经过NAT,以便能够获得NAT相关信息。对于存在步骤47的实施例,另外的要求也将会是:STUN客户机45应该能够接收来自NIP2的对NAT相关信息的请求。图10、11、12A-12B和14A-14B提供根据本发明的各种实施例的用于部署满足这些要求的STUN客户机的不同方式的示意性示图。在这些图中图示的NAT能够是这里描述的NAT5-7中的任何一个。[0073]图10图示:STUN客户机45可被实现为LAN中的一个或多个EUD3的一部分或其附加物。尽管这种设置将会满足第一要求,即STUN客户机45将会位于NAT50后面,但通常将会不满足第二要求,因为来自NAT50的WAN侧的NIP2的请求通常将不经过NAT50并且因此将不会到达STUN客户机45。为了满足第二要求,在一个实施例中,NAT50可被配置为包含虚拟服务器规则以允许来自NIP2的请求经过NAT50到达EUD3。在另一实施例中,EUD3可包括两个或更多的接口,其中至少一个接口将位于NAT50后面并且至少一个其它接口不位于NAT50后面。在再其它实施例中,EUD3可被配置为例如在启动之后发起到NIP2的连接,以使得稍后NIP2能够穿越NAT50以到达EUD3。[0074]图11图示另一设置,其中,类似于图10,STUN客户机45被实现为LAN中的一个或多个EUD3的部分或其附加物。为了满足第二要求,NAT51包含服务代理(SP)52。月艮务代理52允许来自NIP2的请求去往NAT51,并且然后NAT51将这个请求转发给EUD3。这种实现方式的例子可以是对LAN中的UPnP服务的远程访问。NAT51(例如,家庭网关和/或路由器)可支持这种类型的远程访问,并且STUN客户机45能够被实现为EUD3上的UPnP服务。[0075]图12A图示用于部署STUN客户机45的第三设置。在如图12A中所示的设置中,因为STUN客户机45被实现为NAT53的部分,所以来自NIP2的消息能够到达STUN客户机45。然而,对于这种实现方式,除非如下所述那样采取附加的措施,否则不满足STUN客户机45的第一要求,因为STUN客户机45将不会位于NAT53后面。[0076]图12B是根据本发明的一个实施例的能够满足具有STUN客户机功能的要求的图12A中图示的NAT53的示意性示图。图12B图示:NAT53包括STUN客户机45、被配置为在NAT53内实际执行NAT的功能的NAT单元54(NAT的地址转换部分)并且可选地包括一个或多个应用60,诸如例如具有例如装置上的web接口的形式的VoIP应用、VPN应用、存储应用、IPTV应用、安全应用、家庭自动化应用和管理应用。也如图12B中所示,NAT53包括与WAN的接口57和与LAN的接口58。还如所示的,NAT53包括被配置用于对IP数据包进行路由的路由功能56。[0077]NAT单元54被配置用于经路由功能56将网络地址转换应用于交通,该交通经接口58来自LAN并经接口57去往WAN,并且反之亦然。另外,NAT53在NAT53的LAN侧包括针对STUN客户机45的虚拟网络接口59。虚拟网络接口59像与路由功能56的正常网络接口一样表现,即虚拟网络接口59允许发送和接收IP数据包并且具有分派给它的IP地址。然而,替代于作为用于硬件段(诸如,网络接口卡)的驱动器,虚拟网络接口59是将网络交通递送给特定软件应用(在这种情况下,STUN客户机45)的驱动器。[0078]虚拟网络接口59应该被配置为任何其它接口。为了实现适当的NAT测试,接口59和路由规则两者都能够被配置为类似于LAN接口58或多个LAN接口,以使数据包通过NAT单元54经过正确的路线。接口59也能够被配置为例如与位于LAN侧的硬件接口一起(即,接口58)形成桥组,在这种情况下,虚拟网络接口59和接口58两者都将使用相同路由配置,因此数据包将经过正确的路线。[0079]路由功能56被配置为对在NAT53内的STUN客户机45和位于NAT53外面某处(可能位于WAN中)的STUN服务器之间交换的消息进行路由,以使得消息穿越NAT单元54。这种配置确保STUN客户机45在网络意义上位于NAT"后面",因为以与STUN客户机45被实现在连接到NAT的LAN侧的EUD上的情况类似的方式,经NAT单元54对在STUN客户机45和STUN服务器46之间交换的消息进行路由。[0080]在各种实施例中,路由功能56能够被实现于硬件、软件、固件或这些项中的两项或更多项的任何组合。[0081]在图12B的实现方式中,可实现另外的措施以确保NIP2可到达STUN客户机45,类似于结合图10和11描述的例子。为了简洁,这里不重复那些描述。[0082]在一个实施例中,当前用于创建虚拟私有网络(VPN)连接的LinuxTun或Tap实现方式能够被用于实现虚拟网络接口59。在其它实施例中,某一其它虚拟网络接口实现方式也能够被用于实现虚拟网络接口59,只要以这种方式编程路由配置,即虚拟网络接口59位于NAT53的LAN侧,如图12B中所述。[0083]在NAT53上或在具有NAT功能的任何网络节点上实现STUN客户机45而非在位于这种NAT或这种网络节点后面的局部网络中的EUD3上实现客户机允许由NIP2发送的消息到达STUN客户机45,而路由单元56确保STUN客户机45在网络意义上位于NAT"后面"。以这种方式,NIP2可请求NAT行为发现并且从STUN客户机45获得NAT相关信息。其后,NIP2能够将合适的NAT相关信息提供给局部网络中的终端,提供的NAT相关信息使终端能够穿越它们位于其后面的NAT。[0084]另外,在NAT53上或在具有NAT功能的类似网络节点上实现STUN客户机45消除了使终端位于可用于NAT行为发现的NAT53后面的需要。这意味着:NAT53-变为可用(意味着NAT53"在线",被接通并且连接),就可立即执行NAT的测试。[0085]类似于如上所述在NAT自身上实现STUN客户机45,STUN服务器46也可被实现在NAT上。图13A提供根据本发明的一个实施例部署STUN服务器46作为NAT61的部分的示意性示图。NAT61能够是这里描述的NAT5-7中的任何一个。[0086]这种实现方式的一个优点是消除了使STUN服务器46位于WAN中的需要。将STUN服务器46包括在NAT61中允许使用STUN协议更快地确定NAT相关信息,因为没有STUN消息必须经过网络的WAN侧。另外,甚至可在不需要NAT61的WAN部分上的实际连接的情况下测试NAT61。[0087]再另外,这种解决方案是可扩展的,因为每个NAT可包含用于连接到NAT的LAN中的EUD的STUN服务器。在NAT上实现STUN服务器46的构思基于这样的认识:单个网络节点(诸如例如,NAT或包括NAT的家庭网关)通常具有足够处理能力以便针对位于这种网络节点后面的LAN中的相对较少的EUD处理NAT行为发现。因此,在NAT上实现STUN服务器46消除了对具有为许多个体终端服务的足够容量的中央服务器(诸如,STUN服务器)的需要。[0088]图13B提供根据本发明的一个实施例的能够实现如图13A中所示的STUN服务器功能的NAT61的示意性示图。图13B图示与图12B的基本元件相同的基本元件,诸如例如NAT单元54、应用60、LAN接口58和WAN接口57。为了简洁,这里不重复这些元件的描述。[0089]也如图13B中所示的,NAT61还包括STUN服务器46、路由功能62和接口63。类似于图12A中示出的虚拟网络接口59,接口63也是虚拟网络接口,但位于NAT61的WAN侦k虚拟网络接口63包括与接口59类似的功能并且被以与配置图12B中示出的针对STUN客户机45的接口59的方式类似的方式配置,不同之处在于,不需要另外的措施以使得可到达STUN服务器46。通常仅由STUN客户机通过NAT向STUN服务器发送消息,并且STUN服务器不需要用于使STUN服务器针对其它功能可访问的附加接口或虚拟服务器规则。STUN服务器当然可以具有用于例如STUN服务器自身的远程管理的接口。[0090]为了使用位于NAT的WAN侧的虚拟网络接口,必须分派地址。这个地址通常将是可在外部网络中路由的公共地址,因为这些是在NAT的WAN侧使用的地址。这种公共地址因为在WAN中的路由目的而通常是唯一的,并且通常在相同时间仅被分派一次,即分派给单个装置。但由于在图13B中示出的实施例中,交通通过NAT单元54被路由至这个地址,即不离开包含NAT单元54的节点61,所以相同公共地址在相同时间能够被用于NAT的不同实现方式。还要注意的是,由于去往NAT61上的STUN服务器46的交通不经过外部网络,所以分派给STUN服务器46的地址不必须是公共地址。如果NAT61能够被以这种方式配置,即起源于NAT61的LAN侧并且以位于NAT的WAN侧的STUN服务器的这种私有地址为目的地的交通将会实际上经过NAT单元54,则地址还可以是私有地址,即通常用在NAT的LAN侧。[0091]将相同公共地址分派给各种NAT中的STUN服务器也能够与实际上将这个相同的公共地址分派给外部网络中的STUN服务器组合。随后STUN客户机能够在其配置中接收到STUN服务器的这个地址。如果STUN客户机位于其后面的NAT已如图13B中所示实现STUN服务器,则随后它们的STUN请求将会被路由至该STUN服务器。如果STUN客户机位于其后面的NAT未以这种方式实现STUN服务器,则它们的请求将会被自动地路由至外部网络中的STUN服务器。[0092]对于本领域技术人员来说,将明显的是,为了使用这种虚拟网络接口,将必须相应地配置路由规则。能够以各种方式实现这一点,诸如创建包含虚拟网络接口和实际网络接口的桥组,或通过配置用于这个特定目的的路由表。[0093]类似于路由功能56,路由功能62被配置为对在NAT61内的STUN服务器46和位于别的某处(但在LAN内,以使得STUN客户机45位于NAT61后面)的STUN客户机45之间交换的消息进行路由,以使得消息穿越NAT单元54。[0094]在再另一实施例中,STUN客户机和STUN服务器两者都可以被实现在NAT上。在图14A中示出这一点,图14A提供根据本发明的一个实施例部署STUN客户机45和STUN服务器46两者作为NAT70的部分的示意性示图。图14B提供根据本发明的一个实施例的能够实现如图14A中所示的STUN客户机和STUN服务器功能的NAT70的示意性示图。如所示的,例如,具有虚拟网络接口59和63,图14B是图12B和图13B的组合。如果需要可从NAT70的WAN侧到达STUN客户机45,则它将仍然需要例如虚拟服务器规贝丨』。如果STUN客户机45和STUN服务器46两者都使用这种虚拟网络接口被实现在同一NAT上,则STUN行为发现可以是非常快速的,因为没有STUN消息必须实际经过该网络。而且,在没有任何可用连接的情况下仍然能够完成发现,或者如果连接可用,则它们不会负担用于NAT发现的网络交通,从而节省用于其它目的的网络资源。[0095]虽然图12A-12B、13A-13B和14A-14B被描述为分别描绘NAT53、NAT61和NAT70,但在其它实施例中,装置53、61和70可以不是NAT"本身",而是包括NAT功能的任何中间网络节点,诸如例如家庭网关、路由器或包括路由器的家庭网关。在这种装置中,将通过NAT单元54实现NAT功能。另外,装置53、61和70中的每一个还能够可选地包括:至少一个存储器,用于存储数据和计算机程序;处理器,用于运行计算机程序以及用于处理数据;和通信模块,用于发送和接收消息/数据交通。例如,路由功能56、63和71的功能能够被实现为存储在存储器中以用于在处理器上运行的计算机程序。[0096]另外,参照至少针对一些NAT在每个类型基础上存储和分发NAT相关信息的NIP2并且在该NIP2的背景下描述了NAT53、61和70的功能。然而,在其它实施例中,可由任何NAT信息提供商(诸如例如,被配置为在每个装置基础上存储和分发NAT相关信息的传统NAT信息提供商)采用使用分别如图12A-B、13A-B和14A-B中所示的NAT53、61和70的NAT行为发现。[0097]下面的讨论适用于这里描述的所有实施例。[0098]在各种实施例中,STUN客户机45可以是应用的部分或者可以是网页的部分。例如,STUN客户机45可被实现为互联网应用(例如,浏览器或即时消息应用)的插件或实现为网页上的Java脚本段。每次用户将使用EUD浏览某一网页时,这种Java脚本段能够被下载并且运行。能够在前台实现这一点,例如可出于检测NAT相关信息的目的而专门创建网页,例如主控NIP2的运营商的网页。替代地,Java脚本也可以是其它网页的部分并且在后台运行,而用户不知道脚本正在运行。[0099]在另外的实施例中,替代于仅监测情况并且报告在其期间确定NAT相关信息的情况,STUN客户机45可被配置为主动地影响这些情况。例如,STUN客户机45可被配置为设立多个会话或引起附加的网络负载以便能够在多个会话或重网络负载的情况期间确定NAT行为。[0100]这里描述的实施例主要涉及在确定的时刻存在的情况下使用已有STUN客户机确定STUN客户机位于其后面的NAT的NAT相关信息。然而,类似于STUN客户机45的STUN客户机也可按需部署。可把这种STUN客户机例如使用TR-069、使用OSGii框架或使用用于将STUN客户机软件传输到NAT并且将它安装在NAT上的某一其它手段部署在EUD或NAT上。按需实现STUN客户机可提供如下的优点:STUN客户机将例如仅在终端用户不使用NAT的夜晚或在低使用率的其它时间期间占用资源。一旦NAT和/或EUD为了其它目的而被再次使用,这种STUN客户机就可被移除,或者能够保持被实现但变为不活动直至另一空闲时间段。[0101]另外,可能除了上述方式之外,还存在各种其它离线手段,通过这些离线手段,NIP2可获得NAT相关信息。在一个例子中,NAT的制造商能够供应这种信息。在另一例子中,能够在测试环境中测试NAT,在该测试环境中能够模拟或复制各种情况。通过使用STUN协议可以实现这一点,但使用位于NAT的两端的网络嗅探器并且随后测试经过NAT的、来自和去往不同IP地址和端口的各种消息也能够实现这一点。在再另一例子中,能够通过对实现NAT的实际代码的分析推断NAT行为。这种代码能够是可获得的(例如,因为它是开源的或由制造商提供),或者能够通过对NAT的反向工程来取得。如果特定装置类型使用与一些其它特定装置类型相同的NAT实现方式,例如如果它基于相同的Linuxiptable版本并且使用相同配置,则也能够推断该特定装置类型的NAT行为。[0102]在各种实施例中,NAT5-7、STUN客户机45和/或STUN服务器46中的每一个能够被实现于软件、硬件、固件或这些项中的两项或更多项的任何组合中。[0103]这里描述的NIP2被描述为单个实体。实际上,经常为了可扩展性的目的,NIP2可被实现为被配置为一起工作(例如,以分布式方式)的两个或更多的各种实体。例如通过具有多个实体,每个实体为许多终端装置服务,通过具有位于多个物理实体顶上的虚拟化层以及具有位于其顶上的NIP(即,作为"云服务"的NIP),通过具有合适的负载共享或负载分配机制等等,能够实现这一点。[0104]本发明的一个实施例可被实现为用于与计算机系统一起使用的程序产品。程序产品的(一个或多个)程序定义实施例的功能(包括这里描述的方法)并且能够被包含在各种优选的非暂态计算机可读存储介质上。说明性的计算机可读存储介质包括但不限于:(i)不可写入存储介质(例如,计算机内的只读存储装置,诸如可由CD-ROM驱动器读取的CD-ROM盘、ROM芯片或任何类型的固态非易失性半导体存储器),信息被永久地存储在该存储介质上;和(ii)可写入存储介质(例如,软磁盘驱动器内的软盘或硬盘驱动器或任何类型的固态随机访问半导体存储器、闪存)可改变的信息被存储在该存储介质上。可在这里描述的处理单元上运行计算机程序。【权利要求】1.一种用于促进位于第一网络地址转换器类型的网络地址转换器(NAT)后面的第一网络中的终端和外部网络中的装置之间的通信的方法,所述方法包括下述步骤:把针对第一NAT类型的一个或多个NAT的类型特有信息提供给第一网络中的至少一个终端,其中针对第一NAT类型的所述一个或多个NAT的类型特有信息由第一局部网络中的所述至少一个终端在设立或保持第一网络中的所述终端和所述外部网络中的所述装置之间的通信中使用。2.如权利要求1所述的方法,还包括:保持存储针对一个或多个NAT类型的NAT的类型特有信息的数据库,所述一个或多个NAT类型至少包括第一NAT类型;以及至少部分地基于第一NAT类型的标识从数据库选择针对第一NAT类型的NAT的类型特有信息以提供给第一局部网络中的所述至少一个终端。3.如权利要求2所述的方法,其中存储在数据库中的、针对所述一个或多个NAT类型的NAT的类型特有信息的至少部分由一个或多个NAT制造商提供,通过在测试环境中测试所述一个或多个NAT类型中的至少一个NAT类型来获得,通过对所述一个或多个NAT类型中的至少一个NAT类型的实现代码的分析来获得,和/或根据STUN协议使用消息的交换来获得。4.如前面权利要求中的一项或多项所述的方法,其中响应于接收到对NAT相关信息的请求提供针对第一NAT类型的NAT的类型特有信息,所述请求使服务器能够确定第一NAT类型的标识。5.如权利要求4所述的方法,其中在接收到所述请求之前获得针对第一NAT类型的NAT的类型特有信息。6.如前面权利要求中的一项或多项所述的方法,其中针对第一NAT类型的NAT的类型特有信息包括下面各项中的一项或多项:第一NAT类型的NAT的端口映射行为;第一NAT类型的NAT的过滤行为;由第一NAT类型的NAT对发夹的支持;在第一NAT类型的NAT中实现的一个或多个端口分配算法;第一NAT类型的NAT中的NAT绑定的超时值;以及在拥塞期间、在繁忙网络交通期间、在多个同时会话期间和/或在多个同时NAT绑定期间的第一NAT类型的NAT的行为。7.如前面权利要求中的一项或多项所述的方法,其中针对第一NAT类型的NAT的类型特有信息包括下面各项中的一项或多项:由第一NAT类型的NAT使用的当前端口;针对第一NAT类型的NAT的当前虚拟服务器规则。8.如前面权利要求中的一项或多项所述的方法,还包括:将针对第一NAT类型的NAT的类型特有信息提供给第二局部网络中的至少一个终端,第二局部网络不同于第一局部网络并且包括第一NAT类型的第二NAT。9.一种服务器,包括被配置用于执行如权利要求1-8中的一项或多项所述的方法的装置。10.-种中间网络节点,包括如权利要求9所述的服务器并且还包括第一NAT类型的NAT。11.一种用于与如权利要求9所述的服务器一起使用的中间网络节点,所述中间网络节点包括第一NAT类型的NAT并且被配置至少用于:将第一NAT类型的标识提供给服务器;从服务器接收针对第一NAT类型的NAT的类型特有信息;以及将针对第一NAT类型的NAT的类型特有信息提供给第一局部网络中的所述至少一个终端。12.-种用于与如权利要求9所述的服务器一起使用的中间网络节点,所述中间网络节点被配置至少用于:将第一NAT类型的标识提供给服务器。13.如权利要求10-12中的一项或多项所述的中间网络节点,所述中间网络节点包括家庭网关和/或路由器。14.一种终端,用于:在如权利要求1-8中的一项或多项所述的方法中使用,与如权利要求10所述的服务器一起使用,和/或与如权利要求10-13中的一项或多项所述的中间网络节点一起使用,所述终端被配置至少用于:接收针对第一NAT类型的NAT的类型特有信息;以及使用针对第一NAT类型的NAT的类型特有信息来穿越第一NAT。15.如权利要求14所述的终端,还被配置用于将第一NAT类型的标识提供给服务器。16.-种计算机程序,包括软件代码部分,所述软件代码部分被配置为:当由处理器执行时,执行权利要求1-8中的至少一个权利要求的步骤。【文档编号】H04L29/12GK104106254SQ201280069761【公开日】2014年10月15日申请日期:2012年12月13日优先权日:2011年12月14日【发明者】H.M.斯托克金,F.登哈托格,M.赫雷拉范德努德,B.希尔伦,H.穆德申请人:皇家Kpn公司,荷兰应用自然科学研究组织

最新回复(0)