一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于交换机队列行为的可编程数据平面分布式负载均衡方法

2022-09-14 22:13:23 来源:中国专利 TAG:


1.本发明涉及数据中心网络技术领域,具体为一种基于交换机队列行为的可编程数据平面分布式负载均衡方法。


背景技术:

2.当前数据中心网络中广泛使用的ecmp是以流粒度进行负载均衡,该方法对每对交换机之间的可用路径以流为单位进行分配,然而这种方法由于哈希冲突和缺少全局状态感知,同时选择路径具有随机性,在高流量负载下表现一般。conga提出通过叶子节点交换机之间的反馈实现全局网络的拥塞感知,并且以包簇进行负载均衡,但是该方法需要rtt级别的时间来更新拥塞感知状态并且需要定制的硬件。而presto通过将流量以固定的大小分割成flowcell,并且对flowcell采用循环调度的算法将流量转发到不同的路径上。drill进一步探索使用数据包粒度的负载均衡策略,其使用少量的本地负载信息来实现数据包粒度的负载均衡,这使得路由决策的时延达到微秒级的,然而,该方案使用数据包粒度的路由策略容易导致数据包的乱序。


技术实现要素:

3.本发明的目的在于提供一种基于交换机队列行为的可编程数据平面分布式负载均衡方法,以解决上述背景技术中提出的问题。
4.为实现上述目的,本发明提供如下技术方案:一种基于交换机队列行为的可编程数据平面分布式负载均衡方法,可以实现任意粒度的负载均衡,包括在可编程数据平面的状态收集与返回模块、拥塞指数估计模块和概率式转发模块,其特征在于:数据包到达交换机时的处理步骤如下:
5.交换机的入口处理部分的拥塞指数估计模块根据本交换机出端口的队列行为计算每个可用出端口的拥塞指数;
6.交换机的入口处理部分的概率式转发模块依据该拥塞指数计算本交换机各出端口被选中转发该数据包的概率,完成数据包在该交换机的转发过程;
7.在进行上述步骤的同时,交换机的出口处理部分的状态收集与返回模块定期地将本交换机出端口的队列行为数据返回到入口处理部分的拥塞指数估计模块,为入口处理部分的转发决策提供所需的数据。
8.优选的,所述交换机队列行为是队列占用率、出队列时间间隔、队列变化趋势。
9.优选的,所述队列占用率是当数据包到达入端口队列时,出端口队列的队列深度占队列总长度的比例;出队列时间间隔是出端口队列的两个数据包离开队列的时间差;队列变化趋势是队列是在增大或减少方向。
10.优选的,所述拥塞指数估计模块估计各个出端口的拥塞程度,计算公式为:
11.ci=li*(τ-αti)*viꢀꢀꢀꢀꢀꢀꢀ
(1)
12.ci为出端口i的拥塞指数,li为出端口i的队列占用率,ti为出端口i的队列的出队列时间间隔,vi为出端口i的队列的变化趋势,当队列占用率呈上升趋势时,vi取值为β1;当队列占用率呈下降趋势时,vi取值为β2,τ为时间常数,取值为该网络的端到端时延级别的常数,α为t对c影响程度的可调因子。
13.优选的,所述概率式转发模块依据拥塞指数计算各出端口被选中转发该数据包的概率,所述出端口i被选中的概率pi的计算公式为:
14.pi=wi/(∑wi)
ꢀꢀꢀꢀꢀꢀꢀ
(2)
15.其中,wi为出端口i的流量转发权重,wi的取值随拥塞指数的增加而降低,公式(3)用于确定每个端口的流量转发权重,出端口i的流量转发权重wi为:
16.wi=[(c
max-ci)]
ꢀꢀꢀꢀꢀꢀꢀ
(3)
[0017]
其中,[.]表示取整运算,ci表示出端口i的拥塞指数,c
max
为出端口i的拥塞指数的最大值,表示的是最严重的拥塞程度,亦即,c
max
表示当出端口i的队列占用率li=100%、出队列时间间隔ti=0、队列占用率呈上升趋势(即,vi取值为β1)时ci的值。
[0018]
优选的,所述利用可编程数据平面中提供的可实现均匀分布的随机函数来实现公式(2)所述的概率式转发,所述出端口i的权重由wi个格子表示,一个交换机共有∑wi个格子,编号为1,2,3

∑wi,随机函数随机地产生一个在[1,∑wi]范围内的格子号码,数据包就从该格子所属的出端口转发出去。
[0019]
优选的,所述交换机的出口处理部分的状态收集与返回模块定期地将出端口的队列行为数据返回到入口处理部分的拥塞指数估计模块,所述当数据包到达交换机的出口处理部分时,过程如下:
[0020]
所述当数据包到达出口处理部分时,如果时间间隔未达到周期tb,则状态收集模块在出口处理部分持续收集当前端口的队列行为数据,收集到的队列行为数据将以端口号为索引的形式保存到交换机的寄存器上;
[0021]
若时间间隔超过周期tb,则状态返回模块读取寄存器上保存的本地队列行为数据,并将这些数据添加到克隆数据包的自定义头部,返回到交换机的入口处理部分;当克隆数据包到达入口处理部分时,入口处理部分根据端口号索引更新该端口的队列行为数据,之后将该克隆数据包丢弃。
[0022]
优选的,所述克隆数据包的自定义头部由队列占用率、出队列时间间隔、队列变化趋势、出端口号索引四个字段组成;
[0023]
队列占用率、出队列时间间隔和队列变化趋势用于携带队列行为数据;出端口号索引表示返回的出端口的队列行为数据,入口处理部分根据该索引更新该端口的队列行为数据,后续数据包到达时,入口处理部分以此队列行为数据为依据进行转发决策。
[0024]
优选的,所述可以实现任意粒度的负载均衡,所述任意粒度包括数据包粒度、包簇(flowlet)粒度、flowcell粒度、流粒度四种,可以根据实际需求来确定粒度,数据包到达交换机时,交换机有以下四种转发策略,
[0025]
对每个数据包,根据公式(2)所示的概率独立地选择转发端口,实现数据包粒度的负载均衡;
[0026]
对每个包簇,根据公式(2)所示的概率独立地选择转发端口,一个包簇内的所有数据包使用相同的端口转发,实现包簇粒度的负载均衡;所述包簇是指一条流内相邻数据包
的发送间隔超过一定阈值时表示一个包簇;
[0027]
对每个flowcell,根据公式(2)所示的概率独立地选择转发端口,一个flowcell内的所有数据包使用相同的端口转发,实现flowcell粒度的负载均衡;所述flowcell是指把一条流按照固定大小切成一个一个的flowcell,一条流内,流量中相邻的数据包组成一个flowcell,每个flowcell的大小相等;
[0028]
对每个流,根据公式(2)所示的概率独立地选择转发端口,一个流内的所有数据包使用相同的端口转发,实现流粒度的负载均衡;所述流是指具有相同五元组的数据包的集合,流粒度的可以完全避免数据包乱序。
[0029]
与现有技术相比,本发明的有益效果是:该基于交换机队列行为的可编程数据平面分布式负载均衡方法,可以实现任意的粒度的负载均衡,可以根据实际需求来确定粒度;提出将出队列时间间隔和队列变化和队列变化趋势作为负载均衡的决策依据;通过概率式转发模块,将流量按照一定的概率均匀地分配到每个可用的转发端口上,实现较好的负载均衡效果,避免当前的负载均衡一般都是将所有流量路由至最佳路径导致最佳路径拥塞的问题;本发明是一种各个交换机独立做负载均衡决策的完全分布式的机制,不需要控制器参与或交换机之间的协作,也不需要人为参与,开销小;本发明在交换机本地决策,所需决策时延小,可快速应对网络中微突发流;本发明可适用于任意拓扑或者流量模式。
附图说明
[0030]
图1为本发明系统架构图;
[0031]
图2为本发明队列占用率、出队列时间间隔示意图;
[0032]
图3为本发明概率式选择端口示意图;
[0033]
图4为本发明从出口处理部分返回到入口处理部分的克隆数据包的头部格式示意图;
[0034]
图5为本发明对称网络拓扑下data-mining流量中的平均fct示意图;
[0035]
图6为本发明非对称网络拓扑下data-mining流量中的平均fct示意图。
具体实施方式
[0036]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]
请参阅图1-6,本发明提供一种技术方案:一种基于交换机队列行为的可编程数据平面分布式负载均衡方法本发明的整体架构包括基于数据平面的状态收集与返回模块、拥塞指数估计模块、概率式转发模块。本发明可以用于数据包、包簇、flowcell、流等粒度的负载均衡。
[0038]
数据包粒度的负载均衡
[0039]
数据包到达交换机时的处理步骤如下:
[0040]
入口处理部分的拥塞指数估计模块根据本交换机出端口的队列行为(本发明是指队列占用率、出队列时间间隔、队列变化趋势)计算每个可用出端口的拥塞指数;
[0041]
交换机的入口处理部分的概率式转发模块将该拥塞指数计算本交换机各出端口被选中转发该数据包的概率,完成数据包在该交换机的转发过程。
[0042]
在进行步骤(1)、(2)的同时,出口处理部分的状态收集与返回模块定期地将本交换机出端口的队列行为数据返回到入口处理,为入口处理的转发决策提供所需的数据。
[0043]
包簇粒度的负载均衡
[0044]
数据包到达交换机时的处理步骤如下:
[0045]
在入口处理部分,通过hash保存该数据包的五元组,称为生成包簇id,并记录时间戳t1;
[0046]
入口处理部分的拥塞指数估计模块根据出端口的队列行为(本发明是指,队列占用率、出队列时间间隔、队列变化趋势)计算每个可用出端口的拥塞指数;
[0047]
入口处理部分的概率式转发模块将该拥塞指数转换为数据包从每个可用出端口转发的概率,完成数据包在该交换机的转发过程,记录数据包的转发端口。
[0048]
后续数据包到达时,时间戳为t2。如果

t=t2-t1大于包簇阈值ts,ts=10ms,创建新的包簇id,转入步骤(2);否则,按照当前包簇id所对应的转发端口,进行转发;
[0049]
在进行步骤(1)-(4)的同时,出口处理部分的状态收集与返回模块定期地将出端口的队列行为数据返回到入口处理,为入口处理的转发决策提供所需的数据;
[0050]
本发明中队列行为是指端口的队列占用率、出队列时间间隔和队列变化趋势等,队列占用率是指,当数据包到达入端口队列时,出端口队列的队列深度占队列总长度的比例;出队列时间间隔是指出端口队列的两个数据包离开队列的时间差;队列变化趋势是指队列是在增大或减少方向,也就是说,当前的队列占用率是增加得到的,还是减少得到的,例如,假设当前的队列占用率=50%,那么队列占用率是由60%减小到50%,还是由40%增大到50%的;
[0051]
拥塞指数估计模块对于负载均衡策略的效果至关重要,是路由决策的根据,所以该模块的精确程度直接影响着负载均衡策略的性能。
[0052]
负载均衡策略实际上就是对端口的选择,而这种选择决定了出端口的流量。通过大数据分析观察到(1)出端口流量与队列占用率正相关;(2)出端口流量与出队列时间间隔负相关。同时,考虑到可编程交换机不支持浮点数运算和除法运算,因此,本发明的拥塞指数估计模块估计各个出端口的拥塞程度,计算公式为:
[0053]ci
=li*(τ-αti)*viꢀꢀꢀꢀꢀ
(1)
[0054]ci
为出端口i的拥塞指数,li为出端口i的队列占用率(%),ti为出端口i的队列的出队列时间间隔(us),vi为出端口i的队列的变化趋势,当队列占用率呈上升趋势时,vi取值2;当队列占用率呈下降趋势时,vi取值1,τ为归一化时间常数,取值为该网络的端到端时延级别的常数,α为t对c影响程度的可调因子,例如,τ=10ms,α=1。
[0055]
拥塞指数估计模块将出口处理部分返回的网络状态信息根据公式(1)得到每个端口的拥塞指数,拥塞指数越大,表示该端口的拥塞程度越严重。
[0056]
相比于其他方法只通过判断队列的占用率来间接推测拥塞程度,该拥塞指数估计模块能更加准确的反映网络的拥塞情况,使负载均衡的效果更好;
[0057]
概率式转发模块根据上述拥塞指数来确定端口选择的概率,以实现将流量均匀地调度到各个可用端口上。简单地讲,端口越空闲(即,端口的队列占用率越低、出队列时间间
隔越大),被选中的概率越大,使流量优先转入较为空闲的端口。在本发明中,出端口i被选中的概率pi的计算公式为:
[0058]
pi=wi/(∑wi)
ꢀꢀꢀꢀꢀ
(2)
[0059]
其中,wi为出端口i的流量转发权重,wi的取值随拥塞指数的增加而降低,公式(3)用于确定每个端口的流量转发权重,出端口i的转发权重wi为:
[0060]
wi=[(c
max-ci)]
ꢀꢀꢀꢀ
(3)
[0061]
其中,[.]表示取整运算,ci表示出端口i的拥塞指数,c
max
为出端口i的拥塞指数的最大值,表示的是最严重的拥塞程度,亦即,c
max
表示当出端口i的队列占用率li=100%、出队列时间间隔ti=0、队列占用率呈上升趋势(即,vi取值为β1)时ci的值。
[0062]
公式(2)用到了除法,概率pi有可能是浮点数,然而,可编程数据平面对除法和浮点型数据的支持度不高。因此,本发明利用可编程数据平面中提供可实现均匀分布的随机函数来实现公式(2)所述的概率式转发。亦即,以选格子的方式选择转发的端口,出端口i的权重由wi个格子表示,一个交换机共有∑wi个格子,编号为1,2,3

∑wi,随机函数随机地产生一个在[1,∑wi]范围内的格子号码,数据包就从该格子所属的出端口转发出去;
[0063]
状态收集模块负责收集交换机出口处理部分的网络状态,包括队列占用率、出队列时间间隔、队列变化趋势等。
[0064]
当数据包到达出口处理部分时,如果时间间隔未达到周期tb(例如,1ms),则状态收集模块在出口处理部分持续收集当前端口的队列状态。收集到的网络状态信息将以端口号为索引的形式保存到交换机的寄存器上。若时间间隔超过周期tb,则状态返回模块读取寄存器上保存的本地队列状态信息,并将这些信息添加到克隆数据包的自定义头部,返回到交换机的入口处理部分。当克隆数据包到达入口处理部分时,入口处理部分根据端口号索引更新该端口的队列行为数据,之后将该克隆数据包丢弃。
[0065]
其中,克隆数据包携带的网络状态格式如图4所示,整个自定义头部占用10字节。其中,队列占用率、出队列时间间隔和队列变化趋势为携带的网络状态;出端口号索引用于表示返回的是哪个出端口的网络状态,入口处理部分根据该索引更新该端口的网络状态,后续数据包到达入口处理部分时,以此状态为依据进行转发决策。
[0066]
实验例:把roll与几个当前主流的负载均衡策略进行性能对比,如流级别的ecmp、包簇级别的letflow、conga、hula和数据包级别的drill,实验显示,roll在降低流完成时间fct(flow completion time)上有较大的优势,在各种流量负载下,roll的网络负荷分担精度低于3%,比ecmp降低50%以上。
[0067]
根据对称网络拓扑下加载data-mining应用时各个机制的fct,得知:
[0068]
基于数据包粒度的roll-pkt的fct只有基于流粒度的ecmp的50%;
[0069]
同为数据包粒度,roll-pkt的fct比drill降低了21.9%;
[0070]
同为包簇粒度,roll-flowlet的fct比conga降低了11.1%;
[0071]
根据非对称网络拓扑下加载data-mining应用时各个机制的fct,得知:
[0072]
基于数据包粒度的roll-pkt的fct比基于流粒度的ecmp降低121%;
[0073]
同为数据包粒度,roll-pkt的fct比drill降低了23.1%;
[0074]
同为包簇粒度,roll-flowlet的fct比conga降低了10.4%。
[0075]
使用时,该基于交换机队列行为的可编程数据平面分布式负载均衡方法,可以实
现任意的粒度的负载均衡,可以根据实际需求来确定粒度;综合考虑了的队列占用率、出队列时间间隔和队列变化趋势等队列行为,提出将出队列时间间隔和队列变化作为负载均衡的决策依据;通过概率式转发模块,将流量按照一定的概率均匀地分配到每个可用的转发端口上,实现较好的负载均衡效果,避免当前的负载均衡一般都是将所有流量路由至最佳路径导致最佳路径拥塞的问题。
[0076]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献