高 明, 金 蓉, 王偉明, 諸葛斌, 董黎剛
(浙江工商大學(xué) 電子與信息工程學(xué)院,浙江 杭州 310018)
隨著軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)研究的興起[1-2],轉(zhuǎn)發(fā)和控制分離(Forwarding and Control Element Separation,ForCES)技術(shù)獲得了極大的關(guān)注。ForCES路由器的數(shù)據(jù)轉(zhuǎn)發(fā)面和控制面在物理上分離,在路由處理問題上轉(zhuǎn)發(fā)面和控制面的分工十分明確,轉(zhuǎn)發(fā)面由多個(gè)轉(zhuǎn)發(fā)件(Forwarding Element,F(xiàn)E)組成,主要負(fù)責(zé)數(shù)據(jù)包的快速路由查表和轉(zhuǎn)發(fā);控制面上的控制器(Control Element,CE)負(fù)責(zé)具體的路由計(jì)算、產(chǎn)生路由表并分發(fā)到各FE[3]。與之相似的是,在開放網(wǎng)絡(luò)領(lǐng)域XORP[4]構(gòu)建了一個(gè)可擴(kuò)展的開放路由器平臺,該平臺功能齊全,可支持OSPF, RIP, BGP,OLSR, VRRP等協(xié)議,足以滿足三層網(wǎng)絡(luò)設(shè)備的一般性需求。XORP對第三方軟件系統(tǒng)提供了開放的接口,能夠無縫地集成到ForCES中,從而減少ForCES系統(tǒng)實(shí)現(xiàn)過程中路由協(xié)議的開發(fā)工作,這也正是ForCES開放性的重要體現(xiàn)。與ForCES邏輯功能塊(Logical Function Block,LFB)[5]思想類似,Click[6]根據(jù)數(shù)據(jù)包在路由器中受路由器各功能模塊作用而引起的包內(nèi)容或傳輸方向變化,從而對路由器功能實(shí)施抽象,將各功能抽象成獨(dú)立的組件,Click的最大特點(diǎn)是體系結(jié)構(gòu)模塊化、高度靈活,但并沒有涉及對路由協(xié)議如何實(shí)現(xiàn)。研究后發(fā)現(xiàn),轉(zhuǎn)發(fā)和控制的分離,在下一代網(wǎng)絡(luò)設(shè)備的體系結(jié)構(gòu)設(shè)計(jì)和網(wǎng)絡(luò)管理中將是一種常態(tài),因此在ForCES框架下研究路由協(xié)議棧的實(shí)現(xiàn)問題有著重要的現(xiàn)實(shí)意義。
目前IETF ForCES工作已經(jīng)完成了框架(Framework)、需求(Requirement)、協(xié)議(Specification)、FE模型(FE Model)的標(biāo)準(zhǔn)制定工作[7-10],相關(guān)研究機(jī)構(gòu)也推出了集成了ForCES技術(shù)的中間件軟件[11],即ForCES中間件。ForCES中間件主要實(shí)現(xiàn)了:① ForCES協(xié)議所需完成的ForCES協(xié)議數(shù)據(jù)包的封裝、解封裝和相關(guān)的邏輯關(guān)系;② FE上相關(guān)LFB的注冊及其屬性管理,LFB事件的訂閱與上報(bào);③ CE上LFB及其屬性信息的存儲與管理,解析用戶操作管理層來的用戶操作命令。ForCES中間件的出現(xiàn)給ForCES架構(gòu)的網(wǎng)絡(luò)設(shè)備的開發(fā)與實(shí)現(xiàn)帶來了極大的方便,然而現(xiàn)實(shí)的問題是ForCES系統(tǒng)中,與轉(zhuǎn)發(fā)面分離后的控制面如何和外界進(jìn)行路由信息的交互,以及如何實(shí)現(xiàn)多FE間路由協(xié)調(diào)。
ForCES系統(tǒng)開放性的一個(gè)重要體現(xiàn)表現(xiàn)為CE和FE間的信息交換是根據(jù)ForCES協(xié)議標(biāo)準(zhǔn)進(jìn)行的。ForCES協(xié)議規(guī)定了CE和FE間交互的兩種消息:控制消息和重定向消息。控制消息是包含CE對FE控制管理內(nèi)容的消息,例如屬性的配置和查詢消息,能力和事件的上報(bào)消息[12]。重定向消息是包含CE上所處理重定向數(shù)據(jù)包的消息。從字面上理解,“重定向”數(shù)據(jù)包指的是那些不是FE產(chǎn)生的數(shù)據(jù)包,而是從外部到達(dá)FE,需要由FE“重新定向”到CE進(jìn)行處理的數(shù)據(jù)包;或者是CE產(chǎn)生的,需要經(jīng)FE“重新定向”到網(wǎng)絡(luò)設(shè)備外部的數(shù)據(jù)包??赡苄枰狢E處理的數(shù)據(jù)包,主要有路由協(xié)議數(shù)據(jù)包和網(wǎng)絡(luò)管理數(shù)據(jù)包等。
ForCES系統(tǒng)中,采用重定向機(jī)制實(shí)現(xiàn)路由協(xié)議信息的交互如圖1所示。CE讀取LFB的屬性,添加并配置虛接口,使虛接口與FE的物理接口唯一對應(yīng),同時(shí)保證兩者間的IP地址和子網(wǎng)號完全相同。CE包含了ForCES中間件、路由轉(zhuǎn)化適配器、虛接口模塊、IP隧道和第三方路由協(xié)議軟件:① ForCES中間件實(shí)現(xiàn)了控制消息和重定向消息的處理和傳輸,F(xiàn)orCES協(xié)議所需的消息的分裝、解封裝;② 路由轉(zhuǎn)化適配器實(shí)現(xiàn)了路由條目到LFB屬性的映射和路由表的下發(fā);③ 虛接口模塊實(shí)現(xiàn)了FE上的物理接口和CE上的虛擬接口之間的映射及管理;④ IP隧道實(shí)現(xiàn)了ForCES中間件與操作系統(tǒng)內(nèi)核間的通信;⑤ 第三方路由協(xié)議軟件執(zhí)行路由算法并計(jì)算路由;
ForCES系統(tǒng)中路由協(xié)議信息的接收過程是由外部路由器中的路由協(xié)議軟件(如OSPF等)發(fā)起的,包含了路由協(xié)議信息的IP包通過FE的物理接口進(jìn)入ForCES系統(tǒng),具體包含如下步驟:
(1) FE在IP包頭部之前添加元數(shù)據(jù),元數(shù)據(jù)由FE ID、物理接口ID和長度字段組成,長度字段表示元數(shù)據(jù)的長度,每個(gè)FE ID和物理接口ID的組合唯一地確定一個(gè)虛接口;
(2) FE中的ForCES中間件按照ForCES重定向消息的封裝格式,對步驟1所述的含有元數(shù)據(jù)的數(shù)據(jù)塊進(jìn)行封裝,在數(shù)據(jù)塊頭部之前添加ForCES重定向消息頭,然后通過重定向通道發(fā)送至控制件;
圖1 ForCES系統(tǒng)的軟件結(jié)構(gòu)
(3) 控制件中的ForCES中間件在剝?nèi)ゲ襟E2所述的ForCES重定向消息頭之后,繼續(xù)剝?nèi)ピ獢?shù)據(jù)并從中提取FE ID和物理接口ID,查找虛接口名,將所得虛接口名添加到步驟1所述IP包的頭部之前,然后進(jìn)入IP隧道;
(4) IP隧道中在步驟2-3所述的包含虛接口名的數(shù)據(jù)塊的頭部之前添加隧道IP頭,發(fā)向IP隧道的對端;目的IP地址為第三方路由協(xié)議軟件所在主機(jī)的IP地址;
(5) IP隧道的對端將剝?nèi)ニ淼繧P頭,將包含虛接口名的數(shù)據(jù)塊交付與虛接口模塊;
(6) 虛接口模塊從數(shù)據(jù)塊頭部剝?nèi)ヌ摻涌诿?,得到步驟1所述的IP包,之后再剝?nèi)P包的頭部,根據(jù)虛接口名將IP包中所包含的路由協(xié)議信息放入虛接口的接收隊(duì)列;
(7)第三方路由協(xié)議軟件從虛接口的接收隊(duì)列中讀取路由協(xié)議信息。
CE中的第三方路由協(xié)議軟件根據(jù)所獲得的路由協(xié)議信息,執(zhí)行算法計(jì)算并生成路由表。ForCES系統(tǒng)中路由協(xié)議信息的發(fā)送過程,由控制件中的第三方路由協(xié)議軟件主動(dòng)發(fā)起,目的地是外部路由器,其過程是上述過程的逆過程。
圖1中,F(xiàn)orCES系統(tǒng)內(nèi)的路由協(xié)議棧在運(yùn)行的過程中,需要處理兩種消息:控制消息和重定向消息。當(dāng)路由協(xié)議棧和外部的路由器進(jìn)行路由協(xié)議交互時(shí),使用重定向消息通道,而當(dāng)ForCES內(nèi)的路由協(xié)議棧將產(chǎn)生的路由同步到各FE時(shí),則使用控制消息通道。
在各種路由系統(tǒng)中,路由表的組織形式各不相同,分為兩大類[13-15],所包含信息各不相同:① 集成式,使用一張表存儲路由,表中每一項(xiàng)包含信息:目的網(wǎng)絡(luò)、掩碼、下一跳、出接口號、協(xié)議標(biāo)志位、度量;② 分立式,維護(hù)兩張子表:前綴表、下一跳表,其中前綴表包含了目的網(wǎng)絡(luò)、掩碼和下一跳索引,下一跳表包含了下一跳索引、出端口ID、出端口IP、標(biāo)志位、MTU、下一跳IP,兩張表之間分別通過下一跳索引彼此關(guān)聯(lián),一定程度上降低了路由表中信息的重復(fù)存儲。
通常CE上的路由協(xié)議棧采用集成式路由表,而FE采用分立式路由表,為了彌補(bǔ)兩者間的差異,在圖1中引入了路由轉(zhuǎn)化適配器,其詳細(xì)軟件結(jié)構(gòu)如圖2所示。路由轉(zhuǎn)化適配器將控制件中的路由表的下發(fā)過程轉(zhuǎn)化成邏輯功能塊的屬性配置操作,具體步驟:① 通過Netlink從操作系統(tǒng)的內(nèi)核空間中讀取路由表;② 將路由條目中的每一項(xiàng)映射為邏輯功能塊的一個(gè)屬性;每一個(gè)路由條目中都有包含一個(gè)出虛接口,通過該虛接口可以唯一地確定FE ID和物理接口ID;③ 通過ForCES控制消息通道,發(fā)送邏輯功能塊的屬性配置消息至相應(yīng)的轉(zhuǎn)發(fā)件。
圖2 路由轉(zhuǎn)化適配器的結(jié)構(gòu)圖
如圖2所示,CE上的第三方路由協(xié)議棧所產(chǎn)生的路由存在于Linux內(nèi)核,而集成式路由訪問器通過Netlink實(shí)現(xiàn)與Linux內(nèi)核之間的雙向通信,讀寫內(nèi)核中的集成式路由。路由轉(zhuǎn)換器將集成式的路由條目轉(zhuǎn)換為分立式,而分立式路由操作過程會(huì)涉及到前綴表、下一跳表的修改,其中前綴表、下一跳表分別是ForCESLPM、Next Hop LFB一個(gè)屬性。ForCES路徑映射模塊計(jì)算前綴表、下一跳表所對應(yīng)的ForCES Path。Path計(jì)算中比較麻煩的是如何定位該路由應(yīng)發(fā)往的目的FE,需要從虛接口信息中提取出包含F(xiàn)E ID和物理接口ID。分立式路由分發(fā)器根據(jù)收集到的Path和兩張表的內(nèi)容,將分立式路由操作映射到ForCES LFB的屬性配置。
圖3所示實(shí)驗(yàn)室擁有的ForCES實(shí)驗(yàn)床,對所述重定向和路由同步機(jī)制進(jìn)行測試和評估。圖中ForCES路由器的一個(gè)端口(即FE 12的Port 2)與SmartBits網(wǎng)絡(luò)測試儀中的SMB1-2端口相連。使用Tera RoutingTester測試軟件添加模擬的網(wǎng)絡(luò)拓?fù)?,啟?dòng)SmartBits內(nèi)部的路由協(xié)議OSPF。在CE端配置路由協(xié)議棧,使得FE12的另一個(gè)端口運(yùn)行OSPF路由協(xié)議。
圖3 測試環(huán)境拓?fù)?/p>
路由協(xié)議包在重定向通道中需進(jìn)行反復(fù)地封裝和解封裝,尤其是路由規(guī)模達(dá)到一定程度后,這必然會(huì)帶來系統(tǒng)在計(jì)算時(shí)間上的額外開銷,但是這種開銷必須是適度的。圖4(a)給出了CE上路由協(xié)議軟件分別在不使用和使用重定向機(jī)制情況下的收斂時(shí)間,圖中不難發(fā)現(xiàn)當(dāng)路由條目數(shù)在300以內(nèi)時(shí),盡管后者相比較前者在收斂時(shí)間有所增加,但是十分接近,這說明重定向機(jī)制的帶來的開銷很??;然而當(dāng)測試的路由規(guī)模繼續(xù)增加,后者的曲線明顯上揚(yáng),說明重定向的影響逐漸顯著,其中路由條目數(shù)為640時(shí),前者的收斂為18 s,而后者卻高達(dá)50 s左右。
在CE上路由協(xié)議已經(jīng)完全收斂的情況下,圖4(b)給出了CE與FE之間的路由同步時(shí)間,該時(shí)間是RTA將CE上的路由下發(fā)至所有FE所需的時(shí)間,曲線表明隨著路由條目數(shù)的增加,CE-FE的同步時(shí)間也隨之增加,在不超過500條的情況下,其基本滿足線性特征,接近于一條35°的斜線,每20條路由的增量約需要8 ms的時(shí)間開銷,然而隨著路由條目數(shù)的進(jìn)一步增加,受到CPU和內(nèi)存負(fù)載等影響,線性特征逐漸喪失,同步時(shí)間也快速增加。當(dāng)路由規(guī)模數(shù)到達(dá)620條時(shí),同步時(shí)間為618 ms,仍在可接受的程度之內(nèi),對整體性能沒有帶來巨大影響。
(a)CE上路由協(xié)議的收斂時(shí)間(b)路由同步時(shí)間
圖4 測試結(jié)果
在“計(jì)算機(jī)網(wǎng)絡(luò)”后續(xù)的教學(xué)活動(dòng)中,積極引導(dǎo)學(xué)生開展下一代網(wǎng)絡(luò)相關(guān)技術(shù)的研究,既可以開拓學(xué)生的視野又可以與時(shí)俱進(jìn)地保持對網(wǎng)絡(luò)未來發(fā)展的感知。論文基于已公開發(fā)布的ForCES中間件軟件,以系統(tǒng)集成的方式在ForCES系統(tǒng)中實(shí)現(xiàn)路由協(xié)議,該過程融合了“計(jì)算機(jī)網(wǎng)絡(luò)”、“操作系統(tǒng)”和“C語言”的核心知識點(diǎn),能夠調(diào)動(dòng)學(xué)生的積極性,可作為網(wǎng)絡(luò)工程專業(yè)高年級學(xué)生的課程設(shè)計(jì)。
[1] 謝靈智. 網(wǎng)絡(luò)架構(gòu)革命:SDN與OpenFlow開始燎原[J]. 信息安全與通信保密,2012(9):36-39
Xie Lin-zhi. Network Architecture Revolution: SDN with OpenFlow start [J]. Information Security and Communications Privacy, 2012(9):36-39
[2] 徐 雷,張?jiān)朴?吳 俊,等. 云計(jì)算環(huán)境下的網(wǎng)絡(luò)技術(shù)研究[J]. 通信學(xué)報(bào),2012, 33(Z1):216-221
XU Lei, ZHANG Yun-yong, WU Jun, FANG Bing-yi. Network technology research under cloud computing environment. Journal on Communications, 2012,33(Z1):216-221.
[3] 王偉明.轉(zhuǎn)發(fā)與控制分離(ForCES)技術(shù)及應(yīng)用[M].杭州:浙江大學(xué)出版社,2010.
[4] Handley, Mark. XORP: An open platform for network research[J]. Computer Communication Review, 2003(33):53-57.
[5] 李傳煌,王偉明.一種可擴(kuò)展的ForCES路由器LFB管理及開發(fā)模型[J].信息工程大學(xué)學(xué)報(bào), 2009,10(2):262-269.
LI Chuan-huang,WANG Wei-ming. Extensible LFB Management and Development Model for ForCES Router Software[J]. Journal of Information Engineering University, 2009, 10(2):262-269.
[6] Eddie Kohler, Robert Morris, Benjie Chen, John Jan-notti, and M. FransKaashoek. The Click modular router[J].ACM Trans. on Computer Systems, 2000,18(3):263-297.
[7] H Khosravi T. Anderson. Requirements for Separation of IP Control and Forwarding[EB/OL]. http://datatracker.ietf.org/doc/rfc3654/. 2003.
[8] L Yang,R Dantu. Forwarding and Control Element Separation (ForCES) Framework[EB/OL]. http://datatracker.ietf.org/doc/rfc3746/. 2004.4.
[9] A Doria,JHadiSalim. Forwarding and Control Element Separation (ForCES) Protocol Specification[EB/OL]. http://datatracker.ietf.org/doc/rfc5810/. 2010.03.
[10] J Halpern,JHadiSalim. Forwarding and Control Element Separation (ForCES) Forwarding Element Model[EB/OL]. http://datatracker.ietf.org/doc/rfc5812/. 2010.03.
[11] 俞偉平,王 華. 基于PC機(jī)的ForCES轉(zhuǎn)發(fā)件實(shí)現(xiàn)機(jī)制研究[J].信息工程大學(xué)學(xué)報(bào), 2009,10(1):146-150.
YU Wei-ping, WANG Hua,.Implementation of ForCES Forwarding Element Based on PC. Journal of Information Engineering University, 2009, 10(1):146-150.
[12] 王偉明. 轉(zhuǎn)發(fā)與控制分離網(wǎng)絡(luò)件內(nèi)信息交換的方法[P]. 中國浙江:CN200610049576.2, 20061
[13] 孫宗鋒,肖志輝,孫 健. 基于分布式路由器的IPv4/IPv6轉(zhuǎn)發(fā)控制架構(gòu)研究[J]. 電信科學(xué), 2012,28(6):42-47,.
SUN Zong-feng, XIAO Zhi-hui, SUN Jian. Research on IPv4/IPv6 Forwarding Control Architecture in Distributed Router[J]. Telecommunications Science, 2012, 28(6):42-47.
[14] 陳文龍,徐明偉,楊 揚(yáng),等. 可擴(kuò)展路由器FIB表分解存儲模型[J]. 計(jì)算機(jī)學(xué)報(bào), ,2011,34(9):1611-1620.
CHEN Wen-Long, XU Ming-Wei, YANG Yang,etal. Decomposed Storage Model of FIB for Cluster Router[J]. Chinese Journal of Computers, 2011, 34(9):1611-1620.
[15] 譚明鋒,高 蕾,龔正虎. IP路由查找算法研究概述[J]. 計(jì)算機(jī)工程與科學(xué), 2006,28(6):77-89.
TAN Ming-feng, GAOLei, GONGZheng-hu. A Survey of IP Routing Lookup Algorithms[J]. Computer Engineering & Science, 2006, 28(6):77-89.