一种软件定义网络流表更新的方法及装置与流程

文档序号:11148102阅读:486来源:国知局
一种软件定义网络流表更新的方法及装置与制造工艺

本发明涉及软件定义网络技术领域,特别是涉及一种软件定义网络流表更新的方法及装置。



背景技术:

SDN(Software Defined Network,软件定义网络)是一种新型网络架构,其核心思想是将控制与转发分离。数据平面内,交换设备根据流表进行高速的数据转发;控制平面内,网络控制器负责进行路由计算、流表生成和维护等工作。这种新思路使网络结构扁平化,集中控制有利于细粒度地处理网络数据,更加合理地分配网络资源。SDN旨在实现网络互联和网络行为的定义和开放式的接口,从而支持未来各种新型网络体系结构和新型业务的创新。与TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)体系的细腰构架不同,在SDN网络中,与将控制功能从传统的分布式网络设备中迁移到可控的计算设备中,最终通过开放可编程的软件模式来实现网络的自动化控制功能。

在SDN网络中,与现有互联网类似,网络状态的变化在SDN中也频繁出现,例如路由切换、流量均衡、网络设备维护等。这些网络状态的变化,需要以更新交换机中的流表项的方法,实现对数据包的不同处理。虽然控制平面能够将控制逻辑集中部署到整个网络中,但数据平面转发设备仍然是分布式系统,控制逻辑的先后配置顺序以及控制平面和数据平面之间可能存在的时延将难以保证流表更新的一致性,有可能造成网络出现断路、丢包、环路等现象。

所谓的流表更新一致性是指:SDN网络中的流表从一套旧流表更新为一套新流表,每个数据包在传输过程中,或者一直接受旧流表的控制,或者一直接受新流表的控制,不能依次接受旧流表、新流表的控制。

在现有技术中,通过以下方案来实现流表更新过程中的一致性:

首先,对SDN网络中的交换机进行分类,再将各个初始交换机中受流表更新影响的数据包上传到网络控制器;其次,在后继交换机中写入待新增流表,等待一个全网端到端的延时后,在后继交换机中写入待修改流表并删除待删除流表;最后,更新初始交换机中的流表,流表更新过程完成。

然而,当需要更新流表的交换机比较多时,需要上传到网络控制器的数据包数量就会非常大,增加网络控制器的压力。



技术实现要素:

本发明实施例的目的在于提供一种软件定义网络流表更新的方法及装置,以实现在保持流表更新的一致性的基础上,降低网络控制器的负载压力。具体技术方案如下:

第一方面,本发明实施例提供了一种软件定义网络流表更新的方法,应用于网络控制器,所述方法包括:

获取需要更新至交换机中的第一流表规则,并根据更新前的第二流表规则和第一流表规则,对网络拓扑中的交换机进行分类,得到分类后的交换机,分类后的交换机包括:头交换机、交叉口交换机、新增交换机和不变交换机,其中,头交换机为按照第一流表规则处理时,需要更新流表的多个交换机中的第一个交换机;交叉口交换机为按照第一流表规则处理时,需要更新流表的多个交换机中、除头交换机外的交换机;新增交换机为按照第一流表规则处理时,加入第一流表规则中的交换机;不变交换机为按照第一流表规则处理时,不需要更新流表的交换机;

写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文;

获取预设的延迟时间,并根据第一报文,发送第一指令至头交换机,接收头交换机返回的第二报文,其中,第一指令为使得头交换机在预设的延迟时间内对经过头交换机的数据包添加标签并统计添加标签的数据包数目的指令,第二报文为携带有添加标签的数据包数目的报文;

在预设的延迟时间之后,发送第二指令至头交换机,并获取头交换机根据第二指令上传的后续数据包,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包;

接收携带有交叉口交换机转发添加标签的数据包的数目的第三报文,在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目相同时,写入第一流表规则到交叉口交换机,并接收交叉口交换机发送的更新成功的第四报文;

在接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到头交换机,对头交换机进行更新。

可选的,在所述写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文之前,本发明实施例的软件定义网络流表更新的方法还包括:

统计第一交换机至第二交换机之间数据包转发的延迟时间,得到预设的延迟时间,其中,第一交换机为网络拓扑中的第一个交换机,包括:头交换机、交叉口交换机、不变交换机,第二交换机为网络拓扑中的最后一个交换机,包括:头交换机、交叉口交换机、不变交换机。

可选的,所述标签至少包括:VLAN(Virtual Local Area Network,虚拟局域网)标签和MPLS(Multi-Protocol Label Switching,多协议标签交换)标签。

可选的,在所述接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到头交换机之后,本发明实施例的软件定义网络流表更新的方法还包括:

接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包。

可选的,所述分类后的交换机还包括:

待删除交换机,其中,待删除交换机为按照第一流表规则处理时,不需要存在于第一流表规则中的交换机;

相应的,在所述接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机之后,本发明实施例的软件定义网络流表更新的方法还包括:

删除待删除交换机中的流表。

另一方面,本发明实施例还提供了一种软件定义网络流表更新的装置,应用于网络控制器,所述装置包括:

分类模块,用于获取需要更新至交换机中的第一流表规则,并根据更新前的第二流表规则和第一流表规则,对网络拓扑中的交换机进行分类,得到分类后的交换机,分类后的交换机包括:头交换机、交叉口交换机、新增交换机和不变交换机,其中,头交换机为按照第一流表规则处理时,需要更新流表的多个交换机中的第一个交换机;交叉口交换机为按照第一流表规则处理时,需要更新流表的多个交换机中、除头交换机外的交换机;新增交换机为按照第一流表规则处理时,加入第一流表规则中的交换机;不变交换机为按照第一流表规则处理时,不需要更新流表的交换机;

第一更新模块,用于写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文;

第一发送模块,用于获取预设的延迟时间,并根据第一报文,发送第一指令至头交换机,接收头交换机返回的第二报文,其中,第一指令为使得头交换机在预设的延迟时间内对经过头交换机的数据包添加标签并统计添加标签的数据包数目的指令,第二报文为携带有添加标签的数据包数目的报文;

数据包缓存模块,用于在预设的延迟时间之后,发送第二指令至头交换机,并获取头交换机根据第二指令上传的后续数据包,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包;

第二更新模块,用于接收携带有交叉口交换机转发添加标签的数据包的数目的第三报文,在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目相同时,写入第一流表规则到交叉口交换机,并接收交叉口交换机发送的更新成功的第四报文;

第三更新模块,用于在接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到头交换机,对头交换机进行更新。

可选的,本发明实施例的软件定义网络流表更新的装置还包括:

统计模块,用于统计第一交换机至第二交换机之间数据包转发的延迟时间,得到预设的延迟时间,其中,第一交换机为网络拓扑中的第一个交换机,包括:头交换机、交叉口交换机、不变交换机,第二交换机为网络拓扑中的最后一个交换机,包括:头交换机、交叉口交换机、不变交换机。

可选的,所述标签至少包括:VLAN(Virtual Local Area Network,虚拟局域网)标签和MPLS(Multi-Protocol Label Switching,多协议标签交换)标签。

可选的,本发明实施例的软件定义网络流表更新的装置还包括:

数据包返回模块,用于接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包。

可选的,所述分类后的交换机还包括:

待删除交换机,其中,待删除交换机为按照第一流表规则处理时,不需要存在于第一流表规则中的交换机;

相应的,本发明实施例的软件定义网络流表更新的装置还包括:

删除模块,用于删除待删除交换机中的流表。

本发明实施例提供的一种软件定义网络流表更新的方法及装置,首先,对网络拓扑中的交换机进行分类,其次,在更新时等待一个预设的延迟时间,对延迟时间内经过头交换机的数据包添加标签,以使得网络控制器能够得到在预设的延迟时间内经过头交换机的数据包的数目,在延迟时间之后,再接收头交换机上传的后续数据包,在所有交叉口交换机更新完成后,更新头交换机。通过本发明实施例提供的软件定义网络流表更新的方法及装置,网络控制器只需要接收头交换机上传的后续数据包,不需要接收网络拓扑中所有交换机上传的数据包,降低了网络控制器的负载压力。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的一种软件定义网络流表更新的方法的第一种实施方式的流程图;

图2为本发明实施例的一种软件定义网络流表更新的方法的网络拓扑示意图;

图3为本发明实施例的一种软件定义网络流表更新的方法的第二种实施方式的流程图;

图4为本发明实施例的一种软件定义网络流表更新的方法的第三种实施方式的流程图;

图5为本发明实施例的一种软件定义网络流表更新的装置的结构图;

图6为本发明实施例的一种软件定义网络流表更新的方法应用于14个交换机的网络拓扑的流表更新时间图;

图7为本发明实施例的一种软件定义网络流表更新的方法应用于14个交换机的网络拓扑的网络控制器负载图;

图8为本发明实施例的一种软件定义网络流表更新的方法应用于50个交换机的网络拓扑的流表更新时间图;

图9为本发明实施例的一种软件定义网络流表更新的方法应用于50个交换机的网络拓扑的网络控制器负载图;

图10为本发明实施例的一种软件定义网络流表更新的方法应用于不同网络拓扑中的效果对比图。

具体实施方式

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

为了解决现有技术存在的问题,本发明实施例提供了一种软件定义网络流表更新的方法及装置,以实现在保持流表更新一致性的基础上,降低网络控制器的负载压力。

需要说明的是,本发明实施例是按照一条流表规则的转发路径进行说明的,并不能用于限定本发明实施例,可以理解的是,一个网络拓扑中可以有多条流表规则,存在多个转发路径,并且该多个转发路径相互之间不存在矛盾。

下面,首先对本发明实施例提供的一种软件定义网络流表更新的方法进行介绍,如图1所示,为本发明实施例的一种软件定义网络流表更新的方法的第一种实施方式的流程图,所述的方法可以包括:

S101,获取需要更新至交换机中的第一流表规则,并根据更新前的第二流表规则和第一流表规则,对网络拓扑中的交换机进行分类,得到分类后的交换机,分类后的交换机包括:头交换机、交叉口交换机、新增交换机和不变交换机,其中,头交换机为按照第一流表规则处理时,需要更新流表的多个交换机中的第一个交换机;交叉口交换机为按照第一流表规则处理时,需要更新流表的多个交换机中、除头交换机外的交换机;新增交换机为按照第一流表规则处理时,加入第一流表规则中的交换机;不变交换机为按照第一流表规则处理时,不需要更新流表的交换机;

网络控制器周期性的向网络拓扑中的各个交换机节点发送LLDP(Link Layer Discovery Protocol,链路层发现协议)报文,接收各个交换机节点返回的LLDP报文,并对接收的LLDP进行分析处理,以监测网络拓扑中链路的连接状态,在有新的交换机加入到该网络拓扑中时,通过分析该新的交换机发送的LLDP报文,获取该新的交换机的设备信息,并根据该设备信息将该新的交换机添加到网络拓扑中,其中,网络控制器发送和接收LLDP报文的周期是在根据实际应用需要进行设置的,设备信息可以包括该新交换机的交换机节点编号、端口IP地址以及子网掩码信息。需要说明的是,对接收的LLDP进行分析处理,以监测网络拓扑中链路的连接状态以及根据该设备信息将该新的交换机添加到网络拓扑中,属于现有技术,此处不再赘述。

在网络控制器接收到携带有第一流表规则的更新指令时,根据第一流表规则和第二流表规则以及网络拓扑生成流表规则,并对网络拓扑中的交换机进行分类,例如,如图2所示,为本发明实施例提供的一种软件定义网络流表更新的方法的网络拓扑示意图,该网络拓扑包括:网络控制器200,交换机201、交换机202、交换机203、交换机204、交换机205、交换机206、交换机207、交换机208、交换机209、交换机210、交换机211、交换机212、交换机213、交换机214,其中,交换机208、交换机209、交换机210、交换机212为新加入到网络拓扑中的交换机。

不难理解的是,流表,是Open Flow对网络设备的数据转发功能的一种抽象。流表由多个流表项组成,每一个流表项都对应一个交换机的数据转发规则,也就是数据的转发路径;因此,通常所说的对流表进行更新其实是对流表中的流表项进行更新,其中,Open Flow是一个用于网络控制器和交换机之间的控制协议。

在数据包按照第二流表规则转发时,转发路径为:

201→202→203→204→205→206→207→211→213→214;

按照第一流表规则转发时,转发路径为:

201→202→208→209→204→205→210→206→207→212→213→214;

因此,根据第一流表规则和第二流表规则以及网络拓扑,可以将网络拓扑中的交换机分类为:头交换机、交叉口交换机、新增交换机和不变交换机;其中,头交换机为:交换机202,交叉口交换机为:交换机205、交换机207,新增交换机为:交换机208、交换机209、交换机210、交换机212;不变交换机为:交换机201、交换机204、交换机213、交换机214。

通过对网络拓扑中的交换机进行分类,能够使得网络控制器按照本发明实施例提供的软件定义网络流表更新的方法对网络拓扑中的交换机逐步进行更新,从而降低网络控制器的负载压力,并且通过分类,得到不变交换机,对不变交换机可以不更新该不变交换机中的流表项,从而缩短流表更新的时间,提高流表更新的效率。

S102,写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文;

由于新增交换机是在数据包按照第一流表规则处理时,加入第一流表规则中的交换机,因此,在数据包按照第二流表规则进行转发时,该新增交换机不会影响第二流表规则的转发路径,因此,首先将第一流表规则写入到该新增交换机中,对该新增交换机更新,具体地,是将第一流表规则中与该新增交换机对应的流表项写入到该新增交换机中。在该新增交换机更新完成后,发送第一报文给网络控制器,因此,对于网络控制器来说,是接收该新增交换机发送的更新成功的第一报文。

在步骤S101中,通过分类得到新增交换机为:交换机208、交换机209、交换机210、交换机212,网络控制器200首先发送与交换机208、交换机209、交换机210、交换机212一一对应的流表项给各个交换机,各个交换机在接收到一一对应的流表项后,开始更新,更新完成后,分别发送第一报文给网络控制器200,对于网络控制器200来说,是接收各个新增交换机发送的更新成功的第一报文。

通过首先更新新增交换机,能够有效防止网络拓扑中交换机更新完成后发生的转发逻辑不一致引起的发送环路问题;通过接收该新增交换机发送的第一报文,能够使得流表更新按照本发明实施例提供的软件定义网络流表更新的方法进行更新,保证流表更新的一致性。

S103,获取预设的延迟时间,并根据第一报文,发送第一指令至头交换机,接收头交换机返回的第二报文,其中,第一指令为使得头交换机在预设的延迟时间内对经过头交换机的数据包添加标签并统计添加标签的数据包数目的指令,第二报文为携带有添加标签的数据包数目的报文;

需要说明的是,该预设的延迟时间可以是在实际使用中,操作人员根据个人经验预先设置的全网端到端的延迟时间,也可以是网络控制器根据网络拓扑预先统计得到的延迟时间,这应当都是被允许的。

网络控制器在接收到第一报文后,则认为网络拓扑中的所有新增交换机已经成功更新并且更新完成,然后发送第一指令给头交换机,命令头交换机对在延迟时间内经过该头交换机的所有数据包添加标签,并且继续按照第二流表规则进行转发,在延迟时间结束后,将添加标签的数据包的数目返回给网络控制器。

具体地,该标签可以包括:VLAN(Virtual Local Area Network,虚拟局域网)标签和MPLS(Multi-Protocol Label Switching,多协议标签交换)标签。

需要说明的是,本步骤中对数据包添加VLAN标签和MPLS标签属于现有技术,此处不再赘述,应当理解的是,本步骤中列举的VLAN标签和MPLS标签为优选的标签,并不能用于限定本发明实施例所使用的标签,只要是能够对延迟时间内头交换机接收的数据包和延迟时间后头交换机接收的数据包进行区分的标签都应当属于本发明实施例的保护范围。

假设在预设的延迟时间内,经过头交换机的数据包为20个,则头交换机202分别对这20个数据包添加标签,并将添加标签的数据包的数目返回至头交换机202,并且按照第二流表规则继续转发添加标签后的20个数据包。

通过对经过该头交换机的所有数据包添加标签,并且统计添加标签的数据包的数目,在后续的步骤中,网络控制器可以精确控制交叉口交换机进行更新的时间,以缩短网络拓扑中流表更新的时间。

在本步骤中,在预设的延迟时间内,不需要将头交换机接收到的数据包上传到网络控制器,能够有效降低网络控制器的负载压力。

S104,在预设的延迟时间之后,发送第二指令至头交换机,并获取头交换机根据第二指令上传的后续数据包,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包;

在网络控制器接收到携带有添加标签的数据包数目的第二报文后,则认为头交换机对预设的延迟时间内的经过该头交换机的数据包成功添加标签,在延迟时间之后,发送第二指令给头交换机,命令头交换机将后续接收的后续数据包上传到该网络控制器,其中,第二指令为命令头交换机上传后续数据包至该网络控制器的指令。

通过命令头交换机将后续数据包上传到网络控制器,能够使交叉口交换机有充分的时间进行更新,防止网络拓扑中的交换机对后续数据包转发时,发生转发路径不一致引起的发送环路问题,保证流表更新的一致性。

S105,接收携带有交叉口交换机转发添加标签的数据包的数目的第三报文,在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目相同时,写入第一流表规则到交叉口交换机,并接收交叉口交换机发送的更新成功的第四报文;

在添加标签的数据包按照第二流表规则转发到交叉口交换机后,交叉口交换机按照第二流表规则继续转发,并且统计转发的添加标签的数据包的数目,将转发的添加标签的数据包的数目通过第三报文发送到网络控制器,网络控制器对第三报文中的添加标签的数据包的数目、与S103中头交换机发送的第二报文中添加标签的数据包的数目进行对比;

在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目相同时,写入第一流表规则到交叉口交换机;

在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目不同时,则继续接收交叉口交换机发送的携带有转发添加标签的数据包的数目的报文。

交叉口交换机更新完成后,返回更新成功的第四报文给网络控制器,对于网络控制器来说,则是接收交叉口交换机发送的更新完成的第三报文。

例如,在S103中,添加标签的数据包的数目为20个,在图2所示的本发明实施例提供的一种软件定义网络流表更新的方法的网络拓扑示意图中,交叉口交换机包括交换机205和交换机207,因此,交换机205为交叉口交换机205,交换机207为交叉口交换机207。

交叉口交换机205首先依次接收到添加标签的20个数据包,交叉口交换机205按照第二流表规则继续依次转发该添加标签的20个数据包,在转发过程中,网络控制器200可以周期性的发送询问报文,查询交叉口交换机205转发的数据包的数目,并且与S103中的第二报文中的添加标签的数据包的数目进行对比,以确定是否要发送第一流表规则至交叉口交换机205。

在交叉口交换机205转发的数据包的数目与第二报文中的添加标签的数据包的数目相同时,则发送第一流表规则至交叉口交换机205。

需要强调的是,网络控制器200也可以周期性的接收交叉口交换机205发送的携带有转发添加标签的数据包的数据的报文,这也是可以的。

网络控制器200与交叉口交换机207之间的执行过程和网络控制器200与交叉口交换机205之间的执行过程相似或相同,可以相互借鉴,这里不再赘述。

通过本步骤,网络拓扑中的各个交叉口交换机在各自转发完成添加标签的数据包之后,就可以进行更新,不需要等到所有交叉口交换机转发完添加标签的数据包后,再进行更新,可以有效缩短流表更新的时间。

S106,在接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到头交换机,对头交换机进行更新。

需要说明的是,由于头交换机为按照第一流表规则处理时,需要更新流表的多个交换机中的第一个交换机,所以头交换机可以是交叉口交换机,也可以是新增交换机。

例如,在图2所示的本发明实施例提供的一种软件定义网络流表更新的方法的网络拓扑示意图中,在交叉口交换机205和交叉口交换机207更新完成后,网络控制器200发送第一流表规则至头交换机202,对头交换机202进行更新。

通过本步骤,能够保证在对头交换机进行更新时,该网络拓扑中的其他交换机已全部更新完成,保证流表更新的一致性。

本发明实施例提供的一种软件定义网络流表更新的方法,首先,对网络拓扑中的交换机进行分类,其次,在更新时等待一个预设的延迟时间,对延迟时间内经过头交换机的数据包添加标签,以使得交叉口交换机在处理完添加标签的数据包后便可以开始更新,在延迟时间之后,再接收头交换机上传的后续数据包,在所有交叉口交换机更新完成后,更新头交换机。通过本发明实施例提供的软件定义网络流表更新的方法及装置,网络控制器只需要接收头交换机上传的后续数据包,不需要接收网络拓扑中所有交换机上传的数据包,降低了网络控制器的负载压力。

在写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文之前,本发明实施例的软件定义网络流表更新的方法还包括:

统计第一交换机至第二交换机之间数据包转发的延迟时间,得到预设的延迟时间,其中,第一交换机为网络拓扑中的第一个交换机,包括:头交换机、交叉口交换机、不变交换机,第二交换机为网络拓扑中的最后一个交换机,包括:头交换机、交叉口交换机、不变交换机。

例如,在图2所示的本发明实施例提供的一种软件定义网络流表更新的方法的网络拓扑示意图中,第一交换机为头交换机202,第二交换机为不变交换机213,则预设的延迟时间为头交换机202按照第二流表规则转发数据包至不变交换机213之间的延迟时间。

在本步骤中,通过统计第一交换机至第二交换机之间的延迟时间,能够有效缩短预设的延迟时间,网络控制器能够更早的对交叉口交换机和头交换机进行更新,缩短流表更新的时间。

如图3所示,为本发明实施例的一种软件定义网络流表更新的方法的第二种实施方式的流程图;在接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到所述头交换机之后,本发明实施例的软件定义网络流表更新的方法还包括:

S107,接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包。

在本步骤中,控制器首先接收头交换机返回的更新成功的第五报文,再根据第五报文,返回上传的后续数据包至头交换机,能够使得网络拓扑中,按照第一流表规则转发数据的交换机的流表都更新完成,从而保证后续数据包按照第一流表规则的转发路径进行转发,保证流表更新的一致性。

如图4所示,为为本发明实施例的一种软件定义网络流表更新的方法的第三种实施方式的流程图,步骤S101中,分类后的交换机还包括:

待删除交换机,其中,待删除交换机为按照第一流表规则处理时,不需要存在于第一流表规则中的交换机;

相应的,在接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机之后,本发明实施例的软件定义网络流表更新的方法还包括:

S108,删除待删除交换机中的流表。

通过删除待删除交换机中的流表,能够释放该交换机中的存储空间,并且可以使该交换机用于其他网络拓扑中,提高交换机的利用率。

相应于上述方法实施例,本发明实施例提供了一种软件定义网络流表更新的装置,如图5所示,为本发明实施例的一种软件定义网络流表更新的装置的结构图,应用于网络控制器,该装置可以包括:

分类模块501,用于获取需要更新至交换机中的第一流表规则,并根据更新前的第二流表规则和第一流表规则,对网络拓扑中的交换机进行分类,得到分类后的交换机,分类后的交换机包括:头交换机、交叉口交换机、新增交换机和不变交换机,其中,头交换机为按照第一流表规则处理时,需要更新流表的多个交换机中的第一个交换机;交叉口交换机为按照第一流表规则处理时,需要更新流表的多个交换机中、除头交换机外的交换机;新增交换机为按照第一流表规则处理时,加入第一流表规则中的交换机;不变交换机为按照第一流表规则处理时,不需要更新流表的交换机;

第一更新模块502,用于写入第一流表规则到新增交换机中,并接收新增交换机发送的更新成功的第一报文;

第一发送模块503,用于获取预设的延迟时间,并根据第一报文,发送第一指令至头交换机,接收头交换机返回的第二报文,其中,第一指令为使得头交换机在预设的延迟时间内对经过头交换机的数据包添加标签并统计添加标签的数据包数目的指令,第二报文为携带有添加标签的数据包数目的报文;

数据包缓存模块504,用于在预设的延迟时间之后,发送第二指令至头交换机,并获取头交换机根据第二指令上传的后续数据包,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包;

第二更新模块505,用于接收携带有交叉口交换机转发添加标签的数据包的数目的第三报文,在第三报文中的添加标签的数据包的数目与第二报文中的添加标签的数据包数目相同时,写入第一流表规则到交叉口交换机,并接收交叉口交换机发送的更新成功的第四报文;

第三更新模块506,用于在接收到所有交叉口交换机发送的第四报文后,写入第一流表规则到头交换机,对头交换机进行更新。

本发明实施例提供的一种软件定义网络流表更新的装置,首先,对网络拓扑中的交换机进行分类,其次,在更新时等待一个预设的延迟时间,对延迟时间内经过头交换机的数据包添加标签,以使得交叉口交换机在处理完添加标签的数据包后便可以开始更新,在延迟时间之后,再接收头交换机上传的后续数据包,在所有交叉口交换机更新完成后,更新头交换机。通过本发明实施例提供的软件定义网络流表更新的方法及装置,网络控制器只需要接收头交换机上传的后续数据包,不需要接收网络拓扑中所有交换机上传的数据包,降低了网络控制器的负载压力。

需要说明的是,本发明实施例的装置是应用上述软件定义网络流表更新的方法的装置,则上述软件定义网络流表更新的方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

具体地,本发明实施例的软件定义网络流表更新的装置还包括:

统计模块,用于统计第一交换机至第二交换机之间数据包转发的延迟时间,得到预设的延迟时间,其中,第一交换机为网络拓扑中的第一个交换机,包括:头交换机、交叉口交换机、不变交换机,第二交换机为网络拓扑中的最后一个交换机,包括:头交换机、交叉口交换机、不变交换机。

具体地,所述标签至少包括:VLAN(Virtual Local Area Network,虚拟局域网)标签和MPLS(Multi-Protocol Label Switching,多协议标签交换)标签。

具体地,本发明实施例的软件定义网络流表更新的装置还包括:

数据包返回模块,用于接收头交换机返回的更新成功的第五报文,返回上传的后续数据包至头交换机,其中,后续数据包为在预设的延迟时间之后,头交换机接收到的数据包。

具体地,所述分类后的交换机还包括:

待删除交换机,其中,待删除交换机为按照第一流表规则处理时,不需要存在于第一流表规则中的交换机;

相应的,本发明实施例的软件定义网络流表更新的装置还包括:

删除模块,用于删除待删除交换机中的流表。

参见图6、图7,图6为本发明实施例的一种软件定义网络流表更新的方法应用于14个交换机的网络拓扑的流表更新时间图,图7为本发明实施例的一种软件定义网络流表更新的方法应用于14个交换机的网络拓扑的网络控制器负载图;

在该网络拓扑中,按第二流表规则转发数据包的交换机包括:交换机201、交换机202、交换机203、交换机204、交换机205、交换机206、交换机207、交换机211、交换机213、交换机214,按第一流表规则转发数据包的交换机包括:交换机201、交换机202、交换机208、交换机209、交换机204、交换机205、交换机210、交换机206、交换机207、交换机212、交换机213、交换机214,数据包的到达采用泊松分布,参数从1~10设置,同时各转发链路之间的延迟符合0.01~0.1的均匀随机分布。

从图6中可以看出本发明实施例提供的软件定义网络流表更新的方法减小了更新时间,图7中可以看出本发明实施例提供的软件定义网络流表更新的方法减少了控制器的负载,提高了网络更新的性能。

参见图8、图9,图8为本发明实施例的一种软件定义网络流表更新的方法应用于50个交换机的网络拓扑的流表更新时间图,图9为本发明实施例的一种软件定义网络流表更新的方法应用于50个交换机的网络拓扑的网络控制器负载图;

在该网络拓扑中,按照第二流表规则转发数据包的交换机数量为30个,新增交换机数量为20个,采用随机生成网络拓扑的方法,并且,随机生成需要更新的交换机数量与位置,网络拓扑中总共需要修改流表的交换机数量为39,数据包的到达同样采用泊松分布,参数从1~10设置,同时各转发链路之间的延迟符合0.01~0.1的均匀随机分布。

从图8中可以看出,与现有技术相比,在数据包到达速率递增的仿真环境中,本发明实施例提供的软件定义网络流表更新的方法的流表更新的总耗时都比现有技术的方案的流表更新的总耗时小,因此,采用本发明实施例的软件定义网络流表更新的方法减小了更新时间,从图9中可以看出本发明实施例提供的软件定义网络流表更新的方法中网络控制器接收的数据包的数目总是比现有技术中网络控制器接收的数据包的数目小,因此,采用本发明实施例的软件定义网络流表更新的方法减少了控制器的负载,提高了网络更新的性能。

综上所述,从固定拓扑与随机拓扑中可以看出,控制器的负载情况,主要受报文到达速率的影响,泊松分布的速率越大,控制器的负载就越大,在相同速率与相同拓扑的情况下,本发明实施例提供的软件定义网络流表更新的方法能够有效的降低控制器的负载。而网络的更新时间受拓扑的影响较大,拓扑越大,网络的更新时间就越长。

参见图10,图10为本发明实施例的一种软件定义网络流表更新的方法应用于不同网络拓扑中的效果对比图,横坐标1至10分别代表不同的网络拓扑,其中,1为网络拓扑中有10个交换机,2为网络拓扑中有20个交换机,3为网络拓扑中有30个交换机,4为网络拓扑中有40个交换机,5为网络拓扑中有50个交换机,6为网络拓扑中有60个交换机,7为网络拓扑中有70个交换机,8为网络拓扑中有80个交换机,9为网络拓扑中有90个交换机,10为网络拓扑中有100个交换机,

从图10可以看出,随着网络拓扑的增大,网络的更新时间也不断增多,本发明实施例提供的软件定义网络流表更新的方法的更新时间总是小于现有技术的更新时间,因此,本发明实施例的软件定义网络流表更新的方法能够有效的提高网络更新的效率。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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