1.针对特定拓扑的命令行快速创建
2.使用Python 脚本自定义创建线性拓扑
3. 实验中遇到的坑
1.针对特定拓扑的命令行快速创建
$ sudo mn --topo tree, fanout=2,depth=2

2.使用Python 脚本自定义创建线性拓扑
使用python代码搭建一个交换机和主机数均为3的线性拓扑结构,该线性拓扑结构如下图:

检测代码如下:
# coding=UTF-8
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
def IperfTest():
net = Mininet(host=CPULimitedHost, link=TCLink)
c0 = net.addController()
h1 = net.addHost(\'h1\' , cpu=0.5)
h2 = net.addHost(\'h2\', cpu=0.5)
h3 = net.addHost(\'h3\')
#h4 = net.addHost(\'h4\')
s1 = net.addSwitch(\'s1\')
s2 = net.addSwitch(\'s2\')
s3 = net.addSwitch(\'s3\')
net.addLink(h1, s1, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
net.addLink(h2, s2, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
net.addLink(h3, s3, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
net.addLink(s1, s2, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
net.addLink(s2, s3, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
#net.addLink(h4, s2, bw=10, delay=\'5ms\',max_queue_size=1000, loss=0, use_htb=True)
h1.setIP(\'10.0.0.1\', 24)
h2.setIP(\'10.0.0.2\', 24)
h3.setIP(\'10.0.0.3\', 24)
#h4.setIP(\'10.0.0.4\', 24)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
print "Testing bandwidth"
h1, h2, h3 = net.get(\'h1\', \'h2\', \'h3\')
#net.iperf((s1, s3))
net.iperf((h2, h1))
net.iperf((h3, h1))
net.iperf((h3, h1))
net.stop()
if __name__==\'__main__\':
setLogLevel(\'info\') #print the log when Configuring hosts, starting switches and controller
IperfTest()

3. 实验中遇到的坑
(1)PDF中代码存在着空格,将空格去除,运行指令则可以正常建立拓扑。
$ sudo mn --topo tree, fanout=2,depth=2
(2)出现如下图报错
Caught exception. Cleaning up...
Exception: Please shut down the controller which is running on port 6653:
激活Internet连接 (服务器和已建立连接的)
tcp 0 0 0.0.0.0:6653 0.0.0.0:* LISTEN 4519/controller
tcp 0 0 127.0.0.1:43514 127.0.0.1:6653 ESTABLISHED 1112/ovs-vswitchd
tcp 0 0 127.0.0.1:6653 127.0.0.1:43514 ESTABLISHED 4519/controller
tcp 0 0 127.0.0.1:43512 127.0.0.1:6653 ESTABLISHED 1112/ovs-vswitchd
tcp 0 0 127.0.0.1:6653 127.0.0.1:43516 ESTABLISHED 4519/controller
tcp 0 0 127.0.0.1:43516 127.0.0.1:6653 ESTABLISHED 1112/ovs-vswitchd
tcp 0 0 127.0.0.1:43518 127.0.0.1:6653 TIME_WAIT -
tcp 0 0 127.0.0.1:6653 127.0.0.1:43512 ESTABLISHED 4519/controller
原因是构建了拓扑之后,没有清除,直接建立拓扑会出现错误,所以若在.py文件中构建拓扑图时需要运行以下指令先清除掉先前的拓扑结构避免出现意外情况。
$ sudo mn -c
(3) 建立拓扑结构需要在python文件中建立交换机与交换机之间的链路,交换机与主机之间的链路,才能正确得出结果。