吳世嘉,朱學(xué)永
(解放軍電子工程學(xué)院 網(wǎng)絡(luò)管理中心,安徽 合肥230037)
主動網(wǎng)絡(luò)的概念最初由美國國防部高級研究計劃署(DARPA)于1995年討論網(wǎng)絡(luò)系統(tǒng)未來發(fā)展方向時提出。針對當(dāng)時網(wǎng)絡(luò)體系結(jié)構(gòu)中存在的一些問題(如較難吸收新業(yè)務(wù)和新規(guī)范、各層協(xié)議的冗余操作造成的網(wǎng)絡(luò)性能下降等),主動網(wǎng)絡(luò)提供了一種開發(fā)平臺,在此平臺上可方便快速地開發(fā)和運行新業(yè)務(wù),試驗新的網(wǎng)絡(luò)體系結(jié)構(gòu)[1]。
主動網(wǎng)絡(luò)有兩個含義:一是被稱為主動節(jié)點的網(wǎng)絡(luò)中間節(jié)點(如路由器、交換機(jī))不僅完成存儲轉(zhuǎn)發(fā)等網(wǎng)絡(luò)級的功能,而且可以對包含數(shù)據(jù)和代碼的所謂主動包和普通包進(jìn)行計算。具有計算能力的網(wǎng)絡(luò)節(jié)點從網(wǎng)絡(luò)設(shè)備接收數(shù)據(jù)包后執(zhí)行相應(yīng)的程序,對該數(shù)據(jù)包進(jìn)行處理(如路由選擇、數(shù)據(jù)合并、數(shù)據(jù)解包等),然后將數(shù)據(jù)發(fā)送給其他網(wǎng)絡(luò)節(jié)點。二是用戶根據(jù)網(wǎng)絡(luò)應(yīng)用和服務(wù)的要求可以對網(wǎng)絡(luò)進(jìn)行編程以完成這些計算。
Bowman構(gòu)架于主機(jī)操作系統(tǒng)的上層。主機(jī)操作系統(tǒng)提供了底層機(jī)制,如內(nèi)存管理、線程創(chuàng)建和調(diào)用、同步原語調(diào)用和I/O設(shè)備訪問等[2];Bowman提供了傳遞信息的抽象通道(Channels)、流程計算(A-flow Computation)、狀態(tài)存儲(Sate-store Memory)以及為了增加功能而提供的擴(kuò)充機(jī)制。CANEs執(zhí)行環(huán)境在Bowman之上,通過在特定的插槽上運行代碼定制程序,并通過它為主動服務(wù)提供合成框架。
Bowman提供了3種基本功能支持主動網(wǎng)絡(luò):通道、流程計算、狀態(tài)存儲。除此之外,Bowman還提供了一種與傳統(tǒng)操作系統(tǒng)中的可裝載模塊類似的擴(kuò)展功能,使Bowman節(jié)點的其他組成部分能實時動態(tài)加載[3]。
(1)通道。Channels是由Bowman提供的通信資源,通過可擴(kuò)展協(xié)議發(fā)送、接收數(shù)據(jù)包。Bowman向執(zhí)行環(huán)境EE提供一系列函數(shù),使用戶能在通道上創(chuàng)建、終止、查詢和通信,在各種不同的配置下實現(xiàn)傳統(tǒng)協(xié)議(TCP、UDP、IP等)。此外,Bowman的通道還包括其他數(shù)據(jù)包處理形式,如壓縮、正向糾錯法。
(2)流程計算。A-flow是Bowman用于計算的主要概念,它封裝了包處理上下文和用戶狀態(tài)。每個流程至少包含一個線程,并由某個用戶執(zhí)行。Bowman的流程允許用戶根據(jù)需要同時激活多個線程。
(3)狀態(tài)存儲。Sate-store為流程提供存儲和檢索狀態(tài)的機(jī)制。這些狀態(tài)由唯一的關(guān)鍵字索引。用隱含的狀態(tài)存儲機(jī)制,Bowman提供注冊接口創(chuàng)建存儲狀態(tài),在流程之間不需要傳送程序變量即能實現(xiàn)數(shù)據(jù)共享。
Bowman的包輸入/輸出處理過程如圖1所示。首先,對物理接口上接收到的數(shù)據(jù)包進(jìn)行分類并確定相應(yīng)的包處理信道,輸入數(shù)據(jù)包分流到特定信道并接收信道定制的處理。一旦完成信道輸入數(shù)據(jù)包,數(shù)據(jù)包即到達(dá)了與抽象鏈路相連的信道。然后,對數(shù)據(jù)包進(jìn)行第二次分類處理:A-flow處理、直通轉(zhuǎn)發(fā)或信道間轉(zhuǎn)發(fā)。
CANEs執(zhí)行環(huán)境以Bowman節(jié)點操作系統(tǒng)為執(zhí)行平臺,其執(zhí)行環(huán)境的插槽處理模型由固定部分和可變部分兩部分組成。固定部分為隱含程序,對數(shù)據(jù)包進(jìn)行統(tǒng)一處理;可變部分為嵌入式程序,實現(xiàn)數(shù)據(jù)包上用戶定制的功能。隱含程序中執(zhí)行嵌入程序的特定點稱為插槽(Slot)。
CANE中業(yè)務(wù)的定制分兩步完成。首先從主動節(jié)點中選取一段提供基本業(yè)務(wù)的隱含程序,其次選取嵌入式程序定制隱含程序。其中,嵌入式程序可直接從主動節(jié)點中獲得或從遠(yuǎn)端服務(wù)器上載入。每個定制程序的執(zhí)行需要一個或多個插槽。
CANEs依次有序地向主動節(jié)點發(fā)送一系列信令文件,主動節(jié)點收到這些文件后,建立Bowman下的抽象通道(Channels)和抽象拓?fù)?Topology),并生成相應(yīng)的路由表,完成代碼調(diào)用和相關(guān)計算。
相應(yīng)的ALP(Abstract Link Protocol)信令文件默認(rèn)發(fā)送到TCP端口9998,Bowman專門創(chuàng)建一個監(jiān)聽線程,根據(jù)收到的ALP文件創(chuàng)建或者銷毀Channels,并賦予其一定的屬性。ALP信息的語法描述如下:
抽象拓?fù)湓谖锢硗負(fù)涞幕A(chǔ)上實現(xiàn)用戶定制的網(wǎng)絡(luò)互聯(lián),其類似于虛擬專用網(wǎng)(VPN),疊加于網(wǎng)絡(luò)之上,每個節(jié)點都有一系列特定的屬性。ATP(Abstract Topology Protocol)信令文件默認(rèn)發(fā)送到 TCP端口 9999,它把屬于不同抽象拓?fù)涞逆溌愤M(jìn)行分類,其語法描述如下:
Bowman提供了一個靜態(tài)單播路由協(xié)議,URT(Unicast Routing Table)配置文件默認(rèn)發(fā)送到 TCP端口9990,然后采用最短路徑算法在抽象拓?fù)渖系拿恳粋€Bowman節(jié)點上生成一個路由表。URT文件的語法結(jié)構(gòu)描述如下:
CANEs信令消息CUI(CANEs User Interface)由計算和通信兩部分組成。其中,通信部分定義一系列包分類器(Packet Classifier),可以匹配數(shù)據(jù)包頭中任意數(shù)量的域,以最長匹配原則把收到的不同的數(shù)據(jù)包進(jìn)行分類,并送入相應(yīng)的flows中。例如:
表示網(wǎng)絡(luò)硬件接口將收到的所有源端口為124的UDP報文送入到該包過濾器所對應(yīng)的用戶flows中。
在Bowman節(jié)點操作系統(tǒng)上運行CANEs執(zhí)行環(huán)境的主動節(jié)點處理過程如圖2所示。用戶flows包括一個隱含程序(U)和一系列定制程序(A、B和C)。在基于Bowman操作系統(tǒng)的CANEs線程實現(xiàn)中,CANEs EE啟動控制A-flow,控制A-flow包含處理信令消息的線程。每個用戶的計算在各自的A-flow中完成,并可啟動多個共享同一地址空間的獨立線程。
CANEs信令消息由計算部分和通信兩部分組成。其中,計算部分定義了一張直觀無環(huán)圖(DAG)。DAG的根為一隱含程序,每個子節(jié)點對應(yīng)于一個嵌入式程序,該嵌入式程序捆綁在其父節(jié)點的插槽上。DAG中的弧定義了子節(jié)點所捆綁的插槽,CANEs EE根據(jù)節(jié)點提供信息,獲取執(zhí)行計算DAC所需要的代碼。CUI消息的通信部分為用戶定義了一系列路由策略,用戶可進(jìn)一步定義包分類規(guī)則,選擇A-flow處理的輸入數(shù)據(jù)包。通信部分為計算部分的輸入輸出信道的建立提供了足夠的信息[4]。
當(dāng)隱含程序動態(tài)載入時,執(zhí)行缺省的進(jìn)入函數(shù)“-entry”,進(jìn)入函數(shù)使隱含程序輸出的插槽公共化。嵌入式程序在系統(tǒng)解析信令消息的計算部分時綁定插槽,激活插槽類似于激活某一特定事件,嵌入式程序是特定事件的處理程序,當(dāng)事件被激活時并發(fā)執(zhí)行嵌入式程序。
服務(wù)的合成在一定意義上就是應(yīng)用程序的部署,而主動應(yīng)用程序要通過分發(fā)機(jī)制到達(dá)主動節(jié)點,目前所采用的方式是帶外方法、帶內(nèi)方法和兩者相結(jié)合的方法。
帶外方法是將程序注入網(wǎng)絡(luò)節(jié)點的過程與數(shù)據(jù)包在網(wǎng)絡(luò)節(jié)點處理的過程割離,即先向網(wǎng)絡(luò)節(jié)點發(fā)送將要運行的程序,然后發(fā)送數(shù)據(jù)包,網(wǎng)絡(luò)節(jié)點則運行已經(jīng)收到的程序從而對該數(shù)據(jù)進(jìn)行處理。
帶內(nèi)方法是把程序與數(shù)據(jù)包捆綁在一起發(fā)送,首先將用戶數(shù)據(jù)和用來處理數(shù)據(jù)的程序打包,形成膠囊。當(dāng)網(wǎng)絡(luò)中的主動節(jié)點收到膠囊時,首先對膠囊進(jìn)行解封,然后用膠囊中的程序在臨時執(zhí)行環(huán)境中處理膠囊中的數(shù)據(jù)[5]。
CANEs屬于帶外處理方式。即先產(chǎn)生由客戶向主動節(jié)點發(fā)送帶有配置信息的信令文件,主動節(jié)點根據(jù)信令的內(nèi)容去查找所需要的主動代碼,如果本地不存在,就從代碼服務(wù)器上下載。這一平臺所采用的服務(wù)合成方式是固定程序與嵌入程序相結(jié)合的方式。也就是說執(zhí)行環(huán)境提供一個對于大多數(shù)應(yīng)用都適宜的固定程序段不變,每次相對于不同的應(yīng)用,可以加入不同的嵌入程序來滿足不同的需要。這種服務(wù)合成方式可以用圖3來表示。
從圖中可以看出,gff是固定部分,而 ip_lookup、fixaddr和spm_ppp是它的嵌入部分。同時,把spm_ppp作為固定部分時,rm_cache和init_cache又是它的嵌入部分。CANEs將gff提供的4個插槽作為應(yīng)用接口,而對于圖中這一應(yīng)用,只使用了4個插槽中的3個,它們的組合可以理解為:
(1)通過數(shù)據(jù)包查找到目的地址;
(2)固定這一地址,發(fā)送數(shù)據(jù)包,以免數(shù)據(jù)包在被處理時遭到破壞;
(3)對數(shù)據(jù)分組進(jìn)行處理。
同時,程序模塊也包含插槽,這樣就可以進(jìn)一步擴(kuò)展來實現(xiàn)其他的特殊功能。
以軟件包中主動應(yīng)用Atraceroute為例,測試所得的結(jié)果如圖4所示。大致經(jīng)歷以下步驟:(1)啟動Bowman,在相應(yīng)端口監(jiān)聽信令文件;(2)根據(jù)ALP信息創(chuàng)建了2個通道;(3)根據(jù)ATP信息構(gòu)建了一個抽象拓?fù)洌?3)根據(jù)URT信令文件建立路由表;(4)由 CUI的配置信息,啟動了一個flow,并查找所需要的主動代碼,最后匹配相應(yīng)的通道。
本文介紹了主動網(wǎng)絡(luò)的一種實現(xiàn)方案——Bowman OS和CANEs EE系統(tǒng),其中CANEs EE基于 Bowman OS,由后者提供執(zhí)行環(huán)境。Bowman OS為創(chuàng)建虛擬網(wǎng)的抽象拓?fù)涮峁┝讼到y(tǒng)支持,并實現(xiàn)了通道、流和狀態(tài)存儲等基本功能。CANEs的固定部分(駐留在節(jié)點上的低層支持程序)對每個分組進(jìn)行一致處理,而通過分組注入網(wǎng)絡(luò)的可變部分,是反映用戶定義功能的代碼,兩者之間通過插槽(slot)模型結(jié)合在一起構(gòu)成復(fù)合業(yè)務(wù)[6]。Bowman OS和CANEs EE實現(xiàn)了主動網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵技術(shù),為標(biāo)準(zhǔn)化和實現(xiàn)主動網(wǎng)絡(luò)體系結(jié)構(gòu)提供了參考。
[1]姚曉艷,劉偉.主動網(wǎng)絡(luò)技術(shù)研究綜述[J].電腦知識與技術(shù),2009(24):6889-6891.
[2]王珊,倪瑾,唐菀.主動網(wǎng)絡(luò)中節(jié)點操作系統(tǒng)的研究[J].計算機(jī)與現(xiàn)代化,2009(5):99-102.
[3]MERUGU S,BHATTACHARJEE S,CHAE Y.Bowman and CANEs:implementation of an activenetwork[C].Invited paper at 37th Annual Allerton Conference.1999.9.
[4]ZEGURA E,CALVERT K,MERUGU S.Bowman:a node OS for active networks.Proceedings of IEEE Infocom.2000.3.
[5]劉雅琴,俞時權(quán).主動網(wǎng)絡(luò)的應(yīng)用及具體實現(xiàn):Bowman和 CANEs[J].計算機(jī)工程,2002,28(4):157-158,231.