學會安裝封包產生器之後,免不了要打打看封包,這裡介紹如何將封包產生器和mininet結合
1. 首先,參考這篇,將Ryu&WEB GUI啟動起來,但是啟動RYU的指令,要換成下面這行,OpenFlow_13才支援等下要作的Push Vlan喔。
#./bin/ryu-manager --verbose --observe-links ryu/topology/switches.py ryu/app/rest_topology.py ryu/app/ofctl_rest.py ryu/app/simple_switch_13.py
2. 接著參考這裡,mininet啟動起來。指令換成下面這行,如此啟動起來的mininet才支援OpenFlow13。
#sudo mn --controller=remote --topo=tree,2 --switch ovsk,protocols=OpenFlow13
3. 接著,參考這篇的作法,啟動二個packETH。(就是開二個terminal,這個步驟作二次)
(在此假設各位已經照著安裝packETH了)
4. 參考這篇的作法,下flow entry到拓撲中的SWITCH。這次使用的flow entry 如下。[個人經驗:這裡要使用root權限,否則flow entry 送不出去。]
4.1. 封包進入到dpid:0x1的port 2,會加上vlan 10的vlan tag,然後從port 1送出
4.2. 封包進入到dpid:0x1的port 1,會加上vlan 99的vlan tag,然後從port 2送出
#curl -X POST -d '{"dpid":"0000000000000001", "priority":"32764","actions":[{"type":"PUSH_VLAN","ethertype":33024},{"type":"SET_FIELD","field":"vlan_vid","value":10}{"type":"OUTPUT","port":1}]},"match":{"in_port":2}' http://127.0.0.1:8080/stats/flowentry/add
#curl -X POST -d '{"dpid":"0000000000000001", "priority":"32764","actions":[{"type":"PUSH_VLAN","ethertype":33024},{"type":"SET_FIELD","field":"vlan_vid","value":99}{"type":"OUTPUT","port":2}]},"match":{"in_port":1}' http://127.0.0.1:8080/stats/flowentry/add |
4. 使用ifconfig看網卡的名字,這步基本上可有可無,我是習慣看一下。
5. 按下packETH上方的Interface按鈕,填入欲使用來輸出封包的網卡。注意!!這裡填入的封包是往外送的喔。
5.1 一個packETH填入s2-eth3。表示packETH產生的封包由s2-eth3傳給s1-eth1。
5.2 另一個packETH填入s3-eth3。表示packETH產生的封包由s3-eth3傳給s1-eth2。
5.3 可以用實體網卡的狀況來幫助思考,填eth0的話,表示封包會從eth0送出去。
6.把packETH其他欄位填一填,沒有填完的話,packETH會出現警告訊息,請你補填必要欄位。
7. 啟動Wireshark,抓s2-eth3->s1-eth1->s1-eth2->s3-eth3的封包。可以觀察到整個封包在流動過程中的變化。
留言列表