專(zhuān)利名稱(chēng):從計(jì)算機(jī)發(fā)送到集群系統(tǒng)的數(shù)據(jù)包的分發(fā)方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種從計(jì)算機(jī)發(fā)送到集群系統(tǒng)的數(shù)據(jù)包的分發(fā)方法和設(shè)備。
這種數(shù)據(jù)包的一個(gè)例子是用戶(hù)數(shù)據(jù)報(bào)協(xié)議。用戶(hù)數(shù)據(jù)報(bào)協(xié)議(Userdatagram protocol,UDP)沒(méi)有連接的概念。由于收到UDP包后不需要進(jìn)行確認(rèn),因此它也被稱(chēng)為無(wú)連接協(xié)議。兩臺(tái)在使用UDP協(xié)議的網(wǎng)絡(luò)上連接到一起的計(jì)算機(jī)將相互發(fā)送數(shù)據(jù)包而不會(huì)等待一個(gè)確認(rèn)。那些沒(méi)有到達(dá)其目的地的數(shù)據(jù)包就丟失了。由于UDP數(shù)據(jù)包僅包括一個(gè)不含復(fù)雜錯(cuò)誤校正的小的報(bào)頭,因此它通常在需要高數(shù)據(jù)傳輸率的場(chǎng)合中應(yīng)用。
特別在可擴(kuò)充的國(guó)際網(wǎng)絡(luò)服務(wù)(scalable internetservices,SIS)中,經(jīng)常使用UDP協(xié)議的數(shù)據(jù)連接。如果一臺(tái)計(jì)算機(jī)向一個(gè)提供一些例如WWW、ftp等可擴(kuò)充國(guó)際網(wǎng)絡(luò)服務(wù)的集群系統(tǒng)發(fā)送UDP數(shù)據(jù)包,集群系統(tǒng)軟件必須確認(rèn)在集群內(nèi)沒(méi)有UDP包丟失。這是非常重要的,因?yàn)橐恍┦褂肬DP協(xié)議的應(yīng)用程序需要了解在前發(fā)送的數(shù)據(jù)包。
本發(fā)明的任務(wù)是提供一種能防止發(fā)往集群系統(tǒng)的UDP包丟失的設(shè)備和方法。
為了該目的,本發(fā)明提供一種數(shù)據(jù)包的分發(fā)方法,該數(shù)據(jù)包由計(jì)算機(jī)經(jīng)由連接線路發(fā)送到集群系統(tǒng)。所述集群系統(tǒng)包括至少兩個(gè)節(jié)點(diǎn),其中至少兩個(gè)第一節(jié)點(diǎn)包括用于處理所述數(shù)據(jù)包的服務(wù),并且其中至少一個(gè)第二節(jié)點(diǎn)包括用于接收所述數(shù)據(jù)包的裝置。所述數(shù)據(jù)包包括UDP包和發(fā)送該數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)。該標(biāo)識(shí)可為所述數(shù)據(jù)包的報(bào)頭的一部分。該方法包括步驟a)由所述至少一個(gè)第二節(jié)點(diǎn)接收該數(shù)據(jù)包;b)提取所述數(shù)據(jù)包內(nèi)的所述標(biāo)識(shí);c)檢查是否包含相同標(biāo)識(shí)的數(shù)據(jù)包已經(jīng)被接收過(guò)并被轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)中之一;d)如果之前的檢查結(jié)果是肯定的,那么轉(zhuǎn)發(fā)該數(shù)據(jù)包至所述至少兩個(gè)第一節(jié)點(diǎn)中之一;
e)如果之前的檢查結(jié)果是否定的,那么在所述至少兩個(gè)第一節(jié)點(diǎn)中選擇一節(jié)點(diǎn),并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到所選的節(jié)點(diǎn)。
通過(guò)該方法,所述至少一個(gè)第二節(jié)點(diǎn)接收的數(shù)據(jù)包總是被轉(zhuǎn)發(fā)到先前已經(jīng)從同一計(jì)算機(jī)接收過(guò)數(shù)據(jù)包的那個(gè)節(jié)點(diǎn)上。這樣,屬于相同連接的數(shù)據(jù)包總是被轉(zhuǎn)發(fā)到正確的節(jié)點(diǎn)上。所說(shuō)的連接被定義為帶有發(fā)送數(shù)據(jù)包的特定計(jì)算機(jī)的標(biāo)識(shí)的數(shù)據(jù)包。因而,由同一計(jì)算機(jī)發(fā)送的數(shù)據(jù)包被認(rèn)為是屬于相同的連接。如果對(duì)“是否先前已經(jīng)接收過(guò)由特定計(jì)算機(jī)發(fā)送的數(shù)據(jù)包”的檢查結(jié)果是否定的,那么就選擇一個(gè)新的節(jié)點(diǎn)。該方法步驟會(huì)導(dǎo)致一個(gè)新的連接。同一個(gè)特定計(jì)算機(jī)再發(fā)送的數(shù)據(jù)包將被自動(dòng)轉(zhuǎn)發(fā)到該被選的節(jié)點(diǎn)上。采用不同的選擇算法,可建立進(jìn)入的UDP包的負(fù)載平衡。
本發(fā)明還提供一種從計(jì)算機(jī)發(fā)送到集群系統(tǒng)的數(shù)據(jù)包的分發(fā)設(shè)備。所述數(shù)據(jù)包包括UDP包和發(fā)送該數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)。所述集群系統(tǒng)包括經(jīng)由集群網(wǎng)絡(luò)連接的至少兩個(gè)節(jié)點(diǎn)。按照本發(fā)明,所述設(shè)備包括在所述至少兩個(gè)節(jié)點(diǎn)中的至少兩個(gè)第一節(jié)點(diǎn)中用于處理所述數(shù)據(jù)包的裝置,也包括在所述至少兩個(gè)節(jié)點(diǎn)中的至少一個(gè)第二節(jié)點(diǎn)上用于接收數(shù)據(jù)包的裝置。按照本發(fā)明,所述設(shè)備還包括用于將接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)的裝置,以及用于在所述至少兩個(gè)第一節(jié)點(diǎn)中選擇一數(shù)據(jù)包要被轉(zhuǎn)發(fā)至的節(jié)點(diǎn)的裝置。
在本發(fā)明的一個(gè)實(shí)施例中,用于轉(zhuǎn)發(fā)數(shù)據(jù)包的裝置和用于處理數(shù)據(jù)包的裝置是在所述至少兩個(gè)節(jié)點(diǎn)中的不同節(jié)點(diǎn)上實(shí)現(xiàn)??蛇x擇地,用于轉(zhuǎn)發(fā)的裝置和用于選擇的裝置是在所述至少兩個(gè)節(jié)點(diǎn)中不同的節(jié)點(diǎn)上實(shí)現(xiàn)。這允許有更好的負(fù)載平衡并在一個(gè)節(jié)點(diǎn)上發(fā)生硬件故障時(shí)具有更高的可靠性。
在本發(fā)明的另一個(gè)實(shí)施例中,被轉(zhuǎn)發(fā)的數(shù)據(jù)包是所述至少一個(gè)第二節(jié)點(diǎn)接收的數(shù)據(jù)包中的UDP包。在本發(fā)明的這個(gè)實(shí)施例中,UDP包將被從所述至少一個(gè)第二節(jié)點(diǎn)接收的數(shù)據(jù)包中提取出來(lái),然后轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)中的一個(gè)。
在本發(fā)明的又一個(gè)實(shí)施例中,本發(fā)明方法的步驟c)包括如下步驟檢查是否收到的數(shù)據(jù)包包括一計(jì)算機(jī)的標(biāo)識(shí)、而包含該標(biāo)識(shí)的另一個(gè)數(shù)據(jù)包已經(jīng)在一特定時(shí)間之前收到過(guò)。
在本發(fā)明的這個(gè)實(shí)施例中,如果在預(yù)定的間隔內(nèi),從同一計(jì)算機(jī)來(lái)的另一個(gè)數(shù)據(jù)包被同一計(jì)算機(jī)接收到,那么所述至少一個(gè)第二節(jié)點(diǎn)接收到的數(shù)據(jù)包被認(rèn)為是屬于一個(gè)特定連接的。換言之,如果在兩個(gè)相繼的帶有相同標(biāo)識(shí)(因而是來(lái)自于相同的計(jì)算機(jī))的數(shù)據(jù)包之間有一個(gè)預(yù)定的間隔,那么這兩個(gè)相繼的數(shù)據(jù)包將被認(rèn)為是屬于相同的連接。只要可能的話,屬于同一連接的數(shù)據(jù)包被轉(zhuǎn)發(fā)至同一節(jié)點(diǎn)。如果該間隔大于預(yù)定的時(shí)間值,那么接收的數(shù)據(jù)包被認(rèn)為是屬于一個(gè)新的連接并且可被轉(zhuǎn)發(fā)到不同的節(jié)點(diǎn)。
在本發(fā)明的另一個(gè)實(shí)施例中,所述至少一個(gè)第二節(jié)點(diǎn)包含第一表,其中,所述第一表包含表項(xiàng)。所述表項(xiàng)包含發(fā)送數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)以及數(shù)據(jù)包被轉(zhuǎn)發(fā)到的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)。所述節(jié)點(diǎn)標(biāo)識(shí)被分配給發(fā)送數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)。如果所述至少一個(gè)第二節(jié)點(diǎn)接收到又一個(gè)數(shù)據(jù)包,那么所述至少一個(gè)第二節(jié)點(diǎn)通過(guò)查找第一表中的標(biāo)識(shí)來(lái)進(jìn)行檢查。如果找到一個(gè)相同的標(biāo)識(shí),那么就認(rèn)為它屬于相同的連接,并且使用分配給該標(biāo)識(shí)的節(jié)點(diǎn)標(biāo)識(shí)來(lái)轉(zhuǎn)發(fā)該數(shù)據(jù)包。如果在第一表中沒(méi)有找到該標(biāo)識(shí),那么就認(rèn)為所接收到的數(shù)據(jù)包屬于一個(gè)新的連接,選擇一個(gè)新的節(jié)點(diǎn)并且將該數(shù)據(jù)包轉(zhuǎn)發(fā)到該新被選擇的節(jié)點(diǎn)。
在本發(fā)明的又一個(gè)實(shí)施例中要生成第二表,其中,所述第二表包含至少一個(gè)第二節(jié)點(diǎn)中每一個(gè)接收的數(shù)據(jù)包的標(biāo)識(shí),還包含分配給所述數(shù)據(jù)包標(biāo)識(shí)的節(jié)點(diǎn)標(biāo)識(shí)。如果有超過(guò)一個(gè)的第二節(jié)點(diǎn)從計(jì)算機(jī)接收數(shù)據(jù)包,那么該實(shí)施例是尤其有用的。該第二表包含發(fā)送數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí),也包含數(shù)據(jù)包被轉(zhuǎn)發(fā)至的節(jié)點(diǎn)的標(biāo)識(shí),而不考慮是哪個(gè)第二節(jié)點(diǎn)接收的數(shù)據(jù)包。這樣,即使屬于相同連接的數(shù)據(jù)包被不同的第二節(jié)點(diǎn)接收到,也可以對(duì)現(xiàn)有的連接進(jìn)行識(shí)別。
在本發(fā)明的另一個(gè)實(shí)施例中,如果在一個(gè)特定的時(shí)間內(nèi)沒(méi)有接收到任何其他帶有相同標(biāo)識(shí)的數(shù)據(jù)包,那么在第一或第二表中包含發(fā)送數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)的表項(xiàng)將被刪除。在刪除之后,該數(shù)據(jù)包被認(rèn)為屬于一個(gè)新的連接。
在又一個(gè)實(shí)施例中,按照本發(fā)明的方法,步驟e)中的選擇包括如下步驟測(cè)量所述至少一個(gè)第一節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)的系統(tǒng)負(fù)載,并選擇系統(tǒng)負(fù)載最小的節(jié)點(diǎn)。
另一種,步驟e)中的選擇包括如下步驟選擇所述至少一個(gè)第一節(jié)點(diǎn)中具有最少連接數(shù)的一個(gè)節(jié)點(diǎn)。
再一種,步驟e)中的選擇包括如下步驟按照循環(huán)模式選擇所述至少一個(gè)第一節(jié)點(diǎn)中的一個(gè)節(jié)點(diǎn)。
為新連接進(jìn)行的節(jié)點(diǎn)選擇對(duì)于負(fù)載平衡是非常有用的。
本發(fā)明的其他特征和優(yōu)點(diǎn)將會(huì)在從屬權(quán)利要求中明顯表現(xiàn)。在下面詳細(xì)解釋的本發(fā)明是通過(guò)示例的方式說(shuō)明的,但是不限于這些示例和附圖。其中
圖1是在一個(gè)集群系統(tǒng)內(nèi)本發(fā)明的實(shí)施例;圖2是實(shí)現(xiàn)本發(fā)明的集群系統(tǒng)的物理結(jié)構(gòu);圖3是本發(fā)明一個(gè)不同的實(shí)施例;圖4是在本發(fā)明的一個(gè)實(shí)施例中網(wǎng)關(guān)和數(shù)據(jù)庫(kù)節(jié)點(diǎn)使用的表的例子;圖5是在本發(fā)明的一個(gè)實(shí)施例中服務(wù)節(jié)點(diǎn)使用的表;圖6是本發(fā)明方法的一個(gè)例子;圖7是本發(fā)明方法的第二例子;圖8是本發(fā)明方法的一個(gè)有用擴(kuò)展;圖9是本發(fā)明方法的另一個(gè)有用擴(kuò)展。
圖2示出了集群系統(tǒng)的結(jié)構(gòu),本發(fā)明在該集群系統(tǒng)內(nèi)實(shí)現(xiàn)。集群1包括在網(wǎng)絡(luò)17上連接的四個(gè)節(jié)點(diǎn)12、13、14、15。每一個(gè)節(jié)點(diǎn)都是一臺(tái)獨(dú)立的計(jì)算機(jī),包括至少一個(gè)存儲(chǔ)器和一個(gè)處理器單元。操作系統(tǒng)以及集群軟件在每一個(gè)節(jié)點(diǎn)上運(yùn)行。節(jié)點(diǎn)之間能經(jīng)由專(zhuān)門(mén)的集群軟件和網(wǎng)絡(luò)17來(lái)進(jìn)行通訊。集群1還包括連接到節(jié)點(diǎn)12、13、14的第二通訊網(wǎng)絡(luò)16。該第二網(wǎng)絡(luò)16將節(jié)點(diǎn)連接到一個(gè)存儲(chǔ)數(shù)據(jù)的共享存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備18可包括例如一個(gè)RAID系統(tǒng),該RAID系統(tǒng)包括一數(shù)據(jù)庫(kù)或多個(gè)硬盤(pán)。它也可以包括其自己的處理器單元。
在本發(fā)明的實(shí)施例中,集群系統(tǒng)經(jīng)由防火墻20連接到因特網(wǎng)21。防火墻可以是特定計(jì)算機(jī)上的一個(gè)軟件模塊或一個(gè)路由器或者硬件防火墻。它可包括數(shù)據(jù)包過(guò)濾、IP偽裝(IP-masquerading)、欺騙(Spoofing)和類(lèi)似技術(shù)。防火墻被連接到集群網(wǎng)絡(luò)17。所有進(jìn)入的因特網(wǎng)連接被防火墻20接收、過(guò)濾,然后發(fā)送到集群輸入端11。
經(jīng)由通訊輸入端11和防火墻20,集群1可與作為因特網(wǎng)21一部分的客戶(hù)端22通訊。例如,客戶(hù)端22可向集群1請(qǐng)求一個(gè)WWW(world-wide web)頁(yè)。該請(qǐng)求被防火墻20收到后轉(zhuǎn)發(fā)到集群1,然后由集群內(nèi)的一個(gè)節(jié)點(diǎn)進(jìn)行處理。
圖2所示的集群1的物理結(jié)構(gòu)可用圖1的設(shè)備所示出的集群1的邏輯結(jié)構(gòu)來(lái)代替。在圖1中,集群1還包括各種服務(wù)。這些服務(wù)可在不同的節(jié)點(diǎn)上運(yùn)行,但是,在一個(gè)節(jié)點(diǎn)上也可以運(yùn)行兩種或更多的服務(wù)。也能將一種服務(wù)分布在不同節(jié)點(diǎn)上。在可用節(jié)點(diǎn)上,這些服務(wù)的管理和分布由集群軟件或可擴(kuò)充國(guó)際網(wǎng)絡(luò)服務(wù)軟件各自完成。
在本發(fā)明的這個(gè)例子中,集群1包括網(wǎng)關(guān)服務(wù)2。網(wǎng)關(guān)服務(wù)2在一個(gè)特定節(jié)點(diǎn)上實(shí)現(xiàn),該節(jié)點(diǎn)分別接收所有來(lái)自于外部客戶(hù)端22或221的進(jìn)入請(qǐng)求。集群1還包括不同的服務(wù)模塊4、5和6,用于處理不同的請(qǐng)求。服務(wù)模塊4、5和6也可以在不同的物理節(jié)點(diǎn)上實(shí)現(xiàn)。例如,服務(wù)模塊4和6是處理相同請(qǐng)求的相同服務(wù)模塊。但是,它們?cè)诓煌墓?jié)點(diǎn)上運(yùn)行。模塊5在一個(gè)第三節(jié)點(diǎn)上運(yùn)行并處理不同的請(qǐng)求。從某種意義上講,所有被實(shí)現(xiàn)的服務(wù)模塊都是為了處理進(jìn)入的UDP請(qǐng)求。
進(jìn)一步,客戶(hù)端包括一個(gè)數(shù)據(jù)庫(kù)模塊3。該數(shù)據(jù)庫(kù)模塊3用于管理工作,例如負(fù)載平衡、在不同節(jié)點(diǎn)上調(diào)度服務(wù)模塊,以及其他管理工作。出于安全的原因,數(shù)據(jù)庫(kù)模塊在另外的節(jié)點(diǎn)上運(yùn)行,以改善整個(gè)設(shè)備的穩(wěn)定性。經(jīng)由集群系統(tǒng)中節(jié)點(diǎn)間的連接網(wǎng)絡(luò),建立起了在所有模塊間發(fā)送的連接和數(shù)據(jù)包。
在本發(fā)明的該實(shí)施例中,網(wǎng)關(guān)模塊2經(jīng)由因特網(wǎng)21接收來(lái)自于例如客戶(hù)端22的UDP包RQ1。該UDP包RQ1包括客戶(hù)端22的源地址和目標(biāo)地址,在這種情況下是集群1的目標(biāo)地址。源地址由客戶(hù)端22的IP地址和端口地址確定。這兩個(gè)部分一起組成了被該設(shè)備用于識(shí)別連接的唯一標(biāo)識(shí)。目標(biāo)地址由集群1的IP地址和集群端口地址給出。
現(xiàn)在,網(wǎng)關(guān)模塊2檢查先前是否已經(jīng)接收過(guò)帶有相同源地址的UDP包。也就是說(shuō),它在先前的包中查找所接收的相同的IP地址和端口號(hào)。如果找到了,那么該UDP包屬于相同的連接。它將被轉(zhuǎn)發(fā)到已接收過(guò)該先前的包的節(jié)點(diǎn)上的服務(wù)模塊。
例如,客戶(hù)端22的UDP包RQ1已經(jīng)被網(wǎng)關(guān)模塊2轉(zhuǎn)發(fā)至節(jié)點(diǎn)4上的服務(wù)模塊4。網(wǎng)關(guān)模塊接收到的由客戶(hù)端22發(fā)送的第二UDP包中包含相同的客戶(hù)端22的IP地址。如果它還包括相同的端口號(hào),那么它也將被網(wǎng)關(guān)模塊2轉(zhuǎn)發(fā)到節(jié)點(diǎn)4上的服務(wù)模塊4。
現(xiàn)在,客戶(hù)端221發(fā)送另一個(gè)新的UDP包RQ1’,并被網(wǎng)關(guān)模塊2接收。由于網(wǎng)關(guān)模塊2之前還沒(méi)有接收過(guò)來(lái)自于客戶(hù)端221的任何UDP包,因此網(wǎng)關(guān)模塊2認(rèn)為該接收到的包屬于一個(gè)新的連接。因此,包RQ1’被轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)模塊3。
由數(shù)據(jù)庫(kù)模塊3決定將這個(gè)包轉(zhuǎn)發(fā)到哪個(gè)節(jié)點(diǎn)進(jìn)行處理。該決定由一個(gè)在數(shù)據(jù)庫(kù)模塊3內(nèi)實(shí)現(xiàn)的調(diào)度算法完成。這里使用的調(diào)度算法是相當(dāng)簡(jiǎn)單的。該數(shù)據(jù)庫(kù)模塊根據(jù)循環(huán)模式簡(jiǎn)單地選擇下一個(gè)節(jié)點(diǎn),在這個(gè)節(jié)點(diǎn)上運(yùn)行有能處理該接收到的UDP包的服務(wù)。
但是,調(diào)度算法有很多可能性。對(duì)于數(shù)據(jù)庫(kù)模塊,一種可能性是去查找客戶(hù)端221的IP地址,并將這個(gè)包轉(zhuǎn)發(fā)到之前已經(jīng)從相同的IP地址接收過(guò)數(shù)據(jù)包的節(jié)點(diǎn)上的服務(wù)模塊。這被稱(chēng)為基于客戶(hù)端的調(diào)度算法。另一種可能性是查詢(xún)系統(tǒng)負(fù)載,并選擇系統(tǒng)負(fù)載最小的那個(gè)節(jié)點(diǎn)。再一種可能性是對(duì)一個(gè)節(jié)點(diǎn)上已經(jīng)存在的連接進(jìn)行計(jì)數(shù),并選擇具有最少連接數(shù)的那個(gè)節(jié)點(diǎn)。還有一種可能性被叫做溢出(spillover),其中,一旦原節(jié)點(diǎn)上的系統(tǒng)負(fù)載超過(guò)一個(gè)預(yù)定的值,那么就選擇一個(gè)替代節(jié)點(diǎn)。聯(lián)合這里公開(kāi)的調(diào)度方法或?qū)ふ移渌恼{(diào)度算法也都是可能的。通過(guò)使用一個(gè)特定的算法或在不同方法之間進(jìn)行轉(zhuǎn)換,能實(shí)現(xiàn)負(fù)載平衡。
如果被數(shù)據(jù)庫(kù)選擇的節(jié)點(diǎn)是可用的,那么UDP包被轉(zhuǎn)發(fā)到那個(gè)節(jié)點(diǎn)。如果不可用,那么就對(duì)一個(gè)備用節(jié)點(diǎn)進(jìn)行可用性檢查。進(jìn)一步地,數(shù)據(jù)庫(kù)模塊3將該節(jié)點(diǎn)的標(biāo)識(shí)發(fā)送至網(wǎng)關(guān)模塊2,從而告訴網(wǎng)關(guān)模塊2將來(lái)自于相同連接的另外的UDP包轉(zhuǎn)發(fā)到所選擇的節(jié)點(diǎn)。
在本發(fā)明的該實(shí)施例中,來(lái)自于客戶(hù)端的UDP包RQ1被轉(zhuǎn)發(fā)到服務(wù)節(jié)點(diǎn)4上的服務(wù)模塊4,而來(lái)自于客戶(hù)端221的第一UDP包RQ1’被網(wǎng)關(guān)模塊2首先轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)模塊3,然后被轉(zhuǎn)發(fā)到節(jié)點(diǎn)6上的服務(wù)模塊6。所有從客戶(hù)端221再來(lái)的UDP包都將被網(wǎng)關(guān)模塊2自動(dòng)轉(zhuǎn)發(fā)到節(jié)點(diǎn)6上的服務(wù)模塊6。
不同連接的管理在網(wǎng)關(guān)模塊2和數(shù)據(jù)庫(kù)模塊3中通過(guò)列表來(lái)實(shí)現(xiàn),列表中包括目標(biāo)地址和源地址。那些列表如圖4所示。
左邊的表LG由網(wǎng)關(guān)模塊2使用。表LG包含五列、三行表項(xiàng)。第一列IPP包括源地址的端口號(hào)。第二列IPA存儲(chǔ)有發(fā)送UDP包的來(lái)源的IP地址。在接下的兩列DPP、DIP中,存儲(chǔ)有接收UDP包的集群的端口號(hào)和IP地址。最后一列ID包括UDP包被轉(zhuǎn)發(fā)到的節(jié)點(diǎn)地址。
在該例子中,網(wǎng)關(guān)模塊2的表LG和數(shù)據(jù)庫(kù)模塊3的表LD都包含三個(gè)表項(xiàng)。兩個(gè)表項(xiàng)具有端口號(hào)80,其中的一個(gè)表項(xiàng)具有客戶(hù)端22的IP地址CL,而另一表項(xiàng)包括客戶(hù)端221的IP地址CL1。一個(gè)表項(xiàng)表明,帶有客戶(hù)端221的端口號(hào)82和IP地址CL1的UDP包被網(wǎng)關(guān)模塊2接收并轉(zhuǎn)發(fā)到服務(wù)節(jié)點(diǎn)N5。
圖5示出了服務(wù)模塊4、5和6的項(xiàng)目表。表LN4、LN5、LN6也包括源端口號(hào)IPP、源IP地址IPA以及目標(biāo)端口號(hào)DPP和目標(biāo)IP地址DIP。它還包括時(shí)間標(biāo)記TS。該時(shí)間標(biāo)記是一個(gè)時(shí)間值,該節(jié)點(diǎn)在該時(shí)間已經(jīng)接收了最后一個(gè)UDP包。在該例子中,節(jié)點(diǎn)N4的表LN4具有最早的時(shí)間標(biāo)記,隨后是節(jié)點(diǎn)N6的表LN6,然后是節(jié)點(diǎn)N5的表LN5。如果服務(wù)模塊又接收了一個(gè)數(shù)據(jù)包,那么時(shí)間標(biāo)記將要作更新。每個(gè)表還包括一個(gè)用于內(nèi)部通訊連接的虛擬IP地址VIP和數(shù)據(jù)包所來(lái)自的網(wǎng)關(guān)列表LGA。
所有的表都要定期更新。如果接收到被認(rèn)作是新連接的數(shù)據(jù)包,那么數(shù)據(jù)庫(kù)和網(wǎng)關(guān)模塊將增加對(duì)應(yīng)標(biāo)識(shí)的新表項(xiàng)。服務(wù)模塊參考時(shí)間標(biāo)記來(lái)決定何時(shí)關(guān)閉一個(gè)連接或認(rèn)定該連接是非活動(dòng)連接。這可通過(guò)將時(shí)間標(biāo)記和實(shí)際時(shí)間作比較來(lái)實(shí)現(xiàn)。如果結(jié)果比一個(gè)預(yù)定值要大,那么它們將刪除對(duì)應(yīng)的表項(xiàng)并且向數(shù)據(jù)庫(kù)和/或網(wǎng)關(guān)模塊發(fā)送消息。那些模塊也將刪除對(duì)應(yīng)的表項(xiàng)。
圖3示出了本發(fā)明的另一個(gè)實(shí)施例。在該實(shí)施例中,集群1包括在兩個(gè)不同節(jié)點(diǎn)上實(shí)現(xiàn)的網(wǎng)關(guān)模塊2和2A。網(wǎng)關(guān)2從因特網(wǎng)21和客戶(hù)端22收到一個(gè)新UDP包。由于先前沒(méi)有從客戶(hù)端22收到任何UDP包,因此在這個(gè)例子中網(wǎng)關(guān)2僅將包含在所接收UDP包內(nèi)的客戶(hù)端22的IP地址和端口號(hào)發(fā)送至數(shù)據(jù)庫(kù)模塊3。數(shù)據(jù)庫(kù)模塊3選擇一個(gè)新的服務(wù)模塊(在這個(gè)例子中是模塊4),并向網(wǎng)關(guān)模塊2返回服務(wù)模塊4運(yùn)行所在的節(jié)點(diǎn)標(biāo)識(shí)。網(wǎng)關(guān)模塊2將該UDP包轉(zhuǎn)發(fā)到服務(wù)模塊4以便進(jìn)行數(shù)據(jù)處理。
在隨后的時(shí)間,客戶(hù)端22向集群1發(fā)送另一個(gè)UDP包。但是,由于網(wǎng)關(guān)2的故障,該UDP包被網(wǎng)關(guān)2A收到。由于之前網(wǎng)關(guān)2A沒(méi)有從客戶(hù)端22收到過(guò)任何UDP包,因此網(wǎng)關(guān)2A將該UDP包認(rèn)做是一個(gè)新的連接。網(wǎng)關(guān)2A將地址轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)模塊3。但是,數(shù)據(jù)塊模塊3已經(jīng)具有了客戶(hù)端22的表項(xiàng)以及對(duì)應(yīng)的端口號(hào)。因而,數(shù)據(jù)庫(kù)模塊3不選擇服務(wù)模塊,而是將服務(wù)模塊4運(yùn)行所在節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)返回到網(wǎng)關(guān)2A。然后網(wǎng)關(guān)2A將該UDP包轉(zhuǎn)發(fā)到服務(wù)模塊4或者對(duì)應(yīng)的節(jié)點(diǎn)。在集群系統(tǒng)中,這允許建立不同的網(wǎng)關(guān),并且不會(huì)有從同一客戶(hù)端來(lái)的UDP包被轉(zhuǎn)發(fā)到不同節(jié)點(diǎn)上處理的問(wèn)題。
圖6示出了本發(fā)明方法的一個(gè)實(shí)施例。在步驟1中,網(wǎng)關(guān)模塊接收一個(gè)UDP包,并提取出源IP地址和源端口號(hào)。在步驟2中,網(wǎng)關(guān)模塊檢查是否存在由之前接收到的數(shù)據(jù)包建立的連接。這可通過(guò)查找其表中的表項(xiàng)來(lái)完成。如果已經(jīng)接收過(guò)從相同源來(lái)的數(shù)據(jù)包,那么該UDP包通過(guò)PS_SV_Udp_Frame被直接轉(zhuǎn)發(fā)到一個(gè)節(jié)點(diǎn)上的服務(wù)模塊處理。
如果不是這種情況,那么在步驟3中,網(wǎng)關(guān)模塊把該UDP包發(fā)送到數(shù)據(jù)庫(kù)模塊或數(shù)據(jù)庫(kù)節(jié)點(diǎn)。如果接收到的數(shù)據(jù)包屬于一個(gè)新的連接,或者該數(shù)據(jù)包到了一個(gè)新的網(wǎng)關(guān)上,那么在步驟2中由網(wǎng)關(guān)模塊或網(wǎng)關(guān)節(jié)點(diǎn)完成的連接檢查將失敗。另一種造成失敗的可能性是用戶(hù)方更換了網(wǎng)關(guān)或者原網(wǎng)關(guān)發(fā)生故障并選擇了一個(gè)新網(wǎng)關(guān)。進(jìn)一步,也可能是網(wǎng)關(guān)模塊已經(jīng)向數(shù)據(jù)庫(kù)模塊轉(zhuǎn)發(fā)過(guò)一個(gè)在先的包以調(diào)度,但是還沒(méi)有收到從數(shù)據(jù)庫(kù)模塊返回來(lái)的答復(fù)。
在步驟4中,數(shù)據(jù)庫(kù)會(huì)檢查是否存在一個(gè)連接的表項(xiàng)。如果結(jié)果是肯定的,那么數(shù)據(jù)庫(kù)將通過(guò)發(fā)送一個(gè)包含節(jié)點(diǎn)標(biāo)識(shí)的DB_PS_Udp_Placement消息來(lái)更新網(wǎng)關(guān)模塊,來(lái)自于相同連接的其它UDP包將被轉(zhuǎn)發(fā)到該節(jié)點(diǎn)標(biāo)識(shí);然后,將該UDP包轉(zhuǎn)發(fā)到所選擇的服務(wù)節(jié)點(diǎn)。這是在步驟5中完成的。
如果數(shù)據(jù)庫(kù)模塊沒(méi)有為一個(gè)連接找到表項(xiàng),那么數(shù)據(jù)庫(kù)模塊在步驟6中按照調(diào)度算法為該連接選擇一個(gè)新的服務(wù)節(jié)點(diǎn)。然后,所選節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)被轉(zhuǎn)發(fā)到網(wǎng)關(guān)模塊,以建立必要的連接表項(xiàng)。對(duì)于該連接的后續(xù)步驟來(lái)說(shuō),新的檢查將會(huì)得到肯定的結(jié)果。在步驟7中,數(shù)據(jù)庫(kù)模塊還將轉(zhuǎn)發(fā)該UDP包至服務(wù)節(jié)點(diǎn),用DB_SV_UdpFrame消息表明這是一個(gè)新連接的第一個(gè)包。
在圖8中示出了本發(fā)明的方法處理舊連接的擴(kuò)展。處理UDP包的服務(wù)節(jié)點(diǎn)內(nèi)的服務(wù)模塊需要一種可能的實(shí)現(xiàn)來(lái)判斷一個(gè)連接是否過(guò)時(shí)或仍然在活動(dòng)。為了這個(gè)目的,使用了圖5的服務(wù)節(jié)點(diǎn)表內(nèi)的時(shí)間標(biāo)記TS。在一個(gè)預(yù)定的連接時(shí)間終止且沒(méi)有收到任何其他屬于該連接的UDP包之后,服務(wù)模塊通過(guò)刪除那些在步驟1中被視為不活動(dòng)的表項(xiàng)來(lái)清理項(xiàng)目表。如圖8的步驟2所示,服務(wù)模塊還轉(zhuǎn)發(fā)一份在預(yù)定時(shí)間內(nèi)不活動(dòng)連接的表,數(shù)據(jù)庫(kù)模塊據(jù)此來(lái)進(jìn)行項(xiàng)目表的清理。這可通過(guò)與表一起發(fā)送SV_DB_Udp_Con_Remove_List消息來(lái)完成。在步驟3中,數(shù)據(jù)庫(kù)模塊更新數(shù)據(jù)庫(kù)表,并且利用DB_SV_Udp_Con_Remove_List消息將該表轉(zhuǎn)發(fā)到網(wǎng)關(guān)模塊。網(wǎng)關(guān)模塊將刪除對(duì)應(yīng)的表項(xiàng)?,F(xiàn)在,進(jìn)入的包含相同IP地址和端口號(hào)的UDP包被認(rèn)為是新的連接。
進(jìn)一步,圖9示出了在一個(gè)服務(wù)節(jié)點(diǎn)上處理服務(wù)失敗的實(shí)現(xiàn)。如果一個(gè)服務(wù)節(jié)點(diǎn)上的服務(wù)模塊發(fā)生故障了,例如如果服務(wù)節(jié)點(diǎn)癱瘓了,那么服務(wù)節(jié)點(diǎn)向數(shù)據(jù)庫(kù)模塊發(fā)送一個(gè)消息,從而在數(shù)據(jù)庫(kù)模塊中清理對(duì)應(yīng)該服務(wù)的所有表項(xiàng)。這在步驟2中是通過(guò)發(fā)送SV_DB_Udp_Unbind消息來(lái)完成的。當(dāng)收到該消息后,數(shù)據(jù)庫(kù)模塊從能處理該UDP包的可能節(jié)點(diǎn)的表中刪除該節(jié)點(diǎn)的標(biāo)識(shí)。清理完數(shù)據(jù)庫(kù)模塊表中所有的表項(xiàng)后,在步驟3中,數(shù)據(jù)庫(kù)模塊用DB_PS_Udp_Unbind消息將所有必要的信息轉(zhuǎn)發(fā)到網(wǎng)關(guān)模塊。網(wǎng)關(guān)模塊將刪除帶有那個(gè)節(jié)點(diǎn)表項(xiàng)的所有連接表項(xiàng)。
在圖7中示出了這種方法的一個(gè)例子。在步驟1中,網(wǎng)關(guān)模塊收到一個(gè)新UDP包,并且由于網(wǎng)關(guān)模塊沒(méi)有任何與該UDP包內(nèi)的標(biāo)識(shí)相關(guān)聯(lián)的表項(xiàng),因此該UDP包被認(rèn)作為一個(gè)新連接。因此,在步驟2中,網(wǎng)關(guān)模塊轉(zhuǎn)發(fā)該UDP包至數(shù)據(jù)庫(kù)模塊,其中,數(shù)據(jù)庫(kù)模塊根據(jù)調(diào)度算法選擇一個(gè)節(jié)點(diǎn)來(lái)處理該UDP包。數(shù)據(jù)庫(kù)模塊將該UDP包轉(zhuǎn)發(fā)到所選擇的節(jié)點(diǎn),并且該數(shù)據(jù)庫(kù)模塊還通過(guò)發(fā)送該節(jié)點(diǎn)的標(biāo)識(shí)來(lái)更新網(wǎng)關(guān)模塊。
在步驟4中,從相同源來(lái)的其他的UDP包被網(wǎng)關(guān)模塊接收后自動(dòng)轉(zhuǎn)發(fā)到該服務(wù)節(jié)點(diǎn)。在步驟5中,網(wǎng)關(guān)節(jié)點(diǎn)發(fā)生故障。在步驟6中,底層的集群軟件自動(dòng)選擇一個(gè)新網(wǎng)關(guān)?,F(xiàn)在,這個(gè)新選擇的網(wǎng)關(guān)從與步驟4相同的連接收到一個(gè)UDP包。但是,該新選擇的網(wǎng)關(guān)沒(méi)有任何關(guān)于該連接的表項(xiàng)。因此,在步驟8,它將該UDP包轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)模塊。數(shù)據(jù)庫(kù)模塊也檢查它的連接,并查找到一個(gè)帶有相同IP表項(xiàng)和相同端口號(hào)的表項(xiàng)。然后,它在步驟9中簡(jiǎn)單地向該新選擇的網(wǎng)關(guān)模塊返回適當(dāng)?shù)姆?wù)節(jié)點(diǎn)標(biāo)識(shí),并在步驟10中將該UDP包轉(zhuǎn)發(fā)到那個(gè)節(jié)點(diǎn)。
現(xiàn)在,服務(wù)節(jié)點(diǎn)在一段時(shí)間內(nèi)沒(méi)有收到任何從特定IP地址和端口號(hào)來(lái)的UDP包,因此在步驟11中因超時(shí)而認(rèn)為該連接是不活動(dòng)的。在步驟12中,服務(wù)節(jié)點(diǎn)刪除對(duì)應(yīng)表項(xiàng)并將該被刪除的表項(xiàng)轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)模塊。在步驟13中,數(shù)據(jù)庫(kù)模塊清理所有與那個(gè)連接對(duì)應(yīng)的表項(xiàng),并轉(zhuǎn)發(fā)給網(wǎng)關(guān)一份相同的表。在清理完所有現(xiàn)存的連接后,服務(wù)節(jié)點(diǎn)通過(guò)告訴數(shù)據(jù)庫(kù)模塊不再使用該節(jié)點(diǎn)用作以后的調(diào)度而從集群上斷開(kāi)。
由于在數(shù)據(jù)庫(kù)模塊上的冗余信息,即使網(wǎng)關(guān)節(jié)點(diǎn)有故障了,也可能將進(jìn)入的連接發(fā)送到相同的服務(wù)節(jié)點(diǎn)進(jìn)行處理。實(shí)現(xiàn)一個(gè)備份數(shù)據(jù)庫(kù)是有用的。該備份數(shù)據(jù)庫(kù)也從所有的服務(wù)節(jié)點(diǎn)收集連接信息,這允許在數(shù)據(jù)庫(kù)模塊發(fā)生故障的情況下進(jìn)行平穩(wěn)的故障切換。當(dāng)一個(gè)服務(wù)節(jié)點(diǎn)發(fā)生故障時(shí),所有到該故障節(jié)點(diǎn)的現(xiàn)有連接也將失敗。再發(fā)往那個(gè)特定節(jié)點(diǎn)的數(shù)據(jù)包將被作為新連接轉(zhuǎn)發(fā)。數(shù)據(jù)庫(kù)模塊將清理其與該故障服務(wù)節(jié)點(diǎn)對(duì)應(yīng)的連接項(xiàng)目表。在一個(gè)超時(shí)值之后進(jìn)入的UDP包將被認(rèn)為屬于一個(gè)新的連接,該超時(shí)值可依服務(wù)或節(jié)點(diǎn)或集群范圍而定。該方法和設(shè)備可在一個(gè)集群軟件中或在可擴(kuò)充國(guó)際網(wǎng)絡(luò)服務(wù)中實(shí)現(xiàn),以允許高效地分發(fā)和轉(zhuǎn)發(fā)UDP包。
參考標(biāo)記列表1集群系統(tǒng)2網(wǎng)關(guān)模塊3數(shù)據(jù)庫(kù)模塊4、5、6服務(wù)模塊12、13、14、15節(jié)點(diǎn)16、17網(wǎng)絡(luò)11連接20防火墻21因特網(wǎng)22、221客戶(hù)端RQ1、RQ2、RQ1’UDP包IDP、IDA源地址DPP、DIP目標(biāo)地址ID節(jié)點(diǎn)標(biāo)識(shí)LG網(wǎng)關(guān)表LD數(shù)據(jù)庫(kù)表LN4、LN5、LN6節(jié)點(diǎn)表TS時(shí)間標(biāo)記VIP虛擬IP地址LGA網(wǎng)關(guān)列表
權(quán)利要求
1.一種數(shù)據(jù)包的分發(fā)方法,該數(shù)據(jù)包由計(jì)算機(jī)經(jīng)由連接線路發(fā)送到集群系統(tǒng),所述集群系統(tǒng)包括至少兩個(gè)節(jié)點(diǎn),其中至少兩個(gè)第一節(jié)點(diǎn)包括用于處理所述數(shù)據(jù)包的服務(wù),并且其中至少一個(gè)第二節(jié)點(diǎn)包括用于接收所述數(shù)據(jù)包的裝置,所述數(shù)據(jù)包包括UDP包和發(fā)送該數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí);該方法包括步驟a)由所述至少一個(gè)第二節(jié)點(diǎn)接收該數(shù)據(jù)包;b)提取所述數(shù)據(jù)包內(nèi)的所述標(biāo)識(shí);c)檢查是否包含相同標(biāo)識(shí)的數(shù)據(jù)包已經(jīng)被接收過(guò)并被轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)中之一;d)如果之前的檢查結(jié)果是肯定的,那么轉(zhuǎn)發(fā)該數(shù)據(jù)包至所述至少兩個(gè)第一節(jié)點(diǎn)中之一;e)如果之前的檢查結(jié)果是否定的,在所述至少兩個(gè)第一節(jié)點(diǎn)中選擇一節(jié)點(diǎn),并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到所選的節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的方法,其中,被轉(zhuǎn)發(fā)的數(shù)據(jù)包是所述至少一個(gè)第二節(jié)點(diǎn)接收的數(shù)據(jù)包中的UDP包。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,步驟c)包括如下步驟檢查在規(guī)定的時(shí)間范圍之前是否有包含相同標(biāo)識(shí)的數(shù)據(jù)包已經(jīng)在前被接收過(guò)并被轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)中之一。
4.根據(jù)權(quán)利要求1~3中任一權(quán)利要求所述的方法,其中,所述至少一個(gè)第二節(jié)點(diǎn)包含第一表,所述第一表包含表項(xiàng),所述表項(xiàng)包含發(fā)送數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)以及接收數(shù)據(jù)包的至少兩個(gè)第一節(jié)點(diǎn)中分配給所述標(biāo)識(shí)的那個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述第一表在步驟d)中用于識(shí)別數(shù)據(jù)包要被轉(zhuǎn)發(fā)至的節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求1~5中任一權(quán)利要求所述的方法,其中,生成第二表,所述第二表包含表項(xiàng),所述表項(xiàng)包含至少一個(gè)第二節(jié)點(diǎn)中每一個(gè)接收的所述數(shù)據(jù)包的標(biāo)識(shí),所述表項(xiàng)還包含至少兩個(gè)第一節(jié)點(diǎn)中分配給所述標(biāo)識(shí)的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)。
7.根據(jù)權(quán)利要求4~6中任一權(quán)利要求所述的方法,其中,如果在一個(gè)特定的時(shí)間范圍內(nèi)沒(méi)有接收到帶有所述標(biāo)識(shí)的數(shù)據(jù)包,那么包含所述標(biāo)識(shí)的表項(xiàng)將從第一和/或第二表中被刪除。
8.根據(jù)權(quán)利要求1~7中任一權(quán)利要求所述的方法,其中,步驟e)中的選擇包括如下步驟測(cè)量所述至少一個(gè)第一節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)的系統(tǒng)負(fù)載,并選擇系統(tǒng)負(fù)載最小的節(jié)點(diǎn);或選擇所述至少一個(gè)第一節(jié)點(diǎn)中具有最少連接數(shù)的一節(jié)點(diǎn)。
9.根據(jù)權(quán)利要求1~8中任一權(quán)利要求所述的方法,其中,所述計(jì)算機(jī)的標(biāo)識(shí)包括計(jì)算機(jī)的IP地址和端口地址。
10.一種在集群系統(tǒng)中用于分發(fā)計(jì)算機(jī)發(fā)送來(lái)的數(shù)據(jù)包的設(shè)備,所述數(shù)據(jù)包包括UDP包和發(fā)送該數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí);所述集群系統(tǒng)包括經(jīng)由集群網(wǎng)絡(luò)連接的至少兩個(gè)節(jié)點(diǎn);所述設(shè)備包括在所述至少兩個(gè)節(jié)點(diǎn)中的至少兩個(gè)第一節(jié)點(diǎn)中用于處理所述數(shù)據(jù)包的裝置;所述設(shè)備還包括在所述至少兩個(gè)節(jié)點(diǎn)中的至少一個(gè)第二節(jié)點(diǎn)上用于接收數(shù)據(jù)包的裝置;所述設(shè)備還包括用于將接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)的裝置;所述設(shè)備還包括用于在所述至少兩個(gè)第一節(jié)點(diǎn)中選擇一數(shù)據(jù)包要被轉(zhuǎn)發(fā)至的節(jié)點(diǎn)的裝置。
11.根據(jù)權(quán)利要求10所述的設(shè)備,其中,用于轉(zhuǎn)發(fā)的裝置和用于處理的裝置是在所述至少兩個(gè)節(jié)點(diǎn)中不同的節(jié)點(diǎn)上。
12.根據(jù)權(quán)利要求10或11所述的設(shè)備,其中,用于轉(zhuǎn)發(fā)的裝置和用于選擇的裝置是在所述至少兩個(gè)節(jié)點(diǎn)中不同的節(jié)點(diǎn)上。
13.根據(jù)權(quán)利要求10~12中任一權(quán)利要求所述的設(shè)備,其中
全文摘要
一種數(shù)據(jù)包的分發(fā)方法和設(shè)備,該數(shù)據(jù)包由計(jì)算機(jī)經(jīng)由連接發(fā)送到集群系統(tǒng)。該數(shù)據(jù)包包括UDP包和發(fā)送該數(shù)據(jù)包的計(jì)算機(jī)的標(biāo)識(shí)。至少一個(gè)第二節(jié)點(diǎn)接收該數(shù)據(jù)包后,提取所述數(shù)據(jù)包內(nèi)的標(biāo)識(shí)。然后,檢查是否包含相同標(biāo)識(shí)的數(shù)據(jù)包已經(jīng)被接收過(guò)并被轉(zhuǎn)發(fā)到所述至少兩個(gè)第一節(jié)點(diǎn)中之一。如果之前的檢查結(jié)果是肯定的,那么轉(zhuǎn)發(fā)該數(shù)據(jù)包至所述至少兩個(gè)第一節(jié)點(diǎn)中之一。否則選擇一新節(jié)點(diǎn),并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到所選的節(jié)點(diǎn)以進(jìn)行數(shù)據(jù)處理。這允許UDP連接可以高效地進(jìn)行失敗轉(zhuǎn)移和負(fù)載平衡。
文檔編號(hào)H04L29/08GK1754365SQ200380104365
公開(kāi)日2006年3月29日 申請(qǐng)日期2003年11月25日 優(yōu)先權(quán)日2002年11月27日
發(fā)明者H·坎南 申請(qǐng)人:富士通西門(mén)子電腦公司