【mininet 0x01】mininet环境搭建
【mininet 0x02】如何使用mn工具来 *** 作mininet
【mininet 0x03】如何使用Python API来 *** 作mininet
【mininet 0x04】使用ryu作为mininet的controller完成HUB功能
【mininet 0x05】使用ryu作为mininet的controller完成L2Switch功能
文章目录
- mininet 系列文章链接归类:
- 前言
- 一、mininet 库功能一览
- 1、Topo 类
- 2、mininet 类
- 二、Mininet 库常用函数的详细介绍
- 三、如何使用
- 四、实战效果
- 总结
前言
上一节我们学习了如何用mn
工具去进行拓扑搭建,可以进入mn之后,手动创建switch、link、host ....
也可以根据mn工具预置好的拓扑形状进行拓扑创建,如果我们想自己定制一个拓扑形状,或者基于mininet做更多复杂的 *** 作,那么就需要调用 python API
去 *** 作mininet
。
mininet
拓扑结构的main class
:
建立和管理网路
的main class
:
Topo
类关键 func
一览表:
序号 | 方法 | 功能 |
---|---|---|
0 | addHost() | 给拓扑结构添加一个host,并返回host的名字 |
1 | addSwitch() | 给拓扑结构添加一个switch,并返回switch的名字 |
2 | addLink() | 给拓扑结构添加一个双向link,并返回link的key |
3 | build() | Topo类init()阶段会去调用的一个函数,可以通过此函数干预初始化函数预置拓扑 |
4 | port() | 根据src dst switch name 获取port_list |
Mininet
类关键 func
一览表:
序号 | 方法 | 功能 |
---|---|---|
0 | start() | 开启网路 |
1 | stop() | 关闭网路 |
2 | addSwitch() | 向拓扑中添加一台switch |
3 | addHost() | 向拓扑中添加一台host |
4 | addController() | 向拓扑中添加一个控制器 |
5 | addLink() | 向拓扑中添加一条双向连接 |
6 | addNAT() | 向mininet 网络中添加一个NAT规则 |
7 | net.hosts | 网路中所有的主机 |
8 | setLogLevel( ‘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
将
替换为自己编写的py文件即可。
在环境中 *** 作如下:
如果觉得每次都调用 sudo mn --custom
比较麻烦,可以将代码改为如下,使用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
里面用的controller
是ovs
自带的一个test_controller
,因此下一篇我们重点研究一下controller
。
以上便是mininet python API
的简单使用方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)