文,經(jīng)鏈路層和網(wǎng)絡(luò)層處理后,傳遞給傳輸層處理之前,將報(bào)文備份到備盤,收到備盤回復(fù)的確認(rèn)報(bào)文后,主盤才繼續(xù)處理報(bào)文,并將報(bào)文上送到接收端應(yīng)用程序。
[0026]如圖5所示,所述發(fā)送端發(fā)送報(bào)文的具體處理流程如下:
[0027]S101.發(fā)送端的APP創(chuàng)建socket控制塊,主盤的TCP/IP協(xié)議棧將相關(guān)的socket控制塊備份到備盤,備盤創(chuàng)建對(duì)應(yīng)的socket控制塊。
[0028]S102.APP發(fā)送報(bào)文后阻塞在發(fā)送函數(shù)中,(如進(jìn)程間鎖機(jī)制),不返回。
[0029]S103.主盤TCP/IP協(xié)議棧收到APP發(fā)送的報(bào)文,調(diào)用TCP模塊相關(guān)API函數(shù)處理后,在發(fā)送給網(wǎng)絡(luò)層之前,將報(bào)文、報(bào)文的開始序列號(hào)和結(jié)束序列號(hào)備份到發(fā)送端的備盤,以及后續(xù)報(bào)文和報(bào)文的序列號(hào)一起備份到備盤,等待備盤確認(rèn)報(bào)文。
[0030]S104.備盤收到主盤備份的報(bào)文后,緩存到其報(bào)文緩存隊(duì)列中,并向主盤發(fā)送確認(rèn)報(bào)文,同時(shí)將這些緩存的報(bào)文上送到備盤的APP。
[0031]S105.主盤接收到備盤的確認(rèn)報(bào)文后,通知阻塞在發(fā)送函數(shù)中的APP,APP返回。
[0032]S106.主盤繼續(xù)調(diào)用網(wǎng)絡(luò)層和鏈路層相關(guān)處理函數(shù)后,按正常流程將報(bào)文傳送給接收端。當(dāng)主盤有報(bào)文未發(fā)送出去,則發(fā)生主備倒換,備盤升級(jí)為主盤,根據(jù)報(bào)文緩存隊(duì)列中的報(bào)文,重新組織報(bào)文發(fā)送出去,保證接收端收到連續(xù)的報(bào)文。
[0033]如圖6所示,接收端接收?qǐng)?bào)文處理流程如下:
[0034]S201.接收端的用戶創(chuàng)建socket控制塊時(shí),主盤TCP/IP協(xié)議棧將相關(guān)的socket控制塊備份到備盤,備盤創(chuàng)建相應(yīng)的socket控制塊。
[0035]S202.接收端接收?qǐng)?bào)文時(shí),從主盤TCP/IP協(xié)議棧的物理接口收包,備盤接口不參與收發(fā)包。
[0036]S203.接收到的報(bào)文經(jīng)過鏈路層及網(wǎng)絡(luò)層處理后,傳遞至傳輸層TCP收包處理時(shí),主盤TCP模塊緩存該報(bào)文到緩存隊(duì)列中,并透?jìng)髦羵浔P的TCP模塊,等待備盤TCP模塊確認(rèn)報(bào)文。
[0037]S204.備盤TCP模塊收到主盤發(fā)送的報(bào)文后,向主盤回復(fù)確認(rèn)報(bào)文,同時(shí)TCP模塊處理收到的報(bào)文,并上送到備盤APP,備盤TCP模塊刪除緩存的報(bào)文。
[0038]S205.主盤TCP模塊收到備盤的確認(rèn)報(bào)文后,從主盤的報(bào)文緩存隊(duì)列中找出相應(yīng)的報(bào)文,經(jīng)過相關(guān)處理后向發(fā)送端回復(fù)ACK報(bào)文,并將接收到的由發(fā)送端發(fā)來的上傳至主盤 APP。
[0039]在發(fā)送端或接收端的報(bào)文發(fā)生倒換前,需要進(jìn)行報(bào)文定界,具體為:在發(fā)送端或接收端,其備盤插入瞬間,主盤檢測(cè)到備盤上線,開始進(jìn)入批備。如果主盤的TCP緩沖區(qū)中有緩存報(bào)文,主盤TCP模塊將報(bào)文上送至主盤APP,并通知主盤APP開始收方向定界。主盤APP進(jìn)行相關(guān)數(shù)據(jù)備份,主盤APP通知主盤TCP模塊進(jìn)行發(fā)送方向的定界,TCP模塊將相關(guān)數(shù)據(jù)備份到備盤的TCP模塊。
[0040]本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
【主權(quán)項(xiàng)】
1.一種TCP連接熱備份的實(shí)現(xiàn)方法,基于發(fā)送端和接收端,發(fā)送端和接收端均包括主盤和備盤,主盤和備盤均包括TCP/IP協(xié)議棧和報(bào)文緩存隊(duì)列,TCP/IP協(xié)議棧又包括TCP模塊,其特征在于,所述實(shí)現(xiàn)方法包括:對(duì)于發(fā)送端發(fā)送報(bào)文,經(jīng)過該端TCP模塊處理后,在傳遞給網(wǎng)絡(luò)層處理之前,將報(bào)文備份到備盤,收到備盤回復(fù)的確認(rèn)報(bào)文后,繼續(xù)處理報(bào)文并發(fā)送給接收端;對(duì)于接收端接收?qǐng)?bào)文,經(jīng)鏈路層和網(wǎng)絡(luò)層處理后,傳遞給傳輸層處理之前,將報(bào)文備份到備盤,收到備盤回復(fù)的確認(rèn)報(bào)文后,主盤才繼續(xù)處理報(bào)文,并將報(bào)文上送到接收端應(yīng)用程序。
2.如權(quán)利要求1所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:發(fā)送端的應(yīng)用程序創(chuàng)建socket控制塊,主盤TCP/IP協(xié)議棧將相關(guān)的socket控制塊備份到備盤,備盤創(chuàng)建對(duì)應(yīng)的socket控制塊。
3.如權(quán)利要求2所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:在發(fā)送端,主盤的應(yīng)用程序發(fā)送報(bào)文后阻塞在發(fā)送函數(shù)中,主盤TCP/IP協(xié)議棧收到報(bào)文,調(diào)用TCP模塊處理后,在發(fā)送給網(wǎng)絡(luò)層之前,將報(bào)文、報(bào)文的開始序列號(hào)和結(jié)束序列號(hào)備份到發(fā)送端的備盤,備盤收到主盤備份的報(bào)文后,緩存到報(bào)文緩存隊(duì)列中,并向主盤發(fā)送確認(rèn)報(bào)文,主盤接收到備盤的確認(rèn)報(bào)文后,通知阻塞在發(fā)送函數(shù)中的應(yīng)用程序返回;主盤繼續(xù)調(diào)用網(wǎng)絡(luò)層和鏈路層相關(guān)處理函數(shù),按正常流程將報(bào)文傳送給接收端。
4.如權(quán)利要求1所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:對(duì)于發(fā)送端,當(dāng)主盤有報(bào)文未發(fā)送出去,則發(fā)生主備倒換,備盤升級(jí)為主盤,將報(bào)文緩存隊(duì)列中的報(bào)文重新組織發(fā)送出去。
5.如權(quán)利要求1所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:接收端的用戶創(chuàng)建socket控制塊時(shí),主盤TCP/IP協(xié)議棧將相關(guān)的socket控制塊備份到備盤,備盤創(chuàng)建相應(yīng)的socket控制塊。
6.如權(quán)利要求5所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:接收端通過其主盤TCP/IP協(xié)議棧的物理接口接收?qǐng)?bào)文,報(bào)文經(jīng)過鏈路層及網(wǎng)絡(luò)層處理后,傳遞至主盤傳輸層入口時(shí),主盤TCP模塊緩存該報(bào)文到緩存隊(duì)列中,并透?jìng)髦羵浔P的TCP模塊,備盤收到報(bào)文后向主盤回復(fù)確認(rèn)報(bào)文;主盤TCP模塊收到確認(rèn)報(bào)文后,從主盤的報(bào)文緩存隊(duì)列中找出相應(yīng)的報(bào)文,經(jīng)過處理后向發(fā)送端回復(fù)ACK報(bào)文,并將接收到的由發(fā)送端發(fā)來的報(bào)文上傳至主盤應(yīng)用程序。
7.如權(quán)利要求1所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:所述發(fā)送端或接收端,其備盤插入瞬間,主盤檢測(cè)到備盤上線,如果主盤的TCP緩沖區(qū)中有緩存報(bào)文,主盤TCP模塊將報(bào)文上送至主盤應(yīng)用程序,并通知主盤應(yīng)用程序開始收方向定界,主盤應(yīng)用程序進(jìn)行相關(guān)數(shù)據(jù)備份。
8.如權(quán)利要求7所述的TCP連接熱備份的實(shí)現(xiàn)方法,其特征在于:所述主盤應(yīng)用程序進(jìn)行相關(guān)數(shù)據(jù)備份具體為,主盤應(yīng)用程序通知主盤TCP模塊進(jìn)行發(fā)送方向的定界,TCP模塊將相關(guān)數(shù)據(jù)備份到備盤的TCP模塊。
【專利摘要】一種TCP連接熱備份的實(shí)現(xiàn)方法,涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,基于發(fā)送端和接收端,二者均包括主盤和備盤,主盤和備盤均包括TCP/IP協(xié)議棧和報(bào)文緩存隊(duì)列,TCP/IP協(xié)議棧又包括TCP模塊,實(shí)現(xiàn)方法包括:對(duì)于發(fā)送端發(fā)送報(bào)文,經(jīng)過該端TCP模塊處理后,在傳遞給網(wǎng)絡(luò)層處理之前,將報(bào)文備份到備盤,收到備盤回復(fù)的確認(rèn)報(bào)文后,繼續(xù)處理報(bào)文并發(fā)送給接收端;對(duì)于接收端接收?qǐng)?bào)文,經(jīng)鏈路層和網(wǎng)絡(luò)層處理后,傳遞給傳輸層處理之前,將報(bào)文備份到備盤,收到備盤回復(fù)的確認(rèn)報(bào)文后,主盤才繼續(xù)處理報(bào)文,并將報(bào)文上送到接收端應(yīng)用程序。本發(fā)明保證TCP連接主備倒換不斷連,防止報(bào)文丟失。
【IPC分類】H04L12-24, H04L29-06
【公開號(hào)】CN104580215
【申請(qǐng)?zhí)枴緾N201510010555
【發(fā)明人】楊小華, 付華楷, 朱冰
【申請(qǐng)人】烽火通信科技股份有限公司
【公開日】2015年4月29日
【申請(qǐng)日】2015年1月9日