專利名稱:一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法。
背景技術(shù):
一方面,過去一直以來,人們總是為特定業(yè)務(wù)構(gòu)建特定網(wǎng)絡(luò),又為融合新興業(yè)務(wù)不斷改造網(wǎng)絡(luò),這使得網(wǎng)絡(luò)的基礎(chǔ)能力和用戶業(yè)務(wù)需求之間總是存在一條難以逾越的鴻溝。究其主要原因:其一網(wǎng)絡(luò)是剛性的,改造只能依靠升級(jí)和擴(kuò)展,無法實(shí)現(xiàn)面向新業(yè)務(wù)的重構(gòu);其二網(wǎng)絡(luò)節(jié)點(diǎn)(如路由器/交換機(jī)/網(wǎng)關(guān)等)是封閉的,節(jié)點(diǎn)的升級(jí)和擴(kuò)展只能由原制造商實(shí)施,無法實(shí)現(xiàn)面向新業(yè)務(wù)的運(yùn)營商級(jí)別的開放。另一方面,計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用領(lǐng)域的迅速擴(kuò)大,新特性、新需求不斷出現(xiàn)并不斷變化,這就要求新一代網(wǎng)絡(luò)設(shè)備應(yīng)具有足夠的靈活性,能快速地對(duì)新業(yè)務(wù)、新需求做出響應(yīng);要求新一代網(wǎng)絡(luò)設(shè)備應(yīng)具有足夠的開放性,使用戶可以根據(jù)所開放的資源靈活組合,以提供不同的網(wǎng)絡(luò)需求服務(wù);要求新一代網(wǎng)絡(luò)設(shè)備應(yīng)具有足夠的模塊化特性,并通過標(biāo)準(zhǔn)化組織進(jìn)行標(biāo)準(zhǔn)化,使得每個(gè)模塊可以由不同廠家獨(dú)立研究開發(fā),又可以通過積木式有機(jī)組合成一個(gè)整體,這種積木式的發(fā)展模式可以極大地加快產(chǎn)品的開發(fā)過程,同時(shí)也有利于良性競(jìng)爭(zhēng)、降低成本,個(gè)人計(jì)算機(jī)(PC)的發(fā)展已經(jīng)充分證明了該模式的有效性。轉(zhuǎn)發(fā)與控制分離的網(wǎng)絡(luò)設(shè)備正是由于滿足了新一代網(wǎng)絡(luò)的以上要求而在目前得到了廣泛研究和應(yīng)用。針對(duì)上述問題,為了擺脫傳統(tǒng)網(wǎng)絡(luò)設(shè)備體系結(jié)構(gòu)的束縛,2003年IETF成立了ForCES (Forwarding and Control Element Separation,轉(zhuǎn)發(fā)和控制件分離)工作組,專門研究開放架構(gòu)的新一代網(wǎng)絡(luò)設(shè)備的體系結(jié)構(gòu)。ForCES技術(shù)的關(guān)鍵點(diǎn)是網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備在結(jié)構(gòu)上實(shí)現(xiàn)轉(zhuǎn)發(fā)面和控制面分離,同時(shí)轉(zhuǎn)發(fā)面內(nèi)部資源實(shí)現(xiàn)虛擬化、模塊化、標(biāo)準(zhǔn)化,進(jìn)而實(shí)現(xiàn)柔性的開放可重構(gòu),這些特征使得網(wǎng)絡(luò)運(yùn)營者可以搭積木的方式重組功能模塊,進(jìn)而定制實(shí)現(xiàn)各種新業(yè)務(wù)。以上這些技術(shù)特點(diǎn),使得ForCES架構(gòu)成為實(shí)現(xiàn)新型網(wǎng)絡(luò)服務(wù)應(yīng)用如三網(wǎng)融合、云計(jì)算等的網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備重要技術(shù)架構(gòu)。一個(gè) ForCES 系統(tǒng)(ForCES Network Element, ForCES NE)分成轉(zhuǎn)發(fā)件和控制件兩部分,控制件(Control Element,CE)和轉(zhuǎn)發(fā)件(Forwarding Element,FE)都可以有一個(gè)或多個(gè),其中多個(gè)CE實(shí)現(xiàn)控制的冗余備份;多個(gè)FE可以實(shí)現(xiàn)對(duì)不同速率和協(xié)議數(shù)據(jù)包的轉(zhuǎn)發(fā)處理,其中FE的典型結(jié)構(gòu)如圖1所示。轉(zhuǎn)發(fā)件中包含有對(duì)數(shù)據(jù)包進(jìn)行處理和轉(zhuǎn)發(fā)的各種資源如分類器、調(diào)度器、IPv4或IPv6轉(zhuǎn)發(fā)器等。協(xié)議伺服器完成協(xié)議解析、執(zhí)行等任務(wù)??刂萍?duì)轉(zhuǎn)發(fā)件進(jìn)行控制和信息交換,為了實(shí)現(xiàn)系統(tǒng)的開放性,其間的信息交換是根據(jù)ForCES協(xié)議標(biāo)準(zhǔn)進(jìn)行,確保系統(tǒng)有效運(yùn)行?;ヂ?lián)網(wǎng)協(xié)議RFC3654中規(guī)定了 ForCES的需求(Requirements),互聯(lián)網(wǎng)協(xié)議RFC3746規(guī)定了轉(zhuǎn)發(fā)與ForCES的框架(Framework),互聯(lián)網(wǎng)協(xié)議RFC5810規(guī)定了 FE與CE間的標(biāo)準(zhǔn)信息交換協(xié)議“ForCES Protocol Specification”,標(biāo)準(zhǔn)化使得FE和CE可以由不同廠家生產(chǎn)。根據(jù)對(duì)數(shù)據(jù)包進(jìn)行的不同處理操作,F(xiàn)E可以由分類、調(diào)度、隊(duì)列管理等邏輯功能模塊(Logical Function Block, LFB)組成,互聯(lián)網(wǎng)協(xié)議RFC5812 規(guī)定了這些 LFB 的具體模型“ForCES Forwarding Element (FE) Model”。LFB作為一個(gè)可以完成既定功能的邏輯模塊,必須提供一系列的參數(shù)(如:EtherPort LFB的IP地址和mask地址等)供用戶配置和參看。參數(shù)隸屬于LFB,LFB隸屬于FE,F(xiàn)E隸屬于ForCES NE,按照這種邏輯層次關(guān)系,可以構(gòu)造出一個(gè)樹狀的ForCES NE資源覽圖(類似于Windows的資源管理器)且每一個(gè)參數(shù)就是該樹上的一個(gè)節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)在樹上的位置是唯一的,為了方便節(jié)點(diǎn)的管理需要對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),原則是:FE號(hào)+LFB類號(hào)+LFB實(shí)例號(hào)+元素號(hào),F(xiàn)orCES稱采用這種原則的編號(hào)為路徑(Path)。針對(duì)每個(gè)節(jié)點(diǎn),還需對(duì)其進(jìn)行描述,主要是:節(jié)點(diǎn)的說明信息和數(shù)據(jù)類型(例如IP地址的數(shù)據(jù)類型是32位整型數(shù)),這些描述信息我們稱之為L(zhǎng)FB屬性(Attribute)。LFB能力(capability)反映了 LFB的容量,只供外部查詢,比如LFB所對(duì)應(yīng)的LFB類的版本號(hào),LFB類支持的可選特性,一個(gè)輸出端口組的最大可配置輸出端口數(shù)量,對(duì)LFB屬性額外的范圍約束。在LFB的輸入和輸出描述方面,RFC5812規(guī)定了任何一個(gè)LFB的輸入和輸出形態(tài)為:單輸入單輸出、單輸入 多輸出、多輸入單輸出,多輸入多輸出。其中的每個(gè)輸入輸出端口都必須屬于特定的輸入輸出端口組,且每個(gè)端口組必須有組名,組名可以自由定義只要不重復(fù)即可。如此,一個(gè)端口組里可能有多個(gè)輸入輸出端口,為了區(qū)分它們,每個(gè)輸入輸出端口對(duì)應(yīng)一個(gè)標(biāo)識(shí)號(hào),該標(biāo)識(shí)號(hào)只在組范圍內(nèi)有效。信息三元組(LFBj^ 口組名、標(biāo)識(shí)號(hào))就可以唯一地表不一個(gè)輸入輸出端口。任何一個(gè)拓?fù)溥B線總是從源LFB的輸出端口到目標(biāo)LFB的輸入端口,這種連接的可行性取決于兩個(gè)種因素:1、輸出和輸入是否匹配;2、轉(zhuǎn)發(fā)件關(guān)于LFB拓?fù)涞募s定。通常一個(gè)LFB的輸入端口所包含的信息可包含兩部分:expected frame和expected metadata。expected frame指的是當(dāng)前LFB正常工作時(shí),通過該輸入端口進(jìn)來的以太網(wǎng)巾貞、IPv4包、IPv4單播包、ARP包等!expected metadata指的是當(dāng)前LFB正常工作時(shí),通過該輸入端口進(jìn)來的元數(shù)據(jù),這里元數(shù)據(jù)特指LFB運(yùn)行過程中的上下文。但是需要特別說明的是,一個(gè)輸入端口并不要求這兩部分信息必須同時(shí)具備,可以是兩者中任何一個(gè)或全部。同理,一個(gè)LFB的輸出端口所包含的信息也可包含兩部分:produced frame和produced metadata,produced frame指的是當(dāng)前LFB正常工作時(shí),通過該輸出端口所送出的以太網(wǎng)巾貞、IPv4包、IPv4單播包、ARP包等!produced metadata指的是當(dāng)前LFB在數(shù)據(jù)處理的過程中,所產(chǎn)生的元數(shù)據(jù),這里元數(shù)據(jù)特指LFB運(yùn)行過程中的上下文。如果源LFB的輸出端口和目標(biāo)LFB的輸入端口之間存在連線,則要所述輸出和輸入端口的信息必須是相同的,基于此我們?cè)谕負(fù)鋱D上描述一條拓?fù)溥B線時(shí),只需寫明輸出或輸入中的一個(gè)即可。FE內(nèi)這些LFB之間的連接關(guān)系構(gòu)成了 ForCEs系統(tǒng)的內(nèi)部拓?fù)?,通常一個(gè)拓?fù)鋵?duì)應(yīng)ForCES系統(tǒng)的一種功能,圖2給出了一個(gè)典型的具備ipv4轉(zhuǎn)發(fā)功能的ForCEs路由器系統(tǒng)的內(nèi)部拓?fù)?。ForCES系統(tǒng)中LFB的動(dòng)態(tài)拓?fù)渲傅氖怯脩粼诰€、實(shí)時(shí)地改變系統(tǒng)內(nèi)部拓?fù)?,從而?shí)現(xiàn)對(duì)系統(tǒng)的功能轉(zhuǎn)換和升級(jí)等。盡管國內(nèi)外有多家研究機(jī)構(gòu)對(duì)基于ForCES系統(tǒng)的實(shí)現(xiàn)方案進(jìn)行了研究,但到目前為止,各研究小組也尚未公開過有效的ForCES系統(tǒng)中LFB動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方案。本發(fā)明提交單位全面參與了 IETF ForCES工作組的研究和標(biāo)準(zhǔn)制定工作,是國際上公認(rèn)的ForCES技術(shù)研究團(tuán)體。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提出一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案包含如下步驟:
步驟(I)轉(zhuǎn)發(fā)與控制分離系統(tǒng)內(nèi)的控制件和轉(zhuǎn)發(fā)件都維護(hù)了一個(gè)拓?fù)湫畔?,該拓?fù)湫畔焓且唤M有向連線的集合,該有向連線的起點(diǎn)和終點(diǎn)都是邏輯功能塊;
步驟(2)控制件向轉(zhuǎn)發(fā)件發(fā)送邏輯功能塊的屬性的配置消息,該配置消息中僅包含拓?fù)湫畔?,所述的拓?fù)湫畔椴襟E(I)中拓?fù)湫畔炀S護(hù)過程中的變化部分;
步驟(3)轉(zhuǎn)發(fā)件對(duì)步驟(2)所述的拓?fù)湫畔⑦M(jìn)行合法性驗(yàn)證,如果驗(yàn)證成功進(jìn)入步驟
(4),否則將進(jìn)入步驟(6);
步驟(4)轉(zhuǎn)發(fā)件根據(jù)收到的拓?fù)湫畔?,生效新拓?fù)洌绻峦負(fù)渖С晒t進(jìn)入步驟
(5),否則將進(jìn)入步驟(6);· 步驟(5)轉(zhuǎn)發(fā)件更新自己的拓?fù)湫畔?,并生成操作成功的?yīng)答消息,然后將該應(yīng)答消息反饋給控制件;
步驟(6)轉(zhuǎn)發(fā)件生成操作失敗的應(yīng)答消息,反饋給控制件;
步驟(7)控制件根據(jù)收到的應(yīng)答消息所包含的內(nèi)容,來決定是否更新自己的拓?fù)湫畔?,如果收到的?yīng)答消息為成功,則更新拓?fù)湫畔?,否則回滾拓?fù)湫畔?。所述的步驟(2)中邏輯功能塊的屬性的配置消息和拓?fù)湫畔⒌臉?gòu)造過程具體包含如下步驟:
2-1.將步驟⑵中所述拓?fù)湫畔⒅械拿恳粭l有向連線,分成兩種情況:新增和刪除;在已規(guī)定的有向連線組成元素(如:源邏輯功能塊類號(hào)、源邏輯功能塊實(shí)例號(hào)、源邏輯功能塊端口組名等)前增加一個(gè)I字節(jié)的狀態(tài)字段,該狀態(tài)字段等于I表示新增、等于2表示刪除;每一條增加狀態(tài)字段后的有向連線都以TLV (類型-> 長(zhǎng)度-> 值)的方式進(jìn)行封裝,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線組成元素的堆疊。2-2.拓?fù)湫畔⒁訲LV的方式封裝在配置消息中,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線TLV的堆疊。所述步驟(3)中拓?fù)湫畔⒌暮戏ㄐ则?yàn)證過程具體包含如下步驟:
3-1.轉(zhuǎn)發(fā)件根據(jù)新收到的拓?fù)湫畔ⅲ聪蛲茖?dǎo)出該拓?fù)湫畔⑺倪壿嫻δ軌K,如果這些邏輯功能塊全部被轉(zhuǎn)發(fā)件的能力所允許,則進(jìn)入步驟3-2,否則直接返回失敗;
3-2.轉(zhuǎn)發(fā)件針對(duì)新收到的拓?fù)湫畔⒅械拿恳粭l有向連線,判斷每一條有向連線是否符合轉(zhuǎn)發(fā)件的約定,只有在全都符合約定的情況下才能返回成功,否則返回失敗。所述的有向連線的起點(diǎn)為源邏輯功能塊,終點(diǎn)為目標(biāo)邏輯功能塊;該有向連線表示的是從源邏輯功能塊的輸出到目標(biāo)邏輯功能塊的輸入;
所述轉(zhuǎn)發(fā)件的約定為源邏輯功能塊輸出與目標(biāo)邏輯功能塊輸入的可連接性。本發(fā)明有益效果如下: 本發(fā)明通過控制件向轉(zhuǎn)發(fā)件發(fā)送邏輯功能塊屬性配置的ForCES消息,進(jìn)而實(shí)現(xiàn)ForCES系統(tǒng)中轉(zhuǎn)發(fā)件功能的重構(gòu)和重組。本發(fā)明給出了邏輯功能塊拓?fù)渑渲玫牧鞒?,配置消息中拓?fù)湫畔⒌拇娣鸥袷胶屯負(fù)溥B接關(guān)系正確性的驗(yàn)證機(jī)制。本發(fā)明的顯著技術(shù)優(yōu)點(diǎn)是:1、拓?fù)湫畔⒈硎臼趾?jiǎn)單,以堆疊的方式在ForCES消息中存放有向連接;2、拓?fù)涓轮行畔⒘孔钚』?,僅包含拓?fù)湫畔?,雖然增加了 I個(gè)字節(jié)的開銷,但是卻避免了在拓?fù)涓孪⒅邪l(fā)送整個(gè)拓?fù)湫畔臁?br>
圖1 ForCES轉(zhuǎn)發(fā)件的內(nèi)部結(jié)構(gòu) 圖2 LFB拓?fù)涞呐渲昧鞒? 圖3 —種典型的LFB拓?fù)涫纠?br>
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。如圖1、圖2所示,一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法,包含如下步驟:
步驟(I)轉(zhuǎn)發(fā)與控制分離系統(tǒng)內(nèi)的控制件和轉(zhuǎn)發(fā)件都維護(hù)了一個(gè)拓?fù)湫畔?,該拓?fù)湫畔焓且唤M有向連線的集合,該有向連線的起點(diǎn)和終點(diǎn)都是邏輯功能塊;
步驟(2)控制件向轉(zhuǎn)發(fā)件發(fā)送邏輯功能塊的屬性的配置消息,該配置消息中僅包含拓?fù)湫畔ⅲ龅耐負(fù)湫畔椴襟E(I)中拓?fù)湫畔炀S護(hù)過程中的變化部分;
步驟(3)轉(zhuǎn)發(fā)件對(duì)步驟(2)所述的拓?fù)湫畔⑦M(jìn)行合法性驗(yàn)證,如果驗(yàn)證成功進(jìn)入步驟
(4),否則將進(jìn)入步驟(6);
步驟(4)轉(zhuǎn)發(fā)件根據(jù)收到的拓?fù)湫畔?,生效新拓?fù)?,如果新拓?fù)渖С晒t進(jìn)入步驟
(5),否則將進(jìn)入步驟(6);
步驟(5)轉(zhuǎn)發(fā)件更新自己的拓?fù)湫畔?,并生成操作成功的?yīng)答消息,然后將該應(yīng)答消息反饋給控制件;
步驟(6)轉(zhuǎn)發(fā)件生成操作失敗的應(yīng)答消息,反饋給控制件;
步驟(7)控制件根據(jù)收到的應(yīng)答消息所包含的內(nèi)容,來決定是否更新自己的拓?fù)湫畔?,如果收到的?yīng)答消息為成功,則更新拓?fù)湫畔?,否則回滾拓?fù)湫畔?。所述的步驟(2)中邏輯功能塊的屬性的配置消息和拓?fù)湫畔⒌臉?gòu)造過程具體包含如下步驟:
2-1.將步驟⑵中所述拓?fù)湫畔⒅械拿恳粭l有向連線,分成兩種情況:新增和刪除;在已規(guī)定的有向連線組成元素(如:源邏輯功能塊類號(hào)、源邏輯功能塊實(shí)例號(hào)、源邏輯功能塊端口組名等)前增加一個(gè)I字節(jié)的狀態(tài)字段,該狀態(tài)字段等于I表示新增、等于2表示刪除;每一條增加狀態(tài)字段后的有向連線都以TLV (類型-> 長(zhǎng)度-> 值)的方式進(jìn)行封裝,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線組成元素的堆疊。2-2.拓?fù)湫畔⒁訲LV的方式封裝在配置消息中,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線TLV的堆疊。
所述步驟(3)中拓?fù)湫畔⒌暮戏ㄐ则?yàn)證過程具體包含如下步驟:
3-1.轉(zhuǎn)發(fā)件根據(jù)新收到的拓?fù)湫畔?,反向推?dǎo)出該拓?fù)湫畔⑺倪壿嫻δ軌K,如果這些邏輯功能塊全部被轉(zhuǎn)發(fā)件的能力所允許,則進(jìn)入步驟3-2,否則直接返回失敗;
3-2.轉(zhuǎn)發(fā)件針對(duì)新收到的拓?fù)湫畔⒅械拿恳粭l有向連線,判斷每一條有向連線是否符合轉(zhuǎn)發(fā)件的約定,只有在全都符合約定的情況下才能返回成功,否則返回失敗。所述的有向連線的起點(diǎn)為源邏輯功能塊,終點(diǎn)為目標(biāo)邏輯功能塊;該有向連線表示的是從源邏輯功能塊的輸出到目標(biāo)邏輯功能塊的輸入;
所述轉(zhuǎn)發(fā)件的約定為源邏輯功能塊輸出與目標(biāo)邏輯功能塊輸入的可連接性。
實(shí)施例為了便于本領(lǐng)域一般技術(shù)人員理解和實(shí)現(xiàn)本發(fā)明,現(xiàn)結(jié)合附圖進(jìn)一步說明本發(fā)明的技術(shù)方案,給出一種本發(fā)明所述的具體實(shí)施方式
。一)ForCES 的轉(zhuǎn)發(fā)件模型和 FEObejct LFB1、ForCES轉(zhuǎn)發(fā)件模型
如圖1 所不為轉(zhuǎn)發(fā)和控制分離(Forwarding and Control Element Separation,ForCES)系統(tǒng)內(nèi)轉(zhuǎn)發(fā)件(Forwarding Element, FE)的內(nèi)部結(jié)構(gòu)圖。根據(jù)FE內(nèi)部各個(gè)模塊的功能不同,可以劃分為不同類別的邏輯功能塊(Logical Function Block, LFB)。LFB及其屬性(Attribute)都是可以由控制件(Control Element, CE)通過ForCES協(xié)議進(jìn)行控制的,各個(gè)LFB之間通過數(shù)據(jù)包通道(Datapath)相互連接。這種連接關(guān)系(即LFB拓?fù)?也是由CE通過ForCES協(xié)議進(jìn)行定義,以形成不同的LFB拓?fù)浣Y(jié)構(gòu),進(jìn)而實(shí)現(xiàn)動(dòng)態(tài)資源配置以完成各種不同的IP類型服務(wù)。RFC 3654定義了 ForCES FE模型必須滿足的需求,主要包含以下幾條:
1)FE中的數(shù)據(jù)包通道必須提供邏輯上可分離的、獨(dú)立的包轉(zhuǎn)發(fā)操作;
2)構(gòu)建各個(gè)LFB間可能的拓?fù)潢P(guān)系并以一定的邏輯順序完成包的處理;
3)提供LFB可能的操作能力(能力限定、約束、可選屬性及配置粒度等);
4)提供各個(gè)LFB可配置的參數(shù);
5)提供LFB間可交換的元數(shù)據(jù)。需要說明的是LFB可以分成一般LFB和核心LFB。除了 FE對(duì)象LFB (FEObject)和FE協(xié)議LFB (FEP0),之外都是一般LFB,主要承擔(dān)數(shù)據(jù)包處理的工作,如EtherPHYCOP,EtherMACIn, EtherClassifier,IPv4Validator,IPv4UcastLPM,IPV4NextHop,EtherEncap,ARP, EtherMacOut, BasicMetaDataDispath等,且都需要按照FE建模方法進(jìn)行定義。 核心LFB與一般LFB的區(qū)別:
0 核心LFB沒有輸入和輸出端口,不參與到數(shù)據(jù)包的處理拓?fù)渲小?核心LFB實(shí)例在建立鏈接之前已經(jīng)存在且僅僅只有I個(gè)實(shí)例(實(shí)例ID為0x1),不需要再進(jìn)行實(shí)例化。核心LFB- FEObject是對(duì)FE整體性功能(如,LFB拓?fù)?的抽象。該LFB類ID號(hào)為I。每一個(gè)FE中只能存在一個(gè)該LF B實(shí)例,其LFB實(shí)例ID定為I。目前ForCES工作組已經(jīng)完成了 FEObject LFB類定義,在定義的過程中選擇了 XML建模語言,描述正式的結(jié)構(gòu)定義。這是因?yàn)閄ML具有人和機(jī)器都易讀的優(yōu)勢(shì),有廣泛的工具支持。在FEObeject LFB定義中,包括可重用的數(shù)據(jù)類型和自身類的定義,其中核心部分是后者。數(shù)據(jù)類型信息結(jié)構(gòu)的定義與類定義相關(guān),并由類定義使用。FEObject LFB主要功能是:通過自身定義的能力(Capability)來獲取LFB類,實(shí)例以及實(shí)例的輸出、輸入信息。通過這些信息來反映FE內(nèi)部各LFB實(shí)例之間的連接關(guān)系。、FEObject LFB中及其拓?fù)湎嚓P(guān)的能力和屬性
FEObject LFB 定義了諸多屬性和能力,如 ModifiableLFBTopology、SupportedLFBs、LFBSelectors0這里只詳細(xì)闡述與LFB拓?fù)涔芾硐嚓P(guān)的兩個(gè)屬性和能力。(I)能力 SupportedLFBs
步驟(3)所述的拓?fù)湫畔⒑戏ㄐ则?yàn)證與該能力密切相關(guān)。能力SupportedLFBs提供FE所支持的LFB類。SupportedLFBs為數(shù)組類型,每個(gè)數(shù)組元素包含F(xiàn)E所支持的LFB類的全部信息。該數(shù)組元素類型為SupportedLFBType。SupportedLFBType類型有以下內(nèi)容:
0 LFBName:LFB 類名稱
0 LFBClassID:LFB類的ID。LFB類ID和LFB類名稱都具有全局唯一性。0 LFBVersion:當(dāng)前FE所支持的LFB類的版本號(hào)。0 LFBOccurrenceLimit:FE可以支持的該LFB類的最大實(shí)例個(gè)數(shù)。0PortGroupLimits 和 PortGroupLimitType。 PortGroupLimits 提供了該LFB類所支持的端口組信息。PortGroupLimits為數(shù)組類型,其數(shù)據(jù)元素為PortGroupLimitType 類型。PortGroupLimitType 是包含 PortGroupName (端口 組名稱)、MinPortCount (端口組所 允許的的端口最少數(shù))、MaxPortCount (端口組所允許的端口最多數(shù))的結(jié)構(gòu)體。 0CanOccurAfters:介紹當(dāng)前LFB實(shí)例可以部署在哪些LFB類實(shí)例
之后。CanOccurAfters為數(shù)組類型,其數(shù)據(jù)元素為L(zhǎng)FBAdjacencyLimitType類型。LFBAdjacencyLimitType 是包含 NeighborLFB (相鄰 LFB 類的 ID)和 ViaPort (相鄰 LFB 類中可以連接的輸出端口的列表)的結(jié)構(gòu)體。0CanOccurBefores:介紹當(dāng)前LFB實(shí)例可以部署在哪些LFB類實(shí)例之前。CanOccurBefores為數(shù)組類型,象CanOccurAfters —樣,其數(shù)據(jù)元素也為L(zhǎng)FBAdjacencyLimitType 類型。與 CanOccurAfters 不同的是:LFBAdjacencyLimitType 類型中ViaPort指的是相鄰LFB類中可以連接的輸入端口的列表。0 UseableParentLFBClasses:該數(shù)組保存了 FE所支持的所有LFB的父類(不管是直接繼承還是間接繼承)的ID。(2)屬性 LFBTopology
LFBTopology是可選內(nèi)容,它說明了 FE內(nèi)部各個(gè)LFB實(shí)例之間的連接關(guān)系。該屬性集中表現(xiàn)為權(quán)利要求中步驟1-1)所述的拓?fù)湫畔⒌谋磉_(dá)方式。LFBTopology為數(shù)組類型,數(shù)組中的元素為L(zhǎng)FBLinkType類型。數(shù)組的每項(xiàng)都保存了每個(gè)連接的端點(diǎn)信息。LFBLinkType包含以下內(nèi)容:
0 FromLFBID:某個(gè)連接的起始點(diǎn)LFBID。其類型為L(zhǎng)FBSelectorType,包括LFB的類ID和實(shí)例ID。0 FromPortGroup:某個(gè)連接的起始點(diǎn)的輸出端口組名稱。0 FromPortIndex:某個(gè)連接的起始點(diǎn)的輸出端口組中的編號(hào)。
0 ToLFBID:某個(gè)連接的中止點(diǎn)LFBID。0 ToPortGroup:某個(gè)連接的中止點(diǎn)的輸入端口組名稱。0 ToPortIndex:某個(gè)連接的中止點(diǎn)的輸入端口組中的編號(hào)。由上述不難發(fā)現(xiàn),F(xiàn)EObject對(duì)FE內(nèi)的LFB拓?fù)潢P(guān)系是基于有向連線的方式來描述的,F(xiàn)romLFBID對(duì)應(yīng)的是源LFB,ToLFBID對(duì)應(yīng)目標(biāo)LFB,再結(jié)合到FromPortGroup、FromPortIndex、ToPortGroup> ToPortIndex,任一有向連線就可以唯一地確定源LFB的某一輸出端口口和目標(biāo)LFB的某一輸入端口。二)一種典型的LFB拓?fù)浣Y(jié)構(gòu)圖示例
圖3給出了一種具有IPv4單播路由轉(zhuǎn)發(fā)功能的FE內(nèi)的LFB拓?fù)涫疽鈭D。圖中所示的LFB包括以太網(wǎng)銅質(zhì)輸接口 LFB、以太網(wǎng)二層輸入LFB、以太網(wǎng)二層輸出LFB、以太網(wǎng)分類LFB、IPv4包驗(yàn)證LFB、IPv4單播最長(zhǎng)前綴匹配LFB、IPv4下一跳查表LFB、以太網(wǎng)二層封裝LFB、二層查表LFB、地址解析協(xié)議LFB。各LFB功能簡(jiǎn)單介紹如下:
0以太網(wǎng)銅質(zhì)輸接口 LFB:對(duì)應(yīng)與路由器上的以太網(wǎng)的銅質(zhì)接口,因此可作為輸
入的數(shù)據(jù)類型是二進(jìn)制的比特流,輸出只有一個(gè)包含兩部分:以太網(wǎng)幀和輸入的物理接口ID (元數(shù)據(jù))。0 以太網(wǎng)二層輸入LFB和以太網(wǎng)二層輸出LFB:用于以太網(wǎng)的MAC幀合法性驗(yàn)證和MAC層的鏈路管理,每個(gè)LFB的輸入和輸出都是以太網(wǎng)幀和輸入的物理接口 ID (元數(shù)據(jù))。0 以太網(wǎng)分類LFB:雖名為以太網(wǎng)分類器,但實(shí)際上實(shí)現(xiàn)了兩個(gè)功能:MAC幀頭的解封裝和分類。解封裝后,從幀頭中提取的類型字段,進(jìn)而區(qū)分出IPv4、ARP。0 IPv4包驗(yàn)證LFB:工作在IP層的驗(yàn)證包頭v4包頭驗(yàn)證模塊,一方面根據(jù)對(duì)IP包進(jìn)行校驗(yàn),另一方面對(duì)單播和組播、廣播等進(jìn)行分類,圖3中所有懸空的輸出都表示發(fā)送信號(hào)給控制件,由控制件完成后續(xù)處理。0 IPv4單播最長(zhǎng)前綴匹配LFB:根據(jù)單播IPv4包的目的IP地址進(jìn)行路由前綴的匹配,并從中選擇匹配長(zhǎng)度最長(zhǎng)的那個(gè),得到下一跳表的索引。0 IPv4下一跳查表LFB:根據(jù)IPv4單播最長(zhǎng)前綴匹配所得到的下一跳索引,查找路由IP包所需的下一跳IP地址。0 二層查表LFB:根據(jù)下一跳IP地址,到二層緩存表中查找下一跳IP地址所對(duì)應(yīng)的MAC地址,如果表中已存在,則輸出該MAC ;否則通過ARP進(jìn)行查詢。0 以太網(wǎng)二層封裝LFB:在獲取到路由所需要的目的MAC地址,完成以太網(wǎng)幀的封裝。0 地址解析協(xié)議LFB:實(shí)現(xiàn)ARP的功能。如“背景技術(shù)”部分所述的LFB的輸入和輸出,圖3中每一條拓?fù)溥B線上方所標(biāo)注的就是frame,下面標(biāo)注的是metadata,如以太網(wǎng)分類LFB的輸入有I個(gè),輸出有2個(gè)。該輸入所要求的frame為以太網(wǎng)巾貞,metadata為物理接口 ID ;輸出I產(chǎn)生的frame為IPv4包,無metadata產(chǎn)生;另一路輸出2產(chǎn)生的frame為以ARP包,metadata為物理接口 ID和源MAC地址。不難理解一條合法的有向連線必須滿足的條件之一是源LFB的輸出必須與目標(biāo)LFB的輸入一致,且LFB的輸入和輸出已在RFC 5812被明確定義。 三)基于FULLDATA描述的LFB拓?fù)渑渲孟⑷缜啊?、FE0bject LFB中及其拓?fù)湎嚓P(guān)的能力和屬性”部分所述,拓?fù)湫畔⒅械拿織l有向連線由 LFBLinkType 來描述,LFBLinkType 的成員有 FromLFBID,F(xiàn)romPortGroup,F(xiàn)romPortIndex, ToLFBID,ToPortGroup 和 ToPortlndex。結(jié)合步驟(2),為了描述有向連線的狀態(tài):新增和刪除,我們?cè)黾恿艘粋€(gè)I字節(jié)的額外字段status,因此我們定義拓?fù)渑渲孟⒅械挠邢蜻B接如下:
Struct LFBSelectorType{
Uint32 ClassID ;
Uint32 InstanceID ;
};
Struct newLFBLinkType{
Uint8 status;
LFBSelectorType FromLFBID ;
String FromPortGroup;
Uint32 FromPortIndex;
Uint32 ToLFBID;
String ToPortGroup;
Uint32 ToPortlndex;
};
由于FromPortGroup和ToPortGroup仍為可變長(zhǎng),所以也釆用FULLDATA的方式進(jìn)行描述。現(xiàn)可得出,拓?fù)湫畔⒌腡LV封裝形式如下:
FULLDATA-TLV: Type=FULLDATA, Iength=Iength1+1ength2+. +Iengthn
FULLDATA-TLV: Type=FULLDATA,Iengthl=IengthOf (newLFBLinkType) //有向
連線I
ValueOf (status),
ValueOf(ClassID),
ValueOf(InstanceID),
FULLDATA-TLV: Type=FULLDATA,Iength=IengthOf(FromPortGroup),valueof(FromPortGroup),
ValueOf (FromPortIndex),
ValueOf(ClassID),
ValueOf(InstanceID),
FULLDATA-TLV: Type=FULLDATA , Iength=IengthOf (ToPortGroup),valueof(ToPortGroup),
ValueOf (ToPortln·dex),
4-Bytes-align-padding FULLDATA-TLV: Type=FULLDATA,Iength2=lengthOf (newLFBLinkType) // 有向
連線2
FULLDATA-TLV: Type=FULLDATA,Iengthn=IengthOf (newLFBLinkType) //有向
連線n4-Bytes-align-padding
雖然通過實(shí)施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法,其特征在于包括如下步驟: 步驟(I)轉(zhuǎn)發(fā)與控制分離系統(tǒng)內(nèi)的控制件和轉(zhuǎn)發(fā)件都維護(hù)了一個(gè)拓?fù)湫畔?,該拓?fù)湫畔焓且唤M有向連線的集合,該有向連線的起點(diǎn)和終點(diǎn)都是邏輯功能塊; 步驟(2)控制件向轉(zhuǎn)發(fā)件發(fā)送邏輯功能塊的屬性的配置消息,該配置消息中僅包含拓?fù)湫畔ⅲ龅耐負(fù)湫畔椴襟E(I)中拓?fù)湫畔炀S護(hù)過程中的變化部分; 步驟(3)轉(zhuǎn)發(fā)件對(duì)步驟(2)所述的拓?fù)湫畔⑦M(jìn)行合法性驗(yàn)證,如果驗(yàn)證成功進(jìn)入步驟(4),否則將進(jìn)入步驟(6); 步驟(4)轉(zhuǎn)發(fā)件根據(jù)收到的拓?fù)湫畔ⅲ峦負(fù)?,如果新拓?fù)渖С晒t進(jìn)入步驟(5),否則將進(jìn)入步驟(6); 步驟(5)轉(zhuǎn)發(fā)件更新自己的拓?fù)湫畔?,并生成操作成功的?yīng)答消息,然后將該應(yīng)答消息反饋給控制件; 步驟(6)轉(zhuǎn)發(fā)件生成操作失敗的應(yīng)答消息,反饋給控制件; 步驟(7)控制件根據(jù)收到的應(yīng)答消息所包含的內(nèi)容,來決定是否更新自己的拓?fù)湫畔?,如果收到的?yīng)答消息為成功,則更新拓?fù)湫畔?,否則回滾拓?fù)湫畔欤? 所述的步驟(2)中邏輯功能塊的屬性的配置消息和拓?fù)湫畔⒌臉?gòu)造過程具體包含如下步驟: 2-1.將步驟⑵中所述拓?fù)湫畔⒅械拿恳粭l有向連線,分成兩種情況:新增和刪除;在已規(guī)定的有向連線組成元素(如:源邏輯功能塊類號(hào)、源邏輯功能塊實(shí)例號(hào)、源邏輯功能塊端口組名等)前增加一個(gè)I字節(jié)的狀態(tài)字段,該狀態(tài)字段等于I表示新增、等于2表示刪除;每一條增加狀態(tài)字段后的有向連線都以TLV (類型-> 長(zhǎng)度-> 值)的方式進(jìn)行封裝,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線組成元素的堆疊; 2-2.拓?fù)湫畔⒁訲LV的方式封裝在配置消息中,其中T為堆疊方式(FULLDATA),L為4字節(jié)對(duì)齊的、以字節(jié)為單位計(jì)數(shù)的V的長(zhǎng)度,V是增加狀態(tài)字段后的有向連線TLV的堆疊; 所述步驟(3)中拓?fù)湫畔⒌暮戏ㄐ则?yàn)證過程具體包含如下步驟: 3-1.轉(zhuǎn)發(fā)件根據(jù)新收到的拓?fù)湫畔?,反向推?dǎo)出該拓?fù)湫畔⑺倪壿嫻δ軌K,如果這些邏輯功能塊全部被轉(zhuǎn)發(fā)件的能力所允許,則進(jìn)入步驟3-2,否則直接返回失??; 3-2.轉(zhuǎn)發(fā)件針對(duì)新收到的拓?fù)湫畔⒅械拿恳粭l有向連線,判斷每一條有向連線是否符合轉(zhuǎn)發(fā)件的約定,只有在全都符合約定的情況下才能返回成功,否則返回失??; 所述的有向連線的起點(diǎn)為源邏輯功能塊,終點(diǎn)為目標(biāo)邏輯功能塊;該有向連線表示的是從源邏輯功能塊的輸出到目標(biāo)邏輯功能塊的輸入; 所述轉(zhuǎn)發(fā)件的約定為源邏輯功能塊輸出與目標(biāo)邏輯功能塊輸入的可連接性。
全文摘要
本發(fā)明所公開的一種邏輯功能塊動(dòng)態(tài)拓?fù)涞膶?shí)現(xiàn)方法。本發(fā)明中轉(zhuǎn)發(fā)與控制分離系統(tǒng)內(nèi)的控制件和轉(zhuǎn)發(fā)件都維護(hù)了一個(gè)拓?fù)湫畔?,該拓?fù)湫畔焓且唤M有向連線的集合,該有向連線的起點(diǎn)和終點(diǎn)都是邏輯功能塊;控制件通過向轉(zhuǎn)發(fā)件發(fā)送邏輯功能塊屬性配置的ForCES消息,實(shí)現(xiàn)ForCES系統(tǒng)中轉(zhuǎn)發(fā)件功能的重構(gòu)和重組;轉(zhuǎn)發(fā)件對(duì)拓?fù)湫畔⑦M(jìn)行合法性驗(yàn)證來確定是否更新自己的拓?fù)湫畔?;本發(fā)明給出了邏輯功能塊拓?fù)渑渲玫牧鞒?。本發(fā)明的拓?fù)浔硎臼趾?jiǎn)單,以堆疊的方式在ForCES消息中存放有向連接;拓?fù)涓轮行畔⒘孔钚』?,在拓?fù)溆邢蜻B線的描述中雖然增加了1個(gè)字節(jié)的狀態(tài)字段的開銷,但是卻避免了在拓?fù)涓孪⒅邪l(fā)送整個(gè)拓?fù)湫畔臁?br>
文檔編號(hào)H04L12/751GK103078802SQ20131000643
公開日2013年5月1日 申請(qǐng)日期2013年1月7日 優(yōu)先權(quán)日2013年1月7日
發(fā)明者高明, 王偉明, 李傳煌, 諸葛斌, 董黎剛, 肖邦志 申請(qǐng)人:浙江工商大學(xué)