作业链接

期末作业

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

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

SDN期末作业——负载均衡的更多相关文章

  1. SDN 期末作业验收

    前言 SDN 期末作业验收我们是采用的参考场景一,我们在此场景的基础上来做负载均衡,下面是我们搭建的拓扑图 演示视频 https://pan.baidu.com/s/1htkKLPM 负载均衡程序 相 ...

  2. SDN期末作业-通过SDN的应用实现负载均衡

    负载均衡程序 1.程序链接:https://github.com/424baopu/software/tree/master/LoadBalance 2.场景 topo: 场景描述: 服务器host ...

  3. 《SDN期末作业——实现负载均衡》

    队名:取个队名真难 一.网络拓扑(场景二) 二.负载均衡程序 1.建立拓扑的代码 拓扑 2.下发组表流表的代码 下发组表流表 三.演示视频 1.目的 服务器h2,h3,h4上各自有不同的服务,h1是客 ...

  4. SDN期末作业验收

    作业链接:https://edu.cnblogs.com/campus/fzu/SoftwareDefinedNetworking2017/homework/1585 负载均衡程序 1.github链 ...

  5. SDN期末作业

    期末项目 代码仓库:传送门 视频:组长已经发送给朱老师 选题:负载均衡场景3 选题内容: 该拓扑是数据中心拓扑的一部分,其中h1是数据中心外的一台客户机,h2-h5是数据中心内的服务器,请根据该拓扑实 ...

  6. SDN期末作业博客

    一.项目描述 A P4-based Network Load Balancing Application 基于P4的网络负载均衡项目 二.个人分工 The Controller : Acquire t ...

  7. 基于SDN网络的负载均衡研究与实现

    为什么需要软件定义网络 1.网络缺乏可扩展性,创新正在停滞不前.   我们最新的研究发现,几乎每两个组织中就有一个认为需要将网络功能扩展为采用SDN的主要业务触发因素,而不是其他催化剂.这一统计数据一 ...

  8. SDN课程作业总结

    SDN 期末作业总结 设计场景 我们采用参考场景一,实现负载均衡,拓扑图及端口示意如下: 演示视频 视频地址 关键代码 package loadBalance; import java.io.Buff ...

  9. SDN第五次上机作业--基于组表的简单负载均衡

    0.作业链接 http://www.cnblogs.com/easteast/p/8125383.html 1.实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析 ...

随机推荐

  1. maven3.6.1-02初体验及jar包上传

    安装当前最新版本的nexus,安装教程网上搜,不多说了. 因为nexus3x版本没有2x版本中内置的3rd_part,所以不能在界面中上传jar包,必须使用maven的命令行.  添加第三方仓库,名字 ...

  2. [源码]underscore-1.8.3

    // Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud an ...

  3. NPM的正确使用方式

    registry配置 npm registry原意为记录.登记.登记处的意思,这里指的也就是node包存放的服务器地址. 查看registry -> npm config get registr ...

  4. JS forEach()与map() 用法(转载)

    JavaScript中的数组遍历forEach()与map()方法以及兼容写法   原理: 高级浏览器支持forEach方法语法:forEach和map都支持2个参数:一个是回调函数(item,ind ...

  5. 逆向工程生成的mybatis中mapper文件。mapper接口,实例化成对象

    逆向工程生成的mybatis中mapper文件中,*mapper文件只是接口,而不是类文件.但是却可以通过spring的容器获得实例. 例如: //1.获得mapper代理对象,从spring容器获得 ...

  6. 我的第一篇博文,开启我的Java程序人生之旅!

    原文:https://blog.csdn.net/CodeYearn/article/details/89190342 自我介绍: 姓名:蔡余 性别:男 年龄:21 职业:Java开发工程师 家乡:湖 ...

  7. 【ZeroMQ】2、高性能的通讯库-zeroMQ

    首先,让我来介绍一下什么是ZMQ(全称:ZeroMQ): 官方: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加 ...

  8. 撩课-Web大前端每天5道面试题-Day27

    1.浏览器缓存? 浏览器缓存分为强缓存和协商缓存.当客户端请求某个资源时,获取缓存的流程如下: 先根据这个资源的一些 http header 判断它是否命中强缓存, 如果命中,则直接从本地获取缓存资源 ...

  9. 常见hash算法的原理(转)

    常见hash算法的原理   散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表 ...

  10. centos下MySQL Workbench连接时崩溃的解决方法

    在centos6.5中使用MySQL Workbench 6.3.8链接数据库崩溃,如果是在终端使用命令“mysql-workbench”打开的话会有如下错误提示: /usr/libexec/mysq ...