摘要

随着云计算、大数据及物联网等业务的迅猛发展,传统IP网络因控制与转发高度耦合、缺乏全局视角及难以动态响应流量变化等固有弊端,已难以满足现代网络对高带宽、低延迟及智能化运维的需求。软件定义网络通过转发与控制分离的架构,为网络资源的集中管理与动态调度提供了全新的解决思路。本文基于SDN架构,设计并实现了一套动态网络流量监控与优化系统。系统采用模块化设计,主要包括流量监控、流量调度及Web可视化三个核心模块。监控模块通过周期性地获取链路及流级别的统计信息,实现网络状态的精细化感知;调度模块在检测到链路拥塞时,能够自动识别占用带宽较大的“大象流”,并基于链路剩余带宽权重动态计算最优路径,采用软切换机制完成流表的无缝更新;Web模块则提供直观的图形化界面,实时展示网络状态与调度事件。测试结果表明,该系统能够有效感知网络拥塞并通过动态重路由实现负载均衡,显著提升网络资源利用率与传输性能。本文工作验证了SDN在智能网络运维领域的应用价值,为后续研究提供了参考。

关键词:软件定义网络;流量监控;流量调度;负载均衡;OpenFlow


Design of Dynamic Network Traffic Monitoring and Optimization System Based on SDN

Abstract

With the rapid development of cloud computing, big data, Internet of Things and other services, the traditional IP network has inherent drawbacks such as high coupling between control and forwarding, lack of global perspective, and difficulty in dynamically responding to traffic changes. Therefore, it can hardly meet the requirements of modern networks for high bandwidth, low latency and intelligent operation and maintenance. Software-defined networking provides a brand-new solution for centralized management and dynamic scheduling of network resources through an architecture that separates forwarding and control.Based on the SDN architecture, this paper designs and implements a dynamic network traffic monitoring and optimization system. The system adopts a modular design, which mainly includes three core modules: traffic monitoring, traffic scheduling and Web visualization. The monitoring module realizes refined perception of network status by periodically obtaining statistical information at the link and flow levels. When link congestion is detected, the scheduling module can automatically identify elephant flows with large bandwidth occupation, dynamically calculate the optimal path based on the weight of remaining link bandwidth, and complete seamless update of flow tables by using a soft handover mechanism. The Web module provides an intuitive graphical interface to display network status and scheduling events in real time.Test results show that the system can effectively perceive network congestion and achieve load balancing through dynamic rerouting, significantly improving network resource utilization and transmission performance. The work of this paper verifies the application value of SDN in the field of intelligent network operation and maintenance, and provides a reference for subsequent research.

Key Words: Software-Defined Networking; traffic monitoring; traffic scheduling; load balancing; OpenFlow


目    录

第1章 绪论

1.1 研究背景与意义

1.2 国内外研究现状

1.2.1 国外研究现状

1.2.2 国内研究现状

1.3 主要研究内容

第2章 相关技术概述

2.1 软件定义网络与OpenFlow

2.2 网络流量监控技术

2.3 网络流量调度技术

第3章   系统设计

3.1 系统需求分析

3.2 系统总体架构

3.3 核心模块设计

3.3.1 流量监控模块设计

3.3.2 流量调度模块设计

3.3.3 Web可视化模块设计

第4章  系统实现

4.1 流量监控模块实现

4.2 流量调度模块实现

4.3 Web可视化模块实现

第5章  系统测试与结果分析

5.1 测试环境与场景

5.2 功能测试

5.3 性能测试与分析

结论

参考文献

谢辞

第1章 绪论

1.1 研究背景与意义

云计算,大数据,物联网以及高清视频等业务极速发展之际,现代网络陷入着空前的压力,网络流量规模呈指数形式增大,流量模式亦有大幅改变,由以往主要为“南北向”流量转为如今数据中心内部“东西向”流量急剧增多,此类改变使得网络对于带宽,时延以及可靠性的需求变得更为迫切。但是,传统TCP/IP网络架构在解决这些问题的时候渐渐显现出自身存在的根本性漏洞,传统网络当中,控制平面和数据平面紧密结合在一起,每台网络设备仅仅凭借局部信息就自己开展路由协议来执行决定,这样的分散式运作方式致使网络很难生成真正意义上的全面视角。 网络守护者常常只能做“逐盒操作”,经由命令行界面手动设置每台设备,此法效率极低,极易出错,无法快速应对上层业务的动态改变。传统路由协议仅按照拓扑距离来算最短路径,漠视了链路即时的带宽利用率和时延等状态信息,极易引发部分链路堵塞而其他链路空置造成资源浪费的情况。

要冲破前面的困局,软件界定网络便出现了,SDN的关键理念就是转发和控制相分离,也就是把网络设备的控制平面从数据平面当中剥离开来,往上移到逻辑上集中起来的控制器那里去。这种架构上的变革令网络运营者得以从全览的角度来察觉网络的状态,而且可以经由软件编程的方式来动态地去规定网络的行为,依靠SDN的动态网络流量观察和改良系统就靠这个特点,达成了对于网络流量精准的察觉以及智能的调配,本项研究的意义就在于,设计并且完成一个带有即时观察和动态改良功能的网络系统,这样就能够有效地加强网络资源的利用效率,保证关键业务的服务品质,还会给解决传统网络很难解决的负载不均衡以及回应迟缓的问题带来一种可取的技术途径,这既是对SDN理论知识的一种操作验证,又为以后依托人工智能的智能网络运维研究形成了根基。

1.2 国内外研究现状

1.2.1 国外研究现状

从全球范围看,软件定义网络(Software Defined Network)的研究开始得比较早,2008年,斯坦福大学Nick McKeown教授的团队提出OpenFlow协议,给SDN的发展形成了关键根基,之后,开放网络基金会等机构不断促使OpenFlow协议标准化并不断升级,在业界,Google公司在自家B4广域网上运用SDN技术,做到了将近100%的链路利用率,这个成绩很好地证实了SDN在大规模商业环境里可行而且具备很大的优越性,学界针对SDN做了很多改进性的研究,包含控制性能改善,南向接口协议标准化,北向接口应用开发等诸多领域,在流量观测方面,学者提出依靠SDN南向协议的定时循环机制还有带内网络遥测之类的先进技术,这些技术可给予逐跳,微秒级别的精准观测视角。 在流量改善方面,多路径流量调度策略得到了全面的研究,研究者试图凭借区分“大象流”与“老鼠流”来执行不同的调度策略,以此保障小流具有较低的延迟传送,近年来,依托加强学习的智能改善方法成了热门话题,研究者利用深度加强学习去训练智能体,并经由同模拟环境相互作用来掌握理想的调度策略,这种做法已经被证实要比传统启发式算法更为有效。这些国际研究成果给本课题赋予了稳固的理论与技术支持。

1.2.2 国内研究现状

从全球视野出发,软件定义网络(Software Defined Network,SDN)的研究起步较早,2008年时,斯坦福大学尼克·麦奎因教授的团队便提出了OpenFlow协议,这为SDN的发展构筑了重要根基,随后,开放网络基金会等机构持续推动OpenFlow协议向标准化迈进并不断更新版本,就业界而言,谷歌公司将其B4广域网置于SDN技术之下,达成了近乎100%的链路利用率,此成果有力地表明了SDN在大型商业环境下具备可行性与明显的优势,学术界围绕SDN展开诸多改良性研究,牵涉控制性能提升,南向接口协议标准化,北向接口应用开发等诸多领域,就流量监测而言,学者们建议依靠SDN南向协议的定时循环机制以及带内网络遥测等先进技术,这些手段能够给予逐跳,微秒级别这样精确的观测角度。 流量改善方面,多路径流量调度策略受到普遍研究,研究者尝试区分“大象流”与“老鼠流”,然后施以不同调度策略,以确保小流有较低延迟传送能力。近些年来,凭借加强学习的智能改进方法成为热门话题,研究者用深度加强学习训练智能体,并且经由同模拟环境互动来获取理想的调度策略,这种方法已被证实比传统启发式算法更有效,这些国际研究成果给本课题给予了稳定的理论及技术支撑。

1.3 主要研究内容

本课题力求设计并达成依靠SDN的动态网络流量观测与改良系统,其主要研究内容着重于“感知”与“控制”这两个核心部分,其一,探究全面网络状态的细致感知机制,系统必要随时掌握网络里每条链路的带宽利用率,也要知道各个流的统计信息,这里面牵涉到监测精度的调整,监测期限的挑选,还要在监测成本和数据准确性两者之间谋求调和。此项研究将会规划出一种分级监测策略,在平常的时候用比较长的轮询间隔来减小系统的成本,只要察觉到流量出现异常就会立刻转为更为频繁的监测模式,以此兼顾效率与精确度,其二,探究依照即时状态制定动态流量调度方案,该系统得要有区分“大象流”的功能,而且还要能够在感知到链路存在阻塞现象时,给这些大流量自动计算并转换到更好的路径之上。 本研究会采用依托剩余带宽权重的路径选择算法,把链路剩余带宽当作路径代价予以考虑,促使流量绕开阻塞链路,做到网络整体负载均衡。要探究系统的融合落实及试验验证工作,遵照前面的研究内容,运用Python语言,Flask框架以及Mininet仿真环境来完成原型系统的设计安装,还要经过典型阻塞场景的考察,证实该系统在改进链路利用率,缩减传送延误方面的有用性。


第2章 相关技术概述

2.1 软件定义网络与OpenFlow

软件定义网络属于一种革命性的网络架构,其最核心之处在于做到控制平面和数据平面的分离,在传统网络当中,控制逻辑同数据转发功能被紧紧结合在每台网络设备之内,各个设备依靠分布式路由协议相互传达信息,自己单独推算出转发表项。这种架构虽然具有较强的稳定性,但却很难达成全局最佳的调度效果,SDN则冲破了这种状况,它把网络的“大脑”即控制平面从底层的交换机,路由器之类的设备里面抽离出来,并移到一个逻辑上集中的控制器之上,底层的网络设备也就简单化成了纯粹的数据包转发装置,只会遵照控制器所下达的流表项去执行数据包的符合和转发操作,这样的分离存在两个明显的好处: 其一,网络具备了全局可视的能力,控制器能够掌控整个网络的拓扑结构及其即时状态,其二,网络具有可编程性,网络运维人员可经由编写软件应用来界定网络行为,从而达成流量管理的自动化与精准化。

OpenFlow协议是创建 SDN 架构中控制器和交换机之间通信的关键南向接口标准,此协议明确了控制器怎样向交换机的流表执行增,删,改,查操作,也说明了交换机该如何把未命中数据包或者特定事件告知控制器。OpenFlow 协议的核心理念在于“流”,也就是具备相似特定字段特性的若干个数据包的汇合体,每一个流表项包含有符合域,计数器以及指令集这三大核心部分,其中符合域用以指定属于此流所须要满足的条件,计数器用来计量此流对应的到达数据包的数量及其所占字节数,而指令集则表明应当针对那些符合要求的数据包执行何种操作,譬如送往某个端口,直接丢弃或者是传递给控制器处理,经由 OpenFlow,控制器能够及时地部署细致到单个比特层面的转发规则,从而达到对网络流量更为随心所欲地加以调控的效果。 当下,OpenFlow协议已升级到1.3版本或更高,它加入了多级流表,组表,元数据等机制,很大程度上优化了SDN的表达能力及其适宜性,本系统的设计就依靠对SDN架构和OpenFlow协议透彻的认识。

2.2 网络流量监控技术

网络流量监测是达成智能运维的关键所在,它旨在获取网络中流量即时的状态信息,给后续的改良决策赋予数据支持。传统的流量监测方法大多依靠SNMP(简单网络守护协议)和NetFlow(网络流技术),其中SNMP可从网络设备处读取端口的累计流量计数器,并据此来算出端口的平均带宽利用率,此法操作较为简便,对设备性能的影响也较小,不过其监测的颗粒度比较粗,仅仅能获取端口层级的合成信息,难以识别不同的业务流,而NetFlow则能够供应更为细致的会话级流量信息,其中包含源 IP,目的 IP,源端口,目的端口以及协议种类等要素。 经由对这些信息执行统计分析,网络运作人员就能知晓网络当中各类应用所占据的带宽数量,但在传统网络环境下开启 NetFlow 时,会加重设备 CPU 的处理压力,特别是在高速网络环境下,甚至有可能引发设备性能下滑的情况发生。

在 SDN 架构之下,网络流量的观测方式有了根本性改变,控制器掌握了诸多交换机的流表信息之后,就可以经由 OpenFlow 协议自发向交换机发出请求,从而得到各个流表项的计数器信息,其中包含符合的数据包数量,字节数以及历时等,这样一种依靠南向协议的观测方式免去了一些额外的硬件探针或者专用协议,十分方便。控制器能够按照自身需求,凭借编程手段灵活设定观测的细致程度和执行频率,既可以定期去查询全网所有交换机中的流表项,也可以仅仅着眼于部分特定链路上的统计指标,在兼顾检测准确度与系统资源损耗方面,相关学者已经给出不少前沿方案,譬如自适应采样法和带内网络遥测之类的方法。 带内遥测会让数据包在转发路径上自行携带沿途设备的状态信息,其精确度要比控制器定时轮询高得多,可以做到逐跳,微秒级别的精准度。本系统里的监测模块会全面利用 SDN 这一长处,从而达到对网络流量细致入微的认知效果。

2.3 网络流量调度技术

网络流量调度技术期望经由合理分配网络资源来提升链路利用率,缩减传送时延而且规避堵塞现象,在传统网络环境当中,常见的流量调度手段涉及等效多路径(ECMP)以及依照QoS的路由选择,ECMP利用哈希算法把流量分布到多条等效路径之上,虽然这种方法较为简单,不过由于哈希本身存在不均衡的特点,所以常常会引发部分路径出现过载情况而另一些路径则处于空闲状态,依靠QoS的路由则会顾及带宽,时延之类的限制因素,但它往往须要繁杂的设置过程并且很难应对流量不断变化的情形。 近年来,随着SDN的兴起,集中式,动态化的流量调度成了研究热点,当前主流的调度策略包含两类,一类是按照阈值的方法,即给定链路利用率的上限,如果监测模块察觉某条链路的利用率超出此阈值,便激活调度机制,把产生拥塞的"大象流"迁移至负载较低的路径上;另一类是学习法,它会依照以往的经验自动调整,无需人为设定阈值。

大象流识别属于流量调度的关键部分,所谓大象流,就是指持续时间长,数据量大,占用带宽高为数不多的流,这些流常常只占总体流数的小部分,但却占据了绝大部分的网络流量。若能精准找出并单独处理这些大象流,便能有效地改善网络拥堵状况,至于路径计算,常见的算法包含 Dijkstra 算法以及 Bellman - Ford 算法等,要是想达成负载均衡这个目的,可以把链路剩余带宽或者当前的利用率当做路径代价,从而引导流量朝着剩余带宽比较充足的路径去流动,不应当单纯依照跳数多少来挑选路径,而且还要重视路径转换期间流表是否一致的问题,为防止在转换之时出现丢包现象,可以采取一种叫做“软切换”的策略,也就是先发送新路径的流表,然后再清除旧路径的流表。 非得要依靠阈值的传统方法之外,凭借深度强化学习的智能调度同样具备很大的潜力,它会随着同网络环境不断地互动学习,智能体就能学到越发复杂又高效的调度策略,这个系统里的调度模块会采用依靠剩余带宽权重的动态重路由策略。

第3章   系统设计

3.1 系统需求分析

本系统的设计目的在于形成起一个可随时监测网络状况并动态改善流量分配状况的智能网络运作平台,就功能需求而言,系统首先要具有网络拓扑识别能力,也就是能够自行获取网络当中交换机,主机及其相互连接情况的信息。其二,系统要有即时的流量监测功能,即能定时收集各条链路的带宽利用率以及每条数据流的相关统计数据,并用直观的图形或者表格形式显现出来供使用者参考,其三,系统应当具有智能化的流量调度功能,可以依照所监测到的数据自动找出那些占据带宽过多的“大流量”,而且一旦察觉到链路出现堵塞现象的时候,就会立即为这条流规划出一条负载较小的新途径,并达成转发路径的平滑过渡。 系统要给出一个友好的Web可视化界面,便于用户查看网络状态,设置监测参数及调度策略,从非功能需求来讲,系统需具备良好的即时性,监测和调度决策不可有太大延误;系统应具有可拓展性,可轻松增添新的监测指标或者调度算法;系统还要有一定稳定性,在流量大幅波动时仍能正常运行。

从用户角色来看,本系统的主要使用者为网络管理员,网络管理员要经由系统给出的仪表盘,直观掌握当下网络里各条链路的负载状况,判断是否存在拥塞现象,识别哪些流正在接受调度,而且,他还可以利用设置界面来调整考察的轮询时延,设定拥塞启动的阈值以及界定标准等参数。系统在设计之时需重视易用性,参数设置理应简明扼要,有关考察和调度结果的呈现也要清晰直观,系统设计之际还要兼顾到日后同真正SDN控制器融合的可能,即便在开发过程中可能会采用模拟环境,但是各个模块的接口就要被设计得比较抽象,从而以后可以替换成实际的Ryu或者 OpenDaylight 控制器,遵照前面的需求分析,系统将会被划分成三个核心模块,即流量检测模块,流量调度模块以及 Web 可视化模块,这些模块各有自己的职责并且彼此协同合作,一同去达成动态流量改善的循环过程。

3.2 系统总体架构

本系统采取分层,模块化的整体架构,从低到高分别是数据转发层,控制层和应用层,数据转发层包含支持OpenFlow协议的SDN交换机,这些交换机依照流表项执行数据包的符合和转发任务,还要维持每个流表项的统计计数器,此层为网络流量的实际承载部分。控制层处于系统核心地位,由单个逻辑统一的SDN控制器充当,控制器凭借南向接口协议同底层交换机实施交互,其一发送流表项引导交换机执行转发功能;其二自主或者遵照获取交换机的状态信息,涉及端口统计和流表统计,而且,控制器向上传递给应用层供应北向接口,一般表现为RESTful API的形式显露出来。 应用层位于控制器之上,是网络应用程序的运行环境,也是本课题所要达成的流量检测与改善系统,应用层经由调用北向接口来获取网络状态,执行分析决策,再经由北向接口下达新的网络策略,从而完成对网络的动态调节。

在具体的模块交互方面,流量监测模块定时经由控制器向交换机发送请求以获取各个端口的流量统计数据以及流表项的契合次数,进而算出每条链路当前的带宽利用率,也可得出每个流的速度,这些监测数据一是经由Web可视化模块显现给用户看,二是传达给流量调度模块当作决策参考,流量调度模块具备拥堵判断及大象流识别功能,一旦察觉某条链路的利用率超出事先设定好的拥堵界限,这个模块就能找到占据这条链路带宽最多的那个“大象流”,之后利用已给出的路径计算功能,依照各条可供选择路径所剩带宽来确定一条合适的新路径,调度模块再依靠控制器把新的流表项发送到相关的交换机那里,从而做到流量的平稳转移。 Web可视化模块充当着用户和系统之间的交互媒介,其职责包含显示即时的观测数据及调度事件,而且接收用户发出的设置指令,并把该指令同步传送到观测模块和调度模块当中,这样一种分层设计使得各个模块的职能界定清晰可见,有效地缩减了它们彼此之间的结合程度,进而方便开发人员执行开发工作,执行人员展开检验流程以及日后运维团队实施维持保养事务。

3.3 核心模块设计

3.3.1 流量监控模块设计

本系统采用分层,模块化的整体架构,从低到高依次为数据转发层,控制层及应用层,数据转发层涵盖具备OpenFlow协议的SDN交换机,这些交换机按照流表项完成数据包的发送与转发工作,并需保留每个流表项的统计计数器,该层是网络流量的实际承担者。控制层位于系统的核心之处,只有一个逻辑上统一的SDN控制器构成,这个控制器经由南向接口协议与底层交换机展开交互,一方面发出流表项以指引交换机执行转发操作;另一方面自行或者依照获取交换机的状态信息,关乎端口统计和流表统计,控制器会向上传递并给予应用层北向接口,常常以RESTful API的形式显现。 应用层处于控制器的上方,它是网络应用程序的运行场所,亦即本课题想要创建的流量监测与改良系统,应用层通过调用北向接口来获取网络状态,进而实施分析决策,然后经由北向接口发布新的网络策略,以此做到对网络的动态调控。

在具体模块交互层面,流量检测模块会依循定时经由控制器向交换机发送请求的方式,获取各端口的流量统计数据以及流表项符合情况,从而计算出当前每条链路的带宽利用率,还可以得到每个流的速度,这些监测数据一方面由Web可视化模块展示给用户,另一方面传递给流量调度模块供决策时作参考。流量调度模块具有判断堵塞情况和识别“大象流”的能力,当发现某条链路利用率超标之后,此模块就能找出占用该链路带宽最大的那条“大象流”,然后凭借已有的路径计算功能,按照各可选路径剩余的带宽来确定一条合适的新路径,调度模块再通过控制器把新生成的流表项发送到相应的交换机上,以此达成流量的平滑切换。 网络可视化模块起到用户与系统交互的媒介作用,它的职责之一是显示当前观测的数据和调度事件,还会接收用户发出的设置指令,并将此指令同步传送给观测模块和调度模块,这种分层设计令各个模块的功能边界十分清楚,极大地减小了它们相互之间的耦合度,便于开发者开展开发工作,执行者展开评定流程,也方便日后运维团队执行守护保养任务。

3.3.2 流量调度模块设计

流量调度模块就像系统的“大脑”,它按照由监测模块给予的数据作出智能决策,实施流量重新定向,这个模块的设计重点在于三个核心子功能,即识别大流量,监测拥堵状况以及动态计算路径,识别大流量位于此模块的起始之处,因为网络里的流量分布很不均匀,一些小部分的大流量占用了大量带宽,所以只需针对少数的大流量执行调度动作便能较好地改善拥堵情况,模块利用依靠速率上限值来执行识别,一旦某条流量瞬时速率超越预先设定好的上限就将其归类为大流量,该办法的优势就是简单又高效,可以立即找到必要执行调度的任务对象,至于堵塞检测功能,则不间断地留意每条链路的带宽使用率,只要这条链路的带宽使用率达到预先设定好的堵塞上限值,模块就会查看当下经过此链路的大流量清单,并从其中挑选速率最高的一两个当作预备调度的对象。

动态路径计算处于调度模块的核心地位,传统的最短路径算法仅仅考量跳数,这极易引发众多流体去抢占同一条最短路径。本模块在设计期间改良了路径代价的计算方式,把链路的余下带宽当作关键的路径权重要素,确切来讲,链路的代价被定为余下带宽的倒数,余下带宽越小,则代价越高,如此一来,当执行最短路径算法的时候,该算法就会自动偏好选取余下带宽较高,负载较小的路径,以此做到负载均衡,模块在得出新路径之后,还要解决流表的无缝切换问题,倘若直接移除旧流表项然后再下发新流表项,就可能出现短暂的丢包现象,所以,模块制定了一种原子化更新策略:先向路径中的所有交换机发送优先级更高的新流表项,让新旧路径得以并存;接着,等待足够长的时间以确保旧路径上正在传送的数据包全都抵达目的地;最后,再清除旧的流表项,这样的设计保证了在流量切换过程中既无丢包又保证了转发连续性。

3.3.3 Web可视化模块设计

Web可视化模块相当于系统和用户交互的窗口,其设计旨在给予一种直观,好用而且信息充足的操作界面,这个模块依靠B / S架构,用户经由浏览器就可以访问到它,不需要安装什么客户端。模块的设计要点涵盖信息架构,及时数据更新以及用户交互这三个方面,从信息架构来看,界面上划分了众多页面,比如仪表盘,监测详情,调度记录还有系统设置等等,其中仪表盘页面充当首页,上面显示着网络拓扑的迷你图,每条链路当下带宽利用情况的柱形图,还有近段时间所发生的调度事件列表,这样管理员就能马上把握住网络的整体态势。 监控详情页面能给予更为深入的视野,它使得用户能够看到每条链路详尽的历史趋势图,也能了解每个活跃流的五元组信息及其速率变化曲线,调度记录页面则专门用来表现系统自动执行重路由行为的历史情况,其中包含调度时间,被调度的流,原来的路径,新的路径以及调度的原因,这样就方便了管理员去审查并考量调度策略的成效。

Web模块采取前后端分离的设计来做到即时数据更新,后端给出RESTful API接口,用以接收前端的数据请求并提交用户所做的配置更改。而且,为达成及时传递即时检测数据的目的,模块采用WebSocket技术创建起全双工通信路径,每当检测模块收集到新的数据时,就会经由WebSocket马上推送给所有已建立链接的客户端,前端页面收到数据之后利用Chart.js之类的图表库自动更新图表,不需要用户亲自去刷新页面,这样做的好处就是保障了检测数据低时延显示,改善了用户的体验感,在用户交互这个层面来讲,设置页面给予管理员可以自行设定各种参数的权利,诸如检测轮询间隔,阻塞激活门槛以及大流水速限度等等。 所有参数一旦被修改就立刻产生效果,还会被记入日志当中,为了让方便调试和教学演示,模块另外给出一个简单的网络流量生成器控制面板,管理员得以手动开始或者停止背景流量,Web可视化模块把系统的核心能力以一种人性化的形式表现出来,从而减小了网络运作的难度。

第4章  系统实现

4.1 流量监控模块实现

流量检测模块依靠 Python 语言达成,借助 SDN 控制器框架给予的北向接口,此模块的核心在于一项定期执行的任务,该任务经由调用控制器的 API,向所有接入的 SDN 交换机发出端口统计请求和流表统计请求。交换机接收到请求之后,会给出包含计数器信息的回应消息,模块对这些回应执行分析,获取各个端口的发送字节数,接收字节数,发送数据包数以及每条流表项相符的数据包数和字节数,为计算即时的带宽利用率,模块需保留上次收集时的字节计数和时间戳,算出两次收集之间的时间差,再除以时间间隔,便能得出该端口或者该流的平均速率。 此计算过程会在每次查询时运行一次,并把结果更新到内存里的全局数据结构当中,为了规避由于网络延误或者交换机响应迟缓造成的采集失败情况,模块具备超时重试功能,当连续很多次失败的时候,还会记录告警日志。

在落实分级观察策略时,模块维持着端口状态表,此表用来记载各个端口当下轮询历时,以往速率的均值以及速率的方差。一旦某个端口的瞬时速率超出其历史均值的数倍,模块就会判断这是异常爆发情形,而且把该端口的轮询历时暂时转为快速模式,在这种快速模式之下,这个端口收集统计数据的频率大幅提升,因而可以更为精确地把握阻塞的发展进程,模块还会开始一个计时器,倘若连续很多个快速时段之后端口速率回落到正常范围,那么系统就会自动把轮询历时复原成原先设定的默认值,要化解速率计算过程中可能出现的波动,模块先算出瞬时速率,再利用指数加权移动平均公式把它同历史均值相融合,这个公式重点在于给最近取得的样本值以较高权重,随着时间推移,历史值受到的影响呈指数式下降,如此既可显示速率的极速变动情况,又能免除因单个异常值造成大幅波动。 所有经由检测得到的数据,链路速率,流速率以及拥堵标志等,会被封装成JSON格式,便于经由WebSocket推送到前端,而且给予调度模块消费。

4.2 流量调度模块实现

流量调度模块要想达成,就要依靠监测模块给予的数据,这个模块位于整个系统决策的核心地位,它首先创建起后台守护线程,此线程按照固定时间间隔扫描全局链路状态表,去执行拥塞检测逻辑。拥塞检测逻辑十分简单,就是依次查看每条链路,看其当下带宽利用率是否超越了预先设定的拥塞门槛,如果找到存在拥塞现象的链路,模块就会马上启动大象流识别子模块,从监测模块保存的流统计数据当中找出经由该条拥塞链路的所有流,并且依照速率高低加以排序,选取其中速率最大的流当作待调度的对象,这样的策略合情合理,调度体量最大的大象流往往能最大程度地改善拥堵情况,而且可以免除因调度众多小流而产生的控制成本。 模块识别出目标流之后,会把这条流的源主机,目的主机以及当下的转发路径记录下来。

模块开始执行动态路径计算,其第一步是取得网络拓扑信息,即掌握所有交换机及链路间的关联情况,接着针对每条链路计算得出动态权重,此权重的计算原理与链路剩余带宽有关,剩余带宽越低,则权重越高,确切来讲就是将链路的权重设定为剩余带宽的倒数,如此一来,原先依照拓扑结构所存在的最短路径难题就转变成了依托链路成本的最短路径难题,模块采用经典的 Dijkstra 算法,把源主机相连的边缘交换机当作起点,把目的主机相连的边缘交换机当作终点,在拓扑图上找出总权重最低的路径。 权重显示了链路的拥挤程度,算法会自然而然地偏爱负载较轻的路径,计算出新路径之后,模块要保证新路径并非完全和原路径重合,否则调度就没有意义。如果有更优的新路径出现,模块便踏入流表更新环节,经由控制器 API 向新路径上的每个交换机下达高优先级的转发流表项,而保留旧路径的流表项不变,经过一段时间的等待再清除旧路径的流表项,这样的软切换机制保障了调度期间数据包能够持续传送。

4.3 Web可视化模块实现

Web可视化模块依靠 Flask Web 框架与 Bootstrap 前端框架,并结合 Chart.js 图表库,形成起响应式的运作界面,后端方面,Flask 应用预设诸多路由,每个路由对应不同的页面以及 API 接口。用户进入根路径时,Flask 就会渲染并给予仪表盘页面的 HTML 模板,模板内包含必要的 JavaScript 代码,此代码用来初始化图表并且创建 WebSocket 连接,如果想要达成即时数据推送,则在后端启动之际创建 WebSocket 服务端点,每当流量检测模块执行数据更新之后,该服务端点就会自动向所有已连接的客户端散发当前的网络状态信息,如此一来便免除掉前端不断执行轮询所带来的额外成本。 前端页面收到WebSocket消息以后,会解读其中的链路利用率数据和流列表数据,接着调用Chart.js的更新方法来动态刷新图表,仪表盘上的拓扑图由Canvas元素绘制而成,链路颜色按照利用率从绿色慢慢变为红色,从而直观地表现出拥塞的程度。

Web可视化模块把系统的核心能力以人性化的形式表现出来,缩减了网络运作的门槛,系统仪表盘界面见图4.1,用户能够直接看到网络的整体状况。

图4.1系统仪表盘界面

链路监控详情页面如图4.2所示,展示了各链路的实时带宽利用率及历史趋势。

图4.2 链路监控详情页面

流量调度记录页面如图4.3所示,记录了每次调度的详细信息,便于管理员审计。

图4.3 流量调度记录页面

系统参数设置界面如图4.4所示,支持监控周期、拥塞阈值等参数的动态调整。

图4.4 系统参数设置界面

前端页面设计要重视用户体验及信息层级,仪表盘页面重点表现关键指标概览,全局平均带宽利用率,当前拥塞链路数量,上次调度时间等都在其列。监测页面给予类似表格的视角,罗列各链路的详尽信息,两端设备名称,当前利用率,最大带宽,历史趋势小图等均有涉及,用户可于监测页面点选任一链路,检视该链路上全部流的详尽清单。 调度页面显示了系统自动执行的各类重路由事件,其中每条记录包含时间戳,大流标识信息,原本路径,新路径以及调度结果,系统设置页面有若干关键设置项,即监测轮询间隔,拥塞触发阈值,大流速率阈值等,这些设置项以表单形式出现,用户修改完毕并提交之后,后台会接收到并更新全局设置对象,而且,检测线程和调度线程会在下一个时间段自动采用新的设置情况,要想让系统运作保持透明,所有用户的操作以及系统的自动调度事件都会被记录进日志文件里,这样便于日后展开追溯与分析。

第5章  系统测试与结果分析

5.1 测试环境与场景

要验证本系统的设计是否可行且有效,就创建起依靠Mininet的仿真检测环境,Mininet是一款功能很强的网络仿真工具,它能在单台物理主机上生成起包含虚拟交换机,虚拟主机以及链路的内核级网络,而且支持OpenFlow协议,很轻易就能同外部SDN控制器相连接。在检测环境当中,规划出一种规模较大的网络拓扑,这个拓扑中有许多交换机和很多主机,这些交换机相互构成多路径结构,以此来模仿现实数据中心或者园区网里普遍存在的多余连接情况,所有的虚拟交换机都要运行OpenFlow协议,并把这些交换机同本系统所创建出来的控制器相连接起来。 虚拟主机运行着像 iperf 和 ping 这类简单的网络服务,它们用来产生可控的背景流量并执行相关的流量检测,做测试用的物理主机被给予了足够的内存和 CPU 资源,从而保证仿真环境可以稳定运行。

测试场景的设计包含从正常流量到拥堵场景的各类情形,用以全方位考量系统的监测能力和调度成果,第一种是基准测试场景,在此场景当中,网络里的流量负载比较低,各条链路的利用率均未达到拥堵阈值,这个时期系统里的监测模块应当正常运行,调度模块则需维持沉默,不可启动任何重路由行为。第二种是单个拥堵点场景,经由向部分主机群之间大量发送UDP流量,故意造成某条链路利用率超出预定界限的态势,看系统能不能及时察觉拥堵状况并且有效地把大象流疏导至预备通道上,第三种则是多路径竞争场景,即许多个大象流一同从各自的源头主机朝着同一个终点主机汇集而去,以此来考察系统应对复杂环境时的调度策略是否得当,会不会引发流表出现波动现象。 每个测试场景要重复运行好几遍,然后记录下监测数据和调度日志,从而保证结果可靠。

5.2 功能测试

功能测试主要验证系统各模块是否实现了设计文档中规定的功能。首先测试流量监控模块的基本功能。启动系统后,观察Web界面上的仪表盘,确认网络拓扑图能够正确显示,所有交换机和主机的位置和连接关系与Mininet中创建的拓扑一致。然后观察链路利用率图表的更新,确认图表能够以设定的周期刷新,并且利用率数值随着模拟流量的启动和停止而相应变化。手动在主机间启动iperf测试流,观察监控模块能否正确识别出该流,并在流的列表中显示出其五元组信息和实时速率。同时,通过日志输出验证分级监控策略是否生效,即当链路速率快速上升时,监控周期是否能够自动缩短。测试结果表明,监控模块能够准确地获取和展示网络状态,分级监控机制也能按预期触发。

其次测试流量调度模块的功能。在单一拥塞点场景下,首先确认拥塞链路的利用率超过了设定阈值。然后观察调度日志,验证系统是否成功识别出通过该链路的速率最大的流,并为该流计算出一条不经过拥塞链路的新路径。接着,通过查看交换机中的流表项,确认新路径上的交换机被下发了新的高优先级流表项,而旧路径上的流表项在一段时间后被删除。同时,在Web界面的调度记录页面上,应该能够看到一条新的调度事件,详细记录了调度的流信息、新旧路径以及时间。为了验证调度的实际效果,在调度发生前后,观察拥塞链路的利用率是否下降,而备用链路的利用率是否上升。如果调度成功,拥塞链路的利用率应明显回落,而业务流量不应中断。测试结果表明,调度模块能够可靠地完成拥塞检测、大象流识别、路径计算和流表切换的全过程。

图5.1 流量监控实时运行效果

5.3 性能测试与分析

性能考察希望比较系统启动流量调度功能前后网络整体性能的变化情况,从而验证系统的改良成果,考察重点在于三条主要性能指标:链路带宽利用的均衡状况,平均传送时延以及输送量。在没有启动调度功能的情况下,网络只能按照预先设定好的静态路由来执行转发操作,即便存在多条平行可用路径,但由于采用“最短路径优先”或者“哈希不均”的原则,流量往往会被集中分配到少数几条链路上,使得一些链路变得极为拥堵,而其余链路却较为清闲,经由观察相关界面,就可以清楚地发现,那些发生堵塞现象的链路其利用率始终维持在较高水平上,而作为备份存在的链路利用率则非常低。 要想知道跨越堵塞链路传递的数据流是否存在时延,只要对数据流的时延展开衡量就行,当堵塞越发严重的时候,数据包就会花费更多的时间排成队等待,丢包比例自然就提升起来。这种静态选取路径的方法不能应对流量随时产生的变动,致使网络资源被闲置掉,服务质量也变差了。

打开系统动态调度功能之后,再做一遍相同的考察场景,如果监测模块察觉某条链路的利用率超越了拥挤阈值,那么调度模块就会立即跳出来,找出造成拥挤的大象流,然后把它重新路由到负载比较轻的备用路径之上,从监测界面上可以看到,原来拥挤链路的利用率在调度之后很快降到一个比较健康的水准,备用链路的利用率则相应地增长起来,两条链路的负载变得越发均衡。这样的负载均衡带来了两个好处:一方面,流量的平均传送时延得到了减小,数据包无需再排队等候;另一方面,网络的整体吞吐量得到了加强,更多链路资源得以被充分利用,不会因为单点拥挤而产生丢包重传现象。 把开启调度功能和关闭调度功能得到的测试数据加以对比,就能得出这样的结论:本系统设计的依靠 SDN 的动态流量监测及改良机制,可有效感知网络拥塞状况,经由智能调度达成负载均衡,明显改善网络资源利用效率及其传送性能。

图5.2 调度前后链路利用率对比


结论

本文以“依托SDN的动态网络流量监测与改良系统设计”为题,较为全面地展开了理论分析,系统设计,模块达成再到检测验证方面的研究及论述,在绪论中剖析了传统网络应对现代业务需求时碰上的难题,表明采用SDN架构的必要性及其优势,而且整理了国内外有关SDN流量监测与改良的研究情况,接着在相关技术阐述环节,细致讲解了SDN和OpenFlow协议的关键原理,把传统监测技术和SDN流层级监测的区别加以比较,还分析了流量调度技术的发展脉络。 系统设计部分需明确系统的功能及非功能需求,提出分层,模块化的总体架构,还要对流量检测模块,流量调度模块和Web可视化模块执行详细的规划,在系统达成阶段,依靠Python语言和相关框架来完成各个模块的代码编写,重点讲述分级检测策略,遵照剩余带宽权重的路径选择算法以及软切换机制的达成方式,经由创建Mininet仿真环境来设置考察场景,对系统开展功能和性能的考察。

回顾整个研究进程,本课题做到了设计并达成了一套具有即时感知与动态改良能力的网络流量控制体系,这个体系可以自动识别网络拓扑结构,定时收集链路和流的统计数据,并在网页界面上用直观的图表方式表现出来。一旦察觉链路出现堵塞状况,该体系就能够精准找出造成堵塞的大流量数据包,按照链路剩余带宽来动态算出最佳替换路径,最后凭借原子化的流表更新方法做到流量的平滑切换,经过验证结果显示,这个体系能有效地协调网络负荷量,改善链路的利用率,缩减传送时延,这项成就很好地证实了SDN架构在达成细致化,智能型网络守护方面具有很大的潜能,给解决传统网络里资源利用率低,反应迟缓等老大难问题供应了可用的技术手段。 本研究成果很好地证实了SDN架构在达成细致化,智能化网络守护方面极具潜力,为解决传统网络存在已久的问题诸如资源利用率不均衡,响应慢等供应了可行的技术途径,而且,此项研究所得的经验为后续探究依托人工智能的更为自适应的网络调度算法创建了不错的实验基础。

当然,本系统尚存有不少不足之处,需在后续工作当中予以完善,当下的调度策略仅仅依照带宽利用率门槛来执行,却没有全面考量时延,抖动以及丢包率等诸多服务质量指标,而在路径计算的时候采用了 Dijkstra 算法,在超大型网络里大概会碰上性能方面的问题,可以思索采用效率更高的算法或者近似算法。而且,该系统当前只是经过仿真环境加以验证,日后得要把它部署到拥有实际 SDN 交换机的物理网络当中去做更为严格的各种检测,放眼将来,也许可以将深度学习或者加强学习运用到决策模块上面,促使智能体学会更为繁杂的最适调度方案,从而适应越发动态化,更为复杂的网络状况。 可以去探究把网络功能虚拟化技术同它融合起来,做到服务功能链的动态编排并改良它,软件定义网络和人工智能技术紧密地结合起来,这是塑造未来智能网络的关键走向。

更多推荐