• 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
    
  • 相关阅读:
    mysql主从同步图
    VS2010智能提示失效,关键字不智能提示!
    mvc3的SaveChanges()方法无效,数据并没有更新!
    使用uploadify上传插件时遇到 NetworkError: 403 Forbidden http://xxxx/xxxx/ 错误
    Asp.net 调用mysql存储过程参数传中文乱码!
    The entity type XXXInfo is not part of the model for the current context.
    爬取汽车网站汽车数据
    《牛顿和莱布尼兹对最速降落线问题的解法,少为人知》 回复
    《谁能证明:标准波面的光若能汇集于一点,则它们的光程长度必然相等》 回复
    200^199 和 199^200 哪个大 ?
  • 原文地址:https://www.cnblogs.com/jianhaoscnu/p/12778951.html
Copyright © 2020-2023  润新知