SDN分组实验作业——负载均衡
一、作业描述
分组实验分工:
作业属于哪个班级、分组 | 软件定义网络SDN2019 (福州大学) | Wireshark分组 | |
---|---|---|---|
学号 | 姓名 | 工作分配 | 分工占比 |
031702115 | 连振升 | 代码编写、构建拓扑等 | 27% |
031702117 | 童圣滔 | 视频制作、程序调试 | 27% |
031702118 | 范文辉 | 代码编写、构建拓扑等 | 26% |
031702143 | 蔡智伟(组长) | 资料收集、设计、博客撰写 | 20% |
分组报告分工:
作业属于哪个班级、分组 | 软件定义网络SDN2019 (福州大学) | Wireshark分组 | |
---|---|---|---|
学号 | 姓名 | 工作分配 | 分工占比 |
031702115 | 连振升 | 资料收集、PPT撰写 | 23% |
031702117 | 童圣滔 | 资料收集、PPT撰写 | 22% |
031702118 | 范文辉 | 资料收集、PPT撰写 | 24% |
031702143 | 蔡智伟(组长) | 报告汇报演讲、PPT改写 | 31% |
作业目标:利用学期课程所学知识,选择一个实验选题,完成课程设计和实验目标,设计拓扑、研究课题内容、完成实验——我们小组选择了负载均衡实验课题,并选择一个并不特别复杂的实验拓扑图,来验证实验。
实验内容主要如下:
1.验证拓扑是否搭建正确、ip分配、端口连接、主机交换机的匹配连通等情况。
2.流表、报文的验证与分析等。
3.北向接口开发、负载均衡的实现等、
代码GitHub链接:
https://github.com/fwh-g/sdn
视频链接:
SDN作业——负载均衡
参考资料:
(具体在课程中有引用)
1.OVS常用命令与使用总结
2.OpenFlow 交换机与控制器交互步骤
3.利用Wireshark抓取并分析OpenFlow协议报文
4.RYU开发入门教程
二、实验分析
原理:
负载均衡是一种将任务分派到多个服务端进程的方法。
网站访问量已经越来越大,响应速度也将越来越慢。负载均衡正是一种将任务分派到多个服务端进程的方法,是多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助技术。通过某种负载分担技术,采用某种负载均衡实现策略、和实现的方法,具体的实现。将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
基本原理图:
目的:
负载均衡能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。这种群集技术可以用最少的投资获得接近于大型主机的性能。
可以减少进程的负载、提高容错能力、提高线路的数据处理能力、提高网络的可用性已经灵活性。
实验拓扑:
(通过Ubuntu虚拟机实现)
分析:
如上图,h2,h3,h4三台为服务器,运行着各种服务进程,h1为客户机。本次实验通过这样一个拓扑,来设计一个实现负载均衡的北向程序,并且可以通过各种命令来完成许多要求、查看配置,如下发流表、数据传输。
例如,当三台服务器h2,h3,h4向客户端h1传输数据时,链路可能存在各种各样的情况,可能”空闲”、可能“拥挤”,这时便通过北向程序,根据链路的使用情况,动态地调整路由规则,实现负载均衡,来实现目的——提高网络连通性、数据处理能力等等。比如说,链路带宽若足够,则默认通过s4-s1的传输路径进行数据传送;而当剩余带宽不足的情况下,则应动态调整路由,使链路负载达到平衡。所以在现实应用时,我们应当选择适当、合理的负载均衡算法和实现方法。
方法:
实现SDN的负载均衡的常见方法有好几种,如:HTTP重定向、DNS域名解析、反向代理等......详细的介绍可以参考博客介绍
https://blog.csdn.net/ran_max/article/details/81350955、
https://blog.51cto.com/shhlamp/2054076 等
而本次我们的分组选择了应用均匀派发的方法,均匀派发是实现负载均衡最简单的策略,均衡派发的意思是指任务将均匀地派发到所有的服务器进程。在实现时,可以使用随机派发或者轮流派发。
均匀派发策略假设集群内所有进程具有相同的处理能力,且任务处理用时相同。
但实际上,由于进程部署环境的不同,其处理能力一般不同,任务处理时间也不尽相同。
三、实验演示
演示视频链接:
SDN作业——负载均衡
四、工作历程
2019年12月20日 在分组报告后,组员对课题进行了各自的了解。之后进行了进行了小组讨论,对小组的分组实验要完成什么样的任务,如何进行任务分配、大致通过什么样的方法进行实验设计与研究等交流了意见并讨论。在第一次讨论中确认了各人分工、实验方法等。每人去了解网络上的课例,大致理解如何实现。并尝试、开始进行实现。
2019年12月24日 设计开始后,遇到的困难和问题主要是对一些工作不太熟练,如报文分析、一时想不起来某些指令...成员因人而异。并且,分组继续对工作任务的分析、查询知识进行了解。
经历数天,通过网络资源对设计思路的推敲了解与打代码的上手,之后的工作更为顺利,期间陆陆续续地完成内容。,由于前几天的挺多门的考试,所有前面几天的时间并没有很多、很好的花在实验上,所以进度较为慢。
2020年1月1日,大致完成了实验项目,经过团队合作核实之后,开始演示视频的录制。
2020年1月6日,完成实验并检查,并将实验代码上传至GitHub、将视频上传。
五、个人总结
连振升:
在这次课程学习中最大的收获是学会运用虚拟机的部分终端指令,Mininet,Floodlight,ODL,Wireshark等软件的基本用法和用途,以及负载均衡的原理及实现。上了这门课程之后,使得我对sdn新构型网络有了更进一步的理解,通过控制面板和转发面的分离,更好的是的程序能够很好的控制网络各项功能,这是在传统网络上的一个大的飞跃。并且学会了简单的odl控制器下发流表,从而实现负载均衡的思路。相信对以后会很有帮助。
童圣滔:
SDN是一门相对比较新的课程,他能够用软件来定义网络,这在我以前的认知中是不存在的,通过本学期的学习,包括理论与实践,使我对sdn有了自己的理解和看法,我觉得他不仅让我学到了相关的理论知识,比如RYU啊,OpenDayLight啊,Postman啊,Mininet,odl等等,也学会了多实践和团队协作对学习的重要性。此外,我也对linux有了更进一步的理解。sdn具有无限的可能性,我们应该积极的拥抱她,而不是在角落里看着以前和满足于现在。
范文辉:
通过sdn的课程学习,我对SDN有了基本的了解,看到它的发展前景。同时,我学会了用mininet来创造拓扑,学会了流表的下发、设计和查看,学会了postman的使用,学会了用ODL控制器查看拓扑,下发流表,获取流表,并用uri接口获取端口数据;学会了linux的安装和一些简单基本操作等等。
蔡智伟:
(先发一下牢骚:网络类型的课程总是让我感觉很难,难以理解后就可能觉得无聊...如计算机网络、接入网、(软件定义网络)...但是网络类型的课程还是很重要,我也一直在尝试补缺漏,尽管效果不尽如人意。)经过这个学期的SDN的学习,一定程度上了解到新的领域的知识,之前从未了解过这门课的内容,竟然能通过软件来定义网络架构,这门课程也是较为有用、新颖,也具有巨大的优势。课程带给我的,不仅仅是课程内的知识,还有学习的方法:通过软件(虚拟机...)、博客论坛(SDNLAB...),更重要的是学习、创新态度:传统的网络架构带来了巨大成功,但它的成长速度趋于平缓,利用起来也越来越复杂。而从我认为难以想象的角度来进行SDN的创新设计,带来更加简单、动态和灵活网络管理。