一種基于虛擬地址空間的可編程網(wǎng)絡設備管理控制方法
【技術領域】
[0001]本發(fā)明是針對基于FPGA實現(xiàn)的可編程網(wǎng)絡設備的數(shù)據(jù)平臺管理控制所提出的一種方法。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)社會中的普及,網(wǎng)絡性能的要求越來越高,現(xiàn)階段網(wǎng)絡體系的發(fā)展遇到了漸進式和Clean Slate革命性的兩條路,而目前網(wǎng)絡的構架難以滿足可擴展性,開放性,靈活性,服務質(zhì)量等各個方面的需求,各個國家、組織機構積極進行網(wǎng)絡創(chuàng)新的研究??删幊叹W(wǎng)絡設備是支持網(wǎng)絡實驗、網(wǎng)絡創(chuàng)新研究的重要手段,利用可編程網(wǎng)絡設備硬件可重構,上層軟件可編程的靈活、開放等特點,可以彌補現(xiàn)有實驗網(wǎng)絡規(guī)模龐大,技術復雜等不足。主流可編程網(wǎng)絡設備分為基于FPGA的可編程網(wǎng)絡設備和基于NP的軟件可編程網(wǎng)絡設備,相比之下,F(xiàn)PGA具有硬件可重構性,基于FPGA的硬件平臺更加靈活,適合特定的實驗進行軟硬件協(xié)同的開發(fā)。可編程網(wǎng)絡設備可控制的硬件資源主要包括配置寄存器CR,狀態(tài)寄存器SR,計數(shù)器CNT,控制表格CT等,利用這些可重構硬件資源可實現(xiàn)網(wǎng)絡設備的各種功倉泛。
[0003]基于FPGA的可編程網(wǎng)絡需要管理控制的數(shù)據(jù)平面主要包括,參考圖1:
配置寄存器CR:為了使數(shù)據(jù)平面的功能符合實驗意圖需要配置的寄存器,例如網(wǎng)絡設備工作模式,選擇寄存器等,可編程網(wǎng)絡設備通過軟件配置的CR進行設備初始化。
[0004]狀態(tài)寄存器SR:可編程網(wǎng)絡設備根據(jù)設備狀態(tài)信息對SR進行讀寫操作,控制端軟件通過讀取SR寄存器了解轉(zhuǎn)發(fā)設備端狀態(tài)、工作情況,寄存器反應數(shù)據(jù)平臺的狀態(tài)端口UP/D0WN 等。
[0005]計數(shù)器CNT:可編程網(wǎng)絡設備端硬件向CNT寫入轉(zhuǎn)發(fā)報文數(shù),錯誤報文數(shù)等統(tǒng)計數(shù)據(jù),控制端通讀取CNT,以做出決策。
[0006]控制表格CT:存儲轉(zhuǎn)發(fā)策略的各種控制表格,由軟件硬件協(xié)同商定轉(zhuǎn)發(fā)策略的長度以及表達方式,支持靈活可變長,例如轉(zhuǎn)發(fā)平臺生成的MAC轉(zhuǎn)發(fā)表,軟件配置生成的IP轉(zhuǎn)發(fā)表等。
[0007]在FPGA中實現(xiàn)訪問控制代理,根據(jù)寄存器,存儲器等資源在虛擬地址空間的映射關系,將軟件Read,Write命令轉(zhuǎn)換為FPGA中對上述資源的訪問。
[0008]現(xiàn)有的主流網(wǎng)絡設備控制協(xié)議有作為SDN的一種南向管理協(xié)議的OpenFlow協(xié)議和已提出多項RFC標準的ForCES協(xié)議。這兩種協(xié)議作為固定標準,無法支撐可編程網(wǎng)絡中軟件與硬件協(xié)商開發(fā)與修改,且實現(xiàn)復雜和靈活性不足,加大了對新協(xié)議的開發(fā)部署和添加網(wǎng)絡功能的困難。
【發(fā)明內(nèi)容】
[0009]本發(fā)明是一種在可編程網(wǎng)絡中對可編程網(wǎng)絡設備管理控制的方法,該方法充分的利用了可編程網(wǎng)絡設備管理的重要特點:硬件可重構性,軟件可編程性,軟件與硬件的邏輯可以協(xié)同設計。與ForCES和OpenFlow等協(xié)議軟件硬件獨立開發(fā)模式不同的是,本方法是軟件和硬件開發(fā)人員可共同協(xié)商的一種硬件資源抽象方法,提供可軟件訪問控制代理,將硬件可編程資源如寄存器,存儲器等以虛擬地址空間形式給軟件開發(fā)者訪問,使得控制端根據(jù)虛擬地址空間與可編程硬件進行交互,控制管理網(wǎng)絡資源。
[0010]本文以國防科學技術大學NetMagic設備為例,硬件使用可重構的FPGA作為轉(zhuǎn)發(fā)資源,而控制平面通過NMAC協(xié)議下發(fā)轉(zhuǎn)發(fā)策略給轉(zhuǎn)發(fā)平面。
[0011]一、虛擬地址空間
本專利在可編程網(wǎng)絡構架上設計出一種新的抽象硬件資源方法OpenVAS (OpenVirtual Address Space),通過軟件硬件聯(lián)合設計,把硬件平臺中所有需要合理控制的寄存器,存儲器,計數(shù)器等硬件資源統(tǒng)一映射到一個地址空間,成為“虛擬地址空間”,類似于計算機內(nèi)存抽象出的虛擬地址對于CPU控制訪問MMU (Virtual Memory Management)虛擬內(nèi)存管理。
[0012]在OpenVAS構架方法下,軟件與硬件協(xié)同設計虛擬地址空間,包括虛擬地址編址大小,每條虛擬地址映射的硬件資源地址表,軟件硬件交互通信方式,控制管理命令類型等規(guī)則。軟件通過開放的虛擬地址空間對硬件如寄存器,存儲器,計數(shù)器等資源進行管理配置。
[0013]二、OpenVAS構架以及模塊組成
為了達到控制端軟件管理FPGA網(wǎng)絡設備,其模塊設計需要以下主要功能模塊參考圖1包括以下模塊。
[0014]軟件模塊:
(I)可編程網(wǎng)絡設備應用管理模塊:降低網(wǎng)絡應用開發(fā)的難度,提供網(wǎng)絡應用開發(fā)人員API接口,函數(shù)注冊,實現(xiàn)管理多線程資源,對報文進行管理調(diào)度等上層應用功能。
[0015](2)設備虛擬地址訪問代理模塊:虛擬地址空間映射控制端軟件,對虛擬地址空間進行申請、釋放等,防止地址重用,提高對虛擬地址空間的使用效率,與應用管理模塊協(xié)調(diào)合理操作虛擬地址空間。
[0016](3)設備控制通信代理模塊:控制端軟件直接與可編程網(wǎng)絡設備交互的接口,軟件開發(fā)者調(diào)用設備控制代理模塊,與可編程網(wǎng)絡設備進行通信,屏蔽了與底層硬件交互,降低開發(fā)難度,同時進行報文解析,區(qū)分控制報文和數(shù)報文,報文差錯和報文序號檢驗、報文緩存等邏輯功能??墒褂肔ibpcap/Libnet庫或標準Socket通行來構架設備控制通信代理。
[0017]硬件模塊:
(I)訪問控制執(zhí)行單元模塊:硬件可編程網(wǎng)絡設備將虛擬地址空間映射實際物理空間模塊,尋址實際地址空間對硬件資源進行讀寫配置,可編程網(wǎng)絡設備硬件邏輯通過此模塊與軟件進行交互。
[0018]通過OpenVAS這種網(wǎng)絡構架,轉(zhuǎn)發(fā)設備將CR、SR、CNT、CT等映射到同一個虛擬地址空間中,對于控制端可見的是這些虛擬地址空間,控制器通過這些虛擬地址空間的Read,Write命令或函數(shù)就可以訪問到所有被管理的資源,對可編程網(wǎng)絡設備進行管理控制,硬件將控制端傳送的虛擬地址進行映射實際可編程資源的地址,提取出映射內(nèi)容,對實際硬件資源進行讀寫操作,其虛擬地址空間表達方式可參考圖1內(nèi)虛擬地址空間,其控制端的虛擬地址空間需要與可編程網(wǎng)絡設備內(nèi)的虛擬地址空間保持一致性。
[0019]為了方便軟件開發(fā)者開發(fā)網(wǎng)絡應用,控制端構架分成三層,組成如圖1控制端模塊所示。底層為設備控制通行代理,作為與可編程網(wǎng)絡設備通信的驅(qū)動;中間層為設備虛擬地址訪問代理,是整個控制端系統(tǒng)最為重要的邏輯功能模塊,起到承上啟下的作用,不僅要屏蔽硬件通信復雜流程,為上層應用開發(fā)提供各種API,還要實現(xiàn)軟件資源調(diào)度如多線程調(diào)度、虛擬地址空間控制管理等核心功能。最上層是可編程設備管理應用,軟件開發(fā)者調(diào)用設備虛擬地址訪問代理提供的API,實現(xiàn)復雜的網(wǎng)絡應用邏輯功能。
[0020]這樣的三層構架可加速網(wǎng)絡設備可提高對網(wǎng)絡應用開發(fā)的效率,降低開發(fā)難度,同時提高控制端性能穩(wěn)定性和健壯性。
[0021 ] 三、控制端應用訪問虛擬地址空間
控制端通過某種中間協(xié)議對虛擬地址空間進行讀寫操作,及對可編程轉(zhuǎn)發(fā)設備進行管理控制,以NMAC協(xié)議為例,訪問流程如圖2所示。
[0022]步驟1:上層注冊可編程網(wǎng)絡設備應用管理模塊,調(diào)用API,以目標設備ID號作為目的地址,調(diào)用虛擬地址訪問代理,對目標設備請求建立連接。
[0023]步驟2:應用調(diào)用初始化API后對設備虛擬地址訪問代理申請?zhí)摂M地址空間,虛擬地址空間得到配置寄存器CR的空間地址,和步驟I提供的目標設備ID號封裝成初始化連接報文寫入設備控制通信代理。
[0024]步驟3:設備控制通信代理發(fā)送連接報文到可編程網(wǎng)絡設備,等待連接響應報文。
[0025]步驟4:設備控制通信代理收到響應報文后表示初始化成功,通告上層應用,上層網(wǎng)絡應用即可對可編程網(wǎng)絡設備進行管理控制。
[0026]步驟5:可編程網(wǎng)絡設備向設備虛擬地址訪問代理申請CT,下發(fā)轉(zhuǎn)發(fā)策略如MAC地址表和IP地址表,將轉(zhuǎn)發(fā)策略內(nèi)容發(fā)送給設備虛擬地址訪問代理。
[0027]步驟6:設備虛擬地址訪問代理,將目標設備ID作為目標地址,將步驟5下發(fā)的轉(zhuǎn)發(fā)策略和申請到的CT的虛擬地址空間封裝報文發(fā)送給設備控制通信代理,封裝同時可選擇隨即數(shù)添加到報文內(nèi),以確定報文的唯一性。
[0028]步驟7:如果訪問控制代理收到響應報文,且收到報文內(nèi)的隨機數(shù)與步驟6發(fā)送的隨機數(shù)一樣,則一次控制端訪問某虛擬地址空間成功,且下發(fā)轉(zhuǎn)發(fā)策略成功;如果在規(guī)定時間內(nèi)沒有收到,則響應超時,可重復步驟6。
[0029]四、可編程網(wǎng)絡設備端實現(xiàn)方法
可編程網(wǎng)絡設備端可通過FPGA來實現(xiàn)硬件可重構,與軟件協(xié)同開發(fā),實現(xiàn)流程參考圖3,步驟如下:
步驟1:可編程網(wǎng)絡設備初始化,訪問控制代理模塊等待控制端下發(fā)的初始化報文。
[0030]步驟2:當控制代理模塊接收到連接請求報文,提取報文的源地址、序號等內(nèi)容,解析報文類型。