介紹
本示例將創建兩個OVS實例和兩個主機,其中每個OVS上接入一個主機,OVS實例之間有鏈路連接,形成一個鏈狀拓撲,如圖。在OVS組網完成之后,再通過手動方式添加流表,實現網絡通信,從而驗證實驗可行性。具體步驟如下。
創建交換機
root@mininet:~# ovs-vsctl add-br s1
root@mininet:~# ovs-vsctl add-br s2
添加端口
root@mininet:~# ovs-vsctl add-port s1 p1 #在交換機s1上添加port設置
root@mininet:~# ovs-vsctl set Interface p1 ofport_request=10
root@mininet:~# ovs-vsctl set Interface p1 type=internal
同理,創建交換機sl上的端口p2,s2上的端口p3、p4。
root@mininet:~# ovs-vsctl add-port s1 p2
root@mininet:~# ovs-vsctl set Interface p2 ofport_request=11
root@mininet:~# ovs-vsctl set Interface p2 type=internal
root@mininet:~# ovs-vsctl add-port s2 p3
root@mininet:~# ovs-vsctl set Interface p3 ofport_request=1
root@mininet:~# ovs-vsctl set Interface p3 type=internal
root@mininet:~# ovs-vsctl add-port s2 p4
root@mininet:~# ovs-vsctl set Interface p4 ofport_request=2
root@mininet:~# ovs-vsctl set Interface p4 type=internal
分別查看添加端口后的交換機
添加主機
為了不影響網絡中已有地址發生沖突,需要創建Namespace作為實驗的終端主機。創建主機之后,需要為其設置虛擬IP,最后將其連接到OVS的數據端口,完成主機接入工作。本實驗中,我們創建了hl和h2兩個虛擬主機,設置IP分別為192.168.10.10和192.168.10.11,並將這兩個主機分別接入到兩個OVS實例上。
root@mininet:~# ip link set p4 netns h2
root@mininet:~# ip netns exec h2 ip addr add 192.168.10.11/24 dev p4
root@mininet:~# ip netns exec h2 ifconfig p4 promisc up
root@mininet:~# ip link set p1 netns h1
root@mininet:~# ip netns exec h1 ip addr add 192.168.10.10/24 dev p1
root@mininet:~# ip netns exec h1 ifconfig p1 promisc up
創建交換機鏈路
首先,需要將對應的端口設置為patch類型
root@mininet:~# ovs-vsctl set interface p2 type=patch
root@mininet:~# ovs-vsctl set interface p3 type=patch
創建p2到p3的內部鏈路,命令如下
root@mininet:~# ovs-vsctl set interface p2 options:peer=p3
root@mininet:~# ovs-vsctl set interface p3 options:peer=p2
最后,還需要向交換機添加對應的流表項,將交換機sl從10端口進入的數據轉發到11端口,反向同理,s2操作同s1,具體操作如下。
root@mininet:~# ovs-ofctl add-flow s1 "in_port=10,actions=output:11"
root@mininet:~# ovs-ofctl add-flow s1 "in_port=11,actions=output:10"
root@mininet:~# ovs-ofctl add-flow s2 "in_port=2,actions=output:1"
root@mininet:~# ovs-ofctl add-flow s2 "in_port=1,actions=output:2"
創建完成之后,查看流表
在Network Namespace h1環境下執行ping 192.168.10.11的操作
ovs命令 https://blog.csdn.net/rocson001/article/details/73163041