国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多核處理器BFD協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

2016-10-14 06:44鄧嘉吉萌雷升平
電子設(shè)計(jì)工程 2016年12期
關(guān)鍵詞:表項(xiàng)會(huì)話哈希

鄧嘉,吉萌,雷升平

(1.武漢郵電科學(xué)研究院湖北武漢430074;2.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司湖北武漢430074)

基于多核處理器BFD協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

鄧嘉1,2,吉萌2,雷升平2

(1.武漢郵電科學(xué)研究院湖北武漢430074;2.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司湖北武漢430074)

BFD是一種雙向轉(zhuǎn)發(fā)快速檢測(cè)機(jī)制,為解決協(xié)議軟件BFD在鏈路檢測(cè)中響應(yīng)慢的問題,本文提出并實(shí)現(xiàn)了一種在多核處理器平臺(tái)下基于底層驅(qū)動(dòng)實(shí)現(xiàn)的BFD機(jī)制。該機(jī)制下所有的收發(fā)包處理都由底層驅(qū)動(dòng)實(shí)現(xiàn),上層只負(fù)責(zé)向底層下發(fā)配置命令和接受底層的通告信息;會(huì)話表中通過哈希算法查找相應(yīng)的會(huì)話并對(duì)相關(guān)字段進(jìn)行匹配。實(shí)驗(yàn)證明,該機(jī)制的鏈路檢測(cè)響應(yīng)時(shí)間可達(dá)20毫秒左右,滿足高性能網(wǎng)絡(luò)設(shè)備可靠性的要求。

BFD;多核處理器;鏈路狀態(tài);哈希表

隨著IP數(shù)據(jù)業(yè)務(wù)的發(fā)展,網(wǎng)絡(luò)鏈路的可靠性越來越受到人們的重視,其中設(shè)備之間的鏈路狀態(tài)檢測(cè)成為了關(guān)注的焦點(diǎn)。相鄰系統(tǒng)之間通信故障快速檢測(cè)功能最早應(yīng)用于傳輸網(wǎng)的SDH(Synchronous Digital Hierarchy,同步數(shù)字體系)設(shè)備中,而作為聯(lián)通網(wǎng)的路由器、交換機(jī)設(shè)備并沒有類似的檢測(cè)機(jī)制。BFD[1](Bidirectional Forwarding Detection,雙向轉(zhuǎn)發(fā)檢測(cè))協(xié)議的出現(xiàn),填補(bǔ)了網(wǎng)絡(luò)設(shè)備之間故障檢測(cè)協(xié)議的空白,各大設(shè)備廠商也紛紛致力于BFD的研究和實(shí)現(xiàn)?;谲浖拥腂FD,當(dāng)對(duì)端發(fā)來BFD報(bào)文后,由底層送到軟件層,然后進(jìn)協(xié)議棧解析和匹配,一旦檢測(cè)到鏈路故障,需要通告底層切換備用路由,整個(gè)過程反應(yīng)比較遲鈍,無法滿足高端路由器鏈路快速倒換的要求。因此,實(shí)現(xiàn)一種能夠?qū)︽溌饭收峡焖贆z測(cè)并響應(yīng)的BFD機(jī)制顯得尤為重要。本文提出的基于驅(qū)動(dòng)實(shí)現(xiàn)的BFD,能夠在30毫秒內(nèi)檢測(cè)出鏈路故障并做出響應(yīng),為快速路由倒換并恢復(fù)鏈路爭(zhēng)取了時(shí)間,提升了整個(gè)網(wǎng)絡(luò)鏈路的可靠性。

1 BFD表項(xiàng)設(shè)計(jì)

BFD的表項(xiàng)設(shè)計(jì)是通過哈希表來實(shí)現(xiàn)的,將源IP和目的IP作為參數(shù)輸入SDK中所提供的一個(gè)函數(shù),生成一個(gè)數(shù)字X,因?yàn)楸竟1淼拇笮?K,所以哈希值的大小必須在0到1023之間,所以再將X除以1024取余,得出一個(gè)大小在0到1023之間的哈希值。如果兩對(duì)不同的源目的IP但是算出來的哈希值相同的話則會(huì)產(chǎn)生哈希沖突,解決哈希沖突這一問題,在這里采用鏈地址的方式,就是通過next指針將沖突的表項(xiàng)鏈接在已存在表項(xiàng)的后面,從BFD的列表[2]中抽象出3個(gè)部分:標(biāo)志位部分(flag),條件匹配部分(match),協(xié)商部分(consult)

Flag={flag1,flag2,..,flagn},flagn屬于集合Flag,flagn則是表項(xiàng)中第n個(gè)標(biāo)志位;Match={match1,match2,...,matchn},matchn屬于集合Match,matchn則是表項(xiàng)中第n個(gè)匹配字段位;Consult={consult1,consult2,..,consultn}consultn屬于集合Consult,consultn則是第n個(gè)協(xié)商字段。如圖1所示。

2 BFD發(fā)包模塊設(shè)計(jì)

圖2是整個(gè)發(fā)包模塊的流程圖,發(fā)包模塊的定時(shí)器是采用輪訓(xùn)的方式,core8每隔10 ms,掃描整張hash表,也就是說掃描的范圍是從0一直到1023,在表項(xiàng)中有一項(xiàng)為sessionid,如果session-id的值為0則表示該表項(xiàng)沒有會(huì)話,則跳過,如果不為空,首先查看是否存在沖突域,如果存在的話,說明在一個(gè)hash表項(xiàng)中存在多個(gè)會(huì)話session[3-4],需要對(duì)其遍歷,并對(duì)沖突域中的每一個(gè)會(huì)話都要對(duì)其進(jìn)行處理,對(duì)每一個(gè)會(huì)話的操作與表項(xiàng)不存在沖突域是對(duì)會(huì)話的操作相同。當(dāng)對(duì)某一個(gè)會(huì)話進(jìn)行處理時(shí),首先要判斷其會(huì)話模式是主動(dòng)模式,被動(dòng)模式,或者是回聲模式。主動(dòng)模式和被動(dòng)模式的主要區(qū)別是當(dāng)會(huì)話狀態(tài)是down的時(shí)候,主動(dòng)模式會(huì)不斷的送down包,而被動(dòng)模式則什么也不做。當(dāng)會(huì)話處于init和up狀態(tài)的時(shí)候,主動(dòng)模式和被動(dòng)模式的實(shí)現(xiàn)過程相同。Core8每掃一次hash表的時(shí)候,時(shí)間計(jì)數(shù)器的數(shù)值會(huì)被累加。所以當(dāng)時(shí)間計(jì)數(shù)器的值余1 000 ms為0的時(shí)候,如果會(huì)話的狀態(tài)為down或者init時(shí),則發(fā)送相應(yīng)狀態(tài)的數(shù)據(jù)包出去。同當(dāng)會(huì)話狀態(tài)為init時(shí),除了發(fā)送init出去以外,還會(huì)依據(jù)flag位和detect_multi來判定是否超時(shí)。如果超時(shí)則將當(dāng)前會(huì)話設(shè)置為down,同時(shí)上報(bào)主控。

如果會(huì)話的狀態(tài)是為up的話,發(fā)送up包并將flag位加1的條件是時(shí)間計(jì)數(shù)器的值余協(xié)商發(fā)包間隔為0的時(shí)候,當(dāng)時(shí)間計(jì)數(shù)器的值余協(xié)商收包間隔為0的時(shí)候,則判斷flag的值是否大于預(yù)先設(shè)定的detect_multi[5-6]發(fā)包重復(fù)次數(shù)。依據(jù)flag位和detect_multi來判定是否超時(shí)。如果超時(shí)則將當(dāng)前會(huì)話設(shè)置為down,同時(shí)上報(bào)主控

由于是在多核下實(shí)現(xiàn)發(fā)包,考慮到線程安全問題,當(dāng)進(jìn)入發(fā)包模塊的時(shí)候,會(huì)給相應(yīng)表項(xiàng)資源上鎖。從而避免對(duì)同一表項(xiàng),在發(fā)送數(shù)據(jù)包的同時(shí)修改數(shù)據(jù)包。

圖1 BFD表項(xiàng)結(jié)構(gòu)圖

圖2 發(fā)包模塊設(shè)計(jì)流程圖

圖3 收包模塊設(shè)計(jì)流程圖

3 BFD收包模塊設(shè)計(jì)

收包是非常關(guān)鍵的一部分,系統(tǒng)流程如圖3所示,首先,當(dāng)接受了一個(gè)數(shù)據(jù)包過來,要收包模塊要從主干道將它提取出來,這個(gè)數(shù)據(jù)包要符合兩個(gè)條件,第一個(gè)是其協(xié)議號(hào)要是17,說明采用udp,第二個(gè)是其端口號(hào)為3704。提取出數(shù)據(jù)包以后,首先要判斷這個(gè)數(shù)據(jù)包是不是合法的,有兩個(gè)條件:第一是將數(shù)據(jù)包的源IP和目的IP提取出來,通過多核處理器上的SDK依據(jù)源目的IP算出hash值,到hash表中去查找對(duì)應(yīng)的session,如果查找到對(duì)應(yīng)的表項(xiàng)為空時(shí),則表明這個(gè)數(shù)據(jù)包不是合法的,則丟棄。第二,如果找到了對(duì)應(yīng)的表項(xiàng),則再去比對(duì)其中的字段,首先看有沒有認(rèn)證,如果有則進(jìn)行認(rèn)證。否則查看表項(xiàng)里面唯一的標(biāo)識(shí)符,如果標(biāo)識(shí)符不完全,則將會(huì)話雙發(fā)的標(biāo)識(shí)符補(bǔ)全,如果會(huì)話雙方的標(biāo)識(shí)符齊全,則判斷數(shù)據(jù)包和表項(xiàng)對(duì)應(yīng)的標(biāo)示符是否一致。如果不一致則說明數(shù)據(jù)包是不合法的,可能是別人偽造的或者被改過了的,則丟掉。當(dāng)所有這些條件判斷過后,證明這個(gè)數(shù)據(jù)包已經(jīng)合法之后,再依據(jù)數(shù)據(jù)包中的狀態(tài)來修改表項(xiàng)中會(huì)話的狀態(tài),如果數(shù)據(jù)包的狀態(tài)為UP,還需要進(jìn)一步判斷是否需要重新協(xié)商發(fā)包間隔和收包間隔。

收包的話就可以用core1到core7都可以,收發(fā)包是并行工作的,當(dāng)收包后,數(shù)據(jù)包在修改表項(xiàng)數(shù)據(jù)的時(shí)候該表項(xiàng)則會(huì)上鎖,這時(shí)如果發(fā)包的核在這是后來讀取的話,則會(huì)等待,等鎖釋放以后再讀取表項(xiàng),將包發(fā)出去,所以一定要設(shè)一個(gè)LOCK,不然一個(gè)再改一個(gè)在發(fā),則會(huì)出現(xiàn)錯(cuò)誤,因?yàn)樾薷谋眄?xiàng)相對(duì)于掃描表項(xiàng)的時(shí)間是非常短的,所以當(dāng)遇到鎖的時(shí)候核core8等待。

4 實(shí)驗(yàn)與結(jié)果分析

本實(shí)驗(yàn)是在高端路由器上進(jìn)行,實(shí)驗(yàn)儀表為Spirent FestCenter,用儀表模擬一臺(tái)路由器設(shè)備,建立BFD會(huì)話。高端路由器中的核卡則采用多核處理器,單核主頻為1.2 GHz。

圖4 實(shí)驗(yàn)拓?fù)鋱D

按圖4連接設(shè)備,配置IP地址并保證設(shè)備之間能ping通,路由器設(shè)備的ip配置為5.5.5.1/24,儀表的IP設(shè)置為5.5.5.5/24.在設(shè)備上開啟BFD功能。在連接鏈路接口上使能BFD,設(shè)置為主動(dòng)模式,且兩端都為主動(dòng)方。BFD的主要操作模式稱為主動(dòng)模式(異步模式)。在這種模式下,系統(tǒng)之間相互周期性地發(fā)送BFD控制報(bào)文,如果某個(gè)系統(tǒng)連續(xù)幾個(gè)報(bào)文都沒有接收到,就認(rèn)為此BFD會(huì)話的狀態(tài)是Down。當(dāng)兩端都為主動(dòng)角色時(shí),兩端的系統(tǒng)都要向?qū)Χ税l(fā)送Your Discriminator為0的BFD控制報(bào)文,直到兩端學(xué)到對(duì)端的Discriminator,然后開始建立會(huì)話查看BFD會(huì)話。通過主控將其配置到將最小發(fā)送間隔和接受間隔都設(shè)置為最小的10 ms,檢測(cè)次數(shù)設(shè)為2次,因?yàn)榘l(fā)送數(shù)據(jù)包的core8的循環(huán)間隔為10 ms,因此該值為發(fā)包的極限值。

5 主控配置建立會(huì)話

當(dāng)bfd配置好之后,通過儀表連接設(shè)備,建立會(huì)話session如圖5所示,會(huì)話的狀態(tài)有down轉(zhuǎn)變?yōu)閡p狀態(tài),說明會(huì)話建立成功。

圖5 會(huì)話狀態(tài)圖

6 最后結(jié)果分析

通過對(duì)途中數(shù)據(jù)的分析得出10組以5.5.5.1位源IP的數(shù)據(jù)的發(fā)送時(shí)間進(jìn)行了統(tǒng)計(jì)。依據(jù)圖6統(tǒng)計(jì)結(jié)果所得數(shù)據(jù)(數(shù)據(jù)已秒為單位),分析得出單次發(fā)包所用平均時(shí)間10.485 845 ms。發(fā)包間隔大于10 ms的部分是多核在構(gòu)造數(shù)據(jù)包上所用時(shí)間。由于檢測(cè)次數(shù)至少為兩次,所以該機(jī)制的鏈路檢測(cè)響應(yīng)時(shí)間可達(dá)30 ms以內(nèi),滿足高端路由器可靠性的要求。

圖6 BFD響應(yīng)時(shí)間測(cè)試結(jié)果

7 結(jié)束語

基于驅(qū)動(dòng)層的BFD,對(duì)整個(gè)BFD報(bào)文的收發(fā)處理都在線卡上完成,當(dāng)會(huì)話狀態(tài)發(fā)生改變時(shí),只需要向主控通告相應(yīng)的會(huì)話狀態(tài)信息。這種方式的BFD對(duì)鏈路狀態(tài)的感知比較快,當(dāng)檢測(cè)到鏈路故障后,可以在第一時(shí)間通告切換備用路由。這種機(jī)制避免了鏈路出現(xiàn)故障時(shí)主控與線卡之間多次通告的耗時(shí)過程,為快速路由倒換節(jié)約了時(shí)間。運(yùn)用這種BFD機(jī)制與FRR聯(lián)動(dòng),鏈路故障恢復(fù)時(shí)間可實(shí)現(xiàn)50 ms以內(nèi),滿足骨干網(wǎng)中高端路由器可靠性的要求。但是,隨著各種數(shù)據(jù)業(yè)務(wù)的發(fā)展,整個(gè)網(wǎng)絡(luò)的組網(wǎng)結(jié)構(gòu)也愈發(fā)復(fù)雜,人們對(duì)鏈路的檢測(cè)的要求已不僅僅滿足于能夠發(fā)現(xiàn)故障并快速恢復(fù)鏈路,而且還要求能夠檢測(cè)具體哪條鏈路出現(xiàn)故障,造成故障的原因是什么。因此,如何利用現(xiàn)有的BFD協(xié)議精確檢測(cè)鏈路狀態(tài),是今后需要進(jìn)一步研究的方向之一。

[1]王晨.BFD技術(shù)在H-VPLS網(wǎng)絡(luò)上的實(shí)現(xiàn)[D].南京大學(xué),2012.

[2]蔡素梅,劉蓮花,陳強(qiáng).BFD的研究及在3G網(wǎng)絡(luò)中的應(yīng)用設(shè)計(jì)[J].廣東通信技術(shù),2011(3):25-29.

[3]韓韜略.分布式BFD系統(tǒng)中驅(qū)動(dòng)模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].南京大學(xué),2013.

[4]陳瑞森.基于BFD的IP快速重路由的研究與實(shí)現(xiàn)[D].杭州電子科技大學(xué),2012.

[5]何燕.基于BFD的MPLS隧道故障檢測(cè)及恢復(fù)技術(shù)的研究與實(shí)現(xiàn)[D].杭州電子科技大學(xué),2010.

[6]陶潤(rùn)澤.基于BFD協(xié)議的40G的以太網(wǎng)鏈路檢測(cè)模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].華中科技大學(xué),2013.

Design and implementation of BFD protocol based on multi-core processor

DENG Jia1,2,JI Meng2,LEI Sheng-ping2
(1.Wuhan Research Institue of Posts and Telecommunications,Wuhan 430074,China;2.Wuhan FiberHome Networks,Wuhan 430074,China)

BFD is a bidrectional forwarding fast detection.To solve the problem of slow-forward detection,this paper presents and implements BFD protocol on a multi-core processor platform.sending and processing packets in this mechanism are implements by bottom-driver.bottom-driver receive and send commands through notification to up level.A session is find and matched by hash value.The experiment prove that the time of fast-forward detection is about 20 ms,and it can satisfy the request of rooter.

BFD;multi-core processor;state of link;hash table

TN 915

A

1674-6236(2016)12-0090-03

2015-06-04稿件編號(hào):201506055

鄧嘉(1989—),男,湖南長(zhǎng)沙人,碩士研究生。研究方向:通信技術(shù)。

猜你喜歡
表項(xiàng)會(huì)話哈希
一種改進(jìn)的TCAM路由表項(xiàng)管理算法及實(shí)現(xiàn)
哈希值處理 功能全面更易用
QQ和微信會(huì)話話輪及話輪轉(zhuǎn)換特點(diǎn)淺析
文件哈希值處理一條龍
基于ARMA模型預(yù)測(cè)的交換機(jī)流表更新算法
SDN數(shù)據(jù)中心網(wǎng)絡(luò)基于流表項(xiàng)轉(zhuǎn)換的流表調(diào)度優(yōu)化
基于集群節(jié)點(diǎn)間即時(shí)拷貝的會(huì)話同步技術(shù)研究①
基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
巧用哈希數(shù)值傳遞文件
交換機(jī)的FDB地址