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

  • 相关阅读:
    Java的值传递和引用传递的说法
    将对象写道硬盘上and从硬盘上读入对象
    分割一个文件and合并一个文件(并且带有配置信息记录)
    文件的切割和合并
    SequenceInputStream的用法(用来合并流然后一起操作)
    PrintStream和PrintWrite用法
    将一个文件夹中的所有含有某个后缀的文件写进一个文件里面
    关于Properties的制作配置文件(当一个app已经5次被打开我们就收费)
    Properties的用法
    深层删除一个目录(java)
  • 原文地址:https://www.cnblogs.com/ch2405/p/8353764.html
Copyright © 2011-2022 走看看