一种基于软件定义网络的保持流表更新一致性的方法

文档序号:7865041阅读:172来源:国知局
专利名称:一种基于软件定义网络的保持流表更新一致性的方法
技术领域
本发明涉及互联网领域,特别涉及一种基于软件定义网络的保持流表更新一致性的方法。
背景技术
基于OpenFlow协议的软件定义网络(SDN)技术,其核心特点是实现数据平面和控制平面的解耦数据平面由OpenFlow交换机、主机终端等组成;控制平面则是由控制器对全网进行集中式控制。具体地,各个交换机根据本地的流表来进行数据包的转发,而具体的流表则由控制器控制;另外,如果交换机遇到新的数据包,需要将其通过控制平面上传给控制器,由控制器决定如何处理。这样,控制器通过对OpenFlow网络中各个交换机中流表的控制,实现对整个数据平面的数据转发。 在SDN网络中,各种网络配置和网络事件都有可能引起交换机中的流表更新,现有的技术方案是从控制器向多个交换机分别写入对应流表;那么,这些交换机中的流表将在不同时间点上进行更新,使得网络中某一时间段内同时存在新旧两套流表规则,从而可能导致数据包的丢失或者错误转发。然而,对于如何保持流表更新的一致性,目前尚未有成熟且大规模部署的技术方案。所谓的流表更新一致性是指SDN网络中的流表从一套旧流表更新为一套新流表,每一个数据包在传输过程中,或者一直接受旧流表的控制,或者一直接受新流表的控制,不能依次接受旧流表、新流表的控制。目前,研究者针对该问题主要提出两种技术方案a)基于虚拟局域网(VLAN)技术的流表更新一致性方法核心思想是利用VLAN技术来区分新旧两套流表。在SDN网络中,首先将旧流表控制的数据包打上一个VLAN标签,例如VLAN=O ;其次,在各个交换机中写入新流表时,规定新流表只能处理具有另一个VLAN标签的数据包,例如将新VLAN标签设置为VLAN=I ;再次,当所有交换机都成功写入带有VLAN=I的新流表后,将网络中数据包的VLAN标签从O更新到1,从而使得新的流表生效,旧流表失效。旧流表失效后,再通过控制器进行逐一删除。总之,该方法将新旧两套流表与2个VLAN标签分别对应,通过改变网络中数据包的VLAN标签来实现流表更新过程,并保证更新一致性。该方法有一个重要假设,通过控制器的一次指令即可实现相应数据包的VLAN标签更改。例如,所有数据包都是从第I个交换机进入,再向其他交换机传输。那么,只需在第I个交换机上进行数据包VLAN标签更改即可。b)基于中间流表的流表更新一致性方法核心思想是引入中间流表。首先,基于新旧两套流表,构造一套中间流表,将所有通过网络的数据包都上传给控制器缓存或者处理;然后,在各个交换机中写入中间流表,并等待一个全网最长端到端网络延时;接着,在各个交换机中写入新流表,并将上传至控制器缓存或者尚未处理的数据包发回网络中,这样在一个全网最长端到端网络延时后,流表更新过程完成。由于引入中间流表,新旧两套流表不会同时出现在各个交换机上,这就保证了流表更新过程的一致性。在上述两种技术方案,方案I更新时间短,但是由于同时存在新旧两套流表而占用更多流表资源;另外,由于引入VLAN,方案I增加了网络管理的复杂度和工作量;方案2由于网络中任何时刻各个交换机中都只存在一套流表,因此流表资源消耗较少,但是需要较长的更新时间,另外,由于将网络流量上传给控制器处理或者缓存,对控制平面的带宽资源、控制器的负载有额外消耗。因此,随着SDN网络规模的扩大,现有技术仍有待于提高。

发明内容
针对现有技术的不足,本发明提出一种基于软件定义网络的保持流表更新一致性的方法,以达到在SDN网络中流表更新时不必利用VLAN技术,且可以缩短更新时间、减少控制平面负载的目的。本发明通过以下技术方案予以实现一种基于软件定义网络的保持流表更新一致性的方法,包括以下步骤·A :控制器分析流表中的新流表规则及旧流表规则,确定需要更新流表的交换机的集合;将所述需要更新流表的交换机分为初始交换机及后继交换机;并将需要进行更新的流表分为共同流表、待新增流表、待修改流表和待删除流表;B:在所述初始交换机中,各个交换机将其受更新流表过程影响的数据包,通过控制平面上传到控制器;C、控制器在所述后继交换机中写入待新增流表;D、控制器在等待一个全网端到端的延时后,在所述后继交换机中写入待修改流表,并删除待删除流表;E、控制器对所述初始交换机中的流表进行更新。所述共同流表为新流表和旧流表中相同的流表;所述待新增流表为控制器需要对新数据包制定新流表规则的流表;所述待修改流表为控制器需要改变已有数据包处理规则的流表;所述待删除流表是所述新流表规则生效后,控制器需要删除的旧流表规则中对应的流表。所述步骤A进一步包括按照数据包在网络中被不同的交换机处理的顺序,将所述需要更新流表的交换机分为初始交换机及后继交换机;其中所述初始交换机为各个数据包按照新流表规则处理时,经过的需要更新流表的交换机中的第一个交换机的集合;所述后继交换机为所述需要更新流表的交换机的集合中,不同于初始交换机的交换机集合。 所述步骤B进一步包括步骤BI :控制器发出控制命令;步骤B2 :所述初始交换机中各个交换机只保留共同流表对应的数据包,而将其他流表对应的数据包通过控制平面上传给控制器。所述步骤C进一步包括当控制器在所述后继交换机V2中写入待新增流表后,所述后继交换机中各个交换机分别向控制器返回一条成功信息。所述步骤D进一步包括当控制器在所述后继交换机中写入待修改流表并删除待删除流表之后,所述后继交换机中各个交换机分别向控制器返回一条成功信息。
所述步骤E进一步包括控制器向初始交换机中的各个交换机写入待新增流表、待修改流表,并删除待删除流表。所述步骤E进一步包括当控制器向初始交换机中的各个交换机写入待新增流表、待修改流表,并删除待删除流表后,所述初始交换机中各个交换机分别向控制器返回一条成功信息。本发明通过提供一种基于软件定义网络的保持流表更新一致性的方法,与基于VLAN技术的流表更新一致性方法相比,本发明没有使用VLAN标签,从而避免了额外网络管理复杂度;与基于中间流表的流表更新一致性方法相比,本发明没有将所有交换机中的数据包上传给控制器处理,从而减轻了控制平面负载;同时,本发明区分了待新增流表与待修改流表,通过先写入待新增流表,再写入待修改流表,在保证更新一致性的前提下缩短了整个流表更新时间。


图I为本发明的流程图。
具体实施例方式下面对于本发明所提出的一种基于软件定义网络的保持流表更新一致性的方法,结合附图和实施例详细说明。实施例I :本实施例提供一种基于软件定义网络的保持流表更新一致性的方法,如图I所示,包括以下步骤A :控制器对流表进行分析;包括控制器分析所述流表中的新流表规则及旧流表规则,确定需要更新流表的交换机的集合Vtl;将所述Vtl分为初始交换机V1及后继交换机V2 ;并将需要进行更新的流表分为共同流表、待新增流表、待修改流表和待删除流表;B :在所述初始交换机V1中,各个交换机将其受更新流表过程影响的数据包,通过控制平面上传到控制器;C、控制器在所述后继交换机V2中写入待新增流表;D、控制器在等待一个全网端到端的延时后,在所述后继交换机V2中写入待修改流表,并删除待删除流表;E、控制器对所述初始交换机V1中的流表进行更新。所述步骤A进一步包括所述共同流表为新流表和旧流表中相同的流表;所述待新增流表为控制器需要对新数据包制定新流表规则的流表;所述待修改流表为控制器需要改变已有数据包处理规则的流表;所述待删除流表是所述新流表规则生效后,控制器需要删除的旧流表规则中对应的流表。所述步骤A进一步包括按照数据包在网络中被不同的交换机处理的顺序,将所述V0分为初始交换机V1及后继交换机V2 ;其中所述初始交换机V1为各个数据包按照新流表规则处理时需要经过Vtl中的第一个交换机的集合;所述后继交换机V2为所述需要更新流表的交换机的集合Vtl中,不同于初始交换机V1的交换机集合;即^ U F2 = FqX Π F2 = 0。所述步骤B进一步包括步骤BI :控制器发出控制命令;步骤B2 :所述初始交换机V1中各个交换机只保留共同流表对应的数据包,而将其他流表对应的数据包通过控制平面上传给控制器。所述步骤C进一步包括当控制器在所述后继交换机V2中写入待新增流表后,所述后继交换机V2中各个交换机分别向控制器返回一条成功信息。所述步骤D进一步包括当控制器在所述后继交换机V2中写入待修改流表并删除待删除流表之后,所述后继交换机V2中各个交换机分别向控制器返回一条成功信息。 所述步骤E进一步包括控制器向初始交换机V1中的各个交换机写入待新增流表、待修改流表,并删除待删除流表。所述步骤E进一步包括当控制器向初始交换机V1中的各个交换机写入待新增流表、待修改流表,并删除待删除流表后,所述初始交换机V1中各个交换机分别向控制器返回一条成功信息。实施例2 本实施例从时序的角度详细描述本发明提出的技术方案。在h时刻,控制器已经完成以下步骤A :控制器对流表进行分析;包括控制器分析所述流表中的新流表规则及旧流表规则,确定需要更新流表的交换机的集合Vtl;将所述Vtl分为初始交换机V1及后继交换机V2 ;并将需要进行更新的流表分为共同流表、待新增流表、待修改流表和待删除流表;在该实施例中,V1中有2个交换机、V2中有2个交换机;从tQ时刻开始,流表更新过程如下B :从h时刻开始,控制器向V1中的2个交换机依次发送控制指令,令其将受流表更新过程影响的数据包通过控制平面上传给控制器处理A中的2个交换机分别从^士时刻开始,各个交换机只保留共同流表,而将其他流表对应的数据包上传给控制器。若ti〈t2,那么t2时刻之前,存在从V1中交换机流向V2中交换机的数据包;这个时间不同步现象不影响流表更新过程的一致性。本步骤结束时,这些上传给控制器的数据包,可以根据具体需要,或者缓存,或者由控制器直接处理。从t3时刻开始,V1中交换机上的相应数据包均上传给控制器。C :从t2时刻开始,控制器向V2中的2个交换机依次发送控制指令,以写入待新增流表;每个交换机在成功写入待新增流表后,分别向控制器返回一条成功信息。D :控制器等待一个全网端到端最长延时td,以使t2时刻之前从V1中交换机发出的数据包顺利传输。若控制器分别在t3、t4时刻接收到交换机V2中的2个交换机成功写入待新增流表的成功信息,那么在t5=max{t3, t4, t2+td}时亥Ij, V2中2个交换机上已写好待新增流表。由于V2中各个交换机上尚未更新流表,因此这些待新增流表写入后不会立即生效,并且新流表规则中除了共同流表Rtl之外的其他流表都不发挥作用。从t5时刻开始,控制器向V2中的2个交换机依次发送控制指令,以写入待修改流表、删除待删除流表。每个交换机在成功完成上述操作之后,分别向控制器返回一条成功信息。若控制器分别在t6、t7时亥lj(t6〈t7)接收到成功信息,那么在t7时刻,V2中2个交换机上均完成了新流表规则的更新过程。本步骤结束时,V2中各个交换机上流表更新过程已结束。E :从t7时刻开始,在V1中进行流表更新。具体地,控制器向V1中的2个交换机依次发送控制指令,写入待新增流表、待修改流表,删除待删除流表。每个交换机在成功完成上述操作之后,分别向控制器返回一条成功信息。若控制器分别在t8、t9时刻(t8〈t9)接收到成功信息,那么在t9时刻,V1中2个交换机上均完成流表更新过程。在t8时刻与t9时刻之间,V1中有I个交换机已完成流表更新,另I个交换机还是将相应数据包上传给控制器处理,这个时间不同步不影响流表更新的一致性。本步骤结束时,V1中各个交换机上流表更新过程已结束,全网中只存在新流表规则。在整个流表更新过程中,&时刻之前,相应数据包只遵循旧流表规则;从&时刻开始,数据包从V1中各交换机上传给控制器处理,已有的数据包在网络中按照旧流表规则继 续处理,并在t5时刻之前处理完毕;从t5时刻到t8时刻,相应数据包仍然上传给控制器处理中各交换机分别在t8、t9时刻完成流表更新,之后数据包遵循新流表规则。本发明提出的技术方案,在任何时刻,任一数据包在传输过程中,只遵循旧流表规则或只遵循新流表规则,而不会混合接受两套流表规则的控制,保证了流表更新的一致性。实施例3 本实施例以路由切换引起交换机中的流表更新为例,简要描述本发明在上述实施例中提出的技术方案的具体实施过程;其中,该实施例中的流表更新,主要是待新增流表。在SDN网络中进行路由切换,交换机需要从a — b — c — d— e变成a — b — f—g — e,那么 V0= {b, c, d, f, g} ^V1=M、V2={c, d, f, g},具体流表更新内容如下在初始交换机b上,需要修改一条流表;在后继交换机c,d上,需要删除原有路由的相应流表;在后继交换机f,g上,需要新增新路由所对应的流表。首先将原路由中从交换机a发到交换机b的数据包全部上传给控制器处理;其次,在后继交换机f,g上写入待增加流表,后继交换机中的每个交换机在成功写入待增加流表后,将分别向控制器返回一条成功信息;然后,控制器等待一个交换机b到交换机e的延时;此时原路由中的所有数据包已经传输完毕;接着控制器在后继交换机c,d上删除待删除流表,在初始交换机b中写入待修改流表;最后,将之前上传给控制器的数据包重新发回给交换机b,按照新路由进行转发。实施例4 本实施例以流量均衡引起交换机中的流表更新为例,简要描述本发明在上述实施例中提出的技术方案的具体实施过程;其中,在本实施例中的流表更新,主要是待修改流表。在SDN网络中进行流量均衡,网络中共有4个交换机,其中,初始交换机V1HsJ,后继交换机V2={s2, s3, s4};具体流表更新内容如下在初始交换机S1上,修改现有的3条流表,分别对应3个后继交换机s2, s3, S4 ;在后继交换机s2, s3, S4上,各需要修改一条流表。首先将从S1发到s2,S3, S4的数据包全部上传给控制器处理;接着,控制器等待一个网络延时,使得之前需要进行流量均衡的数据包全部传输完毕;然后,控制器在3个后继交换机s2,S3, S4中,分别写入待修改流表,后继交换机中的每个交换机在成功写入待修改流表后,将分别向控制器返回一条成功信息;最后,当后继交换机中的3个交换机全部实现流表更新后,在初始交换机S1中写入待修改流表,并将之前上传给控制器的数据包重新发回S1,按照新的流量均衡规则进行转发。本发明通过提供一种基于软件定义网络的保持流表更新一致性的方法,与基于VLAN技术的流表更新一致性方法相比,本发明没有使用VLAN标签,从而避免了额外网络管理复杂度;与基于中间流表的流表更新一致性方法相比,本发明没有将所有交换机中的数据包上传给控制器处理,从而减轻了控制平面负载;同时,本发明区分了待新增流表与待修改流表,通过先写入待新增流表,再写入待修改流表,在保证更新一致性的前提下缩短了整个流表更新时间。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种基于软件定义网络的保持流表更新一致性的方法,其特征在于,包括以下步骤 A:控制器分析流表中的新流表规则及旧流表规则,确定需要更新流表的交换机的集合;将所述需要更新流表的交换机分为初始交换机及后继交换机;并将需要进行更新的流表分为共同流表、待新增流表、待修改流表和待删除流表; B:在所述初始交换机中,各个交换机将其受更新流表过程影响的数据包,通过控制平面上传到控制器; C、控制器在所述后继交换机中写入待新增流表; D、控制器在等待一个全网端到端的延时后,在所述后继交换机中写入待修改流表,并删除待删除流表; E、控制器对所述初始交换机中的流表进行更新。
2.如权利要求I所述的方法,其特征在于,所述共同流表为新流表和旧流表中相同的流表;所述待新增流表为控制器需要对新数据包制定新流表规则的流表;所述待修改流表为控制器需要改变已有数据包处理规则的流表;所述待删除流表是所述新流表规则生效后,控制器需要删除的旧流表规则中对应的流表。
3.如权利要求I所述的方法,其特征在于,所述步骤A进一步包括按照数据包在网络中被不同的交换机处理的顺序,将所述需要更新流表的交换机分为初始交换机及后继交换机;其中 所述初始交换机为各个数据包按照新流表规则处理时,经过的需要更新流表的交换机中的第一个交换机的集合; 所述后继交换机为所述需要更新流表的交换机的集合中,不同于初始交换机的交换机隹A 口 O
4.如权利要求I所述的方法,其特征在于,所述步骤B进一步包括 步骤BI :控制器发出控制命令; 步骤B2 :所述初始交换机中各个交换机只保留共同流表对应的数据包,而将其他流表对应的数据包通过控制平面上传给控制器。
5.如权利要求I所述的方法,其特征在于,所述步骤C进一步包括当控制器在所述后继交换机中写入待新增流表后,所述后继交换机中各个交换机分别向控制器返回一条成功信肩、O
6.如权利要求I所述的方法,其特征在于,所述步骤D进一步包括当控制器在所述后继交换机中写入待修改流表并删除待删除流表之后,所述后继交换机中各个交换机分别向控制器返回一条成功信息。
7.如权利要求I所述的方法,其特征在于,所述步骤E进一步包括控制器向初始交换机中的各个交换机写入待新增流表、待修改流表,并删除待删除流表。
8.如权利要求7所述的方法,其特征在于,所述步骤E进一步包括当控制器向初始交换机中的各个交换机写入待新增流表、待修改流表,并删除待删除流表后,所述初始交换机中各个交换机分别向控制器返回一条成功信息。
全文摘要
本发明提供一种基于软件定义网络的保持流表更新一致性的方法,包括以下步骤A控制器对流表进行分析;B在所述初始交换机V1中,各个交换机将其受更新流表过程影响的数据包,通过控制平面上传到控制器;C控制器在所述后继交换机V2中写入待新增流表;D控制器在等待一个全网端到端的延时后,在所述后继交换机V2中写入待修改流表,并删除待删除流表;E控制器对所述初始交换机V1中的流表进行更新;本发明避免了额外网络管理的复杂度,减轻了控制平面负载;同时,在保证更新一致性的前提下缩短了整个流表更新时间。
文档编号H04L12/937GK102946365SQ20121044542
公开日2013年2月27日 申请日期2012年11月9日 优先权日2012年11月9日
发明者李勇, 苏厉, 周烨, 杨旭, 金德鹏, 曾烈光 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1