zoukankan      html  css  js  c++  java
  • mininet实验 连接floodlight控制器

    参考博客一

    参考博客二


    事先准备—floodlight安装

    Java安装方法及环境变量配置


    执行ifconfig命令获取floodlight所在服务器的IP地址。

    1.启动floodlight

    java -jar target/floodlight.jar
    

    浏览器中,输入floodlight ui界面地址:http://localhost:8080/ui/index.html

    2.用python脚本通过mininet创建拓扑

    切换到/home/mininet目录,请检查是否存在测试脚本fattree.py,如果有该脚本,请跳过此步骤,如果没有,请执行以下命令创建脚本并添加内容。

    cd /home/mininet
    touch fattree.py
    vim fattree.py
    

    添加以下脚本

    """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,生成测试拓扑结构。不要忘了修改fattree.py为可执行文件。脚本中不要含有中文。

    使用以下命令运行python脚本:

    sudo mn --custom /home/liuhy/mininet/fattree.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow10
    
    这个命令很重要,涉及到将mininet交换机和floodlight控制器连接,需要调整参数。
    • 首先fattree.py的地址要找对。
    • ip是floodlight所在服务器ip,可以由ifconfig查找。
    • 然后port要设置成6653。

    连接成功截图:

    如果连接失败,下面的操作都将不可进行,第一次自己的错误也出在这里。感谢陈翔学长的指导!

    用vim编辑python脚本时可以参考:VIM指令大全

    运行脚本之后:

    拓扑图:

    图中c1和c2为核心交换机,a1-a4为聚合交换机,e1-e4为边缘交换机,h1-h8为主机。上述代码
    拓扑创建了2个核心交换机、4个汇聚交换机、4个边缘交换机,每个边缘交换机分别下挂2个虚拟
    主机,并给所有的交换机添加了逻辑链路。上述代码中为了提高带宽的利用率、调整流量需求达
    到均衡的效果,每个核心交换机均与4个汇聚交换机相连,每个汇聚交换机分别下挂两个边缘交
    换机,每个边缘交换机分别连接它所属的父交换机。

  • 相关阅读:
    19. vue的原理
    18.jwt加密
    17.vue移动端项目二
    16.vue-cli跨域,swiper,移动端项目
    15.vue动画& vuex
    14.vue路由&脚手架
    13.vue组件
    12.vue属性.监听.组件
    11.vue 数据交互
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/031602523liu/p/8747181.html
Copyright © 2011-2022 走看看