高 明, 金 蓉, 王偉明, 諸葛斌, 董黎剛
(浙江工商大學 電子與信息工程學院,浙江 杭州 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ā)面由多個轉(zhuǎn)發(fā)件(Forwarding Element,F(xiàn)E)組成,主要負責數(shù)據(jù)包的快速路由查表和轉(zhuǎn)發(fā);控制面上的控制器(Control Element,CE)負責具體的路由計算、產(chǎn)生路由表并分發(fā)到各FE[3]。與之相似的是,在開放網(wǎng)絡(luò)領(lǐng)域XORP[4]構(gòu)建了一個可擴展的開放路由器平臺,該平臺功能齊全,可支持OSPF, RIP, BGP,OLSR, VRRP等協(xié)議,足以滿足三層網(wǎng)絡(luò)設(shè)備的一般性需求。XORP對第三方軟件系統(tǒng)提供了開放的接口,能夠無縫地集成到ForCES中,從而減少ForCES系統(tǒng)實現(xiàn)過程中路由協(xié)議的開發(fā)工作,這也正是ForCES開放性的重要體現(xiàn)。與ForCES邏輯功能塊(Logical Function Block,LFB)[5]思想類似,Click[6]根據(jù)數(shù)據(jù)包在路由器中受路由器各功能模塊作用而引起的包內(nèi)容或傳輸方向變化,從而對路由器功能實施抽象,將各功能抽象成獨立的組件,Click的最大特點是體系結(jié)構(gòu)模塊化、高度靈活,但并沒有涉及對路由協(xié)議如何實現(xiàn)。研究后發(fā)現(xiàn),轉(zhuǎn)發(fā)和控制的分離,在下一代網(wǎng)絡(luò)設(shè)備的體系結(jié)構(gòu)設(shè)計和網(wǎng)絡(luò)管理中將是一種常態(tài),因此在ForCES框架下研究路由協(xié)議棧的實現(xiàn)問題有著重要的現(xiàn)實意義。
目前IETF ForCES工作已經(jīng)完成了框架(Framework)、需求(Requirement)、協(xié)議(Specification)、FE模型(FE Model)的標準制定工作[7-10],相關(guān)研究機構(gòu)也推出了集成了ForCES技術(shù)的中間件軟件[11],即ForCES中間件。ForCES中間件主要實現(xiàn)了:① ForCES協(xié)議所需完成的ForCES協(xié)議數(shù)據(jù)包的封裝、解封裝和相關(guān)的邏輯關(guān)系;② FE上相關(guān)LFB的注冊及其屬性管理,LFB事件的訂閱與上報;③ CE上LFB及其屬性信息的存儲與管理,解析用戶操作管理層來的用戶操作命令。ForCES中間件的出現(xiàn)給ForCES架構(gòu)的網(wǎng)絡(luò)設(shè)備的開發(fā)與實現(xiàn)帶來了極大的方便,然而現(xiàn)實的問題是ForCES系統(tǒng)中,與轉(zhuǎn)發(fā)面分離后的控制面如何和外界進行路由信息的交互,以及如何實現(xiàn)多FE間路由協(xié)調(diào)。
ForCES系統(tǒng)開放性的一個重要體現(xiàn)表現(xiàn)為CE和FE間的信息交換是根據(jù)ForCES協(xié)議標準進行的。ForCES協(xié)議規(guī)定了CE和FE間交互的兩種消息:控制消息和重定向消息??刂葡⑹前珻E對FE控制管理內(nèi)容的消息,例如屬性的配置和查詢消息,能力和事件的上報消息[12]。重定向消息是包含CE上所處理重定向數(shù)據(jù)包的消息。從字面上理解,“重定向”數(shù)據(jù)包指的是那些不是FE產(chǎn)生的數(shù)據(jù)包,而是從外部到達FE,需要由FE“重新定向”到CE進行處理的數(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)中,采用重定向機制實現(xiàn)路由協(xié)議信息的交互如圖1所示。CE讀取LFB的屬性,添加并配置虛接口,使虛接口與FE的物理接口唯一對應(yīng),同時保證兩者間的IP地址和子網(wǎng)號完全相同。CE包含了ForCES中間件、路由轉(zhuǎn)化適配器、虛接口模塊、IP隧道和第三方路由協(xié)議軟件:① ForCES中間件實現(xiàn)了控制消息和重定向消息的處理和傳輸,F(xiàn)orCES協(xié)議所需的消息的分裝、解封裝;② 路由轉(zhuǎn)化適配器實現(xiàn)了路由條目到LFB屬性的映射和路由表的下發(fā);③ 虛接口模塊實現(xiàn)了FE上的物理接口和CE上的虛擬接口之間的映射及管理;④ IP隧道實現(xiàn)了ForCES中間件與操作系統(tǒng)內(nèi)核間的通信;⑤ 第三方路由協(xié)議軟件執(zhí)行路由算法并計算路由;
ForCES系統(tǒng)中路由協(xié)議信息的接收過程是由外部路由器中的路由協(xié)議軟件(如OSPF等)發(fā)起的,包含了路由協(xié)議信息的IP包通過FE的物理接口進入ForCES系統(tǒng),具體包含如下步驟:
(1) FE在IP包頭部之前添加元數(shù)據(jù),元數(shù)據(jù)由FE ID、物理接口ID和長度字段組成,長度字段表示元數(shù)據(jù)的長度,每個FE ID和物理接口ID的組合唯一地確定一個虛接口;
(2) FE中的ForCES中間件按照ForCES重定向消息的封裝格式,對步驟1所述的含有元數(shù)據(jù)的數(shù)據(jù)塊進行封裝,在數(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包的頭部之前,然后進入IP隧道;
(4) IP隧道中在步驟2-3所述的包含虛接口名的數(shù)據(jù)塊的頭部之前添加隧道IP頭,發(fā)向IP隧道的對端;目的IP地址為第三方路由協(xié)議軟件所在主機的IP地址;
(5) IP隧道的對端將剝?nèi)ニ淼繧P頭,將包含虛接口名的數(shù)據(jù)塊交付與虛接口模塊;
(6) 虛接口模塊從數(shù)據(jù)塊頭部剝?nèi)ヌ摻涌诿?,得到步驟1所述的IP包,之后再剝?nèi)P包的頭部,根據(jù)虛接口名將IP包中所包含的路由協(xié)議信息放入虛接口的接收隊列;
(7)第三方路由協(xié)議軟件從虛接口的接收隊列中讀取路由協(xié)議信息。
CE中的第三方路由協(xié)議軟件根據(jù)所獲得的路由協(xié)議信息,執(zhí)行算法計算并生成路由表。ForCES系統(tǒng)中路由協(xié)議信息的發(fā)送過程,由控制件中的第三方路由協(xié)議軟件主動發(fā)起,目的地是外部路由器,其過程是上述過程的逆過程。
圖1中,F(xiàn)orCES系統(tǒng)內(nèi)的路由協(xié)議棧在運行的過程中,需要處理兩種消息:控制消息和重定向消息。當路由協(xié)議棧和外部的路由器進行路由協(xié)議交互時,使用重定向消息通道,而當ForCES內(nèi)的路由協(xié)議棧將產(chǎn)生的路由同步到各FE時,則使用控制消息通道。
在各種路由系統(tǒng)中,路由表的組織形式各不相同,分為兩大類[13-15],所包含信息各不相同:① 集成式,使用一張表存儲路由,表中每一項包含信息:目的網(wǎng)絡(luò)、掩碼、下一跳、出接口號、協(xié)議標志位、度量;② 分立式,維護兩張子表:前綴表、下一跳表,其中前綴表包含了目的網(wǎng)絡(luò)、掩碼和下一跳索引,下一跳表包含了下一跳索引、出端口ID、出端口IP、標志位、MTU、下一跳IP,兩張表之間分別通過下一跳索引彼此關(guān)聯(lián),一定程度上降低了路由表中信息的重復存儲。
通常CE上的路由協(xié)議棧采用集成式路由表,而FE采用分立式路由表,為了彌補兩者間的差異,在圖1中引入了路由轉(zhuǎn)化適配器,其詳細軟件結(jié)構(gòu)如圖2所示。路由轉(zhuǎn)化適配器將控制件中的路由表的下發(fā)過程轉(zhuǎn)化成邏輯功能塊的屬性配置操作,具體步驟:① 通過Netlink從操作系統(tǒng)的內(nèi)核空間中讀取路由表;② 將路由條目中的每一項映射為邏輯功能塊的一個屬性;每一個路由條目中都有包含一個出虛接口,通過該虛接口可以唯一地確定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實現(xiàn)與Linux內(nèi)核之間的雙向通信,讀寫內(nèi)核中的集成式路由。路由轉(zhuǎn)換器將集成式的路由條目轉(zhuǎn)換為分立式,而分立式路由操作過程會涉及到前綴表、下一跳表的修改,其中前綴表、下一跳表分別是ForCESLPM、Next Hop LFB一個屬性。ForCES路徑映射模塊計算前綴表、下一跳表所對應(yīng)的ForCES Path。Path計算中比較麻煩的是如何定位該路由應(yīng)發(fā)往的目的FE,需要從虛接口信息中提取出包含F(xiàn)E ID和物理接口ID。分立式路由分發(fā)器根據(jù)收集到的Path和兩張表的內(nèi)容,將分立式路由操作映射到ForCES LFB的屬性配置。
圖3所示實驗室擁有的ForCES實驗床,對所述重定向和路由同步機制進行測試和評估。圖中ForCES路由器的一個端口(即FE 12的Port 2)與SmartBits網(wǎng)絡(luò)測試儀中的SMB1-2端口相連。使用Tera RoutingTester測試軟件添加模擬的網(wǎng)絡(luò)拓撲,啟動SmartBits內(nèi)部的路由協(xié)議OSPF。在CE端配置路由協(xié)議棧,使得FE12的另一個端口運行OSPF路由協(xié)議。
圖3 測試環(huán)境拓撲
路由協(xié)議包在重定向通道中需進行反復地封裝和解封裝,尤其是路由規(guī)模達到一定程度后,這必然會帶來系統(tǒng)在計算時間上的額外開銷,但是這種開銷必須是適度的。圖4(a)給出了CE上路由協(xié)議軟件分別在不使用和使用重定向機制情況下的收斂時間,圖中不難發(fā)現(xiàn)當路由條目數(shù)在300以內(nèi)時,盡管后者相比較前者在收斂時間有所增加,但是十分接近,這說明重定向機制的帶來的開銷很??;然而當測試的路由規(guī)模繼續(xù)增加,后者的曲線明顯上揚,說明重定向的影響逐漸顯著,其中路由條目數(shù)為640時,前者的收斂為18 s,而后者卻高達50 s左右。
在CE上路由協(xié)議已經(jīng)完全收斂的情況下,圖4(b)給出了CE與FE之間的路由同步時間,該時間是RTA將CE上的路由下發(fā)至所有FE所需的時間,曲線表明隨著路由條目數(shù)的增加,CE-FE的同步時間也隨之增加,在不超過500條的情況下,其基本滿足線性特征,接近于一條35°的斜線,每20條路由的增量約需要8 ms的時間開銷,然而隨著路由條目數(shù)的進一步增加,受到CPU和內(nèi)存負載等影響,線性特征逐漸喪失,同步時間也快速增加。當路由規(guī)模數(shù)到達620條時,同步時間為618 ms,仍在可接受的程度之內(nèi),對整體性能沒有帶來巨大影響。
(a)CE上路由協(xié)議的收斂時間(b)路由同步時間
圖4 測試結(jié)果
在“計算機網(wǎng)絡(luò)”后續(xù)的教學活動中,積極引導學生開展下一代網(wǎng)絡(luò)相關(guān)技術(shù)的研究,既可以開拓學生的視野又可以與時俱進地保持對網(wǎng)絡(luò)未來發(fā)展的感知。論文基于已公開發(fā)布的ForCES中間件軟件,以系統(tǒng)集成的方式在ForCES系統(tǒng)中實現(xiàn)路由協(xié)議,該過程融合了“計算機網(wǎng)絡(luò)”、“操作系統(tǒng)”和“C語言”的核心知識點,能夠調(diào)動學生的積極性,可作為網(wǎng)絡(luò)工程專業(yè)高年級學生的課程設(shè)計。
[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] 徐 雷,張云勇,吳 俊,等. 云計算環(huán)境下的網(wǎng)絡(luò)技術(shù)研究[J]. 通信學報,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].杭州:浙江大學出版社,2010.
[4] Handley, Mark. XORP: An open platform for network research[J]. Computer Communication Review, 2003(33):53-57.
[5] 李傳煌,王偉明.一種可擴展的ForCES路由器LFB管理及開發(fā)模型[J].信息工程大學學報, 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機的ForCES轉(zhuǎn)發(fā)件實現(xiàn)機制研究[J].信息工程大學學報, 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]. 電信科學, 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] 陳文龍,徐明偉,楊 揚,等. 可擴展路由器FIB表分解存儲模型[J]. 計算機學報, ,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]. 計算機工程與科學, 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.