2019 SDN上機第2次做業

1.做業要求:

  • 利用mininet建立給定的拓撲,要求拓撲支持OpenFlow 1.3協議,主機名、交換機名以及端口對應正確,並給出拓撲Mininet執行結果,展現端口鏈接狀況
  • 直接在Open vSwitch下發流表,實現給定的連通性要求,並逐條說明所下發的流表含義
  • 直接在Open vSwitch查看流表,提交OVS命令執行結果
  • 提交主機連通性測試結果,驗證流表的有效性
  • 利用Wireshark抓包,分析驗證特定報文
  • 做業博客連接:https://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/9925

2.具體操做步驟與截圖說明:

實驗環境:VMware Workstation Pro14.一、ubuntu-16.04ubuntu

(1)利用mininet建立以下拓撲,要求拓撲支持OpenFlow 1.3協議,主機名、交換機名以及端口對應正確,給出拓撲Mininet執行結果,展現端口鏈接狀況:

  • 給定的拓撲結構以下所示:

  • 操做步驟:網絡

    a.利用可視化工具miniedit搭建以下拓撲結構:工具

​ b.進入edit->preferences,勾選OpenFlow1.3和start CLI兩個功能項:
測試

​ c.點擊Run按鈕,運行網絡,並使用net命令查看網絡拓撲:
.net

​ 經過使用net命令,咱們能夠從網絡拓撲結構中看出交換機s1的端口4與交換機s2的端口1相鏈接;主機h一、h二、h3分別與交換機s1的端口一、端口二、端口3相連;主機h四、h五、h6分別與交換機s2的端口二、端口三、端口4相連。3d

​ d.使用pingall命令進行連通性測試:
code

(2)在Open vSwitch下發流表,實現以下連通性要求,逐條說明所下發的流表含義:

  • h1 -- h4互通
  • h2 -- h5互通
  • h3 -- h6互通
  • 其他主機不通

a.將主機h一、h二、h3發送給交換機s1的數據包打上不一樣的vlan tag,並從s1的端口4向交換機s2轉發:blog

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4
//輸入端口爲s1的1端口,輸出端口爲s1的4端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4
//輸入端口爲s1的2端口,輸出端口爲s1的4端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4
//輸入端口爲s1的3端口,輸出端口爲s1的4端口;

b.將發送給交換機s1端口4的數據包去除vlan tag,並根據不一樣的標籤發送給相對應的主機:get

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=2,actions=pop_vlan,output:3

c.將主機h四、h五、h6發送給交換機s2的數據包打上不一樣的vlan tag,並從s2的端口1向交換機s1轉發:博客

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:1
//輸入端口爲s2的2端口,輸出端口爲s2的1端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:1
//輸入端口爲s2的3端口,輸出端口爲s2的1端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=4,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:1
//輸入端口爲s2的4端口,輸出端口爲s2的1端口;

d.將發送給交換機s2端口1的數據包去除vlan tag,並根據不一樣的標籤發送給相對應的主機:

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:3
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=2,actions=pop_vlan,output:4

完整實驗過程的截圖以下所示:

參考連接:https://blog.csdn.net/rocson001/article/details/73163041

(3)直接在Open vSwitch查看流表,提交OVS命令執行結果:

a.查看交換機s1的流表:

sudo ovs-ofctl -O OpenFlow13 dump-flows s1

提交OVS命令執行結果以下所示:

b.查看交換機s2的流表:

sudo ovs-ofctl -O OpenFlow13 dump-flows s2

提交OVS命令執行結果以下所示:

(4)提交主機連通性測試結果,驗證流表的有效性:

經過pingall命令查看主機連通性,測試結果以下所示:

​ 從主機連通性測試結果中能夠看出,主機h1只能與主機h4ping通,主機h2只能與主機h5ping通,主機h3只能與主機h6ping通,其他主機ping不通,從而驗證了流表的有效性。

(5)利用Wireshark抓包,分析驗證特定報文:

a.啓動wireshark:

sudo wireshark

b.啓動wireshark以後執行pingall命令,而後在wireshark中進行報文抓取,可經過過濾器選中ICMP報文,查看主機間的通訊信息:

3.實驗總結:

​ 經過此次實驗,我熟悉了Open vSwitch這一工具的使用,瞭解瞭如何經過一些經常使用的OVS命令來下發流表和查看流表,如何檢測主機的連通性測試效果以及如何利用Wireshark抓包,分析驗證特定報文,有了很多的收穫!

相關文章
相關標籤/搜索