一种基于SDN数据中心网络的大象流路径监控调度方法与流程

文档序号:20203511发布日期:2020-03-27 20:53阅读:457来源:国知局
一种基于SDN数据中心网络的大象流路径监控调度方法与流程

本发明涉及数据中心网络的技术领域,尤其是指一种基于sdn数据中心网络的大象流路径监控调度方法。



背景技术:

随着云计算等技术的兴起,数据中心在近几年得到了工业界和学术界的广泛关注。通过对真实数据中心网络中的流量进行统计和分析表明,数据中心网络中存在两种不同类型的流量,分别称为老鼠流和大象流。其中,老鼠流在数据中心网络中的数量巨大,占比达到80%,但却携带不超过10%的数据量,持续时间较短,老鼠流通常由网页搜索引擎等应用产生,对传输时延有一定的要求;大象流在数据中心网络中的数量占比较小,不超过20%,但却携带超过90%的数据量,持续时间较长,大象流通常由文件传输和备份等应用产生,对传输的带宽有一定的要求;大象流通常是造成网络拥塞的主要原因,因此,如何对大象流进行有效调度是避免网络拥塞,保障服务质量的关键。

随着软件定义网络(softwaredefinednetworking,sdn)新型网络技术的发展,不少研究人员将sdn的网络架构运用在数据中心网络中,提出分布式和集中式结合的调度方法,在一定程度上减小了老鼠流的传输时延和丢包率,并且获得大象流在吞吐量上更好的表现。然而,目前的大多数方法仍然存在着以下几个问题:大多数方法在为大象流选取路径时,通常只采用了链路剩余带宽作为路径的评估指标,而sdn控制器收集的链路剩余带宽具有瞬时性,当大象流到达率比较频繁时,会因下一个检测周期还未达到,链路状态信息得不到及时更新而将大象流分配到链路负载较高的路径,造成链路拥塞问题;此外,sdn控制器大多数都按照固定的周期对网络进行状态收集和监控,过小的检测周期会加大信令的开销,过大的检测周期会造成收集到的网络状态信息不能得到及时的更新,如何根据网络状态对检测周期进行动态调整,在信令开销和网络状态信息的有效性之间做一个权衡也是一个需要继续改进的问题。

为提高数据中心网络的性能和保障各项服务的质量,如何实现拥塞避免和网络整体的负载均衡极为重要,因此,如何对数据中心网络中的流量进行合理的调度,提高资源利用率,减小拥塞,是当前数据中心网络建设中需要重点解决的问题。



技术实现要素:

本发明的目的在于克服现有技术的不足,提出了一种基于sdn数据中心网络的大象流路径监控调度方法,在减小信令开销的同时,能够解决现有方法中因链路状态信息更新不及时造成的链路拥塞问题。

为实现上述目的,本发明所提供的技术方案为:一种基于sdn数据中心网络的大象流路径监控调度方法,包括以下步骤:

1)发送端在发送数据流时对老鼠流和大象流进行标识,交换机接收到数据包时,若为老鼠流,则采用等价多路径ecmp算法进行转发,若为大象流,则将数据包封装成packet_in消息上报给sdn控制器;

2)sdn控制器根据已有的网络拓扑信息,计算出大象流源地址和目的地址之间的k条最短路径,采用最大路径平均可分配剩余带宽方法对各路径进行评估,为大象流选取一条最佳的路径进行传输,同时,将大象流所经路径的链路添加到链路监控表中;其中,k条最短路径能够在网络初始化时提前计算好,并且k设置为源地址和目的地址之间所有等价路径数量的一半,以减小搜索和计算时间;

3)sdn控制器周期性地检查链路监控表中各链路的负载情况,当某条链路的负载超过设定阈值时,选取该链路上的一条大象流并重新调度到其它路径上,同时更新链路监控表;当大象流传输结束时,将大象流所经链路从链路监控表中删除;其中,在每一次检测周期结束时,根据当前链路监控表中各链路的负载情况对检测周期进行动态调整。

在步骤1)中,采用发送端对数据流进行标识的方法对老鼠流和大象流进行区分,当发送端在发送数据流时缓存中的累积存储量超过设置的阈值时,则将该数据流数据包头的tos字段设置为1,表示该数据流为大象流,否则将tos字段设置为0,表示该数据流为老鼠流;交换机上提前下发默认的流表,当匹配到tos字段为0的数据流时,采用等价多路径ecmp算法进行转发,当匹配到tos字段为1的数据流时,将数据流封装成packet_in消息上报给sdn控制器。

在步骤2)中,所述最大路径平均可分配剩余带宽方法的具体步骤如下:

2.1)sdn控制器通过链路计数表为各链路设置一个计数器,用于保存各链路在两个检测周期之间新增的大象流数目;

2.2)sdn控制器计算出大象流源地址和目的地址之间的k条最短路径,记为p={p1,p2,...,pk};对于每一条最短路径pi,由n条链路组成,根据sdn控制器收集到的交换机各端口的状态信息,计算pi上各链路的剩余带宽,记为free_bandwidthi={free_bandwidthi1,free_bandwidthi2,...,free_bandwidthin},其中,free_bandwidthij为路径pi上第j条链路上的剩余带宽大小,i=1,2,…,k,j=1,2,…,n;

2.3)对于每一条最短路径pi,将每条链路上的大象流数目记为elephant_numberi={elephant_numberi1,elephant_numberi2,...,elephant_numberin},其中,elephant_numberij为路径pi上第j条链路在两个检测周期之间新增的大象流数目,i=1,2,…,k,j=1,2,…,n;

2.4)对于每一条最短路径pi,计算各链路上新增的每条大象流可分配到的平均剩余带宽大小,作为该链路的平均可分配剩余带宽,记为equal_bandwidthij,其中,equal_bandwidthij为路径pi上第j条链路的平均可分配剩余带宽,i=1,2,…,k,j=1,2,…,n;

2.5)对于每一条最短路径pi,选取该路径上具有最小平均可分配剩余带宽的链路,作为该路径的平均可分配剩余带宽,记为equal_bandwidthi,其中,equal_bandwidthi=min(equal_bandwidthi1,equal_bandwidthi2,...,equal_bandwidthin},equal_bandwidthi为路径pi的平均可分配带宽,i=1,2,…,k;

2.6)选择k条最短路径中具有最大路径平均可分配剩余带宽的路径作为大象流的传输路径:

choose_path=max(equal_bandwidth1,equal_bandwidth2,...,equal_bandwidthk}

同时将该大象流所经路径的链路添加到链路监控表中,更新链路监控表中的信息,并且将链路计数表中对应链路上的大象流数目加1;

2.7)当下一个检测周期到来时,各链路的剩余带宽信息能够得到更新,此时将链路计数表中各链路上的大象流数目重新设置为0;在下一个检测周期中,若接收到大象流,重复步骤2.1)-2.6)为大象流选择路径。

在步骤3)中,链路监控表主要记录被监控的链路以及该链路上所经过大象流的源ip地址和目的ip地址;sdn控制器周期性地对链路监控表中的链路进行检查;首先,判断该链路上是否只存在一条大象流,若只存在一条大象流,则跳过该链路的检查,否则执行接下来的步骤进行链路负载检查:

3.1)sdn控制器根据收集到的交换机端口统计信息,计算出当前检查链路的负载loadi,其中,loadi表示第i条监控链路上的负载情况,bi表示第i条监控链路上的已占用带宽大小,ci表示第i条监控链路上的最大带宽大小;当loadi≥th时,则说明该链路过载,其中,th为事先定义好的固定阈值;

3.2)当检查的链路发生过载时,查看链路监控表中经过该链路的大象流信息,对每一条大象流进行带宽评估,并且选择一条占用带宽最大的大象流,按照步骤2)中的方法为大象流重新选取一条新的路径,同时更新链路监控表;

3.3)当大象流传输结束时,由于交换机的流表过期机制,交换机会发送流表删除信息给sdn控制器,sdn控制器获取该大象流的原路径信息,将该路径上对应的链路信息从链路监控表中删除。

在步骤3)中,每一次检测周期结束时,sdn控制器根据链路监控表中各链路的负载情况对检测周期进行动态调整,其具体过程如下:

首先,在网络初始化时,sdn控制器将最小检测周期设置为tmin,最大检测周期设置为tmax,并且按照检测周期t=tmin的时间间隔周期性地检查链路监控表中各链路的负载情况;在连续的三个检测周期内,若链路监控表中各链路均没有发生过载,则将当前的检测周期进行线性增加,将当前检测周期设置为其中,t前为上一个检测周期的检测间隔,为线性增加因子,t不能超过最大检测周期tmax,设置成功后,按照新的检测周期对链路监控表进行定期检测;在任意检测周期内,若链路监控表中的链路发生过载,则将当前的检测周期设置为t=tmin,增加对链路监控表的检测频率,并且按照新的检测周期对链路监控表进行定期检测。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明提出了一种最大路径平均可分配剩余带宽的评估方法,在对路径进行评估时,加入在两个检测周期之间链路上新增的大象流数目作为评估指标,在一定程度上能够减小因链路状态更新不及时,将多条大象流分配到相同路径上造成的链路拥塞问题。

2、本发明提出了一种基于大象流路径监控的方法,大象流是造成网络拥塞的主要原因,因此,与现有的方法不同,本发明只对大象流所经路径上的链路进行监控,一方面可以进一步减小因链路状态更新不及时造成的链路拥塞问题,另一方面可以减小控制器的计算开销。

3、本发明的sdn控制器采用动态的检测周期对整个网络状态进行监控,根据网络负载情况对检测周期进行动态的调整,能够减小sdn控制器和交换机之间产生的信令开销。

4、本发明在信令开销和网络状态信息的有效性之间做了有效的权衡,在减小信令开销的同时,能够有效的避免因链路状态信息更新不及时造成的链路拥塞问题。

附图说明

图1为本发明的总体架构图。

图2为本发明方法的流程图。

图3为只采用链路剩余带宽作为评估因子进行路径选取后的流量分配图。

图4为采用本发明方法进行路径选取后的流量分配图。

图5为链路计数表图。

图6为链路监控表图。

具体实施方式

为了使本技术领域的人员更好的理解本发明方案,以下将结合附图和具体实施例,对本发明做进一步详细描述。

参见图1所示,本实施例所提供的基于sdn数据中心网络的大象流路径监控调度方法,采用控制平面与数据平面分离的网络架构,由sdn控制器进行集中式管理,实现对整个网络的拓扑发现、链路检测、流表下发和路径计算;采用的交换机均为支持openflow协议的交换机,交换机上提前下发默认的流表,接收到老鼠流时能够采用ecmp算法进行转发,接收到大象流时能够将数据流上报给sdn控制器进行处理;老鼠流和大象流的标识主要在终端主机上进行标识。

参见图2所示,本实施例所述的基于sdn数据中心网络的大象流路径监控调度方法,包括以下步骤:

1)发送端在发送数据流时对老鼠流和大象流进行标识,交换机接收到数据包时,若为老鼠流,则采用等价多路径ecmp算法进行转发,若为大象流,则将数据包封装成packet_in消息上报给sdn控制器;

2)sdn控制器根据已有的网络拓扑信息,计算出大象流源地址和目的地址之间的k条最短路径,采用最大路径平均可分配剩余带宽方法对各路径进行评估,为大象流选取一条最佳的路径进行传输,同时,将大象流所经路径的链路添加到链路监控表中;

3)sdn控制器周期性地检查链路监控表中各链路的负载情况,当某条链路的负载超过设定阈值时,选取该链路上的一条大象流并重新调度到其它路径上,同时更新链路监控表;当大象流传输结束时,将大象流所经链路从链路监控表中删除;其中,在每一次检测周期结束时,根据当前链路监控表中各链路的负载情况对检测周期进行动态调整。

在步骤1)中,采用发送端对数据流进行标识的方法对老鼠流和大象流进行区分,当发送端在发送数据流时缓存中的累积存储量超过设置的阈值时,则将该数据流数据包头的tos字段设置为1,表示该数据流为大象流,否则将tos字段设置为0,表示该数据流为老鼠流;交换机上提前下发默认的流表,当匹配到tos字段为0的数据流时,采用等价多路径ecmp算法进行转发,当匹配到tos字段为1的数据流时,将数据流封装成packet_in消息上报给sdn控制器。

在步骤2)中,所述的最大路径平均可分配剩余带宽方法具体步骤为:

2.1)sdn控制器通过链路计数表为各链路设置一个计数器,用于保存各链路在两个检测周期之间新增的大象流数目;

2.2)sdn控制器计算出大象流源地址和目的地址之间的k条最短路径,记为p={p1,p2,...,pk},其中,k条最短路径可以在网络初始化时提前计算好,并且k可设置为源地址和目的地址之间所有等价路径数量的一半,以减小搜索和计算时间;对于每一条最短路径pi,由n条链路组成,根据sdn控制器收集到的交换机各端口的状态信息,计算pi上各链路的剩余带宽,记为free_bandwidthi={free_bandwidthi1,free_bandwidthi2,...,free_bandwidthin},其中,free_bandwidthij为路径pi上第j条链路上的剩余带宽大小,i=1,2,…,k,j=1,2,…,n;

2.3)对于每一条最短路径pi,将每条链路上的大象流数目记为elephant_numberi={elephant_numberi1,elephant_numberi2,...,elephant_numberin},其中,elephant_numberij为路径pi上第j条链路在两个检测周期之间新增的大象流数目,i=1,2,…,k,j=1,2,…,n;

2.4)对于每一条最短路径pi,计算各链路上新增的每条大象流可分配到的平均剩余带宽大小,作为该链路的平均可分配剩余带宽,记为equal_bandwidthij,其中,equal_bandwidthij为路径pi上第j条链路的平均可分配剩余带宽,i=1,2,…,k,j=1,2,…,n;

2.5)对于每一条最短路径pi,选取该路径上具有最小平均可分配剩余带宽的链路,作为该路径的平均可分配剩余带宽,记为equal_bandwidthi,其中,equal_bandwidthi=min(equal_bandwidthi1,equal_bandwidthi2,...,equal_bandwidthin},equal_bandwidthi为路径pi的平均可分配带宽,i=1,2,…,k;

2.6)选择k条最短路径中具有最大路径平均可分配剩余带宽的路径作为大象流的传输路径:

choose_path=max(equal_bandwidth1,equal_bandwidth2,...,equal_bandwidthk}

同时将该大象流所经路径的链路添加到链路监控表中,更新链路监控表中的信息,并且将链路计数表中对应链路上的大象流数目加1;

2.7)当下一个检测周期到来时,各链路的剩余带宽信息可以得到更新,此时将链路计数表中各链路上的大象流数目重新设置为0;在下一个检测周期中,若接收到大象流,重复2.1)-2.6)的步骤为大象流选择路径。

参见图3所示,假设网络中存在a,b,c,d,e五台交换机,其中,a->b之间的剩余链路带宽大小为70mbps,b->c为60mbps,a->d为40mbps,d->e为60mbps,sdn控制器对链路状态的检测周期为5s;若只采用链路剩余带宽作为评估指标,在选取路径时,会选择一条具有最大剩余带宽的路径作为大象流的传输路径,大象流路径选取的步骤如下:

1)一开始,当第一条大象流flow1进入网络时,有两条路径可以传输,分别是a->b->c和a->d->e,记为路径1和路径2;

2)对于路径1,因为链路a->b的剩余带宽大小为70mbps,b->c的剩余带宽大小为60mbps,可计算得出该路径的最大剩余带宽为min(70mbps,60mbps)=60mbps,同理可得路径2的最大剩余带宽为40mbps,因为60mbps>40mbps,所以该大象流会沿着路径1进行转发;

3)若在3s后,第二条大象流flow2进入网络,同样可选择路径1或路径2进行传输,但是因下一个检测周期还未到达,链路上的剩余带宽大小还未及时得到更新,因此当时用于计算的a->b和b->c的链路剩余带宽仍为70mbps和60mbps,该大象流还是会选择路径剩余带宽较大的路径1进行转发;因为两条大象流被同时分配到路径1,互相争用链路带宽,从而会造成网络的吞吐量降低,并且增加了路径1的链路拥塞发生的可能性。

参见图4、图5所示,若采用最大路径平均可分配剩余带宽方法选择路径,大象流路径的选取步骤如下:

1)链路计数表如图5所示,记录着各链路在两个检测周期之间新增的大象流数目,假设新的一轮检测周期刚开始,此时各链路上的新增大象流数目都为0;一开始,当第一条大象流flow1进入网络时,有两条路径可以传输,分别是a->b->c和a->d->e,记为路径1和路径2;

2)对于路径1,包括a->b和b->c两条链路,a->b的剩余链路带宽大小为70mbps,新增的大象流数目为0,b->c的剩余链路带宽大小为60mbps,新增的大象流数目为0;若将大象流flow1分配到该路径上,在a->b上每条大象流可分配到的平均剩余带宽大小为70mbps/(0+1)=70mbps,b->c上每条大象流可分配到的平均剩余带宽大小为60mbps/(0+1)=60mbps,所以对于路径1,可得该路径上的平均可分配剩余带宽为min(70mbps,60mbps)=60mbps,同理可得路径2的平均可分配剩余带宽为min(40mbps,60mbps)=40mbps,因为60mbps>40mbps,所以第一条大象流flow1会沿着路径1传输,同时将链路a->b和b->c上新增的大象流数目加1;

3)若在3s后,第二条大象流flow2进入网络,此时由于还未到达下一个检测周期,链路状态还未得到更新,因此用于计算的a->b的剩余链路带宽大小为70mbps,b->c的剩余链路带宽大小为60mbps,但是a->b和b->c上的新增大象流数目为1;若将大象流flow2分配到路径1传输,则a->b和b->c上存在两条大象流,在a->b上每条大象流可分配到的平均剩余带宽大小为70mbps/(1+1)=35mbps,b->c为60mbps/(1+1)=30mbps,因此路径1的平均可分配剩余带宽大小min(35mbps,30m)=30mbps,同理可得路径2的平均可分配剩余带宽大小为min(40mbps,60mbps)=40mbps,因为40mbps>30mbps,所以第二条大象流flow2会沿着路径2传输,此时,将a->d和d->e上新增的大象流数目加1;若下一个检测周期到来时,各链路的带宽信息可以得到更新,则将所有链路的新增大象流数目重新设置为0;因为两条大象流沿着不同路径传输,从而避免了将两条大象流都分配到路径1而产生的链路拥塞问题。

参见图6所示,当为大象流分配路径后,将大象流路径上所经链路都加入到链路监控表中,若大象流所经链路在监控表中已经存在,则只找到对应的链路,添加该大象流的源ip地址和目的ip地址信息,若大象流所经链路在监控表中不存在,则需要添加该链路以及该大象流的源ip地址和目的ip地址信息。

在步骤3)中,链路监控表主要记录被监控的链路以及该链路上所经过大象流的源ip地址和目的ip地址;sdn控制器周期性地对链路监控表中的链路进行检查;首先,判断该链路上是否只存在一条大象流,若只存在一条大象流,则跳过该链路的检查,否则执行接下来的步骤进行链路负载检查:

3.1)sdn控制器根据收集到的交换机端口统计信息,计算出当前检查链路的负载loadi,其中,loadi表示第i条监控链路上的负载情况,bi表示第i条监控链路上的已占用带宽大小,ci表示第i条监控链路上的最大带宽大小;当loadi≥th时,则说明该链路过载,其中,th为事先定义好的固定阈值;

3.2)当检查的链路发生过载时,查看链路监控表中经过该链路的大象流信息,对每一条大象流进行带宽评估,并且选择一条占用带宽最大的大象流,按照步骤2)中的方法为大象流重新选取一条新的路径,同时更新链路监控表;

3.3)当大象流传输结束时,由于交换机的流表过期机制,交换机会发送流表删除信息给sdn控制器,sdn控制器获取该大象流的原路径信息,将该路径上对应的链路信息从链路监控表中删除。

在步骤3)中,每一次检测周期结束时,sdn控制器根据链路监控表中各链路的负载情况对检测周期进行动态调整,其具体过程如下:

首先,在网络初始化时,sdn控制器将最小检测周期设置为tmin,最大检测周期设置为tmax,并且按照检测周期t=tmin的时间间隔周期性地检查链路监控表中各链路的负载情况;在连续的三个检测周期内,若链路监控表中各链路均没有发生过载,则将当前的检测周期进行线性增加,将当前检测周期设置为其中,t前为上一个检测周期的检测间隔,为线性增加因子,t不能超过最大检测周期tmax,设置成功后,按照新的检测周期对链路监控表进行定期检测;在任意检测周期内,若链路监控表中的链路发生过载,则将当前的检测周期设置为t=tmin,增加对链路监控表的检测频率,并且按照新的检测周期对链路监控表进行定期检测。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围;应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

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