MININET部分指令以及其用法总结
MINI局部指令以及其用法总结 - 教育文库 下载安装Virtualbox Virtualbox中加载mini镜像 MINI局部指令以及其用法总结 $ sudo mn -topo=single,3 -mac -switch=ovsk -controller=remote,IP=192.168.56.1 例子 运行mini并创立一个简单的拓扑1个switch,3个host); 创立的host拥有的MAC地址相当于独立的IP,OpebFlow switch拥有3个端口; 创立的switch连接到remote控制器上。 以下为一些简单但是很有用的指令: mini > node mini > help mini > h1 ifconfig mini > xterm h1 mini > exit 查看mini中结点的状态。 获取帮助列表。 查看host1的IP等信息。 翻开host 1的终端。 退出mini登录。 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 使用MINI 创立拓扑构造 MINI支持用参数表示的拓扑构造,通过简单的几行Python代码就可以建立相当灵敏的拓扑构造,下面给出一个简单的例子: from mini.topo import Topo from mini. import Mini from mini.util import dumpNodeConnections from mini.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) = Mini(topo) .start print 显示host连接关系 dumpNodeConnections(.hosts) print 测试网络连通性 .pingAll .stop if _name_ = '_main_': # Tell mini to print useful information setLogLevel('info') simpleTest 重要的类、方法、函数和变量包括在上面的代码; Topo: Mini根本的拓扑类; switch到拓扑中并返回switch名; host到拓扑中并返回host名; addSwitch:添加一个addHost:添加一个addLink:Links in Mini are bidirectional unless noted otherwise.添加双向链路到拓扑中,在Mini中链路都是双向的,除非特别注明; Mini: 主类,用来创立和管理网络; start: 开场运行网络; pingAll:通过各个节点的互相stop: 完毕网路; .hosts: 网络中的所有ping来检测网络连通性; host; dumpNodeConnections: dumps connections to/from a set of nodes. setLogLevel( 'info' | 'debug' | 'output' ): Mini设置的默认输出等级,“info”是推荐的,因为它提供了有用的信息。 设置性能参数 除了根底的行为网络,MINI还通过CPULimitedHost 和 TCLink两个类提供了性能限制和隔离。有很多种 方式使用这些类,但有一个简单的方法来说明他们作为Mini的host和link的类或者构造函数,然后在拓扑中选择适当的参数设定。你也可以指定自定义类拓扑本身, 或创立自定义节点和链接构造函数和/或子类 from mini.topo import Topo from mini. import Mini from mini.node import CPULimitedHost from mini.link import TCLink from mini.util import dumpNodeConnections from mini.log import setLogLevel class SingleSwitchTopo(Topo): 链接到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: topo = SingleSwitchTopo(n=4) = Mini(topo=topo, host=CPULimitedHost, link=TCLink) .start print dumpNodeConnections(.hosts) print .pingAll print h1, h4 = .get('h1', 'h4') .iperf(h1, h4) .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 表示数据包。 .get:检索一个节点(host0 100之间); 或switch)对象的名字。假如你想向主机发送一个命令(例如使用host d)并获得它的输出,检索一个结点的名字就会很重要。注意:在当前Mini的主分支,您可以简单地使用括号(如 ' h1 ')来检索给定节点的名字。 未完待续. 第 6 页 共 6 页