您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页MININET部分指令以及其用法总结

MININET部分指令以及其用法总结

来源:爱go旅游网
下载安装Virtualbox

Virtualbox中加载mininet镜像

MININET部分指令以及其用法总结

$ sudo mn --topo=single,3 --mac --switch=ovsk --controller=remote,IP=192.168.56.1

(例子)

运行mininet并创建一个简单的拓扑(1个switch,3个host);

创建的host拥有的MAC地址相当于独立的IP,OpebFlow switch拥有3个端口; 创建的switch连接到remote控制器上。

以下为一些简单但是很有用的指令: mininet > node mininet > help mininet > h1 ifconfig mininet > xterm h1 mininet > exit 查看mininet中结点的状态。 获取帮助列表。 查看host1的IP等信息。 打开host 1的终端。 退出mininet登录。 dpctl 使用和说明

dpctl是一个可以分配、修改和管理流表的功能指令,指令格式为:

$ dpctl

比较常用的有:

显示基本信息

dpctl show tcp::6634 显示流表

dpctl dump-flows tcp::6634 添加流表

dpctl add-flow tcp:127.0.0.1:6634 in_port=2,idle_timeout=360, actions=output:3

使用MININET

创建拓扑结构

MININET支持用参数表示的拓扑结构,通过简单的几行Python代码就可以建立相当灵活的拓扑结构,下面给出一个简单的例子:

from mininet.topo import Topo from mininet.net import Mininet from mininet.util import dumpNodeConnections from mininet.log import setLogLevel class SingleSwitchTopo(Topo): \"交换机连接到host上\" def __init__(self, n=2, **opts): # 初始化拓扑和默认选项 Topo.__init__(self, **opts) switch = self.addSwitch('s1') # Python的范围函数range(N) 生成 0...N-1 for h in range(n): host = self.addHost('h%s' % (h + 1)) self.addLink(host, switch) def simpleTest(): \"创建简单的测试网络\" topo = SingleSwitchTopo(n=4) net = Mininet(topo) net.start() print \"显示host连接关系\" dumpNodeConnections(net.hosts) print \"测试网络连通性\" net.pingAll() net.stop() if __name__ == '__main__': # Tell mininet to print useful information setLogLevel('info') simpleTest() 重要的类、方法、函数和变量包括在上面的代码; Topo: Mininet基本的拓扑类; switch到拓扑中并返回switch名; host到拓扑中并返回host名; addSwitch():添加一个addHost():添加一个addLink():Links in Mininet are bidirectional unless noted otherwise.添加双向链路到拓扑中,在Mininet中链路都是双向的,除非特别注明; Mininet: 主类,用来创建和管理网络; start(): 开始运行网络; pingAll():通过各个节点的互相stop(): 结束网路; net.hosts: 网络中的所有ping来检测网络连通性; host; dumpNodeConnections(): dumps connections to/from a set of nodes. setLogLevel( 'info' | 'debug' | 'output' ): Mininet设置的默认输出等级,“info”是推荐的,因为它提供了有用的信息。

设置性能参数

除了基础的行为网络,MININET还通过CPULimitedHost 和 TCLink两个类提供了性能限制和隔离。有很多种 方式使用这些类,但有一个简单的方法来说明他们作为Mininet()的host和link的类或者构造函数,然后在拓扑中选择适当的参数设定。(你也可以指定自定义类拓扑本身, 或创建自定义节点和链接构造函数和/或子类)

from mininet.topo import Topo from mininet.net import Mininet from mininet.node import CPULimitedHost from mininet.link import TCLink from mininet.util import dumpNodeConnections from mininet.log import setLogLevel class SingleSwitchTopo(Topo): \"switch链接到N个host.\" def __init__(self, n=2, **opts): Topo.__init__(self, **opts) switch = self.addSwitch('s1') for h in range(n): # 每个host获得系统50%/n的cpu占用 host = self.addHost('h%s' % (h + 1), cpu=.5/n) # 10 Mbps,5毫秒的延迟,10%损失,1000包队列 self.addLink(host, switch, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True) def perfTest(): \"Create network and run simple performance test\" topo = SingleSwitchTopo(n=4) net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink) net.start() print \"Dumping host connections\" dumpNodeConnections(net.hosts) print \"Testing network connectivity\" net.pingAll() print \"Testing bandwidth between h1 and h4\" h1, h4 = net.get('h1', 'h4') net.iperf((h1, h4)) net.stop() if __name__ == '__main__': setLogLevel('info') perfTest() 一些重要的方法和参数:

self.addHost(name, cpu=f): .可以让你指定一小部分整个系统CPU所分配给host的资源。 self.addLink( node1, node2, bw=10, delay='5ms', max_queue_size=1000, loss=10, use_htb=True):添加双向链路、延迟和损失特性, 这里的参数 bw 表示带宽的数值 ; delay 表示一串计量字符; (例如:'5ms', '100us', '1s'); loss is 表示丢失百分比 (数值在max_queue_size 表示数据包。 net.get():检索一个节点(host0 ~100之间); 或switch)对象的名字。如果你想向主机发送一个命令(例如使用host.cmd())并获得它的输出,检索一个结点的名字就会很重要。注意:在当前Mininet的主分支,您可以简单地使用括号(如 [' h1 '])来检索给定节点的名字。

未完待续....

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务