(5)具体实施方式
在描述本发明的各种实施例之前,现提供可实施本发明的各种实施例的计算机和网络环境的说明。尽管没有要求,将在由计算机执行的计算机可执行指令(例如:由电脑执行的程序模块)的总的语境下对本发明进行描述。程序通常包括执行特定任务或实施特定抽象数据类型的例行程序、对象、组件、数据结构等等。这里使用的“程序”这个术语的意思可以是一个单个的程序模块或多个共同行动的程序模块。这里使用的术语“计算机”和“计算装置”包括电子地执行一个或多个程序的任何装置,例如:个人电脑(PC)、手提装置、多处理器系统、基于微处理器的或可编程的消费电子产品、网络PC机、小型计算机、图形输入板PC机、膝上电脑、具有微处理器或微控制器的消费者设备、路由器、网关、集线器等等。
还可以在分布式计算机环境中应用本发明,其中任务是由通过通信网络链接的远程处理装置执行的。在分布式的计算机环境中,可将程序模块放置在本地及远程的存储器装置。
参照图1描写适用于加入本发明的诸方面的计算机联网环境的范例。该示例计算机联网环境包括几个通过由一片云代表的网络104相互进行通信的计算机102。网络104可包括许多熟知的组件,例如:路由器、网关、集线器等等,并使计算机102能通过有线和/或无线媒体通信。当通过网络104相互作用时,一个或多个计算机102可相对于其它计算机102作为客户机、服务器或对等者。因此,可在客户机、服务器、对等者或它们的组合上实施本发明的各种实施例。尽管如此,这里包含的具体范例并不是指所有这些类型的计算机。
见图2,示出可实施这里所述的发明的几个方面的计算机102的基本配置的范例。在它的最基本的配置中,计算机102通常包括至少一个处理单元202和存储器204。处理单元202执行根据本发明的各种实施例完成任务的指令。在完成这些任务时,处理单元202可将电子信号发送到计算机102的其它部分和计算机102外部的设备,以导致某种结果。取决于计算机102的准确配置和类型,存储器204可以是易失性的(例如:RAM),非易失性的(例如:ROM或闪存)或两者的某种结合。这种最基本的配置在图2中由虚线206示出。
计算机102还可以具有附加的特征/功能。例如:计算机102还可以包括附加的存储器(可移除208和/或不可移除210)包括但不限于磁盘、光盘或磁带。计算机存储器媒体包括以任何用于存储信息(包括:计算机或执行指令、数据结构、程序模块、或其它数据)的方法或技术实施的易失性和非易失性,可移除和不可移除媒体。计算机存储器媒体包括,但不限于,RAM、ROM、EEPROM、闪存、CD-ROM、数字通用盘(DVD)或其它光存储器、磁带盒、磁带、磁盘存储器或其它磁存储器装置、或任何能用于存储想要的信息,并能由计算机102访问的其它媒体。任何这种计算机存储器媒体都可以是计算机102的一部分。
计算机102最好还包括使该设备与其它诸如远程计算机214之类的设备通信的通信连接212。通信连接是通信媒体的一个例子。通信媒体通常体现计算机可读指令、数据结构、程序模块或其它经调制的数据信号(例如:载波或其它传输机构)中的数据,并包括任何信息提交媒体。作为示例而非限定,术语“通信媒体”包括诸如声的、RF、红外线的之类的无线媒体或其它无线媒体。这里使用的术语“计算机可读媒体”包括计算机存储器媒体和通信媒体。
计算机102还可以包含诸如:键盘/键板、鼠标、笔、语音输入装置、接触式输入设备等等。还可包括诸如:显示器、扬声器、打印机等之类的输出设备218。所有这些设备都是本领域熟知的,在这里就不必赘述了。
在以下的说明中,除非另外指明,将参照一个或多个计算装置执行的动作和操作的符号代表来描述。这样,将理解这些有时被称为计算机可执行的动作和操作,包括由计算机的处理单元进行对电信号代表以结构的形式的数据的处理。这一处理转换数据或将数据保持在计算机的存储器系统中的位置上,它以一种本领域的技术人员熟知的方式重新配置或改变计算机的操作。维持数据的数据结构是具有由数据的格式定义的特定属性的存储器的物理位置。然而,尽管以上文本中对本发明进行的描述,但它并不旨在限定,正如本领域的技术人员理解的那样,以下描述的各种动作和操作也可以在硬件中实施。
在本发明的实施例中,用于在计算机网络中建立和维持通信连接的协议可以由多个协议层(例如:对应于由国际标准组织(ISO)的开放系统互连(OSI)描述的层)实施。OSI模型的细节请见Zimmerman,OSI Reference Model-The ISO Modelof Architecture for Open System Interconnection,IEEE Transactions onCommunications,1980年4月。在本发明的一个实施例中,一个虚拟的连接(VC)层被添加到协议上或合并到现有的协议层。在下文中,参照因特网协议(IP)和基于IP的协议描述范例,然而,本发明的实施例并不受此限制,并可将这些范例推广到任何具有无状态的路由的网络协议。
图3示出用于将虚拟连接层加到现有网络层的示例配置。该虚拟连接层302驻留在一个或多个较低的网络层304和一个或多个较高的网络层306之间。较低的网络层304的例子包括确定物理媒体中的信号的格式化的物理层,及控制多个计算机(例如:图1的计算机102)对共享物理通信媒体的访问的媒体访问控制(MAC)层。较高的网络层306包括执行基于用户的依赖认证政策的会话层,及将数据从共用网络传送格式翻译到特定应用格式的表示层。
应用层308通过与较高的网络层306相互作用来利用网络服务。该较高的网络层306与虚拟连接层302相互作用,且该虚拟连接层302与较低的网络层304相互作用。较低的网络层304中至少一个与物理传输媒体相互作用。在本发明的一个实施例中,虚拟连接层302通过使应用层308,甚至在连接的一方改变其网络连接点时,能通过连接的原始标识信息引用一个连接来虚拟化通讯连接(如图2的通讯连接212)。
图4和图5示出根据本发明的实施例将附加的虚拟连接层合并到分层的TCP/IP实施中的两个范例。在图4中,较低的网络层包括一为网络硬件404提供接口的设备驱动程序402和实施独立于较高网络层的因特网协议功能的IP层406。较高的网络层包括一实施TCP/IP的几个传输控制方面的TCP层408和被应用程序412用于访问计算机网络服务的网络插座应用编程接口(API)410。在图4中,考虑到在IP层406看到数据之前输出数据(即,拟发送的数据)的截取,及在IP层406参照因特网协议功能完成处理数据之后输入数据(即,接收的数据)的截取,虚拟连接层414位于TCP层408和IP层406之间。
在一些常规的TCP/IP实施中,IP层和TCP层是作为一个单个的数据处理模块实施的,例如:来增加性能。当是这种情况时,在图5中所示的另选位置上增加一个虚拟连接层502是有利的,例如:这样可以使对现有实施的修改最少化。最少化对现有实施的修改可减少由新的模块引入的错误数量,从而导致更稳定的系统的修改。在图5中,虚拟连接层502位于一熔合的TCP/IP层504和设备驱动程序402之间(即,和图4的设备驱动程序402相同的设备驱动程序)。输出的数据在TCP/IP层处理后由虚拟连接层502截取。输入的数据在传递给TCP/IP层504之前由虚拟连接层502截取。
图6描绘一根据本发明的实施例的适用于实施虚拟连接层服务的示例虚拟连接模块。虚拟连接模块600包括一配置成根据本地连接翻译表604中的信息翻译通信连接的本地连接翻译(LCT)组件602。将连接管理组件606配置成使本地连接翻译表604中的项与在远程对等者(即,图2的远程计算机214)上的相应项同步。对等协商组件608与对等者交换虚拟连接的优选,以及为对等发送的虚拟连接协议消息的认证协商一个基础。
虚拟连接模块600可包括一个虚拟连接预订通知服务(VC SNS)代理组件610,它用作远程虚拟连接预订通知服务(图6中未示出,但以下参照图10进行描述)的本地代理。该本地组件610利用的特定远程虚拟连接预订通知服务可以,例如:通过动态主机配置协议(DHCP)配置。在图6所描绘的范例中,VC SNS代理610是以用户模式执行的,然而,该虚拟连接模块600的余下组件是以核心程序模式执行的。虚线612画出了一个执行虚拟连接模块600中的核心程序模式和用户模式的边界。在计算机操作系统的语境中使用核心程序模式和用户模式在本技术领域中是已知的,在此不必再详述了。
本地连接翻译表604包括一个用于对等者之间每个有效通信连接的项。在本发明的一个实施例中,项是在建立通信连接时加入的,及在通信连接结束时删除的。在本地连接翻译表604中的每一个项将一原始的连接说明与一当前的连接说明相关联。连接说明包括一个或多个通信连接参数,并可唯一地标识一个用于特定网络协议层或网络协议层组的通信连接。在本发明的一个实施例中,在每个原始的连接说明和当前的连接说明之间有一对一的关系。
连接说明可包括用于每个参与到连接中去的对等者的网络连接点标识符(网址),例如:在IP网络中的IP地址,在TCP/IP网络的IP地址和TCP端口,或在UDP/IP网络中的IP地址和UDP端口。在本发明的一个实施中,如果参与有效通信连接的对等者没有改变其网络连接点,则用于相应项的当前连接说明与原始的连接说明相同。然而,如果一个或多个对等者是移动了(即,改变了它的网络连接点),则更新当前的连接说明。在本发明的一个实施例中,在通信连接的整个过程中原始的连接说明都保持不变。
下表为用于基于IP的计算机网络支持的较高层协议(例如:TCP和UDP)的连接说明的一个范例。
名字 |
类型 |
本地IP地址 |
IPv4或IPv6地址 |
本机端口 |
16位端口号 |
远程IP地址 |
IPv4或IPv6地址 |
远程端口 |
16位端口号 |
较高层协议类型 |
协议类型枚举 |
该表包括标识本地对等者的IP网络连接点的本地IP地址,及标识在本地对等者上的较高层协议端口的本地端口号。本地对等者可参与多个通信连接。每个通信连接可与一端口号相关联。同样地,该表还包括远程IP地址和远程端口号。较高层协议类型表示一种由IP网络(例如:TCP或UDP)路由的较高层协议。在本发明的一个实施例中,本地和远程IP地址的组合、较高层协议类型、及本地和远程端口号指定一通信连接。
虚拟连接模块602可截取在输出的数据流中的每一个输出网络协议单元(例如:IP数据报),及在输入数据流中的每个输入网络协议单元。在本发明的一个实施例中,对每一个虚拟连接模块602截取的输出网络协议单元,本地连接翻译组件602将与输出网络协议单元相关联的连接说明从原始的连接说明翻译成当前的连接说明。另外,对每个由虚拟连接模块602截取的输入的网络协议单元,本地连接翻译组件602将与输入网络协议单元相关联的连接说明从当前的连接说明翻译成原始的连接说明。图7示出一个用于基于IP的网络的示例翻译操作。
在图7中,本地连接翻译表604包括与当前的连接说明704相关联的原始连接说明702。原始连接说明IP1:IP2中的一个包括一本地IP地址IP1和一远程IP地址IP2,即,在开始建立有效连接时,本地计算机在IP1地址上被连接到IP网络,远程计算机则在IP2地址上被连接到IP网络。在连接过程中的某个点,远程计算机将它的IP网络连接点变到地址IP3,因此当前的连接说明IP1:IP3不同于原始的连接说明IP1:IP2。当前的连接说明IP1:IP3具有相同的本地IP地址IP1,但远程IP地址IP3是从原始的远程IP地址IP2变来的。尽管此细节没有在图7中示出,远程端口号同样可以改变。
输出协议单元706是由虚拟连接模块600(图6)截取的,并被传送到本地连接翻译组件602用于翻译。每个协议单元706、708、710、712都可以是一IP数据报、TCP数据报、UDP数据报等等。每个协议单元706、708、710、712与一源(从)IP地址和目的(到)IP地址相关联。可以将IP地址合并到协议单元,例如:在IP数据报的情况中,可以是协议单元语境的一部分,例如:从较低协议分析出的,从数据流中的先前协议单元分析出的,由较高协议层清楚指定的语境数据,或操作系统环境中一部分。
本地连接翻译组件602确定用于输出协议单元706的连接说明。对于输出协议单元706这对应于原始的连接说明IP1:IP2。本地连接翻译组件602接着执行一个对本地连接翻译表604(利用熟知的技术)的查询,以找到相应的当前连接说明,在这里该说明为当前连接说明IP1:IP3。本地连接翻译组件602用来自当前的连接说明IP1:IP3的数据替换协议单元706的IP地址及其任何其它连接说明关联,导致翻译的输出协议单元708。
同样,输入协议单元710是由虚拟连接模块截取的,且被传送至本地连接翻译模块602用于翻译。本地连接翻译模块602确定输入协议单元710是与当前的连接说明IP1:IP3相关联的,执行一个对本地连接翻译表604的查询以找到相应的原始连接说明IP1:IP2,并接着替换协议单元710的连接说明关联,以给出翻译的输入协议单元712,该单元随后被传递到较高的协议层。在本发明的一个实施中,较高协议层,特别是应用程序,看到与原始的连接说明相对应的连接说明信息,而较低协议层看到与当前的连接说明相对应的连接说明信息。
回到图6,在本发明的一个实施例中,因为本地对等者(即,本地连接翻译表604驻留处的对等者)移动或因为远程对等者移动,当前的连接说明可被更新。在本发明的一个实施例中,每个参与连接的对等者都有它自己的虚拟连接模块600,从而有它自己的本地连接翻译(LCT)表604。在本发明的一个实施例中,如果参与连接的对等者中的一个移动,相应的当前连接说明在每个参与的对等者上更新。虚拟连接模块600可以检测网络连接点中的本地变化,或由另一本地模块,如作出此变化的模块告知此改变。本地检测到的变化可首先导致本地LCT表604的更新。以下表格示出用于基于IP的网络的本地LCT表的一部分的示例更新。
表中示出的在示例更新中,一有效TCP/IP连接存在于带IP地址IP2的本地对等者和带IP地址IP1的远程对等者之间。在这个例子中,连接说明为一5元组,包括:本地对等者(开始时为IP2和端口2)的IP地址和端口号、IP地址和远程对等者的端口号(即,IP1和端口1),及较高层协议类型(即,TCP)。该本地对等者改变它的IP网络连接点,以使它的IP地址和端口号变为IP3和端口3。在变化之前,原始连接说明和当前连接说明相同,即5元组(IP2,端口2,IP1,端口1,TCP)。在变化之后,原始连接说明相同,但当前连接说明被更新成新的IP网络连接点,即,它现在是5元组(IP3,端口3,IP1,端口1,TCP)。
在本发明的一个实施例中,为了更新远程对等者上的有效连接表604,将本地网络连接点的变化通知本地连接管理组件606。本地连接管理组件606可用至少三个虚拟连接消息:连接更新(CU),连接更新确认(CUA)及连接更新请求(CUR)与远程连接管理组件通信。
连接更新消息可将变化了的连接说明信息从发生变化的对等者传送到参与通信连接的远程对等者。在本发明的一个实施例中,当对等者改变它的网络连接点时,该对等者将连接更新消息发送到与其具有有效连接的每个对等者。作为对连接更新消息的答复,可发送连接更新确认消息,以确认接收到连接更新消息。该连接更新确认消息可包括与连接更新消息相同的信息。可由一个对等者发送该连接更新请求消息,以从接收方连接更新消息(例如:当对等者被告知接收方改变了它的网络连接点时,但该接收方没有向对等者发送连接更新消息)。
图8描绘了具有虚拟连接模块的通信的对等者的例子,该虚拟连接模块在对等者之一改变了它的IP网络连接点时,交换虚拟连接消息以维持一基于IP的通信连接。在图8中,对等者A 802具有一个通过IP网络与对等者B 804的有效通信连接。对等者A 802 IP地址IP1上在被接到IP网络,对等者B 804开始时被接到IP地址IP2上的IP网络。在连接过程中,对等者B 804将它的IP网络连接点变到IP地址IP3。当对等者B 804移向对等者B 806(由虚线表示)该变化在图8中示出。
在移动后,对等者B 806如以上所述的对其本地LCT表进行更新,并接着向对等者A 802发送一个连接更新消息。在移动之后直到对等者A 802接收连接更新消息808,对等者A 802也许都不能与对等者B 806进行通信,因为对等者A 802不知道对等者B 806的新的IP网络连接点。连接更新消息808包括标识对等者B 806的新的网络连接点的信息,例如:新的IP地址IP3和一个新的端口号端口3。另外,连接更新消息808包括引用原始的连接的信息,例如:诸如原始IP地址IP2及端口号端口2之类的原始的连接标识符,原始的连接说明,或与原始连接相对应的连接权标。合适的连接权标可以,例如:是原始连接说明的加密散列,或是由通信对等者之一维持的连接计数。
在对等者A 802的虚拟连接模块接收到连接更新消息808时,连接管理组件(例如:图6的连接管理组件606)将该连接更新消息808分析,并确定了相应的连接说明。例如:连接更新消息808可包括原始的连接说明,或包括足够的信息,这样,就可以结合本地(到对等者A 802)语境重建原始的连接说明,或,如果该连接更新消息808包括原始的连接权标,则可以通过查找将连接权标与连接说明相关联的表(或类似的数据结构)来确定原始的连接说明。手上有了原始的连接说明,可以对在本地连接翻译表(例如:图6的本地连接翻译表604)中的相应的当前连接说明进行更新。下表示出对等者A 802上的更新的几个方面:
在对等者B 804移动之前,原始连接说明和当前连接说明都是5元组,即,对等者A 802的IP地址和端口号(即,IP1和端口1),对等者B 804的IP地址和端口号(即,IP2和端口2),及较高层协议类型(在这里是TCP)。在对等者B 804移动之后,对照对等者B的新的网络连接点更新当前连接说明(即,IP2,端口2变为IP3,端口3),这样,当前连接说明5元组就变为(IP1,端口1,IP3,端口3,TCP)。原始连接说明不受该移动的影响。
作为对连接更新消息808的答复,对等者A 802将一个连接更新确认消息810发送到对等者B 806。连接更新确认消息810可通知对等者B 806在对等者A 802上的连接更新操作是成功或是失败。在收到连接更新确认消息810之后,对等者A802和对等者B 806可再一次参与基于IP的通信。另外,在本发明的一个实施例中,在虚拟连接层以上的协议和应用层不知道对等者B 806的IP网络连接点的改变。
对等者B 806不仅向对等者A 802发送连接更新消息808,在图8中,对等者B 806还向虚拟连接预订通知服务(VC SNS)814发送一个连接更新消息812。以下对照图10描述根据本发明的一个实施例的虚拟连接预订通知服务。
图9描绘了用于图8的虚拟连接消息的示例次序。见图9,对等者B 806首先向虚拟连接预订通知服务(VC SNS)814发送一个连接更新消息812。同时(为了实际的目的),对等者B 806向对等者A 802发送一个连接更新消息808。作为答复,对等者A 802向对等者B 806发送一个连接更新确认消息810。连接更新消息808和连接更新确认消息810是适用于完成用于更新两对等者之间的通信连接的虚拟连接协议的虚拟连接消息对的例子。图8和图9中示出的例子是较简单的虚拟连接消息协议的例子中的一个。在此对它进行详细描述是为了与以下的例子进行比较。
在从图8所描绘地例子开始继续之前,描述在更新本地连接翻译表时可能发生的特殊例子将会是有益的。在对等者B从一网络连接点(IP2,端口2)移向另一网络连接点(IP3,端口3)之后,对等者B可放弃原始的网络连接点。被对等者放弃的网络连接点可被另一对等者要求,或重新分配给另一对等者,例如:IPv4网络服务供应者可通过将一IPv4地址分配给来自池的通信对等者,并接着在该对等者放弃或释放IPv4地址时将IPv4地址返回到用于重新分配的池来管理一IPv4地址池。如果对等者B移动之后,对等者C(图8中未示出)没有接到网络上,对等者C可占用对等者B放弃的网络连接点。当对等者A仍旧具有与对等者B的有效通信连接时,如果对等者C随后与对等者A建立一通信连接,就可能在本地连接翻译表中发生冲突。下表示出对等者A上的本地连接表的几个方面:
该表示出具有原始连接说明的第一本地连接翻译表项,包括:对等者A的网络连接点(IP1,端口1),对等者B的原始网络连接点(IP2,端口2)及较高层协议TCP。第一项的当前连接说明示出对等者B将它的网络连接点变到(IP3,端口3)。即,第一项对应于图8示出的情况。该表还示出一个具有被指定为从对等者A的网络连接点(IP1,端口1)到对等者C的原始网络连接点(IPc,端口c)的TCP/IP连接的原始连接的第二本地连接翻译表项。相应的当前连接说明是相同的。
如果IPc与IP2相同,且端口c与端口2相同,则在本地连接翻译表中的第一和第二项就可具有相同的原始连接说明,即,它们可能会冲突。在这个例子中,在接受连接之前,可以通过在本地将连接从对等者C重接到(IP1,端口A)来避免在对等者A上的冲突,其中端口A不同于端口1。类似的策略可适用于基于非IP的计算机网络。在当前连接说明方面,可能需要类似的冲突核查和动作,以确保原始连接说明和当前连接说明之间的一对一的关系。
可生成连接更新消息的恶意对等者也许能,对利用虚拟连接功能的对等者引起严重破坏。为了防止未经授权的连接更新,在本发明的一个实施例中,每个虚拟连接消息可包括一个加密的签字,将消息认证为从可信任的对等者发出的。为了对认证建立一个基础,合并了虚拟连接模块的对等者可,在建立通信连接时,交换一连串的虚拟连接消息。例如:对等者可利用椭圆曲线迪斐.海尔曼(Elliptic CurveDiffie-Hellman)公共密钥交换模式为加密认证建立一个基础。这个及其它这种适合的模式在本领域中是已知的,不必在此详述了。如想要的话,也可以将加密认证的基础用于消息加密。
例如:在建立通信连接时发送和接收的虚拟连接消息串(对等协议消息)可由图6的对等协议组件608处理。对等者与对等协商消息交换的附加信息可包括:对等者已知的对等者的网络连接点,特定对等者是否能够移动的指示,和特定对等者的处理能力的指示。对等者的网络连接点可用于确定该对等者是否如以下所述的位于网络地址翻译(NAT)之后。对等者的处理能力可,例如:影响由对等者选择的加密认证模式,以保证通信连接。
在本发明的一个实施例中,虚拟连接预订通知服务使通信对等者能:预订对等者网络连接点改变事件,发布网络连接点改变事件,和接收它们预订的,发布了的网络连接点改变事件的通知。预订通知服务(或发布预订服务)在本领域中是已知的,因此这里只对它们的部分细节进行描述。
在本发明的一个实施例中,当对等者改变它的网络连接点时,例如:当图8的对等者B从第一网络连接点(IP2,端口2)移动到第二网络连接点(IP3,端口3)时发生网络连接点改变事件。预订网络连接点改变事件可包括从预订对等者将一个预订消息发送到虚拟连接预订通知服务。预订消息可指定一个接有一对等者的特定网络连接点,例如:该预订对等者是有效地通信的。预订消息还可包括一通知地址,在该地址上虚拟连接预订通知服务可发送事件与预订相匹配的通知。发布网络连接点改变事件可包括发送一个来自对等者的发布消息,在该对等者处对虚拟连接预订通知服务发生的事件指定:一特定的对等者将它的网络连接点从第一(先前的或原始的)网络连接点变为第二(或当前的)网络连接点。连接更新消息是合适的发布消息的一个例子。
响应于发布的消息,虚拟连接预订通知服务可核查它的每一个预订并将通知消息发送到与发布的事件相匹配的预订的通知地址。该通知消息可包括移动了的对等者的当前网络连接点,使得例如:被通知的对等者可向移动的对等者发送连接更新请求消息。该通知消息可包括由移动了的对等者发布的连接更新消息的副本。在本发明的一个实施例中,如果预订指定发布事件的对等者从其移开的网络连接点,即,如果预订指定发布的对等者的先前的网络连接点,则预定匹配发布的网络连接点改变事件。在另选的实施例中,将网络连接点改变事件与网络连接点改变事件预订相匹配可包括下述的附加步骤和/或标准。
图10示出一根据本发明的实施例的示例模块的虚拟连接预订通知服务结构。该虚拟连接预订通知服务1000包括一个预订模块1002,它从对等者(例如:图8的对等者A 802和对等者B 804)接收并分析预订消息1004,然后将相应预订1006存储在预订数据库1008中。发布模块1010从对等者接收并分析发布的消息1012,并将分析的网络附着改变事件1014发送到匹配模块1016。匹配模块1016为了找到与每个网络连接点改变事件1014相匹配的预订而对预订数据库1008进行搜索,并向通知模块1020发送一个匹配的预订1018的列表。通知模块1020生成通知消息1022,并将其发送到列表1018中的匹配的预订的通知地址。
一个或多个虚拟连接预订通知服务成为合并了虚拟连接的计算机网络中的连接更新消息的唯一来源,是可能的。然而,在本发明的一个实施例中,可通过实施一个政策和将虚拟连接预订通知服务保持在不可能直接发送连接更新(直接连接更新)消息的状态来增强可伸缩性,所述政策使移动的对等者,在任何可能的时候,将连接更新消息直接发送到它的通信对等者。不可能进行直接连接更新的位置的例子包括当到一个通信连接的多方同时移动时,及当移动的对等者正在与网络地址翻译(NAT)后的对等物通信时。
图11延伸了图8描绘的例子,示出在到通信连接的多方同时移动时虚拟连接预订通知服务814所扮演的角色。对于图8,图11的对等者A 802具有一个通过IP网络与对等者B 804的有效通信连接。尽管未在图11中清楚地示出,对等者A 802和对等者B 804都预订了在它们互相改变各自的连接点。即,对等者A 802向虚拟连接预订通知服务814发送了一个预订消息,预订接在IP2(即,对等者B 804)上的对等者的网络连接点的改变,对等者B 804同样向虚拟连接预订通知服务814发送了一个预订消息,预订由连接在IP1(即,对等者A 802)上的对等者生成的网络连接点的改变事件。
还是对于图8,对等者804改变它的网络连接点,通过将连接更新消息812发送到虚拟连接预订通知服务814来发布网络连接点改变事件,并尝试通过向对等者A 802发送一个连接更新消息(图11中未示出)来直接更新它与对等者A 802的连接。然而,在图1中,在对等者A 802,(例如:在从对等者B 806接收连接更新消息之前)同时将它的IP网络连接点从IP地址IP1变为IP地址IP4,即,对等者A 802移到对等者A 1102。移动后,对等者A 1102根据本发明的一个实施例,通过向虚拟连接预订通知服务814发送一个连接更新消息1104,发布网络连接点改变事件,并接着尝试通过向对等者B 802发送一个连接更新消息来直接更新它与对等者B 802的连接(同样未在图11中示出)。
两个直接连接更新都没有成功,因为两个对等者(对等者A 802,对等者B 804)都移动了。对等者A 1102和对等者B 804也许不能在没有协助的情况下继续通信。在本发明的一个实施例中,虚拟连接预订通知服务814,通过检测两个对等者(对等者A 802,对等者B 804)的同时移动和向对等者中至少一个通知另一个已经移动了,来提供协助。虚拟连接预订通知服务814可确定,例如:如果每个对等者在可配置的时间段(例如:1秒)向虚拟连接预订通知服务814发布一个网络连接点改变事件,两个对等者已经同时移动了。
在图11示出的例子中,虚拟连接预订通知服务814接收连接更新消息1104和连接更新消息812的时间间隔太近,以至于还没有发生直接连接更新,并因此确定对等者A 802和对等者B 804同时移动。因此,虚拟连接预订通知服务814向对等者B 806发送一个通知消息1106,通知对等者B 806对等者A 802的网络连接点已经改变了。通知消息1106包括使对等者B 806能确定相应的原始连接说明及当前连接说明的信息,例如:对等者A 1102的原始IP地址IP1和当前IP地址IP4。
作为接收通知消息1106的结果,对等者B 806能确定对等者A 1102的当前网络连接点。为了更新对等者B 806和对等者A 1102之间的连接,对等者B 806向对等者A 1102发送一个连接更新(CU)消息,并根据本发明的一个实施例,对等者A 1102用一个连接更新确认(CUA)消息1110进行答复。在A和B上成功的本地连接翻译表更新之后,对等者A 1102和对等者B 806之间的通信连接更新了。
图12描绘用于图11的虚拟连接消息的示例次序。见图12,对等者B 806将连接更新消息812,而对等者A 1102将连接更新消息1104发送到虚拟连接预订通知服务814。更新消息812、1104在很短的时间间隔内到达虚拟连接预订通知服务814,这向虚拟连接预订通知服务814提醒了对等者A 1102和对等者B 806可能已同时移动。为了防止对等者A 1102、806不能进行通信,虚拟连接预订通知服务814向对等者B 806发出通知消息1106。连接更新消息当然可以同样的结果在连接更新消息812之前到达,且,在参照图11所述的例子的背景中,可将通知消息发送到对等者A 1102、对等者B 806或它们两个。
对等者B 806接收通知消息提示对等者B 806向对等者A 1102发送连接更新消息。响应于该连接更新消息1110,对等者A 1102向对等者B 806发送连接更新确认消息1110,结束该次序。
在没有NAT的计算机网络中,或当已知一对等者不在NAT之后时,通知消息1106可用作连接更新消息1108,且作为响应发送到对等者A 1102的连接更新确认1110可完成该连接更新,这样就使连接更新消息1108成为冗余。在具有NAT的计算机网络中,连接更新请求消息(在图12中未示出)如下所述将扮演一个有用的角色。
网址翻译(NAT)在本领域中是已知的,因此这里只对其某些特征进行描述。在一些计算机网络中,每个网络连接点都与一网址相关联,例如:在IP网络中,每个IP网络连接点可与一IP地址相关联。网址的尺寸通常是有限的,例如:在IPv4网络中,网址限于32位。网址组可被理解成地址空间。在具有限制尺寸的网址的网络中,网址可能变得缺乏,即,可能会想要比网址空间能支持的还要多的网络连接点。NAT提供了一种将新的地址空间接到(例如在现有地址空间中的一个单独的网址上)现有地址空间的方法。有关NAT机构的范例的细节,请见艾格王(Egevang)等人写的,在1994年5月在Internet Engineering Task Force上发表的The IP Network Address Translator(NAT),RFC 1631。
在本说明书中,现有地址空间被叫作公共地址空间,其中,例如:有参照图8讨论的例子,且通过NAT接到公共地址空间的地址空间称为专用地址空间。在专用地址空间内的对等者(即具有与专用网络地址相关的网络连接点),认为是相对于公共地址空间的对等者,是在NAT之后的(即,具有与公共网址相关联的网络连接点的对等者)。
在本发明的一个实施例中,合并了NAT的计算机网络中一个特征是:除非专用对等者首先与公共对等者联系,在公共地址空间中的对等者(公共对等者)可不与在专用地址空间中的对等者(专用对等者)通信。另外,NAT机构用它自己的网址标识一个对等者是惯例,因此移向具有新网址的新的网络连接点对NAT机构来说就好象是一个不同的对等者。如果是那样的话,则已移动的公共对等者就不能直接向专用对等者发送连接更新消息了。在本发明的一个实施例中,虚拟连接预订通知服务能有利于连接更新。
图13描绘了参照图8讨论的例子的变形,图8示出在合并了NAT的计算机网络中的虚拟连接预订通知服务814扮演的一个角色。在图13中,对等者A 1302具有一个通过基于IP的网络与对等者B 804的通信连接。如虚线所示,对等者A1302在NAT 1304之后。对等者A 1302有至少两个与它相关联的IP地址:它的IP地址IPA在NAT 1304之后的专用地址空间,且它的IP地址IPNAT在公共用地址空间。在图13所示的例子中,对等者A 1302不移动。对等者B 804开始位于IP地址IP2的公共地址空间,然后移到同样在公共地址空间的IP地址IP3。
对等者A 1302通过向虚拟连接预订通知服务814发送一个预订消息1306一来预订由对等者B 804发布的网络连接点改变事件。通过发送预订消息1306,专用对等者A 1302也建立了与虚拟连接预订通知服务814的通信连接,通过该通信连接,虚拟连接预订通知服务814可随后发送消息,例如:通知消息1308。在本发明的一个实施例中,对等者B 804可确定对等者A 1302是与专用网址相关联的。如果对等者B 804确定对等者A 1302与一专用网址相关联,则在本发明的一个实施例中,对等者B 804不预订在对等者A 1302的网络连接点的改变,因为对等者B 804会不能采取行为,即,根据专用网络连接点改变事件通知,向对等者A 1302发送一个连接更新消息。
在移向IP地址IP3之后,对等者B 806向虚拟连接预订通知服务814发布了一个连接更新消息812。如果对等者B 806尝试向对等者A 1302直接发送一个连接更新消息(图13中未示出),该尝试可能会失败,因为对等者A 1302没有事先与在它的新IP地址IP3上的对等者B 806联系。在本发明一个实施例中,在与对等者A 1302进一步通信之前,对等者B 806等待被对等者A 1302联系。作为接收连接更新消息812的结果,虚拟连接预订通知服务814搜索其预订数据库,并确定专用对等者A 1302已预订了在对等者B 804的网络连接点的改变。与对照图11所述的例子相反,已确定了对等者A 1302是一个专用对等者,虚拟连接预订通知服务814尽可能快地向对等者A 1302发送通知消息1308。通知消息1308提醒对等者A 1302向在对等者B 806的新的IP地址IP3上的对等者B 806发送一个连接更新请求消息1310。对等者A 1302首先联系对等者B 806,对等者B 806能用一个连接更新消息1312响应连接更新消息1310。当对等者A 1302接收到连接更新消息1312时,该虚拟连接连接更新协议完成。
图14描绘了参照图13所述的用于虚拟连接消息的示例次序。见图14,在对等者A 1302与对等者B 804建立通信连接不久之后,对等者A 1302向虚拟连接预订通知服务814发送预订由对等者B发布的网络连接点改变事件的预订消息1306。对等者B 804移向对等者B 806,并通过向虚拟连接预订通知服务814发送连接更新消息812来发布网络连接点改变事件。结果因为对等者A 1302是专用的(即,是一个专用对等者),虚拟连接预订通知服务814生成通知消息1308并立即将其发送至对等者A 1302。作为接收通知消息1308的结果,对等者A 1302向在对等者B 806的新IP地址IP3上的对等者B 806发送连接更新请求消息1310。对等者B 806响应于该请求发送连接更新消息1312。连接更新请求消息1310和连接更新消息1312是适用于完成用于在两个对等者之间更新通信连接的虚拟连接协议的虚拟连接消息对的一个例子。
图15将图13描绘的例子扩展到示出在到通信连接的几方同时移动且至少一方在NAT之后时,由虚拟连接预订通知服务814扮演的一个角色。对于图13,图15的专用对等者A 1302具有一个与对等者B 804的通信连接,且对等者A 1302预订由对等者B 804发布的网络连接点改变事件。对等者B 804将它的网络连接点从IP地址IP2变成IP地址IP3并移动后,对等者B 806用连接更新消息812向虚拟连接预订通知服务发布网络连接点改变。
在图15中,对等者A 1302也将它的网络连接点从专用IP地址IPA变为IP地址IPA’,即,在NAT1304之后的对等者A 1302移向NAT1504之后的对等者A 1502。NAT 1304可也NAT 1504相同或NAT 1504可以不同,即,IP地址IPA’可与IP地址IPA在同一专用地址空间,或IP地址IPA’可以在一个不同的专用地址空间,例如:一个由不同的组织管理的专用地址空间。移动后,专用对等者A 1502也许不能从虚拟连接预订通知服务814(位于公共地址空间)以及公共对等者814接收消息(例如:通知消息)。然而,对等者A 1502通过向虚拟连接预订通知服务814发送一个连接更新消息1506来发布它的网络连接点改变事件,并且这重建了穿越专用对等者A 1502(在它的新IP地址IPA’)及虚拟连接预订通知服务814之间的NAT1504的通信。
在此例子中,对等者B 806确定对等者A 1302是一个专用对等者,因此对等者B 806不尝试直接向对等者A 1302发送连接更新消息。移动后,对等者A 1502的确尝试向对等者B 804直接发送一个连接更新消息(图15中未示出),但对等者B 804也移动了,因此该尝试失败。对于参照图11描述的例子,来自虚拟连接预订通知服务814的通知消息能推进虚拟连接协议。不同于参照图11所述的例子,发送到对等者B 806的通知消息不会使对等者B 806能联系专用对等者A 1502,而是虚拟连接预订通知服务814向对等者A 1502发送一个通知消息1508向对等者A 1502通知对等者B 806的新的IP地址IP3。接着,专用对等者A 1502向对等者B 806发送一个连接更新消息1510,提醒及使对等者B 806能用一个连接更新确认消息1512进行答复。
图16描绘了用于图15的虚拟连接消息的示例次序。见图16,对等者B 806向虚拟连接预订通知服务814发送连接更新消息812。不久这后,对等者A 1502向虚拟连接预订通知服务814发送连接更新消息1506。响应于在短时间间隔内接收连接更新消息812、1506,虚拟连接预订通知服务814向对等者A 1502发送通知消息1508。响应于通知消息1508,对等者A 1502向对等者B 806发送连接更新消息1510。该连接更新消息1510导致由对等者B 806向对等者A 1502发送连接更新确认消息1512。
以上参照多种示例情况描述了虚拟连接协议的几个方面,接下来将描述根据本发明的一个实施例,在发送虚拟连接协议消息时,由虚拟连接协议参与者使用的示例决策过程。
图17描述了作为本地网络连接点(NAP)改变事件的结果由例如:连接管理组件606(图6的),执行的示例步骤。在步骤1702,连接管理组件606检测到已经发生了本地网络连接点改变事件(或接到该事件的通知)。结果,在步骤1704,通过将连接更新消息发送到服务,将该事件发布给虚拟连接预订通知服务。在步骤1706,连接管理组件606在本地连接翻译表604中选择下一个项,或,如果之前没有选择过的话选择第一项。在步骤1708,更新选择本地连接翻译表604项,以使当前的连接说明与新的本地网络连接点相符。
为了引起在远程对等者上的相应LCT表604的更新,过程进到步骤1710,在该步骤确定了该远程对等者是在公共地址空间或是在专用地址空间。如果确定该远程对等者是公共的,则过程进到步骤1712。在步骤1712,一个连接更新消息被发送到远程对等者。如果确定该远程对等者是专用的,则连接管理组件606依靠虚拟连接预订通知服务将网络连接点改变事件通知远程对等者,且过程进到步骤1714。在步骤1714,过程核查是否选择了本地连接翻译表604中的每个项。如果没有,过程返回到步骤1706去选择下一个项,否则该示例过程结束。
图18描述了作为发布的网络连接点改变事件的结果由,例如:虚拟连接预订通知服务1000(图10的)的匹配模块1016,执行的示例过程。在步骤1802,匹配模块1016为一特定的对等者(在这个例子中是具有初始IP地址IP2的以上例子(例如:参照图8所述的例子)的对等者B 804)接收网络连接点改变事件。在步骤1804,匹配模块1016在预订数据库1008选择下一个候选预订。在这个例子中,候选预订是对由从IP地址IP2移动的对等者(例如:对等者B 804)发布的网络连接点改变事件的预订。如果事先没有选择候选预订,则选择第一候选预订。如果没有候选预订,则可退出该过程。
在步骤1806确定放置预订的对等者(订户)是公共的或是专用的。以下参照图19描述一个用于确定对等者是公共的或是专用的示例决策过程。如果预订对等者是专用的,则发布网络连接点改变事件的对等者依靠虚拟连接预订通知服务来将该事件通知专用对等者,且过程进到步骤1808。在步骤1808,将网络连接点改变事件通知订户。另选地,在步骤1808,可将订户加到要通知的对等者名单,例如:通过通知模块1020。
如果预订对等者是公共的,则发布网络连接点改变事件的对等者(发布者)也许能将一个连接更新消息直接发送到订户,而不需要虚拟连接预订通知服务的帮助,除非,例如:该订户也同时改变它的网络连接点。为了检测订户的这一同时移动,过程进到步骤1810。在步骤1810,过程等待订户也发布一个网络连接点改变事件,一直到最大时间段,在这一例子中,最大时间段为1秒。若在过程进行到步骤1810时,订户已经发布一网络连接点改变事件,则该过程不花费时间在步骤1810空等。
在步骤1810之后,过程进到步骤1812,在该步骤确定订户在发布者会向订户发出连接更新消息之前是否已经移动了,即,在最大时间段届满前,订户是否也已发布了一个网络连接点改变事件。如果确定订户“同时”移动,则过程进到步骤1808,以将发布者的移动通知订户。否则,虚拟连接预订通知服务假定发布者能直接向订户发送一个连接更新消息。该过程跳过步骤1808,并进到步骤1814。虽然可使用执行的多线程和其它平行处理技术以有利于整个发明的实施例,用虚线围住步骤1810和步骤1812以表明这些步骤是用于平行处理或等同技术(例如:一个周期性地核查的观察表)的好的候选,以减少后选的预订者处理循环的延迟。
如果候选订户是专用的且通知尝试失败了,对于参照图15所述的例子,专用订户及发布者可能已经移动了。在那个例子中,在检测到通知失败时,该过程可进到步骤1810,以等待由专用订户发出的网络连接点改变事件发布。用于专用订户的最大步骤1810最大等待时间段可与用于公共订户的最大等待时间段不同。
在步骤1814,过程核查更多个候选订户。如果有更多的候选订户,则过程为了下一个订户返回到步骤1804。否则,该过程可退出。
在本发明的一个实施例中,一些行为是由通讯对等者是公共的还是专用的决定的。如上所述,可有至少两个与专用对等者相关联的网址:NAT服务的公共网址,和由NAT服务建立的专用地址空间中的对等者的网址。专用对等者可以向另一对等者清楚地在一个虚拟连接消息中标记它的专用身份。另选地,每个对等者可以在一个或多个它发送的虚拟连接消息中包含它的网址。接着,其它接收消息的对等者可将包含的网址与为消息的显然的源地址的网址相比较。如果包含的网址与显然的源地址匹配,则可确定对等者为公共的。如果包含的网址与显然的源地址不匹配,则可确定发送的对等者为专用的。
图19描绘了可由虚拟连接预订通知服务1000(图10的)执行,以确定预订是与公共对等者或是专用对等者相关联,的示例步骤。在步骤1902,虚拟连接预订通知服务通过TCP/IP网络从一对等者接收预订消息在步骤1904,预订消息的显然的源是通过分析消息“信封”确定的,例如:消息的IP标题。另选地,消息的显然的源可通过查询与发送的对等者建立的通信连接的属性来取得。在步骤1906,分析预订消息的内容。在本发明的一个实施例中,当该网址对预订对等者为已知时,网络连接点改变事件预订消息包括预订的对等者的网址(在这此例中为IP地址)。
在步骤1908,将预订消息的显然的源与预订消息中包含的网址相比较。如果预订消息的显然的源与预订消息中包含的网址相匹配,则过程进到步骤1910。否则,过程进到步骤1912。在步骤1910,确定预订与一公共对等者相关联。在步骤1912,确定预订与一专用对等者相关联。这一确定可在虚拟连接预订通知服务1000的不同模块中重复发生,或仅发生一次,例如:在预订模块1002中,且随后将预订存储在标记成公共的或专用的预订数据库1008中。
可将虚拟连接消息合并到较低层网络协议中。例如:可通过使用因特网协议的IP选项特征将虚拟连接消息添加到IP数据报。有关因特网协议的IP选项特征细节,请见:南加州大学信息科学学院,J.波斯特尔(J.Postel)于1981年9月出的“因特网协议”(Internet Protocol),RFC 791。当使用一个或多个,例如:IP选项,将虚拟连接消息合并到一较低层协议数据报时,附加的选项可称为虚拟连接选项(VC选项)。虽然,通常将运载输出的虚拟连接消息的虚拟连接选项合并到由较高协议层生成的输出协议单元,当等待下一个较高层协议单元会是不起作用和/或无效时,虚拟连接层可生成它自己的,例如:合并了虚拟连接选项的“空”IP数据包。
可以通过使用传输控制协议的TCP选项特征将虚拟连接选项加到一个TCP数据报。有关传输控制协议的TCP选项特征请见:南加州大学信息科学学院,J.波斯特尔(J.Postel)于1981年9月出的“传输控制协议”(Transmission controlprotocol),RFC 793。不直接地支持数据报选项的较低层协议及可以通过将虚拟连接选项添加到较低层协议数据报来合并虚拟连接选项。图20描绘了一个用于将虚拟连接选项添加到UDP数据报的示例方案。
在图20中,一个或多个虚拟连接选项2002被添加到将会通过IP网络发送的UDP数据报中。该UDP数据报包括一个UDP标题2004和一个UDP主体2006。该UDP标题包括一个UDP数据长度字段(LengthUDP),它表示包括在UDP主体2006在内的UDP数据报的长度。有关用户数据报协议的细节,请见:南加州大学信息科学学院,J.波斯特尔(J.Postel)于1980年8月发表的“用户数据报协议”(Userdatagram protocol),RFC 768。该UDP数据报从一个IP标题2008开始,这样就能通过IP网络发送它了。UDP数据报和虚拟连接选项2002在这个例子中是IP数据报的主体。该IP标题2008包括一个IP标题长度数据字段(LengthIP Header),它表示在IP标题2008中的字节数,及一个IP总数据长度字段(LengthIP),它表示IP数据报(标题2008和主体2004、2006、2002)中的字节数。可以按以下计算虚拟连接选项2002(LengthVC Options)的长度:
LengthVC Options=LengthIP-LengthIP Header-LengthUDP
即,可以将IP数据报的总字节数减去IP标题2008中的字节数再减去UDP数据报中的字节数来计算一个或多个虚拟连接选项2002的字节数(octets)。
可以使用类似的方案将虚拟连接选项添加到其它较低层协议数据报。然而,没有合并虚拟连接模块(例如:图6的虚拟连接模块600)的对等者不能适当地解释这种添加的数据。为了测试远程对等者是否合并了虚拟连接模块,可将一个或多个虚拟连接选项,例如:一个特定的虚拟连接探测选项,合并到发送至远程对等者的第一网络协议数据报中。如果答复包括一个或多个相应的虚拟连接选项,则可以将远程对等者标记为VC增强,即,标记为能适合参与虚拟连接协议。
图21示出由,例如:虚拟连接模块600的对等者协商组件608(图6的)执行的示例步骤,以确定远程对等者是否支持虚拟连接操作。在步骤2102,将具有SYN标记组及合并了虚拟连接探测选项的初始TCP数据报发送到远程对等者。在步骤2104,接收到一个对初始TCP数据报答复,例如:一个具有SYN和ACK标记组,或具有RST标记组的TCP数据报。在步骤2106,将答复分析用于虚拟连接探测选项。在步骤2108,确定答复是否合并了虚拟连接探测选项。如果该答复的确合并了虚拟连接探测选项,则过程时到步骤2110,在该步骤将远程对等者标记为VC增强。否则,过程进到步骤2112,该远程对等者被标记成非VC增强,且没有进一步的虚拟连接消息被发送到该远程对等者。上述虚拟连接功能不可以用于这个案例。
包括在这里引用的发布、专利申请和专利在内的所有参考文献都因此通过索引被相同程度地合并,好象每个参考文献都是单独地和说明地指示通过索引合并,且在这里它的整体列出。
在描述本发明的文本中(特别是在以下的权利要求书的文本中)用的词“一个”及“一”及“该”及类似指示物都应理解成覆盖了单数和复数,除非这里另有指示,且明显与上下文相矛盾。词“包含”及“包括”及“具有”及都应理解成开放式的术语(即,意思是“包括,但不限于”),除非另外注明。这里引用的值的范围仅仅是为了用作单个引用每个落在范围内的分开的值的简写方式,且每个分开的值都被合并到说明中去,好象它是在这里被单独引用的。这里所述的所有方法都能以任何合适的次序执行,除非在这里另有指示或明显与上下文相矛盾。使用任何及所有例子,或这里提供的示例语言(例如:“例如”),仅仅是为了更好地说明本发明,而不是对本发明的范围的限定,除非另有要求。说明书的语言都不应理解成表示对本发明的实施很重要的任何未要求保护的元件。
这里描述了本发明的优选实施例,包括发明人已知用于实施本发明的最佳模式。那些优选实施例的变形在本领域的技术人员阅读了上述说明后可以变得非常明显。发明人预计技术人员能合适地运用这些变形,且发明人想要让本发明可以用这里具体描述的以外的方式实施。因此,本发明包括所有可应用法律允许的在所附权利要求中引用的主题的修改及对等者。另外,本发明包括在所有可能的变化中的上述元件的任何组合,除非在这里另有指示或明显与上下文相矛盾。