CN103873464B - 报文处理的方法及转发设备 - Google Patents

报文处理的方法及转发设备 Download PDF

Info

Publication number
CN103873464B
CN103873464B CN201410069736.4A CN201410069736A CN103873464B CN 103873464 B CN103873464 B CN 103873464B CN 201410069736 A CN201410069736 A CN 201410069736A CN 103873464 B CN103873464 B CN 103873464B
Authority
CN
China
Prior art keywords
protocol
message
head
agreement
layer protocol
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
Application number
CN201410069736.4A
Other languages
English (en)
Other versions
CN103873464A (zh
Inventor
王小忠
龚钧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Luo Sanjie
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410069736.4A priority Critical patent/CN103873464B/zh
Publication of CN103873464A publication Critical patent/CN103873464A/zh
Application granted granted Critical
Publication of CN103873464B publication Critical patent/CN103873464B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种报文处理的方法,包括:根据报文中连续的N层协议头中的第i层协议头,查找对应的流表,确定与其中的第一字段对应的指令并执行该指令以生成协议位置表。本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头的起始位置,进而可将报文处理窗口的起始位置移动至该起始位置,对该协议头进行引用或编辑处理。

Description

报文处理的方法及转发设备
技术领域
本发明实施例涉及通信领域,并且更具体地,涉及一种报文处理的方法及转发设备。
背景技术
软件定义网络(Software Defined Network,SDN)是新一代网络架构,其核心思想是将控制面和转发设备传输的数据面解耦。SDN中可以通过在控制器(Controller)上编程来实时控制转发,实现动态调整。SDN能够更好地满足网络业务的应用需求,比如灵活创建虚拟子网、基于流量统计的实时负载均衡、流量工程(Traffic Engineering,TE)等。
开放流(OpenFlow)技术的基本思想是转发设备维护一个(Flow Table)并且只按照流表中的指令进行转发处理,流表的生成、维护、下发完全由控制器来实现。流表包括匹配域(Match Fields)、计数器(Counters)和指令集(Instructions)。匹配域是报文匹配的输入关键字,可以是端口号、虚拟局域网(Virtual Local Area Network,VLAN)、L2/L3/L4信息等,每个匹配字段都可以是通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的网际协议(Internet Protocol,IP)地址进行路由,那么流表的匹配域就可以只有目的IP地址字段。指令集用于对报文进行处理,最基本的处理包括修改报文、封装和解封装、转发、丢弃等。
但是,OpenFlow技术不能灵活支持新的协议。对新的协议,必须增加新的指令,需同时在控制器和转发设备中分别开发代码,才能实现对增加的新的指令的支持。
发明内容
本发明实施例提供一种报文处理的方法及转发设备,能够实现解析和处理包含新的协议的报文。
第一方面,提供了一种报文处理的方法,包括:根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;执行所述与所述第i层协议头中的第一字段对应的指令,其中,所述执行所述与所述第i层协议头中的第一字段对应的指令,包括:将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
结合第一方面,在第一种可能的实现方式中,还包括:根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;根据第一偏移和第一长度,对所述报文进行处理。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据第一协议ID将报文处理窗口的起始位置移动到第一位置,包括:利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
结合第一方面,在第三种可能的实现方式中,还包括:以第一协议ID为索引查找所述协议位置表,确定第一位置;根据第一偏移和第一长度,对所述报文进行处理。
结合上述第一方面的任一种可能的实现方式,在第四种可能的实现方式中,在所述根据第一偏移和第一长度,对所述报文进行处理之前,还包括:根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
结合第一方面或者上述任一种可能的实现方式,在第五种可能的实现方式中,还包括:接收所述报文,所述报文包括所述连续的N层协议头。
结合第一方面或者上述任一种可能的实现方式,在第六种可能的实现方式中,所述与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
第二方面,提供了一种转发设备,包括:第一确定单元,用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;执行单元,用于执行所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令,其中,所述执行单元,具体用于:将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
结合第二方面,在第一种可能的实现方式中,所述转发设备还包括:偏移单元,用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述偏移单元,具体用于:利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
结合第二方面,在第三种可能的实现方式中,所述转发设备还包括:第二确定单元,用于以第一协议ID为索引查找所述协议位置表,确定第一位置;所述处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
结合第二方面的任一种可能的实现方式,在第四种可能的实现方式中,所述转发设备还包括第三确定单元,用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
结合第二方面或者上述的任一种可能的实现方式,在第五种可能的实现方式中,所述转发设备还包括接收单元,用于接收所述报文,所述报文包括所述连续的N层协议头。
结合第二方面或者上述的任一种可能的实现方式,在第六种可能的实现方式中,所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的报文处理的方法的流程图。
图2是本发明一个实施例的报文处理的方法的示意图。
图3是本发明一个实施例的转发设备的框图。
图4是本发明另一个实施例的转发设备的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明一个实施例的报文处理的方法的流程图。图1所示的方法的执行主体可以是网络装置。具体地,执行主体可以是网络装置中的网络处理器(Network Processer,NP),或者也可以是NP中的查找引擎。例如,该网络设备可以是路由器、网络交换机、防火墙、负载均衡器或者数据中心。其中,网络交换机可以是OpenFlow交换机。图1所示的方法包括:
101,根据报文中连续的N层协议头中的第i层协议头,查找与第i层协议头对应的流表,确定与该第i层协议头中的第一字段对应的指令。
102,执行与该第i层协议头中的第一字段对应的指令。其中,执行与该第i层协议头中的第一字段对应的指令包括:将N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的第一表项,第一表项的索引信息为第i+1层协议头的协议ID。N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该协议位置表能够用于将报文处理窗口的起始位置移动至指定的位置,以对报文进行处理。
可选地,作为一个实施例,在101之前,该执行主体可接收报文,该报文包括连续的N层协议头。
具体地,该执行主体可通过入端口接收该报文。
本发明实施例中,执行主体在接收到报文之后,需逐层解析报文中连续的N层协议头。针对N层协议头中的每一层协议头,执行101和102的过程。其中,与所述第i层协议头中的第一字段对应的指令中包含第i层协议头的长度,进而102中N层协议头中的第i+1层协议头在所述报文中的起始位置为第i层协议头的长度与第i层协议头在所述报文中的起始位置的和。
应注意,如果需要的话,与第i层协议头中的第一字段对应的指令中也可以包含其他的指令,可用于对报文进行其他的处理。本发明对此不作限定。
可选地,作为一个实施例,在101中,可将第i层协议头中的协议类型字段作为第一字段,查找与第i层协议头对应的流表,确定与该第i层协议头中的该第一字段对应的指令。可以理解为,是以第一字段作为查找关键字查找与第i层协议头对应的流表,与该第i层协议头中的该第一字段对应的指令是指与查找关键字所匹配的指令。
应注意,本发明实施例中,协议ID是由控制器动态分配的。并且控制器为不同的协议头分配不同的协议ID,一个协议头具有分配好的唯一的协议ID。
本发明实施例中,与第i层协议头对应的流表可以是由控制器下发的。并且与第i层协议头对应的流表是可配置的。当增加新的协议时,控制器为新的协议分配一个新的协议ID,并同时对相应的流表进行配置。例如,当包含N层协议头的报文增加第N+1层协议头时,控制器需在与第N层协议头对应的流表中,增加包含第N+1层协议头的协议ID的表项。
应注意,本发明实施例中,第i层协议头在所述报文中的起始位置可以是保存在寄存器中的,或者也可以是在中间变量metadata中的,或者也可以是当前报文处理窗口的起始位置。
例如,假设执行主体接收到的第一报文包括3层协议头,即N=3,如图2所示。第一报文包括第1层协议头、第2层协议头、第3层协议头和Payload。
具体地,执行主体解析第1层协议头:
执行主体在收到第一报文后,确定默认标识为0,与该默认标识0所对应的是第一流表。并且该第一流表是与该报文的第1层协议头所对应的。进一步根据第一流表的描述信息确定第二偏移(offset)和第二长度(length)。其中,第二偏移和第二长度所确定的字段为第1层协议头中的第一字段(如图2所示)。例如,该第1层协议头中的第一字段可以是第1层协议头中的协议类型字段。
随后,可以将该第1层协议头中的第一字段作为第一查找关键字(search key),再根据该第一查找关键字,查找与该第1层协议头对应的流表,从而可确定与该第一查找关键字匹配的第一指令,也就是说第一指令为在第一流表中与第1层协议头中的第一字段对应的指令。
在102中,执行该第一指令。
其中,执行该第一指令包括:将第2层协议头在所述第一报文中的起始位置写入协议位置表的第一表项。其中,该第一表项的索引信息为该第2层协议头的协议ID。
其中,该第一指令中可包含第1层协议头的长度。由于在解析第1层协议头时,报文处理窗口的起始位置在该第1层协议头的首位置(如图2所示),即该第1层协议头在该第一报文中的起始位置为0。那么,第2层协议头在所述第一报文中的起始位置为该第1层协议头的长度。
例如,该第一指令可以包括:
可以理解该第一指令的含义为:第2层协议头的协议ID为1,第1层协议头的长度为14。Write指令用于将第2层协议头在第一报文中的起始位置(Position)写入协议位置表。并且协议ID(Protocol ID)为协议位置表的索引。
同时,第一指令中还可以包括Goto-Table指令,并且该第一指令中的Goto-Table指令的立即数可以是第二流表的标识。这样可便于该执行主体解析第2层协议头。
执行主体解析第2层协议头:
执行主体根据第一指令确定第二流表的标识。例如可以是根据第一流表中的Goto-Table指令确定第二流表的标识。该第二流表是与第2层协议头所对应的流表。进一步地,可根据该第二流表的描述信息确定第三偏移和第三长度。其中,第三偏移和第三长度所确定的字段为第2层协议头中的第一字段。例如,该第2层协议头中的第一字段可以是第2层协议头中的协议类型字段。
随后,可以将该第2层协议头中的第一字段作为第二查找关键字,再根据该第二查找关键字,查找与该第2层协议头对应的流表,从而可确定与该第二查找关键字匹配的第二指令,也就是说第二指令为在第二流表中与第2层协议头中的第一字段对应的指令。
在102中,执行该第二指令。
其中,执行该第二指令包括:将第3层协议头在所述第一报文中的起始位置写入协议位置表的第二表项。其中,该第二表项的索引信息为该第3层协议头的协议ID。
其中,该第二指令中可包含第2层协议头的长度。由于在解析第2层协议头时,报文处理窗口的起始位置在该第2层协议头的首位置,即该第2层协议头在该第一报文中的起始位置为14。那么,第3层协议头在所述第一报文中的起始位置为该第2层协议头的长度与第2层协议头在该第一报文中的起始位置的和。
例如,该第二指令可以包括:
可以理解该第二指令的含义为:第3层协议头的协议ID为2,第2层协议头的长度为4。Write指令用于将第3层协议头在第一报文中的起始位置(Position)写入协议位置表。并且协议ID(Protocol ID)为协议位置表的索引。
同时,第二指令中还可以包括Goto-Table指令,并且该第二指令中的Goto-Table指令的立即数可以是第三流表的标识。这样可便于该执行主体解析第3层协议头。
执行主体解析第3层协议头:
执行主体根据第二指令确定第三流表的标识。例如可以是根据第二流表中的Goto-Table指令确定第三流表的标识。该第三流表是与第3层协议头所对应的流表。进一步地,可根据该第三流表的描述信息确定第四偏移和第四长度。其中,第四偏移和第四长度所确定的字段为第3层协议头中的第二字段。
随后,可以将该第3层协议头中的第二字段作为第三查找关键字,再根据该第三查找关键字,查找第三流表,确定与该第三查找关键字匹配的第三指令。并执行该第三指令。这样便可对该第3层协议头进行编辑或其他处理。本发明实施例对第三指令不作限定。例如,可以是查找、引用、编辑、删除等动作中的一个或多个。
具体地,针对该第一报文,所生成的协议位置表可如表1所示。
表1
Protocol ID=1,Position=14
Protocol ID=2,Position=18
这样,执行主体在逐层解析N层协议头的每一层协议头的过程中,可生成协议位置表,用于记录N层协议头的每一层协议头在报文中的起始位置。
而且,具有不同协议头的报文可能包括不同层数的协议头,或者可能包括的协议头的长度不同,那么具有不同协议头的报文所生成的协议位置表也不同。
进一步地,在102之后,执行主体可利用协议位置表,在对报文进行的转发处理流程中,能够在任何时候对报文的任何协议头位置进行处理。例如,可在对内层协议头的处理过程时,再回头对外层的协议头进行处理。
具体地,可以根据第一协议ID将报文处理窗口的起始位置移动到第一位置,该第一位置为第一协议ID对应的协议头在所述报文中的起始位置。进一步地,可根据第一偏移和第一长度,对所述报文进行处理。
例如,可首先通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到与第一协议ID所对应的协议头的首位置。其中Set PacketOffset指令中的Protocol ID即为第一协议ID。进一步,对所述报文进行处理,可理解为对报文中的第二字段进行处理。并且该第二字段的起始位置是根据第一偏移所确定的,该第二字段的长度为第一长度。
也就是说,可以根据第一协议ID,通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到特定位置,再根据第一偏移和第一长度对报文进行处理。
或者,具体地,可以以第一协议ID为索引查找协议位置表,确定第一位置。该第一位置为第一协议ID对应的协议头在所述报文中的起始位置。进一步根据第一偏移和第一长度,对所述报文进行处理。
例如,可对第一协议ID所对应的协议头中的第二字段进行处理。具体地,该第二字段的起始位置是根据第一位置和第一偏移所确定的,该第二字段的长度为第一长度。
也就是说,可以根据第一协议ID、第一偏移和第一长度,结合协议位置表,对报文进行处理。
或者,具体地,可以根据第一协议ID将报文处理窗口的起始位置移动到第一位置。再根据第一协议ID和第一域(field)的ID,查找协议域描述表,确定第一偏移和第一长度。进一步地,可根据第一偏移和第一长度,对所述报文进行处理。
应注意,协议域描述表可以是由控制器分配协议ID之后再生成的,协议域描述表中包括偏移和长度,并且是由协议ID和域的ID作为索引的。
也就是说,可以根据第一协议ID,通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到特定位置。再根据查找协议域描述表所确定的第一偏移和第一长度对报文进行处理。
或者,具体地,可以以第一协议ID为索引查找协议位置表,确定第一位置。再根据第一协议ID和第一域的ID,查找协议域描述表,确定第一偏移和第一长度。进一步根据第一偏移和第一长度,对所述报文进行处理。
也就是说,可以根据第一协议ID和第一域的ID,结合协议位置表和协议域描述表对报文进行处理。
应注意,本发明实施例中,同一个协议头中可包含多个域,且同一个协议头中的多个域的ID是互不相同的。不同的协议头中的域的ID可以是相同的,也可以是不同的。
具体地,第一协议ID和第一域的ID可以是两个独立的ID。或者,第一协议ID和第一域的ID也可以是一个协议域ID的两部分。也就是说,一个协议域ID可以以其中的某几位表示第一协议ID,以除去第一协议ID之外的剩余位表示第一域的ID。
可选地,当报文中的N个协议头中所包含的所有的域的ID均不相同时,第一偏移和第一长度可以是只根据第一域的ID查找协议域描述表来确定的。
这样,本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
图3是本发明一个实施例的转发设备的框图。图3所示的转发设备300包括第一确定单元301和执行单元302。
第一确定单元301用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令。执行单元302用于执行第一确定单元301确定的与所述第i层协议头中的第一字段对应的指令。其中执行单元302具体用于将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
可选地,作为一个实施例,图3中的转发设备300还可包括偏移单元303和处理单元304。偏移单元303可用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置。处理单元304可用于根据第一偏移和第一长度,对所述报文进行处理。
其中,偏移单元303可具体用于利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
可选地,作为另一个实施例,图3中的转发设备300还可包括第二确定单元305和处理单元304。第二确定单元305用于以第一协议ID为索引查找所述协议位置表,确定第一位置。处理单元304用于根据第一偏移和第一长度,对所述报文进行处理。
可选地,作为另一个实施例,图3中的转发设备300还可包括第三确定单元。处理单元304中的第一偏移和第一长度是由第三确定单元所确定的。具体地,第三确定单元可用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
可选地,作为另一个实施例,图3中的转发设备300还可包括接收单元306。接收单元306可用于接收所述报文,所述报文包括所述连续的N层协议头。
可选地,作为另一个实施例,第一确定单元301所确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
转发设备300能够实现图1的实施例中由执行主体实现的各个过程,为避免重复,这里不再赘述。
图4是本发明另一个实施例的转发设备的框图。图4所示的转发设备400包括处理器401、收发电路402和存储器403。
处理器401用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令。进一步执行与所述第i层协议头中的第一字段对应的指令。其中,执行与所述第i层协议头中的第一字段对应的指令具体用于将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
转发设备400中的各个组件通过总线系统404耦合在一起,其中总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统404。
上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器(Random Access Memory,RAM)、闪存、只读存储器(Read-Only Memory,ROM)、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器403,处理器401读取存储器403中的信息,结合其硬件完成上述方法的步骤。
可选地,作为一个实施例,处理器401还可用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置。进一步用于根据第一偏移和第一长度,对所述报文进行处理。
其中,根据第一协议ID将报文处理窗口的起始位置移动到第一位置可具体是利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
可选地,作为另一个实施例,处理器401可用于以第一协议ID为索引查找所述协议位置表,确定第一位置。并进一步用于根据第一偏移和第一长度,对所述报文进行处理。
可选地,作为另一个实施例,处理器401可用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
可选地,作为另一个实施例,收发电路402可用于接收所述报文,所述报文包括所述连续的N层协议头。
可选地,作为另一个实施例,处理器401所确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
转发设备400能够实现图1的实施例中由执行主体实现的各个过程,为避免重复,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种报文处理的方法,其特征在于,包括:
根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;
执行所述与所述第i层协议头中的第一字段对应的指令,
其中,所述第一字段对应的指令包括所述第i层协议头的长度和所述N层协议头中的第i+1层协议头的协议标识ID,所述执行所述与所述第i层协议头中的第一字段对应的指令,包括:将所述N层协议头中的所述第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议ID,N为正整数,且i为小于N的任一正整数。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;
根据第一偏移和第一长度,对所述报文进行处理。
3.根据权利要求2所述的方法,其特征在于,所述根据第一协议ID将报文处理窗口的起始位置移动到第一位置,包括:
利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
4.根据权利要求1所述的方法,其特征在于,还包括:
以第一协议ID为索引查找所述协议位置表,确定第一位置;
根据第一偏移和第一长度,对所述报文进行处理。
5.根据权利要求2至4任一项所述的方法,其特征在于,在所述根据第一偏移和第一长度,对所述报文进行处理之前,还包括:
根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
6.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
接收所述报文,所述报文包括所述连续的N层协议头。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述与所述第i层协议头中的第一字段对应的指令中包含所述第i层协议头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
8.一种转发设备,其特征在于,包括:
第一确定单元,用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;
执行单元,用于执行所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令,
其中,所述第一字段对应的指令包括所述第i层协议头的长度和所述N层协议头中的第i+1层协议头的协议标识ID,所述执行单元,具体用于:将所述N层协议头中的所述第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议ID,N为正整数,且i为小于N的任一正整数。
9.根据权利要求8所述的转发设备,其特征在于,所述转发设备还包括:
偏移单元,用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;
处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
10.根据权利要求9所述的转发设备,其特征在于,所述偏移单元,具体用于:
利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
11.根据权利要求8所述的转发设备,其特征在于,所述转发设备还包括:
第二确定单元,用于以第一协议ID为索引查找所述协议位置表,确定第一位置;
处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
12.根据权利要求9至11任一项所述的转发设备,其特征在于,所述转发设备还包括第三确定单元,用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
13.根据权利要求8至11任一项所述的转发设备,其特征在于,所述转发设备还包括接收单元,用于接收所述报文,所述报文包括所述连续的N层协议头。
14.根据权利要求8至11任一项所述的转发设备,其特征在于,所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层协议头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
CN201410069736.4A 2014-02-27 2014-02-27 报文处理的方法及转发设备 Active CN103873464B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410069736.4A CN103873464B (zh) 2014-02-27 2014-02-27 报文处理的方法及转发设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410069736.4A CN103873464B (zh) 2014-02-27 2014-02-27 报文处理的方法及转发设备

Publications (2)

Publication Number Publication Date
CN103873464A CN103873464A (zh) 2014-06-18
CN103873464B true CN103873464B (zh) 2017-05-10

Family

ID=50911591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410069736.4A Active CN103873464B (zh) 2014-02-27 2014-02-27 报文处理的方法及转发设备

Country Status (1)

Country Link
CN (1) CN103873464B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015180130A1 (zh) * 2014-05-30 2015-12-03 华为技术有限公司 报文编辑处理方法和相关设备
CN105471726B (zh) 2014-09-05 2019-08-27 华为技术有限公司 转发参数传递的方法及设备
CN105530128B (zh) * 2015-12-11 2018-12-11 中国联合网络通信集团有限公司 一种报文传递的方法及装置
CN105721356B (zh) * 2016-02-03 2019-05-10 华为技术有限公司 存储协议头的方法和网络设备
CN109495387A (zh) * 2017-09-13 2019-03-19 中兴通讯股份有限公司 流表匹配方法、装置、系统及计算机可读存储介质
CN109962832B (zh) 2017-12-26 2022-06-14 华为技术有限公司 报文处理的方法和装置
CN110912859B (zh) * 2018-09-17 2021-12-14 华为技术有限公司 发送报文的方法、接收报文的方法及网络设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585379A (zh) * 2004-05-25 2005-02-23 华中科技大学 一种数据包的快速解析方法
CN103560951A (zh) * 2013-11-13 2014-02-05 华为技术有限公司 报文处理方法及物理转发设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101152958B1 (ko) * 2008-12-19 2012-06-08 한국전자통신연구원 계층적 패킷 처리 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585379A (zh) * 2004-05-25 2005-02-23 华中科技大学 一种数据包的快速解析方法
CN103560951A (zh) * 2013-11-13 2014-02-05 华为技术有限公司 报文处理方法及物理转发设备

Also Published As

Publication number Publication date
CN103873464A (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
CN103873464B (zh) 报文处理的方法及转发设备
CN100472487C (zh) 用于域间通信的虚拟广播网络
CN106656801A (zh) 业务流的转发路径的重定向方法、装置和业务流转发系统
WO2016107122A1 (zh) RapidIO报文和以太网报文之间的转换方法和设备
CN105072038B (zh) 一种数据报文转发方法及装置
EP3562098B1 (en) Entry creation for equal cost paths
CN107181663A (zh) 一种报文处理方法、相关设备及计算机可读存储介质
US9544402B2 (en) Multi-rule approach to encoding a group of rules
CN103118149B (zh) 同一租户内服务器间的通信控制方法及网络设备
CN104322019A (zh) 业务路由系统、设备和方法
CN104168222A (zh) 一种报文传输方法和设备
JP3881663B2 (ja) フィールドレベルツリーを用いたパケット分類装置及び方法
CN105991433B (zh) 三层虚拟专用网接入二层虚拟专用网的方法和装置
CN105871602A (zh) 一种统计流量的控制方法、装置和系统
CN108011824A (zh) 一种报文处理方法以及网络设备
CN107113241A (zh) 路由确定方法、网络配置方法以及相关装置
CN105634942A (zh) 转发报文的方法和交换机
WO2021169235A1 (zh) 路由报文的处理方法及装置、存储介质和电子装置
CN107493150A (zh) 一种数据加密传输方法及装置
CN104836738A (zh) 路由硬件表项资源管理方法、装置及网络设备
CN104584492A (zh) 报文处理方法、设备及系统
CN106487691A (zh) 虚拟路由器的数据处理方法、装置和虚拟路由器
CN107360089A (zh) 一种路由建立方法、业务数据转换方法及装置
CN105635000A (zh) 一种报文存储转发方法和电路及设备
CN104520837A (zh) 递归性多对多网络拓扑

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201228

Address after: 313200 No.8 Yu'an South Road, Hongfeng village, Xin'an Town, Deqing County, Huzhou City, Zhejiang Province (Zhejiang Huazhuo Electromechanical Technology Co., Ltd.)

Patentee after: Luo Sanjie

Address before: 518101 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Effective date of registration: 20201228

Address after: 518101 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right