刘红梅
(电子科技大学成都学院,四川 成都 611731)
网络功能虚拟化是一种虚拟化技术,常用于使用软件解决方案替代传统网络硬件提供的功能。功能虚拟化和软件定义网络都可以使用OpenFlow技术来实现。软件定义网络将传统网络硬件分为数据平面和控制平面两部分,实现高效的网络配置和管理。 网络功能虚拟化技术则将诸如防火墙和负载平衡等传统服务进行虚拟化,从而使服务提供商能够动态地向他们的客户提供这些服务。基于网络功能虚拟化技术,本文提出了以一个网络流量监控系统,该系统的实现无须额外的硬件成本。
在传统的网络环境中,流量监控系统通常使用物理交换机。在这种环境下,为了检索NetFlow数据进行分析,物理交换机应该能够支持NetFlow协议。我们的目标是通过使用虚拟化技术重新建模这个系统架构,提高网络管理的灵活性。本文提出了一个包含虚拟交换机、OpenFlow控制器和流量测量服务的网络流量监控系统。
该系统由三个节点组成:一个数据节点、一个网络节点和一个网络节点备份。网络流量通过虚拟交换机输入到系统,测量服务计算流量,将收集到的数据通过消息服务发送到数据节点。数据输入服务将数据发送到数据库,当数据输入服务在数据中检测到恶意软件活动、违反政策、协议异常、病毒检测、带宽异常等问题时,它使用OpenFlow控制器中的应用程序接口(API)来控制虚拟交换机。系统的架构如图1所示。网络节点使用消息服务进行检查:如果主节点离线或发生故障,则由从节点将替换它。这确保了通过网络节点的Internet接入不会被中断。网络管理员可以使用Web界面来评估网络的状态,如图2所示。
图1 系统架构
图2 流量管理系统Web页面
为了实现网络功能的虚拟化,设计了一个网络节点,用于控制虚拟交换机和计算网络流量。网络节点包括四个服务模块。Open vSwitch服务模块负责处理进入虚拟路由器的网络流量,随后OpenFlow控制器检测网络流量。当没有检测到问题时,允许流量通过Open vSwitch并转移到物理网络环境中的网关。测量服务的iptables过滤器用于计算网络流量的字节数以及数据包是用于输入还是输出,然后将所有数据发送到第四个服务,即消息服务。每个统计数据项由消息服务根据高级消息队列协议(AMQP)存储在一个数据节点中。
数据节点用于处理从网络节点收集的数据提供四种服务:Web服务、数据处理服务、消息服务和数据库服务。数据处理服务用于格式化数据,消息服务负责处理AMQP中的数据。数据处理服务还用于检测数据中的问题。当检测到有问题的数据时,数据处理服务会通知管理Open vSwitch的OpenFlow控制器。OpenFlow控制器可以限制源数据流量以防止恶意入侵,并将处理后的数据发送到数据库。这些数据将会显示在Web界面中,数据处理服务是使用Python实现的。在这个过程中,必须频繁地写入和读取数据。因此,使用NoSQL数据库架构MongoDB。
使用OpenStack Neutron L3解决方案来备份网络。使用的主要技术是虚拟路由器冗余协议 (VRRP)。两个节点使用消息服务保持连接,每个节点都确保另一个节点处于活动状态。当网络流量进入时,首先由主节点进行评估。当消息服务节点无法检测到对方时,网络流量被转移到从节点。使用VRRP可以保证用户在使用网络服务时服务不中断。VRRP 解决方案的第一部分是在两个节点之间创建一个虚拟路由器。主节点使用 Open vSwitch 创建虚拟路由器、高可用性(HA)网络和 HA 端口。网络代理构建接口和HA配置文件,然后向从节点发送消息。从节点获取消息并设置与主节点相同的配置,然后保持与主节点的连接。VRRP解决方案的第二部分是让从节点在主节点发生故障时替换主节点。当主节点中的虚拟路由器发生故障或离线时,网络代理将消息发送到从节点。从节点根据配置文件启动一个虚拟路由器。如果主节点中的网络代理发生故障或离线,从节点无法检测到主节点的连接时,会自动启动虚拟路由器。
流量监控机制分为两部分:实时监控功能和统计数据分析。实时监控功能与OpenFlow 控制器相结合,以管理进入系统的流量。流量数据的统计分析由NetFlow显示。网络管理员可以使用这些实时监控功能来检测网络行为异常和统计数据来分析网络流量。
实现实时流量监控功能的一种方法是使用网络命名空间。OpenFlow系统使用 ip netns命令创建网络命名空间,以便命名空间从主机继承配置。当命名空间用于创建虚拟路由器时,流量将进入特定的命名空间。命名空间在iptable过滤器中创建规则,如果传入流量的源IP与规则匹配,则将收集此流量数据。收集到的数据会定期发送到数据节点供管理员分析。
统计数据分析的实现方式与实现实时流量监控功能类似。系统使用ip netns命令创建网络命名空间和虚拟路由器。Open vSwitch支持NetFlow协议通过虚拟路由器收集所有数据包信息。该数据包信息将被转换为 NetFlow 数据并发送到数据节点,该数据节点通过流捕获的方式定期收集数据。
本系统中的网络监控和流量测量是两个重要的功能。为了便于网络管理员对网络进行管理,设置了一个限值K,以供实时流量监控时参考。当实时流量大于K时,OpenFlow控制器会对这个流量进行一些动作。
数据节点接收到实时数据后,对数据进行格式化。格式包括了最后更新时间、检查时间、字节和数据包信息。对于统计分析,使用NetFlow数据格式,其格式包括源IP、目的IP、协议类型、源端口、目的端口、字节和数据包。
可以根据实时流量服务中的统计数据来设置K。例如,可以根据单日数据的统计来设置K。可以把单日统计数据看成一个正态分布,剔除异常值后,将K设置为其均值。K的计算过程如算法1所示。考虑了正态分布的68-95-99.7规则,即68.27%的数据分布在第一个标准差范围内,95.45%的数据分布在第二个标准差范围内,99.73%的数据分布在第三个标准差范围内。
算法1 限制K计算输入:统计数据X输出:K值1.计算均值:;2.计算方差:;3.计算标准差: ;4.计算异常值:;5.For i = 1 to len(X)6. If On >= -3 and On <= 3 then 7. xi = 0;8. End if 9.End for 10.11.Return K;
为了帮助网络管理员有效地管理网络,设计了一个Web管理页面。该网页由实时流量状态监控、统计数据查询、虚拟路由器状态三个功能组成。网页管理页面默认在索引页面显示实时流量数据,会自动加载当天采集的实时流量数据。根据配置设置,每分钟将数据写入数据库。统计数据查询页面提供了一天内从NetFlow捕获中收集的信息。每天上午12点将捕获的数据发送到数据库,这些数据可以通过这个查询页面进行查询,在对所有数据进行排序后,会自动在该页面显示前20个来源IP。网络管理员可以参考这些信息来自适应地设置监控系统的K值。路由器状态页面显示路由器的状态:指示哪个路由器提供网络服务,并显示其他路由器处于工作、待机或离线状态。网络管理员可以通过该页面快速告知操作整个网络的状态。
实验环境由三台硬件规格相同的计算机组成:12核英特尔志强E-5645处理器、32 GB内存和1 GB网络卡。使用Helium版本作为OpenFlow控制器,使用Open vSwitch 2.5.0版本,使用OpenStack Newton版本。Python的版本是3.5.1。在真实的网络环境中构建了所提出的系统,该系统捕获连接到互联网的计算机的流量,实验的拓扑架构如图3所示。
图3 实验拓扑结构
使用网络测试软件iperf对虚拟路由器进行性能测量,实验测试平台由客户端和服务器组成,客户端发送大量数据包进行网络压力测试。实验使用了TCP和UDP两种协议。虚拟路由器和物理路由器的性能对比结果如图4所示。由图4(a)的结果可知,当数据包大小增加时,网络速度会增加。最大速度出现在数据包大小为 2 048字节的情况下。由图4(b)所示的实验结果可知,最大速度出现在数据包大小为1 024字节的时候。当数据包大小增加到2 048字节时,物理和虚拟路由器的速度会减慢。
图4 虚拟路由器和物理路由器的性能对比
实验考察了不同写入频率下实时测量系统的准确性,结果如图5所示。由结果可知,数据写入频率越高,准确度也越高。 但是,频繁写入数据库可能会导致高流量负载。
图5 写入频率与准确性和负载的关系
实验使用iperf工具来测试网络系统高可用性(HA)功能的响应时间。将主网络节点停止,并观察网络流量的反应。图6显示了最佳和最差响应时间的实验结果。由于当时主网络节点关闭,网络流量在第6秒的时候下降为0。在最佳情况下,网络流量在9秒时达到正常值,这意味着网络HA功能正常工作。
图6 最佳和最差响应时间
本文基于网络功能虚拟化技术来实现网络流量监控系统,并将其性能与采用传统硬件架构的系统进行比较。由实验结果可知,本系统与传统基于硬件架构的系统的性能相近,并大大降低了硬件成本,提高网络管理任务的灵活性。后续的研究工作将在更广泛的网络环境中测试所提出的系统。