一种基于遗传算法的SDN数据中心网络流转发方法与流程

专利2022-06-30  59


本发明属于网络技术领域,特别涉及一种基于遗传算法的sdn数据中心网络流转发方法。



背景技术:

数据中心是数据传输、计算、存储的中心,集中部署硬件资源为用户提供各种各样的云服务:如存储、web搜索、算力、以及虚拟网络构建等。近些年来,随着互联网的蓬勃发展,互联网上的数据量呈指数级膨胀,数据中心规模急剧扩大,在不久的将来,随着5g网络的商用,5g低延迟和高带宽带来的优势将进一步的促进云技术的发展。因此对数据中心网络流量进行合理的动态规划十分重要。网络流量合理的调度可以提高链路带宽利用率,降低网络拥塞概率,进而达到网络流量负载均衡,更好的满足用户的需求,降低成本。

传统网络的路由计算和转发紧耦合的情况限制了网络的灵活性,且数据中心多样化业务需求和地域的集中性为引入sdn网络带来了可能。sdn网络架构利用分层思想将转发和控制解耦,控制层拥有全局视角可以获得全网的拓扑、节点、链路以及流量信息,根据这些信息来进行细粒度动态路由。转发层只进行数据转发,根据控制层下发的流表和组表来处理匹配的数据包。

然而传统的ecmp算法等价的将数据流在多条最短路径上进行分配,没有考虑链路成本,使得多条可用带宽差距很大的路径平等的承担流量,容易造成拥塞的发生,使得网络流量无法得到更合理的调度,降低了吞吐量。



技术实现要素:

针对上述问题,本发明提出一种基于遗传算法的sdn数据中心网络流转发方法,具体包括:

s1、交换机接收到主机发送的数据包,如果直连,则直接转发,否则需要进行流量判别;

s2、判断该数据流的dscp字段是否是000011,如果是则初步判别该数据流是初步大流,否则是小流;

s3、如果是大流则控制器根据数据包的源ip和目的ip找到k条最短路径并从中选择剩余带宽最大的作为路由,如果是小流则采用ecmp转发;

s4、sdn控制器周期性的向接入交换机下发请求信息,交换机将统计量回复报文给交换机;

s5、控制器将各交换机以及对应端口速率信息保存,同时控制器获取流量信息,并根据速率公式计算流速率,将超过阈值的数据流定义为大流;

s6、利用带宽需求估计模块对大流的真实带宽需求进行估计,若数据流流速率小于其真实带宽需求则定义为待调度流;

s7、为每条待调度流分配一个顶层交换机作为一个分配策略,并进行染色体编码;

s8、控制器利用遗传算法对进行染色体编码后待调度流进行路由规划,控制器下发新的流表到相应交换机,完成流的重调度。

进一步的,步骤s2具体包括:对服务器系统进行修改,加入tcp缓冲区检测的shim层,若tcp缓冲区超过设置的阈值,则将其ip数据包中的dscp设置为保留字段000011,接入交换机下发匹配dscp流表。

进一步的,数据包至少包括源ipip_src、目的ipip_dst,源tcp端口tcp_src_port,目的tcp端口tcp_dst_port,以太网类型ethertype。

进一步的,流速率与链路容量的比值包括:

其中,ρ表示流速率与链路容量,speed表示流速率;linkcaptcity表示链路容量;speed是流速率,检测到的单位是字节(bytes),而linkcapicity是链路容量(链路总带宽),检测的是单位是(kbit/s),所以要把speed*8转换为bit为单位,linkcapicity*1024转换为bit为单位。

进一步的,流速率表示为:

其中,bytecount表示流表记录的流过数据流的总字节数;duration_sec和duration_nsec表示流表存在时间,即(durationsec×109 durationnsec)表示流表存在durationsec秒又durationnsec毫微秒;这三个变量是获取流表统计信息得到的,是流表项,不是人为定义的,这是系统底层提供的信息。。

进一步的,利用带宽需求估计模块对大流的真实带宽需求进行估计包括:

s61、输入n×n的矩阵i,矩阵包含两个元素其中矩阵中第i行第j列的元素iij表示主机i向主机j发送的大流数据,令si表示发送端主机i带宽限值,ri表示接收端主机j带宽限值,带宽限值为1;

s62、设置矩阵变量t,其矩阵中的元素tij为受限于发送端的带宽的发送端主机i向接收端主机j发送流的预测带宽值;

s63、设置矩阵变量a,其矩阵中的元素aij为受限于接收端的带宽的发送端主机i向接收端主机j发送流的预测带宽值;

s64、设置矩阵o,令该矩阵元素oij表示发送端主机i向接收端主机j发出流带宽需求预测值;

s65、若存在tij≠aij,则令oij=min(tij,aij),根据oij的值更新矩阵i以及剩余的si以及ri;剩余的si以及ri为si和ri减去i,j间所有大流的带宽需求,矩阵i中的ii,j置为0;由于已经获得了当前主机i与主机j间数据流带宽需求oij,则在计算主机i到其他主机间数据流带宽需求的时候需要减去这些主机i与主机j间数据流带宽,而且在计算主机i到其他主机大流需求时,不能再考虑已获得带宽需求的当前主机i与主机j之间的数据流了,则需要将矩阵中的iij置为0。

s66、若获得所有oij,则返回矩阵o。

进一步的,受限于发送端的带宽的发送端主机i向接收端主机j发送流的预测带宽值tij表示为:

受限于接收端的带宽的发送端主机i向接收端主机j发送流的预测带宽值aij表示为:

进一步的,对每个个体进行染色体编码包括:将待调度流的源ip、目的ip以及随机选择的顶层交换机编号排列作为染色体编码格式,且用十进制数字表示顶层交换机的id。

进一步的,控制器利用遗传算法对待调度流进行路由规划包括:

s81、初始化n个个体,并将各个个体的适应度值f(ai);

s82、采用精英保留策略,将当前n个体进行交叉变异操作,并采用轮盘赌选择n个体,若新群体中不存在优于当前最佳适应度个体,复制当前适应度最佳个体同样遗传到新群体;

s83、新群体个体数为n 1,淘汰掉一个最差适应度个体,使群体规模保持为n;

若当前个体的最佳适应度与上一次个体的最佳适应度的变化量连续小于设置阈值的次数达到设置的上限或者达到默认迭代次数,则将当前n个个体中适应度最优个体染色体编码中源ip、目的ip以及顶层交换机确定的路径下发到交换机,否则返回s72。

进一步的,个体ai被选择的概率表示为:

其中,fn表示待调度的第n条数据流,θi,j表示数据流i所分配路径上第j条链路的带宽利用率,m表示路径i上链路的数量;hopsi表示数据流i路由跳数限制,k为核心交换机的数量,跨pod数据的路由跳数为k,pod内数据的路由跳数是2。

本发明针对高负载网络中网络带宽受限而出现流冲突现象采用遗传算法统一规划路由,在全局角度提高网络总体吞吐量,改善网络拥塞。

附图说明

图1为本发明一种基于遗传算法的sdn数据中心网络流转发方法流程图;

图2为本发明遗传算法进行路由规划的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种基于遗传算法的sdn数据中心网络流转发方法,首先通过终端主机检测数据流的方式,初步获得大流小流并为大流下发流表,然后控制器监控流表信息获得流信息从而算出其速率并对数据流进行带宽需求检测,若流速率小于其真实带宽需求就将其加入待调度流集合,然后利用遗传算法来为待调度流集合中的多条流进行优化调度最终使得流冲突数目最小化,如图1,具体包括:

s1、交换机接收到主机发送的数据包,如果直连,则直接转发,否则需要进行流量判别;

s2、判断该数据流的dscp字段是否是000011,如果是则初步判别该数据流是初步大流,否则是小流;

s3、如果是大流则控制器根据数据包的源ip和目的ip找到k条最短路径并从中选择剩余带宽最大的作为路由,如果是小流则采用ecmp转发;

s4、sdn控制器周期性的向接入交换机下发请求信息,交换机将统计量回复报文给交换机;

s5、控制器将各交换机以及对应端口速率信息保存,同时控制器获取流量信息,并根据速率公式计算流速率,将超过阈值的数据流定义为大流;

s6、利用带宽需求估计模块对大流的真实带宽需求进行估计,若数据流流速率小于其真实带宽需求则定义为待调度流;

s7、为每条待调度流分配一个顶层交换机作为一个分配策略,并进行染色体编码;

s8、控制器利用遗传算法对进行染色体编码后待调度流进行路由规划,控制器下发新的流表到相应交换机,完成流的重调度。

目前大小流区分分为终端侧检测和接入交换机检测两种方式,本发明利用终端检测方案,主要原理是将终端系统进行修改,加入tcp缓冲区检测的shim层,若tcp缓冲区超过一个阈值,则将其ip数据包中的dscp设置为保留字段000011。接入交换机下发匹配dscp流表,动作指向控制器用来触发packet_in,这个流表拥有比默认路由流表更高优先级,使得到来的数据流优先去匹配。

控制器侦测到dscp=000011的数据包后初步判别为大流,然后根据数据包的源、目的ip获得其k条等价路径,然后选择一条可用带宽最大的数据流转发。下发流表,流表匹配数据包的五元组(ip_src,ip_dst,tcp_src_port,tcp_dst_port,ethertype),这个流表的优先级需要高于于上述匹配dscp流表。

sdn控制器周期性的向接入交换机下发请求信息,交换机将统计量回复报文给交换机,包括端口速率,流信息等,控制器将各交换机以及对应端口速率信息保存,同时控制器获取流量信息,然后根据速率公式计算流速率,将超过阈值的数据流定义为大流;

控制器周期性向边缘交换机发送流状态请求(flow-states-request),边缘交换机收到流请求后将流量统计信息封装在流状态应答(flow-states-reply)消息中,发送给控制器。控制器接收到该应答消息后解析流量统计信息获得流速率,表示为:

其中,bytecount表示流表记录的流过数据流的总字节数;duration_sec和duration_nsec表示流表存在时间,即(durationsec×109 durationnsec)表示流表存在durationsec秒又durationnsec毫微秒;speed的单位为mbit/s。

根据流速率与链路容量的比值表示为:

其中,ρ表示流速率与链路容量的比值,speed表示流速率;linkcaptcity表示链路容量。

获得流速率与链路容量linkcapicity的比值,阈值为t,若该数据流的ρ>t,则将其信息加入大流集合largeflows。

tcp数据流流速率决定于发送方,接收方网卡带宽限制和网络带宽限制,网卡无限制的时候其速率仅仅由发送方和接收方网卡带宽决定,当前时刻检测到的数据流速speed并不能反映其真实带宽需求,当前的流速率可能是路径带宽限制后的,若将其合理调度则可能会以其真实带宽需求进行传输。于是需要根据网卡带宽对数据流进行带宽需求估计:

s61、输入n×n的矩阵i,矩阵包含两个元素其中矩阵中第i行第j列的元素iij表示主机i向主机j发送的大流数据,令si表示发送端主机i带宽限值,ri表示接收端主机j带宽限值,带宽限值为1;

s62、设置矩阵变量t,其矩阵中的元素tij为受限于发送端的带宽的发送端主机i向接收端主机j发送流的预测带宽值,其中tij表示为:

s63、设置矩阵变量a,其矩阵中的元素aij为受限于接收端的带宽的发送端主机i向接收端主机j发送流的预测带宽值,其中aij表示为

s64、设置矩阵o,令该矩阵元素oij表示发送端主机i向接收端主机j发出流带宽需求预测值;

s65、若存在tij≠aij,则令oij=min(tij,aij),根据oij的值更新矩阵i以及剩余的si以及ri;具体为si和ri减去i,j间所有大流的带宽需求,矩阵i中的ii,j置为0。

s66、若获得所有oij,则返回矩阵o。

对每条数据流进行带宽需求估计之后获得真实带宽需求,然后与largeflows中的对应数据流流速率比较,若流速率小于其真实带宽需求,则说明流传输受限出现流冲突,需要进行重调度,将这些数据流信息加入到sheduleflows作为待调度流。

在网络负载重的情况下,不能只关注那些经由核心交换机转发的不同pod间流量,需要对所有大流进行合理路由规划,优化目标为最小化流冲突数量。

fattree架构这种三层树拓扑下,若有k台核心交换机,则有k个pod,每个pod有k/2台汇聚交换机,每个pod内有k/2台接入交换机。无论是pod间还是pod内不同子网段内流量都有多条等价路径,不同pod间的数据流通过顶层的核心交换机进行转发,等价路径条数是(k/2)^2,同pod内不同子网段的数据流通过汇聚交换机转发,等价路径条数是(k/2),所以无论是不同pod间流量经由核心交换机转发还是相同pod内流量经由汇聚交换机转发,统称为经由顶层交换机转发,针对一条数据流,若其顶层交换机确定了,则其转发路径唯一确定。所以区分跨pod数据流和pod内数据流很关键。区分pod间流量还是pod内流量有很多方式,可以通过设置有规则的交换机dpid或者为终端主机根据规则设置ip地址。如可以将终端主机的ip地址设置为10.k1.k2.x,其中k1代表pod,k2代表pod内的接入交换机,如10.2.1.1代表第2个pod内第1个接入交换机的1号主机,其中,k1=k2=k/2,只需要根据一条数据流的源、目的ip就可以辨别是pod间流量还是pod内数据流。

由于每台交换机对应一个唯一的dpid。根据规则设置交换机dpid格式,如核心交换机编号格式是[1,2,3,…,k],汇聚交换机的编号格式是[101,102,…,10(k1);201,202,…20(k1);…;k01,k02,…,k0(k1)],k1=k/2,其中k0(k1)表示第kpod内的第k1台汇聚交换机。

已知sheduleflows中有n条数据流f1,f2,…fn以及对应的带宽需求bi,流速率speedi。ci(i=1,2,…,n)是一组顶层交换机序列。则定义一个映射函数map(fi,bi,speedi,ci),表示流速率为speedi,带宽需求为bi的数据流fi选择顶层交换机ci进行转发的路径上的若干链路。该问题的优化目标就是如何为sheduleflows进行合理调度在保证对应链路带宽上限前提下,带宽需求得不到满足的数据流数目最小化,也即流冲突数量最小化,表示为:

其中,θi,j表示路径i上第j条链路的带宽利用率;hopsi表示数据流i路由跳数限制,k为核心交换机的数量,跨pod数据的路由跳数为k,pod内数据的路由跳数是2。

遗传算法(geneticalgorithm,ga)是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。它将所求优化目标映射为解集并通过编码定义为染色体,通过适应度来评价解的优劣。经过一系列选择、遗传、变异操作获得适应度值最大染色体进而求得最优解。

在染色体构造阶段,采用为流量集和随机选择顶层交换机的编号排列作为染色体编码格式,为了尽量简单从而加快收敛,利用十进制数字来表示顶层交换机的id,顶层交换机的id对应k个核心交换机id,如8条待调度数据流在k=4的fattree拓扑下:当前sheduleflows中有8条待调度流[f1,f′2,f3,f′4,f5,f6,f3,f8],f′2、f′4表示pod内数据流,其他都是pod间数据流,如{f1:1,f′2:3,f3:4,f′4:2,f5:1,f6:4,f3:3,f8:2}是一种分配方式,对应个体a=[1,3,4,2,1,4,3,2]。其中f3:4指第3条数据流为pod间数据流分配到编号为4的顶层交换机转发,f′2:3指pod内数据流f′2分配到编号为3的顶层交换机转发,然而每个pod内只有2台汇聚交换机。所以在解码的时候需要通过一个映射公式:

其中,是pod内汇聚交换机数目,num是该数据流分配的顶层交换机编号,aggnum是pod内汇聚交换机序号,取值范围是[1,k/2],本例中,f′2:3的num为3,aggnum算得2。然后就可以根据数据流ip中的pod号唯一确定这个汇聚交换机。

如图2,控制器利用遗传算法对待调度流进行路由规划包括:

s81、初始化n个个体,并将各个个体的适应度值f(ai),将流冲突数量最小化作为个体适应度,即f(ai)=minf(f1,f2,...,fn);

s82、采用精英保留策略,将当前n个体进行交叉变异操作,并采用轮盘赌选择n个体,若新群体中不存在优于当前最佳适应度个体,复制当前适应度最佳个体同样遗传到新群体;

s83、新群体个体数为n 1,淘汰掉一个最差适应度个体,使群体规模保持为n;

s84、若当前个体的最佳适应度与上一次个体的最佳适应度的变化量连续小于设置阈值的次数达到设置的上限或者达到默认迭代次数,则将当前n个个体中适应度最优个体染色体编码中源ip、目的ip以及顶层交换机确定的路径下发到交换机,否则返回s72。

采用轮盘赌选择n个体时,个体ai被选择的概率表示为:

其中,pi为个体ai被选择的概率。

在本实施例中,当前个体的最佳适应度与上一次个体的最佳适应度的变化量a表示为:

其中,表示第第i次迭代的最佳适应度;在本实施例中,如果a<=a1的次数大于l,且迭代次数小于p,则提前跳出迭代,其中,a1、l、p为人为设置的迭代参数;优选的,在本实施例中a1=0.01。

将个体中的对应关系映射为路径下发到涉及交换机,控制器下发新的流表到相应交换机,完成流的重调度。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。


技术特征:

1.一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,具体包括以下步骤:

s1、交换机接收到主机发送的数据流,如果直连,则直接转发,否则需要进行流量判别;

s2、判断该数据流的dscp字段是否是000011,如果是则初步判别该数据流是初步大流,否则是小流;

s3、如果是大流则控制器根据数据流的源ip和目的ip找到k条最短路径并从中选择剩余带宽最大的作为路由,如果是小流则采用等价多路径ecmp转发;

s4、sdn控制器周期性的向接入交换机下发请求信息,交换机将统计量回复报文给交换机;

s5、控制器将各交换机以及对应端口速率信息保存,同时控制器获取流量信息,并根据速率公式计算流速率,将超过阈值的数据流定义为大流;

s6、利用带宽需求估计模块对大流的真实带宽需求进行估计,若数据流流速率小于其真实带宽需求则定义为待调度流;

s7、为每条待调度流分配一个顶层交换机作为一个分配策略,并进行染色体编码;

s8、控制器利用遗传算法对进行染色体编码后待调度流进行路由规划,控制器下发新的流表到相应交换机,完成流的重调度。

2.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,步骤s2具体包括:对网络的服务器进行修改,加入tcp缓冲区检测的shim层,若tcp缓冲区超过设置的阈值,则将该数据流的dscp设置为保留字段000011,接入交换机下发匹配dscp流表。

3.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,

其特征在于,数据流至少包括源ipip_src、目的ipip_dst,源tcp端口tcp_src_port,目的tcp端口tcp_dst_port,以太网类型ethertype。

4.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,流速率与链路容量包括:

其中,ρ表示流速率与链路容量,speed表示流速率;linkcaptcity表示链路容量。

5.根据权利要求4所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,流速率表示为:

其中,bytecount表示流表记录的流过流表的数据流的总字节数;duration_sec和duration_nsec表示流表存在时间,即(durationsec×109 durationnsec)表示流表存在durationsec秒又durationnsec毫微秒。

6.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,利用带宽需求估计模块对大流的真实带宽需求进行估计包括:

s61、输入n×n的矩阵i,其中矩阵中第i行第j列的元素iij表示主机i向主机j发送的大流数据,令si表示发送端主机i带宽限值,ri表示接收端主机j带宽限值,带宽限值为1;

s62、设置矩阵变量t,其矩阵中的元素tij为受限于发送端的带宽的发送端主机i向接收端主机j发送流的预测带宽值;

s63、设置矩阵变量a,其矩阵中的元素aij为受限于接收端的带宽的发送端主机i向接收端主机j发送流的预测带宽值;

s64、设置矩阵o,令该矩阵元素oij表示发送端主机i向接收端主机j发出流带宽需求预测值;

s65、若存在tij≠aij,则令oij=min(tij,aij),根据oij的值更新矩阵i以及剩余的si以及ri;

s66、若获得所有oij,则返回矩阵o。

7.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,受限于发送端的带宽的发送端主机i向接收端主机j发送流的预测带宽值tij表示为:

受限于接收端的带宽的发送端主机i向接收端主机j发送流的预测带宽值aij表示为:

8.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,步骤s7包括:为每一条待调度流分配一个顶层交换机,即每条数据流对应一个顶层交换机序号,采用十进制对顶层交换机序号序列进行编码,并将该编码作为一条染色体,将所有数据流对应的交换机编号序列作为一个个体。

9.根据权利要求1所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,控制器利用遗传算法对待调度流进行路由规划包括:

s81、初始化n个个体,并将各个个体的适应度值f(ai);

s82、采用精英保留策略,将当前n个体进行交叉变异操作,并采用轮盘赌选择n个体,若新群体中不存在优于当前最佳适应度个体,复制当前适应度最佳个体同样遗传到新群体;

s83、新群体个体数为n 1,淘汰掉一个最差适应度个体,使群体规模保持为n;

s84、若当前个体的最佳适应度与上一次个体的最佳适应度的变化量连续小于设置阈值的次数达到设置的上限或者达到默认迭代次数,则将当前n个个体中适应度最优个体染色体编码中源ip、目的ip以及顶层交换机确定的路径下发到交换机,否则返回s72。

10.根据权利要求9所述的一种基于遗传算法的sdn数据中心网络流转发方法,其特征在于,个体ai被选择的概率表示为:

其中,fn表示待调度的第n条数据流,θi,j表示数据流i所分配路径上第j条链路的带宽利用率,m表示路径i上链路的数量;hopsi表示数据流i路由跳数限制,k为核心交换机的数量,跨pod数据的路由跳数为k,pod内数据的路由跳数是2。

技术总结
本发明属于网络技术领域,特别涉及一种基于遗传算法的SDN数据中心网络流转发方法,包括接入交换机接收终端主机的数据包后,初步判别其是否是大流,如果是小流则采用等价多路径来调度,否则将其调度到最大剩余带宽路径上,控制器轮询交换机获得大流的流速率,若流速率超过一定阈值,就通过带宽需求检测模块来估计其真实带宽需求,如果流速率小于真实带宽需求认为出现流冲突,则将这些数据流作为待调度数据流;采用遗传算法来为这些数据流规划路由,控制器下发新的流表到相应交换机,完成流的重调度;本发明针对高负载网络中网络带宽受限而出现流冲突现象采用遗传算法统一规划路由,在全局角度提高网络总体吞吐量,改善网络拥塞。

技术研发人员:唐宏;李艺;马枢清;雷袁杰;郭可可
受保护的技术使用者:重庆邮电大学
技术研发日:2020.01.20
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-56295.html

最新回复(0)