CN103825824A - 一种报文处理方法及装置 - Google Patents
一种报文处理方法及装置 Download PDFInfo
- Publication number
- CN103825824A CN103825824A CN201410076738.6A CN201410076738A CN103825824A CN 103825824 A CN103825824 A CN 103825824A CN 201410076738 A CN201410076738 A CN 201410076738A CN 103825824 A CN103825824 A CN 103825824A
- Authority
- CN
- China
- Prior art keywords
- keyword
- message
- parameter
- stream table
- heading
- 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
Images
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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种报文处理方法和装置,在对报文进行处理前,不需要理解所述报文的数据格式,灵活性和通用性较高,有助于快速部署新业务。所述方法包括:中央处理器CPU获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置。所述CPU根据所述关键字的位置参数,从所述报文中获取所述关键字。所述CPU根据所述关键字和所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项。所述CPU根据所述流表表项处理所述报文。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及一种报文处理方法及装置。
背景技术
现有技术中,转发设备接收到报文后,需要确定报文数据格式,例如确定报文是网际协议(英文:Internet Protocol,简称:IP)数据包或者多协议标签交换(英文:Multiple protocol Label Switching,简称:MPLS)报文,从而根据所述协议对所述报文进行处理。例如,交换机收到以太网帧后,需要根据端口表确定所述以太网帧的协议为媒体访问控制(英文:Media Access Control,简称:MAC)协议。然后,所述交换机根据MAC协议,对所述以太网帧的MAC协议头进行解析,从而获取所述以太网帧的目的MAC协议地址。
发明内容
有鉴于此,本发明实施例提供了一种报文处理方法及装置。对报文进行处理前,不需要理解所述报文的数据格式。上述技术方案的灵活性和通用性较高,有助于快速部署新业务。
本发明实施例提供的技术方案如下。
第一方面,提供了一种报文处理方法,包括:
中央处理器(英文全称为central processing unit,英文缩写为CPU)获取关键字(英文名称为key)的位置参数和流表(英文名称为flow table)的标识,所述key的位置参数用以指示所述key在报文中的位置;
所述CPU根据所述关键字的位置参数,从所述报文中获取所述关键字;
所述CPU根据所述关键字和所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项;以及
所述CPU根据所述流表表项处理所述报文。
在上述第一方面的第一种可能的实现方式中,所述关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值(英文名称为offset),所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值(英文名称为length);或者
所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
第二方面,提供了一种报文处理装置,包括:第一虚拟机;
所述第一虚拟机包括:
第一获取单元,用于获取第一关键字的位置参数和第一流表的标识,所述第一关键字的位置参数用以指示所述第一关键字在报文中的位置;
第二获取单元,用于根据所述第一获取单元获取的所述第一关键字的位置参数,从所述报文中获取所述第一关键字;
第一查找单元,用于根据所述第二获取单元获取的所述第一关键字和所述第一获取单元获取的所述第一流表的标识,在所述第一流表中查找与所述第一关键字匹配的流表表项;以及
第一处理单元,用于根据所述第一查找单元查找的所述第一流表中的所述流表表项处理所述报文以获得第一报文。
在上述第二方面的第一种可能的实现方式中,所述第一关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述第一关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述第一关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的长度值;或者
所述第一参数为所述第一关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的长度值。
结合上述第二方面或第二方面的第一种可能的实现方式,还提供了第二方面的第二种可能的实现方式,包括:第二虚拟机;
所述第一处理单元具体用于执行输出所述第一报文至所述第二虚拟机的操作和输出流表跳转GOTO_TABLE指令至所述第二虚拟机的操作,所述流表跳转指令中包含第二流表的标识;
所述第二虚拟机包括接收单元,用于接收所述第一虚拟机输出的所述第一报文和所述流表跳转指令。
结合上述第二方面的第二种可能的实现方式,还提供了第二方面的第三种可能的实现方式,包括:
第三获取单元,用于获取第二关键字的位置参数和从所述流表跳转指令中获取所述第二流表的标识,所述第二关键字的位置参数用以指示所述第二关键字在所述报文中的位置;
第四获取单元,用于根据所述第三获取单元获取的所述第二关键字的位置参数,从所述接收单元接收的所述第一报文中获取所述第二关键字;
第二查找单元,用于根据所述第四获取单元获取的所述第二关键字和所述第三获取单元获取的所述第二流表的标识,在所述第二流表中查找与所述第二关键字匹配的流表表项;以及
第二处理单元,用于根据所述第二查找单元查找的所述第二流表中的所述流表表项处理所述第一报文。
结合上述第二方面的第三种可能的实现方式,还提供了第二方面的第四种可能的实现方式,所述第二关键字的位置参数包含第三参数和第四参数;
所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的结束位距所述报文的报文头的偏移值;或者
所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值;或者
所述第三参数为所述第二关键字的结束位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值。
第三方面,提供了一种CPU,包括:
第一获取单元,用于获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置;
第二获取单元,用于根据所述第一获取单元获取的所述关键字的位置参数,从所述报文中获取所述关键字;
查找单元,用于根据所述第二获取单元获取的所述关键字和所述第一获取单元获取的所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项;以及
处理单元,用于根据所述查找单元查找的所述流表表项处理所述报文。
在上述第三方面的第一种可能的实现方式中,所述关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值;或者
所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
通过上述方案,CPU可利用关键字的位置参数,从报文获取所述关键字。CPU利用所述关键字查找与流表的标识对应的流表,以确定用以处理所述报文的流表表项。CPU利用所述流表表项处理所述报文。上述技术方案中,CPU无需对报文所采用的格式进行识别。因此,上述技术方案的灵活性和通用性较高,有助于快速部署新业务。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种报文处理方法的流程图。
图2为本发明实施例提供的一种CPU的结构示意图。
图3为本发明实施例提供的一种报文处理装置的结构示意图。
图4为本发明实施例提供的一种报文处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的一种报文处理方法,包括:
S11,CPU获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置。
举例来说,所述CPU可从流表的描述信息中获取所述关键字的位置参数和所述流表的标识。
举例来说,所述流表的标识用以区分不同的流表。所述CPU根据所述流表的标识可访问所述流表。所述流表的标识可以为所述流表的序号,还可以为所述流表的存储位置,或者为其它用以区分流表的信息,在此不再逐一举例说明。
举例来说,所述关键字的位置参数包含第一参数和第二参数。所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值。
可替换的,所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
可替换的,所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
上述技术方案中,所述关键字的起始位可以是所述关键字对应的二进制序列(英文名称为binary sequence)的最高有效位(英文全称为most significant bit,英文缩写为MSB)。所述关键字的结束位可以是所述关键字对应的二进制序列的最低有效位(英文全称为least significant bit,英文缩写为LSB)。
举例来说,所述关键字可以只包括所述报文中的一个字段(英文名称为field),可以包括所述报文中的多个字段。例如,在所述报文是IP报文的场景中,所述关键字可以只包括所述IP报文的IP头中的目的IP地址。例如,在所述报文是传输控制协议(英文全称为Transmission Control Protocol,英文缩写为TCP)报文的场景中,所述关键字可以包括所述TCP报文的TCP头中的源端口和目的端口。所述关键字还可以包括所述TCP报文的IP头中的源IP地址、目的IP地址以及协议(英文名称为protocol)。
可选地,所述关键字还可以包括所述报文之外的信息。例如,所述关键字可以包括寄存器中的信息。
举例来说,所述CPU可以为服务器中的CPU,也可以是个人计算机(英文全称为personal computer,英文缩写为PC)中的CPU。另外,所述CPU可以是网络设备中的CPU。所述网络设备可以是路由器、网络交换机、防火墙、负载均衡器、波分复用设备、分组传送网设备、基站、基站控制器或者数据中心。具体来说,所述CPU可以所述网络设备的控制平面的器件。举例来说,所述CPU可以是单核CPU,也可以是多核CPU。
S12,所述CPU根据所述关键字的位置参数,从所述报文中获取所述关键字。
举例来说,所述关键字可以是所述报文的报文头(英文名称header)中的字段,也可以是所述报文的净荷(英文名称为payload)中的数据段(英文名称为data segment)。所述关键字可以包括所述报文的header中的字段以及所述报文的payload中的数据段。
S13,所述CPU根据所述关键字和所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项。
举例来说,所述CPU可根据所述流表的标识,访问存储器中存储的与所述标识对应的所述流表。例如:在所述流表的标识为所述流表的存储地址时,所述CPU可利用所述流表的标识进行寻址操作,以访问所述流表。在所述流表的标识为序号时,所述CPU可以根据所述序号访问所述流表。具体来说,所述序号可以等于数组指针。所述数组指针指向所述流表的存储空间。所述CPU根据所述数组指针指向的存储空间访问所述流表。
举例来说,所述流表可以是所述CPU能够访问的多个流表中的任意一个流表。
举例来说,所述流表和所述流表的描述信息可以保存于同一存储空间中。可替换地,所述流表和所述流表的描述信息可以保存于不同存储空间中。例如:所述流表和所述流表的描述信息可以存储在一个表中,或者所述流表和所述流表的描述信息可以分别存储在不同的表中。
举例来说,所述CPU可采用掩码匹配算法、最长前缀匹配(英文全称为longest prefix match,英文缩写为LPM)算法或者精确匹配算法,从所述流表中查找与所述关键字匹配的所述流表表项。例如:所述CPU采用精确匹配算法,将所述关键字与所述流表中每一流表表项包含的匹配值进行比较,获取与所述关键字相同的匹配值所在的流表表项。在此不再对采用其它匹配算法进行查找的实例进行说明。
举例来说,所述流表表项可以包含一条指令(英文名称为instruction),也可包含多条指令。举例来说,所述指令可以是开放网络基础(Open NetworkingFoundation,ONF)发布的《开放流交换机规范1.3.0》(英文:OpenFlow SwitchSpecification 1.3.0)中定义的指令或者动作。比如:所述流表表项包含的指令可以是流表跳转(英文名称为GOTO_TABLE)指令、丢弃(英文名称为DROP)指令、输出(英文名称为OUTPUT)指令或者上送指令。所述上送指令为将报文发送至能够与所述CPU所属设备通信的网络设备。与所述CPU所属设备通信的网络设备可以是控制器、服务器或者交换机。
S14,所述CPU根据所述流表表项处理所述报文。
举例来说,所述流表表项包含多条指令时,所述CPU可根据每条指令在所述流表表项中的指令序列中的位置的顺序或每条指令的优先级,执行所述多条指令,以对所述报文进行处理。指令的优先级用以指示对应的指令在所述多条指令中被执行的时间的顺序。例如,优先级高的指令先于优先级低的指令被执行。
举例来说,所述CPU响应于获取的所述流表表项包含OUTPUT指令。所述CPU输出所述报文至另一设备。所述另一设备可以是服务器、交换机、路由器或者PC。
可选地,S11之前,所述方法还可包含:所述CPU接收使能指令。所述使能指令是指示所述CPU处理所述报文的指令。例如:所述使能指令可以是流表跳转指令。所述使能指令也可以是指示所述CPU从一个端口(英文全称为port)接收所述报文的指令。所述使能指令可携带所述端口的标识。
举例来说,所述指示处理所述报文的指令中可携带接收所述报文的端口的端口号,所述CPU从与所述端口号对应的端口接收所述报文,并执行上述S11至S14。
举例来说,所述CPU获取的所述流表表项包含GOTO_TABLE指令时,所述CPU可根据所述GOTO_TABLE指令中携带的另一流表的标识,访问所述另一流表以根据所述另一流表执行报文处理。所述报文处理可以与S11至S14类似。
该实施例的方法中,CPU无需对报文的数据格式进行识别。CPU可以利用关键字的位置参数从报文中获取关键字,并根据流表中与关键字匹配的流表表项处理所述报文。因此,所述CPU不需要理解所述报文的数据格式即可对所述报文进行处理。上述技术方案的灵活性和通用性较高,有助于快速部署新业务。
如图2所示,本发明实施例提供的一种CPU。所述CPU可以为服务器中的CPU,也可以是个人计算机(英文全称为personal computer,英文缩写为PC)中的CPU。另外,所述CPU可以是网络设备中的CPU。所述网络设备可以是路由器、网络交换机、防火墙、负载均衡器、波分复用设备、分组传送网设备、基站、基站控制器或者数据中心。具体来说,所述CPU可以所述网络设备的控制平面的器件。举例来说,所述CPU可以是单核CPU,也可以是多核CPU。参见图2,所述CPU包括:第一获取单元20、第二获取单元21、查找单元22和处理单元23。
第一获取单元20用于获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置。
举例来说,第一获取单元20可从所述流表的描述信息中获取所述关键字的位置参数和所述流表的标识。
举例来说,所述流表的标识用以区分不同的流表。所述第一获取单元20根据所述流表的标识访问所述流表。所述流表的标识可以为所述流表的序号,还可以为所述流表的存储位置,或者为其它的可用以区分流表的信息,在此不再赘述。
举例来说,所述关键字的位置参数包含第一参数和第二参数。所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值。
可替换的,所述第一参数为所述第键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
可替换的,所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
上述技术方案中,所述关键字的起始位可以是所述关键字对应的binarysequence的MSB。所述关键字的结束位可以是所述关键字对应的binary sequence的LSB。
第二获取单元21用于根据所述第一获取单元20获取的所述关键字的位置参数,从所述报文中获取所述关键字。举例来说,所述关键字可以是所述报文的header中的field,也可以是所述报文的payload中的data segment。所述关键字可以包括所述报文的header中的field以及所述报文的payload中的datasegment。
查找单元22用于根据所述第二获取单元21获取的所述关键字和所述第一获取单元20获取的所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项。
举例来说,查找单元22可根据所述流表的标识,访问存储器中保存的与所述标识对应的所述流表。所述流表可以是查找单元22能够访问的多个流表中的任意一个流表。
举例来说,查找单元22可采用掩码匹配算法、LPM算法或者精确匹配算法,从所述流表中查找与所述关键字匹配的流表表项。例如:查找单元22采用精确匹配,将所述关键字与所述流表中每一流表表项包含的匹配值进行比较,获取与所述关键字相同的匹配值所在的流表表项。在此不再对采用其它匹配方法进行查找的实例进行说明。
处理单元23用于根据所述查找单元22查找的所述流表表项处理所述报文。举例来说,所述流表表项包含多条指令时,所述处理单元23可根据每条指令在所述流表表项中的指令序列中的位置的顺序或每条指令的优先级,执行所述多条指令,对所述报文进行处理。指令的优先级用以指示对应的指令在所述多条指令中被执行的时间的顺序。例如,优先级高的指令先于优先级低的指令被执行。
可选地,CPU还包含存储单元,所述存储单元用以保存流表资源,所述流表资源包含所述关键字的位置参数、所述流表的标识和所述流表。
与图2对应的实施例提供的CPU能够用于执行与图1对应的实施例提供的方法。
图2所示的CPU可以是服务器或PC的CPU。
上述技术方案中,CPU无需对报文的数据格式进行识别。CPU可以利用关键字的位置参数从报文中获取关键字,并根据流表中与关键字匹配的流表表项处理所述报文。因此,所述CPU不需要理解所述报文的数据格式即可对所述报文进行处理。上述技术方案的灵活性和通用性较高,有助于快速部署新业务。
图3为本发明实施例提供的一种报文处理装置的结构示意图。所述报文处理装置可以是服务器,也可以是个人计算机。另外,所述报文处理装置可以是网络设备。所述网络设备可以是路由器、网络交换机、防火墙、负载均衡器、波分复用设备、分组传送网设备、基站、基站控制器或者数据中心。参见图3,所述报文处理装置包括:第一虚拟机30和第二虚拟机31。该实施例的第一虚拟机30可用于执行与图1对应的实施例提供的方法。
所述第一虚拟机30包括:第一获取单元301、第二获取单元302、第一查找单元303和第一处理单元304。
第一获取单元301用于获取第一关键字的位置参数和第一流表的标识,所述第一关键字的位置参数用以指示所述第一关键字在报文中的位置。
第二获取单元302用于根据所述第一获取单元301获取的所述第一关键字的位置参数,从所述报文中获取所述第一关键字。
举例来说,所述第一关键字可以是所述报文的header中的field,也可以是所述报文的payload中的data segment。所述第一关键字可以包括所述报文的header中的字段以及所述报文的payload中的数据段。
第一查找单元303用于根据所述第二获取单元302获取的所述第一关键字和所述第一获取单元301获取的所述第一流表的标识,在所述第一流表中查找与所述第一关键字匹配的流表表项。
举例来说,第一查找单元303可根据所述第一流表的标识,访问报文处理装置包含的存储器中存储的与所述第一流表的标识对应的所述第一流表。所述第一流表可以是第一查找单元303能够访问的多个流表中的任意一个流表。
可选地,第一查找单元303可采用掩码匹配算法、LPM算法或精确匹配算法,从第一流表中查找与第一关键字匹配的流表表项。
第一处理单元304用于根据所述第一查找单元303查找的所述第一流表中的所述流表表项处理所述报文,以获得第一报文。举例来说,所述流表表项包含多条指令时,所述第一处理单元304可根据每条指令在所述流表表项中的指令序列中的位置的顺序或每条指令的优先级,执行所述多条指令,对所述报文进行处理。指令的优先级用以指示对应的指令在所述多条指令中被执行的时间的顺序。例如,优先级高的指令先于优先级低的指令被执行。所述第一报文可以与所述报文相同。例如,第一处理单元304对所述报文的处理为对所述报文进行计数操作。所述第一报文可以与所述报文不同。例如,第一处理单元304对所述报文的处理为对所述报文进行添加字段(英文名称为ADD_FIELD)的操作。
可选地,第一处理单元304用于根据所述第一查找单元303查找的所述第一流表中的所述流表表项,执行输出所述第一报文至第二虚拟机31的操作和输出所述GOTO_TABLE指令至第二虚拟机31的操作。所述流表跳转指令中包含第二流表的标识。
所述第二虚拟机31包括接收单元311。所述接收单元311用于接收第一虚拟机30输出的所述第一报文和所述流表跳转指令。举例来说,所述接收单元311用于接收第一处理单元304输出的所述第一报文和所述流表跳转指令。
可选地,第二虚拟机31能够用于实现与图1对应的实施例提供的CPU的类似的功能。所述第二虚拟机31还包括:第三获取单元312、第四获取单元313、第二查找单元314和第二处理单元315。
第三获取单元312用于获取第二关键字的位置参数和从所述流表跳转指令获取所述第二流表的标识,所述第二关键字的位置参数用以指示所述第二关键字在所述报文中的位置。
举例来说,所述第二关键字的位置参数包含第三参数和第四参数。所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的结束位距所述报文的报文头的偏移值。
可替换的,所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值。
可替换的,所述第三参数为所述第二关键字的结束位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值。
上述技术方案中,所述第二关键字的起始位可以是所述第二关键字对应的binary sequence的MSB。所述第二关键字的结束位可以是所述第二关键字对应的binary sequence的LSB。
第四获取单元313用于根据所述第三获取单元312获取的所述第二关键字的位置参数,从所述接收单元311接收的所述第一报文中获取所述第二关键字。举例来说,所述第二关键字可以是所述第一报文的header中的field,也可以是所述第一报文的payload中的data segment。所述第二关键字可包括所述第一报文的header中的field和所述第一报文的payload中的data segment。
第二查找单元314用于根据所述第四获取单元313获取的所述第二关键字和所述第三获取单元312获取的所述第二流表的标识,在所述第二流表中查找与所述第二关键字匹配的流表表项。举例来说,第二查找单元314可根据所述第二流表的标识,访问报文处理装置包含的存储器中存储的所述第二流表的标识对应的所述第二流表。
第二处理单元315用于根据所述第二查找单元314查找的所述第二流表中的所述流表表项处理所述第一报文。举例来说,所述流表表项包含多条指令时,所述第二处理单元315可根据每条指令在所述流表表项中的指令序列中的位置的顺序或每条指令的优先级,执行所述多条指令,以对所述第一报文进行处理。指令的优先级用以指示对应的指令在所述多条指令中被执行的时间的顺序。例如,优先级高的指令先于优先级低的指令被执行。
举例来说,第二虚拟机31和第一虚拟机30可以访问相同的流表资源时,第二虚拟机31可根据来自第一虚拟机30的流表跳转指令携带的第二流表的标识,根据从第二流表中查找的与关键字匹配的流表表项处理所述第一报文。所述相同的流表资源包含第一关键字的位置参数、第一流表的标识、第一流表、第二关键字的位置参数、第二流表的标识和第二流表。
可替换的,第二虚拟机31和第一虚拟机30可以访问不同的流表资源。具体来说,第一虚拟机30可访问的流表资源包含第一关键字的位置参数、第一流表的标识和第一流表。第二虚拟机31可访问的流表资源包含第二关键字的位置参数、第二流表的标识和第二流表。第一虚拟机30执行OUTPUT指令以向第二虚拟机31输出第一报文。第二虚拟机31接收第一虚拟机30发送的所述第一报文后,根据第二关键字的位置参数获取第二关键字,利用从所述第二流表的标识对应的流表中获取的与第二关键字匹配的流表表项,处理所述第一虚拟机30发送的所述第一报文。
可选地,第一虚拟机30和第二虚拟机31可以运行在同一台服务器或PC中。
上述技术方案提供的报文处理装置有助于实现在不同的虚拟机上部署不同的业务。每台虚拟机对报文分别进行处理,方便对不同业务进行管理。例如:第一虚拟机30在对第一报文进行处理的同时,第二虚拟机31可对第二报文进行处理。
该实施例的装置中,第一虚拟机和第二虚拟机无需对报文的数据格式进行识别,每台虚拟机均可利用关键字的位置参数从报文中获取关键字,并根据流表中与关键字匹配的流表表项处理所述报文。因此,每台虚拟机不需要理解报文的数据格式即可对报文进行处理。上述技术方案的灵活性和通用性较高,有助于快速部署新业务。
图4示出了一种报文处理装置。所述报文处理装置可以是服务器,也可以是个人计算机。另外,所述报文处理装置可以是网络设备。所述网络设备可以是路由器、网络交换机、防火墙、负载均衡器、波分复用设备、分组传送网设备、基站、基站控制器或者数据中心。参见图4,报文处理装置包含接口电路401、接口电路402、存储器403和处理器404。所述处理器404包括指令执行电路405、指令存储器406和查找引擎407。该实施例的报文处理装置可以用于服务器或计算机。该实施例的报文处理装置可以用于实现与图2或图3对应的实施例中的报文处理装置。该实施例的报文处理装置能够执行与图1对应的实施例提供的方法。
所述处理器404分别与所述接口电路401、所述接口电路402和所述存储器403耦合,所述指令执行电路405分别与所述指令存储器406和查找引擎407耦合。
所述指令存储器406用于存储计算机指令,所述指令执行电路405通过读取所述计算机指令执行如下操作:
触发所述查找引擎407,以使所述查找引擎407从所述存储器403获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置;
根据所述关键字的位置参数,从所述接口电路401接收的所述报文中获取所述关键字;
触发所述查找引擎407,以使所述查找引擎407根据所述关键字和所述流表的标识,在所述存储器403的所述流表中查找与所述关键字匹配的流表表项。
根据所述流表表项处理所述报文。
举例来说,所述报文是所述报文处理装置通过接口电路401接收到的。
可选地,处理器404可通过接口电路402执行输出所述报文的操作和输出流表跳转指令的操作。
上述通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。当使用软件实现时,可以将实现上述功能的代码存储在计算机可读介质中。计算机可读介质包括计算机存储介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以是随机存取存储器(英文全称为random accessmemory,英文缩写为RAM)、只读存储器(英文全称为read only memory,英文缩写为ROM)、电可擦可编程只读存储器(英文全称为electrically erasableprogrammable read-only memory,英文缩写为EEPROM)、只读光盘(英文全称为compact disc-read only memory,英文缩写为CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。计算机可读介质可以是压缩光碟(英文全称为compact disk,英文缩写为CD)、激光碟、光碟、数字视频光碟(英文全称为digital video disc,英文缩写为DVD)、软盘或者蓝光光碟。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种报文处理方法,其特征在于,所述方法包括:
中央处理器CPU获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置;
所述CPU根据所述关键字的位置参数,从所述报文中获取所述关键字;
所述CPU根据所述关键字和所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项;以及
所述CPU根据所述流表表项处理所述报文。
2.如权利要求1所述的方法,其特征在于,所述关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值;或者
所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
3.一种报文处理装置,其特征在于,所述装置包含第一虚拟机;
所述第一虚拟机包括:
第一获取单元,用于获取第一关键字的位置参数和第一流表的标识,所述第一关键字的位置参数用以指示所述第一关键字在报文中的位置;
第二获取单元,用于根据所述第一获取单元获取的所述第一关键字的位置参数,从所述报文中获取所述第一关键字;
第一查找单元,用于根据所述第二获取单元获取的所述第一关键字和所述第一获取单元获取的所述第一流表的标识,在所述第一流表中查找与所述第一关键字匹配的流表表项;以及
第一处理单元,用于根据所述第一查找单元查找的所述第一流表中的所述流表表项处理所述报文以获得第一报文。
4.如权利要求3所述的装置,其特征在于,所述第一关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述第一关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述第一关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的长度值;或者
所述第一参数为所述第一关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述第一关键字的长度值。
5.如权利要求3或4所述的装置,其特征在于,所述装置还包含第二虚拟机;
所述第一处理单元具体用于执行输出所述第一报文至所述第二虚拟机的操作和输出流表跳转GOTO_TABLE指令至所述第二虚拟机的操作,所述流表跳转指令中包含第二流表的标识;
所述第二虚拟机包括接收单元,用于接收所述第一虚拟机输出的所述第一报文和所述流表跳转指令。
6.如权利要求5所述的装置,其特征在于,所述第二虚拟机还包括:
第三获取单元,用于获取第二关键字的位置参数和从所述流表跳转指令中获取所述第二流表的标识,所述第二关键字的位置参数用以指示所述第二关键字在所述报文中的位置;
第四获取单元,用于根据所述第三获取单元获取的所述第二关键字的位置参数,从所述接收单元接收的所述第一报文中获取所述第二关键字;
第二查找单元,用于根据所述第四获取单元获取的所述第二关键字和所述第三获取单元获取的所述第二流表的标识,在所述第二流表中查找与所述第二关键字匹配的流表表项;以及
第二处理单元,用于根据所述第二查找单元查找的所述第二流表中的所述流表表项处理所述第一报文。
7.如权利要求6所述的装置,其特征在于,所述第二关键字的位置参数包含第三参数和第四参数;
所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的结束位距所述报文的报文头的偏移值;或者
所述第三参数为所述第二关键字的起始位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值;或者
所述第三参数为所述第二关键字的结束位距所述报文的报文头的偏移值,所述第四参数为所述第二关键字的长度值。
8.一种中央处理器,其特征在于,所述中央处理器包括:
第一获取单元,用于获取关键字的位置参数和流表的标识,所述关键字的位置参数用以指示所述关键字在报文中的位置;
第二获取单元,用于根据所述第一获取单元获取的所述关键字的位置参数,从所述报文中获取所述关键字;
查找单元,用于根据所述第二获取单元获取的所述关键字和所述第一获取单元获取的所述流表的标识,在所述流表中查找与所述关键字匹配的流表表项;以及
处理单元,用于根据所述查找单元查找的所述流表表项处理所述报文。
9.如权利要求8所述的中央处理器,其特征在于,所述关键字的位置参数包含第一参数和第二参数;
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的结束位距所述报文的报文头的偏移值;或者
所述第一参数为所述关键字的起始位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值;或者
所述第一参数为所述关键字的结束位距所述报文的报文头的偏移值,所述第二参数为所述关键字的长度值。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410076738.6A CN103825824A (zh) | 2014-03-04 | 2014-03-04 | 一种报文处理方法及装置 |
PCT/CN2015/071634 WO2015131720A1 (zh) | 2014-03-04 | 2015-01-27 | 报文处理方法及装置 |
EP15155522.4A EP2916516A1 (en) | 2014-03-04 | 2015-02-18 | Packet processing method and apparatus |
US14/625,950 US20150256459A1 (en) | 2014-03-04 | 2015-02-19 | Packet processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410076738.6A CN103825824A (zh) | 2014-03-04 | 2014-03-04 | 一种报文处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103825824A true CN103825824A (zh) | 2014-05-28 |
Family
ID=50760663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410076738.6A Pending CN103825824A (zh) | 2014-03-04 | 2014-03-04 | 一种报文处理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150256459A1 (zh) |
EP (1) | EP2916516A1 (zh) |
CN (1) | CN103825824A (zh) |
WO (1) | WO2015131720A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015131720A1 (zh) * | 2014-03-04 | 2015-09-11 | 华为技术有限公司 | 报文处理方法及装置 |
WO2015184979A1 (zh) * | 2014-06-05 | 2015-12-10 | 华为技术有限公司 | 处理报文、发送信息、接收信息的方法及装置 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN114356418A (zh) * | 2022-03-10 | 2022-04-15 | 之江实验室 | 一种智能表项控制器及控制方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600107B (zh) * | 2017-11-07 | 2021-06-01 | 北京交通大学 | 一种可自定义内容字段的流匹配方法 |
CN115037575A (zh) * | 2017-12-26 | 2022-09-09 | 华为技术有限公司 | 报文处理的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133409B1 (en) * | 2001-07-19 | 2006-11-07 | Richard Willardson | Programmable packet filtering in a prioritized chain |
CN101834802A (zh) * | 2010-05-26 | 2010-09-15 | 华为技术有限公司 | 转发数据包的方法及装置 |
CN102447637A (zh) * | 2012-01-09 | 2012-05-09 | 福建星网锐捷网络有限公司 | 报文处理方法、系统和网络设备 |
US20120314584A1 (en) * | 2011-06-13 | 2012-12-13 | Huawei Technologies Co., Ltd. | Method and apparatus for protocol parsing |
CN103560951A (zh) * | 2013-11-13 | 2014-02-05 | 华为技术有限公司 | 报文处理方法及物理转发设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030007489A1 (en) * | 2001-07-09 | 2003-01-09 | Ram Krishnan | Data extraction system for packet analysis |
US7580408B2 (en) * | 2001-11-21 | 2009-08-25 | Alcatel Lucent | Configurable packet processor |
JP2003308206A (ja) * | 2002-04-15 | 2003-10-31 | Fujitsu Ltd | プロセッサ装置 |
US7724740B1 (en) * | 2002-08-27 | 2010-05-25 | 3Com Corporation | Computer system and network interface supporting class of service queues |
WO2012123999A1 (ja) * | 2011-03-15 | 2012-09-20 | 日本電気株式会社 | 移動管理システム、移動管理方法、アクセスgw装置、移動管理制御装置、及びコンピュータ可読媒体 |
CN102291294B (zh) * | 2011-05-12 | 2016-03-30 | 中兴通讯股份有限公司 | 一种实现pos/eth线卡互通的方法及装置 |
US8718064B2 (en) * | 2011-12-22 | 2014-05-06 | Telefonaktiebolaget L M Ericsson (Publ) | Forwarding element for flexible and extensible flow processing software-defined networks |
US8711860B2 (en) * | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
CN103825824A (zh) * | 2014-03-04 | 2014-05-28 | 华为技术有限公司 | 一种报文处理方法及装置 |
-
2014
- 2014-03-04 CN CN201410076738.6A patent/CN103825824A/zh active Pending
-
2015
- 2015-01-27 WO PCT/CN2015/071634 patent/WO2015131720A1/zh active Application Filing
- 2015-02-18 EP EP15155522.4A patent/EP2916516A1/en not_active Withdrawn
- 2015-02-19 US US14/625,950 patent/US20150256459A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133409B1 (en) * | 2001-07-19 | 2006-11-07 | Richard Willardson | Programmable packet filtering in a prioritized chain |
CN101834802A (zh) * | 2010-05-26 | 2010-09-15 | 华为技术有限公司 | 转发数据包的方法及装置 |
US20120314584A1 (en) * | 2011-06-13 | 2012-12-13 | Huawei Technologies Co., Ltd. | Method and apparatus for protocol parsing |
CN102447637A (zh) * | 2012-01-09 | 2012-05-09 | 福建星网锐捷网络有限公司 | 报文处理方法、系统和网络设备 |
CN103560951A (zh) * | 2013-11-13 | 2014-02-05 | 华为技术有限公司 | 报文处理方法及物理转发设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015131720A1 (zh) * | 2014-03-04 | 2015-09-11 | 华为技术有限公司 | 报文处理方法及装置 |
WO2015184979A1 (zh) * | 2014-06-05 | 2015-12-10 | 华为技术有限公司 | 处理报文、发送信息、接收信息的方法及装置 |
CN105450527A (zh) * | 2014-06-05 | 2016-03-30 | 华为技术有限公司 | 处理报文、发送信息、接收信息的方法及装置 |
CN105450527B (zh) * | 2014-06-05 | 2019-02-05 | 华为技术有限公司 | 处理报文、发送信息、接收信息的方法及装置 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN109995645B (zh) * | 2019-03-07 | 2021-03-16 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN114356418A (zh) * | 2022-03-10 | 2022-04-15 | 之江实验室 | 一种智能表项控制器及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2916516A1 (en) | 2015-09-09 |
US20150256459A1 (en) | 2015-09-10 |
WO2015131720A1 (zh) | 2015-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103825824A (zh) | 一种报文处理方法及装置 | |
US10496680B2 (en) | High-performance bloom filter array | |
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US9984144B2 (en) | Efficient lookup of TCAM-like rules in RAM | |
US9906449B2 (en) | System and method for reduced forwarding information storage | |
CN109921995B (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
US9729446B1 (en) | Protocol-independent packet routing | |
CN107580079B (zh) | 一种报文传输方法和装置 | |
CN102291472A (zh) | 一种网络地址查找方法及装置 | |
US20130294450A1 (en) | Optimized trie-based address lookup | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
CN102333039A (zh) | 一种转发报文的方法、生成表项的方法及装置 | |
CN107070719B (zh) | 一种设备管理方法和装置 | |
CN101099347A (zh) | 可掩码内容可寻址存储器 | |
US20160028628A1 (en) | Communication system, control apparatus, address allocation method, and program | |
CN111049947B (zh) | 报文转发方法及装置、电子设备、存储介质 | |
US10097516B2 (en) | Partitioning a filter to facilitate filtration of packets | |
CN110958334A (zh) | 报文处理方法及装置 | |
KR100456671B1 (ko) | 네트워크 라우터의 고속 패킷 전달을 위한 병렬 룩업 엔진및 그 방법 | |
CN111131049B (zh) | 路由表项的处理方法及装置 | |
CN111147385A (zh) | 一种软件定义数据中心网络数据平面转发方法及系统 | |
US9135997B2 (en) | System and method for filtering addresses | |
CN107547382B (zh) | 一种邻居关系发现方法和装置 | |
CN110035010A (zh) | 匹配域的匹配方法及相关装置 | |
US10389626B2 (en) | Transfer device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140528 |
|
WD01 | Invention patent application deemed withdrawn after publication |