劉璟緯,陳錢
(南京理工大學(xué)江蘇南京210094)
基于源抑制表項(xiàng)防止堆疊報(bào)文成環(huán)的實(shí)現(xiàn)方法
劉璟緯,陳錢
(南京理工大學(xué)江蘇南京210094)
IRF虛擬化堆疊技術(shù)能夠簡(jiǎn)化組網(wǎng)結(jié)構(gòu),提高網(wǎng)絡(luò)穩(wěn)定性。但是當(dāng)堆疊的拓?fù)浣Y(jié)構(gòu)為三臺(tái)以上的設(shè)備環(huán)形連接時(shí),會(huì)導(dǎo)致報(bào)文成環(huán)進(jìn)而影響整個(gè)網(wǎng)絡(luò)的穩(wěn)定性?;诜乐苟询B系統(tǒng)報(bào)文成環(huán)的目的,文章從堆疊系統(tǒng)內(nèi)部的流量走向入手,通過(guò)分析四框環(huán)堆系統(tǒng)的流量轉(zhuǎn)發(fā)路徑,提出了源抑制表項(xiàng)的算法,成功阻止了報(bào)文成環(huán),并用此算法解釋了兩框堆疊無(wú)法形成環(huán)形連接的原因。最后通過(guò)實(shí)驗(yàn)證明此算法的可行性,并提高了堆疊技術(shù)的穩(wěn)定性。
堆疊;虛擬化;源抑制表項(xiàng);報(bào)文成環(huán)
IRF(Intelligent Resilient Framework,智能彈性架構(gòu))是一種的軟件虛擬化技術(shù),它的核心思想是將多臺(tái)設(shè)備連接在一起,進(jìn)行必要的配置后,虛擬化成一臺(tái)設(shè)備。使用這種虛擬化技術(shù)可以集合多臺(tái)設(shè)備的硬件資源和軟件處理能力,實(shí)現(xiàn)多臺(tái)設(shè)備的協(xié)同工作、統(tǒng)一管理和不間斷維護(hù)。為了便于描述,這個(gè)“虛擬設(shè)備”也稱為IRF[1]。
IRF虛擬化堆疊系統(tǒng)由多臺(tái)分布設(shè)備虛擬而成,具有連接靈活、簡(jiǎn)化網(wǎng)絡(luò)運(yùn)行、強(qiáng)大網(wǎng)絡(luò)擴(kuò)展能力、科學(xué)冗余等優(yōu)點(diǎn)[2]。通常堆疊的物理連接分為鏈形連接和環(huán)形連接兩種,對(duì)于環(huán)形連接的堆疊系統(tǒng),如何防止源設(shè)備發(fā)出的報(bào)文經(jīng)過(guò)環(huán)路回到源設(shè)備從而導(dǎo)致報(bào)文成環(huán),是堆疊功能實(shí)現(xiàn)過(guò)程中必須解決的問(wèn)題。
IRF堆疊在形成基本系統(tǒng)之前,需要經(jīng)過(guò)物理連接、拓?fù)涫占?、角色選舉等一系列階段,當(dāng)這些階段結(jié)束之后,整個(gè)IRF系統(tǒng)才形成,所有的成員設(shè)備組成一臺(tái)設(shè)備存在于整個(gè)網(wǎng)絡(luò)中。
如果IRF堆疊系統(tǒng)需要正常運(yùn)轉(zhuǎn),則需要先將堆疊的成員設(shè)備進(jìn)行物理連接。設(shè)備上用于堆疊連接的物理端口稱為堆疊物理端口。可以將堆疊物理端口配置成為堆疊口,堆疊口是一種邏輯接口。一個(gè)堆疊口可能對(duì)應(yīng)一個(gè)堆疊物理端口,也可能由多個(gè)堆疊物理端口聚合[3]形成(稱為聚合堆疊口)以達(dá)到鏈路備份的效果。同一臺(tái)設(shè)備上,堆疊口的編號(hào)規(guī)定只能為1和2,有時(shí)我們也將1和2堆疊口分別稱為左口和右口。在華三公司高端路由器SR88的設(shè)備中,堆疊口在88X型號(hào)設(shè)備上規(guī)定是線卡板上的物理端口,而在88XS型號(hào)的設(shè)備上則規(guī)定是主控板上的物理端口。
堆疊物理端口之間可以使用專用線也可以使用光纖連接[4]:專用線具有更高的穩(wěn)定性和可靠性;光纖可以將距離很遠(yuǎn)的物理設(shè)備連接成為一個(gè)虛擬設(shè)備,使得應(yīng)用更加靈活。
通過(guò)物理端口進(jìn)行連接的堆疊拓?fù)溆幸韵聝煞N[4]:
1)鏈形連接:使用堆疊電纜將一臺(tái)設(shè)備的左口(右口)和另一臺(tái)設(shè)備的右口(左口)連接起來(lái),依次類推,第一臺(tái)設(shè)備的右口(左口)和最后一臺(tái)設(shè)備的左口(右口)沒(méi)有連接堆疊電纜。這種連接方式稱為鏈形連接,如圖1所示。
2)環(huán)形連接:將鏈形連接第一臺(tái)設(shè)備的右口(左口)和最后一臺(tái)設(shè)備的左口(右口)連接起來(lái),這種連接方式稱為環(huán)形連接[5],如圖1所示。
環(huán)形連接比鏈形連接更可靠,當(dāng)環(huán)形鏈路中有兩臺(tái)設(shè)備的連接出現(xiàn)問(wèn)題時(shí),堆疊系統(tǒng)依然能夠維持正常狀態(tài);當(dāng)鏈形鏈路中任意兩臺(tái)設(shè)備的連接出現(xiàn)問(wèn)題時(shí),會(huì)引起堆疊分裂。
圖1 堆疊的物理連接示意圖
堆疊系統(tǒng)中的每臺(tái)相鄰的設(shè)備都是用過(guò)相互之間交互HELLO報(bào)文來(lái)整合整個(gè)堆疊的拓?fù)潢P(guān)系的。HELLO報(bào)文自身會(huì)攜帶拓?fù)湫畔?,其中包括成員設(shè)備編號(hào)、堆疊口連接關(guān)系、成員設(shè)備的成員橋MAC、系統(tǒng)運(yùn)行時(shí)間、成員設(shè)備優(yōu)先級(jí)等內(nèi)容[6]。
而堆疊系統(tǒng)在設(shè)備之間交互HELLO報(bào)文的時(shí)候,有時(shí)會(huì)因?yàn)镠ELLO報(bào)文超時(shí)而導(dǎo)致堆疊系統(tǒng)無(wú)法建立,此時(shí)需要完成以下檢查[7]:
1)保證堆疊系統(tǒng)的堆疊口為左堆疊口與右堆疊口相連,而不是左口與左口相連或者右口與右口相連;
2)堆疊口是否已經(jīng)切換成二層口;
3)進(jìn)入bash使用命令more/proe/stm/message信息查看是否有“avtive up”關(guān)鍵字,此打印表明由于堆疊口多次檢查出無(wú)效導(dǎo)致堆疊口再可用時(shí)驅(qū)動(dòng)只會(huì)向平臺(tái)報(bào)鏈路UP而不是堆疊口UP,此時(shí)只需要整框重啟即可。
經(jīng)過(guò)一段時(shí)間的收集,所有設(shè)備上都會(huì)收集到完整的拓?fù)湫畔ⅲǚQ為拓?fù)涫諗浚8]。此時(shí)會(huì)進(jìn)入角色選舉階段。
堆疊系統(tǒng)由多臺(tái)堆疊成員設(shè)備組成,每臺(tái)成員設(shè)備都會(huì)被分配一個(gè)固定的角色,即主設(shè)備(Master)或者從設(shè)備(Slave)[1]。確定成員設(shè)備角色的過(guò)程稱為角色選舉。
角色選舉會(huì)在拓?fù)浒l(fā)生變化的情況下產(chǎn)生,比如:堆疊建立、新設(shè)備加入、堆疊分裂或者兩個(gè)堆疊合并[9]。
角色選舉階段主設(shè)備(Master)還會(huì)負(fù)責(zé)成員編號(hào)沖突處理、軟件版本加載、堆疊合并管理等工作。
堆疊系統(tǒng)建立過(guò)程中,系統(tǒng)首先進(jìn)行拓?fù)涞氖占?,之后根?jù)角色選舉的規(guī)則進(jìn)行角色選舉。處理成功后,堆疊系統(tǒng)才能形成和正常運(yùn)行[10]。
從堆疊切換成非堆疊模式,需要使用undo chassis convert mode命令,此接口調(diào)用DRV_ST ACK_GlobalCtl,下的命令是9號(hào)STACK_SET_STA CK_MODE;傳入?yún)?shù)為0。
從非堆疊切換成堆疊模式,先設(shè)置框號(hào)irf mem mem-id;再使用chassis convert mode命令切換成堆疊模式;此過(guò)程在chassis convert mode先下9號(hào)命令字,傳入?yún)?shù)1;再下2號(hào)命令字,傳入的參數(shù)為之前設(shè)置的框號(hào)。
當(dāng)前華三的高端路由器SR88設(shè)備已經(jīng)支持堆疊系統(tǒng)通過(guò)4臺(tái)相同型號(hào)的設(shè)備進(jìn)行環(huán)形連接,稱為4框環(huán)堆。
當(dāng)堆疊系統(tǒng)由4臺(tái)設(shè)備進(jìn)行環(huán)形連接時(shí),我們需要清楚流量在這4臺(tái)設(shè)備之間的轉(zhuǎn)發(fā)路徑是如何形成的。如圖2所示,4臺(tái)設(shè)備進(jìn)行環(huán)形堆疊,設(shè)備1的1/2端口與設(shè)備2的2/1端口連接,設(shè)備2的2/2端口與設(shè)備3的3/1端口連接,設(shè)備3的3/2端口與設(shè)備4的4/1端口連接,設(shè)備4的4/2端口與設(shè)備1的1/1端口連接,這樣就形成了四框環(huán)堆的拓?fù)?。此時(shí),還可以通過(guò)dis irf topo再次確認(rèn)拓?fù)湫螒B(tài)[11]。
圖2 四框環(huán)堆的拓?fù)鋱D
當(dāng)前在設(shè)置轉(zhuǎn)發(fā)表項(xiàng)時(shí),首先各設(shè)備計(jì)算自己的轉(zhuǎn)發(fā)路徑,其轉(zhuǎn)發(fā)路徑計(jì)算算法[12]為:1)分別遍歷左右堆疊口,計(jì)算堆疊設(shè)備間相應(yīng)跳數(shù)記錄到數(shù)組中;2)遍歷數(shù)組,比較左右堆疊口跳數(shù)值,取較小值所在堆疊口作為最短路徑的出端口;3)當(dāng)左右堆疊口跳數(shù)相等時(shí),框號(hào)大則選取右堆疊口,框號(hào)小則選取左堆疊口.因此得出轉(zhuǎn)發(fā)路徑的形式如表1所示。
表1 報(bào)文的轉(zhuǎn)發(fā)路徑形式
使用如下命令查看堆疊轉(zhuǎn)發(fā)路徑,該命令表示設(shè)備1去往設(shè)備2的報(bào)文應(yīng)該從1號(hào)堆疊口(即1/1)出,去往設(shè)備3、4的報(bào)文應(yīng)該從2號(hào)堆疊口(即1/2)出。這條路徑由當(dāng)前的組網(wǎng)計(jì)算出來(lái):
中端為了防止報(bào)文成環(huán),如設(shè)備1口發(fā)出的報(bào)文,又從自己的端口2收到了,并再次從端口1發(fā)出;或者從端口1發(fā)出的報(bào)文,繞成一個(gè)圈后,又從自己的端口1收到了。為此,中端通過(guò)源抑制表項(xiàng)來(lái)進(jìn)行報(bào)文丟棄[13]。
根據(jù)轉(zhuǎn)發(fā)路徑和源抑制表項(xiàng)算法:1)堆疊口在轉(zhuǎn)發(fā)路徑上,或者目的框不可達(dá),則不設(shè)置源抑制;否則,設(shè)置堆疊口源抑制;2)對(duì)于包含未配置恢復(fù)設(shè)備的環(huán)形拓?fù)?,如果本設(shè)備就是指定的未恢復(fù)配置設(shè)備,對(duì)于連接相鄰目的框設(shè)備的堆疊口不設(shè)置源抑制;3)框左右堆疊口其中有一個(gè)堆疊口狀態(tài)不為轉(zhuǎn)發(fā)態(tài),不設(shè)置源丟棄;4)任何情況下,設(shè)置本框的源丟棄[14]。
在圖2的設(shè)備1上可以如表2所示的源抑制表項(xiàng)。
表2 源抑制表項(xiàng)
上表表示對(duì)于設(shè)備1,從堆疊口1收到的報(bào)文,要做源丟棄檢測(cè),如果報(bào)文的源為設(shè)備1,設(shè)備4就需要丟棄;對(duì)從堆疊口2接收到的報(bào)文,如果源為設(shè)備1、2、3,就直接丟棄。
即有以下兩個(gè)原則:
①源為本設(shè)備自己的報(bào)文,丟棄;
②如果到某設(shè)備的轉(zhuǎn)發(fā)路徑走的是堆疊口1,就需要在另一個(gè)端口設(shè)備對(duì)該設(shè)備的源丟棄。
這樣就可以保障任何情況下,都不會(huì)出現(xiàn)環(huán)路的可能。
上述的算法在3框和4框環(huán)堆上可以很好的工作,但在兩框環(huán)堆上會(huì)直接導(dǎo)致有一條鏈路因源路抑制表項(xiàng)而不可用,且該鏈路可計(jì)算出來(lái)[15]。設(shè)框號(hào)為X和框號(hào)為Y的兩臺(tái)設(shè)備,其中X<Y,如圖3所示。根據(jù)轉(zhuǎn)發(fā)路徑計(jì)算規(guī)則:因?yàn)閄和Y到達(dá)對(duì)方均只需要1跳,而X<Y,則設(shè)備X會(huì)選擇P1口作為其轉(zhuǎn)發(fā)路徑,設(shè)備Y選擇P2口作為其轉(zhuǎn)發(fā)路徑;可以看到設(shè)備X和設(shè)備Y選中X(P1)----Y(P2)這條路徑;而在X(P2)----Y(P1)這條路徑上會(huì)因?yàn)槎丝谏显O(shè)置了源抑制表項(xiàng),將來(lái)自對(duì)框的報(bào)文過(guò)濾掉,包括HELLO報(bào)文;
設(shè)備X的源抑制表項(xiàng)情況如表3所示(Y表示設(shè)置源抑制,N表示不設(shè)置)。
設(shè)備Y的源抑制表項(xiàng)情況如表4所示。
四框環(huán)堆系統(tǒng)通過(guò)較大程度地強(qiáng)化系統(tǒng)的網(wǎng)絡(luò)拓展能力,并且相比于鏈形連接,此系統(tǒng)在一條堆疊鏈路故障的情形下仍然能夠正常工作,具有較高的穩(wěn)定性[16]。但是對(duì)于環(huán)堆時(shí)遇到的報(bào)文轉(zhuǎn)發(fā)成環(huán)的問(wèn)題,本文根據(jù)四框環(huán)堆報(bào)文的轉(zhuǎn)發(fā)路徑算法,提出了通過(guò)下發(fā)源路抑制表項(xiàng)的算法對(duì)報(bào)文成環(huán)問(wèn)題進(jìn)行了抑制,并成功解釋了為何兩臺(tái)設(shè)備無(wú)法進(jìn)行環(huán)形堆疊的原因。最后經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,此方法切實(shí)可行。
圖3 兩框環(huán)堆的拓?fù)鋱D
表3 設(shè)備X的源抑制表項(xiàng)
表4 設(shè)備Y的源抑制表項(xiàng)
[1]劉靜波.設(shè)備虛擬化關(guān)鍵技術(shù)研究[D].鄭州:解放軍信息工程大學(xué),2011.
[2]張衛(wèi)東.新一代數(shù)據(jù)中心網(wǎng)絡(luò)虛擬化的IRF技術(shù)研究[J].電腦知識(shí)與技術(shù),2011,7(36):9375-9377.
[3]郭春梅,孟慶森.服務(wù)器虛擬化技術(shù)及安全研究[J].信息網(wǎng)絡(luò)安全,201l(9):35-37.
[4]張劍飛.大規(guī)模數(shù)據(jù)中心可擴(kuò)展交換與網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)研究[D].長(zhǎng)春:吉林大學(xué),2013.
[5]沈波,劉旭林,劉亞楠.基于VSS技術(shù)的萬(wàn)兆以太網(wǎng)升級(jí)方案設(shè)計(jì)與實(shí)現(xiàn)[J].成都信息工程學(xué)院學(xué)報(bào),2012,27(2):162-167.
[6]陳麗佳.網(wǎng)絡(luò)設(shè)備IRF虛擬化堆疊技術(shù)的研究與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2011.
[7]章筠.計(jì)算機(jī)網(wǎng)絡(luò)可靠性分析與設(shè)計(jì)[D].杭州:浙江大學(xué),2012.
[8]王芳,李勇,周燁,等.基于分層抽象思想的虛擬化網(wǎng)絡(luò)實(shí)現(xiàn)平臺(tái)設(shè)計(jì)[J].清華大學(xué)學(xué)報(bào),2012,52(11):1535-1539.
[9]秦學(xué)東,陳大慶,崔曉松.基于開源虛擬化的高可用服務(wù)器架構(gòu)[J].現(xiàn)代圖書情報(bào)技術(shù),2011(6):46-50.
[10]祝陳,陳新來(lái),蔣朝陽(yáng).淺談交換機(jī)的級(jí)聯(lián)與堆疊的不同應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(5):93.
[11]陳光禮.基于堆疊系統(tǒng)業(yè)務(wù)不中斷升級(jí)的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶:重慶大學(xué),2014.
[12]李清固.數(shù)據(jù)中心安全網(wǎng)絡(luò)虛擬化[J].信息安全與技術(shù),2012(10):77-79.
[13]鹿南南.通信設(shè)備智能彈性架構(gòu)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:電子科技大學(xué),2011.
[14]陳光禮.基于堆疊系統(tǒng)業(yè)務(wù)不中斷升級(jí)的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶:重慶大學(xué),2014.
[15]錢歡.虛擬化堆疊技術(shù)研究與實(shí)現(xiàn)[J].電子測(cè)試,2013(18):70-71,51.
[16]董紅茹.數(shù)據(jù)轉(zhuǎn)發(fā)不間斷技術(shù)實(shí)現(xiàn)原理及應(yīng)用[J].電腦編程技巧與維護(hù),2011(21):20-24.
Method of preventing message looping of stack based on source quench entry
LIU Jing-wei,CHEN Qian
(Nanjing University of Science and Technology,Nanjing210094,China)
Virtual stack system is able to simplify the network structure and improve network reliability.However,when the topology of stack contains 3 or more device of loop connection,it will cause message looping and affect the network reliability.Based on the purpose of preventing the message looping of stack,this paper starts from the flow direction of stack.By analyzing the message forwarding path,this paper puts forward the algorithm of source quench entry to prevent the message looping and explains the reason why the stack of 2 device cannot make the loop connection.Finally,it proves the feasibility of the algorithm by means of experiment and improves the network reliability.
stack;virtualization;source quench entry;message looping
TN919
A
1674-6236(2017)23-0109-04
2016-10-27稿件編號(hào):201610169
劉璟緯(1992—),男,江蘇南京人,碩士研究生。研究方向:網(wǎng)絡(luò)通信技術(shù)。