專利名稱:容錯(cuò)的數(shù)據(jù)通信的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的相關(guān)申請(qǐng)本發(fā)明要求No.60/351,717,提交于2002年1月24日的美國臨時(shí)申請(qǐng)的權(quán)益。上述申請(qǐng)的全部內(nèi)容合并作為本文的基礎(chǔ)。
本發(fā)明的現(xiàn)有技術(shù)Internet(國際互聯(lián)網(wǎng))是由個(gè)人計(jì)算機(jī)網(wǎng)絡(luò)通過連接構(gòu)成的國際互連網(wǎng)絡(luò),這些連接諸如SONET(同步光纖網(wǎng))和GigE(吉比特以太網(wǎng))。如
圖1中所示,路由器10終接連接15的末端,提供前向轉(zhuǎn)發(fā)輸入網(wǎng)絡(luò)數(shù)據(jù)包到其最終目的地的復(fù)用端口。
互連網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)是通過格式化的傳輸單元,通常是指數(shù)據(jù)包。數(shù)據(jù)包的格式是由一種網(wǎng)絡(luò)傳輸協(xié)議定義的,例如TCP/IP(傳輸控制協(xié)議、國際互聯(lián)網(wǎng)協(xié)議)。例如,TCP/IP數(shù)據(jù)包包括IP表頭和TCP程序段。IP表頭區(qū)分?jǐn)?shù)據(jù)源和目的主機(jī)的IP地址,路由器10用IP表頭引導(dǎo)TCP/IP數(shù)據(jù)包在鏈接15上指向目的主機(jī)。TCP程序段進(jìn)一步包括TCP表頭和被傳輸?shù)阶罱K目的地的應(yīng)用數(shù)據(jù)。TCP表頭通過指定與數(shù)據(jù)源和目的主機(jī)的執(zhí)行的應(yīng)用相關(guān)的互聯(lián)網(wǎng)接口地址來區(qū)分TCP連接的終點(diǎn)。而且,由于TCP是連接-導(dǎo)向的協(xié)議,TCP表頭還包括用于區(qū)分和識(shí)別TCP數(shù)據(jù)段的序列號(hào)。
為了完成數(shù)據(jù)路由選擇,路由器10保持互聯(lián)網(wǎng)路由表單12,路由表單是用于計(jì)算與網(wǎng)絡(luò)標(biāo)識(shí)相關(guān)的“下一跳”的數(shù)據(jù)結(jié)構(gòu)?!跋乱惶蓖ǔ?dǎo)致中間路由器,提供指向至少一個(gè)目的網(wǎng)絡(luò)的網(wǎng)關(guān)。當(dāng)路由器10試圖在適當(dāng)?shù)逆溄?5上傳送數(shù)據(jù)包時(shí),路由器10路由選擇表單12。數(shù)據(jù)包通常包括數(shù)據(jù)包表頭和數(shù)據(jù)載荷。路由器10運(yùn)用數(shù)據(jù)包表頭解壓縮的目的數(shù)據(jù)包檢索下一跳的地址的路由選擇表單。一旦下一跳被辨別,路由器10沿著指向其最終目的的路徑,在適合的鏈接15上傳送數(shù)據(jù)包到下一跳。
通過互聯(lián)網(wǎng)路由選擇,例如,在路由表單上的每一個(gè)接入具有至少兩個(gè)域值,IP地址前綴14a和下一跳14b。下一跳14b是另一個(gè)主機(jī)或路由器的IP地址,另一個(gè)主機(jī)或路由器通過以太網(wǎng)、串行連接或其它物理連接方式直接接入的。IP地址前綴14a是網(wǎng)絡(luò)標(biāo)識(shí),指定一組路由選擇有效的目的地。為了在這一組之中,目的地地址的開頭必須匹配IP地址前綴14a,可以是從0到32有效的比特。例如,任何一個(gè)從128.8.X.X的IP目標(biāo)地址應(yīng)與IP地址前綴14a,128.8.0/16匹配。通過與其它在線網(wǎng)絡(luò)連接傳送交換路由表單更新,路由器10動(dòng)態(tài)的“清除”和傳送路由選擇表單的入口。國際互聯(lián)網(wǎng)路由器通常由TCP/IP連接交換路由選擇表單更新。通過這種交換,收到一個(gè)更新的路由器10可以動(dòng)態(tài)的結(jié)合其內(nèi)部的國際互聯(lián)網(wǎng)路由選擇表單12的修正和傳送更新到國際互連網(wǎng)絡(luò)1內(nèi)的更深一層的路由器。
例如,如圖1,假設(shè)路由器10b與新的網(wǎng)絡(luò)30連接到國際互聯(lián)網(wǎng)1。路由器10b可以,按順序,與路由器10a建立網(wǎng)絡(luò)連接來交換路由選擇表單。從路由器10b的路由選擇表單更新會(huì)將路由器10b識(shí)別為網(wǎng)絡(luò)30的“下一跳”。路由器10a會(huì)與路由器10c,10d建立網(wǎng)絡(luò)連接,以更新它們的路由選擇表單12。在共同更新它們的路由選擇表單12后,路由器10可向前轉(zhuǎn)發(fā)數(shù)據(jù)包至新加入的目的網(wǎng)絡(luò)30。
國際互聯(lián)網(wǎng)路由器執(zhí)行用于路由選擇操作的服務(wù)器進(jìn)程,包括交換路由選擇表單更新。一些國際互聯(lián)網(wǎng)路由器例如AvicTSR系列的路由器,在主服務(wù)器進(jìn)程失敗的情況下,執(zhí)行后備服務(wù)器進(jìn)程的路由選擇操作。
本發(fā)明的概述對(duì)于適當(dāng)?shù)臄?shù)據(jù)包路由選擇,路由選擇表單的更新必須與網(wǎng)絡(luò)中的路由器可靠的交換。在主服務(wù)器進(jìn)程失敗的情況下,后備服務(wù)器進(jìn)程被執(zhí)行以使路由器高度有效。一些執(zhí)行后備服務(wù)器進(jìn)程的路由器定期的復(fù)制它們的路由選擇表單到持久存儲(chǔ)器。因此,如果主服務(wù)器進(jìn)程失敗,后備服務(wù)器進(jìn)程可以承擔(dān)路由選擇操作,通過保存的路由選擇表單的入口生成內(nèi)部的路由選擇表單。
然而,如果主服務(wù)器進(jìn)程在交換路由選擇表單的更新時(shí)失敗,更新不會(huì)被永久存儲(chǔ)器取得,并不可能經(jīng)過存儲(chǔ)的服務(wù)器路由選擇表單的入口來啟動(dòng)后備服務(wù)器進(jìn)程。更糟的是,交換失敗的遠(yuǎn)程路由器可以被認(rèn)為是不可用的路由器,并從內(nèi)部的路由選擇表單上刪除遠(yuǎn)程路由器入口,即使失敗的路由器可以從主服務(wù)器進(jìn)程轉(zhuǎn)到后備服務(wù)器進(jìn)程。結(jié)果是,該路由器被從系統(tǒng)中有效的刪除了,直到執(zhí)行重新初始化的進(jìn)程。
本發(fā)明的實(shí)施方案提供一種容錯(cuò)的數(shù)據(jù)通信的系統(tǒng)和方法,該系統(tǒng)和方法讓后備進(jìn)程與遠(yuǎn)程進(jìn)程持續(xù)通信,所述遠(yuǎn)程進(jìn)程是主服務(wù)器進(jìn)程在以前建立的網(wǎng)絡(luò)連接。本實(shí)施方案保持了通信程序的連續(xù)性,防止通信中斷和數(shù)據(jù)丟失。
本發(fā)明的實(shí)施方案提供與遠(yuǎn)程進(jìn)程通信的主進(jìn)程,傳輸內(nèi)容信息和通信狀態(tài)。主進(jìn)程將內(nèi)容信息和通信狀態(tài)存入數(shù)據(jù)存儲(chǔ)器,在主進(jìn)程失敗的情況下,存儲(chǔ)器可以被后備進(jìn)程讀取。在發(fā)生失敗的情況下,與遠(yuǎn)程進(jìn)程的通信轉(zhuǎn)到后備進(jìn)程,后備進(jìn)程通過檢索數(shù)據(jù)存儲(chǔ)器中的內(nèi)容信息和通信狀態(tài)鏡像主進(jìn)程。因而,后備進(jìn)程可以用從數(shù)據(jù)存儲(chǔ)器檢索的通信狀態(tài)與遠(yuǎn)程進(jìn)程持續(xù)的通信。
通信狀態(tài)包括網(wǎng)絡(luò)連接狀態(tài),通過網(wǎng)絡(luò)連接,例如TCP連接,更新被傳輸。對(duì)于TCP連接,主進(jìn)程還包括容錯(cuò)的、連接-導(dǎo)向的傳輸協(xié)議,傳輸協(xié)議支持與遠(yuǎn)程進(jìn)程實(shí)施通信控制協(xié)議(TCP)通信。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,容錯(cuò)傳輸協(xié)議是TCP協(xié)議的改進(jìn)版本,容錯(cuò)傳輸協(xié)議將通信狀態(tài)存入數(shù)據(jù)存儲(chǔ)器,后備進(jìn)程可利用數(shù)據(jù)存儲(chǔ)器保持已建立的網(wǎng)絡(luò)連接的通信。
本發(fā)明的實(shí)施方案可以被適用于不同應(yīng)用,包括在網(wǎng)絡(luò)環(huán)境下路由器交換路由選擇表單的更新。這樣的路由器包括與至少一個(gè)的外部的連接相連接的主路由選擇進(jìn)程。主路由選擇進(jìn)程可以通過外部連接與遠(yuǎn)程服務(wù)器通信,傳輸路由選擇數(shù)據(jù)和通信狀態(tài)。主路由選擇進(jìn)程存儲(chǔ)路由選擇信息和通信狀態(tài)于數(shù)據(jù)存儲(chǔ)器,在主進(jìn)程失敗的情況下數(shù)據(jù)存儲(chǔ)器可以被后備路由選擇進(jìn)程利用。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,通信狀態(tài)是用于傳輸更新的網(wǎng)絡(luò)連接的狀態(tài)。
在失敗的情況下,與遠(yuǎn)程路由器的通信轉(zhuǎn)到后備路由選擇進(jìn)程,后備路由選擇進(jìn)程通過檢索數(shù)據(jù)存儲(chǔ)器中的路由選擇數(shù)據(jù)和通信狀態(tài)來鏡像主路由選擇進(jìn)程。這樣,后備路由選擇進(jìn)程可以用從數(shù)據(jù)存儲(chǔ)器檢索的通信狀態(tài)與遠(yuǎn)程路由器持續(xù)通信。
根據(jù)本發(fā)明的一個(gè)實(shí)施方案,主路由選擇進(jìn)程可以執(zhí)行互聯(lián)網(wǎng)路由選擇協(xié)議,例如BGP(邊界網(wǎng)關(guān)協(xié)議),路由選擇協(xié)議通常在TCP(傳輸控制協(xié)議)上交換路由選擇表單的更新。在這樣的方案中,通信狀態(tài)是TCP連接的當(dāng)前狀態(tài),包括TCP接口地址、TCP狀態(tài)標(biāo)識(shí)(例如關(guān)閉的、聽、已建立的等)、發(fā)送和接收序列號(hào)、確認(rèn)序列號(hào)等。
主路由選擇進(jìn)程在數(shù)據(jù)存儲(chǔ)器中儲(chǔ)存存儲(chǔ)的狀態(tài),存儲(chǔ)狀態(tài)得到通信狀態(tài)。例如,當(dāng)TCP數(shù)據(jù)段被接收,TCP數(shù)據(jù)段具有發(fā)送序列號(hào)(例如,通信狀態(tài)),TCP接收序列號(hào)(例如,存儲(chǔ)的狀態(tài))是得自發(fā)送序列號(hào)并存在該連接的存儲(chǔ)數(shù)據(jù)中。對(duì)于一些TCP連接狀態(tài),通信狀態(tài)與存儲(chǔ)狀態(tài)是相同的。
然而,TCP不允許應(yīng)用-應(yīng)用的傳輸TCP數(shù)據(jù)段。相反,TCP傳輸確認(rèn),通常指ACKs,作為對(duì)接收TCP數(shù)據(jù)段的回應(yīng)。TCP確認(rèn)不能保證數(shù)據(jù)被傳輸?shù)浇K端用戶進(jìn)程,只有TCP接收進(jìn)程有權(quán)這么做。這樣,通過標(biāo)準(zhǔn)TCP,當(dāng)收到TCP確認(rèn)時(shí),路由選擇表單的更新被處理和被主服務(wù)器進(jìn)程備份都是沒有保證的。
本發(fā)明的實(shí)施方案還提供一種系統(tǒng)和方法,用于提供應(yīng)用-應(yīng)用的數(shù)據(jù)通信,以保證內(nèi)容信息和通信狀態(tài)都被存入數(shù)據(jù)存儲(chǔ)器,并在收到確認(rèn)之前,確認(rèn)是由通信的發(fā)送終端(例如讀取)或傳送數(shù)據(jù)到通信的接收終端(例如些)。這樣,當(dāng)后備程序被初始化,在從主進(jìn)程到后備進(jìn)程的轉(zhuǎn)換過程就避免了丟失數(shù)據(jù)。
這樣的方案對(duì)于周圍的不能執(zhí)行本發(fā)明的容錯(cuò)數(shù)據(jù)通信的路由器(例如,執(zhí)行標(biāo)準(zhǔn)TCP的路由器)是透明的。這樣,不需要對(duì)現(xiàn)有路由器進(jìn)行改動(dòng)就能使其與本發(fā)明的容錯(cuò)數(shù)據(jù)通信的路由器共同工作。
附圖簡要說明如附圖中展示的本發(fā)明的各部分的不同視圖,本發(fā)明的目標(biāo)、特征和優(yōu)點(diǎn)將由以下的詳盡描述而變得更為清晰。附圖不必限于比例,附圖的重點(diǎn)是展示本發(fā)明的機(jī)理。
圖1展示了路由器通過連接相互聯(lián)結(jié)計(jì)算機(jī)網(wǎng)絡(luò);圖2展示了本發(fā)明的一個(gè)實(shí)施方案中的可實(shí)施容錯(cuò)數(shù)據(jù)通信的路由轉(zhuǎn)換器的硬件部分;圖3A是本發(fā)明的一個(gè)實(shí)施方案中的容錯(cuò)數(shù)據(jù)通信的路由器在一般操作狀態(tài)下的示意圖;圖3B是本發(fā)明的一個(gè)實(shí)施方案中的容錯(cuò)數(shù)據(jù)通信的路由器在后備模式狀態(tài)下的示意圖;圖4展示了本發(fā)明的一個(gè)實(shí)施方案中與遠(yuǎn)程同級(jí)執(zhí)行容錯(cuò)TCP連接的軟件組成部分;圖5A展示了本發(fā)明的一個(gè)實(shí)施方案中的在容錯(cuò)TCP連接上的讀取進(jìn)程;圖5B展示了本發(fā)明的一個(gè)實(shí)施方案中的在容錯(cuò)TCP連接上的寫入進(jìn)程;圖6是本發(fā)明的一個(gè)實(shí)施方案中,當(dāng)數(shù)據(jù)通信的后備模式從主應(yīng)用進(jìn)程到后備應(yīng)用進(jìn)程,重建FTTCP連接的過程的流程圖。本發(fā)明的詳細(xì)描述本發(fā)明的優(yōu)選的實(shí)施方案的詳細(xì)描述如下。
本發(fā)明的實(shí)施方案提供一種用于容錯(cuò)的數(shù)據(jù)通信的系統(tǒng)和裝置。在一個(gè)實(shí)施方案中,實(shí)施容錯(cuò)的傳輸協(xié)議,為建立與遠(yuǎn)程的同級(jí)應(yīng)用進(jìn)程的網(wǎng)絡(luò)連接和保持當(dāng)前聯(lián)結(jié)狀態(tài)于存儲(chǔ)器。在應(yīng)用進(jìn)程失敗的情況下,網(wǎng)絡(luò)連接的本地端可從存儲(chǔ)器內(nèi)存儲(chǔ)的狀態(tài)被重新更新。這樣,應(yīng)用進(jìn)程的備份可在那些網(wǎng)絡(luò)聯(lián)結(jié)上持續(xù)通信。本發(fā)明的方案可適用于不同的應(yīng)用,以提高數(shù)據(jù)交換的可靠性。根據(jù)本發(fā)明的一個(gè)方案,路由器,例如國際互聯(lián)網(wǎng)路由器,可以執(zhí)行交換路由選擇表單的容錯(cuò)的數(shù)據(jù)通信。
圖2展示了本發(fā)明的一個(gè)實(shí)施方案中的可實(shí)施容錯(cuò)數(shù)據(jù)通信的路由轉(zhuǎn)換器的硬件部分。路由交換器200可以是國際互聯(lián)網(wǎng)路由器,國際互聯(lián)網(wǎng)路由器在指向最終目的地的外部連接前向傳輸TCP/IP數(shù)據(jù)包。路由交換器200包括一些由主服務(wù)器220a管理的路由器模塊230。后備服務(wù)期模塊220b與路由交換器200結(jié)合,以管理路由選擇操作,在主服務(wù)器模塊220a失敗的情況下。
主服務(wù)器模塊220a在整個(gè)系統(tǒng)200指揮路由選擇操作。而且,主服務(wù)器模塊220a保存一些IP路由選擇協(xié)議的路由選擇表單,包括BGP(邊界網(wǎng)關(guān)協(xié)議)。BGP在“邊界網(wǎng)關(guān)協(xié)議4(BGP-4)”Internet標(biāo)準(zhǔn)(草案)1771,Y.Rekhter和T.Li,1995年3月中更詳盡的描述,該文的全部內(nèi)容合并作為本發(fā)明的基礎(chǔ)。路由選擇表單是由主服務(wù)器模塊220a動(dòng)態(tài)更新的,通過更新與通過外部連接聯(lián)結(jié)在路由交換器200上的上游和下游路由器交換路由選擇表單。
每一個(gè)路由模塊230是聯(lián)結(jié)在中止于遠(yuǎn)程路由器的外部連接,例如國際互聯(lián)網(wǎng)路由器。路由器模塊230也相互聯(lián)結(jié),產(chǎn)生路由器200內(nèi)的國際互聯(lián)網(wǎng)拓?fù)洌Q為結(jié)構(gòu)。然而,其它路由器構(gòu)成,例如那些基于縱橫交換和總線的,可以為了內(nèi)部聯(lián)結(jié)路由器模塊230而使用。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,結(jié)構(gòu)防止通過內(nèi)部聯(lián)結(jié)路由器模塊230的內(nèi)部死鎖和樹飽和,以提供從任何源到任何目的地的結(jié)構(gòu)的多路徑。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,每個(gè)路由器模塊230包括一個(gè)整合的開關(guān)和線路卡,用于結(jié)構(gòu)內(nèi)部和外部的從結(jié)構(gòu)到遠(yuǎn)程路由器的路由選擇數(shù)據(jù)包。
這樣的結(jié)構(gòu)包括多維環(huán)形結(jié)構(gòu)和伽馬曲線結(jié)構(gòu)。多維環(huán)形結(jié)構(gòu)在美國專利6,285,679,公布于2001年9月4日,名稱為“事件-驅(qū)動(dòng)的路由選擇的方法和裝置”中詳更細(xì)的描述,該文的全部內(nèi)容合并作為本發(fā)明的基礎(chǔ)。
主服務(wù)器和后備服務(wù)器220a,220b通過不同的路由器模塊230進(jìn)入結(jié)構(gòu),稱為粘貼的模塊或SAM。經(jīng)過SAM接入結(jié)構(gòu),活動(dòng)的服務(wù)器模塊可發(fā)送和接收在外部連接上的路由選擇表單的更新。
主服務(wù)器模塊220a連接于后備服務(wù)器模塊220b,提高傳送數(shù)據(jù)和控制信息的通道。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,主服務(wù)器模塊220a是經(jīng)過控制模塊250的機(jī)架的以太網(wǎng)轉(zhuǎn)發(fā)器直接聯(lián)結(jié)在后備服務(wù)器模塊220b上或經(jīng)過橫渡的線路直接聯(lián)結(jié)在后備服務(wù)器模塊220b上。
圖3A是本發(fā)明的一個(gè)實(shí)施方案中的容錯(cuò)數(shù)據(jù)通信的路由器在一般操作狀態(tài)下的示意圖。在普通模式下,主服務(wù)器進(jìn)程310,在主服務(wù)器模塊220a內(nèi),發(fā)起或接收于遠(yuǎn)程路由器330的網(wǎng)絡(luò)聯(lián)結(jié),以交換路由選擇表單的更新。如果表單的更新改變了路由選擇表單315a的狀態(tài)(例如,加入,刪除或修改表單的入口),主服務(wù)器進(jìn)程310傳送路由選擇狀態(tài)的變化存儲(chǔ)于后備服務(wù)器模塊220b的儲(chǔ)存器350。這樣,當(dāng)主服務(wù)器進(jìn)程310失敗,在普通操作中不工作的后備服務(wù)器進(jìn)程370可產(chǎn)生路由選擇表單,由與路由選擇表單315a相關(guān)的儲(chǔ)存的路由選擇狀態(tài)355a。
除了復(fù)制路由選擇表單狀態(tài)的改變,主服務(wù)器進(jìn)程310也復(fù)制與遠(yuǎn)程路由器330建立的網(wǎng)絡(luò)連接的連接狀態(tài)315b。這樣,如果主服務(wù)器進(jìn)程310失敗(1)當(dāng)交換路由選擇表單的更新時(shí)或(2)路由選擇表單的更新交換后,但被存儲(chǔ)器350確認(rèn)前,本地的網(wǎng)絡(luò)連接可以從存儲(chǔ)在儲(chǔ)存器350內(nèi)的連接狀態(tài)355b產(chǎn)生。這樣,后備服務(wù)器進(jìn)程370可以在以前建立的網(wǎng)絡(luò)連接從主服務(wù)器進(jìn)程310失敗的一點(diǎn)上進(jìn)行當(dāng)前的繼續(xù)交換。
圖3B是本發(fā)明的一個(gè)實(shí)施方案中的容錯(cuò)數(shù)據(jù)通信的路由器在后備模式狀態(tài)下的示意圖。當(dāng)主服務(wù)器進(jìn)程310失敗,路由選擇操作的控制轉(zhuǎn)移到后備服務(wù)器進(jìn)程370,后備服務(wù)器進(jìn)程370示例于后備服務(wù)器模塊220b。從存儲(chǔ)器350檢索出的存儲(chǔ)的路由選擇狀態(tài)355a,后備服務(wù)器進(jìn)程370產(chǎn)生路由選擇表單375a。而且,由主服務(wù)器進(jìn)程310建立的網(wǎng)絡(luò)連接的本地方是由存儲(chǔ)器350內(nèi)儲(chǔ)存的連接狀態(tài)355b產(chǎn)生的,網(wǎng)絡(luò)連接的本地方允許后備服務(wù)器進(jìn)程370可以持續(xù)的交換當(dāng)前與遠(yuǎn)程路由器330在路由選擇表單的更新。這一方案防止在從主服務(wù)器進(jìn)程310到后備服務(wù)器進(jìn)程370傳輸失敗時(shí)導(dǎo)致路由選擇表單的更新的丟失。
關(guān)于國際互聯(lián)網(wǎng)路由器,BGP是IP路由選擇協(xié)議,BGP在TCP(傳輸控制協(xié)議)上交換路由選擇表單的更新。TCP是連接-導(dǎo)向的傳輸層協(xié)議,該協(xié)議在“Internet標(biāo)準(zhǔn)(草案)793-傳輸控制協(xié)議”防御提升研究計(jì)劃辦事處,1981中做出更為詳細(xì)的描述,該文全部內(nèi)容合并作為本發(fā)明的基礎(chǔ)。當(dāng)TCP傳輸確認(rèn),通常指ACK,作為收到TCP數(shù)據(jù)段的響應(yīng)。TCP確認(rèn)不允許數(shù)據(jù)被傳送到終端用戶進(jìn)程,只是接收TCP進(jìn)程有責(zé)怪這樣做。這樣,通過標(biāo)準(zhǔn)TCP,當(dāng)收到TCP確認(rèn)時(shí),沒有路由選擇表單的更新被處理和備份的保證。
根據(jù)本發(fā)明的一個(gè)實(shí)施方案,TCP協(xié)議被修改,以提供容錯(cuò)的數(shù)據(jù)通信,以保證應(yīng)用-應(yīng)用的數(shù)據(jù)通信。修改不要求改變TCP數(shù)據(jù)段的格式。這樣,這些方案使現(xiàn)有的執(zhí)行標(biāo)準(zhǔn)TCP的路由器能夠協(xié)調(diào),避免了修改現(xiàn)有路由器,以使其參與運(yùn)作。
圖4展示了本發(fā)明的一個(gè)實(shí)施方案中與遠(yuǎn)程同級(jí)執(zhí)行容錯(cuò)TCP連接的軟件組成部分。容錯(cuò)TCP(FTTCP)可以在主服務(wù)器和后備服務(wù)器模塊220a和220b被執(zhí)行,通過(1)TCP-協(xié)調(diào)FTTCP協(xié)議驅(qū)動(dòng)器450a和450b;(2)FTTCP網(wǎng)絡(luò)界面接口層接口420a和420b;(3)FTTCP任務(wù)430;以及(4)存儲(chǔ)進(jìn)程490。TCP協(xié)議驅(qū)動(dòng)器460a、460b和TCP網(wǎng)絡(luò)界面接口層接口440a、440b也可用于傳送到存儲(chǔ)器490和從存儲(chǔ)器490傳出。應(yīng)用處理410a、410b接口和用于與上游和下游路由器可靠交換路由選擇表單的更新的具有FTTCP的接口。IP協(xié)議驅(qū)動(dòng)器470a、470b和網(wǎng)絡(luò)接口驅(qū)動(dòng)器480a、480b支持上述傳輸和應(yīng)用層。
根據(jù)本發(fā)明的一個(gè)實(shí)施方案,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a、450b是TCP的修改版本,通過修改內(nèi)部與遠(yuǎn)程TCP同級(jí)的數(shù)據(jù)讀寫的語義提供容錯(cuò)功能,如圖5A和5B中所示。如主/后備服務(wù)器進(jìn)程410a、410b的應(yīng)用進(jìn)程要求網(wǎng)絡(luò)服務(wù)(例如,讀和寫服務(wù)),從FTTP協(xié)議驅(qū)動(dòng)器450a、450b,通過為FTTCP修改的網(wǎng)絡(luò)界面接口層接口420a、420b。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,F(xiàn)TTCP網(wǎng)絡(luò)界面接口層接口420a、420b提供網(wǎng)絡(luò)界面接口系統(tǒng)呼叫的API(應(yīng)用程序接口),類似于標(biāo)準(zhǔn)TCP協(xié)議驅(qū)動(dòng)器460a、460b的TCP網(wǎng)絡(luò)界面接口層接口440a、440b。FTTCP網(wǎng)絡(luò)界面接口422代表傳輸層聯(lián)結(jié)的終點(diǎn),并且是特殊的文件類型,用于從內(nèi)核的要求網(wǎng)絡(luò)服務(wù)的應(yīng)用進(jìn)程。FTTCP網(wǎng)絡(luò)界面接口422是與在傳輸中暫時(shí)存儲(chǔ)TCP數(shù)據(jù)段的接收緩沖器423和發(fā)送緩沖器424結(jié)合的。
FTTCP任務(wù)430和存儲(chǔ)進(jìn)程490可以是在TCP/IP上的內(nèi)核的通信進(jìn)程,傳輸從FTTCP協(xié)議驅(qū)動(dòng)器450a的FTTCP的連接狀態(tài)。存儲(chǔ)進(jìn)程490可以是用戶模式,在后備服務(wù)器模塊220b上執(zhí)行。存儲(chǔ)進(jìn)程490提供API接口,以保持當(dāng)前的路由選擇表單的狀態(tài)和已建立的FTTCP連接的狀態(tài)。存儲(chǔ)進(jìn)程490也提供從存儲(chǔ)的狀態(tài)重生成網(wǎng)絡(luò)連接的路由選擇表單的狀態(tài)的API接口。根據(jù)本發(fā)明的一個(gè)方案,存儲(chǔ)進(jìn)程490執(zhí)行狀態(tài)存儲(chǔ)的相對(duì)排列或無意義的表單。
FTTCP的方案執(zhí)行TCP語義的讀取和寫入的修改,以保證當(dāng)服務(wù)器失敗時(shí)兩個(gè)FTTCP終點(diǎn)的同步。例如TCP通常發(fā)送確認(rèn)作為TCP數(shù)據(jù)段的收條。然而,在傳送確認(rèn)后,應(yīng)用進(jìn)程可在讀取和處理數(shù)據(jù)(例如,路由選擇表單的更新)前失敗。這樣,當(dāng)后備應(yīng)用進(jìn)程被初始化,從存儲(chǔ)器重建的路由選擇表單可能不包括路由選擇表單的更新。重新傳輸路由選擇表單的更新不大可能,如果包含更新的TCP數(shù)據(jù)段被確認(rèn)。
圖5A展示了本發(fā)明的一個(gè)實(shí)施方案中的在容錯(cuò)TCP連接上的讀取進(jìn)程。通常,F(xiàn)TTCP不確認(rèn)TCP數(shù)據(jù)段的收到,直到被明確的引導(dǎo)這樣做。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,當(dāng)數(shù)據(jù)被處理并成功的從存儲(chǔ)器取得,應(yīng)用進(jìn)程引導(dǎo)FTTCP傳輸一個(gè)確認(rèn)。如果應(yīng)用進(jìn)程在從存儲(chǔ)器取得之前失敗,確認(rèn)就不會(huì)被傳輸。這樣,遠(yuǎn)程TCP等同可以持續(xù)重新傳送數(shù)據(jù),允許傳輸至后備應(yīng)用進(jìn)程以處理和確認(rèn)重新傳輸?shù)臄?shù)據(jù)。盡管FTTCP可以被適用于不同應(yīng)用,圖5A展示了在路由器環(huán)境下容錯(cuò)TCP連接的讀入處理。
在510,在FTTCP連接上傳輸?shù)腡CP/IP數(shù)據(jù)包被IP協(xié)議驅(qū)動(dòng)器470a接收。TCP數(shù)據(jù)段,包括至少一部分的路由選擇表單的更新,從數(shù)據(jù)包被解壓縮并且經(jīng)過修改的tcp_input系統(tǒng)呼叫被前向傳輸至FTTCP協(xié)議驅(qū)動(dòng)器450a。
在515,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a設(shè)置從TCP數(shù)據(jù)段到FTTCP網(wǎng)絡(luò)界面接口422的網(wǎng)絡(luò)界面接口接收緩存器423數(shù)據(jù)文件的搜索路徑,這一過程與TCP數(shù)據(jù)段表頭中確定的目的地TCP端口相關(guān)。對(duì)于BGP,公知的TCP端口確認(rèn)是179。相對(duì)于TCP,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器的修改的TCP輸入系統(tǒng)呼叫即不確認(rèn)TCP數(shù)據(jù)包的收到也不更新在這一階段的連接的狀態(tài)(例如,增加下一序列數(shù)的接收)。
在520,應(yīng)用進(jìn)程410a(例如,GateDTM從NextHopTechnologyTM的主服務(wù)器進(jìn)程)讀取動(dòng)網(wǎng)絡(luò)界面接口接收緩存器423讀取的數(shù)據(jù),通過喚醒讀取系統(tǒng)呼叫。相對(duì)于TCP,在被讀取后數(shù)據(jù)從網(wǎng)絡(luò)界面接口接收緩沖器423不是被立即“降下”(例如,刪除)。在網(wǎng)絡(luò)界面接口接收緩沖器423中降下數(shù)據(jù),主服務(wù)器進(jìn)程必須發(fā)出明確的請(qǐng)求到網(wǎng)絡(luò)界面接口層420a的FTTCP網(wǎng)絡(luò)界面接口422。
在525,主服務(wù)器進(jìn)程410a處理從網(wǎng)絡(luò)界面接口接收緩沖器423讀取的數(shù)據(jù),通過經(jīng)路由選擇表單的更新合并到BGP路由選擇表單并存儲(chǔ)處理過的路由選擇表單的更新于存儲(chǔ)器490。根據(jù)本發(fā)明的一個(gè)方案,經(jīng)過TCP/IP層460a、470a,主服務(wù)器進(jìn)程傳輸處理過的路由選擇表單的更新到存儲(chǔ)器490。
在530,從存儲(chǔ)進(jìn)程490發(fā)回的確認(rèn)信息確認(rèn)處理過的路由選擇表單的更新的存儲(chǔ)。
在535,在消耗數(shù)據(jù)之上,主服務(wù)器進(jìn)程410a引導(dǎo)網(wǎng)絡(luò)界面接口422從網(wǎng)絡(luò)界面接口接收緩沖器423降下數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,主服務(wù)器進(jìn)程410a引導(dǎo)網(wǎng)絡(luò)界面接口422降下數(shù)據(jù),通過調(diào)用修改的setsockopt()系統(tǒng)呼叫的一個(gè)新的網(wǎng)絡(luò)界面接口水平選擇,SO_FTDROP,和字節(jié)的數(shù)量被降下。
在540,修改的setsockopt()系統(tǒng)呼叫處理SO_FTDROP選擇,發(fā)出信息到與FTTCP任務(wù)430結(jié)合的任務(wù)排列。SO_FTDROP信息要求任務(wù)430更新存儲(chǔ)器490內(nèi)的FTTCP連接狀態(tài)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,連接狀態(tài)包括接收下一序列數(shù),提供當(dāng)前FTTCP連接的接收狀態(tài)。
在545,setsockopt()系統(tǒng)呼叫返回主服務(wù)器進(jìn)程410a,允許進(jìn)一步應(yīng)用水平的處理。
在550,經(jīng)過連接到存儲(chǔ)器490的TCP/IP連接,F(xiàn)TTCP任務(wù)430發(fā)送更新的連接狀態(tài),并等待確認(rèn)指示是否更新被成功提交給存儲(chǔ)器490。
在555,從存儲(chǔ)器進(jìn)程490的確認(rèn)被接收。
在560,依據(jù)成功的確認(rèn),F(xiàn)TTCP任務(wù)430引導(dǎo)從網(wǎng)絡(luò)界面接口接收緩存器423讀取的數(shù)據(jù)的刪除。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,經(jīng)過標(biāo)準(zhǔn)sbdrop()系統(tǒng)呼叫,數(shù)據(jù)被從接收緩存器423刪除,規(guī)定網(wǎng)絡(luò)界面接口接收緩存器423的地址和被降下的數(shù)據(jù)的字節(jié)數(shù)。
在565,F(xiàn)TTCP任務(wù)430引導(dǎo)FTTCP協(xié)議驅(qū)動(dòng)器450a更新FTTCP連接的狀態(tài)(例如,從FTTCP連接接收下一序列數(shù))。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,F(xiàn)TTCP任務(wù)430引導(dǎo)接收的下一序列數(shù)的更新是通過調(diào)用修改的sbdrop()系統(tǒng)呼叫、確定FTTCP的新的協(xié)議水平并確定新的TCP_FT_DROP選擇。這個(gè)選擇被過濾進(jìn)入FTTCP協(xié)議驅(qū)動(dòng)器450a,并在那里被tcp_ctloutput()系統(tǒng)呼叫控制,為FTTCP連接更新下一序列數(shù)的接收。
在570,依據(jù)接收的下一序列數(shù)的更新,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a發(fā)送TCP數(shù)據(jù)段至遠(yuǎn)程FTTCP連接的同級(jí)、確認(rèn)已接收的TCP數(shù)據(jù)段并確定預(yù)期被接收的下一TCP數(shù)據(jù)段的序列數(shù)。
通過在確認(rèn)TCP數(shù)據(jù)段之前提交接收下一序列數(shù)至存儲(chǔ)器,本地接收窗口會(huì)總是等同或前于同級(jí)的發(fā)送窗口。在失敗的情況下,存儲(chǔ)器或者具有與TCP同級(jí)相同的信息或比客戶更多的近期信息。更多的近期信息通過前于同級(jí)發(fā)送窗口的接收窗口反映在TCP。
圖5B展示了本發(fā)明的一個(gè)實(shí)施方案中的在容錯(cuò)TCP連接上的寫入進(jìn)程。通常,F(xiàn)TTCP支持“自動(dòng)”寫入。這樣,當(dāng)應(yīng)用進(jìn)程在FTTCP連接上發(fā)出寫入數(shù)據(jù)的系統(tǒng)呼叫,F(xiàn)TTCP試圖向存儲(chǔ)器確認(rèn)傳輸?shù)臄?shù)據(jù)(例如,發(fā)送數(shù)據(jù))的入口的備份。如果有足夠的空間來存儲(chǔ)所有發(fā)送的數(shù)據(jù),寫入系統(tǒng)呼叫返回一個(gè)錯(cuò)誤。否則,數(shù)據(jù)被提交至存儲(chǔ)器并且FTTCP根據(jù)標(biāo)準(zhǔn)TCP進(jìn)程傳輸數(shù)據(jù)。如果在傳輸發(fā)送數(shù)據(jù)時(shí)應(yīng)用進(jìn)程失敗,在通過后備應(yīng)用進(jìn)程重新傳輸?shù)陌l(fā)送數(shù)據(jù)的備份是有效的。為了避免在后備應(yīng)用進(jìn)程重新傳輸整個(gè)發(fā)送數(shù)據(jù),任何部分的可以被遠(yuǎn)程同級(jí)確認(rèn)的發(fā)送數(shù)據(jù)被從存儲(chǔ)器刪除,以及相關(guān)的更新的FTTCP連接狀態(tài)被刪除。圖5B展示在路由器環(huán)境中的FTTCP連接上的寫入進(jìn)程。
在610,主服務(wù)器進(jìn)程410a調(diào)用寫入系統(tǒng)呼叫來初始化在FTTCP連接上的發(fā)送數(shù)據(jù)的傳輸。在發(fā)送數(shù)據(jù)被寫入FTTCP網(wǎng)絡(luò)界面接口422的網(wǎng)絡(luò)界面接口發(fā)送緩存器424之前,寫入系統(tǒng)呼叫決定是否網(wǎng)絡(luò)界面接口發(fā)送緩存器424有足夠的空間保存所有內(nèi)容信息。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,網(wǎng)絡(luò)界面接口發(fā)送緩存器424的空間被定義為與發(fā)送數(shù)據(jù)加當(dāng)前發(fā)送緩存器424中等待發(fā)送的數(shù)據(jù)的和相等。如果沒有足夠的空間,寫入系統(tǒng)呼叫返回一個(gè)錯(cuò)誤。否則,寫入進(jìn)程進(jìn)到615。
在615,信息被接入FTTCP任務(wù)430,請(qǐng)求存儲(chǔ)發(fā)送信息于存儲(chǔ)器490,并更新存儲(chǔ)器內(nèi)網(wǎng)絡(luò)界面接口發(fā)送緩存器424的狀態(tài)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,網(wǎng)絡(luò)界面接口發(fā)送緩存器424的狀態(tài)還包括發(fā)送下一序列數(shù)和發(fā)送未確認(rèn)的序列數(shù)。
在620,寫入系統(tǒng)呼叫轉(zhuǎn)回主服務(wù)器進(jìn)程,允許進(jìn)一步的應(yīng)用水平進(jìn)程。
在625,F(xiàn)TTCP任務(wù)430經(jīng)過TCP/IP連接發(fā)送數(shù)據(jù)和網(wǎng)絡(luò)界面接口發(fā)送緩存器的狀態(tài)至存儲(chǔ)器490。并等待從存儲(chǔ)器的確認(rèn),指示是否數(shù)據(jù)被成功提交給存儲(chǔ)器490。
在630,存儲(chǔ)器發(fā)送確認(rèn)給FTTCP任務(wù)430。
在635,依據(jù)成功的確認(rèn),F(xiàn)TTCP任務(wù)430要求FTTCP協(xié)議驅(qū)動(dòng)器450a初始化FTTCP連接上的數(shù)據(jù)傳輸。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,此系統(tǒng)呼叫是tcp_usrreq(PRU_SEND)。
在640,根據(jù)對(duì)傳輸請(qǐng)求的回應(yīng),F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a從寫緩存器傳送數(shù)據(jù),這一過程與些如系統(tǒng)呼叫被檢查,數(shù)據(jù)經(jīng)sbappend()系統(tǒng)呼叫至網(wǎng)絡(luò)界面接口發(fā)送緩存器424。
在645,產(chǎn)生TCP數(shù)據(jù)段的進(jìn)程和在FTTCP連接上發(fā)送數(shù)據(jù)段是經(jīng)tcp_output系統(tǒng)呼叫初始化的。尤其,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a分割當(dāng)前信息為數(shù)據(jù)片斷,數(shù)據(jù)片斷被加入多TCP/IP數(shù)據(jù)包的數(shù)據(jù)流量。每個(gè)被傳送的TCP片斷包括發(fā)送序列數(shù),根據(jù)TCP協(xié)議的定義。
在650,接收TCP片斷的結(jié)束確認(rèn),確定要求被接收的下一序列數(shù)。
在655,F(xiàn)TTCP協(xié)議驅(qū)動(dòng)器450a前向發(fā)送TCP數(shù)據(jù)段,TCP數(shù)據(jù)段包括網(wǎng)絡(luò)界面接口層420a內(nèi)的FTTCP網(wǎng)絡(luò)界面接口422的網(wǎng)絡(luò)界面接口接收緩存器423的確認(rèn)。
在660,F(xiàn)TTCP網(wǎng)絡(luò)界面接口422引導(dǎo)FTTCP任務(wù)430更新存儲(chǔ)器490內(nèi)網(wǎng)絡(luò)界面接口發(fā)送緩存器424的狀態(tài),通過更新發(fā)送下一序列數(shù)和發(fā)送未確認(rèn)序列數(shù),有效的刪除存儲(chǔ)器490內(nèi)的發(fā)送數(shù)據(jù)的確認(rèn)部分。
在665,F(xiàn)TTCP任務(wù)430傳送網(wǎng)絡(luò)界面接口發(fā)送緩存器424的更新的狀態(tài),并等待從存儲(chǔ)器490的確認(rèn)信息。
在670,存儲(chǔ)器490發(fā)送確認(rèn)信息,指示存儲(chǔ)請(qǐng)求是否成功。
645至670步重復(fù)直至整個(gè)發(fā)送數(shù)據(jù)被傳送并通過接收FTTCP連接的結(jié)束來確認(rèn)。
主服務(wù)器進(jìn)程410a在哪里失敗,存儲(chǔ)器490保持可被重新傳送的、除了已被確認(rèn)的整個(gè)信息的備份。即使主服務(wù)器進(jìn)程在從接收結(jié)束的TCP確認(rèn)前失敗,可重新傳送已被接收和確認(rèn)的BGP數(shù)據(jù)。尤其,BGP協(xié)議接受從未被接收的數(shù)據(jù)包的內(nèi)容信息,但忽視已被接收的信息。
圖6是本發(fā)明的一個(gè)實(shí)施方案中,當(dāng)數(shù)據(jù)通信的后備模式從主應(yīng)用進(jìn)程到后備應(yīng)用進(jìn)程,重建FTTCP連接的過程的流程圖。依據(jù)被激活的、后備服務(wù)器進(jìn)程220b、后備服務(wù)器進(jìn)程410b、例如GateDTM后備服務(wù)器進(jìn)程與儲(chǔ)存進(jìn)程490通信,以重新建立主服務(wù)器進(jìn)程410a失敗時(shí)本地方的FTTCP連接。一旦連接重新建立,后備服務(wù)器進(jìn)程410b可以持續(xù)交換數(shù)據(jù)避免數(shù)據(jù)丟失。
重建FTTCP連接意味著TCP控制程序(TCPCB)和互聯(lián)網(wǎng)控制程序(INPCB)必須重建失敗前的同樣狀態(tài)。創(chuàng)建這些數(shù)據(jù)結(jié)構(gòu)全部的相關(guān)信息儲(chǔ)存在存儲(chǔ)器內(nèi)的連接信息內(nèi)。內(nèi)核占用連接的數(shù)據(jù)結(jié)構(gòu)并重新注入tcpcb和inpcb。網(wǎng)絡(luò)界面接口發(fā)送緩存器424可以輕松的被重建,通過附加存儲(chǔ)器內(nèi)的發(fā)送緩存器424至新建的網(wǎng)絡(luò)界面接口和緩存器。圖6展示了在路由器環(huán)境中重建FTTCP連接。
在710,GateDTM后備服務(wù)器410b發(fā)送請(qǐng)求至存儲(chǔ)進(jìn)程490,要求對(duì)FTTCP連接的控制(例如,網(wǎng)絡(luò)界面接口確定)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,后備服務(wù)器進(jìn)程410b被預(yù)設(shè)置,具有國外地址/接口列表的成對(duì)的確定路由器來交換路由選擇信息。這樣,后備服務(wù)器進(jìn)程410b通過請(qǐng)求FTTCP連接的列表累接,確定請(qǐng)求累接的國外地址/接口對(duì)。
在720,存儲(chǔ)進(jìn)程490搜索內(nèi)部數(shù)據(jù)存儲(chǔ),例如無意義的表單或相關(guān)排列,匹配請(qǐng)求的標(biāo)準(zhǔn)的FTTCP連接數(shù)據(jù)結(jié)構(gòu)。如果,在730,發(fā)現(xiàn)了匹配,進(jìn)程進(jìn)到740。否則,存儲(chǔ)進(jìn)程490發(fā)回錯(cuò)誤,允許后備服務(wù)器進(jìn)程410b與其它FTTCP連接的請(qǐng)求。
在740,存儲(chǔ)進(jìn)程490創(chuàng)建FTTCP網(wǎng)絡(luò)界面接口,通過網(wǎng)絡(luò)界面接口層420b發(fā)送系統(tǒng)呼叫。例如,系統(tǒng)呼叫可如下表示so=socket(AF_INET,SOCK_STREAM,IPPROTO_FTTCP)
so是發(fā)回FTTCP的網(wǎng)絡(luò)界面接口確認(rèn)。
在750,響應(yīng)FTTCP的網(wǎng)絡(luò)界面接口的請(qǐng)求,TCP和IP控制程序(例如tcpcb和inpcb)為網(wǎng)絡(luò)界面接口而產(chǎn)生。
在760,存儲(chǔ)器490得到全部FTTCP連接的網(wǎng)絡(luò)界面接口發(fā)送緩存器424的數(shù)據(jù)并經(jīng)過網(wǎng)絡(luò)界面接口層420b前向發(fā)送至網(wǎng)絡(luò)界面接口,并被附加至FTTCP網(wǎng)絡(luò)界面接口的網(wǎng)絡(luò)界面接口發(fā)送緩存器424。例如,系統(tǒng)呼叫可以被如下表示setsockopt(so,SOL_SOCKET,SO_FTCONNDATA,buffer,size)網(wǎng)絡(luò)界面接口發(fā)送緩存器的數(shù)據(jù)被存入buffer.
在770,存儲(chǔ)器490得到FTTCP的連接狀態(tài)并前向發(fā)送至網(wǎng)絡(luò)界面接口。例如,系統(tǒng)呼叫可以如下表示setsockopt(so,SOL_SOCKET,SO_FTCONNSTATE,&connd,sizeof(rep_connection_t))connd保存FTTCP連接的狀態(tài)數(shù)據(jù)結(jié)構(gòu)(例如,structrep_connettion_t)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,F(xiàn)TTCP連接的狀態(tài)數(shù)據(jù)結(jié)構(gòu)可儲(chǔ)存以下i.連接類型,連接是否被接受;ii.由存儲(chǔ)器提供的檢索用的統(tǒng)一的FTTCP連接確定;iii.表示FTTCP網(wǎng)絡(luò)界面接口(例如,本地和國外地址/接口對(duì))的連接字節(jié)組;iv.如TCP協(xié)議定義的TCP狀態(tài);
v.接收和發(fā)送下一序列數(shù);vi.發(fā)送的未確認(rèn)的下一序列數(shù);vii.發(fā)送最大窗口序列數(shù);以及viii.初始發(fā)送和接收系列數(shù)。
在780,TCP和IP控制程序與FTTCP連接狀態(tài)被提供,并且加入IP控制程序至inpcb無意義的表單以保證本地方的連接在790,存儲(chǔ)器返回控制(例如,網(wǎng)絡(luò)界面接口確定)至后備服務(wù)器進(jìn)程410b,以持續(xù)在FTTCP網(wǎng)絡(luò)界面接口連接交換路由選擇表單的更新。
在800,后備服務(wù)器進(jìn)程410b通過預(yù)設(shè)置的FTTCP連接字節(jié)組累連,前向傳輸其它請(qǐng)求直至列表用盡。
本發(fā)明通過以上優(yōu)選的實(shí)施方案進(jìn)行了詳盡的展示和說明,本領(lǐng)域普通技術(shù)人員應(yīng)該理解,本發(fā)明的以上的不同形式的變化和細(xì)節(jié)的變化都在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種容錯(cuò)的數(shù)據(jù)通信的方法,包括參與通信,包括與源傳送數(shù)據(jù)和通信狀態(tài);從源接收數(shù)據(jù);處理收到的信息;以及其后,向源確認(rèn)收到數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的方法,其中處理收到的數(shù)據(jù)包括存儲(chǔ)或應(yīng)用收到的數(shù)據(jù)于一個(gè)以上用于備份的數(shù)據(jù)存儲(chǔ)器。
3.根據(jù)權(quán)利要求2的方法,進(jìn)一步包括存儲(chǔ)通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與存儲(chǔ)的數(shù)據(jù)聯(lián)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
4.根據(jù)權(quán)利要求3的方法,進(jìn)一步包括失敗時(shí)激活備份;從存儲(chǔ)在一個(gè)以上數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)和通信狀態(tài)重建數(shù)據(jù)和通信狀態(tài);以及用由備份重建的數(shù)據(jù)和通信狀態(tài)持續(xù)恢復(fù)的通信。
5.根據(jù)權(quán)利要求4的方法,其中用備份持續(xù)通信包括要求從源接收相應(yīng)于失敗前存儲(chǔ)在一個(gè)以上數(shù)據(jù)存儲(chǔ)器通信狀態(tài)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求3的方法,其中通信狀態(tài)是得自以前得通信狀態(tài)和收到的數(shù)據(jù)。
7.根據(jù)權(quán)利要求3的方法,其中通信狀態(tài)包括TCP對(duì)話數(shù)據(jù)。
8.根據(jù)權(quán)利要求1的方法,其中通信是TCP/IP通信。
9.根據(jù)權(quán)利要求1的方法,其中收到的數(shù)據(jù)是路由選擇信息。
10.根據(jù)權(quán)利要求9的方法,其中路由選擇信息是BGP(邊界網(wǎng)關(guān)協(xié)議)路由選擇信息。
11.根據(jù)權(quán)利要求1的方法,源是國際互聯(lián)網(wǎng)路由器。
12.一種容錯(cuò)的數(shù)據(jù)通信的方法,包括參與通信,包括與源傳送數(shù)據(jù)和通信狀態(tài);從源接收數(shù)據(jù);儲(chǔ)存或應(yīng)用收到的數(shù)據(jù)于一個(gè)以上用于備份的數(shù)據(jù)存儲(chǔ)器;以及存儲(chǔ)通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與存儲(chǔ)的數(shù)據(jù)聯(lián)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
13.根據(jù)權(quán)利要求12的方法,進(jìn)一步包括失敗時(shí)激活備份;從存儲(chǔ)在一個(gè)以上數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)和通信狀態(tài)重建數(shù)據(jù)和通信狀態(tài);以及用由備份重建的數(shù)據(jù)和通信狀態(tài)持續(xù)恢復(fù)的通信。
14.根據(jù)權(quán)利要求13的方法,其中通過備份持續(xù)通信包括要求從源接收相應(yīng)于失敗前存儲(chǔ)在一個(gè)以上數(shù)據(jù)存儲(chǔ)器的通信狀態(tài)的數(shù)據(jù)。
15.一種容錯(cuò)的數(shù)據(jù)通信的方法,包括參與通信,包括與目的地傳送數(shù)據(jù)和通信狀態(tài);為傳送到目的地發(fā)送的數(shù)據(jù)存儲(chǔ)于一個(gè)以上的數(shù)據(jù)存儲(chǔ)器;以及存儲(chǔ)通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與發(fā)送的數(shù)據(jù)結(jié)合。
16.根據(jù)權(quán)利要求15的方法,進(jìn)一步包括傳輸分段的發(fā)送的數(shù)據(jù)到目的地;以及更新在一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài),以致通信狀態(tài)反映發(fā)送的數(shù)據(jù)段。
17.根據(jù)權(quán)利要求16的方法,進(jìn)一步包括接收相應(yīng)于傳送的數(shù)據(jù)段的確認(rèn);以及更新在一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài)以反映傳輸?shù)臄?shù)據(jù)段的確認(rèn)。
18.根據(jù)權(quán)利要求17的方法,進(jìn)一步包括刪除相應(yīng)于確認(rèn)的傳送的數(shù)據(jù)段的儲(chǔ)存在一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的發(fā)送的數(shù)據(jù)。
19.一種容錯(cuò)的數(shù)據(jù)通信的系統(tǒng),包括參與通信的控制單元,包括與源傳送數(shù)據(jù)和通信狀態(tài);控制單元從源接收數(shù)據(jù);控制單元處理接收的數(shù)據(jù);以及其后,控制單元確認(rèn)收到回到源的數(shù)據(jù)。
20.根據(jù)權(quán)利要求19的系統(tǒng),進(jìn)一步包括一個(gè)以上數(shù)據(jù)存儲(chǔ)器;以及收到的數(shù)據(jù)的處理包括控制單元儲(chǔ)存或應(yīng)用收到的數(shù)據(jù)于用于備份的一個(gè)以上的數(shù)據(jù)存儲(chǔ)器。
21.根據(jù)權(quán)利要求20的系統(tǒng),進(jìn)一步包括控制單元儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與儲(chǔ)存的數(shù)據(jù)結(jié)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
22.根據(jù)權(quán)利要求21的系統(tǒng),進(jìn)一步包括控制單元失敗時(shí)激活后備控制單元;后備控制單元從一個(gè)以上的數(shù)據(jù)存儲(chǔ)器內(nèi)的數(shù)據(jù)和通信狀態(tài)重建數(shù)據(jù)和通信狀態(tài);以及后備控制單元用重建的數(shù)據(jù)和通信狀態(tài)持續(xù)恢復(fù)的通信。
23.根據(jù)權(quán)利要求22的系統(tǒng),其中的通過備份持續(xù)通信包括后備控制單元要求從源接收相應(yīng)于失敗前將通信狀態(tài)儲(chǔ)存于一個(gè)以上的數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)。
24.根據(jù)權(quán)利要求21的系統(tǒng),其中通信狀態(tài)得自以前的通信狀態(tài)和收到的數(shù)據(jù)。
25.根據(jù)權(quán)利要求21的系統(tǒng),其中通信狀態(tài)包括TCP通話數(shù)據(jù)。
26.根據(jù)權(quán)利要求19的系統(tǒng),其中通信是TCP/IP通信。
27.根據(jù)權(quán)利要求19的系統(tǒng),其中收到的數(shù)據(jù)是路由選擇信息。
28.根據(jù)權(quán)利要求27的系統(tǒng),其中路由選擇信息是BGP(邊界網(wǎng)關(guān)協(xié)議)路由選擇信息。
29.根據(jù)權(quán)利要求19的系統(tǒng),所述源是國際互聯(lián)網(wǎng)路由器。
30.一種容錯(cuò)的數(shù)據(jù)通信的系統(tǒng),包括參與通信的控制單元,包括與源傳送數(shù)據(jù)和通信狀態(tài);控制單元從源接收數(shù)據(jù);控制單元儲(chǔ)存和應(yīng)用收到的數(shù)據(jù)于一個(gè)以上用于備份的數(shù)據(jù)存儲(chǔ)器;以及控制單元儲(chǔ)存收到的數(shù)據(jù)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與儲(chǔ)存的數(shù)據(jù)結(jié)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
31.根據(jù)權(quán)利要求30的系統(tǒng),進(jìn)一步包括后備控制單元,控制單元失敗時(shí)被激活;后備控制單元從一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的數(shù)據(jù)和通信狀態(tài)重建數(shù)據(jù)和通信狀態(tài);以及后備控制單元保持與請(qǐng)求的數(shù)據(jù)和通信狀態(tài)產(chǎn)生的通信。
32.根據(jù)權(quán)利要求31的系統(tǒng),其中通過后備控制單元的持續(xù)通信包括后備控制單元要求從源接收相應(yīng)于失敗前儲(chǔ)存在一個(gè)以上數(shù)據(jù)存儲(chǔ)器的通信狀態(tài)的數(shù)據(jù)。
33.一種容錯(cuò)的數(shù)據(jù)通信的系統(tǒng),包括參與通信的控制單元,包括與目的地傳送數(shù)據(jù)和通信狀態(tài);控制單元存儲(chǔ)為了傳輸?shù)侥康牡匕l(fā)送的數(shù)據(jù)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器;以及控制單元儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與發(fā)送的數(shù)據(jù)聯(lián)合。
34.根據(jù)權(quán)利要求33的系統(tǒng),進(jìn)一步包括控制單元傳輸發(fā)送的分段的數(shù)據(jù)的至目的地;以及控制單元更新一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài),以致通信狀態(tài)反映發(fā)送的數(shù)據(jù)段。
35.根據(jù)權(quán)利要求34的系統(tǒng),進(jìn)一步包括控制單元接收相應(yīng)于傳輸?shù)臄?shù)據(jù)段的確認(rèn);以及控制單元更新一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài)以反映傳輸?shù)臄?shù)據(jù)段的確認(rèn)。
36.根據(jù)權(quán)利要求35的系統(tǒng),進(jìn)一步包括控制單元?jiǎng)h除相應(yīng)于傳輸?shù)臄?shù)據(jù)段的確認(rèn)的一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的發(fā)送數(shù)據(jù)部分。
37.根據(jù)權(quán)利要求19的系統(tǒng),其中的控制單元包括應(yīng)用進(jìn)程;連接-導(dǎo)向的傳輸協(xié)議進(jìn)程;通過傳輸協(xié)議進(jìn)程,與源通信的應(yīng)用進(jìn)程;以及數(shù)據(jù)被應(yīng)用進(jìn)程處理后,傳輸協(xié)議進(jìn)程確認(rèn)收到返回源的數(shù)據(jù)。
38.據(jù)權(quán)利要求37的系統(tǒng),其中傳輸協(xié)議進(jìn)程儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與儲(chǔ)存的收到的數(shù)據(jù)結(jié)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
39.據(jù)權(quán)利要求33的系統(tǒng),其中的控制單元包括應(yīng)用進(jìn)程;連接-導(dǎo)向的傳輸協(xié)議進(jìn)程;通過傳輸協(xié)議進(jìn)程,與目的地通信的應(yīng)用進(jìn)程;以及傳輸協(xié)議進(jìn)程儲(chǔ)存從應(yīng)用進(jìn)程傳輸至目的地一個(gè)以上數(shù)據(jù)存儲(chǔ)器的發(fā)送的數(shù)據(jù);傳輸協(xié)議進(jìn)程儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與發(fā)送的數(shù)據(jù)結(jié)合。
40.一種國際互連網(wǎng)路由器包括控制單元,與一個(gè)以上外部連接電氣聯(lián)結(jié),控制單元參與通信,包括經(jīng)過其中一個(gè)外部連接與遠(yuǎn)程路由器傳輸數(shù)據(jù)和通信狀態(tài);控制單元接收從遠(yuǎn)程路由器的路由選擇表單;控制進(jìn)程處理收到的路由選擇數(shù)據(jù);以及其后,控制單元確認(rèn)收到返回遠(yuǎn)程路由器的數(shù)據(jù)。
41.根據(jù)權(quán)利要求40的國際互聯(lián)網(wǎng)路由器,其中處理收到的數(shù)據(jù)包括控制單元儲(chǔ)存或應(yīng)用收到的數(shù)據(jù)于一個(gè)以上用于備份的數(shù)據(jù)存儲(chǔ)器。
42.根據(jù)權(quán)利要求41的國際互聯(lián)網(wǎng)路由器,進(jìn)一步包括控制單元儲(chǔ)存通信狀態(tài)一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi),以致通信狀態(tài)與儲(chǔ)存的路由選擇數(shù)據(jù)結(jié)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
43.根據(jù)權(quán)利要求42的國際互聯(lián)網(wǎng)路由器,進(jìn)一步包括后備控制單元,控制單元失敗時(shí)被激活;后備控制單元從一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的數(shù)據(jù)和通信狀態(tài)重建數(shù)據(jù)和通信狀態(tài);以及后備控制單元保持與重建的數(shù)據(jù)和通信狀態(tài)的恢復(fù)的通信。
44.一種國際互連網(wǎng)路由器包括參與通信的控制單元,包括與遠(yuǎn)程路由器傳送數(shù)據(jù)和通信狀態(tài);控制單元從遠(yuǎn)程路由器接收路由選擇數(shù)據(jù);控制單元儲(chǔ)存和應(yīng)用收到的數(shù)據(jù)于一個(gè)以上用于備份的數(shù)據(jù)存儲(chǔ)器;以及控制單元儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器,以致通信狀態(tài)與儲(chǔ)存的路由選擇數(shù)據(jù)或結(jié)合或應(yīng)用于一個(gè)以上數(shù)據(jù)存儲(chǔ)器。
45.一種國際互連網(wǎng)路由器包括控制單元與遠(yuǎn)程路由器通信,包括傳輸數(shù)據(jù)和通信狀態(tài);控制單元儲(chǔ)存發(fā)送的數(shù)據(jù)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器以傳送至遠(yuǎn)程路由器;以及控制單元儲(chǔ)存通信狀態(tài)于一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi),以致通信狀態(tài)與發(fā)送的數(shù)據(jù)結(jié)合。
46.根據(jù)權(quán)利要求45的國際互聯(lián)網(wǎng)路由器,進(jìn)一步包括控制單元傳輸分段的發(fā)送的數(shù)據(jù)至目的地;以及控制單元更新一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài),以致通信狀態(tài)反映傳輸?shù)臄?shù)據(jù)段。
47.根據(jù)權(quán)利要求46的國際互聯(lián)網(wǎng)路由器,進(jìn)一步包括控制單元接收相應(yīng)于發(fā)送的數(shù)據(jù)段的確認(rèn);以及控制單元更新一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的通信狀態(tài),以反映傳輸?shù)臄?shù)據(jù)段的確認(rèn)。
48.根據(jù)權(quán)利要求47的國際互聯(lián)網(wǎng)路由器,進(jìn)一步包括控制單元?jiǎng)h除一個(gè)以上數(shù)據(jù)存儲(chǔ)器內(nèi)的發(fā)送的數(shù)據(jù)部分,相應(yīng)于確認(rèn)的傳輸?shù)臄?shù)據(jù)段。
全文摘要
容錯(cuò)的數(shù)據(jù)通信的系統(tǒng)和方法。本發(fā)明的優(yōu)選的方案適用于不同的應(yīng)用,包括在網(wǎng)絡(luò)環(huán)境中交換路由選擇表單的更新的路由器。主進(jìn)程與遠(yuǎn)程進(jìn)程通信,包括傳輸內(nèi)容信息和通信狀態(tài)。主進(jìn)程將內(nèi)容信息和通信狀態(tài)存入數(shù)據(jù)存儲(chǔ)器。在主進(jìn)程失敗的情況下,與遠(yuǎn)程進(jìn)程通信轉(zhuǎn)到后備進(jìn)程,后備進(jìn)程通過檢索數(shù)據(jù)存儲(chǔ)器中的內(nèi)容信息和通信狀態(tài)鏡像主進(jìn)程。因而,后備進(jìn)程使用從數(shù)據(jù)存儲(chǔ)器檢索的通信狀態(tài)來繼續(xù)與遠(yuǎn)程進(jìn)程通信。
文檔編號(hào)H04L12/56GK1714545SQ03802636
公開日2005年12月28日 申請(qǐng)日期2003年1月24日 優(yōu)先權(quán)日2002年1月24日
發(fā)明者阿修克·拉姆珀里爾, 普拉迪佩·達(dá)拉 申請(qǐng)人:艾維西系統(tǒng)公司