该申请涉及于2001年10月16日提交的美国临时申请(序列号为60/329,796)和于2001年10月19日提交的美国临时申请(序列号为60/346,370),并声明了它们的优先权。这些申请都被包括于此,用作参考。
发明背景
计算机结构内存在各种层次的抽象——从1和0的物理表达式到高层次的应用程序。最初开发计算机时,通常被称作“机器语言”的低层次编程语言一般用于控制计算机的操作。但是,为了给具有不同机器语言的两个不同的计算机平台创建相同的程序,程序设计员必须编写程序两次——用每个平台的机器语言编写一次。
计算机程序设计员了解到,可以通过创建较高层次的编程语言(例如,C和Pascal)来使机器语言抽象化,然后为将在其上使用该程序的每个平台提供编辑器。当用这些较高层次的编程语言中的一种语言编写程序时,可以对程序进行编辑,使其在每台特殊的机器上运行,而无须为每台机器重写源程序。这方面的抽象继续进行,从而使虚拟机器有了更进一步的发展。
虚拟机器的概念在计算机科学的技术领域中众所周知。虚拟机器是一种中间表示,它并不局限于特定计算机硬件结构的特殊细节。通常,虚拟机器将保证特定的语义学,不管使用什么硬件来执行它,该语义学都保持相同。所以,可以在不同的硬件系统上执行已为这种机器编写的程序,而无须修改。这样,虚拟机器的一个优点是:不管任何一个计算机程序的起源或操作要求如何,操作语义学从一个计算机程序到下一个计算机程序都保持不变。
计算机网络取决于在其上建立网络的基础物理硬件与网络协议。这些协议又取决于它们在其上被执行的基础网络结构。结果,必须为将在其上使用网络程序的每个网络重写这些网络程序。此外,为使两台机器在网络上通信,每台机器必须理解如何在特殊的网络上进行通信,即,每台机器必须具有用于通信的合适的网络驱动器。
已在计算机网络中被执行的一个层次的抽象是使用TCP/IP协议堆栈,它根据OSI 7层网络模型来加以执行。TCP/IP使网络协议的一些概念抽象化,允许都理解TCP/IP协议的两台机器相互进行有效的通信。但是,即使使用TCP/IP,在某个层次上,每台机器也必须能够理解网络路由发送,以及拓扑学、联编和DNS分解。也就是说,网络上的每台计算机仍然必须安装实质的网络支持公用程序,以便在网络上进行有效的通信,因为OSI模型只是使各台机器之间的物理电线虚拟化,而不是使各台机器通过其进行通信的网络虚拟化。
例如,TCP/IP要求应用程序理解端口和IP地址的概念。端口和IP地址又要求应用程序理解DNS名称分解、网络拓扑学、传输带宽和终端对终端路由发送。这样,虽然简化了用于按可靠的方式来交换规则序列的字节的模型,但应用程序仍然必须直接处理许多网络层次的概念和细节。OSI模型不按网络应用程序的需要来对较高层次的构造进行寻址(例如,命名、路由发送和服务质量)。
传统网络的另一个缺点是:在发生消息错误或网络故障之后,无法适应和修复。当增加、移动或移走机器时,目前的网络不能容易地进行自动适应。也就是说,用户通常必须编辑路由发送表格,以便将变化通知给网络。
此外,除了通过保养执行相同功能的多余的机器以外,无法容易地修理好网络故障。也就是说,如果第一台机器发生故障,那么,第二台(备用)机器接管第一台机器的功能。但是,如果第二台机器随后又发生故障,并且没有执行相同功能的第三台机器,则网络将会因此而遭受损失。已知的网络不具备自我复原的功用。因此,需要一种能够克服这些问题的高级网络。
传统网络的另一个缺点是:无法根据消息内容来动态地路由发送网络消息。Cisco系统公司的已知路由器能够根据预先定义的标准来路由发送消息,但不可进行动态编程以根据消息内容来支持用户可扩展的路由发送。除了传统的路由发送和QoS要求以外,这个缺点使它们不适用于应用程序在其中可以控制消息转换和处理的系统。
提供解决部分或所有以上被识别的问题的一种方法和系统,这将会是一大进步。
发明概述
本发明的各个方面可以被用来使网络虚拟化,以允许程序设计员编写平台独立的网络计算机应用程序。通过在提供网络服务的应用程序与执行那个代码的系统的基础网络之间(例如,在OSI网络模型中的层6与层7之间)增加一个抽象层(软件或硬件),可以创建虚拟网络。可以插入一个或多个虚拟化部件,包括同步、事件综合(eventing)、通信联系、命名、组群、寻址和路由发送部件。
通过使联网系统抽象化,网络可以更有效、更安全地将各种服务本能地提供给建立在其顶部的应用程序和服务。例如,可以容易地提供各种服务(例如,可靠性、安全、平台独立、按比例增加(scale-out)、边缘联网和位置独立)。系统也可以适应物理拓扑变化并自动从故障“复原”。虚拟网络负责将代码映射到网络的物理拓扑上,并负责显然地适应该映射。此外,开发者可以从隔离其各种服务中得益。
通过将虚拟网络与虚拟机器结合起来,可以创建一种分布式可划分虚拟网络,其中,应用程序可以被编写一次,并可以在任何机器上运行。也就是说,在运行虚拟机器的计算机上的、为用于虚拟网络而编写的网络应用程序不需要被加以重写,因为它能够在操作相同的虚拟机器的任何机器上运行并被连接到虚拟网络。
虚拟网络也提供适应的重新配置性能。假设机器A在网络上将一个消息路由发送给机器B,则B回复给机器A。但是,在机器A能够将第二个消息路由发送给机器B之前,机器B移动(例如,到另一个IP地址)。根据一个实施例,虚拟网络可以分辨自己并适应改变的位置,以便仍然将消息传递给B的新位置。地址的变化可能会很明显,以便在网络上运行的应用程序永远不知道(或不需要知道)B的位置曾发生过变化。不对每台机器可能会移动到的那套位置进行限制,因为抽象是从机器层次移动到网络层次。在移动设备之后,一旦它识别出自己到新位置处的网络,虚拟网络就能够更新自己,以便到机器的路由发送可以继续进行操作,而不会发生中断。该能力可扩展当前从单个管理领域到多个管理领域内的内容,使位置活动性能够跨组织进行扩展。
本发明的第一个实施例提供了一种装置,该装置包括路由发送并调度消息的一个消息调度程序。每个消息根据该消息的内容的任意部分来被路由发送。也有一种界面,网络应用程序通过该界面与消息调度程序进行通信,以定义在其上路由发送消息的消息的内容的任意部分。
在本发明的另一个实施例中,有一种数据处理装置,该装置包括一个消息调度程序模块、用于将消息调度程序与传输协议接合的一个传输适配器、应用程序通过其与消息调度程序进行通信的一个界面,以及被存储的规则,这些被存储的规则指示消息调度程序根据所述第一个网络消息的第一个属性来路由发送第一个网络消息,并根据第二个网络消息的第二个属性(不同于第一个属性)来路由发送第二个网络消息。从每个网络消息中所包含的一套标题和数据中选择第一个和第二个属性。
另一个实施例提供了用于路由发送网络消息的一种方法。消息调度程序根据第一个网络消息的第一个属性来路由发送第一个网络消息。消息调度程序根据第二个网络消息的第二个属性(不同于第一个属性)来路由发送第二个网络消息。第一个和第二个属性可以是从每个网络消息的一套标题和数据中选择的任何字段。
在另一个实施例中,有一种存储计算机可执行指令的网络路由器。当被路由器执行时,这些指令执行一套步骤。网络路由器存储从网络应用程序接收的路由发送信息。路由发送信息包括一个消息字段、一个字段条件和一个消息指令。通过将网络消息与被存储的路由发送信息进行比较,网络路由器接收并处理网络消息。当所接收消息的消息字段符合字段条件时,网络路由器执行消息指令。
本发明的另一个实施例提供了虚拟计算机网络。该计算网络包括多台计算机,每台计算机配置有在传输层协议与网络协议之间转换消息的至少一个传输适配器,以及根据消息的内容的一个任意部分来路由发送并调度消息的一个消息调度程序。每台计算机中的消息调度程序路由发送使用传输适配器的传输层协议上的虚拟网络协议中的消息。
在本发明的另一个实施例中,有一种虚拟网络,它包括被插入在OSI协议堆栈的层6与层7之间的至少一个虚拟部件。
发明的详细描述
通过结合通用使能部件来使用虚拟位置,可以实现虚拟网络中的消息分解,它被称作“虚拟网络调度程序(VND)”,并被包括在加入虚拟网络的每种资源中。资源可以被定义为“任何消息端点”。参考图1,为虚拟网络113上的每个设备101-102提供一个虚拟地址,它的实际地址(例如,IP地址、MAC地址、URL或其他位置标识符)可以被映射到该虚拟地址。VND 103可以包括被并入每个设备的一个路由器模块,不管其上安装路由器的设备如何,每个设备都使用硬件或软件来以相同的方式响应于消息。也就是说,路由器模块是独立的设备。VND 103包括消息处理程序109,下文将进一步加以描述。
消息处理程序109可以随机器而变化,或者,它们可能跨越各台机器而保持一致。每个消息处理程序可以为特殊类型的机器而加以明确的配置,也可以被配置成明确地操作或不操作任何给定的机器。一些消息处理程序可以被广泛地部署(例如,消息标题处理程序和加密处理程序),而其他的消息处理程序只可以被部署在单台机器上。
每个VND负责执行路由发送功能和调度功能。路由发送是将消息发到其目标设备的过程。调度是当接收到消息时响应于消息的接收而执行适当的处理程序(例如,软件模块、功能、应用程序、例行程序等)或其他可执行软件的过程。VND执行的处理程序可能是确定VND应该如何处理和路由消息的路由发送处理程序,也可能是可将消息路由发送给在设备上运行的应用程序的处理程序。
在一个实施例中,VND可以路由发送和调度开放的、可扩展的通信联系协议中的基于XML的消息,不管每个特定的应用程序使用的操作系统、目标模型或语言如何,该协议都允许分布式分散应用程序交换信息。可以采用支持虚拟网络所用的传输的任何协议。可以结合网络传输协议107(例如,TCP、IP、UDP、HTTP、SMTP、SOAP-RP等)来使用VND。当经由任何传输协议在一个位置处接收消息时,消息内容由传输适配器105提取并被输入VND 103。每个传输适配器将根据一个预先定义的传输协议而被格式化的消息作为输入来接收,并转换(或除去)消息标题,以便遵守虚拟网络协议。如图1所示,每个VND 103可以被连接到多个传输适配器TA1-TAn,用于多个传输协议T1-Tn。这允许每个VND可以跨越多次传输来被使用,而无须将虚拟网络与单个传输协议联系在一起。
通过使用多个传输协议和协议适配器,将VND 103放置在每个设备上可提供一个平台。通过该平台并使用虚拟网络协议,任何应用程序可以显然地与独立于传输层协议的另一个应用程序进行通信。在该技术领域中已知一些特殊的应用程序,这些应用程序已经被配置成在多个协议上进行通信。但是,每个这样的应用程序必须被加以明确的配置。通过使用这里所描述的虚拟网络,应用程序可以在多个协议上进行通信,而无须任何特殊的配置,甚至不会发现正在多个协议上进行通信传输。路由发送每个消息的每个特殊设备中的VND 103作出有关在其上路由发送消息的协议的决定。关于每个消息,VND可以根据一个或多个预先定义的协议政策来确定使用哪个协议。换句话说,根据应用程序或网络服务的需要和/或要求,所使用的协议可能取决于驱动特定消息的VND的应用程序或网络服务。
当虚拟网络研制或需要一个新的传输协议时,可以创建和安装新的传输适配器,用于每个VND。通过这种方法,虚拟网络可以利用新的传输协议,而不要求对将被置入虚拟网络的每个应用程序的每个传输协议进行支持。而是为每个VND提供对新的传输协议的支持,它包含指示何时与如何结合新的传输适配器来使用新的传输协议的逻辑。
VND统一单台机器上的局部调度和远程调度。与其中只有规定的机器或专用机器用作路由器的传统网络不同,每个设备通常用作虚拟网络中的路由器。例如,设备可能会接收一个消息,只是用于确定该消息实际上应该在网络中的其他某个地方被传递。当发生这种情况时,机器将该消息发给正确的接收者,或发给机器根据其目前的路由发送表格和规则而认为是正确的那个接收者,而不是(随意地)将错误消息返回给消息路由发送者。
图10展示了根据本发明的一个实施例的一个消息路由发送例子。VND 1001经由传输适配器1005a接收引入的消息1003,FROM字段被填充1.2.3.4。VND1001可以包括多个传输适配器1005a、1005b和1005c,用于多个传输协议。VND 1001使用处理程序1007-1013来处理所接收的消息1003,这些处理程序中的每个处理程序指示VND 1003根据预先定义的标准来路由发送和/或调度消息。VND 1001根据处理程序1007将消息的TO字段修改为7.7.4.4,并通过传输适配器1005c来输出所路由发送的消息1015。根据指出1.2.3.4的引入的消息1003的FROM字段,所路由发送的消息1015包括被填充有目的地地址7.7.4.4的一个TO字段。
由于每个设备都用作路由器,因此,可以执行自我复原系统。当一台机器发生故障时,其他机器将会自动补偿并找到通过其路由发送消息的其他路径,从而使虚拟网络故障可以被容忍。在一个实施例中,可以将机器放在冗余组群中。冗余组群中的每台机器都能够检测到组群中任何其他的机器已发生故障并离开组群。然后,剩余的机器可以更新路由发送消息的一个或多个消息处理程序中的信息,以避免使用已知发生故障的机器。这样,机器可以根据其路由发送与逻辑表格中被编码的指令来补偿网络故障和错误,这将在下文进一步加以描述。在另一个实施例中,一个或多个机器子系统可能正在对网络实行监控,以确定最佳路径和失败的路径。
参考图2,处理程序109包含指示VND 103如何处理消息(即,如何处理引入的消息、如何对消息作出响应,以及如何路由发送消息)的逻辑。例如,第一个处理程序109a可以执行病毒检查,第二个处理程序109b可以执行安全功能,第三个处理程序109c可以执行可靠性功能等。如图2所示,109n可以使用无限数量的处理程序109。通过在任何给定的时间增加一个新的处理程序109,可以把新的功能性和性能加到虚拟网络,而无须修改每台机器上的网络应用程序。所处理的消息通过逻辑接收者端口111被输出。逻辑端点可以被映射到设备(消息正从那里被路由发送)上的任何物理端口。
可以创建VND处理程序109,以便在虚拟网络中,应用程序网络为每个应用程序呈现一套逻辑端点(即设备)。应用程序可以经由使用非统一的语义规则的消息来与端点进行通信。例如,第一个应用程序可以根据第一种消息格式(例如,标题和数据)在网络上将消息路由发送给第二个应用程序。一个或多个处理程序可以修改消息句法,以便在第二个应用程序接收该消息之前对其进行修改,并且该消息出现在一个不同的消息句法中。端点可以被映射到在每个端点处可能有不同的实施的物理网络上(即,一旦公开具备规格,不同的卖主就可以提供操作虚拟网络的软件和硬件),并可以使用各个端点之间的非统一的传输协议来进行通信。
通过使用以上描述的网络平台,可以将虚拟网络配置成能进行自我组织。也就是说,可以将虚拟网络配置成响应于网络上的规定事件而进行自我恢复、适应或改组。事件会是引发网络自我适应的任何预先定义的条件,包括不发生某个条件。例如,当网络检测到它的一个节点已发生故障时,可以将网络配置成进行改组。当发生这种情况时,一个或多个处理程序可以指示VND将信息包路由发送到一个新的位置。在另一个例子中,当网络路径上的负荷很高时,VNDs可以在通信量较少的网络路径上路由发送消息。或者,用户可以经由图解用户界面或其他配置界面改组虚拟网络。
可以提供应用程序编程界面(API)115,通过API 115,应用程序可以与VND 103接合。可以为计算机的执行引擎(例如,操作系统或虚拟机器)编写应用程序,计算机的执行引擎使用API 115进行连接,以便根据消息内容和/或根据曾在其上接收每个消息的传输协议来配置VND,以响应于每个消息。VND调停协议与基础的执行引擎之间的相互作用。
图3展示了本发明的一个实施例中所使用的一种可编写消息格式。每个消息301包括一个标题部分303和一个数据部分305。标题包括与数据部分中所包含的信息有关的信息。也就是说,标题是属于消息301的数据部分305的一种元数据。不要求标题部分和数据部分有固定的长度。标题可以包括路由发送标题307、可靠性标题309、安全标题311和应用程序标题313。路由发送标题307可以包括(例如)一个路由发送者的地址、一个接收者的地址,以及针对路由发送过程的任何其他的信息。地址字段可以被填充有地址所指的实体或设备的虚拟地址。虚拟地址是物理地址或其他逻辑地址可以被映射到那里的逻辑地址。可靠性标题309可以包括确保信息包到达其预定目的地的任何标题。安全标题311可以包括确保消息内容不泄露给非预定的接收者的任何标题。根据特定应用程序的需要,完整标题可以与安全标题或可靠性标题包括在一起。如网络应用程序所定义的,应用程序标题313可以包括以前不加以说明的任何标题。
在一个实施例中,消息协议是可编写协议,体现为:应用程序可以按需要增加各个新的功能方面,而不会中断对先前存在的消息功能性的处理。在一个实施例中,标题被用来提供新的功能方面。可以将新的功能属性存储在一个或多个消息标题中。也就是说,新标题可以被加到现存的消息中,而不会打扰对前面消息的处理,这与传统的消息协议组套不同,通过传统的消息协议组套,一个消息协议封装另一个消息协议,以便包括一个新的标题(或功能属性)。这样,消息协议是可扩展的,体现为:应用程序可以按需要来增加或除去额外的标题字段,以提供新的功能性。这使网络应用程序能够定义新的标题字段并将其并入消息格式,而不要求对每个网络应用程序重新编程以理解每个新的消息标题。每个应用程序只使用配置那个特殊的应用程序来理解的那些标题。可以忽略它不理解或无法进行适当解释的那些标题。
可编写协议可以是被修改的、基于XML的协议,也可以是被修改的TCP协议(由此,额外的标题被插入每个TCP消息的数据部分)。当应用程序将一个新标题加到消息中时,应用程序可以将消息路由发送给一个或多个VNDs,它指示每个VND根据新标题来创建一个或多个处理程序,以进行路由发送和/或调度。
每个VND 103可以根据每个消息内的任何标题和/或数据字段,或根据每个消息内的标题和/或数据字段的任何组合,来作出路由发送决定。可以使用额外类型或较少类型的标题。每个VND 103中的每个处理程序提供关于根据消息内容来进行路由发送的指令。
例如,应用程序可以定义并包括每个消息中的一个“动作”标题,以指出用户要求接收者采取的动作。如果网络用户规定动作预订并将消息数据305设置为“棒球分数”,则该消息可以向第一个服务器指出:路由发送用户想订阅棒球分数电子邮件清单。此外,动作字段可以由虚拟功能名称来填充,映射到在其上接收它的每台机器处的一项特殊的功能。如果网络用户规定动作预订并将消息数据305设置为“MSDN”,则该消息可以向第二个服务器指出:路由发送用户想订阅标题为“MSDN杂志”的物理杂志。这样,如两个应用程序各自的预订功能所定义的,两个应用程序都可以使用动作预订——每个应用程序采用一种不同的方式。
在另一个例子中,参考图11,假设应用程序服务供应商(ASP)为顾客提供三个等级的服务。根据顾客已预订的一个等级的服务,ASP可以将消息路由发送给三个不同的服务器和/或应用程序之一。ASP可以定义和使用被称为“服务_等级”的一个新的应用程序标题或类似物,以便为每个顾客指明一个等级的服务。客户应用程序可以用金、银或铜之一来填充服务等级字段,以指明特殊顾客已支付和/或预订的服务等级。主服务器1105可以经由网络1103从顾客1101那里接收所有引入的消息。然后,主服务器调度程序(例如,VND 103)可以根据服务等级来路由发送引入的顾客消息。定购金服务的顾客可以被路由发送到快速响应服务器1107(支持一整套服务的一种服务器)或其他高级等级服务器。定购银服务的顾客可以被路由发送到中速响应服务器1109(除了基本服务以外还支持所选服务的一种服务器)或其他中等服务等级的服务器。定购铜服务的顾客可以被路由发送到缓慢响应服务器1111(只支持基本服务的一种服务器)或其他低服务等级的服务器。
在另一个例子中,应用程序可以包括被命名为“地理区域”的、与路由发送用户的地理位置有关的一个标题字段。然后,可以根据路由发送者的物理位置来作出路由发送决定,以便将消息路由给离路由发送用户最近的服务器。例如,在维持两个服务器的系统中,当地理位置标题字段指出路由发送用户位于俄勒冈州的波特兰时,设备可以将消息路由发送给位于华盛顿州的西雅图的第一个服务器;当地理位置标题字段指出路由发送用户位于密歇根州的底特律时,设备可以将消息路由发送给位于伊利诺斯州的芝加哥的第二个服务器。这避免了当附近有相同的服务器时将消息路由发送给远处的服务器。
在另一个例子中,当已对一台或多台机器发起拒绝服务攻击时,可以创建一个处理程序,该处理程序根据每个消息的“证书”字段来拒绝所有消息。“证书”字段可能等同于、也可能不等同于消息的“来自”字段。例如,“证书”字段可以包括路由发送用户的姓名,以及证明路由发送者是指名道姓的人的鉴定;而“来自”字段可以只包括路由发送者的IP地址或逻辑名称。当消息的“证书”字段包含有关路由发送机器的适当的证书时,处理程序可以被配置成接受该消息。当拒绝消息时,可以完全忽略它,释放资源以响应于合法的消息。
在另一个例子中,参考图4,可以将虚拟网络配置成自我复原。位于防火墙403后面的机器401可以接收网络连接404上的引入的消息。机器401可以经由虚拟网络(即,如这里所讨论的,配置有适应性调度程序和传输适配器的物理网络)被连接到其他机器407、409和411。每台机器401、407、409和411包括VND 405。每台机器401、407、409和411可以存储一个或多个虚拟位置。也就是说,机器1可以存储并执行被称作“alpha”的服务器。机器2可以收容并存储被称作“bravo”的服务器。机器3可以收容并存储被称作“charlie”、“delta”和“echo”的服务器。机器4可以收容并存储被称作“foxtrot”和“golf”的服务器。虚拟网络中的每个VND配置有处理程序,这些处理程序将每个虚拟位置映射到其各自的物理机器。例如,当设备401接收朝向虚拟位置bravo的消息时,设备401的VND中的虚拟位置映射处理程序指示VND将该消息路由发送给机器2。但是,由于设备401是防火墙处的引入来源,因此,机器1中的VND 405可以配置有额外的处理程序,来首先检查所有引入的消息是否有病毒,再执行其他的安全措施。
为了使虚拟网络能够自我复原,可以创建处理程序,来定期轮询另一台机器或服务器,以确定其网络状况。也就是说,在服务器“golf”是“echo”的备用服务器的情况下,可以将机器4配置成按定期时间间隔来轮询机器3,以便确认机器3(明确地说是服务器“echo”)在发挥作用。当机器4没有在规定数量的时间(例如,10秒)内从机器3(或“echo”)接收到确认时,机器4可以启动一个故障(failover)序列,由此,机器4开始将消息路由发送给每台机器的VND,向每个VND指出:当为机器3上的“echo”接收到消息时,该消息应该被路由发送给机器4上的“golf”。
也通过使用图4中所描述的结构,当服务器从一台机器移动到另一台机器(例如,从一个IP地址到另一个IP地址)时,可以在每个VND中更新虚拟映射,而不会要求重新配置操作网络的每个应用程序。当应用程序将消息路由发送给服务器时,每个VND自动将消息重新路由发送到服务器的新位置。可以手工更新虚拟映射(例如,作为将新的服务器加到系统的结果),也可以自动更新映射(例如,作为如上所述的自动复原或适应事件的结果)。图12展示了一张样品虚拟映射表格。图13展示了在主办www.foo.com网站的第一台机器发生故障且系统适应上述的故障(将消息重新路由发送给冗余组群内的另一台机器)之后的相同的表格。
参考图5,虚拟映射也有助于容易地设置和测试新的服务器和网络应用程序。例如,机器2上的服务器bravo可以是生产电子邮件服务器(即,目前在虚拟网络中使用的电子邮件服务器)。虚拟网络的拥有者可能想要用新的或不同的特点来测试被更新的电子邮件服务器。通常,为了测试新的服务器,用户将必须指引他的电子邮件客户到新的服务器。这对于单个用户而言可能不会不方便,但是,当新的服务器实况运行时,这可能会给改变庞大组织内每个用户的服务器名称带来诸多不便。通过使用发明的系统,测试服务器可以被安装在机器3(也被命名为“bravo”,被称作“bravo’”)上。每个VND可以配置有一个处理程序,该处理程序指示它将bravo的消息路由发送给机器2。但是,当路由发送者是预定的用户(例如,正在测试新服务器(bravo’)的网络的管理人)时,相同或不同的处理程序被配置成将bravo的消息路由发送给机器3。这样,不要求重新配置测试用户的机器。此外,当新的服务器bravo’准备好投入生产时,可以通过将所有bravo消息指引到机器3,来改变网络映射,而不会中断任何用户的电子邮件服务。由于虚拟映射已经改变,因此,每个用户将显然开始使用新的电子邮件服务器。
参考图7,可以提供一套虚拟网络服务,以确保虚拟网络中的通信和服务是安全的、可适应的、可靠的、可自我复原的和不依靠平台的。虚拟网络同步服务703确保网络内的分布式数据保持同步。虚拟网络事件综合服务705根据事件的发生或不发生来创建新的路由发送和/或调度规则。虚拟网络通信联系服务707根据虚拟的名称和位置来路由发送消息。虚拟网络名称服务709根据虚拟名称的任何子串来提供名称分解服务。虚拟网络组群服务711管理名称映射表格。虚拟网络寻址服务713为长度固定的地址名称(例如,IPv6地址)执行命名和路由发送服务。但是,虚拟网络寻址服务可用于尺寸固定的地址的任何平坦的地址空间。虚拟网络路由发送服务715根据动态规则并结合使用可编写消息协议的动态标题来进行路由发送和调度。可以跨越网络的所有层次来提供虚拟网络安全服务717,以确保消息内容安全、可信。虚拟网络管理719可以跨越所有层次来加以执行(例如,管理名称、路由发送/调度处理程序、事件综合等)。目前在该技术领域中已知,虚拟网络监控服务721允许网络管理人对网络使用、带宽、瓶颈点和类似内容进行监控。
如图9所示,本发明的一个实施例可以建立在7层开放系统互连(OSI)网络模型的一个修改版本的基础上。可用于OSI模型的一个协议堆栈是TCP/IP协议堆栈。通过将一个层插入在应用程序顶层与紧接在应用程序顶层下面的层之间,本发明可以将一个额外层次的抽象插入OSI网络模型或任何其他的网络模型中。被称作“虚拟网络(VN)层”的新层应该跨越所有应用程序而保持一致,以便各个应用程序可以按如VN层所定义的统一的方法协同操作。VN层已被并入其中的网络被称作“虚拟网络”。在一个实施例中,VN层包括一个虚拟网络调度程序和任何必要的传输适配器,它们根据消息处理程序和虚拟地址映射表格来路由发送和调度消息。
通过使用以上描述的结构,在单独消息的基础上,网络可以根据不同的消息内容来路由发送和调度消息。本发明提供了一种网络协议,程序设计员可以使用API并按需要来改编和配置该网络协议。程序设计员和使用API的程序可以指示VNDs如何路由发送和调度引入的消息。也就是说,程序设计员将元消息(meta-messages)路由发送给VNDs,其中,每个元消息根据API来构制并提供一个或多个路由发送和/或调度指令。
图8展示了根据本发明的一个实施例的一般路由发送程序的流程图。在步骤801中,用户决定将消息路由发送给被称作“foo”的服务。在步骤803中,机器创建消息到服务“foo”。在步骤805中,服务名称“foo”根据虚拟地址映射表格而被映射到一个虚拟地址。在步骤807中,必须保护消息。在一个实施例中,使用SOAP扩展名(例如,“网络服务安全语言”(WS-安全)和/或“网络服务许可证语言”(WS-许可证)所定义的扩展名)来执行安全。在另一个实施例中,对消息执行转换,以选择有关的部分。摘要在所选择的部分上被加以计算,并由路由发送者进行加密/签名。消息的各个部分可能是机密的。在这种情况下,使用共享密匙或新密匙(又为接收者而被加密)来对它们进行加密。在步骤809中,当可应用时,虚拟地址被映射到组群地址(GADDR)。在步骤811中,适应性调度程序(即VND)确定最佳目标;在步骤813中,它将GADDR映射到虚拟地址。在步骤815中,虚拟地址被映射到物理地址;在步骤817中,消息被路由发送到物理地址。接收机器在步骤819中接收消息,并在步骤821中确认安全性。
各种发明的方法可以被具体表现为被存储在计算机可读介质(例如,软盘、CD-ROM、可移动的存储设备、硬盘、系统存储器或其他的数据存储介质)上的计算机可读指令。换句话说,各种发明的方法可以在硬件和软件的组合中或只在硬件中得到具体表现。图6展示了可以根据上述实施例中的一个或多个实施例来加以运用的计算机可读介质601的方框图。计算机可读介质601存储计算机可执行部件或软件模块603-613。或者,可以使用或多或少的软件模块。每个部件可以是可执行程序、数据链接库、配置文件、数据库、图解图像、二进制数据文件、文本数据文件、目标文件、源代码文件或类似物。当一个或多个计算机处理器执行软件模块中的一个或多个软件模块时,这些软件模块相互作用,使一个或多个计算机系统根据本发明的教导加以执行。
已就一些特殊的例子(包括目前执行本发明的各种较佳模式)描述了本发明,但精通该技术领域的人将会认识到,可以对如所附权利要求中所阐明的本发明的精神和范围内的上述各种系统和技术进行许多修改和变更。