zoukankan      html  css  js  c++  java
  • SDN期末作业——负载均衡

    作业链接

    期末作业

    1.负载均衡程序

    代码

    2.演示视频

    地址

    3.小组分工

    小组:incredible five

    构建拓扑:俞鋆

    编写程序:陈绍纬、周龙荣

    程序调试和视频录制:陈辉、林德望

    4.个人工作

    我是我们小组的组长,在期末作业中我主要负责任务分配,进度监督和构建拓扑,在做期末作业的过程中我们小组聚在一起开了两次会议,第一次确定要做的内容并分工,第二次将自己的部分和别人的对接。对于我负责的拓扑图的构建,我是用Python脚本生成的,我模仿了mininet的custom里的topo-2sw-2host.py文件的写法构建下图的拓扑。

    每个主机和交换机对应的端口号我们都在第一次会议上确定了,这样对接起来更加容易。

    代码:

    from mininet.topo import Topo
    
    class MyTopo( Topo ):
    
        def __init__( self ):
    
            # Initialize topology
            Topo.__init__( self )
    
            # Add hosts and switches
            h1 = self.addHost( 'h1' )
            h2 = self.addHost( 'h2' )
            h3 = self.addHost( 'h3' )
            h4 = self.addHost( 'h4' )
            s1 = self.addSwitch( 's1' )
            s2 = self.addSwitch( 's2' )
            s3 = self.addSwitch( 's3' )
            s4 = self.addSwitch( 's4' )
    
    
            # Add links
            self.addLink( s1, h1, 1, 0 )
            self.addLink( s1, s2, 2, 1 )
            self.addLink( s1, s3, 3, 1 )
            self.addLink( s1, s4, 4, 1 )
            self.addLink( s2, s4, 2, 2 )
            self.addLink( s3, s4, 2, 3 )
            self.addLink( s4, h2, 4, 0 )
            self.addLink( s4, h3, 5, 0 )
            self.addLink( s4, h4, 6, 0 )
    
    topos = { 'mytopo': ( lambda: MyTopo() ) }
    

    主要是使用mininet的模块编写代码,用addSwitch、addHost和addLink函数添加交换机、主机和链路,addLink后面的两个int参数代表着对应设备的端口相连起来了,不加的话按生成的先后顺序增加。

    执行程序的命令(需要先打开远程控制器):

    sudo mn --custom scene2.py --topo mytopo --controller=remote --switch ovsk,protocols=OpenFlow13
    

    执行结果:

    课程总结

    上学期在选这门课的时候,我想的是能快点把学分修满,之后课就会少一点,那时候对课程一点也不了解,以为选修应该会是很轻松的。这学期我见识到的选修课和我之前想象的完全不同,每周都有作业,要写博客,再加上本来课就不少,一开始感觉很累,但当做完期末作业之后,回顾这门课,还是收获颇多的。

    关于SDN

    软件定义网络(SDN)是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面从数据平面中分离,改以软件方式实现。该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。

    关于控制器

    • Ryu控制器

    Ryu是日本NTT公司开发的模块化的控制器。Ryu因其架构清晰,支持OpenFlow全部版本,有社区的Plug-in集成到OpenStack,性能良好和文档齐全等优点获得了许多SDN研究者的关注。

    • Floodlight控制器

    FloodLight,以其企业级别的优秀性能,开发效率更高的Java语言,模块化的设计等优点得到了喜欢Java语言的SDN研究者的青睐。

    • OpenDaylight控制器

    OpenDaylight是Linux Foundation和多家网络巨头如Cisco、Juniper和Broadcom等公司一起创立的开源项目。OpenDaylight不仅仅是一个SDN控制器,它更是一个庞大的开源项目,其中包含许多子项目,而Controller只是其中的一个子项目。OpenDaylight支持多种南向协议,包括OpenFlow(支持1.0和1.3版本)、Netconf和OVSDB等,是一个广义的SDN控制平台,而不是OpenFlow系的狭义SDN控制器。

    • ONOS控制器

    ONOS由On.Lab开发,是一款采用Java语言编写,采用OSGi架构,同样分布式的控制平台产品。其目标是打造一个开放的SDN网络操作系统,市场定位在运行商级别网络市场。ONOS底层模块直接借用FloodLight优秀的模块如Switch模块,不使用YANG语言建模,最新版本使用Raft作为分布式框架。

    关于实践

    mininet的使用

    Floodlight的使用

    ovs下发流表

    odl的使用

    下发流表实现简单负载均衡

  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/yujohn/p/8343123.html
Copyright © 2011-2022 走看看