CN106850442A - 报文处理方法和转发设备 - Google Patents
报文处理方法和转发设备 Download PDFInfo
- Publication number
- CN106850442A CN106850442A CN201710071321.4A CN201710071321A CN106850442A CN 106850442 A CN106850442 A CN 106850442A CN 201710071321 A CN201710071321 A CN 201710071321A CN 106850442 A CN106850442 A CN 106850442A
- Authority
- CN
- China
- Prior art keywords
- message
- offset
- length
- forwarding element
- key
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- 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/54—Organization of routing tables
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明实施例提供了一种报文处理方法,包括:转发设备通过入端口接收报文;所述转发设备根据所述入端口查找端口表,确定第一偏移、第一长度和第一表的标识,所述第一偏移、所述第一长度和所述第一表的标识对应所述入端口;所述转发设备根据所述第一偏移和所述第一长度确定第一关键字,根据所述第一关键字查找所述第一表,确定第一指令;所述转发设备根据所述第一指令处理所述报文。此外,还提供了相应的转发设备。上述技术方案中,对报文进行处理前,转发设备不需要理解所述报文的数据格式。可以使得转发设备灵活地支持不同数据格式的报文。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及报文处理方法和转发设备(forwardingelement)。
背景技术
现有技术中,forwarding element接收到报文后,需要确定报文数据格式,例如确定报文是网际协议(Internet Protocol,IP)数据包或者多协议标签交换(Multipleprotocol Label Switching,MPLS)报文,从而对所述报文进行处理。例如,交换机收到以太报文后,需要根据端口表确定所述以太报文的协议为媒体访问控制(Media AccessControl,MAC)协议。然后,所述交换机根据MAC协议,对所述以太报文的MAC协议头进行解析,从而获取所述以太报文的目的MAC协议地址。
发明内容
本发明实施例提供了报文处理方法和forwarding element。对报文进行处理前,forwarding element不需要理解所述报文的数据格式。可以使得forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
第一方面,提供了一种报文处理方法,包括:
forwarding element通过入端口接收报文;
所述forwarding element根据所述入端口查找端口表(port table),确定第一偏移(offset)、第一长度(length)和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口;
所述forwarding element根据所述第一offset和所述第一length确定第一关键字(key),根据所述第一key查找所述第一表,确定第一指令(instruction);以及
所述forwarding element根据所述第一instruction处理所述报文。
上述技术方案中,所述forwarding element根据所述入端口确定所述第一offset和所述第一length。所述forwarding element根据所述第一offset和所述第一length确定所述第一key。所述forwarding element根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwarding element不需要理解所述报文的数据格式。可以使得所述forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
第一方面的第一种可能的实现方式中,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
所述forwarding element获取所述报文中的第一数据段(data segment),所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length;以及
所述forwarding element确定所述第一data segment为所述第一key。
第一方面的第二种可能的实现方式中,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
所述forwarding element获取中间数据(metedata)中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length;以及
所述forwarding element确定所述第二data segment为所述第一key。
根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,
所述metedata存储于所述forwarding element的寄存器(registers);或者
所述metedata存储于所述forwarding element的存储器(memory)。
根据第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,
所述第一instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的校验和(checksum)、写metedata、读metedata、计数器更新(counter update)、对所述报文进行承诺访问速率(committed access rate,CAR)处理,丢弃所述报文,发送所述报文和修改所述报文的基础偏移(base offset)。
根据第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,
所述forwarding element根据所述第一指令处理所述报文包括:
所述forwarding element根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;
所述forwarding element根据所述报文的base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及
所述forwarding element根据所述第二instruction处理所述报文。
第二方面,提供了一种forwarding element,包括:
接收电路,用于通过入端口接收报文;
查找单元,用于根据所述入端口查找port table,确定第一offset、第一length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口;
确定单元,用于根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定instruction;以及
处理单元,用于根据所述instruction处理所述报文。
上述技术方案中,所述forwarding element根据所述入端口确定所述第一offset和所述第一length。所述forwarding element根据所述第一offset和所述第一length确定所述第一key。所述forwarding element根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwarding element不需要理解所述报文的数据格式。可以使得所述forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
第二方面的第一种可能的实现方式中,所述查找单元用于:
获取所述报文中的第一data segment,所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length;以及
确定所述第一data segment为所述第一key。
第二方面的第二种可能的实现方式中,所述查找单元用于:
获取metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length;以及
确定所述第二data segment为所述第一key。
根据第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括registers或者memory;
所述metedata存储于所述registers或者所述memory。
根据第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,
所述instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
根据第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,
所述处理单元用于:
根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;
根据所述报文的base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及
根据所述第二instruction处理所述报文。
第三方面,提供了一种forwarding element,包括:接收电路、处理器、查找引擎(search engine)以及memory。
所述接收电路用于通过入端口接收报文。
所述处理器与所述接收电路耦合,所述处理器与所述memory耦合,所述处理器包括指令执行电路和指令存储器,所述指令执行电路和所述指令存储器耦合,所述指令存储器用于存储计算机指令,所述指令执行电路通过读所述计算机指令执行如下动作:
触发所述search engine,以使所述search engine根据所述入端口查找porttable,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口,所述port table存储在所述memory中;
根据所述第一offset和所述第一length确定第一key;
触发所述search engine,以使所述search engine根据所述第一key查找所述第一表,确定第一instruction;以及
根据所述第一instruction处理所述报文。
第三方面的第一种可能的实现方式中,
所述search engine还用于获取所述报文中的第一data segment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length;
所述指令执行电路还用于确定所述第一data segment为所述第一key。
所述处理器还包括数据存储器,所述数据存储器与所述指令执行电路耦合,所述报文存储在所述数据存储器中。
第三方面的第二种可能的实现方式中,
所述search engine还用于获取metedata中的第二data segment,所述第二datasegment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length;
所述指令执行电路还用于确定所述第二data segment为所述第一key。
根据第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,
所述处理器还包括registers,所述registers与所述指令执行电路耦合,所述metedata存储在所述registers中。
根据第三方面的第二种可能的实现方式,在第三方面的第四种可能的实现方式中,
所述metedata存储在所述memory中。
根据第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或者第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,
所述第一instruction用于指示所述指令执行电路执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
根据第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或者第三方面的第四种可能的实现方式,在第三方面的第六种可能的实现方式中,
所述指令执行电路还用于:
根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。
所述指令执行电路还用于:
根据所述报文的base offset、所述第二offset和所述第二length确定第二key。
所述指令执行电路还用于触发所述search engine,以使所述search engine根据所述第二key查找所述第二表,确定第二instruction。
所述指令执行电路还用于根据所述第二instruction处理所述报文。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种报文处理方法的流程示意图;
图2是本发明实施例提供的一种报文处理方法的流程示意图;
图3是本发明实施例提供的一种报文处理方法的流程示意图;
图4是本发明实施例提供的一种报文处理方法的流程示意图;
图5是本发明实施例提供的一种转发设备的结构示意图;
图6是本发明实施例提供的一种转发设备的结构示意图;
图7是本发明实施例提供的一种表项的格式示意图;
图8是本发明实施例提供的一种表项的格式示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种报文处理方法的流程示意图。参见图1,所述方法包括:
102、forwarding element通过入端口接收报文。
举例来说,所述forwarding element可以是路由器、交换机、防火墙或者负载均衡器。
举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。
举例来说,102的执行主体可以是接收电路。
104、所述forwarding element根据所述入端口查找port table,确定第一offset、第一length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口。
举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述port table的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。
举例来说,所述第一表可以是MAC协议表、地址解析协议(Address ResolutionProtocol,ARP)表、转发信息库(forwarding information base,FIB)或者MPLS标签表。
举例来说,104的执行主体可以是search engine。
106、所述forwarding element根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定第一instruction。
举例来说,所述第一key可以是所述报文中的data segment。所述第一key也可以是metedata中的data segment。所述metedata存储在registers中。
举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。
举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。
举例来说,106的执行主体可以是search engine以及指令执行电路。
108、所述forwarding element根据所述第一instruction处理所述报文。
举例来说,所述第一instruction可以是标准制定组织(Standard SettingOrganization,SSO)开放网络基础(Open Networking Foundation,ONF)发布的《开放流交换机规范1.3.0》(OpenFlow Switch Specification1.3.0)中定义的instruction。
举例来说,108的执行主体可以是网络处理器(network processor,NP)。具体来说,108的执行主体可以是所述NP中的指令执行电路。
上述技术方案中,所述forwarding element根据所述入端口确定所述第一offset和所述第一length。所述forwarding element根据所述第一offset和所述第一length确定所述第一key。所述forwarding element根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwarding element不需要理解所述报文的数据格式。可以使得所述forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
可选地,图1所示的方法中,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
202、所述forwarding element获取所述报文中的第一data segment,所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length。
204、所述forwarding element确定所述第一data segment为所述第一key。
关于202和204,具体请参见图2。
举例来说,所述第一data segment的起始位置根据所述第一offset确定具体可以是所述第一data segment的起始位置可以用第一base offset与所述第一offset的和进行标识。所述第一base offset为0。
上述技术方案中,所述第一key来源于所述报文。
可选地,图1所示的方法中,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
302、所述forwarding element获取metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length。
304、所述forwarding element确定所述第二data segment为所述第一key。
关于302和304,具体请参见图3。
举例来说,所述第二data segment的起始位置根据所述第一offset确定具体可以是所述第二data segment的起始位置可以用第二base offset与所述第一offset的和进行标识。所述第二base offset为0。
上述技术方案中,所述第一key来源于所述metedata。
可选地,图1所示的方法中,
所述metedata存储于所述forwarding element的registers。
举例来说,所述registers可以位于NP中。
可选地,图1所示的方法中,
所述metedata存储于所述forwarding element的memory。
举例来说,所述memory可以与所述NP耦合。
可选地,图1所示的方法中,
所述第一instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
举例来说,修改所述报文可以是删除所述报文中的data segment、替换所述报文中的data segment或者在所述报文中插入data segment。
举例来说,所述checksum可以是IP checksum、传输控制协议(TransmissionControl Protocol,TCP)checksum或者用户数据报协议(User Datagram Protocol,UDP)checksum。
可选地,图1所示的方法中,
所述forwarding element根据所述第一instruction处理所述报文包括:
402、所述forwarding element根据所述第一表确定base offset、第二offset、第二length和第二表的标识,所述base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。
举例来说,所述base offset等于所述第一base offset与所述第一offset的和。
404、所述forwarding element根据所述base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction。
举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述base offset是多个base offset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个base offset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。
举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。
406、所述forwarding element根据所述第二instruction处理所述报文。
举例来说,所述第二instruction可以是ONF发布的OpenFlow SwitchSpecification 1.3.0中定义的instruction。
关于402、404和406,具体请参考图4。
图5为本发明实施例提供的一种forwarding element的结构示意图。所述forwarding element可以用于执行图1所示的方法。举例来说,所述forwarding element可以是路由器、交换机、防火墙或者负载均衡器。参见图5,所述forwarding element包括:
接收电路502,用于通过入端口接收报文。
举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。
查找单元504,用于根据所述入端口查找port table,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口。
举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述port table的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。
举例来说,所述第一表可以是MAC协议表、ARP表、FIB或者MPLS标签表。
举例来说,查找单元504可以是search engine。
确定单元506,用于根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定第一instruction。
举例来说,所述第一key可以是所述报文中的data segment。所述第一key也可以是metedata中的data segment。所述metedata存储在registers中。
举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。
举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。
举例来说,确定单元506可以是search engine以及指令执行电路。
处理单元508,用于根据所述第一instruction处理所述报文。
举例来说,所述第一instruction可以是ONF发布的OpenFlow SwitchSpecification 1.3.0中定义的instruction。
举例来说,处理单元508可以是NP。具体来说,可以是所述NP中的指令执行电路。
上述技术方案中,所述forwarding element根据所述入端口确定所述第一offset和所述第一length。所述forwarding element根据所述第一offset和所述第一length确定所述第一key。所述forwarding element根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwarding element不需要理解所述报文的数据格式。可以使得所述forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
可选地,图5所述的forwarding element中,所述查找单元504用于:
获取所述报文中的第一data segment,所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length。
确定所述第一data segment为所述第一key。
举例来说,所述第一data segment的起始位置根据所述第一offset确定具体可以是所述第一data segment的起始位置可以用第一base offset与所述第一offset的和进行标识。所述第一base offset为0。
上述技术方案中,所述第一key来源于所述报文。
可选地,图5所述的forwarding element中,所述查找单元504用于:
获取metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length。
确定所述第二data segment为所述第一key。
举例来说,所述第二data segment的起始位置根据所述第一offset确定具体可以是所述第二data segment的起始位置可以用第二base offset与所述第一offset的和进行标识。所述第二base offset为0。
上述技术方案中,所述第一key来源于所述metedata。
可选地,图5所述的forwarding element中,还包括registers或者memory。
所述metedata存储于所述registers或者所述memory。
可选地,图5所述的forwarding element中,所述第一instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
举例来说,修改所述报文可以是删除所述报文中的data segment、替换所述报文中的data segment或者在所述报文中插入data segment。
举例来说,所述checksum可以是IP checksum、传输控制协议TCP checksum或者UDP checksum。
可选地,图5所述的forwarding element中,所述处理单元508用于:
根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。
根据所述报文的base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction。
根据所述第二instruction处理所述报文。
举例来说,所述base offset等于所述第一base offset与所述第一offset的和。
举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述base offset是多个base offset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个base offset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。
举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。
举例来说,所述第二instruction可以是ONF发布的OpenFlow SwitchSpecification 1.3.0中定义的instruction。
图6为本发明实施例提供的一种forwarding element的结构示意图。所述forwarding element可以用于执行图1所示的方法。举例来说,所述forwarding element可以是路由器、交换机、防火墙或者负载均衡器。参见图6,所述forwarding element包括:接口电路601、接口电路602、存储器(memory)603、查找引擎(search engine)604以及处理器609。所述处理器609包括指令执行电路605和指令存储器607。可选地,所述处理器609可以包括寄存器(registers)606以及数据存储器608。
所述接收电路601用于通过入端口接收报文。
所述处理器609与所述接收电路601耦合,所述处理器609与所述memory603耦合,所述处理器609包括指令执行电路605和指令存储器607,所述指令执行电路605和所述指令存储器607耦合,所述指令存储器607用于存储计算机指令,所述指令执行电路605通过读所述计算机指令执行如下动作:
触发所述查找引擎604,以使所述查找引擎604根据所述入端口查找port table,确定第一offset、第一长度length和第一表的标识,所述第一offset、所述第一length和所述第一表的标识对应所述入端口,所述port table存储在所述memory603中。
根据所述第一offset和所述第一length确定第一key。
触发所述查找引擎604,以使所述查找引擎604根据所述第一key查找所述第一表,确定第一instruction。
根据所述第一instruction处理所述报文。
举例来说,所述处理器609可以通过交叉开关(crossbar)与所述存储器603耦合。所述处理器609可以通过crossbar与所述查找引擎604耦合。
举例来说,所述报文可以是IP数据包,以太报文或者MPLS报文。
举例来说,所述第一offset、所述第一length和所述第一表的标识存储在与所述入端口匹配的所述port table的表项中。所述第一offset可以是一个offset,也可以是多个offset。所述第一length可以是一个length,也可以是多个length。所述多个offset与所述多个length一一对应。
图7为所述port table的表项的格式示意图。图7中的入端口701、第一偏移702、第一长度703以及第一表的标识704分别对应所述入端口、所述第一offset、所述第一length以及所述第一表的标识。
举例来说,所述第一表可以是MAC协议表、ARP表、FIB或者MPLS标签表。
举例来说,所述第一key可以是所述报文中的data segment。所述第一key也可以是metedata中的data segment。所述metedata存储在registers中。
举例来说,所述第一key可以是一个key或者多个key。所述多个key与所述多个offset一一对应。所述多个key与所述多个length一一对应。
举例来说,所述第一key可以只来源于所述报文,也可以只来源于所述metedata。所述第一key也可以来源于所述报文以及所述metedata。
举例来说,所述第一instruction可以是ONF发布的OpenFlow SwitchSpecification 1.3.0中定义的instruction。
上述技术方案中,所述forwarding element根据所述入端口确定所述第一offset和所述第一length。所述forwarding element根据所述第一offset和所述第一length确定所述第一key。所述forwarding element根据所述第一key确定所述第一instruction,从而处理所述报文。因此,对所述报文进行处理前,所述forwarding element不需要理解所述报文的数据格式。可以使得所述forwarding element灵活地支持不同数据格式的报文。当需要支持新的数据格式时,不需要更新硬件或者软件就可以对该数据格式的报文进行处理。
可选地,图6所示的forwarding element中,所述查找引擎604还用于获取所述报文中的第一data segment,所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length。
所述指令执行电路605还用于确定所述第一data segment为所述第一key。
所述处理器还包括数据存储器608,所述数据存储器608与所述指令执行电路605耦合,所述报文存储在所述数据存储器608中。
举例来说,所述第一data segment的起始位置根据所述第一offset确定具体可以是所述第一data segment的起始位置可以用第一base offset与所述第一offset的和进行标识。所述第一base offset为0。
上述技术方案中,所述第一key来源于所述报文。
可选地,图6所示的forwarding element中,所述查找引擎604还用于获取metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length。
所述指令执行电路605还用于确定所述第二data segment为所述第一key。
举例来说,所述第二data segment的起始位置根据所述第一offset确定具体可以是所述第二data segment的起始位置可以用第二base offset与所述第一offset的和进行标识。所述第二base offset为0。
上述技术方案中,所述第一key来源于所述metedata。
可选地,图6所示的forwarding element中,
所述处理器609还包括regis ters606,所述registers606与所述指令执行电路605耦合,所述metedata存储在所述registers606中。
可选地,图6所示的forwarding element中,
所述metedata存储在所述memory603中。
可选地,图6所示的forwarding element中,
所述第一instruction用于指示所述指令执行电路执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
举例来说,修改所述报文可以是删除所述报文中的data segment、替换所述报文中的data segment或者在所述报文中插入data segment。
举例来说,所述checksum可以是IP checksum、TCP checksum或者UDP checksum。
举例来说,发送所述报文的执行主体可以是所述接口电路602。
可选地,图6所示的forwarding element中,
所述指令执行电路605还用于:
根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key。
所述指令执行电路605还用于:
根据所述报文的base offset、所述第二offset和所述第二length确定第二key。
所述指令执行电路605还用于触发所述查找引擎604,以使所述查找引擎604根据所述第二key查找所述第二表,确定第二instruction。
所述指令执行电路605还用于根据所述第二instruction处理所述报文。
举例来说,所述base offset等于所述第一base offset与所述第一offset的和。
举例来说,所述第二key可以是一个key或者多个key。如果所述第二key是多个key,则所述base offset是多个base offset,所述第二offset是多个第二offset,所述第二length是多个第二length。所述多个base offset与所述多个key一一对应。所述多个第二offset与所述多个key一一对应。所述多个第二length与所述多个key一一对应。
举例来说,所述第二key可以只来源于所述报文,也可以只来源于所述metedata。所述第二key也可以来源于所述报文以及所述metedata。
举例来说,所述第二instruction可以是ONF发布的OpenFlow SwitchSpecification 1.3.0中定义的instruction。
举例来说,所述第二表的表项包含所述第二key和所述第二instruction。图8为所述第二表项的格式示意图。图8中的第二关键字801和第二指令802分别对应所述第二key和所述第二instruction。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种报文处理方法,其特征在于,包括:
转发设备forwarding element通过入端口接收报文;
所述forwarding element确定第一偏移offset、第一长度length和第一表的标识;
所述forwarding element根据所述第一offset和所述第一length确定第一关键字key,根据所述第一key查找所述第一表,确定第一指令instruction;以及
所述forwarding element根据所述第一instruction处理所述报文。
2.根据权利要求1所述的方法,其特征在于,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
所述forwarding element获取所述报文中的第一数据段data segment,所述第一datasegment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length;以及
所述forwarding element确定所述第一data segment为所述第一key。
3.根据权利要求1所述的方法,其特征在于,所述forwarding element根据所述第一offset和所述第一length确定所述第一key包括:
所述forwarding element获取中间数据metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length;以及
所述forwarding element确定所述第二data segment为所述第一key。
4.根据权利要求3所述的方法,其特征在于,
所述metedata存储于所述forwarding element的寄存器registers;或者
所述metedata存储于所述forwarding element的存储器memory。
5.根据权利要求1至4中任一所述的方法,其特征在于,
所述第一instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的校验和checksum、写metedata、读metedata、计数器更新counter update、对所述报文进行承诺访问速率CAR处理,丢弃所述报文,发送所述报文和修改所述报文的基础偏移base offset。
6.根据权利要求1至4中任一所述的方法,其特征在于,
所述forwarding element根据所述第一指令处理所述报文包括:
所述forwarding element根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;
所述forwarding element根据所述报文的base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及
所述forwarding element根据所述第二instruction处理所述报文。
7.根据权利要求1至6中任一所述的方法,其特征在于,
所述forwarding element是路由器、交换机、防火墙或者负载均衡器。
8.一种forwarding element,其特征在于,包括:
接收电路,用于通过入端口接收报文;
查找单元,用于确定第一offset、第一长度length和第一表的标识;
确定单元,用于根据所述第一offset和所述第一length确定第一key,根据所述第一key查找所述第一表,确定第一instruction;以及
处理单元,用于根据所述第一instruction处理所述报文。
9.根据权利要求8所述的forwarding element,其特征在于,所述查找单元用于:
获取所述报文中的第一data segment,所述第一data segment的起始位置根据所述第一offset确定,所述第一data segment的长度为所述第一length;以及
确定所述第一data segment为所述第一key。
10.根据权利要求8所述的forwarding element,其特征在于,所述查找单元用于:
获取metedata中的第二data segment,所述第二data segment的起始位置根据所述第一offset确定,所述第二data segment的长度为所述第一length;以及
确定所述第二data segment为所述第一key。
11.根据权利要求10所述的forwarding element,其特征在于,还包括registers或者memory;
所述metedata存储于所述registers或者所述memory。
12.根据权利要求8至11中任一所述的forwarding element,其特征在于,
所述第一instruction用于指示所述forwarding element执行操作,所述操作包括下述操作中的至少一个:修改所述报文、计算所述报文的checksum、写metedata、读metedata、counter update、对所述报文进行CAR处理,丢弃所述报文,发送所述报文和修改所述报文的base offset。
13.根据权利要求8至11中任一所述的forwarding element,其特征在于,所述处理单元用于:
根据所述第一表确定所述报文的base offset、第二offset、第二length和第二表的标识,所述报文的base offset、所述第二offset、所述第二length和所述第二表的标识对应所述第一key;
根据所述报文的base offset、所述第二offset和所述第二length确定第二key,根据所述第二key查找所述第二表,确定第二instruction;以及
根据所述第二instruction处理所述报文。
14.根据权利要求8至13中任一所述的forwarding element,其特征在于,
所述forwarding element是路由器、交换机、防火墙或者负载均衡器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710071321.4A CN106850442B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710071321.4A CN106850442B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
PCT/CN2013/071088 WO2014117327A1 (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
CN201380000072.XA CN104205742B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000072.XA Division CN104205742B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106850442A true CN106850442A (zh) | 2017-06-13 |
CN106850442B CN106850442B (zh) | 2019-01-08 |
Family
ID=51261389
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000072.XA Active CN104205742B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
CN201710071321.4A Active CN106850442B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000072.XA Active CN104205742B (zh) | 2013-01-29 | 2013-01-29 | 报文处理方法和转发设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9749262B2 (zh) |
EP (3) | EP2942913B1 (zh) |
JP (1) | JP6070863B2 (zh) |
CN (2) | CN104205742B (zh) |
ES (1) | ES2766861T3 (zh) |
WO (1) | WO2014117327A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109688148A (zh) * | 2018-12-29 | 2019-04-26 | 苏州睿安芯微电子有限公司 | 一种基于软件配置的自定转发协议安全网络的系统及方法 |
CN109729117A (zh) * | 2017-10-30 | 2019-05-07 | 华为技术有限公司 | 一种报文处理的方法、芯片系统以及计算机存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017034723A (ja) * | 2016-11-10 | 2017-02-09 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | パケット処理方法及び転送要素 |
CN111327546B (zh) * | 2020-02-25 | 2022-01-28 | 杭州迪普科技股份有限公司 | 一种报文转发的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471923A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 发送协议报文、识别协议报文类型的方法、设备和系统 |
CN101599960A (zh) * | 2009-05-27 | 2009-12-09 | 南京欣网视讯科技股份有限公司 | 一种基于协议分析的p2p流量识别方法 |
CN102148768A (zh) * | 2011-05-26 | 2011-08-10 | 杭州华三通信技术有限公司 | 报文转发方法和报文转发设备 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266706B1 (en) * | 1997-09-15 | 2001-07-24 | Effnet Group Ab | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
EA200000328A1 (ru) * | 1997-09-15 | 2000-10-30 | Эффнет Груп Аб | Способ и система для быстрых поисков маршрутизации |
US6347087B1 (en) * | 1998-10-05 | 2002-02-12 | Packet Engines Incorporated | Content-based forwarding/filtering in a network switching device |
EP1168727B1 (en) * | 2000-06-19 | 2006-05-03 | Broadcom Corporation | Memory management unit architecture for switch fabric |
US7813346B1 (en) * | 2001-11-21 | 2010-10-12 | Juniper Networks, Inc. | Filter-based forwarding in a network |
US7289498B2 (en) * | 2002-06-04 | 2007-10-30 | Lucent Technologies Inc. | Classifying and distributing traffic at a network node |
US20050114393A1 (en) * | 2003-11-24 | 2005-05-26 | Alcatel | Dynamic forwarding method using binary search |
US7555594B2 (en) * | 2004-07-22 | 2009-06-30 | Netlogic Microsystems, Inc. | Range representation in a content addressable memory (CAM) using an improved encoding scheme |
US20060212426A1 (en) * | 2004-12-21 | 2006-09-21 | Udaya Shakara | Efficient CAM-based techniques to perform string searches in packet payloads |
CN101047649A (zh) * | 2007-04-05 | 2007-10-03 | 华为技术有限公司 | 一种转发数据流的方法和设备 |
CN101267331A (zh) * | 2008-04-23 | 2008-09-17 | 华为技术有限公司 | 一种组播转发表查找方法和装置 |
US8375211B2 (en) * | 2009-04-21 | 2013-02-12 | International Business Machines Corporation | Optimization of signing soap body element |
EP2641197B1 (en) * | 2010-11-16 | 2020-02-19 | Tibco Software Inc. | Fast matching for content-based addresssing |
CN101989954B (zh) * | 2010-11-16 | 2014-09-10 | 中兴通讯股份有限公司 | 报文分片方法和网络转发设备 |
CN102143074B (zh) | 2011-03-25 | 2015-09-16 | 中兴通讯股份有限公司 | 网络负荷的分担方法、系统及网络处理器 |
CN102333039B (zh) * | 2011-10-25 | 2014-09-17 | 华为技术有限公司 | 一种转发报文的方法、生成表项的方法及装置 |
CN102780619B (zh) | 2012-07-23 | 2015-03-11 | 北京星网锐捷网络技术有限公司 | 一种处理报文的方法及装置 |
-
2013
- 2013-01-29 CN CN201380000072.XA patent/CN104205742B/zh active Active
- 2013-01-29 JP JP2015555516A patent/JP6070863B2/ja active Active
- 2013-01-29 ES ES17156167T patent/ES2766861T3/es active Active
- 2013-01-29 EP EP13874172.3A patent/EP2942913B1/en active Active
- 2013-01-29 EP EP17156167.3A patent/EP3255844B1/en active Active
- 2013-01-29 EP EP19199083.7A patent/EP3687123B1/en active Active
- 2013-01-29 WO PCT/CN2013/071088 patent/WO2014117327A1/zh active Application Filing
- 2013-01-29 CN CN201710071321.4A patent/CN106850442B/zh active Active
-
2015
- 2015-07-28 US US14/811,611 patent/US9749262B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471923A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 发送协议报文、识别协议报文类型的方法、设备和系统 |
CN101599960A (zh) * | 2009-05-27 | 2009-12-09 | 南京欣网视讯科技股份有限公司 | 一种基于协议分析的p2p流量识别方法 |
CN102148768A (zh) * | 2011-05-26 | 2011-08-10 | 杭州华三通信技术有限公司 | 报文转发方法和报文转发设备 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109729117A (zh) * | 2017-10-30 | 2019-05-07 | 华为技术有限公司 | 一种报文处理的方法、芯片系统以及计算机存储介质 |
CN109729117B (zh) * | 2017-10-30 | 2020-10-27 | 华为技术有限公司 | 一种报文处理的方法、芯片系统以及计算机存储介质 |
CN109688148A (zh) * | 2018-12-29 | 2019-04-26 | 苏州睿安芯微电子有限公司 | 一种基于软件配置的自定转发协议安全网络的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104205742B (zh) | 2017-04-12 |
ES2766861T3 (es) | 2020-06-15 |
JP6070863B2 (ja) | 2017-02-01 |
EP2942913A1 (en) | 2015-11-11 |
EP3255844A1 (en) | 2017-12-13 |
EP2942913B1 (en) | 2017-06-21 |
US20150334055A1 (en) | 2015-11-19 |
WO2014117327A1 (zh) | 2014-08-07 |
CN106850442B (zh) | 2019-01-08 |
EP2942913A4 (en) | 2016-01-20 |
EP3687123A1 (en) | 2020-07-29 |
US9749262B2 (en) | 2017-08-29 |
EP3255844B1 (en) | 2019-10-30 |
JP2016506217A (ja) | 2016-02-25 |
CN104205742A (zh) | 2014-12-10 |
EP3687123B1 (en) | 2022-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8312066B2 (en) | Hash collision resolution with key compression in a MAC forwarding data structure | |
CN104184664B (zh) | 路由转发表项生成方法及装置 | |
JP6633775B2 (ja) | パケット伝送 | |
CN109981493B (zh) | 一种用于配置虚拟机网络的方法和装置 | |
CN104205742B (zh) | 报文处理方法和转发设备 | |
CN104394083B (zh) | 转发表项处理的方法、报文转发的方法及其装置和系统 | |
WO2015074182A1 (zh) | 一种基于流表的表项寻址方法、交换机及控制器 | |
US10574570B2 (en) | Communication processing method and apparatus | |
CN106031104B (zh) | 数据报文的转发方法、装置及设备 | |
EP3200405B1 (en) | Layer-3-forwarding device route table capacity expansion method and forwarding device | |
CN107547364A (zh) | 路由下发方法、装置和网络设备 | |
WO2017000790A1 (zh) | 网关设备响应网络连通性方法和装置 | |
CN107276916A (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN104205745B (zh) | 报文处理的方法与设备 | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN103986660B (zh) | 加载微码的装置以及加载微码的方法 | |
CN103534999A (zh) | 报文转发的方法及装置 | |
CN104219160B (zh) | 生成输入参数的方法及设备 | |
CN106416150B (zh) | 一种路由查询方法和网络设备 | |
WO2015184584A1 (zh) | 开放流流表间信息传递的方法、控制器、交换机及系统 | |
CN104394081B (zh) | 一种数据处理方法及装置 | |
CN106506378B (zh) | Mac地址表的更新方法和装置 | |
WO2016183732A1 (zh) | 一种数据包转发方法和网络设备 | |
JP2017034723A (ja) | パケット処理方法及び転送要素 | |
CN111431875B (zh) | 一种下发插入规则的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |