一、前言:
学习SDN的人,我相信大部分人都用过或者听过mininet,我觉得这是一款集成软件,它给初学者带来了很多的方便,没有真实的openflow交换机,也没有那么多的主机的环境下,mininet的确是一个不错的选择,但是毕竟我们通常在一台PC机上面安装了控制器,来对SDN网络进行控制,而这时我们接着在这台PC机上面安装mininet,什么ovs和主机都在上面进行模拟的话,就缺少了许多真实感,对SDN的架构也会缺少应有的了解,如在我最开始的时候我一直都觉着ovs是必须要通过mininet来进行运行的,在安装时有的mininet就集成了pox控制器,这时不了解sdn架构的初学者就会认为mininet就是实现sdn网络的一切,其实不然,要知道,控制器和它是没有多大的关系。有人会问:在mininet中为什么没有添加流表的时候两台主机会ping通,原因在于控制器中的二层自学习功能,因为这是控制器可以通过下发流表的方式来使交换机产生流表,从而两台机器ping通,这时如果你关闭了控制器,你会发现两台主机就ping不同了。这个例子其实很好地阐释了sdn网络与传统网络的区别。总之,mininet有好有坏,我建议我们做研究的,最好还是可以在真实的环境中搭建下环境,这样才能有更深的体会。
二、mininet的安装及相关的配置:
1、mininet的安装:
这里接着说几句题外话,我觉着学习这些知识,Google是一个不错的选择,各种新技术的了解我觉着自己去国外的官网里查,即使看英文慢点,但是会有更深的了解。mininet的官网就是http://mininet.org/walkthrough/">http://mininet.org里面有具体教你安装的教程。
2、mininet的配置:
http://mininet.org/walkthrough/和http://mininet.org/walkthrough以及http://archive.openflow.org/wk/index.php/
(1)sudo mn 其实就是默认进入mininet自带拓扑结构的网络环境;
(2)其实想要对各个设备进行操作的话,我建议使用xterm name of node进入各自设备进行配置,但我觉着这点有点像传统网络里的管理,通过远程登陆到各自的设备中进行配置,这点我建议大家如果想要对流表进行操作的话还是使用OVS的命令来进行配置,这个我们会在后面的笔记中总结;
(3)如果想要改变拓扑结构和相关的参数,需要在sudo mn 进入的时候在后面添加参数变量,即:
- sudo mn --test pingall --topo single,3 //一台交换机,两台主机
- sudo mn --test pingall --topo linear,4 //linear表示每台交换机链接一台主机
- sudo mn --link tc,bw=10,delay=10ms //带宽设置10M,延迟为10ms
- sudo mn --mac //mac以1、2递增的顺序保存
- sudo mn --switch ovsk --controller ref --topo tree,depth=2,fanout=8 --test pingall //二层八叉树,即九台交换机加上64台主机
- sudo mn --topo single,3 --mac --switch ovsk --controller remote //
mininet常见命令汇总
Help: sudo mn [-h] 通过-h可以查看到帮助信息。
● Connect to remote controller: sudo mn --controller=remote,ip=127.0.0.1,port=6633 端口可以省略,默认值是6633,可指定。
● Topology: sudo mn --topo=
tree,n,m 第一个参数为深度,第二个位扇出系数。可以写成--tree,depth=2,fanout=8
single, n:单个交换机,n个交换机
liner, n: 线性拓扑,n个交换机
● Test:--test[pingall/pingpair..]
● Link:--link=tc,bw=10M, delay=10ms,loss=5%
● Custom Topo:--custom~/mininet/custom/topo-2sw-2host.py --topo mytopo
● ID=MAC: sudo mn --mac
● Xterm: sudo mn -x 启动xterm到每一个host和switch
● Switch type: sudo mn --switch ovsk/user,
● Help: help 查看帮助信息
● Exit: exit 退出mininet
● Python: py “hello” / py dir(s1) pyhello.py 运行python文件:
● Link: link s1 h1 down/up 参数分别为link两端网元。
● Xterm: xterm s1/h1 xterm到某一个主机或交换机
● Node: nodes 查看节点
● Dump:dump 查看所有节点信息
节点命令:
s1 ifconfig
s1 ps -a
h1 arp -s
h1 ping -c 10 h2
py h1.setIP('10.0.0.3/24')
● Iperf: iperf h1 h2 启用iperf功能
● Ping: h1 ping h2 pingall/pingpair 发送ping消息
● HTTPSERVER : h1 python -mSimpleHTTPServer 80 &
● HTTPCLIENT: h2 wget -O -h1
通过桥接来解决访问互联网的问题;
sudo mn --custom /net.py --topo=mytopomytopo
py h1.setIP('10.0.0.3/24')