一种sdn流表更新方法及装置的制造方法

文档序号:10572593阅读:328来源:国知局
一种sdn流表更新方法及装置的制造方法
【专利摘要】本发明实施例提供了一种SDN流表更新方法及装置,根据新数据转发规则,确定每个交换机节点对应的新流表;判断交换机节点采用所述新流表进行更新后,对应的数据转发路径中是否会产生环路,将不会产生环路的交换机节点确定为待更新交换机节点;同时向待更新交换机节点下发与待更新交换机节点对应的新流表;判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与新数据转发路径一致,如果否,返回继续对未更新的交换机节点进行更新。应用本发明实施例,通过同时向不会产生环路的多个交换机节点下发对应新流表进行更新,缩短了流表的更新时间,提高了流表更新的效率。
【专利说明】
一种SDN流表更新方法及装置
技术领域
[0001]本发明涉及网络通信技术领域,特别涉及一种SDN流表更新方法及装置。
【背景技术】
[0002]软件定义网络(Software Defined Network,简称SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式,SDN通过将控制平面集中到远端的一个逻辑控制器上,实现了数据平面和控制平面的解耦。其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。但是,在SDN的运行过程中,网络状态时常发生变化,例如路由切换、流量均衡、网络设备维护等等;在网络状态发生变化时,网络控制器需要对网络中的交换机节点进行流表更新,并且,在进行流表更新时,需要保证在对应流表更新前与流表更新后的数据转发路径不产生环路。
[0003]目前,常用的SDN流表更新方法有双向更新,如图1所示,为双向更新的过程示意图,灰色表示对应的交换机节点已经更新为新流表;整个更新过程为,分别从旧数据转发路径的前端以及新数据转发路径的后端向中间逐渐更新,每一次仅能更新两个节点,需要经过6次才能更新完图1所示的交换机节点,虽然也能够保证更新前与更新后的数据转发路径中不产生环路,但可知的是,在SDN网络中,有大量的交换机节点,若按照双向更新的方式对网络中的交换机节点进行流表更新,更新完网络中的交换机节点对应流表需要耗费较长的时间,流表更新效率较低。

【发明内容】

[0004]本发明实施例的目的在于提供一种SDN流表更新方法及装置,以缩短流表的更新时间,提高流表更新效率。
[0005]为达到上述目的,本发明实施例公开了一种SDN流表更新方法,应用于网络控制器,所述方法包括步骤:
[0006]根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点;
[0007]针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路;
[0008]如果否,将所述交换机节点确定为待更新交换机节点;
[0009]针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新;
[0010]判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,返回所述针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路步骤继续执行。
[0011]可选的,所述针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,包括:
[0012]针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0013]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0014]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0015]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0016]可选的,所述方法还包括:
[0017]判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令;
[0018]如果没有接收到,将所述待更新交换机节点确定为未更新的交换机节点。
[0019]为达到上述目的,本发明实施例提供一种SDN流表更新装置,应用于网络控制器,所述装置包括:
[0020]第一确定模块,用于根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点;
[0021 ]第一判断模块,用于针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,如果否,触发第二确定模块;
[0022]第二确定模块,用于将不会产生环路的交换机节点确定为待更新交换机节点;
[0023]发送模块,用于针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新;
[0024]第二判断模块,用于判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,调用所述第一判断模块。
[0025]可选的,所述第一判断模块,具体用于:
[0026]针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0027]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0028]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0029]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0030]可选的,所述装置还包括:
[0031]第三判断模块,用于判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令,如果没有接收到,触发第三确定模块;
[0032]第三确定模块,用于将所述待更新交换机节点确定为未更新的交换机节点。
[0033]本发明实施例提供了一种SDN流表更新方法及装置,根据新数据转发规则,确定每个交换机节点对应的新流表;判断交换机节点采用所述新流表进行更新后,对应的数据转发路径中是否会产生环路,将不会产生环路的交换机节点确定为待更新交换机节点;同时向待更新交换机节点下发与待更新交换机节点对应的新流表;判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与新数据转发路径一致,如果否,返回继续对未更新的交换机节点进行更新。应用本发明实施例,通过同时向不会产生环路的多个交换机节点下发对应新流表进行更新,缩短了流表的更新时间,提高了流表更新的效率。
【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为采用双向更新方法对网络中交换机节点流表的更新过程示意图;
[0036]图2为本发明实施例提供的一种SDN流表更新方法的流程示意图;
[0037]图3为本发明实施例提供的一种具体的流表更新过程示意图;
[0038]图4为本发明实施例提供的另一种SDN流表更新方法的流程示意图;
[0039]图5为本发明实施例提供的另一种具体的流表更新过程示意图;
[0040]图6为本发明实施例提供的一种SDN流表更新装置的结构示意图;
[0041]图7为本发明实施例提供的另一种SDN流表更新装置的结构示意图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]下面结合具体实施例,对本发明做详细的说明。
[0044]需要说明是,本发明实施例所提供的一种SDN流表更新方法及装置,优选适用于网络控制器。
[0045]图2为本发明实施例提供的一种SDN流表更新方法的流程示意图,可以包括:
[0046]SlOl:根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点;
[0047]本领域技术人员可以理解的是,软件定义网络(Software Defined Network,简称SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式,SDN通过将控制平面集中到远端的一个逻辑控制器上,实现了数据平面和控制平面的解耦。其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
[0048]流表,其实可被视作是OpenFlow对网络设备的数据转发功能的一种抽象。流表是由很多个流表项组成,每一个流表项都对应一个数据转发规则,也就是数据的转发路径;因此,通常所说的对流表进行更新其实是对流表中的流表项进行更新。
[0049]不难理解的是,在SDN中包含有多个交换机节点,而每一个交换机节点都有对应自己的流表,通过这些流表所记录的数据转发路径可以明确的对数据进行传输。由于各个交换机节点的资源需求以及网络状态的实时变化,例如路由切换、流量均衡、网络设备维护等等;在网络状态发生变化时,网络控制器需要对网络中的交换机节点进行流表更新;网络控制器将通过对这些变化的信息进行采集、处理,将获得一个针对该变化信息的新数据转发路径。再根据这一新数据转发路径,确定出新数据转发路径中每一个交换机节点对应的新流表,以使得交换机节点接收到对应的新流表后,根据新流表中的数据转发路径,将数据发送给指向的交换机节点。该新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点。不难理解,起始交换机节点也就是开始发送数据的交换机节点,可以理解为它包含数据源;终止交换机节点也就是最后接收数据的交换机节点。旧数据转发路径就是控制器在没有获得针对该变化信息的新数据转发路径之前,网络中现有的数据转发路径。
[0050]示例性的,以图3中的新、旧数据转发路径为例进行说明,其中,旧数据转发路径为:0?402403404405406407408409—104? I ;新数据转发路径为:01—03—02—04—07406405409408410—11;数据在新、旧数据转发路径中都是由交换机节点01开始发送,传至交换机节点11终止。新数据转发路径中的起始交换机节点和终止交换机节点分别为旧数据转发路径中的起始交换机节点和终止交换机节点。但需要说明的是,由于交换机节点11为终止交换机节点,因此,交换机节点11对应的流表不需要更新;或者认为交换机节点11没有对应的流表。
[0051 ]根据新数据转发路径01~>03~>02~>04~>07~>06~>05~>09~>08~>10~>11可以确定交换机节点01-10分别对应的新流表01-10;可以知道的是,新流表01记录的部分数据转发路径为:01—03、新流表02记录的部分数据转发路径为:02—04、新流表03记录的部分数据转发路径为:03—02、新流表04记录的部分数据转发路径为:04—07、新流表05记录的部分数据转发路径为:05—09、新流表06记录的部分数据转发路径为:06—05、新流表07记录的部分数据转发路径为:07—06、新流表08记录的部分数据转发路径为:08—10、新流表09记录的部分数据转发路径为:09—08、新流表10记录的部分数据转发路径为:10—11。
[0052 ] S102:针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,如果否,执行S103;
[0053]这里所说的转发路径中产生环路是指,如果采用交换机节点对应的新流表所记录的部分数据转发路径进行数据传输的话,数据会在交换机节点间反复不停地进行转发。部分数据转发路径是指对应交换机节点传输数据流向。
[0054]具体的,针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,可以:
[0055]针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0056]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0057]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0058]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0059]示例性的,以图3中的新数据转发路径和旧数据转发路径为例进行说明,根据上述的判定规则可以确定:
[0060]交换机节点01在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中没有部分数据转发路径指向交换机节点01,其实就是旧数据转发路径中没有部分数据转发路径指向交换机节点01;因此,可以确定交换机节点01采用对应新流表进行更新后,所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0061 ]交换机节点02、04、05、08和10对应新流表分别记录的部分数据转发路径分别为:02404、04—07、05409、08410和10—11,分别指向交换机节点04、07、09、10和11,并且在旧数据转发路径中,交换机节点04在交换机节点02之后,交换机节点07在交换机节点04之后,交换机节点09在交换机节点05之后,交换机节点10在交换机节点08之后,交换机节点11在交换机节点10之后;因此,可以确定交换机节点02、04、05、08和10分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0062]而交换机节点03、06、07和09对应的新流表所记录的部分数据转发路径分别为:03402、06405、07—06和09—08,分别指向交换机节点02、05、06、和08,但在旧数据转发路径中,交换机节点02在交换机节点03之前,交换机节点05在交换机节点06之前,交换机节点06在交换机节点07之前,交换机节点08在交换机节点09之前;因此,可以确定交换机节点03、
06、07和09分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中将会产生环路。
[0063]综上可知,交换机节点01、02、04、05、08和10分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。而交换机节点03、06、07和09分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中将会产生环路。
[0064]值得一提的是,实际应用时,在第I次判断交换机节点采用各自对应的新流表进行更新后的数据转发路径中是否会产生环路时,通常采用深度优先搜索算法(Depth-First-Search,简称DFS)来检测交换机节点采用各自对应的新流表进行更新后的数据转发路径中是否会产生环路。
[0065]采用上述深度优先搜索算法来检测交换机节点采用各自对应的新流表进行更新后的数据转发路径中是否会产生环路,首先将交换机节点定义为三种状态:unknown(未更新),seen(已更新),visited(待更新),其中,visited表示该交换机节点对应的新流表和旧流表同时存在。对网络中状态为unknown的交换机节点,测试该交换机节点采用各自对应的新流表进行更新后的数据转发路径中是否会产生环路,如果不会产生环路,将该交换机节点的状态更新为visited,如果该交换机节点会产生环路,那么,该交换机节点的状态不变。按照此规则,测试完网络中所有交换机节点,确定出所有的状态为visited的交换机节点。
[0066]示例性的,第I次更新前,假设所有交换机节点的状态均为unknown,此时,测试交换机节点01,交换机节点01采用新流表01:01—03进行更新后形成的数据转发路径(局部)为:01—03,交换机节点01对应的旧数据转发路径(局部)为:01402403—04,可知,交换机节点01采用新流表01进行更新后,数据转发路径不会产生环路,那么,将交换机节点01的状态更新为visi ted。测试交换机节点02,交换机节点02采用新流表02:02—04进行更新后形成的数据转发路径(局部)为:02—04,交换机节点02对应的旧数据转发路径(局部)为:01 —
02—03—04,可知,交换机节点02采用新流表02进行更新后,数据转发路径不会产生环路,那么,将交换机节点02的状态更新为vi si ted。测试交换机节点03,交换机节点03采用新流表03:03—02进行更新后形成的数据转发路径(局部)为:03—02,交换机节点03对应的旧数据转发路径(局部)为:01402403—04,可知,交换机节点03采用新流表03进行更新后,数据转发路径将会产生环路,那么,该交换机节点03的状态不变仍为unknown。按照此规则,测试完网络中所有交换机节点,不难确定出状态为visited的交换机节点有01、02、04、05、08和10。
[0067]交换机节点01、02、04、05、08和10的状态均为“8丨七6(1,那么,交换机节点01、02、
04、05、08和10分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。而交换机节点03、06、07和09的状态不变仍为unknown,因此,交换机节点03、06、07和09分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中将会产生环路。
[0068]需要说明的是,上述采用DFS对网络中的交换机节点进行测试仅为本发明实施例提供的一种具体的技术实现,并不构成对本申请的限定。
[0069]S103:将所述交换机节点确定为待更新交换机节点;
[0070]示例性的,交换机节点01、02、04、05、08和10分别采用各自对应的新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。因此,将交换机节点01、02、04、05、08和10分别确定为待更新交换机节点01、02、04、05、08和10。
[0071]S104:针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新;
[0072]控制器将待更新交换机节点01对应的新流表01、待更新交换机节点02对应的新流表02以及更新交换机节点04、05、08和10分别对应的新流表04、05、08和10同时发送给待更新交换机节点01、02、04、05、08和10。下面将以待更新交换机节点01为例对交换机节点的流表更新过程进行说明,如图3中所示的新数据转发路径以及旧数据转发路径可以确定的是,待更新交换机节点01在旧数据转发路径中对应的部分数据转发路径是指向交换机节点02的,而在新数据转发路径中对应的部分数据转发路径是指向交换机节点03的,待更新交换机节点01接收到对应的新流表01后,将待交换机节点01对应在旧数据转发路径中的部分数据转发路径01—02删除,替换为新流表01对应的部分数据转发路径01—03,完成对待更新交换机节点OI的流表更新。待更新交换机节点02、04、05、08和1均按照此规则完成各自对应的流表更新,并且待更新交换机节点01、02、04、05、08和10是同时进行各自对应的流表更新。
[0073]待更新交换机节点01、02、04、05、08和10对应的流表进行更新后形成的数据转发路径如图3中的第I次更新后数据转发路径所示。图3所示的第I次更新后数据转发路径中灰色对应的交换机节点表示已经更新为新流表,直观的可以得知,图3中第I次更新后数据转发路径中,交换机节点O1、02、04、05、08和1已经更新为对应的新流表。
[0074]S105:判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,执行S102。
[0075]交换机节点01-10中经过第I次更新后,交换机节点01、02、04、05、08和10已经更新为对应的新流表,交换机节点一旦更新为对应的新流表后,该节点将不再作为未更新交换机节点。如图3所示,显然图3中第I次更新后数据转发路径与新数据转发路径不一致,因此,需要返回步骤S102继续执行。此时,已知的是交换机节点01-10中还有交换机节点03、06、07和09的流表未进行更新。
[0076]按照上述的判定规则,可以确定交换机节点03和06在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中均没有部分数据转发路径指向交换机节点03和06;因此;可以确定交换机节点03和06分别采用各自对应新流表进行更新后,所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0077]还可以确定交换节点09在未进行流表更新前,图3中第I次更新后数据转发路径中指向交换机节点09的交换机节点05的流表为新流表;因此,交换机节点09采用新流表09进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0078]而交换机节点07对应新流表07记录的部分数据转发路径为:07—06,而在旧数据转发路径中,交换机节点06在交换机节点02之前,因此,交换机节点07采用对应的新流表07进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中将会产生环路。
[0079]综上可知,可将交换机节点03、06和09确定为待更新交换机节点,之后,同时向待更新交换机节点03、06和09下发对应的新流表03、06和09,以使得待更新交换机节点03、06和09分别接收到新流表03、06和09后,采用各自对应的新流表03、06和09进行更新。待更新交换机节点O1、02、04、05、08和10对应的流表进行更新后的形成的数据转发路径如图3中的第2次更新后数据转发路径所示。直观的可以得知,图3中第2次更新后数据转发路径中,交换机节点01、02、03、04、05、06、08、09和10已经更新为对应的新流表。图3所示的第2次更新后数据转发路径中灰色对应的交换机节点表示已经更新为新流表,直观的可以得知,图3中第2次更新后数据转发路径中与图3中第I次更新对应的数据转发路径相比较,交换机节点
03、06和09已经更新为新流表。
[0080]不难发现,图3中第2次更新后数据转发路径与新数据转发路径不一致,图3中第2次更新后数据转发路径中交换机节点07流表未进行更新,需要再次返回步骤S102继续执行。按照上述的判定规则,不难确定交换机节点07在未进行流表更新前,交换机节点07对应新流表07记录的部分数据转发路径所指向的交换机节点06的流表为新流表;因此,可以确定交换机节点07采用所述新流表07进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。将交换机节点07确定为待更新交换机节点,之后,向待更新交换机节点07下发对应的新流表07,待更新交换机节点07接收到新流表07后,采用新流表07进行更新。
[0081]待更新交换机节点07对应的流表进行更新后的形成的数据转发路径如图4中的第3次更新后数据转发路径所示。图3所示的第3次更新后数据转发路径中灰色对应的交换机节点表示已经更新为新流表,直观的可以得知,图3中第3次更新后数据转发路径中,交换机节点01-10都已经更新为对应的新流表。
[0082]比较可知,图3中第3次更新后数据转发路径与新数据转发路径一致。此时,已完成对交换机节点1-1 O对应流表的更新。
[0083]通过图3所示的对交换机节点流表的更新过程不难得知,在交换机节点数量以及新、旧数据转发路径相同的情况下,与现有技术中的双向更新需要经过6次才能完成更新相比较,本发明实施例提供的流表更新方法仅需要3次就可完成流表更新,每次更新的时间相同的情况下,有效的缩短了流表的更新时间,提高流表更新的效率。
[0084]值得强调的是,图3仅为本发明实施例提供的具体示例,图3所示内容并不对本申请构成限定。
[0085]应用图2提供的实施例,有效的缩短了流表的更新时间,提高流表更新的效率。
[0086]在图2提供的实施例基础上,本发明实施例还提供了一种SDN流表更新方法,如图4所示,应用于网络控制器,所述方法还可以包括步骤:S106和S107;
[0087]S106:判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令;
[0088]可以理解的是,在网络中发送或接收数据时,由于网络处于一个动态的环境中,例如路由切换、流量均衡、网络设备维护等等,往往会造成数据在发送或接收的时候发生故障;同样的,网络控制器下发交换机节点对应的新流表或交换机流表接收对应新流表进行更新时也可能会出现故障。
[0089]为了准确的判断交换机节点是否完成流表的更新,在实际的应用中,网络控制器可以向网络中的交换机节点下发对应的新流表,而交换机节点更新为新流表后,交换机节点会向网络控制器反馈一个针对新流表更新完成的指令,用来提醒网络控制器已经采用接收到的对应新流表完成了更新。因此,可以通过判断网络控制器是否接收到所述待更新交换机节点反馈的针对新流表的更新完成指令来确定该交换机节点的更新状态。
[0090]考虑到网络中的指令下发以及指令接受都有一定时延,本发明实施例通过判断预设时间段内网络控制器是否接收到待更新交换机节点反馈的针对新流表的更新完成指令,来确定对应交换机节点的流表更新状态。例如,取预设时间为0.1秒,网络控制器下发待更新交换机节点04对应的新流表04时开始计时,判断在0.1秒内是否接收到待更新交换机节点04反馈的针对新流表04的更新完成指令,如果接受到,表明待更新交换机节点04已经完成对应流表的更新,如果没有接收到,那么表明待更新交换机节点04没有完成对应流表的更新,即本次对待更新交换机节点04流表更新失败。
[0091]需要说明的是,预设时间段取0.1秒仅为本发明实施例提供的一种具体示例,本申请不对预设时间段的大小做明确的限定。
[0092]S107:在没有接收到所述更新完成指令的情况下,将所述待更新交换机节点确定为未更新的交换机节点。
[0093]示例性的,若网络控制器在0.1秒内没有接收到待更新交换机节点04反馈的针对新流表04的更新完成指令,表明本次对待更新交换机节点04流表更新失败,因此,图5中第I次更新后数据转发路径中,待交换机节点04没有采用对应的新流表04进行更新,待交换机节点04依然为旧数据转发路径中对应的部分数据转发路径,指向交换机节点05,因此,待更新交换机节点04重新作为未更新的交换机节点04,继续上述操作步骤;按照上述的判定规贝1J,可以确定交换机节点04将在第3次更新的时候完成对应的流表更新,如图5中的第2次更新后数据转发路径所示,第2次更新后数据转发路径中部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点02的流表已经更新为新流表02,因此,交换机节点04采用所述新流表04进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。按照上述步骤,经过3次更新,可以对流表更新时发生故障的交换机节点对应流表再次进行更新,降低了因一个待更新交换机进行流表更新发生故障而导致更新中断的概率。
[0094]同样需要说明的是,图5仅为本发明实施例提供的具体示例,图5所示内容并不对本申请构成限定。
[0095]应用图4提供的实施例,通过判断在预设时间段内是否接收到待更新交换机节点反馈的针对新流表的更新完成指令,来确定该待更新交换机节点的流表更新状态,可以对未完成流表更新的待更新交换机节点继续进行更新的步骤,有效的降低了因一个待更新交换机进行流表更新发生故障而导致更新中断的概率。
[0096]与图2方法实施例对应的,本发明实施例提供了一种SDN流表更新装置,如图6所示,所述装置可以包括:
[0097]第一确定模块201,用于根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点;
[0098]第一判断模块202,用于针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,如果否,触发第二确定模块203;
[0099]实际应用中,所述第一判断模块202,具体用于:
[0100]针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0101]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0102]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路;
[0103]或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。
[0104]第二确定模块203,用于将不会产生环路的交换机节点确定为待更新交换机节点;
[0105]发送模块204,用于针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新;
[0106]第二判断模块205,用于判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,调用第一判断模块202。
[0107]应用图6提供的实施例,缩短了流表的更新时间,提高流表更新的效率。
[0108]在图6提供的实施例基础上,与图4方法实施例对应的,本发明实施例还提供了一种SDN流表更新装置,应用于网络控制器,如图7所示,所述装置还可以包括:
[0109]第三判断模块206,用于判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令,如果没有接收到,触发第三确定模块207;
[0110]第三确定模块207,用于将所述待更新交换机节点确定为未更新的交换机节点。
[0111]应用图7提供的实施例,通过判断在预设时间段内是否接收到待更新交换机节点反馈的针对新流表的更新完成指令,来确定该待更新交换机节点的流表更新状态,可以对未完成流表更新的待更新交换机节点继续进行更新的步骤,有效的降低了因一个待更新交换机进行流表更新发生故障而导致更新中断的概率。
[0112]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0113]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0114]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
[0115]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种SDN流表更新方法,应用于网络控制器,其特征在于,所述方法包括步骤: 根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点; 针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路; 如果否,将所述交换机节点确定为待更新交换机节点; 针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新; 判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,返回所述针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路步骤继续执行。2.根据权利要求1所述的方法,其特征在于,所述针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,包括: 针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令; 如果没有接收到,将所述待更新交换机节点确定为未更新的交换机节点。4.一种SDN流表更新装置,应用于网络控制器,其特征在于,所述装置包括: 第一确定模块,用于根据起始交换机节点与终止交换机节点间的新数据转发路径,确定所述新数据转发路径中每个交换机节点对应的新流表,其中,所述新数据转发路径的起始交换机节点和终止交换机节点,分别为旧数据转发路径的起始交换机节点和终止交换机节点; 第一判断模块,用于针对每个未更新的交换机节点,判断所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中是否会产生环路,如果否,触发第二确定模块; 第二确定模块,用于将不会产生环路的交换机节点确定为待更新交换机节点; 发送模块,用于针对每个待更新交换机节点,同时向所述待更新交换机节点下发与所述待更新交换机节点对应的新流表,以使得每个待更新交换机节点接收到各自对应新流表后,采用各自对应的新流表进行更新; 第二判断模块,用于判断由当前所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径是否与所述新数据转发路径一致,如果否,调用所述第一判断模块。5.根据权利要求4所述的装置,其特征在于,所述第一判断模块,具体用于: 针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中是否有部分数据转发路径指向所述交换机节点;如果没有,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点,是否在所有交换机节点的流表分别记录的部分数据转发路径中所述交换机节点之前;如果不在,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所有交换机节点的流表分别记录的部分数据转发路径中所有指向所述交换机节点的部分数据转发路径对应的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路; 或,针对每个未更新的交换机节点,判断所述交换机节点在未进行流表更新前,所述交换机节点对应新流表记录的部分数据转发路径所指向的交换机节点的流表是否为新流表;如果是,表示所述交换机节点采用所述新流表进行更新后,由所有交换机节点的流表分别记录的部分数据转发路径组成的整体数据转发路径中不会产生环路。6.根据权利要求4所述的装置,其特征在于,所述装置还包括: 第三判断模块,用于判断预设时间段内是否接收到所述待更新交换机节点反馈的针对所述新流表的更新完成指令,如果没有接收到,触发第三确定模块; 第三确定模块,用于将所述待更新交换机节点确定为未更新的交换机节点。
【文档编号】H04L12/751GK105933236SQ201610531621
【公开日】2016年9月7日
【申请日】2016年7月7日
【发明人】刘江, 杨帆, 谢人超, 黄韬, 胡晓露, 张娇, 潘恬
【申请人】北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1