【mininet 0x03】如何使用Python API来操作mininet

mininet

mininet 系列文章链接归类:

【mininet 0x01】mininet环境搭建
【mininet 0x02】如何使用mn工具来操作mininet
【mininet 0x03】如何使用Python API来操作mininet
【mininet 0x04】使用ryu作为mininet的controller完成HUB功能
【mininet 0x05】使用ryu作为mininet的controller完成L2Switch功能



前言

  上一节我们学习了如何用mn工具去进行拓扑搭建,可以进入mn之后,手动创建switch、link、host ....也可以根据mn工具预置好的拓扑形状进行拓扑创建,如果我们想自己定制一个拓扑形状,或者基于mininet做更多复杂的操作,那么就需要调用 python API去操作mininet

一、mininet 库功能一览

1、Topo 类

   mininet拓扑结构的main class

在这里插入图片描述

2、mininet 类

   建立和管理网路main class

在这里插入图片描述

二、Mininet 库常用函数的详细介绍

   Topo类关键 func一览表:

序号方法功能
0addHost()给拓扑结构添加一个host,并返回host的名字
1addSwitch()给拓扑结构添加一个switch,并返回switch的名字
2addLink()给拓扑结构添加一个双向link,并返回link的key
3build()Topo类init()阶段会去调用的一个函数,可以通过此函数干预初始化函数预置拓扑
4port()根据src dst switch name 获取port_list

   Mininet类关键 func一览表:

序号方法功能
0start()开启网路
1stop()关闭网路
2addSwitch()向拓扑中添加一台switch
3addHost()向拓扑中添加一台host
4addController()向拓扑中添加一个控制器
5addLink()向拓扑中添加一条双向连接
6addNAT()向mininet 网络中添加一个NAT规则
7net.hosts网路中所有的主机
8setLogLevel( ‘info’ ‘debug’ ‘output’ )设置日志等级

三、如何使用

四、实战效果

   拉出官方的例子:

"""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 build( self ):
        "Create custom topo."

        # 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库的使用介绍:

To start up a mininet with the provided custom topology, do:
  sudo mn --custom <custom_example.py> --topo mytopo

  将 <custom_example.py> 替换为自己编写的py文件即可。

  在环境中操作如下:
在这里插入图片描述

如果觉得每次都调用 sudo mn --custom <custom_example.py> --topo mytopo 比较麻烦,可以将代码改为如下,使用python代码创建mininet网络并进入mininet CLI

#!/usr/bin/python
"""Custom topology example

Two directly connected switches plus a host for each switch:

   host --- switch --- switch --- host
"""

from mininet.cli import CLI
from mininet.topo import Topo
from mininet.net import Mininet

class MyTopo( Topo ):
    "Simple topology example."

    def build( self ):
        "Create custom topo."

        # 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 )

if __name__ == '__main__':
    net = Mininet(topo=MyTopo())
    net.start()
    CLI(net)
    net.stop()

在这里插入图片描述

  PS: 在上述实验中过程中,比较好奇mininet使用的是哪个controller,无意间搜到如下进程:
  /usr/bin/ovs-testcontroller ptcp:6653
在这里插入图片描述
  因此demo里面用的controllerovs自带的一个test_controller,因此下一篇我们重点研究一下controller

总结

  以上便是mininet python API 的简单使用方法。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值