zoukankan      html  css  js  c++  java
  • 期末作业验收

    1.负载均衡程序

    https://github.com/juin1997/SDN

    2.演示视频

    https://www.bilibili.com/video/av18704070/

    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
    执行结果:

    课程总结

    上学期的时候,带着好奇的心态我选了这门课。上完第一节课后,我才初步了解了这门课的实质。我更加觉得有意思了。虽然每周都要交作业,甚至是一周要交两份的作业,但是收获了许多,了解网络的魅力,以及软件可以如何定义网络。不仅如此,因为课时有限,很多东西都需要自学,比如Python等,这也提高了我的自学、自主能力。回顾学习这门课的点点滴滴,收获良多,也不枉自己付出的辛苦。

    关于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的使用

    http://www.cnblogs.com/yujohn/p/7921779.html

    Floodlight的使用

    http://www.cnblogs.com/yujohn/p/7993797.html

    ovs下发流表

    http://www.cnblogs.com/yujohn/p/8034371.html

    odl的使用

    http://www.cnblogs.com/yujohn/p/8076417.html

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

    http://www.cnblogs.com/yujohn/p/8242137.html

  • 相关阅读:
    nginx-1.8.1的安装
    ElasticSearch 在3节点集群的启动
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
    LeetCode 501. Find Mode in Binary Search Tree (找到二叉搜索树的众数)
    LeetCode 437. Path Sum III (路径之和之三)
    LeetCode 404. Sum of Left Leaves (左子叶之和)
    LeetCode 257. Binary Tree Paths (二叉树路径)
    LeetCode Questions List (LeetCode 问题列表)- Java Solutions
    LeetCode 561. Array Partition I (数组分隔之一)
  • 原文地址:https://www.cnblogs.com/ch2405/p/8353764.html
Copyright © 2011-2022 走看看