APP下载

一个用于数据中心TCP丢包行为分析模块—TCPRA

2018-10-31

智能计算机与应用 2018年6期
关键词:交换机数据包链路

张 健

(国家计算机网络与信息安全管理中心 黑龙江分中心, 哈尔滨 150001)

引言

丢包对于虚拟机的运行来说是致命的,直接影响到用户体验。作为系统的管理者,应该找出丢包的真实原因。在数据中心,这类问题几乎是不能通过传统的监测工具(如SNMP)来进行监测的。管理者需要及时更换出问题的交换机,而这一类的干预手段必须付出“昂贵”的代价,代价一方面来源于用户体验、忠诚度,另一方面来源于时间、资源开销。

在网络故障探测方面有许多先前研究,Pingmes[1]通过周期性地发送探测包的方式来监测网络 ,但是这种方法是一种典型的“带外”探测,其不能探测只影响带内数据的情景。在文献[2]中,Roy et al. 通过对路由器进行修改来监测所有数据通路来探测包传输错误,但这种方式需要对交换机进行相应的修改,这种方式并没有一种统一的对于所有交换设备的解决方式。Everflow方式被用来寻找丢包的位置,但是需要大规模地对数据通信进行采集,其代价高昂。在一个网络中,通常存在1000 000级别的链路,可以认为0.000 1%的链路可能同时存在丢包,如果同时对这些链路进行丢包探测以及恢复,是不可能实现的。通常的做法是根据链路的重要性进行选择性带权探测修复。但是现有的技术并不存在用户与链路的相关关系模型。这也就是说在现有的系统需要在应用和链接层面进行语义分析。

为了解决这一缺陷,本文提出了TCPRA(TCP Retransmission Analysis),一个简单、轻量化的网络监测工具。TCPRA通过对TCP链路的监测,找出这样的链路:TCP数据流遭受了大量的重传。TCPRA对链路的相关参数进行采样和赋权,最后通过机器学习方法得出TCP数据流丢包的可能原因。在这篇文章中,作者做出如下工作:

(1)本文设计了TCPRA,一个轻量化的用在数据中心网络的网络监测系统。

(2)展示了将TCPRA实现到具体的数据中心遇到的问题及解决方案。

(3)验证了TCPRA是系统可承受的。

1 启发

TCPRA的目标在于选择重传的主要原因。对于TCPRA有两个主要目标:

(1)能够适应数据中心网络规模。

(2)能够真实地运行在数据中心网络中。

现有的工具中,有一系列的技术能够监控网络中的丢包行为:比如管理者可以通过对交换机进行监测从而找到TCP的丢包行为,但是这通常不容易实现,需要对不同厂家的交换机进行开发,并且TCP数据流的数量庞大。另外一种方式是通过网络注入的方式,在TCP头的扩展部分嵌入特定的标识符,标识TCP的丢弃行为,但是这种方法靶向性并不强,因为管理者一般不知道什么样的数据包在网络中会被丢弃。

本文采用软件定义网络方法,对交换机功能进行扩展,通过在软件定义网络框架下,设计网络监控程序,实时监控数据流的重传行为,并将这些重传行为汇聚到数据收集器上。这些数据收集器连接到一个控制器上,运行在控制器上的控制程序通过数据收集器收集到的实时数据判断TCP数据包丢弃的原因并对交换机的行为进行决策。这里交换机的行为包括更换、重启、限制速率、限制TCP流接入数量等。

软件定义网络是一种新的网络架构,其利用相应的协议将网络的数据层和控制层解耦合,从而使得数据的传输独立于网络的控制逻辑。其优势为:

(1)将设备从网络控制逻辑的束缚中解放出来,规范了硬件设备的发展方向。

(2)以更加全局的视角重构网络控制算法,更加丰富了控制算法的输入信息,从而提升了网络控制算法的性能。

一个典型的软件定义网络协议是OPENFLOW:是一种网络通信协议,工作在数据链路层,控制网络交换器和交换机的转发逻辑,OPENFLOW协议制定了数据转发的方式:通过流表进行转发;制定了交换机和控制器通信的协议,交换机和控制器的指令交流以及数据传送行为。OPENFLOW也有相应的网络监控协议:sFlow和netFlow,sFlow是基于采样的链路层网络监控协议,netflow是由思科公司引入的网络监控协议。这两种协议用在数据中心网络中代价较高,故在本文中不予考虑[3]。

对于数据包的丢弃行为,通常当数据包丢失的时候通过一定的标识通知网络管理者。这种方式需要对所有数据包进行标识,并不适用于大规模的数据中心网络。本文转换思路,通过TCP的重传行为来标识数据包的丢失。所以本文的设计思路是,在交换机上设计监测数据包重传的监测模块TCPRA,监测结果以及网络状态实时传送连接到控制器的数据收集器上,控制器对数据的丢弃行为进行决策。

2 系统框架设计

在数据中心网络中,外围的用户终端通过有线网络连接到交换机上,服务器以及交换机之间通过有线网络连接。TCP数据流通过交换机在有线网络中传输,交换机的交换表决定TCP下一跳的地址。TCPRA工作在交换机上的传输层。传输层有两个代表性的传输协议:TCP(Transmission Control Protocol)和UDP (User Diagram Protocol) 。其中UDP协议是面向数据包的传输协议,数据的传送并不需要进行确认,数据发送端的发送行为与数据的接收成功无关,通常用在实时性较强的应用中,如游戏动作等。TCP协议是面向连接的,TCP发送端的发送行为必须配合接收端的接收行为。TCP协议是一种可靠传输协议,指的是数据包丢失将启动数据重发,直到数据被正确接收为止。在数据中心中,考虑到数据的重要性,采用TCP作为传输层的默认控制协议。基于软件定义网络的丢包检测模块—TCPRA如图1所示。

图1 基于软件定义网络的丢包检测模块TCPRA

Fig.1PacketlossdetectionmoduleTCPRAbasedonSoftwareDefinedNetwork

在接收到数据之后,通过TCPhdr数据结构,TCPRA提取数据包的头部信息,其头部信息包括数据包的sequence、ack sequence、数据包的长度信息。TCPRA判断数据的重传的过程:TCPRA将T时间内的数据包存储到内存中,当新数据包到来的时候,如果数据包的长度为0,那么确定该数据包为一个ack包并不含有数据。当数据包长度不为零时,判断sequence是否在现有的数据包中出现过,如果出现过即为重传。当发生重传的时候,将重传的数据包头部信息、数据流速率、数据流数量信息、数据包速率、数据丢弃速率、队列长度信息等通过TCP协议发送给数据收集器。控制器收到重传信息以及网络信息之后,通过决策树算法判定重传与网络参数之间的权重关系。

3 实验评估

本文在一个实际的数据中心对TCPRA进行实验评估,评估的环境是6台NETGEAR交换机、运行openwrt以及openvswitch虚拟交换机软件,一个控制器(部分充当数据收集器)、10台客户端接入软件。客户端通过scp复制数据模拟数据流行为。系统运行时间为24 h,收集数据23.35GB。数据包括队列长度、数据丢包、重传、重新入队、数据速率。控制器对这23GB数据进行决策树分类,分类结果如图2所示。从图中可以看出数据丢失主要决定于接收速率,其次是重传速率、第三是重新入队。

图2 数据丢失与网络参数决策树

根据决策树输出结果,当发生丢包时。根据交换机的接收速率、重传速率、以及重入队数量,判定该交换机是否需要限制速率。如果数据速率超过5 113 MB,则限制进入速率,如果重传大于0.5个数据包/s,则限制速率。如果重新入队数量大于683,可以调整队列算法。

4 结束语

本文实现了一种在交换机上的丢包监测模块TCPRA,该模块监测数据丢包行为并且通过控制器决策树算法发现数据包丢弃的原因。并且根据学习结果以及交换机状态调整配置策略。实验评估显示TCPRA可以胜任数据中心的数据包丢弃和控制工作。

猜你喜欢

交换机数据包链路
一种移动感知的混合FSO/RF 下行链路方案*
基于凸优化的FSO/RF 自动请求重传协议方案
面向未来网络的白盒交换机体系综述
二维隐蔽时间信道构建的研究*
天空地一体化网络多中继链路自适应调度技术
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
局域网交换机管理IP的规划与配置方案的探讨
更换汇聚交换机遇到的问题
基于地铁交换机电源设计思考
C#串口高效可靠的接收方案设计