一种OpenFlow交换机流表调节方法与流程

文档序号:15394659发布日期:2018-09-08 01:53阅读:393来源:国知局

本发明涉及网络技术应用领域,具体涉及一种openflow交换机流表调节方法。



背景技术:

目前互联网已经大型数据中心中的巨大网络流量给sdn网络的数据转发平面带来了巨大的压力,复杂多样的新型业务对网络单点转发能力的要求也越来越高;另外由于openflow交换机中的流表大部分是由三态内容寻址存储器(ternarycontentaddressablememory,tcam)存储的,由于受到tcam硬件容量和价格的限制,现有的交换机只有大约1000条流表项,流表资源有限。当数据流到达交换机节点时,能否分配到流表资源,直接决定了该数据能否正常转发,为了保证数据流能够分配到流表资源,当流表资源紧缺时,需要对流表项进行删除。因此,为了提高openflow交换机数据转发能力,合理利用流表资源,需要更高效的流表匹配方法和更合理的流表生存时间。

有限的流表资源和计算资源会成为网络发展的瓶颈。当数据流到达交换机节点时,能否分配到流表资源,直接决定了该数据流能否正常转发。为了保证数据流能够分配到流表资源,当流表资源紧缺时,需要对流表项进行删除。

目前的研究人员针对提高sdn数据平面工作效率和资源利用方面也做了相应的研究。李向文设计了流表关联度算法。段通提出统一描述资源的方法。蔡立军等提出了一种tcam空间划分和规则压缩相结合的方法。ma等提出了一种分布式的流表存储架构。黎进都提出了基于openflow的状态行为转发算法。xie提出一种流表资源和控制器资源间的动态平衡方法。zarek等人在实际网络数据的基础上通过实验发现了idle_timeout值与流表资源利用率之间的关系。kim等人通过预测数据流动态调整交换机流表项的idle_timeout值。

上述方法均存在以下缺点:都没有定量分析当前网络运行状态和计算资源、流表资源使用情况,也没有考虑不同流的特征对流表项的需求情况,难以根据实际的网络情况动态调整流表项的生存时间和优先级,达不到提高流表项利用率的效果,无法实现网络中数据流的高效正常传输。



技术实现要素:

本发明的目的是提供一种能动态调整流表项idle_timeout值,实现网络中数据流高效正常传输的openflow交换机流表调节方法。

为实现上述目的,本发明采用了如下技术方案:所述的一种openflow交换机流表调节方法,包括以下步骤:

步骤(1):对网络的数据流进行初始化,并设置负指数分布参数的初始值,以及处理一条packet-in消息的计算资源消耗的初始值;

步骤(2):控制器在设定的时间周期内获取openflow交换机中流表项最大存储量和活动流表项的数目;

步骤(3):计算活动流表项占比;

步骤(4):分析网络流量情况,根据网络的on/off模型,建立数据包长度独立分布模型;

步骤(5):计算流表项的时间间隔长度;

步骤(6):控制器查询相应端口以及对应数据流的状态信息,并计算网络数据流平均带宽及数据流个数;

步骤(7):当数据流到达时,设定流表项默认tidle,并更新网络平均带宽及数据流个数,其中tidle为交换机流表项idle_timeout值;

步骤(8):计算packet-in消息数量;

步骤(9):根据网络流的特性,计算流表资源代价;

步骤(10):计算控制器资源代价;

步骤(11):计算流表资源偏好度和计算资源偏好度;

步骤(12):根据控制器计算代价和资源代价,计算流表项idle_timeout值,并求取其最小值;

步骤(13):如果活动流表项占比过高,则设置优先级低的流表项的idle_timeout值为零,并对idle_timeout值为零的流表项进行删除;

步骤(14):接着重新计算活动流表项占比,并重新判断活动流表项占比是否过高,当活动流表项占比过高时,跳转到步骤(13),当活动流表项占比在预设安全范围内时,跳转到步骤(15);

步骤(15):控制器下发flow-mod消息,对流表进行相应处理。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(3)中,活动流表项占比的计算公式具体为:

其中,ξ为活动流表项占比,m为当前openflow交换机中的活动流表项数目,m为openflow交换机本地流表项的最大存储量。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(4)中,数据包长度独立分布模型的具体计算公式为:

其中,k,τ,α,是pareto分布的参数,{p1,p2...pi...pn}为数据包长度。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(5)中,流表项的时间间隔长度的具体计算公式为:

其中,λ是非负参数,{t1,t2...ti...tn}为流表项的时间间隔长度。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(8)中,packet-in消息数量的具体计算公式为:

其中,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(9)中,流表资源代价的具体计算公式为:

其中,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(10)中,控制器资源代价的具体计算公式为:

其中,cost为处理一条packet-in消息的计算资源消耗,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(11)中,所述流表资源偏好度的具体计算公式为:

其中,α为流表资源偏好度,g(.)为资源偏好度定义函数,n为数据包个数,r为数据流个数;

所述计算资源偏好度的具体计算公式为:

其中,β为计算资源偏好度,g(.)为资源偏好度定义函数,n为数据包个数,r为数据流个数,p为数据流需求带宽,d为数据流平均带宽。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(12)中,流表项idle_timeout值的具体计算公式为:

z(t,tidle)=αx(t,tidle)+βy(t,tidle)

其中,t为流表项时间间隔,tidle为交换机流表项idle_timeout值,α为流表资源偏好度,β为计算资源偏好度。

进一步地,前述的一种openflow交换机流表调节方法,其特征在于:在步骤(12)中,流表项idle_timeout值的最小值的具体计算公式为:

tidle=argmin{z(t,tidle)|tidle>0}

其中,t为流表项时间间隔,tidle为交换机流表项idle_timeout值。

通过上述技术方案的实施,本发明的有益效果是:(1)根据实时监控的网络流量情况,基于不同流的特性动态设置流表项的idle_timeout值,在最小化控制器计算负载的前提下,在分配交换机流表资源时设定合理的idle_timeout值,以达到空闲流表项及时删除,提高活动流表项的命中率,实现流表资源的利用率最大化,实现数据流的高效传输,提升网络的平均吞吐量;(2)在调节过程中,面对网络中突发流量时,控制活动流表项占比,使得交换机能够接受足够的突发流量匹配的流表项,保证突发流量能够高效正常转发。

附图说明

图1是本发明所述的一种openflow交换机流表调节方法的流程框图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明。

如图1所示,所述的一种openflow交换机流表调节方法,包括以下步骤:

步骤(1):对网络的数据流进行初始化,并设置负指数分布参数的初始值,以及处理一条packet-in消息的计算资源消耗的初始值;

步骤(2):控制器在设定的时间周期内通过向openflow交换机发送of.ofp_stats_request()消息来获取openflow交换机中流表项最大存储量和活动流表项的数目;

步骤(3):计算活动流表项占比;所述活动流表项占比的计算公式具体为:

其中,ξ为活动流表项占比,m为当前openflow交换机中的活动流表项数目,m为openflow交换机本地流表项的最大存储量;

步骤(4):分析网络流量情况,根据网络的on/off模型,建立数据包长度独立分布模型;所述数据包长度独立分布模型的具体计算公式为:

其中,k,τ,α,是pareto分布的参数,{p1,p2...pi...pn}为数据包长度;

步骤(5):计算流表项的时间间隔长度;所述流表项的时间间隔长度的具体计算公式为:

其中,λ是非负参数,{t1,t2...ti...tn}为流表项的时间间隔长度;

步骤(6):控制器查询相应端口以及对应数据流的状态信息,并计算网络数据流平均带宽及数据流个数;

步骤(7):当数据流到达时,设定流表项默认tidle,并更新网络平均带宽及数据流个数,其中tidle为交换机流表项idle_timeout值;

步骤(8):计算packet-in消息数据;所述packet-in消息数量的具体计算公式为:

其中,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值;

步骤(9):根据网络流的特性,计算流表资源代价;流表项无效时间的长短,从侧面反映出该流表项利用率情况,无效时间越短说明利用率越高,产生的流表资源代价越少,用流表项无效时间表示资源代价;

所述流表资源代价的具体计算公式为:

其中,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值;

步骤(10):计算控制器资源代价;由于控制器计算资源消耗的主要原因是处理packet-in消息,packet-in消息数目直接决定了计算资源代价的大小,所述控制器资源代价的具体计算公式为:

其中,cost为处理一条packet-in消息的计算资源消耗,t为流表项时间间隔,ε(.)为单位阶跃函数,tidle为交换机流表项idle_timeout值;

从定性分析可知,当流表项idle_timeout值tidle变小时,产生的packet-in消息数目增多,计算资源代价将会增加。当idle_timeout值tidle变大,计算资源代价会减少;

步骤(11):计算流表资源偏好度和计算资源偏好度;通过对网络数据流分析可知,网络中的大象流偏好控制器计算单元,而老鼠流流偏好流表资源;

所述流表资源偏好度的具体计算公式为:

其中,α为流表资源偏好度,g(.)为资源偏好度定义函数,n为数据包个数,r为数据流个数;

所述计算资源偏好度的具体计算公式为:

其中,β为计算资源偏好度,g(.)为资源偏好度定义函数,n为数据包个数,r为数据流个数,p为数据流需求带宽,d为数据流平均带宽;

步骤(12):根据控制器计算代价和资源代价,计算流表项idle_timeout值,并求取其最小值;

所述流表项idle_timeout值的具体计算公式为:

z(t,tidle)=αx(t,tidle)+βy(t,tidle)

其中,t为流表项时间间隔,tidle为交换机流表项idle_timeout值,α为流表资源偏好度,β为计算资源偏好度;

所述流表项idle_timeout值的最小值的具体计算公式为:

tidle=argmin{z(t,tidle)|tidle>0}

其中,t为流表项时间间隔,tidle为交换机流表项idle_timeout值;

步骤(13):如果活动流表项占比过高,则设置优先级低的流表项的idle_timeout值为零,并对idle_timeout值为零的流表项进行删除;

步骤(14):接着重新计算活动流表项占比,并重新判断活动流表项占比是否过高,当活动流表项占比过高时,跳转到步骤(13),当活动流表项占比在预设安全范围内时,跳转到步骤(15);

步骤(15):控制器下发flow-mod消息,对流表进行相应处理。

本发明的优点是:(1)根据实时监控的网络流量情况,基于不同流的特性动态设置流表项的idle_timeout值,在最小化控制器计算负载的前提下,在分配交换机流表资源时设定合理的idle_timeout值,以达到空闲流表项及时删除,提高活动流表项的命中率,实现流表资源的利用率最大化,实现数据流的高效传输,提升网络的平均吞吐量;(2)在调节过程中,面对网络中突发流量时,控制活动流表项占比,使得交换机能够接受足够的突发流量匹配的流表项,保证突发流量能够高效正常转发。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1