嘗試ping宿主機ip地址,此時可以ping同與虛擬機相連的虛擬網卡ip地址,沒法ping同其餘網卡ip地址node
sudo mn
此時,在虛擬機中含如下網絡節點bash
hosts: h1 h2 switches: s1 links: (h1, s1) (h2, s1) controller:c0
其中h1和h2的ip分別爲10.0.0.1
和10.0.0.2
網絡
新建topo-2sw-2host.py併發
from mininet.topo import Topo class MyTopo( Topo ): "Simple topology example." def build( self ): "Create custom topo." # Add hosts and switches h3 = self.addHost( 'h3',ip='10.0.0.3' ) h4 = self.addHost( 'h4',ip='10.0.0.4' ) leftSwitch = self.addSwitch( 's3' ) # Add links self.addLink( h3, leftSwitch ) self.addLink( leftSwitch,h4) topos = { 'mytopo': ( lambda: MyTopo() ) }
經過命令sudo mn --custom topo-2sw-2host.py --topo mytopo
建立網絡topo
其中h1和h2的ip分別爲10.0.0.3
和10.0.0.4
測試
控制器可以幫助switch創建流表,若是要手動創建nodes連接關係,須要先關閉控制器。ui
注意:也能夠在mn命令的最後添加 --controller remote
關閉controller,以省略如下步驟
在關閉控制器前測試h1與h2之間互ping,由於controller的存在,彼此可以ping通。
在宿主機和虛擬機中分別輸入sudo killall controller
關閉控制器,這時候再嘗試ping,發現沒法ping通。由於switch中流表爲空。
執行sh ovs-ofctl dump-flows s1
,能夠看到流表爲空,其信息以下code
mininet> sh ovs-ofctl dump-flows s1 NXST_FLOW reply (xid=0x4):
運行sh ovs-vsctl add-port s1 vxlan
添加vxlan端口。
在虛擬機中,端口能夠成功成功建立,但在宿主機中建立失敗,提示錯誤信息:blog
mininet> sh ovs-vsctl add-port s13vxlan ovs-vsctl: Error detected while setting up 'vxlan': could not open network device vxlan (No such device). See ovs-vswitchd log for details. ovs-vsctl: The default log directory is "/var/log/openvswitch".
解決方案以下ip
The port‘s name should be a exist interface use ifconfig to see, such as eth0. If you just want to use a virtual port name to make a test you should specify the port's type like ovs-vsctl add-port br0 port0 -- set Interface port0 type=internal or ovs-vsctl set Interface port0 type=internal
將指令改成ci
sh ovs-vsctl add-port s3 vxlan -- set Interface vxlan type=internal
在虛擬機中輸入如下指令
sh ovs-vsctl set interface vxlan type=vxlan option:remote_ip=10.0.0.7 option:key=100 ofport_request=10
其中 ip地址是宿主機的ip,key是vxlan的標籤,opport_request是端口名稱
在宿主機中須要將以上命令的ip改成虛擬機的ip地址。
以上創建的網絡形式以下
其中R爲路由器,s1和s2爲交換機,h1-h4爲主機