CN105490943A - 一种流表项的处理方法、控制器和交换机 - Google Patents

一种流表项的处理方法、控制器和交换机 Download PDF

Info

Publication number
CN105490943A
CN105490943A CN201410481904.0A CN201410481904A CN105490943A CN 105490943 A CN105490943 A CN 105490943A CN 201410481904 A CN201410481904 A CN 201410481904A CN 105490943 A CN105490943 A CN 105490943A
Authority
CN
China
Prior art keywords
list item
logic flow
subflow
association factor
flow list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410481904.0A
Other languages
English (en)
Other versions
CN105490943B (zh
Inventor
郑秀丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Huawei Digital Technologies Co Ltd
Original Assignee
Hangzhou Huawei Digital Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Huawei Digital Technologies Co Ltd filed Critical Hangzhou Huawei Digital Technologies Co Ltd
Priority to CN201410481904.0A priority Critical patent/CN105490943B/zh
Publication of CN105490943A publication Critical patent/CN105490943A/zh
Application granted granted Critical
Publication of CN105490943B publication Critical patent/CN105490943B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例提供一种流表项的处理方法、控制器和交换机,涉及通信领域,用以解决多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题。具体方案为:在控制器和交换机中建立逻辑流表和表示逻辑流表项和子流表项关联关系的关联因子关系,当控制器在对逻辑流表中的逻辑流表项进行操作时,更新为交换机维护的关联因子关系,并通过发送控制面消息将相应的控制信息通知给交换机,使得交换机同步更新本地的逻辑流表、关联因子表和子流表项,或,当交换机在对逻辑流表中的逻辑流表项进行操作时,通过发送控制面消息将相应的控制信息通知给控制器,使得控制器进行同步更新。本发明用于对流表项的操作。

Description

一种流表项的处理方法、控制器和交换机
技术领域
本发明涉及通信领域,尤其涉及一种流表项的处理方法、控制器和交换机。
背景技术
随着互联网的发展,互联网业务对互联网提出了越来越高的传输质量要求,为了修改互联网以满足新业务的需求,提出了一种新型网络创新架构-软件定义网络(SoftwareDefinedNetwork,SDN),其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,实现了网络流量的灵活控制。OpenFlow网络由OpenFlow交换机(OpenFlowSwitch,OFS)、OpenFlow控制器(OpenFlowController,OFC)和OpenFlowFlowVisor(运行于OFS和OFC之间,用于实现网络虚拟化)三部分组成。其中,OFS由流表、安全通道和OpenFlow协议(OpenFlowProTocol,OFPT)三部分组成。每个OFS的流水线包含多个流表,每个流表由多个流表项组成,每个流表项代表一个转发规则,进入OFS的数据包通过查询流表来获得该数据包转发的目的端口。
这样,每个OFS中的多个流表形成了多流表架构。在多流表架构下,存在流表项复用的情况,如图1所示。为了便于说明问题,可以将流表项分为两类:子流表项和逻辑流表项。其中,子流表项为流表中每个具体的用于与数据包匹配的流表项,如图1中的f(n,i)。逻辑流表项为一个数据流在多流表中关联的所有子流表项组合,如图1中的逻辑流表项F(1)分别与子流表项f(0,x)、f(m,z)和f(n,i)关联。当子流表项被两个或者两个以上逻辑流表项共用时,该子流表项就称为复用子流表项,如图1中的f(m,z)。在多流表架构的子流表项复用的场景下,OFC可以对子流表项添加或修改,以及OFC/OFS对子流表项进行删除等操作,其中对于逻辑流表项删除的操作,OpenFlow1.4规范中包含以下三种逻辑流表项删除机制:OFC请求删除逻辑流表项、OFS根据逻辑流表项过期删除和OFS主动收回(OFSEvict)逻辑流表项。而当待删除的逻辑流表项中的某个子流表项为复用子流表项时,如果删除该逻辑流表项,则复用子流表项可能还在被其它逻辑流表项所用,此时便不能直接删除复用子流表项。
在现有技术的交换机SN640系统转发架构中,OFS的物理层的管理部件中保存有一计数器,该计数器可以统计子流表项正在被几个逻辑流表项使用,当OFC请求删除逻辑流表项或者OFS对逻辑流表项过期删除时,物理层可以根据计数器的计数,确定能否直接删除该待删除逻辑流表项中的子流表项。但是,OFS通过主动收回的方式删除逻辑流表项,且该待删除的逻辑流表项中有复用子流表项时,因为不清楚逻辑流表项与子流表项的具体关系,所以OFS通过主动收回的方式删除逻辑流表项时,就会导致复用子流表项也被直接删除,从而导致其他使用该复用子流表项的逻辑流表项也不能正常工作,多流表场景下子流表项复用时逻辑流表项操作存在不一致导致的不能对子流表项进行正确操作的问题,引发数据包转发障碍,也就是说,在多流表场景下,对于OFS通过主动收回的方式,现有技术只能对子流表项进行独立操作,不能对逻辑流表项进行独立删除操作。
发明内容
本发明的实施例提供一种流表项的处理方法、控制器和交换机,以解决多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种流表项的处理方法,包括:
控制器在确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表;
所述控制器向所述交换机发送控制面消息,所述控制面消息包括所述第一逻辑流表项,所述控制面消息用于使所述交换机根据所述第一逻辑流表项更新所述交换机本地的逻辑流表和所述交换机本地的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系用于表示所述控制器为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第一方面,在第一方面的第一种可能实现的方式中,所述控制器确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表包括:
所述控制器在为所述交换机配置子流表项后,根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项,所述第一逻辑流表项与为所述交换机配置的子流表项关联。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能实现的方式中,所述方法还包括:
所述控制器在增加所述第一逻辑流表项的同时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述控制器将为所述交换机配置的子流表项,和更新后所述第二关联因子关系中为所述交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至所述交换机,所述第二控制面消息用于使所述交换机根据所述第二控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能实现的方式中,所述根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项包括:
所述控制器将所述第一逻辑流表项的第二计数器的初始值设为0;
所述控制器将所述第一逻辑流表项的第二超时设定的值设为所述第一逻辑流表项中添加的子流表项的超时设定的值;
所述控制器将所述第一逻辑流表项的第二重要性设为所述第一逻辑流表项中添加的子流表项的优先级;
所述控制器为所述第一逻辑流表项分配用于标识所述第一逻辑流表项的标识信息;
所述控制器将与所述第一逻辑流表项关联的子流表项的标识信息按照在所述第一逻辑流表项中的跳转顺序组成元组,添加到所述第一逻辑流表项的标识元组中。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能实现的方式中,所述更新所述控制器为所述交换机维护的第二关联因子关系包括:
所述控制器根据为所述交换机配置子流表项后所述第二关联因子表中所有子流表项的标识信息,与所述第一逻辑表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,再根据所述关联关系在所述第二关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
所述控制器将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
所述控制器将为所述交换机配置的子流表项与所述第一逻辑流表项的关联值,与更新前所述第二关联因子表中为所述交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为所述交换机配置的子流表项的关联因子值。
结合第一方面的第二种可能的实现方式,在第一方面的第六种可能实现的方式中,在所述控制器发送所述第二控制面消息之前,所述方法还包括:
所述控制器将为所述交换机配置的子流表项在更新后的所述第二关联因子表中的关联因子值与1进行比较;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值等于1,则确定所述第二控制面消息的消息类型为新增类型,所述新增类型的第二控制面消息用于使所述交换机在所述交换机本地添加为所述交换机配置的子流表项;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值大于1,则确定所述第二控制面消息的消息类型为修改类型,所述修改类型的第二控制面消息用于使所述交换机在所述交换机本地修改为所述交换机配置的子流表项。
结合第一方面,在第一方面的第七种可能实现的方式中,所述控制器确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表包括:
所述控制器在确定所述交换机待删除的第一逻辑流表项后,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能实现的方式中,所述方法还包括:
在所述控制器删除所述第一逻辑流表项时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述控制器将与所述第一逻辑流表项关联的子流表项,和更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至所述交换机,所述第四控制面消息用于使所述交换机根据所述第四控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第一方面的第八种可能的实现方式,在第一方面的第九种可能实现的方式中,所述更新所述控制器为所述交换机维护的第二关联因子关系包括:
所述控制器将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述控制器删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述控制器根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值以及所述第一逻辑流表项的关联因子值。
结合第一方面的第八种可能的实现方式,在第一方面的第十种可能实现的方式中,在所述控制器发送所述第四控制面消息之前,所述方法还包括:
所述控制器将与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值与0进行比较;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值为0,则确定所述第四控制面消息的消息类型为删除类型,所述删除类型的第四控制面消息用于使所述交换机删除所述交换机本地中与所述第一逻辑流表项关联的子流表项;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值不为0,则确定所述第四控制面消息的消息类型为修改类型,所述修改类型的第四控制面消息用于使所述交换机修改所述交换机本地中与所述第一逻辑流表项关联的子流表项。
第二方面,提供一种流表项的处理方法,包括:
交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项;
所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表和所述交换机本地的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第二方面,在第二方面的第一种可能实现的方式中,所述交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项包括:
所述交换机接收所述控制器发送的第一控制面消息,所述第一控制面消息包括待增加的第一逻辑流表项。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能实现的方式中,所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表包括:
所述交换机根据所述第一控制面消息,在所述交换机本地的逻辑流表中添加所述第一逻辑流表项。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能实现的方式中,所述方法还包括:
所述交换机接收所述控制器发送的第二控制面消息,所述第二控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述交换机根据所述第二控制面消息在所述交换机本地配置子流表项;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第二方面或第二方面第一至第三种可能的实现方式中的任意一种,在第二方面的第四种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;优先级第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能实现的方式中,所述更新所述交换机本地的关联因子关系包括:
所述交换机根据添加所述第一逻辑流表项后所述关联因子表中所有子流表项的标识信息,与所述第一逻辑流表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,并在所述关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
所述交换机将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
所述交换机将与所述第一逻辑流表项关联的子流表项,和所述第一逻辑流表项的关联值,与更新前所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值。
结合第二方面,在第二方面的第六种可能实现的方式中,所述交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项包括:
交换机接收控制器发送的第三控制面消息,所述第三控制面消息包括待删除的第一逻辑流表项。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能实现的方式中,所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表包括:
所述交换机根据所述第三控制面消息,删除所述交换机本地的逻辑流表中所述第一逻辑流表项。
结合第二方面的第六种可能的实现方式,在第二方面的第八种可能实现的方式中,所述方法还包括:
所述交换机接收所述控制器发送的第四控制面消息,所述第四控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述交换机根据所述第四控制面消息在所述交换机本地配置子流表项;
其中,所述关联关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第二方面第六至第八种可能的实现方式中的任意一种,在第二方面的第九种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第二方面的第九种可能的实现方式,在第二方面的第十种可能实现的方式中,所述更新所述交换机本地的关联因子关系包括:
所述交换机将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述交换机删除更新后所述关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述交换机根据所述第一逻辑流表项的标识信息,删除所述关联因子表中所述第一逻辑流表项与所述关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
第三方面,提供一种流表项的处理方法,包括:
交换机在确定待删除的第一逻辑流表项后,在所述交换机本地的逻辑流表中删除所述第一逻辑流表项,并更新所述交换机本地的第二关联因子关系;
所述交换机向控制器发送第五控制面消息,所述第五控制面消息包括所述第一逻辑流表项,所述第五控制面消息用于使所述控制器根据所述第一逻辑流表项更新所述控制器本地中为所述交换机维护的逻辑流表和为所述交换机维护的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系和所述第二关联因子关分别用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第三方面,在第三方面的第一种可能实现的方式中,所述方法还包括:
所述交换机根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项;
其中,所述第一关联关系以第一关联因子表表示,所述第二关联关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能实现的方式中,所述更新所述交换机本地的第二关联因子关系包括:
所述交换机将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述交换机删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述交换机根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能实现的方式中,所述交换机根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项包括:
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值为0,则所述交换机在所述交换机本地的流表项中删除与所述第一逻辑流表项关联的子流表项;
所述交换机向所述控制器发送第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值,所述第六控制面消息用于使所述控制器确定所述控制器本地中为所述交换机维护的关联因子表是否已更新;
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值大于0,则所述交换机确定与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于所述预设的超时设定值,则所述交换机删除与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项;
若用于转发数据包的时间小于所述预设的超时设定值,则所述交换机根据与所述第一逻辑流表项关联的子流表项对应的关联因子值修改所述交换机本地的流表中相应的子流表项的关联因子值。
第四方面,提供一种流表项的处理方法,包括:
控制器接收交换机发送的第五控制面消息,所述第五控制面消息包括待删除的第一逻辑流表项;
所述控制器根据所述第五控制面消息,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项,并更新所述控制器为所述交换机维护的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第四方面,在第四方面的第一种可能实现的方式中,所述方法还包括:
所述控制器接收所述交换机发送的第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值;
所述控制器根据与所述第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和所述控制器本地中为所述交换机维护的关联因子关系中相应的子流表项的关联因子值是否相同,若不相同,则所述控制器发送异常告警;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第四方面,在第四方面的第三种可能实现的方式中,所述更新所述控制器为所述交换机维护的关联因子关系包括:
所述控制器将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述控制器根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
第五方面,提供一种控制器,包括:
更新单元,用于在确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表;
发送单元,用于向所述交换机发送控制面消息,所述控制面消息包括所述第一逻辑流表项,所述控制面消息用于使所述交换机根据所述第一逻辑流表项更新所述交换机本地的逻辑流表和所述交换机本地的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系用于表示所述控制器为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第五方面,在第五方面的第一种可能实现的方式中,所述更新单元具体用于:
在为所述交换机配置子流表项后,根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项,所述第一逻辑流表项与为所述交换机配置的子流表项关联。
结合第五方面的第一种可能的实现方式,在第五方面的第二种可能实现的方式中,所述更新单元还用于:在增加所述第一逻辑流表项的同时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述发送单元还用于:将为所述交换机配置的子流表项,和更新后所述第二关联因子关系中为所述交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至所述交换机,所述第二控制面消息用于使所述交换机根据所述第二控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第五方面的第一种或第二种可能的实现方式,在第五方面的第三种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第五方面的第三种可能的实现方式,在第五方面的第四种可能实现的方式中,所述更新单元具体用于:
将所述第一逻辑流表项的第二计数器的初始值设为0;
将所述第一逻辑流表项的第二超时设定的值设为所述第一逻辑流表项中添加的子流表项的超时设定的值;
将所述第一逻辑流表项的第二重要性设为所述第一逻辑流表项中添加的子流表项的优先级;
为所述第一逻辑流表项分配用于标识所述第一逻辑流表项的标识信息;
将与所述第一逻辑流表项关联的子流表项的标识信息按照在所述第一逻辑流表项中的跳转顺序组成元组,添加到所述第一逻辑流表项的标识元组中。
结合第五方面的第四种可能的实现方式,在第五方面的第五种可能实现的方式中,所述更新单元具体用于:
根据为所述交换机配置子流表项后所述第二关联因子表中所有子流表项的标识信息,与所述第一逻辑表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,再根据所述关联关系在所述第二关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
将为所述交换机配置的子流表项与所述第一逻辑流表项的关联值,与更新前所述第二关联因子表中为所述交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为所述交换机配置的子流表项的关联因子值。
结合第五方面的第二种可能的实现方式,在第五方面的第六种可能实现的方式中,还包括:
第一确定单元,用于将为所述交换机配置的子流表项在更新后的所述第二关联因子表中的关联因子值与1进行比较;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值等于1,则确定所述第二控制面消息的消息类型为新增类型,所述新增类型的第二控制面消息用于使所述交换机在所述交换机本地添加为所述交换机配置的子流表项;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值大于1,则确定所述第二控制面消息的消息类型为修改类型,所述修改类型的第二控制面消息用于使所述交换机在所述交换机本地修改为所述交换机配置的子流表项。
结合第五方面,在第五方面的第七种可能实现的方式中,所述更新单元具体用于:在确定所述交换机待删除的第一逻辑流表项后,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项。
结合第五方面的第七种可能的实现方式,在第五方面的第八种可能实现的方式中,所述更新单元还用于:在所述控制器删除所述第一逻辑流表项时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述发送单元还用于:将与所述第一逻辑流表项关联的子流表项,和更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至所述交换机,所述第四控制面消息用于使所述交换机根据所述第四控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第五方面的第八种可能的实现方式,在第五方面的第九种可能实现的方式中,所述更新单元具体用于:
将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值以及所述第一逻辑流表项的关联因子值。
结合第五方面的第九种可能的实现方式,在第五方面的第十种可能实现的方式中,还包括:
第二确定单元,用于将与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值与0进行比较;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值为0,则确定所述第四控制面消息的消息类型为删除类型,所述删除类型的第四控制面消息用于使所述交换机删除所述交换机本地中与所述第一逻辑流表项关联的子流表项;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值不为0,则确定所述第四控制面消息的消息类型为修改类型,所述修改类型的第四控制面消息用于使所述交换机修改所述交换机本地中与所述第一逻辑流表项关联的子流表项。
第六方面,提供一种交换机,包括:
接收单元,用于接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项;
更新单元,用于根据所述控制面消息,更新所述交换机本地的逻辑流表和所述交换机本地的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第六方面,在第六方面的第一种可能实现的方式中,所述接收单元具体用于:接收所述控制器发送的第一控制面消息,所述第一控制面消息包括待增加的第一逻辑流表项。
结合第六方面的第一种可能的实现方式,在第六方面的第二种可能实现的方式中,所述更新单元具体用于:根据所述第一控制面消息,在所述交换机本地的逻辑流表中添加所述第一逻辑流表项。
结合第六方面的第一种可能的实现方式,在第六方面的第三种可能实现的方式中,所述接收单元还用于:接收所述控制器发送的第二控制面消息,所述第二控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述更新单元还用于:根据所述第二控制面消息在所述交换机本地配置子流表项;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第六方面或第六方面第一至第三种可能的实现方式中的任意一种,在第六方面的第四种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;优先级第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第六方面的第四种可能的实现方式,在第六方面的第五种可能实现的方式中,所述更新单元具体用于:
根据添加所述第一逻辑流表项后所述关联因子表中所有子流表项的标识信息,与所述第一逻辑流表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,并在所述关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
将与所述第一逻辑流表项关联的子流表项,和所述第一逻辑流表项的关联值,与更新前所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值。
结合第六方面,在第六方面的第六种可能实现的方式中,所述接收单元具体用于:接收控制器发送的第三控制面消息,所述第三控制面消息包括待删除的第一逻辑流表项。
结合第六方面的第六种可能的实现方式,在第六方面的第七种可能实现的方式中,所述更新单元具体用于:根据所述第三控制面消息,删除所述交换机本地的逻辑流表中所述第一逻辑流表项。
结合第六方面的第七种可能的实现方式,在第六方面的第八种可能实现的方式中,所述接收单元还用于:接收所述控制器发送的第四控制面消息,所述第四控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述更新单元还用于:根据所述第四控制面消息在所述交换机本地配置子流表项;
其中,所述关联关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第六方面第六至第八种可能的实现方式中的任意一种,在第六方面的第九种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第六方面的第九种可能的实现方式,在第六方面的第十种可能实现的方式中,所述更新单元具体用于:
将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述关联因子表中所述第一逻辑流表项与所述关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
第七方面,提供一种交换机,包括:
删除单元,用于在确定待删除的第一逻辑流表项后,在所述交换机本地的逻辑流表中删除所述第一逻辑流表项;
更新单元,用于更新所述交换机本地的第二关联因子关系;
发送单元,用于向控制器发送第五控制面消息,所述第五控制面消息包括所述第一逻辑流表项,所述第五控制面消息用于使所述控制器根据所述第一逻辑流表项更新所述控制器本地中为所述交换机维护的逻辑流表和为所述交换机维护的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系和所述第二关联因子关分别用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第七方面,在第七方面的第一种可能实现的方式中,还包括:
确定单元,用于根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项;
其中,所述第一关联关系以第一关联因子表表示,所述第二关联关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第七方面或第七方面的第一种可能的实现方式,在第七方面的第二种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第七方面的第二种可能的实现方式,在第七方面的第三种可能实现的方式中,所述更新单元具体用于:
将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
结合第七方面的第三种可能的实现方式,在第七方面的第四种可能实现的方式中,所述确定单元具体用于:
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值为0,则在所述交换机本地的流表项中删除与所述第一逻辑流表项关联的子流表项;
向所述控制器发送第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值,所述第六控制面消息用于使所述控制器确定所述控制器本地中为所述交换机维护的关联因子表是否已更新;
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值大于0,则确定与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于所述预设的超时设定值,则删除与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项;
若用于转发数据包的时间小于所述预设的超时设定值,则根据与所述第一逻辑流表项关联的子流表项对应的关联因子值修改所述交换机本地的流表中相应的子流表项的关联因子值。
第八方面,提供一种控制器,包括:
接收单元,用于接收交换机发送的第五控制面消息,所述第五控制面消息包括待删除的第一逻辑流表项;
删除单元,用于根据所述第五控制面消息,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项;
更新单元,用于更新所述控制器为所述交换机维护的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
结合第八方面,在第八方面的第一种可能实现的方式中,所述接收单元还用于:接收所述交换机发送的第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值;
所述控制器还包括:确定单元,用于根据与所述第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和所述控制器本地中为所述交换机维护的关联因子关系中相应的子流表项的关联因子值是否相同,若不相同,则所述控制器发送异常告警;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
结合第八方面或第八方面的第一种可能的实现方式,在第八方面的第二种可能实现的方式中,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
结合第八方面,在第八方面的第三种可能实现的方式中,所述更新单元具体用于:将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
本发明实施例提供的一种流表项的处理方法、控制器和交换机,通过在控制器和交换机中建立的逻辑流表和表示逻辑流表项和子流表项的关联关系的关联因子表,当控制器在对逻辑流表中的逻辑流表项进行操作时,通过发送控制面消息将相应的控制信息通知给交换机,使得交换机同步更新本地的逻辑流表、关联因子表和子流表项,或者,当交换机在对逻辑流表中的逻辑流表项进行操作时,通过发送控制面消息将相应的控制信息通知给控制器,使得控制器同步更新本地的逻辑流表关联因子表,这样一来,控制器或交换机在对逻辑流表项进行操作时,便可以使得控制器和交换机对于逻辑流表项保持一致,进而能够对逻辑流表项进行独立的删除操作,因而能够解决多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为多流表架构下子流表项复用场景的示意图;
图2为OpenFlow流水线处理数据包的示意图;
图3为本发明实施例中OFC和OFS的框架图;
图4为本发明实施例提供的一种流表项处理方法流程示意图;
图5为本发明实施例提供的一种流表项处理方法流程示意图;
图6为本发明实施例提供的一种控制器增加逻辑流表项时流表项的处理方法流程示意图;
图7为本发明实施例提供的一种交换机增加逻辑流表项时流表项处理方法流程示意图;
图8为本发明实施例提供的一种增加逻辑流表项时的流表项处理方法流程示意图;
图9为本发明实施例提供的一种控制器删除逻辑流表项时流表项的处理方法流程示意图;
图10为本发明实施例提供的一种交换机删除逻辑流表项时流表项处理方法流程示意图;
图11为本发明实施例提供的一种删除逻辑流表项时流表项处理方法流程示意图;
图12为本发明实施例提供的一种交换机删除逻辑流表项时流表项的处理方法流程示意图;
图13为本发明实施例提供的一种控制器删除逻辑流表项时流表项的处理方法流程示意图;
图14为本发明实施例提供的一种删除逻辑流表项时流表项的处理方法流程示意图;
图15本发明实施例提供的一种控制器框架图;
图16本发明实施例提供的一种交换机框架图;
图17本发明实施例提供的一种交换机框架图;
图18本发明实施例提供的一种控制器框架图;
图19本发明实施例提供的一种控制器结构示意图;
图20本发明实施例提供的一种交换机结构示意图;
图21本发明实施例提供的一种交换机结构示意图;
图22本发明实施例提供的一种控制器结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在SDN网络架构中,OpenFlow在OFS上实现数据转发,在OFC上实现数据的转发控制,从而实现了数据转发层和控制层的分离,因此网络协议和交换策略的升级只需要改动控制层,从而实现了网络流量的灵活控制。具体来说,如果网络是基于OpenFlow技术实现的,经过OFS的每个新的数据流都必须由OFC来做出转发决定,OFC可以通过事先规定好的接口操作来控制OFS中的流表,达到控制数据转发的目的。
OFS是整个OpenFlow网络的核心部件,主要负责管理数据层的转发。OFS接收到数据包后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给OFC,由控制层决定转发端口。每个OFS的流水线中可以包含一个或者多个流表。而每次进行数据转发或处理时,只有一个单一的流表的OFS也是有效的,而且在这种情况下流水线处理进程可以大大简化。每个流表包含多个子流表项,一个数据流在多流表中关联的所有子流表项组合称为逻辑流表项。其中,子流表项的格式如表1所示:
表1
Match fields Priority Counters Instructions Timeouts Importance Cookie_f
匹配字段 优先级 计数器 指令 超时设定 重要性 标识
其中,匹配字段:用于与待转发的数据包的数据匹配字段进行匹配。数据包匹配字段依赖于数据包类型,这些类型通常包括在各种数据包的报头字段中,如以太网源地址或IPv4目的地址。除了通过数据包报头进行匹配,也可以通过入口端口和元数据字段进行匹配。数据包匹配字段中的值,用于查找匹配的子流表项。
优先级:表明子流表项的匹配次序,优先级高的子流表项先被选择。
计数器:用于统计子流表项与数据包匹配的次数和总字节数等。
指令:每个流表项中包含一组指令,当一个数据包与流表项相匹配时指令会被执行。这些指令可以更改数据包,行动组和/或流水线处理。
超时设定:每个子流表项都有一个与其相关的空闲超时(idle_timeout)和硬超时(hard_timeout)值。idle_timeout的值设定,用于如果子流表项在超过该设定值的时间后还没有被匹配,就删除该子流表项;hard_timeout的值用于设定子流表项的有效时间,如果超过该设定值,则删除该子流表项。
重要性:表示该子流表项的重要程度。
标识:是子流表项对OFC唯一的标识。
应用上述子流表项的格式,OpenFlow的流水线处理定义了数据包与流表进行交互的过程可以为:如图2所示,OpenFlow交换机的流表是从0开始按顺序编号的。当数据包进入交换机后,将从流表0开始依次匹配,其它流表根据第一个表的匹配结果来调用。在后续处理中流表可以按次序从小到大进行跳转,但不能从某一流表向前跳转至编号更小的流表。子流表项将以优先级高低的顺序与数据包进行匹配,当数据包成功匹配到一条子流表项后,会首先更新该子流表项对应的计数器记录的统计数据,然后根据流表项中的指令进行相应操作(例如跳转至后续的某一流表继续处理、修改或者立即执行该数据包对应的动作集合等)。当数据包已经处于最后一个流表时,其对应的动作集合(ActionSet)中的所有动作指令将被执行(例如转发至某一端口、修改数据包某一字段、丢弃数据包等)。
针对现有技术中存在的多流表场景下子流表项复用时操作不一致的问题,本发明在现有OpenFlow工作机制下,通过在OFC和OFS中建立包括逻辑流表项的逻辑流表,和逻辑流表和子流表项间的关联因子表,以达到对逻辑流表项进行操作的效果。
在本发明实施例中,如图3所示,OFC为每个OFS维护一个逻辑流表和一个关联因子表。其中,每个逻辑流表用于存储相应的OFS的逻辑流表项,逻辑流表项定义了对应数据流的数据转发路径。关联因子表是用于表示逻辑流表项与子流表项的关联关系的,由关联因子和关联值组成,关联因子表包括逻辑流表项的关联因子和子流表项的关联因子,其中,逻辑流表项的关联因子表示与该逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与该子流表项关联的逻辑流表项的数量,关联值表示逻辑流表项与子流表项的关联关系。OFC在逻辑流表中新建、修改、删除一个逻辑流表项时,更新关联因子表,以根据更新后的子流表项关联因子,确定对子流表项的操作行为。OFS同步维护一个本地的逻辑流表和一个关联因子表。OFS在逻辑流表中如果某一逻辑流表项过期删除或者OFS通过主动收回的方式删除逻辑流表项时,更新关联因子表,以根据更新后的关联因子表中子流表项关联因子,确定对子流表项的操作行为。
具体的,为了说明与每个子流表项关联的逻辑流表项的数量,在本发明中,首先要对现有的子流表项的格式(表1)进行扩展,即在现已定义好的子流表项的格式中新增子流表项的关联因子。如下表2所示。
表2
Match fields Priority Counters Instructions Timeouts Importance Cookie_f Factor
匹配字段 优先级 计数器 指令 超时设定 重要性 标识 关联因子
其中,关联因子,大小可以为64比特,代表与子流表项关联的逻辑流表项的个数,其余字段均在表1对应内容中给予说明,在此不赘述。
逻辑流表指的是存储逻辑流表项的表。逻辑流表项的格式定义如下表3所示。
表3
Counters Timeouts Importance Cookie_F Tuple of cookie_f
计数器 超时设定 重要性 标识 标识元组
计数器:表示逻辑流表项与数据包匹配的次数和总字节数据等。
超时设定:每个逻辑流表项都有一个与其相关的空闲超时(idle_timeout)和硬超时(hard_timeout)值。idle_timeout的值设定,用于如果逻辑流表项在超过该设定值的时间后还没有被匹配,就删除该逻辑流表项;hard_timeout的值用于设定逻辑流表项的有效时间,如果超过该设定值,则删除该逻辑流表项。
重要性:表示该逻辑流表项的重要程度。
标识:表示该逻辑流表项对OFC唯一的标识。
标识元组:表示与逻辑流表项关联的子流表项的标识信息,且按照子流表项的跳转顺序进行存储。
对于关联因子表具体来说,关联因子表由表示逻辑流表项与子流表项之间关联关系的关联值及关联因子组成。其格式可以如下表4所示:
表4
Cookie_F(1) Cookie_F(2) Cookie_F(m) Factor(Cookie_f(i))
Cookie_f(1) 1 1 0 Factor(Cookie_f(1))
Cookie_f(2) 0 1 1 Factor(Cookie_f(2))
Cookie_f(n) 1 1 0 Factor(Cookie_f(n))
Factor(Cookie_F(j)) Factor(Cookie_F(1)) Factor(Cookie_F(2)) Factor(Cookie_F(m))
其中,关联值表示某个逻辑流表项与某个子流表项是否关联。如果某个逻辑流表项与某个子流表项之间有关联关系,则它们的关联值为1;如果某个逻辑流表项与某个子流表项之间没有关联关系,则它们的关联值为0。
示例性的,当Cookie_f(i)代表的子流表项与Cookie_F(j)代表的逻辑流表项关联时:Cookie_f(i)*Cookie_F(j)=1或Cookie_F(j)*Cookie_f(i)=1;
当Cookie_f(i)代表的子流表项与Cookie_F(j)代表的逻辑流表项不关联时:Cookie_f(i)*Cookie_F(j)=0或Cookie_F(j)*Cookie_f(i)=0。
当获得了逻辑流表项和子流表项的关联值后,根据关联值可以获得任一子流表项的关联因子值和任一逻辑流表项的关联因子值。具体来说,通过将关联因子表中任一子流表项与每个逻辑流表项的关联值相加,得到该任一子流表项的关联因子值Factor(Cookie_f(i));通过将关联因子表中任一逻辑流表项与每个子流表项的关联值相加,得到该任一逻辑流表项的关联因子值Factor(Cookie_F(j))。
示例性的,Cookie_f(i)代表的子流表项的关联因子可以用如下公式表示:
Factor ( Cookie _ f ( i ) ) = Σ j = 1 m Cookie _ f ( i ) * Cookie _ F ( j )
由公式可知:如果Cookie_f(i)代表的子流表项与m个逻辑流表项关联,则该子流表项的关联因子值为m。
Cookie_F(j)代表的逻辑流表项的关联因子可以用如下公式表示:
Factor ( Cookie _ F ( j ) ) = Σ i = 1 n Cookie _ F ( j ) * Cookie _ f ( i )
由公式可知:如果Cookie_F(j)代表的逻辑流表项与n个子流表项关联,则该逻辑流表项的关联因子值为n。
实施例一
应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,本发明实施例提供一种流表项的处理方法,对于控制器来说,参见图4,包括:
10a、控制器在确定交换机中待处理的第一逻辑流表项后,根据第一逻辑流表项更新控制器中为交换机维护的逻辑流表。
其中,逻辑流表包括至少一条逻辑流表项。待处理的第一逻辑流表项可以是待增加的逻辑流表项,也可以是待删除的逻辑流表项。
11a、控制器向交换机发送控制面消息,控制面消息包括第一逻辑流表项,控制面消息用于使交换机根据第一逻辑流表项更新交换机本地的逻辑流表和交换机本地的第一关联因子关系。
第一关联因子关系用于表示控制器为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。关联因子关系可以以关联因子表进行表示。
本发明实施例提供一种流表项的处理方法,当控制器中存在待处理的逻辑流表项时,控制器通过发送控制面消息通知交换机同步处理该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行独立操作,且两者对于逻辑流表项的操作保持一致。
实施例二
与实施例一相应的,以交换机为执行主体,本发明实施例提供一种流表项的处理方法,参见图5,包括:
10b、交换机接收控制器发送的控制面消息,控制面消息包括交换机待处理的第一逻辑流表项。
其中,逻辑流表包括至少一条逻辑流表项,待处理的第一逻辑流表项可以是待增加的逻辑流表项,也可以是待删除的逻辑流表项。
11b、交换机根据控制面消息,更新交换机本地的逻辑流表和交换机本地的关联因子关系。
关联因子关系用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。关联因子关系可以以关联因子表进行表示。
本发明实施例提供一种流表项的处理方法,当控制器中存在待处理的逻辑流表项时,控制器通过发送控制面消息通知交换机同步处理该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行独立操作,且两者对于逻辑流表项的操作保持一致。
实施例三
应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,本发明实施例提供一种流表项的处理方法,结合实施例一,对于控制器增加逻辑流表项来说,参见图6,其步骤包括:
101、控制器在为交换机配置子流表项后,根据子流表项在控制器为交换机维护的逻辑流表中增加第一逻辑流表项,第一逻辑流表项与为交换机配置的子流表项关联。
其中,控制器可以为OFC,交换机可以为OFS。逻辑流表包括至少一条逻辑流表项,当OFC为某个待转发的数据流制定一条转发路径或者为某个应用流调整现有转发路径后,为路径上的OFS制定一个或多个子流表项,OFC再根据子流表项为OFS新增一条第一逻辑流表项,第一逻辑流表项与为该OFS配置的子流表项关联。
具体的,控制器新增第一逻辑流表项的过程可以如下:
控制器将第一逻辑流表项的计数器的初始值设为0,再将第一逻辑流表项的超时设定的值设为该第一逻辑流表项中新添加的子流表项的超时设定的值,再将第一逻辑流表项的重要性设为该第一逻辑流表项中新添加的子流表项的重要性,再为第一逻辑流表项分配用于标识该第一逻辑流表项的标识信息,再将与第一逻辑流表项关联的子流表项的标识信息按照在第一逻辑流表项中的跳转顺序组成元组,添加到第一逻辑流表项的标识元组中。需要说明的是,此处对于新增逻辑流表项过程对于计数器、超时设定、重要性、分配标识和标识元组的设定顺序不做限定。
其中,控制器为待转发数据流的交换机配置的子流表项包括匹配字段、优先级、计数器、指令、超时设定、重要性、子流表项的关联因子和子流表项的标识信息。
102、控制器向交换机发送第一控制面消息,第一控制面消息包括第一逻辑流表项,第一控制面消息用于使交换机根据第一逻辑流表项更新交换机本地的逻辑流表和交换机本地的第一关联因子表的对应表项内容。
由于控制器需要和交换机中的逻辑流表保持一致,在控制器为交换机维护的逻辑流表中新增第一逻辑流表项后,控制器向交换机发送第一控制面消息,该消息中可以携带第一逻辑流表项的标识信息、计数器、超时设定、重要性以及标识元组等信息,以使得交换机根据该第一逻辑流表项的信息更新交换机本地的逻辑流表和第一关联因子表的对应表项内容。
其中,第一关联因子表用于表示子流表项与逻辑流表项的关联关系。第一关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量。其中,若某一子流表项与某一逻辑流表项关联,则关联值为1,若某一子流表项与某一逻辑流表项不关联,则关联值为0。
本发明实施例提供一种流表项的处理方法,当控制器中新增一条逻辑流表项时,控制器通过发送控制面消息通知交换机同步增加该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行独立操作,且两者对于逻辑流表项的操作保持一致。
进一步的,在本实施例上述实现方式的基础上,由于控制器为每个交换机维护一个逻辑流表和一个关联因子表,当控制器增加第一逻辑流表项的时候,也要更新控制器中的第二关联因子表的对应表项内容,第二关联因子表用于表示对应的交换机中子流表项与逻辑流表项的关联关系,以保证控制器中的关联因子表和相应的交换机中的关联因子表保持一致。
具体的,更新控制器为交换机维护的第二关联因子表的对应表项内容具体操作可以为:控制器根据为交换机配置的子流表项第二关联因子表中所有子流表项的标识信息,与第一逻辑表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,再根据关联关系在第二关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值,控制器将第二关联因子表中所有子流表项包括新配置的子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值,进而,控制器将第二关联因子表中为交换机配置的子流表项与第一逻辑流表项的关联值,与更新前第二关联因子表中为交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为交换机配置的子流表项的关联因子值。这里如果是新配置的子流表项,其关联因子值就由0更新为1,如果是交换机中已有的子流表项,就在其关联因子值上加1作为更新后的关联因子值。
进一步的,由于逻辑流表项是控制器为待转发数据包的交换机配置的子流表项的组合,所以当控制器新增逻辑流表项的同时,也要使交换机更新其本地的子流表项,以保证逻辑流表项和子流表项的操作一致性。具体来说,控制器将为交换机配置的子流表项,和更新后第二关联因子表中为交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至交换机,第二控制面消息用于使交换机根据第二控制面消息添加或修改子流表项。
其中,第二控制面消息用于使交换机添加还是修改子流表项的具体实现方式可以为:控制器将为交换机配置的子流表项在更新后的第二关联因子表中的关联因子值与1进行比较,若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值等于1,则确定第二控制面消息的消息类型为新增类型,新增类型的第二控制面消息用于使交换机在交换机本地添加为交换机配置的子流表项;若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值大于1,则确定第二控制面消息的消息类型为修改类型,修改类型的第二控制面消息用于使交换机在交换机本地修改为交换机配置的子流表项。
因此,进一步的,本发明实施例还可以将控制器增加的逻辑流表项映射到交换机对于子流表项和关联因子表的更新,这样对于交换机中的子流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例四
应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,与实施例一相对应的,以交换机为执行主体,结合实施例二,本发明实施例提供一种流表项的处理方法,对于交换机增加逻辑流表项来说,参见图7,其步骤包括:
201、交换机接收控制器发送的第一控制面消息,第一控制面消息包括待增加的第一逻辑流表项。
其中,控制器可以为OFC,交换机可以为OFS。当控制器新增一条第一逻辑流表项时,通过第一控制面消息将第一逻辑流表项发送给交换机,使得交换机根据第一控制面消息中的第一逻辑流表项将第一逻辑流表项保存在该交换机的逻辑流表中。逻辑流表包括至少一条逻辑流表项。
202、交换机根据第一控制面消息,在交换机本地的逻辑流表中添加第一逻辑流表项,并更新交换机本地的关联因子表的对应表项内容。
其中,关联因子表用于表示子流表项与逻辑流表项的关联关系。关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与子流表项关联的逻辑流表项的数量。若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
具体的,更新交换机本地的关联因子表的对应表项内容的具体操作可以为:交换机根据添加第一逻辑流表项后关联因子表中所有子流表项的标识信息,与第一逻辑流表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,并在关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值,交换机将所有子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值,进而将与第一逻辑流表项关联的子流表项,和第一逻辑流表项的关联值,与更新前关联因子表中与第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值。
本发明实施例提供一种流表项的处理方法,当控制器中新增一条逻辑流表项时,控制器通过发送控制面消息通知交换机同步增加该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行独立操作,且两者对于逻辑流表项的操作保持一致。
进一步的,由于逻辑流表项是控制器为待转发数据包的交换机配置的子流表项的组合,所以当控制器新增逻辑流表项的同时,也要使交换机更新其本地的子流表项,以保证逻辑流表项和子流表项的操作一致性。
具体的,交换机在接收第一控制面消息的同时,交换机接收控制器发送的第二控制面消息,第二控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值,交换机再根据第二控制面消息在交换机本地添加或修改子流表项。具体而言,若控制器为交换机配置的子流表项是交换机现有的子流表项,则该第二控制面消息用于使交换机修改现有的子流表项的相关信息的;若控制器为交换机配置的子流表项不是交换机现有的子流表项,则该第二控制面消息用于使交换机在交换机的流表中添加一条包含关联因子值的子流表项。
因此,进一步的,本发明实施例还可以将控制器增加的逻辑流表项映射到交换机对于子流表项的更新,这样对于交换机中的子流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例五
由于逻辑流表项是由用于转发数据包的子流表项组成,所以控制器对逻辑流表项的增加操作会映射到与该逻辑流表项关联的子流表项上,所以结合实施例一、实施例二、实施例三与实施例四,本发明实施例对逻辑流表项及其关联的子流表项的操作过程进行详细描述。
本发明实施例提供一种流表项的处理方法,以OFC和OFS为例,对OFC增加逻辑流表项及其关联的子流表项的过程进行说明。参见图8,其步骤包括:
301、OFC为某个新流制定一条转发路径或者为某个应用流调整现有转发路径后,OFC为转发路径上的OFS制定子流表项Cookie_f(j)和Cookie_f(N+1)。
其中,新流指的是:如果一个数据流的数据包在其传入网络的第一个交换机当中没有找到匹配的流表项,那么该流称为一个新流。应用流(ApplicationStreaming)是一个集中的按需软件传送模式。转发路径指的是:一个流的数据包在网络中传输/转发的路径,路径由数据包进入网络的第一交换机、数据包转出网络的第N交换机及数据包从第一交换机转出至转入第N交换机过程中经过的第二、第三至第N-1个交换机、以及相邻交换机之间的链路构成。
示例性的,OFS在将某一流的首数据包中的匹配字段与子流表项的匹配字段进行匹配时,如果出现不匹配的情况,那么该流为一新流,OFS便将该新流的数据包转发至OFC,使OFC为该新流制定一条转发路径,并为路径上OFS制定一个或多个子流表项,该子流表项可以是交换机中现有的子流表项,也可以是OFC新配置的子流表项。
举例来说,OFC制定的子流表项的个数为2个,其标识信息分别为Cookie_f(j)和Cookie_f(N+1),但制定的子流表项的个数和标识信息只是本发明实施例的举例说明,其个数和标识信息都不限于此。
需要说明的是,本实施例中的子流表项的格式如表2所示,即在现有的子流表项的格式的基础上,增加一个关联因子,该关联因子表示与该子流表项关联的逻辑流表项的数量。
302、OFC根据为OFS制定的子流表项Cookie_f(j)和Cookie_f(N+1),在OFC本地为OFS维护的逻辑流表中新增一条由新制定的子流表项按照转发顺序组成的逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>,而后并列执行步骤3031和步骤3032。
其中,OFC本地为OFS维护的逻辑流表中存储的是OFS中所有的逻辑流表项。逻辑流表项信息包括:计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;超时设定,表示逻辑流表项的有效时间;重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
具体的,OFC为OFS维护的逻辑流表中增加逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>的具体过程如下:
OFC将该增加的逻辑流表项的计数器的初始值设为0,表示该逻辑流表项还没有与数据包进行匹配;OFC将该逻辑流表项的超时设定的值设为该逻辑流表项中新配置的子流表项的超时设定的值;OFC将该逻辑流表项的重要性设为该逻辑流表项中新配置的子流表项的重要性;OFC为该逻辑流表项分配用于标识该逻辑流表项的标识信息Cookie_F(M+1);OFC将与该逻辑流表项关联的子流表项的标识信息按照在该逻辑流表项中的跳转顺序组成元组,添加到该逻辑流表项的标识元组中。该逻辑流表项的格式可以如表3所示。需要说明的是,此处对新增加的逻辑流表项的信息的设定顺序不进行限定。
3031、OFC将新增的逻辑流表项Cookie_F(M+1)通过第一控制面消息OFPT_LFLOW_MOD,ADD发往OFS,该第一控制面板消息中包含新增的逻辑流表项Cookie_F(M+1)。
其中,新增的逻辑流表项包括计数器、超时设定、重要性、标识和表示元组。OFC向OFS发送的第一控制面消息OFPT_LFLOW_MOD,ADD,保持了OFC和OFS间逻辑流表的一致性。
3041、OFS接收到OFC发送的第一控制面消息后,提取该第一控制面消息中的逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>,并保存在OFS本地的逻辑流表中。
3051、OFS根据逻辑流表项Cookie_F(M+1),更新OFS的关联因子表中的对应表项内容。
示例性的,假设该OFS中更新前的关联因子表的具体内容如表5所示。
表5
关联因子表(OFS):增加Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>前
Cookie_F(1) Cookie_F(M) Factor(Cookie_f)
Cookie_f(1) 1 1 Factor(Cookie_f(1))=8
Cookie_f(j) 0 1 Factor(Cookie_f(j))=5
Cookie_f(N) 1 1 Factor(Cookie_f(N))=4
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6
根据OFS中保存的逻辑流表项Cookie_F(M+1),和与该逻辑流表项关联的子流表项为Cookief(j)和Cookie_f(N+1),需要更新OFS中关联因子表中对应表项内容,包括:Cookie_F(M+1)的关联因子值、Cookie_f(j)的关联因子值、Cookie_f(N+1)的关联因子值及表示Cookie_F(M+1)与Cookie_f(j)关联关系的关联值,Cookie_F(M+1)与Cookie_f(N+1)关联关系的关联值。
由更新前的关联因子表的表项内容可知,OFC为OFS制定的子流表项中,Factor(cookie_f(j))=5,也就是说,子流表项Cookie_f(j)是现有的,且被其它的逻辑流表项复用的,而没有子流表项Cookie_f(N+1)的关联因子值,可知子流表项Cookie_f(N+1)是OFC新下发的。
因为子流表项Cookie_f(j)和Cookie_f(N+1)与逻辑流表项Cookie_F(M+1)关联,所以关联因子表中Cookie_f(j)和Cookie_F(M+1)的关联值以及Cookie_f(N+1)和Cookie_F(M+1)的关联值都为1,而除Cookie_f(j)和Cookie_f(N+1)之外的其余子流表项与逻辑流表项Cookie_F(M+1)的关联值为0,进而将逻辑流表项Cookie_F(M+1)与所有子流表项的关联相加,可以得到该逻辑流表项Cookie_F(M+1)的关联因子值为2。并且,在更新关联因子表之前,复用子流表项Cookie_f(j)的关联因子值为Factor(cookie_f(j))=5,这样再加上子流表项Cookie_f(j)和逻辑流表项Cookie_F(M+1)的关联值1,得到更新后子流表项Cookie_f(j)的关联因子值为6。由于子流表项Cookie_f(N+1)是OFC新下发的,所以关联因子表更新后的子流表项Cookie_f(N+1)的关联因子值为1,于是得到更新后的关联因子表的表项内容如表6所示。
表6
关联因子表(OFS):增加Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>后
Cookie_F(1) Cookie_F(M) Cookie_F(M+1) Factor(Cookie_f)
Cookie_f(1) 1 1 0 Factor(Cookie_f(N))=8
Cookie_f(j) 0 1 1 Factor(Cookie_f(j))=6
Cookie_f(N) 1 1 0 Factor(Cookie_f(N))=4
Cookie_f(N+1) 0 0 1 Factor(Cookie_f(N+1))=1
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6 Factor(Cookie_F(i))=2
3032、OFC根据新增的逻辑流表项Cookie_F(M+1),更新OFC中为OFS维护的关联因子表中对应表项内容,并判断更新后的子流表项Cookie_f(j)和Cookie_f(N+1)的关联因子值,如果等于1,则执行步骤30421,如果大于1,则执行步骤30422。
该步骤中OFC更新为OFS维护的关联因子表中对应表项内容的具体实现方式可以参见步骤3051中的具体过程,这里不再赘述。而后将更新后关联因子表中与新增逻辑流表项关联的子流表项的关联因子值与1进行比较,以确定关联的子流表项是新增的子流表项还是复用子流表项,并根据确定结果再确定OFC向OFS待发送控制面消息的消息类型,如果等于1,说明子流表项是新增子流表项,OFC发送给OFS的消息类型用于OFS添加子流表项,如果大于1,说明子流表项是复用子流表项,OFC发送给OFS的消息类型用于OFS修改子流表项。
30421、OFC将制定的子流表项Cookie_f(N+1)和更新后的关联因子表中Cookie_f(N+1)的关联因子值Factor(Cookie_f((N+1))=1,通过第二控制面消息OFPT_FLOW_MOD发送给OFS。
具体的,根据更新后的关联因子表中子流表项Cookie_f(N+1)的关联因子值Factor(Cookie_f((N+1))=1,得知该子流表项是新增的子流表项,因此,该第二控制面消息OFPT_FLOW_MOD可以为OFPT_FLOW_MOD,ADD消息,用于OFS在目的流表中新增包含关联因子值的子流表项Cookie_f(N+1)。
30521、OFS根据第二控制面消息,在本地流表中新增包含关联因子值的子流表项Cookie_f(N+1)。
其中,增加的子流表项Cookie_f(N+1)的具体内容包括:匹配字段、优先级、计数器、指令、超时设定、重要性、标识信息和关联因子,其中,关联因子值为1。
30422、OFC将制定的子流表项Cookie_f(j)和更新后的关联因子表中Cookie_f(j)的关联因子值Factor(Cookie_f(j))=6,通过第二控制面消息OFPT_FLOW_MOD发送给OFS。
其中,由于更新后的关联因子表中Cookie_f(j)的关联因子值Factor(Cookie_f(j))=6,因此第二控制面消息OFPT_FLOW_MOD可以为OFPT_FLOW_MOD,Modify,用于OFS在目的流表中修改包含关联因子值的子流表项Cookie_f(j)。
30522、OFS根据OFC发送的第二控制面消息,在本地流表中修改子流表项Cookie_f(j)。
具体的,修改子流表项Cookie_f(j)的具体内容包括:Timeouts、Importance、counter和factor。为了确保该子流表项Cookie_f(j)能够最大限度地为与之关联的逻辑流表项所用,所以OFS在修改子流表项时需要遵循一定的原则,具体的修改原则可以如下。
1)修改子流表项Timeouts的原则:
关于空闲时间Idle_Timeout的设定:假设OFC为新增的Cookie_f(N+1)设定了Idle_Timeout值x,由于Cookie_f(j)是现有的子流表项,并且在被其它逻辑流表项复用,且Cookie_f(j)的Idle_Timeout值为y,取MAX{x,y}作为Cookie_f(j)的修改后的Idle_Timeout值;
关于有效时间Hard_Timeout的设定:假设OFC为Cookie_f(N+1)设定了Hard_Timeout值a,由于Cookie_f(j)是现有的子流表项,并且在被其它逻辑流表项复用,且Cookie_f(j)的Hard_Timeout的剩余时间值为b,取MAX{a,b}作为Cookie_f(j)的修改后的Hard_Timeout值。
2)修改子流表项Importance的原则:
关于Importance的设定,假设OFC为Cookie_f(N+1)设定了Importance值c,而Cookie_f(j)是现有的子流表项,并且在被其他逻辑流表项复用,且Cookie_f(j)的Importance值为d,取MAX{c,d}作为Cookie_f(j)的修改后的Importance值。
3)修改子流表项Factor的原则:
a、在OFS接收到OFPT_FLOW_MOD,Modify消息之后,将本地流表中子流表项Cookie_f(N+1)的Factor值修改为OFPT_FLOW_MOD,Modify消息中的Factor值;
b、若子流表项Cookie_f(N+1)修改后的Factor值与OFS维护的关联因子表中的对应Factor值相等,则表明与子流表项Cookie_f(N+1)关联的逻辑流表项在OFS中修改成功,否则表明与子流表项Cookie_f(N+1)关联的逻辑流表项在OFS中修改失败,OFS可以通过控制面的消息告知OFC该修改失败,以便于OFC向OFS重新下发第一控制面消息使得OFS重新修改本地的逻辑流表。
本发明实施例提供一种流表项的处理方法,在控制器和交换机中建立的逻辑流表和表示逻辑流表项和子流表项的关联关系的关联因子表的基础上,当OFC请求增加逻辑流表项时,更新OFC中为OFS维护的关联因子表,通过发送控制面消息将增加的逻辑流表项和关联因子表中的相关信息通知给交换机,使交换机同步更新本地的逻辑流表、关联因子表和子流表项,进而使得控制器和交换机对于增加的逻辑流表项进行独立操作,解决了多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题,也保证了多流表场景下子流表项复用的操作一致性。
实施例六
应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,结合实施例一,本发明实施例提供一种流表项的处理方法,对于控制器删除逻辑流表项来说,参见图9,其步骤包括:
401、控制器在确定交换机待删除的第一逻辑流表项后,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项。
其中,控制器可以为OFC,交换机可以为OFS。逻辑流表包括至少一条逻辑流表项。具体的,删除逻辑流表项的原因可以为:用户通过用户界面触发控制器删除逻辑流表项;控制器根据预设时间段内逻辑流表项的利用率确定是否删除该逻辑流表项等等。
402、控制器向交换机发送第三控制面消息,第三控制面消息包括第一逻辑流表项,第三控制面消息用于使交换机根据第一逻辑流表项更新交换机本地的逻辑流表和交换机本地的第一关联因子表的对应表项内容。
由于控制器需要和交换机中的逻辑流表保持一致,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项后,控制器向交换机发送第三控制面消息,该消息中可以携带第一逻辑流表项的标识信息、计数器、超时设定、重要性以及标识元组等信息,以使得交换机根据该第一逻辑流表项的信息更新交换机本地的逻辑流表和第一关联因子表的对应表项内容。
其中,第一关联因子表用于表示子流表项与逻辑流表项的关联关系。第一关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量。其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
本发明实施例提供一种流表项的处理方法,当控制器中删除一条逻辑流表项时,控制器向交换机通过发送控制面消息以使得交换机同步删除该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对于逻辑流表项进行独立操作,且保证了两者的操作一致性。
进一步的,在本实施例上述实现方式的基础上,由于控制器为每个交换机维护一个逻辑流表和一个关联因子表,当控制器删除第一逻辑流表项的时候,也要更新控制器中的第二关联因子表的对应表项内容,第二关联因子表用于表示对应的交换机中子流表项与逻辑流表项的关联关系,以保证控制器中的关联因子表和相应的交换机中的关联因子表保持一致。
具体的,更新控制器为交换机维护的第二关联因子表的对应表项内容具体操作可以为:控制器将第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值,控制器删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值,而后,控制器根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值以及第一逻辑流表项的关联因子值。
再进一步的,由于逻辑流表项是控制器为待转发数据包的交换机配置的子流表项的组合,所以当控制器删除逻辑流表项的同时,也要使交换机更新其本地的子流表项,以保证逻辑流表项和子流表项的操作一致性。具体来说,控制器将与第一逻辑流表项关联的子流表项,和更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至交换机,第四控制面消息用于使交换机根据第四控制面消息删除或修改子流表项。
其中,第四控制面消息用于使交换机根据第四控制面消息删除或修改子流表项的具体实现方式可以为:控制器将与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值与0进行比较,若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值为0,则确定第四控制面消息的消息类型为删除类型,删除类型的第四控制面消息用于使交换机删除交换机本地中与第一逻辑流表项关联的子流表项;若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值不为0,则确定第四控制面消息的消息类型为修改类型,修改类型的第四控制面消息用于使交换机修改交换机本地中与第一逻辑流表项关联的子流表项。
因此,进一步的,本发明实施例还可以将控制器删除的逻辑流表项映射到交换机对于子流表项和关联因子表的更新,这样对于交换机中的子流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例七
应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,与实施例六相对应的,以交换机为执行主体,本发明实施例提供一种流表项的处理方法,对于交换机删除逻辑流表项来说,参见图10,其步骤包括:
501、交换机接收控制器发送的第三控制面消息,第三控制面消息包括待删除的第一逻辑流表项。
其中,控制器可以为OFC,交换机可以为OFS。当控制器删除一条第一逻辑流表项时,通过第三控制面消息将第一逻辑流表项发送给交换机,使得交换机根据第三控制面消息删除该交换机本地的逻辑流表中的第一逻辑流表项。逻辑流表包括至少一条逻辑流表项。
502、交换机根据第三控制面消息,删除交换机本地的逻辑流表中第一逻辑流表项,并更新交换机本地的关联因子表的对应表项内容。
其中,关联因子表用于表示子流表项与逻辑流表项的关联关系。关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与子流表项关联的逻辑流表项的数量。若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
具体的,更新交换机本地的关联因子表的对应表项内容的具体操作可以为:交换机将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值,交换机删除更新后关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值,进而根据第一逻辑流表项的标识信息,删除关联因子表中第一逻辑流表项与关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供一种流表项的处理方法,当控制器中删除一条逻辑流表项时,交换机通过从控制器接收控制面消息,以同步删除该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
进一步的,由于逻辑流表项是控制器为待转发数据包的交换机配置的子流表项的组合,所以当控制器删除逻辑流表项的同时,也要使交换机更新其本地的子流表项,以保证逻辑流表项和子流表项的操作一致性。
具体的,交换机在接收第三控制面消息的同时,交换机接收控制器发送的第四控制面消息,第四控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值,进而根据第四控制面消息在交换机本地删除或修改子流表项。
因此,进一步的,本发明实施例还可以将控制器删除的逻辑流表项映射到交换机对于子流表项和关联因子表的更新,这样对于交换机中的子流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例八
由于逻辑流表项是由用于转发数据包的子流表项组成,所以控制器对逻辑流表项的删除操作会映射到与该逻辑流表项关联的子流表项上,结合实施例一、实施例二、实施例六与实施例七,本发明实施例对控制器删除逻辑流表项及其关联的子流表项的操作过程进行详细描述。
本发明实施例提供一种流表项的处理方法,以OFC和OFS为例,对OFC删除逻辑流表项及其关联的子流表项的过程进行说明。参见图11,其步骤包括:
601、OFC获取删除OFS中的逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>的需求。
OFC获取删除OFS中的逻辑流表项的需求的方法可以有多种,譬如:由于OFC提供了UI界面给用户,当用户需要删除某条逻辑流表项的时候,可以在UI界面上点击删除按钮,从而触发OFC删除逻辑流表项。其中,逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>可以为任一逻辑流表项。
602、OFC在本地为OFS维护的逻辑流表中,删除逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>,而后并列执行步骤6031和步骤6032。
6031、OFC将删除的逻辑流表项Cookie_F(M+1)通过第三控制面消息OFPT_LFLOW_MOD,DELETE发送给OFS,该第三控制面消息中包含删除的逻辑流表项Cookie_F(M+1)。
OFC向OFS发送的第三控制面消息OFPT_LFLOW_MOD,DELETE,是要保持OFC和OFS间逻辑流表的一致性。
6041、OFS接收OFC发送的第三控制面消息后,在本地逻辑流表中删除逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>。
6051、OFS根据删除的逻辑流表项Cookie_F(M+1),更新OFS中关联因子表中的对应表项内容。
示例性的,假设该OFS中更新前的关联因子表的具体内容如表7所示。
表7
关联因子表(OFS):删除Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>前
Cookie_F(1) Cookie_F(M) Cookie_F(M+1) Factor(Cookie_f)
Cookie_f(1) 1 1 0 Factor(Cookie_f(N))=8
Cookie_f(j) 0 1 1 Factor(Cookie_f(j))=6
Cookie_f(N) 1 1 0 Factor(Cookie_f(N))=4
Cookie_f(N+1) 0 0 1 Factor(Cookie_f(N+1))=1
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6 Factor(Cookie_F(i))=2
根据OFS中删除的逻辑流表项Cookie_F(M+1),和与该逻辑流表项关联的子流表项为Cookie_f(j)和Cookie_f(N+1),需要更新OFS中关联因子表中对应表项内容,包括:Cookie_F(M+1)的关联因子值、Cookie_f(j)的关联因子值、Cookie_f(N+1)的关联因子值及表示Cookie_F(M+1)与Cookie_f(j)关联关系的关联值,Cookie_F(M+1)与Cookie_f(N+1)关联关系的关联值。
由更新前的关联因子表7的表项内容可知,更新前与逻辑流表项Cookie_F(M+1)关联的子流表项Cookie_f(j)的关联因子Factor(cookie_f(j))的值为6,逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)的关联值为1,这样将该逻辑流表项Cookie_F(M+1)删除后,与子流表项Cookie_f(j)关联的逻辑流表项的数量要减1,因此,更新后的子流表项Cookie_f(j)的关联因子Factor(cookie_f(j))的值为5,且由于要删除的逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)不关联了,将逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)的关联值更新为0。与此同时,更新前与逻辑流表项Cookie_F(M+1)关联的子流表项Cookie_f(N+1)的关联因子Factor(cookie_f(N+1))的值为1,逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(N+1)的关联值为1,这样将该逻辑流表项Cookie_F(M+1)删除后,与子流表项Cookie_f(N+1)关联的逻辑流表项的数量要减1,因此,更新后的子流表项Cookie_f(N+1)的关联因子Factor(Cookie_f(N+1))的值为0,且由于逻辑流表项Cookie_F(M+1)与子流表项Cookie_f((N+1)不关联了,将逻辑流表项Cookie_F(M+1)与子流表项Cookie_f((N+1)的关联值更新为0。
这样一来,表7中所有子流表项与逻辑流表项Cookie_F(M+1)的关联值都为0了,说明不存在与逻辑流表项Cookie_F(M+1)关联的子流表项,这时可以将关联因子表中所有子流表项与逻辑流表项Cookie_F(M+1)的关联值和逻辑流表项Cookie_F(M+1)的关联因子值删除。同时,由于更新后子流表项Cookie_f((N+1)的关联因子Factor(Cookie_f(N+1))的值为0,说明不存在与该子流表项Cookie_f((N+1)关联的逻辑流表项,这时就可以将关联因子表中子流表项Cookie_f((N+1)与所有逻辑流表项的关联值和子流表项Cookie_f((N+1)的关联因子值删除,于是得到更新后的关联因子表的表项内容如表8所示。
表8
关联因子表(OFS):删除Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>后
Cookie_F(1) Cookie_F(M) Factor(Cookie_f)
Cookie_f(1) 1 1 Factor(Cookie_f(1))=8
Cookie_f(j) 0 1 Factor(Cookie_f(j))=5
Cookie_f(N) 1 1 Factor(Cookie_f(N))=4
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6
6032、OFC根据删除的逻辑流表项Cookie_F(M+1),更新OFC中为OFS维护的关联因子表中对应表项内容,并判断关联因子表更新后的子流表项Cookie_f(j)和Cookie_f(N+1)的关联因子值,如果等于0,则执行步骤60421,如果大于0,则执行步骤60422。
该步骤中OFC更新为OFS维护的关联因子表中对应表项内容的具体实现方式可以参见步骤6051中的具体过程,这里不再赘述。而后,将更新后关联因子表中与删除的逻辑流表项关联的子流表项的关联因子值与0进行比较,以确定相应的子流表项是否还存在与之关联的逻辑流表项,并根据确定结果再确定OFC向OFS待发送控制面消息的消息类型,如果等于0,说明相应的子流表项不存在与之关联的逻辑流表项了,需要将相应的子流表项删除,消息类型用于OFS删除相应的子流表项,如果大于0,说明还存在与相应的子流表项关联的逻辑流表项,需要OFS对相应的子流表项进的关联因子值进行修改。
60421、OFC将子流表项Cookie_f(N+1)通过第四控制面消息OFPT_FLOW_MOD发送给OFS。
具体的,根据更新后的关联因子表中子流表项Cookie_f(N+1)的关联因子值Factor(Cookie_f((N+1))=0,得知已经没有与该子流表关联的逻辑流表项了,因此,该第四控制面消息OFPT_FLOW_MOD可以为OFPT_FLOW_MOD,DELETE,用于OFS在目的流表中删除子流表项Cookie_f(N+1)的相关信息。
60521、OFS根据OFC发送的第四控制面消息,在本地流表中删除子流表项Cookie_f(N+1)。
60422、OFC将子流表项Cookie_f(j)和更新后的关联因子表中子流表项Cookie_f(j)的关联因子值Factor(Cookie_f(j))=5,通过第四控制面消息OFPT_FLOW_MOD发送给OFS。
其中,由于更新后的关联因子表中Cookie_f(j)的关联因子值Factor(Cookie_f(j))=5,说明还存在与相应的子流表项关联的逻辑流表项,因此,第四控制面消息OFPT_FLOW_MOD可以为OFPT_FLOW_MOD,Modify,用于OFS在本地流表中修改包含关联因子值的子流表项Cookie_f(j)。
60522、OFS根据OFC发送的第四控制面消息,在本地流表中修改子流表项Cookie_f(j)。
具体的,修改子流表项Cookie_f(j)的具体内容包括:Timeouts、Importance和factor。为了确保该子流表项能够最大限度地为与之关联的逻辑流表项所用,所以OFS在修改子流表项时需要遵循一定的原则,具体的修改原则可以如下。
1)修改子流表项Timeouts的原则:
关于空闲时间Idle_Timeout的设定:如果删除的逻辑流表项的Idle_Timeout值和与该逻辑流表项关联的复用子流表项的Idle_Timeout值不相等,则不用修改复用子流表项的Idle_Timeout值;如果删除的逻辑流表项的Idle_Timeout值和与该逻辑流表项关联的复用子流表项的Idle_Timeout值相等,则将该复用子流表项的Idle_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Idle_Timeout值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Idle_Timeout值和复用子流表项Cookie_f(j)的Idle_Timeout值不相等,则不用修改复用子流表项Cookie_f(j)的Idle_Timeout值;如果逻辑流表项Cookie_F(M+1)的Idle_Timeout值和复用子流表项Cookie_f(j)的Idle_Timeout值相等,则将复用子流表项Cookie_f(j)的Idle_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Idle_Timeout值的最大值。
关于有效时间Hard_Timeout的设定:如果删除的逻辑流表项的Hard_Timeout值和与该逻辑流表项关联的复用子流表项的Hard_Timeout值不相等,则不用修改与该逻辑流表项关联的复用子流表项的Hard_Timeout值;如果删除的逻辑流表项的Hard_Timeout值和与该逻辑流表项关联的复用子流表项的Hard_Timeout值相等,则将该复用子流表项的Hard_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Hard_Timeout值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Hard_Timeout值和复用子流表项Cookie_f(j)的Hard_Timeout值不相等,则不用修改复用子流表项Cookie_f(j)的Hard_Timeout值;如果逻辑流表项Cookie_F(M+1)的Hard_Timeout值和复用子流表项Cookie_f(j)的Hard_Timeout值相等,则将复用子流表项Cookie_f(j)的Hard_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Hard_Timeout值的最大值。
2)修改子流表项Importance的原则:
关于Importance的设定,如果删除的逻辑流表项的Importance值和与该逻辑流表项关联的复用子流表项的Importance值不相等,则不用修改与该逻辑流表项关联的复用子流表项的Importance值;如果删除的逻辑流表项的Importance值和与该逻辑流表项关联的复用子流表项的Importance值相等,则将该复用子流表项的Importance值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Importance值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Importance值和复用子流表项Cookie_f(j)的Importance值不相等,则不用修改复用子流表项Cookie_f(j)的Importance值;如果逻辑流表项Cookie_F(M+1)的Importance值和复用子流表项Cookie_f(j)的Importance值相等,则将复用子流表项Cookie_f(j)的Importance值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Importance值的最大值。
3)修改子流表项Factor的原则:
a、在OFS接收到OFPT_FLOW_MOD,Modify消息之后,将本地流表中对应子流表项Cookie_f(j)的Factor值修改为OFPT_FLOW_MOD,Modify消息中的Factor值;
b、如果子流表项Cookie_f(j)修改后的Factor值与OFS维护的关联因子表中的对应Factor值相等,则表明与子流表项Cookie_f(j)关联的逻辑流表项在OFS中修改成功,否则表明与子流表项Cookie_f(j)关联的逻辑流表项在OFS中修改失败,OFS可以通过控制面的消息告知OFC该修改失败,以便于OFC向OFS重新下发第三控制面消息使得OFS重新修改本地的逻辑流表。
本发明实施例提供一种流表项的处理方法,在控制器和交换机中建立的逻辑流表和表示逻辑流表项和子流表项的关联关系的关联因子表的基础上,当OFC请求删除逻辑流表项时,更新OFC中为OFS维护的关联因子表,通过发送控制面消息将删除的逻辑流表项和关联因子表中的相关信息通知给交换机,使得交换机同步更新本地的逻辑流表、关联因子表和子流表项,进而使得控制器和交换机对于删除的逻辑流表项进行独立操作,解决了多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题,也保证了多流表场景下子流表项复用的操作一致性。
上述实施例三中的第一控制面消息OFPT_LFLOW_MOD,ADD和实施例六中第三控制面消息OFPT_LFLOW_MOD,DELETE的格式相同,具体格式可以如下所示:
实施例三中的第二控制面消息OFPT_FLOW_MOD的格式和实施例六中的第四控制面消息OFPT_FLOW_MOD的格式,是在OpenFlow1.4.0中的定义OFPT_FLOW_MOD消息的基础上扩展了对于关联因子值的定义而得来的,具体的格式可以如下:
实施例九
对于交换机OFS而言,也存在对于逻辑流表项的超时删除或过期删除的情况,因此,应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,本发明实施例提供一种流表项的处理方法,参见图12,其步骤包括:
701、交换机在确定待删除的第一逻辑流表项后,在交换机本地的逻辑流表中删除第一逻辑流表项,并更新交换机本地的第二关联因子关系。
其中,交换机可以为OFS,逻辑流表包括至少一条逻辑流表项。具体的,删除逻辑流表项的原因可以为:OFS确定任一逻辑流表项过期或需要主动收回等。第二关联因子关系可以表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。关联因子关系可以以关联因子表进行表示。
702、交换机向控制器发送第五控制面消息,第五控制面消息包括第一逻辑流表项,第五控制面消息用于使控制器根据第一逻辑流表项更新控制器本地中为交换机维护的逻辑流表和为交换机维护的第一关联因子关系。
由于交换机需要和控制器中的逻辑流表保持一致,在交换机在本地逻辑流表中删除第一逻辑流表项后,交换机需要向控制器发送第五控制面消息,该消息中可以携带第一逻辑流表项的标识信息、计数器、超时设定、重要性以及标识元组等信息,以使得控制器根据该第一逻辑流表项的信息更新为交换机维护的逻辑流表和第一关联因子表的对应表项内容。
其中,关联因子关系可以以关联因子表的形式第一关联因子表用于表示子流表项与逻辑流表项的关联关系。第一关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量。其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
本发明实施例提供一种流表项的处理方法,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新为交换机维护的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
进一步的,在本实施例上述实现方式的基础上,交换机在删除第一逻辑流表项时,同时需要更新交换机本地的第二关联因子表的对应表项内容,第二关联因子表用于表示子流表项与逻辑流表项的关联关系。具体的,交换机将更新前第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值,而后,交换机删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值,交换机再根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
进一步的,交换机在更新了第二关联因子表后,还需要根据更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与第一逻辑流表项关联的子流表项。具体的,若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值为0,则交换机在交换机本地的流表项中删除与第一逻辑流表项关联的子流表项,交换机向控制器发送第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值,用于使控制器确定控制器本地中为交换机维护的关联因子表是否已更新;若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值大于0,则交换机确定与第一逻辑流表项关联、且关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值,若用于转发数据包的时间大于或等于预设的超时设定值,则交换机删除与第一逻辑流表项关联、且关联因子值大于0的子流表项;若用于转发数据包的时间小于预设的超时设定值,则交换机根据与第一逻辑流表项关联的子流表项对应的关联因子值修改交换机本地的流表中相应的子流表项的关联因子值。
因此,进一步的,本发明实施例还可以将交换机删除的逻辑流表项映射到交换机对于子流表项的更新,这样对于交换机中的子流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例十
与实施例九相对应的,以控制器为执行主体,应用上述对于子流表项、逻辑流表项、逻辑流表和关联因子表的定义,本发明实施例提供一种流表项的处理方法,参见图13,其步骤包括:
801、控制器接收交换机发送的第五控制面消息,第五控制面消息包括待删除的第一逻辑流表项。
其中,控制器可以为OFC,交换机可以为OFS。当交换机删除一条第一逻辑流表项时,通过第五控制面消息将第一逻辑流表项发送给控制器,使得控制器根据第五控制面消息删除该控制器为交换机维护的逻辑流表中的第一逻辑流表项。逻辑流表包括至少一条逻辑流表项。
802、控制器根据第五控制面消息,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项,并更新控制器为交换机维护的关联因子关系。
其中,关联因子关系可以以关联因子表进行表示,关联因子表用于表示子流表项与逻辑流表项的关联关系。关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与所示子流表项关联关系的关联值,逻辑流表项的关联因子表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与子流表项关联的逻辑流表项的数量。若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
具体的,控制器更新为交换机维护的关联因子表中的对应表项内容具体操作过程可以为:控制器将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值,再根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供一种流表项的处理方法,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
进一步的,在本发明实施例中,当交换机删除任一逻辑流表项时,不仅要使控制器更新为交换机维护的关联因子表,还需要将与删除的逻辑流表项关联的子流表项这一删除事件通知给控制器,以确定控制器是否将为交换机维护的关联因子表更新完成,具体的,若交换机删除与删除的逻辑流表项关联的任一子流表项之后,控制器接收交换机发送的第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值,控制器根据与第一逻辑流表项关联的子流表项的标识信息,确定与第一逻辑流表项关联的子流表项关联因子值,和控制器本地中为交换机维护的关联因子表中相应的子流表项的关联因子值是否相同,若不相同,则表明控制器没有更新成功,控制器发送异常告警。
因此,进一步的,本发明实施例还可以将交换机删除的逻辑流表项映射到控制器对于逻辑流表和关联因子表的更新,这样对于控制器中的逻辑流表项来说,能够根据逻辑流表项和子流表项间的关联关系,保证多流表场景下子流表项复用的操作一致性。
实施例十一
由于逻辑流表项是由交换机中转发数据包的子流表项组成,所以交换机对逻辑流表项的删除操作会映射到与该逻辑流表项关联的子流表项上,所以实施例九将结合实施例九与实施例十,对交换机和控制器删除逻辑流表项及其关联的子流表项进行详细说明。
本发明实施例提供一种流表项的处理方法,以OFC和OFS为例,参见图14,其步骤包括:
901、OFS获取删除OFS中的逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>的需求。
上述需求可以包括逻辑流表项超时、用户期望删除某条逻辑流表项或者OFC根据某种OFS资源释放机制需要删除一条或多条逻辑流表项等。例如,待删除的逻辑流表项的标识信息为Cookie_F(M+1),与其关联的子流表项为Cookie_f(j)和Cookie_f(N+1)。
902、OFS在其本地的逻辑流表中,删除逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>。而后,并列执行步骤9031和步骤9032。
其中,逻辑流表包括至少一条逻辑流表项,每个OFS中都对应一个逻辑流表。
9031、OFS将逻辑流表项Cookie_F(M+1)通过第五控制面消息OFPT_LFLOW_REMOVED发送给OFC。
在OFS删除了本地逻辑流表中的逻辑流表项Cookie_F(M+1)之后,为了保证OFS和OFC中逻辑流表的一致性,OFS通知OFC删除OFC为OFS维护的逻辑流表中的逻辑流表项Cookie_F(M+1),该第五控制面消息中就包括了要删除的逻辑流表项的相关信息。
其中,第五控制面消息OFPT_LFLOW_REMOVED的具体格式可以如下所示:
9041、OFC接收第五控制面消息后,在本地为OFS维护的逻辑流表中删除逻辑流表项Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>。
其中,OFC为每个控制的OFS都维护一个逻辑流表和关联因子表。
9051、OFC根据删除的逻辑流表项Cookie_F(M+1),更新OFC中为OFS维护的关联因子表中的对应表项内容。
示例性的,假设该OFC中为OFS维护的关联因子表的具体表项内容如表9所示。
表9
关联因子表(OFS):删除Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>前
Cookie_F(1) Cookie_F(M) Cookie_F(M+1) Factor(Cookie_f)
Cookie_f(1) 1 1 0 Factor(Cookie_f(N))=8
Cookie_f(j) 0 1 1 Factor(Cookie_f(j))=6
Cookie_f(N) 1 1 0 Factor(Cookie_f(N))=4
Cookie_f(N+1) 0 0 1 Factor(Cookie_f(N+1))=1
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6 Factor(Cookie_F(i))=2
根据删除的逻辑流表项Cookie_F(M+1),和与该逻辑流表项关联的子流表项为Cookie_f(j)和Cookie_f(N+1),需要更新OFC中为OFS维护的关联因子表中对应表项内容包括:Cookie_F(M+1)的关联因子值、Cookie_f(j)的关联因子值、Cookie_f(N+1)的关联因子值及表示Cookie_F(M+1)与Cookie_f(j)关联关系的关联值,Cookie_F(M+1)与Cookie_f(N+1)关联关系的关联值。
由更新前的关联因子表-表9的表项内容可知,更新前与逻辑流表项Cookie_F(M+1)关联的子流表项Cookie_f(j)的关联因子Factor(cookie_f(j))的值为6,逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)的关联值为1,这样将该逻辑流表项Cookie_F(M+1)删除后,与子流表项Cookie_f(j)关联的逻辑流表项的数量要减1,因此,更新后的子流表项Cookie_f(j)的关联因子Factor(cookie_f(j))的值为5,且由于要删除的逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)不关联了,将逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(j)的关联值更新为0。与此同时,更新前与逻辑流表项Cookie_F(M+1)关联的子流表项Cookie_f(N+1)的关联因子Factor(cookie_f(N+1))的值为1,逻辑流表项Cookie_F(M+1)与子流表项Cookie_f(N+1)的关联值为1,这样将该逻辑流表项Cookie_F(M+1)删除后,与子流表项Cookie_f(N+1)关联的逻辑流表项的数量要减1,因此,更新后的子流表项Cookie_f(N+1)的关联因子Factor(Cookie_f(N+1))的值为0,且由于逻辑流表项Cookie_F(M+1)与子流表项Cookie_f((N+1)不关联了,将逻辑流表项Cookie_F(M+1)与子流表项Cookie_f((N+1)的关联值更新为0。
这样一来,关联因子表-表9中所有子流表项与逻辑流表项Cookie_F(M+1)的关联值都为0了,说明不存在与逻辑流表项Cookie_F(M+1)关联的子流表项,这时可以将关联因子表中所有子流表项与逻辑流表项Cookie_F(M+1)的关联值和逻辑流表项Cookie_F(M+1)的关联因子值删除。同时,由于更新后子流表项Cookie_f((N+1)的关联因子Factor(Cookie_f(N+1))的值为0,说明不存在与该子流表项Cookie_f((N+1)关联的逻辑流表项,这时就可以将关联因子表中子流表项Cookie_f((N+1)与所有逻辑流表项的关联值和子流表项Cookie_f((N+1)的关联因子值删除,于是得到更新后的关联因子表的表项内容如表10所示。
表10
关联因子表(OFS):删除Cookie_F(M+1):<Cookie_f(j),Cookie_f(N+1)>后
Cookie_F(1) Cookie_F(M) Factor(Cookie_f)
Cookie_f(1) 1 1 Factor(Cookie_f(1))=8
Cookie_f(j) 0 1 Factor(Cookie_f(j))=5
Cookie_f(N) 1 1 Factor(Cookie_f(N))=4
Factor(Cookie_F) Factor(Cookie_F(1))=2 Factor(Cookie_F(M))=6
9032、OFS根据删除的逻辑流表项Cookie_F(M+1),更新OFS中关联因子表中对应表项内容,并判断关联因子表更新后的子流表项Cookie_f(j)和Cookie_f(N+1)的关联因子值,如果等于0,则执行步骤90421,如果大于0,则执行步骤90422。
该步骤中OFS更新关联因子表的对应表项内容的具体实现方式可以参见步骤9051中的具体过程,这里不再赘述。而后,将更新后关联因子表中与删除的逻辑流表项关联的子流表项的关联因子值与0进行比较,以确定相应的子流表项是否还存在与之关联的逻辑流表项,如果等于0,例如子流表项Cookie_f(N+1),说明不存在与子流表项Cookie_f(N+1)关联的逻辑流表项了,需要将相应的子流表项删除,如果大于0,例如子流表项Cookie_f(j),说明还存在与子流表项Cookie_f(j)关联的逻辑流表项。
90421、OFS删除子流表项。
90521、OFS通过第六控制面消息OFPT_FLOW_REMOVED,将删除的子流表项通知给OFC。
OFS向OFC发送的第六控制面消息OFPT_FLOW_REMOVED包括与删除的子流表项的标识信息和关联因子值,该第六控制面消息用于使OFC确定OFC本地中为OFS维护的关联因子表是否已更新,如果第六控制面消息中的关联因子值和OFC中为OFS维护的关联因子表中相应的关联因子值相同,说明OFC已更新成功,如果不相同,说明OFC更新失败,并发送告警信息。
90422、OFS判断子流表项Cookie_f(j)是否已经超时,如果超时执行90421,否则执行步骤90522。
90522、OFS修改子流表项Cookie_f(j)。
具体的,修改子流表项Cookie_f(j)的具体内容包括:Timeouts、Importance和Factor。其中,Factor是根据关联因子表更新后的子流表项Cookie_f(j)关联因子值进行修改的,根据步骤9051中的示例,需要将子流表项Cookie_f(j)关联因子值更新为5。对于Timeouts、Importance来说,为了确保该子流表项能够最大限度地为与之关联的逻辑流表项所用,所以OFS在修改子流表项时需要遵循一定的原则,具体的修改原则可以如下。
1)修改子流表项Timeouts的原则:
关于空闲时间Idle_Timeout的设定:如果删除的逻辑流表项的Idle_Timeout值和与该逻辑流表项关联的复用子流表项的Idle_Timeout值不相等,则不用修改与该逻辑流表项关联的复用子流表项的Idle_Timeout值;如果删除的逻辑流表项的Idle_Timeout值和与该逻辑流表项关联的复用子流表项的Idle_Timeout值相等,则将该复用子流表项的Idle_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Idle_Timeout值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Idle_Timeout值和复用子流表项Cookie_f(j)的Idle_Timeout值不相等,则不用修改复用子流表项Cookie_f(j)的Idle_Timeout值;如果逻辑流表项Cookie_F(M+1)的Idle_Timeout值和复用子流表项Cookie_f(j)的Idle_Timeout值相等,则将复用子流表项Cookie_f(j)的Idle_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Idle_Timeout值的最大值。
关于有效时间Hard_Timeout的设定:如果删除的逻辑流表项的Hard_Timeout值和与该逻辑流表项关联的复用子流表项的Hard_Timeout值不相等,则不用修改与该逻辑流表项关联的复用子流表项的Hard_Timeout值;如果删除的逻辑流表项的Hard_Timeout值和与该逻辑流表项关联的复用子流表项的Hard_Timeout值相等,则将该复用子流表项的Hard_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Hard_Timeout值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Hard_Timeout值和复用子流表项Cookie_f(j)的Hard_Timeout值不相等,则不用修改复用子流表项Cookie_f(j)的Hard_Timeout值;如果逻辑流表项Cookie_F(M+1)的Hard_Timeout值和复用子流表项Cookie_f(j)的Hard_Timeout值相等,则将复用子流表项Cookie_f(j)的Hard_Timeout值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Hard_Timeout值的最大值。
2)修改子流表项Importance的原则:
关于Importance的设定,如果删除的逻辑流表项的Importance值和与该逻辑流表项关联的复用子流表项的Importance值不相等,则不用修改与该逻辑流表项关联的复用子流表项的Importance值;如果删除的逻辑流表项的Importance值和与该逻辑流表项关联的复用子流表项的Importance值相等,则将该复用子流表项的Importance值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项除外)的Importance值的最大值。在本实施例中,如果逻辑流表项Cookie_F(M+1)的Importance值和复用子流表项Cookie_f(j)的Importance值不相等,则不用修改复用子流表项Cookie_f(j)的Importance值;如果逻辑流表项Cookie_F(M+1)的Importance值和复用子流表项Cookie_f(j)的Importance值相等,则将复用子流表项Cookie_f(j)的Importance值修改为与之关联的所有逻辑流表项(该删除的逻辑流表项Cookie_F(M+1)除外)的Importance值的最大值。
本发明实施例提供一种流表项的处理方法,当OFS过期删除逻辑流表项和OFS通过主动收回的方式删除逻辑流表项时,更新OFS本地的逻辑流表和关联因子表,再通过向OFC发送控制消息,使得OFC也同步更新为OFS维护的逻辑流表和关联因子表,能够使得OFS对逻辑流表项的删除操作与OFC保持一致,且能够正确的映射为对子流表项的对应操作,解决了多流表场景下子流表项复用时逻辑流表项操作不一致导致的不能对子流表项进行正确操作的问题。
实施例十二
本发明实施例提供一种控制器10,参见图15,包括:
更新单元1001,用于在确定交换机中待处理的第一逻辑流表项后,根据第一逻辑流表项更新控制器中为交换机维护的逻辑流表;
发送单元1002,用于向交换机发送控制面消息,控制面消息包括第一逻辑流表项,控制面消息用于使交换机根据第一逻辑流表项更新交换机本地的逻辑流表和交换机本地的第一关联因子关系;
其中,逻辑流表包括至少一条逻辑流表项,第一关联因子关系用于表示控制器为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
可选的,更新单元1001可以具体用于:在为交换机配置子流表项后,根据子流表项在控制器为交换机维护的逻辑流表中增加第一逻辑流表项,第一逻辑流表项与为交换机配置的子流表项关联。
可选的,更新单元1001还可以用于:在增加第一逻辑流表项的同时,更新控制器为交换机维护的第二关联因子关系,第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
发送单元1002还可以用于:将为交换机配置的子流表项,和更新后第二关联因子关系中为交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至交换机,第二控制面消息用于使交换机根据第二控制面消息配置子流表项;
其中,第一关联因子关系以第一关联因子表表示,第二关联因子关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
其中,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
可选的,更新单元1001可以具体用于:
将第一逻辑流表项的第二计数器的初始值设为0;
将第一逻辑流表项的第二超时设定的值设为第一逻辑流表项中添加的子流表项的超时设定的值;
将第一逻辑流表项的第二重要性设为第一逻辑流表项中添加的子流表项的优先级;
为第一逻辑流表项分配用于标识第一逻辑流表项的标识信息;
将与第一逻辑流表项关联的子流表项的标识信息按照在第一逻辑流表项中的跳转顺序组成元组,添加到第一逻辑流表项的标识元组中。
可选的,更新单元1001可以具体用于:
根据为交换机配置子流表项后第二关联因子表中所有子流表项的标识信息,与第一逻辑表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,再根据关联关系在第二关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值;
将所有子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值;
将为交换机配置的子流表项与第一逻辑流表项的关联值,与更新前第二关联因子表中为交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为交换机配置的子流表项的关联因子值。
可选的,还可以包括:
第一确定单元1003,用于将为交换机配置的子流表项在更新后的第二关联因子表中的关联因子值与1进行比较;
若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值等于1,则确定第二控制面消息的消息类型为新增类型,新增类型的第二控制面消息用于使交换机在交换机本地添加为交换机配置的子流表项;
若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值大于1,则确定第二控制面消息的消息类型为修改类型,修改类型的第二控制面消息用于使交换机在交换机本地修改为交换机配置的子流表项。
可选的,更新单元1001可以用于:在确定交换机待删除的第一逻辑流表项后,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项。
可选的,更新单元1001还可以用于:在控制器删除第一逻辑流表项时,更新控制器为交换机维护的第二关联因子关系,第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
发送单元1002还可以用于:将与第一逻辑流表项关联的子流表项,和更新后第二关联因子关系中与第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至交换机,第四控制面消息用于使交换机根据第四控制面消息配置子流表项;
其中,第一关联因子关系以第一关联因子表表示,第二关联因子关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
可选的,更新单元1001可以具体用于:
将第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值以及第一逻辑流表项的关联因子值。
可选的,还可以包括:第二确定单元1004,用于将与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值与0进行比较;
若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值为0,则确定第四控制面消息的消息类型为删除类型,删除类型的第四控制面消息用于使交换机删除交换机本地中与第一逻辑流表项关联的子流表项;
若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值不为0,则确定第四控制面消息的消息类型为修改类型,修改类型的第四控制面消息用于使交换机修改交换机本地中与第一逻辑流表项关联的子流表项。
本发明实施例提供的一种控制器,当控制器中存在待处理的逻辑流表项时,控制器通过发送控制面消息通知交换机同步更新该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行独立操作,且两者对于逻辑流表项的操作保持一致。
实施例十三
本发明实施例提供一种交换机11,参见图16,包括:
接收单元1101,用于接收控制器发送的控制面消息,控制面消息包括交换机待处理的第一逻辑流表项;
更新单元1102,用于根据控制面消息,更新交换机本地的逻辑流表和交换机本地的关联因子关系;
其中,逻辑流表包括至少一条逻辑流表项,关联因子关系用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
可选的,接收单元1101可以具体用于:接收控制器发送的第一控制面消息,第一控制面消息包括待增加的第一逻辑流表项。
进一步的,更新单元1102可以具体用于:根据第一控制面消息,在交换机本地的逻辑流表中添加第一逻辑流表项。
可选的,接收单元1101还可以用于:接收控制器发送的第二控制面消息,第二控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值;
更新单元1102还可以用于:根据第二控制面消息在交换机本地配置子流表项;
其中,关联因子关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;优先级第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
可选的,更新单元1102可以具体用于:
根据添加第一逻辑流表项后关联因子表中所有子流表项的标识信息,与第一逻辑流表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,并在关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值;
将所有子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值;
将与第一逻辑流表项关联的子流表项,和第一逻辑流表项的关联值,与更新前关联因子表中与第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值。
可选的,接收单元1101可以具体用于:接收控制器发送的第三控制面消息,第三控制面消息包括待删除的第一逻辑流表项。
进一步的,更新单元1102可以具体用于:根据第三控制面消息,删除交换机本地的逻辑流表中第一逻辑流表项。
可选的,接收单元1101还可以用于:接收控制器发送的第四控制面消息,第四控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值;
更新单元1102还可以用于:根据第四控制面消息在交换机本地配置子流表项;
其中,关联关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
可选的,更新单元1102可以具体用于:
将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除关联因子表中第一逻辑流表项与关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供的一种交换机,当控制器中存在待处理的逻辑流表项时,交换机同步接收控制器通过控制面消息发送的该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行单独操作,且两者对于逻辑流表项的操作保持一致。
实施例十四
本发明实施例提供一种交换机12,参见图17,包括:
删除单元1201,用于在确定待删除的第一逻辑流表项后,在交换机本地的逻辑流表中删除第一逻辑流表项;
更新单元1202,用于更新交换机本地的第二关联因子关系;
发送单元1203,用于向控制器发送第五控制面消息,第五控制面消息包括第一逻辑流表项,第五控制面消息用于使控制器根据第一逻辑流表项更新控制器本地中为交换机维护的逻辑流表和为交换机维护的第一关联因子关系;
其中,逻辑流表包括至少一条逻辑流表项,第一关联因子关系和第二关联因子关分别用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
可选的,还可以包括:确定单元1204,可以用于根据更新后第二关联因子关系中与第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与第一逻辑流表项关联的子流表项;
其中,第一关联关系以第一关联因子表表示,第二关联关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
可选的,更新单元1202可以具体用于:
将第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
可选的,确定单元1204可以具体用于:
若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值为0,则在交换机本地的流表项中删除与第一逻辑流表项关联的子流表项;
向控制器发送第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值,第六控制面消息用于使控制器确定控制器本地中为交换机维护的关联因子表是否已更新;
若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值大于0,则确定与第一逻辑流表项关联、且关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于预设的超时设定值,则删除与第一逻辑流表项关联、且关联因子值大于0的子流表项;
若用于转发数据包的时间小于预设的超时设定值,则根据与第一逻辑流表项关联的子流表项对应的关联因子值修改交换机本地的流表中相应的子流表项的关联因子值。
本发明实施例提供的一种交换机,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新为交换机维护的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
实施例十五
本发明实施例提供一种控制器15,参见图18,包括:
接收单元1501,用于接收交换机发送的第五控制面消息,第五控制面消息包括待删除的第一逻辑流表项;
删除单元1502,用于根据第五控制面消息,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项;
更新单元1503,用于根据第五控制面消息,更新控制器为交换机维护的关联因子表中的对应表项内容;
其中,逻辑流表包括至少一条逻辑流表项,关联因子表用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
可选的,接收单元1501,还可以用于接收交换机发送的第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值;
还可以包括:确定单元1504,用于根据与第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和控制器本地中为交换机维护的关联因子表中相应的子流表项的关联因子值是否相同,若不相同,则发送异常告警;
其中,关联因子关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
可选的,更新单元1503可以具体用于:
将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供的一种控制器,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
实施例十六
本发明实施例提供一种控制器16,如图19所示,包括:总线1601、连接到总线1601的存储器1602、发射器1603和处理器1604,其中,该存储器1602用于存储指令和数据;处理器1604执行该指令用于在确定交换机中待处理的第一逻辑流表项后,根据第一逻辑流表项更新控制器中为交换机维护的逻辑流表;发射器1603执行该指令用于向交换机发送控制面消息,控制面消息包括第一逻辑流表项,控制面消息用于使交换机根据第一逻辑流表项更新交换机本地的逻辑流表和交换机本地的第一关联因子关系,其中,逻辑流表包括至少一条逻辑流表项,第一关联因子关系用于表示控制器为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
在本实施例中,可选的,处理器1604执行该指令控制器确定交换机中待处理的第一逻辑流表项后,根据第一逻辑流表项更新控制器中为交换机维护的逻辑流表包括:在为交换机配置子流表项后,根据子流表项在控制器为交换机维护的逻辑流表中增加第一逻辑流表项,第一逻辑流表项与为交换机配置的子流表项关联。
在本实施例中,可选的,处理器1604执行该指令还用于:
在增加第一逻辑流表项的同时,更新控制器为交换机维护的第二关联因子关系,第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
发射器1603执行该指令还用于将为交换机配置的子流表项,和更新后第二关联因子关系中为交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至交换机,第二控制面消息用于使交换机根据第二控制面消息配置子流表项;
其中,第一关联因子关系以第一关联因子表表示,第二关联因子关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
在本实施例中,可选的,处理器1604执行该指令用于根据子流表项在控制器为交换机维护的逻辑流表中增加第一逻辑流表项包括:
将第一逻辑流表项的第二计数器的初始值设为0;
将第一逻辑流表项的第二超时设定的值设为第一逻辑流表项中添加的子流表项的超时设定的值;
将第一逻辑流表项的第二重要性设为第一逻辑流表项中添加的子流表项的优先级;
为第一逻辑流表项分配用于标识第一逻辑流表项的标识信息;
将与第一逻辑流表项关联的子流表项的标识信息按照在第一逻辑流表项中的跳转顺序组成元组,添加到第一逻辑流表项的标识元组中。
在本实施例中,可选的,处理器1604执行该指令用于更新控制器为交换机维护的第二关联因子关系包括:
根据为交换机配置子流表项后第二关联因子表中所有子流表项的标识信息,与第一逻辑表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,再根据关联关系在第二关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值;
将所有子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值;
将为交换机配置的子流表项与第一逻辑流表项的关联值,与更新前第二关联因子表中为交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为交换机配置的子流表项的关联因子值。
在本实施例中,可选的,处理器1604执行该指令还用于将为交换机配置的子流表项在更新后的第二关联因子表中的关联因子值与1进行比较;
若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值等于1,则确定第二控制面消息的消息类型为新增类型,新增类型的第二控制面消息用于使交换机在交换机本地添加为交换机配置的子流表项;
若为交换机配置的子流表项在更新后第二关联因子表中的关联因子值大于1,则确定第二控制面消息的消息类型为修改类型,修改类型的第二控制面消息用于使交换机在交换机本地修改为交换机配置的子流表项。
在本实施例中,可选的,处理器1604执行该指令确定交换机中待处理的第一逻辑流表项后,根据第一逻辑流表项更新控制器中为交换机维护的逻辑流表包括:在确定交换机待删除的第一逻辑流表项后,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项。
在本实施例中,可选的,处理器1604执行该指令还用于:
在控制器删除第一逻辑流表项时,更新控制器为交换机维护的第二关联因子关系,第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
将与第一逻辑流表项关联的子流表项,和更新后第二关联因子关系中与第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至交换机,第四控制面消息用于使交换机根据第四控制面消息配置子流表项;
其中,第一关联因子关系以第一关联因子表表示,第二关联因子关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,处理器1604执行该指令更新控制器为交换机维护的第二关联因子关系包括:
将第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值以及第一逻辑流表项的关联因子值。
在本实施例中,可选的,处理器1604执行该指令还用于:
将与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值与0进行比较;
若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值为0,则确定第四控制面消息的消息类型为删除类型,删除类型的第四控制面消息用于使交换机删除交换机本地中与第一逻辑流表项关联的子流表项;
若与第一逻辑流表项关联的子流表项在更新后的第二关联因子表中的关联因子值不为0,则确定第四控制面消息的消息类型为修改类型,修改类型的第四控制面消息用于使交换机修改交换机本地中与第一逻辑流表项关联的子流表项。
本发明实施例提供的一种控制器,当控制器确定待处理的逻辑流表项时,控制器通过发送控制面消息通知交换机同步更新逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行操作,且两者对于逻辑流表项的操作保持一致。
实施例十七
本发明实施例提供一种交换机17,如图20所示,包括:总线1701、连接到总线1701的存储器1702、发射器1703、接收器1704和处理器1705。其中,该存储器1702用于存储指令和数据;接收器1704执行该指令用于接收控制器发送的控制面消息,控制面消息包括交换机待处理的第一逻辑流表项;处理器1705执行该指令用于根据控制面消息,更新交换机本地的逻辑流表和交换机本地的关联因子关系;其中,逻辑流表包括至少一条逻辑流表项,关联因子关系用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
在本实施例中,可选的,处理器1705执行该指令接收控制器发送的控制面消息,控制面消息包括交换机待处理的第一逻辑流表项包括:接收控制器发送的第一控制面消息,第一控制面消息包括待增加的第一逻辑流表项。
在本实施例中,可选的,处理器1705执行该指令根据控制面消息,更新交换机本地的逻辑流表包括:根据第一控制面消息,在交换机本地的逻辑流表中添加第一逻辑流表项。
在本实施例中,可选的,接收器1704执行该指令还用于:接收控制器发送的第二控制面消息,第二控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值;
处理器1705执行该指令还用于:根据第二控制面消息在交换机本地配置子流表项;
其中,关联因子关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;优先级第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
在本实施例中,可选的,处理器1705执行该指令用于更新交换机本地的关联因子关系包括:
根据添加第一逻辑流表项后关联因子表中所有子流表项的标识信息,与第一逻辑流表项的标识信息确定所有子流表项与第一逻辑流表项的关联关系,并在关联因子表中添加所有子流表项中的每个子流表项与第一逻辑流表项相应的关联值;
将所有子流表项与第一逻辑流表项的关联值相加,将相加后的值作为第一逻辑流表项的关联因子值;
将与第一逻辑流表项关联的子流表项,和第一逻辑流表项的关联值,与更新前关联因子表中与第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值。
在本实施例中,可选的,接收器1704执行该指令接收控制器发送的控制面消息,控制面消息包括交换机待处理的第一逻辑流表项包括:接收控制器发送的第三控制面消息,第三控制面消息包括待删除的第一逻辑流表项。
在本实施例中,可选的,处理器1705执行该指令用于根据控制面消息,更新交换机本地的逻辑流表包括:根据第三控制面消息,删除交换机本地的逻辑流表中第一逻辑流表项。
在本实施例中,可选的,接收器1704执行该指令还用于:接收控制器发送的第四控制面消息,第四控制面消息包括与第一逻辑流表项关联的子流表项和子流表项对应的关联因子值;
处理器1705执行该指令还用于根据第四控制面消息在交换机本地配置子流表项;
其中,关联关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
在本实施例中,可选的,处理器1705执行该指令用于更新交换机本地的关联因子关系包括:
将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除关联因子表中第一逻辑流表项与关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供的一种交换机,当控制器中存在待处理的逻辑流表项时,交换机同步接收控制器通过控制面消息发送的逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机能够对逻辑流表项进行操作,且两者对于逻辑流表项的操作保持一致。
实施例十八
本发明实施例提供一种交换机18,参见图21,包括:总线1801、连接到总线1801的存储器1802、发射器1803和处理器1804,其中,该存储器1802用于存储指令和数据;处理器1804执行该指令用于交换机在确定待删除的第一逻辑流表项后,在交换机本地的逻辑流表中删除第一逻辑流表项,并更新交换机本地的第二关联因子关系;发射器1803执行该指令用于向控制器发送第五控制面消息,第五控制面消息包括第一逻辑流表项,第五控制面消息用于使控制器根据第一逻辑流表项更新控制器本地中为交换机维护的逻辑流表和为交换机维护的第一关联因子关系,其中,逻辑流表包括至少一条逻辑流表项,第一关联因子关系和第二关联因子关分别用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
在本实施例中,可选的,处理器1804执行该指令还用于:根据更新后第二关联因子关系中与第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与第一逻辑流表项关联的子流表项;
其中,第一关联关系以第一关联因子表表示,第二关联关系以第二关联因子表表示,第一关联因子表和第二关联因子表均包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
在本实施例中,可选的,处理器1804执行该指令用于更新交换机本地的第二关联因子关系包括:
将第二关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
删除更新后第二关联因子表中关联因子值为0的子流表项与每个逻辑流表项的关联值,和子流表项为0的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
在本实施例中,可选的,处理器1804执行该指令用于根据更新后第二关联因子关系中与第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与第一逻辑流表项关联的子流表项包括:
若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值为0,则在交换机本地的流表项中删除与第一逻辑流表项关联的子流表项;
向控制器发送第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值,第六控制面消息用于使控制器确定控制器本地中为交换机维护的关联因子表是否已更新;
若更新后第二关联因子表中与第一逻辑流表项关联的子流表项对应的关联因子值大于0,则确定与第一逻辑流表项关联、且关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于预设的超时设定值,则删除与第一逻辑流表项关联、且关联因子值大于0的子流表项;
若用于转发数据包的时间小于预设的超时设定值,则根据与第一逻辑流表项关联的子流表项对应的关联因子值修改交换机本地的流表中相应的子流表项的关联因子值。
本发明实施例提供的一种交换机,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新为交换机维护的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
实施例十九
本发明实施例提供一种控制器19,参见图22,包括:总线1901、连接到总线1901的存储器1902、接收器1903和处理器1904,其中,该存储器1902用于存储指令和数据;接收器1903执行该指令用于接收交换机发送的第五控制面消息,第五控制面消息包括待删除的第一逻辑流表项;处理器1904执行该指令用于根据第五控制面消息,在控制器为交换机维护的逻辑流表中删除第一逻辑流表项;处理器2104执行该指令还用于控制器根据第五控制面消息,并更新控制器为交换机维护的关联因子关系,其中,逻辑流表包括至少一条逻辑流表项,关联因子关系用于表示为交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
在本实施例中,可选的,接收器1903执行该指令还用于:接收交换机发送的第六控制面消息,第六控制面消息包括与第一逻辑流表项关联的子流表项的标识信息和关联因子值。
处理器1904执行该指令用于根据与第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和控制器本地中为交换机维护的关联因子关系中相应的子流表项的关联因子值是否相同,若不相同,则发送异常告警;
其中,关联因子关系以关联因子表表示,关联因子表包括逻辑流表项的关联因子值、子流表项的关联因子值和用于表示逻辑流表项与子流表项关联关系的关联值,逻辑流表项的关联因子值表示与逻辑流表项关联的子流表项的数量,子流表项的关联因子值表示与子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则关联值为1,若任一子流表项与任一逻辑流表项不关联,则关联值为0。
在本实施例中,可选的,子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、子流表项的关联因子值和子流表项的标识信息;
逻辑流表项包括:第二计数器,表示统计逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示逻辑流表项的有效时间;第二重要性,表示逻辑流表项的重要等级;逻辑流表项的标识信息,表示逻辑流表项对于控制器的唯一标识;标识元组,表示与逻辑流表项关联的子流表项的标识信息。
在本实施例中,可选的,处理器1904执行该指令用于更新控制器为交换机维护的关联因子关系,包括:
将关联因子表中与第一逻辑流表项关联的子流表项的关联因子值,与第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与第一逻辑流表项关联的子流表项的关联因子值;
根据第一逻辑流表项的标识信息,删除第二关联因子表中第一逻辑流表项与第二关联因子表中每个子流表项的关联值,以及第一逻辑流表项的关联因子值。
本发明实施例提供的一种控制器,当交换机中删除一条逻辑流表项时,交换机通过发送控制面消息通知控制器同步删除该逻辑流表项和更新交换机本地的关联因子表,使得控制器和交换机对于逻辑流表项的操作保持一致。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的设备和系统中,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(ReadOnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (62)

1.一种流表项的处理方法,其特征在于,包括:
控制器在确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表;
所述控制器向所述交换机发送控制面消息,所述控制面消息包括所述第一逻辑流表项,所述控制面消息用于使所述交换机根据所述第一逻辑流表项更新所述交换机本地的逻辑流表和所述交换机本地的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系用于表示所述控制器为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
2.根据权利要求1所述的方法,其特征在于,所述控制器确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表包括:
所述控制器在为所述交换机配置子流表项后,根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项,所述第一逻辑流表项与为所述交换机配置的子流表项关联。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述控制器在增加所述第一逻辑流表项的同时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述控制器将为所述交换机配置的子流表项,和更新后所述第二关联因子关系中为所述交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至所述交换机,所述第二控制面消息用于使所述交换机根据所述第二控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
4.根据权利要求2或3所述的方法,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项包括:
所述控制器将所述第一逻辑流表项的第二计数器的初始值设为0;
所述控制器将所述第一逻辑流表项的第二超时设定的值设为所述第一逻辑流表项中添加的子流表项的超时设定的值;
所述控制器将所述第一逻辑流表项的第二重要性设为所述第一逻辑流表项中添加的子流表项的优先级;
所述控制器为所述第一逻辑流表项分配用于标识所述第一逻辑流表项的标识信息;
所述控制器将与所述第一逻辑流表项关联的子流表项的标识信息按照在所述第一逻辑流表项中的跳转顺序组成元组,添加到所述第一逻辑流表项的标识元组中。
6.根据权利要求5所述的方法,其特征在于,所述更新所述控制器为所述交换机维护的第二关联因子关系包括:
所述控制器根据为所述交换机配置子流表项后所述第二关联因子表中所有子流表项的标识信息,与所述第一逻辑表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,再根据所述关联关系在所述第二关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
所述控制器将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
所述控制器将为所述交换机配置的子流表项与所述第一逻辑流表项的关联值,与更新前所述第二关联因子表中为所述交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为所述交换机配置的子流表项的关联因子值。
7.根据权利要求3所述的方法,其特征在于,在所述控制器发送所述第二控制面消息之前,所述方法还包括:
所述控制器将为所述交换机配置的子流表项在更新后的所述第二关联因子表中的关联因子值与1进行比较;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值等于1,则确定所述第二控制面消息的消息类型为新增类型,所述新增类型的第二控制面消息用于使所述交换机在所述交换机本地添加为所述交换机配置的子流表项;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值大于1,则确定所述第二控制面消息的消息类型为修改类型,所述修改类型的第二控制面消息用于使所述交换机在所述交换机本地修改为所述交换机配置的子流表项。
8.根据权利要求1所述的方法,其特征在于,所述控制器确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表包括:
所述控制器在确定所述交换机待删除的第一逻辑流表项后,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述控制器删除所述第一逻辑流表项时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述控制器将与所述第一逻辑流表项关联的子流表项,和更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至所述交换机,所述第四控制面消息用于使所述交换机根据所述第四控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
10.根据权利要求9所述的方法,其特征在于,所述更新所述控制器为所述交换机维护的第二关联因子关系包括:
所述控制器将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述控制器删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述控制器根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值以及所述第一逻辑流表项的关联因子值。
11.根据权利要求9所述的方法,其特征在于,在所述控制器发送所述第四控制面消息之前,所述方法还包括:
所述控制器将与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值与0进行比较;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值为0,则确定所述第四控制面消息的消息类型为删除类型,所述删除类型的第四控制面消息用于使所述交换机删除所述交换机本地中与所述第一逻辑流表项关联的子流表项;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值不为0,则确定所述第四控制面消息的消息类型为修改类型,所述修改类型的第四控制面消息用于使所述交换机修改所述交换机本地中与所述第一逻辑流表项关联的子流表项。
12.一种流表项的处理方法,其特征在于,包括:
交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项;
所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表和所述交换机本地的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
13.根据权利要求12所述的方法,其特征在于,所述交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项包括:
所述交换机接收所述控制器发送的第一控制面消息,所述第一控制面消息包括待增加的第一逻辑流表项。
14.根据权利要求13所述的方法,其特征在于,所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表包括:
所述交换机根据所述第一控制面消息,在所述交换机本地的逻辑流表中添加所述第一逻辑流表项。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述交换机接收所述控制器发送的第二控制面消息,所述第二控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述交换机根据所述第二控制面消息在所述交换机本地配置子流表项;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
16.根据权利要求12至15任一项所述的方法,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;优先级第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
17.根据权利要求16所述的方法,其特征在于,所述更新所述交换机本地的关联因子关系包括:
所述交换机根据添加所述第一逻辑流表项后所述关联因子表中所有子流表项的标识信息,与所述第一逻辑流表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,并在所述关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
所述交换机将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
所述交换机将与所述第一逻辑流表项关联的子流表项,和所述第一逻辑流表项的关联值,与更新前所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值。
18.根据权利要求12所述的方法,其特征在于,所述交换机接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项包括:
交换机接收控制器发送的第三控制面消息,所述第三控制面消息包括待删除的第一逻辑流表项。
19.根据权利要求18所述的方法,其特征在于,所述交换机根据所述控制面消息,更新所述交换机本地的逻辑流表包括:
所述交换机根据所述第三控制面消息,删除所述交换机本地的逻辑流表中所述第一逻辑流表项。
20.根据权利要求18所述的方法,其特征在于,所述方法还包括:
所述交换机接收所述控制器发送的第四控制面消息,所述第四控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述交换机根据所述第四控制面消息在所述交换机本地配置子流表项;
其中,所述关联关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
21.根据权利要求18至20任一项所述的方法,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
22.根据权利要求21所述的方法,其特征在于,所述更新所述交换机本地的关联因子关系包括:
所述交换机将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述交换机删除更新后所述关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述交换机根据所述第一逻辑流表项的标识信息,删除所述关联因子表中所述第一逻辑流表项与所述关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
23.一种流表项的处理方法,其特征在于,包括:
交换机在确定待删除的第一逻辑流表项后,在所述交换机本地的逻辑流表中删除所述第一逻辑流表项,并更新所述交换机本地的第二关联因子关系;
所述交换机向控制器发送第五控制面消息,所述第五控制面消息包括所述第一逻辑流表项,所述第五控制面消息用于使所述控制器根据所述第一逻辑流表项更新所述控制器本地中为所述交换机维护的逻辑流表和为所述交换机维护的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系和所述第二关联因子关分别用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
24.根据权利要求23所述的方法,其特征在于,所述方法还包括:
所述交换机根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项;
其中,所述第一关联关系以第一关联因子表表示,所述第二关联关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
25.根据权利要求23或24所述的方法,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
26.根据权利要求25所述的方法,其特征在于,所述更新所述交换机本地的第二关联因子关系包括:
所述交换机将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述交换机删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
所述交换机根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
27.根据权利要求26所述的方法,其特征在于,所述交换机根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项包括:
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值为0,则所述交换机在所述交换机本地的流表项中删除与所述第一逻辑流表项关联的子流表项;
所述交换机向所述控制器发送第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值,所述第六控制面消息用于使所述控制器确定所述控制器本地中为所述交换机维护的关联因子表是否已更新;
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值大于0,则所述交换机确定与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于所述预设的超时设定值,则所述交换机删除与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项;
若用于转发数据包的时间小于所述预设的超时设定值,则所述交换机根据与所述第一逻辑流表项关联的子流表项对应的关联因子值修改所述交换机本地的流表中相应的子流表项的关联因子值。
28.一种流表项的处理方法,其特征在于,包括:
控制器接收交换机发送的第五控制面消息,所述第五控制面消息包括待删除的第一逻辑流表项;
所述控制器根据所述第五控制面消息,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项,并更新所述控制器为所述交换机维护的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
29.根据权利要求28所述的方法,其特征在于,所述方法还包括:
所述控制器接收所述交换机发送的第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值;
所述控制器根据与所述第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和所述控制器本地中为所述交换机维护的关联因子关系中相应的子流表项的关联因子值是否相同,若不相同,则所述控制器发送异常告警;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
30.根据权利要求28或29所述的方法,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
31.根据权利要求28所述的方法,其特征在于,所述更新所述控制器为所述交换机维护的关联因子关系包括:
所述控制器将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
所述控制器根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
32.一种控制器,其特征在于,包括:
更新单元,用于在确定交换机中待处理的第一逻辑流表项后,根据所述第一逻辑流表项更新所述控制器中为所述交换机维护的逻辑流表;
发送单元,用于向所述交换机发送控制面消息,所述控制面消息包括所述第一逻辑流表项,所述控制面消息用于使所述交换机根据所述第一逻辑流表项更新所述交换机本地的逻辑流表和所述交换机本地的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系用于表示所述控制器为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
33.根据权利要求32所述的控制器,其特征在于,所述更新单元具体用于:
在为所述交换机配置子流表项后,根据所述子流表项在所述控制器为所述交换机维护的逻辑流表中增加所述第一逻辑流表项,所述第一逻辑流表项与为所述交换机配置的子流表项关联。
34.根据权利要求33所述的控制器,其特征在于,所述更新单元还用于:在增加所述第一逻辑流表项的同时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述发送单元还用于:将为所述交换机配置的子流表项,和更新后所述第二关联因子关系中为所述交换机配置的子流表项对应的关联因子值通过第二控制面消息发送至所述交换机,所述第二控制面消息用于使所述交换机根据所述第二控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
35.根据权利要求33或34所述的控制器,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
36.根据权利要求35所述的控制器,其特征在于,所述更新单元具体用于:
将所述第一逻辑流表项的第二计数器的初始值设为0;
将所述第一逻辑流表项的第二超时设定的值设为所述第一逻辑流表项中添加的子流表项的超时设定的值;
将所述第一逻辑流表项的第二重要性设为所述第一逻辑流表项中添加的子流表项的优先级;
为所述第一逻辑流表项分配用于标识所述第一逻辑流表项的标识信息;
将与所述第一逻辑流表项关联的子流表项的标识信息按照在所述第一逻辑流表项中的跳转顺序组成元组,添加到所述第一逻辑流表项的标识元组中。
37.根据权利要求36所述的控制器,其特征在于,所述更新单元具体用于:
根据为所述交换机配置子流表项后所述第二关联因子表中所有子流表项的标识信息,与所述第一逻辑表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,再根据所述关联关系在所述第二关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
将为所述交换机配置的子流表项与所述第一逻辑流表项的关联值,与更新前所述第二关联因子表中为所述交换机配置的子流表项的关联因子值相加,将相加后的值作为更新后为所述交换机配置的子流表项的关联因子值。
38.根据权利要求34所述的控制器,其特征在于,还包括:
第一确定单元,用于将为所述交换机配置的子流表项在更新后的所述第二关联因子表中的关联因子值与1进行比较;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值等于1,则确定所述第二控制面消息的消息类型为新增类型,所述新增类型的第二控制面消息用于使所述交换机在所述交换机本地添加为所述交换机配置的子流表项;
若为所述交换机配置的子流表项在更新后所述第二关联因子表中的关联因子值大于1,则确定所述第二控制面消息的消息类型为修改类型,所述修改类型的第二控制面消息用于使所述交换机在所述交换机本地修改为所述交换机配置的子流表项。
39.根据权利要求32所述的控制器,其特征在于,所述更新单元具体用于:在确定所述交换机待删除的第一逻辑流表项后,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项。
40.根据权利要求39所述的控制器,其特征在于,所述更新单元还用于:在所述控制器删除所述第一逻辑流表项时,更新所述控制器为所述交换机维护的第二关联因子关系,所述第二关联因子关系用于表示对应交换机的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系;
所述发送单元还用于:将与所述第一逻辑流表项关联的子流表项,和更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值通过第四控制面消息发送至所述交换机,所述第四控制面消息用于使所述交换机根据所述第四控制面消息配置子流表项;
其中,所述第一关联因子关系以第一关联因子表表示,所述第二关联因子关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
41.根据权利要求40所述的控制器,其特征在于,所述更新单元具体用于:
将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值以及所述第一逻辑流表项的关联因子值。
42.根据权利要求41所述的控制器,其特征在于,还包括:
第二确定单元,用于将与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值与0进行比较;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值为0,则确定所述第四控制面消息的消息类型为删除类型,所述删除类型的第四控制面消息用于使所述交换机删除所述交换机本地中与所述第一逻辑流表项关联的子流表项;
若与所述第一逻辑流表项关联的子流表项在更新后的所述第二关联因子表中的关联因子值不为0,则确定所述第四控制面消息的消息类型为修改类型,所述修改类型的第四控制面消息用于使所述交换机修改所述交换机本地中与所述第一逻辑流表项关联的子流表项。
43.一种交换机,其特征在于,包括:
接收单元,用于接收控制器发送的控制面消息,所述控制面消息包括所述交换机待处理的第一逻辑流表项;
更新单元,用于根据所述控制面消息,更新所述交换机本地的逻辑流表和所述交换机本地的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
44.根据权利要求43所述的交换机,其特征在于,所述接收单元具体用于:接收所述控制器发送的第一控制面消息,所述第一控制面消息包括待增加的第一逻辑流表项。
45.根据权利要求44所述的交换机,其特征在于,所述更新单元具体用于:根据所述第一控制面消息,在所述交换机本地的逻辑流表中添加所述第一逻辑流表项。
46.根据权利要求44所述的交换机,其特征在于,所述接收单元还用于:接收所述控制器发送的第二控制面消息,所述第二控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述更新单元还用于:根据所述第二控制面消息在所述交换机本地配置子流表项;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
47.根据权利要求43至46任一项所述的交换机,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;优先级第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
48.根据权利要求47所述的交换机,其特征在于,所述更新单元具体用于:
根据添加所述第一逻辑流表项后所述关联因子表中所有子流表项的标识信息,与所述第一逻辑流表项的标识信息确定所述所有子流表项与所述第一逻辑流表项的关联关系,并在所述关联因子表中添加所述所有子流表项中的每个子流表项与所述第一逻辑流表项相应的关联值;
将所述所有子流表项与所述第一逻辑流表项的关联值相加,将相加后的值作为所述第一逻辑流表项的关联因子值;
将与所述第一逻辑流表项关联的子流表项,和所述第一逻辑流表项的关联值,与更新前所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值相加,将相加后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值。
49.根据权利要求43所述的交换机,其特征在于,所述接收单元具体用于:接收控制器发送的第三控制面消息,所述第三控制面消息包括待删除的第一逻辑流表项。
50.根据权利要求49所述的交换机,其特征在于,所述更新单元具体用于:根据所述第三控制面消息,删除所述交换机本地的逻辑流表中所述第一逻辑流表项。
51.根据权利要求50所述的交换机,其特征在于,所述接收单元还用于:接收所述控制器发送的第四控制面消息,所述第四控制面消息包括与所述第一逻辑流表项关联的子流表项和所述子流表项对应的关联因子值;
所述更新单元还用于:根据所述第四控制面消息在所述交换机本地配置子流表项;
其中,所述关联关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
52.根据权利要求49至51任一项所述的交换机,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
53.根据权利要求52所述的交换机,其特征在于,所述更新单元具体用于:
将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述关联因子表中所述第一逻辑流表项与所述关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
54.一种交换机,其特征在于,包括:
删除单元,用于在确定待删除的第一逻辑流表项后,在所述交换机本地的逻辑流表中删除所述第一逻辑流表项;
更新单元,用于更新所述交换机本地的第二关联因子关系;
发送单元,用于向控制器发送第五控制面消息,所述第五控制面消息包括所述第一逻辑流表项,所述第五控制面消息用于使所述控制器根据所述第一逻辑流表项更新所述控制器本地中为所述交换机维护的逻辑流表和为所述交换机维护的第一关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述第一关联因子关系和所述第二关联因子关分别用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
55.根据权利要求54所述的交换机,其特征在于,还包括:
确定单元,用于根据更新后所述第二关联因子关系中与所述第一逻辑流表项关联的子流表项对应的关联因子值,确定是否删除与所述第一逻辑流表项关联的子流表项;
其中,所述第一关联关系以第一关联因子表表示,所述第二关联关系以第二关联因子表表示,所述第一关联因子表和所述第二关联因子表均包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
56.根据权利要求54或55所述的交换机,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
57.根据权利要求56所述的交换机,其特征在于,所述更新单元具体用于:
将所述第二关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
删除更新后所述第二关联因子表中所述关联因子值为0的子流表项与每个逻辑流表项的关联值,和所述子流表项为0的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
58.根据权利要求57所述的交换机,其特征在于,所述确定单元具体用于:
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值为0,则在所述交换机本地的流表项中删除与所述第一逻辑流表项关联的子流表项;
向所述控制器发送第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值,所述第六控制面消息用于使所述控制器确定所述控制器本地中为所述交换机维护的关联因子表是否已更新;
若所述更新后所述第二关联因子表中与所述第一逻辑流表项关联的子流表项对应的关联因子值大于0,则确定与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项用于转发数据包的时间是否小于预设的超时设定值;
若用于转发数据包的时间大于或等于所述预设的超时设定值,则删除与所述第一逻辑流表项关联、且所述关联因子值大于0的子流表项;
若用于转发数据包的时间小于所述预设的超时设定值,则根据与所述第一逻辑流表项关联的子流表项对应的关联因子值修改所述交换机本地的流表中相应的子流表项的关联因子值。
59.一种控制器,其特征在于,包括:
接收单元,用于接收交换机发送的第五控制面消息,所述第五控制面消息包括待删除的第一逻辑流表项;
删除单元,用于根据所述第五控制面消息,在所述控制器为所述交换机维护的逻辑流表中删除所述第一逻辑流表项;
更新单元,用于更新所述控制器为所述交换机维护的关联因子关系;
其中,所述逻辑流表包括至少一条逻辑流表项,所述关联因子关系用于表示为所述交换机配置的所有子流表项中任一子流表项和所有逻辑流表项中任一逻辑流表项两两之间的关联关系。
60.根据权利要求59所述的控制器,其特征在于,所述接收单元还用于:接收所述交换机发送的第六控制面消息,所述第六控制面消息包括与所述第一逻辑流表项关联的子流表项的标识信息和关联因子值;
所述控制器还包括:确定单元,用于根据与所述第一逻辑流表项关联的子流表项的标识信息,确定与述第一逻辑流表项关联的子流表项关联因子值,和所述控制器本地中为所述交换机维护的关联因子关系中相应的子流表项的关联因子值是否相同,若不相同,则所述控制器发送异常告警;
其中,所述关联因子关系以关联因子表表示,所述关联因子表包括所述逻辑流表项的关联因子值、所述子流表项的关联因子值和用于表示所述逻辑流表项与所述子流表项关联关系的关联值,所述逻辑流表项的关联因子值表示与所述逻辑流表项关联的子流表项的数量,所述子流表项的关联因子值表示与所述子流表项关联的逻辑流表项的数量;
其中,若任一子流表项与任一逻辑流表项关联,则所述关联值为1,若所述任一子流表项与任一逻辑流表项不关联,则所述关联值为0。
61.根据权利要求59或60所述的控制器,其特征在于,所述子流表项包括匹配字段、优先级、第一计数器、指令、第一超时设定、第一重要性、所述子流表项的关联因子值和所述子流表项的标识信息;
所述逻辑流表项包括:第二计数器,表示统计所述逻辑流表项用于转发数据包时的匹配次数;第二超时设定,表示所述逻辑流表项的有效时间;第二重要性,表示所述逻辑流表项的重要等级;所述逻辑流表项的标识信息,表示所述逻辑流表项对于所述控制器的唯一标识;标识元组,表示与所述逻辑流表项关联的子流表项的标识信息。
62.根据权利要求59所述的控制器,其特征在于,所述更新单元具体用于:将所述关联因子表中与所述第一逻辑流表项关联的子流表项的关联因子值,与所述第一逻辑流表项关联的子流表项的关联值相减,将相减后的值作为更新后与所述第一逻辑流表项关联的子流表项的关联因子值;
根据所述第一逻辑流表项的标识信息,删除所述第二关联因子表中所述第一逻辑流表项与所述第二关联因子表中每个子流表项的关联值,以及所述第一逻辑流表项的关联因子值。
CN201410481904.0A 2014-09-19 2014-09-19 一种流表项的处理方法、控制器和交换机 Expired - Fee Related CN105490943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410481904.0A CN105490943B (zh) 2014-09-19 2014-09-19 一种流表项的处理方法、控制器和交换机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410481904.0A CN105490943B (zh) 2014-09-19 2014-09-19 一种流表项的处理方法、控制器和交换机

Publications (2)

Publication Number Publication Date
CN105490943A true CN105490943A (zh) 2016-04-13
CN105490943B CN105490943B (zh) 2019-02-01

Family

ID=55677672

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410481904.0A Expired - Fee Related CN105490943B (zh) 2014-09-19 2014-09-19 一种流表项的处理方法、控制器和交换机

Country Status (1)

Country Link
CN (1) CN105490943B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114760237A (zh) * 2022-03-11 2022-07-15 深圳市风云实业有限公司 一种基于tcam表的多级流表构建方法
CN114760237B (zh) * 2022-03-11 2024-04-19 深圳市风云实业有限公司 一种基于tcam表的多级流表构建方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102843299A (zh) * 2012-09-12 2012-12-26 盛科网络(苏州)有限公司 基于TCAM实现Openflow多级流表的方法及系统
US20130086236A1 (en) * 2011-09-30 2013-04-04 Stephan Baucke Using mpls for virtual private cloud network isolation in openflow-enabled cloud computing
CN103731354A (zh) * 2013-12-25 2014-04-16 江苏省未来网络创新研究院 一种基于自定义多级流表快速匹配方法
US20140211795A1 (en) * 2011-08-29 2014-07-31 Nec Corporation Communication system, control device, node, node control method, and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140211795A1 (en) * 2011-08-29 2014-07-31 Nec Corporation Communication system, control device, node, node control method, and program
US20130086236A1 (en) * 2011-09-30 2013-04-04 Stephan Baucke Using mpls for virtual private cloud network isolation in openflow-enabled cloud computing
CN102843299A (zh) * 2012-09-12 2012-12-26 盛科网络(苏州)有限公司 基于TCAM实现Openflow多级流表的方法及系统
CN103731354A (zh) * 2013-12-25 2014-04-16 江苏省未来网络创新研究院 一种基于自定义多级流表快速匹配方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114760237A (zh) * 2022-03-11 2022-07-15 深圳市风云实业有限公司 一种基于tcam表的多级流表构建方法
CN114760237B (zh) * 2022-03-11 2024-04-19 深圳市风云实业有限公司 一种基于tcam表的多级流表构建方法

Also Published As

Publication number Publication date
CN105490943B (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
US11929945B2 (en) Managing network traffic in virtual switches based on logical port identifiers
US10200279B1 (en) Tracer of traffic trajectories in data center networks
JP6055009B2 (ja) パケット処理方法、装置及びシステム
US8873563B2 (en) Techniques for next-hop optimization
EP3208977A1 (en) Data forwarding method, device and system in software-defined networking
EP3099026B1 (en) In-network message processing method, in-network message forwarding equipment and in-network message processing system
CN103379039A (zh) 一种用于流统计的方法、装置及系统
EP3179687B1 (en) Network flow information statistics method and apparatus
US10498643B2 (en) Method for constructing multipath forwarding rule, apparatus, and system
EP3091708B1 (en) Processing rule modification method and apparatus
CN104734988A (zh) 软件定义网络中路由控制的方法和开放流控制器
CN108471383A (zh) 报文转发方法、装置和系统
US20170063732A1 (en) Divided hierarchical network system based on software-defined networks
CN105743687B (zh) 节点故障的判断方法及装置
CN105099916A (zh) 开放流路由交换设备及其对数据报文的处理方法
CN104869064A (zh) 一种流表更新方法及装置
US20200028779A1 (en) Packet processing method and apparatus
CN105075196A (zh) 控制器、通信系统、路径切换方法和程序
US11012542B2 (en) Data processing method and apparatus
CN110291764A (zh) 识别和调整无效的防火墙规则
KR101924712B1 (ko) 패킷 전송 방법 및 오픈플로우 스위치
CN105281960A (zh) 软件定义网络中流量项目的管理方法
CN104380668A (zh) 交换机装置、vlan设置管理方法以及程序
CN105490943A (zh) 一种流表项的处理方法、控制器和交换机
CN104518970A (zh) 流表更新方法、装置及控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190201

Termination date: 20190919

CF01 Termination of patent right due to non-payment of annual fee