專利名稱:帶有適應(yīng)性調(diào)度程序的虛擬網(wǎng)絡(luò)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)網(wǎng)絡(luò)。尤其是,本發(fā)明涉及根據(jù)消息內(nèi)容來適應(yīng)地路由發(fā)送消息的虛擬網(wǎng)絡(luò)。
背景技術(shù):
計(jì)算機(jī)結(jié)構(gòu)內(nèi)存在各種層次的抽象——從1和0的物理表達(dá)式到高層次的應(yīng)用程序。最初開發(fā)計(jì)算機(jī)時(shí),通常被稱作“機(jī)器語言”的低層次編程語言一般用于控制計(jì)算機(jī)的操作。但是,為了給具有不同機(jī)器語言的兩個(gè)不同的計(jì)算機(jī)平臺(tái)創(chuàng)建相同的程序,程序設(shè)計(jì)員必須編寫程序兩次——用每個(gè)平臺(tái)的機(jī)器語言編寫一次。
計(jì)算機(jī)程序設(shè)計(jì)員了解到,可以通過創(chuàng)建較高層次的編程語言(例如,C和Pascal)來使機(jī)器語言抽象化,然后為將在其上使用該程序的每個(gè)平臺(tái)提供編輯器。當(dāng)用這些較高層次的編程語言中的一種語言編寫程序時(shí),可以對程序進(jìn)行編輯,使其在每臺(tái)特殊的機(jī)器上運(yùn)行,而無須為每臺(tái)機(jī)器重寫源程序。這方面的抽象繼續(xù)進(jìn)行,從而使虛擬機(jī)器有了更進(jìn)一步的發(fā)展。
虛擬機(jī)器的概念在計(jì)算機(jī)科學(xué)的技術(shù)領(lǐng)域中眾所周知。虛擬機(jī)器是一種中間表示,它并不局限于特定計(jì)算機(jī)硬件結(jié)構(gòu)的特殊細(xì)節(jié)。通常,虛擬機(jī)器將保證特定的語義學(xué),不管使用什么硬件來執(zhí)行它,該語義學(xué)都保持相同。所以,可以在不同的硬件系統(tǒng)上執(zhí)行已為這種機(jī)器編寫的程序,而無須修改。這樣,虛擬機(jī)器的一個(gè)優(yōu)點(diǎn)是不管任何一個(gè)計(jì)算機(jī)程序的起源或操作要求如何,操作語義學(xué)從一個(gè)計(jì)算機(jī)程序到下一個(gè)計(jì)算機(jī)程序都保持不變。
計(jì)算機(jī)網(wǎng)絡(luò)取決于在其上建立網(wǎng)絡(luò)的基礎(chǔ)物理硬件與網(wǎng)絡(luò)協(xié)議。這些協(xié)議又取決于它們在其上被執(zhí)行的基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)。結(jié)果,必須為將在其上使用網(wǎng)絡(luò)程序的每個(gè)網(wǎng)絡(luò)重寫這些網(wǎng)絡(luò)程序。此外,為使兩臺(tái)機(jī)器在網(wǎng)絡(luò)上通信,每臺(tái)機(jī)器必須理解如何在特殊的網(wǎng)絡(luò)上進(jìn)行通信,即,每臺(tái)機(jī)器必須具有用于通信的合適的網(wǎng)絡(luò)驅(qū)動(dòng)器。
已在計(jì)算機(jī)網(wǎng)絡(luò)中被執(zhí)行的一個(gè)層次的抽象是使用TCP/IP協(xié)議堆棧,它根據(jù)OSI 7層網(wǎng)絡(luò)模型來加以執(zhí)行。TCP/IP使網(wǎng)絡(luò)協(xié)議的一些概念抽象化,允許都理解TCP/IP協(xié)議的兩臺(tái)機(jī)器相互進(jìn)行有效的通信。但是,即使使用TCP/IP,在某個(gè)層次上,每臺(tái)機(jī)器也必須能夠理解網(wǎng)絡(luò)路由發(fā)送,以及拓?fù)鋵W(xué)、聯(lián)編和DNS分解。也就是說,網(wǎng)絡(luò)上的每臺(tái)計(jì)算機(jī)仍然必須安裝實(shí)質(zhì)的網(wǎng)絡(luò)支持公用程序,以便在網(wǎng)絡(luò)上進(jìn)行有效的通信,因?yàn)镺SI模型只是使各臺(tái)機(jī)器之間的物理電線虛擬化,而不是使各臺(tái)機(jī)器通過其進(jìn)行通信的網(wǎng)絡(luò)虛擬化。
例如,TCP/IP要求應(yīng)用程序理解端口和IP地址的概念。端口和IP地址又要求應(yīng)用程序理解DNS名稱分解、網(wǎng)絡(luò)拓?fù)鋵W(xué)、傳輸帶寬和終端對終端路由發(fā)送。這樣,雖然簡化了用于按可靠的方式來交換規(guī)則序列的字節(jié)的模型,但應(yīng)用程序仍然必須直接處理許多網(wǎng)絡(luò)層次的概念和細(xì)節(jié)。OSI模型不按網(wǎng)絡(luò)應(yīng)用程序的需要來對較高層次的構(gòu)造進(jìn)行尋址(例如,命名、路由發(fā)送和服務(wù)質(zhì)量)。
傳統(tǒng)網(wǎng)絡(luò)的另一個(gè)缺點(diǎn)是在發(fā)生消息錯(cuò)誤或網(wǎng)絡(luò)故障之后,無法適應(yīng)和修復(fù)。當(dāng)增加、移動(dòng)或移走機(jī)器時(shí),目前的網(wǎng)絡(luò)不能容易地進(jìn)行自動(dòng)適應(yīng)。也就是說,用戶通常必須編輯路由發(fā)送表格,以便將變化通知給網(wǎng)絡(luò)。
此外,除了通過保養(yǎng)執(zhí)行相同功能的多余的機(jī)器以外,無法容易地修理好網(wǎng)絡(luò)故障。也就是說,如果第一臺(tái)機(jī)器發(fā)生故障,那么,第二臺(tái)(備用)機(jī)器接管第一臺(tái)機(jī)器的功能。但是,如果第二臺(tái)機(jī)器隨后又發(fā)生故障,并且沒有執(zhí)行相同功能的第三臺(tái)機(jī)器,則網(wǎng)絡(luò)將會(huì)因此而遭受損失。已知的網(wǎng)絡(luò)不具備自我復(fù)原的功用。因此,需要一種能夠克服這些問題的高級網(wǎng)絡(luò)。
傳統(tǒng)網(wǎng)絡(luò)的另一個(gè)缺點(diǎn)是無法根據(jù)消息內(nèi)容來動(dòng)態(tài)地路由發(fā)送網(wǎng)絡(luò)消息。Cisco系統(tǒng)公司的已知路由器能夠根據(jù)預(yù)先定義的標(biāo)準(zhǔn)來路由發(fā)送消息,但不可進(jìn)行動(dòng)態(tài)編程以根據(jù)消息內(nèi)容來支持用戶可擴(kuò)展的路由發(fā)送。除了傳統(tǒng)的路由發(fā)送和QoS要求以外,這個(gè)缺點(diǎn)使它們不適用于應(yīng)用程序在其中可以控制消息轉(zhuǎn)換和處理的系統(tǒng)。
提供解決部分或所有以上被識別的問題的一種方法和系統(tǒng),這將會(huì)是一大進(jìn)步。
發(fā)明概述本發(fā)明的各個(gè)方面可以被用來使網(wǎng)絡(luò)虛擬化,以允許程序設(shè)計(jì)員編寫平臺(tái)獨(dú)立的網(wǎng)絡(luò)計(jì)算機(jī)應(yīng)用程序。通過在提供網(wǎng)絡(luò)服務(wù)的應(yīng)用程序與執(zhí)行那個(gè)代碼的系統(tǒng)的基礎(chǔ)網(wǎng)絡(luò)之間(例如,在OSI網(wǎng)絡(luò)模型中的層6與層7之間)增加一個(gè)抽象層(軟件或硬件),可以創(chuàng)建虛擬網(wǎng)絡(luò)??梢圆迦胍粋€(gè)或多個(gè)虛擬化部件,包括同步、事件綜合(eventing)、通信聯(lián)系、命名、組群、尋址和路由發(fā)送部件。
通過使聯(lián)網(wǎng)系統(tǒng)抽象化,網(wǎng)絡(luò)可以更有效、更安全地將各種服務(wù)本能地提供給建立在其頂部的應(yīng)用程序和服務(wù)。例如,可以容易地提供各種服務(wù)(例如,可靠性、安全、平臺(tái)獨(dú)立、按比例增加(scale-out)、邊緣聯(lián)網(wǎng)和位置獨(dú)立)。系統(tǒng)也可以適應(yīng)物理拓?fù)渥兓⒆詣?dòng)從故障“復(fù)原”。虛擬網(wǎng)絡(luò)負(fù)責(zé)將代碼映射到網(wǎng)絡(luò)的物理拓?fù)渖?,并?fù)責(zé)顯然地適應(yīng)該映射。此外,開發(fā)者可以從隔離其各種服務(wù)中得益。
通過將虛擬網(wǎng)絡(luò)與虛擬機(jī)器結(jié)合起來,可以創(chuàng)建一種分布式可劃分虛擬網(wǎng)絡(luò),其中,應(yīng)用程序可以被編寫一次,并可以在任何機(jī)器上運(yùn)行。也就是說,在運(yùn)行虛擬機(jī)器的計(jì)算機(jī)上的、為用于虛擬網(wǎng)絡(luò)而編寫的網(wǎng)絡(luò)應(yīng)用程序不需要被加以重寫,因?yàn)樗軌蛟诓僮飨嗤奶摂M機(jī)器的任何機(jī)器上運(yùn)行并被連接到虛擬網(wǎng)絡(luò)。
虛擬網(wǎng)絡(luò)也提供適應(yīng)的重新配置性能。假設(shè)機(jī)器A在網(wǎng)絡(luò)上將一個(gè)消息路由發(fā)送給機(jī)器B,則B回復(fù)給機(jī)器A。但是,在機(jī)器A能夠?qū)⒌诙€(gè)消息路由發(fā)送給機(jī)器B之前,機(jī)器B移動(dòng)(例如,到另一個(gè)IP地址)。根據(jù)一個(gè)實(shí)施例,虛擬網(wǎng)絡(luò)可以分辨自己并適應(yīng)改變的位置,以便仍然將消息傳遞給B的新位置。地址的變化可能會(huì)很明顯,以便在網(wǎng)絡(luò)上運(yùn)行的應(yīng)用程序永遠(yuǎn)不知道(或不需要知道)B的位置曾發(fā)生過變化。不對每臺(tái)機(jī)器可能會(huì)移動(dòng)到的那套位置進(jìn)行限制,因?yàn)槌橄笫菑臋C(jī)器層次移動(dòng)到網(wǎng)絡(luò)層次。在移動(dòng)設(shè)備之后,一旦它識別出自己到新位置處的網(wǎng)絡(luò),虛擬網(wǎng)絡(luò)就能夠更新自己,以便到機(jī)器的路由發(fā)送可以繼續(xù)進(jìn)行操作,而不會(huì)發(fā)生中斷。該能力可擴(kuò)展當(dāng)前從單個(gè)管理領(lǐng)域到多個(gè)管理領(lǐng)域內(nèi)的內(nèi)容,使位置活動(dòng)性能夠跨組織進(jìn)行擴(kuò)展。
本發(fā)明的第一個(gè)實(shí)施例提供了一種裝置,該裝置包括路由發(fā)送并調(diào)度消息的一個(gè)消息調(diào)度程序。每個(gè)消息根據(jù)該消息的內(nèi)容的任意部分來被路由發(fā)送。也有一種界面,網(wǎng)絡(luò)應(yīng)用程序通過該界面與消息調(diào)度程序進(jìn)行通信,以定義在其上路由發(fā)送消息的消息的內(nèi)容的任意部分。
在本發(fā)明的另一個(gè)實(shí)施例中,有一種數(shù)據(jù)處理裝置,該裝置包括一個(gè)消息調(diào)度程序模塊、用于將消息調(diào)度程序與傳輸協(xié)議接合的一個(gè)傳輸適配器、應(yīng)用程序通過其與消息調(diào)度程序進(jìn)行通信的一個(gè)界面,以及被存儲(chǔ)的規(guī)則,這些被存儲(chǔ)的規(guī)則指示消息調(diào)度程序根據(jù)所述第一個(gè)網(wǎng)絡(luò)消息的第一個(gè)屬性來路由發(fā)送第一個(gè)網(wǎng)絡(luò)消息,并根據(jù)第二個(gè)網(wǎng)絡(luò)消息的第二個(gè)屬性(不同于第一個(gè)屬性)來路由發(fā)送第二個(gè)網(wǎng)絡(luò)消息。從每個(gè)網(wǎng)絡(luò)消息中所包含的一套標(biāo)題和數(shù)據(jù)中選擇第一個(gè)和第二個(gè)屬性。
另一個(gè)實(shí)施例提供了用于路由發(fā)送網(wǎng)絡(luò)消息的一種方法。消息調(diào)度程序根據(jù)第一個(gè)網(wǎng)絡(luò)消息的第一個(gè)屬性來路由發(fā)送第一個(gè)網(wǎng)絡(luò)消息。消息調(diào)度程序根據(jù)第二個(gè)網(wǎng)絡(luò)消息的第二個(gè)屬性(不同于第一個(gè)屬性)來路由發(fā)送第二個(gè)網(wǎng)絡(luò)消息。第一個(gè)和第二個(gè)屬性可以是從每個(gè)網(wǎng)絡(luò)消息的一套標(biāo)題和數(shù)據(jù)中選擇的任何字段。
在另一個(gè)實(shí)施例中,有一種存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的網(wǎng)絡(luò)路由器。當(dāng)被路由器執(zhí)行時(shí),這些指令執(zhí)行一套步驟。網(wǎng)絡(luò)路由器存儲(chǔ)從網(wǎng)絡(luò)應(yīng)用程序接收的路由發(fā)送信息。路由發(fā)送信息包括一個(gè)消息字段、一個(gè)字段條件和一個(gè)消息指令。通過將網(wǎng)絡(luò)消息與被存儲(chǔ)的路由發(fā)送信息進(jìn)行比較,網(wǎng)絡(luò)路由器接收并處理網(wǎng)絡(luò)消息。當(dāng)所接收消息的消息字段符合字段條件時(shí),網(wǎng)絡(luò)路由器執(zhí)行消息指令。
本發(fā)明的另一個(gè)實(shí)施例提供了虛擬計(jì)算機(jī)網(wǎng)絡(luò)。該計(jì)算網(wǎng)絡(luò)包括多臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)配置有在傳輸層協(xié)議與網(wǎng)絡(luò)協(xié)議之間轉(zhuǎn)換消息的至少一個(gè)傳輸適配器,以及根據(jù)消息的內(nèi)容的一個(gè)任意部分來路由發(fā)送并調(diào)度消息的一個(gè)消息調(diào)度程序。每臺(tái)計(jì)算機(jī)中的消息調(diào)度程序路由發(fā)送使用傳輸適配器的傳輸層協(xié)議上的虛擬網(wǎng)絡(luò)協(xié)議中的消息。
在本發(fā)明的另一個(gè)實(shí)施例中,有一種虛擬網(wǎng)絡(luò),它包括被插入在OSI協(xié)議堆棧的層6與層7之間的至少一個(gè)虛擬部件。
附圖簡述
圖1展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬網(wǎng)絡(luò)中的兩個(gè)節(jié)點(diǎn)的方框圖。
圖2展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬網(wǎng)絡(luò)調(diào)度程序的方框圖。
圖3展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的可編寫消息協(xié)議。
圖4展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬網(wǎng)絡(luò)的方框圖。
圖5展示了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的虛擬網(wǎng)絡(luò)的方框圖。
圖6展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、存儲(chǔ)計(jì)算機(jī)軟件的計(jì)算機(jī)可讀介質(zhì)的方框圖。
圖7展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、由虛擬網(wǎng)絡(luò)提供的一套服務(wù)。
圖8展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、執(zhí)行消息傳遞的流程圖。
圖9展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、被修改的OSI 7層網(wǎng)絡(luò)協(xié)議堆棧。
圖10展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、通過虛擬網(wǎng)絡(luò)調(diào)度程序的數(shù)據(jù)流。
圖11展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)絡(luò)結(jié)構(gòu)。
圖12展示了一張樣品虛擬映射表格。
圖13展示了在系統(tǒng)已適應(yīng)機(jī)器故障之后圖12的樣品虛擬映射表格。
發(fā)明的詳細(xì)描述通過結(jié)合通用使能部件來使用虛擬位置,可以實(shí)現(xiàn)虛擬網(wǎng)絡(luò)中的消息分解,它被稱作“虛擬網(wǎng)絡(luò)調(diào)度程序(VND)”,并被包括在加入虛擬網(wǎng)絡(luò)的每種資源中。資源可以被定義為“任何消息端點(diǎn)”。參考圖1,為虛擬網(wǎng)絡(luò)113上的每個(gè)設(shè)備101-102提供一個(gè)虛擬地址,它的實(shí)際地址(例如,IP地址、MAC地址、URL或其他位置標(biāo)識符)可以被映射到該虛擬地址。VND 103可以包括被并入每個(gè)設(shè)備的一個(gè)路由器模塊,不管其上安裝路由器的設(shè)備如何,每個(gè)設(shè)備都使用硬件或軟件來以相同的方式響應(yīng)于消息。也就是說,路由器模塊是獨(dú)立的設(shè)備。VND 103包括消息處理程序109,下文將進(jìn)一步加以描述。
消息處理程序109可以隨機(jī)器而變化,或者,它們可能跨越各臺(tái)機(jī)器而保持一致。每個(gè)消息處理程序可以為特殊類型的機(jī)器而加以明確的配置,也可以被配置成明確地操作或不操作任何給定的機(jī)器。一些消息處理程序可以被廣泛地部署(例如,消息標(biāo)題處理程序和加密處理程序),而其他的消息處理程序只可以被部署在單臺(tái)機(jī)器上。
每個(gè)VND負(fù)責(zé)執(zhí)行路由發(fā)送功能和調(diào)度功能。路由發(fā)送是將消息發(fā)到其目標(biāo)設(shè)備的過程。調(diào)度是當(dāng)接收到消息時(shí)響應(yīng)于消息的接收而執(zhí)行適當(dāng)?shù)奶幚沓绦?例如,軟件模塊、功能、應(yīng)用程序、例行程序等)或其他可執(zhí)行軟件的過程。VND執(zhí)行的處理程序可能是確定VND應(yīng)該如何處理和路由消息的路由發(fā)送處理程序,也可能是可將消息路由發(fā)送給在設(shè)備上運(yùn)行的應(yīng)用程序的處理程序。
在一個(gè)實(shí)施例中,VND可以路由發(fā)送和調(diào)度開放的、可擴(kuò)展的通信聯(lián)系協(xié)議中的基于XML的消息,不管每個(gè)特定的應(yīng)用程序使用的操作系統(tǒng)、目標(biāo)模型或語言如何,該協(xié)議都允許分布式分散應(yīng)用程序交換信息。可以采用支持虛擬網(wǎng)絡(luò)所用的傳輸?shù)娜魏螀f(xié)議??梢越Y(jié)合網(wǎng)絡(luò)傳輸協(xié)議107(例如,TCP、IP、UDP、HTTP、SMTP、SOAP-RP等)來使用VND。當(dāng)經(jīng)由任何傳輸協(xié)議在一個(gè)位置處接收消息時(shí),消息內(nèi)容由傳輸適配器105提取并被輸入VND 103。每個(gè)傳輸適配器將根據(jù)一個(gè)預(yù)先定義的傳輸協(xié)議而被格式化的消息作為輸入來接收,并轉(zhuǎn)換(或除去)消息標(biāo)題,以便遵守虛擬網(wǎng)絡(luò)協(xié)議。如圖1所示,每個(gè)VND 103可以被連接到多個(gè)傳輸適配器TA1-TAn,用于多個(gè)傳輸協(xié)議T1-Tn。這允許每個(gè)VND可以跨越多次傳輸來被使用,而無須將虛擬網(wǎng)絡(luò)與單個(gè)傳輸協(xié)議聯(lián)系在一起。
通過使用多個(gè)傳輸協(xié)議和協(xié)議適配器,將VND 103放置在每個(gè)設(shè)備上可提供一個(gè)平臺(tái)。通過該平臺(tái)并使用虛擬網(wǎng)絡(luò)協(xié)議,任何應(yīng)用程序可以顯然地與獨(dú)立于傳輸層協(xié)議的另一個(gè)應(yīng)用程序進(jìn)行通信。在該技術(shù)領(lǐng)域中已知一些特殊的應(yīng)用程序,這些應(yīng)用程序已經(jīng)被配置成在多個(gè)協(xié)議上進(jìn)行通信。但是,每個(gè)這樣的應(yīng)用程序必須被加以明確的配置。通過使用這里所描述的虛擬網(wǎng)絡(luò),應(yīng)用程序可以在多個(gè)協(xié)議上進(jìn)行通信,而無須任何特殊的配置,甚至不會(huì)發(fā)現(xiàn)正在多個(gè)協(xié)議上進(jìn)行通信傳輸。路由發(fā)送每個(gè)消息的每個(gè)特殊設(shè)備中的VND 103作出有關(guān)在其上路由發(fā)送消息的協(xié)議的決定。關(guān)于每個(gè)消息,VND可以根據(jù)一個(gè)或多個(gè)預(yù)先定義的協(xié)議政策來確定使用哪個(gè)協(xié)議。換句話說,根據(jù)應(yīng)用程序或網(wǎng)絡(luò)服務(wù)的需要和/或要求,所使用的協(xié)議可能取決于驅(qū)動(dòng)特定消息的VND的應(yīng)用程序或網(wǎng)絡(luò)服務(wù)。
當(dāng)虛擬網(wǎng)絡(luò)研制或需要一個(gè)新的傳輸協(xié)議時(shí),可以創(chuàng)建和安裝新的傳輸適配器,用于每個(gè)VND。通過這種方法,虛擬網(wǎng)絡(luò)可以利用新的傳輸協(xié)議,而不要求對將被置入虛擬網(wǎng)絡(luò)的每個(gè)應(yīng)用程序的每個(gè)傳輸協(xié)議進(jìn)行支持。而是為每個(gè)VND提供對新的傳輸協(xié)議的支持,它包含指示何時(shí)與如何結(jié)合新的傳輸適配器來使用新的傳輸協(xié)議的邏輯。
VND統(tǒng)一單臺(tái)機(jī)器上的局部調(diào)度和遠(yuǎn)程調(diào)度。與其中只有規(guī)定的機(jī)器或?qū)S脵C(jī)器用作路由器的傳統(tǒng)網(wǎng)絡(luò)不同,每個(gè)設(shè)備通常用作虛擬網(wǎng)絡(luò)中的路由器。例如,設(shè)備可能會(huì)接收一個(gè)消息,只是用于確定該消息實(shí)際上應(yīng)該在網(wǎng)絡(luò)中的其他某個(gè)地方被傳遞。當(dāng)發(fā)生這種情況時(shí),機(jī)器將該消息發(fā)給正確的接收者,或發(fā)給機(jī)器根據(jù)其目前的路由發(fā)送表格和規(guī)則而認(rèn)為是正確的那個(gè)接收者,而不是(隨意地)將錯(cuò)誤消息返回給消息路由發(fā)送者。
圖10展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的一個(gè)消息路由發(fā)送例子。VND 1001經(jīng)由傳輸適配器1005a接收引入的消息1003,F(xiàn)ROM字段被填充1.2.3.4。VND1001可以包括多個(gè)傳輸適配器1005a、1005b和1005c,用于多個(gè)傳輸協(xié)議。VND 1001使用處理程序1007-1013來處理所接收的消息1003,這些處理程序中的每個(gè)處理程序指示VND 1003根據(jù)預(yù)先定義的標(biāo)準(zhǔn)來路由發(fā)送和/或調(diào)度消息。VND 1001根據(jù)處理程序1007將消息的TO字段修改為7.7.4.4,并通過傳輸適配器1005c來輸出所路由發(fā)送的消息1015。根據(jù)指出1.2.3.4的引入的消息1003的FROM字段,所路由發(fā)送的消息1015包括被填充有目的地地址7.7.4.4的一個(gè)TO字段。
由于每個(gè)設(shè)備都用作路由器,因此,可以執(zhí)行自我復(fù)原系統(tǒng)。當(dāng)一臺(tái)機(jī)器發(fā)生故障時(shí),其他機(jī)器將會(huì)自動(dòng)補(bǔ)償并找到通過其路由發(fā)送消息的其他路徑,從而使虛擬網(wǎng)絡(luò)故障可以被容忍。在一個(gè)實(shí)施例中,可以將機(jī)器放在冗余組群中。冗余組群中的每臺(tái)機(jī)器都能夠檢測到組群中任何其他的機(jī)器已發(fā)生故障并離開組群。然后,剩余的機(jī)器可以更新路由發(fā)送消息的一個(gè)或多個(gè)消息處理程序中的信息,以避免使用已知發(fā)生故障的機(jī)器。這樣,機(jī)器可以根據(jù)其路由發(fā)送與邏輯表格中被編碼的指令來補(bǔ)償網(wǎng)絡(luò)故障和錯(cuò)誤,這將在下文進(jìn)一步加以描述。在另一個(gè)實(shí)施例中,一個(gè)或多個(gè)機(jī)器子系統(tǒng)可能正在對網(wǎng)絡(luò)實(shí)行監(jiān)控,以確定最佳路徑和失敗的路徑。
參考圖2,處理程序109包含指示VND 103如何處理消息(即,如何處理引入的消息、如何對消息作出響應(yīng),以及如何路由發(fā)送消息)的邏輯。例如,第一個(gè)處理程序109a可以執(zhí)行病毒檢查,第二個(gè)處理程序109b可以執(zhí)行安全功能,第三個(gè)處理程序109c可以執(zhí)行可靠性功能等。如圖2所示,109n可以使用無限數(shù)量的處理程序109。通過在任何給定的時(shí)間增加一個(gè)新的處理程序109,可以把新的功能性和性能加到虛擬網(wǎng)絡(luò),而無須修改每臺(tái)機(jī)器上的網(wǎng)絡(luò)應(yīng)用程序。所處理的消息通過邏輯接收者端口111被輸出。邏輯端點(diǎn)可以被映射到設(shè)備(消息正從那里被路由發(fā)送)上的任何物理端口。
可以創(chuàng)建VND處理程序109,以便在虛擬網(wǎng)絡(luò)中,應(yīng)用程序網(wǎng)絡(luò)為每個(gè)應(yīng)用程序呈現(xiàn)一套邏輯端點(diǎn)(即設(shè)備)。應(yīng)用程序可以經(jīng)由使用非統(tǒng)一的語義規(guī)則的消息來與端點(diǎn)進(jìn)行通信。例如,第一個(gè)應(yīng)用程序可以根據(jù)第一種消息格式(例如,標(biāo)題和數(shù)據(jù))在網(wǎng)絡(luò)上將消息路由發(fā)送給第二個(gè)應(yīng)用程序。一個(gè)或多個(gè)處理程序可以修改消息句法,以便在第二個(gè)應(yīng)用程序接收該消息之前對其進(jìn)行修改,并且該消息出現(xiàn)在一個(gè)不同的消息句法中。端點(diǎn)可以被映射到在每個(gè)端點(diǎn)處可能有不同的實(shí)施的物理網(wǎng)絡(luò)上(即,一旦公開具備規(guī)格,不同的賣主就可以提供操作虛擬網(wǎng)絡(luò)的軟件和硬件),并可以使用各個(gè)端點(diǎn)之間的非統(tǒng)一的傳輸協(xié)議來進(jìn)行通信。
通過使用以上描述的網(wǎng)絡(luò)平臺(tái),可以將虛擬網(wǎng)絡(luò)配置成能進(jìn)行自我組織。也就是說,可以將虛擬網(wǎng)絡(luò)配置成響應(yīng)于網(wǎng)絡(luò)上的規(guī)定事件而進(jìn)行自我恢復(fù)、適應(yīng)或改組。事件會(huì)是引發(fā)網(wǎng)絡(luò)自我適應(yīng)的任何預(yù)先定義的條件,包括不發(fā)生某個(gè)條件。例如,當(dāng)網(wǎng)絡(luò)檢測到它的一個(gè)節(jié)點(diǎn)已發(fā)生故障時(shí),可以將網(wǎng)絡(luò)配置成進(jìn)行改組。當(dāng)發(fā)生這種情況時(shí),一個(gè)或多個(gè)處理程序可以指示VND將信息包路由發(fā)送到一個(gè)新的位置。在另一個(gè)例子中,當(dāng)網(wǎng)絡(luò)路徑上的負(fù)荷很高時(shí),VNDs可以在通信量較少的網(wǎng)絡(luò)路徑上路由發(fā)送消息?;蛘?,用戶可以經(jīng)由圖解用戶界面或其他配置界面改組虛擬網(wǎng)絡(luò)。
可以提供應(yīng)用程序編程界面(API)115,通過API 115,應(yīng)用程序可以與VND 103接合??梢詾橛?jì)算機(jī)的執(zhí)行引擎(例如,操作系統(tǒng)或虛擬機(jī)器)編寫應(yīng)用程序,計(jì)算機(jī)的執(zhí)行引擎使用API 115進(jìn)行連接,以便根據(jù)消息內(nèi)容和/或根據(jù)曾在其上接收每個(gè)消息的傳輸協(xié)議來配置VND,以響應(yīng)于每個(gè)消息。VND調(diào)停協(xié)議與基礎(chǔ)的執(zhí)行引擎之間的相互作用。
圖3展示了本發(fā)明的一個(gè)實(shí)施例中所使用的一種可編寫消息格式。每個(gè)消息301包括一個(gè)標(biāo)題部分303和一個(gè)數(shù)據(jù)部分305。標(biāo)題包括與數(shù)據(jù)部分中所包含的信息有關(guān)的信息。也就是說,標(biāo)題是屬于消息301的數(shù)據(jù)部分305的一種元數(shù)據(jù)。不要求標(biāo)題部分和數(shù)據(jù)部分有固定的長度。標(biāo)題可以包括路由發(fā)送標(biāo)題307、可靠性標(biāo)題309、安全標(biāo)題311和應(yīng)用程序標(biāo)題313。路由發(fā)送標(biāo)題307可以包括(例如)一個(gè)路由發(fā)送者的地址、一個(gè)接收者的地址,以及針對路由發(fā)送過程的任何其他的信息。地址字段可以被填充有地址所指的實(shí)體或設(shè)備的虛擬地址。虛擬地址是物理地址或其他邏輯地址可以被映射到那里的邏輯地址??煽啃詷?biāo)題309可以包括確保信息包到達(dá)其預(yù)定目的地的任何標(biāo)題。安全標(biāo)題311可以包括確保消息內(nèi)容不泄露給非預(yù)定的接收者的任何標(biāo)題。根據(jù)特定應(yīng)用程序的需要,完整標(biāo)題可以與安全標(biāo)題或可靠性標(biāo)題包括在一起。如網(wǎng)絡(luò)應(yīng)用程序所定義的,應(yīng)用程序標(biāo)題313可以包括以前不加以說明的任何標(biāo)題。
在一個(gè)實(shí)施例中,消息協(xié)議是可編寫協(xié)議,體現(xiàn)為應(yīng)用程序可以按需要增加各個(gè)新的功能方面,而不會(huì)中斷對先前存在的消息功能性的處理。在一個(gè)實(shí)施例中,標(biāo)題被用來提供新的功能方面??梢詫⑿碌墓δ軐傩源鎯?chǔ)在一個(gè)或多個(gè)消息標(biāo)題中。也就是說,新標(biāo)題可以被加到現(xiàn)存的消息中,而不會(huì)打擾對前面消息的處理,這與傳統(tǒng)的消息協(xié)議組套不同,通過傳統(tǒng)的消息協(xié)議組套,一個(gè)消息協(xié)議封裝另一個(gè)消息協(xié)議,以便包括一個(gè)新的標(biāo)題(或功能屬性)。這樣,消息協(xié)議是可擴(kuò)展的,體現(xiàn)為應(yīng)用程序可以按需要來增加或除去額外的標(biāo)題字段,以提供新的功能性。這使網(wǎng)絡(luò)應(yīng)用程序能夠定義新的標(biāo)題字段并將其并入消息格式,而不要求對每個(gè)網(wǎng)絡(luò)應(yīng)用程序重新編程以理解每個(gè)新的消息標(biāo)題。每個(gè)應(yīng)用程序只使用配置那個(gè)特殊的應(yīng)用程序來理解的那些標(biāo)題。可以忽略它不理解或無法進(jìn)行適當(dāng)解釋的那些標(biāo)題。
可編寫協(xié)議可以是被修改的、基于XML的協(xié)議,也可以是被修改的TCP協(xié)議(由此,額外的標(biāo)題被插入每個(gè)TCP消息的數(shù)據(jù)部分)。當(dāng)應(yīng)用程序?qū)⒁粋€(gè)新標(biāo)題加到消息中時(shí),應(yīng)用程序可以將消息路由發(fā)送給一個(gè)或多個(gè)VNDs,它指示每個(gè)VND根據(jù)新標(biāo)題來創(chuàng)建一個(gè)或多個(gè)處理程序,以進(jìn)行路由發(fā)送和/或調(diào)度。
每個(gè)VND 103可以根據(jù)每個(gè)消息內(nèi)的任何標(biāo)題和/或數(shù)據(jù)字段,或根據(jù)每個(gè)消息內(nèi)的標(biāo)題和/或數(shù)據(jù)字段的任何組合,來作出路由發(fā)送決定。可以使用額外類型或較少類型的標(biāo)題。每個(gè)VND 103中的每個(gè)處理程序提供關(guān)于根據(jù)消息內(nèi)容來進(jìn)行路由發(fā)送的指令。
例如,應(yīng)用程序可以定義并包括每個(gè)消息中的一個(gè)“動(dòng)作”標(biāo)題,以指出用戶要求接收者采取的動(dòng)作。如果網(wǎng)絡(luò)用戶規(guī)定動(dòng)作預(yù)訂并將消息數(shù)據(jù)305設(shè)置為“棒球分?jǐn)?shù)”,則該消息可以向第一個(gè)服務(wù)器指出路由發(fā)送用戶想訂閱棒球分?jǐn)?shù)電子郵件清單。此外,動(dòng)作字段可以由虛擬功能名稱來填充,映射到在其上接收它的每臺(tái)機(jī)器處的一項(xiàng)特殊的功能。如果網(wǎng)絡(luò)用戶規(guī)定動(dòng)作預(yù)訂并將消息數(shù)據(jù)305設(shè)置為“MSDN”,則該消息可以向第二個(gè)服務(wù)器指出路由發(fā)送用戶想訂閱標(biāo)題為“MSDN雜志”的物理雜志。這樣,如兩個(gè)應(yīng)用程序各自的預(yù)訂功能所定義的,兩個(gè)應(yīng)用程序都可以使用動(dòng)作預(yù)訂——每個(gè)應(yīng)用程序采用一種不同的方式。
在另一個(gè)例子中,參考圖11,假設(shè)應(yīng)用程序服務(wù)供應(yīng)商(ASP)為顧客提供三個(gè)等級的服務(wù)。根據(jù)顧客已預(yù)訂的一個(gè)等級的服務(wù),ASP可以將消息路由發(fā)送給三個(gè)不同的服務(wù)器和/或應(yīng)用程序之一。ASP可以定義和使用被稱為“服務(wù)_等級”的一個(gè)新的應(yīng)用程序標(biāo)題或類似物,以便為每個(gè)顧客指明一個(gè)等級的服務(wù)??蛻魬?yīng)用程序可以用金、銀或銅之一來填充服務(wù)等級字段,以指明特殊顧客已支付和/或預(yù)訂的服務(wù)等級。主服務(wù)器1105可以經(jīng)由網(wǎng)絡(luò)1103從顧客1101那里接收所有引入的消息。然后,主服務(wù)器調(diào)度程序(例如,VND 103)可以根據(jù)服務(wù)等級來路由發(fā)送引入的顧客消息。定購金服務(wù)的顧客可以被路由發(fā)送到快速響應(yīng)服務(wù)器1107(支持一整套服務(wù)的一種服務(wù)器)或其他高級等級服務(wù)器。定購銀服務(wù)的顧客可以被路由發(fā)送到中速響應(yīng)服務(wù)器1109(除了基本服務(wù)以外還支持所選服務(wù)的一種服務(wù)器)或其他中等服務(wù)等級的服務(wù)器。定購銅服務(wù)的顧客可以被路由發(fā)送到緩慢響應(yīng)服務(wù)器1111(只支持基本服務(wù)的一種服務(wù)器)或其他低服務(wù)等級的服務(wù)器。
在另一個(gè)例子中,應(yīng)用程序可以包括被命名為“地理區(qū)域”的、與路由發(fā)送用戶的地理位置有關(guān)的一個(gè)標(biāo)題字段。然后,可以根據(jù)路由發(fā)送者的物理位置來作出路由發(fā)送決定,以便將消息路由給離路由發(fā)送用戶最近的服務(wù)器。例如,在維持兩個(gè)服務(wù)器的系統(tǒng)中,當(dāng)?shù)乩砦恢脴?biāo)題字段指出路由發(fā)送用戶位于俄勒岡州的波特蘭時(shí),設(shè)備可以將消息路由發(fā)送給位于華盛頓州的西雅圖的第一個(gè)服務(wù)器;當(dāng)?shù)乩砦恢脴?biāo)題字段指出路由發(fā)送用戶位于密歇根州的底特律時(shí),設(shè)備可以將消息路由發(fā)送給位于伊利諾斯州的芝加哥的第二個(gè)服務(wù)器。這避免了當(dāng)附近有相同的服務(wù)器時(shí)將消息路由發(fā)送給遠(yuǎn)處的服務(wù)器。
在另一個(gè)例子中,當(dāng)已對一臺(tái)或多臺(tái)機(jī)器發(fā)起拒絕服務(wù)攻擊時(shí),可以創(chuàng)建一個(gè)處理程序,該處理程序根據(jù)每個(gè)消息的“證書”字段來拒絕所有消息?!白C書”字段可能等同于、也可能不等同于消息的“來自”字段。例如,“證書”字段可以包括路由發(fā)送用戶的姓名,以及證明路由發(fā)送者是指名道姓的人的鑒定;而“來自”字段可以只包括路由發(fā)送者的IP地址或邏輯名稱。當(dāng)消息的“證書”字段包含有關(guān)路由發(fā)送機(jī)器的適當(dāng)?shù)淖C書時(shí),處理程序可以被配置成接受該消息。當(dāng)拒絕消息時(shí),可以完全忽略它,釋放資源以響應(yīng)于合法的消息。
在另一個(gè)例子中,參考圖4,可以將虛擬網(wǎng)絡(luò)配置成自我復(fù)原。位于防火墻403后面的機(jī)器401可以接收網(wǎng)絡(luò)連接404上的引入的消息。機(jī)器401可以經(jīng)由虛擬網(wǎng)絡(luò)(即,如這里所討論的,配置有適應(yīng)性調(diào)度程序和傳輸適配器的物理網(wǎng)絡(luò))被連接到其他機(jī)器407、409和411。每臺(tái)機(jī)器401、407、409和411包括VND 405。每臺(tái)機(jī)器401、407、409和411可以存儲(chǔ)一個(gè)或多個(gè)虛擬位置。也就是說,機(jī)器1可以存儲(chǔ)并執(zhí)行被稱作“alpha”的服務(wù)器。機(jī)器2可以收容并存儲(chǔ)被稱作“bravo”的服務(wù)器。機(jī)器3可以收容并存儲(chǔ)被稱作“charlie”、“delta”和“echo”的服務(wù)器。機(jī)器4可以收容并存儲(chǔ)被稱作“foxtrot”和“golf”的服務(wù)器。虛擬網(wǎng)絡(luò)中的每個(gè)VND配置有處理程序,這些處理程序?qū)⒚總€(gè)虛擬位置映射到其各自的物理機(jī)器。例如,當(dāng)設(shè)備401接收朝向虛擬位置bravo的消息時(shí),設(shè)備401的VND中的虛擬位置映射處理程序指示VND將該消息路由發(fā)送給機(jī)器2。但是,由于設(shè)備401是防火墻處的引入來源,因此,機(jī)器1中的VND 405可以配置有額外的處理程序,來首先檢查所有引入的消息是否有病毒,再執(zhí)行其他的安全措施。
為了使虛擬網(wǎng)絡(luò)能夠自我復(fù)原,可以創(chuàng)建處理程序,來定期輪詢另一臺(tái)機(jī)器或服務(wù)器,以確定其網(wǎng)絡(luò)狀況。也就是說,在服務(wù)器“golf”是“echo”的備用服務(wù)器的情況下,可以將機(jī)器4配置成按定期時(shí)間間隔來輪詢機(jī)器3,以便確認(rèn)機(jī)器3(明確地說是服務(wù)器“echo”)在發(fā)揮作用。當(dāng)機(jī)器4沒有在規(guī)定數(shù)量的時(shí)間(例如,10秒)內(nèi)從機(jī)器3(或“echo”)接收到確認(rèn)時(shí),機(jī)器4可以啟動(dòng)一個(gè)故障(failover)序列,由此,機(jī)器4開始將消息路由發(fā)送給每臺(tái)機(jī)器的VND,向每個(gè)VND指出當(dāng)為機(jī)器3上的“echo”接收到消息時(shí),該消息應(yīng)該被路由發(fā)送給機(jī)器4上的“golf”。
也通過使用圖4中所描述的結(jié)構(gòu),當(dāng)服務(wù)器從一臺(tái)機(jī)器移動(dòng)到另一臺(tái)機(jī)器(例如,從一個(gè)IP地址到另一個(gè)IP地址)時(shí),可以在每個(gè)VND中更新虛擬映射,而不會(huì)要求重新配置操作網(wǎng)絡(luò)的每個(gè)應(yīng)用程序。當(dāng)應(yīng)用程序?qū)⑾⒙酚砂l(fā)送給服務(wù)器時(shí),每個(gè)VND自動(dòng)將消息重新路由發(fā)送到服務(wù)器的新位置??梢允止じ绿摂M映射(例如,作為將新的服務(wù)器加到系統(tǒng)的結(jié)果),也可以自動(dòng)更新映射(例如,作為如上所述的自動(dòng)復(fù)原或適應(yīng)事件的結(jié)果)。圖12展示了一張樣品虛擬映射表格。圖13展示了在主辦www.foo.com網(wǎng)站的第一臺(tái)機(jī)器發(fā)生故障且系統(tǒng)適應(yīng)上述的故障(將消息重新路由發(fā)送給冗余組群內(nèi)的另一臺(tái)機(jī)器)之后的相同的表格。
參考圖5,虛擬映射也有助于容易地設(shè)置和測試新的服務(wù)器和網(wǎng)絡(luò)應(yīng)用程序。例如,機(jī)器2上的服務(wù)器bravo可以是生產(chǎn)電子郵件服務(wù)器(即,目前在虛擬網(wǎng)絡(luò)中使用的電子郵件服務(wù)器)。虛擬網(wǎng)絡(luò)的擁有者可能想要用新的或不同的特點(diǎn)來測試被更新的電子郵件服務(wù)器。通常,為了測試新的服務(wù)器,用戶將必須指引他的電子郵件客戶到新的服務(wù)器。這對于單個(gè)用戶而言可能不會(huì)不方便,但是,當(dāng)新的服務(wù)器實(shí)況運(yùn)行時(shí),這可能會(huì)給改變龐大組織內(nèi)每個(gè)用戶的服務(wù)器名稱帶來諸多不便。通過使用發(fā)明的系統(tǒng),測試服務(wù)器可以被安裝在機(jī)器3(也被命名為“bravo”,被稱作“bravo’”)上。每個(gè)VND可以配置有一個(gè)處理程序,該處理程序指示它將bravo的消息路由發(fā)送給機(jī)器2。但是,當(dāng)路由發(fā)送者是預(yù)定的用戶(例如,正在測試新服務(wù)器(bravo’)的網(wǎng)絡(luò)的管理人)時(shí),相同或不同的處理程序被配置成將bravo的消息路由發(fā)送給機(jī)器3。這樣,不要求重新配置測試用戶的機(jī)器。此外,當(dāng)新的服務(wù)器bravo’準(zhǔn)備好投入生產(chǎn)時(shí),可以通過將所有bravo消息指引到機(jī)器3,來改變網(wǎng)絡(luò)映射,而不會(huì)中斷任何用戶的電子郵件服務(wù)。由于虛擬映射已經(jīng)改變,因此,每個(gè)用戶將顯然開始使用新的電子郵件服務(wù)器。
參考圖7,可以提供一套虛擬網(wǎng)絡(luò)服務(wù),以確保虛擬網(wǎng)絡(luò)中的通信和服務(wù)是安全的、可適應(yīng)的、可靠的、可自我復(fù)原的和不依靠平臺(tái)的。虛擬網(wǎng)絡(luò)同步服務(wù)703確保網(wǎng)絡(luò)內(nèi)的分布式數(shù)據(jù)保持同步。虛擬網(wǎng)絡(luò)事件綜合服務(wù)705根據(jù)事件的發(fā)生或不發(fā)生來創(chuàng)建新的路由發(fā)送和/或調(diào)度規(guī)則。虛擬網(wǎng)絡(luò)通信聯(lián)系服務(wù)707根據(jù)虛擬的名稱和位置來路由發(fā)送消息。虛擬網(wǎng)絡(luò)名稱服務(wù)709根據(jù)虛擬名稱的任何子串來提供名稱分解服務(wù)。虛擬網(wǎng)絡(luò)組群服務(wù)711管理名稱映射表格。虛擬網(wǎng)絡(luò)尋址服務(wù)713為長度固定的地址名稱(例如,IPv6地址)執(zhí)行命名和路由發(fā)送服務(wù)。但是,虛擬網(wǎng)絡(luò)尋址服務(wù)可用于尺寸固定的地址的任何平坦的地址空間。虛擬網(wǎng)絡(luò)路由發(fā)送服務(wù)715根據(jù)動(dòng)態(tài)規(guī)則并結(jié)合使用可編寫消息協(xié)議的動(dòng)態(tài)標(biāo)題來進(jìn)行路由發(fā)送和調(diào)度??梢钥缭骄W(wǎng)絡(luò)的所有層次來提供虛擬網(wǎng)絡(luò)安全服務(wù)717,以確保消息內(nèi)容安全、可信。虛擬網(wǎng)絡(luò)管理719可以跨越所有層次來加以執(zhí)行(例如,管理名稱、路由發(fā)送/調(diào)度處理程序、事件綜合等)。目前在該技術(shù)領(lǐng)域中已知,虛擬網(wǎng)絡(luò)監(jiān)控服務(wù)721允許網(wǎng)絡(luò)管理人對網(wǎng)絡(luò)使用、帶寬、瓶頸點(diǎn)和類似內(nèi)容進(jìn)行監(jiān)控。
如圖9所示,本發(fā)明的一個(gè)實(shí)施例可以建立在7層開放系統(tǒng)互連(OSI)網(wǎng)絡(luò)模型的一個(gè)修改版本的基礎(chǔ)上??捎糜贠SI模型的一個(gè)協(xié)議堆棧是TCP/IP協(xié)議堆棧。通過將一個(gè)層插入在應(yīng)用程序頂層與緊接在應(yīng)用程序頂層下面的層之間,本發(fā)明可以將一個(gè)額外層次的抽象插入OSI網(wǎng)絡(luò)模型或任何其他的網(wǎng)絡(luò)模型中。被稱作“虛擬網(wǎng)絡(luò)(VN)層”的新層應(yīng)該跨越所有應(yīng)用程序而保持一致,以便各個(gè)應(yīng)用程序可以按如VN層所定義的統(tǒng)一的方法協(xié)同操作。VN層已被并入其中的網(wǎng)絡(luò)被稱作“虛擬網(wǎng)絡(luò)”。在一個(gè)實(shí)施例中,VN層包括一個(gè)虛擬網(wǎng)絡(luò)調(diào)度程序和任何必要的傳輸適配器,它們根據(jù)消息處理程序和虛擬地址映射表格來路由發(fā)送和調(diào)度消息。
通過使用以上描述的結(jié)構(gòu),在單獨(dú)消息的基礎(chǔ)上,網(wǎng)絡(luò)可以根據(jù)不同的消息內(nèi)容來路由發(fā)送和調(diào)度消息。本發(fā)明提供了一種網(wǎng)絡(luò)協(xié)議,程序設(shè)計(jì)員可以使用API并按需要來改編和配置該網(wǎng)絡(luò)協(xié)議。程序設(shè)計(jì)員和使用API的程序可以指示VNDs如何路由發(fā)送和調(diào)度引入的消息。也就是說,程序設(shè)計(jì)員將元消息(meta-messages)路由發(fā)送給VNDs,其中,每個(gè)元消息根據(jù)API來構(gòu)制并提供一個(gè)或多個(gè)路由發(fā)送和/或調(diào)度指令。
圖8展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的一般路由發(fā)送程序的流程圖。在步驟801中,用戶決定將消息路由發(fā)送給被稱作“foo”的服務(wù)。在步驟803中,機(jī)器創(chuàng)建消息到服務(wù)“foo”。在步驟805中,服務(wù)名稱“foo”根據(jù)虛擬地址映射表格而被映射到一個(gè)虛擬地址。在步驟807中,必須保護(hù)消息。在一個(gè)實(shí)施例中,使用SOAP擴(kuò)展名(例如,“網(wǎng)絡(luò)服務(wù)安全語言”(WS-安全)和/或“網(wǎng)絡(luò)服務(wù)許可證語言”(WS-許可證)所定義的擴(kuò)展名)來執(zhí)行安全。在另一個(gè)實(shí)施例中,對消息執(zhí)行轉(zhuǎn)換,以選擇有關(guān)的部分。摘要在所選擇的部分上被加以計(jì)算,并由路由發(fā)送者進(jìn)行加密/簽名。消息的各個(gè)部分可能是機(jī)密的。在這種情況下,使用共享密匙或新密匙(又為接收者而被加密)來對它們進(jìn)行加密。在步驟809中,當(dāng)可應(yīng)用時(shí),虛擬地址被映射到組群地址(GADDR)。在步驟811中,適應(yīng)性調(diào)度程序(即VND)確定最佳目標(biāo);在步驟813中,它將GADDR映射到虛擬地址。在步驟815中,虛擬地址被映射到物理地址;在步驟817中,消息被路由發(fā)送到物理地址。接收機(jī)器在步驟819中接收消息,并在步驟821中確認(rèn)安全性。
各種發(fā)明的方法可以被具體表現(xiàn)為被存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)(例如,軟盤、CD-ROM、可移動(dòng)的存儲(chǔ)設(shè)備、硬盤、系統(tǒng)存儲(chǔ)器或其他的數(shù)據(jù)存儲(chǔ)介質(zhì))上的計(jì)算機(jī)可讀指令。換句話說,各種發(fā)明的方法可以在硬件和軟件的組合中或只在硬件中得到具體表現(xiàn)。圖6展示了可以根據(jù)上述實(shí)施例中的一個(gè)或多個(gè)實(shí)施例來加以運(yùn)用的計(jì)算機(jī)可讀介質(zhì)601的方框圖。計(jì)算機(jī)可讀介質(zhì)601存儲(chǔ)計(jì)算機(jī)可執(zhí)行部件或軟件模塊603-613?;蛘?,可以使用或多或少的軟件模塊。每個(gè)部件可以是可執(zhí)行程序、數(shù)據(jù)鏈接庫、配置文件、數(shù)據(jù)庫、圖解圖像、二進(jìn)制數(shù)據(jù)文件、文本數(shù)據(jù)文件、目標(biāo)文件、源代碼文件或類似物。當(dāng)一個(gè)或多個(gè)計(jì)算機(jī)處理器執(zhí)行軟件模塊中的一個(gè)或多個(gè)軟件模塊時(shí),這些軟件模塊相互作用,使一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)根據(jù)本發(fā)明的教導(dǎo)加以執(zhí)行。
已就一些特殊的例子(包括目前執(zhí)行本發(fā)明的各種較佳模式)描述了本發(fā)明,但精通該技術(shù)領(lǐng)域的人將會(huì)認(rèn)識到,可以對如所附權(quán)利要求中所闡明的本發(fā)明的精神和范圍內(nèi)的上述各種系統(tǒng)和技術(shù)進(jìn)行許多修改和變更。
權(quán)利要求
1.一種裝置,其特征在于,包括路由發(fā)送和調(diào)度消息的一個(gè)消息調(diào)度程序,其中,根據(jù)消息內(nèi)容的一個(gè)任意部分來路由發(fā)送每個(gè)消息;以及,一個(gè)界面,應(yīng)用程序通過該界面與消息調(diào)度程序進(jìn)行通信,以定義消息內(nèi)容的該任意部分。
2.如權(quán)利要求1所述的裝置,其特征在于,消息調(diào)度程序包括一個(gè)傳輸獨(dú)立的消息調(diào)度程序,該消息調(diào)度程序使用傳輸獨(dú)立協(xié)議進(jìn)行通信。
3.如權(quán)利要求1所述的裝置,其特征在于,消息調(diào)度程序根據(jù)所述第一個(gè)網(wǎng)絡(luò)消息的第一個(gè)屬性來路由發(fā)送第一個(gè)網(wǎng)絡(luò)消息,并根據(jù)所述第二個(gè)網(wǎng)絡(luò)消息的、不同于所述第一個(gè)屬性的第二個(gè)屬性來路由發(fā)送第二個(gè)網(wǎng)絡(luò)消息。
4.如權(quán)利要求1所述的裝置,其特征在于,消息調(diào)度程序?qū)⒌谝粋€(gè)網(wǎng)絡(luò)消息路由發(fā)送給第一個(gè)服務(wù)器,第一個(gè)網(wǎng)絡(luò)消息從第一個(gè)路由發(fā)送者被尋址到接收者;以及消息調(diào)度程序?qū)⒌诙€(gè)網(wǎng)絡(luò)消息路由發(fā)送給第二個(gè)服務(wù)器,第二個(gè)網(wǎng)絡(luò)消息從第二個(gè)路由發(fā)送者被尋址到接收者。
5.如權(quán)利要求1所述的裝置,其特征在于,消息調(diào)度程序使用傳輸層協(xié)議上的虛擬網(wǎng)絡(luò)協(xié)議來路由發(fā)送消息。
6.如權(quán)利要求1所述的裝置,其特征在于,還包括一個(gè)傳輸適配器,用于在傳輸層協(xié)議與虛擬網(wǎng)絡(luò)協(xié)議之間轉(zhuǎn)換消息。
7.如權(quán)利要求1所述的裝置,其特征在于,消息內(nèi)容的任意部分包括一個(gè)應(yīng)用程序?qū)哟螛?biāo)題。
8.一種數(shù)據(jù)處理裝置,其特征在于包括一個(gè)消息調(diào)度程序模塊;一個(gè)傳輸適配器,用于將消息調(diào)度程序與傳輸協(xié)議接合;一個(gè)界面,應(yīng)用程序通過該界面與消息調(diào)度程序進(jìn)行通信;被存儲(chǔ)的規(guī)則,這些規(guī)則指示消息調(diào)度程序根據(jù)所述第一個(gè)網(wǎng)絡(luò)消息的第一個(gè)屬性來路由發(fā)送第一個(gè)網(wǎng)絡(luò)消息,并根據(jù)所述第二個(gè)網(wǎng)絡(luò)消息的、不同于所述第一個(gè)屬性的第二個(gè)屬性來路由發(fā)送第二個(gè)網(wǎng)絡(luò)消息;其中,從每個(gè)網(wǎng)絡(luò)消息中所包含的一套標(biāo)題和數(shù)據(jù)中選擇第一個(gè)和第二個(gè)屬性。
9.如權(quán)利要求8所述的數(shù)據(jù)處理裝置,其特征在于,第一個(gè)屬性包括一個(gè)應(yīng)用程序創(chuàng)建標(biāo)題。
10.如權(quán)利要求8所述的數(shù)據(jù)處理裝置,其特征在于,每個(gè)消息規(guī)則被存儲(chǔ)在消息處理程序中。
11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其特征在于,包括第一個(gè)消息處理程序;一旦出現(xiàn)預(yù)定的條件,該消息處理程序就改變第二個(gè)消息處理程序。
12.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其特征在于,包括第一個(gè)消息處理程序;一旦出現(xiàn)預(yù)定的條件,該消息處理程序就改變第一個(gè)消息。
13.如權(quán)利要求11所述的數(shù)據(jù)處理裝置,其特征在于,預(yù)定的條件包括不發(fā)生事件。
14.如權(quán)利要求13所述的數(shù)據(jù)處理裝置,其特征在于,消息調(diào)度程序模塊包括計(jì)算機(jī)可執(zhí)行指令;當(dāng)被執(zhí)行時(shí),這些計(jì)算機(jī)可執(zhí)行指令使數(shù)據(jù)處理裝置執(zhí)行以下各個(gè)步驟(i)按第一預(yù)定時(shí)間間隔來輪詢第二個(gè)裝置;以及(ii)從第二個(gè)裝置接收輪詢響應(yīng);其中,預(yù)定的條件包括在預(yù)定數(shù)量的時(shí)間內(nèi)不發(fā)生步驟(ii)。
15.如權(quán)利要求14所述的數(shù)據(jù)處理裝置,其特征在于,當(dāng)符合預(yù)定的條件時(shí),消息調(diào)度程序改變第二個(gè)消息處理程序,以便使消息改道到第三個(gè)裝置,消息原來被尋址到第二個(gè)裝置。
16.如權(quán)利要求15所述的數(shù)據(jù)處理裝置,其特征在于,計(jì)算機(jī)可執(zhí)行指令進(jìn)一步使數(shù)據(jù)處理裝置執(zhí)行將路由信息路由發(fā)送給第二個(gè)消息調(diào)度程序的步驟,指出對應(yīng)于第二個(gè)和第三個(gè)裝置的路由發(fā)送信息的變化。
17.一種用于路由發(fā)送網(wǎng)絡(luò)消息的方法,其特征在于,包括以下各個(gè)步驟(i)根據(jù)第一個(gè)網(wǎng)絡(luò)消息的第一個(gè)屬性來路由發(fā)送第一個(gè)網(wǎng)絡(luò)消息;(ii)根據(jù)所述第二個(gè)網(wǎng)絡(luò)消息的、不同于所述第一個(gè)屬性的第二個(gè)屬性來路由發(fā)送第二個(gè)網(wǎng)絡(luò)消息;其中,第一個(gè)和第二個(gè)屬性可以是選自每個(gè)網(wǎng)絡(luò)消息的一套標(biāo)題和數(shù)據(jù)的任何字段。
18.如權(quán)利要求17所述的方法,其特征在于,還包括以下各個(gè)步驟(iii)接收包括一個(gè)消息字段和一個(gè)字段條件的指令;(iv)根據(jù)所接收的指令來修改消息處理程序。
19.如權(quán)利要求18所述的方法,其特征在于,在步驟(iii)中,從網(wǎng)絡(luò)應(yīng)用程序接收指令。
20.如權(quán)利要求18所述的方法,其特征在于,在步驟(iii)中,指令建立在用戶輸入的基礎(chǔ)上。
21.如權(quán)利要求17所述的方法,其特征在于,在步驟(i)和(ii)中,每個(gè)消息被輸出到傳輸適配器,傳輸適配器將消息從虛擬網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換到傳輸協(xié)議。
22.如權(quán)利要求17所述的方法,其特征在于,在步驟(i)中,第一個(gè)屬性包括一個(gè)應(yīng)用程序創(chuàng)建標(biāo)題。
23.如權(quán)利要求17所述的方法,其特征在于還包括將路由指令存儲(chǔ)在消息處理程序中的步驟;并且步驟(i)和(ii)根據(jù)被存儲(chǔ)的消息處理程序來加以執(zhí)行。
24.如權(quán)利要求23所述的方法,其特征在于還包括當(dāng)發(fā)生預(yù)定條件時(shí)改變第一個(gè)消息處理程序的步驟。
25.如權(quán)利要求23所述的方法,其特征在于還包括當(dāng)消息符合被存儲(chǔ)在消息處理程序中的預(yù)定條件時(shí)改變網(wǎng)絡(luò)消息的步驟。
26.如權(quán)利要求24所述的方法,其特征在于,預(yù)定條件包括不發(fā)生事件。
27.如權(quán)利要求17所述的方法,其特征在于,還包括以下各個(gè)步驟(iii)按預(yù)定時(shí)間間隔輪詢第一個(gè)數(shù)據(jù)處理設(shè)備;(iv)從第一個(gè)數(shù)據(jù)處理設(shè)備接收輪詢響應(yīng);以及(v)當(dāng)在預(yù)定數(shù)量的時(shí)間內(nèi)沒有發(fā)生步驟(iv)時(shí),改變消息處理程序,將原來被尋址到第一個(gè)數(shù)據(jù)處理設(shè)備的消息指引到第二個(gè)數(shù)據(jù)處理設(shè)備。
28.如權(quán)利要求27所述的方法,其特征在于還包括將路由信息路由發(fā)送給消息調(diào)度程序的步驟,指出對應(yīng)于第一個(gè)和第二個(gè)數(shù)據(jù)處理設(shè)備的路由發(fā)送信息的變化。
29.一種包括計(jì)算機(jī)可執(zhí)行指令的網(wǎng)絡(luò)路由器,其特征在于當(dāng)被路由器執(zhí)行時(shí),這些計(jì)算機(jī)可執(zhí)行指令執(zhí)行以下各個(gè)步驟(i)存儲(chǔ)從網(wǎng)絡(luò)應(yīng)用程序接收的路由發(fā)送信息,其中路由發(fā)送信息包括一個(gè)消息字段、一個(gè)字段條件和一個(gè)路由發(fā)送指令;(ii)接收網(wǎng)絡(luò)消息;(iii)通過將網(wǎng)絡(luò)消息與被存儲(chǔ)的路由發(fā)送信息進(jìn)行比較,來處理網(wǎng)絡(luò)消息;(iv)當(dāng)所接收的消息的消息字段符合字段條件時(shí),執(zhí)行路由發(fā)送指令。
30.如權(quán)利要求29所述的網(wǎng)絡(luò)路由器,其特征在于,在步驟(iv)中,路由發(fā)送指令包括改變消息。
31.如權(quán)利要求29所述的網(wǎng)絡(luò)路由器,其特征在于,在步驟(iv)中,路由發(fā)送指令包括根據(jù)應(yīng)用程序?qū)哟螛?biāo)題來路由發(fā)送消息。
32.一種計(jì)算機(jī)網(wǎng)絡(luò),其特征在于包括多臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)包括至少一個(gè)傳輸適配器,它在傳輸層協(xié)議與網(wǎng)絡(luò)協(xié)議之間轉(zhuǎn)換消息;以及一個(gè)消息調(diào)度程序,它根據(jù)消息內(nèi)容的一個(gè)任意部分來路由發(fā)送和調(diào)度消息,并且每臺(tái)計(jì)算機(jī)中的消息調(diào)度程序使用至少一個(gè)傳輸適配器路由發(fā)送傳輸層協(xié)議上的虛擬網(wǎng)絡(luò)協(xié)議中的消息。
33.如權(quán)利要求32所述的計(jì)算機(jī)網(wǎng)絡(luò),其特征在于,通過增加在新的傳輸層協(xié)議與網(wǎng)絡(luò)協(xié)議之間轉(zhuǎn)換消息的一個(gè)新的傳輸適配器,可以配置第一臺(tái)計(jì)算機(jī)中的第一個(gè)消息調(diào)度程序用于新的傳輸協(xié)議,而不會(huì)要求重新配置網(wǎng)絡(luò)應(yīng)用程序以用于新的傳輸協(xié)議。
34.一種虛擬網(wǎng)絡(luò),其特征在于包括被插入在OSI協(xié)議堆棧的層7與層6之間的至少一個(gè)虛擬化部件。
35.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)虛擬網(wǎng)絡(luò)消息調(diào)度程序。
36.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)同步模塊。
37.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)事件綜合模塊。
38.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)名稱模塊。
39.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)組群模塊。
40.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)尋址模塊。
41.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)安全模塊。
42.如權(quán)利要求34所述的虛擬網(wǎng)絡(luò),其特征在于,至少一個(gè)虛擬化部件包括一個(gè)管理模塊。
全文摘要
揭示了用于提供虛擬網(wǎng)絡(luò)的各種方法和系統(tǒng)。通過在網(wǎng)絡(luò)中的每臺(tái)機(jī)器上的應(yīng)用程序與網(wǎng)絡(luò)傳輸服務(wù)之間插入一個(gè)適應(yīng)性調(diào)度程序,可以在網(wǎng)絡(luò)服務(wù)應(yīng)用程序與傳統(tǒng)的網(wǎng)絡(luò)協(xié)議之間創(chuàng)建至少一層抽象。虛擬網(wǎng)絡(luò)中的消息協(xié)議是可擴(kuò)展的,允許應(yīng)用程序按需要在任何消息內(nèi)創(chuàng)建新的標(biāo)題。適應(yīng)性調(diào)度程序包含一些處理程序,這些處理程序根據(jù)每個(gè)消息內(nèi)的任意內(nèi)容(包括標(biāo)題和/或數(shù)據(jù)內(nèi)容的任何組合)來路由發(fā)送和調(diào)度虛擬網(wǎng)絡(luò)內(nèi)的消息。虛擬網(wǎng)絡(luò)上的每個(gè)設(shè)備都具有消息被路由發(fā)送到的一個(gè)虛擬地址,這允許設(shè)備在網(wǎng)絡(luò)內(nèi)移動(dòng),而無須重新配置路由發(fā)送表格。當(dāng)事件符合預(yù)定的標(biāo)準(zhǔn)(包括不發(fā)生某個(gè)條件)時(shí),可以自動(dòng)創(chuàng)建處理程序,這使虛擬網(wǎng)絡(luò)能夠進(jìn)行自我復(fù)原并適應(yīng)重新配置。
文檔編號G06F15/177GK1442788SQ02147320
公開日2003年9月17日 申請日期2002年10月16日 優(yōu)先權(quán)日2001年10月16日
發(fā)明者L·F·卡夫雷拉, E·B·克里斯滕森, G·M·德拉利貝拉, C·G·卡萊, D·E·萊文, B·H·洛夫林, S·E·勒克, S·J·米利特, J·P·休丘科, R·S·沃赫貝, D·A·沃滕代克 申請人:微軟公司