具体实施方式
在继续描述本发明的各种实施例之前,现在提供在其中可以实践本发明的各种实施例的计算机和网络环境的描述。尽管并非所需,本发明将在计算机可执行指令的一般语境下描述,计算机可执行指令如程序模块,由计算机执行。一般而言,程序包括例程、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。这里使用的术语“程序”可能意味着单个程序模块或共同行动的多个程序模块。这里使用的术语“计算机”和“计算设备”包括电子地执行一个或多个程序的任一设备,如个人计算机(PC)、手持式设备、多处理器系统、基于微处理器的可编程消费者电子产品、网络PC、小型机、平板PC、膝上计算机、具有微处理器或微控制器的消费者器具、路由器、网关、网络集线器等等。本发明也可以在分布式计算环境中使用,其中,任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序可以位于本地或远程存储器存储设备中。
参考图1描述了适用于包含本发明的各方面的计算机网络环境的示例。示例计算机网络环境包括通过由云标识的网络104相互通信的若干计算机102。网络104可包括许多众所周知的组件,如路由器、网关、网络集线器等等,并允许计算机102通过有线和/或无线媒质进行通信。当通过网络104彼此交互时,计算机102的一个或多个可能对于另一计算机102担当客户机、服务器或对等体的角色。因此,本发明的各种实施例可以在客户机、服务器、对等体或其组合上实践,即使这里所包含的具体示例可能未涉及所有这些类型的计算机。
参考图2,示出了可以在其中实现这里描述的本发明的各方面的计算机102的基本构造的一个示例。在其最基本的构造中,计算机102通常包括至少一个处理单元202和存储器204。处理单元202依照本发明的各种实施例执行指令来完成任务。在完成这类任务时,处理单元202可能向计算机102的其它部件发送电子信号,并向计算机102之外的设备发送该信号来得到同一结果。根据计算机102的确切构造和类型,存储器204可以是易失(如RAM)、非易失(如RAM或闪存)或两者的某一组合。该最基本的构造在图2中以虚线框206说明。
计算机102也可以具有另外的特点/功能。例如,计算机102也可以包括另外的存储(可移动208和/或不可移动210),包括但不限于,磁盘或光盘或带。计算机存储媒质包括易失和非易失、可移动和不可移动媒质,以用于储存信息的任一方法和技术实现,信息包括计算机可执行指令、数据结构、程序模块或其它数据。计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备或可用来储存所期望的信息并可由计算机102访问的任一其它媒质。任一这类计算机存储媒质可以是计算机102的一部分。
计算机102最好也包含通信连接212,允许设备与诸如(多个)远程计算机214的其它设备进行通信。通信连接是通信媒质的一个示例。通信媒质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送媒质。作为示例而非局限,术语“通信媒质”包括无线媒质,如声学、RF、红外和其它无线媒质。这里使用的术语“计算机可读媒质”包括计算机存储媒质和通信媒质。
计算机102也可以具有输入设备216,如键盘/键区、鼠标、输入笔、语音输入设备、触摸输入设备等等。也可包括输出设备218,如显示器、扬声器、打印机等等。所有这些设备在本领域中是众所周知的,并且不需要在这里详细描述。
在以下的描述中,将参考由一个或多个计算设备执行的行动和操作的符号表示来描述本发明,除非另外指明。因此,应当理解,这类行动和操作有时也被称为计算机执行,包括计算机的处理单元对以结构化形式表示数据的电信号的操作。这一操作转换了数据或在计算机的存储器系统中的位置上维护了数据,以本领域的技术人员较好地理解的方式重新构造或相反改变了计算机的操作。维护数据的数据结构是存储器的物理位置,具有由数据的格式所定义的特定属性。然而,尽管本发明在上述上下文中描述,并不意味着限制,如本领域的技术人员所理解的,也可以以硬件实现以后所描述的各种行动和操作。
在本发明的一个实施例中,用于建立并维护计算机网络中的通信连接的协议可以由多个协议层实现,例如,对应于由国际标准化组织(ISO)的开放系统互连(OSI)模型所描述的层。对于OSI模型的细节,见Zimmerman的“OSI参考模型-用于开放系统互连的体系结构的ISO模型(OSI Reference Model-The ISO Model of Architecture for Open System Interconnection)”,IEEE通信学报,1980年4月。在本发明的一个实施例中,将虚拟连接(VC)层添加到协议或结合进现有协议层中。后文中,参考因特网协议(IP)和基于IP的协议来描述示例,然而,本发明的实施例不限于此,并且可以将示例一般化为具有无国家路由的任一网络协议。
图3所示是用于将虚拟连接层添加到现有的网络层的示例模式。虚拟连接层302驻留在一个或多个较低网络层304和一个或多个较高网络层306之间。较低网络层304的示例包括确定物理媒体中的信号的格式化的物理层以及控制多个计算机(如,图1的计算机102)对共享物理通信媒体的访问的媒体访问控制(MAC)层。较高网络层306的示例包括实施基于用户的验证相关政策的会话层以及将数据从常见网络传输格式转换到特定应用格式的表示层。
应用层308通过与较高网络层306的交互使用网络服务。较高网络层306与虚拟连接层302交互,并且虚拟连接层302与较低网络层304交互。较低网络层304的至少一个与物理传输媒体交互。在本发明的一个实施例中,虚拟连接层通过令应用层308通过该连接的原始认证信息来参考连接将通信连接(如图2的通信连接212)虚拟化,即使该连接的一方改变其网络挂连点。
图4和图5说明了依照本发明的一个实施例将另外的虚拟连接层结合进分层TCP/IP实现的两个示例。在图4中,较低网络层包括提供到网络硬件404的接口的设备驱动器402以及与较高网络层不相关地实现因特网协议功能的IP层406。较高网络层包括实现TCP/IP的传输控制方面的TCP层408和由应用412用来访问计算机网络服务的网络套接字应用编程接口(API)410。在图4中,虚拟连接层414位于TCP层408和IP层406之间,允许在数据被IP层406看见之前截听输出数据(即,要发送的数据),也允许在IP层406完成关于因特网协议功能的数据处理之后截听输入数据(即,接收的数据)。
在一些常规TCP/IP实现中,例如,IP层和TCP层被实现为单个数据处理模块来增强性能。当在这一情况下,例如,在图5所示的替换位置添加虚拟连接层502可能是有利的,使能够将对现有实现的修改最小化。将对现有实现的修改最小化可以减少由新模块引入的错误数,因此获得更稳定的系统后修改(post-modification)。在图5中,虚拟连接层502位于融合的TCP/IP层504和设备驱动器402(即,与图4的设备驱动器402相同的设备驱动器)之间。输出数据在由TCP/IP层504处理之后由虚拟连接层502截听。输入数据在传递到TCP/IP层504之前由虚拟连接层502截听。
图6描述了依照本发明的一个实施例适用于实现虚拟连接层服务的虚拟连接模块的一个示例。虚拟连接模块600包括一本地连接转化(LCT)组件602,被配置来基于本地连接转化表604中的信息转化通信连接。连接管理组件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端口。在本发明的一个实施例中,如果没有一个参与活动通信连接的对等体改变其网络挂连点,则相应条目的当前连接说明与原始连接说明相同。然而,如果对等体的一个或多个的确移动(即,的确改变其网络挂连点),则更新当前连接说明。在本发明的一个实施例中,在通信连接的整个生命周期中,原始连接说明保持不变。
下表是支持诸如TCP和UDP的较高层协议的基于IP的计算机网络的连接说明的一个示例。
名称 |
类型 |
本地IP地址 |
IPv4或IPv6地址 |
本地端口 |
16位端口号 |
远程IP地址 |
IPv4或IPv6地址 |
远程端口 |
16位端口号 |
较高层协议类型 |
协议类型枚举 |
该表包括标识本地对等体的IP网络挂连点的本地IP地址和标识本地对等体上的较高层协议端口的本地端口号。本地对等体可以参与多个通信连接。每一通信连接可与一个端口号关联。类似地,该表还包括远程IP地址和远程端口号。较高层协议类型指示由IP网络路由的较高层协议的类型,如TCP或UDP。在本发明的一个实施例中,较高层协议类型以及本地和远程端口号说明了通信连接。
虚拟连接模块602可以截听输出数据流中每一输出网络协议单元(如,IP数据报)以及输入数据流中每一输入网络协议单元。在本发明的一个实施例中,对于虚拟连接模块602截听的每一输出网络协议单元,本地连接转化组件602将与输出网络协议单元关联的连接说明从原始连接说明转化为当前连接说明。此外,对于虚拟连接模块602截听的每一输入网络协议单元,本地连接转化组件602将与输入网络协议单元关联的连接说明从当前连接说明转化为原始连接说明。图7说明了用于基于IP的网络的一个示例转化操作。
在图7中,本地连接转化表604包括原始连接说明702以及当前连接说明704。原始连接说明的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截听,并提交到本地连接转化组件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用于转化。本地连接转化模块确定输入协议单元710与当前连接说明IP1:IP3相关联,执行本地连接转化表604的查找来找出相应的原始连接说明IP1:IP2,然后替换协议单元710的连接说明关联,并给予转化的输入协议单元712,然后将其传递到较高协议层。在本发明的一个实施例中,较高协议层尤其是应用,看见与原始连接说明相应的连接说明信息,而较低协议层看见与当前连接说明相应的连接说明信息。
返回到图6,在本发明的一个实施例中,可以更新当前连接说明,因为本地对等体(即,本地连接转化表604所驻留的对等体)移动,或因为远程对等体移动。在本发明的一个实施例中,每一参与连接的对等体具有其自己的虚拟连接模块600,并因此具有其自己的本地连接转化(LCT)表604。在本发明的一个实施例中,如果参与连接的对等体之一移动,在每一参与的对等体上更新相应的当前连接说明。虚拟连接模块600能够检测网络挂连点中的本地变化,或可以由另一本地模块,如起动变化的本地模块向其通知本地变化。本地检测的变化将首先导致更新本地LCT表604。下表示出了对基于IP的网络的本地LCT表的部分的示例更新。
在如表所示的示例更新中,在具有IP地址IP2的本地对等体和具有IP地址IP1的远程对等体之间存在活动TCP/IP连接。在本示例中,连接说明是5元组,包括本地对等体的IP地址和端口号(即,IP2和port2)、远程对等体的IP地址和端口号(即IP1和port1)以及较高层协议类型(即,TCP)。本地对等体改变其IP网络挂连点,因此其IP地址和端口号变为IP3和port3。在改变之前,原始连接说明和当前连接说明相同,即,为5元组(IP2、port2、IP1、port1、TCP)。在改变之后,原始连接说明不变,而使用新的IP网络挂连点更新当前连接说明,即,现在为5元组(IP3、port3、IP1、port1、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。这一改变在图8中示意地示出为对等体B 804移动到对等体B 806(由虚线箭头指示)。
在移动之后,对等体B 806如上所述地更新其本地LCT表,然后向对等体A 802发送连接更新消息808。在移动之后且对等体A 802接收连接更新消息808之前,对等体A 802可能无法与对等体B 806通信,因为对等体A 802不知道对等体B 806的新IP网络挂连点。连接更新消息808包括标识对等体B 806的新网络挂连点,如新IP地址IP3和新端口号port3的的信息。另外,连接更新消息808包括引用原始连接的信息,例如,诸如原始IP地址IP2和端口号port2的原始连接标识符、原始连接说明或与原始连接相应的连接令牌。例如,合适的令牌可以是原始连接说明的密码散列或由通信对等体之一维护的连接计数。
在对等体A 802的虚拟连接模块接收连接更新消息808之后,连接管理组件(如,图6的连接管理组件606)分析连接更新消息,并确定相应的原始连接说明。例如,连接更新消息808可能包含原始连接说明,或包含足够的信息使能够组合本地(对对等体A 802)上下文来重建原始连接说明,或者,如果连接更新消息808包含原始连接令牌,则可以通过执行对将连接令牌与连接说明关联的表(或类似的数据结构)的查找来确定原始连接说明。当掌握了原始连接说明之后,可以更新本地连接转化表(如,图6的本地连接转化表604)中相应的当前连接说明。下表说明了在对等体A 802上更新的各方面。
在对等体B 804移动之前,原始连接说明和当前连接说明都为5元组,即,对等体A 802的IP地址和端口号(即,IP1和port1)、对等体B 804的IP地址和端口号(即,IP2和port2)以及较高层协议类型,本情况中为TCP。当对等体B 804移动之后,对于对等体B的新网络挂连点更新当前连接说明(即,IP2和port2变为IP3和port3),因此当前连接说明变为5元组(IP1、port1、IP3、port3、TCP)。原始连接说明不受移动的影响。
作为对连接更新消息808的回复,对等体A 802向对等体B 806发送连接更新确认消息810。连接更新确认消息810可以通知对等体B 806在对等体A802的连接更新操作成功或其它。接收连接更新确认消息810之后,对等体A 802和对等体B 806可以再一次参加基于IP的通信。另外,在本发明的一个实施例中,虚拟连接层上的协议和应用层不知道对等体B 806的IP网络挂连点改变。
在图8中,除对等体B 806向对等体A 802发送的连接更新消息808之外,对等体B 806也向虚拟连接预订-通知服务(VC SNS)814发送连接更新消息812。依照本发明的一个实施例的虚拟连接预订-通知服务在下文参考图10描述。
图9描述了用于图8的虚拟连接消息的示例顺序。参考图9,对等体B 806首先向虚拟连接预订-通知服务814发送连接更新消息812。同时(为实用目的),对等体B 806向对等体A 802发送连接更新消息808。作为答复,对等体A 802向对等体B 806发送连接更新确认消息810。连接更新消息808和连接更新确认消息810是适用于完成虚拟连接协议来更新两对等体之间的通信连接的虚拟连接消息对的一个示例。图8和图9所示的示例是较不复杂虚拟连接消息协议示例的其中之一。这里详细描述了这一示例来与下文的示例相比较。
在从图8所示的示例继续移动之前,描述当更新本地连接转化表时可能产生的一个特殊情况是有益的。在对等体B从一个网络挂连点(IP2,port2)移动到另一网络挂连点(IP3,port3)之后,对等体B可能放弃原始网络挂连点。由一个对等体放弃的网络挂连点可能由另一对等体要求或重新分配给另一对等体,例如,IPv4网络服务提供者可能通过从存储池向通信对等体分配一IPv4地址,然后当对等体放弃或释放该IPv4地址时将该IPv4地址返回给存储池用于重新分配来管理IPv4地址的存储池。如果对等体C(图8未示出)在对等体B移动之后挂连到网络,则对等体C可能占用对等体B所放弃的网络挂连点。如果对等体C然后建立与对等体A的通信连接,而对等体A仍具有与对等体B的活动通信连接,则在本地连接转化表中出现冲突。下表说明了对等体A上的本地连接转化表的各方面。
该表示出了具有原始连接说明的第一本地连接转化表条目,包括对等体A的网络挂连点(IP1,port1)、对等体B的原始网络挂连点(IP2,port2)以及较高层协议TCP。第一条目的当前连接说明示出对等体B将其网络挂连点改变为(IP3,port3)。即,第一条目对应于图8所示的情形。该表也示出了具有指定为从对等体A的网络挂连点(IP1,port1)到对等体C的网络挂连点(IPC,portC)的TCP/IP连接的原始连接的第二本地连接转化表条目。相应的当前连接说明相同。
如果IPC与IP2相同,且portC与port2相同,则本地连接转化表中的第一和第二条目可能具有相同的原始连接说明,即,它们可能冲突。在本示例中,可以通过在接受连接之前本地地重新挂连从对等体C到(IP1,portA)的连接以在对等体A上避免冲突,其中,portA不同于port1。类似的策略可用于非基于IP的计算机网络。对于当前连接说明也可能需要类似的冲突检查和行动来确保原始连接说明和当前连接说明之间的一对一关系。
能够生成连接更新消息的恶意对等体可能导致对使用虚拟连接功能的对等体的重大破坏。为防止未授权的连接更新,在本发明的一个实施例中,每一虚拟连接消息可包括一加密签名,验证该消息是来自可信的对等体。为建立验证的基准,结合虚拟连接模块的对等体可在建立通信连接时交换一系列虚拟连接消息。例如,对等体可使用迪福-海尔曼椭圆曲线(Elliptic Curve Diffie-Hellman)公共密钥交换模式来建立用于加密验证的基准。这一和其它这类合适的模式在本领域中是已知的,并且不需要在这里详细说明。如需要,用于加密验证的基准也能够用于消息加密。
例如,当建立通信连接时发送和接受的一系列虚拟连接消息(对等体协商消息)可以由图6的对等体协商组件608处理。对等体采用对等体协商消息所交换的另外的信息可包括:对等体所知的对等体的网络挂连点、特定对等体是否能够移动的指示以及特定对等体的处理能力的指示。对等体的网络挂连点可用来确定对等体是否位于下文所述的网络地址解析(NAT)之后。例如,对等体的处理能力可影响对等体所选择的保护通信连接的加密验证模式。
在本发明的一个实施例中,虚拟连接预订-通知服务允许通信对等体:预订对等体网络挂连点改变事件、发布网络挂连点改变事件以及接受它们所预订的所发布的网络挂连点改变事件的通知。预订-通知服务(或发布-预订服务)在本领域中是已知的,因此这里仅描述其某些细节。
在本发明的一个实施例中,当对等体改变其网络挂连点时,出现网络挂连点改变事件,例如,当图8的对等体B从第一网络挂连点(IP2,port2)移动到第二网络挂连点(IP3,port3)时。预订网络挂连点改变事件可包括从预订对等体向虚拟连接预订-通知服务发送预订消息。预订消息可指定挂连例如预订对等体正在与其活动通信的对等体的特定网络挂连点。预订消息也可包括在其中虚拟连接预订-通知服务可发送匹配预订的事件的通知的通知地址。发布网络挂连点改变事件可包括从事件出现的对等体向指定特定对等体已将其网络挂连点从第一(前一或原始)网络挂连点改变到第二(或当前)网络挂连点的虚拟连接预订一通知服务发送发布消息。连接更新消息是合适的发布消息的一个示例。
作为对发布消息的响应,虚拟连接预订-通知服务可能检查其每一预订并向匹配该发布的事件的预订的通知地址发送通知消息。通知消息可包括移动的对等体的当前网络挂连点,使例如被通知的对等体可以向移动的对等体发送连接更新请求消息。通知消息可包括由移动的对等体发布的连接更新消息的一个副本。在本发明的一个实施例中,如果预订指定了发布该事件的对等体从其移动的网络挂连点,即,如果预订指定了发布对等体的前一网络挂连点,则预订匹配发布的网络挂连点改变事件。在一个替代实施例中,将网络挂连点改变事件与网络挂连点改变事件预订匹配可包括下文描述的另外的步骤和/或标准。
图10所示是依照本发明的一个实施例的一个示例模块化虚拟连接预订-通知服务体系结构。虚拟连接预订-通知服务1000包括预订模块1002,接受并分析来自对等体(如图8的对等体A 802和对等体B 804)的预订消息1004,然后将相应的预订1006储存在预订数据库1008中。发布模块1010接受并分析来自对等体的发布消息1012,并向匹配模块1016提交分析的网络挂连改变事件1014。匹配模块1016搜索预订数据库1008以找出匹配每一网络挂连点改变事件1014的预订,并向通知模块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而言,对等体B 804改变其网络挂连点,通过向虚拟连接预订-通知服务814发送连接更新消息812来发布网络挂连点改变事件,并试图通过向对等体A 802发送连接更新消息(图11中未示出)来直接更新其与对等体A802的连接。然而,在图11中,对等体A 802同时(例如,在对等体A 802从对等体B 806接收连接更新通知之前)将其IP网络挂连点从IP地址IP1改变为IP地址IP4,即,对等体A 802移动到对等体A 1102。依照本发明的一个实施例,在移动之后,对等体A 1102通过向虚拟连接预订-通知服务814发送连接更新消息1104来发布网络挂连点改变事件,并然后试图通过向对等体B 802发送网络更新消息(同样在图11中未示出)来直接更新其与对等体B 802的连接。
以上两个直接连接更新都不成功,因为两个对等体(对等体A 802和对等体B 804)都移动了。对等体A 1102和对等体B 806在没有帮助的情况下可能无法继续通信。在本发明的一个实施例中,虚拟连接预订-通知服务814通过检测两个对等体(对等体A 802和对等体B 804)的同时移动,并通知至少一个对等体另一对等体已移动,来提供帮助。例如,如果在可配置的时间段(如,1秒)内每一对等体向虚拟连接预订-通知服务814发布网络挂连点改变事件,则虚拟连接预订-通知服务814可以确定两个对等体同时移动。
在图11所示的示例中,虚拟连接预订-通知服务814接收在时间上太接近的连接更新消息1104和连接更新消息812,以至于无法出现直接连接更新,因此确定对等体A 802和对等体B 804同时移动。其结果是,虚拟连接预订-通知服务814向对等体B 806发送通知消息1106,通知对等体B 806对等体A802的网络挂连点已改变。该通知消息1106包括使对等体B 806能够确定相应的原始连接说明和当前连接说明的信息,如对等体A 1102的原始IP地址IP1和当前IP地址IP4。
作为接收通知消息1106的结果,对等体B 806能够确定对等体A 1102的当前网络挂连点。为更新对等体B 806和对等体A 1102之间的连接,对等体B806向对等体A 1102发送连接更新(CU)消息1108,并依照本发明的一个实施例,对等体A 1102使用连接更新确认(CUA)消息1110回复。在A和B上成功地更新了本地连接转化表之后,对等体A 1102和对等体B 806之间的通信连接被更新。
图12描述了用于图11的虚拟连接消息的示例顺序。参考图12,对等体B806向虚拟连接预订-通知服务814发送连接更新消息812,对等体A 1102向虚拟连接预订-通知服务814发送连接更新消息1104。连接更新消息812、1104在时间上接近地到达虚拟连接预订-通知服务814,警告虚拟连接预订-通知服务814对等体A 1102和对等体B 806同时移动的可能性。为防止对等体1102、806无法通信,虚拟连接预订-通知服务814向对等体B 806发送通知消息。当然,连接更新消息1104可能在连接更新消息812之前到达,具有相同的结果,在参考图11所讨论的示例的上下文中,通知消息可能发送至对等体A 1102、对等体B 806或两者。
对等体B 806接收的通知消息1106通知对等体B 806向对等体A 1102发送连接更新消息1108。作为对连接更新消息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等人的“IP网络地址解析(NAT)(The IPNetwork Address Translator(NAT)”,RFC 1631,因特网工程任务组,1994年5月。
在该描述中,现有地址空间被称为公有地址空间,其中,例如出现参考图8所讨论的示例,通过NAT挂连到公有地址空间的地址空间被称为私有地址空间。私有地址空间中的对等体(即,网络挂连点与私有网络地址关联的对等体)被称为相对于公有地址空间中的对等体(即,网络挂连点与公有网络地址关联的对等体)位于NAT之后。
在本发明的一个实施例中,结合NAT的计算机网络特有的特点是公有地址空间中的对等体(公有对等体)可能不与私有地址空间中的对等体(私有对等体)通信,除非该私有对等体首先联系该公有对等体。此外,NAT机制通常通过其网络地址来标识对等体,因此使用新网络地址移动到新的网络挂连点的对等体对NAT机制而言可能看来为一个不同的对等体。如果是这一情况,则移动的公有对等体将无法直接向私有对等体发送连接更新消息。在本发明的一个实施例中,虚拟连接预订-通知服务能够方便这一连接更新。
图13描述了参考图8所讨论的示例的一个变异,说明了结合NAT的计算机网络中虚拟连接预订-通知服务814所扮演的角色。在图13中,对等体A1302具有通过基于IP的网络与对等体B 804的通信连接。对等体A 1302位于NAT 1304之后,如虚线所指示的。对等体A 1302具有与其关联的至少两个IP地址:其在NAT 1304之后的私有地址空间中的IP地址IPA,以及其在公有地址空间中的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联系。在本发明的一个实施例中,对等体B 806在进一步与对等体A 1302通信之前等待被对等体A 1302联系。
作为接收连接更新消息812的结果,虚拟连接预订-通知服务814搜索其预订数据库,并确定对等体A 1302已预订了对等体B 804的网络挂连点改变。与参考图11所描述的示例相反,虚拟连接预订-通知服务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发送预订消息1306,预订对等体B发布的网络挂连点改变事件。对等体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改变为IP3,并且在移动之后,对等体B 806使用连接更新消息812向虚拟连接预订-通知服务814发布网络挂连点改变。
在图15中,对等体A 1302也将其网络挂连点从私有IP地址IPA改变为私有IP地址IPA′,即,位于NAT 1304之后的对等体A 1302移动到位于NAT 1504之后的对等体A 1502。NAT 1304可以与NAT 1504相同,或者NAT 1504可以不同,即,IP地址IPA′可能位于与IP地址IPA相同的私有地址空间内,或者IPA′可能位于不同的私有地址空间内,例如,由不同的组织管理的私有地址空间。移动之后,私有对等体A 1502可能无法与对等体B一样从虚拟连接预订-通知服务814(位于公有地址空间)接收消息(如,通知消息)。然而,对等体A 1502通过向虚拟连接预订-通知服务814发送连接更新消息1506来发布其网络挂连点改变事件,并且重建了私有对等体A 1502(在其新IP地址IPA′)与虚拟连接预订-通知服务814之间横跨NAT 1504的通信。
在本示例中,对等体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向对等体A1502发送通知消息1508,通知对等体A 1502对等体B 806的新IP地址IP3。私有对等体A 1502然后向对等体B 806发送连接更新消息1510,允许并提示对等体B 806使用连接更新确认消息1512回复。
图16描述了用于图15的虚拟连接消息的示例顺序。参考图16,对等体B806向虚拟连接预订-通知服务814发送连接更新消息812。之后不久,对等体A 1502向虚拟连接预订-通知服务814发送连接更新消息1506。作为对接收时间上接近的连接更新消息812、1506的响应,虚拟连接预订-通知服务814向对等体A 1502发送通知消息1508。作为对通知消息1508的响应,对等体A1502向对等体B 806发送连接更新消息1510。连接更新消息1510导致对等体B 806向对等体A 1502发送连接更新确认消息1512作为响应。
参考各种示例情形描述了虚拟连接协议的各方面之后,以下是依照本发明的一个实施例,当发送虚拟连接协议消息时,虚拟连接协议参与方所使用的示例判定程序。
图17描述了例如由(图6的)连接管理组件606执行的示例步骤,作为本地网络挂连点(NAP)改变事件的结果。在步骤1702,连接管理组件606检测到出现了本地网络挂连点改变事件(或被通知该事件)。其结果是,在步骤1704,通过向服务发送连接更新消息向虚拟连接预订-通知服务发布该事件。在步骤1706,连接管理组件606选择本地连接转化表604中的下一条目,或者如果之前未选择过则选择第一条目。在步骤1708,更新所选择的本地连接转化表604条目,使当前连接说明与新本地网络挂连点相一致。
为在远程对等体上引发相应LCT表604的更新,程序进行到步骤1710,确定远程对等体是在公有地址空间中还是在私有地址空间中。如果确定远程对等体是公有的,则程序进行到步骤1712。在步骤1712,向远程对等体发送连接更新消息。如果确定远程对等体是私有的,则连接管理组件606依赖于虚拟连接预订-通知服务来向远程对等体通知网络挂连点改变事件,程序进行到步骤1714。在步骤1714,程序检查是否选择了本地连接转化表604中的每一条目。如果不是,则程序返回到步骤1706来选择下一条目,反之该示例程序完成。
图18描述了由例如(图10的)虚拟连接预订-通知服务1000的匹配模块1016所执行的示例程序,作为发布的网络挂连点改变事件的结果。在步骤1802,匹配模块1016接收特定对等体的网络挂连点改变事件,特定对等体在本情况中为上述示例(如,参考图8所描述的示例)的具有初始IP地址IP2的对等体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。尽管可以使用执行的多线程和其它并行处理技术以贯穿本发明的一个实施例获利,仍使用虚线1816环绕步骤1810和步骤1812来指示这些步骤是用于并行处理或等效技术(如,周期性检查的观察列表)的较佳的候选者,能够将候选者订户处理循环延迟最小化。
如果候选者订户为私有,并且通知尝试失败时,可能是私有订户与发布者一起移动,如上文参考图15所描述的示例。在这一情况下,检测到通知失败之后,程序可以进行到步骤1810来等待私有订户发布网络挂连点改变事件。最大步骤1810等待私有订户的最大时间可以不同于等待公有订户的最大时间。
在步骤1814,程序检查更多的候选者订户。如果有更多的候选者订户,则程序返回至步骤1804用于下一订户。否则,程序退出。
在本发明的一个实施例中,通过通信对等体是公有还是私有来确定某一行为。如上所述,可能有至少两个网络地址与私有对等体关联:NAT服务的公共网络地址以及由NAT服务创建的私有地址空间中的该对等体的网络地址。私有对等体可以在到另一对等体的虚拟连接消息中明确标记其私有状态。可选地,每一对等体可在其发送的一个或多个虚拟连接消息中包括其网络地址。接收消息的其它对等体然后可将所包括的网络地址与为该消息的视在源地址的网络地址相比较。如果所包括的网络地址匹配该视在源地址,则可以确定对等体为公有。如果所包括的网络地址不匹配该视在源地址,则可确定该发送对等体为私有。
图19描述了可由(图10的)虚拟连接预订-通知服务1000执行来确定预订是与公有对等体还是与私有对等体相关联的示例步骤。在步骤1902,虚拟连接预订-通知服务通过TCP/IP网络从对等体接收预订消息。在步骤1904,通过分析例如消息“包封(envelope)”-该消息的IP头,来确定该预订消息的视在源。可选地,可以通过查询与发送对等体建立的通信连接的属性来获得消息的视在源。在步骤1906,分析预订消息的内容。在本发明的一个实施例中,网络挂连点改变事件预订消息包括当预订对等体知道网络地址时的预订对等体的网络地址(本示例中为IP地址)。
在步骤1908,将预订消息的视在源与包括在预订消息中的网络地址相比较。如果预订消息的视在源匹配包括在预订对等体的预订消息中的网络地址,则程序进行到步骤1910。否则,程序进行到步骤1912。在步骤1910,确定预订与公有对等体关联。在步骤1912,确定预订与私有对等体关联。这一确定可以在虚拟连接预订-通知服务1000的不同模块中重复出现,或例如在预订模块1002中仅出现一次,然后将该预订储存在预订数据库1008中,并标记为公有或私有。
虚拟连接消息可以结合进较低层网络协议中。例如,可以使用因特网协议的IP选项特点将虚拟连接消息添加到IP数据报中。对于因特网协议的IP选项特点,见Postel、J.的“因特网协议(Internet Portocol)”,RFC 791,南加利福尼亚大学信息科学研究院,1981年9月。当通过使用一个或多个如IP操作将虚拟连接消息结合进较低层协议数据报中时,另外的选项可称为虚拟连接选项(VC选项)。尽管携带输出虚拟连接消息的虚拟连接选项通常结合进较高协议层生成的输出协议单元中,然而,例如,在等候下一较高层协议单元无效和/或低效时,虚拟连接层可以生成其自己的结合虚拟连接选项的“空”IP包。
通过使用传输控制协议的TCP选项可以将虚拟连接选项添加到TCP数据报中。对于传输控制协议的TCP选项特点的细节,见Postel、J.的“传输控制协议(Transmission Control Protocol)”,RFC 793,南加利福尼亚大学信息科学研究院,1981年9月。不明确支持数据报选项的较低层协议可以通过向较低层协议数据报添加虚拟连接选项,仍然能够结合虚拟连接选项。图20描述了用于向UDP数据报添加虚拟连接选项的示例模式。
在图20中,将一个或多个虚拟连接选项2002添加到将要通过IP网络发送的UDP数据报。UDP数据报包括UDP头2004和UDP体2006。UDP头2004包括UDP数据长度域(LengthUDP)、指示包括UDP体2006中的用户数据的UDP数据报的长度。对于用户数据报协议的进一步的细节,见Postel、J.的“用户数据报协议(User Datagram Protocol)”,RFC 768,南加利福尼亚大学信息科学研究院,1980年8月。UDP数据报由IP头2008作序,使其能够通过IP网络发送。在本示例中,UDP数据报和虚拟连接选项2002是IP数据报的体。IP头2008包括指示IP头2008中的字节数的IP头长度数据域(LengthIP Header)、以及指示IP数据报(头2008和体2004、2006、2002)中的字节数的IP总数据程度域(LengthIP)。虚拟连接选项2002的长度(LengthVC Options)可以如下计算。
LengthVC Options=LengthIP-LengthIP Header-LengthUDP
即,一个或多个虚拟连接选项2002的字节(八比特组)数被计算为IP数据报中的总字节数减去IP头2008中的字节数减去UDP数据报中的字节数。
可以使用类似的模式来向其它较低层协议数据报添加虚拟连接选项。然而,这一添加的数据可能无法由未结合虚拟连接模块(如,图6的虚拟连接模块600)的对等体正常解释。为测试远程对等体是否结合了虚拟连接模块,可以在发送至远程对等体的第一网络协议数据报中结合一个或多个虚拟连接选项,如特定的虚拟连接探查选项。如果回复包括一个或多个相应的虚拟连接选项,则可以将该远程对等体标记为VC增强型,即,能够正常地参与虚拟连接协议。
图21说明了例如由(图6的)虚拟连接模块600的对等体协商组件608执行来确定远程对等体是否支持虚拟连接操作的示例步骤。在步骤2102,设置了SYN标记并结合了虚拟连接探查选项的最初的TCP数据报被发送至远程对等体。在步骤2104,接收对最初TCP数据报,如SYN和ACK标记已设置或RST标记已设置的TCP数据报的回复。在步骤2106,分析该回复的虚拟连接探查选项。在步骤2108,确定该回复是否结合了虚拟连接探查选项。如果该回复的确已结合了虚拟连接探查选项,则程序进行到步骤2110,将远程对等体标记为VC增强型。否则,程序进行到步骤2112,将远程对等体标记为非VC增强型,并且不再向远程对等体发送虚拟连接消息。如上所述的虚拟连接功能在本情况中不可用。
这里引用的所有参考,包括出版物、专利应用和专利,通过参考同一程度结合,单独并具体地指示每一参考按引用结合,并整体地阐述。
使用术语“一”、“一个”和“该”,以及描述本发明的上下文(尤其是所附权利要求书的上下文)中的类似指示物认为是覆盖单个和多个,除非这里另外指示或明显与上下文抵触。术语“由……组成”、“具有”、“包括”和“包含”被认为是开放式术语(即,意指“包括但不限于”),除非另外说明。这里列举的值的范围仅用作单独参考位于范围内的每一个别值的速记方法,除非另外指示,并且每一个别值结合进本说明书中,犹如其被个别列举。这里所描述的所有方法可以以任一合适的顺序执行,除非另外指明或者明显与上下文抵触。使用这里提供的任一或所有示例,或者示例性语言(如,“诸如”),仅为更好地阐明本发明,并非对本发明的范围的限制,除非另外要求权利。说明书中没有一种语言可以被认为是指示对本发明的实践必需的任一非权利要求的元素。
这里描述了本发明的较佳实施例,包括发明人已知的最佳模式,来实现本发明。阅读上述描述以后,本领域的一般技术人员可以明白这些较佳实施例的变化。发明人希望技术人员适当地采用这些变化,并且发明人希望与这里所具体描述的不同地实践本发明。因此,本发明包括使用的法律所允许的所附权利要求书中所陈述的主题的所有修改和等效技术方案。而且,所有可能的变化中的上述元素的任一组合也包含在本发明内,除非另外指示或明显与上下文抵触。