專利名稱:可容錯的傳輸控制協(xié)議的實現(xiàn)方法
技術(shù)領(lǐng)域:
可容錯的傳輸控制協(xié)議的實現(xiàn)方法屬于因特網(wǎng)服務(wù)器和路由器中的高可用傳輸控制協(xié)議(TCP)的技術(shù)領(lǐng)域。
背景技術(shù):
TCP(Transmission Control Protocol)作為TCP/IP協(xié)議簇中一個重要的通訊協(xié)議,廣泛應(yīng)用于Internet數(shù)據(jù)傳輸應(yīng)用中。從Web瀏覽,遠(yuǎn)程登錄,到文件傳輸,甚至在路由器的邊界網(wǎng)關(guān)協(xié)議BGP交互中都使用它作為一種可靠的數(shù)據(jù)流通道。TCP協(xié)議在TCP/IP協(xié)議模型中作為第四層協(xié)議,它使用第三層IP協(xié)議提供的不可靠無連接分組交付服務(wù),為第五層提供可靠的面向數(shù)據(jù)流的有連接數(shù)據(jù)傳輸服務(wù)。TCP為了實現(xiàn)這種可靠性,使用一種“帶重傳的肯定確認(rèn)”技術(shù)作為基礎(chǔ),解決了由底層通訊系統(tǒng)各種不可靠情況帶來的問題。
對于使用TCP的應(yīng)用來說,總是存在兩個進(jìn)行通訊的對等體,一個稱為客戶(Client),另外一個稱為服務(wù)器(Server)。在TCP應(yīng)用程序中,一般由Client發(fā)起TCP連接請求,由Server響應(yīng)這種連接請求而在兩個對等體之間建立TCP通訊通道,然后Server通過這個通訊通道為Client提供相應(yīng)的數(shù)據(jù)服務(wù)。典型的Server應(yīng)用有超文本傳輸HTTP Server,文件傳輸FTP Server等。在Internet社會中,服務(wù)提供方管理著各種類型的Server,通過TCP通訊通道為大量Client提供相應(yīng)的數(shù)據(jù)服務(wù)。Internet服務(wù)提供方所考慮的問題是如何為Client提供可靠的,不間斷的數(shù)據(jù)服務(wù)。TCP協(xié)議雖然實現(xiàn)了基于不可靠底層通訊系統(tǒng)的可靠數(shù)據(jù)流通道,但是TCP協(xié)議本身并沒有考慮由于Server端或Client端軟硬件故障造成TCP斷路的情況,一次TCP的斷路就相當(dāng)于一次數(shù)據(jù)服務(wù)的中斷。隨著Internet的擴展,Server需要為越來越多的Client提供服務(wù),Server端發(fā)生負(fù)荷過載,軟件和硬件故障的機會也越來越大。在當(dāng)前對TCP協(xié)議和實現(xiàn)的研究中,如何保證TCP連接迅速的從斷路狀態(tài)恢復(fù)到正常的TCP連接(即容錯TCP,F(xiàn)ault Tolerance TCP)成為了研究的熱點。
對于容錯TCP的研究與實現(xiàn),已經(jīng)有許多的相關(guān)的研究成果,其中比較有影響并且具有相應(yīng)代碼實現(xiàn)的包括如下幾種1、IBM研究中心和Carnegie Mellon University的TCP Splice;2、Rutgers University的Migration TCP(MTCP);3、University of Texas,Austin的Wrapping Server-side TCP;TCP Splice的最初目的是實現(xiàn)移動計算,但是其設(shè)計卻可以用來實現(xiàn)容錯TCP。這種方法主要是利用Proxy在Client和Server之間重定向TCP流量實現(xiàn)TCP的容錯功能,其中的Proxy與一般的Proxy相比具有更強大的智能,這種Proxy除了在Client和Server之間轉(zhuǎn)發(fā)TCP報文之外,還維護(hù)每個Client和Server之間的連接狀態(tài)。一旦Server發(fā)生崩潰無法再提供TCP數(shù)據(jù)服務(wù),該Proxy將后續(xù)的TCP報文以及當(dāng)前TCP的連接狀態(tài)轉(zhuǎn)發(fā)給另外一個提供相同數(shù)據(jù)服務(wù)的Server,由新Server繼續(xù)提供Client數(shù)據(jù)服務(wù),并且保證其中的TCP連接狀態(tài)與上一次TCP斷路時的TCP連接狀態(tài)相一致。如果采用這種方法實現(xiàn)容錯TCP,將面臨著一個更大的容錯性問題,大量的TCP狀態(tài)維護(hù)工作都交給了Proxy,而沒有考慮Proxy也可能發(fā)生失效。其次這種方法將TCP連接狀態(tài)維護(hù)放在了Proxy上,增加了系統(tǒng)實現(xiàn)的困難程度。
MTCP方法基于對當(dāng)前Internet現(xiàn)狀的一種趨勢判斷,MTCP的作者認(rèn)為當(dāng)前Client使用數(shù)據(jù)服務(wù)的時候最關(guān)心的是服務(wù)的質(zhì)量,如傳輸速度、可用性等,并不關(guān)心提供服務(wù)的Server所在的位置。MTCP方法是通過對TCP協(xié)議改造實現(xiàn)一種新的傳輸層協(xié)議MTCP,MTCP支持Client主動進(jìn)行Server更換,以獲得質(zhì)量更好的相同數(shù)據(jù)服務(wù)。在MTCP的設(shè)計中,需要將上層容錯應(yīng)用的狀態(tài)作為TCP連接狀態(tài)在TCP的狀態(tài)備份過程中進(jìn)行備份,這種方法雖然為上層容錯應(yīng)用軟件的設(shè)計提供了一定的基礎(chǔ),但是上層容錯應(yīng)用可能需要備份大量的狀態(tài)信息,并且不能根據(jù)應(yīng)用的邏輯結(jié)構(gòu)進(jìn)行狀態(tài)備份。其次,這種方法需要對TCP連接兩端的TCP代碼同時進(jìn)行修改,而當(dāng)前大量的Client端軟件并不在服務(wù)提供方的控制范圍之內(nèi)。
Wrapping Server-side TCP方法通過修改Server端的軟件實現(xiàn)容錯TCP的功能,其中最主要的修改部分是在Server端的TCP與應(yīng)用之間和TCP與IP之間增加兩個層,這兩層對TCP的連接進(jìn)行狀態(tài)備份,當(dāng)一個Server發(fā)生失效的時候,另外一個Server根據(jù)備份的TCP連接狀態(tài)重新建立一個TCP連接與Client繼續(xù)進(jìn)行數(shù)據(jù)服務(wù)。這種方法避免了對TCP協(xié)議的修改,不需要Client端的任何軟件修改就可以實現(xiàn)TCP容錯。但是這種方法沒有考慮上層應(yīng)用如何實現(xiàn)容錯的問題,因為設(shè)計上層容錯應(yīng)用系統(tǒng)的時候,無法做到應(yīng)用系統(tǒng)狀態(tài)的Checkpoint與TCP狀態(tài)的檢查點Checkpoint一致。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供容錯TCP一種新的實現(xiàn)方法,它基于當(dāng)前Server體系結(jié)構(gòu)的發(fā)展,不需要更改TCP協(xié)議,而是通過對TCP協(xié)議的實現(xiàn)進(jìn)行一定的修改,增加TCP連接狀態(tài)備份功能,從而實現(xiàn)容錯TCP的功能。這種容錯TCP的實現(xiàn)方法克服了上面幾種容錯TCP實現(xiàn)的缺點,實現(xiàn)方法簡單,能與非容錯TCP實現(xiàn)標(biāo)準(zhǔn)的TCP交互,并且為上層容錯應(yīng)用軟件開發(fā)提供靈活的支持,能在機群體系結(jié)構(gòu)的Server中與上層容錯應(yīng)用有機的集成提供高可用的數(shù)據(jù)服務(wù)。
Server作為一種能夠為大量Client提供數(shù)據(jù)服務(wù)的特殊計算機,其體系結(jié)構(gòu)的發(fā)展經(jīng)過了多個階段,從早期的Mainframe到現(xiàn)在仍然大量使用的SMP,從Shared Memory的多處理器體系結(jié)構(gòu)到Distributed Memory的多計算機體系結(jié)構(gòu)——機群系統(tǒng)(Cluster)。最后,Cluster以其高性能,高可用性,高可擴展性和低成本成為當(dāng)前Server體系結(jié)構(gòu)的首選。
Cluster利用高性能通信網(wǎng)絡(luò)將一組計算機(結(jié)點,Node),按照某種結(jié)構(gòu)連接起來,在一些系統(tǒng)和應(yīng)用環(huán)境的支持下,所有的結(jié)點一起協(xié)調(diào)工作,如同一個單一集成的計算資源,為用戶提供一致的高效的計算服務(wù)。一般地,每個計算機結(jié)點是一臺高性能工作站或高檔PC服務(wù)器,它有自己的處理器、高速緩存、磁盤以及I/O適配器,并具有一個完整的操作系統(tǒng)。Cluster采用單一映象(Single System Image,SSI)技術(shù)實現(xiàn)單一集成計算資源的概念,使得機群系統(tǒng)更易于使用和管理。結(jié)點間的連接可采用商品化的網(wǎng)絡(luò)(如以太網(wǎng)等)或其它高速網(wǎng)絡(luò)(如Myrinet,Mesh等)。一個典型的Cluster的結(jié)構(gòu)如圖1所示。
將Cluster用作提供Internet服務(wù)的Server,一般需要將Cluster中的節(jié)點進(jìn)行功能分割,其中一部分節(jié)點作為與外部連接的連接節(jié)點(Connect Node),連接接點的一個或多個網(wǎng)絡(luò)接口與Internet連接,連接接點同時還與Cluster的內(nèi)部網(wǎng)絡(luò)系統(tǒng)連接。另外一部分節(jié)點作為外部服務(wù)請求的響應(yīng)節(jié)點(Compute Node),響應(yīng)節(jié)點僅只與Cluster內(nèi)部網(wǎng)絡(luò)系統(tǒng)連接。連接節(jié)點在外部Internet與響應(yīng)節(jié)點之間中轉(zhuǎn)服務(wù)請求和響應(yīng)數(shù)據(jù),響應(yīng)節(jié)點在獲得連接節(jié)點轉(zhuǎn)發(fā)來的請求之后,進(jìn)行相應(yīng)的計算,然后通過連接節(jié)點返回響應(yīng)數(shù)據(jù)。機群系統(tǒng)作為Server的結(jié)構(gòu)如圖2所示。
Cluster Server的高性能、高可用性,高擴展性以及低成本優(yōu)勢已經(jīng)有許多的文獻(xiàn)進(jìn)行了分析。Client Server的高可用性也可以從其體系結(jié)構(gòu)上充分的體現(xiàn)出來。首先,ClusterServer與Internet的連接可以有多條物理通道,當(dāng)一條通道失效的時候,另外一條通道可以立刻繼續(xù)失效通道上的所有流量。有許多技術(shù)可以實現(xiàn)各種物理通道的容錯備份功能,如Ethernet物理通道的Trunking技術(shù),EtherChannel技術(shù)等,SONET/SDH物理通道上的APS/MSP技術(shù)等。其次,機群系統(tǒng)內(nèi)部的網(wǎng)絡(luò)系統(tǒng)同樣也可以實現(xiàn)雙系統(tǒng)冗余備份,實現(xiàn)物理級別的無縫失效切換。最后,由于機群系統(tǒng)中存在多個響應(yīng)節(jié)點,可以對一些運行重要應(yīng)用的節(jié)點定義一個備份節(jié)點,利用雙節(jié)點進(jìn)行應(yīng)用的冗余備份容錯。由工作節(jié)點按照一定的規(guī)則將當(dāng)前的連接狀態(tài),應(yīng)用狀態(tài)備份到備份節(jié)點。一旦工作節(jié)點發(fā)生失效,立刻啟動備份節(jié)點上的相應(yīng)任務(wù),并且根據(jù)備份的狀態(tài)信息將連接和應(yīng)用狀態(tài)恢復(fù)到失效節(jié)點失效之前的狀態(tài),繼續(xù)對外部的請求進(jìn)行服務(wù)。
本發(fā)明的特征在于它是一種把機群系統(tǒng)(Cluster)用作提供因特網(wǎng)(Internet)服務(wù)的服務(wù)器,而且它的上層容錯應(yīng)用系統(tǒng)與可容錯的傳輸控制協(xié)議(TCP)狀態(tài)的備份粒度保持一致的可容錯TCP的實現(xiàn)方法,它依次有如下步驟
(1)、把機群系統(tǒng)用作提供因特網(wǎng)服務(wù)的服務(wù)器,以構(gòu)筑相應(yīng)的上層容錯應(yīng)用系統(tǒng)把機群系統(tǒng)中一部分節(jié)點作為與外部連接的連接節(jié)點(Connect node),連接節(jié)點的一個或多個網(wǎng)絡(luò)接口與因特網(wǎng)連接,連接節(jié)點同時還與機群系統(tǒng)的內(nèi)部交換系統(tǒng)(Switch Fabric)連接;另外一部分節(jié)點作為外部服務(wù)請求的響應(yīng)節(jié)點(Compute node),響應(yīng)節(jié)點只與機群系統(tǒng)的內(nèi)部交換系統(tǒng)連接;連接節(jié)點在外部因特網(wǎng)和響應(yīng)節(jié)點之間中轉(zhuǎn)服務(wù)請求和響應(yīng)數(shù)據(jù),響應(yīng)節(jié)點在獲得連接節(jié)點轉(zhuǎn)發(fā)來的請求后,進(jìn)行相應(yīng)的計算,再通過連接節(jié)點返回響應(yīng)數(shù)據(jù);它依次會有如下的步驟(1.1)、建立實現(xiàn)容錯TCP的硬件平臺它含有兩個響應(yīng)節(jié)點,一個連接節(jié)點,三個節(jié)點之間通過商品化的以太網(wǎng)實現(xiàn)節(jié)點間的互連,兩個響應(yīng)節(jié)點形成雙機備份的硬件環(huán)境,其中,一個響應(yīng)節(jié)點是另外一個活躍節(jié)點的備份節(jié)點;(1.2)、設(shè)立系統(tǒng)的狀態(tài)標(biāo)識,表示該容錯TCP運行的響應(yīng)節(jié)點狀態(tài)機系統(tǒng)活躍狀態(tài)(Active),該狀態(tài)提供正常的計算服務(wù),并且把當(dāng)前的軟件狀態(tài)備份到另外一個響應(yīng)節(jié)點;雙機系統(tǒng)備份狀態(tài)(Standby),該狀態(tài)不提供計算服務(wù),只從活躍節(jié)點獲取并保存狀態(tài)備份信息;單機系統(tǒng)工作狀態(tài)(Oneworking),該狀態(tài)提供正常的計算服務(wù),不產(chǎn)生任何正常的軟件狀態(tài)備份信息;非工作狀態(tài)(Noworking),該狀態(tài)不做任何工作;(2)、上層容錯應(yīng)用系統(tǒng)對響應(yīng)節(jié)點進(jìn)行檢查點(Check Point)狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù)。其中,在進(jìn)行TCP狀態(tài)備份時,上層容錯應(yīng)用系統(tǒng)同時備份一定數(shù)量過去的套接字(Socket)讀寫操作,使得上層容錯應(yīng)用程序在回滾恢復(fù)過程中重復(fù)進(jìn)行讀寫操作時避免在TCP上進(jìn)行實際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果,以防止應(yīng)用層次的邏輯錯誤;(3)、容錯TCP的實現(xiàn)依次含有如下幾個步驟(3.1)、響應(yīng)節(jié)點上TCP的實現(xiàn)方法一個TCP的控制塊(TCB)對應(yīng)一個響應(yīng)節(jié)點上的TCP套接字連,TCP任務(wù)接收來自其他系統(tǒng)的各種消息并把這些不同的輸入全部轉(zhuǎn)化為統(tǒng)一的信息,放在TCP任務(wù)的接收消息隊列(TCP message queue)中,TCP消息處理任務(wù)不停地從消息隊列中獲取輸入信息,根據(jù)消息的類型或者對TCB進(jìn)行狀態(tài)修改,或者產(chǎn)生一些輸出;(3.2)、構(gòu)建容錯TCP的結(jié)構(gòu)它含有如下部分系統(tǒng)的狀態(tài)標(biāo)識表示容錯TCP運行的響應(yīng)節(jié)點可能的狀態(tài)雙機系統(tǒng)活躍狀態(tài),雙機系統(tǒng)備份狀態(tài),單機系統(tǒng)工作狀態(tài)和非工作狀態(tài);TCP消息隊列與普通TCP的消息隊列相同,用于接收TCP的各種輸入;TCP消息處理任務(wù)在處理完每次消息后,根據(jù)當(dāng)前響應(yīng)節(jié)點的狀態(tài)是否為雙機活躍狀態(tài)決定是否產(chǎn)生一個TCP連接狀態(tài)備份消息,發(fā)送給備份節(jié)點上運行的容錯TCP任務(wù);TCB若節(jié)點狀態(tài)為雙機活躍獲單機工作狀態(tài),該TCB的作用與普通TCP中的TCB相同,若節(jié)點狀態(tài)為雙機備份狀態(tài),則該TCB的作用為TCP連接狀態(tài)的數(shù)據(jù)備份;TCP備份消息隊列接收活躍節(jié)點發(fā)送來的TCP備份消息,該隊列只在當(dāng)前節(jié)點的狀態(tài)為雙機系統(tǒng)備份狀態(tài)下有效;TCP備份消息處理任務(wù)在當(dāng)前活躍節(jié)點的狀態(tài)為雙機系統(tǒng)備份狀態(tài)時,把TCP備份消息隊列中的備份數(shù)據(jù)按照一定的規(guī)則寫到TCB中;(3.3)、實現(xiàn)容錯TCP任務(wù)若當(dāng)前節(jié)點的狀態(tài)為雙機系統(tǒng)活躍狀態(tài)或單機系統(tǒng)工作狀態(tài),則TCP消息隊列,TCP消息處理任務(wù)處于運轉(zhuǎn)狀態(tài),備份消息隊列和備份消息處理任務(wù)處于掛起狀態(tài);若當(dāng)前節(jié)點處于雙機備份狀態(tài),則備份消息隊列,備份消息處理任務(wù)處于運轉(zhuǎn)狀態(tài),TCP消息隊列和TCP消息處理任務(wù)處于掛起狀態(tài);所述的檢查點狀態(tài)備份以及狀態(tài)回滾恢復(fù)分別依次含有以下步驟檢查點狀態(tài)備份構(gòu)建連接套接字,存儲于TCP狀態(tài)紀(jì)錄(TCP Status LOG)系統(tǒng)中;構(gòu)建套接字的備份并建立索引,存儲于套接字目錄中;對各響應(yīng)節(jié)點逐個執(zhí)行上述步驟在第i個步驟中執(zhí)行各類讀寫操作,存儲在TCP狀態(tài)紀(jì)錄系統(tǒng)中;構(gòu)建第i個步驟的上層容錯應(yīng)用系統(tǒng)的備份并存儲于上層容錯應(yīng)用系統(tǒng)的狀態(tài)紀(jì)錄子系統(tǒng)中;在第i+1步發(fā)現(xiàn)響應(yīng)節(jié)點時效,即讀寫操作失效時,報告TCP狀態(tài)紀(jì)錄系統(tǒng),并進(jìn)行狀態(tài)回滾恢復(fù);從套接字目錄中取出該套接字的備份件;根據(jù)該套接字備份件,從TCP狀態(tài)紀(jì)錄系統(tǒng)中取出套接字狀態(tài);根據(jù)該套接字狀態(tài),從上層容錯應(yīng)用紀(jì)錄系統(tǒng)中取出相應(yīng)的步驟順序號i;在第i+1步根據(jù)TCP狀態(tài)紀(jì)錄系統(tǒng)中的套接字和第i步的讀寫操作內(nèi)容在上層容錯應(yīng)用系統(tǒng)中進(jìn)行讀寫操作;在上層容錯應(yīng)用系統(tǒng)中構(gòu)建第i+1步的狀態(tài)備份;在當(dāng)前的響應(yīng)節(jié)點,即原備份節(jié)點中進(jìn)行第i+1步讀寫操作。
試驗證明它可以用在機群服務(wù)器系統(tǒng)結(jié)構(gòu)中提供高可用數(shù)據(jù)服務(wù),也可用于高可用路由器的設(shè)計。
圖1機群系統(tǒng)的結(jié)構(gòu)。
圖2機群服務(wù)器系統(tǒng)的結(jié)構(gòu)。
圖3上層容錯應(yīng)用系統(tǒng)的狀態(tài)備份和回滾恢復(fù)。
圖4容錯TCP與上層容錯應(yīng)用軟件實現(xiàn)高可用服務(wù)的模型。
圖5雙節(jié)點形成容錯備份系統(tǒng)可能存在的狀態(tài)配合。
圖6普通TCP結(jié)構(gòu)圖。
圖7容錯TCP結(jié)構(gòu)圖。
圖8活躍節(jié)點和備份節(jié)點上運行的容錯TCP之間的交互。
圖9功能測試程序流程圖使用普通TCP的Client程序流程圖。
使用容錯TCP的Server程序流程圖。
圖10各種TCP和傳輸量下TCP吞吐率的比較。
具體實施例方式
當(dāng)Cluster Server需要通過長時間TCP連接為Client提供數(shù)據(jù)服務(wù)的時候,由于Cluster中的響應(yīng)節(jié)點發(fā)生局部負(fù)載過重或軟硬件的故障,很有可能造成節(jié)點失效,無法再為Client提供相應(yīng)的服務(wù)。如果需要在這種情況下實現(xiàn)服務(wù)的不中斷,必須將失效節(jié)點上的服務(wù)轉(zhuǎn)移到另外的節(jié)點上。而實現(xiàn)這種失效轉(zhuǎn)移,最基本也是最常用的方法是進(jìn)行Check Point狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù)。其工作方式如圖3所示。
在圖3中,stepi可以是一條指令,也可以是一段有邏輯意義的指令段,其中可以用stepi的指令多少來衡量一個容錯應(yīng)用系統(tǒng)的備份粒度。
對于TCP來說,任何一次TCP協(xié)議發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的操作都可能涉及到網(wǎng)絡(luò)上另外一個TCP對等端的TCP協(xié)議狀態(tài)變化,并且對等端的TCP協(xié)議狀態(tài)變化由另外一端的軟件系統(tǒng)進(jìn)行控制,本地的TCP無法使得這些狀態(tài)變化在遠(yuǎn)端重現(xiàn),所以TCP的狀態(tài)備份必須做到小粒度的備份,在每一次對遠(yuǎn)端進(jìn)行邏輯寫操作結(jié)束后進(jìn)行相應(yīng)的狀態(tài)備份。對于使用TCP的上層應(yīng)用來說,它使用TCP socket進(jìn)行網(wǎng)絡(luò)讀寫操作分散在應(yīng)用的各個角落,并且在考慮上層應(yīng)用的狀態(tài)備份時,不可能根據(jù)TCP的備份粒度來進(jìn)行應(yīng)用狀態(tài)的備份,應(yīng)用狀態(tài)的備份粒度只能根據(jù)應(yīng)用指令的邏輯進(jìn)行區(qū)分。一般地,應(yīng)用的備份粒度要比TCP大,因為TCP的備份最少在兩次socket操作之間進(jìn)行,而應(yīng)用的兩次狀態(tài)備份之間可能有多次socket操作。
一般當(dāng)應(yīng)用發(fā)生失效切換的時候,TCP連接也需要進(jìn)行相應(yīng)的切換。而根據(jù)上面的討論,應(yīng)用和TCP的備份粒度是不一樣的,這樣就產(chǎn)生一個問題,應(yīng)用從上次應(yīng)用狀態(tài)備份數(shù)據(jù)開始進(jìn)行回滾恢復(fù),而TCP可能從失效應(yīng)用的最后一次socket操作造成的TCP狀態(tài)備份數(shù)據(jù)開始回滾恢復(fù),應(yīng)用在狀態(tài)恢復(fù)中進(jìn)行socket讀寫操作可能與對端TCP的數(shù)據(jù)流發(fā)生了錯位。這種錯位從TCP的角度來看沒有問題,但是從網(wǎng)絡(luò)遠(yuǎn)端的應(yīng)用程序來看就發(fā)生了邏輯錯誤。對于這種TCP和上層應(yīng)用的備份粒度不一致問題,需要在進(jìn)行TCP狀態(tài)備份的時候,上層容錯應(yīng)用系統(tǒng)同時備份一定數(shù)量過去的socket讀寫操作來解決。備份的讀寫操作中包括讀寫操作的讀取和寫入數(shù)據(jù),數(shù)據(jù)長度,以及操作返回的結(jié)果。當(dāng)應(yīng)用程序在回滾恢復(fù)過程中重復(fù)進(jìn)行socket讀寫操作的時候,不是在TCP上進(jìn)行實際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果。
容錯TCP和上層容錯應(yīng)用配合實現(xiàn)高可用數(shù)據(jù)服務(wù)的模型如圖4所示。
實現(xiàn)容錯TCP的Server硬件體系結(jié)構(gòu)和Cluster Server相同,該硬件平臺上有兩個Compute Node,一個Connect Node,三個節(jié)點之間通過商品化的以太網(wǎng)實現(xiàn)節(jié)點之間的互連。Connect Node負(fù)責(zé)與外部Internet的連接,在外部Internet和內(nèi)部Compute Node之間轉(zhuǎn)發(fā)數(shù)據(jù)。兩個Compute Node形成雙機備份的硬件環(huán)境,但是節(jié)點之間不提供相互的軟硬件失效的硬件檢測機制,他們只能通過心跳算法實現(xiàn)雙機的狀態(tài)監(jiān)測。在這個雙機備份系統(tǒng)中,Compute Node的狀態(tài)可能處于如下四種狀態(tài)中的一種雙機系統(tǒng)活躍狀態(tài)(Active),該狀態(tài)下提供正常的計算服務(wù),并將當(dāng)前的軟件狀態(tài)備份到另外一個節(jié)點。
雙機系統(tǒng)備份狀態(tài)(Standby),該狀態(tài)下不提供任何計算服務(wù),只從Active節(jié)點獲取狀態(tài)備份信息,并保存狀態(tài)備份信息。
單機系統(tǒng)工作狀態(tài)(Oneworking),該狀態(tài)下提供正常的計算服務(wù),不產(chǎn)生任何軟件狀態(tài)備份。
非工作狀態(tài)(Noworking)。該狀態(tài)下不做任何工作。
兩個Compute Node的狀態(tài)組合可能存在情況如圖5所示。
在正常的啟動中,雙機系統(tǒng)通過相互的軟件協(xié)商確認(rèn)Active Node和Standby Node。如果在工作過程中Active Node發(fā)生失效,那么其狀態(tài)切換為Noworking,Standby Node狀態(tài)切換到Oneworking,繼續(xù)Active Node剛才的工作。如果工作過程中Standby Node發(fā)生了失效,那么Active Node的狀態(tài)切換到Oneworking,失效的節(jié)點狀態(tài)切換到Noworking。一旦Noworking Node可以重新開始工作,那么Oneworking Node狀態(tài)切換到Active,NoworkingNode狀態(tài)切換到Standby。
在上述硬件平臺的每個節(jié)點上運行各自的HEROS操作系統(tǒng),該操作系統(tǒng)由清華大學(xué)計算機系開發(fā),是一個基于微內(nèi)核的多任務(wù)實時操作系統(tǒng)。在HEROS操作系統(tǒng)中,實現(xiàn)了高層分布式共享消息隊列系統(tǒng),該系統(tǒng)基于以太網(wǎng)硬件基礎(chǔ),為上層任務(wù)提供一個實現(xiàn)節(jié)點間高效通訊的機制,同時在該系統(tǒng)的內(nèi)部采用確認(rèn)機制實現(xiàn)消息通訊的可靠性。在HEROS操作系統(tǒng)中還包含一部分簡單的SSI軟件,實現(xiàn)節(jié)點計算資源的統(tǒng)一映像,該SSI中也實現(xiàn)了節(jié)點之間的心跳狀態(tài)監(jiān)測,Active/Standby Node的選舉與狀態(tài)維護(hù)。Connect Node上運行的SSI軟件能夠根據(jù)當(dāng)前的Active/Oneworking Node的位置進(jìn)行相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)。
系統(tǒng)中每個節(jié)點雖然都運行HEROS操作系統(tǒng),但是根據(jù)節(jié)點功能的不同,對HEROS操作系統(tǒng)進(jìn)行了相應(yīng)的裁減。在Connect Node上運行的HEROS接收到Internet來的IP包之后,并不交給Connect Node上的傳輸層協(xié)議軟件,而是通過節(jié)點間消息通訊轉(zhuǎn)發(fā)給Compute Node,Compute Node在需要發(fā)送一定的響應(yīng)數(shù)據(jù)到Internet上的時候,Compute Node并不將這些數(shù)據(jù)交給Compute Node上的IP協(xié)議軟件,而是通過節(jié)點間消息通訊發(fā)送給Connect Node的IP協(xié)議軟件,這種操作系統(tǒng)的功能裁減實現(xiàn)了節(jié)點之間的功能區(qū)分。
在HEROS操作系統(tǒng)中實現(xiàn)了豐富的網(wǎng)絡(luò)協(xié)議,包括整個TCP/IP協(xié)議簇。HEROS操作系統(tǒng)實現(xiàn)了完整的TCP協(xié)議,TCP以一個獨立的任務(wù)運行在Compute Node上,它維護(hù)著所有TCP連接狀態(tài)的TCB數(shù)據(jù)結(jié)構(gòu),一個TCB對應(yīng)一個TCP socket連接。TCP任務(wù)接收來自其他系統(tǒng)的各種消息,包括從Connect Node轉(zhuǎn)發(fā)過來的TCP報文,系統(tǒng)時鐘發(fā)來的時鐘中斷,應(yīng)用程序調(diào)用socket函數(shù)的命令等等,TCP任務(wù)將這些不同的輸入全部轉(zhuǎn)化為統(tǒng)一的消息,放入TCP任務(wù)的接收消息隊列中,然后不停的從消息隊列中獲取輸入消息,根據(jù)消息的不同或者對相應(yīng)的TCB進(jìn)行狀態(tài)修改,或者產(chǎn)生一些輸出。HEROS中的TCP結(jié)構(gòu)如圖6所示。
容錯TCP以普通TCP實現(xiàn)為基礎(chǔ),如圖7所示。
容錯TCP的結(jié)構(gòu)包括如下一些部分系統(tǒng)的狀態(tài)標(biāo)識,表示該容錯TCP運行的Compute Node的狀態(tài),可能為Active,Standby,Oneworking,Noworking。
TCP消息隊列與普通TCP中的消息隊列相同,用來接收TCP的各種輸入。
TCP消息處理任務(wù),與普通TCP消息處理任務(wù)類似,主要處理TCP消息隊列中的消息,但是與基本的TCP消息處理任務(wù)有點不同,該任務(wù)在處理完每次消息之后,根據(jù)當(dāng)前Node的狀態(tài)是否為Active,決定是否生成一個TCP連接狀態(tài)備份消息,發(fā)送給Standby Node上運行的容錯TCP任務(wù)。
TCB與普通TCP實現(xiàn)中的TCB一樣,但是其作用根據(jù)運行TCP的Node狀態(tài)不同而不同,如果Node狀態(tài)為Active或Oneworking,那么該TCB的作用與普通TCP中的TCB相同。如果Node狀態(tài)為Standby,那么該TCB的作用為TCP連接狀態(tài)數(shù)據(jù)的備份地。
TCP備份消息隊列該隊列用來接收Active Node發(fā)送來的TCP連接狀態(tài)備份消息,該隊列只在當(dāng)前Node的狀態(tài)為Standby時有效。
TCP備份消息處理任務(wù)處理備份消息隊列中的備份數(shù)據(jù),將備份數(shù)據(jù)按照一定的規(guī)則直接寫到TCB中,該任務(wù)只在當(dāng)前Node的狀態(tài)為Standby時有效。
在容錯TCP的結(jié)構(gòu)中有兩套消息接收與處理機制,但是它們不可能同時運轉(zhuǎn),具體某個時候由那套消息接收機制運轉(zhuǎn)根據(jù)當(dāng)前Node的狀態(tài)確定。如果當(dāng)前Node的狀態(tài)為Active或Oneworking,TCP消息隊列和TCP消息處理任務(wù)處于運轉(zhuǎn)狀態(tài),備份消息隊列不可能接收到任何消息,備份消息處理任務(wù)沒有任何消息可以處理,處于掛起狀態(tài)。同樣,如果當(dāng)前TCP處于Standby狀態(tài),那么備份消息隊列和任務(wù)處于運轉(zhuǎn)狀態(tài),TCP消息隊列由于收不到任何消息,使得TCP消息處理任務(wù)處于掛起狀態(tài)。兩個Compute Node上運行的容錯TCP相互交互備份信息的結(jié)構(gòu)如下圖所示。另外,在Compute Node的Standby/Oneworking狀態(tài)切換過程中,必須等待備份消息處理任務(wù)將備份消息隊列中的消息處理完畢,TCP才能正常工作。
在容錯TCP中,TCB既作為TCP維護(hù)連接狀態(tài)的數(shù)據(jù)結(jié)構(gòu),也可以作為TCP連接狀態(tài)數(shù)據(jù)的LOG系統(tǒng),所以在容錯TCP的實現(xiàn)中首先必須對TCB的數(shù)據(jù)結(jié)構(gòu)進(jìn)行一定的修改,使得TCB數(shù)據(jù)結(jié)構(gòu)可以實現(xiàn)上述的兩種功能。TCB中有一個數(shù)據(jù)項用來指示當(dāng)前TCP連接的狀態(tài),取值范圍為{TCP_FREE,TCP_CONNECT,TCP_ESTABLISH,TCP_WAIT…},現(xiàn)在由于具有一種新的TCB狀態(tài),即備份狀態(tài),所以該數(shù)據(jù)項的取值范圍增加一個TCP_BACKUP。其次,我們需要通過一個標(biāo)志來設(shè)置某個TCP連接是否采用容錯備份機制,所以在TCB中添加一個BOOLEAN型數(shù)據(jù)項IsFaultToleranceMode,用來標(biāo)示該TCP連接是否采用容錯備份的工作方式。最后,由于容錯TCP中必須實現(xiàn)部分socket讀寫操作的備份,所以必須在TCB數(shù)據(jù)結(jié)構(gòu)中添加兩個讀寫事件的備份鏈表。
對于容錯TCP,必須在適當(dāng)?shù)臅r候?qū)CP的連接狀態(tài)備份到Standby Node上,這樣就必須對TCP的消息處理任務(wù)進(jìn)行一定的修改,當(dāng)某個消息處理導(dǎo)致向?qū)Φ鹊腡CP連接端發(fā)送了TCP報文,那么根據(jù)該TCP連接生成一個狀態(tài)備份消息發(fā)送給StandbyNode上運行的容錯TCP。如果是上層應(yīng)用調(diào)用socket讀寫操作,同樣需要將該讀寫操作作為一個備份消息發(fā)送給Standby Node,由Standby Node上的容錯TCP將該讀寫操作作為一個備份數(shù)據(jù)放入TCB的讀寫事件備份鏈表中。
容錯TCP根據(jù)所處的Node狀態(tài)的不同,需要運行不同的消息處理任務(wù),同樣需要為TCP添加一種新的消息處理機制,用于接收和處理備份消息。
最后,需要對TCP提供的socket API進(jìn)行一定的修改,方便上層容錯應(yīng)用軟件的設(shè)計。在容錯TCP中添加幾個新的socket API函數(shù)tcp_setsockftmode,tcp_restoreconnect,tcp_releaserwevent,tcp_beginsockbackup。tcp_setsockftmode函數(shù)使得應(yīng)用程序可以方便的設(shè)置自己的TCP連接是否采用容錯備份的工作方式進(jìn)行工作。Tcp_restoreconnect函數(shù)使得應(yīng)用程序可以在一次主備切換后從備份的數(shù)據(jù)主動恢復(fù)原來的TCP連接。Tcp_releaserwevent函數(shù)使得應(yīng)用程序可以在任何時候釋放備份數(shù)據(jù)中已經(jīng)備份部分socket讀寫操作,一般該操作在容錯應(yīng)用程序做狀態(tài)備份的時候執(zhí)行。Tcp_beginsockbackup函數(shù)使得容錯應(yīng)用可以強制的在某一個時候?qū)CB中的所有信息備份到備份TCB中。
對容錯TCP的測試分為功能測試和性能測試兩個部分,在功能測試中,主要設(shè)計一個簡單的使用容錯TCP的Server應(yīng)用,它的主要工作是接收來自使用普通TCP的Client應(yīng)用發(fā)送來的TCP連接請求,然后與Client建立TCP連接通道。Server在TCP連接通道上發(fā)送帶有順序編號的TCP報文,Client接收到這些帶有編號的TCP報文后將其原樣返回給Server。在Client/Server正常工作過程中,采用某種手段使得Compute Node發(fā)生Standby->Oneworking的切換,然后觀察Client是否能夠覺察到Server的數(shù)據(jù)服務(wù)中斷。使用容錯TCP的Server程序和使用普通TCP的Client程序流程分別如圖9所示。
通過功能測試應(yīng)用的測試,容錯TCP可以與普通TCP進(jìn)行正常的TCP交互,并且當(dāng)Server端發(fā)生失效切換后,Client應(yīng)用察覺不到Server應(yīng)用的切換,整個數(shù)據(jù)服務(wù)正常進(jìn)行。
在TCP的性能測試中,TCP的吞吐率是一個主要的性能指標(biāo)。ttcp程序是一個非常簡單的測試點對點TCP連接吞吐率的benchmark程序,該程序的大致流程根據(jù)一定大小的數(shù)據(jù)傳輸所花費的時間,然后計算出TCP連接的吞吐率。我們對該程序做了一些簡單的修改,使得該程序可以在容錯TCP上運行。由于測試主要是為了對比基本TCP和容錯TCP的性能差別,所以我們搭建了一個基本的10M以太網(wǎng)環(huán)境,用一臺SUN工作站作為Client與Server形成點對點TCP連接的物理環(huán)境,對基本TCP和容錯TCP做了多組比較測試。測試結(jié)果如圖10。
在圖中部分測量的Client吞吐率數(shù)據(jù)與Server的測量數(shù)據(jù)差別比較大,并且一般是Client的數(shù)據(jù)要比Server的數(shù)據(jù)要高,其中主要的原因的SUN操作系統(tǒng)的小時間段的定時不準(zhǔn)所致。當(dāng)傳輸數(shù)據(jù)量上到1M的時候,Server和Client的測試數(shù)據(jù)就比較吻合。根據(jù)測試的數(shù)據(jù),可以計算出容錯TCP的吞吐率性能只有非容錯TCP的48.83%,其中主要的原因是容錯TCP必須保持比較頻繁的狀態(tài)備份,并且節(jié)點間的消息通訊可能占用大量的處理時間。與已有的一些容錯TCP實現(xiàn)方案的性能相比,新容錯TCP的性能雖然比不上WrappingServer-side方法中的一些優(yōu)化方法的性能,但是與其他的實現(xiàn)方法相比還是不錯的,并且新容錯TCP克服了Wrapping Server-side方法中不能實現(xiàn)復(fù)雜容錯應(yīng)用的缺點。當(dāng)然對容錯TCP的性能提高將是我們對容錯TCP研究的下一個重點。
本發(fā)明描述的容錯TCP從Server體系結(jié)構(gòu)的發(fā)展出發(fā),提供了一個可行的高可用數(shù)據(jù)服務(wù)解決方案。首先它的實現(xiàn)比TCP Splice方法中的proxy要簡單,并且避免了TCP Splice方法中再次引入單點失效的問題。它和MTCP方法相比,不需要更改TCP協(xié)議標(biāo)準(zhǔn),容錯TCP可以和標(biāo)準(zhǔn)TCP實現(xiàn)正常的TCP交互,這樣就可以不需要同時修改TCP兩個對等端的代碼,只需要在Server端單獨實現(xiàn)容錯TCP的功能而實現(xiàn)高可用數(shù)據(jù)服務(wù),并且與MTCP相比,避免了上層容錯應(yīng)用的大量無效狀態(tài)備份,增加了系統(tǒng)的性能。它和Wrapping Server-side TCP相比,充分的考慮了上層容錯應(yīng)用的設(shè)計問題,可以在容錯TCP的基礎(chǔ)上實現(xiàn)復(fù)雜的上層容錯應(yīng)用。
本發(fā)明描述的容錯TCP不僅可以用在Client/Server結(jié)構(gòu)中提供高可用的數(shù)據(jù)服務(wù),也可以用于高可用的路由器設(shè)計。對于高可用的路由器設(shè)計,其體系結(jié)構(gòu)也經(jīng)歷了從集中到分散并行體系結(jié)構(gòu)的過程。從某種角度來看,分布式路由器中的線卡就相當(dāng)于Cluster Server中的Connect Node,路由處理器相當(dāng)于Cluster Server中的Compute Node。路由處理器上運行的一些路由協(xié)議軟件,如使用TCP的BGP協(xié)議可以看作為其他路由器提供BGP數(shù)據(jù)服務(wù)的服務(wù)應(yīng)用,容錯TCP和適當(dāng)設(shè)計的容錯BGP一起可以實現(xiàn)路由協(xié)議的無縫失效切換,實現(xiàn)高可用的路由器。
權(quán)利要求
1.可容錯的傳輸控制協(xié)議的實現(xiàn)方法,其特征在于,它是一種把機群系統(tǒng)(Cluster)用作提供因特網(wǎng)(Internet)服務(wù)的服務(wù)器,而且它的上層容錯應(yīng)用系統(tǒng)與可容錯的傳輸控制協(xié)議(TCP)狀態(tài)的備份粒度保持一致的可容錯TCP的實現(xiàn)方法,它依次有如下步驟(1)、把機群系統(tǒng)用作提供因特網(wǎng)服務(wù)的服務(wù)器,以構(gòu)筑相應(yīng)的上層容錯應(yīng)用系統(tǒng)把機群系統(tǒng)中一部分節(jié)點作為與外部連接的連接節(jié)點(Connect node),連接節(jié)點的一個或多個網(wǎng)絡(luò)接口與因特網(wǎng)連接,連接節(jié)點同時還與機群系統(tǒng)的內(nèi)部交換系統(tǒng)(Switch Fabric)連接;另外一部分節(jié)點作為外部服務(wù)請求的響應(yīng)節(jié)點(Compute node),響應(yīng)節(jié)點只與機群系統(tǒng)的內(nèi)部交換系統(tǒng)連接;連接節(jié)點在外部因特網(wǎng)和響應(yīng)節(jié)點之間中轉(zhuǎn)服務(wù)請求和響應(yīng)數(shù)據(jù),響應(yīng)節(jié)點在獲得連接節(jié)點轉(zhuǎn)發(fā)來的請求后,進(jìn)行相應(yīng)的計算,再通過連接節(jié)點返回響應(yīng)數(shù)據(jù);它依次會有如下的步驟(1.1)、建立實現(xiàn)容錯TCP的硬件平臺它含有兩個響應(yīng)節(jié)點,一個連接節(jié)點,三個節(jié)點之間通過商品化的以太網(wǎng)實現(xiàn)節(jié)點間的互連,兩個響應(yīng)節(jié)點形成雙機備份的硬件環(huán)境,其中,一個響應(yīng)節(jié)點是另外一個活躍節(jié)點的備份節(jié)點;(1.2)、設(shè)立系統(tǒng)的狀態(tài)標(biāo)識,表示該容錯TCP運行的響應(yīng)節(jié)點狀態(tài)雙機系統(tǒng)活躍狀態(tài)(Active),該狀態(tài)提供正常的計算服務(wù),并且把當(dāng)前的軟件狀態(tài)備份到另外一個響應(yīng)節(jié)點;雙機系統(tǒng)備份狀態(tài)(Standby),該狀態(tài)不提供計算服務(wù),只從活躍節(jié)點獲取并保存狀態(tài)備份信息;單機系統(tǒng)工作狀態(tài)(Oneworking),該狀態(tài)提供正常的計算服務(wù),不產(chǎn)生任何正常的軟件狀態(tài)備份信息;非工作狀態(tài)(Noworking),該狀態(tài)不做任何工作;(2)、上層容錯應(yīng)用系統(tǒng)對響應(yīng)節(jié)點進(jìn)行檢查點(Check Point)狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù)其中,在進(jìn)行TCP狀態(tài)備份時,上層容錯應(yīng)用系統(tǒng)同時備份一定數(shù)量過去的套接字(Socket)讀寫操作,使得上層容錯應(yīng)用程序在回滾恢復(fù)過程中重復(fù)進(jìn)行讀寫操作時避免在TCP上進(jìn)行實際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果,以防止應(yīng)用層次的邏輯錯誤;(3)、容錯TCP的實現(xiàn)依次含有如下幾個步驟(3.1)、響應(yīng)節(jié)點上TCP的實現(xiàn)方法一個TCP的控制塊(TCB)對應(yīng)一個響應(yīng)節(jié)點上的TCP套接字連接,TCP任務(wù)接收來自其他系統(tǒng)的各種消息并把這些不同的輸入全部轉(zhuǎn)化為統(tǒng)一的信息,放在TCP任務(wù)的接收消息隊列(TCP message queue)中,TCP消息處理任務(wù)不停地從消息隊列中獲取輸入信息,根據(jù)消息的類型或者對TCB進(jìn)行狀態(tài)修改,或者產(chǎn)生一些輸出;(3.2)、構(gòu)建容錯TCP的結(jié)構(gòu)它含有如下部分系統(tǒng)的狀態(tài)標(biāo)識表示容錯TCP運行的響應(yīng)節(jié)點可能的狀態(tài)雙機系統(tǒng)活躍狀態(tài),雙機系統(tǒng)備份狀態(tài),單機系統(tǒng)工作狀態(tài)和非工作狀態(tài);TCP消息隊列與普通TCP的消息隊列相同,用于接收TCP的各種輸入;TCP消息處理任務(wù)在處理完每次消息后,根據(jù)當(dāng)前響應(yīng)節(jié)點的狀態(tài)是否為雙機活躍狀態(tài)決定是否產(chǎn)生一個TCP連接狀態(tài)備份消息,發(fā)送給備份節(jié)點上運行的容錯TCP任務(wù);TCB若節(jié)點狀態(tài)為雙機活躍或單機工作狀態(tài),該TCB的作用與普通TCP中的TCB相同,若節(jié)點狀態(tài)為雙機備份狀態(tài),則該TCB的作用為TCP連接狀態(tài)的數(shù)據(jù)備份;TCP備份消息隊列接收活躍節(jié)點發(fā)送來的TCP備份消息,該隊列只在當(dāng)前節(jié)點的狀態(tài)為雙機系統(tǒng)備份狀態(tài)下有效;TCP備份消息處理任務(wù)在當(dāng)前活躍節(jié)點的狀態(tài)為雙機系統(tǒng)備份狀態(tài)時,把TCP備份消息隊列中的備份數(shù)據(jù)按照一定的規(guī)則寫到TCB中;(3.3)、實現(xiàn)容錯TCP任務(wù)若當(dāng)前節(jié)點的狀態(tài)為雙機系統(tǒng)活躍狀態(tài)或單機系統(tǒng)工作狀態(tài),則TCP消息隊列,TCP消息處理任務(wù)處于運轉(zhuǎn)狀態(tài),備份消息隊列和備份消息處理任務(wù)處于掛起狀態(tài);若當(dāng)前節(jié)點處于雙機備份狀態(tài),則備份消息隊列,備份消息處理任務(wù)處于運轉(zhuǎn)狀態(tài),TCP消息隊列和TCP消息處理任務(wù)處于掛起狀態(tài);
2.根據(jù)權(quán)利要求1所述的可容錯的傳輸控制協(xié)議的實現(xiàn)方法,其特征在于步驟2所述的檢查點狀態(tài)備份以及狀態(tài)回滾恢復(fù)分別依次含有以下步驟檢查點狀態(tài)備份構(gòu)建連接套接字,存儲于TCP狀態(tài)紀(jì)錄(TCP Status LOG)系統(tǒng)中;構(gòu)建套接字的備份并建立索引,存儲于套接字目錄中;對各響應(yīng)節(jié)點逐個執(zhí)行上述步驟在第i個步驟中執(zhí)行各類讀寫操作,存儲在TCP狀態(tài)紀(jì)錄系統(tǒng)中;構(gòu)建第i個步驟的上層容錯應(yīng)用系統(tǒng)的備份并存儲于上層容錯應(yīng)用系統(tǒng)的狀態(tài)紀(jì)錄子系統(tǒng)中;在第i+1步發(fā)現(xiàn)響應(yīng)節(jié)點時效,即讀寫操作失效時,報告TCP狀態(tài)紀(jì)錄系統(tǒng),并進(jìn)行狀態(tài)回滾恢復(fù);從套接字目錄中取出該套接字的備份件;根據(jù)該套接字備份件,從TCP狀態(tài)紀(jì)錄系統(tǒng)中取出套接字狀態(tài);根據(jù)該套接字狀態(tài),從上層容錯應(yīng)用紀(jì)錄系統(tǒng)中取出相應(yīng)的步驟順序號i;在第i+1步根據(jù)TCP狀態(tài)紀(jì)錄系統(tǒng)中的套接字和第i步的讀寫操作內(nèi)容在上層容錯應(yīng)用系統(tǒng)中進(jìn)行讀寫操作;在上層容錯應(yīng)用系統(tǒng)中構(gòu)建第i+1步的狀態(tài)備份;在當(dāng)前的響應(yīng)節(jié)點,即原備份節(jié)點中進(jìn)行第i+1步讀寫操作。
全文摘要
可容錯的傳輸控制協(xié)議的實現(xiàn)方法屬于因特網(wǎng)服務(wù)器和路由器中高可用TCP的技術(shù)領(lǐng)域,其特征在于它是一種把機群系統(tǒng)(Cluster)用作提供因特網(wǎng)服務(wù)的服務(wù)器,即機群服務(wù)器系統(tǒng),而且它的上層容錯應(yīng)用系統(tǒng)與可容錯的TCP狀態(tài)的備份粒度保持一致的可容錯的實現(xiàn)方法。它在需要進(jìn)行TCP狀態(tài)備份時上層容錯應(yīng)用系統(tǒng)同時備份一定數(shù)量過去的讀寫操作。這樣,當(dāng)應(yīng)用程序在回滾恢復(fù)過程中重復(fù)進(jìn)行套接字讀寫操作時可從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果從而避免了應(yīng)用層次的邏輯錯誤。它不僅可用在機群服務(wù)器結(jié)構(gòu)中提供高可用的數(shù)據(jù)服務(wù),也可用于高可用的路由器設(shè)計。
文檔編號H04L12/28GK1482773SQ0310981
公開日2004年3月17日 申請日期2003年4月11日 優(yōu)先權(quán)日2003年4月11日
發(fā)明者李昭, 徐恪, 徐明偉, 付立政, 昭 李 申請人:清華紫光比威網(wǎng)絡(luò)技術(shù)有限公司, 清華大學(xué)