一種IPSec VPN高性能數據同步方法
【技術領域】
[0001 ] 本發明涉及一種IPSec VPN高性能數據同步方法,特別是涉及一種適用于IPSecVPN在雙機熱備或者負載均衡環境下,在主設備和備用設備之間,對數據進行同步的方法。
【背景技術】
[0002]IPSec VPN設備需要支持雙機熱備功能、適應負載均衡網絡,以實現IPSec VPN設備自身的可靠性,以及所在的網絡、用戶業務的可靠運行。設備在運行前需要進行配置參數信息設置,在運行過程中將產生大量的工作數據。為了保證一臺設備出現故障后,另外一臺設備能夠快速參與工作,需要保證同組的兩臺設備所有信息能夠實時一致。
[0003]設備運行所需的配置信息一般由用戶設置,其特點是本地保存、同步頻率較低。設備的工作信息主要指設備在工作過程中,根據其自身業務的特點動態生成、維護業務處理的內存臨時信息,重啟時這些信息一般不會本地保存而丟失。其更新頻率主要根據自身業務的特點以及受用戶業務處理速率的影響。比如IKE密鑰協商過程中,ISAKMP SA的更新頻率主要是根據用戶輸入的配置參數決定,IPSec SA的更新頻率則受用戶輸入的配置參數和用戶業務處理速率決定。從更新頻繁程度分析,IPSec SA的更新頻率高于ISAKMP SA,其中IPSec SA的抗重放序列號和抗重放滑動窗口更新最為頻繁。
[0004]設備工作信息的更新頻度主要取決于設備協商IPSecSA的能力,更新頻度一般不會低于毫秒級。
[0005]IPSec協議處理過程中,部分工作信息的變化頻度非常高,主要包括IPSec SA的字節生命周期、抗重放序列號和抗重放滑動窗口。更新頻度主要起決于設備的VPN處理能力。假如設備VPN處理能夠達到100Mbps線速,其更新頻度達到微妙級。
[0006]如果針對更新頻度為微妙級進行實時同步,對VPN設備的性能影響非常大,影響設備正常運行。
[0007]傳統的IPSecVPN數據同步一般采用定時查詢獲取同步數據,這對系統性能影響嚴重影響。
【發明內容】
[0008]傳統的定時查詢方法無法獲取到同步數據是否發生改變,只是定時查詢獲取同步數據,這樣進行所有項查詢會帶來無謂的浪費。
[0009]本發明要解決的技術問題是:提供一種提高工作效率,減少系統負載的IPSecVPN高性能數據同步方法。
[0010]本發明采用的技術方案如下:一種IPSecVPN高性能數據同步方法,其特征在于,設置待同步隊列和同步隊列,采用基于定時器的批量同步,數據信息項數據發生改變時,主動鏈接到待同步隊列中,實現定時同步;所述待同步隊列用于鏈接所有發生了改變但沒有開始同步的數據信息項;所述同步隊列用于維護所有發生了改變正在進行同步的數據信息項;所述定時器根據設置的定時時間閾值,負責發起數據同步功能。
[0011]待同步隊列為一個鏈表頭,負責鏈接所有發生了改變但沒有開始同步的數據信息項;同步隊列同樣為一個鏈表頭,負責維護所有發生了改變、正在進行同步的數據信息項。
[0012]傳統的IPSecVPN數據同步一般采用定時查詢獲取同步數據,這對系統性能影響嚴重影響。本發明采用基于定時器的批量同步,數據信息項因同步數據發生改變,主動鏈接到待同步隊列中。省去了傳統定時查詢方法因無法獲取到同步數據是否發生改變,而進行所有項查詢而帶來無謂的浪費,同時也減少了定時查詢所帶來的數據拷貝。
[0013]進一步的,數據信息項數據發生改變時,主動鏈接到待同步隊列中的具體方法為:在數據信息項中設置指向待同步隊列的鏈表,當某一數據信息項中同步信息發生改變,則把該數據信息項鏈接到待同步隊列中。
[0014]在每一天數據信息項中設置一個指向待同步隊列的鏈表,當某一數據信息項中數據信息發生改變時,該鏈表會把該數據信息項鏈接到待同步隊列,以等到定時時間閾值達到后進行同步。
[0015]進一步的,所述方法還包括,在IKE SA中設置一個list entry,當IKE SA發起了或者收到了DPD探測及相應報文后,list entry掛接到待同步隊列中。
[0016]進一步的,所述方法還包括,在IPSec SA中設置一個list entry,判斷當前IPSecSA是否進行了一次VPN處理,是,則說明抗重放序列號或者抗重放窗口發生了改變,則把當前IPSec SA的list entry掛接到待同步隊列中。
[0017]進一步的,設置定時器定時時間閾值,當時間值大于等于所設定的定時時間閾值時,判定為達到定時時間閾值,定時器重新進入計時,進入下一個定時判斷流程。
[0018]進一步的,實現定時同步的具體方法步驟為:
步驟一、判斷定時器是否達到定時時間閾值,是則進入下一步,否則繼續等待;
步驟二、待同步隊列鏈接到同步隊列鏈表尾,置待同步隊列為空;
步驟三、同步隊列確定本次要進行同步的數據信息項,并逐一收集同步隊列中每個數據信息項的同步信息,發送給要同步信息的另一臺設備進行同步。
[0019]同步進程或模塊對同步隊列中所有SA以設定固定數量的SA確定要同步的數據信息項,收集其中的相關信息(IKE SA包括雙方cookie值、DH)探測序列號和ACK序列號,IPSecSA包括SP1、SA目的地址、協議、抗重放序列號和抗重放滑動窗口),收集一個SA信息后則把該SA的list entry置為空。如果該SA發生改變,則把該SA掛接到待同步隊列中。收集完同步隊列的所有SA信息后,則把這些信息存放在報文發送緩存區,由同步進程或者模塊發送出去。當處理完同步隊列里所有的SA信息后,同步隊列為空鏈表頭,等待下次定時時間閾值的到達。
[0020]當處理完同步隊列里所有的SA信息后,同步隊列為空鏈表頭,等待下次達到定時時間閾值。如果同步隊列的數據信息項數量超過了本次要進行同步的數據信息項數量,剩余的數據信息項則下一次達到定時時間閾值后再發送。
[0021]進一步的,所述步驟一和步驟二之間還包括:判斷待同步隊列中是否有需要進行同步的數據信息項,是則進入步驟二,否則返回步驟一繼續等待達到下一個定時時間閾值。
[0022]進一步的,所述步驟三中,設定每次同步所處理的數據信息項的數量,按照該數量和待同步數據信息項的前后位置,確定本次要進行同步的數據信息項。
[0023]進一步的,進行大量SA信息定時批量同步時,降低第一次SA信息批量同步的數量,針對第一個同步報文,備設備完成同步后返回其處理的時間戳,主設備根據所述返回的時間戳調整后續發送的需要同步的SA信息數量。
[0024]針對前面提到可靠性機制,在實際使用過程中,當進行大量SA信息定時批量同步時,此時主設備無法知道備用設備當前的運行負載。可以降低第一次SA要進行批量同步的數量,具體數量要根據工程實踐來確認。
[0025]進一步的,所述定時時間閾值的設定方法包括:根據當前IPSecSA或者IKE SA的數量動態調整設置,設主設備和備設備之間希望T秒鐘完成一次數據同步,一次最多處理P個IPSec SA,當前系統中有S個IPSec SA的值發生了改變,則定時時間閾值=T/( S/P)。
[0026]定時器定時時間閾值進行自定義配置或根據當前IPSecSA或者IKE SA的數量動態調整設置。當定時時間閾值到達,待同步隊列鏈表的所有內容移動到同步隊列中。待同步隊列則以空鏈表頭的形式繼續接受IKE SAD和IPSec SAD中之前沒有發生改變的SA信息。
[0027]與現有技術相比,本發明的有益效果是:省去了傳統定時查詢方法因無法獲取到同步數據是否發生改變,而進行所有項查詢而帶來無謂的浪費,同時也減少了定時查詢所帶來的數據拷貝。
【附圖說明】
[0028]圖1為本發明其中一實施例的原理不意圖。
【具體實施方式】
[0029]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。
[0030]本說明書(包括摘要和附圖)中公開的任一特征,除非特別敘述,均可被其他等效或者具有類似目的的替代特征加以替換。即,除非特別敘述,每個特征只是一系列等效或類似特征中的一個例子而已。
[0031 ] 具體實施例一
一種IPSec VPN高性能數據同