Click軟體路由器實驗

2021-07-07 06:52:52 字數 2997 閱讀 2707

click路由器的官方**

目標:構建一台軟體路由器

測試1:實現發包與接收

第一步:安裝vmware,在vmware裡安裝兩個ubuntu虛擬機器a和b(可以利用轉殖的方式減少空間占用),按照下圖為主機、虛擬機器新增網絡卡並配置網絡卡的ip。

編譯命令:進入click目錄,

./weconfig

make

第三步:修改click配置檔案。

1.修改vm1中的傳送配置檔案 /conf/zxzconf/pspgen.click

將源mac、源ip均設為vm1的eth1(注意:ip為倒位元組序)

;將目的mac、目的ip設為vm2的eth1。

2.修改vm2中的接收配置檔案 /conf/zxzconf/printpsp.click

fromdevice(eth1)

第四步:進行傳送與接收的測試。

在vm1中執行 pspgen.click, 在vm2中執行printpsp.click

測試2:實現資料報的**

在測試1的基礎上進行以下操作:

1.修改vm1中的傳送配置檔案 /conf/zxzconf/pspgen.click

將源mac、源ip均設為vm1的eth1(注意:ip為倒位元組序)

;將目的mac設為vm2的eth1(網路中的下一跳);

將目的ip設為vm1的eth2(真實的目的主機)。

ps:在這裡為什麼目的mac和目的ip不是同乙個網絡卡?

解答:mac層協議對於psp協議層是透明的,也就是說,源主機想把資料報傳送給真實的目的主機,所以報文中的目的ip位址是真實目的主機的ip,但是由於需要經過路由器進行**,所以資料報中的目的mac位址實際上是路由器的mac位址而不是真實目的主機的mac。資料報到達路由器後,路由器會根據目的ip查詢路由表得到真實目的主機mac,然後將資料報中的目的mac修改為真實的主機的mac,從而將資料報**給真實主機,達到本次通訊的目的。這就是為什麼上述目的mac與目的ip不是同乙個網絡卡的原因。

2.修改vm1中的接收配置檔案 /conf/zxzconf/printpsp.click

fromdevice(eth2)

3.修改vm2中的 /conf/zxzconf/******_psp_router.click ,參考下面**中的注釋部分。

// mytest-ip-route.click

//bob

//local eth1 192.168.64.12 00:0c:29:c7:34:04

//local eth2 10.129.64.12 00:0c:29:c7:34:0e

//alice

//dest eth1 192.168.64.11 00:0c:29:ea:48:1e

//dest eth2 10.129.64.11 00:0c:29:ea:48:28

psp :: print("forward psp pkt")

-> rt :: psplookup(

192.168.64.12.0.0.0.0 0, //這是psp協議的位址格式,後面跟的是埠號,意思是來自於前面那個位址的資料將會被送到0號埠進行處理

10.129.64.12.0.0.0.0 0,

192.168.64.11.0.0.0.0 1,

10.129.64.11.0.0.0.0 2);

c0 :: classifier(12/0600, -); //根據型別標記進行分類,忽略資料報的前12個位元組,如果第13個位元組和第14個位元組的內容是 0600,則發到埠0,否則發到埠1

out0 :: queue(200) -> todevice0 :: todevice(eth1);

c1 :: classifier(12/0600, -);

out1 :: queue(200) -> todevice1 :: todevice(eth2);

fromdevice(eth2) -> c0; //從eth2網絡卡接收到的資料會被送到c0分類器進行處理

c0[0]->psp; //分類器c0[0]的資料會被送到psp裡進行查表**,c0[1]中的資料會被丟棄

c0[1]->discard;

fromdevice(eth1) ->c1;

c1[0]->psp;

c1[1]->discard;

rt[0]->discard;

rt[1] -> pspmacap(00:0c:29:ea:48:28)

-> print(rt1)

-> out0;

// forwarding path for eth2

rt[2]-> pspmacap(00:0c:29:ea:48:28) //對於需要**的資料報,修改報文頭中的目的mac為真實目的主機的mac

-> print(rt2)

-> out1;

按照上面三步修改配置完後應該能夠實現**的功能了,但是經過測試發現,vm2能收到資料報,但是vm1並不能收到vm2**過來的資料。這是因為在click軟體路由器中,路由表預設是靜態的,也就是被寫死的,所以,需要手動修改ip才行。下面的第4步就是進行修改。

4.修改vm2中的 /elements/local/psproutetable.cc

第37行,改為vm1的eth2的ip(注意為倒位元組序)

5.make

6.在a中執行pspgen.click  和 printpsp.click , 在b中執行 ******_psp_router.click

路由器綜合實驗

路由綜合實驗 技術原理 為了支援本裝置能夠執行多個路由協議程序,系統軟體提供了路由資訊從乙個路由程序重分布到另乙個路由器程序的功能。實驗步驟 1.pc與交換機間用直線連線 pc與路由 路由與路由之間用交叉線連線。2.再三層交換機劃分2個vlan,執行ripv2協議 r2執行ospf協議 3.在路由器...

軟體路由器 硬體路由器簡單比較

路由器是網路中的核心裝置。硬體路由器是大家所熟悉的,最典型的就是cisco公司的系列路由器。軟體路由器是個新興的產品,比如tiny software推出的winroute pro軟體路由器,vicomsoft公司推出的internet gateway軟體路由器等等。與軟體為基礎的路由器比較,有人認為...

路由器配置DHCP實驗

我能否這樣看,所謂的dhcp 其本身從網路程式設計的角度來看 乙個dhcp 是乙個網路應用程式 凡是網路應用程式,都分客戶端和 網路端 同樣,對於dhcp這個網路程式,也不例外 dhcp客戶端 發出dhcp request,同時,接收來自dhcp伺服器端的應答 dhcp伺服器端 響應 dhcp客戶端...