2019 SDN上機第2次做業

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

可使用miniedit建立相關拓撲也可使用python代碼編寫拓撲的方式建立相關拓撲,本次採用miniedit

端口鏈接狀況以下(注意連線順序):
python

2. 直接在Open vSwitch下發流表,用vlan獲得下列虛擬網段,請逐條說明所下發的流表含義

使用如下命令能夠實現爲主機一、二、3發送的報文分別打上不一樣的vlan_id並從交換機s1端口4發送出去併發

add-flow須要注意的參數爲 協議(OpenFlow13)、交換機(s1)、進端口(in_port)、對匹配報文執行的操做(actions=)、在報文外層壓入一層vlan tag(push_vlan)、設置VLAN ID(set field值爲4096+vlan_id)、出端口(output)
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=1,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4//將交換機s1從端口1收到的報文打上vid = 1 的vlantag並從端口4發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=2,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4//將交換機s1從端口2收到的報文打上vid = 2 的vlantag並從端口4發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=3,actions=push_vlan:0x8100,set_field:4099-\>vlan_vid,output:4//將交換機s1從端口3收到的報文打上vid = 3 的vlantag並從端口4發送出去

使用如下命令能夠實現爲交換機s1從端口4收到的報文執行拆vlan_id操做併發送給對應的主機測試

add-flow須要注意的參數爲 協議(OpenFlow13)、進端口(in_port)、匹配VLAN ID(dl_vlan)、對匹配報文執行的操做(actions=)、拆除vlan(strip_vlan)、出端口(output)
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=1,actions=strip_vlan,output:1//將s1從端口4收到的vlan_id=1的報文拆除vlan_tag並從端口1發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=2,actions=strip_vlan,output:2//將s1從端口4收到的vlan_id=2的報文拆除vlan_tag並從端口2發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=3,actions=strip_vlan,output:3//將s1從端口4收到的vlan_id=3的報文拆除vlan_tag並從端口3發送出去

使用如下命令能夠實現爲主機四、五、6發送的報文分別打上不一樣的vlan_id並從交換機s2端口4發送出去3d

add-flow須要注意的參數爲 協議(OpenFlow13)、交換機(s2)、進端口(in_port)、對匹配報文執行的操做(actions=)、在報文外層壓入一層vlan tag(push_vlan)、設置VLAN ID(set field值爲4096+vlan_id)、出端口(output)
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=1,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4//將交換機s2從端口1收到的報文打上vid = 1 的vlantag並從端口4發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=2,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4//將交換機s2從端口2收到的報文打上vid = 2 的vlantag並從端口4發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=3,actions=push_vlan:0x8100,set_field:4099-\>vlan_vid,output:4//將交換機s2從端口3收到的報文打上vid = 3 的vlantag並從端口4發送出去

使用如下命令能夠實現爲交換機s2從端口4收到的報文執行拆vlan_id操做併發送給對應的主機code

add-flow須要注意的參數爲 協議(OpenFlow13)、進端口(in_port)、匹配VLAN ID(dl_vlan)、對匹配報文執行的操做(actions=)、拆除vlan(strip_vlan)、出端口(output)
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=1,actions=strip_vlan,output:1//將s2從端口4收到的vlan_id=1的報文拆除vlan_tag並從端口1發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=2,actions=strip_vlan,output:2//將s2從端口4收到的vlan_id=2的報文拆除vlan_tag並從端口2發送出去
sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=3,actions=strip_vlan,output:3//將s2從端口4收到的vlan_id=3的報文拆除vlan_tag並從端口3發送出去

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


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

5. 利用Wireshark抓包,分析驗證特定報文

抓取eth4端口報文,獲得以下報文信息

咱們主要關注鏈路層的報文,這裏的鏈路層報文是802.1q,注意觀察他的vlan字段,若是觀察全部報文的話就會發現,只有vlan_id相等才能實現主機間的交流(圖中僅展出一例,是主機2和主機5的交互報文)
blog

相關文章
相關標籤/搜索