麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

實現SCTP協議熱備份的方法、系統及服務器主機與流程

文檔序號:11138300閱讀:1720來源:國知局
實現SCTP協議熱備份的方法、系統及服務器主機與制造工藝

本發明涉及電信設備中SCTP協議應用領域,特別涉及一種實現SCTP協議熱備份的方法、系統及服務器主機。



背景技術:

通常SCTP(流控傳輸協議)的熱備份是通過活動主機和備份主機之間同步TSN(傳輸序號)的方法實現,每收發一個數據,活動主機和備份主機之間都需要進行同步,實現起來相當復雜。

可見,現有技術還有待改進和提高。



技術實現要素:

鑒于上述現有技術的不足之處,本發明的目的在于提供一種實現SCTP協議熱備份的方法、系統及服務器主機,兩個主機之間無需頻繁同步偶聯數據即可實現熱備份。

為了達到上述目的,本發明采取了以下技術方案:

一種實現SCTP協議熱備份的方法,包括第一主機和第二主機,所述方法包括如下步驟:

A、第一主機與客戶端SCTP偶聯,并將偶聯的COOKIE備份至第二主機;

B、在第一主機無法正常工作時,所述第二主機激活偶聯;所述第二主機的內核根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復;

C、第二主機的內核生成重啟COOKIE_ECHO,并發送至客戶端。

所述的實現SCTP協議熱備份的方法中,所述步驟C之后,還包括步驟:

D、客戶端根據接收到的所述COOKIE_ECHO,將沖突控制參數恢復至初始值;

E、第二主機進入工作狀態后,將內核中的SCTP偶聯備份以及簽名密鑰發送給第一主機。

所述的實現SCTP協議熱備份的方法中,所述步驟A具體包括如下步驟:

A1、第一主機作為活動主機取得SCTP協議棧當前使用的簽名密鑰,并將所述簽名密鑰發送給作為備份主機的第二主機;

A2、第二主機設置SCTP協議棧簽名密鑰;

A3、所述第一主機打開接收端口,在接收到客戶端發出的INIT后,第一主機的內核發送INIT_ACK給客戶端;

A4、所述第一主機接收到客戶端發出的COOKIE_ECHO后,回復COOKIE_ACK給客戶端,SCTP偶聯建立成功;

A5、所述第一主機獲取該偶聯的COOKIE,并將所述COOKIE備份至第二主機。

所述的實現SCTP協議熱備份的方法中,所述第一主機設置有第一內部IP和用于客戶端訪問的外部IP;所述第二主機設置有第二內部IP和與第一主機相同的外部IP;所述第一內部IP和第二內部IP用于第一主機與第二主機之間的數據備份。

一種實現SCTP協議熱備份的系統,所述系統包括:

第一主機,用于與客戶端SCTP偶聯,并將偶聯的COOKIE備份至第二主機;

第二主機,用于接收第一主機發送的COOKIE;在第一主機無法正常工作時,激活偶聯;根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復,生成重啟COOKIE_ECHO,并發送至客戶端。

所述的用于實現SCTP協議熱備份的系統中,所述系統還包括:

客戶端,用于根據接收到的所述COOKIE_ECHO,將沖突控制參數恢復至初始值。

所述的實現SCTP協議熱備份的系統中,所述第二主機還用于在進入工作狀態后,將內核中的SCTP偶聯備份以及簽名密鑰發送給第一主機。

所述的實現SCTP協議熱備份的系統中,所述第一主機具體用于:作為活動主機取得SCTP協議棧當前使用的簽名密鑰,并將所述簽名密鑰發送給作為備份主機的第二主機;打開接收端口,在接收到客戶端發出的INIT后,第一主機的內核發送INIT_ACK給客戶端;在接收到客戶端發出的COOKIE_ECHO后,回復COOKIE_ACK給客戶端,SCTP偶聯建立成功;獲取該偶聯的COOKIE,并將所述COOKIE備份至第二主機。

所述的實現SCTP協議熱備份的系統中,所述第一主機設置有第一內部IP和用于客戶端訪問的外部IP;所述第二主機設置有第二內部IP和與第一主機相同的外部IP;所述第一內部IP和第二內部IP用于第一主機與第二主機之間的數據備份。

一種服務器主機,包括:

應用模塊,用于在所述服務器主機作為活動主機時,在服務器主機與客戶端SCTP偶聯后,將偶聯的COOKIE備份至備份主機;在所述服務器主機作為備份主機時,接收活動主機發出的COOKIE;

內核模塊,用于在所述服務器主機作為備份主機時,根據所述COOKIE設置SCTP協議棧簽名密鑰;在活動主機無法正常工作后激活偶聯,根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復,并生成重啟COOKIE_ECHO,將所述COOKIE_ECHO發送至客戶端;在所述客戶端的沖突控制參數恢復至初始值后,完成與客戶端的SCTP偶聯。

有益效果:

本發明提供的一種實現SCTP協議熱備份的方法、系統及服務器主機,所述方法包括:第一主機與客戶端SCTP偶聯,并將偶聯的COOKIE備份至第二主機;在第一主機無法正常工作時,所述第二主機激活偶聯;所述第二主機的內核根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復;第二主機的內核生成重啟COOKIE_ECHO,并發送至客戶端。由此可知,本發明利用SCTP建立的特點實現SCTP的備份;利用SCTP重啟的過程實現SCTP的主備倒換,兩個主機之間無需頻繁同步偶聯數據即可實現熱備份,過程簡單易實現。

附圖說明

圖1為本發明提供的實現SCTP協議熱備份的方法流程圖。

圖2為本發明提供的實現SCTP協議熱備份的方法中,活動主機與備份主機進行轉換的示意圖。

圖3為本發明提供的實現SCTP協議熱備份的方法中,步驟S10的具體方法流程圖。

圖4為本發明提供的實現SCTP協議熱備份的方法的流程示意圖。

圖5為本發明提供的實現SCTP協議熱備份的系統的結構框圖。

具體實施方式

本發明提供一種實現SCTP協議熱備份的方法、系統及服務器主機,為使本發明的目的、技術方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。

請參閱圖1和圖2,本發明提供一種實現SCTP協議熱備份的方法,尤其適用于實現Linux內核SCTP 1+1熱備份。所述方法包括第一主機10和第二主機20,兩個主機之間可相互通信。具體的,所述第一主機10設置有第一內部IP和用于客戶端訪問的外部IP;所述第二主機20設置有第二內部IP和與第一主機相同的外部IP;所述第一內部IP和第二內部IP用于第一主機10與第二主機20之間的數據備份以及管理。如圖2所示,本發明的1+1熱備份的模型中,當發生主備倒換時(比如活動主機崩潰,重啟,應用進程崩潰等等),備份主機激活外部IP(此IP與原活動主機外部IP相同)成為活動主機;原活動主機去激活外部IP成為備份主機,完成主備倒換后,客戶端與服務器之間的連接不受倒換的影響。

具體的,所述實現SCTP協議熱備份的方法包括如下步驟:

S10、第一主機與客戶端SCTP偶聯,并將偶聯的COOKIE備份至第二主機。所述COOKIE即緩存,或者信息緩存,為攜帶了偶聯信息的一段數據,這段數據可以讓第二主機克隆該偶聯。

S20、在第一主機無法正常工作時,所述第二主機激活偶聯;所述第二主機的內核根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB(傳輸控制模塊,主要包含一個偶聯的狀態以及描述發送窗口,接收窗口的參數等等),使服務器端SCTP偶聯完成恢復。所述密鑰保存在服務器(第一主機、第二主機)內,用于計算和驗證簽名。所述簽名是為了防止客戶端偽造COOKIE對服務器進行攻擊。所述時間戳的作用是為了防止客戶端使用重復的COOKIE對服務器進行攻擊。通過這些設置,有效的防止服務器受到類似于TCP協議的SYNC攻擊,提高安全性。

通常,Linux應用軟件運行在用戶空間,簡稱應用;而Linux內核運行在內核空間,簡稱內核;應用通過調用內核提供的API(應用程序編程接口)使用內核提供的功能。本發明主要用到Linux 內核的系統API getsockopt()以及setsockopt();這兩個API是應用與內核交互套接字(sock)選項的系統調用,其中getsockopt()用于應用從內核獲得套接字的當前選項;而setsockopt()用于應用設置套接字選項至內核。具體的,所述Linux內核SCTP協議??蓪崿FAPI setsockopt()/getsockopt()函數關于SCTP_SECRET_KEY,SCTP_COOKIE,SCTP_COOKIE_ACTIVITE的相關操作。

所述步驟S20具體包括:

作為活動主機的第一主機無法正常工作(由于某種原因,如主機掉電,應用程序崩潰,操作系統崩潰等),主備倒換發生,作為備份主機的第二主機激活外部IP,成為活動主機,并通過setsockopt(SCTP_COOKIE_ACTIVITE)激活偶聯;第二主機內核根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,然后按照收到COOKIE_ECHO的處理流程,生成對應偶聯的TCB,服務器端SCTP偶聯完成恢復。

S30、第二主機的內核生成重啟COOKIE_ECHO(緩存回聲),并發送至客戶端。

由此可知,兩個主機之間無需頻繁同步偶聯數據即可實現熱備份。

進一步的,所述步驟S30之后,還包括步驟:

S40、客戶端根據接收到的所述COOKIE_ECHO,將沖突控制參數(接收窗,發送窗,慢速啟動門限等)恢復至初始值。具體的,客戶端根據COOKIE_ECHO特征,判斷對端已重啟,將沖突控制相關參數恢復至初始值,至此,該偶聯的熱備份倒換完成。換而言之,客戶端只需執行一個重啟操作即可與新的活動主機匹配,數據繼續傳輸,非常方便。根據RFC 2960 5.2.4,當TCB(相當于偶聯)已經存在時,收到對端的COOKIE_ECHO,如果該COOKIE中攜帶的本地關系標簽(Local-Tie-Tag)以及對端關系標簽(Peer-Tie-Tag)與該TCB保存的參數匹配時(以下稱為重啟COOKIE_ECHO),應該采取動作a;動作a將所有沖突控制參數恢復到初始值,實際上相當于傳輸協議本端也執行了一個重啟操作,達到和對端匹配的目的,應用層感知不到傳輸層的變化,數據繼續傳輸。由此可知,本發明利用SCTP建立的特點實現SCTP的備份;利用SCTP重啟的過程實現SCTP的主備倒換,無需頻繁同步偶聯數據即可實現熱備份。

S50、第二主機進入工作狀態后,將內核中的SCTP偶聯備份以及簽名密鑰發送給第一主機。即,原備份主機(第二主機)進入工作狀態后變為活動主機,將內核中的SCTP偶聯備份以及簽名密鑰發送至原活動主機(第一主機),原活動主機變為備份主機,以備倒換的再次發生。也就是說所述步驟S50就是步驟S10,只是兩個主機的主備關系顛倒了。換而言之,接下來還包括如下步驟:

S60、在第二主機無法正常工作時,所述第一主機激活偶聯;所述第一主機的內核根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復。

S70、第一主機的內核生成重啟COOKIE_ECHO,并發送至客戶端。

S80、客戶端根據接收到的所述COOKIE_ECHO,將沖突控制參數恢復至初始值。之后,即返回步驟S10,依此循環往復。

請參閱圖3和圖4,所述步驟S10涉及SCTP的建立機制,SCTP的建立采用4次握手的機制,服務器(活動主機)在發送INIT-ACK(內含這個連接所有信息以及服務器校驗信息的COOKIE)以后,將刪除一切關于這個偶聯的資源,在收到COOKIE-ECHO(攜帶服務器發送的COOKIE)時,再對COOKIE進行簽名校驗并根據COOKIE的內容恢復偶聯的資源,從而完成連接的建立。所述INIT-ACK為初始化確認,作用是,觸發客戶端狀態機的轉換,以及攜帶包含了偶聯信息的COOKIE至客戶端。 為了防止類似于TCP協議的SYNC攻擊(指TCP客戶端發送海量的SYNC至TCP服務器,導致服務器資源如內存耗盡,從而無法提供服務),服務器發送該消息后,會刪除關于該偶聯的資源,當收到COOKIE_ECHO后,會根據COOKIE內容恢復出偶聯。

所述步驟S10具體包括如下步驟:

S110、第一主機作為活動主機取得SCTP協議棧當前使用的簽名密鑰,并將所述簽名密鑰發送給作為備份主機的第二主機。具體的,當活動主機和備份主機完成基本配置后,活動主機通過getsockopt(SCTP_SECRET_KEY)取得SCTP協議棧當前使用的簽名密鑰;活動主機通過內部IP將簽名密鑰發送至備份主機。

S120、第二主機設置SCTP協議棧簽名密鑰。具體的,備份主機通過setsockopt(SCTP_SECRET_KEY)設置SCTP協議棧簽名密鑰。

S130、所述第一主機打開接收端口,在活動主機打開接收端口后,客戶端通過發送INIT建立SCTP偶聯。所述第一主機在接收到客戶端發出的INIT后,第一主機的內核發送INIT_ACK給客戶端??蛻舳私邮盏剿鯥NIT_ACK后,將INIT_ACK中包含的COOKIE通過COOKIE_ECHO發送至活動主機。

S140、所述第一主機接收到客戶端發出的COOKIE_ECHO后,回復COOKIE_ACK(緩存確認或者信息緩存確認,作用是觸發客戶端狀態機轉換,偶聯進入已建立狀態)給客戶端,SCTP偶聯建立成功。具體的,活動主機的內核用COMMUNICATION_UP通知應用,SCTP建立成功;COMMUNICATION_UP是內核中SCTP協議通知應用該偶聯已經進入連接狀態的通信原語。

S150、所述第一主機獲取該偶聯的COOKIE,并將所述COOKIE備份至第二主機。換而言之,活動主機的應用調用getsockopt(SCTP_COOKIE)獲得該偶聯的COOKIE,并將COOKIE備份至備份主機。備份主機應用通過setsockopt(SCTP_COOKIE)將該COOKIE保存至內核。

綜上所述,本發明提供的實現SCTP協議熱備份的方法,主備之間通過COOKIE進行SCTP備份,客戶端和服務器之間通過重新啟動獲得傳輸同步而實現1+1熱備份倒換。采用這種熱備份技術,活動主機和備份之間無需頻繁同步偶聯數據。

基于上述實施例提供的實現SCTP協議熱備份的方法,本發明還提供一種實現SCTP協議熱備份的系統,請參閱圖5,所述系統包括第一主機10、第二主機20和客戶端30。所述第一主機10設置有第一內部IP和用于客戶端訪問的外部IP;所述第二主機20設置有第二內部IP和與第一主機10相同的外部IP;所述第一內部IP和第二內部IP用于第一主機10與第二主機20之間的數據備份。

所述第一主機10,用于與客戶端30SCTP偶聯,并將偶聯的COOKIE備份至第二主機20。所述第一主機具體用于:作為活動主機取得SCTP協議棧當前使用的簽名密鑰,并將所述簽名密鑰發送給作為備份主機的第二主機;打開接收端口,在接收到客戶端發出的INIT后,第一主機的內核發送INIT_ACK給客戶端;在接收到客戶端發出的COOKIE_ECHO后,回復COOKIE_ACK給客戶端,SCTP偶聯建立成功;獲取該偶聯的COOKIE,并將所述COOKIE備份至第二主機。

所述第二主機20,用于接收第一主機10發送的COOKIE;在第一主機10無法正常工作時,激活偶聯;根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復,生成重啟COOKIE_ECHO,并發送至客戶端30;在進入工作狀態后,將內核中的SCTP偶聯備份以及簽名密鑰發送給第一主機10。

所述客戶端30,用于根據接收到的所述COOKIE_ECHO,將沖突控制參數恢復至初始值。

具體的,所述第一主機10和第二主機20均為服務器主機,其均包括應用模塊110和內核模塊120。

所述應用模塊110,用于在所述服務器主機作為活動主機時,在服務器主機與客戶端SCTP偶聯后,獲取所述偶聯的COOKIE,并將偶聯的COOKIE備份至備份主機;在所述服務器主機作為備份主機時,接收活動主機發出的COOKIE,將所述COOKIE保存至內核模塊。

所述內核模塊120,用于在所述服務器主機作為備份主機時,根據所述COOKIE設置SCTP協議棧簽名密鑰;在活動主機無法正常工作后激活偶聯,根據當前時間設置COOKIE的時間戳,并利用密鑰計算簽名,生成對應偶聯的TCB,使服務器端SCTP偶聯完成恢復,并生成重啟COOKIE_ECHO,將所述COOKIE_ECHO發送至客戶端;在所述客戶端的沖突控制參數恢復至初始值后,完成與客戶端的SCTP偶聯,所述服務器主機轉變為活動主機;在所述服務器主機作為活動主機時,當活動主機和備份主機完成基本配置后,通過getsockopt(SCTP_SECRET_KEY)取得SCTP協議棧當前使用的簽名密鑰;打開接收端口,在接收到客戶端發出的INIT后,第一主機的內核發送INIT_ACK給客戶端;接收到客戶端發出的COOKIE_ECHO后,回復COOKIE_ACK給客戶端。

由此可知,本發明提供的SCTP協議熱備份的系統,只有在一個服務器主機無法正常工作時才進行主備轉換,無需頻繁同步偶聯數據即可實現熱備份。由于所述系統的特點以及原理與方法實施例對應,故在此不再贅述。

可以理解的是,對本領域普通技術人員來說,可以根據本發明的技術方案及其發明構思加以等同替換或改變,而所有這些改變或替換都應屬于本發明所附的權利要求的保護范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 平定县| 西林县| 温泉县| 大厂| 安塞县| 江陵县| 历史| 垦利县| 成武县| 类乌齐县| 武穴市| 普兰县| 朝阳县| 禹城市| 洛扎县| 青冈县| 宜城市| 彭州市| 台中县| 郯城县| 称多县| 清苑县| 神池县| 磐石市| 桐庐县| 林甸县| 天长市| 青冈县| 沿河| 湾仔区| 延边| 额尔古纳市| 衡山县| 土默特右旗| 东兰县| 新密市| 大同市| 甘德县| 永善县| 县级市| 蕲春县|