欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种软件定义网络中流表一致性更新方法独创技术37370字

一种软件定义网络中流表一致性更新方法

2021-04-24 14:48:12

一种软件定义网络中流表一致性更新方法

  技术领域

  本发明属于网络更新的网络安全领域,更具体地,涉及一种软件定义网络中流表一致性更新方法。

  背景技术

  网络状态变化导致的网络更新是十分常见的问题,在传统网络中实现网络的正确更新需要进行大量复杂而麻烦的操作,比如修改内部网关协议(Interior GatewayProtocol,IGP)来实现网络配置的更新。随着网络规模越来越庞大,结构越来越复杂,可以改善传统网络一些缺陷的新型网络体系架构成为了业界的迫切需求,软件定义网络(Software Defined Network,SDN)随之孕育而生。SDN控制器通过南向接口协议OpenFlow与数据平面的交换机进行通信,通过北向接口为上层提供应用服务,而SDN网络的可编程性也使得开发人员可以对网络进行更多的控制操作。SDN的种种特性都为实现网络的快速、简便更新提供了可能。

  现实网络中,诸如流量工程、负载均衡以及网络设备维护等因素都会引起网络的更新。与传统网络不同的是,SDN中网络的更新往往通过对流表规则进行更新来完成,而流表规则的更新往往需要对数据平面的OpenFlow交换机上的流表规则进行增加、修改、删除等操作。虽然SDN控制器能够将流表规则集中统一的部署到数据转发平面,但是由于数据平面层的结构仍是分布式的,因此数据平面交换机中流表规则的更新将存在不可避免的先后顺序,而且控制器发送到交换机的控制消息也有一定的传输时延,因此在进行网络流表的更新操作时,各个交换机的流表更新是非原子性的,从而可能产生以下的一些现象:传输控制器辑不一致;数据包在传输过程中同时被交换机中的新规则和旧规则处理;网络在更新过程中出现数据丢包、传输中断以及瞬时环路等现象。因此在流表更新的过程中,控制器需要采取一定的更新策略,使得数据包在传输过程中不能既受新规则处理又受旧规则处理,避免更新过程中出现黑洞、环路、链路拥塞等情况,以保证流表更新的一致性。

  目前关于软件定义网络中的更新一致性问题已经有了很多的研究方案,这些方案大多针对更新过程中可能出现的黑洞、瞬时环路和拥塞等问题提出了具体的解决方案,但是当前SDN中的流表更新一致性相关研究仍然存在一些问题,主要体现为以下几点:

  1.现有研究方案大多是针对假定已知的旧路径和新路径来分析如何确定更新序列来避免黑洞、环路等问题,仅针对某种特定的场景,并没有结合实际场景来判断网络是否要进行流表更新,也没有进一步分析发生流表更新的原因;无法适用于比较复杂的网络环境,在比较复杂的网络环境下,一致性更新效果较差,存在黑洞、环路等问题;

  2.现有研究方案有些仅研究了单条数据流更新的情形,而那些研究多数据流更新的方案,并没有详细分析网络中哪些数据流是需要进行更新的数据流,以及如何挑选出合适的待更新数据流。

  3.现有研究方案中更新时间短的会消耗宝贵的TACM存储资源,虽然一些定时更新方案的更新时间比较短且不会消耗额外资源,但是这些方案的实现往往太过复杂,而且现有的方案往往无法同时保证流表更新过程中无环路、无黑洞和无链路拥塞。

  发明内容

  针对现有技术的以上缺陷或改进需求,本发明提供了一种软件定义网络中流表一致性更新方法,其目的在于解决现有方法由于未考虑引起流表更新的原因,依赖于假定已知的旧路径和新路径来进行更新而导致的在比较复杂的网络环境下进行流表更新时,存在黑洞和环路的技术问题。

  为实现上述目的,第一方面,本发明提供了一种软件定义网络中流表一致性更新方法,包括以下步骤:

  S1、收集交换机统计信息、网络拓扑信息和北向接口状态信息,通过对收集到的信息进行分析,确定是否需要进行流表更新,若需要,则确定引起流表更新的原因和需要进行流表更新的链路,转至步骤S2;否则,结束操作;

  S2、对于不同原因引起的流表更新,分别采用不同的方法对需要进行流表更新的链路中的待更新链路,确定数目最少的一组待更新数据流,并在满足链路不发生拥塞的条件下,为各待更新数据流选择新路径;

  S3、对待更新链路的每一条待更新数据流,分别进行如下操作:判断待更新数据流的新、旧路径之间是否形成环路,对于新、旧路径形成环路和未形成环路两种情形分别基于不同的更新方法,将新、旧路径上的待更新交换机按照不同的流表更新操作类型进行集合划分后,对所得各交换机集合,按照对应的顺序对其中各交换机的流表进行一致性更新;

  S4、判断所有需要进行流表更新的链路是否均完成更新,若是,则操作结束;否则,转至步骤S2。

  进一步优选地,步骤S1中,每隔预设周期,收集交换机统计信息、网络拓扑信息和北向接口状态信息,通过对收集到的信息进行分析,确定是否需要进行流表更新以及引起流表更新的原因,具体为:

  根据交换机统计信息,计算每条链路的实时负载或带宽利用率,若至少存在一条链路其实时负载或带宽利用率超过了对应的预设阈值,则需要进行流表更新,且此时引起流表更新的原因是由于链路负载过重;否则,不需要进行流表更新;

  根据所得网络拓扑信息,确定当前周期的网络拓扑结构,并与前一周期的拓扑结构进行对比,当链路发生中断或者链路上的交换机被增加或移除时,判断该链路上是否有数据流的传输,若有,则需要进行流表更新,且此时引起流表更新的原因是由于网络拓扑结构发生变化;否则,不需要进行流表更新;

  根据北向接口状态信息,判断北向Rest API接口是否下发转发流表,若是,则需要进行流表更新,且此时引起流表更新的原因是由于北向API下发流表;否则,不需要进行流表更新。

  进一步优选地,当引起流表更新的原因是由于链路负载过重时,上述步骤S2包括以下步骤:

  S21、对待更新的链路L,计算使得该链路恢复正常最少需转移的数据流大小k;

  S22、从链路L中的数据流中找出大小大于k且实时带宽最小的数据流F,判断数据流F是否存在备用路径,若不存在,则转至S23;否则,从数据流F的所有备用路径中选择可用带宽最大的备用路径R,判断数据流F加入备用路径R后的负载是否大于该备用路径R的负载阈值,若是,转至步骤S23;若否,则将数据流F加入链路L的待更新流表列表中,操作结束;

  S23、从链路L中的数据流中找出实时带宽次小于数据流F带宽的数据流f,判断数据流f是否存在备用路径,若不存在,则令F=f,转至S23;否则,从数据流f的所有备用路径中选择可用带宽最大的备用路径r,判断数据流f加入备用路径r后的负载是否大于该备用路径r的负载阈值,若是,则令F=f,转至S23;若否,则将数据流f加入链路L的待更新流表列表中,转至步骤S24;

  S24、判断当前待更新流表列表中的所有数据流大小是否大于k,若是,则操作结束;否则,令F=f,转至S23;

  其中,待更新流表列表中的数据流即为待更新数据流,对应的备用路径即为新路径。

  进一步优选地,判断待更新数据流的旧路径和新路径之间是否形成环路的方法包括:构建待更新数据流新路径和旧路径的有向图G=(V,E),采用拓扑排序算法判断上述有向图中是否存在环路;若存在环路,则待更新数据流的旧路径和新路径之间是否形成环路;否则,待更新数据流的旧路径和新路径之间未形成环路;其中,V为旧路径和新路径上的交换机所构成的集合,E为链路集合。

  进一步优选地,上述交换机集合包括:

  待新增流表交换机集合Va,具体包括:新路径上入口交换机的后一个交换机、出口交换机以及二者之间的所有交换机;

  待修改流表交换机集合Vm,具体包括:入口交换机;

  待删除流表交换机集合Vd,具体包括,旧路径上从入口交换机的后一个交换机、出口交换机以及二者之间的所有交换机;

  其中,入口交换机为新路径和旧路径开始出现分叉处的交换机,出口交换机为新、旧路径开始汇合处的交换机。

  进一步优选地,当新、旧路径形成环路时,上述待新增流表交换机集合Va进一步被划分为新路径环路交换机集合Vnc和新路径非环路交换机集合Vn;

  其中,新路径环路交换机集合Vnc包括:新、旧路径所形成的环路中属于新路径的交换机;

  新路径非环路交换机集合Vn包括:新路径上入口交换机的后一个交换机、出口交换机以及二者之间除了已存在于Vnc中的交换机之外的所有交换机。

  进一步优选地,当新、旧路径未形成环路时,对所得各交换机集合中各交换机中的流表进行一致性更新的方法包括三个阶段,具体为:

  待新增流表交换机更新阶段:向待新增流表交换机集合Va中的各交换机下发对应数据流转发流表;

  待修改流表交换机更新阶段:待Va中所有交换机更新完毕后,修改待修改流表交换机集合Vm中交换机的流表,将该流表中原来输出方向为旧路径的流表项的输出方向修改为新路径;

  待删除流表交换机更新阶段:待Vm中的交换机更新完毕后,删除待删除流表交换机集合Vd中各交换机中对应的流表;其中,在删除交换机中对应的流表之前,判断该交换机上的数据包是否传输完成,待交换机上的数据包传输完成后,删除该交换机中对应的流表。

  进一步优选地,当新、旧路径形成环路时,对所得各交换机集合中各交换机中的流表进行一致性更新的方法包括两个阶段,具体为:

  待新增流表交换机和待删除流表交换机更新阶段:对新路径非环路交换机集合Vn中的各交换机下发对应数据流转发流表,并删除待删除流表交换机集合Vd中各交换机中对应的流表,待Vd中各交换机完成更新后,对新路径环路交换机集合Vnc中的各交换机下发对应数据流转发流表;其中,在删除交换机中对应的流表之前,判断该交换机上的数据包是否传输完成,待交换机上的数据包传输完成后,删除该交换机中对应的流表;

  待修改流表交换机更新阶段:当上一阶段完成更新后,修改待修改流表交换机集合Vm中交换机的流表,将该流表中原来输出方向为旧路径的流表项的输出方向修改为新路径。

  进一步优选地,更新待删除流表交换机集合中各交换机的流表的方法,包括:

  对于待删除流表交换机集合中的交换机,开始每隔查询交换机上流表中的计数器数值,若流表中计数器数值与上一次的查询到的计数器数值相等,则判断为数据包在该交换机上已经传输完成,删除该交换机上的对应的流表;重复上述过程,直至待删除流表交换机集合中各交换机的流表均更新完毕;其中,待删除流表交换机集合中的交换机构成待删除流表链路,Tmin为待删除流表链路的最小时延,n为待删除流表链路上路径的条数。

  第二方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明第一方面提供的一种软件定义网络中流表一致性更新方法。

  总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

  1、本发明提出了一种软件定义网络中流表一致性更新方法,在确定是否需要进行流表更新的同时,也确定了引起流表更新的原因,对于不同原因引起的流表更新,分别采用不同的方法对需要进行流表更新的链路中的待更新链路,确定数目最少的一组待更新数据流,并在满足链路不发生拥塞的条件下,为各待更新数据流选择新路径,然后通过对待更新数据流的新、旧路径之间有环或无环进行分析,在有环和无环两种场景下分别基于不同的更新方法进行一致性更新;本发明充分考虑了引起流表更新的原因,分别采用对应的方法来确定最优待更新数据流和新路径,能够在比较复杂的网络环境下进行流表更新时避免黑洞、环路等问题的产生。

  2、本发明所提出的一种软件定义网络中流表一致性更新方法,当引起流表更新的原因是由于链路负载过重时,在确定待更新链路的待更新数据流及其新路径的方法时,对于每一条需进行更新的链路,择数目最小的待更新数据流条数转移到备用路径,大大缩短了流表更新的时间;并且在选择路径时保证每条路径加入待更新数据流后负载不超过备用路径的负载阈值,可以避免出现链路拥塞、黑洞、环路等问题。

  3、本发明所提出的一种软件定义网络中流表一致性更新方法,在对待删除流表交换机集合中各交换机的流表进行更新时,逐个检测交换机上数据包的传输情况,若交换机上的数据包传输完成则及时的删除对应的流表,可以确保旧路径数据包传输完成;并且该方法所需的更新时间小于端到端的最大传输时延,且更新链路越长,节省的更新时间越多。

  附图说明

  图1是实施例1所提供的一种软件定义网络中流表一致性更新方法流程图;

  图2是实施例1所提供的引起流表更新的原因是由于链路负载过重时确定待更新链路的待更新数据流及其新路径的方法流程图;

  图3是实施例1所提供的无环有向图的有、无环判断过程流程图;

  图4是实施例1所提供的有环有向图的有、无环判断过程流程图;

  图5是实施例1所提供的新、旧路径未形成环路时的传输示意图;

  图6是实施例1所提供的新、旧路径形成环路时的传输示意图。

  具体实施方式

  为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

  实施例1、

  一种软件定义网络中流表一致性更新方法,如图1所示,包括以下步骤:

  S1、收集交换机统计信息、网络拓扑信息和北向接口状态信息,通过对收集到的信息进行分析,确定是否需要进行流表更新,若需要,则确定引起流表更新的原因和需要进行流表更新的链路,转至步骤S2;否则,结束操作;

  具体的,每隔预设周期(本实施例中,预设周期为3秒),收集交换机信息、网络拓扑信息和北向接口状态信息,通过对收集到的信息进行分析,确定是否需要进行流表更新以及引起流表更新的原因;具体为:

  根据交换机信息,计算每条链路的实时负载或带宽利用率,若至少存在一条链路其实时负载或带宽利用率超过了对应的预设阈值,则需要进行流表更新,且此时引起流表更新的原因是由于链路负载过重;否则,不需要进行流表更新。具体的,为了获取交换机中的统计信息,本实施例使用OpenFlow协议中Controller-to-Switch消息中的Read-state消息类型。为了计算链路负载、带宽利用率等信息,控制器将Read-state消息封装到packet-out包中,并周期性的发往每一台交换机以获取交换机统计信息。控制器将请求放在OFPT_MULTIPART_REQUEST消息中,发送给交换机后,交换机回复OFPT_MULTIPART_REPLY消息进行响应。控制器接收到来自交换机的相关统计信息之后,开始解析统计信息中端口Port和流表项Flow类别信息,计算每一条链路的负载和实时带宽,并将链路的实时带宽与链路总带宽相除,得到链路的带宽利用率。进一步地,本实施例中,通过比较链路的实时负载和对应的预设阈值,来判断是否进行流表更新,具体的,负载对应的预设阈值为0.7。

  根据所得网络拓扑信息,确定当前周期的网络拓扑结构,并与前一周期的拓扑结构进行对比,当链路发生中断或者链路上的交换机被增加或移除时,判断该链路上是否有数据流的传输,若有,则需要进行流表更新,且此时引起流表更新的原因是由于网络拓扑结构发生变化;否则,不需要进行流表更新。具体的,当网络正常时,拓扑管理模块会每隔一定时间更新网络的拓扑信息,一旦出现链路中断或者有交换机的增加或移除的情况,链路发现模块会感应出来并通知拓扑管理模块,这时与前一周期的拓扑进行对比,可能会有如下两种情况:1、拓扑变化影响的相关链路上没有数据流的传输,则此时不会进行流表的更新;2、受影响的链路上有数据流的传输,对于链路中断的情况,控制器需要为受影响的数据流选择新的转发路径,对于新增或移除了交换机的情况则需要进一步判断是否会有其它更优的路径从而确定是否选择新的转发路径,因为链路中断和移除交换机而进行转发路径更新的数据流会丢失一定的数据包。

  根据北向接口状态信息,判断北向Rest API接口是否下发转发流表,若是,则需要进行流表更新,且此时引起流表更新的原因是由于北向API下发流表;否则,不需要进行流表更新。具体的,因为有了控制器北向接口的存在,用户可以调用控制器的许多应用层功能,诸如查看流表信息、开启防火墙应用、向交换机下发流表和删除交换机流表等。因此除了进行链路负载均衡以及网络拓扑结构改变等客观因素引起的流表更新外,还可以人为的通过北向REST API接口下发流表改变传输路径,此时也会引起流表的更新。控制器将通过REST API下发的流表的优先级设置为特定值,当数据包在交换机中有两条匹配的流表项时,若其中一条为特定优先级的流表,则说明此时存在通过北向接口改变数据包转发路径的情形,由于新路径的流表已经下发生效,此时仅需要更新原来旧路径交换机上的流表。

  S2、对于不同原因引起的流表更新,分别采用不同的方法对需要进行流表更新的链路中的某一条待更新链路,确定数目最少的一组待更新数据流,以减轻控制器负担和减少流表更新时间,并在满足链路不发生拥塞的条件下,为各待更新数据流选择新路径;

  具体的,引起的流表更新的原因不同,选择待更新数据流方式也不相同。链路负载过重引起的流表更新,待更新数据流为负载过重链路恢复正常需转移的数据流。对于网络拓扑结构变化引起的流表更新,需要更新的流表则为受影响的链路上的流表。对于RESTAPI下发流表引起的更新,需要更新的流表即为原来旧路径上对应的流表。

  下面以链路负载过重引起的流表更新为例进行分析,在选择待更新数据流时需根据每一条待更新数据流的备选路径上的负载情况来决定待更新数据流应该选择哪一条更新路径,以最大程度避免链路的拥塞。由于网络中每一台交换机都可以与多台主机与多台交换机相连,因此任意一条链路上都可能存在多条正在传输的数据流,对于每一条链路上的所有数据流fi及其带宽大小在每一轮交换机信息采集完并计算链路负载等信息后,便开始检测是否有链路负载过重需要进行流量的转移,对于每一条需要转移流量的链路,都要选出合适的待转移数据流。具体的,如图2所示,包括以下步骤:

  S21、对待更新的链路L,计算使得该链路恢复正常最少需转移的数据流大小k;

  具体的,本实施例中,将待更新的链路L上的数据流按照实时带宽从小到大进行排序,并计算使得该链路恢复正常最少需转移的数据流大小k。

  S22、从链路L中的数据流中找出大小大于k且实时带宽最小的数据流F,判断数据流F是否存在备用路径,若不存在,则转至S23;否则,从数据流F的所有备用路径中选择可用带宽最大的备用路径R,判断数据流F加入备用路径R后的负载是否大于该备用路径R的负载阈值,若是,转至步骤S23;若否,则将数据流F加入链路L的待更新流表列表中,操作结束;

  具体的,采用二分查找法查找上述排序后的数据流带宽,从中找出大小大于k且实时带宽最小的带宽所对应的数据流F。

  S23、从链路L中的数据流中找出实时带宽次小于数据流F带宽的数据流f,判断数据流f是否存在备用路径,若不存在,则令F=f,转至S23;否则,从数据流f的所有备用路径中选择可用带宽最大的备用路径r,判断数据流f加入备用路径r后的负载是否大于该备用路径r的负载阈值,若是,则令F=f,转至S23;若否,则将数据流f加入链路L的待更新流表列表中,转至步骤S24;

  S24、判断当前待更新流表列表中的所有数据流大小是否大于k,若是,则操作结束;否则,令F=f,转至S23;

  其中,待更新流表列表中的数据流即为待更新数据流,对应的备用路径即为新路径。通过上述方法可以最小化待更新数据流的数目,从而减轻流表更新的复杂程度,提升更新效率。

  S3、对待更新链路的每一条待更新数据流,分别进行如下操作:判断待更新数据流的新、旧路径之间是否形成环路,对于新、旧路径形成环路和未形成环路两种情形分别基于不同的更新方法,将新、旧路径上的待更新交换机按照不同的流表更新操作类型进行集合划分后,对所得各交换机集合,按照对应的顺序对其中各交换机的流表进行一致性更新;

  具体的,对于待更新数据流,需要分析其新路径是否与旧路径存在环路,对于新、旧路径形成环路和未形成环路两种情形下的待更新数据流采取不同的更新策略。

  本实施例中判断待更新数据流的新、旧路径之间是否形成环路的方法如下:

  首先,构建待更新数据流新路径和旧路径的有向图G=(V,E),其中,V为旧路径和新路径上的交换机所构成的集合,E为链路集合;数据流的传输方向为有向图中链路方向,如有向边(S1,S2)中S1为S2的前驱交换机。

  然后,采用拓扑排序算法判断上述有向图中是否存在环路;若上述有向图中存在环路,则待更新数据流的新、旧路径之间形成环路;若上述有向图中不存在环路,则待更新数据流的新、旧路径之间未形成环路。具体包括:

  1)找出当前有向图中所有入度为0的交换机节点,加入队列Q;

  2)移除当前有向图中入度为0交换机节点以及关联的边;

  3)重复上述步骤,直至有向图中没有入度为0的交换机节点;

  4)判断Q中的交换机节点数目与有向图G中的交换机节点数目是否相等,若是,则有向图中无环;否则有向图中有环。

  具体的,无环有向图的有、无环判断过程如图3所示;有环有向图的有、无环判断过程如图4所示;

  进一步地,对于新、旧路径形成环路和未形成环路两种情形分别基于不同的更新方法,将新、旧路径上的待更新交换机按照不同的流表更新操作类型进行集合划分,所得交换机集合包括:待新增流表交换机集合Va、待修改流表交换机集合Vm和待删除流表交换机集合Vd。其中,将新路径和旧路径开始出现分叉处的交换机记为入口交换机,将新、旧路径开始汇合处的交换机记为出口交换机。待新增流表交换机集合Va包括:新路径上入口交换机的后一个交换机、出口交换机以及二者之间的所有交换机;待修改流表交换机集合Vm包括:入口交换机;待删除流表交换机集合Vd包括,旧路径上从入口交换机的后一个交换机、出口交换机以及二者之间的所有交换机。

  但是对于新、旧路径形成环路时,上述待新增流表交换机集合Va进一步被划分为新路径环路交换机集合Vnc和新路径非环路交换机集合Vn;其中,新路径环路交换机集合Vnc包括:新、旧路径所形成的环路中属于新路径的交换机;新路径非环路交换机集合Vn包括:新路径上入口交换机的后一个交换机、出口交换机以及二者之间除了已存在于Vnc中的交换机之外的所有交换机。

  具体的,下面结合图示进行说明:

  如图5所示为新、旧路径未形成环路时的传输示意图,其中,源交换机为S1,目的交换机为S7,入口交换机为S2,出口交换机为S6,实线箭头表示新路径中数据的传输方向,虚线箭头表示旧路径中数据的传输方向。将新、旧路径上的待更新交换机按照不同的流表更新操作类型进行集合划分,得到如下交换机集合:

  待新增流表交换机集合Va:需要进行新增流表的交换机全部在新路径上,从新路径上的入口交换机后一个交换机开始到出口交换机之间的都为需要新增转发流表的交换机,需要注意的是这里是闭区间,包括起、始交换机;本实施例中,Va={S4,S5,S6}。

  待修改流表交换机集合Vm:入口交换机为需要修改流表的交换机;本实施例中,Vm={S2}。

  待删除流表交换机集合Vd:需要删除流表的交换机为旧路径上的交换机,从旧路径上的入口交换机后一个交换机开始到出口交换机都为需要删除旧流表的交换机,需要注意的是这里是闭区间,包括起、始交换机;本实施例中,Vd={S3,S6}。

  除上述交换机集合之外,上述传输示意图中剩余的交换机组成保留流表交换机集合Vr,具体包括:源交换机到入口交换机前一个交换机之间的交换机、出口交换机后一个交换机到目的交换机之间的交换机,需要注意的是闭区间,包括源交换机、入口交换机前一个交换机、出口交换机后一个交换机和目的交换机,这类交换机上的流表项不用进行修改操作;本实施例中,Vr={S1,S7}。

  如图6所示为新、旧路径形成环路时的传输示意图,其中,源交换机为S1,目的交换机为S6,入口交换机为S1,出口交换机为S6,实线箭头表示新路径中数据的传输方向,虚线箭头表示旧路径中数据的传输方向,将新、旧路径上的待更新交换机按照不同的流表更新操作类型进行集合划分,得到如下交换机集合:

  待新增流表交换机集合Va:需要进行新增流表的交换机全部在新路径上,从新路径上的入口交换机后一个交换机开始到出口交换机之间的都为需要新增转发流表的交换机,需要注意的是这里是闭区间,包括起、始交换机;本实施例中,Va={S4,S5,S3,S6}。此时,需要将待新增流表交换机集合Va进一步被划分为新路径环路交换机集合Vnc和新路径非环路交换机集合Vn;其中,新路径环路交换机集合Vnc中的交换机表示新、旧路径形成的环路中属于新路径方向的交换机;本实施例中,Vnc={S5,S3}。新路径非环路交换机集合Vn中的交换机表示新路径上入口交换机开始到出口交换机之间除了环路交换机之外的交换机集合,这里是闭区间,包括起、始交换机。本实施例中,Vn={S4,S6}。

  待修改流表交换机集合Vm:与新、旧路径未形成环路时情形相同,入口交换机为需要修改流表的交换机;本实施例中,Vm={S1}。

  待删除流表交换机集合Vd:旧路径上除了入口交换机之外所有需要删除流表的交换机;本实施例中,Vd={S2,S3,S5,S6}。

  对于新、旧路径形成环路和未形成环路两种情形,完成新、旧路径上的待更新交换机的集合划分后,分别按照对应的顺序对其中各交换机的流表进行一致性更新,具体的:

  (1)当新、旧路径未形成环路时,对所得各交换机集合中各交换机中的流表进行一致性更新的方法包括三个阶段,具体为:

  待新增流表交换机更新阶段:向待新增流表交换机集合Va中的各交换机下发对应数据流转发流表。具体的,该阶段是流表更新的开始阶段,控制器首先向待新增流表交换机中下发对应的数据流转发流表,但是此时这些交换机中流表项并不会挥发挥作用,因为此时入口交换机中还是原来的旧规则,数据包还是按照旧路径进行传输,因此不会有对应的数据包进入新路径使新路径中待新增流表交换机中的流表项产生作用。

  待修改流表交换机更新阶段:待Va中所有交换机更新完毕后,修改待修改流表交换机集合Vm中交换机的流表,将该流表中原来输出方向为旧路径的流表项的输出方向修改为新路径。具体的,在上一个阶段中所有交换机更新完毕后,进入待修改流表交换机更新阶段。此时控制器修改入口交换机中流表,将入口交换机中原来输出方向为旧路径的流表项的输出方向修改为新路径。此时新路径开始生效,进入入口交换机的数据包不再从旧路径进行传输,修改入口交换机流表之前进入的数据包继续沿着旧路径进行传输,因此实现了数据包在新路径和旧路径上并行传输。由于控制器修改交换机中的流表需要一定时间,因此在这一过程中会有少许数据包上传至控制器,直至入口交换机中流表修改完成后,再将其下发至新路径进行传输。

  待删除流表交换机更新阶段:待Vm中的交换机更新完毕后,删除待删除流表交换机集合Vd中各交换机中对应的流表;其中,在删除交换机中对应的流表之前,判断该交换机上的数据包是否传输完成,待交换机上的数据包传输完成后,删除该交换机中对应的流表。具体的,入口交换机更新完成后,新路径开始生效,此时需要进行旧路径上交换机流表的删除。考虑到原来的数据包在旧路径上传输需要一定的时间,因此需要等待这些数据包都传输完成再删除对应的流表。

  (2)当新、旧路径形成环路时,对所得各交换机集合中各交换机中的流表进行一致性更新的方法包括两个阶段,具体为:

  待新增流表交换机和待删除流表交换机更新阶段:对新路径非环路交换机集合Vn中的各交换机下发对应数据流转发流表,并删除待删除流表交换机集合Vd中各交换机中对应的流表,待Vd中各交换机完成更新后,对新路径环路交换机集合Vnc中的各交换机下发对应数据流转发流表;其中,在删除交换机中对应的流表之前,判断该交换机上的数据包是否传输完成,待交换机上的数据包传输完成后,删除该交换机中对应的流表。具体的,为了消除环路的影响需要先更新旧路径上的流表,确保旧路径上的数据包正常传输,整个路径被环路交换机划分为若干部分。开始时数据包在入口交换机处上传至控制器缓存,可以同时对新路径非环路交换机集合中的交换机下发流表和对旧路径流表进行实时删除,此时新路径上下发的流表规则不会生效,且不会影响旧路径上数据包的传输。每当旧路径更新到一个环路交换机部分时,当该环路部分的交换机旧流表规则完成更新之后,再对新路径环路交换机集合中的交换机下发新的流表转发规则。当这个阶段结束时,旧路径已完成更新,新路径上除入口交换机之外均已完成流表更新。

  待修改流表交换机更新阶段:当上一阶段完成更新后,修改待修改流表交换机集合Vm中交换机的流表,将该流表中原来输出方向为旧路径的流表项的输出方向修改为新路径。

  具体的,在这个阶段修改入口交换机,此时新路径开始生效,并将上传至控制器的数据包下发至入口交换机进行转发,此时数据包将沿着新路径进行传输。由于入口交换机在整个更新流程中处于最后阶段,在入口交换机之前数据包都会上传至控制器,因此在新、旧路径有环时会上传较多的数据包到控制器。

  需要说明是的是,新、旧路径形成环路和未形成环路两种情况下,上述更新待删除流表交换机集合中各交换机的流表的方法,包括:

  对于待删除流表交换机集合中的交换机,开始每隔查询交换机上流表中的计数器数值,若流表中计数器数值与上一次的查询到的计数器数值相等,则判断为数据包在该交换机上已经传输完成,删除该交换机上的对应的流表;重复上述过程,直至待删除流表交换机集合中各交换机的流表均更新完毕;其中,待删除流表交换机集合中的交换机构成待删除流表链路,Tmin为待删除流表链路的最小时延,n为待删除流表链路上路径的条数。通过逐个检测交换机上数据包的传输情况,若交换机上的数据包传输完成则及时的删除对应的流表,有助于减少整体更新时间。

  进一步地,根据待删除流表链路时延LD={tdi},可以算出入口交换机到出口交换机之间的总时延为链路最短时延为Tmin,检查交换机时间间隔为需要说明的是,优选地,每台交换机需最小检测两次来确定是否该交换机上出数据包已经传输完成,因此理论上最短更新时间为2Tmin,而网络域内的最大端到端传输时延Tmax≥Ttotal,因此除了特殊情况外,上述更新待删除流表交换机集合中各交换机的流表的方法所需的更新时间小于端到端的最大传输时延,且更新链路越长,节省的更新时间越多。若该方案的更新时间长于端到端最大传输时延,但是能够保证出数据包传输完,而只等待端到端的最大传输时延便删除流表,则此时说明还有数据包未输完。因此通过链路实时检测更新的方法除了能够缩短更新时间外,还可以保证旧路径上的数据包传输完全。

  S4、判断所有需要进行流表更新的链路是否均完成更新,若是,则操作结束;否则,转至步骤S2。

  实施例2、

  一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明实施例1提供的一种软件定义网络中流表一致性更新方法。具体的操作同实施例1,这里不再赘述。

  本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

《一种软件定义网络中流表一致性更新方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)