报文处理方法和转发设备与流程

文档序号:12693088阅读:178来源:国知局
本发明实施例涉及通信技术,尤其涉及报文处理方法和转发设备(forwardingelement)。
背景技术
::现有技术中,forwardingelement接收到报文后,需要确定报文数据格式,例如确定报文是网际协议(InternetProtocol,IP)数据包或者多协议标签交换(MultipleprotocolLabelSwitching,MPLS)报文,从而对所述报文进行处理。例如,交换机收到以太报文后,需要根据端口表确定所述以太报文的协议为媒体访问控制(MediaAccessControl,MAC)协议。然后,所述交换机根据MAC协议,对所述以太报文的MAC协议头进行解析,从而获取所述以太报文的目的MAC协议地址。技术实现要素:本发明实施例提供了报文处理方法和forwardingelement。对报文进行处理前,forwardingelement不需要理解所述报文的数据格式。可以使得forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。第一方面,提供了一种报文处理方法,包括:forwardingelement通过入端口接收报文;所述forwardingelement根据所述入端口查找端口表(porttable),确定第一偏移(offset)、第一长度(length)和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口;所述forwardingelement根据所述第一offset和所述第一length确定第一关键字(key),根据所述第一key查找所述第一表,确定第一指令(instruction);以及所述forwardingelement根据所述第一instruction处理所述报文。上述技术方案中,所述forwardingelement根据所述入端口确定所述第一offset和所述第一length。所述forwardingelement根据所述第一offset和所述第一length确定所述第一key。所述forwardingelement根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwardingelement不需要理解所述报文的数据格式。可以使得所述forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。第一方面的第一种可能的实现方式中,所述forwardingelement根据所述第一offset和所述第一length确定所述第一key包括:所述forwardingelement获取所述报文中的第一数据段(datasegment),所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length;以及所述forwardingelement确定所述第一datasegment为所述第一key。第一方面的第二种可能的实现方式中,所述forwardingelement根据所述第一offset和所述第一length确定所述第一key包括:所述forwardingelement获取中间数据(metedata)中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length;以及所述forwardingelement确定所述第二datasegment为所述第一key。根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述metedata存储于所述forwardingelement的寄存器(registers);或者所述metedata存储于所述forwardingelement的存储器(memory)。根据第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一instruction用于指示所述forwardingelement执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的校验和(checksum)、写metedata、读metedata、计数器更新(counterupdate)、对所述报文进行承诺访问速率(committedaccessrate,CAR)处理,丢弃所述报文,发送所述报文和修改所述报文的基础偏移(baseoffset)。根据第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述forwardingelement根据所述第一指令处理所述报文包括:所述forwardingelement根据所述第一表确定所述报文的baseoffset、第二offset、第二length和第二表的标识,所述报文的baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;所述forwardingelement根据所述报文的baseoffset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及所述forwardingelement根据所述第二instruction处理所述报文。第二方面,提供了一种forwardingelement,包括:接收电路,用于通过入端口接收报文;查找单元,用于根据所述入端口查找porttable,确定第一offset、第一length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口;确定单元,用于根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定instruction;以及处理单元,用于根据所述instruction处理所述报文。上述技术方案中,所述forwardingelement根据所述入端口确定所述第一offset和所述第一length。所述forwardingelement根据所述第一offset和所述第一length确定所述第一key。所述forwardingelement根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwardingelement不需要理解所述报文的数据格式。可以使得所述forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。第二方面的第一种可能的实现方式中,所述查找单元用于:获取所述报文中的第一datasegment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length;以及确定所述第一datasegment为所述第一key。第二方面的第二种可能的实现方式中,所述查找单元用于:获取metedata中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length;以及确定所述第二datasegment为所述第一key。根据第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括registers或者memory;所述metedata存储于所述registers或者所述memory。根据第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述instruction用于指示所述forwardingelement执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counterupdate、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的baseoffset。根据第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述处理单元用于:根据所述第一表确定所述报文的baseoffset、第二offset、第二length和第二表的标识,所述报文的baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;根据所述报文的baseoffset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及根据所述第二instruction处理所述报文。第三方面,提供了一种forwardingelement,包括:接收电路、处理器、查找引擎(searchengine)以及memory。所述接收电路用于通过入端口接收报文。所述处理器与所述接收电路耦合,所述处理器与所述memory耦合,所述处理器包括指令执行电路和指令存储器,所述指令执行电路和所述指令存储器耦合,所述指令存储器用于存储计算机指令,所述指令执行电路通过读所述计算机指令执行如下动作:触发所述searchengine,以使所述searchengine根据所述入端口查找porttable,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口,所述porttable存储在所述memory中;根据所述第一offset和所述第一length确定第一key;触发所述searchengine,以使所述searchengine根据所述第一key查找所述第一表,确定第一instruction;以及根据所述第一instruction处理所述报文。第三方面的第一种可能的实现方式中,所述searchengine还用于获取所述报文中的第一datasegment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length;所述指令执行电路还用于确定所述第一datasegment为所述第一key。所述处理器还包括数据存储器,所述数据存储器与所述指令执行电路耦合,所述报文存储在所述数据存储器中。第三方面的第二种可能的实现方式中,所述searchengine还用于获取metedata中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length;所述指令执行电路还用于确定所述第二datasegment为所述第一key。根据第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理器还包括registers,所述registers与所述指令执行电路耦合,所述metedata存储在所述registers中。根据第三方面的第二种可能的实现方式,在第三方面的第四种可能的实现方式中,所述metedata存储在所述memory中。根据第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或者第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述第一instruction用于指示所述指令执行电路执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counterupdate、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的baseoffset。根据第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或者第三方面的第四种可能的实现方式,在第三方面的第六种可能的实现方式中,所述指令执行电路还用于:根据所述第一表确定所述报文的baseoffset、第二offset、第二length和第二表的标识,所述报文的baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。所述指令执行电路还用于:根据所述报文的baseoffset、所述第二offset和所述第二length确定第二key。所述指令执行电路还用于触发所述searchengine,以使所述searchengine根据所述第二key查找所述第二表,确定第二instruction。所述指令执行电路还用于根据所述第二instruction处理所述报文。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种报文处理方法的流程示意图;图2是本发明实施例提供的一种报文处理方法的流程示意图;图3是本发明实施例提供的一种报文处理方法的流程示意图;图4是本发明实施例提供的一种报文处理方法的流程示意图;图5是本发明实施例提供的一种转发设备的结构示意图;图6是本发明实施例提供的一种转发设备的结构示意图;图7是本发明实施例提供的一种表项的格式示意图;图8是本发明实施例提供的一种表项的格式示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例提供的一种报文处理方法的流程示意图。参见图1,所述方法包括:102、forwardingelement通过入端口接收报文。举例来说,所述forwardingelement可以是路由器、交换机、防火墙或者负载均衡器。举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。举例来说,102的执行主体可以是接收电路。104、所述forwardingelement根据所述入端口查找porttable,确定第一offset、第一length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口。举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述porttable的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。举例来说,所述第一表可以是MAC协议表、地址解析协议(AddressResolutionProtocol,ARP)表、转发信息库(forwardinginformationbase,FIB)或者MPLS标签表。举例来说,104的执行主体可以是searchengine。106、所述forwardingelement根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定第一instruction。举例来说,所述第一key可以是所述报文中的datasegment。所述第一key也可以是metedata中的datasegment。所述metedata存储在registers中。举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。举例来说,106的执行主体可以是searchengine以及指令执行电路。108、所述forwardingelement根据所述第一instruction处理所述报文。举例来说,所述第一instruction可以是标准制定组织(StandardSettingOrganization,SSO)开放网络基础(OpenNetworkingFoundation,ONF)发布的《开放流交换机规范1.3.0》(OpenFlowSwitchSpecification1.3.0)中定义的instruction。举例来说,108的执行主体可以是网络处理器(networkprocessor,NP)。具体来说,108的执行主体可以是所述NP中的指令执行电路。上述技术方案中,所述forwardingelement根据所述入端口确定所述第一offset和所述第一length。所述forwardingelement根据所述第一offset和所述第一length确定所述第一key。所述forwardingelement根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwardingelement不需要理解所述报文的数据格式。可以使得所述forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。可选地,图1所示的方法中,所述forwardingelement根据所述第一offset和所述第一length确定所述第一key包括:202、所述forwardingelement获取所述报文中的第一datasegment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length。204、所述forwardingelement确定所述第一datasegment为所述第一key。关于202和204,具体请参见图2。举例来说,所述第一datasegment的起始位置根据所述第一offset确定具体可以是所述第一datasegment的起始位置可以用第一baseoffset与所述第一offset的和进行标识。所述第一baseoffset为0。上述技术方案中,所述第一key来源于所述报文。可选地,图1所示的方法中,所述forwardingelement根据所述第一offset和所述第一length确定所述第一key包括:302、所述forwardingelement获取metedata中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length。304、所述forwardingelement确定所述第二datasegment为所述第一key。关于302和304,具体请参见图3。举例来说,所述第二datasegment的起始位置根据所述第一offset确定具体可以是所述第二datasegment的起始位置可以用第二baseoffset与所述第一offset的和进行标识。所述第二baseoffset为0。上述技术方案中,所述第一key来源于所述metedata。可选地,图1所示的方法中,所述metedata存储于所述forwardingelement的registers。举例来说,所述registers可以位于NP中。可选地,图1所示的方法中,所述metedata存储于所述forwardingelement的memory。举例来说,所述memory可以与所述NP耦合。可选地,图1所示的方法中,所述第一instruction用于指示所述forwardingelement执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counterupdate、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的baseoffset。举例来说,修改所述报文可以是删除所述报文中的datasegment、替换所述报文中的datasegment或者在所述报文中插入datasegment。举例来说,所述checksum可以是IPchecksum、传输控制协议(TransmissionControlProtocol,TCP)checksum或者用户数据报协议(UserDatagramProtocol,UDP)checksum。可选地,图1所示的方法中,所述forwardingelement根据所述第一instruction处理所述报文包括:402、所述forwardingelement根据所述第一表确定baseoffset、第二offset、第二length和第二表的标识,所述baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。举例来说,所述baseoffset等于所述第一baseoffset与所述第一offset的和。404、所述forwardingelement根据所述baseoffset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction。举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述baseoffset是多个baseoffset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个baseoffset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。406、所述forwardingelement根据所述第二instruction处理所述报文。举例来说,所述第二instruction可以是ONF发布的OpenFlowSwitchSpecification1.3.0中定义的instruction。关于402、404和406,具体请参考图4。图5为本发明实施例提供的一种forwardingelement的结构示意图。所述forwardingelement可以用于执行图1所示的方法。举例来说,所述forwardingelement可以是路由器、交换机、防火墙或者负载均衡器。参见图5,所述forwardingelement包括:接收电路502,用于通过入端口接收报文。举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。查找单元504,用于根据所述入端口查找porttable,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口。举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述porttable的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。举例来说,所述第一表可以是MAC协议表、ARP表、FIB或者MPLS标签表。举例来说,查找单元504可以是searchengine。确定单元506,用于根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定第一instruction。举例来说,所述第一key可以是所述报文中的datasegment。所述第一key也可以是metedata中的datasegment。所述metedata存储在registers中。举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。举例来说,确定单元506可以是searchengine以及指令执行电路。处理单元508,用于根据所述第一instruction处理所述报文。举例来说,所述第一instruction可以是ONF发布的OpenFlowSwitchSpecification1.3.0中定义的instruction。举例来说,处理单元508可以是NP。具体来说,可以是所述NP中的指令执行电路。上述技术方案中,所述forwardingelement根据所述入端口确定所述第一offset和所述第一length。所述forwardingelement根据所述第一offset和所述第一length确定所述第一key。所述forwardingelement根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwardingelement不需要理解所述报文的数据格式。可以使得所述forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。可选地,图5所述的forwardingelement中,所述查找单元504用于:获取所述报文中的第一datasegment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length。确定所述第一datasegment为所述第一key。举例来说,所述第一datasegment的起始位置根据所述第一offset确定具体可以是所述第一datasegment的起始位置可以用第一baseoffset与所述第一offset的和进行标识。所述第一baseoffset为0。上述技术方案中,所述第一key来源于所述报文。可选地,图5所述的forwardingelement中,所述查找单元504用于:获取metedata中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length。确定所述第二datasegment为所述第一key。举例来说,所述第二datasegment的起始位置根据所述第一offset确定具体可以是所述第二datasegment的起始位置可以用第二baseoffset与所述第一offset的和进行标识。所述第二baseoffset为0。上述技术方案中,所述第一key来源于所述metedata。可选地,图5所述的forwardingelement中,还包括registers或者memory。所述metedata存储于所述registers或者所述memory。可选地,图5所述的forwardingelement中,所述第一instruction用于指示所述forwardingelement执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counterupdate、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的baseoffset。举例来说,修改所述报文可以是删除所述报文中的datasegment、替换所述报文中的datasegment或者在所述报文中插入datasegment。举例来说,所述checksum可以是IPchecksum、传输控制协议TCPchecksum或者UDPchecksum。可选地,图5所述的forwardingelement中,所述处理单元508用于:根据所述第一表确定所述报文的baseoffset、第二offset、第二length和第二表的标识,所述报文的baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。根据所述报文的baseoffset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction。根据所述第二instruction处理所述报文。举例来说,所述baseoffset等于所述第一baseoffset与所述第一offset的和。举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述baseoffset是多个baseoffset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个baseoffset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。举例来说,所述第二instruction可以是ONF发布的OpenFlowSwitchSpecification1.3.0中定义的instruction。图6为本发明实施例提供的一种forwardingelement的结构示意图。所述forwardingelement可以用于执行图1所示的方法。举例来说,所述forwardingelement可以是路由器、交换机、防火墙或者负载均衡器。参见图6,所述forwardingelement包括:接口电路601、接口电路602、存储器(memory)603、查找引擎(searchengine)604以及处理器609。所述处理器609包括指令执行电路605和指令存储器607。可选地,所述处理器609可以包括寄存器(registers)606以及数据存储器608。所述接收电路601用于通过入端口接收报文。所述处理器609与所述接收电路601耦合,所述处理器609与所述memory603耦合,所述处理器609包括指令执行电路605和指令存储器607,所述指令执行电路605和所述指令存储器607耦合,所述指令存储器607用于存储计算机指令,所述指令执行电路605通过读所述计算机指令执行如下动作:触发所述查找引擎604,以使所述查找引擎604根据所述入端口查找porttable,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口,所述porttable存储在所述memory603中。根据所述第一offset和所述第一length确定第一key。触发所述查找引擎604,以使所述查找引擎604根据所述第一key查找所述第一表,确定第一instruction。根据所述第一instruction处理所述报文。举例来说,所述处理器609可以通过交叉开关(crossbar)与所述存储器603耦合。所述处理器609可以通过crossbar与所述查找引擎604耦合。举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述porttable的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。图7为所述porttable的表项的格式示意图。图7中的入端口701、第一偏移702、第一长度703以及第一表的标识704分别对应所述入端口、所述第一offset、所述第一length以及所述第一表的标识。举例来说,所述第一表可以是MAC协议表、ARP表、FIB或者MPLS标签表。举例来说,所述第一key可以是所述报文中的datasegment。所述第一key也可以是metedata中的datasegment。所述metedata存储在registers中。举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。举例来说,所述第一instruction可以是ONF发布的OpenFlowSwitchSpecification1.3.0中定义的instruction。上述技术方案中,所述forwardingelement根据所述入端口确定所述第一offset和所述第一length。所述forwardingelement根据所述第一offset和所述第一length确定所述第一key。所述forwardingelement根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwardingelement不需要理解所述报文的数据格式。可以使得所述forwardingelement灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。可选地,图6所示的forwardingelement中,所述查找引擎604还用于获取所述报文中的第一datasegment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一datasegment的长度为所述第一length。所述指令执行电路605还用于确定所述第一datasegment为所述第一key。所述处理器还包括数据存储器608,所述数据存储器608与所述指令执行电路605耦合,所述报文存储在所述数据存储器608中。举例来说,所述第一datasegment的起始位置根据所述第一offset确定具体可以是所述第一datasegment的起始位置可以用第一baseoffset与所述第一offset的和进行标识。所述第一baseoffset为0。上述技术方案中,所述第一key来源于所述报文。可选地,图6所示的forwardingelement中,所述查找引擎604还用于获取metedata中的第二datasegment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二datasegment的长度为所述第一length。所述指令执行电路605还用于确定所述第二datasegment为所述第一key。举例来说,所述第二datasegment的起始位置根据所述第一offset确定具体可以是所述第二datasegment的起始位置可以用第二baseoffset与所述第一offset的和进行标识。所述第二baseoffset为0。上述技术方案中,所述第一key来源于所述metedata。可选地,图6所示的forwardingelement中,所述处理器609还包括registers606,所述registers606与所述指令执行电路605耦合,所述metedata存储在所述registers606中。可选地,图6所示的forwardingelement中,所述metedata存储在所述memory603中。可选地,图6所示的forwardingelement中,所述第一instruction用于指示所述指令执行电路执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counterupdate、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的baseoffset。举例来说,修改所述报文可以是删除所述报文中的datasegment、替换所述报文中的datasegment或者在所述报文中插入datasegment。举例来说,所述checksum可以是IPchecksum、TCPchecksum或者UDPchecksum。举例来说,发送所述报文的执行主体可以是所述接口电路602。可选地,图6所示的forwardingelement中,所述指令执行电路605还用于:根据所述第一表确定所述报文的baseoffset、第二offset、第二length和第二表的标识,所述报文的baseoffset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。所述指令执行电路605还用于:根据所述报文的baseoffset、所述第二offset和所述第二length确定第二key。所述指令执行电路605还用于触发所述查找引擎604,以使所述查找引擎604根据所述第二key查找所述第二表,确定第二instruction。所述指令执行电路605还用于根据所述第二instruction处理所述报文。举例来说,所述baseoffset等于所述第一baseoffset与所述第一offset的和。举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述baseoffset是多个baseoffset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个baseoffset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。举例来说,所述第二instruction可以是ONF发布的OpenFlowSwitchSpecification1.3.0中定义的instruction。举例来说,所述第二表的表项包含所述第二key和所述第二instruction。图8为所述第二表项的格式示意图。图8中的第二关键字801和第二指令802分别对应所述第二key和所述第二instruction。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1