标签(空格分隔): SDN
1、安装mininet
参考链接:http://www.sdnlab.com/15138.html
2、用字符命令生成拓扑,并测试连通性,截图
参考链接:http://www.sdnlab.com/15077.html
拓扑图如下:
1、用sudo mn --topo=tree,depth=2,fanout=3命令实现,截图如下:
2、实验注意点:
--这不是在mininet里面写命令行,而是退出mininet后写命令行。
--开始的时候depth写的是3,但是第一层只是一个点,不算一层应该只是两层。
--每次要新建拓扑时,需执行sudo mn -c命令,防止上次操作对本次实验的影响
3.用可视化界面生成拓扑,并测试连通性,截图
参考链接:http://www.sdnlab.com/15096.html
拓扑图:
1、输入cd mininet/examples
2、输入sudo ./miniedit.py
结果:
4.用Python脚本生成一个Fat-tree型的拓扑,截图
参考链接:http://www.sdnlab.com/15128.html
1、安装floodlight
在安装的过程我参考的是这个链接:安装链接。但是这个教程有一个问题就是在环境变量的那部分是有错的,所以在环境变量的那部分可以参考这个blog。当然也可以就是直接去找链接:官网参考教程。
(安装了两次,踩了好多坑的感觉。。。开始是按照官网做的,然后好像漏做了某个步骤,然后就gg了,之后按照刚刚给的第一个博客做,在Java那里要记得升级,最后就是最坑的环境变量那里,一直试不对,找同学问了以后发现那个博客的环境变量好像是不对的???最后终于改过来了。之后在启动floodlight的时候居然在进入管理网页的时候把网址打错了,一直出错,检查好久才发现自己网址打错了。觉得自己脑子抽了)
2、搭建了环境以后就可以开始实验了:
--先开启flooodlight
输入:cd floodlight ->ant ->java -jar target/floodlight.jar
--创建数据中心,编辑fattree.py如下
#!/usr/bin/python
#
"""Custom topology example
Adding the \'topos\' dict with a key/value pair to generate our newly defined
topology enables one to pass in \'--topo=mytopo\' from the command line.
"""
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
L1 = 2
L2 = L1 * 2
L3 = L2
c = []
a = []
e = []
# add core ovs
for i in range( L1 ):
sw = self.addSwitch( \'c{}\'.format( i + 1 ) )
c.append( sw )
# add aggregation ovs
for i in range( L2 ):
sw = self.addSwitch( \'a{}\'.format( L1 + i + 1 ) )
a.append( sw )
# add edge ovs
for i in range( L3 ):
sw = self.addSwitch( \'e{}\'.format( L1 + L2 + i + 1 ) )
e.append( sw )
# add links between core and aggregation ovs
for i in range( L1 ):
sw1 = c[i]
for sw2 in a[i/2::L1/2]:
# self.addLink(sw2, sw1, bw=10, delay=\'5ms\', loss=10, max_queue_size=1000, use_htb=True)
self.addLink( sw2, sw1 )
# add links between aggregation and edge ovs
for i in range( 0, L2, 2 ):
for sw1 in a[i:i+2]:
for sw2 in e[i:i+2]:
self.addLink( sw2, sw1 )
#add hosts and its links with edge ovs
count = 1
for sw1 in e:
for i in range(2):
host = self.addHost( \'h{}\'.format( count ) )
self.addLink( sw1, host )
count += 1
topos = { \'mytopo\': ( lambda: MyTopo() ) }
--启动Mininet,生成测试拓扑结构
输入: sudo mn --custom ./fattree.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow10(cd mininet)
--启动floodlight管理页面(http://localhost:8080/ui/index.html)查看拓扑图:
--输入命令:-net
--输入命令:pingall
3、实验过程出的错和注意点:
--很多命令的执行都要有管理员权限,所以最好一开始就运行在管理员权限下,或者sudo,不然就会出错。
--开始的时候Ping不通,然后那个ip用的是自己机子上ifconfig查的10.0.2.15端口号也是用的6633(floodlight的默认端口号)但是不行,最后问同学以后改成127.0.0.1和6653(端口号是试出来,自己不太懂。。)
--开始的时候输入是screen mn --custom /home/mininet/fattree.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow10,然后一直提示是:could not find custom file:/home/mininet/fattree.py错误,改成了sudo mn --custom ./fattree.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow10(cd mininet)以后就好了(我把它归结为权限问题?然后顺便把路径方式变了一下)
--很多还看不懂,之后会回去再看看,弄清楚一点吧。