吳世嘉,朱學永
(解放軍電子工程學院 網絡管理中心,安徽 合肥230037)
主動網絡的概念最初由美國國防部高級研究計劃署(DARPA)于1995年討論網絡系統未來發展方向時提出。針對當時網絡體系結構中存在的一些問題(如較難吸收新業務和新規范、各層協議的冗余操作造成的網絡性能下降等),主動網絡提供了一種開發平臺,在此平臺上可方便快速地開發和運行新業務,試驗新的網絡體系結構[1]。
主動網絡有兩個含義:一是被稱為主動節點的網絡中間節點(如路由器、交換機)不僅完成存儲轉發等網絡級的功能,而且可以對包含數據和代碼的所謂主動包和普通包進行計算。具有計算能力的網絡節點從網絡設備接收數據包后執行相應的程序,對該數據包進行處理(如路由選擇、數據合并、數據解包等),然后將數據發送給其他網絡節點。二是用戶根據網絡應用和服務的要求可以對網絡進行編程以完成這些計算。
Bowman構架于主機操作系統的上層。主機操作系統提供了底層機制,如內存管理、線程創建和調用、同步原語調用和I/O設備訪問等[2];Bowman提供了傳遞信息的抽象通道(Channels)、流程計算(A-flow Computation)、狀態存儲(Sate-store Memory)以及為了增加功能而提供的擴充機制。CANEs執行環境在Bowman之上,通過在特定的插槽上運行代碼定制程序,并通過它為主動服務提供合成框架。
Bowman提供了3種基本功能支持主動網絡:通道、流程計算、狀態存儲。除此之外,Bowman還提供了一種與傳統操作系統中的可裝載模塊類似的擴展功能,使Bowman節點的其他組成部分能實時動態加載[3]。
(1)通道。Channels是由Bowman提供的通信資源,通過可擴展協議發送、接收數據包。Bowman向執行環境EE提供一系列函數,使用戶能在通道上創建、終止、查詢和通信,在各種不同的配置下實現傳統協議(TCP、UDP、IP等)。此外,Bowman的通道還包括其他數據包處理形式,如壓縮、正向糾錯法。
(2)流程計算。A-flow是Bowman用于計算的主要概念,它封裝了包處理上下文和用戶狀態。每個流程至少包含一個線程,并由某個用戶執行。Bowman的流程允許用戶根據需要同時激活多個線程。
(3)狀態存儲。Sate-store為流程提供存儲和檢索狀態的機制。這些狀態由唯一的關鍵字索引。用隱含的狀態存儲機制,Bowman提供注冊接口創建存儲狀態,在流程之間不需要傳送程序變量即能實現數據共享。
Bowman的包輸入/輸出處理過程如圖1所示。首先,對物理接口上接收到的數據包進行分類并確定相應的包處理信道,輸入數據包分流到特定信道并接收信道定制的處理。一旦完成信道輸入數據包,數據包即到達了與抽象鏈路相連的信道。然后,對數據包進行第二次分類處理:A-flow處理、直通轉發或信道間轉發。

CANEs執行環境以Bowman節點操作系統為執行平臺,其執行環境的插槽處理模型由固定部分和可變部分兩部分組成。固定部分為隱含程序,對數據包進行統一處理;可變部分為嵌入式程序,實現數據包上用戶定制的功能。隱含程序中執行嵌入程序的特定點稱為插槽(Slot)。
CANE中業務的定制分兩步完成。首先從主動節點中選取一段提供基本業務的隱含程序,其次選取嵌入式程序定制隱含程序。其中,嵌入式程序可直接從主動節點中獲得或從遠端服務器上載入。每個定制程序的執行需要一個或多個插槽。
CANEs依次有序地向主動節點發送一系列信令文件,主動節點收到這些文件后,建立Bowman下的抽象通道(Channels)和抽象拓撲(Topology),并生成相應的路由表,完成代碼調用和相關計算。
相應的ALP(Abstract Link Protocol)信令文件默認發送到TCP端口9998,Bowman專門創建一個監聽線程,根據收到的ALP文件創建或者銷毀Channels,并賦予其一定的屬性。ALP信息的語法描述如下:

抽象拓撲在物理拓撲的基礎上實現用戶定制的網絡互聯,其類似于虛擬專用網(VPN),疊加于網絡之上,每個節點都有一系列特定的屬性。ATP(Abstract Topology Protocol)信令文件默認發送到 TCP端口 9999,它把屬于不同抽象拓撲的鏈路進行分類,其語法描述如下:

Bowman提供了一個靜態單播路由協議,URT(Unicast Routing Table)配置文件默認發送到 TCP端口9990,然后采用最短路徑算法在抽象拓撲上的每一個Bowman節點上生成一個路由表。URT文件的語法結構描述如下:

CANEs信令消息CUI(CANEs User Interface)由計算和通信兩部分組成。其中,通信部分定義一系列包分類器(Packet Classifier),可以匹配數據包頭中任意數量的域,以最長匹配原則把收到的不同的數據包進行分類,并送入相應的flows中。例如:

表示網絡硬件接口將收到的所有源端口為124的UDP報文送入到該包過濾器所對應的用戶flows中。

在Bowman節點操作系統上運行CANEs執行環境的主動節點處理過程如圖2所示。用戶flows包括一個隱含程序(U)和一系列定制程序(A、B和C)。在基于Bowman操作系統的CANEs線程實現中,CANEs EE啟動控制A-flow,控制A-flow包含處理信令消息的線程。每個用戶的計算在各自的A-flow中完成,并可啟動多個共享同一地址空間的獨立線程。
CANEs信令消息由計算部分和通信兩部分組成。其中,計算部分定義了一張直觀無環圖(DAG)。DAG的根為一隱含程序,每個子節點對應于一個嵌入式程序,該嵌入式程序捆綁在其父節點的插槽上。DAG中的弧定義了子節點所捆綁的插槽,CANEs EE根據節點提供信息,獲取執行計算DAC所需要的代碼。CUI消息的通信部分為用戶定義了一系列路由策略,用戶可進一步定義包分類規則,選擇A-flow處理的輸入數據包。通信部分為計算部分的輸入輸出信道的建立提供了足夠的信息[4]。
當隱含程序動態載入時,執行缺省的進入函數“-entry”,進入函數使隱含程序輸出的插槽公共化。嵌入式程序在系統解析信令消息的計算部分時綁定插槽,激活插槽類似于激活某一特定事件,嵌入式程序是特定事件的處理程序,當事件被激活時并發執行嵌入式程序。
服務的合成在一定意義上就是應用程序的部署,而主動應用程序要通過分發機制到達主動節點,目前所采用的方式是帶外方法、帶內方法和兩者相結合的方法。
帶外方法是將程序注入網絡節點的過程與數據包在網絡節點處理的過程割離,即先向網絡節點發送將要運行的程序,然后發送數據包,網絡節點則運行已經收到的程序從而對該數據進行處理。
帶內方法是把程序與數據包捆綁在一起發送,首先將用戶數據和用來處理數據的程序打包,形成膠囊。當網絡中的主動節點收到膠囊時,首先對膠囊進行解封,然后用膠囊中的程序在臨時執行環境中處理膠囊中的數據[5]。
CANEs屬于帶外處理方式。即先產生由客戶向主動節點發送帶有配置信息的信令文件,主動節點根據信令的內容去查找所需要的主動代碼,如果本地不存在,就從代碼服務器上下載。這一平臺所采用的服務合成方式是固定程序與嵌入程序相結合的方式。也就是說執行環境提供一個對于大多數應用都適宜的固定程序段不變,每次相對于不同的應用,可以加入不同的嵌入程序來滿足不同的需要。這種服務合成方式可以用圖3來表示。

從圖中可以看出,gff是固定部分,而 ip_lookup、fixaddr和spm_ppp是它的嵌入部分。同時,把spm_ppp作為固定部分時,rm_cache和init_cache又是它的嵌入部分。CANEs將gff提供的4個插槽作為應用接口,而對于圖中這一應用,只使用了4個插槽中的3個,它們的組合可以理解為:
(1)通過數據包查找到目的地址;
(2)固定這一地址,發送數據包,以免數據包在被處理時遭到破壞;
(3)對數據分組進行處理。
同時,程序模塊也包含插槽,這樣就可以進一步擴展來實現其他的特殊功能。
以軟件包中主動應用Atraceroute為例,測試所得的結果如圖4所示。大致經歷以下步驟:(1)啟動Bowman,在相應端口監聽信令文件;(2)根據ALP信息創建了2個通道;(3)根據ATP信息構建了一個抽象拓撲;(3)根據URT信令文件建立路由表;(4)由 CUI的配置信息,啟動了一個flow,并查找所需要的主動代碼,最后匹配相應的通道。

本文介紹了主動網絡的一種實現方案——Bowman OS和CANEs EE系統,其中CANEs EE基于 Bowman OS,由后者提供執行環境。Bowman OS為創建虛擬網的抽象拓撲提供了系統支持,并實現了通道、流和狀態存儲等基本功能。CANEs的固定部分(駐留在節點上的低層支持程序)對每個分組進行一致處理,而通過分組注入網絡的可變部分,是反映用戶定義功能的代碼,兩者之間通過插槽(slot)模型結合在一起構成復合業務[6]。Bowman OS和CANEs EE實現了主動網絡體系結構中的關鍵技術,為標準化和實現主動網絡體系結構提供了參考。
[1]姚曉艷,劉偉.主動網絡技術研究綜述[J].電腦知識與技術,2009(24):6889-6891.
[2]王珊,倪瑾,唐菀.主動網絡中節點操作系統的研究[J].計算機與現代化,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]劉雅琴,俞時權.主動網絡的應用及具體實現:Bowman和 CANEs[J].計算機工程,2002,28(4):157-158,231.