(河南科技大学 信息工程学院,河南,洛阳 471000)
数据中心网络技术在网络搜索、在线零售、广告系统、社交网络等方面的推广与应用为用户提供了高质量的网络服务。这些服务都使用在线交互式应用OLDI(online data-intensive)[1],且具有两大特点:1)应用程序都具有不同的截止时限,无法在截止时限内完成传输的流将不被统计在反馈的结果中;2)这些应用采用基于树的设计模式。通常情况下,用户的请求会被分配给多个工作站并行处理。数据中心网络服务的上述特点为传输层协议的设计提出了巨大挑战。
针对数据中心网络的应用需求,传输层协议设计人员提出了两点目标:1)降低流的平均完成时间;2)根据不同流的截止时限来限制发送窗口。在前述目标的指引下,目前面向数据中心网络的传输层协议研究的主流方向之一是在传统的TCP(transmission control protocol)协议的基础上,针对数据中心网络的特性进行适应性改进,以适应数据中心网络的需求。比如:DCTCP(data center TCP)协议[2]、D3协议[3]以及很多对TCP协议的优化[4-7]。上述协议均从数据中心网络的特性出发,通过改进TCP协议的传输流程或者优化TCP协议参数,从而提高了数据中心网络中TCP协议的性能。但是,上述协议均未能考虑保障业务的服务质量(quality of service,QoS)。然而,在数据中心网络中,如果无法保障用户在发出请求后的截止时间内获得相关数据,则直接影响网络服务的性能以及用户体验,导致用户的流失以及网络收益的下降。
研究者针对保障数据中心网络中的QoS问题,提出了不少协议设计的方案[12-15]。但是,这些研究工作主要考虑了单条业务流的优化,而没有考虑到网络的整体负载状况以及拥塞状况,无法满足用户QoS需求。针对目前的数据中心网络传输机制无法有效地保障业务流QoS的问题,本文提出了基于传输速率分配算法的TCP协议(Transmit Rate Allocation based TCP,TRA-TCP)。
目前数据中心网络中的在线数据密集型应用通常使用分割-聚合的设计模式,汇聚节点接收到用户发出的请求,分配多个工作站共同完成工作,在计算完成后,工作站返回结果。一般而言,数据中心网络的结构如图1所示:共有4个工作站,工作站通过汇聚节点向数据中心传输数据分组,当汇聚节点发生拥塞之后,则汇聚节点通过显示拥塞通告(explicit congestion notification,ECN)机制向工作站反馈拥塞信息。下面将分别介绍上述两种数据中心网络协议类型。
图1 数据中心网络协议的网络结构
在这种分割-聚合的工作模式下,多个计算结果同时反馈用户会造成汇聚节点的缓存溢出,导致丢包。但是数据中心网络的在线数据密集型应用往往具有软实时性[8],受到截止时限的约束。不能及时的返回结果,大大影响了用户体验和运营商的投资回报[9]。
目前,针对数据中心网络的TCP协议改进主要包含两类方案:无QoS保障的TCP改进协议以及基于QoS保障的TCP改进协议。
DCTCP[2]是最早提出的面向数据中心网络的TCP改进协议。该协议利用ECN(explicit congestion notification)[10]机制,根据网络的拥塞程度调节发送速率,减少了拥塞时的丢包。在DCTCP的基础上,D3协议[3]采用了集中式的调度和主动式的速率请求,交换机贪婪的在先到先得的原则上分配带宽。这种贪婪的方式导致了一些离时限更近的流不能分配到合理的带宽。文献[11]针对数据中心网络中因为SYN包丢失而引起的TCP连接延迟问题,提出了一种基于加权随机早起检测的改进协议以优化TCP协议的同步过程。然而,此类解决方法虽然能够有效地提升网络整体性能,比如:DCTCP降低了网络的整体冲突概率,提升了整体的吞吐量,但是,却没有考虑业务的QoS需求。
针对上述协议缺乏网络服务质量的问题,出现了一些以保障数据中心网络业务QoS的研究。D2TCP(Deadline-aware Data-center TCP)协议[12]在DCTCP拥塞控制的基础上考虑了流的时限感知,以保障业务的时延需求。LSTCP(Least Slack-aware TCP)协议[13]通过采用最小空闲时间优化调度策略对TCP流进行优先级划分,提出了一种基于数据中心网络闲时感知算法,从而减小了短流的完成时间,并提高了长流的吞吐量。PD2TCP协议[14]针对TCP流无法在截止时限内完成传输的问题,提出了基于优先级时限感知的TCP改进协议,通过感知瞬时队列长度以及ECN标记对于拥塞窗口进行调整。文献[15]中针对多媒体业务的QoS保障,提出了源端多媒体数据流带宽控制策略以及基于动态部分缓存共享的丢包控制方法,从而实现了对于TCP协议拥塞控制机制的改进。
虽然,已有部分研究成果考虑了数据中心网络的QoS保障问题,但是主要针对于单TCP流进行优化以保证单TCP流的QoS,缺乏对整体网络状况的考虑。基于此,本文提出了TRA-TCP,从网络整体负载能力方面,根据高优先级和低优先级业务的比例调整拥塞窗口,旨在为不同优先级业务分配不同传输速率,并且保障高优先级业务的QoS。
本节主要描述了TRA-TCP协议的核心算法以及具体的工作流程。首先采用伪代码方式描述传输速率控制算法的思想和总体流程,其次描述了汇聚节点检测网络不同优先级业务传输速率的方法,最后描述了汇聚节点为不同优先级业务分配传输速率的算法以及拥塞窗口的调节方法。
本节主要描述了论文算法的构成及运作机制。算法1中详细介绍了算法流程。算法的输入参数为高优先级业务的目标传输速率以及网络调节的周期;算法输出为高优先级以及低优先级业务调节后的拥塞窗口。
算法1:Transmission Rate Control Algorithm
输入:target transmit rateα(0≤α≤1), the circle of updating transmit rateα
Variable definition:
T(i): transmit rate of high priority serviceF
g: congestion window of high priority servicei
T(j): transmit rate of low priority servicej
W(j): congestion window of high priority servicej
N: the number of high priority services
M: the number of low priority services
β: the percentage of the transmit rate of high priority service to the transmit rate of low priority service
γ: the improving ratio of high priority services
η: the reducing ration of low priority services
输出:W(i)* andW(j)*
1)initialization: convergence node collects transmit rate and congestion window information;
2)convergence node starts updating transmit rate process everyStime;
3)Thigh=sum(T(i)), andTlow=sum(T(j));
4)ifThigh≥NT*, go to step 1;
5)elseβ=Thigh/Tlow;
6)γ=(NT*-Thigh)/Thigh;
7)calculate the congestion window the low priority services need to reduceWr;
8)η=Wr/M;
9)W(i)*=W(i)×(1+γ);
10)W(j)*=W(j)×(1-η)。
对于汇聚节点而言,由于其接收所有工作站的业务分组,故汇聚节点可以获取高优先级业务和低优先级业务的比例(IP包头中有优先级标志位),并且监测不同优先级业务的传输速率。假设数据中心网络中存在N个高优先级业务,每个高优先级业务传输速率为T(i),拥塞窗口为W(i),M个低优先级业务,每个低优先级业务传输速率为T(j),拥塞窗口为W(j),并且汇聚节点计算业务传输速率的周期为S,即每隔S时长汇聚节点会统计这段时间内监测到的不同优先级业务的传输速率。
汇聚节点获取到不同优先级业务的传输速率之后,可以定义高优先级业务和低优先级业务比例关系β为:
(1)
因为网络设定的高优先业务的目标传输速率为T*,故定义高优先业务传输速率提升系数γ来描述当前网络的配置能否满足高优先级业务的传输速率需求。γ的定义如下:
(2)
当γ大于0时,表示网络无法满足高优先级业务的目标传输速率,反之表示高优先级业务的目标传输速率得到满足。因此,当γ大于0时,汇聚节点需要重新进行传输速率分配。
此外,汇聚节点采用主动队列调整算法(RED)[16],因此当缓存队列大于门限值时就会发生丢包事件,故汇聚节点还需要记录网络整体的拥塞状况。根据文献[2]定义拥塞参数α(0≤α≤1)表示网络的拥塞程度。α参数的计算周期同样为S,计算方法如下所示:
α=(1-g)×α+g×F
(3)
其中:F表示S时间内发生拥塞的分组比例,g表示上一个α参数所占权重比例。
为了满足网络需求以及高优先级业务的需求,网络需要重新进行传输速率分配。具体而言,汇聚节点会根据获取的不同业务的传输速率,计算出不同TCP流拥塞窗口的调节方法,从而达到传输速率分配的目的。
首先需要保障高优先级业务的传输速率。根据之前的计算结果,可以知道高优先级业务需要提升γ倍的传输速率才能满足QoS需求。因为拥塞窗口与传输速率的关系是正比关系,故高优先级业务的拥塞窗口需要提升为之前的(1+γ):
W(i)*=W(i)×(1+γ)
(4)
其次由于网络整体发生了拥塞,根据DCTCP协议的建议[2],网络整体的拥塞窗口需要降低α/2。另外,由于高优先级的业务的拥塞窗口增加到之前的(1+γ)倍,故也需要降低这部分增量。因此,需要减小的总体拥塞窗口值为:
(5)
根据公式(4)化简如下:
(6)
最终可以得到每个低优先级业务需要减小的塞窗口数值为:
W(j)*=W(j)×(1-η)
(7)
其中η等于:
(8)
汇聚节点通过公式(4)和公式(7)可以获取到高优先级和低优先级拥塞窗口的调节方法,之后需要向工作站反馈调节结果。参考DCTCP[2]以及D2TCP[11],汇聚节点在ACK数据包中携带拥塞调节信息。具体而言,ECN为1表示减小拥塞窗口,ECN为0表示增大拥塞窗口,ACK中的4比特保留位用于携带γ以及η参数,即γ和η参数需要量化为离散值。
为了验证TRA-TCP的协议性能,通过NS2网络仿真软件搭建了相应的仿真平台,主要比较了TRA-TCP协议与DCTCP协议以及D2TCP的性能差异,所采用的性能评价指标为:网络吞吐量、平均时延、丢包率。
实验参数设置如表1所示。高优先级业务数量固定为5,低优先级业务数量则为[2,4,6,8,10]。高优先级业务和低优先级业务的业务速率均为100 Mbps。
表1 实验参数配置
从图2可以看出,对于DCTCP协议以及D2TCP协议而言,随着低优先级业务数量的不断增加,高优先级业务的吞吐量不断下降,而低优先级业务吞吐量不断提升。另外,D2TCP协议的吞吐量低于DCTCP协议,这是因为D2TCP协议需要保证业务的截止时间,故降低了吞吐量。相比之下,由于TRA-TCP协议将高优先级业务的传输速率目标T*设置为100 Mbps,并通过拥塞窗口的调整,保证了高优先业务流的吞吐量,因而,能够获得比DCTCP和D2TCP较高的网络吞吐量。
图2 吞吐量的仿真结果
图3展示了业务流的时延变化情况。从图中可以看出DCTCP协议不关注业务的截止时间,因此其平均时延最大。D2TCP考虑了业务的截止时间,故能够一定程度保障业务的平均时延,且高优先级业务的平均时延低于低优先级业务的平均时延。对于TRA-TCP协议而言,充分保障了高优先级业务的平均时延,但是相对应的低优先级业务的平均时延较高。
图3 平均时延的仿真结果
从图4可以看出,DCTCP协议和D2TCP协议的丢包率都维持在较高水平,特别是高优先级业务的丢包率不断增加。TRA-TCP协议中的高优先级业务则保持几乎不丢包的状态,低优先级业务的丢包率则维持较高水平。
图4 丢包率的仿真结果
针对数据中心网络中业务的优先级和吞吐量的综合性能需求,本文提出了一种基于传输速率分配的服务质量保障TCP协议:TRA-TCP协议。TRA-TCP协议根据高优先级业务和低优先级业务的数量比例的分配带宽,调节拥塞窗口,保障了高优先级业务的吞吐量。仿真实验结果表明:TRA-TCP协议不仅能够有效保障高优先业务的吞吐量,还能降低高优先级业务的平均时延以及丢包率。