欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于NetFPGA的可編程路由器的制作方法

文檔序號:7869037閱讀:1007來源:國知局
專利名稱:基于NetFPGA的可編程路由器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及可編程擴(kuò)展的路由技術(shù),具體是基于NetFPGA的可編程路由器,并可高效轉(zhuǎn)發(fā)數(shù)據(jù)包。
背景技術(shù)
經(jīng)過四十多年的發(fā)展,現(xiàn)有的TPC/IP體系結(jié)構(gòu)無法適應(yīng)不斷進(jìn)步的信息通信技術(shù)與持續(xù)業(yè)務(wù)創(chuàng)新的要求,迫使人們重新研究未來互聯(lián)網(wǎng)的體系結(jié)構(gòu)及其機(jī)理。未來網(wǎng)絡(luò)研究旨在從互聯(lián)網(wǎng)基本組成、工作原理和實(shí)現(xiàn)機(jī)理方面進(jìn)行理論和方法·探索和算法設(shè)計(jì)。未來網(wǎng)絡(luò)體系結(jié)構(gòu)、協(xié)議、算法等在實(shí)際應(yīng)用前需要大量的理論分析與仿真實(shí)驗(yàn),需要在試驗(yàn)網(wǎng)絡(luò)體系結(jié)構(gòu)中進(jìn)行評估與驗(yàn)證。但由于傳統(tǒng)路由器封閉性,在現(xiàn)有互聯(lián)網(wǎng)部署與驗(yàn)證新體系結(jié)構(gòu)、新協(xié)議、算法十分困難。路由器作為網(wǎng)絡(luò)核心設(shè)備,其可編程性、可重構(gòu)性、可管理性等方面變得更加重要。可編程路由器允許用戶進(jìn)行配置或編程,在一個實(shí)際物理網(wǎng)絡(luò)上快速部署新的體系結(jié)構(gòu)與協(xié)議棧,這樣可以有效解決傳統(tǒng)路由器部署協(xié)議難的問題。其在靈活性、動態(tài)性、可擴(kuò)展性、可管理性及可編程性等方面顯示出極大的優(yōu)勢和遠(yuǎn)景??删幊搪酚善鞑粌H具有路由器轉(zhuǎn)發(fā)功能,而且具備可定制性。通過簡單的編程配置,即可運(yùn)行一種新協(xié)議,由此可對協(xié)議進(jìn)行驗(yàn)證。與傳統(tǒng)路由器類似,其包括控制平面、轉(zhuǎn)發(fā)平面,控制平面負(fù)責(zé)路由計(jì)算、路由表維護(hù)、路由管理等,轉(zhuǎn)發(fā)平面使用NetFPGA快速轉(zhuǎn)發(fā)數(shù)據(jù)包。目前,與本發(fā)明最接近的是一種可編程路由器,使用Click和XORP實(shí)現(xiàn)。XORP旨在解決商業(yè)路由器的封閉性,提供一個開放的、可擴(kuò)展的路由器軟件平臺,方便研究者部署和實(shí)現(xiàn)路由協(xié)議。Click是一個針對路由器數(shù)據(jù)平面的模塊化可編程平臺,其目的是在數(shù)據(jù)平面上實(shí)現(xiàn)靈活的功能配置和模塊的可重用性。路由器在整體實(shí)現(xiàn)上,控制平面采用XORP完成路由計(jì)算、路由表維護(hù)等功能,而Click主要完成數(shù)據(jù)平面的協(xié)議棧處理、數(shù)據(jù)包查找與轉(zhuǎn)發(fā)等功能。不足之處是,該路由器仍基于TCP/IP協(xié)議實(shí)現(xiàn),對非IP協(xié)議處理能力有限。為方便新協(xié)議的試驗(yàn),需要支持非IP協(xié)議,擺脫TCP/IP的束縛。另外,Click的實(shí)現(xiàn)方式,決定了其對數(shù)據(jù)包的轉(zhuǎn)發(fā)只是軟件層面的轉(zhuǎn)發(fā),決定了其轉(zhuǎn)發(fā)性能相對硬件形式不高。新協(xié)議的驗(yàn)證需要生產(chǎn)環(huán)境,需要相對較高的轉(zhuǎn)發(fā)性能。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的上述不足,本發(fā)明公開了一種新型的可編程路由器,不僅可以支持IP隧道形式實(shí)現(xiàn)新協(xié)議、新擴(kuò)展,而且支持驗(yàn)證未來網(wǎng)絡(luò)的Clean-Slate思想,支持部署非IP協(xié)議。此外還提供一種較高的轉(zhuǎn)發(fā)性能,用于協(xié)議、算法、體系結(jié)構(gòu)的驗(yàn)證。本發(fā)明涉及一種基于NetFPGA的可編程路由器,包括控制平面和轉(zhuǎn)發(fā)平面。其中控制平面包括Wffff-模式模塊、CLI-模式模塊、管理代理模塊、可編程接口模塊和通信控制模塊。
WWW-模式模塊,用于提供web管理服務(wù),通過web方式完成對路由器的信息查看和配置WffW-模式模塊。為用戶提供web管理界面,使用戶可以通過此界面配置新協(xié)議、配置路由器端口 MAC地址、查看邏輯轉(zhuǎn)發(fā)表、查看路由器流量狀態(tài)等信息。
CLI-模式模塊,用于提供telnet服務(wù),為用戶提供一個telnet命令行接口界面, 使用戶可以通過命令行為方式對路由器進(jìn)行管理配置。
管理代理模塊,用于提供Wffff-模式服務(wù)與CLI-模式服務(wù)的底層數(shù)據(jù)支持,創(chuàng)建代表路由器當(dāng)前狀態(tài)的全局變量,將WffW-模式服務(wù)與CLI-模式服務(wù)注冊到全局變量的管理命令鏈表,以方便擴(kuò)展新功能;接收用戶命令,并將命令解釋為實(shí)際可執(zhí)行的函數(shù),讀取可編程路由器當(dāng)前邏輯轉(zhuǎn)發(fā)表、數(shù)據(jù)包收發(fā)狀態(tài)等信息。全局變量包括路由器當(dāng)前流量狀態(tài)、 映射轉(zhuǎn)發(fā)表鏈表、協(xié)議識別、端口信息、管理命令鏈表以及用戶自定義的變量。
可編程接口模塊,用于提供用戶自定義模塊的接口,包括映射轉(zhuǎn)發(fā)表(Map Forward Information Table)接口,在映射轉(zhuǎn)發(fā)表發(fā)生變化時更新硬件(NetFPGA)中的映射轉(zhuǎn)發(fā)表;和數(shù)據(jù)包處理函數(shù)接口(packet_handler),用戶完成自定義數(shù)據(jù)包處理,注冊用戶自定義的數(shù)據(jù)包處理函數(shù),完成自定義的初始化;該模塊通過使用統(tǒng)一的MFIT (映射轉(zhuǎn)發(fā)表)機(jī)制兼容各種新協(xié)議,(如圖4所示)其中MFIT的表項(xiàng)為標(biāo)準(zhǔn)地址SA(standard address)、下一跳地址 MAC address、待轉(zhuǎn)發(fā)的端口( interface)。SA (standard address) 為新協(xié)議目的地址經(jīng)過哈希計(jì)算后所形成的定長邏輯地址,MAC address為下一跳的MAC 地址,interface為下一跳的接口。通過注冊用戶自定義的數(shù)據(jù)包處理函數(shù)(packet_ handler)實(shí)現(xiàn)邏輯映射表的維護(hù)及異常數(shù)據(jù)包的處理。用戶實(shí)現(xiàn)自定義的初始化代碼,注冊為路由器系統(tǒng)中的uSer_init,由系統(tǒng)初始化時調(diào)用。用戶可以增加自定義功能命令,注冊到路由器的命令鏈表中,增加了系統(tǒng)的開放性。
通信控制模塊,用于提供控制平面與轉(zhuǎn)發(fā)平面進(jìn)行交互的接口函數(shù),接收轉(zhuǎn)發(fā)平面發(fā)送上來的數(shù)據(jù)包時調(diào)用數(shù)據(jù)包處理函數(shù)接口,調(diào)用已注冊的用戶自定義的數(shù)據(jù)包處理函數(shù);控制平面向轉(zhuǎn)發(fā)平面發(fā)送數(shù)據(jù)包時,以Iibnet庫實(shí)現(xiàn)數(shù)據(jù)包發(fā)送接口,將用戶自定義的數(shù)據(jù)包封裝成以太網(wǎng)數(shù)據(jù)包發(fā)送。該模塊的交互信息有兩種數(shù)據(jù)流與控制信息流。 數(shù)據(jù)流包括路由數(shù)據(jù)包和異常數(shù)據(jù)包;控制信息流包括轉(zhuǎn)發(fā)表數(shù)據(jù)、寄存器初始化及配置數(shù)據(jù)。通信控制模塊屏蔽了底層硬件,采用Iibnet庫(小型接口函數(shù)庫,提供低層網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)造、處理和發(fā)送功能)構(gòu)造數(shù)據(jù)包進(jìn)行發(fā)送,使用Iibpcap庫(網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫)監(jiān)聽接收數(shù)據(jù),通過ioctl函數(shù)實(shí)現(xiàn)對寄存器的配置與讀取。
轉(zhuǎn)發(fā)平面采用NetFPGA完成轉(zhuǎn)發(fā)數(shù)據(jù)包。NetFPGA標(biāo)準(zhǔn)路由器UDP (用戶數(shù)據(jù)通道)主要包括輸入判決模塊、輸出端口查詢模塊、輸出隊(duì)列模塊。其中輸出端口查詢模塊改寫為上述映射轉(zhuǎn)發(fā)表查找模塊,首先將待轉(zhuǎn)發(fā)的數(shù)據(jù)包目的地址進(jìn)行哈希計(jì)算,然后在映射轉(zhuǎn)發(fā)表中查找相應(yīng)表項(xiàng),如果沒有則將該數(shù)據(jù)包上傳控制平面處理,如果有則根據(jù)表項(xiàng)修改包頭MAC地址,加入相應(yīng)端口轉(zhuǎn)發(fā)隊(duì)列。
轉(zhuǎn)發(fā)平面接收到數(shù)據(jù)包,首先根據(jù)用戶在協(xié)議識別中設(shè)置的新協(xié)議識別標(biāo)識判斷出該數(shù)據(jù)包是否為新協(xié)議,如果不是則上傳至控制平面處理,如果是則根據(jù)設(shè)置的新協(xié)議的邏輯目的地址起始位置、邏輯目的地址長度取出目的地址,采用哈希算法轉(zhuǎn)換為定長8 字節(jié)的標(biāo)準(zhǔn)地址,查找映射轉(zhuǎn)發(fā)表,未找到相應(yīng)項(xiàng)則上傳至控制平面處理,根據(jù)查找到的目的下一跳地址、待轉(zhuǎn)發(fā)的端口,修改數(shù)據(jù)包目的下一跳地址,并送到相應(yīng)下一跳待轉(zhuǎn) 發(fā)端口輸出隊(duì)列。
本發(fā)明主要采用映射轉(zhuǎn)發(fā)表MFIT機(jī)制與注冊數(shù)據(jù)包處理函數(shù)實(shí)現(xiàn)其對新協(xié)議的可擴(kuò)展性支持,采用NetFPGA可編程硬件實(shí)現(xiàn)數(shù)據(jù)包的高效轉(zhuǎn)發(fā)。在既保證可編程性的同時又具備較高的性能,符合未來網(wǎng)絡(luò)試驗(yàn)床的要求,方便驗(yàn)證各種新協(xié)議。同時提供了良好的交互界面,包括web管理界面與telnet命令行模式,用戶可以查看當(dāng)前流量狀態(tài)、轉(zhuǎn)發(fā)表信息,方便進(jìn)行管理配置。
本發(fā)明的基于NetFPGA的可編程路由器與傳統(tǒng)的可編程路由器比較,具有以下優(yōu)占-^ \\\ ·將傳統(tǒng)封閉的路由流程開放出來,用戶自定義數(shù)據(jù)包處理函數(shù)。
提供了 web管理及telnet管理,用戶可在此基礎(chǔ)上進(jìn)行二次開發(fā),豐富路由器管理功能。
提供統(tǒng)一的映射轉(zhuǎn)發(fā)表MFIT,結(jié)構(gòu)上更簡單,利于快速轉(zhuǎn)發(fā)。
轉(zhuǎn)發(fā)平面基于NetFPGA實(shí)現(xiàn),具備更高的轉(zhuǎn)發(fā)性能,傳統(tǒng)的可編程路由器都為軟件路由器,轉(zhuǎn)發(fā)性能不高。
基于二層MAC協(xié)議,可驗(yàn)證三層網(wǎng)絡(luò)協(xié)議,更利于新的網(wǎng)絡(luò)體系架構(gòu)的驗(yàn)證,傳統(tǒng)的可編程路由器基于IP協(xié)議,一般采用IP隧道的方式驗(yàn)證其它協(xié)議,實(shí)現(xiàn)方式復(fù)雜。
該基于NetFPGA的可編程路由器可作為未來網(wǎng)絡(luò)試驗(yàn)床的重要組成部分,應(yīng)用于新的網(wǎng)絡(luò)體系架構(gòu)的驗(yàn)證,新協(xié)議、新擴(kuò)展的研究。


圖I為可編程路由器體系結(jié)構(gòu); 圖2為WffW-模式模塊實(shí)現(xiàn)流程圖;圖3為CLI-模式模塊實(shí)現(xiàn)流程圖;圖4為映射轉(zhuǎn)發(fā)表MFIT項(xiàng)格式;圖5為可編程路由器工作流程圖。
具體實(shí)施方式
如圖I所示為可編程路由器體系結(jié)構(gòu)示意圖,該系統(tǒng)主要由以下模塊組成 WWW-模式模塊、CLI-模式模塊、管理代理模塊、可編程接口模塊、通信控制模塊、轉(zhuǎn)發(fā)平面的NetFPGA板卡。
①WffW-模式模塊,該模塊提供web管理界面,使用戶可以通過此界面配置新協(xié)議、 配置路由器端口 MAC地址、查看轉(zhuǎn)發(fā)表信息、查看路由器流量狀態(tài)等信息。首先創(chuàng)建服務(wù)端套接字,監(jiān)聽8080端口,當(dāng)接收到請求時就將產(chǎn)生的客戶端套接字壓入www請求任務(wù)隊(duì)列。 同時創(chuàng)建了一個容量為10的線程池,使用該線程池處理www請求,降低服務(wù)器消耗。如圖2 示,www請求處理線程首先獲取任務(wù)隊(duì)列線程互斥鎖,然后檢查隊(duì)列中是否存在未處理的請求。如果沒有則釋放線程互斥鎖退出,循環(huán)等待再次進(jìn)入檢查。如果有,則摘取一個任務(wù), 釋放線程互斥鎖對該請求進(jìn)行下一步操作。檢查該請求是否為標(biāo)準(zhǔn)HTTP格式,接收數(shù)據(jù), 獲取用戶請求的url及參數(shù)信息。
針對用戶提交的url進(jìn)行檢測,有四種處理結(jié)果。請求列表,即用戶請求當(dāng)前支持的所有命令,查詢?nèi)肿兞恐凶缘拿盍斜?,文本方式返回。查看狀態(tài),查詢路由器全局變量中流量信息,文本方式返回數(shù)據(jù),該流量信息由一個狀態(tài)線程實(shí)時維護(hù)。運(yùn)行命令,即用戶輸入的配置命令、查看命令,首先字符串匹配全局變量中已注冊的命令,返回命令處理句柄,向句柄傳入用戶輸入的參數(shù),進(jìn)行相應(yīng)函數(shù)處理,處理結(jié)束后,返回結(jié)果。對于其它不識別的urI,統(tǒng)一返回路由器首頁信息。②CLI-模式模塊,該模塊提供一個telnet命令行接口界面,使用戶可以簡單高效的操作路由器,從而對路由器進(jìn)行管理配置。如圖3示,首先創(chuàng)建套接字,監(jiān)聽23端口,接收到連接請求時則將套接字傳遞給子線程處理。將接收到的請求內(nèi)容過濾掉換行、回車等無意義字符后,在系統(tǒng)已注冊的命令中進(jìn)行匹配操作,查找到處理句柄后,調(diào)用相關(guān)函數(shù)處理,返回結(jié)果。③管理代理模塊,該模塊提供Wffff模式服務(wù)與CLI模式服務(wù)底層命令數(shù)據(jù)支持。創(chuàng)建并維護(hù)一個全局的結(jié)構(gòu)體變量current_state,該結(jié)構(gòu)體涉及路由器當(dāng)前所有狀態(tài)信息,主要包括流量狀態(tài)、映射轉(zhuǎn)發(fā)表鏈表、協(xié)議識別、端口信息、管理命令鏈表以及用戶自定義部分,如數(shù)據(jù)包處理句柄。該模塊將web管理及telnet管理用到的命令注冊在current_state管理命令鏈表中,接收用戶命令,進(jìn)行鏈表遍歷,查找到相應(yīng)命令句柄進(jìn)行處理。支持的命令有
流量狀態(tài)輸出該命令讀取current_state中流量狀態(tài)結(jié)構(gòu)體,以文本形式返回給請求者。包括四個端口的接收發(fā)送字節(jié)數(shù)、接收發(fā)送數(shù)據(jù)包數(shù)、由于隊(duì)列滿丟棄的數(shù)據(jù)包數(shù)、由于校驗(yàn)失敗丟棄的數(shù)據(jù)包數(shù)。同時與該功能配合工作的有一流量狀態(tài)線程,該線程為守護(hù)線程,在系統(tǒng)初始化時啟動,其功能在于通過通信控制模塊提供的寄存器讀接口實(shí)時讀取NetFPGA相關(guān)狀態(tài)寄存器的值,即接收發(fā)送字節(jié)數(shù)等信息,將數(shù)據(jù)存放在current_State的流量狀態(tài)成員中。映射轉(zhuǎn)發(fā)表輸出讀取current_state輸出映射轉(zhuǎn)發(fā)表的各項(xiàng)信息,返回調(diào)用。靜態(tài)映射轉(zhuǎn)發(fā)表配置添加刪除映射轉(zhuǎn)發(fā)表的靜態(tài)項(xiàng),添加時將邏輯目的地址轉(zhuǎn)換為standard address后,寫入current_state映射轉(zhuǎn)發(fā)表。由守護(hù)線程監(jiān)測到變化后寫入NetFPGA硬件。協(xié)議識別配置配置新協(xié)議識別標(biāo)識、邏輯目的地址起始位置、邏輯目的地址長度,寫入current_state結(jié)構(gòu)體。調(diào)用通信控制模塊提供的寄存器讀寫接口,寫入NetFPGA硬件。端口信息輸出讀取current_state輸出四個端口的MAC地址、邏輯地址。端口信息配置配置四個端口的MAC地址、邏輯地址,寫入current_state結(jié)構(gòu)體。調(diào)用通信控制模塊提供的寄存器讀寫接口,寫入NetFPGA硬件。此外,用戶可根據(jù)需要實(shí)現(xiàn)自定義的命令函數(shù),注冊入管理命令鏈表,即可為路由器增加新功能。④可編程接口模塊主要用于與用戶自定義模塊對接。本發(fā)明提供映射轉(zhuǎn)發(fā)表(MapForward Information Base)機(jī)制,將非IP協(xié)議及IP協(xié)議在運(yùn)行時維護(hù)的路由表轉(zhuǎn)換為標(biāo)準(zhǔn)格式的映射轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)平面在轉(zhuǎn)發(fā)時只需查找映射轉(zhuǎn)發(fā)表,根據(jù)表項(xiàng)修改頭部目的MAC地址、源MAC地址,送入相應(yīng)端口發(fā)送隊(duì)列。映射轉(zhuǎn)發(fā)表MFIT,如圖 4 所不,其結(jié)構(gòu)為 standard address、mac、interface。其中standard address為數(shù)據(jù)包目的邏輯地址經(jīng)過哈希映射后的值,8字節(jié);mac為待轉(zhuǎn)發(fā)的目的mac地址,6字節(jié)interface為待轉(zhuǎn)發(fā)的端口,I字節(jié)。用戶可以實(shí)現(xiàn)類似傳統(tǒng)路由器中的路由表、ARP表,然后將兩者相應(yīng)表項(xiàng)處理生成MFIT,只是在生成SA時必須經(jīng)過系統(tǒng)提供的哈希函數(shù)對新協(xié)議定義的邏輯地址進(jìn)行映射。 默認(rèn)狀態(tài)下,數(shù)據(jù)包處理函數(shù)不會對接收的數(shù)據(jù)包作任何處理,此處完全對用戶開放,需要用戶自定義適應(yīng)新協(xié)議的數(shù)據(jù)包處理函數(shù),并注冊在current_state中的packet_handler。使用一個數(shù)據(jù)包守護(hù)線程,當(dāng)接收到新的數(shù)據(jù)包時,調(diào)用packet_handler進(jìn)行處理。用戶實(shí)現(xiàn)維護(hù)current_State中MFIT的必要代碼,根據(jù)需要對接收到的數(shù)據(jù)包進(jìn)行相關(guān)操作。此外,異常數(shù)據(jù)包的處理,也在這里實(shí)現(xiàn)。用戶實(shí)現(xiàn)自定義的初始化代碼,注冊為current_state中的user_init,由系統(tǒng)初始化時統(tǒng)一調(diào)用。用戶可以實(shí)現(xiàn)一些自定義的功能命令,注冊在管理命令鏈表中,即可在管理路由器時調(diào)用。⑤通信控制模塊主要提供上層軟件與NetFPGA板卡進(jìn)行交互的接口函數(shù)。包括兩類函數(shù),數(shù)據(jù)包的接收與發(fā)送,控制信息的讀取與配置。數(shù)據(jù)包接收采用Iibpcap庫監(jiān)聽實(shí)現(xiàn),Iibpcap捕獲以太網(wǎng)數(shù)據(jù)包,調(diào)用packet_handler進(jìn)行下一步處理;數(shù)據(jù)包發(fā)送提供發(fā)送以太網(wǎng)數(shù)據(jù)的接口,用戶將構(gòu)造好的二層以上的數(shù)據(jù)包傳入,然后使用Iibnet庫構(gòu)造以太網(wǎng)數(shù)據(jù)包進(jìn)行發(fā)送??刂菩畔⒌淖x取與配置,使用ioctl實(shí)現(xiàn),通過控制NetFPGA標(biāo)準(zhǔn)驅(qū)動,實(shí)現(xiàn)PCI總線通信,DMA數(shù)據(jù)傳輸。⑥硬件轉(zhuǎn)發(fā)平面基于NetFPGA實(shí)現(xiàn),使用NetFPGA高效轉(zhuǎn)發(fā)數(shù)據(jù)包。該部分在NetFPGA標(biāo)準(zhǔn)路由器的基礎(chǔ)上修改了轉(zhuǎn)發(fā)模塊部分。NetFPGA標(biāo)準(zhǔn)路由器UDP主要包括input_arbiter 模塊、output_port_lookup 模塊、oq_queues 模塊。修改 output_port_lookup模塊寫為上述映射轉(zhuǎn)發(fā)表查找模塊。其在處理以太網(wǎng)數(shù)據(jù)包時,首先根據(jù)用戶在協(xié)議識別配置命令中設(shè)置的新協(xié)議識別標(biāo)識判斷出該數(shù)據(jù)包是否為新協(xié)議,否則上傳至控制平面處理。如果為新協(xié)議則根據(jù)配置的新協(xié)議的邏輯目的地址起始位置、邏輯目的地址長度取出目的地址,經(jīng)哈希算法轉(zhuǎn)換為定長8字節(jié)的SA,查找映射轉(zhuǎn)發(fā)表,未找到相應(yīng)項(xiàng)則上傳至控制平面處理。根據(jù)查找到的目的MAC、interface,修改數(shù)據(jù)包目的MAC地址,并送到相應(yīng)下一跳端口輸出隊(duì)列。圖5所示為可編程路由器系統(tǒng)的初始化過程,詳細(xì)步驟如下
I.建立全局變量current_State,進(jìn)行初始化,包括建立線程鎖、映射轉(zhuǎn)發(fā)表、路由狀態(tài)、協(xié)議識別、端口信息、管理命令鏈表等。初始化管理代理,即注冊系統(tǒng)命令到命令鏈表,這些命令可以通過web方式或telnet方式調(diào)用。2.初始化硬件,讀取配置文件,配置四個端口的MAC地址,配置映射轉(zhuǎn)發(fā)表。該配置文件可以由用戶在系統(tǒng)啟動前更改。進(jìn)入用戶自定義部分,調(diào)用usr_init句柄,該函數(shù)由用戶實(shí)現(xiàn)并注冊在全局變量current_state中,初始化自定義的結(jié)構(gòu)體及啟動一些必要的線程。3.依次啟動一系列守護(hù)線程創(chuàng)建狀態(tài)守護(hù)線程,用于實(shí)時更新路由器各端口的流量信息;創(chuàng)建映射轉(zhuǎn)發(fā)表守護(hù)線程,用于實(shí)時更新路由器的映射轉(zhuǎn)發(fā)表信息;創(chuàng)建數(shù)據(jù)包接收線程,接收發(fā)送到軟件層處理的數(shù)據(jù)包,調(diào)用用戶注冊的packet_handler處理;倉1|建WWW線程,即提供WWW-mode服務(wù),等待用戶連接,并處理連接請求;創(chuàng)建CLI線程,即提供CLI-mode服務(wù),等待用戶連接,并處理用戶輸入的命令。
權(quán)利要求
1.基于NetFPGA的可編程路由器,其特征在于包括控制平面和轉(zhuǎn)發(fā)平面,所述轉(zhuǎn)發(fā)平面采用NetFPGA完成轉(zhuǎn)發(fā)數(shù)據(jù)包,所述控制平面包括 Wffff-模式模塊,用于提供web管理服務(wù),通過web方式完成對路由器的信息查看和配置WWW-模式模塊; CLI-模式模塊,用于提供telnet服務(wù),使用戶可以通過命令行為方式對路由器進(jìn)行管理配置; 管理代理模塊,用于提供WWW-模式服務(wù)與CLI-模式服務(wù)的底層數(shù)據(jù)支持,創(chuàng)建代表路由器當(dāng)前狀態(tài)的全局變量,將Wffff-模式服務(wù)與CLI-模式服務(wù)注冊到全局變量的管理命令鏈表,以方便擴(kuò)展新功能; 可編程接口模塊,用于提供用戶自定義模塊的接口,包括映射轉(zhuǎn)發(fā)表接口,在映射轉(zhuǎn)發(fā)表發(fā)生變化時更新硬件中的映射轉(zhuǎn)發(fā)表;和數(shù)據(jù)包處理函數(shù)接口,用戶完成自定義數(shù)據(jù)包處理,注冊用戶自定義的數(shù)據(jù)包處理函數(shù),完成自定義的初始化; 通信控制模塊,用于提供控制平面與轉(zhuǎn)發(fā)平面進(jìn)行交互的接口函數(shù),接收轉(zhuǎn)發(fā)平面發(fā)送上來的數(shù)據(jù)包時調(diào)用數(shù)據(jù)包處理函數(shù)接口,調(diào)用已注冊的用戶自定義的數(shù)據(jù)包處理函數(shù);控制平面向轉(zhuǎn)發(fā)平面發(fā)送數(shù)據(jù)包時,以Iibnet庫實(shí)現(xiàn)數(shù)據(jù)包發(fā)送接口,將用戶自定義的數(shù)據(jù)包封裝成以太網(wǎng)數(shù)據(jù)包發(fā)送。
2.根據(jù)權(quán)利要求I所述基于NetFPGA的可編程路由器,其特征在于所述映射轉(zhuǎn)發(fā)表包括標(biāo)準(zhǔn)地址、下一跳地址、待轉(zhuǎn)發(fā)的端口。
3.根據(jù)權(quán)利要求I所述基于NetFPGA的可編程路由器,其特征在于所述全局變量包括路由器當(dāng)前流量狀態(tài)、映射轉(zhuǎn)發(fā)表鏈表、協(xié)議識別、端口信息、管理命令鏈表以及用戶自定義的變量。
4.根據(jù)權(quán)利要求I或3所述基于NetFPGA的可編程路由器,其特征在于所述轉(zhuǎn)發(fā)平面接收到數(shù)據(jù)包,首先根據(jù)用戶在協(xié)議識別中設(shè)置的新協(xié)議識別標(biāo)識判斷出該數(shù)據(jù)包是否為新協(xié)議,如果不是則上傳至控制平面處理,如果是則根據(jù)設(shè)置的新協(xié)議的邏輯目的地址起始位置、邏輯目的地址長度取出目的地址,采用哈希算法轉(zhuǎn)換為定長8字節(jié)的標(biāo)準(zhǔn)地址,查找映射轉(zhuǎn)發(fā)表,未找到相應(yīng)項(xiàng)則上傳至控制平面處理,根據(jù)查找到的目的下一跳地址、待轉(zhuǎn)發(fā)的端口,修改數(shù)據(jù)包目的下一跳地址,并送到相應(yīng)下一跳待轉(zhuǎn)發(fā)端口輸出隊(duì)列。
全文摘要
本發(fā)明公開了一種基于NetFPGA的可編程路由器,涉及到計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)。包括WWW-模式模塊、CLI-模式模塊、管理代理模塊、可編程接口模塊、通信控制模塊、轉(zhuǎn)發(fā)平面的NetFPGA板卡。該可編程路由器開放編程接口,用戶可自定義實(shí)現(xiàn)路由協(xié)議及更上層協(xié)議,不局限于IP隧道方式,提供統(tǒng)一的映射轉(zhuǎn)發(fā)表格式;允許用戶自定義數(shù)據(jù)包處理過程;提供了web、telnet管理方式,用戶可自定義增加功能命令;基于NetFPGA的實(shí)現(xiàn)方式保證了路由器較高的轉(zhuǎn)發(fā)性能。該基于NetFPGA的可編程路由器可作為未來網(wǎng)絡(luò)試驗(yàn)床的重要組成部分,應(yīng)用于新的網(wǎng)絡(luò)體系架構(gòu)的驗(yàn)證,新協(xié)議、新擴(kuò)展的研究。
文檔編號H04L12/741GK102984075SQ20121054711
公開日2013年3月20日 申請日期2012年12月17日 優(yōu)先權(quán)日2012年12月17日
發(fā)明者唐紅, 張健, 徐川, 趙國鋒 申請人:重慶郵電大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
都匀市| 佛学| 龙南县| 云霄县| 阿克陶县| 静安区| 宜君县| 黑河市| 烟台市| 大厂| 囊谦县| 同心县| 上饶市| 临江市| 竹山县| 闵行区| 克拉玛依市| 涪陵区| 永嘉县| 安新县| 南溪县| 迁安市| 多伦县| 广宗县| 灵璧县| 临高县| 琼海市| 满洲里市| 江源县| 昂仁县| 浪卡子县| 和硕县| 邢台市| 四川省| 盐山县| 福安市| 当阳市| 张家界市| 德化县| 偃师市| 汉源县|