Mininet虛擬網絡拓撲的創建方法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM