首页> 中国专利> 流表更新方法、控制器及流表分析设备

流表更新方法、控制器及流表分析设备

摘要

本发明实施例提供一种流表更新方法、控制器及流表分析设备,该方法包括:控制器更新第二转发路径上的非入口交换机上的流表项;进一步地,在所述非入口交换机上的流表项更新完毕后,所述控制器更新第一转发路径和所述第二转发路径上的入口交换机上的流表项;从而可确保在整个流表更新过程中所有交换机中流表更新的一致性,并且减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

著录项

  • 公开/公告号CN105282057A

    专利类型发明专利

  • 公开/公告日2016-01-27

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;清华大学;

    申请/专利号CN201510581323.9

  • 发明设计人 董雯霞;林程勇;刘玉洁;李勇;

    申请日2015-09-11

  • 分类号H04L12/947;

  • 代理机构北京同立钧成知识产权代理有限公司;

  • 代理人宋扬

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 13:43:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-17

    授权

    授权

  • 2016-02-24

    实质审查的生效 IPC(主分类):H04L12/947 申请日:20150911

    实质审查的生效

  • 2016-01-27

    公开

    公开

说明书

技术领域

本发明实施例涉及互联网技术,尤其涉及一种流表更新方法、控制器及流表分析设备。

背景技术

软件定义网络(Software-DefinedNetworking,简称SDN)是一种正在快速发展的新型网络架构,目前已经在广域网(WideAreaNetwork,简称WAN)和骨干网中部署应用了。在SDN中,控制平面与数据平面分离;其中,控制平面由逻辑集中的控制器组成,数据平面由多个SDN交换机(以下简称交换机)组成。具体地,根据上层网络应用的不同需求,控制器将针对不同数据包的流表项下发到每个交换机的流表中;交换机在数据包到达时查找流表中与该数据包匹配且优先级最高的流表项,并根据所查找到的流表项执行相应的转发或丢弃等操作。为了应对复杂多变的网络环境和业务需求,控制器需要经常进行网络流表项的更新,即用一套新流表来替换交换机中的旧流表。因此,流表更新是SDN中的一个重要问题。

然而,一方面,在如广域网场景中,交换机在空间上是分布式的,控制器与交换机之间的通信存在不可预知的时延;另一方面,当流表项下发到交换机后,交换机将控制器所下发的流表项安装至该交换机的旧流表中生成新流表,并使所生成的新流表生效所需的时间也受到很多因素的影响。上述两方面的原因导致所有交换机上的新旧流表难以同时生效和失效,即所有交换机难以同步地完成流表更新,从而可能会引起数据包的错误处理,如环路、黑洞或者拥塞等。因此,确保所有交换机中的流表更新的一致性显得尤为重要。

发明内容

本发明实施例提供一种流表更新方法、控制器及流表分析设备,提高了系统资源的利用率。

第一方面,本发明实施例提供一种流表更新方法,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径,其中,所述初始转发路径包括第一转发路径,所述最终转发路径包括第二转发路径,在所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机,在所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述方法包括:

控制器更新所述第二转发路径上的非入口交换机上的流表项;

在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

结合第一方面,在第一方面的第一种可能的实现方式中,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二转发路径上的非入口交换机上的流表项,包括:

所述控制器将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;和/或

若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二转发路径上的非入口交换机上的流表项,包括:

所述控制器更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项,包括:

所述控制器更新第三交换机上的第三流表项;

其中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器将所述第三流表项发送给所述第三交换机;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第一删除消息,所述第一删除消息用于指示所述第三交换机删除所述第三流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第一修改消息,所述第一修改消息用于指示所述第三交换机修改所述第三流表项。

结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二交换机上的第二流表项,包括:

所述控制器将第四流表项发送给所述第二交换机;所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项。

结合第一方面、第一方面的第一种至第四种任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项之后,还包括:

所述控制器向第四交换机发送第二删除消息;

其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第二删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项。

结合第一方面的第一种或第二种任一种可能的实现方式,在第一方面的第六种可能的实现方式中,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项;所述控制器更新所述第二转发路径上的非入口交换机上的流表项之前,还包括:

所述控制器将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项;

等待网络的端到端延时后,所述控制器向所述第三交换机发送第三删除消息,向第四交换机发送第四删除消息;

其中,所述第三删除消息用于指示所述第三交换机删除所述第三流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第四删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项;

对应地,所述控制器更新所述第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第二修改消息,所述第二修改消息用于指示所述第三交换机将所述第一中间流表项修改为第六流表项。

结合第一方面、第一方面的第一种至第六种任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述控制器更新所述第二转发路径上的非入口交换机上的流表项之前,还包括:

所述控制器将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;

其中,所述非入口交换机上的流表项包括:所述第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述控制器将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项,包括:

所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径;

所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,包括:

所述控制器根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

所述控制器确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

所述控制器根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

所述控制器确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

所述控制器根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

所述控制器确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

所述控制器根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

所述控制器确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

第二方面,本发明实施例提供一种流表更新方法,包括:

流表分析设备接收控制器发送的流表信息,所述流表信息包括:初始转发路径、所述初始转发路径所包括的所有交换机的流表项、最终转发路径以及所述最终转发路径所包括的所有交换机的流表项;其中,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径;

所述流表分析设备根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;其中,所述非入口交换机上的流表项包括:第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项;所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;

所述流表分析设备将流表项划分结果发送给所述控制器,以使所述控制器根据所述流表项划分结果依次更新流表。

结合第二方面,在第二方面的第一种可能的实现方式中,所述流表分析设备根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项,包括:

所述流表分析设备根据所述流表信息,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

所述流表分析设备根据所述流表信息,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建第二转发路径;

所述流表分析设备根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述流表分析设备根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,包括:

所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

所述流表分析设备确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

所述流表分析设备确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

所述流表分析设备确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

所述流表分析设备确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

第三方面,本发明实施例提供一种控制器,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径,其中,所述初始转发路径包括第一转发路径,所述最终转发路径包括第二转发路径,在所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机,在所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述控制器包括:

第一更新模块,用于更新所述第二转发路径上的非入口交换机上的流表项;

第二更新模块,用于在所述非入口交换机上的流表项更新完毕后,更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

结合第三方面,在第三方面的第一种可能的实现方式中,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述第一更新模块具体用于:

将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;和/或

若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述第一更新模块具体用于:

更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项。

结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述第二更新模块具体用于:

更新第三交换机上的第三流表项;

其中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项。

结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项,所述第二更新模块具体用于:

将所述第三流表项发送给所述第三交换机;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项,所述第二更新模块具体用于:

向所述第三交换机发送第一删除消息,所述第一删除消息用于指示所述第三交换机删除所述第三流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,所述第二更新模块具体用于:

向所述第三交换机发送第一修改消息,所述第一修改消息用于指示所述第三交换机修改所述第三流表项。

结合第三方面的第一种可能的实现方式,在第三方面的第四种可能的实现方式中,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述第一更新模块还具体用于:

将第四流表项发送给所述第二交换机;所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项。

结合第三方面、第三方面的第一种至第四种任一种可能的实现方式,在第三方面的第五种可能的实现方式中,所述控制器还包括:

第一删除模块,用于向第四交换机发送第二删除消息;

其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第二删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项。

结合第三方面的第一种或第二种任一种可能的实现方式,在第三方面的第六种可能的实现方式中,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项;所述第二更新模块还具体用于:

将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项;

所述控制器还包括:第二删除模块,用于等待网络的端到端延时后,向所述第三交换机发送第三删除消息,向第四交换机发送第四删除消息;

其中,所述第三删除消息用于指示所述第三交换机删除所述第三流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第四删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项;

对应地,所述第二更新模块还具体用于:向所述第三交换机发送第二修改消息,所述第二修改消息用于指示所述第三交换机将所述第一中间流表项修改为第六流表项。

结合第三方面、第三方面的第一种至第六种任一种可能的实现方式,在第三方面的第七种可能的实现方式中,所述控制器还包括:

划分模块,用于将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;

其中,所述非入口交换机上的流表项包括:所述第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

结合第三方面的第七种可能的实现方式,在第三方面的第八种可能的实现方式中,所述划分模块,包括:

第一确定单元,用于根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

第二确定单元,用于根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径;

划分单元,用于根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

结合第三方面的第八种可能的实现方式,在第三方面的第九种可能的实现方式中,所述划分单元具体用于:

根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

第四方面,本发明实施例提供一种流表分析设备,包括:

接收模块,用于接收控制器发送的流表信息,所述流表信息包括:初始转发路径、所述初始转发路径所包括的所有交换机的流表项、最终转发路径以及所述最终转发路径所包括的所有交换机的流表项;其中,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径;

划分模块,用于根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;其中,所述非入口交换机上的流表项包括:第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项;所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;

发送模块,用于将流表项划分结果发送给所述控制器,以使所述控制器根据所述流表项划分结果依次更新流表。

结合第四方面,在第四方面的第一种可能的实现方式中,所述划分模块,包括:

第一确定单元,用于根据所述流表信息,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

第二确定单元,用于根据所述流表信息,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建第二转发路径;

划分单元,用于根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述划分单元具体用于:

根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

本发明中,控制器通过先更新第二转发路径上的非入口交换机上的流表项,其次,在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项,从而可确保在整个流表更新过程中所有交换机中流表更新的一致性,并且减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

附图说明

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

图1为本发明流表更新方法实施例一的流程示意图;

图2A为本发明流表更新方法实施例四的流程示意图;

图2B为本发明数据平面初始状态下的内部结构示意图;

图2C为本发明数据平面最终状态下的内部结构示意图;

图3为本发明流表更新方法实施例五的流程示意图;

图4为本发明流表更新方法实施例六的流程示意图;

图5为本发明控制器实施例一的结构示意图;

图6为本发明控制器实施例二的结构示意图;

图7为本发明流表分析设备实施例一的结构示意图;

图8为本发明流表分析设备实施例二的结构示意图。

具体实施方式

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

现有的流表更新方案包括两大类:基于加标签的流表更新方法和基于控制器缓存的流表更新方法。其中,基于加标签的流表更新方法具体步骤如下:1)将所有使用旧流表项处理的数据包设置VLAN标签为0,并设置所述旧流表项的VLAN匹配域为0;2)将网络的非入口交换机中安装新流表项,并设置所述新流表项的VLAN匹配域为1;同时保留所述交换机中的旧流表项;3)将所述网络的入口交换机中安装新流表项,并设置所述新流表项的VLAN匹配域为1;同时为新进入所述网络的数据包设置VLAN标签为1;4)等待所有新流表项安装完成后,开始使用各交换机中的新流表项处理新进入所述网络的所述数据包;5)当使用旧流表项处理的数据包全部离开所述网络后,删除各所述交换机中的旧流表项。可见,在更新流表期间所有交换机都需要同时存储新旧两套流表项,系统资源的开销较大。

基于控制器缓存的流表更新方法具体步骤如下:1)控制器创建一组中间流表,所述中间流表中只保留更新前后相同的流表项,并将旧流表中其它发生变化的旧流表项的操作修改为上传控制器缓存,以使采用所述发生变化的旧流表项处理的数据包都由交换机上传给控制器缓存;2)在交换机中安装中间流表项;3)等待中间流表项的配置全部完成后,删除交换机中的旧流表项:4)等待旧流表项删除完毕后,写入新流表项形成新流表;5)等待新流表项全部写入后,将缓存的数据包发送到目的节点,并删除中间流表。可见,在更新期间需要将所有在新旧配置中不同的流表项处理的数据包上传到控制器缓存,给控制链路的带宽和控制器的存储资源带来额外开销。

综上所述,现有的流表一致性更新方案都不加区分地对全部交换机采取相同的更新方法,会给网络带来额外的开销,造成系统资源的浪费。因此,本发明提出:在控制器执行更新之前,先对新旧流表项进行分析检测,对更新过程中发生变化的流表项进行分类,进一步地,协调不同类别流表项的更新顺序,减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

图1为本发明流表更新方法实施例一的流程示意图。本实施例的方案可应用于控制和转发分离架构下的网络中的流表更新,实现了流表的一致性更新。如图1所示,本实施例的方法可以包括:

S101、控制器更新第二转发路径上的非入口交换机上的流表项。

本发明实施例中,在进行流表更新前的流表所指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径,其中,所述初始转发路径包括:流表更新前属于同一匹配域的数据流在网络中经过的交换机的有序集合;所述最终转发路径包括:流表更新后属于同一匹配域的数据流在网络中经过的交换机的有序集合;其中,所述初始转发路径包括第一转发路径,在所述第一转发路径上所包括的交换机为:在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述最终转发路径包括第二转发路径,在所述第二转发路径上所包括的交换机为:在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机。本发明实施例中,所述控制器按照预设流表更新规则先更新所述第二转发路径上的非入口交换机上的流表项(可选地,所述控制器通过向所述非入口交换机发送指示消息如新流表项或者修改消息,以便所述非入口交换机根据所述控制器发送的指示消息进行相应操作,从而实现流表更新),可选地,所述预设流表更新规则用于指示所述控制器先更新所述第二转发路径上的非入口交换机上的流表项,其次更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。现有的加标签的流表更新方法中是先将整个网络的非入口交换机上安装新流表项,并且保留所述非入口交换机上的旧流表项,而本申请中是先将更新流表前后流表项发生变化的交换机(如所述第二转发路径所包括的交换机)中的非入口交换机上的流表项进行更新,减少了在流表更新过程中需要存储的流表项。

S102、在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

本发明实施例中,在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项(可选地,所述控制器通过向所述入口交换机发送指示消息如新流表项、修改消息或者删除消息,以便所述入口交换机根据所述控制器发送的指示消息进行相应操作,从而实现流表更新),待所述入口交换机上的流表项更新完毕后,则进入整个网络的入口交换机的数据包便可按照新流表项进行转发,从而可确保在整个流表更新过程中数据包流表项的一致性,并且通过控制不同类别流表项的更新顺序,减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

综上所述,本发明实施例中,控制器通过先更新第二转发路径上的非入口交换机上的流表项,其次,在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项,从而可确保在整个流表更新过程中所有交换机中流表更新的一致性,并且减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

本发明流表更新方法实施例二中,在上述实施例的基础上,可选地,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,步骤S101包括:所述控制器将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;和/或

若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,步骤S101包括:所述控制器更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项。

本发明实施例中,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机(如第一交换机r∈所述第二转发路径P’且所述第一交换机所述第一转发路径P),且所述第一交换机为所述第二转发路径上的非入口交换机,则所述控制器将第一流表项发送给所述第一交换机,以使所述第一交换机保存所述第一流表项,其中,所述第一流表项为所述第一交换机上增加的新流表项;可选地,所述第一流表项并不是指一条流表项,所述第一流表项可以包括多个流表项,对应地,所述控制器将每个第一流表项分别发送给该第一流表项所属的第一交换机。可选地,所述第一交换机保存所述第一流表项后,向所述控制器返回第一更新响应消息,以便所述控制器获知所述第一交换机中的第一流表项已更新完毕。

可选地,若所述第一转发路径和所述第二转发路径均包括第二交换机(如第二交换机r∈所述第二转发路径P’且所述第二交换机r∈所述第一转发路径P),且所述第二交换机为所述第二转发路径上的非入口交换机,则所述控制器更新所述第二交换机上的第二流表项,可选地,所述控制器可向所述第二交换机发送新流表项或者修改消息,以使所述第二交换机根据所述控制器发送的指示(如新流表项或者修改消息)更新自身的流表项,其中,所述第二流表项为所述第二交换机上在流表更新时需要修改的旧流表项,可选地,如所述第二流表项为所述第二交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,其中,所述上游节点是指:同一数据流在网络中经过的交换机中,在所述第二交换机之前的第一个交换机;所述下游节点是指:同一数据流在网络中经过的交换机中,在所述第二交换机之后的第一个交换机。可选地,所述第二流表项并不是指一条流表项,所述第二流表项可以包括多个流表项,对应地,所述控制器将每个第二流表项分部发送给该第二流表项所属的第一交换机。可选地,所述第二交换机根据所述控制器发送的指示(如新流表项或者修改消息)更新自身的流表项后,向所述控制器返回第二更新响应消息,以便所述控制器获知所述第二交换机中的第二流表项已更新完毕。

可选地,本发明实施例中,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,同时若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,则所述控制器将第一流表项流表项发送给所述第一交换机的步骤与所述控制器更新所述第二交换机上的第二流表项的步骤并不分先后顺序,可以并列执行。

可选地,步骤S102包括:

所述控制器更新第三交换机上的第三流表项;

其中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机(如第三交换机r∈所述第二转发路径P’且所述第三交换机所述第一转发路径P),且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机(如第三交换机r∈所述第一转发路径P且所述第三交换机所述第二转发路径P’),且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机(如第三交换机r∈所述第二转发路径P’且所述第三交换机r∈所述第一转发路径P),且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项。

本发明实施例中,所述控制器在所述非入口交换机上的流表项(如所述第一流表项和/或所述第二流表项)更新完毕后,所述控制器更新第三交换机上的第三流表项,可选地,所述控制器可向所述第三交换机发送新流表项、删除消息或者修改消息,以使所述第二交换机根据所述控制器发送的指示(如新流表项、删除消息或者修改消息)更新自身的流表项,其中,第三交换机r∈所述第二转发路径P’且所述第三交换机所述第一转发路径P,且所述第三交换机r为所述第二转发路径P’上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;或者,第三交换机r∈所述第一转发路径P且所述第三交换机所述第二转发路径P’,且所述第三交换机r为所述第一转发路径P上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;或者,第三交换机r∈所述第二转发路径P’且所述第三交换机r∈所述第一转发路径P,且所述第三交换机r为所述第一转发路径P和所述第二转发路径P’上的入口交换机,对应地,所述第三流表项为所述第三交换机上在流表更新时需要修改的旧流表项,可选地,如所述第三流表项为所述第三交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项。可选地,所述第三流表项并不是指一条流表项,所述第三流表项可以包括多个流表项。

可选地,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二交换机上的第二流表项,包括:

所述控制器将第四流表项发送给所述第二交换机;所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项。

本发明实施例中,若第二交换机r∈所述第二转发路径P’且所述第二交换机r∈所述第一转发路径P,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器将所述第二交换机上的所述第二流表项修改后得到的第四流表项,发送给所述第二交换机,以使所述第二交换机保存所述第四流表项。可选地,若所述第二流表项为所述第二交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,所述控制器将所述第二流表项的上游节点和/或下游节点修改后得到的第四流表项,发送给所述第二交换机,所述第二流表项与所述第四流表项的上游节点和/或下游节点不同。

可选地,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器将所述第三流表项发送给所述第三交换机;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第一删除消息,所述第一删除消息用于指示所述第三交换机删除所述第三流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,所述控制器更新第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第一修改消息,所述第一修改消息用于指示所述第三交换机修改所述第三流表项。

本发明实施例中,1)当第三交换机r∈所述第二转发路径P’且所述第三交换机所述第一转发路径P,且所述第三交换机r为所述第二转发路径P’上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项时,所述控制器将所述第三流表项发送给所述第三交换机,以使所述第三交换机保存所述第三流表项。2)当第三交换机r∈所述第一转发路径P且所述第三交换机所述第二转发路径P’,且所述第三交换机r为所述第一转发路径P上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项,所述控制器向所述第三交换机发送第一删除消息,所述第一删除消息用于指示所述第三交换机删除所述第三流表项。3)当第三交换机r∈所述第二转发路径P’且所述第三交换机r∈所述第一转发路径P,且所述第三交换机r为所述第一转发路径P和所述第二转发路径P’上的入口交换机,对应地,所述第三流表项为所述第三交换机上在流表更新时需要修改的旧流表项,所述控制器向所述第三交换机发送第一修改消息,所述第一修改消息用于指示所述第三交换机修改所述第三流表项,可选地,如所述第三流表项为所述第三交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,对应地,所述第一修改消息用于指示所述第三交换机修改所述第三流表项的上游节点和/或下游节点,以得到第六流表项;所述第三流表项与所述第六流表项的上游节点和/或下游节点不同。

可选地,步骤S102之后,还包括:

所述控制器向第四交换机发送第二删除消息;

其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第二删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项。

本发明实施例中,在更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项之后,所述控制器向第四交换机发送用于指示第四交换机删除第五流表项的第二删除消息,其中,第四交换机r∈所述第一转发路径P且所述第四交换机所述第二转发路径P’,且所述第四交换机r为所述第一转发路径P上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项。可选地,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第一转发路径或所述第二转发路径上的非入口交换机,则在更新所述第一转发路径或所述第二转发路径上的入口交换机上的流表项之后,所述控制器还需向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息。

本发明实施例中,具体的流表更新方法步骤如下:

1)若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,控制器将第一流表项发送给所述第一交换机(其中,所述第一流表项为所述第一交换机上增加的新流表项),可选地,还可设置所述第一流表项的VLAN匹配域为1及优先级为最高,使得在后续步骤中VLAN标签为1的新数据包按照新流表项(即所述第一流表项)进行转发,而未添加VLAN标签为1的网络中已有的数据包仍然按照旧流表项进行转发;

2)若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器将第四流表项发送给所述第二交换机(所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项),可选地,还可设置所述第四流表项的VLAN匹配域为1及优先级为最高,并保留优先级较低的所述第二流表项(其VLAN匹配域为任意);可选地,所述第二流表项的VLAN匹配域为任意;可选地,步骤1)与步骤2)并不分先后顺序,可以并列执行;

3)等待在所述非入口交换机上的流表项更新完毕后(此时网络中除了各个新增路径上的入口交换机中未安装新流表项之外,各个新增路径上的非入口交换机中都已经配置好新流表项,由于网络中还没有添加了VLAN标签为1的数据包,因此,此时所述新流表项尚未生效),所述控制器更新第三交换机上的第三流表项,可选地,还可为新数据包设置VLAN标签为1(即对于在此之后进入网络入口交换机的数据包各个交换机采用新流表项进行转发,但是在此之前对于已经进入网络的数据包仍然采用旧流表项进行转发);可选地,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项;其中,所述控制器更新第三交换机上的第三流表项的具体步骤详见本实施例中上述部分,此处不再赘述;

4)等待使用旧流表项处理的数据包全部离开网络后(此时进入网络入口交换机的数据包已经开始使用新流表项进行处理,因此,可删除交换机中不用的旧流表项了),所述控制器向第四交换机发送用于指示第四交换机删除第五流表项的第二删除消息,其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项;可选地,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第一转发路径和所述第二转发路径上的非入口交换机,则在更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项之后,所述控制器还需向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息;即网络中的交换机的流表项全部已经更新为新流表项。

可见,相比于基于加标签的流表更新方法,本发明实施例中的流表更新方案中无需在更新开始时同时存储所述第三流表项及对其修改后得到的新流表项,只需在将流表更新过程中流表项发生变化的非第一个交换机的流表项更新完毕后(如在第二转发路径上的非入口交换机上的流表项更新完毕后),直接更新第三交换机上的所述第三流表项,使得在更新过程中新旧流表项同时存储在流表中的时间较短,从而降低了系统开销,提高了系统资源的利用率。

本发明流表更新方法实施例三中,在上述实施例的基础上,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,步骤S101之前,还包括:

所述控制器将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项;

等待网络的端到端延时后,所述控制器向所述第三交换机发送第三删除消息,向第四交换机发送第四删除消息;

其中,所述第三删除消息用于指示所述第三交换机删除所述第三流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第四删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项;

对应地,所述控制器更新所述第三交换机上的第三流表项,包括:

所述控制器向所述第三交换机发送第二修改消息,所述第二修改消息用于指示所述第三交换机将所述第一中间流表项修改为第六流表项。

作为一种可实施方式,本发明实施例中,当第三交换机r∈所述第二转发路径P’且所述第三交换机r∈所述第一转发路径P,且所述第三交换机r为第一转发路径P和所述第二转发路径P’上的入口交换机(即所述第三交换机的下游路径中包括所述第二交换机),对应地,所述第三流表项为所述第三交换机上的旧流表项时,在更新所述第二转发路径上的非入口交换机上的流表项之前,所述控制器将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项。可见,本发明实施例中,通过向交换机发送中间流表项,使得在进行后续的流表更新操作时,转发路径受到更新影响的数据包都会上传至控制器缓存,从而避免数据包经历不一致的新旧混合路径。

进一步地,等待网络的端到端延时后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第三流表项的第三删除消息,向第四交换机发送用于指示所述第四交换机删除第五流表项的第四删除消息;其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项。

进一步地,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述控制器将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;

进一步地,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项;可选地,所述控制器将第四流表项发送给所述第二交换机,或者,所述控制器向所述第二交换机发送用于指示所述第二交换机将所述第二流表项修改为所述第四流表项的修改消息;所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项。可选地,若所述第二流表项为所述第二交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,则所述第二流表项与所述第四流表项的上游节点和/或下游节点不同。

进一步地,在所述第二转发路径上的非入口交换机上的流表项更新完毕后,所述控制器通过向所述第三交换机发送用于指示所述第三交换机将所述第一中间流表项修改为第六流表项的第二修改消息,以实现更新所述第三交换机上的第三流表项。可选地,若所述第三流表项为所述第三交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,则所述第三流表项与所述第六流表项的上游节点和/或下游节点不同。

对应地,步骤S102之后,还包括:所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第一中间流表项的删除消息,并将所述控制器缓存的数据包发送给原始目标节点;其中,所述原始目标节点为所述数据包对应旧流表项中的目标节点。

可选地,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;对应地,所述控制器更新第三交换机上的第三流表项的方式与本发明上述实施例二中更新第三交换机上的第三流表项的相应部分相同,此处不再赘述。

本发明实施例中具体的流表更新步骤如下:

1)若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,所述控制器将第一中间流表项发送给所述第三交换机(所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项);从而使得在进行后续的更新流表操作时,转发路径受到更新影响的数据包都会上传至控制器缓存,从而避免数据包经历不一致的新旧混合路径;

2)等待网络的端到端延时后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第三流表项的第三删除消息,向第四交换机发送指示所述第四交换机删除第五流表项的第四删除消息;其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项;

3)若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述控制器将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;

4)若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述控制器更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项;可选地,步骤3)与步骤4)并不分先后顺序,可以并列执行;

5)等待在所述非入口交换机上的流表项更新完毕后(此时网络中需要安装新流表项的交换机中除了所述第三交换机未安装新流表项之外,其它交换机都已经配置好新流表项),所述控制器向所述第三交换机发送用于指示所述第三交换机将所述第一中间流表项修改为第六流表项的第二修改消息;此时对于进入网络入口交换机的数据包各个交换机可以采用新流表项进行转发;

6)等待使用旧流表项处理的数据包全部离开网络后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第一中间流表项的删除消息,并将所述控制器缓存的数据包发送给原始目标节点;其中,所述原始目标节点为所述数据包对应旧流表项中的目标节点;

7)等待最长端到端延时,此时网络中缓存的数据包都已发回原始目标节点,而且新流表项已经全部配置完毕,标志着更新已经完成。

作为另一种可实施方式,本发明实施例中,当第三交换机r∈所述第二转发路径P’且所述第三交换机r∈所述第一转发路径P,且所述第三交换机r为第一转发路径P和所述第二转发路径P’上的入口交换机(即所述第三交换机的下游路径中包括所述第二交换机),对应地,所述第三流表项为所述第三交换机上的旧流表项时,在更新所述第二转发路径上的非入口交换机上的流表项之前,所述控制器将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项。可选地,当第二交换机r∈所述第二转发路径P’且所述第二交换机r∈所述第一转发路径P,且所述第二交换机r为所述第二转发路径P’上的非入口交换机时,在更新所述第二转发路径上的非入口交换机上的流表项之前,所述控制器将第二中间流表项发送给所述第二交换机;所述第二中间流表项为将所述第二流表项的操作修改为上传给控制器缓存后得到的新流表项。可见,本发明实施例中,通过向交换机发送中间流表项,使得在进行后续的流表更新操作时,转发路径受到更新影响的数据包都会上传至控制器缓存,从而避免数据包经历不一致的新旧混合路径。

进一步地,等待网络的端到端延时后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第三流表项的第三删除消息,向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息,向第四交换机发送用于指示所述第四交换机删除第五流表项的第四删除消息;其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项。

进一步地,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述控制器将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;

对应地,所述控制器通过向所述第二交换机发送用于指示所述第二交换机将所述第二中间流表项修改为第四流表项的修改消息;可选地,若所述第二流表项为所述第二交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,则所述第二流表项与所述第四流表项的上游节点和/或下游节点不同。

进一步地,在所述第二转发路径上的非入口交换机上的流表项更新完毕后,所述控制器通过向所述第三交换机发送用于指示所述第三交换机将所述第一中间流表项修改为第六流表项的第二修改消息,以实现更新所述第三交换机上的第三流表项;可选地,若所述第三流表项为所述第三交换机上的旧流表项中需要修改上游节点和/或下游节点的旧流表项,则所述第三流表项与所述第六流表项的上游节点和/或下游节点不同。

对应地,步骤S102之后,还包括:所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第一中间流表项的删除消息,以及向所述第二交换机发送用于指示所述第二交换机删除所述第二中间流表项的删除消息,并将所述控制器缓存的数据包发送给原始目标节点;其中,所述原始目标节点为所述数据包对应旧流表项中的目标节点。

本发明实施例中具体的流表更新步骤如下:

1)若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,所述控制器将第一中间流表项发送给所述第三交换机(所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项);可选地,当第二交换机r∈所述第二转发路径P’且所述第二交换机r∈所述第一转发路径P,且所述第二交换机r为所述第二转发路径P’上的非入口交换机时,所述控制器还需将第二中间流表项发送给所述第二交换机;所述第二中间流表项为将所述第二流表项的操作修改为上传给控制器缓存后得到的新流表项;从而使得在进行后续的更新流表操作时,转发路径受到更新影响的数据包都会上传至控制器缓存,从而避免数据包经历不一致的新旧混合路径;

2)等待网络的端到端延时后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第三流表项的第三删除消息,向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息,向第四交换机发送指示所述第四交换机删除第五流表项的第四删除消息;其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第五流表项为所述第四交换机上待删除的旧流表项;

3)若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述控制器将第一流表项发送给所述第一交换机;

4)所述控制器通过向所述第二交换机发送用于指示所述第二交换机将所述第二中间流表项修改为第四流表项的修改消息;可选地,步骤3)与步骤4)并不分先后顺序,可以并列执行;

5)等待在所述非入口交换机上的流表项更新完毕后(此时网络中需要安装新流表项的交换机中除了所述第三交换机未安装新流表项之外,其它交换机都已经配置好新流表项),所述控制器通过向所述第三交换机发送用于指示所述第三交换机将所述第一中间流表项修改为第六流表项的第二修改消息,以实现更新所述第三交换机上的第三流表项;此时对于进入网络入口交换机的数据包各个交换机可以采用新流表项进行转发;

6)等待使用旧流表项处理的数据包全部离开网络后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第一中间流表项的删除消息,以及向所述第二交换机发送用于指示所述第二交换机删除所述第二中间流表项的删除消息,并将所述控制器缓存的数据包发送给原始目标节点;其中,所述原始目标节点为所述数据包对应旧流表项中的目标节点;

7)等待最长端到端延时,此时网络中缓存的数据包都已发回原始目标节点,而且新流表项已经全部配置完毕,标志着更新已经完成。

可见,相比于基于控制器缓存的流表更新方法,本发明实施例中的流表更新方案中的中间流表项不包含所述第五流表项对应的中间规则,即需要存储的中间流表项较少,从而降低了系统开销,提高了系统资源的利用率。

为了解决现有技术中由于对全部交换机采取相同的更新方法而导致的系统资源浪费,本发明实施例中在控制器更新交换机中的流表前先对需要更新的流表项进行了分类,进一步地,协调不同类别流表项的更新顺序,以减少在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

可选地,步骤S101之前,还包括:

所述控制器将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;

其中,所述非入口交换机上的流表项包括:所述第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

本发明实施例中,所述控制器在更新流表项之前,先对所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项进行分析,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;其中,所述非入口交换机上的流表项包括:所述第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项;进一步地,所述控制器根据划分结果依次更新流表项,如先更新所述非入口交换机上的流表项,其次更新所述入口交换机上的流表项,可减少在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

可选地,所述控制器将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项,包括:

所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径;

所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

本发明实施例中,所述控制器对所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项进行对比分析,确定出在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流(属于同一匹配域)的在网络中经过交换机的顺序构建所述第一转发路径,可选地,利用深度优先搜素(DepthFirstSearch,简称DFS)等算法,根据在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,构建所述第一转发路径;进一步地,确定出在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径,其中,构建所述第二转发路径可采用构建所述第一转发路径相同的方式;可选地,每个流表项可包括以下至少一种:交换机编号、规则编号、匹配域、操作、优先级、计数器、上游节点及下游节点等;其中,匹配域可以是源或目标IP地址、源IP地址、目标MAC地址或者VLAN标签等;所述操作可以为上传给控制器缓存、丢弃、转发或者修改包头内容等操作。可选地,流表项发生变化的情况包括:某个交换机上的一条流表项中的上一跳(即上游节点)或下一跳节点(即下游节点)更改、一条流表项中对匹配的数据包执行的动作发生变化(即流表项中的操作更改了)或者在流表中增加或删除了一条流表项等。本发明实施例中,若在网络中存在多条数据流的更为复杂的情况下,可以通过细分或合并确保构建的不同路径的匹配域之间无重叠,相互独立。值得注意的是,若控制器中存有旧路径信息,可选地,可省略重建旧路径信息的过程,可直接从所述控制器中获取。

进一步地,所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则。可选地,所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,包括:

1)所述控制器根据所述第一转发路径和所述第二转发路径确定所述第一交换机(其中,所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机);

所述控制器确定所述第一交换机上增加的第一流表项属于所述第一类规则,可选地,所述第一类规则用于指示先更新仅属于所述第二转发路径上的非入口交换机上的流表项,如所述第一交换机上的第一流表项;或者,

2)所述控制器根据所述第一转发路径和所述第二转发路径确定所述第二交换机(所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机);

所述控制器确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则,可选地,所述第二类规则用于指示先更新既属于所述第一转发路径又属于所述第二转发路径,且为所述第二转发路径上的非入口交换机上的流表项,如所述第二交换机上的第二流表项;或者,

3)所述控制器根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

所述控制器确定所述第三交换机上发生变化的流表项属于所述第三类规则,可选地,所述第三类规则用于指示在所述第二转发路径上的非入口交换机上的流表项更新完毕后,更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项,如所述第三交换机上的第三流表项;

A)若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

B)若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

C)若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;或者,

4)所述控制器根据所述第一转发路径和所述第二转发路径确定所述第四交换机(其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机);

所述控制器确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则,可选地,所述第四类规则用于指示等待使用旧流表项处理的数据包全部离开网络后,删除仅属于所述第一转发路径上的非入口交换机上的待删除流表项。

图2A为本发明流表更新方法实施例四的流程示意图。在本发明上述实施例的基础上,如图2A所示,本实施例的方法可以包括:

S201、控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径。

S202、所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径。

图2B为本发明数据平面初始状态下的内部结构示意图,如图2B所示,由两个用户(UserA和UserB)、8个交换机(R0至R7)和两个服务器(S1和S2)组成;在数据平面的初始状态下,用户A的流量允许经过R0(入口交换机)后依次经过交换机R3、R2、R5和R6到达服务器S1;而用户B的流量被R0拦截。对应地,初始状态的旧流表如下表所示(表1为初始状态的旧流表)。

表1、初始状态的旧流表

图2C为本发明数据平面最终状态下的内部结构示意图,如图2C所示,来自用户A和B的数据包都允许到达服务器,并且为了保证负载均衡对其转发路径进行了重新规划;其中,用户A的流量经过R0后依次经过R3、R4、R5和R7到达服务器S2,用户B的流量经过R0后依次经过R1、R2、R5和R6到达服务器S1。本发明下述实施例中将介绍控制器如何进行控制和协调使网络从初始状态更新到最终状态,并满足保持一致性和降低资源开销的要求。对应地,最终状态的新流表如下表所示(表2为最终状态的新流表)。

表2、最终状态的新流表

本发明实施例中,根据表1和表2所述的流表项信息,所述控制器可获知初始转发路径信息和最终转发路径信息,如表3所示(表3为初始转发路径及最终转发路径信息表一)。

表3、重构建出的数据流路径信息表一

匹配域初始转发路径最终转发路径AR0->R3->R2->R5->R6R0->R3->R4->R5->R7BR0R0->R1->R2->R5->R6

本发明实施例中,步骤S201中所述控制器通过对比分析所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项(其中,在更新流表前后只有R0A和R0A’完全相同,其它流表项都发生了变化,即只有R0交换机中的流表项未发生变化),并将所述流表项发生变化的交换机(即R3、R2、R5及R6)按照数据流在网络中经过交换机的顺序构建所述第一转发路径,如表4所示(表4为重构建出的数据流路径信息表二):匹配域为来自A的数据包的第一转发路径是R3->R2->R5->R6,匹配域为来自B的数据包的第一转发路径是R0。

本发明实施例中,步骤S202中所述控制器通过对比分析所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项(其中,在更新流表前后只有R0A和R0A’完全相同,其它流表项都发生了变化,即只有R0交换机中的流表项未发生变化),并将所述流表项发生变化的交换机(即R3、R4、R5及R7)按照数据流在网络中经过交换机的顺序构建所述第二转发路径,如表4所示(表4为重构建出的数据流路径信息表二):匹配域为来自A的数据包的第二转发路径是R3->R4->R5->R7;匹配域为来自B的数据包的第二转发路径是R0->R1->R2->R5->R6。

表4、重构建出的数据流路径信息表二

匹配域第一转发路径P第二转发路径P’AR3->R2->R5->R6R3->R4->R5->R7BR0R0->R1->R2->R5->R6

S203、所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类。

本发明实施例中,所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,具体的分类方法详见本发明上述实施例中的相应部分,此处不再赘述;可选地,分类结果如表5所示(表5为分类结果)。

表5、分类结果

根据表5可知,1)匹配域A对应的R4和R7属于所述第二转发路径P’,但不属于所述第一转发路径P,且为所述第二转发路径上的非入口交换机,则匹配域A对应的R4和R7为第一交换机,对应地,R4A及R7A为第一流表项(属于第一类规则);匹配域B对应的R1、R2、R5及R6属于所述第二转发路径P’,但不属于所述第一转发路径P,且为所述第二转发路径上的非入口交换机,则匹配域B对应的R1、R2、R5及R6为第一交换机,对应地,R1B、R2B、R5B及R6B为第一流表项(属于第一类规则);2)匹配域A对应的R5属于所述第二转发路径P’及所述第一转发路径P,且为所述第二转发路径上的非入口交换机,则匹配域A对应的R5为第二交换机,对应地,对应地,R5A为第四流表项,R5A’为第二流表项,R5A及R5A’属于第二类规则;3)匹配域A对应的R3属于所述第二转发路径P’及所述第一转发路径P,且为所述第一转发路径和所述第二转发路径上的入口交换机,则匹配域A对应的R3为第三交换机,对应地,R3A为第六流表项,R3A’为第三流表项,R3A及R3A’属于第三类规则;匹配域B对应的R0属于所述第二转发路径P’及所述第一转发路径P,且为所述第一转发路径和所述第二转发路径上的入口交换机,则匹配域B对应的R0为第三交换机,对应地,R0B为第六流表项,R0B’为第三流表项,R0B及R0B’属于第三类规则;4)匹配域A对应的R2和R6属于所述第一转发路径P,但不属于所述第二转发路径P’,且为所述第一转发路径上的非入口交换机,则匹配域A对应的R2和R6为第四交换机,对应地,R2A’及R6A’为第五流表项(属于第四类规则)。

S204、所述控制器将所述第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项。

本发明实施例中,所述控制器将所述第一流表项分别发送给对应的第一交换机(如将R4A发送给R4,将R7A发送给R7等),可选地,还可设置所述第一流表项的VLAN匹配域为1及优先级为最高。

S205、所述控制器将所述第四流表项发送给所述第二交换机。

本发明实施例中,所述控制器将所述第四流表项发送给对应的所述第二交换机(如将R5A’发送给R5),可选地,还可设置所述第四流表项的VLAN匹配域为1及优先级为最高,并保留优先级较低的所述第二流表项。可选地,步骤S204与步骤S205并不分先后顺序,可以并列执行。

S206、在所述非入口交换机上的流表项更新完毕后,所述控制器更新所述第三交换机上的所述第三流表项。

本发明实施例中,由于匹配域A对应的R3及匹配域B对应的R0属于所述第三交换机,对应地,所述控制器通过分别向所述第三交换机发送用于指示所述第三交换机修改对应的第三流表项的第一修改消息,以实现更新第三交换机上的第三流表项,如向R3发送用于指示R3将R3A’修改为R3A的第一修改消息,向R0发送用于指示R0将R0B’修改为R0B的第一修改消息;可选地,还可为新数据包设置VLAN标签为1。

S207、等待使用旧流表项处理的数据包全部离开网络后,所述控制器向第四交换机发送用于指示第四交换机删除第五流表项的第二删除消息,以及向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息。

本发明实施例中,所述控制器分别向所述第四交换机发送用于指示所述第四交换机删除对应的第五流表项的第二删除消息,如向R2发送用于指示R2删除R2A’的第二删除消息,向R6发送用于指示R6删除R6A’的第二删除消息;并向R5发送用于指示R5删除R5A’的删除消息。

表6为本发明与基于加标签的流表更新流程的对比表,如表6所示,本发明与单纯基于加标签的流表更新方案相比,对于规则R3A的更新处理方法不同:本发明的流表更新方案相对于基于加标签的流表更新方案,本发明中的第三流表项R3A’和第六流表项R3A(即第三类规则)同时存储在流表中的时间较短;从而降低了系统开销,提高了系统资源的利用率。

表6、本发明与基于加标签的流表更新流程的对比表

图3为本发明流表更新方法实施例五的流程示意图。在本发明上述实施例的基础上,如图3所示,本实施例的方法可以包括:

S301、控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径。

S302、所述控制器根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径。

S303、所述控制器根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类。

本发明实施例中,步骤S301-S303的实现方式与本发明上述实施例中的步骤S201-步骤S203的实现方式相同,详见上述实施例,此处不再赘述。

S304、所述控制器将第一中间流表项发送给所述第三交换机,以及将第二中间流表项发送给所述第二交换机。

其中,所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项;所述第二中间流表项为将所述第二流表项的操作修改为上传给控制器缓存后得到的新流表项。

本发明实施例中,控制器将第二中间流表项R5A”发送给R5,以及将第一中间流表项R3A”发送给R3;其中,所述第二中间流表项R5A”为将所述第二流表项R5A’的操作修改为上传给控制器缓存后得到的新流表项;所述第一中间流表项R3A”为将所述第三流表项R3A’的操作修改为上传给控制器缓存后得到的新流表项;从而使得在进行后续的更新流表操作时转发路径受到更新影响的数据包都会上传至控制器缓存,从而避免数据包经历不一致的新旧混合路径。

S305、等待网络的端到端延时后,所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第三流表项的第三删除消息,向所述第二交换机发送用于指示所述第二交换机删除所述第二流表项的删除消息,向第四交换机发送用于指示所述第四交换机删除第五流表项的第四删除消息。

本发明实施例中,所述控制器向R3发送用于指示R3删除R3A’的第三删除消息,向R5发送用于指示R5删除R5A’的删除消息,以及向R2发送用于指示R2删除R2A’的第四删除消息,及向R6发送用于指示R6删除R6A’的第四删除消息。

S306、所述控制器将所述第一流表项发送给所述第一交换机,并向所述第二交换机发送用于指示所述第二交换机将所述第二中间流表项修改为第四流表项的修改消息。

S307、等待非入口交换机上的流表项更新完毕后,所述控制器向所述第三交换机发送用于指示所述第三交换机将所述第一中间流表项修改为第六流表项的第二修改消息。

本发明实施例中,所述控制器通过向R3发送用于指示R3将R3A”修改为R3A的修改消息,以使R3根据所述修改消息进行修改;另外,匹配域B对应的R0虽然也为第三交换机,但由于根据第一转发路径获知R0的下游路径中未包括第二交换机,则所述控制器无需通过向R0发送用于指示R0将R0B’修改为R0B的修改消息,以实现更新R0上的R0B’。

S308、所述控制器向所述第三交换机发送用于指示所述第三交换机删除所述第一中间流表项的删除消息,以及向所述第二交换机发送用于指示所述第二交换机删除所述第二中间流表项的删除消息,并将所述控制器缓存的数据包发送给原始目标节点;其中,所述原始目标节点为所述数据包对应旧流表项中的目标节点。

本发明实施例中,所述控制器向R5发送用于指示R5删除R5A”的删除消息,以及向所述R3发送用于指示R3删除R3A”的删除消息,并将所述控制器缓存的数据包发送给原始目标节点。

S309、等待最长端到端延时,完成更新。

表7为本发明与基于控制器缓存的流表更新流程的对比表,如表7所示,本发明与单纯基于控制器缓存的流表更新方案相比,对于所述第五流表项(R2A’和R6A’)的更新处理方法不同:在基于控制器缓存的流表更新方案中需要写入中间流表项R2A”和R6A”,并将相应的数据包发送给控制器进行缓存,而本发明的流表更新方案中无需写入这两个中间流表项(R2A”和R6A”);从而降低了系统开销,提高了系统资源的利用率。

表7、本发明与基于控制器缓存的流表更新流程的对比表

综上所述,本发明实施例中,通过在控制器执行流表更新之前对流表中的流表项进行分类,并协调不同类别流表项的更新顺序,不仅可确保在整个流表更新过程中所有交换机中流表更新的一致性,而且降低了系统开销,提高了系统资源的利用率;进一步地,所述分析检测的过程可以在服务器上离线提前执行,从而能有效降低在网络更新实际部署过程中给系统带来的额外开销;进一步地,相比于基于控制器缓存的流表一致性更新方法,减少了需要写入的中间流表项的数目,降低了上传给控制器缓存的数据包的数目,从而避免控制链路带宽资源的浪费;进一步地,还可减少控制器所要发送的更新指令(如流表下发或者上传控制器缓存等),从而减少了完成流表更新所需时间,提高了流表更新的效率。

图4为本发明流表更新方法实施例六的流程示意图。本实施例的方案可应用于控制和转发分离架构下的网络中的流表更新;上述实施例中控制器对流表进行分析分类,该方案与本发明上述实施例的区别为:本实施例中由流表分析设备对流表进行分析分类,然后将划分结果发送给控制器,以便控制器根据划分结果进行流表更新,从而实现了流表的一致性更新。如图4所示,本实施例的方法可以包括:

S401、流表分析设备接收控制器发送的流表信息。

其中,所述流表信息包括:初始转发路径、所述初始转发路径所包括的所有交换机的流表项、最终转发路径以及所述最终转发路径所包括的所有交换机的流表项;其中,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径。

S402、所述流表分析设备根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项。

其中,所述非入口交换机上的流表项包括:第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项;所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机。

可选地,步骤S402包括:所述流表分析设备根据所述流表信息,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

所述流表分析设备根据所述流表信息,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建第二转发路径;

所述流表分析设备根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

本发明实施例中,流表分析设备对所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项进行对比分析,确定出在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流(属于同一匹配域)的在网络中经过交换机的顺序构建所述第一转发路径,可选地,利用深度优先搜素(DepthFirstSearch,简称DFS)等算法,根据在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,构建所述第一转发路径;进一步地,确定出在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径,其中,构建所述第二转发路径可采用构建所述第一转发路径相同的方式;可选地,每个流表项可包括以下至少一种:交换机编号、规则编号、匹配域、操作、优先级、计数器、上游节点及下游节点等;其中,匹配域可以是源或目标IP地址、源IP地址、目标MAC地址或者VLAN标签等;所述操作可以为上传给控制器缓存、丢弃、转发或者修改包头内容等操作。可选地,流表项发生变化的情况包括:某个交换机上的一条流表项中的上一跳(即上游节点)或下一跳节点(即下游节点)更改、一条流表项中对匹配的数据包执行的动作发生变化(即流表项中的操作更改了)或者在流表中增加或删除了一条流表项等。本发明实施例中,若在网络中存在多条数据流的更为复杂的情况下,可以通过细分或合并确保构建的不同路径的匹配域之间无重叠,相互独立。值得注意的是,若控制器中存有旧路径信息,可选地,可省略重建旧路径信息的过程,可直接从所述控制器中获取。

进一步地,所述流表分析设备根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则。可选地,所述流表分析设备根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,包括:

1)所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第一交换机(其中,所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机);

所述流表分析设备确定所述第一交换机上增加的第一流表项属于所述第一类规则,可选地,所述第一类规则用于指示所述控制器先更新仅属于所述第二转发路径上的非入口交换机上的流表项,如所述第一交换机上的第一流表项;或者,

2)所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第二交换机(所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机);

所述流表分析设备确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则,可选地,所述第二类规则用于指示所述控制器先更新既属于所述第一转发路径又属于所述第二转发路径,且为所述第二转发路径上的非入口交换机上的流表项,如所述第二交换机上的第二流表项;或者,

3)所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

所述流表分析设备确定所述第三交换机上发生变化的流表项属于所述第三类规则,可选地,所述第三类规则用于指示所述控制器在所述第二转发路径上的非入口交换机上的流表项更新完毕后,更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项,如所述第三交换机上的第三流表项;

A)若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

B)若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

C)若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;或者,

4)所述流表分析设备根据所述第一转发路径和所述第二转发路径确定所述第四交换机(其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机);

所述流表分析设备确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则,可选地,所述第四类规则用于指示所述控制器等待使用旧流表项处理的数据包全部离开网络后,删除仅属于所述第一转发路径上的非入口交换机上的待删除流表项。

可选地,本发明实施例中,所述流表分析设备根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项的具体步骤,与本发明上述实施例中控制器将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项的步骤类似(具体细节,可参加本发明上述实施例中步骤S201-S203,仅需将“控制器”替换为“流表分析设备”),此处不再赘述。

S403、所述流表分析设备将流表项划分结果发送给所述控制器,以使所述控制器根据所述流表项划分结果依次更新流表。

本发明实施例中,所述流表分析设备将流表项划分结果发送给控制器,以便所述控制器根据所述流表项划分结果先更新非入口交换机上的流表项,其次更新入口交换机上的流表项,具体地,所述控制器依次更新流表项的方式详见本发明上述实施例中控制器更新流表项的部分,此处不再赘述,从而可确保在整个流表更新过程中所有交换机中流表更新的一致性,并且减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

综上所述,本发明实施例中,流表分析设备接收控制器发送的流表信息,并根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;进一步地,所述流表分析设备将流表项划分结果发送给所述控制器,以使所述控制器根据所述流表项划分结果依次更新流表;从而可确保在整个流表更新过程中所有交换机中流表更新的一致性,并且减少了在流表更新过程中需要存储的流表项,从而降低了系统开销,提高了系统资源的利用率。

图5为本发明控制器实施例一的结构示意图。其中,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径,其中,所述初始转发路径包括第一转发路径,所述最终转发路径包括第二转发路径,在所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机,在所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机如图5所示,本实施提供的所述控制器50可以包括:第一更新模块501及第二更新模块502。

其中,第一更新模块501用于更新所述第二转发路径上的非入口交换机上的流表项;

第二更新模块502用于在所述非入口交换机上的流表项更新完毕后,更新所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

可选地,若所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机,所述第一更新模块501具体用于:

将第一流表项发送给所述第一交换机,其中,所述第一流表项为所述第一交换机上增加的新流表项;和/或

若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述第一更新模块501具体用于:

更新所述第二交换机上的第二流表项,其中,所述第二流表项为所述第二交换机上的旧流表项。

可选地,所述第二更新模块502具体用于:

更新第三交换机上的第三流表项;

其中,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项。

可选地,若所述第二转发路径包括所述第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待增加的新流表项,所述第二更新模块502具体用于:

将所述第三流表项发送给所述第三交换机;

或者,若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上待删除的旧流表项,所述第二更新模块502具体用于:

向所述第三交换机发送第一删除消息,所述第一删除消息用于指示所述第三交换机删除所述第三流表项;

或者,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项,所述第二更新模块502具体用于:

向所述第三交换机发送第一修改消息,所述第一修改消息用于指示所述第三交换机修改所述第三流表项。

可选地,若所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机,所述第一更新模块501还具体用于:

将第四流表项发送给所述第二交换机;所述第四流表项为将所述第二交换机上的所述第二流表项修改后得到的新流表项。

可选地,所述控制器还包括:

第一删除模块,用于向第四交换机发送第二删除消息;

其中,所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第二删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项。

可选地,若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三流表项为所述第三交换机上的旧流表项;所述第二更新模块还具体用于:

将第一中间流表项发送给所述第三交换机;所述第一中间流表项为将所述第三流表项的操作修改为上传给控制器缓存后得到的新流表项;

所述控制器还包括:第二删除模块,用于等待网络的端到端延时后,向所述第三交换机发送第三删除消息,向第四交换机发送第四删除消息;

其中,所述第三删除消息用于指示所述第三交换机删除所述第三流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机;所述第四删除消息用于指示所述第四交换机删除第五流表项;所述第五流表项为所述第四交换机上待删除的旧流表项;

对应地,所述第二更新模块还具体用于:向所述第三交换机发送第二修改消息,所述第二修改消息用于指示所述第三交换机将所述第一中间流表项修改为第六流表项。

可选地,所述控制器还包括:

划分模块,用于将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;

其中,所述非入口交换机上的流表项包括:所述第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项。

可选地,所述划分模块,包括:

第一确定单元,用于根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

第二确定单元,用于根据所述初始转发路径上所包括的所有交换机的流表项和所述最终转发路径上所包括的所有交换机的流表项,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第二转发路径;

划分单元,用于根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

可选地,所述划分单元具体用于:

根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

本实施例的控制器可以用于执行本发明上述流表更新方法实施例一至实施例五中任意实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明控制器实施例二的结构示意图。如图6所示,本实施例提供的控制器60可以包括处理器601和存储器602。控制器60还可以包括数据接口单元603,该数据接口单元603可以和处理器601相连。其中,数据接口单元603用于发送/接收数据信息,存储器602用于存储执行指令;当控制器60运行时,处理器601与存储器602之间通信,处理器601调用存储器602中的执行指令,用以执行上述流表更新方法实施例一至实施例五中任意实施例中的操作。

本实施例的控制器可以用于执行本发明上述流表更新方法实施例一至实施例五中任意实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本发明流表分析设备实施例一的结构示意图。如图7所示,本实施提供的流表分析设备70可以包括:接收模块701、划分模块702及发送模块703。

其中,接收模块701用于接收控制器发送的流表信息,所述流表信息包括:初始转发路径、所述初始转发路径所包括的所有交换机的流表项、最终转发路径以及所述最终转发路径所包括的所有交换机的流表项;其中,更新前的流表指示的路径为初始转发路径,更新后的流表指示的路径为最终转发路径;

划分模块702用于根据所述流表信息,将所述初始转发路径上所包括的所有交换机的流表项以及所述最终转发路径上所包括的所有交换机的流表项中,在更新流表时发生变化的流表项划分为非入口交换机上的流表项以及入口交换机上的流表项;其中,所述非入口交换机上的流表项包括:第二转发路径上的非入口交换机上的流表项;所述入口交换机上的流表项包括:所述第一转发路径和所述第二转发路径上的入口交换机上的流表项;所述第一转发路径上包括的交换机为在所述初始转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;所述第二转发路径上包括的交换机为在所述最终转发路径上所包括的交换机中,在更新时流表项发生变化的交换机;

发送模块703用于将流表项划分结果发送给所述控制器,以使所述控制器根据所述流表项划分结果依次更新流表。

可选地,所述划分模块,包括:

第一确定单元,用于根据所述流表信息,确定在更新流表时所述初始转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建所述第一转发路径;

第二确定单元,用于根据所述流表信息,确定在更新流表时所述最终转发路径上所包括的所有交换机中流表项发生变化的交换机和所述交换机上发生变化的流表项,并将所述流表项发生变化的交换机按照数据流在网络中经过交换机的顺序构建第二转发路径;

划分单元,用于根据所述第一转发路径和所述第二转发路径,将所有所述交换机上发生变化的流表项进行分类,形成以下至少一种规则类别:第一类规则、第二类规则、第三类规则及第四类规则;

其中,所述第一类规则包括第一流表项;所述第一流表项为第一交换机上增加的新流表项;所述第二转发路径包括第一交换机,所述第一转发路径未包括所述第一交换机,且所述第一交换机为所述第二转发路径上的非入口交换机;

所述第二类规则包括:第二流表项以及将所述第二流表项修改后得到的第四流表项;所述第二流表项为第二交换机上的旧流表项;所述第一转发路径和所述第二转发路径均包括第二交换机,且所述第二交换机为所述第二转发路径上的非入口交换机;

若所述第二转发路径包括第三交换机,所述第一转发路径未包括所述第三交换机,且所述第三交换机为所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待增加的新流表项;

若所述第一转发路径包括所述第三交换机,所述第二转发路径未包括所述第三交换机,且所述第三交换机为所述第一转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项,所述第三流表项为所述第三交换机上待删除的旧流表项;

若所述第一转发路径和所述第二转发路径均包括第三交换机,且所述第三交换机为所述第一转发路径和所述第二转发路径上的入口交换机,对应地,所述第三类规则包括:第三流表项以及将所述第三流表项修改后得到的第六流表项,所述第三流表项为所述第三交换机上的旧流表项;

所述第四类规则包括:第五流表项;所述第五流表项为第四交换机上待删除的旧流表项;所述第一转发路径包括所述第四交换机,所述第二转发路径未包括所述第四交换机,且所述第四交换机为所述第一转发路径上的非入口交换机。

可选地,所述划分单元具体用于:

根据所述第一转发路径和所述第二转发路径确定所述第一交换机;

确定所述第一交换机上增加的第一流表项属于所述第一类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第二交换机;

确定所述第二交换机上的旧流表项中需要修改的第二流表项以及将所述第二流表项修改后得到的第四流表项均属于所述第二类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第三交换机;

确定所述第三交换机上发生变化的流表项属于所述第三类规则;或者,

根据所述第一转发路径和所述第二转发路径确定所述第四交换机;

确定所述第四交换机上待删除的所述第五流表项属于所述第四类规则。

本实施例的流表分析设备可以用于执行本发明上述流表更新方法实施例六中的技术方案,其实现原理和技术效果类似,此处不再赘述。

图8为本发明流表分析设备实施例二的结构示意图。如图8所示,本实施例提供的流表分析设备80可以包括处理器801和存储器802。流表分析设备80还可以包括数据接口单元803,该数据接口单元803可以和处理器801相连。其中,数据接口单元803用于发送/接收数据信息,存储器802用于存储执行指令;当流表分析设备80运行时,处理器801与存储器802之间通信,处理器801调用存储器802中的执行指令,用以执行上述流表更新方法实施例六中的操作。

本实施例的流表分析设备可以用于执行本发明上述流表更新方法实施例六中的技术方案,其实现原理和技术效果类似,此处不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号