基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)_第1頁
基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)_第2頁
基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)_第3頁
基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)_第4頁
基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、網(wǎng)絡協(xié)議設計實驗設計文檔基于click自定義協(xié)議軟件路由器的設計與實現(xiàn)二一四年十二月目 錄一、實驗概要及實驗設計1(一)實驗概要1(二)實驗目的1(三)實驗分析11、協(xié)議分析12、協(xié)議設計2二、實驗設計4(一)實驗流程4(二)click路由器總體設計51.路由器報文分類概要設計52。路由器報文轉發(fā)概要設計63.Label標簽信息庫結構94。優(yōu)先級調度概要設計95.基于優(yōu)先級的限速功能的概要設計10(三)click路由器轉發(fā)流程設計111.PSP路由轉發(fā)流程詳細設計112。Label報文轉發(fā)詳細設計12(四)主要組件設計141.Fastpspsource組件142。LableRouteTable

2、153.LableLookup154。RateLimit16三、實驗演示17(一)PSP路由轉發(fā)測試171.實驗拓撲圖172。實驗測試方法173。配置文件174。測試結果185。結果總結20(二)基于Label的路由轉發(fā)測試211.實驗拓撲圖212。配置文件213。測試結果214。結果總結21(三)優(yōu)先級隊列調度功能測試211.實驗拓撲圖212.實驗測試方法213。配置文件224.測試結果235.結果總結24(四)標簽流按優(yōu)先級分別進行限速功能測試241.實驗拓撲圖242.配置文件253。測試結果264。結果總結27四、實驗分工2727一、實驗概要及實驗設計(一)實驗概要本實驗目的為基于已有的

3、click開源軟件實現(xiàn)一個自定義協(xié)議的軟件路由器完整轉發(fā)流程,具體包含五個核心任務:報文分類處理;PSP報文分組轉發(fā)流程(包含PSP頭檢查、TTL減一、轉發(fā)表);定長標簽交換流程(包含標簽頭解封裝、標簽表、標簽頭封裝);標簽流8個優(yōu)先級隊列調度;標簽流按照優(yōu)先級分別進行限速.(二)實驗目的通過實驗設計,深入理解軟件路由器的基本原理、組成和實現(xiàn),掌握計算機網(wǎng)絡研究所需的基本設計技能,包括系統(tǒng)設計能力、軟件編程能力、整體表述能力和新思想的實驗驗證能力,為開展計算機網(wǎng)絡方向的深入研究奠定實際驗證基礎。(三)實驗分析1、協(xié)議分析一個完整的路由協(xié)議需要完成的功能包含以下內容:制定指導數(shù)據(jù)報文分組從一個網(wǎng)

4、絡到另一個網(wǎng)絡的規(guī)定和標準;創(chuàng)建路由表,并維護網(wǎng)絡拓撲結構;運行路由協(xié)議,執(zhí)行路由選擇和分組轉發(fā)功能.這對我們接下來的協(xié)議設計提出了基本的要求,即對于網(wǎng)絡中的每一層都需要定義報文的格式,然后對于報文在網(wǎng)絡中的發(fā)送、接收和轉發(fā)都有穩(wěn)定的拓撲結構.2、協(xié)議設計一個自定義的協(xié)議簇(ABC),包括地址編址結構、網(wǎng)絡互連與路由轉發(fā)等多個簡單協(xié)議,對其進行詳細說明如下:(1) 地址編制結構(64位),其中前16位為網(wǎng)絡標識,后48為接口標識。實際操作中,接口標識為該接口的MAC地址,與前16位拼接為64位地址。(2) 鏈路層協(xié)議,規(guī)定了以太網(wǎng)的封裝格式如下:其中,IP報文類型定義為0x6000,標簽(LA

5、BEL)報文類型定義為0x6001。(3) 2。5層標簽交換協(xié)議,規(guī)定了標簽交換頭的封裝格式,并約定標簽交換頭后默認為PSP格式的報文.(4) 網(wǎng)絡層協(xié)議,定義了網(wǎng)絡層報文頭格式.其中TOS為015,表示報文的傳輸優(yōu)先級;標識符標注報文的序號;載荷長度為不包括報文頭的報文內容長度;下一報頭類型為1時表示為ABC_ICMP協(xié)議,為2時表示為ABC_UDP協(xié)議;跳數(shù)限制最大為64,并且每經(jīng)過一個路由器,其值減1,其值為0時報文被丟棄;源地址和目的地址分別記錄發(fā)送方和目的方地址。(5) 定義了ABC_UDP(ABC不可靠傳輸協(xié)議)報文頭格式.(6) 基本實驗拓撲如圖所示,根據(jù)以太網(wǎng)報文頭中包含的以太

6、網(wǎng)的目的地址、源地址和報文類型, ABC協(xié)議就能實現(xiàn)一個簡單的報文收發(fā)過程.(7) 包含轉發(fā)過程的實驗拓撲一個簡單的轉發(fā)過程包含以下的步驟:從發(fā)送方接收報文;更改報文的源地址以及目的地址;通過端口發(fā)出報文。示意圖如下:二、實驗設計(一)實驗流程1. 準備工作a) 下載修改后的Click源代碼;b) 安裝Fedora虛擬機,配置開發(fā)、測試環(huán)境;c) 編譯源碼,運行Demo實驗;d) 學習Click基礎知識,查看源碼,了解組件的設計方法和組件的配置文件。2. 系統(tǒng)概要設計充分了解實驗任務,進行初步的概要設計,設計包括組件的功能和組織。3. 編碼4. 實驗環(huán)境搭建5. 代碼集成和測試首先各個組件需要

7、通過單元測試,最后集成起來進行系統(tǒng)測試.6. 編寫實驗報告文檔(二)click路由器總體設計1. 路由器報文分類概要設計報文主要分為四種類型:ARP Query報文、ARP Response報文、PSP報文、Label報文。從輸入組件中獲取數(shù)據(jù)包,發(fā)送到數(shù)據(jù)包分類器。概要圖如下圖所示:其中,根據(jù)以太網(wǎng)頭部類型信息進行分類,如下所示:類型碼0x08060x60000x60010x08062. 路由器報文轉發(fā)概要設計路由器報文轉發(fā)的概要設計圖如下所示,其中包含兩條主線:一是基于PSP協(xié)議的路由轉發(fā),二是基于Label標簽的路由轉發(fā).兩條主線的公用組件的作用如下表所示:FromDevice從指定端口

8、獲取數(shù)據(jù)包,轉發(fā)給下一個組件Classifier數(shù)據(jù)包類型分類器,根據(jù)以太網(wǎng)頭部類型信息把數(shù)據(jù)分為四類:ARP Query 、ARP Response 、PSP 報文、Label 報文TTL 1將報文的TTL 進行減一操作,當TTL為時,不再轉發(fā)報文ARP Query查詢目的IP對應的Mac地址Modify Ether Header修改以太網(wǎng)頭部ToDevice將數(shù)據(jù)包發(fā)送到指定端口對于PSP報文的路由轉發(fā),其中的兩個組件功能如下:Get Dest Address獲取PSP報文的目的地址Lookup Router Table查詢路由表,得到要轉發(fā)的端口對于Label報文的路由轉發(fā),其中的兩個組

9、件的功能如下:Lookup LIB根據(jù)標簽號,查詢標簽信息庫,得到新的標簽號和轉發(fā)端口.Modify Label for next jump修改標簽頭部信息中的標簽號為查表得到新標簽號(1) 對于PSP報文路由轉發(fā),首先根據(jù)PSP頭部中的目的地址查詢路由表,得到轉發(fā)端口;然后進行TTL-1、修改Ether頭部中的目的Mac,然后從查詢到的轉發(fā)端口進行發(fā)送.(2) 對于急于標簽的路由轉發(fā),首先根據(jù)Label頭部的標簽號查詢標簽信息庫,得到新的標簽號和轉發(fā)端口,并修改Label頭部的標簽號為新的標簽號。然后進行TTL1,修改Ether頭部中的目的Mac,然后從查詢到的轉發(fā)端口進行發(fā)送.3. Lab

10、el標簽信息庫結構標簽信息庫維護基于標簽交換的路由轉發(fā)信息。當一個帶有標簽的報文進入路由器的時候,首先根據(jù)標簽頭部的Label ID查找標簽信息庫,得到下一跳的Label ID和轉發(fā)端口.其結構信息如下:4. 優(yōu)先級調度概要設計對于標簽交換,當輸入組件獲取數(shù)據(jù)包,經(jīng)數(shù)據(jù)分類器分類后,確定為Label報文,轉發(fā)給優(yōu)先級分類器。優(yōu)先級分類器根據(jù)Label頭部中的QOS字段進行優(yōu)先級判定,分別加入不同優(yōu)先級的隊列中.優(yōu)先級調度組件根據(jù)優(yōu)先級調度算法進行調度,從不同優(yōu)先級的隊列中獲取數(shù)據(jù)包,發(fā)送到待發(fā)送數(shù)據(jù)隊列。其中,調度算法是為了保證低優(yōu)先級的報文不至于餓死,采用時間片輪轉的方式,即給高優(yōu)先的隊列分

11、配更多的時間。5. 基于優(yōu)先級的限速功能的概要設計(三)click路由器轉發(fā)流程設計1. PSP路由轉發(fā)流程詳細設計組件/流程功能描述FastPSPSource組件按照一定的速度產(chǎn)生PSP報文,模擬發(fā)送端FromDevice組件從指定的端口獲取數(shù)據(jù)包,轉發(fā)到下一個組件Classifier組件數(shù)據(jù)包分類器,根據(jù)以太網(wǎng)頭部的類型信息進行分類,PSP報文的類型信息為0x6000Get Dest Address該步驟從PSP報文頭部獲取目的地址,用來查詢路由表,獲取轉發(fā)端口Lookup Router table根據(jù)目的地址,查找路由表,獲取轉發(fā)端口TTL1將報文TTL進行減一操作ARP QueryAR

12、P查詢,獲取下一跳的目的Mac地址Modify Ethernet Header根據(jù)查詢到的下一跳目的Mac地址,修改報文以太網(wǎng)頭部目的Mac字段Add to Queue添加到待發(fā)送數(shù)據(jù)包的隊列中ToDevice組件從Queue中獲取數(shù)據(jù)包,從指定網(wǎng)口發(fā)送出去2. Label報文轉發(fā)詳細設計發(fā)送者生成PSP報文,經(jīng)過AddLabelHeader組件添加標簽頭,發(fā)送到路由器;Click 路由器從網(wǎng)口接受數(shù)據(jù),進過分類器后,確定為基于標簽交換的報文。然后查詢標簽信息庫,并修改下一條標簽號,經(jīng)過TTL1,目的MAC地址修改,轉發(fā)到相應端口。接受者從網(wǎng)口獲取數(shù)據(jù)包,丟掉LabelHeader。組件/流程

13、功能介紹AddLabelHeader在普通PSP數(shù)據(jù)包上添加標簽頭信息,讓路由器可以基于標簽進行交換Lookup LIB查詢標簽信息庫,獲取下一跳Label ID和輸出端口Modify Label for next jump修改標簽頭 Label ID字段,讓下一跳路由可以轉發(fā)Remove Label Header移除Label Header,得到PSP報文(四)主要組件設計1. Fastpspsource組件組件名字Fastpspsource功能描述按照一定的速度生成PSP報文端口類型PORTS_0_1 0個輸入端口,一個輸出端口處理方式PULL方式參數(shù)描述FASTPSPSOURCE(RAT

14、E, LIMIT, LENGTH, SRCETH, SRCIP, SPORT, DSTETH, DSTIP, DPORT)RATE:發(fā)送速度;LIMIT:生成最大報文數(shù)量;LENGTH:報文的長度SRCETH:源Mac地址SRCIP:源IP地址SPORT:源端口號DSTETH:目的Mac地址DSTIP:目的IP地址DPORT:目的端口號2. LableRouteTable主要功能:定義標簽信息結構,維護標簽信息庫,可以向里面添加、查詢、刪除標簽信息.3. LableLookup組件名字LableLookup功能描述(1) 靜態(tài)配置標簽信息庫(2) 實現(xiàn)基于標簽的查找轉發(fā)端口類型一個輸入端口,多

15、個輸出端口處理方式PUSH方式當一個帶有標簽的報文發(fā)送到LabelLookup組件,首先獲取Label標簽頭部的標簽號,查找標簽信息庫,以獲取“Out Label”和“Out Port",然后修改標簽頭部的標簽號為“Out Label”,并從“Out Port”端口發(fā)送出去。流程圖如下:4. RateLimit組件名字RateLimit功能描述限制一個報文流的速度,即每秒發(fā)送多少報文端口類型PORTS_1_1 1個輸入端口,1個輸出端口處理方式PULL參數(shù)描述RateLimit (RATE)RATE:報文流的最大速率,即最多每秒發(fā)送多少個報文三、實驗演示(一)PSP路由轉發(fā)測試1.

16、實驗拓撲圖2. 實驗測試方法實驗拓撲圖如下所示:Client 從Eth1網(wǎng)口發(fā)送數(shù)據(jù)到Router1 Eth1,Router1轉發(fā)到Router2,Router2收到數(shù)據(jù)后再次轉發(fā)給Client 的Eth2,Client收到數(shù)據(jù)后打印消息內容。3. 配置文件i. Client 發(fā)送報文配置文件FastPSPSource(2,2000,128,00:0C:29:0E:9F:0D,0x0100000A,2345,00:0C:29:61:C0:3E ,0x0200000A,2346) - PSPPrint() -> ToDevice(eth1);ii. Client 接受報文配置文件FromD

17、evice(eth2) PSPPrint() Discard;iii. Router1 轉發(fā)報文配置文件psp :: Print(”Forward PSP Pkt”) -> rt :: PSPLookup( 10。0.0.1。0。0。0.0 0, 10。0.0.2。0。0。0。0 0) ;c0 :: Classifier(12/0600, -);out0 : Queue(200) - todevice0 : ToDevice(eth1);FromDevice(eth1) c0;c00psp;c01Discard;rt0 PSPMacap(00:0C:29:F4:DD:E6) Print(

18、rt2) out0;iv. Router2 轉發(fā)報文配置文件psp : Print("Forward PSP Pkt”) rt :: PSPLookup( 10.0。0.1.0。0.0。0 1, 10.0.0.2。0。0。0。0 1) ;c0 : Classifier(12/0600, );out0 :: Queue(200) todevice0 : ToDevice(eth2);FromDevice(eth1) > c0;c00psp;c01Discard;rt0>Discard;rt1- PSPMacap(00:0C:29:0E:9F:17) Print(rt2) &

19、gt; out0;4. 測試結果v. 客戶端發(fā)送報文vi. Router1 建立路由表以及轉發(fā)vii. Router2 建立路由表以及轉發(fā)viii. Client 接受到數(shù)據(jù)包并打印5. 結果總結實驗采用通過模擬兩臺路由器之間的路由轉發(fā)來測試,從實驗結果來看,Client 從Eth1網(wǎng)口發(fā)送出去的數(shù)據(jù)包,進過Router1和Router2的路由轉發(fā)后,能成功到達目的端。該實驗結果說明,基于PSP報文的路由轉發(fā)功能完整實現(xiàn)。(二)基于Label的路由轉發(fā)測試1. 實驗拓撲圖2. 配置文件3. 測試結果4. 結果總結(三)優(yōu)先級隊列調度功能測試1. 實驗拓撲圖2. 實驗測試方法Client發(fā)送優(yōu)先

20、級不同的數(shù)據(jù)包到Router1.Router1在接收到數(shù)據(jù)包后,根據(jù)數(shù)據(jù)包優(yōu)先級不同,放置到相應的優(yōu)先級隊列中。由于采用包限流調度算法,越高的優(yōu)先級隊列能在一秒內通過更多的數(shù)據(jù)包,越低的優(yōu)先級隊列通過的數(shù)據(jù)包個數(shù)越少。因此,低優(yōu)先級的數(shù)據(jù)包會被緩存在隊列中,高優(yōu)先級的數(shù)據(jù)包能盡快地從隊列中被讀出,使得從優(yōu)先級隊列中讀出數(shù)據(jù)包的順序和Client發(fā)送數(shù)據(jù)包的順序會有差異.通過對比讀出數(shù)據(jù)包和發(fā)送數(shù)據(jù)包的順序,我們就可以驗證優(yōu)先級隊列調度的功能是否正常、合理.Client發(fā)送數(shù)據(jù)包順序如下:依次分別發(fā)送5個優(yōu)先級為n的數(shù)據(jù)包,其中n從8變化到1,并循環(huán)往復。即發(fā)送5個優(yōu)先級為8的數(shù)據(jù)包,再發(fā)送5個

21、優(yōu)先級為7的數(shù)據(jù)包······,并循環(huán)往復.其中我們設定數(shù)據(jù)包QoS位的范圍為18.其中1代表最高優(yōu)先級,8代表最低優(yōu)先級。3. 配置文件1) Router1接收端部分配置文件如下所示:c : Classifier(14/41, 14/42, 14/43, 14/44, 14/45, 14/46, 14/47, 14/48, -);ps : PrioSched;queue1 :: Queue(100);queue2 :: Queue(100);queue3 : Queue(100);queue4 : Queue(100);queue5

22、 :: Queue(100);queue6 :: Queue(100);queue7 :: Queue(100);queue8 :: Queue(100);queue9 :: Queue(100);FromDevice(eth1) -> c;c0 queue1 Shaper(6) ps;c1 queue2 - Shaper(6) 1ps;c2-> queue3 Shaper(3) 2ps;c3- queue4 > Shaper(3) - 3ps;c4 queue5 Shaper(2) - 4ps;c5-> queue6 > Shaper(2) - 5ps;c6-&

23、gt; queue7 - Shaper(1) 6ps;c7> queue8 Shaper(1) 7ps;c8> queue9 > Shaper(10) 8ps;ps Discard;根據(jù)數(shù)據(jù)包QoS的不同,定義一個輸出端口數(shù)為9的分類器。優(yōu)先級調度組件PrioSched采用時間片調度方式。同時,定義了9個大小為100的隊列,最后一個隊列處理其他的數(shù)據(jù)包。4. 測試結果1) Client數(shù)據(jù)包發(fā)送順序如下圖所示:2) Router1從優(yōu)先級隊列中讀出數(shù)據(jù)包的順序如下圖所示:對比以上數(shù)據(jù)包順序,可以發(fā)現(xiàn),產(chǎn)生數(shù)據(jù)包的優(yōu)先級是從大變化到小,而通過優(yōu)先級隊列的調度,從隊列中讀出的數(shù)據(jù)

24、包的優(yōu)先級從小變化到大。由于對每秒讀出各隊列的數(shù)據(jù)包數(shù)量進行了限制,因此不會有產(chǎn)生低優(yōu)先級被餓死的現(xiàn)象。5. 結果總結(四)標簽流按優(yōu)先級分別進行限速功能測試1. 實驗拓撲圖1) 實驗測試方法針對不同的優(yōu)先級,設置RateLimit組件不同的參數(shù)以達到限速的目的,報文由發(fā)送方產(chǎn)生并在一秒鐘之內發(fā)送200個報文給接收方,接收方接收時進行基于優(yōu)先級的限速,并將結果進行打印。2. 配置文件a) 報文發(fā)送端FastPSPSource(200,200, 128, 00:0c:29:34:3e:ad, 0x800a000a, 2345,00:0C:29:eb:05:0f,0x810a000a,2346) - ToDevice(eth1);b) 報文接收端: Classifier(13/0041, 13/0042, 13/0043, 13/0044, 13/0045, 13/0046, 13/0047, 13/0048, -);queue1 : Queue(100);queue2 : Queue(100);queue3 :: Queue(100);queue4 : Queue(100);queue5 : Queue(100);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論