CN105684382A - 报文的控制方法、交换机及控制器 - Google Patents
报文的控制方法、交换机及控制器 Download PDFInfo
- Publication number
- CN105684382A CN105684382A CN201480009721.7A CN201480009721A CN105684382A CN 105684382 A CN105684382 A CN 105684382A CN 201480009721 A CN201480009721 A CN 201480009721A CN 105684382 A CN105684382 A CN 105684382A
- Authority
- CN
- China
- Prior art keywords
- message
- packet
- switch
- controller
- flow table
- 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.)
- Pending
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/16—Multipoint routing
-
- 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/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Abstract
本发明公开了一种报文的控制方法、交换机及控制器。该方法包括:交换机接收报文,按照流水线处理报文,原始报文存储在缓存中并以缓存标识来标识其缓存位置;当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,并携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;交换机接收控制器发送的第二报文消息Packet_out,并携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息;交换机按照报文处理指令,从指定流表开始对报文进行再次处理。通过这种方式,能够使交换机根据控制器的指示灵活处理报文。
Description
【技术领域】
本发明涉及通讯技术领域,特别是涉及一种报文的控制方法、交换机及控制器。
【背景技术】
为解决网元的部署灵活性和可管理性,业界提出了软件定义网络(Software-Defined Network
,SDN)的概念。SDN将网元的控制逻辑和转发功能解耦,并集中部署控制逻辑,通过操作集中部署的控制面设备,可以简单实现对网络的控制和维护,提高网络的管理效率,并使转发面设备简单化和通用化。Openflow协议是SDN网络中一种典型的技术。
Openflow协议中的网元包括控制器(Controller)和转发器(Switch),其中Controller负责根据报文特征确定该业务流的转发动作,将对应的流规则和对应的动作下发给Switch;Switch获取并存储该流规则,对于后续符合该流规则的报文,执行对应的动作,实现报文的转发或处理。在流表表项匹配失败的场景下,Switch可以通过第一报文消息Packet_in消息上报给控制器;控制器将报文的处理动作通过第二报文消息Packet_out消息发送给Switch。目前Switch对Packet_out消息的处理有三种方式:第一,Swtich从第一级流表匹配Packet_out
消息携带的报文,报文进行流表的流水线处理;第二,Controller在Pakcet_out消息中携带引起Packet_in的流表位置,Switch根据流表位置的值,从指定的流表开始处理报文;第三,Packet_out消息携带报文处理的动作集,Switch根据动作集处理报文,不需要进行流水线的匹配。
但是,本申请的发明人在长期的研发过程中发现,上述三种方式交换机都是完全根据控制器的指示处理报文的,当数据报文被修改之后又发现需要提交给控制面进行处理以及之后由控制器发回交换机处理时,会出现因前期修改而造成的信息丢失问题。
【发明内容】
本发明主要解决的技术问题是提供一种报文的控制方法、交换机及控制器,能够使交换机根据控制器的指示灵活处理报文。
第一方面,本发明提供一种报文的控制方法,该方法包括:交换机接收报文,按照流水线处理所述报文,其中,所述报文的原始内容即为原始报文,所述原始报文存储在缓存中并以缓存标识来标识其缓存位置;当所述报文与一个流表匹配失败时,所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带所述缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述交换机接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表;所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
在第一方面的第一种可能的实现方式中,还包括:所述交换机将所述原始报文存储在缓存中,并产生缓存标识,所述缓存标识用于标识所述原始报文的缓存位置;所述交换机在按照流表处理所述报文的过程中携带所述缓存标识。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述交换机将所述报文存储在缓存中的步骤之前,包括:所述交换机接收所述控制器发送的缓存指令,所述缓存指令要求所述交换机存储所述控制器指定的所述报文的原始内容。
结合第一方面、第一方面的第一种至第二种中任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述交换机向控制器发送第一报文消息Packet_in的步骤之前,包括:所述交换机接收所述控制器发送的携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文;所述交换机将原始报文的全部、原始报文的一部分或原始报文的变形携带在所述第一报文消息中发送给所述控制器。
结合第一方面、第一方面的第一种至第三种中任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理的步骤,包括:所述交换机通过所述缓存标识获得所述原始报文;所述交换机按照所述报文处理指令,从第一级流表对所述获得的原始报文进行再次处理,其中,所述指定流表为流水线的第一级。
结合第一方面、第一方面的第一种至第三种中任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理的步骤,包括:所述交换机通过所述缓存标识获得所述原始报文在所述处理过程中的当前流表的流表标识table_id;所述交换机从缓存中获得所述原始报文处理之后得到的当前报文;所述交换机按照所述报文处理指令,将当前报文发送到所述当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,其中,所述指定流表为流表标识table_ id标识的流表。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,还包括:在处理所述报文的过程中,按照预定要求,所述交换机记录所述报文在所述处理过程中的当前流表的流表标识table_id;所述交换机将所述报文在所述处理过程中的当前流表的流表标识table_id存储在所述已产生缓存标识的缓存中。
结合第一方面、第一方面的第二种至第六种中任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述交换机接收所述控制器发送的第二报文消息Packet_out的步骤之前,还包括:所述交换机接收所述控制器的对所述流表项进行增加、删除或修改操作的指示,并根据所述指示对所述流表项进行增加、删除或修改的操作。
结合第一方面、第一方面的第二种至第七种中任一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述交换机向控制器发送第一报文消息Packet_in的步骤,包括:所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息的Packet_id字段存储所述缓存标识。
结合第一方面、第一方面的第二种至第七种中任一种可能的实现方式,在第一方面的第九种可能的实现方式中,所述交换机向控制器发送第一报文消息Packet_in的步骤,包括:所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息的Buffer_id字段存储所述缓存标识。
第二方面,本发明提供一种报文的控制方法,该方法包括:控制器接收交换机发送的第一报文消息Packet_in,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述控制器对所述报文的信息进行分析处理,产生报文处理指令;所述控制器向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
在第二方面的第一种可能的实现方式中,所述控制器接收交换机发送的第一报文消息Packet_in的步骤之前,包括:所述控制器向所述交换机发送缓存指令,所述缓存指令指示所述交换机存储所述控制器指定的所述报文的原始内容。
在第二方面的第二种可能的实现方式中,所述控制器向所述交换机发送第二报文消息Packet_out的步骤之前,包括:所述控制器向所述交换机发送对所述流表项进行增加、删除或修改操作的指示。
在第二方面的第三种可能的实现方式中,所述控制器接收交换机发送的第一报文消息Packet_in的步骤之前,包括:所述控制器向所述交换机发送携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文。
第三方面,本发明提供一种交换机,所述交换机包括:第一接收模块、处理模块、发送模块、第二接收模块以及再处理模块;所述第一接收模块用于接收报文,其中,所述报文的原始内容即为原始报文,所述原始报文存储在缓存中并以缓存标识来标识其缓存位置;所述处理模块用于按照流水线处理所述报文;所述发送模块用于当所述报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述第二接收模块用于接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表;所述再处理模块用于按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
在第三方面的第一种可能的实现方式中,所述交换机还包括:存储模块;所述存储模块用于将所述原始报文存储在缓存中,并产生缓存标识,所述缓存标识用于标识所述原始报文的缓存位置;所述处理模块还用于在按照流表处理所述报文的过程中携带所述缓存标识。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述交换机还包括第三接收模块,所述第三接收模块用于接收所述控制器发送的缓存指令,所述缓存指令要求所述交换机存储所述控制器指定的所述报文的原始内容。
结合第三方面、第三方面的第一种至第二种中任一种可能的实现方式,在第三方面的第三种可能的实现方式中,所述交换机还包括第四接收模块,所述第四接收模块用于接收所述控制器发送的携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文;所述发送模块还用于将原始报文的全部、原始报文的一部分或原始报文的变形携带在所述第一报文消息中发送给所述控制器。
结合第三方面、第三方面的第一种至第三种中任一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述再处理模块包括:第一获得单元和第一再处理单元;所述第一获得单元用于通过所述缓存标识获得所述原始报文;所述第一再处理单元用于按照所述报文处理指令,从第一级流表对所述第一获得单元获得的原始报文进行再次处理,其中,所述指定流表为流水线的第一级。
结合第三方面、第三方面的第一种至第三种中任一种可能的实现方式,在第三方面的第五种可能的实现方式中,所述再处理模块包括:第二获得单元、第三获得单元以及第二再处理单元;所述第二获得单元用于通过所述缓存标识获得所述原始报文在所述处理过程中的当前流表的流表标识table_id;所述第三获得单元用于从缓存中获得所述原始报文处理之后得到的当前报文;所述第二再处理单元用于按照所述报文处理指令,将所述当前报文发送到所述当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,其中,所述指定流表为流表标识table_ id标识的流表。
结合第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,所述交换机还包括记录模块,所述记录模块用于在处理所述报文的过程中,按照预定要求,记录所述报文在所述处理过程中的当前流表的流表标识table_id;所述存储模块还用于将所述报文在所述处理过程中的当前流表的流表标识table_id存储在所述已产生缓存标识的缓存中。
结合第三方面、第三方面的第一种至第六种中任一种可能的实现方式,在第三方面的第七种可能的实现方式中,所述交换机还包括第五接收模块和操作模块;所述第五接收模块用于接收所述控制器的对所述流表项进行增加、删除或修改操作的指示;所述操作模块用于根据所述指示对所述流表项进行增加、删除或修改的操作。
结合第三方面、第三方面的第一种至第七种中任一种可能的实现方式,在第三方面的第八种可能的实现方式中,所述发送模块具体用于向控制器发送第一报文消息Packet_in,所述第一报文消息的Packet_id字段存储所述缓存标识。
结合第三方面、第三方面的第一种至第八种中任一种可能的实现方式,在第三方面的第九种可能的实现方式中,所述发送模块具体用于向控制器发送第一报文消息Packet_in,所述第一报文消息的Buffer_id字段存储所述缓存标识。
第四方面,本发明提供一种控制器,所述控制器包括:接收模块、处理模块、第一发送模块;所述接收模块用于接收交换机发送的第一报文消息Packet_in,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述处理模块用于对所述报文的信息进行分析处理,产生报文处理指令;所述第一发送模块用于向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
在第四方面的第一种可能的实现方式中,所述控制器还包括第二发送模块,所述第二发送模块用于向所述交换机发送缓存指令,所述缓存指令指示所述交换机存储所述控制器指定的所述报文的原始内容。
在第四方面的第二种可能的实现方式中,所述控制器还包括第三发送模块,所述第三发送模块用于向所述交换机发送对所述流表项进行增加、删除或修改操作的指示。
在第四方面的第三种可能的实现方式中,所述控制器还包括第四发送模块,所述第四发送模块用于向所述交换机发送携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文。
第五方面,本发明提供一种交换机,所述交换机包括:处理器、与所述处理器耦合的存储器、接收器、发送器;所述接收器用于接收报文,其中,所述报文的原始内容即为原始报文;所述存储器用于存储所述原始报文,并以缓存标识来标识其缓存位置;所述存储器还用于存储流表;所述处理器用于按照流水线处理所述报文;所述发送器用于当所述报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带所述缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述接收器用于接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表,并将所述报文处理指令存储在所述存储器中;所述处理器用于调取所述存储器获得所述报文处理指令,按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
第六方面,本发明提供一种控制器,所述控制器包括:处理器、与所述处理器耦合的存储器、接收器以及发送器;所述接收器用于接收交换机发送的第一报文消息Packet_in,并将所述第一报文消息Packet_in存储在所述存储器中,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述处理器用于调取所述存储器获得所述第一报文消息Packet_in携带的所述报文的信息,对所述报文的信息进行分析处理,产生报文处理指令;所述发送器用于向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
本发明实施例中,将原始报文存储在缓存中并以缓存标识来标识其缓存位置;当报文与一个流表匹配失败时,交换机向控制器发送的第一报文消息携带缓存标识,交换机接收的第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息;交换机按照报文处理指令,从指定流表开始对报文进行再次处理,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。
【附图说明】
图1是本发明报文的控制方法一实施方式的流程图;
图2是本发明报文的控制方法另一实施方式的流程图;
图3是本发明报文的控制方法又一实施方式的流程图;
图4是本发明报文的控制方法又一实施方式的流程图;
图5是本发明报文的控制方法又一实施方式的流程图;
图6是本发明报文的控制方法又一实施方式的流程图;
图7是本发明报文的控制方法又一实施方式的流程图;
图8是本发明报文的控制方法又一实施方式的流程图;
图9是本发明交换机一实施方式的结构示意图;
图10是本发明交换机另一实施方式的结构示意图;
图11是本发明交换机又一实施方式的结构示意图;
图12是本发明交换机又一实施方式的结构示意图;
图13是本发明交换机又一实施方式的结构示意图;
图14是本发明控制器一实施方式的结构示意图;
图15是本发明控制器另一实施方式的结构示意图;
图16是本发明控制器又一实施方式的结构示意图;
图17是本发明交换机一实施方式的物理实体结构示意图;
图18是本发明控制器一实施方式的物理实体结构示意图。
【具体实施方式】
下面结合附图和实施方式对本发明进行详细说明。
参阅图1,图1是本发明报文的控制方法一实施方式的流程图,本实施方式是交换机端的方法流程图,包括:
步骤S101:交换机接收报文,按照流水线处理报文,其中,报文的原始内容即为原始报文,原始报文存储在缓存中并以缓存标识来标识其缓存位置。
交换机(英文:Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。交换机接收报文后,按照流水线处理报文。其中,报文的原始内容即为原始报文。
原始报文是没有经过该交换机处理的,该原始报文包含所有最原始、最全面的信息;经过交换机处理过的报文被交换机更改部分信息,没有原始报文所含有的信息全面。原始报文存储在缓存中,缓存标识用于标识原始报文的缓存位置,在需要原始报文的时候,可以通过缓存标识从缓存获得原始报文。
流水线由流表组成,流表由很多流表项组成,每一个流表项就是一个转发规则,进入交换机的报文通过查询流表来获得转发的目的端口。流表项由头域(英文:Header
Fields)、计数器(英文:Counters)和操作(英文:Actions)组成;其中头域是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的报文应该执行的操作,包括处理类型及相关的参数,所述处理类型如转发、丢弃、修改、封装解封装等。头域也称作匹配域,用于对交换机接收到的报文的报头内容进行匹配,具体是指将报文头域以及接收端口号等信息与指定的值进行匹配,报文头域比如IP五元组(IP报文的源IP地址、目的IP地址、协议类型、源端口号、目的端口号)、以太网帧头中的各种头域(源MAC地址、目的MAC地址等)等,这里的匹配可以是精确匹配也可以是掩码匹配。
交换机按照流水线处理报文,例如:从第一个流表开始匹配,如果匹配到表项,则执行表项中的指令,然后跳转到下一个流表继续匹配操作。如果报文在流表中没有匹配表项,报文则会被丢弃或者转发到控制器进行处理。如果匹配的表项中的指令不再跳转下一个流表,则匹配结束,并执行匹配对应的操作(Actions),如将报文转发到指定输出端口、丢包、修改数据包头、转发到群组表等。
步骤S102:当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。
第一报文消息Packet_in是指交换机向控制器上报报文的信息的消息,该信息可以是报文处理通过的情况、报文处理失败的情况、或当前处理现状等等,在流表表项匹配失败的场景下,交换机可以通过第一报文消息Packet_in上报给控制器,请求控制器确定对上述报文的处理方法。或者在交换机需要向控制器发送消息的情况下,交换机也可以通过第一报文消息Packet_in上报给控制器。
第一报文消息携带缓存标识,有助于控制器向交换机发送第二报文消息时可以携带该缓存标识。
第一报文消息还包括报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。报文的全部或部分内容可以是原始报文的全部内容、部分内容、修改过的报文、报文的修改记录等;输入端口号用来标识交换机;在报文处理中所获得的信息可以用来提供另外的供控制器参考的信息,便于控制器分析处理报文。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
步骤S103:交换机接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
第二报文消息Packet_out是用于控制器向交换机发送对报文进行处理的报文处理指令,是响应第一报文消息Packet_in的消息,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表,例如,当需要报文重新开始处理时,指定流表可以是第一级流表,当需要报文从匹配失败的流表开始处理时,指定流表可以是匹配失败的流表;该报文处理指令携带在第二报文消息中。第一报文消息Packet_in携带有缓存标识,第二报文消息Packet_out是响应第一报文消息Packet_in的消息,也携带该缓存标识,以便于当交换机收到第二报文消息Packet_out后,需要原始报文时,可以通过该缓存标识获取到原始报文。
步骤S104:交换机按照报文处理指令,从指定流表开始对报文进行再次处理。
当交换机接收到第二报文消息Packet_out,即可按照第二报文消息Packet_out中携带的报文处理指令,从指定流表开始对报文进行再次处理,再次处理可以是对原始报文进行重新处理,也可以是对当前报文从匹配失败的流表开始,继续进行处理。
本发明实施方式交换机接收报文,按照流水线处理报文,原始报文存储在缓存中并以缓存标识来标识其缓存位置;当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,并携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;交换机接收控制器发送的第二报文消息Packet_out,并携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息;交换机按照报文处理指令,从指定流表开始对报文进行再次处理,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。
参阅图2至图4,图2至图4是本发明报文的控制方法另三种实施方式的流程图。本三种实施方式是交换机端的方法流程图,本三种实施方式和图1的实施方式基本相同,相同之处请参见图1和相关的文字说明,不同之处具体内容如下:
步骤S201:交换机接收报文,该接收的报文的原始内容即为原始报文。
步骤S202:交换机接收控制器发送的缓存指令,缓存指令要求交换机存储控制器指定的报文的原始内容。
所述报文的原始内容即原始报文。即交换机是否缓存原始报文可以根据控制器的缓存指令来决定。
需要说明的是,步骤S201和步骤S202没有明显的先后顺序,步骤S202只要在步骤S203之前执行即可。
步骤S203:交换机将原始报文存储在缓存中,并产生缓存标识,缓存标识用于标识原始报文的缓存位置。
步骤S204:交换机按照流表处理报文,并在处理过程中携带缓存标识。
步骤S205:交换机接收控制器发送的携带原始报文指令,携带原始报文指令指示交换机在发送第一报文消息时携带原始报文。
交换机发送第一报文消息的时候,是否携带原始报文可以根据控制器发送的携带原始报文指令决定。指示要求第一报文消息携带原始报文的时候,交换机可以根据实际处理情况将原始报文的全部、原始报文的一部分或原始报文的变形携带在第一报文消息中,以发送给控制器。
需要指出的是,步骤S205只需要在步骤S206之前执行即可,和前面的步骤没有明显的先后顺序。
步骤S206:当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息。
当执行步骤S205时,步骤S206具体是:交换机向控制器发送第一报文消息Packet_in,第一报文消息携带缓存标识和通过缓存标识获得的原始报文的全部、原始报文的一部分或原始报文的变形,还携带输入端口号以及在所述报文处理过程中所获得的信息。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
步骤S207:交换机接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
步骤S208:交换机按照报文处理指令,从指定流表开始对报文进行再次处理。
步骤S208可以通过下面的方式执行,具体可以是:
步骤S208a:交换机通过缓存标识获得原始报文。
步骤S208b:交换机按照报文处理指令,从第一级流表对获得的原始报文进行再次处理,其中,指定流表为流水线的第一级。
这种方式即交换机通过缓存标识获得原始报文,对原始报文重新从第一级流表开始处理。该方式比较适合需要重新处理原始报文的情况、或者某些交换机也不支持对报文进行中间流表的插入处理的情况。
本发明实施方式交换机将接收的原始报文存储在缓存中,并产生缓存标识;在按照流表处理报文的过程中携带缓存标识;发送的Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;接收的Packet_out携带缓存标识和报文处理指令;对报文进行再次处理。由于交换机将接收的原始报文存储在缓存中,并产生缓存标识,在发送和接收的消息中均携带该缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好的处理报文。另外,通过控制器发送缓存指令,可以使交换机选择性地缓存原始报文;通过控制器发送携带原始报文指令,可以将原始报文的全部、原始报文的一部分或原始报文的变形发送给控制器,以便于控制器获得尽量完整的报文信息,对报文的处理作出正确的判断;通过缓存标识获得原始报文,可以从第一级流表原始报文进行再次处理。
参阅图5,图5是本发明报文的控制方法又一实施方式的流程图,本实施方式是交换机端的方法流程图,本实施方式和图1的实施方式基本相同,相同之处请参见图1和相应的文字说明,不同之处具体内容如下:
步骤S301:交换机接收报文,接收的报文的原始内容即为原始报文。
步骤S302:交换机将原始报文存储在缓存中,并产生缓存标识,缓存标识用于标识原始报文的缓存位置。
步骤S303:交换机按照流表处理报文,并在处理过程中携带缓存标识。
步骤S304:在处理报文的过程中,按照预定要求,交换机记录报文在处理过程中的当前流表的流表标识table_id。
步骤S305:交换机将报文在处理过程中的当前流表的流表标识table_id存储在已产生缓存标识的缓存中。
交换机在处理报文的过程中,记录当前流表的流表标识table_id,并将该流表标识table_id存储在已产生缓存标识的缓存中,以便于根据缓存标识获得流表标识table_id,从而在后面的再处理时,可以将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理。
步骤S306:当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
步骤S307:交换机接收控制器的对流表项进行增加、删除或修改操作的指示,并根据指示对流表项进行进行增加、删除或修改的操作。
步骤S308:交换机接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
步骤S309:交换机通过缓存标识获得原始报文在处理过程中的当前流表的流表标识table_id。
步骤S310:交换机从缓存中获得原始报文处理之后得到的当前报文。
步骤S311:交换机按照报文处理指令,将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,其中,指定流表为流表标识table_ id标识的流表。
交换机通过缓存标识获得原始报文在处理过程中的当前流表的流表标识table_id,从缓存中获得原始报文处理之后得到的当前报文,然后将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,通过这种方式,可以免除报文从第一级流表重新处理,节约了时间;这种方式适合某些交换机支持对报文进行中间流表的插入处理的情况。
本发明实施方式交换机将接收的原始报文存储在缓存中,并产生缓存标识;在按照流表处理报文的过程中携带缓存标识;发送的Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;接收的Packet_out携带缓存标识和报文处理指令;对报文进行再次处理。由于交换机将接收的原始报文存储在缓存中,并产生缓存标识,在发送和接收的消息中均携带该缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好且灵活的处理报文。另外,记录当前流表的流表标识table_id,并将该流表标识table_id存储在已产生缓存标识的缓存中,可以免除报文从第一级流表重新处理,节约时间。
需要说明的是,在实际应用中,可以根据具体情况,对上述实施方式中的步骤进行增减或组合,在此不再进行赘叙。
参阅图6,图6是本发明报文的控制方法又一实施方式的流程图,本实施方式是控制器端的方法流程,包括:
步骤S401:控制器接收交换机发送的第一报文消息Packet_in,,第一报文消息用于向控制器报告报文的信息,请求控制器确定对报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息,报文的原始内容即为原始报文,缓存标识用于标识原始报文的缓存位置。
控制器(英文:Controller)用于对网络进行集中控制,实现控制层的功能;控制器通过OpenFlow协议标准接口对交换机中的流表进行控制,从而实现对整个网络进行集中控制,例如:发现网络状态和事件(拓扑结构,设备,流量),控制交换机通信,共享存储、线程、测试等资源。
第一报文消息Packet_in是指交换机向控制器上报报文的信息的消息,该信息可以是报文处理通过的情况、报文处理失败的情况、或当前处理现状等等,在流表表项匹配失败的场景下,交换机可以通过第一报文消息Packet_in上报给控制器,请求控制器确定对上述报文的处理方法。或者在交换机需要向控制器发送消息的情况下,交换机也可以通过第一报文消息Packet_in上报给控制器。
第一报文消息携带缓存标识,有助于控制器向交换机发送第二报文消息时可以携带该缓存标识。缓存标识用于标识原始报文的缓存位置。
第一报文消息还包括报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。报文的全部或部分内容可以是原始报文的全部内容、部分内容、修改过的报文、报文的修改记录等;输入端口号用来标识交换机;在报文处理中所获得的信息可以用来提供另外的供控制器参考的信息,便于控制器分析处理报文。
步骤S402:控制器对报文的信息进行分析处理,产生报文处理指令。
报文处理指令是控制器对报文的信息进行分析处理后,产生的对该报文如何处理的指示,即报文处理指令。
步骤S403:控制器向交换机发送第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
第二报文消息Packet_out是用于控制器向交换机发送对报文进行处理的报文处理指令,是响应第一报文消息Packet_in的消息,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表,例如,当需要报文重新开始处理时,指定流表可以是第一级流表,当需要报文从匹配失败的流表开始处理时,指定流表可以是匹配失败的流表;该报文处理指令携带在第二报文消息中。第一报文消息Packet_in携带有缓存标识,第二报文消息Packet_out是响应第一报文消息Packet_in的消息,也携带该缓存标识,以便于当交换机收到第二报文消息Packet_out后,需要原始报文时,可以通过该缓存标识获取到原始报文。
本发明实施方式控制器接收交换机发送的第一报文消息Packet_in,Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;对报文的信息进行分析处理,产生报文处理指令,向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和报文处理指令。由于控制器在接受和发送的消息中均携带缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。
参阅图7和图8,图7和图8是本发明报文的控制方法两个实施方式的流程图,本实施方式是控制器端的方法流程,本实施方式和图6的实施方式基本相同,相同之处请参见图6和相关的文字说明,不同之处具体内容如下:
步骤S501:控制器向交换机发送缓存指令,缓存指令指示交换机存储控制器指定的报文的原始内容。
所述报文的原始内容即原始报文。即交换机是否缓存原始报文可以根据控制器的缓存指令来决定。
步骤S502:控制器向交换机发送携带原始报文指令,携带原始报文指令指示交换机在发送第一报文消息时携带原始报文。
控制器接收第一报文消息的之前,如果控制器需要原始报文,则控制器发送的携带原始报文指令,指示交换机发送第一报文消息时携带原始报文。
步骤S503:控制器接收交换机发送的第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息,报文的原始内容即为原始报文,缓存标识用于标识原始报文的缓存位置。
当步骤S502执行时,步骤S503具体为:控制器接收交换机发送的第一报文消息Packet_in,第一报文消息携带缓存标识和通过缓存标识获得的原始报文的全部、原始报文的一部分或原始报文的变形,缓存标识用于标识原始报文的缓存位置。
步骤S504:控制器对报文的信息进行分析处理,产生报文处理指令。
当步骤S502执行时,步骤S504具体为:控制器对原始报文的全部、原始报文的一部分或原始报文的变形进行分析处理,产生报文处理指令。
步骤S505:控制器向交换机发送对流表项进行增加、删除或修改的操作的指示。
步骤S506:控制器向交换机发送第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
当步骤S502执行时,步骤S506具体为:控制器向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和控制器对原始报文的全部、原始报文的一部分或原始报文的变形进行分析处理后产生的报文处理指令。
本发明实施方式控制器接收交换机发送的第一报文消息Packet_in,Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;对报文的信息进行分析处理,产生报文处理指令,向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和报文处理指令。由于控制器在接受和发送的消息中均携带缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。另外,通过控制器发送缓存指令,可以使交换机选择性地缓存原始报文;通过控制器发送携带原始报文指令,可以将原始报文的全部、原始报文的一部分或原始报文的变形发送给控制器,以便于控制器获得尽量完整的报文信息,对报文的处理作出正确的判断。
参阅图9,图9是本发明交换机一实施方式的结构示意图,该交换机包括:第一接收模块101、处理模块102、发送模块103、第二接收模块104以及再处理模块105。
需要说明的是,本实施方式的交换机可以执行图1至图5方法流程中的步骤。
第一接收模块101用于接收报文,其中,报文的原始内容即为原始报文,原始报文存储在缓存中并以缓存标识来标识其缓存位置。
原始报文是没有经过该交换机处理的,该原始报文包含所有最原始、最全面的信息;经过交换机处理过的报文被交换机更改部分信息,没有原始报文所含有的信息全面。原始报文存储在缓存中,缓存标识用于标识原始报文的缓存位置,在需要原始报文的时候,可以通过缓存标识从缓存获得原始报文。
处理模块102用于按照流水线处理报文。
流水线由流表组成,流表由很多流表项组成,每一个流表项就是一个转发规则,进入交换机的报文通过查询流表来获得转发的目的端口。流表项由头域(英文:Header
Fields)、计数器(英文:Counters)和操作(英文:Actions)组成;其中头域是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的报文应该执行的操作。头域也称作匹配域,用于对交换机接收到的报文的报头内容进行匹配,具体是指将报文头域以及接收端口号等信息与指定的值进行匹配。
按照流表处理报文,例如:从第一个流表开始匹配,如果匹配到表项,则执行表项中的指令,然后跳转到下一个流表继续匹配操作。如果报文在流表中没有匹配表项,报文则会被丢弃或者转发到控制器进行处理。如果匹配的表项中的指令不再跳转下一个流表,则匹配结束,并执行匹配对应的操作(Actions),如将报文转发到指定输出端口、丢包、修改数据包头、转发到群组表等。
发送模块104用于当报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。
第一报文消息Packet_in是指交换机向控制器上报报文的信息的消息,该信息可以是报文处理通过的情况、报文处理失败的情况、或当前处理现状等等,在流表表项匹配失败的场景下,可以通过第一报文消息Packet_in上报给控制器,请求控制器确定对上述报文的处理方法。或者在交换机需要向控制器发送消息的情况下,交换机也可以通过第一报文消息Packet_in上报给控制器。
第一报文消息携带缓存标识,有助于控制器向交换机发送第二报文消息时可以携带该缓存标识。
第一报文消息还包括报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。报文的全部或部分内容可以是原始报文的全部内容、部分内容、修改过的报文、报文的修改记录等;输入端口号用来标识交换机;在报文处理中所获得的信息可以用来提供另外的供控制器参考的信息,便于控制器分析处理报文。
其中,交换机向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
其中,向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
第二接收模块104用于接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
第二报文消息Packet_out是用于控制器向交换机发送对报文进行处理的报文处理指令,是响应第一报文消息Packet_in的消息,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表,例如,当需要报文重新开始处理时,指定流表可以是第一级流表,当需要报文从匹配失败的流表开始处理时,指定流表可以是匹配失败的流表;该报文处理指令携带在第二报文消息中。第一报文消息Packet_in携带有缓存标识,第二报文消息Packet_out是响应第一报文消息Packet_in的消息,也携带该缓存标识,以便于当交换机收到第二报文消息Packet_out后,需要原始报文时,可以通过该缓存标识获取到原始报文。
再处理模块105用于按照报文处理指令,从指定流表开始对报文进行再次处理。
当接收到第二报文消息Packet_out,即可按照第二报文消息Packet_out中携带的报文处理指令,从指定流表开始对报文进行再次处理,再次处理可以是对原始报文进行重新处理,也可以是对当前报文从匹配失败的流表开始,继续进行处理。
本发明实施方式交换机接收报文,按照流水线处理报文,原始报文存储在缓存中并以缓存标识来标识其缓存位置;当报文与一个流表匹配失败时,交换机向控制器发送第一报文消息Packet_in,并携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;交换机接收控制器发送的第二报文消息Packet_out,并携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息;交换机按照报文处理指令,从指定流表开始对报文进行再次处理,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。
参阅图10至图12,图10至图12是本发明交换机另两个实施方式的结构示意图,本实施方式的交换机和图9的交换机基本相同,相同之处请参见图7和相关的文字说明,不同之处请具体参见如下内容:
该交换机包括:第一接收模块201、存储模块202、处理模块203、发送模块204、第二接收模块205、再处理模块206、第三接收模块207、第四接收模块208。
需要说明的是,本实施方式的交换机可以执行图2至图4方法流程中的步骤。
第一接收模块201用于接收报文,接收的报文的原始内容即为原始报文。
第三接收模块207用于接收控制器发送的缓存指令,缓存指令要求交换机存储控制器指定的报文的原始内容。
报文的原始内容即原始报文。即交换机是否缓存原始报文可以根据控制器的缓存指令来决定。
存储模块202用于将原始报文存储在缓存中,并产生缓存标识,缓存标识用于标识原始报文的缓存位置。
处理模块203用于按照流表处理报文,并在处理过程中携带缓存标识。
第四接收模块208用于接收控制器发送的携带原始报文指令,携带原始报文指令指示交换机在发送第一报文消息时携带原始报文。
发送第一报文消息的时候,是否携带原始报文可以根据控制器发送的携带原始报文指令决定。指示要求第一报文消息携带原始报文的时候,可以根据实际处理情况将原始报文的全部、原始报文的一部分或原始报文的变形携带在第一报文消息中,以发送给控制器。
发送模块204用于当报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。
当交换机包括第四接收模块208时,发送模块204具体用于向控制器发送第一报文消息Packet_in,第一报文消息携带处理模块203在处理过程中携带的缓存标识和通过缓存标识获得的原始报文的全部、原始报文的一部分或原始报文的变形,第二报文消息携带缓存标识和控制器根据原始报文的全部、原始报文的一部分或原始报文的变形对报文进行分析处理后的报文处理指令。
其中,发送模块204还具体用于向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
其中,发送模块204还具体用于向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
第二接收模块205用于接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
此时,第二报文消息携带缓存标识和控制器根据原始报文的全部、原始报文的一部分或原始报文的变形对报文进行分析处理后的报文处理指令。
再处理模块206用于按照报文处理指令,从指定流表开始对报文进行再次处理。
其中,再处理模块206包括:第一获得单元2061和第一再处理单元2062。
第一获得单元2061用于通过缓存标识获得原始报文。
第一再处理单元2062用于按照报文处理指令,从第一级流表对第一获得单元获得的原始报文进行再次处理,其中,指定流表为流水线的第一级。
这种方式即通过缓存标识获得原始报文,对原始报文重新从第一级流表开始处理。该方式比较适合需要重新处理原始报文的情况、或者某些交换机也不支持对报文进行中间流表的插入处理的情况。
本发明实施方式将接收的原始报文存储在缓存中,并产生缓存标识;在按照流表处理报文的过程中携带缓存标识;发送的Packet_in携带缓存标识和和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;接收的Packet_out携带缓存标识和报文处理指令;对报文进行再次处理。由于交换机将接收的原始报文存储在缓存中,并产生缓存标识,在发送和接收的消息中均携带该缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好的处理报文。另外,通过控制器发送缓存指令,可以使交换机选择性地缓存原始报文;通过控制器发送携带原始报文指令,可以将原始报文的全部、原始报文的一部分或原始报文的变形发送给控制器,以便于控制器获得尽量完整的报文信息,对报文的处理作出正确的判断;通过缓存标识获得原始报文,可以从第一级流表原始报文进行再次处理。
参阅图13,图13是本发明交换机又一实施方式的结构示意图,本实施方式的交换机和图9的交换机基本相同,相同之处请参见图9和相关的文字说明,不同之处具体请参见如下内容:
该交换机包括:第一接收模块301、存储模块302、处理模块303、发送模块304、第二接收模块305、再处理模块306、记录模块307、第五接收模块308、操作模块309。
需要说明的是,本实施方式的交换机可以执行图5方法流程中的步骤。
第一接收模块301用于接收报文,接收的报文的原始内容即为原始报文。
存储模块302用于将原始报文存储在缓存中,并产生缓存标识,缓存标识用于标识原始报文的缓存位置。
处理模块303用于按照流表处理报文,并在处理过程中携带存缓存标识。
记录模块307用于在处理报文的过程中,按照预定要求,记录报文在处理过程中的当前流表的流表标识table_id。
存储模块302还用于将记录模块307记录的报文在处理过程中的当前流表的流表标识table_id存储在已产生缓存标识的缓存中。
在处理报文的过程中,记录当前流表的流表标识table_id,并将该流表标识table_id存储在已产生缓存标识的缓存中,以便于根据缓存标识获得流表标识table_id,从而在后面的再处理时,可以将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理。
发送模块304用于当报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对上述报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。
其中,发送模块304具体用于向控制器发送第一报文消息Packet_in,第一报文消息的Buffer_id字段存储缓存标识。通过这种方式,能够扩展现有的Buffer_id信元的功能。
其中,发送模块304具体用于向控制器发送第一报文消息Packet_in,第一报文消息的Packet_id字段存储缓存标识。通过这种方式,能够扩展现有的Packet_id的功能。
第五接收模块308用于接收控制器的对流表项进行增加、删除或修改操作的指示。
操作模块309用于根据指示对流表项进行进行增加、删除或修改的操作。
第二接收模块305用于接收控制器发送的第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
再处理模块306用于按照报文处理指令,从指定流表开始对报文进行再次处理。
再处理模块306包括:第二获得单元3063、第三获得单元3064和第二再处理单元3065。
第二获得单元3063用于通过缓存标识获得报文在处理过程中的当前流表的流表标识table_id。
第三获得单元3064用于从缓存中获得原始报文处理之后得到的当前报文。
第二再处理单元3065用于按照报文处理指令,将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,其中,指定流表为流表标识table_ id标识的流表。
通过缓存标识获得原始报文在处理过程中的当前流表的流表标识table_id,从缓存中获得原始报文处理之后得到的当前报文,然后将当前报文发送到当前流表的流表标识table
id所指示的流水线中的位置继续进行处理,通过这种方式,可以免除报文从第一级流表重新处理,节约了时间;这种方式适合某些交换机支持对报文进行中间流表的插入处理的情况。
本发明实施方式将接收的原始报文存储在缓存中,并产生缓存标识;在按照流表处理报文的过程中携带缓存标识;发送的Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;接收的Packet_out携带缓存标识和报文处理指令;对报文进行再次处理。由于交换机将接收的原始报文存储在缓存中,并产生缓存标识,在发送和接收的消息中均携带该缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好且灵活的处理报文。另外,记录当前流表的流表标识table_id,并将该流表标识table_id存储在已产生缓存标识的缓存中,可以免除报文从第一级流表重新处理,节约时间。
需要说明的是,在实际应用中,可以根据具体情况,对上述实施方式中的交换机进行模块或单元的增减或组合,在此不再进行赘叙。
参阅图14,图14是本发明控制器一实施方式的结构示意图,该控制器包括:接收模块401、处理模块402、第一发送模块403。
需要说明的是,本实施方式的交换机可以执行图6至图8方法流程中的步骤。
接收模块401用于接收交换机发送的第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息,报文的原始内容即为原始报文,缓存标识用于标识原始报文的缓存位置。
第一报文消息Packet_in是指交换机向控制器上报报文的信息的消息,该信息可以是报文处理通过的情况、报文处理失败的情况、或当前处理现状等等,在流表表项匹配失败的场景下,
交换机可以通过第一报文消息Packet_in上报给控制器,请求控制器确定对上述报文的处理方法。或者在交换机需要向控制器发送消息的情况下,交换机也可以通过第一报文消息Packet_in上报给控制器。
第一报文消息携带缓存标识,有助于控制器向交换机发送第二报文消息时可以携带该缓存标识。缓存标识用于标识原始报文的缓存位置。
第一报文消息还包括报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息。报文的全部或部分内容可以是原始报文的全部内容、部分内容、修改过的报文、报文的修改记录等;输入端口号用来标识交换机;在报文处理中所获得的信息可以用来提供另外的供控制器参考的信息,便于控制器分析处理报文。
处理模块402用于对报文的信息进行分析处理,产生报文处理指令。
第一发送模块403用于向交换机发送第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
第二报文消息Packet_out是用于控制器向交换机发送对报文进行处理的报文处理指令,是响应第一报文消息Packet_in的消息,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表,例如,当需要报文重新开始处理时,指定流表可以是第一级流表,当需要报文从匹配失败的流表开始处理时,指定流表可以是匹配失败的流表;该报文处理指令携带在第二报文消息中。第一报文消息Packet_in携带有缓存标识,第二报文消息Packet_out是响应第一报文消息Packet_in的消息,也携带该缓存标识,以便于当交换机收到第二报文消息Packet_out后,需要原始报文时,可以通过该缓存标识获取到原始报文。
本发明实施方式控制器接收交换机发送的第一报文消息Packet_in,Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息;对报文的信息进行分析处理,产生报文处理指令,向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和报文处理指令。由于控制器在接受和发送的消息中均携带缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。
参阅图15和图16,15和图16是本发明控制器另两个实施方式的结构示意图,本实施方式的控制器和图14的控制器基本相同,相同之处请参见图14和相关的文字说明,不同之处具体请参见如下内容:
该控制器包括:接收模块501、处理模块502、第一发送模块503、第二发送模块504、第三发送模块505、第四发送模块506。
需要说明的是,本实施方式的交换机可以执行图7和图8方法流程中的步骤。
第二发送模块504用于向交换机发送缓存指令,缓存指令指示交换机存储控制器指定的报文的原始内容。
报文的原始内容即原始报文。即交换机是否缓存原始报文可以根据控制器的缓存指令来决定。
第四发送模块506用于向交换机发送携带原始报文指令,携带原始报文指令指示交换机在发送第一报文消息时携带原始报文。
控制器接收第一报文消息的之前,如果控制器需要原始报文,则发送的携带原始报文指令,指示交换机发送第一报文消息时携带原始报文。
接收模块501用于接收交换机发送的第一报文消息Packet_in,第一报文消息用于向控制器报告报文的信息,请求控制器确定对报文的处理方法,第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在报文处理过程中所获得的信息,报文的原始内容即为原始报文,缓存标识用于标识原始报文的缓存位置。
当控制器包括第四发送模块506时,与报文相关的信息是指通过缓存标识获得的原始报文的全部、原始报文的一部分或原始报文的变形。
处理模块502用于对报文的信息进行分析处理,产生报文处理指令,当控制器包括第四发送模块506时,具体是对原始报文的全部、原始报文的一部分或原始报文的变形进行分析处理,产生报文处理指令。
第三发送模块505用于向交换机发送对流表项进行增加、删除或修改的操作的指示。
第一发送模块503用于向交换机发送第二报文消息Packet_out,第二报文消息用于向交换机下发对报文进行处理的报文处理指令,第二报文消息携带缓存标识和报文处理指令,报文处理指令包含指定流表的指示信息,指定流表为交换机重新处理报文所使用的流水线中的起始流表。
当控制器包括第四发送模块506时,与报文相关的信息是指通过缓存标识获得的原始报文的全部、原始报文的一部分或原始报文的变形。
本发明实施方式控制器接收交换机发送的第一报文消息Packet_in,Packet_in携带缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;对报文的信息进行分析处理,产生报文处理指令,向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和报文处理指令。由于控制器在接受和发送的消息中均携带缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够根据控制器的指示灵活处理报文。另外,通过控制器发送缓存指令,可以使交换机选择性地缓存原始报文;通过控制器发送携带原始报文指令,可以将原始报文的全部、原始报文的一部分或原始报文的变形发送给控制器,以便于控制器获得尽量完整的报文信息,对报文的处理作出正确的判断。
参阅图17,图17是本发明交换机一实施方式的物理实体结构示意图,该交换机包括:处理器11、与所述处理器11耦合的存储器12、接收器13、发送器14。
需要说明的是,本实施方式的交换机可以执行图1至图5方法流程中的步骤。
所述接收器13接收报文,其中,所述报文的原始内容即为原始报文;
所述存储器12用于存储所述原始报文,并以缓存标识来标识其缓存位置;所述存储器12还用于存储流表;
所述处理器11用于按照流水线处理所述报文;
所述发送器14用于当所述报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带所述缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;
所述接收器13用于接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和所述报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表,并将所述报文处理指令存储在所述存储器12中;
所述处理器11用于调取所述存储器12获得所述报文处理指令,按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
本发明实施方式交换机将接收的原始报文存储在缓存中,并产生缓存标识;在按照流表处理报文的过程中携带缓存标识;发送的Packet_in携带缓存标识和与报文相关的信息;接收的Packet_out携带缓存标识和报文处理指令;对报文进行再次处理。由于交换机将接收的原始报文存储在缓存中,并产生缓存标识,在发送和接收的消息中均携带该缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好的处理报文。
参阅图18,图18是本发明控制器一实施方式的物理实体结构示意图,该控制器包括:处理器21、与所述处理器21耦合的存储器22、接收器23以及发送器24。
需要说明的是,本实施方式的控制器可以执行图6至图8方法流程中的步骤。
所述接收器23用于接收交换机发送的第一报文消息Packet_in,并将所述第一报文消息Packet_in存储在所述存储器22中,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;
所述处理器21用于调取所述存储器22获得所述第一报文消息Packet_in携带的所述报文的信息,对所述报文的信息进行分析处理,产生报文处理指令;
所述发送器24用于向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
本发明实施方式控制器接收交换机发送的第一报文消息Packet_in,Packet_in携带缓存标识和与报文相关的信息;对与报文相关的信息进行分析处理,产生报文处理指令,向交换机发送第二报文消息Packet_out,第二报文消息携带缓存标识和控制器对与报文相关的信息进行分析处理后产生的报文处理指令。由于控制器在接受和发送的消息中均携带缓存标识,通过这种方式,可以在交换机需要原始报文的时候根据该缓存标识获取原始报文,从而使得交换机能够更好的处理报文。
在本发明所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only
Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (30)
- 一种报文的控制方法,其特征在于,包括:交换机接收报文,按照流水线处理所述报文,其中,所述报文的原始内容即为原始报文,所述原始报文存储在缓存中并以缓存标识来标识其缓存位置;当所述报文与一个流表匹配失败时,所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带所述缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述交换机接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表;所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
- 根据权利要求1所述的方法,其特征在于,还包括:所述交换机将所述原始报文存储在缓存中,并产生缓存标识,所述缓存标识用于标识所述原始报文的缓存位置;所述交换机在按照流表处理所述报文的过程中携带所述缓存标识。
- 根据权利要求2所述的方法,其特征在于,所述交换机将所述报文存储在缓存中的步骤之前,包括:所述交换机接收所述控制器发送的缓存指令,所述缓存指令要求所述交换机存储所述控制器指定的所述报文的原始内容。
- 根据权利要求1-3任一项所述的方法,其特征在于,所述交换机向控制器发送第一报文消息Packet_in的步骤之前,包括:所述交换机接收所述控制器发送的携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文;所述交换机将原始报文的全部、原始报文的一部分或原始报文的变形携带在所述第一报文消息中发送给所述控制器。
- 根据权利要求1-4任一项所述的方法,其特征在于,所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理的步骤,包括:所述交换机通过所述缓存标识获得所述原始报文;所述交换机按照所述报文处理指令,从第一级流表对所述获得的原始报文进行再次处理,其中,所述指定流表为流水线的第一级。
- 根据权利要求1-4任一项所述的方法,其特征在于,所述交换机按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理的步骤,包括:所述交换机通过所述缓存标识获得所述原始报文在所述处理过程中的当前流表的流表标识table_id;所述交换机从缓存中获得所述原始报文处理之后得到的当前报文;所述交换机按照所述报文处理指令,将当前报文发送到所述当前流表的流表标识table id所指示的流水线中的位置继续进行处理,其中,所述指定流表为流表标识table_ id标识的流表。
- 根据权利要求6所述的方法,其特征在于,还包括:在处理所述报文的过程中,按照预定要求,所述交换机记录所述报文在所述处理过程中的当前流表的流表标识table_id;所述交换机将所述报文在所述处理过程中的当前流表的流表标识table_id存储在所述已产生缓存标识的缓存中。
- 根据权利要求1-7任一项所述的方法,其特征在于,所述交换机接收所述控制器发送的第二报文消息Packet_out的步骤之前,还包括:所述交换机接收所述控制器的对所述流表项进行增加、删除或修改操作的指示,并根据所述指示对所述流表项进行增加、删除或修改的操作。
- 根据权利要求1-8任一项所述的方法,其特征在于,所述交换机向控制器发送第一报文消息Packet_in的步骤,包括:所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息的Packet_id字段存储所述缓存标识。
- 根据权利要求1-8任一项所述的方法,其特征在于,所述交换机向控制器发送第一报文消息Packet_in的步骤,包括:所述交换机向控制器发送第一报文消息Packet_in,所述第一报文消息的Buffer_id字段存储所述缓存标识。
- 一种报文的控制方法,其特征在于,包括:控制器接收交换机发送的第一报文消息Packet_in,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述控制器对所述报文的信息进行分析处理,产生报文处理指令;所述控制器向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
- 根据权利要求11所述的方法,其特征在于,所述控制器接收交换机发送的第一报文消息Packet_in的步骤之前,包括:所述控制器向所述交换机发送缓存指令,所述缓存指令指示所述交换机存储所述控制器指定的所述报文的原始内容。
- 根据权利要求11所述的方法,其特征在于,所述控制器向所述交换机发送第二报文消息Packet_out的步骤之前,包括:所述控制器向所述交换机发送对所述流表项进行增加、删除或修改操作的指示。
- 根据权利要求11所述的方法,其特征在于,所述控制器接收交换机发送的第一报文消息Packet_in的步骤之前,包括:所述控制器向所述交换机发送携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文。
- 一种交换机,其特征在于,所述交换机包括:第一接收模块、处理模块、发送模块、第二接收模块以及再处理模块;所述第一接收模块用于接收报文,其中,所述报文的原始内容即为原始报文,所述原始报文存储在缓存中并以缓存标识来标识其缓存位置;所述处理模块用于按照流水线处理所述报文;所述发送模块用于当所述报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述第二接收模块用于接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表;所述再处理模块用于按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
- 根据权利要求15所述的交换机,其特征在于,所述交换机还包括:存储模块;所述存储模块用于将所述原始报文存储在缓存中,并产生缓存标识,所述缓存标识用于标识所述原始报文的缓存位置;所述处理模块还用于在按照流表处理所述报文的过程中携带所述缓存标识。
- 根据权利要求16所述的交换机,其特征在于,所述交换机还包括第三接收模块,所述第三接收模块用于接收所述控制器发送的缓存指令,所述缓存指令要求所述交换机存储所述控制器指定的所述报文的原始内容。
- 根据权利要求15至17任一项所述的交换机,其特征在于,所述交换机还包括第四接收模块,所述第四接收模块用于接收所述控制器发送的携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文;所述发送模块还用于将原始报文的全部、原始报文的一部分或原始报文的变形携带在所述第一报文消息中发送给所述控制器。
- 根据权利要求15-18任一项所述的交换机,所述再处理模块包括:第一获得单元和第一再处理单元;所述第一获得单元用于通过所述缓存标识获得所述原始报文;所述第一再处理单元用于按照所述报文处理指令,从第一级流表对所述第一获得单元获得的原始报文进行再次处理,其中,所述指定流表为流水线的第一级。
- 根据权利要求15-18任一项所述的交换机,其特征在于,所述再处理模块包括:第二获得单元、第三获得单元以及第二再处理单元;所述第二获得单元用于通过所述缓存标识获得所述原始报文在所述处理过程中的当前流表的流表标识table_id;所述第三获得单元用于从缓存中获得所述原始报文处理之后得到的当前报文;所述第二再处理单元用于按照所述报文处理指令,将所述当前报文发送到所述当前流表的流表标识table id所指示的流水线中的位置继续进行处理,其中,所述指定流表为流表标识table_ id标识的流表。
- 根据权利要求20所述的交换机,其特征在于,所述交换机还包括记录模块,所述记录模块用于在处理所述报文的过程中,按照预定要求,记录所述报文在所述处理过程中的当前流表的流表标识table_id;所述存储模块还用于将所述报文在所述处理过程中的当前流表的流表标识table_id存储在所述已产生缓存标识的缓存中。
- 根据权利要求15-21任一项所述的交换机,其特征在于,所述交换机还包括第五接收模块和操作模块;所述第五接收模块用于接收所述控制器的对所述流表项进行增加、删除或修改操作的指示;所述操作模块用于根据所述指示对所述流表项进行增加、删除或修改的操作。
- 根据权利要求15-22任一项所述的交换机,其特征在于,所述发送模块具体用于向控制器发送第一报文消息Packet_in,所述第一报文消息的Packet_id字段存储所述缓存标识。
- 根据权利要求15-22任一项所述的交换机,其特征在于,所述发送模块具体用于向控制器发送第一报文消息Packet_in,所述第一报文消息的Buffer_id字段存储所述缓存标识。
- 一种控制器,其特征在于,所述控制器包括:接收模块、处理模块、第一发送模块;所述接收模块用于接收交换机发送的第一报文消息Packet_in,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述处理模块用于对所述报文的信息进行分析处理,产生报文处理指令;所述第一发送模块用于向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
- 根据权利要求25所述的控制器,其特征在于,所述控制器还包括第二发送模块,所述第二发送模块用于向所述交换机发送缓存指令,所述缓存指令指示所述交换机存储所述控制器指定的所述报文的原始内容。
- 根据权利要求25所述的控制器,其特征在于,所述控制器还包括第三发送模块,所述第三发送模块用于向所述交换机发送对所述流表项进行增加、删除或修改操作的指示。
- 根据权利要求25所述的控制器,其特征在于,所述控制器还包括第四发送模块,所述第四发送模块用于向所述交换机发送携带原始报文指令,所述携带原始报文指令指示所述交换机在发送第一报文消息时携带所述原始报文。
- 一种交换机,其特种在于,所述交换机包括:处理器、与所述处理器耦合的存储器、接收器、发送器;所述接收器用于接收报文,其中,所述报文的原始内容即为原始报文;所述存储器用于存储所述原始报文,并以缓存标识来标识其缓存位置;所述存储器还用于存储流表;所述处理器用于按照流水线处理所述报文;所述发送器用于当所述报文与一个流表匹配失败时,向控制器发送第一报文消息Packet_in,所述第一报文消息用于向控制器报告所述报文的信息,请求控制器确定对上述报文的处理方法,所述第一报文消息携带所述缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息;所述接收器用于接收所述控制器发送的第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表,并将所述报文处理指令存储在所述存储器中;所述处理器用于调取所述存储器获得所述报文处理指令,按照所述报文处理指令,从所述指定流表开始对所述报文进行再次处理。
- 一种控制器,其特征在于,所述控制器包括:处理器、与所述处理器耦合的存储器、接收器以及发送器;所述接收器用于接收交换机发送的第一报文消息Packet_in,并将所述第一报文消息Packet_in存储在所述存储器中,所述第一报文消息用于向控制器报告报文的信息,请求控制器确定对所述报文的处理方法,所述第一报文消息携带缓存标识和所述报文的全部或部分内容、输入端口号以及在所述报文处理过程中所获得的信息,所述报文的原始内容即为原始报文,所述缓存标识用于标识所述原始报文的缓存位置;所述处理器用于调取所述存储器获得所述第一报文消息Packet_in携带的所述报文的信息,对所述报文的信息进行分析处理,产生报文处理指令;所述发送器用于向所述交换机发送第二报文消息Packet_out,所述第二报文消息用于向所述交换机下发对所述报文进行处理的报文处理指令,所述第二报文消息携带所述缓存标识和报文处理指令,所述报文处理指令包含指定流表的指示信息,所述指定流表为所述交换机重新处理所述报文所使用的流水线中的起始流表。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/084084 WO2016023148A1 (zh) | 2014-08-11 | 2014-08-11 | 报文的控制方法、交换机及控制器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105684382A true CN105684382A (zh) | 2016-06-15 |
Family
ID=55303755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480009721.7A Pending CN105684382A (zh) | 2014-08-11 | 2014-08-11 | 报文的控制方法、交换机及控制器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10305783B2 (zh) |
EP (1) | EP3166275A4 (zh) |
CN (1) | CN105684382A (zh) |
WO (1) | WO2016023148A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629842A (zh) * | 2022-03-30 | 2022-06-14 | 阿里巴巴(中国)有限公司 | 流表处理方法、电子设备、可读存储介质及产品 |
CN115086450A (zh) * | 2022-06-01 | 2022-09-20 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面架构、流表更新方法及交换机 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
CN105391567B (zh) * | 2014-09-05 | 2019-05-24 | 华为技术有限公司 | 流量管理实现方法、装置和网络设备 |
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US10135789B2 (en) | 2015-04-13 | 2018-11-20 | Nicira, Inc. | Method and system of establishing a virtual private network in a cloud service for branch networking |
US10498652B2 (en) | 2015-04-13 | 2019-12-03 | Nicira, Inc. | Method and system of application-aware routing with crowdsourcing |
US9825862B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US20200036624A1 (en) | 2017-01-31 | 2020-01-30 | The Mode Group | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US10992568B2 (en) | 2017-01-31 | 2021-04-27 | Vmware, Inc. | High performance software-defined core network |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US11245572B1 (en) | 2017-01-31 | 2022-02-08 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US10623308B2 (en) * | 2017-02-17 | 2020-04-14 | Dell Products L.P. | Flow routing system |
US10686735B1 (en) | 2017-04-23 | 2020-06-16 | Barefoot Networks, Inc. | Packet reconstruction at deparser |
US10511523B1 (en) * | 2017-05-15 | 2019-12-17 | Barefoot Networks, Inc. | Network forwarding element with data plane packet snapshotting capabilities |
US10523539B2 (en) | 2017-06-22 | 2019-12-31 | Nicira, Inc. | Method and system of resiliency in cloud-delivered SD-WAN |
US10505861B1 (en) | 2017-07-23 | 2019-12-10 | Barefoot Networks, Inc. | Bus for providing traffic management statistics to processing pipeline |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US10536379B2 (en) * | 2017-09-28 | 2020-01-14 | Argela Yazilim Ve Bilisim Teknolojileri San Ve Tic. A.S. | System and method for control traffic reduction between SDN controller and switch |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
US10999100B2 (en) | 2017-10-02 | 2021-05-04 | Vmware, Inc. | Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider |
US11855805B2 (en) | 2017-10-02 | 2023-12-26 | Vmware, Inc. | Deploying firewall for virtual network defined over public cloud infrastructure |
US11223514B2 (en) | 2017-11-09 | 2022-01-11 | Nicira, Inc. | Method and system of a dynamic high-availability mode based on current wide area network connectivity |
US11212238B2 (en) | 2019-08-27 | 2021-12-28 | Vmware, Inc. | Providing recommendations for implementing virtual networks |
US11611507B2 (en) | 2019-10-28 | 2023-03-21 | Vmware, Inc. | Managing forwarding elements at edge nodes connected to a virtual network |
US11394640B2 (en) | 2019-12-12 | 2022-07-19 | Vmware, Inc. | Collecting and analyzing data regarding flows associated with DPI parameters |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US11606712B2 (en) | 2020-01-24 | 2023-03-14 | Vmware, Inc. | Dynamically assigning service classes for a QOS aware network link |
US11477127B2 (en) | 2020-07-02 | 2022-10-18 | Vmware, Inc. | Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN |
US11709710B2 (en) | 2020-07-30 | 2023-07-25 | Vmware, Inc. | Memory allocator for I/O operations |
US11575591B2 (en) * | 2020-11-17 | 2023-02-07 | Vmware, Inc. | Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN |
US11575600B2 (en) | 2020-11-24 | 2023-02-07 | Vmware, Inc. | Tunnel-less SD-WAN |
US11601356B2 (en) | 2020-12-29 | 2023-03-07 | Vmware, Inc. | Emulating packet flows to assess network links for SD-WAN |
US11792127B2 (en) | 2021-01-18 | 2023-10-17 | Vmware, Inc. | Network-aware load balancing |
US11463560B2 (en) | 2021-01-20 | 2022-10-04 | Jump Algorithms, Llc | Network interface architecture having a directly modifiable pre-stage packet transmission buffer |
US11509571B1 (en) | 2021-05-03 | 2022-11-22 | Vmware, Inc. | Cost-based routing mesh for facilitating routing through an SD-WAN |
US11729065B2 (en) | 2021-05-06 | 2023-08-15 | Vmware, Inc. | Methods for application defined virtual network service among multiple transport in SD-WAN |
US11489720B1 (en) | 2021-06-18 | 2022-11-01 | Vmware, Inc. | Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics |
US11924106B2 (en) * | 2021-08-24 | 2024-03-05 | Hewlett Packard Enterprise Development Lp | Method and system for granular dynamic quota-based congestion management |
US11943146B2 (en) | 2021-10-01 | 2024-03-26 | VMware LLC | Traffic prioritization in SD-WAN |
US11909815B2 (en) | 2022-06-06 | 2024-02-20 | VMware LLC | Routing based on geolocation costs |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612562A (zh) * | 2003-10-28 | 2005-05-04 | 武汉烽火网络有限责任公司 | 用策略流实现不同因特网协议数据包转发的方法和设备 |
US20140098669A1 (en) * | 2012-10-08 | 2014-04-10 | Vipin Garg | Method and apparatus for accelerating forwarding in software-defined networks |
CN103763367A (zh) * | 2014-01-17 | 2014-04-30 | 浪潮(北京)电子信息产业有限公司 | 一种云计算数据中心分布式虚拟网络设计方法及系统 |
CN103761060A (zh) * | 2014-01-27 | 2014-04-30 | 华为技术有限公司 | 一种数据处理方法及服务器 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110070555A1 (en) * | 2009-09-21 | 2011-03-24 | Garrison Dental Solutions | Matrix band for dental applications |
WO2011132568A1 (ja) * | 2010-04-19 | 2011-10-27 | 日本電気株式会社 | スイッチ、及びフローテーブル制御方法 |
US8619546B2 (en) * | 2010-08-17 | 2013-12-31 | Alcatel Lucent | Method and apparatus for coping with link failures in central control plane architectures |
US8804747B2 (en) * | 2010-09-23 | 2014-08-12 | Cisco Technology, Inc. | Network interface controller for virtual and distributed services |
US9001827B2 (en) * | 2010-12-17 | 2015-04-07 | Big Switch Networks, Inc. | Methods for configuring network switches |
KR101434375B1 (ko) * | 2011-02-17 | 2014-08-27 | 닛본 덴끼 가부시끼가이샤 | 플로우 통신 시스템 |
WO2012133060A1 (ja) * | 2011-03-29 | 2012-10-04 | 日本電気株式会社 | ネットワークシステム、及びvlanタグ情報取得方法 |
RU2587677C2 (ru) * | 2011-10-05 | 2016-06-20 | Нек Корпорейшн | Система снижения нагрузки и способ снижения нагрузки |
US8711860B2 (en) * | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
US8521905B2 (en) * | 2011-12-22 | 2013-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | System for flexible and extensible flow processing in software-defined networks |
US9332479B2 (en) * | 2012-01-04 | 2016-05-03 | Ofinno Technologies, Llc | Network site for wireless communications |
US8705536B2 (en) * | 2012-03-05 | 2014-04-22 | Telefonaktiebolaget L M Ericsson (Publ) | Methods of operating forwarding elements including shadow tables and related forwarding elements |
CN104205751A (zh) * | 2012-04-03 | 2014-12-10 | 日本电气株式会社 | 网络系统、控制器和分组认证方法 |
CN103220225B (zh) * | 2012-05-21 | 2015-07-08 | 华为技术有限公司 | 报文处理方法及设备、系统 |
CN103067199B (zh) * | 2012-12-19 | 2015-11-25 | 华为技术有限公司 | 深度报文检测结果扩散方法及装置 |
RU2628476C1 (ru) * | 2013-07-19 | 2017-08-17 | Хуавэй Текнолоджиз Ко., Лтд. | Коммутирующее устройство, контроллер, способ конфигурирования коммутирующего устройства и способ и система для обработки пакета |
KR20150053620A (ko) * | 2013-11-08 | 2015-05-18 | 한국전자통신연구원 | 패킷 전송 장치 및 방법 |
US9548924B2 (en) * | 2013-12-09 | 2017-01-17 | Nicira, Inc. | Detecting an elephant flow based on the size of a packet |
CN104702502B (zh) * | 2013-12-09 | 2019-11-26 | 中兴通讯股份有限公司 | 网络路径计算方法及装置 |
US9569368B2 (en) * | 2013-12-13 | 2017-02-14 | Nicira, Inc. | Installing and managing flows in a flow table cache |
US9996467B2 (en) * | 2013-12-13 | 2018-06-12 | Nicira, Inc. | Dynamically adjusting the number of flows allowed in a flow table cache |
WO2015109486A1 (zh) * | 2014-01-23 | 2015-07-30 | 华为技术有限公司 | 报文的隧道处理方法、交换设备及控制设备 |
US9237129B2 (en) * | 2014-05-13 | 2016-01-12 | Dell Software Inc. | Method to enable deep packet inspection (DPI) in openflow-based software defined network (SDN) |
-
2014
- 2014-08-11 EP EP14899770.3A patent/EP3166275A4/en not_active Ceased
- 2014-08-11 CN CN201480009721.7A patent/CN105684382A/zh active Pending
- 2014-08-11 WO PCT/CN2014/084084 patent/WO2016023148A1/zh active Application Filing
-
2017
- 2017-02-01 US US15/421,667 patent/US10305783B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612562A (zh) * | 2003-10-28 | 2005-05-04 | 武汉烽火网络有限责任公司 | 用策略流实现不同因特网协议数据包转发的方法和设备 |
US20140098669A1 (en) * | 2012-10-08 | 2014-04-10 | Vipin Garg | Method and apparatus for accelerating forwarding in software-defined networks |
CN103763367A (zh) * | 2014-01-17 | 2014-04-30 | 浪潮(北京)电子信息产业有限公司 | 一种云计算数据中心分布式虚拟网络设计方法及系统 |
CN103761060A (zh) * | 2014-01-27 | 2014-04-30 | 华为技术有限公司 | 一种数据处理方法及服务器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629842A (zh) * | 2022-03-30 | 2022-06-14 | 阿里巴巴(中国)有限公司 | 流表处理方法、电子设备、可读存储介质及产品 |
CN115086450A (zh) * | 2022-06-01 | 2022-09-20 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面架构、流表更新方法及交换机 |
CN115086450B (zh) * | 2022-06-01 | 2023-11-17 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面装置、流表更新方法及交换机 |
Also Published As
Publication number | Publication date |
---|---|
EP3166275A4 (en) | 2017-07-19 |
EP3166275A1 (en) | 2017-05-10 |
WO2016023148A1 (zh) | 2016-02-18 |
US20170142000A1 (en) | 2017-05-18 |
US10305783B2 (en) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105684382A (zh) | 报文的控制方法、交换机及控制器 | |
CN109412964B (zh) | 报文控制方法及网络装置 | |
US9742667B2 (en) | Packet processing method, device and system | |
CN110572293B (zh) | 一种数据报文的检测方法、设备及系统 | |
US9717011B2 (en) | Event management in telecommunications networks | |
CN109450936A (zh) | 一种基于Kafka的异构通信协议的适配方法及装置 | |
CN108111432A (zh) | 报文转发方法及装置 | |
CN113132229A (zh) | 段标识的确定方法和设备 | |
EP3979577B1 (en) | Queue congestion control method, device and storage medium | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
CN109218058B (zh) | Oam信息的获取方法、系统及计算机可读存储介质 | |
CN105743687B (zh) | 节点故障的判断方法及装置 | |
US20240106751A1 (en) | Method and apparatus for processing detnet data packet | |
US20170222953A1 (en) | User packet forwarding control method and processing node | |
CN108718258B (zh) | 一种板间链路的质量检测方法及设备 | |
CN109379764A (zh) | 报文发送方法及装置 | |
EP4329248A1 (en) | Packet forwarding method and apparatus, network device, and storage medium | |
CN115297493A (zh) | 一种SRv6网络切片配置管理方法及系统 | |
CN112469067B (zh) | 一种网络批量业务流量监测方法和系统 | |
US20220094613A1 (en) | Message sampling method, decapsulation method, node, system and storage medium | |
WO2015154393A1 (zh) | 业务节点能力处理方法、装置、业务分类器及业务控制器 | |
CN108337181B (zh) | 一种交换网拥塞管理方法和装置 | |
EP4280561A1 (en) | Information flow identification method, network chip, and network device | |
CN114079640B (zh) | 一种数据处理方法、用户面功能及装置 | |
CN115277504A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |
|
RJ01 | Rejection of invention patent application after publication |