SDN第一次上机作业

时间:2022-07-05 16:36:27

标签(空格分隔): SDN

作业链接

1、安装mininet

参考链接:http://www.sdnlab.com/15138.html

2、用字符命令生成拓扑,并测试连通性,截图

参考链接:http://www.sdnlab.com/15077.html
拓扑图如下:SDN第一次上机作业

1、用sudo mn --topo=tree,depth=2,fanout=3命令实现,截图如下:

SDN第一次上机作业

2、实验注意点:

--这不是在mininet里面写命令行,而是退出mininet后写命令行。
--开始的时候depth写的是3,但是第一层只是一个点,不算一层应该只是两层。
--每次要新建拓扑时,需执行sudo mn -c命令,防止上次操作对本次实验的影响

3.用可视化界面生成拓扑,并测试连通性,截图

参考链接:http://www.sdnlab.com/15096.html

拓扑图:
SDN第一次上机作业

1、输入cd mininet/examples

2、输入sudo ./miniedit.py

结果:
SDN第一次上机作业

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
SDN第一次上机作业

--创建数据中心,编辑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)

SDN第一次上机作业

--启动floodlight管理页面(http://localhost:8080/ui/index.html)查看拓扑图

SDN第一次上机作业

--输入命令:-net
SDN第一次上机作业

--输入命令:pingall

SDN第一次上机作业

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)以后就好了(我把它归结为权限问题?然后顺便把路径方式变了一下)
--很多还看不懂,之后会回去再看看,弄清楚一点吧。