简单的基于交换机迁移的SDN控制器负载均衡实验

本人首次接触SDN,了解了下SDN的定义后,针对这个实验,首先通过查询文献,大概了解这个实验的环境搭建方案。
对于SDN控制器使用较多的有:OpenDaylight、Floodlight和Ryu,其中Ryu控制器没有固定的通信协议,在使用时还需要协调管理软件。而对于OpenDayight和Floodlight,我通过查询二者的区别却没有得到什么有用的信息,看到一个评论说:OpenDayight是控制器,而Floodlight是协议,我也不知道如何去思考了。最终选择OpenDayight控制器,因为关于OpenDayight搭建的博客很多。
OpenFlow交换机通过Mininet搭建。
虽然关于OpenDaylight和Mininet环境搭建的博客很多,但按照博客中的步骤执行最终能够实现的却很少,这里我就贴上最终帮助我实现的博客,感谢!(由于做实验的过程中没有及时记录,所以一些问题和细节的步骤可能不能详细的给出,但我最终是按照下面的步骤实现的,希望能够给想要搭建OpenDaylight和Mininet的小白一些帮助。)

环境搭建

为实现交换机迁移,我搭建了两台opendaylight虚拟机,一台mininet虚拟机。

  1. 虚拟机软件:主要有VMware Station, VirtualBox等,后者免费,下载网址为:
    https://www.virtualbox.org/wiki/Downloads(这是从别人的博客中看到的,我选择了VirtualBox,下载安装容易,大部分人还是安装的VMware Station)。
  2. mininet安装:首先我在VirtualBox中新建了一个ubuntu虚拟机,点击新建,设置虚拟机名称为mininet,后面的设置就根据个人喜好了。

    然后打开mininet虚拟机,进去时会提示没有光盘,于是我在官网上下载了ubuntu-16.04.7-desktop-amd64光盘映像,选择该光盘就可以了,进入后若提示是否安装ubuntu,点击安装即可。
    接下来安装mininet,在安装时碰到最多的问题就是安装完成后使用sudo mn测试,该指令会生成默认的拓扑图,包含一个交换机,两个主机。拓扑图能够生成,但输入pingall指令时却失败。于是我卸载重装卸载重装,试过很多方法,最终按照https://www.cnblogs.com/cing/p/7443076.html成功了!这个博客的方法很简单,希望你能一次成功。
    3.opendaylight安装:由于时间原因,opendaylight的安装偷了个懒,安装的是预编译的版本,按照https://blog.csdn.net/rock4you/article/details/67654711中下载预编译的压缩包的方法实现,这个安装很容易。(建议安装源代码版本,因为预编译版本无法修改源代码。)两台opendaylight虚拟机的话,就直接复制另一台,在虚拟机设置中更改mac地址(点击mac地址栏边上的刷新键即可),就可以使两台虚拟机ip地址不同。

实验内容

环境搭建好了接下来就是实现负载均衡实验。
1.构建SDN网络,网络拓扑设计的很简单,包含两台远程控制器,五台交换机和五台主机。
在mininet/examples下打开可视化工具miniedit,绘制拓扑图。

左边可以选择主机、交换机、路由器、连接线、控制器,我绘制的拓扑图如下。

右击图标选择属性,控制器选择远程remote controller,控制器c0的ip为192.168.56.101,c1为192.168.56.106(这是控制器的ip地址,可以在控制器虚拟机终端中输入ifconfig查看)。

交换机s1设置如下,DPID为0000000000000001(16位),类型选择open vswitch kernel mode,其他交换机类似,也可以不设置,影响不大。

主机h1设置ip地址为10.0.0.1,其他主机类似。

右击线路,可以设置带宽、时延等。

点击上方工具栏edit,选择参数,勾选Start CLI,协议我选择openflow1.3,openflow1.3中交换机具有主从角色,在已打开的终端可以看到属性设置的内容。


2.打开两个控制器虚拟机,在解压后的预编译压缩包bin文件夹下打开终端,输入sudo ./karaf运行控制器,运行成功界面如下。

浏览器中打开网址:http://192.168.56.101:8181/index.html进入opendaylight控制器UI界面。192.168.52.101为控制器虚拟机ip地址。左边topology显示网络拓扑图,nodes显示网络节点信息,yang ui可以下发流表(下发流表的过程较为复杂,我这种小白只能按照说明一步步进行,可参考博客https://blog.csdn.net/qq_37748451/article/details/94608055),最后yang visualizer我没有使用,也就没深入了解其功能。

3.运行网络,两个控制器都打开后就可以运行了。回到mininet虚拟机,点击miniedit界面中的run就运行了。然后再终端输入pingall,查看各主机的通信情况。可以看到主机和主机间未连通,再pingall一次即可(第一次未能全部ping通,可能是opendaylight本身的设置问题,有的拓扑结构可以实现,有的却不行,这也只是我的猜测)。

在两个控制器中点击reload就可以看到网络拓扑啦,两个拓扑各占网络拓扑的一部分,可能是因为两个控制器作为交换机的角色不同。由于我找不到预编译的opendaylight源代码,也就不能设置控制器的主从角色(当然找到了我可能也不会设置)。


4.为了能够实现交换机迁移,也就是要实现控制器的主从角色改变,首先在mininet中新打开一个终端输入指令:sudo ovs-vsctl list controller查看控制器信息,可以看到控制器角色为master的ip地址和uuid地址。


交换机链接的控制器可以在miniedit界面中右击交换机查看,下图为s1的信息,其控制器为c4117473-3061-4a3a-99e4-03b60ff6ad68,与上面的控制器uuid对应可知s1的master控制器为192.168.56.101。

更改s1的主控制器可以通过指令: sudo ovs-vsctl set-controller s1 tcp:192.168.56.106:6633实现设置192.168.56.106为s1的master控制器,6633为端口号,再次查看控制器信息可以的发现s1的主控制器已变为192.168.56.106。



在opendaylight控制器中reload查看拓扑结构,可以看到已发生变化。


在停止运行网络时需要先输入exit退出,再点击stop,不然会出现错误,最后关闭网络后,可以在终端输入sudo mn -c清除网络信息。

这就算是实现了交换机的手动迁移。负载均衡部分是通过iperf实现主机之间的数据包发送,然后在控制器中打开wireshark过滤抓取packet_in数据包查看两个控制器的负载量,然后手动迁移交换机实现负载均衡,这里我就不展开叙述了,因为手动迁移并不算是真正意义上的交换机迁移,所以负载均衡实验也不能算成功,主要还是分享opendaylight和mininet环境搭建过程,希望能够对大家有帮助。
更多ovs-vsctl指令可以参考https://www.cnblogs.com/goldsunshine/p/11527928.html。

简单的基于交换机迁移的SDN控制器负载均衡实验相关推荐

  1. 基于OpenFlow协议的SDN控制器拓扑发现

    基于OpenFlow协议的SDN控制器拓扑发现     OpenFlow协议的SDN控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,并根 ...

  2. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  3. PG基于pgpool-II实现读写分离和负载均衡

    PG基于pgpool-II实现读写分离和负载均衡 PG:12 pgpool-II:4.2.2 OS:CentOS7.6 IP 主机名 作用 port 类型 备注 172.72.6.2 mambapg6 ...

  4. Spring RSocket:基于服务注册发现的 RSocket 负载均衡

    作者 | 雷卷 来源|阿里巴巴云原生公众号 RSocket 分布式通讯协议是 Spring Reactive 的核心内容,从 Spring Framework 5.2 开始,RSocket 已经是 S ...

  5. 分布式进阶(十九) 基于集群的动态反馈负载均衡策略

    一.动态WRR调度算法 这是一个目前普遍使用的调度算法,算法在WRR的基础上加入了根据服务器端的负载信息周期性地调整服务器性能权值的过程.其基本思想是:根据CPU利用率.内存利用率.磁盘使用情况.连接 ...

  6. 交换机链路聚合技术的负载均衡算法原理(含C语言实现)

    [注:本文[原理]部分来自转载,转载来源为https://blog.csdn.net/wuheshi/article/details/79128044,此部分原创作者暂未找到,但感谢原作者的知识贡献] ...

  7. Docker实践4: 基于nginx对后端的weblogic负载均衡

    为什么要用Nginx(抄了一段) 1.nginx相对于apache的优点: 轻量级,同样起web服务,比apache占用更少的内存及资源 抗并发,nginx处理请求是异步非阻塞的,而apache则是阻 ...

  8. 基于Nginx的负载均衡实验

    实验工具 Nginx Nodejs 浏览器 实验原理 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源 ...

  9. 最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

最新文章

  1. 写一篇C语言入门第一讲
  2. ***测试之情报收集
  3. Beej网络编程指南《三》
  4. 学习python之序言
  5. Boost:bimap双图信息的测试程序
  6. TIOBE 6月编程语言榜单:C语言继续占据第一
  7. 前端学习(2633):父子传值
  8. html文本改,编辑html格式文本可改成txt格式(可以替换或更换某文本)新手
  9. 源码编译安装keepalived
  10. 鼠标macOS下定义快捷键(各品牌通用)
  11. 电源保护——TVS管
  12. Android虚拟机AVD has terminated
  13. SpringBoot注解把配置文件自动映射到属性和实体类实战
  14. java 7 锁优化_自Java 6/Java 7开始,Java虚拟机对内部锁的实现进行了一些优化。这些优化主要包括锁消除(Lock Elision)、锁粗化(Lock Coarse...
  15. (开源)简单的人脸识别考勤系统(python+opencv+dilb)
  16. 如何检查并清除挖矿程序
  17. 黑苹果一些奇怪的事情
  18. 夏目友人帐之撸猫动作倒放
  19. 前瞻性队列、回顾性队列、病例对照研究
  20. 购买阿里云服务器,先试试主机免费试用能抢到不...

热门文章

  1. IC卡密码的破解方法浅谈
  2. 如何快速增加NFC能力到任何应用程序
  3. 递归 (一): 递归思想与 C++ 中的递归函数及两个递归应用示例 (斐波那契, 汉诺塔)
  4. oracle编程题考试题,oracle考试题
  5. Day_03——MySQL数据库查询语句练习
  6. 从编程小白到入门码农的五个途径
  7. 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
  8. 新电脑如何分盘---傻瓜式教学
  9. C语言-随机产生10以内四则运算
  10. 电脑硬盘主分区和逻辑分区的区别是什么