1.通過Mininet命令行自動創建網絡拓撲
通過--topo參數來指定Mininet自帶的拓撲類型
可選參數
--topo=linear|single|tree: 指定SDN網路拓撲類型
--controller=remote,ip=xxx.xxx.xxx.xxx :指定接管SDN網絡的控制器
Mininet簡單網絡拓撲創建舉例
- minimal拓撲
sudo mn #sudo mn --topo minimal
- linear拓撲
sudo mn --topo=linear,5#創建線性拓撲模型,交換機個數為5
sudo mn --topo=linear,3,2 --controller=remote,ip=192.168.0.2
#創建線性拓撲模型,交換機個數為3,每個交換機下的主機數2
- single拓撲
sudo mn --topo=single,3#創建單一拓撲網路,交換機數量為1,主機數量為3
sudo mn --topo=single,5 --controller=remote
- tree拓撲
sudo mn --topo tree, fanout=2,depth=2
#depth代表深度,fanout代表扇出,即深度代表交換機的深度,扇出代表每個交換機下掛載主機數目
sudo mn --topo=tree,3,2 --controller=remote,ip=192.168.0.2 --mac
#--topo=tree,3,2:拓撲模型,交換機的深度或者層數,每層交換機下連接的主機或者交換機個數
#交換機深度(層數)為3層,第一層一個交換機,第二層2個交換機,第三層4個交換,主機:4 x 2 = 8
#--topo=tree,3,3: 三層,第一層一個交換機,第二層3個交換機,第三層9個交換, 主機:9 x 3 = 27
https://blog.csdn.net/wuliangtianzu/article/details/82689347
交互式界面創建主機、交換機
通過py命令執行Python表達式,例如添加網絡設備。
py net.addHost('h3')#給當前網絡net添加新的主機h3
py net.addLink(s1,net.get('h3'))#為主機h3和交換機s1之間添加一條鏈路
py s1.attach('s1-eth3')#給交換機s1添加端口eth3用於連接h3
py h3.cmd('ifconfig h3-eth0 10.3')#為主機h3配置端口及改端口的IP地址
#py net.get('h3').cmd('ifconfig h3-eth0 10.3')
h1 ping -c1 10.3# h1 ping h3
pingall#測試所有主機都是連通的

2.通過Python腳本自定義創建網絡拓撲
自定義型,是指通過py文件自定義拓撲類型,通過--custom和--topo兩個參數搭配指定。
使用簡單的Python API輕松定義自定義拓撲,並在其中提供了一個在mininet/custom目錄下示例代碼
topo-2sw-2host.py

"""Custom topology example
Two directly connected switches plus a host for each switch:
host --- switch --- switch --- host
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
"""
from mininet.topo import Topo
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts and switches
leftHost = self.addHost( 'h1' )
rightHost = self.addHost( 'h2' )
leftSwitch = self.addSwitch( 's3' )
rightSwitch = self.addSwitch( 's4' )
# Add links
self.addLink( leftHost, leftSwitch )
self.addLink( leftSwitch, rightSwitch )
self.addLink( rightSwitch, rightHost )
topos = { 'mytopo': ( lambda: MyTopo() ) }
提供自定義的mininet文件后,它可以向命令行添加新的拓撲,交換機類型和測試。
sudo mn --custom ~/mininet/custom/topo-2sw-2host.py

sudo mn --custom ~/mininet/custom/topo-2sw-2host.py --topo mytopo --test pingall
退出mininet之后,使用sudo mn -c刪除緩存
附:常用的mininet命令
nodes #查看有哪些可用節點
net #查看鏈路信息,兩個設備之間的之間連線,稱為一個鏈路,鏈路是雙向的
links #檢測鏈路是否正常工作
ports
dump #查看所有節點信息
link #link s1 s2 down/up 禁用/開啟s1和s2這兩個節點之間的鏈路
iperf #如iperf h1 h2測試兩個主機h1和h2之間的TCP帶寬
iperfupd #iperfupd bw h1 h2 測試兩個主機h1和h2之間的UDP帶寬
pingall #所有節點相互ping
pingallfull #所有節點相互ping,返回詳細x信息
xterm #如xterm h1打開主機h1的操作口
py #execute python expression
sh #Run external shell command
