实验1基础
代码
实验1进阶
代码
pingall截图
同一交换机内部的主机间连通性及通信带宽测试(h1 h2)
相同汇聚交换机下不同机架的主机间测试(h1 h3)
相同核心交换机不同汇聚交换机下的主机间测试(h1 h5)
实验2基础
Pingall命令截图
Ovs流表的命令结果截图
H1 ping H3 抓包
H2 ping H4 抓包
进阶
代码
#!/usr/bin/env python
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call
def myNetwork():
net = Mininet( topo=None,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
c0=net.addController(name='c0',
controller=Controller,
protocol='tcp',
port=6633)
info( '*** Add switches\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
info( '*** Add hosts\n')
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
info( '*** Add links\n')
net.addLink(h1, s1, 1, 1)
net.addLink(h2, s1, 1, 2)
net.addLink(s1, s2, 3, 3)
net.addLink(h4, s2, 1, 2)
net.addLink(h3, s2, 1, 1)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches\n')
net.get('s1').start([c0])
net.get('s2').start([c0])
info("*** Send the flow table down\n\n")
s1.cmd('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
s1.cmd('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
s1.cmd('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output=1')
s1.cmd('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output=2')
s2.cmd('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
s2.cmd('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
s2.cmd('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output=1')
s2.cmd('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output=2')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
效果截图
- 实验难度:中等。
- 遇到的困难及解决办法:
- 1.整个过程最麻烦的步骤在于安装环境,因为很多的导包都是直接通国外的,所以要挂梯子才可以执行
- 2.实验1只运用到了python的循环部分,稍微理解一下就能上手。
- 3.在最开始进阶运行没法正常ping通,是因为stp默认关闭,直接出现了环路,必须的在运行的时候启动stp,才可以正常通信,并且因为stp需要计算生成树,还得等一会才能收敛成功
- 4,因为环境的问题,CIL没法正常写入脚本,只能自己手动在末尾加上这段配置
- 5,实验2开始,出现了许多没有见过的语法配置,虽然简单易懂,但是想要记住还是蛮困难的。