Mininet中文使用教程_第1页
Mininet中文使用教程_第2页
Mininet中文使用教程_第3页
Mininet中文使用教程_第4页
Mininet中文使用教程_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——Mininet中文使用教程

Mininet中文使用教程

Mininet中文使用教程

译者注:

这篇Blog是在学习SDN过程中翻译的Mininet官方的文档。文档主要是介绍了Mininet的简单用法。会分成几个部分放出来,原文。下面是正文

第1部分:EverydayMininetUsage

首先是是命令语法

$这个符号代表现在处于Linux的shell交互下,需要使用的是Linux命令mininet这个符号表示现在处于Mininet交互下,需要使用的是Mininet的命令#这个符号表示的是现在处于Linux的root权限下。

以上相应的状态下下属于对应的命令,就能够得到正常的输出。需要注意的是mininet的状况比较特别,需要使用minient的命令来进行交互。

DisplayStartupOptions

我们首先来启动Mininet。

键入以下命令来显示Mininet的帮助信息:

Mininet中文使用教程

如上所示,输出了mn的帮助信息。

StartWireshark

为了使用Wireshark来查看OpenFlow的控制信息,我们先开启Wireshark并让他在后台运行。

$sudowireshark

在Wireshark的过滤选项中,输入of,然后选择Apply。

InWireshark,clickCapture,thenInterfaces,thenselectStartontheloopbackinterface(lo).

Mininet中文使用教程

现在窗口上暂时应当没有任何OpenFlow的数据包。

假使已经安装了Wireshark,但是运行不了(e.g.你得到一个类似$DISPLAYnotset之类的错误信息,可以参考FAQ,:

https:///mininet/mininet/wiki/FAQ#wiki-X11-forwarding)

设置好X11就可以正常运行GUI程序,并且使用xterm之类的终端仿真器了,后面的演示中可以用到。

InteractwithHostsandSwitches

StartaminimaltopologyandentertheCLI:

默认的最小拓扑结构包含有两台主机(h1,h2),还有一个OpenFlow的交换机,一个OpenFlow的控制器四台设备。这种拓扑接口也可以使用--topo=minimal来指定。当然我们也可以使用其他的拓扑结构,具体信息可以看--topo的信息。

现在四个实体(h1,h2,c0,s1)都在运行着。c0作为控制器,是可以放在虚拟机外部的。假使没有具体的测试作为参数传递时,我们可以使用Mininet交互。

在Wireshark的窗口中,你会看到内核交换机连接到控制器。

显示MininetCLI命令:

Mininet中文使用教程

显示节点:

显示网络链接:

输出所有节点的信息:

Mininet中文使用教程

从上面的输出中,你可以看到有一台交换机和两台主机。

在Mininet的CLI中第一个字符串是设备名,那后面的命令就在该设备上执行。例如我们想在h1设备上执行ifconfig则输入如下命令:

上面的输出中,可以看见h1-eth0跟lo两个接口,需要注意的是,在Linux系统的shell中运行ifconfig是看不到h1-eth0。

与h1-eth0相反的是,switch默认是跑在root的网络namespace上面,所以在switch上执行命令与在Linux下的shell中是一样的。

Mininet中文使用教程

RXpackets:46716errors:0dropped:0overruns:0frame:0TXpackets:40265errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:10804203(10.8MB)loLinkencap:LocalLoopbackinetaddr:Mask:MTU:65536Metric:1inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGRXpackets:43654errors:0dropped:0overruns:0frame:0TXpackets:43654errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:37264504(37.2MB)lxcbr0Linkencap:Ethernetinetaddr:TXbytes:37264504(37.2MB)TXbytes:40122199(40.1MB)

HWaddrfe:5e:f0:f7:a6:f3Bcast:55Mask:MTU:1500Metric:1

inet6addr:fe80::a8c4:b5ff:fea6:2809/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:52errors:0dropped:0overruns:0frame:0TXpackets:20errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:4759(4.7KB)ovs-systemLinkencap:EthernetTXbytes:2952(2.9KB)

HWaddr3e:79:59:3d:d9:bbMTU:1500Metric:1

BROADCASTMULTICAST

RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:0(0.0B)s1Linkencap:EthernetTXbytes:0(0.0B)HWaddr6e:8c:5d:91:d5:44MTU:1500Metric:1

inet6addr:fe80::fc47:8aff:fe6a:4155/64Scope:LinkUPBROADCASTRUNNINGRXpackets:13errors:0dropped:0overruns:0frame:0TXpackets:8errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:1026(1.0KB)s1-eth1Linkencap:EthernetTXbytes:648(648.0B)

HWaddr5e:a2:f7:86:f3:b1MTU:1500Metric:1

inet6addr:fe80::5ca2:f7ff:fe86:f3b1/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:22errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000

Mininet中文使用教程

RXbytes:648(648.0B)s1-eth2Linkencap:Ethernet

TXbytes:1764(1.7KB)

HWaddrb2:c6:37:e0:d9:61MTU:1500Metric:1

inet6addr:fe80::b0c6:37ff:fee0:d961/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:21errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:648(648.0B)veth14524JLinkencap:EthernetTXbytes:1674(1.6KB)

HWaddrfe:ca:13:f5:dd:b4MTU:1500Metric:1

inet6addr:fe80::fcca:13ff:fef5:ddb4/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:40errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:648(648.0B)veth2K19CELinkencap:EthernetTXbytes:4190(4.1KB)

HWaddrfe:f1:f7:e8:49:45MTU:1500Metric:1

inet6addr:fe80::fcf1:f7ff:fee8:4945/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:42errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:648(648.0B)veth9WSHRKLinkencap:EthernetTXbytes:4370(4.3KB)HWaddrfe:87:1d:33:f6:41MTU:1500Metric:1

inet6addr:fe80::fc87:1dff:fe33:f641/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:43errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:648(648.0B)vethH2K7R5Linkencap:EthernetTXbytes:4460(4.4KB)HWaddrfe:5e:f0:f7:a6:f3MTU:1500Metric:1

inet6addr:fe80::fc5e:f0ff:fef7:a6f3/64Scope:LinkUPBROADCASTRUNNINGMULTICASTRXpackets:14errors:0dropped:0overruns:0frame:0TXpackets:48errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:1776(1.7KB)vethO99MI2Linkencap:EthernetTXbytes:5030(5.0KB)HWaddrfe:cf:ee:97:fb:7f

inet6addr:fe80::fccf:eeff:fe97:fb7f/64Scope:Link

Mininet中文使用教程

上面的输出中包含交换机的虚拟网卡s1,以及主机的eth0。

为了区别显示host主机的网络是隔离的,我们可以通过arp与route命令来做演示,分别在s1与h1上面演示如下:

这样可以做到将每一个主机,交换机,以及控制器都放到他自己的标准的network

namespace中,但是这种做法并没有什么特别的优势,除非你想复制一个十分繁杂的网络。Mininet不支持这种做法,你可以通过--innamespace参数来查看更多的信息。

译者注:感觉有点像LXC或者说想最近比较火的Docker

注意:只有网络是虚拟出来的,每一个主机里面的进程使用的都是同一套目录,可以看到一致的进程集合,我们打印不同主机下面的进程列表看看:

Mininet中文使用教程

如上所示,h1,h2,s1三个进程列表是完全一致的。

其实完全可以做到各个主机完全独立,就想LXC那样,但是目前Mininet并没有这么做。在Mininet中所有的进程都放在root下面,这样你可以在Linux的shell中直接用kill或者ps这些命令查看或者杀死进程。

Testconnectivitybetweenhosts

现在,验证您可以h1ping通h2:

Mininet中文使用教程

我们不单可以在主机上面运行ping命令,每一条Linux下的命令或者程序都可以在Mininet中运行:

接下来,尝试开始于h1启动一个简单的HTTP服务器上,然后从h2发出请求,最终关闭Web服务器:

退出mininet交互命令:

cleanup

假使Mininet出于某种原因崩溃,可以用下面命令来清理:

Part2:高级选项AdvancedStartupOptions

回归测试RunaRegressionTest

Mininet可以用于直接运行回归测试,不一定要切换到他的CLI下面。

运行回归测试:

Mininet中文使用教程

这条命令会创立一个小的拓扑结构,然后启动OpenFLow的控制器,然后跑ping测试,最终再把拓扑结构跟控制器关掉。

另一种有用的试验是iperf的(给它约10秒来完成):

还有一直常用的测试是iperf(完成这个测试大约需要10s钟):

此命令创立的一致Mininet,并在其中一台host上面跑iperfserver,然后在另外一台host上面运行iperfclient然后解析取得带宽状况。

更改拓扑结构大小和类型ChangingTopologySizeandType

Mininet默认的拓扑结构是由两台host以及一台交换机组成的,你可以用--topo参数来更改拓扑结构。

假设你要在一个交换机与三台host之间做ping探测验证(verifyall-pairspingconnectivity)。:

运行回归测试:

另一个例子中,使用线性拓扑(其中每个交换机配有一个主机,并且所有的交换机连接在一起):

课哟用参数来控制拓扑结构是Mininet中最有用的功能之一,十分强大。

Mininet中文使用教程

链路变化Linkvariations

Mininet2.0允许你设置连接参数,甚至可以通过命令行实现自动化设置:

上面的设置每两个节点之间的延迟是10ms,由于ICMP请求传过了两条链路(一次是到大交换机,一次到达主机),来回时间(RRT)就应当是40ms。

你还可以使用PythonAPI来做更多的事儿,不过现在我们先继续往下演练。

调整输出信息AdjustableVerbosity

Mininet默认输出信息的级别是Info,Info级别会输出Mininet的详细信息。我们也可以通过-v参数来设置输出DEBUG信息。

这样会打印出更多额外的细节。现在尝试一下output参数,这样可以在CLI中打印更少的

信息。除了上面的几个级别,还有其他的级别可以使用,譬如warning等

CustomTopologies自定义拓扑结构

Mininet中文使用教程

在custom/topo-2sw-2host.py中是一个例子可以拿来参考,我们可以看到通过PythonAPI我们可以很简单的来定义拓扑结构。

这个例子直接连接两台交换机,每个交换机带有一台主机。

我们提供一个自定义的mininet文件,就可以创立新的拓扑结构、交换机类型。我们在命令行里面测试一下:

Mininet中文使用教程

ID=MAC

默认状况下,host的mac地址是随机分派的。这会导致每次mininet创立的时候,MAC地址都会改变,这会给调试带来一些困难

--mac参数可以解决上面的问题,栗子如下:

之前:

Mininet中文使用教程

使用--mac参数:

Mininet中文使用教程

ncontrast,theMACsforswitchdataportsreportedbyLinuxwillremainrandom.Thisisbecauseyoucan‘assign’aMACtoadataportusingOpenFlow,asnotedintheFAQ.Thisisasomewhatsubtlepointwhichyoucanprobablyignorefornow.XTermDisplayxterm屏显

为了便利更繁杂的调试工作,可以使用mininet的xterms

可以通过x选项来给每一个host与交换机启动一个xterm。

后一秒钟,在xterm终端会弹出,并且具有自动设置窗口的名称(h1,h2…)。

或者,您也可以用下面的方式开启更多的xterm。

默认状况下,仅仅host需要一个但大户的namespace,而交换机的窗口则不用(与政策的终端类似)

butcanbeaconvenientplacetorunandleaveupswitchdebugcommands,suchasflowcounterdumps.

在你想看到交互命令的时候,xterm很有用,但是假使你仅仅想看到输出信息,那你可能想停掉xterm

例如:

在switch:s1(root)的xterm下面运行:

Mininet中文使用教程

由于交换机中没有数据流量,所以不会有信息输出。

Tousedpctlwithotherswitches,startupmininetinverbosemodeandlookatthepassivelisteningportsfortheswitcheswhenthey’recreated.

现在,在host:h1的xterm中运行:

回到s1的xterm中查看:

现在就可以看见数据流了。另外我们可以直接用dpctl命令直接调用MininetCLI里面的命令,而不需要启动任何xterm或者指定交换机的IP跟端口。

我们看已通过ifconfig命令来判断xterm是否在root的名字空间下,假使所有的网卡都显示出来(包含eth0),那他就是在root下。

从mininet的CLI中退出:

这样mininet的CLI就自动关闭了。

OtherSwitchTypes其他类型的交换机

我们可以使用不同的交换机类型。例如:运行user-space交换机:

Mininet中文使用教程

值得注意的是这种交换机下,带宽相比于前面的内核态交换机要小的多。

假使做ping探测,也会有更高的延迟,这是由于现在的数据包需要从内核态转换到用户空间,消耗了更多的资源。

另一方面,用户空间的交换机遇有一些新功能,假使交换机的性能不是关键问题是的时候。在Mininet虚拟机中预装了另外一个交换机类型是OpenvSwitch(OVS),在iperf测试中,带宽会比内核态交换机更大。

MininetBenchmark

Torecordthetimetosetupandteardownatopology,usetest‘none’:

EverythinginitsownNamespace(userswitchonly)

默认状况下,主机都放在自己的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论