




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于網(wǎng)絡(luò)處理器實現(xiàn)PIM協(xié)議及組播數(shù)據(jù)快速轉(zhuǎn)發(fā)摘 要:本文提出了在網(wǎng)絡(luò)處理器Intel IXA IXP2XXX中PIM-SM組播路由協(xié)議高效實現(xiàn)方法。將PIM-SM 協(xié)議規(guī)范中涉及數(shù)據(jù)轉(zhuǎn)發(fā)的操作加以分解,并將它們分布于轉(zhuǎn)發(fā)引擎和主控引擎,微引擎轉(zhuǎn)發(fā)數(shù)據(jù)包僅需一次查表,與控制平面盡量隔離,實現(xiàn)了組播包的高速轉(zhuǎn)發(fā)。關(guān)鍵詞:PIM-SM;網(wǎng)絡(luò)處理器;微引擎Achieving PIM and Line-rate Forward Ability based on NP(Network Processor) Abstract:This paper presents an efficient implementation of PIM-SM in Network Processor IXP2XXX. It decomposes forwarding functions in PIM-SM specification and distributes them in main controller and forwarding engine. The forwarding hardwareMicroengine only needs one lookup to forward packet and forwarding behavior is isolated with the control panel. The forwarding speed can get line rate.Key words:PIM-SM;Network Processor;Microengine1 引言網(wǎng)絡(luò)設(shè)備的基本功能是實現(xiàn)網(wǎng)絡(luò)通信業(yè)務(wù)流的控制和轉(zhuǎn)發(fā),處于網(wǎng)絡(luò)邊緣的設(shè)備需要將來自不同物理鏈路的各種業(yè)務(wù)流復(fù)用到統(tǒng)一的傳輸鏈路上,傳統(tǒng)的方法是在網(wǎng)絡(luò)邊緣設(shè)備上采用通用的處理器來完成協(xié)議棧處理、路由選擇以及包頭的剝離等功能。隨著網(wǎng)絡(luò)規(guī)模和性能迅速增長以及新業(yè)務(wù)接連不斷出現(xiàn),要求網(wǎng)絡(luò)設(shè)備具有線速和智能的處理能力。能否實現(xiàn)線速轉(zhuǎn)發(fā)是網(wǎng)絡(luò)設(shè)備組播性能的重要檢驗指標(biāo),也是長期困擾組播應(yīng)用的一個關(guān)鍵問題。于是用專用芯片完成包的處理成為一種趨勢,網(wǎng)絡(luò)處理器(NP,Network Processor)就是在這樣的背景下誕生的。網(wǎng)絡(luò)處理器是新一代用來執(zhí)行數(shù)據(jù)處理和轉(zhuǎn)發(fā)的高速可編程處理器,與傳統(tǒng)的處理器不同,它的設(shè)計采用了全新的理念,使其既有ASIC(Application Specific Integrated Circuit,專用集成電路)的高速處理能力,又有完全的可編程特性。網(wǎng)絡(luò)處理器設(shè)計的關(guān)鍵技術(shù)主要有快速表查找、提供高容量的存貯器帶寬、處理器的可編程性能和軟件開發(fā)環(huán)境,以及如何有效地利用多處理器機(jī)制實現(xiàn)并行化處理,這些都為組播的線速轉(zhuǎn)發(fā)提供了保證。本文提及的NP采用Intel IX架構(gòu)的IXP2XXX系列網(wǎng)絡(luò)處理器。PIM-SM實現(xiàn)了RFC1112提出的ASM組播服務(wù)模型,具有非常強(qiáng)大的分發(fā)功能,是目前應(yīng)用比較廣泛的域內(nèi)組播路由協(xié)議。它采用的是由接收者發(fā)起的加入模型,通過建立組播轉(zhuǎn)發(fā)樹實現(xiàn)組播數(shù)據(jù)的轉(zhuǎn)發(fā)。從其協(xié)議的實現(xiàn)行為來看, PIM-SM可以分為協(xié)議控制引擎和數(shù)據(jù)轉(zhuǎn)發(fā)引擎兩大部分。其中控制引擎用來處理相關(guān)的協(xié)議報文,包括PIM報文、MLD報文、網(wǎng)管命令等,從而對組播樹狀態(tài)信息進(jìn)行維護(hù)和更新,保證協(xié)議的正確運行。數(shù)據(jù)引擎則通過由控制引擎生成的組播轉(zhuǎn)發(fā)表項進(jìn)行組播數(shù)據(jù)的轉(zhuǎn)發(fā)。與一般的單播路由協(xié)議有所不同, PIM-SM的控制引擎和數(shù)據(jù)引擎難以清楚的分離,它的很多協(xié)議行為需要靠數(shù)據(jù)進(jìn)行驅(qū)動,如Assert過程、SPT樹切換及KAT定時器等。因此數(shù)據(jù)引擎還必須對能夠驅(qū)動協(xié)議行為的數(shù)據(jù)報文進(jìn)行特別的處理,并通過特殊的方式和控制引擎進(jìn)行交互,這導(dǎo)致了組播數(shù)據(jù)轉(zhuǎn)發(fā)的復(fù)雜和低效。做為IP網(wǎng)絡(luò)的骨干節(jié)點,要求以線速進(jìn)行包轉(zhuǎn)發(fā),這就勢必要求用硬件實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)功能,NP無疑有其不可替代的優(yōu)勢。2 方案的提出2.1 傳統(tǒng)解決方案的缺點協(xié)議報文數(shù)據(jù)報文偽消息更新轉(zhuǎn)發(fā)表PIM控制引擎網(wǎng)絡(luò)通信模塊內(nèi)核模塊(轉(zhuǎn)發(fā)引擎)路由表 MRIB轉(zhuǎn)發(fā)數(shù)據(jù)圖 1傳統(tǒng)PIM-SM組播實現(xiàn)結(jié)構(gòu)框圖傳統(tǒng)路由器在實現(xiàn)PIM-SM協(xié)議時大都采用在實時操作系統(tǒng)內(nèi)核中嵌入相應(yīng)轉(zhuǎn)發(fā)引擎的方式來實現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā),這種轉(zhuǎn)發(fā)引擎大多采用Cache維護(hù)包括源地址、組地址、出接口列表等信息的轉(zhuǎn)發(fā)表項,數(shù)據(jù)報文則是通過Socket方式接收到后查詢相應(yīng)的轉(zhuǎn)發(fā)表項,如果發(fā)現(xiàn)匹配的表項則在該表項中的每一個出接口都轉(zhuǎn)發(fā)一次;反之則進(jìn)一步判斷是否是能夠驅(qū)動協(xié)議行為的數(shù)據(jù)包;如果不是,則丟棄該數(shù)據(jù)包;如果是,則生成事先約定好的偽消息發(fā)送到控制引擎,隨后控制引擎對該消息進(jìn)行相應(yīng)的處理并對組播路由信息表MRIB進(jìn)行更新,并通過進(jìn)程間通信的方式對內(nèi)核中的轉(zhuǎn)發(fā)表項進(jìn)行修改。其實現(xiàn)結(jié)構(gòu)框圖如圖1所示??梢钥闯?在傳統(tǒng)的PIM-SM實現(xiàn)機(jī)制中,完全依靠軟件方式實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。控制引擎和轉(zhuǎn)發(fā)引擎采用進(jìn)程間通信方式交互效率低下,轉(zhuǎn)發(fā)性能受到處理器處理能力、調(diào)度算法、數(shù)據(jù)流量等諸多因素的影響,難以得到提高。2.2 新方案的提出隨著組播應(yīng)用的廣泛開展,對支持高性能組播的路由器的需求日趨迫切。近年來,人們提出了許多方法來提高路由器的轉(zhuǎn)發(fā)性能,如改造路由表組織結(jié)構(gòu)、采用Cache轉(zhuǎn)發(fā)、數(shù)據(jù)緩沖隊列、零拷貝轉(zhuǎn)發(fā)等。這些方法的主體思想仍舊是采用軟件方式實現(xiàn)。在實際應(yīng)用中發(fā)現(xiàn),只能較低程度而難以大規(guī)模的提高轉(zhuǎn)發(fā)速率。解決轉(zhuǎn)發(fā)性能瓶頸的關(guān)鍵在于盡可能地減少數(shù)據(jù)包的處理時間,只有依靠NP的高性能網(wǎng)絡(luò)數(shù)據(jù)處理能力才能實現(xiàn)高速的數(shù)據(jù)包處理。3 硬件轉(zhuǎn)發(fā)方案IXP2XXX解決方案3.1 方案介紹在傳統(tǒng)的網(wǎng)絡(luò)設(shè)備,比如路由器中,通過內(nèi)核處理來處理每個數(shù)據(jù)包,又加上大量的定時器處理操作。這大大增加了系統(tǒng)開銷從而造成了處理效率的低下,難以實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)的高速處理,而且利用軟件查找轉(zhuǎn)發(fā)表項也是轉(zhuǎn)發(fā)性能低下的一個關(guān)鍵原因。利用NP實現(xiàn)就可以擯棄這些缺陷,由于NP微引擎的完全可編程特性,通過采用不同的編程模型以及相應(yīng)的協(xié)議、算法,在低層硬件設(shè)備的支持下,完全可以實現(xiàn)許多復(fù)雜的網(wǎng)絡(luò)處理功能,如PIM-SM中對一些控制數(shù)據(jù)包的復(fù)雜處理等,而且具有很好的功能靈活性。3.2系統(tǒng)結(jié)構(gòu)和設(shè)計原理PIM-SM在NP中實現(xiàn)的系統(tǒng)結(jié)構(gòu)如圖2所示:主控部分運行控制消息的接收、處理、組播樹狀態(tài)的維護(hù)和控制消息的發(fā)送等功能。它對控制消息進(jìn)行相應(yīng)的處理并根據(jù)協(xié)議規(guī)范觸發(fā)組播樹狀態(tài)信息集(TIB)的變化以及其它信息集的維護(hù)并產(chǎn)生相關(guān)動作,比如接收J(rèn)oin/Prune協(xié)議數(shù)據(jù)包,根據(jù)其內(nèi)路由表管理子系統(tǒng)網(wǎng)管軟件子系統(tǒng)組播路由表控制消息處理消息接收/發(fā)送其它控制消息PIM-SM數(shù)據(jù)驅(qū)動控制消息(DDM)組播轉(zhuǎn)發(fā)表組播查表組播報文總裁處理報頭報文緩存單元分類檢查轉(zhuǎn)發(fā)引擎主控圖2 PIM-SM 組播協(xié)議實現(xiàn)體系結(jié)構(gòu)容生成或更新組播狀態(tài)表,從而觸發(fā)組播轉(zhuǎn)發(fā)表的更新,同時向上游節(jié)點發(fā)送相應(yīng)的Join/Prune協(xié)議數(shù)據(jù)包,從而實現(xiàn)整個組播共享樹的更新或維護(hù)等。轉(zhuǎn)發(fā)引擎則根據(jù)主控部分下發(fā)的組播轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)組播數(shù)據(jù)包,并且在必要時向主控上報數(shù)據(jù)驅(qū)動控制消息,以觸發(fā)協(xié)議體的相關(guān)動作和狀態(tài)變化。本文將重點討論PIM-SM組播包高速轉(zhuǎn)發(fā)的實現(xiàn)的相關(guān)問題,PIM-SM 協(xié)議控制包及其它協(xié)議包的處理見文獻(xiàn) 13等。系統(tǒng)實現(xiàn)的基本原則是:PIM-SM協(xié)議控制平面與數(shù)據(jù)平面(轉(zhuǎn)發(fā))盡量獨立,交互的信息量和頻度盡量??;利用NP的微引擎的高速處理能力實現(xiàn)組播包的轉(zhuǎn)發(fā),盡量減少查表次數(shù),縮短查表所需的指令周期,提高查表效率;功能符合協(xié)議規(guī)范,組播樹狀態(tài)信息與轉(zhuǎn)發(fā)表狀態(tài)應(yīng)盡可能保持同步。3.3 PIM-SM的轉(zhuǎn)發(fā)過程分析與功能分解PIM-SM數(shù)據(jù)包的轉(zhuǎn)發(fā)過程涉及的條件判斷與當(dāng)前TIB樹的狀態(tài)機(jī)及其函數(shù)相關(guān),為達(dá)到快速轉(zhuǎn)發(fā)的目的,需要將TIB與轉(zhuǎn)發(fā)過程相關(guān)的狀態(tài)和狀態(tài)函數(shù)的結(jié)果下發(fā)到轉(zhuǎn)發(fā)模塊,以便轉(zhuǎn)發(fā)模塊直接確定出接口列表oiflist或觸發(fā)相關(guān)的動作;另外,轉(zhuǎn)發(fā)過程也可能觸發(fā)必須反映到控制平面的相關(guān)動作,如重置KAT(S,G)、Update_SPTbit(S,G,iif)、 發(fā)送Assert消息等,因此,需要由轉(zhuǎn)發(fā)引擎構(gòu)造PIM-SM數(shù)據(jù)驅(qū)動控制消息(DDM)適時上報主控模塊,以便主控模塊完成相應(yīng)的動作。PIM-SM數(shù)據(jù)包轉(zhuǎn)發(fā)過程1的功能可以如下分解:其偽代碼中“ ”部分(由F*作為標(biāo)識)由轉(zhuǎn)發(fā)引擎完成,“ ”部分(由Z*作為標(biāo)識)由主控完成(進(jìn)行計算下發(fā)至轉(zhuǎn)發(fā)表或根據(jù)DDM 完成的相應(yīng)動作),“ ”部分(由B*標(biāo)識)功能需要進(jìn)一步分解由轉(zhuǎn)發(fā)引擎和主控引擎共同協(xié)作來完成。在iif(入接口)接收到從源S到目標(biāo)G的數(shù)據(jù)包:if( DirectlyConnected(S) = TRUE )F1/判斷S是否為跟DR直連的源。set_KeepaliveTimer(S,G)_to Keepalive_Period Z1 /重置KAT(S,G)Update_SPTbit(S,G,iif) B1 /第一個組播數(shù)據(jù)包從SPT樹到達(dá), (S,G) SPTbit 的更新g過程oiflist = NULLif(iif=RPF_interface(S)F2AND UpstreamJPState(S,G) = Joined Z2) /按照(S,G)狀態(tài)轉(zhuǎn)發(fā)oiflist = inherited_olist(S,G)Z3if( oiflist != NULL )F3 restart KeepaliveTimer(S,G)Z1 else if( iif = RPF_interface(RP(G)F4 ANDSPTbit(S,G) = FALSE)NOT F5 /按(*,G)或(*,*,RP)轉(zhuǎn)發(fā)oiflist = inherited_olist(S,G,rpt)Z4CheckSwitchToSpt(S,G)B2else /RPF 檢查失敗if ( SPTbit(S,G) = TRUEF5AND iif is in inherited_olist(S,G)F6 ) send Assert(S,G) on iif Z5/在入接口發(fā)Assert(S,G)else if ( SPTbit(S,G) = FALSE NOT F5 ANDiif is in inherited_olist(S,G,rpt) F7send Assert(*,G) on iif Z6/在入接口發(fā)Assert(*,G)oiflist = oiflist (-) iif F8forward packet on all interfaces in oiflist F9(S,G) SPTbit 用于區(qū)分是根據(jù)(*,*,RP)/(*,G)狀態(tài)還是根據(jù)(S,G)狀態(tài)轉(zhuǎn)發(fā),也就是決定從組播共享樹(RPT)轉(zhuǎn)發(fā)還是從最短路徑樹(SPT)轉(zhuǎn)發(fā),而且從SPT切換到RPT需要一個過渡周期,在此周期內(nèi)從S到G的組播數(shù)據(jù)包持續(xù)從組播共享樹上轉(zhuǎn)發(fā),與此同時以源S為目標(biāo)的最短路徑樹(SPT)正在建立,在SPT建立起來以前路由器必須仍然只按 (*,*,RP)/(*,G) 狀態(tài)進(jìn)行也就是只能在RPT上轉(zhuǎn)發(fā)。當(dāng)一個從S到G的數(shù)據(jù)包從SPT 樹到達(dá), (S,G) SPTbit 的更新過程如下:Update_SPTbit(S,G,iif) if ( iif = RPF_interface(S) F10#數(shù)據(jù)包沿源樹到來AND JoinDesired(S,G) = TRUEAND ( DirectlyConnected(S) = TRUEOR RPF_interface(S)!=RPF_interface(RP(G)OR inherited_olist(S,G,rpt) = NULLOR RPF(S,G) = RPF(*,G) ) )Set SPTbit(S,G) to TRUE在PIM 稀疏模式下,最后一跳路由器向RP 加入共享樹。一旦組播數(shù)據(jù)到達(dá)最后一跳路由器,它可選擇從SPT 接收組播流量,發(fā)起從RPT 切換到SPT 的決策函數(shù)如下:CheckSwitchToSpt(S,G) if ( pim_include(*,G) (-)pim_exclude(S,G)(+)pim_include(S,G) != NULL )F11AND SwitchToSptDesired(S,G) )restart KeepaliveTimer(S,G);其中, F11 表示本地有接收者, 本地接收者集合經(jīng)集合運算公式得到數(shù)學(xué)表達(dá)式為:pim_include(*,G)(-)pim_exclude(S,G)(+)pim_include(S,G)Z7 ,由主控完成計算,并將判斷結(jié)果F11 下發(fā)至轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)引擎根據(jù)其值決定是否上報主控重置KAT(S,G)。主控模塊在下發(fā)轉(zhuǎn)發(fā)表之前可能完成的運算或操作有Z2、Z3、Z4、Z7。轉(zhuǎn)發(fā)引擎完成的操作有F1F11。為限制上報主控的PIM-SM 數(shù)據(jù)驅(qū)動控制消息(DDM)的頻率,DDM分為兩類:DDM1(通知主控完成Z5/Z6/B1)和DDM2(通知主控完成Z1)。主控將KAT(S,G)重置、SPT 與RPT 相互轉(zhuǎn)換等所引起TIB 的變化采用觸發(fā)方式下發(fā)至轉(zhuǎn)發(fā)表。為保證線速處理,在具體實現(xiàn)上,按照如下規(guī)則處理:1) PIM-SM控制引擎在網(wǎng)絡(luò)處理器的Xscale Core上實現(xiàn),轉(zhuǎn)發(fā)引擎利用微引擎的可編程能力及高速數(shù)據(jù)包處理能力來實現(xiàn)。由于Xscale Core的時鐘頻率也很高,在控制引擎與轉(zhuǎn)發(fā)引擎之間的數(shù)據(jù)交換能力完全可以滿足要求。2) 轉(zhuǎn)發(fā)表項用CAM和SRAM配合來實現(xiàn),可以實現(xiàn)對數(shù)據(jù)結(jié)構(gòu)的高速緩存和快速操作,基本一次查表可得。使得查找時間縮短在納秒級別。3) 利用微引擎的匯編指令快速判斷報文類型并讀取數(shù)據(jù)包源和目的地址信息,協(xié)議報文經(jīng)微引擎識別后上交給主控控制引擎處理。數(shù)據(jù)報文通過快速查找轉(zhuǎn)發(fā)表項后經(jīng)轉(zhuǎn)發(fā)模塊直接輸出。4) 如果數(shù)據(jù)報文查找轉(zhuǎn)發(fā)表項失敗,則將該數(shù)據(jù)包上交主控模塊處理。5) 驅(qū)動協(xié)議行為的數(shù)據(jù)報文經(jīng)過微引擎辨別后仍舊采用偽消息方式通知主控模塊,主控模塊按照一般的協(xié)議報文處理流程來處理該偽消息。6) 主控模塊處理協(xié)議報文后更新路由表MRIB,然后采用定時觸發(fā)方式下發(fā)到微引擎重新生成轉(zhuǎn)發(fā)表項,更新組播轉(zhuǎn)發(fā)表。4 轉(zhuǎn)發(fā)引擎的設(shè)計要保證組播數(shù)據(jù)的線速轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)引擎的設(shè)計是關(guān)鍵,包含兩部分:組播轉(zhuǎn)發(fā)表的設(shè)計和組播轉(zhuǎn)發(fā)過程的設(shè)計。轉(zhuǎn)發(fā)表的設(shè)計要簡潔合理,同時又必須包含必要的有用信息,最關(guān)鍵的是要便于快速查找和便于更新。轉(zhuǎn)發(fā)過程則要求快速、準(zhǔn)確,同時在所有需要轉(zhuǎn)發(fā)的端口上轉(zhuǎn)發(fā)組播數(shù)據(jù),這就涉及到Packet Copier,而網(wǎng)絡(luò)處理器也恰好提供了相應(yīng)的Packet Replication Algorithm,可以快速實現(xiàn)數(shù)據(jù)包的復(fù)制。4.1組播轉(zhuǎn)發(fā)表的設(shè)計根據(jù)功能的要求,組播轉(zhuǎn)發(fā)表如表1。表1 組播轉(zhuǎn)發(fā)表SS1S2*GG1G2G3RPF-interface(S)RPF-interface(S1)RPF-interface(S2)-RPF-interface(RP(G)-RPF-interface(RP(G2)RPF-interface(RP(G2)Olistinherited_olist(S1,G1)inherited_olist(S2,G2,rpt)inherited_olist(*,G3)RPT011Local_Recv-1/01/0Data_LiveXXX-Data_follow1/0-組播轉(zhuǎn)發(fā)表是按照組播轉(zhuǎn)發(fā)表項的邏輯數(shù)據(jù)結(jié)構(gòu)構(gòu)造的,包含3類表項:1)第一類為組播轉(zhuǎn)發(fā)表中的(S,G,RPT=0)類型的表項,用于匹配直接從SPT轉(zhuǎn)發(fā)的組播數(shù)據(jù)包,這類數(shù)據(jù)包的源地址是組播數(shù)據(jù)的源發(fā)送地址,通過最短路徑樹SPT轉(zhuǎn)發(fā),其出接口列表(olist)的值由主控模塊計算Z3得到,并下發(fā),更新或維護(hù)存于SRAM中的組播轉(zhuǎn)發(fā)表;Data_Live域表示當(dāng)有與該組播轉(zhuǎn)發(fā)表項匹配的組播數(shù)據(jù)包到達(dá)時,通知主控模塊重新設(shè)置DDM2(重置KAT(S,G))消息的最遲響應(yīng)時刻,其設(shè)定值根據(jù)PIM-SM協(xié)議的相關(guān)規(guī)定來設(shè)置,由轉(zhuǎn)發(fā)軟件在下發(fā)該組播轉(zhuǎn)發(fā)表項時計算并寫入或更新組播轉(zhuǎn)發(fā)表;Data_follow域表示在組播轉(zhuǎn)發(fā)表中存在該組播轉(zhuǎn)發(fā)表項之后是否有與該表項相匹配的組播數(shù)據(jù)包通過,初始生成該組播轉(zhuǎn)發(fā)表項時將該域置為0,如果有數(shù)據(jù)包通過則將其置為1。2)第二類為(S,G,RPT=1)類型的表項,這類表項用來匹配通過組播共享樹(RPT)轉(zhuǎn)發(fā)的特定源的數(shù)據(jù)包,其olist由主控模塊計算Z4得到,下發(fā)到轉(zhuǎn)發(fā)模塊,更新或維護(hù)SRAM中的組播轉(zhuǎn)發(fā)表;Local_Recv由主控模塊計算Z7得到并下發(fā)。3)第三類為(*,G,SPT=1)類型的組播轉(zhuǎn)發(fā)表項,這一類型的表項用于任意源組播數(shù)據(jù)的轉(zhuǎn)發(fā),當(dāng)前兩種表項都不能匹配的情況下,通過查找此種類型的組播轉(zhuǎn)發(fā)表項來匹配通過RPT轉(zhuǎn)發(fā)的組播數(shù)據(jù)流量,其olist的值由主控模塊計算Immediate_olist(*,G)并下發(fā),更新或維護(hù)SRAM中的組播轉(zhuǎn)發(fā)表。根據(jù)PIM-SM協(xié)議規(guī)范,組播數(shù)據(jù)包只能通過兩種途徑轉(zhuǎn)發(fā),組播共享樹(RPT)轉(zhuǎn)發(fā)和最短路徑樹(SPT)轉(zhuǎn)發(fā)。因此,在組播轉(zhuǎn)發(fā)表中,第一類轉(zhuǎn)發(fā)表項與第二類轉(zhuǎn)發(fā)表項無法共存于組播轉(zhuǎn)發(fā)表中,任一時刻只能有一種類型的轉(zhuǎn)發(fā)表項有效。當(dāng)主控模塊判斷存在(S,G)狀態(tài)但最短路徑樹SPT尚未建立(SPTbit為FALSE,即NOT F5)起來時,轉(zhuǎn)發(fā)的是(S,G,RPT=1)類型的組播數(shù)據(jù)包;當(dāng)主控模塊判斷存在(S,G)狀態(tài)并且最短路徑樹SPT已經(jīng)建立(SPTbit為TRUE,即F5)起來時,轉(zhuǎn)發(fā)的是(S,G,RPT=0)類型的組播數(shù)據(jù)包;轉(zhuǎn)發(fā)第一第二類型的組播數(shù)據(jù)包時,如果組播轉(zhuǎn)發(fā)表中存在相應(yīng)的(S,G)第一第二類型轉(zhuǎn)發(fā)表項時,需要將其覆蓋。RPF-interface(S)和 RPF-interface(RP(G)在主控模塊下發(fā)組播轉(zhuǎn)發(fā)表之前根據(jù)組播路由信息表(MRIB)求得,得到的結(jié)果存進(jìn)組播轉(zhuǎn)發(fā)表。在(S,G,RPT=1)類型表項中同時保存這兩項的目的在于:當(dāng)從組播共享樹接收組播數(shù)據(jù)包的同時,還需要監(jiān)控是否有組播數(shù)據(jù)包從最短路徑樹到達(dá)(F10),如果某時刻監(jiān)測到RPF(S) OK?U_SPT=1START組播查表:查表條件: 組播包中S,G匹配轉(zhuǎn)發(fā)表中的S,G 域輸出:SUCC( 是否成功1/0)RPF-interface(S)RPF-interface(RP(G)olist: 輸出列表RPT : 共享1/源0 樹Local-Recv : 本地有無接收者1/0Data-Live: 重置KAT 最終期限D(zhuǎn)ata_follow: 是否已有數(shù)據(jù)通過S直連KAT 處理1iif=RPF_interface(S)且RPT=1YesNoYes息No息Is (S,G) match?Is(*,G) match?Noif olistNULL olistYes,succ=1,查找成功Is SPTbitset?YesRPF(S) OK?NoIS Drop?YesDrop YesException processNoYesKAT處理2olist=olist-iif; 在OLIST所有的接口轉(zhuǎn)發(fā)數(shù)據(jù)包NoRPF(RP(G) OK?Yesif olistNULL olistYes,succ=1,查找成功If Local_Recv = 1KAT處理1YesS directly connect?NoException processDrop YesNoDrop PacketNoU-SPT = 1 or ASSERT-S=1生成DDM1:消息格式為(U-SPT,ASSERT-S,ASSERT-G,iif,組播數(shù)據(jù)包頭信息)將DDM1上報主控模塊ENDYesNo圖3 組播轉(zhuǎn)發(fā)模塊處理過程數(shù)據(jù)包既從RPT到達(dá)又從SPT到達(dá),則需要通知主控模塊進(jìn)行Updata_SPTbit(S,G,iif)的處理工作,即B1。4.2 組播轉(zhuǎn)發(fā)過程轉(zhuǎn)發(fā)模塊完成的轉(zhuǎn)發(fā)處理過程如圖3所示。U-SPT、ASSERT-S、ASSERT-G是在轉(zhuǎn)發(fā)過程中用來分別記錄是否(1/0)需要通知主控模塊執(zhí)行B1、Z5和Z6操作的標(biāo)志位。根據(jù)RFC PIM-SM協(xié)議規(guī)范,這3種事件發(fā)生概率較小,故DDM1消息不會過于頻繁。由于當(dāng):(1) S 為直連源; (2)從S 到G 的數(shù)據(jù)包沿源樹到達(dá)且有本地接收者;(3)從S 到G 的數(shù)據(jù)包沿源樹到達(dá)時,均需重置KAT(S,G),進(jìn)行中斷和重啟定時器的操作。因此,如果每次出現(xiàn)上述情況時均通知主控模塊,勢必會造成通知的過于頻繁,造成時鐘中斷的過于頻繁,占用處理器資源過多以及消息緩沖區(qū)溢出從而影響數(shù)據(jù)包的快速轉(zhuǎn)發(fā),而網(wǎng)絡(luò)處理器恰好提供了RBUF緩存,通過空閑進(jìn)程將數(shù)據(jù)從RBUF中移入DRAM重組得到完整的Packet。RBUF 用于緩存多個需要通知主控模塊執(zhí)行Z1的相應(yīng)(S,G)項,再利用網(wǎng)絡(luò)處理器的通用寄存器記錄緩沖區(qū)內(nèi)容上報主控模塊的最終期限時刻。由于在網(wǎng)絡(luò)處理器中主要進(jìn)行組播數(shù)據(jù)包的快速轉(zhuǎn)發(fā),(1)、(2)的情況較少,當(dāng)網(wǎng)絡(luò)處理器微引擎檢查發(fā)生(1)、(2)情況時,則將(S,G)對直接放入緩沖區(qū)(KAT 處理1)。由于第(3)種情況發(fā)生的頻率過于頻繁,必須限制(S,G)項寫入緩沖區(qū)的次數(shù),減少中斷的發(fā)生,完成的是KAT 處理2:如果匹配表項的Data_follow=0 , 將該表項Data_follow置1,將(S,G)對寫入緩沖區(qū)并判斷匹配表項的Data-Live(最后上報期限)是否小于時間寄存器中記錄的時間,如果小于則將時間寄存器的值置為Data-Live的值,完成定時器的更新。如果定時器時刻到達(dá)或緩沖區(qū)將滿,則將緩沖區(qū)中的(S,G)數(shù)據(jù)加上控制報頭生成DDM2上報主控模塊, 同時清空緩沖區(qū)并將時間寄存器設(shè)為最大值(最大值根據(jù)PIM-SM協(xié)議規(guī)范來確定)。5 結(jié)論本設(shè)計對PIM-SM 協(xié)議進(jìn)行了細(xì)致的功能分割;轉(zhuǎn)發(fā)模塊可采用流水作業(yè),利用網(wǎng)絡(luò)處理器的高速處理能力和快速可編程能力,僅需一次查表,實現(xiàn)組播數(shù)據(jù)包的線速轉(zhuǎn)發(fā);解決了轉(zhuǎn)發(fā)硬件、轉(zhuǎn)發(fā)軟件和主控之間速度不匹配以及上報KAT 重置消息的問題。 參考文獻(xiàn)1Bill Fenner, Mark Handley, Hugh Holbrook. draft-ietf-pim-sm-v2-new-12.txt INTERNET-DRAFT 20 March 20062 S. Deering, W. Fenner and B. Haberman, “Multicast Listener Discovery (MLD) for IPv6”, RFC 2710, 19993B.Haber
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國靈敏度可調(diào)氣體檢漏儀行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國熱風(fēng)旋轉(zhuǎn)食品烤爐行業(yè)投資前景及策略咨詢研究報告
- 舒張性心力衰竭的臨床護(hù)理
- 水務(wù)信息化建設(shè)路徑計劃
- 市場分析與推廣計劃
- 客戶關(guān)系維護(hù)的月度計劃
- 增強(qiáng)行業(yè)影響力的工作方案計劃
- 華理國際經(jīng)濟(jì)學(xué)的課件-國際貿(mào)易政策
- 如何從用戶角度進(jìn)行品牌分析計劃
- 品牌危機(jī)管理的有效方法計劃
- 健康體重知識課件
- 分布式光伏電站運作流程
- 中醫(yī)針灸推拿科績效制度
- 蘇科版八年級下冊物理期中測試卷
- 經(jīng)陰道后穹窿穿刺課件
- 監(jiān)理工程師各科歷年真題及答案
- 2型糖尿病學(xué)習(xí)課件
- 江蘇省南京市2021年中考道德與法治真題試卷(含答案解析)
- 信息管理方案
- Python自然語言處理-課件-第05章-詞向量與關(guān)鍵詞提取
- 五年級下冊綜合實踐活動教學(xué)設(shè)計-有趣的拉線偶人 全國通用
評論
0/150
提交評論