CN104782087B - 交换设备、控制器、交换设备配置、报文处理方法及系统 - Google Patents
交换设备、控制器、交换设备配置、报文处理方法及系统 Download PDFInfo
- Publication number
- CN104782087B CN104782087B CN201380001300.5A CN201380001300A CN104782087B CN 104782087 B CN104782087 B CN 104782087B CN 201380001300 A CN201380001300 A CN 201380001300A CN 104782087 B CN104782087 B CN 104782087B
- Authority
- CN
- China
- Prior art keywords
- database
- message
- record
- instruction
- list item
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
Abstract
本发明公开了一种交换设备、控制器、交换设备配置、报文处理方法及系统,涉及通信领域。方法包括:在至少一个流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息;并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到与所述报文相匹配的第一记录;数据库中每条所述记录均包括第一字段,第一字段用于表示需匹配信息的指定值。方法包括:接收报文;根据报文需匹配的流表中第一表项的匹配域,获取报文的需匹配信息的值;采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,当得到与报文相匹配的第一记录时,按照报文处理指令对报文进行处理。本发明减少表项数量。
Description
技术领域
本发明涉及通信领域,特别涉及一种交换设备、控制器、交换设备配置、报文处理方法及系统。
背景技术
OpenFlow是OpenFlow控制器(OpenFlow Controller,下文简称控制器)和OpenFlow交换机(OpenFlow Switch,下文简称交换机)之间的控制协议。控制器主要通过流表(Flow Table)控制交换机的行为。流表存储在交换机中,由若干表项(Flow Entry)构成。每个表项通常包括匹配域(Match Fields)和指令(Instructions)。其中,匹配域通常指定了需匹配信息(可以是各种各样的报文头域或者交换机接收该报文的端口号等信息),并提供该需匹配信息的指定值,该指定值用于与报文的需匹配信息的实际值进行比较,指令包含多种,其中包括用于指示对报文进行操作的动作(Action)。
交换机收到报文后,会将收到的报文与需匹配流表中各表项的匹配域进行匹配(即比较该报文的需匹配信息的实际值与需匹配流表中各表项的匹配域的指定值是否相同),若与某个表项的匹配域匹配成功(即该表项的匹配域的内容与该报文的需匹配信息的实际值相同),则将该报文按照匹配成功的表项中指令进行处理;若与需匹配流表中的所有其他表项的匹配域均匹配失败,且流表中存在Table-Miss表项(Table-Miss表项是OpenFlow流表中的一个特殊表项,这个表项没有匹配域,即和所有报文都能匹配成功,匹配优先级最低),则根据Table-Miss表项进行处理(比如可以丢弃或者送给控制器处理),如果没有Table-Miss表项,则根据流表的属性决定对如何对报文进行处理(比如可以配置为丢弃或者送给控制器处理)。如果根据Table-Miss表项或者流表属性,报文需要发送给控制器,则向控制器发送用于指示匹配失败的第一OpenFlow消息(该第一OpenFlow消息包括匹配失败的报文的全部或部分内容)。控制器若收到该第一OpenFlow消息,可以通过第二OpenFlow消息为交换机下发表项,以指示交换机在需匹配流表中建立新的表项,该新的表项的匹配域中需匹配信息的指定值与报文的需匹配信息的实际值相匹配。交换机在需匹配流表中建立该表项后,可以重新对报文进行匹配。不依赖于交换机上报的报文,控制器也可以直接下发第三OpenFlow消息,以指示交换机在需匹配流表中建立新的表项。
为了减少交换机与控制器之间的OpenFlow消息,现有技术提供了一种交换机配置方法,该方法包括:首先,为交换机中的指定流表配置同步流表和同步规则,该同步规则用于将指定流表中的表项转换为同步流表中的表项,从而实现两个流表的表项增加、修改和删除等更新操作的同步。然后,交换机接收控制器下发第二或第三OpenFlow消息,并在该第二或第三OpenFlow消息指定的流表中增加、修改或删除表项,若该第二或第三OpenFlow消息指定的流表具有同步流表,那么交换机会在该同步流表中,根据同步规则更新与该表项对应的表项。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:当指定流表中表项进行更新时,同步流表中的表项也要同步进行更新。若同步更新失败,将使同步流表中的表项是未更新的,进而导致报文与同步流表中表项匹配时,会进行错误的报文匹配。此外,交换机需要维护大量表项,不同流表的表项中存在大量冗余信息,系统开销随着组网规模的增大而增大。
发明内容
为了消除不同流表的表项中存在的冗余信息,减少表项数量,本发明实施例提供了一种交换设备、控制器、交换设备配置、报文处理方法及系统。所述技术方案如下:
第一方面,本发明实施例提供了一种交换设备配置方法,所述交换设备中设有一个或多个流表,所述方法包括:
在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一条记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据块中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述方法还包括:
在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述方法还包括:
接收操作人员下发的配置命令,并根据所述配置命令创建所述数据库;或,
接收控制器发送的数据库创建指示,并根据所述数据库创建指示建立所述数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述方法还包括:
接收控制器发送的数据库更新指示,根据所述数据库更新指示对所述数据库进行更新,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,所述方法还包括:
接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
可选地,所述在至少一个所述流表中设置第一表项之前,所述方法还包括:
查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
第二方面,本发明实施例提供了一种交换设备配置方法,所述方法包括:
发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示所述交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述方法还包括:
发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述方法还包括:
向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述方法还包括:
向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,所述方法还包括:
向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
可选地,所述方法还包括:
接收所述交换设备返回的表示所述数据库不存在的消息。
第三方面,本发明实施例提供了一种报文处理方法,所述方法包括:
接收报文;
根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值;
当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
可选地,按照所述报文处理指令对所述报文进行处理,包括:
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
可选地,当所述数据库中存在多条所述第一记录时,所述以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数,包括:
以第一条所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述方法还包括:
在所述记录处理指令的指示下,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述对指定数据库中指定记录进行操作,包括:
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述方法还包括:
当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
第四方面,本发明实施例提供了一种交换设备,所述交换设备中设有一个或多个流表,所述设备包括:
第一设置模块,用于在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一条记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述设备还包括:
第二设置模块,用于在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述设备还包括:
创建模块,用于接收操作人员下发的配置命令,并根据所述配置命令创建所述数据库;或,
接收控制器发送的数据库创建指示,并根据所述数据库创建指示建立所述数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述设备还包括:
更新模块,用于接收控制器发送的数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录;
根据所述数据库更新指示对所述数据库进行更新。
可选地,所述设备还包括:
接收发送模块,用于接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
可选地,所述在至少一个所述流表中设置第一表项之前,所述设备还包括:
查询模块,用于查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
第五方面,本发明实施例提供了一种交换设备,所述交换设备中设有一个或多个流表,包括处理器和网络接口,所述处理器用于:
在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述处理器还用于:
在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述网络接口用于:
接收操作人员下发的配置命令,或接收控制器发送的数据库创建指示,所述数据库创建指示包括数据库标识和数据库字段信息;
所述处理器还用于:
根据所述配置命令创建所述数据库;或,
根据所述数据库创建指示建立所述数据库。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述网络接口用于:
接收控制器发送的数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录;
所述处理器还用于,根据所述数据库删除指示对所述数据库进行更新。
可选地,所述网络接口用于:
接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
所述处理器还用于,向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
可选地,所述处理器还用于:
查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
第六方面,本发明实施例提供了一种控制器,所述控制器包括:
第一发送模块,用于发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示所述交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述控制器还包括:
第二发送模块,用于发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述控制器还包括:
第三发送模块,用于向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述控制器还包括:
第四发送模块,用于向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,所述控制器还包括:
第五发送模块,用于向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
可选地,所述控制器还包括:
第一接收模块,用于接收所述交换设备返回的表示所述数据库不存在的消息。
第七方面,本发明实施例提供了一种控制器,包括处理器和网络接口,所述处理器用于:
发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示所述交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
可选地,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
可选地,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
可选地,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述方法还包括:
发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
可选地,所述处理器还用于:
向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
可选地,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,所述处理器还用于:
向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,所述处理器还用于:
向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
可选地,所述网络接口用于:
接收所述交换设备返回的表示所述数据库不存在的消息。
第八方面,本发明实施例提供了一种交换设备,所述设备包括:
第二接收模块,用于接收报文;
获取模块,用于根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
匹配模块,用于在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值;
第一处理模块,用于当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
可选地,所述第一处理模块用于,
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
可选地,当所述数据库中存在多条所述第一记录时,所述第一处理模块用于,
以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述第一处理模块还用于,在所述记录处理指令的指示下,对指定数据库中指定记录进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一处理模块还用于,
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述设备还包括:
第二处理模块,用于当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
第九方面,本发明实施例提供了一种交换设备,包括处理器和网络接口,所述处理器用于:
接收报文;
根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值;
当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
可选地,所述处理器还用于:
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
可选地,当所述数据库中存在多条所述第一记录时,所述以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数,所述处理器还用于:
以第一条所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
可选地,所述第一表项还包括记录处理指令,所述处理器还用于:
在所述记录处理指令的指示下,对指定数据库中指定进行操作。
可选地,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述处理器还用于:
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
可选地,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述处理器还用于:
当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
第十方面,本发明实施例提供了一种报文处理系统,所述系统包括前述控制器和前述交换设备。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的OpenFlow系统的典型应用场景的示意图;
图2是本发明实施例提供的OpenFlow交换机对报文的处理过程的示意图;
图3是本发明实施例提供的一种交换设备配置方法的流程图;
图4是本发明实施例提供的又一种交换设备配置方法的流程图;
图5-图8是本发明实施例提供的一种报文处理方法的流程图;
图9和图10是本发明实施例提供的一种交换设备的结构示意图;
图11和图12是本发明实施例提供的一种控制器的结构示意图;
图13和图14是本发明实施例提供的又一种交换设备的结构示意图;
图15是本发明实施例提供的一种报文处理系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例适用于控制面和转发面相分离的网络架构,尤其适用于OpenFlow网络架构。其中,控制面可以集中部署,转发面可以根据实际需求分布式部署在多个物理设备上,控制面通过对转发面进行控制,从而可以实现各种各样的网络功能,例如路由、交换等等。
为了便于理解本发明实施例提供的技术方案,下面以OpenFlow网络架构为例,介绍一下本发明实施例的典型应用场景,但并不以此为限。在OpenFlow网络架构中,控制面网元被称为OpenFlow控制器(下文简称控制器),转发面网元被称为OpenFlow交换机(下文简称交换机),参见图1,交换机S与控制器C连接。交换机S与控制器C采用符合OpenFlow协议的信令信息进行通信。交换机S具有x个端口,分别记为P1、P2……Px,x为自然数且x≥2,每个端口可以连接一个主机,连接在端口Px的主机可以记为PCx。在图1所示场景中,主机PCx直接与交换机S的端口Px连接,在本发明实施例的其它应用场景中,交换机S也可以通过其他交换机分别与控制器C和主机连接。本发明实施例不限定交换机S分别与控制器C和主机PCx的连接方式。
交换机S中可以存储一个或者多个流表。每个流表具有唯一的标识(Identity,简称ID),在本发明实施例中,该ID被称为流表ID。每个流表由若干表项构成。
参见表1,表项的内容包括匹配域(Match Fields)和指令(Instructions)。
表1
Match Fields | Instructions |
流表ID用于表示该表项属于哪个流表。匹配域用于指定与各种各样的报文的头域或其他与报文关联的信息(包括交换机接收报文的接收端口ID和与报文关联的元数据,详见下文描述)进行匹配的需匹配信息,并提供需匹配信息的指定值。指令用于指示如何对匹配成功的报文进行操作。一般地,交换机S在控制器C的指示下,对流表中的表项进行添加、删除和更新。进一步地,表项的内容还包括优先级(Priority)。优先级用于指示报文与流表中每个表项的匹配顺序。更进一步地,表项的内容还包括计数器(Counters)、老化时间(Timeouts)和Cookie。
交换机S接收到主机PCx发送的报文后,将该报文从第一个需匹配流表(通常为流表ID值最小的流表)中所有表项开始匹配。如果匹配失败,则可以将该报文丢弃或者发送给控制器处理(可以通过执行流表中Table-Miss表项完成)。如果匹配成功,则执行匹配成功的表项中的指令。指令包括多种,比如报文处理指令Action、流水线控制指令Goto-Table等等,某些指令包含参数。例如,假设指令为“Goto-Table Table2”,“Goto-Table”为指令类型,“Table2”为参数,该指令的意思为跳转到流表的ID为Table2的流表继续匹配处理该报文。
如果匹配成功的表项中的指令为跳转到其他流表,则跳转到其他流表继续匹配处理该报文。也就是说,报文可能会与多个流表进行匹配。Action又包含多种,比如OutputPort1,这里的Output为Action类型,表示发送报文,Port1为参数,表示端口1,整个Action表示将报文从端口1发送出去。下面详细描述报文与多个流表的匹配处理过程。
参见图2,假设交换机S从接收端口P1收到主机PC1发送的报文Packet。报文Packet将依次与交换机S中流表Table0(第一个需匹配流表)、Table1、…、以及TableN进行匹配。交换机收到报文Packet后,将报文Packet和接收端口(ingress port)IDP1送至Table0进行流水线似的匹配。Table0完成匹配和处理后,会得到这些信息:接收端口IDP1、处理后的报文Packet+和与报文Packet+关联的元数据(metadata),并根据Goto-Table跳转到下一个流表进行匹配处理,或者根据Action指令丢弃报文,或者根据Action指令将报文从某个端口发送出去,或者根据Action指令将报文发送给控制器处理。元数据为Table0处理报文Packet后产生的动态信息,该动态信息在报文Packet+后续需匹配的流表中需要使用。例如,Packet经Table0处理后,去掉了GRE头,那么可以在元数据中记录该GRE头。这些信息将被传递至下一个流表,假设为Table1,进行匹配。与Table0的处理过程相似,Table0至TableN之间所有流表完成匹配后,也会得到这些信息。当这些信息传递至TableN后,TableN会得到最终处理后的报文。值得说明的是,流表之间传递的信息并不限于前述列举的信息,例如,流表之间还可以传递动作集合(Action Set)。动作集合最开始为一个空集(报文送至Table0时),用于存放流表中定义的指令的处理动作,这些指令可以传递给其他流表,最后在流水线终结的流表执行。
实施例一
本发明实施例提供了一种交换设备配置方法,适用于前述应用场景。参见图3,该方法流程包括:
步骤301:控制器发送第一表项安装消息,该第一表项安装消息包括流表ID和第一表项,该第一表项安装消息用于指示交换设备在流表ID对应的流表中设置第一表项。
其中,该第一表项包括匹配域。该匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配。
其中,该需匹配信息包括但不限于报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。这些需匹配信息是OpenFlow协议目前定义的内容,不排除将来OpenFlow协议会定义其他或更多的需匹配信息。
其中,该数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
具体地,数据库可以预先设置在交换设备中。进一步地,交换设备可以根据人工输入的配置命令创建数据库,或者,交换设备在控制器的指示下创建数据库。
步骤302:交换设备根据第一表项安装信息,在至少一个流表中设置该第一表项。
具体地,交换设备在该第一表项安装消息中的流表ID对应的流表中设置该第一表项。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例二
本发明实施例提供了一种交换设备配置方法,适用于前述应用场景。参见图4,该方法流程包括:
步骤401:控制器向交换设备发送数据库创建指示,该数据库创建指示用于指示交换设备创建数据库。
具体地,控制器包括但不限于图1所示的控制器C,交换设备包括但不限于图1中交换机S,该交换机S中设有一个或多个流表。
具体地,控制器可以通过OpenFlow消息向交换设备发送数据库创建指示。该数据库创建指示包括数据库ID和数据库字段信息,其中,数据库字段信息包括字段名称。数据库字段信息还可以包括字段的数据类型和长度、缺省值、以及是否为数据库的关键字。
例如,假设OpenFlow消息携带的数据库创建指示为“Create DataBase:DataBaseID=0,Fields(MAC,Port-ID)”。该数据库创建指示中,数据库ID为0,数据库中记录包括两个字段:媒体介入控制(Media Access Control,简称MAC)地址字段和Port-ID(端口ID)字段。进一步地,可以指定每个字段的数据类型和长度,比如可以指定MAC地址字段为长度为6的字符数组,Port-ID字段为32比特的无符号整数。还可以指定字段是否为数据库的主关键字,比如本实施例中,控制器可以指定以MAC地址字段为主关键字,这样通过MAC地址可以唯一确定一条数据库记录。
进一步地,该数据库创建指示还可以包括数据库属性信息和统计信息中的至少一种。其中,该数据库属性信息包括数据库的最大记录数、记录的老化时间、以及是否允许交换设备更改数据库中的记录中的一种或多种。该统计信息包括数据库的总记录数、数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数中的一种或多种。
步骤402:交换设备接收控制器发送的数据库创建指示,根据数据库创建指示建立数据库。
需要说明的是,交换设备还可以接收操作人员下发的配置命令,并根据配置命令创建数据库。
步骤403:控制器向交换设备发送数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
其中,控制器可以根据业务需要,任意时间控制交换设备对数据库进行更改。具体地,控制器可以通过OpenFlow消息向交换设备发送数据库更新指示。例如,假设该记录更新指示为,Add Record:DataBase ID=0,Fields(MAC=MAC1,Port-ID=1)。其中,该记录更新指示用于指示交换设备在数据库0中增加这样的记录:MAC字段值为MAC1,Port-ID字段值为1。
假设交换设备创建的数据库为表2所示的数据库,该数据库ID为0,包括2条记录,每条记录包括MAC字段和Port-ID字段。
表2
需要说明的是,交换设备可以将数据库建立在交换设备的存储空间内,也可以将数据库建立在该交换设备以外的实体设备上。
步骤404:交换设备根据数据库更新指示对数据库进行更新。
具体地,本步骤404包括:交换设备根据数据库删除指示,删除指定数据库;根据记录更新指示,对数据库中的记录进行更新。
其中,交换设备根据数据库更新指示对数据库进行更新之前,包括:交换设备查询待更新的数据库是否存在、以及待更新的记录是否存在。当待更新的数据库、以及待更新的记录不存在时,交换设备上报表示不存在的消息给控制器。
步骤405:控制器发送第一表项安装消息,该第一表项安装消息包括流表ID和第一表项,该第一表项安装消息用于指示交换设备在流表ID对应的流表中设置第一表项。
其中,该第一表项包括匹配域。该匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配,得到与报文相匹配的第一记录。该需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。
第一字段用于表示需匹配信息的指定值;第二字段用于表示报文处理参数。具体地,数据库中每条记录的每个字段均可以作为第一字段或第二字段,取决于流表中不同表项的匹配域和报文处理指令。例如,表2中MAC地址字段可以作为第一字段,Port-ID字段可以作为第一字段,还可以作为第二字段。
进一步地,该匹配域还可以用于指定数据库的ID,并指示交换设备将接收到的报文的需匹配信息的值与标识为该数据库的ID的数据库中各条记录的第一字段进行匹配。
例如,假设第一表项安装信息携带的流表ID为“Talbe ID=0”,第一表项为“Match((SRC MAC=MAC,In Port=Port-ID),DataBase ID=0),Instructions(Goto-TableTable1)”。其中,““Match((SRC MAC=MAC,In Port=Port-ID)”为匹配域,该匹配域指定的需匹配信息为SRC MAC(源MAC地址)和In Port(接收报文的端口),指定的数据库ID为0。该匹配域用于指示交换设备将接收到报文的SRC MAC和In Port分别与数据库ID中MAC字段的MAC值和Port-ID字段的Port值进行匹配。根据该匹配域的指示,数据库中的MAC字段和Port-ID字段均作为第一字段。
在本发明实施例的一种实现方式中,该第一表项还包括报文处理指令,该报文处理指令用于,指示交换设备在得到与报文相匹配的第一记录后,以该第一记录中的第二字段为参数,按照报文处理指令对报文进行处理。
表项的指令有很多类型,除了前述的一类指令是在流表之间进行跳转的Goto-Table指令外,还有一类指令是指示交换机如何对报文进行操作的动作(Action),比如转发、丢弃、修改报文头、封装、解封装、以及将报文发送给控制器。本发明实施例中将该类指令称为报文处理指令。
例如,假设第一表项安装信息携带的流表ID为“Talbe ID=1”,第一表项为“Match((DST MAC=MAC),DataBase ID=0),Instructions Apply-Actions(Output(MatchRecord.Port-ID)))”。其中,“Instructions Apply-Actions(Output(MatchRecord.Port-ID)”为报文处理指令,用于指示交换设备得到与报文相匹配的第一记录(数据库中包含MAC字段的记录,且该记录的MAC字段的值与报文中DST MAC的值相同)后,将报文转发到第一记录中Port-ID字段的值所示的Port。这里,数据库中记录的Port-ID字段作为第二字段。
其中,由于数据库中有若干记录,每个记录包括第一字段,因此,可能出现与报文相匹配的第一记录为多条记录的情况,在这种情况下,可以采用安装不同的匹配域和报文处理指令来指示报文的处理方式。本实施例提供两种不同的匹配域和报文处理指令:
第一种,该匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到与报文相匹配的多条第一记录中第一条第一记录;报文处理指令用于,指示交换设备以第一条第一记录中的第一条记录的第二字段为参数,按照报文处理指令对报文进行处理。
例如,假设第一表项安装信息携带的流表ID为“Talbe ID=Y”,第一表项为“MatchFirst((SRC IP=Field2),DataBase ID=X),Instructions Apply-Actions(Set-Field(SRC MAC,MatchRecord.Field1)),Goto-Table TableM)”。其中,该第一表项的匹配域用于指示,将报文中SRC IP与数据库中记录的Field2字段进行匹配,得到相匹配的第一条第一记录,报文处理指令用于指示,将报文的SRC MAC设置为第一条记录中Filed1字段的值,然后跳转到流表M处理。
第二种,该匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到与报文相匹配的多条第一记录;报文处理指令用于,指示交换设备分别以多条第一记录的第二字段为参数,按照报文处理指令对交换设备复制的多个报文进行处理。
例如,假设第一表项安装信息携带的流表ID为“Talbe ID=Z”,第一表项为“MatchAll((DST IP=Field3),DataBase ID=X),Instructions Apply-Actions(Set-Field(SRC MAC,MatchRecord.Field1)),Goto-Table TableN)”。其中,该第一表项的匹配域用于指示,将报文中DST IP与数据库中记录的Field3字段进行匹配,得到相匹配的所有第一记录(假设为2条第一记录)。交换设备将报文复制为2份。报文处理指令用于指示,分别将2份报文的SRC MAC设置为这2条记录中Filed1的值,然后跳转到流表N处理。
在本发明实施例的另一种实现方式中,第一表项还包括记录处理指令,记录处理指令用于指示交换设备在得到与报文相匹配的第一记录后,对指定数据库中指定记录进行操作。
进一步地,记录处理指令可以包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,第一修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中,第二修改指令用于指示交换设备在数据库中与报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,增加指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,删除指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,删除第四指定数据库或第四指定数据库中第四指定记录。
具体地,第一、第二、第三、以及第四指定数据库为记录处理指令中指明的数据库ID对应的数据库。可以知道,第一、第二、第三、以及第四指定数据库可以是同一个数据库,也可以是不同数据库。此外,当记录处理指令中未指明数据库ID时,默认为当前数据库,那么该记录处理指令用于指示交换设备在得到与报文相匹配的第一记录后,对该第一记录进行操作。例如,假设记录处理指令为“UpdateDatabase(MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1)mod(2**32)),Goto-Table Table2)”。该记录处理指令用于指示,将第一记录中Sequence-Number字段的值加1并对232取模之后更新到数据库中,之后跳转到Table2。
步骤406:交换设备根据第一表项安装信息,在至少一个流表中设置该第一表项。
例如,假设交换设备根据步骤405中控制器发送的第一表项安装消息,分别在Table0和Table1中建立了如表3和表4所示的第一表项。
表3
表4
需要说明的是,交换设备在流表中设置第一表项之前,包括:交换设备查询数据库是否存在。当数据库存在时,在流表中设置第一表项,当数据库不存在时,交换设备上报给控制器表示数据库不存在的消息。
步骤407:控制器发送第二表项安装信息,该第二表项安装消息包括流表ID和第二表项,该第二表项的优先级低于第一表项,该第二表项通配所有报文。
其中,该第二表项包括记录增加指令,该记录增加指令用于指示交换设备根据与该第二表项匹配的报文,在指定数据库中增加记录。
具体地,流表中每个表项包括优先级,该优先级用于指示报文与每个表项的匹配顺序。
假设该第二表项为“Table-Miss,Instructions(Apply-Actions(UpdateDatabase(DataBase ID=0,Find:SRC MAC=MAC,UpdateContent(SRC MAC=MAC,Port-ID=In Port))),Goto-Table Table1)”。其中,“Table-Miss”指无匹配内容,即通配所有报文。“UpdateDatabase(DataBase ID=0,Find:SRC MAC=MAC,UpdateContent(SRC MAC=MAC,InPort=Port-ID))”指,在数据库ID为0的数据库中,查找MAC地址为报文的源MAC地址的记录,如果找不到该记录,就将报文的源MAC地址、以及接收端口P1增加到该数据库中;如果找到该记录,就不需要增加,直接将端口号更新为In Port。
步骤408:交换设备根据第二表项安装信息,在至少一个流表中设置该第二表项。
例如,假设交换设备根据步骤407中控制器发送的第二表项安装消息,在Table0中建立了如表5所示的第二表项,该第二表项为低优先级,Talbe0中的第一表项为高优先级。
表5
步骤409:控制器向交换设备发送查询消息,查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种。
步骤410:交换设备接收控制器发送的查询消息,查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种;向控制器发送响应消息,响应消息与查询消息对应。
具体地,响应消息与查询消息对应,包括:根据查询消息指示的控制器需要查询的内容,说找到的相匹配的内容。查询信息和响应消息均可以为OpenFlow消息格式。
需要说明的是,本实施例不限定步骤403、405、407及409中各步骤之间的执行顺序。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例三
本发明实施例提供了一种报文处理方法,适用于前述应用场景,且可以由图1所示的交换机S执行。该交换机S中设有一个或多个流表。参见图5,该方法流程包括:
步骤501:接收报文。
进一步地,交换设备接收该报文时,获取接收该报文的接收端口的ID、以及与该报文关联的元数据。
步骤502:根据报文需匹配的流表中第一表项的匹配域,获取报文的需匹配信息的值。
其中,第一表项包括匹配域和报文处理指令,匹配域用于指定需匹配信息。该需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。
步骤503:在该匹配域的指示下,采用该报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
当得到与报文相匹配的第一记录时,执行步骤504。当未得到与报文相匹配的第一记录时,可以将该报文发送给控制器,或将该报文作丢弃处理。
其中,第一字段用于表示需匹配信息的指定值。
步骤504:按照报文处理指令对报文进行处理。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例四
本发明实施例提供了一种报文处理方法,在本实施例中,假设图1所示的交换机S中维护了两个流表,一个用于处理接收到的以太网报文,主要完成MAC地址学习的功能,下文称为学习表(假设学习表的ID为Table0,且该学习表为第一个流表);一个用于处理以太网报文的对外发送,主要完成以太网报文转发的功能,下文称为转发表(假设转发表的ID为Table1)。学习表处理完报文后通过指令跳转到转发表进行发送处理。图1所示的主机PC1和PC2分别连在S的端口P1和端口P2上,S与控制器C连接。P1的IP为IP1,MAC地址为MAC1。P2的IP为IP2,MAC地址为MAC2。PC1欲与PC2进行首次通信(PC1知道PC的IP地址,同时PC1与PC2互相不知道对方的MAC地址)。首先PC1向S发送地址解析协议(Address ResolutionProtocol,简称ARP)请求报文,请求解析IP2对应的MAC地址(向所有主机广播,IP地址为IP2的主机收到广播后将告知MAC地址)。该ARP请求报文包括PC1的MAC地址MAC1、目的MAC地址(广播MAC地址,即FFFFFFFFFFFF),以及请求解析MAC地址的IP地址IP2。
参见图6,该方法流程包括:
步骤601:控制器指示交换机将匹配失败的报文发送给控制器,以及指示交换机建立数据库。
首先,控制器指示交换机分别在Table0和Table1安装Table-Miss表项。该Table-Miss表项指示交换机将与Table0或Table1匹配失败的报文送给控制器。假设Table0中Table-Miss表项为“Table ID=0,Talbe-Miss,Instructions(Apply-Actions(Output(CONTROLLER)))”;Table1中Table-Miss表项为“Table ID=1,Talbe-Miss,Instructions(Apply-Actions(Output(CONTROLLER)))”。
需要说明的是,Table-Miss表项的优先级低于Table0和Table1中的其他表项,这样能够保证报文与Table-Miss表项是在报文与其他表项匹配失败后才进行匹配的。
其次,控制器指示交换机在Table1安装一个表项,该表项指示交换机将目的MAC地址为广播地址的报文发送到ALL端口(ALL端口是指交换机上除了该报文接收端口之外的所有端口,即广播)。假设该表项为“Table ID=1,Match(DST MAC=FFFFFFFFFFFF),Instructions(Apply-Actions(Output(ALL)))”。
然后,控制器通过OpenFlow消息指示交换机创建数据库。假设该OpenFlow消息为“Create DataBase:DataBase ID=0,Fields(MAC,Port-ID)”。
最后,控制器指示交换机在Table0安装一个第一表项,该第一表项指示交换机将以太网报文的源MAC地址和接收端口ID与指定数据库中每条记录的MAC地址和端口ID字段进行匹配,匹配成功则跳转到Table1。假设该第一表项为“Talbe ID=0,Match((SRC MAC=MAC,In Port=Port-ID),DataBase ID=0),Instructions(Goto-Table Table1)”。
步骤602:主机PC1发送ARP请求报文。
该ARP请求报文请求解析IP2对应的MAC地址。该报文的源MAC地址为MAC1,目的MAC地址为广播地址(即FFFFFFFFFFFF)。
步骤603:交换机接收ARP请求报文。
具体地,交换机S从接收端口P1接收该ARP请求报文。
步骤604:交换机根据Table0中第一表项的匹配域,获取报文的需匹配信息的值。Table0为ARP请求报文需匹配的流表。
其中,第一表项包括匹配域和报文处理指令,匹配域用于指定需匹配信息;需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。
进一步地,该匹配域还用于指定数据库的ID,并指示交换机将接收到的报文的需匹配信息的值与ID为数据库的ID的数据库中各条记录的第一字段进行匹配。
具体地,本实施例中,ARP请求报文第一个需匹配的流表为学习表Table0。假设该第一表项为步骤601建立的第一表项,该第一表项的匹配域指定的需匹配信息为接收ARP请求报文的接收端口的IDP1和该ARP请求报文的源MAC地址MAC1(即以太网帧头中的头域)。
步骤605:交换机判断Table0中第一表项的匹配域指示的数据库是否存在,若存在,则执行步骤606;若不存在,则退出本次流程。
具体地,匹配域还用于指定数据库的ID。交换机根据该数据库的ID,遍历所有数据库,若查找到该数据库,则判定存在,若未查找到,则判定不存在。
步骤606:交换机在Table0中第一表项的匹配域的指示下,采用ARP请求报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
当得到与ARP请求报文相匹配的第一记录时,执行步骤611。当未得到与ARP请求报文相匹配的第一记录时,执行步骤607。
具体地,若交换机S还未学习到PC1的MAC地址和Port-ID(控制器未告诉交换机S主机PC1的MAC地址和Port-ID,那么学习表Table0中第一表项的匹配域指示的数据库中每条记录的MAC字段和Port-ID均不存在MAC1和P1。这时,报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配将匹配失败,未得到与报文相匹配的第一记录。反之,若交换机S已学习了MAC1和P1,则数据库中存在该MAC1和P1,将得到与报文相匹配的第一记录。
步骤607:交换机将该ARP请求报文和交换机接收ARP请求报文的接收端口的ID发送给控制器。
具体地,交换机中每个流表中预先安装了Table-Miss表项,即,如果匹配失败,则将该报文丢弃或者发送给控制器处理。本发明实施例中采用发送给控制器处理。
交换机将ARP请求报文和接收端口ID通过OpenFlow消息发送给控制器。此外,交换机还可以将ARP请求报文进行缓存,并发送缓存标识给控制器。例如,交换机发送给控制器的OpenFlow消息为,Packet-In(ARP请求报文,In Port=1,Buffer-ID=1)。
步骤608:控制器指示交换机在数据库中增加第一记录。
控制器接收后,将(采用OpenFlow消息)发送记录更新指示给交换机,该记录更新指示将指示交换机在数据库中增加MAC1和P1的记录。如果交换机将ARP请求报文进行了缓存,控制器还可以在记录更新指示中携带缓存标识,如果没有缓存,控制器需将把ARP请求报文返回给交换机。例如,该记录更新指示为,Add Record:DataBase ID=0,Fields(MAC=MAC1,Port-ID=1),Buffer-ID=1。
步骤609:交换机在该数据库中增加第一记录。
具体地,交换机收到控制器发送的记录增加指示后,将按照记录增加指示,在数据库中增加该第一记录。
步骤610:交换机重新在Table0中第一表项的匹配域的指示下,采用ARP请求报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
当得到与ARP请求报文相匹配的第一记录时,执行步骤611。当未得到与ARP请求报文相匹配的第一记录时,执行步骤607。
在本发明实施例中,执行步骤609之后,可以重新执行ARP请求报文的匹配,即交换机重新在匹配域的指示下,采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
具体地,由于数据库中存在MAC字段为MAC1,端口号字段为1的记录,因此,将成功匹配Table0,得到与ARP请求报文相匹配的第一记录。
步骤611:交换机按照Table0中第一表项的报文处理指令对ARP请求报文进行处理。
具体地,学习表Table0中表项的指令为“Instructions(Goto-Table Table1)”,即前述的跳转指令。也就是说,当数据库中存在MAC1和P1时,将跳转到转发表Table1继续处理该报文信息。
由于转发表Table1预先安装有表项“Match(DST MAC=FFFFFFFFFFFF),Instructions(Apply-Actions(ALL))”,DST MAC指目的MAC地址,Apply-Actions(ALL)指向所有端口发送该报文。由于该ARP请求报文的目的MAC地址为FFFFFFFFFFFF,那么将成功匹配Table1,并执行向所有端口(排除ARP请求报文的接收端口P1)发送该报文的指令。
步骤612:交换机接收由控制器发送的数据库更新指示,并根据数据库更新指示对数据库进行更新。
其中,数据库更新指示包括数据库删除指示和记录更新指示。根据数据库更新指示对数据库进行更新,包括:根据数据库删除指示,删除指定数据库;根据记录更新指示,对数据库中的记录进行更新。
其中,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
其中,控制器可以根据业务需要,任意时间控制交换机对数据库及记录进行更改。
需要说明的是,交换机根据数据库更新指示对数据库进行更新之前,可以检测待更新的数据库是否存在、以待更新的记录是否存在。当数据库及记录不存在时,交换机可以上报给控制器。
值得说明的是,本发明实施例不限定本步骤612的执行顺序,本步骤612可以在本实施例的任意步骤之前或之后执行。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例五
本发明实施例提供了一种报文处理方法。在本发明实施例四中,交换机S完成向所有端口(排除ARP请求报文的接收端口P1)转发主机PC1发送的ARP请求报文。在本发明实施例中,假设主机PC2收到该ARP请求报文后,将回复ARP应答报文给交换机S,该ARP应答报文包括PC2的MAC地址MAC2,目的MAC地址MAC1。在此前提下,参见图7,本发明实施例提供了一种报文处理方法,方法流程包括:
步骤701:控制器指示交换机在Table1安装第一表项、以及在Table0安装第二表项。
假设该第一表项为“Talbe ID=1,Match((DST MAC=MAC),DataBase ID=0),Instructions Apply-Actions(Output(MatchRecord.Port-ID)))”。其中,该第一表项的匹配域用于指示将报文的目的MAC地址与数据库0中记录的DST MAC进行匹配,若数据库0中相匹配的第一记录,则将报文转发至第一记录的Port-ID字段存储的端口。
假设该第二表项为“Table ID=0,Table-Miss,Instructions(Apply-Actions(UpdateDatabase(DataBase ID=0,Find:SRC MAC=MAC,UpdateContent(SRC MAC=MAC,InPort=Port-ID))),Goto-Table Table1)”。其中,“Table-Miss”指无匹配内容,即通配所有报文。“UpdateDatabase(DataBase ID=0,Find:SRC MAC=MAC,UpdateContent(SRC MAC=MAC,In Port=Port-ID))”指,在数据库0中,在MAC字段下查找MAC地址为报文的源MAC地址,如果找不到,就将报文的源MAC地址、以及接收端口P1增加到数据库0中;如果找到该记录,就不需要增加,直接更新Port-ID为In Port。
需要说明的是,本步骤701可以与本发明实施例四中步骤601同时进行。
步骤702:主机PC2发送ARP应答报文。
具体地,主机PC2接收到ARP请求报文后,将回复PC1一个ARP应答报文,该ARP应答报文的源MAC地址为MAC2,目的MAC地址为MAC1,交换机从端口P2接收到该ARP应答报文。
步骤703:交换机获取ARP应答报文。
具体地,交换机S从接收端口P2接收ARP应答报文后,将报文送至学习表Table0进行匹配。
步骤704:交换机根据Table0中第一表项的匹配域,获取报文的需匹配信息的值。
具体地,本实施例中,ARP应答报文第一个需匹配的流表为学习表Table0。该ARP应答报文的需匹配信息为ARP应答报文的接收端口的ID P2和发送该ARP请求报文的源MAC地址MAC2。
具体地,本步骤704同本发明实施例四中步骤604,在此省略描述。
步骤705:交换机判断Table0中第一表项的匹配域指示的数据库是否存在,若存在,则执行步骤706;若不存在,则退出本次流程。
具体地,本步骤705同本发明实施例四中步骤605,在此省略描述。
步骤706:交换机在Table0中第一表项的匹配域的指示下,采用ARP应答报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
当得到与ARP应答报文相匹配的第一记录时,执行步骤709。当未得到与ARP应答报文相匹配的第一记录时,执行步骤707。
与ARP请求报文的处理过程(参见本发明实施例四中步骤606)类似,交换机接收ARP应答报文后,将在学习表Table0中表项的第一指示信息指示的数据库中匹配ARP应答报文的源MAC地址MAC2。若交换机S还未学习到PC2的MAC地址(控制器未告诉交换机S主机PC2的MAC地址),那么数据库中均不存在MAC2。反之,若交换机S已学习了MAC2,则数据库中存在该MAC2。
步骤707:交换机将ARP应答报文与Table0中第二表项进行匹配并匹配成功,在第二表项的指示下,在数据库中增加第一记录。
具体地,交换机S在数据库ID为0的数据库中增加了MAC地址为MAC2,端口为P2的记录。MAC2与P2相对应。
步骤708:交换机重新在Table0中第一表项的匹配域的指示下,采用ARP应答报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
当得到与ARP应答报文相匹配的第一记录时,执行步骤709。
步骤709:交换机按照Table0中第一表项的报文处理指令对ARP应答报文进行处理,跳转到Table1;交换机在Table1中第一表项的匹配域的指示下,采用ARP应答报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。当得到与ARP应答报文相匹配的第一记录时,交换机按照Table1中第一表项的报文处理指令对ARP应答报文进行处理。
具体地,如步骤701所述,Talbe1中安装的第一表项为“Talbe ID=1,Match((DSTMAC=MAC),DataBase ID=0),Instructions Apply-Actions(Output(MatchRecord.Port-ID)))”。其中,该第一表项的匹配域用于指示将报文的目的MAC地址与数据库0中记录的DSTMAC进行匹配,该第一表项的报文处理指令用于指示,若数据库0中存在相匹配的第一记录,则将第一记录的Port-ID字段作为端口参数,转发ARP应答报文输出至该端口参数表示的端口。
主机PC1通过端口P1获取主机PC2发送的ARP应答报文,解析该ARP应答报文就能获悉主机PC2的MAC地址。这样,主机PC1和主机PC2均知晓对方的IP及MAC地址,主机PC1和主机PC2就可以互相传递报文。并且,通过图6和图7所示的整个过程,交换机中存放了主机PC1和主机PC2的IP及MAC地址,当主机PC1和主机PC2就可以互相传递报文时,交换机能够顺利将两者的报文进行转发。
步骤710:交换机接收由控制器发送的数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示,并根据数据库删除指示,删除指定数据库;根据记录更新指示,对数据库中的记录进行更新。
其中,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
其中,控制器可以根据业务需要,任意时间控制交换机对数据库及记录进行更改。
需要说明的是,交换机根据数据库更新指示对数据库进行更新之前,可以检测待更新的数据库是否存在、以待更新的记录是否存在。当数据库及记录不存在时,交换机可以上报给控制器。
值得说明的是,本发明实施例不限定本步骤710的执行顺序,本步骤710可以在本实施例的任意步骤之前或之后执行。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例六
本发明实施例提供了一种报文处理方法,在本实施例中,假设控制器指示交换机创建数据库ID为1的数据库。数据库中每条记录包括4个字段:GRE隧道ID(Tunnel-ID),外层源IP地址(Outer-SRC-IP),外层目的IP地址(Outer-DST-IP)和序列号(Sequence-Number)。其中外层源IP地址的缺省值为2.2.2.2,序列号的缺省值为0。可选地,控制器可以指定主关键字为GRE隧道ID。此外,交换机中维护了Table2(第一个流表)和Table3两个流表。控制器指示交换机在Table2安装表项,指示交换机将目的IP地址为1.1.1.1的报文的GRE隧道ID写入元数据,并跳转到Table3。
参见图8,方法流程包括:
步骤801:获取报文。
具体地,交换机接收报文后,将报文送至Table2进行匹配。
具体地,Table2中表项用于指示将目的IP地址为1.1.1.1的报文的GRE隧道ID写入元数据,并跳转到Table3。
步骤802:判断Table3中第一表项的匹配域指示的数据库是否存在,若存在,则执行步骤803;若不存在,则退出。
例如,假设Table3中设有第一表项:“Match((Tunnel-ID=MetaData.GRE-ID),DataBase ID=0),Instructions(Apply-Actions(Push-GRE-Header(MatchRecord.Sequence-Num ber),Push-IP-Header(MatchRecord.Outer-SRC-IP,MatchRecord.Outer-DST-IP)),UpdateDatabase(MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1)mod(2**32))),Goto-Table TableM)”。
具体地,Table3中表项用于指示交换机将元数据中的GRE隧道ID和数据库ID为1的数据库中的GRE隧道ID字段进行匹配。交换机判断数据库ID为1的数据库是否存在。
步骤803:在Table3中第一表项的匹配域的指示下,采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配。
具体地,如果数据库存在,则查询该数据库中的GRE隧道ID字段的值是否与元数据中的GRE隧道ID相同。若相同,则得到与报文相匹配的第一记录,执行步骤805,若不相同,则执行步骤804。
步骤804:在该数据库中创建记录,使报文能重新与Table3中第一表项匹配成功。
具体地,如果Table3匹配失败,则可以将转发该报文至控制器。控制器指示交换机在数据库ID为1的数据库中添加记录:GRE隧道ID为1,外层源IP地址为3.3.3.3,外层目的IP地址为4.4.4.4。由于控制器没有指定序列号,新增记录的序列号字段采用缺省值,即为0,而外层源IP地址采用这里指定的3.3.3.3而不是缺省值。
步骤805:按照该Table3中表项的报文处理指令处理该报文。
具体地,如果Table3匹配成功,则Table3中表项的指令对报文添加GRE头(将GRE头中的序列号设置为数据库中匹配的GRE隧道ID对应的序列号字段的值),添加IP头(将IP头中的源IP地址设置为数据库中匹配的GRE隧道ID对应的外层源IP地址,将IP头中的目的IP地址设置为数据库中匹配的GRE隧道ID对应的IP地址),并将序列号的值加1并对232取模之后更新到数据库中,之后跳转到TableM(M为自然数)。
步骤806:交换机接收由控制器发送的数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示,并根据数据库删除指示,删除指定数据库;根据记录更新指示,对数据库中的记录进行更新。
其中,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
其中,控制器可以根据业务需要,任意时间控制交换机对数据库及记录进行更改。
值得说明的是,本发明实施例不限定本步骤806的执行顺序,本步骤806可以在本实施例的任意步骤之前或之后执行。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例七
本发明实施例提供了一种交换设备,该交换设备中存储一个或多个流表。该设备包括:
第一设置模块,用于在至少一个流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配。
其中,该需匹配信息包括报文头域、该交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例八
本发明实施例提供了一种交换设备,该交换设备中存储一个或多个流表。参见图9,该设备包括:
第一设置模块901,用于在至少一个流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配。
其中,该需匹配信息包括报文头域、该交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
可选地,匹配域还用于指定数据库的ID,并指示交换设备将接收到的报文的需匹配信息的值与ID为数据库的ID的数据库中各条记录的第一字段进行匹配。
可选地,数据库的每条记录还包括第二字段,第二字段用于表示报文处理参数。
第一表项还包括报文处理指令,报文处理指令用于,指示交换设备在数据库中存在与报文相匹配的第一记录时,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理。
可选地,当数据库中存在多条第一记录时,
匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录中的第一条第一记录;报文处理指令用于,指示交换设备以第一条第一条记录的第二字段为参数,按照报文处理指令对报文进行处理;或,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录;报文处理指令用于,指示交换设备分别以多条第一记录的第二字段为参数,按照报文处理指令分别对交换设备复制的多个报文进行处理。
可选地,第一表项还包括记录处理指令,记录处理指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
第一修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中;第二修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;增加指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录;删除指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,该设备还包括:
第二设置模块902,用于在至少一个流表中设置第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,记录增加指令用于指示交换设备根据与第二表项匹配的报文,在指定数据库中增加记录。
可选地,该设备还包括:
创建模块903,用于接收操作人员下发的配置命令,并根据配置命令创建数据库;或,接收控制器发送的数据库创建指示,并根据数据库创建指示建立数据库,数据库创建指示包括数据库ID和数据库字段信息。
可选地,数据库创建指示还包括数据库属性信息和统计信息中的至少一种,数据库属性信息包括数据库的最大记录数、数据库中记录的老化时间、以及是否允许交换设备更改数据库中的记录,统计信息包括数据库的总记录数、数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,该设备还包括:
更新模块904,用于接收控制器发送的数据库更新指示,根据数据库更新指示对数据库进行更新;数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,该设备还包括:
接收发送模块905,用于接收控制器发送的查询消息,向控制器发送响应消息,响应消息与查询消息对应;查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种。
可选地,该设备还包括:
查询模块906,用于查询数据库是否存在,当数据库存在时,在至少一个流表中设置第一表项;当数据库不存在时,上报给控制器表示数据库不存在的消息。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例九
本发明实施例提供了一种交换设备。参见图10,该交换设备可以是一种服务器。其一般包括至少一个处理器1001(例如CPU)、至少一个网络接口1002或者其他通信接口、存储器1003和至少一个通信总线1004。本领域技术人员可以理解,图10中示出的服务器的结构并不构成对交换设备的限定,其可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对交换设备的各个构成部件进行具体的介绍:
通信总线1004用于实现处理器1001、存储器1003及网络接口1002之间的连接通信。
至少一个网络接口1002(可以是有线或者无线)实现交换设备分别与至少两个其他计算机(例如主机)和一个服务器(例如控制器)之间的通信连接(计算机与服务器可以共享一个网络接口1002分别与交换设备连接),可以使用互联网,广域网,本地网,城域网等。
存储器1003可用于存储软件程序以及应用模块,处理器1001通过运行存储在存储器1003的软件程序以及应用模块,从而执行交换设备的各种功能应用以及数据处理。存储器1003可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能(例如流表表项的匹配功能和执行指令功能)所需的应用程序等;存储数据区可存储根据交换设备的使用所创建的数据(例如存储的流表和数据库)等。此外,存储器1003可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1001是交换设备的控制中心,利用各种接口和线路连接整个交换设备的各个部分,通过运行或执行存储在存储器1003内的软件程序和/或应用模块,以及调用存储在存储器1003内的数据,执行交换设备的各种功能和处理数据,从而对交换设备进行整体监控。
具体地,通过运行或执行存储在存储器1003内的软件程序和/或应用模块,以及调用存储在存储器1003内的数据,处理器1001可以实现,在至少一个流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配。该需匹配信息包括报文头域、该交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
优选地,该匹配域还用于指定数据库的ID,并指示交换设备将接收到的报文的需匹配信息的值与ID为数据库的ID的数据库中各条记录的第一字段进行匹配。
优选地,数据库的每条记录还包括第二字段,该第二字段用于表示报文处理参数;第一表项还包括报文处理指令,报文处理指令用于,指示交换设备在数据库中存在与报文相匹配的第一记录时,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理。
优选地,当数据库中存在多条第一记录时,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录中的第一条第一记录;报文处理指令用于,指示交换设备以第一条第一记录的第二字段为参数,按照报文处理指令对报文进行处理;或,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录;报文处理指令用于,指示交换设备分别以多条第一记录的第二字段为参数,按照报文处理指令对交换设备复制的多个报文进行处理。
优选地,第一表项还包括记录处理指令,记录处理指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,第一修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中,第二修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,增加指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,删除指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,处理器1001可以实现,在至少一个流表中设置第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,记录增加指令用于指示交换设备根据与第二表项匹配的报文,在指定数据库中增加记录。
可选地,网络接口1002可以实现,接收操作人员下发的配置命令,或,接收控制器发送的数据库创建指示,数据库创建指示包括数据库ID和数据库字段信息,
可选地,处理器1001可以实现,根据配置命令创建数据库;或,根据数据库创建指示建立数据库。
优选地,数据库创建指示还包括数据库属性信息和统计信息中的至少一种,数据库属性信息包括数据库的最大记录数、数据库中记录的老化时间、以及是否允许交换设备更改数据库中的记录,统计信息包括数据库的总记录数、数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,网络接口1002可以实现,接收控制器发送的数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示,记录更新指示包括在数据库中增加记录、删除记录和修改记录;
处理器1001可以实现,根据数据库删除指示对数据库进行更新。
可选地,网络接口1002可以实现,接收控制器发送的查询消息,查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种;处理器1001可以实现,向控制器发送响应消息,响应消息与查询消息对应。
可选地,处理器1001可以实现,查询数据库是否存在,当数据库存在时,在至少一个流表中设置第一表项;当数据库不存在时,上报给控制器表示数据库不存在的消息。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十
本发明实施例提供了一种控制器,该控制器包括:
第一发送模块,用于发送第一表项安装消息,第一表项安装消息包括流表ID和第一表项,第一表项安装消息用于指示交换设备在流表ID对应的流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配。
需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十一
本发明实施例提供了一种控制器,参见图11,该控制器包括:
第一发送模块1101,用于发送第一表项安装消息,第一表项安装消息包括流表ID和第一表项,第一表项安装消息用于指示交换设备在流表ID对应的流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配。
需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
可选地,匹配域还用于指定数据库的ID,并指示交换设备将接收到的报文的需匹配信息的值与ID为数据库的ID的数据库中各条记录的第一字段进行匹配。
可选地,数据库的每条记录还包括第二字段,第二字段用于表示报文处理参数;
第一表项还包括报文处理指令,报文处理指令用于,指示交换设备在数据库中存在与报文相匹配的第一记录时,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理。
可选地,当数据库中存在多条第一记录时,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录中的第一条第一记录;报文处理指令用于,指示交换设备以第一条第一记录的第二字段为参数,按照报文处理指令对报文进行处理;或,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录;报文处理指令用于,指示交换分别以多条第一记录的第二字段为参数,按照报文处理指令分别对交换设备复制的多个报文进行处理。
可选地,第一表项还包括记录处理指令,记录处理指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
可选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
第一修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中,
第二修改指令用于指示交换设备在数据中存在与报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
增加指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
删除指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,控制器还包括:
第二发送模块1102,用于发送第二表项安装信息,第二表项安装消息包括流表ID和第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,记录增加指令用于指示交换设备根据与第二表项匹配的报文,在指定数据库中增加记录。
可选地,该控制器还包括:
第三发送模块1103,用于向交换设备发送数据库创建指示,数据库创建指示用于指示交换设备创建数据库,数据库创建指示包括数据库ID和数据库字段信息。
可选地,数据库创建指示还包括数据库属性信息和统计信息中的至少一种,数据库属性信息包括数据库的最大记录数、所数据库中记录的老化时间、以及是否允许交换设备更改数据库中的记录,统计信息包括数据库的总记录数、数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,控制器还包括:
第四发送模块1104,用于向交换设备发送数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,控制器还包括:
第五发送模块1105,用于向交换设备发送查询消息,查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种。
可选地,控制器还包括:
第一接收模块1106,用于接收交换设备返回的表示数据库不存在的消息。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十二
本发明实施例提供了一种控制器。参见图12,该控制器可以是一种服务器。其一般包括至少一个处理器1201(例如CPU)、至少一个网络接口1202或者其他通信接口、存储器1203和至少一个通信总线1204。本领域技术人员可以理解,图12中示出的服务器的结构并不构成对控制器的限定,其可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图12对控制器的各个构成部件进行具体的介绍:
通信总线1204用于实现处理器1201、存储器1203及网络接口1202之间的连接通信。
至少一个网络接口1202(可以是有线或者无线)实现控制器与至少一个服务器(例如交换设备)之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
存储器1203可用于存储软件程序以及应用模块,处理器1201通过运行存储在存储器1203的软件程序以及应用模块,从而执行控制器的各种功能应用以及数据处理。存储器1203可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能(例如下发表项)所需的应用程序等;存储数据区可存储根据控制器的使用所创建的数据(例如存储的报文)等。此外,存储器1203可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1201是控制器的控制中心,利用各种接口和线路连接整个控制器的各个部分,通过运行或执行存储在存储器1203内的软件程序和/或应用模块,以及调用存储在存储器1203内的数据,执行控制器的各种功能和处理数据,从而对控制器进行整体监控。
具体地,通过运行或执行存储在存储器1203内的软件程序和/或应用模块,以及调用存储在存储器1203内的数据,处理器1201可以实现,发送第一表项安装消息,第一表项安装消息包括流表ID和第一表项,第一表项安装消息用于指示交换设备在流表ID对应的流表中设置第一表项,第一表项包括匹配域,匹配域用于指定需匹配信息,并指示交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配。需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。数据库中每条记录均包括第一字段,第一字段用于表示需匹配信息的指定值。
可选地,匹配域还用于指定数据库的ID,并指示交换设备将接收到的报文的需匹配信息的值与ID为数据库的ID的数据库中各条记录的第一字段进行匹配。
可选地,数据库的每条记录还包括第二字段,第二字段用于表示报文处理参数;第一表项还包括报文处理指令,报文处理指令用于,指示交换设备在数据库中存在与报文相匹配的第一记录时,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理。
可选地,当数据库中存在多条第一记录时,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录中的第一条第一记录;报文处理指令用于,指示交换设备以第一条第一记录的第二字段为参数,按照报文处理指令对报文进行处理;或,匹配域用于指示交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条第一记录;报文处理指令用于,指示交换设备分别以多条第一记录的第二字段为参数,按照报文处理指令分别对交换设备复制的多个报文进行处理。
可选地,第一表项还包括记录处理指令,记录处理指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
优选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,第一修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中,第二修改指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,增加指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,删除指令用于指示交换设备在数据库中存在与报文相匹配的第一记录时,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,处理器1201可以实现,发送第二表项安装信息,第二表项安装消息包括流表ID和第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,记录增加指令用于指示交换设备根据与第二表项匹配的报文,在指定数据库中增加记录。
可选地,处理器1201可以实现,向交换设备发送数据库创建指示,数据库创建指示用于指示交换设备创建数据库,数据库创建指示包括数据库ID和数据库字段信息。
可选地,处理器1201可以实现,数据库创建指示还包括数据库属性信息和统计信息中的至少一种,数据库属性信息包括数据库的最大记录数、数据库中记录的老化时间、以及是否允许交换设备更改数据库中的记录,统计信息包括数据库的总记录数、数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
可选地,处理器1201可以实现,向交换设备发送数据库更新指示,数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,记录更新指示包括在数据库中增加记录、删除记录和修改记录。
可选地,处理器1201可以实现,向交换设备发送查询消息,查询消息用于查询数据库的属性信息、数据库中记录的内容、和数据库的统计信息中的一种或多种。
可选地,网络接口1202用于,接收交换设备返回的表示数据库不存在的消息。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十三
本发明实施例提供了一种交换设备,适用于本发明实施例三提供的报文处理方法,参见图13,该设备包括:
第三接收模块1301,用于接收报文。
获取模块1302,用于根据报文需匹配的流表中第一表项的匹配域,获取报文的需匹配信息的值,第一表项包括匹配域和报文处理指令,匹配域用于指定需匹配信息;需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。
匹配模块1303,用于在匹配域的指示下,采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配;第一字段用于表示需匹配信息的指定值。
第一处理模块1304,用于当得到与报文相匹配的第一记录时,按照报文处理指令对报文进行处理。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十四
本发明实施例本提供了一种交换设备,适用于本发明实施例三-六提供的报文处理方法,参见图14,该设备包括:
第二接收模块1401,用于接收报文。
获取模块1402,用于根据报文需匹配的流表中第一表项的匹配域,获取报文的需匹配信息的值,第一表项包括匹配域和报文处理指令,匹配域用于指定需匹配信息;需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种。
匹配模块1403,用于在匹配域的指示下,采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,第一字段用于表示需匹配信息的指定值。
第一处理模块1404,用于当得到与报文相匹配的第一记录时,按照报文处理指令对报文进行处理。
可选地,第一处理模块1404用于,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理,第二字段用于表示报文处理参数。
可选地,当数据库中存在多条第一记录时,第一处理模块1404用于,
以第一条第一记录的第二字段为参数,按照报文处理指令对报文进行处理;或者,复制报文,得到多个报文,分别以多条第一记录的第二字段为参数,按照报文处理指令对多个报文进行处理。
可选地,第一表项还包括记录处理指令,第一处理模块1404还用于,在记录处理指令的指示下,对指定数据库中指定进行操作。
优选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,第一处理模块1404用于,
在得到与报文相匹配的第一记录后,按照第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中;在得到与报文相匹配的第一记录后,按照第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;在得到与报文相匹配的第一记录后,按照增加指令,在第三指定数据库中增加第三指定记录;和/或,在得到与报文相匹配的第一记录后,按照删除指令,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,流表中还设置有第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,该设备还包括:
第二处理模块1405,用于当数据库中不存在与报文相匹配的记录时,将报文与第二表项进行匹配并匹配成功,并在记录增加指令的指示下,根据报文,在指定数据库中增加记录。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十五
本发明实施例提供了一种交换设备,适用于本发明实施例三-六提供的报文处理方法。该交换设备可以是一种服务器。其一般包括至少一个处理器(例如CPU)、至少一个网络接口或者其他通信接口、存储器和至少一个通信总线。
其中,处理器、网络接口、存储器和通信总线同实施例九中提供的交换设备的处理器1001、网络接口1002、存储器1003和通信总线1004(参见图10),在此省略描述。
具体地,通过运行或执行存储在存储器内的软件程序和/或应用模块,以及调用存储在存储器内的数据,处理器可以实现,接收报文;根据报文需匹配的流表中第一表项的匹配域,获取报文的需匹配信息的值,第一表项包括匹配域和报文处理指令,匹配域用于指定需匹配信息;需匹配信息包括报文头域、交换设备接收报文的接收端口的ID、以及与报文关联的元数据中的一种或多种;在匹配域的指示下,采用报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配;当得到与报文相匹配的第一记录时,按照报文处理指令对报文进行处理;第一字段用于表示需匹配信息的指定值。
可选地,处理器可以实现,以第一记录中的第二字段为参数,按照报文处理指令对报文进行处理,第二字段用于表示报文处理参数。
可选地,当数据库中存在多条第一记录时,处理器可以实现,以第一条第一记录的第二字段为参数,按照报文处理指令对报文进行处理;或者,复制报文,得到多个报文,分别以多条第一记录的第二字段为参数,按照报文处理指令对多个报文进行处理。
可选地,处理器可以实现,在记录处理指令的指示下,对指定数据库中指定进行操作。
优选地,记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,处理器可以实现,在得到与报文相匹配的第一记录后,按照第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到第一指定字段的更新值并记录到第一指定数据库中;在得到与报文相匹配的第一记录后,按照第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;在得到与报文相匹配的第一记录后,按照增加指令,在第三指定数据库中增加第三指定记录;和/或,在得到与报文相匹配的第一记录后,按照删除指令,删除第四指定数据库或第四指定数据库中第四指定记录。
可选地,第一表项包括优先级,优先级用于指示报文与每个第一表项的匹配顺序,流表中还设置有第二表项,第二表项的优先级低于第一表项,第二表项通配所有报文,第二表项包括记录增加指令,处理器可以实现,当数据库中不存在与报文相匹配的记录时,将报文与第二表项进行匹配并匹配成功,并在记录增加指令的指示下,根据报文,在指定数据库中增加记录。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
实施例十六
本发明实施例提供了一种报文处理系统,参见图15,该系统包括控制器1501和交换设备1502。
具体地,该控制器1501可以为本发明实施例十-十二描述的控制器,交换设备1502可以为本发明实施例七、八、九、十三、十四、以及十五描述的交换设备,在此省略描述。
本发明实施例通过数据库中记录的字段来存放流表中表项的匹配域指定的需匹配信息的(指定)值,数据库包括许多记录,一个记录又包括许多字段,许多字段可以存放大量的匹配域指定的需匹配信息的值,这样,所有匹配域指定的需匹配信息的值不同且指令相同的表项可以简化为一条表项,这样将减少表项的数量,消除表项中存在的冗余信息;并且,当数据库中不存在某个匹配域指定的需匹配信息的值时,仅需要执行一次增加操作,以在数据库中增加该需匹配信息的值,不需要进行额外的信息更新操作,这样避免出错几率。
需要说明的是:上述实施例提供的交换设备在处理报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将交换设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的交换设备与报文处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (91)
1.一种交换设备配置方法,OpenFlow系统中的所述交换设备中设有一个或多个流表,其特征在于,所述方法包括:
通过所述交换设备在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值,所述数据库设置在所述交换设备中;
根据所述第一表项,通过所述交换设备将接收到的报文的需匹配信息的值与所述数据库中各条记录的第一字段进行匹配。
2.根据权利要求1所述的方法,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
3.根据权利要求2所述的方法,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
4.根据权利要求3所述的方法,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一条记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
5.根据权利要求1所述的方法,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
6.根据权利要求5所述的方法,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
7.根据权利要求1所述的方法,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述方法还包括:
在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收操作人员下发的配置命令,并根据所述配置命令创建所述数据库;或,
接收控制器发送的数据库创建指示,并根据所述数据库创建指示建立所述数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
9.根据权利要求8所述的方法,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
接收控制器发送的数据库更新指示,根据所述数据库更新指示对所述数据库进行更新,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述在至少一个所述流表中设置第一表项之前,所述方法还包括:
查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
13.一种交换设备配置方法,其特征在于,应用于OpenFlow系统中的控制器中,所述方法包括:
发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示所述交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值。
14.根据权利要求13所述的方法,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
15.根据权利要求14所述的方法,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
16.根据权利要求15所述的方法,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
17.根据权利要求13所述的方法,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
18.根据权利要求17所述的方法,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
19.根据权利要求13所述的方法,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述方法还包括:
发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
20.根据权利要求13所述的方法,其特征在于,所述方法还包括:
向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
21.根据权利要求20所述的方法,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
23.根据权利要求22所述的方法,其特征在于,所述方法还包括:
向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
24.根据权利要求13-23任一项所述的方法,其特征在于,所述方法还包括:
接收所述交换设备返回的表示所述数据库不存在的消息。
25.一种报文处理方法,其特征在于,应用于OpenFlow系统中的交换设备中,所述方法包括:
接收报文;
根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值,所述数据库设置在所述交换设备中;
当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
26.根据权利要求25所述的方法,其特征在于,按照所述报文处理指令对所述报文进行处理,包括:
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
27.根据权利要求26所述的方法,其特征在于,当所述数据库中存在多条所述第一记录时,所述以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数,包括:
以第一条所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
28.根据权利要求25所述的方法,其特征在于,所述第一表项还包括记录处理指令,所述方法还包括:
在所述记录处理指令的指示下,对指定数据库中指定记录进行操作。
29.根据权利要求28所述的方法,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述对指定数据库中指定记录进行操作,包括:
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
30.根据权利要求25所述的方法,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述方法还包括:
当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
31.一种交换设备,OpenFlow系统中的所述交换设备中设有一个或多个流表,其特征在于,所述设备包括:
第一设置模块,用于通过所述交换设备在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值,所述数据库设置在所述交换设备中;根据所述第一表项,通过所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配。
32.根据权利要求31所述的设备,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
33.根据权利要求32所述的设备,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
34.根据权利要求33所述的设备,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一条记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
35.根据权利要求31所述的设备,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
36.根据权利要求35所述的设备,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
37.根据权利要求31所述的设备,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述设备还包括:
第二设置模块,用于在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
38.根据权利要求31所述的设备,其特征在于,所述设备还包括:
创建模块,用于接收操作人员下发的配置命令,并根据所述配置命令创建所述数据库;或,
接收控制器发送的数据库创建指示,并根据所述数据库创建指示建立所述数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
39.根据权利要求38所述的设备,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
40.根据权利要求39所述的设备,其特征在于,所述设备还包括:
更新模块,用于接收控制器发送的数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录;
根据所述数据库更新指示对所述数据库进行更新。
41.根据权利要求40所述的设备,其特征在于,所述设备还包括:
接收发送模块,用于接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
42.根据权利要求31-41任一项所述的设备,其特征在于,所述在至少一个所述流表中设置第一表项之前,所述设备还包括:
查询模块,用于查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
43.一种交换设备,OpenFlow系统中的所述交换设备中设有一个或多个流表,包括处理器和网络接口,其特征在于,所述处理器用于:
通过所述交换设备在至少一个所述流表中设置第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值,所述数据库设置在所述交换设备中;
根据所述第一表项,通过所述交换设备将接收到的报文的需匹配信息的值与所述数据库中各条记录的第一字段进行匹配。
44.根据权利要求43所述的设备,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
45.根据权利要求44所述的设备,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
46.根据权利要求45所述的设备,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
47.根据权利要求43所述的设备,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
48.根据权利要求47所述的设备,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
49.根据权利要求43所述的设备,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述处理器还用于:
在至少一个所述流表中设置第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
50.根据权利要求43所述的设备,其特征在于,所述网络接口用于:
接收操作人员下发的配置命令,或接收控制器发送的数据库创建指示,所述数据库创建指示包括数据库标识和数据库字段信息;
所述处理器还用于:
根据所述配置命令创建所述数据库;或,
根据所述数据库创建指示建立所述数据库。
51.根据权利要求50所述的设备,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
52.根据权利要求51所述的设备,其特征在于,所述网络接口用于:
接收控制器发送的数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录;
所述处理器还用于,根据所述数据库删除指示对所述数据库进行更新。
53.根据权利要求52所述的设备,其特征在于,所述网络接口用于:
接收所述控制器发送的查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种;
所述处理器还用于,向所述控制器发送响应消息,所述响应消息与所述查询消息对应。
54.根据权利要求43-53任一项所述的设备,其特征在于,所述处理器还用于:
查询所述数据库是否存在,
当所述数据库存在时,在至少一个所述流表中设置第一表项;
当所述数据库不存在时,上报给控制器表示所述数据库不存在的消息。
55.一种控制器,其特征在于,所述控制器包括:
第一发送模块,用于发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值,所述数据库设置在所述交换设备中。
56.根据权利要求55所述的控制器,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
57.根据权利要求56所述的控制器,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
58.根据权利要求57所述的控制器,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
59.根据权利要求55所述的控制器,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
60.根据权利要求59所述的控制器,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
61.根据权利要求55所述的控制器,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述控制器还包括:
第二发送模块,用于发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
62.根据权利要求55所述的控制器,其特征在于,所述控制器还包括:
第三发送模块,用于向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
63.根据权利要求62所述的控制器,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
64.根据权利要求63所述的控制器,其特征在于,所述控制器还包括:
第四发送模块,用于向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
65.根据权利要求64所述的控制器,其特征在于,所述控制器还包括:
第五发送模块,用于向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
66.根据权利要求55-65任一项所述的控制器,其特征在于,所述控制器还包括:
第一接收模块,用于接收所述交换设备返回的表示所述数据库不存在的消息。
67.一种控制器,包括处理器和网络接口,其特征在于,所述处理器用于:
发送第一表项安装消息,所述第一表项安装消息包括流表标识和第一表项,所述第一表项安装消息用于指示交换设备在所述流表标识对应的流表中设置所述第一表项,所述第一表项包括匹配域,所述匹配域用于指定需匹配信息,并指示所述交换设备将接收到的报文的需匹配信息与数据库中各条记录的第一字段进行匹配;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;所述数据库中每条所述记录均包括所述第一字段,所述第一字段用于表示需匹配信息的指定值,所述数据库设置在所述交换设备中。
68.根据权利要求67所述的控制器,其特征在于,所述匹配域还用于指定数据库的标识,并指示所述交换设备将接收到的报文的需匹配信息的值与标识为所述数据库的标识的数据库中各条记录的第一字段进行匹配。
69.根据权利要求68所述的控制器,其特征在于,所述数据库的每条所述记录还包括第二字段,所述第二字段用于表示报文处理参数;
所述第一表项还包括报文处理指令,所述报文处理指令用于,指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理。
70.根据权利要求69所述的控制器,其特征在于,当所述数据库中存在多条所述第一记录时,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录中的第一条所述第一记录;所述报文处理指令用于,指示所述交换设备以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;或,
所述匹配域用于指示所述交换设备将接收到的报文的需匹配信息的值与数据库中各条记录的第一字段进行匹配,得到多条所述第一记录;所述报文处理指令用于,指示所述交换设备分别以多条所述第一记录的第二字段为参数,按照所述报文处理指令分别对所述交换设备复制的多个报文进行处理。
71.根据权利要求67所述的控制器,其特征在于,所述第一表项还包括记录处理指令,所述记录处理指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对指定数据库中指定记录进行操作。
72.根据权利要求71所述的控制器,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一修改指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中,
所述第二修改指令用于指示所述交换设备在所述数据中存在与所述报文相匹配的第一记录时,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值,
所述增加指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,在第三指定数据库中增加第三指定记录,
所述删除指令用于指示所述交换设备在所述数据库中存在与所述报文相匹配的第一记录时,删除第四指定数据库或所述第四指定数据库中第四指定记录。
73.根据权利要求67所述的控制器,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个所述第一表项的匹配顺序,所述处理器还用于:
发送第二表项安装信息,所述第二表项安装消息包括流表标识和第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述记录增加指令用于指示所述交换设备根据与所述第二表项匹配的报文,在指定数据库中增加记录。
74.根据权利要求67所述的控制器,其特征在于,所述处理器还用于:
向所述交换设备发送数据库创建指示,所述数据库创建指示用于指示所述交换设备创建数据库,所述数据库创建指示包括数据库标识和数据库字段信息。
75.根据权利要求74所述的控制器,其特征在于,所述数据库创建指示还包括数据库属性信息和统计信息中的至少一种,所述数据库属性信息包括所述数据库的最大记录数、所述数据库中记录的老化时间、以及是否允许所述交换设备更改所述数据库中的记录,所述统计信息包括所述数据库的总记录数、所述数据库与报文的总匹配数、总的匹配成功次数、以及每条记录总的匹配成功次数。
76.根据权利要求75所述的控制器,其特征在于,所述处理器还用于:
向所述交换设备发送数据库更新指示,所述数据库更新指示包括数据库删除指示和记录更新指示中的至少一种,所述记录更新指示包括在数据库中增加记录、删除记录和修改记录。
77.根据权利要求76所述的控制器,其特征在于,所述处理器还用于:
向所述交换设备发送查询消息,所述查询消息用于查询所述数据库的属性信息、所述数据库中记录的内容、和所述数据库的统计信息中的一种或多种。
78.根据权利要求67-77任一项所述的控制器,其特征在于,所述网络接口用于:
接收所述交换设备返回的表示所述数据库不存在的消息。
79.一种交换设备,其特征在于,所述设备包括:
第二接收模块,用于接收报文;
获取模块,用于根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
匹配模块,用于在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值,所述数据库设置在所述交换设备中;
第一处理模块,用于当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
80.根据权利要求79所述的设备,其特征在于,所述第一处理模块用于,
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
81.根据权利要求80所述的设备,其特征在于,当所述数据库中存在多条所述第一记录时,所述第一处理模块用于,
以第一条所述第一记录的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
82.根据权利要求79所述的设备,其特征在于,所述第一表项还包括记录处理指令,所述第一处理模块还用于,在所述记录处理指令的指示下,对指定数据库中指定记录进行操作。
83.根据权利要求82所述的设备,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述第一处理模块还用于,
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
84.根据权利要求79所述的设备,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述设备还包括:
第二处理模块,用于当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
85.一种交换设备,包括处理器和网络接口,其特征在于,所述处理器用于:
接收报文;
根据所述报文需匹配的流表中第一表项的匹配域,获取所述报文的需匹配信息的值,所述第一表项包括所述匹配域和报文处理指令,所述匹配域用于指定需匹配信息;所述需匹配信息包括报文头域、所述交换设备接收报文的接收端口的标识、以及与报文关联的元数据中的一种或多种;
在所述匹配域的指示下,采用所述报文的需匹配信息的值,与数据库中各条记录的第一字段进行匹配,所述第一字段用于表示所述需匹配信息的指定值,所述数据库设置在所述交换设备中;
当得到与所述报文相匹配的第一记录时,按照所述报文处理指令对所述报文进行处理。
86.根据权利要求85所述的设备,其特征在于,所述处理器还用于:
以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数。
87.根据权利要求86所述的设备,其特征在于,当所述数据库中存在多条所述第一记录时,所述以所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理,所述第二字段用于表示报文处理参数,所述处理器还用于:
以第一条所述第一记录中的第二字段为参数,按照所述报文处理指令对所述报文进行处理;
或者,复制所述报文,得到多个所述报文,分别以所述多条第一记录的第二字段为参数,按照所述报文处理指令对所述多个所述报文进行处理。
88.根据权利要求85所述的设备,其特征在于,所述第一表项还包括记录处理指令,所述处理器还用于:
在所述记录处理指令的指示下,对指定数据库中指定进行操作。
89.根据权利要求88所述的设备,其特征在于,所述记录处理指令包括以下指令中的一种或多种:第一修改指令、第二修改指令、增加指令和删除指令,
所述处理器还用于:
在得到与所述报文相匹配的第一记录后,按照所述第一修改指令,对第一指定数据库中第一指定记录的第一指定字段的当前值进行运算,得到所述第一指定字段的更新值并记录到所述第一指定数据库中;
在得到与所述报文相匹配的第一记录后,按照所述第二修改指令,将第二指定数据库中第二指定记录的第二指定字段的当前值修改为设定值;
在得到与所述报文相匹配的第一记录后,按照所述增加指令,在第三指定数据库中增加第三指定记录;和/或,
在得到与所述报文相匹配的第一记录后,按照所述删除指令,删除第四指定数据库或所述第四指定数据库中第四指定记录。
90.根据权利要求85所述的设备,其特征在于,所述第一表项包括优先级,所述优先级用于指示报文与每个第一表项的匹配顺序,所述流表中还设置有第二表项,所述第二表项的优先级低于所述第一表项,所述第二表项通配所有报文,所述第二表项包括记录增加指令,所述处理器还用于:
当所述数据库中不存在与所述报文相匹配的记录时,将所述报文与所述第二表项进行匹配并匹配成功,并在所述记录增加指令的指示下,根据所述报文,在指定数据库中增加记录。
91.一种报文处理系统,其特征在于,所述系统包括控制器和交换设备;
所述控制器是如权利要求55-78任一项所述的控制器;
所述交换设备是如权利要求31-54任一项所述的交换设备,或者是如权利要求79-90任一项所述的交换设备。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/079678 WO2015006970A1 (zh) | 2013-07-19 | 2013-07-19 | 交换设备、控制器、交换设备配置、报文处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104782087A CN104782087A (zh) | 2015-07-15 |
CN104782087B true CN104782087B (zh) | 2018-03-13 |
Family
ID=52345727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380001300.5A Active CN104782087B (zh) | 2013-07-19 | 2013-07-19 | 交换设备、控制器、交换设备配置、报文处理方法及系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10103988B2 (zh) |
EP (1) | EP3021533B1 (zh) |
KR (1) | KR101864811B1 (zh) |
CN (1) | CN104782087B (zh) |
RU (1) | RU2628476C1 (zh) |
WO (1) | WO2015006970A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150063110A1 (en) * | 2013-09-04 | 2015-03-05 | Electronics And Telecommunications Research Institute | Programmable sensor networking apparatus and sensor networking service method using the same |
EP3166275A4 (en) * | 2014-08-11 | 2017-07-19 | Huawei Technologies Co., Ltd. | Packet control method, switch and controller |
CN105577548B (zh) * | 2014-10-10 | 2018-10-09 | 新华三技术有限公司 | 一种软件定义网络中报文处理方法和装置 |
CN108287706B (zh) * | 2017-05-10 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
US11444877B2 (en) * | 2019-03-18 | 2022-09-13 | At&T Intellectual Property I, L.P. | Packet flow identification with reduced decode operations |
CN110868422B (zh) * | 2019-11-20 | 2023-04-18 | 杭州安恒信息技术股份有限公司 | 一种Http站点检测方法、装置、设备、介质 |
CN111343108B (zh) * | 2020-02-24 | 2021-10-22 | 苏州盛科通信股份有限公司 | 一种Mac表项学习转发的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739549A (zh) * | 2012-07-13 | 2012-10-17 | 华为技术有限公司 | 接收报文的方法、发送报文的方法及装置 |
CN103209121A (zh) * | 2013-03-15 | 2013-07-17 | 中兴通讯股份有限公司 | 基于开放流协议的控制面设备的发现处理方法及装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743166B2 (en) * | 2003-04-04 | 2010-06-22 | Ellacoya Networks, Inc. | Scaleable flow-based application and subscriber traffic control |
US7852850B2 (en) * | 2006-04-26 | 2010-12-14 | Marvell Israel (M.I.S.L.) Ltd. | Double-hash lookup mechanism for searching addresses in a network device |
EP2408155A4 (en) * | 2009-03-09 | 2015-01-28 | Nec Corp | OPENFLOW COMMUNICATION SYSTEM AND OPENFLOW COMMUNICATION METHOD |
EP2523402A4 (en) * | 2010-01-05 | 2017-10-18 | Nec Corporation | Communication system, control apparatus, processing rule setting method, packet transmitting method and program |
JP5493926B2 (ja) | 2010-02-01 | 2014-05-14 | 日本電気株式会社 | インタフェース制御方式、インタフェース制御方法、及びインタフェース制御用プログラム |
AU2011228096B2 (en) * | 2010-03-17 | 2015-12-03 | Nec Corporation | Communication system, node, control server, communication method and program |
JP5716741B2 (ja) * | 2010-06-09 | 2015-05-13 | 日本電気株式会社 | 通信システム、論理チャネル制御装置、制御装置、通信方法およびプログラム |
US8897134B2 (en) * | 2010-06-25 | 2014-11-25 | Telefonaktiebolaget L M Ericsson (Publ) | Notifying a controller of a change to a packet forwarding configuration of a network element over a communication channel |
US9237094B2 (en) * | 2010-11-02 | 2016-01-12 | Nec Corporation | Communication system, control apparatus, path controlling method and program |
KR101530594B1 (ko) | 2010-12-01 | 2015-06-23 | 닛본 덴끼 가부시끼가이샤 | 통신 시스템, 정보 처리 장치, 통신 노드, 통신 방법, 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 |
JP5458038B2 (ja) | 2011-02-21 | 2014-04-02 | 日本電信電話株式会社 | フロースイッチ、フロー制御システムおよびフロー制御方法 |
US9332479B2 (en) * | 2012-01-04 | 2016-05-03 | Ofinno Technologies, Llc | Network site for wireless communications |
RU2595888C2 (ru) * | 2012-03-19 | 2016-08-27 | Нек Корпорейшн | Узел связи, способ обработки пакетов и программа |
CN102857416B (zh) * | 2012-09-18 | 2016-09-28 | 中兴通讯股份有限公司 | 一种实现虚拟网络的方法、控制器和虚拟网络 |
JPWO2014061583A1 (ja) * | 2012-10-15 | 2016-09-05 | 日本電気株式会社 | 通信ノード、制御装置、通信システム、パケット処理方法及びプログラム |
US9537904B2 (en) * | 2013-01-24 | 2017-01-03 | Tekelec, Inc. | Methods, systems, and computer readable media for using policy knowledge of or obtained by a policy and charging rules function (PCRF) for needs based forwarding of bearer session traffic to network nodes |
US8964752B2 (en) * | 2013-02-25 | 2015-02-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for flow table lookup parallelization in a software defined networking (SDN) system |
US20140269299A1 (en) * | 2013-03-14 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Network controller normalization of network traffic |
-
2013
- 2013-07-19 KR KR1020167004283A patent/KR101864811B1/ko active IP Right Grant
- 2013-07-19 WO PCT/CN2013/079678 patent/WO2015006970A1/zh active Application Filing
- 2013-07-19 EP EP13889684.0A patent/EP3021533B1/en active Active
- 2013-07-19 CN CN201380001300.5A patent/CN104782087B/zh active Active
- 2013-07-19 RU RU2016105464A patent/RU2628476C1/ru active
-
2016
- 2016-01-18 US US14/997,873 patent/US10103988B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739549A (zh) * | 2012-07-13 | 2012-10-17 | 华为技术有限公司 | 接收报文的方法、发送报文的方法及装置 |
CN103209121A (zh) * | 2013-03-15 | 2013-07-17 | 中兴通讯股份有限公司 | 基于开放流协议的控制面设备的发现处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
Open Flow Switch Specification Version 1.3.0;无;《OPEN NETWORKING FOUNDATION》;20120625;第6页第1行-第13页第20行、第28页第36行-第31页第23行 * |
Also Published As
Publication number | Publication date |
---|---|
KR20160033753A (ko) | 2016-03-28 |
WO2015006970A1 (zh) | 2015-01-22 |
EP3021533A1 (en) | 2016-05-18 |
RU2628476C1 (ru) | 2017-08-17 |
EP3021533B1 (en) | 2019-01-02 |
US20160134534A1 (en) | 2016-05-12 |
EP3021533A4 (en) | 2016-07-27 |
CN104782087A (zh) | 2015-07-15 |
KR101864811B1 (ko) | 2018-06-05 |
US10103988B2 (en) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104782087B (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
CN104012052B (zh) | 用于软件定义网络中的流管理的系统和方法 | |
CN104272679B (zh) | 通信系统、控制装置、通信方法以及记录介质 | |
CN105357035B (zh) | 通信系统、节点、控制设备、通信方法以及程序 | |
CN103477593B (zh) | 网络系统、交换机和连接终端检测方法 | |
CN105099913B (zh) | 一种报文转发方法及设备 | |
US10230639B1 (en) | Enhanced prefix matching | |
CN108781185A (zh) | 提供用于网络设备的可编程包分类框架的系统和方法 | |
CN104704772B (zh) | 通信系统、虚拟网络管理装置、虚拟网络管理方法 | |
CN105245449A (zh) | 通信系统、控制装置、处理规则设置方法、分组传输方法 | |
CN105450525B (zh) | 用于路由交换设备使用的方法和设备 | |
US7007100B1 (en) | Method for synchronization of multicast routing table changes with a plurality of multicast routing protocols | |
CN105978762B (zh) | 冗余以太网数据传输设备、系统及方法 | |
US20140244815A1 (en) | Lookup engine for an information handling system | |
CN105812264B (zh) | 多路并行的mac地址学习和地址查找的装置及方法 | |
CN109743414B (zh) | 利用冗余连接提高地址翻译可用性的方法及计算机可读存储介质 | |
CN110120923B (zh) | 一种基于Hash-Trie的流规则冲突检测方法 | |
CN111937360A (zh) | 最长前缀匹配 | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
CN109547288B (zh) | 一种协议无关转发网络可编程流测量方法 | |
CN109347745A (zh) | 一种基于OpenFlow交换机的流表匹配方法和装置 | |
US6725218B1 (en) | Computerized database system and method | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
CN106487769B (zh) | 一种访问控制列表acl的实现方法及装置 | |
CN107968753A (zh) | 修改媒体接入控制地址转发表的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |