基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)
《基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn)(22頁珍藏版)》請在裝配圖網上搜索。
1、網絡協(xié)議設計實驗 設計文檔 基于click自定義協(xié)議軟件路由器的 設計與實現(xiàn) 二〇一四年十二月 目 錄 一、實驗概要及實驗設計 1 (一)實驗概要 1 (二)實驗目的 1 (三)實驗分析 1 1、協(xié)議分析 1 2、協(xié)議設計 2 二、實驗設計 4 (一)實驗流程 4 (二)click路由器總體設計 5 1. 路由器報文分類概要設計 5 2。 路由器報文轉發(fā)概要設計 6 3。 Label標簽信息庫結構 9 4. 優(yōu)先級調度概要設計 9 5。 基于優(yōu)先級的限速功能的概要設計 10 (三)click路由器轉發(fā)流程設計 11 1. PSP路由轉發(fā)流程詳細
2、設計 11 2. Label報文轉發(fā)詳細設計 12 (四)主要組件設計 14 1。 Fastpspsource組件 14 2。 LableRouteTable 15 3. LableLookup 15 4。 RateLimit 16 三、實驗演示 17 (一)PSP路由轉發(fā)測試 17 1。 實驗拓撲圖 17 2。 實驗測試方法 17 3. 配置文件 17 4。 測試結果 18 5。 結果總結 20 (二)基于Label的路由轉發(fā)測試 21 1。 實驗拓撲圖 21 2。 配置文件 21 3。 測試結果 21 4. 結果總結 21 (三)優(yōu)先級隊列調度功能測試
3、 21 1。 實驗拓撲圖 21 2. 實驗測試方法 21 3. 配置文件 22 4。 測試結果 23 5。 結果總結 24 (四)標簽流按優(yōu)先級分別進行限速功能測試 24 1. 實驗拓撲圖 24 2。 配置文件 25 3。 測試結果 26 4。 結果總結 27 四、實驗分工 27 17 一、實驗概要及實驗設計 (一)實驗概要 本實驗目的為基于已有的click開源軟件實現(xiàn)一個自定義協(xié)議的軟件路由器完整轉發(fā)流程,具體包含五個核心任務:報文分類處理;PSP報文分組轉發(fā)流程(包含PSP頭檢查、TTL減一、轉發(fā)表);定長標簽交換流程(包含標簽頭解封裝、標簽表、標簽頭封
4、裝);標簽流8個優(yōu)先級隊列調度;標簽流按照優(yōu)先級分別進行限速。 (二)實驗目的 通過實驗設計,深入理解軟件路由器的基本原理、組成和實現(xiàn),掌握計算機網絡研究所需的基本設計技能,包括系統(tǒng)設計能力、軟件編程能力、整體表述能力和新思想的實驗驗證能力,為開展計算機網絡方向的深入研究奠定實際驗證基礎。 (三)實驗分析 1、協(xié)議分析 一個完整的路由協(xié)議需要完成的功能包含以下內容:制定指導數(shù)據(jù)報文分組從一個網絡到另一個網絡的規(guī)定和標準;創(chuàng)建路由表,并維護網絡拓撲結構;運行路由協(xié)議,執(zhí)行路由選擇和分組轉發(fā)功能。這對我們接下來的協(xié)議設計提出了基本的要求,即對于網絡中的每一層都需要定義報文的格式,然后對
5、于報文在網絡中的發(fā)送、接收和轉發(fā)都有穩(wěn)定的拓撲結構. 2、協(xié)議設計 一個自定義的協(xié)議簇(ABC),包括地址編址結構、網絡互連與路由轉發(fā)等多個簡單協(xié)議,對其進行詳細說明如下: (1) 地址編制結構(64位),其中前16位為網絡標識,后48為接口標識。實際操作中,接口標識為該接口的MAC地址,與前16位拼接為64位地址。 (2) 鏈路層協(xié)議,規(guī)定了以太網的封裝格式如下: 其中,IP報文類型定義為0x6000,標簽(LABEL)報文類型定義為0x6001。 (3) 2。5層標簽交換協(xié)議,規(guī)定了標簽交換頭的封裝格式,并約定標簽交換頭后默認為PSP格式的報文。 (4) 網絡層協(xié)議,定義了
6、網絡層報文頭格式。 其中TOS為0—15,表示報文的傳輸優(yōu)先級;標識符標注報文的序號;載荷長度為不包括報文頭的報文內容長度;下一報頭類型為1時表示為ABC_ICMP協(xié)議,為2時表示為ABC_UDP協(xié)議;跳數(shù)限制最大為64,并且每經過一個路由器,其值減1,其值為0時報文被丟棄;源地址和目的地址分別記錄發(fā)送方和目的方地址。 (5) 定義了ABC_UDP(ABC不可靠傳輸協(xié)議)報文頭格式。 (6) 基本實驗拓撲 如圖所示,根據(jù)以太網報文頭中包含的以太網的目的地址、源地址和報文類型, ABC協(xié)議就能實現(xiàn)一個簡單的報文收發(fā)過程。 (7) 包含轉發(fā)過程的實驗拓撲 一個簡單的轉發(fā)過程包含以下的步
7、驟:從發(fā)送方接收報文;更改報文的源地址以及目的地址;通過端口發(fā)出報文.示意圖如下: 二、實驗設計 (一)實驗流程 1. 準備工作 a) 下載修改后的Click源代碼; b) 安裝Fedora虛擬機,配置開發(fā)、測試環(huán)境; c) 編譯源碼,運行Demo實驗; d) 學習Click基礎知識,查看源碼,了解組件的設計方法和組件的配置文件。 2. 系統(tǒng)概要設計 充分了解實驗任務,進行初步的概要設計,設計包括組件的功能和組織。 3. 編碼 4. 實驗環(huán)境搭建 5. 代碼集成和測試 首先各個組件需要通過單元測試,最后集成起來進行系統(tǒng)測試。 6. 編寫實驗報告文檔 (二)cl
8、ick路由器總體設計 1. 路由器報文分類概要設計 報文主要分為四種類型:ARP Query報文、ARP Response報文、PSP報文、Label報文。從輸入組件中獲取數(shù)據(jù)包,發(fā)送到數(shù)據(jù)包分類器.概要圖如下圖所示: 其中,根據(jù)以太網頭部類型信息進行分類,如下所示: 類型碼 0x0806 0x6000 0x6001 0x0806 2. 路由器報文轉發(fā)概要設計 路由器報文轉發(fā)的概要設計圖如下所示,其中包含兩條主線:一是基于PSP協(xié)議的路由轉發(fā),二是基于Label標簽的路由轉發(fā). 兩條主線的公用組件的作用如下表所示: FromDevice 從
9、指定端口獲取數(shù)據(jù)包,轉發(fā)給下一個組件 Classifier 數(shù)據(jù)包類型分類器,根據(jù)以太網頭部類型信息把數(shù)據(jù)分為四類:ARP Query 、ARP Response 、PSP 報文、Label 報文 TTL — 1 將報文的TTL 進行減一操作,當TTL為時,不再轉發(fā)報文 ARP Query 查詢目的IP對應的Mac地址 Modify Ether Header 修改以太網頭部 ToDevice 將數(shù)據(jù)包發(fā)送到指定端口 對于PSP報文的路由轉發(fā),其中的兩個組件功能如下: Get Dest Address 獲取PSP報文的目的地址 Lookup Router Ta
10、ble 查詢路由表,得到要轉發(fā)的端口 對于Label報文的路由轉發(fā),其中的兩個組件的功能如下: 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頭部的
11、標簽號為新的標簽號。然后進行TTL—1,修改Ether頭部中的目的Mac,然后從查詢到的轉發(fā)端口進行發(fā)送。 3. Label標簽信息庫結構 標簽信息庫維護基于標簽交換的路由轉發(fā)信息。當一個帶有標簽的報文進入路由器的時候,首先根據(jù)標簽頭部的Label ID查找標簽信息庫,得到下一跳的Label ID和轉發(fā)端口。其結構信息如下: 4. 優(yōu)先級調度概要設計 對于標簽交換,當輸入組件獲取數(shù)據(jù)包,經數(shù)據(jù)分類器分類后,確定為Label報文,轉發(fā)給優(yōu)先級分類器。優(yōu)先級分類器根據(jù)Label頭部中的QOS字段進行優(yōu)先級判定,分別加入不同優(yōu)先級的隊列中.優(yōu)先級調度組件根據(jù)優(yōu)先級調度算法進行調度,從不同優(yōu)先
12、級的隊列中獲取數(shù)據(jù)包,發(fā)送到待發(fā)送數(shù)據(jù)隊列。其中,調度算法是為了保證低優(yōu)先級的報文不至于餓死,采用時間片輪轉的方式,即給高優(yōu)先的隊列分配更多的時間。 5. 基于優(yōu)先級的限速功能的概要設計 (三)click路由器轉發(fā)流程設計 1. PSP路由轉發(fā)流程詳細設計 組件/流程 功能描述 FastPSPSource組件 按照一定的速度產生PSP報文,模擬發(fā)送端 FromDevice組件 從指定的端口獲取數(shù)據(jù)包,轉發(fā)到下一個組件 Classifier組件 數(shù)據(jù)包分類器,根據(jù)以太網頭部的類型信息進行分類,PSP報文的類型信息為0x6000 Get Dest Address 該步驟從
13、PSP報文頭部獲取目的地址,用來查詢路由表,獲取轉發(fā)端口 Lookup Router table 根據(jù)目的地址,查找路由表,獲取轉發(fā)端口 TTL—1 將報文TTL進行減一操作 ARP Query ARP查詢,獲取下一跳的目的Mac地址 Modify Ethernet Header 根據(jù)查詢到的下一跳目的Mac地址,修改報文以太網頭部目的Mac字段 Add to Queue 添加到待發(fā)送數(shù)據(jù)包的隊列中 ToDevice組件 從Queue中獲取數(shù)據(jù)包,從指定網口發(fā)送出去 2. Label報文轉發(fā)詳細設計 發(fā)送者生成PSP報文,經過AddLabelHeader組件添加標簽
14、頭,發(fā)送到路由器;Click 路由器從網口接受數(shù)據(jù),進過分類器后,確定為基于標簽交換的報文。然后查詢標簽信息庫,并修改下一條標簽號,經過TTL—1,目的MAC地址修改,轉發(fā)到相應端口。接受者從網口獲取數(shù)據(jù)包,丟掉LabelHeader。 組件/流程 功能介紹 AddLabelHeader 在普通PSP數(shù)據(jù)包上添加標簽頭信息,讓路由器可以基于標簽進行交換 Lookup LIB 查詢標簽信息庫,獲取下一跳Label ID和輸出端口 Modify Label for next jump 修改標簽頭 Label ID字段,讓下一跳路由可以轉發(fā) Remove Label Header
15、 移除Label Header,得到PSP報文 (四)主要組件設計 1. Fastpspsource組件 組件名字 Fastpspsource 功能描述 按照一定的速度生成PSP報文 端口類型 PORTS_0_1 0個輸入端口,一個輸出端口 處理方式 PULL方式 參數(shù)描述 FASTPSPSOURCE(RATE, LIMIT, LENGTH, SRCETH, SRCIP, SPORT, DSTETH, DSTIP, DPORT) RATE:發(fā)送速度; LIMIT:生成最大報文數(shù)量; LENGTH:報文的長度 SRCETH:源Mac地址 SRCIP:源IP地址
16、 SPORT:源端口號 DSTETH:目的Mac地址 DSTIP:目的IP地址 DPORT:目的端口號 2. LableRouteTable 主要功能:定義標簽信息結構,維護標簽信息庫,可以向里面添加、查詢、刪除標簽信息. 3. LableLookup 組件名字 LableLookup 功能描述 (1) 靜態(tài)配置標簽信息庫 (2) 實現(xiàn)基于標簽的查找轉發(fā) 端口類型 一個輸入端口,多個輸出端口 處理方式 PUSH方式 當一個帶有標簽的報文發(fā)送到LabelLookup組件,首先獲取Label標簽頭部的標簽號,查找標簽信息庫,以獲取“Out Label”和“Out
17、Port”,然后修改標簽頭部的標簽號為“Out Label”,并從“Out Port”端口發(fā)送出去。流程圖如下: 4. RateLimit 組件名字 RateLimit 功能描述 限制一個報文流的速度,即每秒發(fā)送多少報文 端口類型 PORTS_1_1 1個輸入端口,1個輸出端口 處理方式 PULL 參數(shù)描述 RateLimit (RATE) RATE:報文流的最大速率,即最多每秒發(fā)送多少個報文 三、實驗演示 (一)PSP路由轉發(fā)測試 1. 實驗拓撲圖 2. 實驗測試方法 實驗拓撲圖如下所示:Client 從Eth1網口發(fā)送數(shù)據(jù)到Router1 Eth1,Rou
18、ter1轉發(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 接受報文配置文件 FromDevice(eth2) -> PSPPrint() -> Discard; iii. Route
19、r1 轉發(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; c0[0]—〉psp; c0[1]->Discard; rt[0]-〉 PSPMacap(00:
20、0C:29:F4:DD:E6) —> Print(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) -〉
21、c0; c0[0]->psp; c0[1]->Discard; rt[0]—>Discard; rt[1]—> PSPMacap(00:0C:29:0E:9F:17) —〉 Print(rt2) -> out0; 4. 測試結果 v. 客戶端發(fā)送報文 vi. Router1 建立路由表以及轉發(fā) vii. Router2 建立路由表以及轉發(fā) viii. Client 接受到數(shù)據(jù)包并打印 5. 結果總結 實驗采用通過模擬兩臺路由器之間的路由轉發(fā)來測試,從實驗結果來看,Client 從Eth1網口發(fā)送出去的數(shù)據(jù)包,進過Router1和Router2的路由轉發(fā)后,能成
22、功到達目的端。該實驗結果說明,基于PSP報文的路由轉發(fā)功能完整實現(xiàn)。 (二)基于Label的路由轉發(fā)測試 1. 實驗拓撲圖 2. 配置文件 3. 測試結果 4. 結果總結 (三)優(yōu)先級隊列調度功能測試 1. 實驗拓撲圖 2. 實驗測試方法 Client發(fā)送優(yōu)先級不同的數(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ù)
23、據(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個優(yōu)先級為7的數(shù)據(jù)包······,并循環(huán)往復.其中我們設定數(shù)據(jù)包QoS位的范圍為1—8。其中1代表最高優(yōu)先級,8代表最低優(yōu)先級. 3. 配置文件 1) Router1接收端部分配置文件如下所示: c :: Classifier(14/41, 14/42, 14/43, 14/44, 14/45, 14/46, 1
24、4/47, 14/48, -); ps :: PrioSched; queue1 :: Queue(100); queue2 :: Queue(100); queue3 :: Queue(100); queue4 :: Queue(100); queue5 :: Queue(100); queue6 :: Queue(100); queue7 :: Queue(100); queue8 :: Queue(100); queue9 :: Queue(100); FromDevice(eth1) —〉 c; c[0]-> queue1 —〉 Shaper(6) —> ps;
25、 c[1]—〉 queue2 —> Shaper(6) —〉 [1]ps; c[2]-〉 queue3 -〉 Shaper(3) —〉 [2]ps; c[3]-> queue4 —> Shaper(3) -> [3]ps; c[4]-〉 queue5 -> Shaper(2) —〉 [4]ps; c[5]-〉 queue6 -〉 Shaper(2) -〉 [5]ps; c[6]-> queue7 —〉 Shaper(1) -〉 [6]ps; c[7]—> queue8 -> Shaper(1) —> [7]ps; c[8]—〉 queue9 -〉 Shaper(10) -> [
26、8]ps; 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),產生數(shù)據(jù)包的優(yōu)先級是從大變化到小,而通過優(yōu)先級隊列的調度,從隊列中讀出的數(shù)據(jù)包的優(yōu)先級從小變化到大.由于對每秒讀出各隊列的數(shù)據(jù)包數(shù)量進行了限制,因此不會有產生低優(yōu)先級被餓死的現(xiàn)象. 5. 結果總結 (四)標簽流
27、按優(yōu)先級分別進行限速功能測試 1. 實驗拓撲圖 1) 實驗測試方法 針對不同的優(yōu)先級,設置RateLimit組件不同的參數(shù)以達到限速的目的,報文由發(fā)送方產生并在一秒鐘之內發(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,
28、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); queue6 :: Queue(100); queue7 :: Queue(100); queue8 :: Queue(100); queue9 :: Queue(100); ps :: PrioSched; FromDev
29、ice(eth1) —〉 c; c[0]-> queue1 -〉Print("enter 0”)—>RateLimit(5)-> ps; c[1]—〉 queue2 —>Print("enter 1”)—> RateLimit(4) —> [1]ps; c[2]-〉 queue3 -〉 RateLimit(3) ->Print("enter 2")—> [2]ps; c[3]-〉 queue4 -> RateLimit(2) —>Print(”enter 3”)—〉 [3]ps; c[4]-> queue5 —〉 RateLimit(1) ->Print("enter 4")-> [
30、4]ps; c[5]—〉 queue6 —〉 RateLimit(1) —〉Print("enter 5")-〉 [5]ps; c[6]-〉 queue7 —〉 RateLimit(1) —〉Print("enter 6")-> [6]ps; c[7]-> queue8 -〉 RateLimit(1) -〉Print(”enter 7")-〉 [7]ps; c[8]-〉 queue9 —〉 RateLimit(0) ->Print(”enter 8”)-〉 [8]ps; ps -〉 Discard; 3. 測試結果 a) 將所有優(yōu)先級速率設為1(即一秒鐘接收一個報文)的情況時,結果如下: 這樣的限速結果等同于一個純優(yōu)先級隊列。 b) 將最高優(yōu)先級(0)速率設為5,然后低優(yōu)先級遞減的情況下,結果如圖所示: 由于發(fā)送與接收是同時進行的,所以結果看起來比較散亂,但是還是可以發(fā)現(xiàn)存在著明顯的優(yōu)先級關系以及最多存在最高優(yōu)先級連續(xù)的5個報文,這說明限速過程是有效的 。 4. 結果總結 四、實驗分工
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。