流量分配方法及装置与流程

文档序号:12278470阅读:378来源:国知局
流量分配方法及装置与流程
本发明涉及网络通信领域,具体而言,涉及一种流量分配方法及装置。
背景技术
:在数据中心或者机房的网络中,网络域之间例如外网出口一般会设置流量分配设备承担出口/入口流量分配的功能。通常来说,由于可靠性、内容缓冲、成本和上下行流量大小和类型的不同与不对称等原因,流量出口可能有多个,例如运营商1出口、运营商2出口、运营商3出口。由于这些出口的租用费用、带宽大小、上下行流量大小、可靠性、内容缓存的情况不同,往往需要流量分配设备来将不同流量针对性的分配到不同出口。传统的方案是使用策略路由等技术进行流量出口端口选择,但由于传统测量路由等技术方案模式比较固定、流量选择的颗粒度较大、且无法动态根据需求和情况变化动态选择不同颗粒度的流量分配到最佳的出口,使得该设备无法灵活、高效的完成流量分配的功能,回向的流量分配方法也存在类似的问题不在此处赘述。尤其是当今,网络流量的业务类型不断增加,网络用户对网络质量和体验的意识不断的提升,使得网络的运营、管理和维护方不得不提出对流量分配设备更高的要求。技术实现要素:有鉴于此,本发明的目的是提供一种流量分配方法及装置,利用SDN(软件定义网络)技术实现网络流量动态、灵活的分配,提高了端口带宽的利用率、提升了用户的体验。本发明实施方式中提供的一种流量分配装置,包括模式选择模块、参数输入模块、端口数据获取模块、函数计算模块、分配模块,其中模式选择模块用于选择一个预设的流量分配模式,所述流量分配模式具有一个输出端口选择函数、一个流量调节函数和一个会话颗粒度选择函数;参数输入模块用于输入所述流量分配模式对应的配置参数;端口数据获取模块用于实时获取输入端口和输出端口流量数据,并根据获取的所述流量数据预测输入端口未来的流量数据;函数计算模块用于根据所述配置参数、所述输入端口和输出端口流量数据和输入端口的未来预测流量数据执行所述输出端口选择函数、所述流量调节函数和所述会话颗粒度选择函数;分配模块用于依据函数执行结果进行流量从输入端口到输出端口的分配。本发明中所述的流量是由不同颗粒度的会话组成,即通过会话颗粒度选择函数选择后的会话即所述的流量,本专利中所述流量无特殊声明均可称之为不同颗粒度的会话,不再重复声明。优选地,所述流量分配模式包括端口优先级模式,所述端口优先级模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口被赋予的优先级值。优选地,所述流量分配模式包括加权负载模式,所述加权负载模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口被赋予的权重值。优选地,所述流量分配模式包括用户及业务类型模式,所述用户及业务类型模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口赋予的用户类别属性值;每个输出端口被赋予的业务类型属性值。优选地,所述输出端口选择函数用于为所述流量选择合适的输出端口,所述流量调节函数用于实时调节已分配到输出端口的流量以令其符合选择的所述流量分配模式的要求,所述会话颗粒度选择函数用于选择合适颗粒度的流量以最优的满足流量分配的要求。本发明又一实施方式中提供的一种流量管理方法,该方法包括:选择一个预设的流量分配模式,所述流量分配模式具有一个输出端口选择函数、一个流量调节函数和一个会话颗粒度选择函数;输入所述流量分配模式对应的配置参数;实时获取输入端口和输出端口流量数据;根据获取的所述流量数据预测输入端口未来的流量数据;根据所述配置参数、所述输入端口和输出端口流量统计数据、所述预测得到的输入端口未来的流量数据执行所述输出端口选择函数、所述流量调节函数和所述会话颗粒度选择函数;依据函数执行结果进行流量从输入端口到输出端口的分配。本发明中所述的流量是由不同颗粒度的会话组成,即通过会话颗粒度选择函数选择后的会话即所述的流量,本专利中所述流量无特殊声明均可称之为不同颗粒度的会话,不再重复声明。优选地,所述流量分配模式包括端口优先级模式,所述端口优先级模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口被赋予的优先级值。优选地,所述流量分配模式包括加权负载模式,所述加权负载模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口被赋予的权重值。优选地,所述流量分配模式包括用户及业务类型模式,所述用户及业务类型模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽;每个输出端口赋予的用户类别属性值;每个输出端口被赋予的业务类型属性值。优选地,所述输出端口选择函数用于为所述流量选择合适的输出端口,所述流量调节函数用于实时调节已分配到输出端口的流量以令其符合选择的所述流量分配模式的要求,所述会话颗粒度选择函数用于选择合适颗粒度的流量以最优的满足流量分配的要求。上述流量分配方法及装置,使得SDN网络中的流量实现动态的分配,提高了端口带宽的利用率,提升了用户的网络体验,节约了购买额外带宽的成本,使得网络更加灵活、高效。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。附图说明图1为本发明一种流量分配装置10一实施方式的应用环境图。图2为本发明一种流量分配装置10一实施方式的功能模块图。图3为本发明一种流量分配装置10又一实施方式的功能模块图。图4为本发明一种流量分配方法一实施方式的流程图。主要元件符号说明流量分配装置10SDN控制器1SDN网络设备2模式选择模块100参数输入模块102端口数据获取模块104函数计算模块106分配模块108存储器110处理器112如下具体实施方式将结合上述附图进一步说明本发明。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明一种流量分配装置10一实施方式的应用环境图。其中,流量分配装置10位于SDN控制器1中,SDN控制器1连接控制着整个SDN网络中的SDN网络设备2(如SDN交换机),其中SDN网络设备2存在着n个输入端口(n为非零正整数)和m个输出端口(m为非零正整数)。在本实施方式中,流量分配装置10可根据输入端口的流量情况自动按照预设条件,将流量动态的分配给输出端口。图2为本发明一种流量分配装置10一实施方式的功能模块图。其中流量分配装置10包括模式选择模块100、参数输入模块102、端口数据获取模块104、函数计算模块106、分配模块108。模式选择模块100用于选择一个预设的流量分配模式,所述流量分配模式具有一个输出端口选择函数、一个流量调节函数和一个会话颗粒度选择函数。在本实施方式中,模式选择模块100选择预设的流量分配模式,其可由用户主动选择,也可以由其他环境因素来触发,如网络拥塞、时间变更或其他条件的变更。参数输入模块102用于输入所述流量分配模式对应的配置参数。其中,每个流量分配模式均对应着一套配置参数,以使得SDN网络设备2中流量的分配匹配相应流量分配模式的要求。在本实施方式中,预设的流量分配模式可以为端口优先级模式,如表-1所示,所述端口优先级模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUT2的带宽阈值/总带宽分别为80M/100M、16M/20M;每个输出端口被赋予的优先级值,比如输出端口OUT1、OUT2的优先级分别为1、2。OUT1OUT2OUTiOUTm阈值/总带宽80M/100M16M/20M......8M/10M端口优先级12......n表-1在本实施方式中,预设的流量分配模式也可以为加权负载模式,如表-2所示,所述加权负载模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUT2的带宽阈值/总带宽分别为80M/100M、16M/20M;每个输出端口被赋予的权重值,比如输出端口OUT1、OUT2的优先级分别为0.6、0.1。OUT1OUT2OUTiOUTm阈值/总带宽80M/100M16M/20M......8M/10M端口加权值0.60.1......0.1表-2在本实施方式中,预设的流量分配模式还可以为用户及业务类型模式,所述用户及业务类型模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUT2的带宽阈值/总带宽分别为80M/100M、16M/20M;每个输出端口赋予的用户类别属性值,比如输出端口OUT1、OUT2的用户类别属性经理、研发组;每个输出端口被赋予的业务类型属性值,比如输出端口Out1、Out2的业务类型http/smtp、http/smtp。表-3端口数据获取模块104用于实时获取流量输入端口和输出端口流量统计数据,并根据获取的所述流量数据预测输入端口未来的流量数据。函数计算模块106用于根据所述配置参数、所述输入端口流量数据和输出端口流量数据、所述预测得到的输入端口未来的流量数据执行所述输出端口选择函数、所述流量调节函数和会话颗粒度选择函数。在本实施方式中,不同的流量分配模式对应不同的输出端口选择函数、流量调节函数和会话颗粒度选择函数,具体以端口优先级模式、加权负载模式为例进行说明。1.端口优先级模式:1.1端口选择函数F1(X1,R1)用于为新会话选择出口。其中X1为当前某出口OUTi(0≤i≤m)的流量数据,X2为当前会话预计流量,R1为端口优先级模式中用户设置的出口优先级次序表中的参数,该函数从最优先的出口依次寻找第一个当前流量未超过上限的输出端口j_F1(0≤j≤m),返回该输出端口j_F1,并计算出该端口当前流量同其流量上限的差△X_F1;1.2会话颗粒度选择函数F2(△X,X2)用于选择合适的新会话导入到F1选择的输出端口j_F1j。其中X2为当前会话预计流量,通过该端口当前流量与其上限流量差△X,选择合适的颗粒度的新会话,如果用户没有特殊要求则根据△X自由选择最合适的会话颗粒度。其中,所谓颗粒度是用来对报文进行分类,这些分类可以将报文分成不同的类型送到需要的出口,以实现流量分配;同时,用颗粒度来对报文分类可以根据需要提取不同大小的会话,实流量分配的粗、细颗粒度可调。更进一步讲,颗粒度从某个维度分类的报文集合,分类可以是下面一种或几种的组合,还可以有更多:报文的ingressphysicport:入端口;报文的sourceTCP/UDPport:源逻辑端口;报文的destinationTCP/UDPport:目的逻辑端口;报文的sourceip:源IP地址;报文的destinationip:目的IP地址;报文的inputvlantag:入口vlan;报文的outputvlantag:出口vlan;报文的sourceMAC:源MAC地址;报文的destinationMAC:源MAC地址;报文的Length:长度,单位bit。1.3流量调节函数F3(X1,R1)是用于动态调节输出端口流量分配。其中X1为出口OUTi的当前流量数据,R1为端口优先级模式中用户设置的出口优先级次序表中的参数,该函数从最低优先的出口寻找第一个当前流量非零的出口i(从优先级最低的端口开始遍历,优先级从低到高逐个寻找非零流量出口),如果存在比出口OUTi更高优先级的出口流量未达上限,那么将OUTi中的会话取出作为F2(△X,X2)中的X2中的新会话优先分配给未到达流量上限的出口。2.加权负载模式:2.1端口选择函数F4(X1,X2,R2)用于选择最小方差出口,其中X1为出口流量数据,X2为当前会话预计流量数据,R2为加权负载模式中用户为每个出口设置的流量分配比例表;对于每个分配比例非零的出口i(0≤i≤m),计算:出口i当前流量所占比例ri(ri=X1i/X1all,其中X1all是出口总流量)对设定比例Ri的偏差的平方:e0i=[(ri-Ri)/Ri]2(说明:每个端口进行计算);出口i当前流量加上当前会话预计流量s(s=X2/(X1all+X2))之后对设定比例Ri的偏差的平方:e1i=[(ri+s-Ri)/Ri]2(说明:每个端口进行计算);针对每个端口计算△ei=e1i-e0i的值;如果e1i-e0i值最小(可以为负)的出口i的流量未超过预设流量上限(ri+s-Ri<0),返回出口i(即将此会话X2的流量分配到i端口上);e1i-e0i=[s-2(Ri-ri)]s/Ri,ri越趋近Ri,值计算越大,此端口的抗力越大e1i-e0i为负时即Ri-ri<s/2,即当前剩余比例不足待分配的一半时,此时将s加入后会超过设定值,如果此时加入X2将会超过i端口门限,所以如函数F5中的描述可以通过e1i-e0i选择合适的X2(某个颗粒度的新会话预计流量)进行迭代计算以获得最佳的流量导入效果;2.2会话颗粒度选择函数F5(X2,△ei),通过△ei=e1i-e0i选择合适的会话颗粒度流量X2分配到对应的端口,所以F4和F5将会经过多次调整进行计算,以使得F4中出口i选择后流量分配更加接近该模式下的流量要求。2.3流量调节函数F6(X1,R2)用于调节出口分配,X1为出口流量数据,R2为加权负载模式中用户为每个出口设置的流量分配比例,寻找当前流量所占比例超出设定比例最多的出口i将出口i中的会话取出调用函数F4重新进行分配。分配模块108用于依据函数执行结果进行流量分配。在本实施方式中,在函数计算模块106执行完函数计算过程后,根据其计算结果可以实时的调节各个端口的流量分配,进而使得某个输出端口的流量以令其符合选择的所述流量分配模式的要求。图3为本发明一种流量分配装置10又一实施方式的功能模块图。其中,流量分配装置10包括模式选择模块100、参数输入模块102、端口数据获取模块104、函数计算模块106、分配模块108、存储器110和处理器112,其中模式选择模块100、参数输入模块102、端口数据获取模块104、函数计算模块106、分配模块108为程序代码,以功能模块的形式存在于存储器110,由处理器112处理以实现相应功能。图4为本发明一种流量分配方法一实施方式的流程图。在步骤S400,模式选择模块100用于选择一个预设的流量分配模式,所述流量分配模式具有一个输出端口选择函数、一个流量调节函数和一个会话颗粒度选择函数。在本实施方式中,模式选择模块选择预设的流量分配模式可由用户主动选择来触发,也可以由其他环境因素来触发,如网络拥塞。在步骤S402,参数输入模块102用于输入所述流量分配模式对应的配置参数。其中,每个流量分配模式均对应着一套配置参数,以使得SDN网络设备2中流量的分配尽量匹配响应流量分配模式的要求。在本实施方式中,预设的流量分配模式可以为端口优先级模式,如上文表-1所示,所述端口优先级模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUT2的阈值/总带宽分别为80M/100M、16M/20M;每个输出端口被赋予的优先级值,比如输出端口OUT1、OUT2的优先级分别为1、2。在本实施方式中,预设的流量分配模式可以为加权负载模式,如表-2所示,所述加权负载模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUt2的阈值/总带宽分别为80M/100M、16M/20M;每个输出端口被赋予的权重值,比如输出端口OUT1、OUT2的优先级分别为0.6、0.1。在本实施方式中,预设的流量分配模式可以为用户及业务类型模式,所述用户及业务类型模式中的配置参数包括:每个输出端口的流量带宽阈值和总带宽,比如输出端口OUT1、OUT2的阈值/总带宽分别为80M/100M、16M/20M;每个输出端口赋予的用户类别属性值,比如输出端口OUT1、OUT2的用户类别属性经理、研发组;每个输出端口被赋予的业务类型属性值,比如比如输出端口OUT1、OUT2的业务类型http/smtp、http/smtp。在步骤S404,端口数据获取模块104用于实时获取流量输入端口和输出端口流量统计数据,并根据获取的所述流量数据预测该输入端口未来的流量数据。在步骤S406,函数计算模块106用于根据所述配置参数、所述输入端口流量数据和输出端口流量数据、所述预测得到的输入端口未来的流量数据执行所述输出端口选择函数、所述流量调节函数和会话颗粒度选择函数。在本实施方式中,不同的流量分配模式对应不同的输出端口选择函数、流量调节函数和会话颗粒度选择函数,具体以端口优先级模式、加权负载模式为例进行说明。1.端口优先级模式:1.1端口选择函数F1(X1,R1)用于为新会话选择出口。其中X1为当前某出口OUTi(m≤i≤m)的流量数据,X2为当前会话预计流量,R1为端口优先级模式中用户设置的出口优先级次序表中的参数,该函数从最优先的出口依次寻找第一个当前流量未超过上限的输出端口j_F1(0≤j≤m),返回该输出端口j_F1,并计算出该端口当前流量同其流量上限的差△X_F1;1.2会话颗粒度选择函数函数F2(△X,X2)用于选择合适的新会话导入到F1选择的输出端口j_F1。其中X2为当前会话预计流量,通过该端口当前流量与其上限流量差△X,选择合适的颗粒度的新会话,如果用户没有特殊要求则根据△X自由选择最合适的会话颗粒度,其中颗粒度的描述如上文所述。1.3流量调节函数F3(X1,R1)是用于动态调节输出端口流量分配。其中X1为出口OUTi的当前流量数据,R1为端口优先级模式中用户设置的出口优先级次序表中的参数,该函数从最低优先的出口寻找第一个当前流量非零的出口i(从优先级最低的端口开始遍历,优先级从低到高逐个寻找非零流量出口),如果存在比出口OUTi更高优先级的出口流量未达上限,那么将OUTi中的会话取出作为F2(△X,X2)中的X2中的新会话优先分配给未到达流量上限的出口。2.加权负载模式:2.1函数F4(X1,X2,R2)用于选择最小方差出口,其中X1为出口流量数据,X2为当前会话预计流量数据,R2为加权负载模式中用户为每个出口设置的流量分配比例表;对于每个分配比例非零的出口i(0≤i≤m),计算:出口i当前流量所占比例ri(ri=X1i/X1all,其中X1all是出口总流量)对设定比例Ri的偏差的平方:e0i=[(ri-Ri)/Ri]2(说明:每个端口进行计算);出口i当前流量加上当前会话预计流量s(s=X2/(X1all+X2))之后对设定比例Ri的偏差的平方:e1i=[(ri+s-Ri)/Ri]2(说明:每个端口进行计算);针对每个端口计算e1i-e0i的值;如果e1i-e0i值最小(可以为负)的出口i的流量未超过预设流量上限(ri+s-Ri<0),返回出口i(即将此会话X2的流量分配到i端口上);e1i-e0i=[s-2(Ri-ri)]s/Riri越趋近Ri,值计算越大,此端口的抗力越大e1i-e0i为负时即Ri-ri<s/2,即当前剩余比例不足待分配的一半时,此时将s加入后会超过设定值,如果此时加入X2将会超过i端口门限,所以如函数F5中的描述可以通过e1i-e0i选择合适的X2(某个颗粒度的新会话预计流量)进行迭代计算以获得最佳的流量导入效果;2.2会话颗粒度选择函数F5(X2,△ei),通过△ei=e1i-e0i选择合适的会话颗粒度流量X2分配到对应的端口,所以F4和F5将会经过多次调整进行计算,以使得F4中出口i选择后流量分配更加接近该模式下的流量要求。2.3流量调节函数F6(X1,R2)用于调节出口分配,X1为出口流量数据,R2为加权负载模式中用户为每个出口设置的流量分配比例,寻找当前流量所占比例超出设定比例最多的出口i将出口i中的会话取出调用函数F4重新进行分配。在步骤S408,分配模块108用于依据函数执行结果进行流量分配。在本实施方式中,在函数计算模块106执行完函数计算过程后,根据其计算结果可以实时的调节各个端口的流量分配,进而使得某个输出端口的流量以令其符合选择的所述流量分配模式的要求。另外,本发明所描述的是某个方向的流量分配方法和装置,另外一个方向(回向)的数据流量的分配也可以同样操作,适当增加往返路径等可选特性的情况下与本发明上面的描述类似,不再重复说明。通过本发明流量分配装置10执行流量分配方法,使得SDN网络中的流量实现动态的分配,提高了端口带宽的利用率,提升了用户的网络体验,节约了购买额外带宽的成本,使得网络更加灵活、高效。需要说明的是,上文所述实施方式,并不构成对发明保护范围的限定。任何在本发明的精神和原则内所作的修改,等同替换和改进等,均应包含在本发明的保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1