处理报文的方法与设备的制作方法

文档序号:7783460阅读:315来源:国知局
处理报文的方法与设备的制作方法【专利摘要】本发明实施例提供处理报文的方法和设备,包括:获取第一报文;确定第一表的标识;确定对应于该第一表的标识的该第一表的描述信息;根据该第一表的描述信息和该第一表,对该第一报文进行第一处理,其中该第一表为约定表;根据该第一表的描述信息,确定下一表的标识,其中该下一表的标识对应于下一表的描述信息;根据该下一表的描述信息和下一表,对进行该第一处理后的该第一报文进行处理,其中该下一表为约定表或流表。本发明结合了约定表的高性能和流表的灵活性,有助于兼顾转发设备的报文处理性能以及转发设备的可编程性。【专利说明】处理报文的方法与设备【
技术领域
】[0001]本发明实施例涉及信息【
技术领域
】。更具体地,涉及处理报文的方法与设备。【
背景技术
】[0002]传统的报文的转发过程完全是由交换机/路由器控制的。交换机/路由器通过传统转发动作表对获取到的报文进行控制。该传统的转发动作表的内容都是根据转发面微码和控制面约定好的格式确定的。也就是说,传统的转发动作表的每一个域中的内容都是转发面微码和控制面驱动约定好的。传统的转发动作表可以是桥动作表(英文:bridgetable)或者路由动作表(英文:routetable)。完全由交换机/路由器控制实现的对报文的控制过程具有性能高、技术成熟的优点。但是,完全由交换机/路由器控制实现的对报文的控制过程不够灵活,不能较好地适应业务需求的变化。[0003]随着技术的发展,出现了开放流(OpenFlow)技术。开放流技术将原来完全由交换机/路由器控制的转发过程转化为由OpenFlow交换机(OpenFlowSwitch)和控制器(Controller)共同控制。OpenFlow技术实现了数据转发和路由控制的分离。OpenFlow技术采用多级流表的流水线完成报文从输入到输出的转发处理过程。具体来说,流表由多个流表项组成,每个流表项对应一个转发规则。报文的目的端口是通过查询流表来获得的。流表包括匹配域(MatchField)、指令(Instruction)域以及计数器(Counter)域。匹配域用于匹配报文。指令域用于对报文进行处理。其中处理可以是修改报文、封装报文、解封装报文或者转发报文。通过OpenFlow技术实现的对报文的控制过程能够灵活地适应业务需求的变化。但是OpenFlow技术性能低,技术不成熟。【
发明内容】[0004]本发明实施例提供处理报文的方法和设备,有助于使得对报文的处理兼顾业务性能的需求和业务灵活性的需求。[0005]第一方面,本发明实施例提供一种处理报文的方法,该方法包括:获取第一报文;确定第一表的标识;确定对应于该第一表的标识的该第一表的描述信息;根据该第一表的描述信息和该第一表,对该第一报文进行第一处理,其中该第一表为约定表;根据该第一表的描述信息,确定下一表的标识,其中该下一表的标识对应于下一表的描述信息;根据该下一表的描述信息和下一表,对进行该第一处理后的该第一报文进行处理,其中该下一表为约定表或流表。[0006]结合第一方面,在第一种可能的实现方式中,该根据该第一表的描述信息和第一表,对该第一报文进行第一处理,包括:根据该第一表的描述信息,确定第一处理程序和该第一表;根据该第一处理程序以及该第一表,对该第一报文进行第一处理。[0007]结合第一种可能的实现方式,在第二种可能的实现方式中,该根据该第一处理程序以及该第一表,对该第一报文进行第一处理,包括:确定该第一表的表项;根据该第一表的表项,使用该第一处理程序对该第一报文进行该第一处理。[0008]结合第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,该第一表的描述信息包括:该第一处理程序的标识符、该第一表的类型、该第一表的基址、该第一表的查找关键字的表述信息和该第一表的动作表项长度。[0009]结合第一方面或上述任一种可能的实现方式,在第四种可能的实现方式中,该根据该第一表的描述信息,确定下一表的标识,包括:根据该第一表的表项,确定该下一表的标识。[0010]第二方面,本发明实施例提供一种设备,该设备包括:获取单元,用于获取第一报文;第一确定单兀,用于确定第一表的标识;第二确定单兀,用于确定对应于该第一表的标识的该第一表的描述信息;第一处理单兀,用于根据该第二确定单兀确定的该第一表的描述信息和该第一表,对该第一报文进行第一处理,其中该第一表为约定表;第三确定单兀,用于根据该第一表的描述信息,确定下一表的标识,其中该下一表的标识对应于该下一表的描述信息;第二处理单兀,用于根据该第三确定单兀确定的该下一表和该下一表的描述信息,对进行该第一处理后的该第一报文进行处理,其中该下一表为约定表或流表。[0011]结合第二方面,在第一种可能的实现方式中,该第一处理单元,具体用于根据该第一表的描述信息,确定第一处理程序和该第一表,根据该第一处理程序以及该第一表,对该第一报文进行第一处理。[0012]结合第一种可能的实现方式,在第二种可能的实现方式中,该第一处理单元,具体用于确定该第一表的表项,根据该第一表的表项,使用该第一处理程序对该第一报文进行该第一处理。[0013]结合第二方面或上述任一种可能的实现方式,在第三种可能的实现方式中,该第三确定单兀,具体用于该第一表的表项,确定该下一表的标识。[0014]根据本发明实施例,报文的处理程序可以在约定表和约定表之间、约定表和流表之间或者流表和流表之间进行跳转。这样,可以兼顾约定表转发性能高的优点和流表可以灵活地适应业务变化的需求的优点。本发明结合了约定表的高性能和流表的灵活性,有助于兼顾转发设备的报文处理性能以及转发设备的可编程性。【专利附图】【附图说明】[0015]为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0016]图1是根据本发明实施例提供的处理报文的方法的示意性流程图。[0017]图2是根据本发明实施例提供的处理报文的方法的示意性流程图。[0018]图3是根据本发明实施例提供的处理报文的方法的示意图。[0019]图4是根据本发明实施例提供的设备的结构框图。【具体实施方式】[0020]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。[0021]本发明实施例提供的技术方案中涉及到约定表。约定表的表项中包括为处理程序提供的参数。处理程序根据约定表的表项对报文进行处理。举例来说,约定表可以是传统的完全由交换机/路由器控制的报文的转发过程中所使用的表。例如,约定表可以是BE或者RE。为了方便描述,本发明将根据约定表对报文的处理进行控制的过程简称为“约定表处理流水线”。约定表处理流水线中每一级(英文:stage)对报文的处理简称为“约定表处理进程”。[0022]本实施例提供的技术方案中涉及到OpenFlow技术。关于OpenFlow技术涉及的术语(包括但不限于流表、流表项、指令和动作),可以参考开放流交换机说明书第1.4.0版(英文:0penFlowSwitchSpecificationversionl.4.0)。为便于阅读,此处对流表进行说明。流表(英文:flowtable)是OpenFlow技术涉及的一种表。具体来说,流表包括匹配域、指令域以及计数器域。匹配域用于匹配报文。指令域用于对报文进行处理。所述处理可以是修改报文、封装报文、解封装报文、丢弃报文、转发报文或者对报文进行计数操作。换句话说,流表中不仅可以包括为处理程序提供的参数,也可以包括处理程序本身(处理程序可以是指令或者动作)。为了方便描述,本发明将根据流表对报文的处理进行控制过程称为“流表处理流水线”。流表处理流水线中每一级对报文的处理简称为“流表处理进程”。如果报文需要通过约定表处理进程和流表处理进程进行处理,则将这样的处理流程统称为“混合处理流水线”。[0023]图1是根据本发明实施例提供的处理报文的方法的示意性流程图。该方法的执行主体可以网络装置。具体来说,执行主体可以是网络装置中的网络处理器(英文metworkprocesser,简称:NP)。具体来说,可以是NP中的查找引擎。该网络设备可以是路由器、网络交换机、防火墙、负载均衡器或者数据中心。该网络交换机可以是OpenFlow交换机。[0024]101,获取第一报文。[0025]举例来说,101具体实现时可以接收所述第一报文,或者生成所述第一报文。[0026]102,确定第一表的标识。[0027]举例来说,102具体实现时可以通过表获得所述第一表的标识。所述表中携带所述第一表的标识。102具体实现时也可以是默认的代码指示所述执行主体根据所述第一表的描述信息以及所述第一表对所述第一报文进行处理。所述执行主体中存储了所述默认的代码。[0028]IO3,确定对应于该第一表的标识的该第一表的描述信息。[0029]举例来说,所述第一表的描述信息可以存储在一个数组中。103具体实现时可以以所述第一表的标识为索引,通过访问所述数组获得所述第一表的描述信息。[0030]举例来说,所述执行主体的存储器包括用于存储计算机程序的存储区域以及用于存储数据的存储区域。所述第一表的描述信息存储在用于存储数据的存储区域。举例来说,所述第一表的描述信息是控制器生成的。所述控制器通过控制通道将所述第一表的描述信息发送至所述执行主体。[0031]104,根据该第一表的描述信息和该第一表,对该第一报文进行第一处理。[0032]举例来说,该第一表为约定表。[0033]可替换地,该第一表为流表。[0034]105,根据该第一表的描述信息,确定下一表的标识,其中该下一表的标识对应于该下一表的描述信息。[0035]106,根据该下一表的描述信息和下一表,对进行该第一处理后的该第一报文进行处理,其中该下一表为约定表或流表。[0036]根据图1所示的方法,执行约定表对应的第一处理后,处理程序可以根据相应的下一表的标识跳转到约定表处理进程或流表处理进程以实现对报文的后续处理。也就是说,处理程序可以在约定表和流表之间进行跳转。这样,可以兼顾约定表处理性能高的特点和流表处理灵活的特点,提高对报文的处理效率。此外,用于处理报文的下一表对应的下一表的标识是根据第一表的描述信息确定的。第一表的描述信息可以而不是微码进行控制的。这样,当需要改变处理报文的下一表时,可以通过修改下一表的标识实现,而不需要通过修改微码实现。例如,处理报文的表为约定表A。在约定表A完成对报文的处理后,需要使用约定表B对该报文进行处理。如果希望在约定表A完成对该报文的处理后改为由约定表C对该报文进行处理,则可以将下一表的标识从对应于约定表B的表的标识修改为对应于约定表C的表的标识即可。这样,当需要改变下一表时,可以快速确定需要修改的位置并通过修改下一表的标识方便地改变下一表。此外,修改下一表的标识的工作量要远小于修改微码的工作量。[0037]图2是根据本发明实施例提供的处理报文的方法的示意性流程图。图2所示的方法是图1所示的方法的一个具体实施例。[0038]201,获取第一报文。[0039]本说明书中第一报文中的“第一”中的“第一”仅是为了区分报文,并不是对报文的限制。因此,可以理解,这个第一报文可以是混合处理流水线中的任一个报文。也就是说,第一报文可以是完成了一次或者多次处理的报文,也可以是从其他设备接收到的报文。[0040]202,确定第一表的标识。[0041]2O3,确定对应于该第一表的标识的该第一表的描述信息。[0042]通过执行步骤204至步骤206,可以实现根据该第一表的描述信息和第一表,对第一报文进行第一处理。[0043]204,根据该第一表的描述信息,确定第一处理程序和该第一表。[0044]举例来说,该第一表为约定表。[0045]可替换地,该第一表为流表。[0046]该第一表的描述信息可以包括:第一处理程序的标识符、该第一表的类型、该第一表的基址、该第一表的查找关键字(英文searchkey)的描述信息和第一表的动作表项长度。该第一表的查找关键字的描述信息用于描述第一匹配表的查找关键字。举例来说,该第一表的类型包含两部分信息:第一部分表不该表为约定表,第二部分表不表的匹配类型,可以是任意掩码匹配(英文accesscontrollist,简称:ACL)表、最长前缀匹配(英文:longestprefixmatch,简称:LPM)表、精确匹配(英文:exactmatch,简称:EM)表、直接访问(英文:direct)表等。[0047]具体地,通过第一表的描述信息中的第一处理程序的标识符,确定第一处理程序。第一表为约定表。第一表与该第一处理程序对应。举例来说,不同的约定表对应不同的处理程序。第一处理程序根据第一表的描述信息中的第一表的基址、第一表的类型、第一表的查找关键字的表述信息访问第一表。[0048]通过执行步骤205和步骤,可以实现在确定了第一表后,根据该第一处理程序以及该第一表,对该第一报文进行第一处理。[0049]205,使用该第一处理程序确定该第一表的表项。[0050]举例来说,所述第一处理程序可以根据所述第一表的查找关键字的表述信息确定所述查找关键字。所述第一表的查找关键字的表述信息用于描述所述查找关键字的获取方式。所述查找关键字可以包括所述第一报文的报文头中的字段。所述查找关键字可以包括用于接收所述第一报文的端口。[0051]具体地,在确定了该第一表后,该第一处理程序向该第一表下发所述查找关键字以查找所述第一表的表项。[0052]206,根据该第一表的表项,使用该第一处理程序对该第一报文进行第一处理。[0053]具体地,第一处理程序在对第一报文进行第一处理时,使用第一表的表项内容作为报文处理的输入参数。也就是说,第一处理程序是根据第一表的表项对该第一报文进行处理的。其中该第一处理程序可以用于计算传输控制协议(英文!TransmissionControlProtocol,简称:TCP)头的校验和(英文checksum)。该第一处理程序也可以用于执行网络地址翻译(英文:networkaddresstranslation,简称:NAT)。具体来说,该第一报文可以是来自私网的网际协议(英文:internetprotocol,简称:IP)报文。该第一处理程序可以用于将所述IP报文的IP头中的源IP地址和源端口进行修改以生成一个新的IP报文。该新的IP报文将被在公网中传输。[0054]下面提供第一实施例作为一个具体的例子对205和206进行描述。[0055]该第一报文是IP报文。该执行主体是NAT装置。该第一表是NAT流表。[0056]位于私网的主机向公网的服务器发送该IP报文。该主机的IP地址为10.1.1.1。该服务器的IP地址为100.1.1.1。所述IP报文携带如下特征信息(参见表1)。【权利要求】1.一种处理报文的方法,其特征在于,所述方法包括:获取第一报文;确定第一表的标识;确定对应于所述第一表的标识的所述第一表的描述信息;根据所述第一表的描述信息和所述第一表,对所述第一报文进行第一处理,其中所述第一表为约定表;根据所述第一表的描述信息,确定下一表的标识,其中所述下一表的标识对应于所述下一表的描述信息;根据所述下一表的描述信息和所述下一表,对进行所述第一处理后的所述第一报文进行处理,其中所述下一表为约定表或流表。2.如权利要求1所述的方法,其特征在于,所述根据所述第一表的描述信息和第一表,对所述第一报文进行第一处理,包括:根据所述第一表的描述信息,确定第一处理程序和所述第一表;根据所述第一处理程序以及所述第一表,对所述第一报文进行第一处理。3.如权利要求2所述的方法,其特征在于,所述根据所述第一处理程序以及所述第一表,对所述第一报文进行第一处理,包括:确定所述第一表的表项;根据所述第一表的表项,使用所述第一处理程序对所述第一报文进行所述第一处理。4.如权利要求2或3所述的方法,其特征在于,所述第一表的描述信息包括:所述第一处理程序的标识符、所述第一表的类型、所述第一表的基址、所述第一表的查找关键字的表述信息和所述第一表的动作表项长度。5.如权利要求1-4中任一项所述的方法,其特征在于,所述根据所述第一表的描述信息,确定下一表的标识,包括:根据所述第一表的表项,确定所述下一表的标识。6.一种设备,其特征在于,所述设备包括:获取单元,用于获取第一报文;第一确定单兀,用于确定第一表的标识;第二确定单兀,用于确定对应于所述第一表的标识的所述第一表的描述信息;第一处理单元,用于根据所述第二确定单元确定的所述第一表的描述信息和所述第一表,对所述第一报文进行第一处理,其中所述第一表为约定表;第三确定单兀,用于根据所述第一表的描述信息,确定下一表的标识,其中所述下一表的标识对应于所述下一表的描述信息;第二处理单元,用于根据所述第三确定单元确定的所述下一表和所述下一表的描述信息,对进行所述第一处理后的所述第一报文进行处理,其中所述下一表为约定表或流表。7.如权利要求6所述的设备,其特征在于,所述第一处理单元,具体用于根据所述第一表的描述信息,确定第一处理程序和所述第一表,根据所述第一处理程序以及所述第一表,对所述第一报文进行第一处理。8.如权利要求7所述的设备,其特征在于,所述第一处理单元,具体用于确定所述第一表的表项,根据所述第一表的表项,使用所述第一处理程序对所述第一报文进行所述第一处理。9.如权利要求7或8所述的设备,其特征在于,所述第三确定单兀,具体用于所述`第一表的表项,确定所述下一表的标识。【文档编号】H04L12/947GK103731377SQ201310754645【公开日】2014年4月16日申请日期:2013年12月31日优先权日:2013年12月31日【发明者】王小忠,龚钧,王震申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1