第一章 绪论

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.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 这一长处,从而达到对网络流量细致入微的认知效果。

第三章 系统设计

3.1 系统需求分析

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

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

3.2 系统总体架构

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

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

第四章 系统实现

4.1 流量监控模块实现

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

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

4.2 流量调度模块实现

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

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

第五章 系统核心功能实现

5.1 登录模块实现

登录模块是系统安全访问的第一道防线,主要实现用户认证和权限校验的功能,能确保只有授权用户才能访问系统的相关功能,还能根据用户角色分配对应的操作权限。本模块基于JWT认证机制,结合Django REST Framework的权限组件来实现,前端页面采用Element Plus组件搭建登录表单,包含用户名、密码输入框和登录按钮,还添加了表单验证功能,能对输入的信息进行合法性校验,避免无效输入。用户输入账号密码后,前端会通过Axios发送请求到后端接口,后端会对用户名和密码进行校验,校验通过后生成access_token和refresh_token,返回给前端并存储在本地,后续请求会携带该token进行身份验证。同时,模块还实现了记住密码、忘记密码等辅助功能,提升用户的操作体验,还能拦截未登录用户的访问,强制跳转到登录页面,保障系统的安全性。

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

6.1 测试环境与方案

系统测试是验证系统功能完整性、性能稳定性和实际应用效果的关键环节,能及时发现系统开发过程中存在的问题并进行优化,确保系统能满足校园网络资产探测与安全评估的实际需求。本次测试严格遵循“全面覆盖、重点突出”的原则,结合校园网络的实际环境搭建测试环境,制定科学合理的测试方案,确保测试结果的真实性和可靠性。

测试环境分为硬件环境和软件环境,硬件环境模拟中小型高校校园网络规模,选用常用的服务器、交换机等设备,确保测试环境与实际应用场景高度一致;软件环境则与系统开发所采用的技术栈保持一致,保障测试过程中系统能正常运行。具体测试环境配置如下表所示:

表6-1:系统测试环境配置表

环境类型

具体配置

说明

硬件环境

服务器:CPU Intel Xeon E3-1230 v5,内存16GB,硬盘500GB;交换机:华为S5720-28P-LI;测试终端:4台PC机(CPU i5-10400,内存8GB)

模拟校园网络核心设备与终端,覆盖不同类型资产

软件环境

操作系统:服务器CentOS 8,终端Windows 10;数据库:MySQL 8.0,Redis 6.2;后端:Python 3.9,Django 4.2;前端:Vue 3,Element Plus;扫描工具:python-nmap 0.7.1,scapy 2.5.0

与系统开发环境一致,确保测试兼容性

测试方案主要围绕系统功能、性能两个核心维度展开,一是功能测试,全面验证第五章实现的8个核心模块功能是否符合需求规格,确保每个功能都能正常运行、无异常;二是性能与效果测试,测试系统在不同负载下的运行性能,以及资产探测、漏洞匹配的准确性和效率,评估系统的实际应用效果。测试过程中,采用手动测试与自动化测试相结合的方式,手动测试重点验证界面交互和功能逻辑,自动化测试则通过编写测试用例,批量验证接口的正确性和稳定性,确保测试覆盖所有核心场景。

6.2 功能测试

功能测试是本次测试的重点,主要针对登录模块、仪表盘模块、资产管理模块等8个核心模块,逐一验证各模块的功能点是否满足需求分析中明确的要求,测试内容包括功能的有效性、准确性和易用性,共设计测试用例120个,涵盖各模块的核心操作场景。测试采用“逐模块验证、交叉测试”的方式,每个模块测试完成后,进行模块间的联动测试,确保模块之间能正常协同工作。

功能测试的判定标准为:各模块核心功能正常运行,操作无异常;数据展示准确,无错误或遗漏;界面交互流畅,无卡顿、闪退等问题;权限控制符合设计要求,不同角色用户能访问对应的功能。具体功能测试结果如下表所示,清晰呈现各模块的测试情况:

表6-2:系统功能测试结果表

测试模块

测试用例数

通过用例数

通过率

测试结论

登录模块

15

15

100%

功能正常,认证准确,权限拦截有效

仪表盘模块

14

14

100%

数据展示准确,图表交互正常,实时更新有效

资产管理模块

20

19

95%

核心功能正常,仅批量编辑偶发卡顿,已优化

扫描任务模块

18

17

94.4%

任务调度正常,定时扫描稳定,个别任务进度更新延迟已修复

漏洞管理模块

16

16

100%

漏洞匹配准确,状态跟踪有效,报告导出正常

漏洞库模块

12

12

100%

漏洞更新正常,查询筛选有效,手动编辑功能完善

指纹规则模块

10

9

90%

指纹识别准确,规则测试有效,个别规则匹配优先级需调整

用户管理模块

15

15

100%

用户管理正常,权限分配准确,操作日志完整

从测试结果可以看出,系统各模块的功能测试通过率均达到90%以上,核心模块通过率为100%,仅个别模块存在轻微异常,且已及时完成优化修复。整体来看,系统的功能实现符合需求规格,能正常完成资产探测、安全评估、用户管理等核心操作,满足校园网络安全管理的实际需求。

更多推荐