该文在这篇文章基础上修改的,亲测可以实现传输,将在更复杂的网络拓扑上测试。详细过程见这里,后面会修改完善。
评价环境
实验评价的环境如下图所示,Mininet拓扑由两台主机(h1和h2)和一台交换机组成(运行在虚拟机中)。h1和交换机间的链路为无损的,h2与交换机间的链路是有损的且丢失率为5%。在该实验中,h1和h2可运行VLC RTP发送端程序,并发送视频数据包给宿主机的VLC客户端。如此,我们可在宿主机VLC客户端中观察视频的传输质量。结论:h2发送的视频质量较低。
实验脚本
具体不多做解释了,对Mininet不熟悉的可以看这里。
#!/usr/bin/env python import os from mininet.net import Mininet from mininet.node import Controller, RemoteController from mininet.cli import CLI from mininet.link import TCLink from mininet.link import Intf from mininet.log import setLogLevel, info def myNetwork(): net = Mininet( topo=None, build=False) info( '*** Adding controller\n' ) net.addController(name='c0') info( '*** Add switches\n') s1 = net.addSwitch('s1') info( '*** Add hosts\n') h1 = net.addHost('h1', ip='0.0.0.0') h2 = net.addHost('h2', ip='0.0.0.0') info( '*** Add links\n') net.addLink(h1, s1, cls=TCLink, bw=10, delay='1ms', loss=0) net.addLink(h2, s1, cls=TCLink, bw=10, delay='1ms', loss=5) info( '*** Starting network\n') net.start() os.popen('ovs-vsctl add-port s1 enp0s5') h1.cmdPrint('dhclient '+h1.defaultIntf().name) h2.cmdPrint('dhclient '+h2.defaultIntf().name) CLI(net) net.stop() if __name__ == '__main__': setLogLevel( 'info' ) myNetwork()
上述代码中的enp0s5为虚拟机的虚拟网卡,请根据实际修改(可能为eth0)。