本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種應(yīng)用態(tài)連接同步方法。
背景技術(shù):
網(wǎng)關(guān)設(shè)備在進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)時(shí),為了提升轉(zhuǎn)發(fā)效率,通常使用連接跟蹤機(jī)制,連接即是以流為單位對數(shù)據(jù)包進(jìn)行區(qū)分,連接通常是通過四元組來建立,即數(shù)據(jù)包的源ip地址,源端口號,目的ip地址,目的端口號.連接跟蹤機(jī)制即為在判斷數(shù)據(jù)包是否應(yīng)該轉(zhuǎn)發(fā)時(shí),不是逐包判斷,而是判斷該數(shù)據(jù)包所屬的連接應(yīng)不應(yīng)該轉(zhuǎn)發(fā);具體來說,就是在連接建立的時(shí)候判斷該連接是否應(yīng)該轉(zhuǎn)發(fā),做出決策之后,屬于該連接的所有數(shù)據(jù)包都執(zhí)行同樣的操作。
在雙機(jī)熱備的主備模式下,正常情況下只有主設(shè)備在使用,主設(shè)備保持著當(dāng)前網(wǎng)絡(luò)的所有連接情況.當(dāng)主設(shè)備出現(xiàn)故障后,流量切換到備設(shè)備,由于備設(shè)備沒有連接信息,所有的連接必須重新建立,導(dǎo)致部分流量中斷,一定程度上影響網(wǎng)絡(luò)業(yè)務(wù)。
連接同步即為在主設(shè)備正常工作的情況下,將主設(shè)備上的連接信息實(shí)時(shí)同步到備設(shè)備上,這樣在主設(shè)備發(fā)生故障而切換時(shí),由于備設(shè)備保存了連接信息,因此流量不會因?yàn)椴椴坏竭B接而中斷。
傳統(tǒng)的連接同步方式基于內(nèi)核態(tài),多數(shù)利用開源軟件將內(nèi)核的連接進(jìn)行同步。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的主要目的在于提供一種應(yīng)用態(tài)連接同步方法。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明實(shí)施例提供一種應(yīng)用態(tài)連接同步方法,該方法為:在連接建立時(shí),主設(shè)備在hash桶中加入連接信息,并且會產(chǎn)生第一同步事件,所述第一同步事件放入緩沖隊(duì)列,等到所述緩沖隊(duì)列裝滿時(shí),將整個(gè)隊(duì)列的事件信息同步到備設(shè)備中,所述備設(shè)備接收到主設(shè)備的同步信息之后,在備設(shè)備的hash桶中建立與主設(shè)備同樣的連接信息。
上述方案中,所述第一同步事件包含新建連接的四元組信息以及連接建立時(shí)的時(shí)間信息。
本發(fā)明實(shí)施例還提供一種應(yīng)用態(tài)連接同步方法,該方法為:主設(shè)備收到已經(jīng)建立連接的數(shù)據(jù)包時(shí),更新連接時(shí)間,并且產(chǎn)生連接同步請求,當(dāng)該同步請求的發(fā)生時(shí)間與預(yù)先保存的同步時(shí)間的時(shí)間差在預(yù)設(shè)閾值之外時(shí),將該同步請求轉(zhuǎn)化為第二同步事件,所述第二同步事件立即被同步到備設(shè)備上。
上述方案中,該方法為:所述同步請求的發(fā)生時(shí)間與保存的同步時(shí)間的時(shí)間差小于預(yù)設(shè)閾值時(shí),忽略該同步請求。
上述方案中,所述同步事件包含的更新時(shí)間以及該連接的hash索引值。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
本發(fā)明采用超時(shí)更新算法,在此基礎(chǔ)上,由于在應(yīng)用態(tài)實(shí)現(xiàn),使連接數(shù)據(jù)定制更加簡單,合理、有效減少連接同步數(shù)據(jù),降低心跳鏈路負(fù)載,提升連接同步速度。
附圖說明
圖1為本發(fā)明實(shí)施例提供一種應(yīng)用態(tài)連接同步方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
為了提高同步效率,同時(shí)降低網(wǎng)絡(luò)通信量,連接同步并不是將主設(shè)備所有的連接同步到備設(shè)備,而是采用包驅(qū)動(dòng)更新算法,該算法的核心思想是,只有在主設(shè)備的連接狀態(tài)發(fā)生改變時(shí),才進(jìn)行連接同步。主設(shè)備連接的狀態(tài)主要包括兩個(gè)方面,一個(gè)是連接建立,另一個(gè)是連接時(shí)間更新。產(chǎn)生這兩個(gè)狀態(tài)改變的驅(qū)動(dòng)因素即連接建立和連接查詢。
連接建立:應(yīng)用態(tài)連接信息以結(jié)構(gòu)體的方式保存在hash桶中。連接建立的時(shí)候,首先判斷該連接能否進(jìn)行轉(zhuǎn)發(fā),如果可以轉(zhuǎn)發(fā)。就根據(jù)數(shù)據(jù)包的四元組信息,建立連接結(jié)構(gòu)體,并根據(jù)連接的四元組計(jì)算hash值,將結(jié)構(gòu)體保存到hash桶中。最后將數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。
連接查詢:新的數(shù)據(jù)包到達(dá)設(shè)備之后,獲取數(shù)據(jù)包的四元組,利用四元組計(jì)算出hash值,索引到hash桶中相應(yīng)的位置,取出連接信息進(jìn)行對比,如果四元組信息相同,則查詢到了該數(shù)據(jù)包所屬的連接,如果沒有查詢到,則會進(jìn)入連接建立流程。數(shù)據(jù)包查詢到連接之后需要判斷該連接的更新時(shí)間,如果更新時(shí)間超出了連接的保持時(shí)間,則需要重新建立連接。
實(shí)施例1
本發(fā)明實(shí)施例提供一種應(yīng)用態(tài)連接同步方法,如圖1所示,該方法為:在連接建立時(shí),主設(shè)備在hash桶中加入連接信息,所述連接信息包括連接四元組,連接建立時(shí)間,以及其他的一些和業(yè)務(wù)相關(guān)的數(shù)據(jù).連接建立好之后會產(chǎn)生第一同步事件,所述第一同步事件放入緩沖隊(duì)列,等到所述緩沖隊(duì)列裝滿時(shí)或者超出一定的時(shí)間,將整個(gè)隊(duì)列的事件信息同步到備設(shè)備中,所述備設(shè)備接收到主設(shè)備的同步信息之后,在備設(shè)備的hash桶中建立與主設(shè)備同樣的連接信息。
所述第一同步事件包含新建連接的四元組信息以及連接建立時(shí)的時(shí)間信息。
實(shí)施例2:
本發(fā)明實(shí)施例還提供一種應(yīng)用態(tài)連接同步方法,如圖1所示,該方法為:主設(shè)備收到已經(jīng)建立連接的數(shù)據(jù)包時(shí),更新連接時(shí)間,并且產(chǎn)生連接同步請求,當(dāng)該同步請求的發(fā)生時(shí)間與預(yù)先保存的同步時(shí)間的時(shí)間差在預(yù)設(shè)閾值(即連接超時(shí)時(shí)間-1秒)之外時(shí),將該同步請求轉(zhuǎn)化為第二同步事件,所述第二同步事件立即被同步到備設(shè)備上。
所述同步請求的發(fā)生時(shí)間與保存的同步時(shí)間的時(shí)間差小于預(yù)設(shè)閾值(即連接超時(shí)時(shí)間-1秒)時(shí),忽略該同步請求。
所述同步事件包含的更新時(shí)間以及該連接的hash索引值。
所述備設(shè)備接收到同步事件之后,根據(jù)hash索引值找到對應(yīng)的連接,所述備設(shè)備只需要更新該連接的時(shí)間即可。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。