CN104518969B - 数据报文处理方法、装置及交换机 - Google Patents
数据报文处理方法、装置及交换机 Download PDFInfo
- Publication number
- CN104518969B CN104518969B CN201410768799.9A CN201410768799A CN104518969B CN 104518969 B CN104518969 B CN 104518969B CN 201410768799 A CN201410768799 A CN 201410768799A CN 104518969 B CN104518969 B CN 104518969B
- Authority
- CN
- China
- Prior art keywords
- flow entry
- data message
- compound
- flow
- entry
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据报文处理方法、装置及交换机。方法包括:接收一数据报文;响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。本申请实施例提供了一种数据报文处理方案,并且所述复合流表项中的多个指令字段使得对所述数据报文的匹配更加有效率、处理更加灵活。
Description
技术领域
本申请实施例涉及网络技术领域,尤其涉及一种数据报文处理方法、装置及交换机。
背景技术
网络领域的专家们于2008年提出了开放流(OpenFlow)技术,并逐渐推广软件定义网络(Software Defined Network,简称SDN)概念。OpenFlow作为SDN的原型实现方式,代表了SDN控制转发分离的架构的技术实现,从严格意义上来讲,OpenFlow是SDN控制平面和数据平面之间多种通信协议之一,但实际上,OpenFlow以其良好的灵活性、规范性已被看作SDN通信协议事实上的标准,类似于TCP/IP协议作为互联网的通信标准。
随着网络应用的越来越复杂,对于OpenFlow也提出了更高的要求,使得OpenFlow流表和操作指令也变得越来越多,越来越复杂。这样导致采用OpenFlow实现架构的资源开销也就越来越大,且数据报文与交换机(Switch)上的流表项进行匹配的时间开销也越来越大。
发明内容
有鉴于此,本申请实施例的一个目的在于提供一种数据报文处理方案。
为实现上述目的,根据本申请实施例的第一方面,提供一种数据报文处理方法,包括:
接收一数据报文;
响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。
为实现上述目的,根据本申请实施例的第二方面,提供一种数据报文处理装置,包括:
第一接收模块,用于接收一数据报文;
处理模块,用于响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。
为实现上述目的,根据本申请实施例的第三方面,提供一种交换机,包括:如上所述的数据报文处理装置。
以上多个技术方案中的至少一个技术方案具有如下有益效果:
本申请实施例通过接收一数据报文,响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,提供了一种数据报文处理方案,并且所述复合流表项中的多个指令字段使得对所述数据报文的匹配更加有效率、处理更加灵活。
附图说明
图1为本申请提供的一种数据报文处理方法实施例的流程示意图;
图2为一种常见的单流表项的结构示意图;
图3A为本申请的一种组播应用的场景示意图;
图3B为图3A场景中OVS上的复合流表项的一种示意图;
图4为本申请提供的一种数据报文处理装置实施例一的结构示意图;
图5A~5D为图4所示实施例的一种实现方式的结构示意图;
图6为本申请提供的一种数据报文处理装置实施例二的结构示意图;
图7为本申请提供的一种交换机实施例的结构示意图。
具体实施方式
下面结合附图和实施例,对本申请的具体实施方式作进一步详细说明。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本申请提供的一种数据报文处理方法实施例的流程示意图。如图1所示,本实施例包括:
110、接收一数据报文。
举例来说,本申请提供的一种数据报文处理装置实施例一或实施例二作为本实施例的执行主体,执行110~120。其中,所述数据报文处理装置可选地以软件和/或硬件的形式设置在一交换机(Switch)中,可选地,所述交换机支持OpenFlow协议,比如,所述交换机为开放虚拟交换机(Open Virtual Switch,简称OVS)。
本实施例中,所述数据报文可以是来自网络侧,或者,终端侧。
120、响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。
本实施例中,所述流表包括:至少一个复合流表项。
本实施例中,所述复合流表项包括:一个匹配域(Match Field)和多个指令字段。其中,所述匹配域可以包括至少一个元素,每个元素可以对应以下至少一种:入端口、元数据、一数据报文的报头字段,其中,所述元数据可选地由所述流表的前一个流表指定,所述报头字段包括但不限于:源媒体介入控制(Media Access Control,简称MAC)地址、目的MAC地址、源IP地址、目的IP地址等;每个指令字段中可以包括至少一个指令。
具体地,所述数据报文与一流表中的一复合流表项匹配是指,所述数据报文与所述复合流表项中的所述匹配域匹配。
本实施例通过接收一数据报文,响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,提供了一种数据报文处理方案,并且所述复合流表项中的多个指令字段使得对所述数据报文的匹配更加有效率、处理更加灵活。
以下通过一些可选的实现方式进一步地描述本实施例的方法。
本实施例中,所述复合流表项可以有多种实现方式。
在一种可选的实现方式中,所述复合流表项由多个单流表项组合而成。
图2为一种常见的单流表项的结构示意图。如图2所示,一个单流表项通常包括以下字段:匹配域(Match Field)、优先级(Priority)、计数器(Counters)、指令(Instructions)、超时定时器(Timeouts)、Cookie。
具体地,多个单流表项可以组合成一复合流表项,或者,一个单流表项作为一个普通流表项。在所述单流表项作为一普通流表项的场景中,所述匹配域用于对数据报文的匹配,可选地包括至少一个元素,每个元素可以对应以下至少一种:入端口、元数据、一数据报文的报头字段,其中,所述元数据可选地由所述流表的前一个流表指定,所述报头字段包括但不限于:源MAC地址、目的MAC地址、源IP地址、目的IP地址等;优先级字段用于表示该普通流表项的匹配次序;计数器字段用于匹配该普通流表项的数据报文的计数;指令字段用于设定对匹配该普通流表项的数据报文的至少一个指令;超时定时器字段用于设定一个匹配该普通流表项的数据流的最长有效时间或最大空闲时间;Cookie字段用于设定由控制器选择的不透明数据值,可被控制器用来过滤流统计数据、流改变和流删除。可以看出,所述普通流表项仅包含一个指令字段。
在此实现方式中,可选地,将所述多个单流表项中一个单流表项的匹配域作为所述复合流表项的匹配域,将所述多个单流表项中一些单流表项的指令字段作为所述复合流表项的指令字段。需要说明的是,组合成一复合流表项的各单流表项中各字段的含义可能与上述普通流表项中各字段的含义有所不同。
在一种可能的场景中,所述流表中同时存在复合流表项和普通流表项,即,所述流表还包括:至少一个普通流表项。可选地,为了在数据报文匹配时区分上述两者,可选地用组合成所述复合流表项的多个单流表项中某个单流表项的某个字段来标识,比如,用所述多个单流表项中的第一个单流表项的匹配域来标识,相应地,可以将除所述第一个单流表项之外的另一个单流表项的匹配域作为所述复合流表项的匹配域。基于此,可选地,所述响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令之前,还包括:
响应于所述流表中所述数据报文待匹配的一第一单流表项的一匹配域为一第一值且所述数据报文与所述第一单流表项的下一单流表项的一匹配域匹配,确定所述数据报文与以所述第一单流表项为起始的一复合流表项匹配。
其中,所述第一值可以是一特殊值,由于普通流表项的匹配域通常为一地址,相应地,所述第一值可以是全0,全1,或者一个永远不会出现的地址,如回环地址。
具体地,将所述第一单流表项的所述匹配域作为所述复合流表项的标识符(Identifier)字段,将所述第一单流表项的下一单流表项的匹配域作为所述复合流表项的匹配域。其中,所述第一单流表项也可称为所述复合流表项的起始单流表项。
进一步地,所述复合流表项到底是由几个单流表项组合而成,也可以通过所述多个单流表项中某个单流表项的某个字段来标识,相应地,该字段也可称为所述复合流表项的长度(Length)字段。另外,还可以从所述多个单流表项的多个指令字段中选取几个作为所述复合流表项的指令字段。基于此,可选地,所述响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,包括:
响应于所述数据报文与所述复合流表项匹配,针对所述数据报文执行所述第一单流表项后一第二值个单流表项的所述第二值个指令字段中的多个指令,所述第二值根据所述复合流表项的一长度域中的一第三值确定。
具体地,将所述第一单流表项后一第二值个单流表项的所述第二值个指令字段均作为所述复合流表项的指令字段,即,在上述一个匹配域、一个长度字段、一个标识符字段之外,所述复合流表项还包括:所述第二值个指令字段。
其中,所述第三值用于指示所述复合流表项的长度。可选地,所述第三值为组合成所述复合流表项的多个单流表项的条数,或者,所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数。相应地,若所述第三值为组合成所述复合流表项的多个单流表项的条数,则所述第二值等于所述第三值减去1,若所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数,则所述第二值等于所述第三值。
举例来说,若所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数,且所述第三值为3,表示所述复合流表项由4个单流表项组合而成,即由所述第一单流表项和所述第一单流表项后的3个单流表项组成,相应地,所述第二值为3。
可选地,所述长度字段可以复用所述第一单流表项中除所述匹配域之外的任一字段。可选地,所述长度字段为所述第一单流表项的一指令字段,即将所述第一单流表项的所述指令字段作为所述复合流表项的长度字段。
除了上述所述数据报文与所述复合流表项匹配的场景,可选地还考虑所述数据报文与所述复合流表项不匹配的场景,本实施例还包括:
响应于所述数据报文与所述复合流表项不匹配,跳转到所述流表中所述下一单流表项后的一第所述第二值个单流表项。
举例来说,所述第二值为3,表示所述复合流表项由4个单流表项组合而成,即由所述第一单流表项和所述第一单流表项后的3个单流表项组成,相应地,若所述数据报文与所述第一单流表项的下一单流表项的一匹配域不匹配,跳转到所述下一单流表项后的第3个单流表项,即跳出了所述复合流表项。
其中,所述下一单流表项后的所述第所述第二值个单流表项可以是一个普通流表项,或者,另一个复合流表项的起始单流表项。具体地,若所述第所述第二值个单流表项是一个普通流表项,则跳转到第所述第二值个单流表项是指将所述数据报文与所述普通流表项进行匹配;若所述第所述第二值个单流表项是另一个复合流表项的起始单流表项,则跳转到第所述第二值个单流表项是指将所述数据报文与所述另一复合流表项进行匹配。
此外,可选地还考虑所述流表更新的场景,本实施例还包括:
接收一流表更新指令,所述流表更新指令包括:一流表标识、一流表项标识、一流表项长度值;
响应于所述流表项长度值标识待更新的一流表项为一复合流表项,根据所述流表标识、所述流表项标识、和所述流表项长度值定位所述复合流表项,并对所述复合流表项进行更新。
其中,对于一复合流表项,所述流表项长度值可以为组合成所述复合流表项的单流表项的条数,或者,考虑到所述复合单流表项的匹配域是组合成所述复合流表项的单流表项中的起始单流表项的下一单流表项的匹配域,所述流表项长度值也可以为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数。
当所述流表项长度值为组合成所述复合流表项的单流表项的条数时,一普通流表项的流表项长度值可以为1;当所述流表项长度值为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数时,一普通流表项的流表项长度值可以为0。
在所述流表项长度值为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数的场景中,响应于所述流表更新指令中的所述流表项长度值不为0,可以确定待更新的一流表项为一复合流表项。
具体地,所述根据所述流表标识、所述流表项标识、和所述流表项长度值定位所述复合流表项包括:根据所述流表标识确定所述复合流表项所在的一流表,根据所述流表项标识确定所述复合流表项的起始单流表项在所述流表中的位置,根据所述流表项标识和所述流表项长度值确定所述复合流表项的末尾单流表项在所述流表中的位置。
其中,所述流表标识可以为流表的编号,所述流表项标识可以是所述起始单流表项在所述流表中的序号。
具体地,所述流表更新指令包括以下任一种:流表项添加指令,流表项删除指令,流表项修改指令,等。需要说明的是,对于流表项添加指令来说,待更新的一流表项不是流表中的已有流表项,而是所述流表项添加指令所携带需要添加到一流表中的一流表项。
在OpenFlow协议中,控制器(controller)负责该控制器所管理的多个交换机上所有流表的更新,可选地,所述控制器上保存所述多个交换机上所有流表中所有复合流表项的信息,可选地包括各复合流表项所在流表的流表标识、各复合流表项的起始单流表项在所在流表中的流表项标识、各复合流表项的流表项长度值。
在一些可能的场景中,所述响应于所述数据报文与一流表中的一复合流表项匹配,包括:
响应于所述数据报文与所述复合流表项匹配,将所述多个指令加入所述数据报文的一操作集合;
针对所述数据报文,执行所述操作集合中的所有指令。
具体地,所述操作集合可以在所述数据报文处理装置一接收到所述数据报文时建立,所述执行所述操作集合中的所有指令可以是在所述数据报文处理装置输出所述数据报文之前执行。
可选地,所述数据报文可能与一个或多个流表中的多个流表项匹配,所述多个流表项包括以下任一种:至少一个复合流表项,至少一个普通流表项;相应地,所述数据报文处理装置在确定所述数据报文与各所述流表项匹配后,都会将所述流表项的至少一个指令字段中的至少一个指令加入所述操作集合。也就是说,所述数据报文处理装置在针对所述数据报文执行所述操作集合中的所有操作时,除了所述复合流表项的所述第二值个指令字段中的多个指令之外,所述操作集合还可以包括其它至少一个指令。
本实施例中,所述多个指令可以有至少一种类型。可选地,所述多个指令包括以下至少一种:
设置所述数据报文的类型;
修改所述数据报文的报头;
将所述数据报文输出到一端口;
丢弃所述数据报文;
跳转到另一流表;
跳转到另一流表项。
其中,所述另一流表项可以是另一复合流表项,或者,一普通流表项。
在Openflow协议中,可选地,所述设置所述数据报文的类型的指令和所述修改所述数据报文的报头的指令为Set-Field指令,所述将所述数据报文输出到一端口的指令为Output指令,所述丢弃所述数据报文的指令为Drop指令,所述跳转到另一流表的指令为Goto-Table ID指令,所述跳转到另一流表项的指令为Jump指令来实现。具体地,Jump指令中可以携带在一个流表中向下移动的单流表项的数目,举例来说,Jump(5)表示跳转到当前单流表项后的第5个单流表项。
图3A为本申请的一种组播应用的场景示意图。如图3A所示,在该组播应用中,终端(Station,简称STA)1、STA2连接到OVS的端口Port 1,STA3、STA4连接到OVS的Port 2,OVS在从网络侧接收到G1组播帧后,将发往STA1、STA2的G1组播帧转为单播发送,对于其它STA则直接发送G1组播帧。
图3B为图3A场景中OVS上的复合流表项的一种示意图。为方便描述,图3B中仅示出各单流表项的匹配域和指令字段,如图3B所示,流表Table 0中包含了一个复合流表项,G1组播帧可以与该复合流表项的Match Field匹配,该复合流表项的Length=2,表示该复合流表项除起始单流表项外还包括2个单流表项。这2个单流表项中的前一条单流表项中的指令字段Instructions(1)包含了如下指令:Set-Field(STA1),用于将组播帧的目的地址修改成STA1的地址;Output(Port 1),用于将修改后的组播帧发送到STA1连接的Port 1上;Jump(1),用于向下偏移一条单流表项。而后一条单流表项中的Instructions(2)包含如下指令项:Set-Field(STA2),用于将组播帧的目的地址修改成STA2的地址;Output(Port 1),用于将修改后的帧发送到STA2连接的Port 1上;Goto-Table(Table 1),用于跳转到Table1。流表Table 1中也包含了一个复合流表项,G1组播帧可以与该复合流表项的Match Field匹配,该复合流表项的Length=1,表示该复合流表项除起始单流表项外还包括1个单流表项,该单流表项中的指令字段Instructions(3)包含了如下指令项:Output(Port 2),用于向Port2直接转发组播帧。
图4为本申请提供的一种数据报文处理装置实施例一的结构示意图。如图4所示,数据报文处理装置(以下简称:装置)400包括:
第一接收模块41,用于接收一数据报文;
处理模块42,用于响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。
本实施例中,数据报文处理装置400可选地以软件和/或硬件的形式设置在一交换机(Switch)中,可选地,所述交换机支持OpenFlow协议,比如,所述交换机为OVS。
本实施例中,所述数据报文可以是来自网络侧,或者,终端侧。
本实施例中,所述流表包括:至少一个复合流表项。
本实施例中,所述复合流表项包括:一个匹配域(Match Field)和多个指令字段。其中,所述匹配域可以包括至少一个元素,每个元素可以对应以下至少一种:入端口、元数据、一数据报文的报头字段,其中,所述元数据可选地由所述流表的前一个流表指定,所述报头字段包括但不限于:源MAC地址、目的MAC地址、源IP地址、目的IP地址等;每个指令字段中可以包括至少一个指令。
具体地,所述数据报文与一流表中的一复合流表项匹配是指,所述数据报文与所述复合流表项中的所述匹配域匹配。
本实施例的数据报文处理装置通过接收模块接收一数据报文,处理模块响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,提供了一种数据报文处理方案,并且所述复合流表项中的多个指令字段使得对所述数据报文的匹配更加有效率、处理更加灵活。
以下通过一些可选的实现方式进一步地描述本实施例的数据报文处理装置。
本实施例中,所述复合流表项可以有多种实现方式。
图2为一种常见的单流表项的结构示意图。如图2所示,一个单流表项通常包括以下字段:匹配域(Match Field)、优先级(Priority)、计数器(Counters)、指令(Instructions)、超时定时器(Timeouts)、Cookie。
具体地,多个单流表项可以组合成一复合流表项,或者,一个单流表项作为一个普通流表项。在所述单流表项作为一普通流表项的场景中,所述匹配域用于对数据报文的匹配,可选地包括至少一个元素,每个元素可以对应以下至少一种:入端口、元数据、一数据报文的报头字段,其中,所述元数据可选地由所述流表的前一个流表指定,所述报头字段包括但不限于:源Media Access Control,简称MAC地址、目的MAC地址、源IP地址、目的IP地址等;优先级字段用于表示该普通流表项的匹配次序;计数器字段用于匹配该普通流表项的数据报文的计数;指令字段用于设定对匹配该普通流表项的数据报文的至少一个指令;超时定时器字段用于设定一个匹配该普通流表项的数据流的最长有效时间或最大空闲时间;Cookie字段用于设定由控制器选择的不透明数据值,可被控制器用来过滤流统计数据、流改变和流删除。可以看出,所述普通流表项仅包含一个指令字段。
在此实现方式中,可选地,将所述多个单流表项中一个单流表项的匹配域作为所述复合流表项的匹配域,将所述多个单流表项中一些单流表项的指令字段作为所述复合流表项的指令字段。需要说明的是,组合成一复合流表项的各单流表项中各字段的含义可能与上述普通流表项中各字段的含义有所不同。
在一种可能的场景中,所述流表中同时存在复合流表项和普通流表项,即,所述流表还包括:至少一个普通流表项。可选地,为了在数据报文匹配时区分上述两者,可选地用组合成所述复合流表项的多个单流表项中某个单流表项的某个字段来标识,比如,用所述多个单流表项中的第一个单流表项的匹配域来标识,相应地,可以将除所述第一个单流表项之外的另一个单流表项的匹配域作为所述复合流表项的匹配域。基于此,可选地,如图5A所示,装置400还包括:
确定模块43,用于响应于所述流表中所述数据报文待匹配的一第一单流表项的一匹配域为一第一值且所述数据报文与所述第一单流表项的下一单流表项的一匹配域匹配,确定所述数据报文与以所述第一单流表项为起始的一复合流表项匹配。
其中,所述第一值可以是一特殊值,由于普通流表项的匹配域通常为一地址,相应地,所述第一值可以是全0,全1,或者一个永远不会出现的地址,如回环地址。
具体地,将所述第一单流表项的所述匹配域作为所述复合流表项的标识符(Identifier)字段,将所述第一单流表项的下一单流表项的匹配域作为所述复合流表项的匹配域。其中,所述第一单流表项也可称为所述复合流表项的起始单流表项。
进一步地,所述复合流表项到底是由几个单流表项组合而成,也可以通过所述多个单流表项中某个单流表项的某个字段来标识,相应地,该字段也可称为所述复合流表项的长度(Length)字段。另外,还可以从所述多个单流表项的多个指令字段中选取几个作为所述复合流表项的指令字段。基于此,可选地,处理模块42具体用于:响应于所述数据报文与所述复合流表项匹配,针对所述数据报文执行所述第一单流表项后一第二值个单流表项的所述第二值个指令字段中的多个指令,所述第二值根据所述复合流表项的一长度字段中的一第三值确定。
具体地,将所述第一单流表项后一第二值个单流表项的所述第二值个指令字段均作为所述复合流表项的指令字段,即,在上述一个匹配域、一个长度字段、一个标识符字段之外,所述复合流表项还包括:所述第二值个指令字段。
其中,所述第三值用于指示所述复合流表项的长度。可选地,所述第三值为组合成所述复合流表项的多个单流表项的条数,或者,所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数。相应地,若所述第三值为组合成所述复合流表项的多个单流表项的条数,则所述第二值等于所述第三值减去1,若所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数,则所述第二值等于所述第三值。
举例来说,若所述第三值为组合成所述复合流表项的多个单流表项中除去所述第一单流表项的单流表项的条数,且所述第三值为3,表示所述复合流表项由4个单流表项组合而成,即由所述第一单流表项和所述第一单流表项后的3个单流表项组成,相应地,所述第二值为3。
可选地,所述长度字段可以复用所述第一单流表项中除所述匹配域之外的任一字段。可选地,所述长度字段为所述第一单流表项的一指令字段,即将所述第一单流表项的所述指令字段作为所述复合流表项的长度字段。
除了上述所述数据报文与所述复合流表项匹配的场景,可选地还考虑所述数据报文与所述复合流表项不匹配的场景,如图5B所示,装置400还包括:
跳转模块44,用于响应于所述数据报文与所述复合流表项不匹配,跳转到所述流表中所述下一单流表项后的一第所述第二值个单流表项。
举例来说,所述第二值为3,表示所述复合流表项由4个单流表项组合而成,即由所述第一单流表项和所述第一单流表项后的3个单流表项组成,相应地,若所述数据报文与所述第一单流表项的下一单流表项的一匹配域不匹配,跳转模块44跳转到所述下一单流表项后的第3个单流表项,即跳出了所述复合流表项。
其中,所述下一单流表项后的所述第所述第二值个单流表项可以是一个普通流表项,或者,另一个复合流表项的起始单流表项。具体地,若所述第所述第二值个单流表项是一个普通流表项,则跳转模块44跳转到第所述第二值个单流表项是指跳转模块44将所述数据报文与所述普通流表项进行匹配;若所述第所述第二值个单流表项是另一个复合流表项的起始单流表项,则跳转模块44跳转到第所述第二值个单流表项是指跳转模块44将所述数据报文与所述另一复合流表项进行匹配。
此外,可选地还考虑所述流表更新的场景,如图5C所示,装置400还包括:
第二接收模块45,用于接收一流表更新指令,所述流表更新指令包括:一流表标识、一流表项标识、一流表项长度值;
更新模块46,用于响应于所述流表项长度值标识待更新的一流表项为一复合流表项,根据所述流表标识、所述流表项标识、和所述流表项长度值定位所述复合流表项,并对所述复合流表项进行更新。
其中,对于一复合流表项,所述流表项长度值可以为组合成所述复合流表项的单流表项的条数,或者,考虑到所述复合单流表项的匹配域是组合成所述复合流表项的单流表项中的起始单流表项的下一单流表项的匹配域,所述流表项长度值也可以为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数。
当所述流表项长度值为组合成所述复合流表项的单流表项的条数时,一普通流表项的流表项长度值可以为1;当所述流表项长度值为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数时,一普通流表项的流表项长度值可以为0。
在所述流表项长度值为组合成所述复合流表项的单流表项中除去所述起始单流表项的单流表项的条数的场景中,更新模块46响应于所述流表更新指令中的所述流表项长度值不为0,可以确定待更新的一流表项为一复合流表项。
具体地,更新模块46具体用于:更新模块46响应于所述流表项长度值标识待更新的一流表项为一复合流表项,根据所述流表标识确定所述复合流表项所在的一流表,根据所述流表项标识确定所述复合流表项的起始单流表项在所述流表中的位置,根据所述流表项标识和所述流表项长度值确定所述复合流表项的末尾单流表项在所述流表中的位置。
其中,所述流表标识可以为流表的编号,所述流表项标识可以是所述起始单流表项在所述流表中的序号。
具体地,所述流表更新指令包括以下任一种:流表项添加指令,流表项删除指令,流表项修改指令,等。需要说明的是,对于流表项添加指令来说,待更新的一流表项不是流表中的已有流表项,而是所述流表项添加指令所携带需要添加到一流表中的一流表项。
在OpenFlow协议中,控制器(controller)负责该控制器所管理的多个交换机上所有流表的更新,可选地,所述控制器上保存所述多个交换机上所有流表中所有复合流表项的信息,可选地包括各复合流表项所在流表的流表标识、各复合流表项的起始单流表项在所在流表中的流表项标识、各复合流表项的流表项长度值。
在一些可能的场景中,如图5D所示,处理模块42包括:
第一单元421,用于响应于所述数据报文与所述复合流表项匹配,将所述多个指令加入所述数据报文的一操作集合;
第二单元422,用于针对所述数据报文,执行所述操作集合中的所有指令。
可选地,所述操作集合在数据报文第一接收模块41接收到所述数据报文时建立,第二单元422执行所述操作集合中的所有指令可以是在数据报文处理装置400输出所述数据报文之前执行。
其中,所述多个指令可选地为所述第二值个指令字段中的多个指令。
可选地,所述数据报文与一个或多个流表中的多个流表项匹配,所述多个流表项包括以下任一种:至少一个复合流表项,至少一个普通流表项;相应地,第一单元421在确定所述数据报文与各所述流表项匹配后,都会将所述流表项的至少一个指令字段中的至少一个指令加入所述操作集合。也就是说,第二单元422在针对所述数据报文执行所述操作集合中的所有操作时,除了所述复合流表项的所述第二值个指令字段中的多个指令之外,所述操作集合还可以包括其它至少一个指令。
本实施例中,所述多个指令可以有至少一种类型。可选地,所述多个指令包括以下至少一种:
设置所述数据报文的类型;
修改所述数据报文的报头;
将所述数据报文输出到一端口;
丢弃所述数据报文;
跳转到另一流表;
跳转到另一流表项。
其中,所述另一流表项可以是另一复合流表项,或者,一普通流表项。
在Openflow协议中,可选地,所述设置所述数据报文的类型的指令和所述修改所述数据报文的报头的指令为Set-Field指令,所述将所述数据报文输出到一端口的指令为Output指令,所述丢弃所述数据报文的指令为Drop指令,所述跳转到另一流表的指令为Goto-Table ID指令,所述跳转到另一流表项的指令为Jump指令来实现。具体地,Jump指令中可以携带在一个流表中向下移动的单流表项的数目,举例来说,Jump(5)表示跳转到当前单流表项后的第5个单流表项。
图6为本申请提供的一种数据报文处理装置实施例二的结构示意图。如图6所示,数据报文处理装置600包括:
处理器(processor)61、通信接口(Communications Interface)62、存储器(memory)63、以及通信总线64。其中:
处理器61、通信接口62、以及存储器63通过通信总线64完成相互间的通信。
通信接口62,用于与控制器等外部设备的通信。
处理器61,用于执行程序632,具体可以执行上述数据报文处理方法实施例中的相关步骤。
具体地,程序632可以包括程序代码,所述程序代码包括计算机操作指令。
处理器61可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施数据报文处理方法实施例的一个或多个集成电路。
存储器63,用于存放程序632。存储器63可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序632具体可以用于使得数据报文处理方法600执行以下步骤:
接收一数据报文;
响应于所述数据报文与一流表中的一复合流表项匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令。
程序632中各步骤的具体实现可以参见上述数据报文处理方法实施例中的相应步骤和单元中对应的描述,在此不赘述。
图7为本申请提供的一种交换机实施例的结构示意图。如图7所示,交换机700包括:一数据报文处理装置71,其中,数据报文处理装置71为如本申请提供的一种数据报文处理装置实施例一或实施例二所述的数据报文处理装置。
可选地,交换机700支持OpenFlow协议,比如,交换机700为OVS。
本实施例的有益效果可参照本申请提供的一种数据报文处理装置实施例一或实施例二的有益效果。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对原有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (18)
1.一种数据报文处理方法,其特征在于,所述方法包括:
接收一数据报文;
响应于所述数据报文与一流表中的一复合流表项的一匹配域匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令;所述复合流表项包括:一个匹配域和多个指令字段,所述数据报文与一流表中的一复合流表项匹配是指,所述数据报文与所述复合流表项中的所述匹配域匹配。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述数据报文与一流表中的一复合流表项的一匹配域匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令之前,还包括:
响应于所述流表中所述数据报文待匹配的一第一单流表项的一匹配域为一第一值且所述数据报文与所述第一单流表项的下一单流表项的一匹配域匹配,确定所述数据报文与以所述第一单流表项为起始的一复合流表项的一匹配域匹配。
3.根据权利要求2所述的方法,其特征在于,所述响应于所述数据报文与一流表中的一复合流表项的一匹配域匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,包括:
响应于所述数据报文与所述复合流表项的一匹配域匹配,针对所述数据报文执行所述第一单流表项后一第二值个单流表项的所述第二值个指令字段中的多个指令,所述第二值根据所述复合流表项的一长度字段中的一第三值确定。
4.根据权利要求3所述的方法,其特征在于,所述长度字段为所述第一单流表项的一指令字段。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
响应于所述数据报文与所述复合流表项的所述匹配域不匹配,跳转到所述流表中所述下一单流表项后的一第所述第二值个单流表项。
6.根据权利要求3或4中任一所述的方法,其特征在于,所述方法还包括:
接收一流表更新指令,所述流表更新指令包括:一流表标识、一流表项标识、一流表项长度值;
响应于所述流表项长度值标识待更新的一流表项为一复合流表项,根据所述流表标识、所述流表项标识、和所述流表项长度值定位所述复合流表项,并对所述复合流表项进行更新。
7.根据权利要求1~4中任一所述的方法,其特征在于,所述响应于所述数据报文与一流表中的一复合流表项的一匹配域匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令,包括:
响应于所述数据报文与所述复合流表项的一匹配域匹配,将所述多个指令加入所述数据报文的一操作集合;
针对所述数据报文,执行所述操作集合中的所有指令。
8.根据权利要求1~4中任一所述的方法,其特征在于,所述多个指令包括以下至少一种:
设置所述数据报文的类型;
修改所述数据报文的报头;
将所述数据报文输出到一端口;
丢弃所述数据报文;
跳转到另一流表;
跳转到另一流表项。
9.一种数据报文处理装置,其特征在于,所述装置包括:
第一接收模块,用于接收一数据报文;
处理模块,用于响应于所述数据报文与一流表中的一复合流表项的一匹配域匹配,针对所述数据报文执行所述复合流表项的多个指令字段中的多个指令;所述复合流表项包括:一个匹配域和多个指令字段,所述数据报文与一流表中的一复合流表项匹配是指,所述数据报文与所述复合流表项中的所述匹配域匹配。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
确定模块,用于响应于所述流表中所述数据报文待匹配的一第一单流表项的一匹配域为一第一值且所述数据报文与所述第一单流表项的下一单流表项的一匹配域匹配,确定所述数据报文与以所述第一单流表项为起始的一复合流表项的一匹配域匹配。
11.根据权利要求10所述的装置,其特征在于,所述处理模块具体用于:响应于所述数据报文与所述复合流表项的一匹配域匹配,针对所述数据报文执行所述第一单流表项后一第二值个单流表项的所述第二值个指令字段中的多个指令,所述第二值根据所述复合流表项的一长度字段中的一第三值确定。
12.根据权利要求11所述的装置,其特征在于,所述长度字段为所述第一单流表项的一指令字段。
13.根据权利要求11或12所述的装置,其特征在于,所述装置还包括:
跳转模块,用于响应于所述数据报文与所述复合流表项的所述匹配域不匹配,跳转到所述流表中所述下一单流表项后的一第所述第二值个单流表项。
14.根据权利要求11或12中任一所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收一流表更新指令,所述流表更新指令包括:一流表标识、一流表项标识、一流表项长度值;
更新模块,用于响应于所述流表项长度值标识待更新的一流表项为一复合流表项,根据所述流表标识、所述流表项标识、和所述流表项长度值定位所述复合流表项,并对所述复合流表项进行更新。
15.根据权利要求9~12中任一所述的装置,其特征在于,所述处理模块包括:
第一单元,用于响应于所述数据报文与所述复合流表项匹配,将所述多个指令加入所述数据报文的一操作集合;
第二单元,用于针对所述数据报文,执行所述操作集合中的所有指令。
16.根据权利要求9~12中任一所述的装置,其特征在于,所述多个指令包括以下至少一种:
设置所述数据报文的类型;
修改所述数据报文的报头;
将所述数据报文输出到一端口;
丢弃所述数据报文;
跳转到另一流表;
跳转到另一流表项。
17.一种交换机,其特征在于,包括:如权利要求9~16中任一所述的数据报文处理装置。
18.根据权利要求17所述的交换机,其特征在于,所述交换机为开放虚拟交换机OVS。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410768799.9A CN104518969B (zh) | 2014-12-12 | 2014-12-12 | 数据报文处理方法、装置及交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410768799.9A CN104518969B (zh) | 2014-12-12 | 2014-12-12 | 数据报文处理方法、装置及交换机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104518969A CN104518969A (zh) | 2015-04-15 |
CN104518969B true CN104518969B (zh) | 2018-12-25 |
Family
ID=52793717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410768799.9A Active CN104518969B (zh) | 2014-12-12 | 2014-12-12 | 数据报文处理方法、装置及交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104518969B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176272A1 (zh) * | 2017-03-29 | 2018-10-04 | 华为技术有限公司 | 处理报文的方法和装置 |
CN108234455B (zh) * | 2017-12-14 | 2021-03-19 | 北京东土科技股份有限公司 | 一种报文转发控制方法、装置、计算机装置及存储介质 |
CN110324245B (zh) * | 2018-03-31 | 2021-03-23 | 华为技术有限公司 | 一种基于集成流表转发报文的方法及装置 |
CN110896391B (zh) * | 2018-09-13 | 2023-01-31 | 北京京东尚科信息技术有限公司 | 一种报文处理方法和装置 |
CN110035010A (zh) * | 2019-04-24 | 2019-07-19 | 广州西麦科技股份有限公司 | 匹配域的匹配方法及相关装置 |
CN114615170B (zh) * | 2022-01-20 | 2023-08-04 | 北京华耀科技有限公司 | 报文处理方法、设备及计算机存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104079492B (zh) * | 2013-03-28 | 2017-10-10 | 华为技术有限公司 | 一种OpenFlow网络中流表配置的方法、装置和系统 |
CN103259718B (zh) * | 2013-04-18 | 2016-12-28 | 华为技术有限公司 | 一种流表转换方法和装置 |
TWI520530B (zh) * | 2013-05-17 | 2016-02-01 | 智邦科技股份有限公司 | 封包交換裝置及方法 |
CN103354522B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 一种多级流表查找方法和装置 |
CN103428094B (zh) * | 2013-08-12 | 2016-08-17 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104168222B (zh) * | 2014-07-15 | 2018-08-03 | 新华三技术有限公司 | 一种报文传输方法和设备 |
-
2014
- 2014-12-12 CN CN201410768799.9A patent/CN104518969B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104518969A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104518969B (zh) | 数据报文处理方法、装置及交换机 | |
US10742682B2 (en) | Attack data packet processing method, apparatus, and system | |
US9306819B2 (en) | Controller driven OAM for split architecture network | |
CN105634986B (zh) | 一种交换机实现方法与系统 | |
CN106936715B (zh) | 虚拟机报文控制方法及装置 | |
CN103477593B (zh) | 网络系统、交换机和连接终端检测方法 | |
CN104079492B (zh) | 一种OpenFlow网络中流表配置的方法、装置和系统 | |
CN105812340B (zh) | 一种虚拟网络访问外网的方法和装置 | |
US20130177016A1 (en) | Communication system, control apparatus, packet handling operation setting method, and program | |
US9008080B1 (en) | Systems and methods for controlling switches to monitor network traffic | |
CN104158745B (zh) | 一种实现数据包转发的方法及系统 | |
CN104660574B (zh) | 数据中心的配置方法、控制实体和转发实体 | |
CN104811384B (zh) | 一种多级流表优先级调整方法 | |
JP5900652B2 (ja) | スイッチ装置、vlan設定管理方法及びプログラム | |
TWI551087B (zh) | 封包處理裝置 | |
EP3300301A1 (en) | Service fault location method and device | |
CN105359472A (zh) | 一种用于OpenFlow网络的数据处理方法和装置 | |
CN107528715A (zh) | 故障类型的确定方法和装置 | |
CN103078754A (zh) | 一种基于计数型bloom filter的网络数据流统计方法 | |
CN104518970B (zh) | 流表更新方法、装置及控制器 | |
CN114221781A (zh) | 流量过滤方法与系统、电子设备及存储介质 | |
CN106330783A (zh) | 一种OpenFlow交换机能力上报的方法及装置 | |
CN104737503B (zh) | 通信节点、通信系统、控制装置以及包转发方法 | |
KR101812856B1 (ko) | 스위치 장치, vlan 설정 관리 방법, 및 컴퓨터 판독가능 저장매체 | |
CN103312908B (zh) | 一种用于Voice VLAN的数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |