mininet使用教程Word文档格式.docx
《mininet使用教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《mininet使用教程Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
(typemn-hfordetails)
ThemnutilitycreatesMininetnetworkfromthecommandline.Itcancreate
parametrizedtopologies,invoketheMininetCLI,andruntests.
Options:
-h,--helpshowthishelpmessageandexit
--switch=SWITCHivs|ovsk|ovsl|user[,param=value...]
--host=HOSTcfs|proc|rt[,param=value...]
--controller=CONTROLLER
none|nox|ovsc|ref|remote[,param=value...]
--link=LINKdefault|tc[,param=value...]
--topo=TOPOlinear|minimal|reversed|single|tree[,param=value...]
-c,--cleancleanandexit
--custom=CUSTOMreadcustomtopoandnodeparamsfrom.pyfile
--test=TESTcli|build|pingall|pingpair|iperf|all|iperfudp|none
-x,--xtermsspawnxtermsforeachnode
-iIPBASE,--ipbase=IPBASE
baseIPaddressforhosts
--macautomaticallysethostMACs
--arpsetall-pairsARPentries
-vVERBOSITY,--verbosity=VERBOSITY
info|warning|critical|error|debug|output
--innamespaceswandctrlinnamespace?
--listenport=LISTENPORT
baseportforpassiveswitchlistening
--nolistenportdon'
tusepassivelisteningport
--pre=PRECLIscripttorunbeforetests
--post=POSTCLIscripttorunaftertests
--pinpinhoststoCPUcores(requires--hostcfsor--host
rt)
--version
如上所示,输出了mn的帮助信息。
StartWireshark
为了使用Wireshark来查看OpenFlow的控制信息,我们先打开Wireshark并让他在后台运行。
$sudowireshark&
在Wireshark的过滤选项中,输入of,然后选择Apply。
InWireshark,clickCapture,thenInterfaces,thenselectStartontheloopbackinterface(lo).
现在窗口上暂时应该没有任何OpenFlow的数据包。
注:
在MininetVM镜像中Wireshark是默认已经安装的。
如果你的系统中没有Wireshark的和OpenFlow,您可以使用Mininet的install.sh脚本,按以下步骤安装:
$cd~
$gitclone
$mininet/util/install.sh-w
如果已经安装了Wireshark,但是运行不了(e.g.你得到一个类似$DISPLAYnotset之类的错误信息,可以参考FAQ,:
设置好X11就可以正常运行GUI程序,并且使用xterm之类的终端仿真器了,后面的演示中可以用到。
InteractwithHostsandSwitches
StartaminimaltopologyandentertheCLI:
$sudomn
默认的最小拓扑结构包含有两台主机(h1,h2),还有一个OpenFlow的交换机,一个OpenFlow的控制器四台设备。
这种拓扑接口也可以使用--topo=minimal来指定。
当然我们也可以使用其他的拓扑结构,具体信息可以看
--topo的信息。
现在四个实体(h1,h2,c0,s1)都在运行着。
c0作为控制器,是可以放在虚拟机外部的。
如果没有具体的测试作为参数传递时,我们可以使用Mininet交互。
在Wireshark的窗口中,你会看到内核交换机连接到控制器。
显示MininetCLI命令:
mininet>
help
Documentedcommands(typehelp<
topic>
):
========================================
EOFexitintfslinknoechopingpairpysourcexterm
dpctlgtermiperfnetpingallpingpairfullquittime
dumphelpiperfudpnodespingallfullpxshx
Youmayalsosendacommandtoanodeusing:
<
node>
command{args}
Forexample:
mininet>
h1ifconfig
TheinterpreterautomaticallysubstitutesIPaddresses
fornodenameswhenanodeisthefirstarg,socommands
like
h2pingh3
shouldwork.
Somecharacter-orientedinteractivecommandsrequire
noecho:
noechoh2vifoo.py
However,startingupanxterm/gtermisgenerallybetter:
xtermh2
显示节点:
nodes
availablenodesare:
c0h1h2s1
显示网络链接:
net
h1h1-eth0:
s1-eth1
h2h2-eth0:
s1-eth2
s1lo:
s1-eth1:
h1-eth0s1-eth2:
h2-eth0
c0
输出所有节点的信息:
dump
<
Hosth1:
h1-eth0:
10.0.0.1pid=3278>
Hosth2:
h2-eth0:
10.0.0.2pid=3279>
OVSSwitchs1:
lo:
127.0.0.1,s1-eth1:
None,s1-eth2:
Nonepid=3282>
OVSControllerc0:
127.0.0.1:
6633pid=3268>
从上面的输出中,你可以看到有一台交换机和两台主机。
在Mininet的CLI中第一个字符串是设备名,那后面的命令就在该设备上执行。
例如我们想在h1设备上执行ifconfig则输入如下命令:
h1ifconfig-a
h1-eth0Linkencap:
EthernetHWaddr3e:
94:
43:
b1:
ad:
48
inetaddr:
10.0.0.1Bcast:
10.255.255.255Mask:
255.0.0.0
inet6addr:
fe80:
:
3c94:
43ff:
feb1:
ad48/64Scope:
Link
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
RXpackets:
22errors:
0dropped:
0overruns:
0frame:
TXpackets:
8errors:
0carrier:
collisions:
0txqueuelen:
1000
RXbytes:
1764(1.7KB)TXbytes:
648(648.0B)
loLinkencap:
LocalLoopback
127.0.0.1Mask:
:
1/128Scope:
Host
UPLOOPBACKRUNNINGMTU:
65536Metric:
0errors:
0(0.0B)TXbytes:
0(0.0B)
上面的输出中,可以看见
h1-eth0
跟
lo两个接口,需要注意的是,在Linux系统的shell中运行ifconfig是看不到h1-eth0。
与h1-eth0相反的是,switch
默认是跑在root的网络namespace上面,所以在switch上执行命令与在Linux下的shell中是一样的。
s1ifconfig-a
eth0Linkencap:
EthernetHWaddr08:
00:
27:
98:
dc:
aa
10.0.2.15Bcast:
10.0.2.255Mask:
255.255.255.0
a00:
27ff:
fe98:
dcaa/64Scope:
46716errors:
40265errors: