CN107517161A - 一种网络处理器查表方法、网络处理器和查表系统 - Google Patents
一种网络处理器查表方法、网络处理器和查表系统 Download PDFInfo
- Publication number
- CN107517161A CN107517161A CN201610428430.2A CN201610428430A CN107517161A CN 107517161 A CN107517161 A CN 107517161A CN 201610428430 A CN201610428430 A CN 201610428430A CN 107517161 A CN107517161 A CN 107517161A
- Authority
- CN
- China
- Prior art keywords
- look
- request
- tabling look
- controller
- key assignments
- 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
- 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
- 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
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明实施例公开了一种网络处理器查表方法、网络处理器和查表系统;网络处理器中的微引擎可以根据接收到的报文生成查表类型的查表请求,并将查表请求转发给集中控制器,集中控制器根据查表请求的查表类型确定该查表请求对应的控制器,复制对应个数的查表请求,并分发至多个控制器,控制器根据查表类型组装查表键值,查询与自身连接的存储器。通过本发明实施例的实施,将查表请求复制并转发给与其查表类型相同的目标控制器,可以保证发出一个查表请求有多个控制器并执行,有效地降低了生成查表请求的微引擎和控制器的交互次数,解决了现有技术中微码的查表效率低的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种网络处理器查表方法、网络处理器和查表系统。
背景技术
现今网络发展速度惊人,网络流量的增长及新业务的出现,需要网络设备具有线速和灵活的处理能力。网络处理器凭借其高速处理及灵活的可编程性,已成为当今网络中数据处理的有效解决方案。
当报文到达网络处理器的时候,网络处理器根据报文中的包头信息查不同的存储器获取表项内容,从而对报文的进行丢弃、转发或上交等处理。通过查询ACL(AccessControl List,访问控制列表)可以得到对报文的处理方式是丢弃、转发还是上交,查询ACL的方式是查TCAM(Tenary Content Addressable Memory,三重内容可寻址存储器)进行报文的特征匹配。报文的转发方式也有多种,不同的转发方式,需要查找的信息不同,例如报文需要进行三层转发,则网络处理器需要根据报文的目的IP查找路由表获取报文的下一跳地址进行转发;报文需要进行二层转发,则网络处理器需要根据报文的目的MAC地址查找出相应的端口进行转发。
参见图1,示出了现有技术中,典型的网络处理器的结构,网络处理器的核心单元是微引擎,微码驻留在微引擎中,报文进入微引擎就触发微码执行查表操作,微码的长度和查表效率决定了网络处理器的转发性能。
对于存储器而言,通常控制面CPU及转发面微码都会访问,CPU主要对其存储的表项进行管理,包括添加、删除、更新等操作,微码主要用于查找表操作。参见图1,CPU及微引擎通过控制器与存储器相连,控制器典型结构如图2所示,主要包括请求仲裁单元,发送/接收缓存单元和接收仲裁单元,仲裁单元主要对来自微引擎及CPU的访问请求进行仲裁,缓存单元包括一个先进先出队列,用于缓存访问键值及响应结果。
网络处理器通常为流水线结构,其报文处理及查表示意图如图3所示,通常微码先组装一个查表键值,提交键值到相应的存储器控制器进行处理,存储器及控制器返回查表结果给微引擎,微引擎得到结果后根据查表结果进行下一步处理,再次组装键值查询其他的存储器,明显,现有的网络处理器查找表项时,一次只能查询一个存储器,得到一个查表结果,当需要的查表结果较多的时候,微引擎需要与控制器的交互次数也较多,微码的查表效率低,存储器的查表带宽的利用率低,微引擎的负担重、网络处理器的芯片的转发性能低。
发明内容
本发明要解决的主要技术问题是,提供一种网络处理器查表方法、网络处理器和查表系统,解决现有技术中微码的查表效率低的问题。
为解决上述问题,本发明实施例提供一种网络处理器查表方法,包括:
接收报文,根据报文生成查表请求,查表请求包含的键值对应于同一查表类型;
根据查表请求的查表类型确定查表请求对应的多个控制器,发送查表请求至多个控制器;
控制多个控制器根据查表请求的查表类型组装查表键值,查询与自身连接的存储器,获取查表结果。
为解决上述问题,本发明实施例还提供一种网络处理器,包括:微引擎、集中控制器、控制器;
微引擎用于接收报文根据报文生成查表请求,并将查表请求转发给集中控制器;查表请求包含的键值对应于同一查表类型;
集中控制器用于根据查表请求的查表类型、及各控制器的查表类型,确定查表请求对应的多个控制器,复制对应个数的查表请求,并分发至多个控制器;
控制器用于接收查表请求,根据查表请求的查表类型组装查表键值,查询与控制器连接的存储器,获取查表结果。
为解决上述技术问题,本发明实施例还提供一种查表系统,包括上述的网络处理器。
本发明实施例提供的一种网络处理器查表方法、网络处理器和查表系统,利用微引擎根据接收的报文生成查表请求,该查表请求包含对应于同一查表类型的键值,明显一个报文的处理需要查询多个表,存在多个表对应的查表类型相同的情况,所以本发明的查表请求中包含的键值的查表类型相同可以保证查表请求中有查询多个表的键值,利用集中控制器根据预设的控制器与查表类型的对应关系,将查表请求复制并转发给与其查表类型相同的控制器,可以保证发出一个查表请求有多个控制器收到,这多个控制器分别根据查表请求中的键值组装自身需要的查表键值查询相应的存储器,可以达到一个查表请求查询多个存储器的效果,得到的查表结果自然也是多个,有效地降低了生成查表请求的微引擎和控制器的交互次数,解决了现有技术中微码的查表效率低的问题,降低了微引擎的负担,提高了微码的查表效率,同时也提高了存储器的查表带宽的利用率,以及芯片的转发性能。
附图说明
图1为现有技术的网络处理器的结构示意图;
图2为现有技术的控制器的结构示意图;
图3为现有技术的网络处理器利用流水线结构实现微码查表的示意图;
图4为本发明实施例一提供的网络处理器查表方法的流程图;
图5为本发明实施例二提供的网络处理器的结构示意图;
图6为本发明实施例二提供的控制器的结构示意图;
图7为本发明实施例二提供的另一种网络处理器的结构示意图;
图8为本发明实施例二提供的键值组装表的示意图;
图9本发明实施例二提供的查表请求的示意图;
图10本发明实施例二提供的查表类型为直接查表的查表请求的示意图;
图11本发明实施例二提供的查表类型为内容寻址查表的查表请求的示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
实施例一:
参见图4,本实施例提供一种网络处理器查表方法,可以通过一个查表请求得到对多个存储器的查表结果,特别适用于报文的查询表项较多的情况。
本实施例的网络处理器查表方法包括:
S101、接收报文,根据报文生成查表请求,查表请求包含的键值对应于同一查表类型;
S102、根据查表请求的查表类型确定查表请求对应的多个控制器,发送查表请求至多个控制器;
S103、控制多个控制器根据查表请求的查表类型组装查表键值,查询与自身连接的存储器,获取查表结果。
本实施例中,在网络处理器收到报文后,会根据报文生成查表请求,查表请求中包含用于查表的键值,该键值对应的查表类型相同。其中,一般是由网络处理器的微引擎生成查表请求。一般,现有技术中对一个报文而言,网络处理器需要进行多次查表,才能对其进行最终的处理,多次查表时的查表类型可能会相同,本实施例利用了这一点对现有技术的查表请求进行了改进,本实施例的查表请求中包含有现有技术中查表类型相同的多个查表请求的内容。考虑到现有技术中,利用查表请求进行查表实际上是利用查表请求中的键值进行查表,所以本实施例中在生成查表请求时,将对应于相同类型的查表请求的多个键值写入一个查表请求中。
鉴于本实施例的查表请求中的键值的查表类型相同,一个查表请求中的键值较多,可能出现键值相同的情况,为了精简查表请求的数据大小,进一步降低对发送查表请求的部件,例如微引擎的发送负担,降低对微引擎和控制器的查表带宽的需求。优选的,在根据报文生成查表请求时,若对应于同一查表类型的键值中具有相同的键值,即出现重复的键值,只将多个相同的键值的其中之一写入查表请求中即可,当该查表请求转发到对应的多个控制器后,不同的控制器可以提取同一个键值组装查表键值,查询与自身对应的存储器,获取查表结果,有利于降低查表请求占用的转发带宽,节约资源。
在步骤S102中,可以将查表请求复制成多份,转发给对应的多个控制器,这里的多个控制器的查表类型与查表请求的查表类型相同。各控制器根据查表请求查询与自身连接的存储器,达到一次查询多个存储器的效果。而根据预设的控制器与查表类型的对应关系来确定接收查表请求的控制器,有利于对查表请求的转发。可以理解的是,本实施例中,S103步骤中的存储器可以是属于网络处理器的存储器,也可以是与控制器连接的外部存储器,本实施例对此没有任何限定。
考虑到查表请求中的键值对应的查表类型相同,利用查表请求在多个存储器中查找表时,若查询的存储器包含查表类型与该查表请求的查表类型相同的表,有利于提高查表的成功率和有效率,一次性查询所有对应于同一查表类型的表,不用再重复查询该查表类型的表。
为了达到上述的目的,优选的,在接收报文之前,将控制器对应的查表类型设置为与其连接的存储器中存储的表的查表类型,考虑到存储器中存储的表的查表类型有多种,可以将该存储器对应的控制器的查表类型设置为多种查表类型。即当存储器中存储的表的查表类型不止一种时,对应的控制器的查表类型也不止一种。
为了步骤S102中,能根据查表请求的查表类型快速地确定该查表请求对应的控制器,节约转发时间,提高网络处理器的报文查表效率,可以为对应于相同的查表类型的控制器设置一个索引值LookupID,若一控制器对应的查表类型有多个,则其对应的LookupID也有多个。将LookupID与控制器的对应关系存储起来,在微引擎生成查表请求时,根据查表请求中的键值的查表类型,将对应于该查表类型的LookupID写入查表请求中。再根据该查表请求的LookupID和存储的LookupID与控制器的对应关系,将查表请求复制多个,发送而给对应的控制器。其中,可以在微引擎与控制器之间设置一个集中控制器,集中控制器中可以存储LookupID与控制器的对应关系,由集中控制器接收微引擎发送的一个查表请求,根据LookupID与控制器的对应关系,以及收到的查表请求中的LookupID,确定需要发送查表请求的控制器的数量,将查表请求复制对应的份数,快速地将该查表请求转发给对应于该LookupID的多个存储器。
考虑到本实施例根据发出的查表类型不同的查表请求,获取的是不同控制器的查表结果,后续网络处理器需要根据这些查表结果对报文进行处理。若将不同控制器返回的查表结果一起存储,网络处理器需要取出查表结果时,查表结果对应的查表类型过多会对网络处理器提取查表结果造成一定的干扰。为了方便网络处理器对查表结果的提取和使用。优选的,上述实施例中的方法还包括:在获取查表结果后,将不同控制器的查表结果放入各控制器对应的结果寄存器,供网络处理器使用。当然,本实施例中,也可以将对应于不同查表类型的控制器返回的查表结果存放到网络处理器中的不同寄存器中,只要达到将不同的控制器返回的查表结果分开存放的目的即可,具体的存储位置,本实施例不作任何限制。
考虑到本实施例的查表请求的查表类型有多种,控制器在将查表请求中的键值组装为查表键值时,对不同的查表类型,采用的查表键值的组装方式是不同的。为了使控制器对查表请求的键值进行灵活提取和组装,达到快速组装查表键值的目的,优选地,可以为每一种查表类型对应的查表请求设置一种键值组装方式,进一步地,可以预设键值组装表,将对应于不同查表类型的键值的组装方式集成到该表中。步骤S103中的控制多个控制器根据查表请求的查表类型组装查表键值包括:控制多个控制器根据查表请求的查表类型,在预设的键值组装表中确定组装查表键值的组装方式,按照该组装方式将从查表请求中提取出的键值组装为查表键值。之后,控制多个控制器利用自身组装的查表键值查询相应的存储器,获取查表结果。
优选的,本实施例的查表请求的查表类型包括直接查表和内容寻址查表,直接查表表示直接以控制器提取的查表键值为索引读取存储器中的表。内容寻址查表是根据查表键值中的内容在存储器中查到某个地址,再根据该地址进行对应的表的获取,即内容寻址查表是根据查表键值在存储器中查询得到一个地址,再查询该地址存储的内容,直接查表是根据查表键值直接在存储器中读取表,这里的直接可以理解为将查表键值作为地址在存储器中读取。
在本实施例中,内容寻址查表包括访问控制列表查找和路由查找,对应的,查表类型为内容寻址查表的查表请求,包含了访问控制列表查找需要的键值和路由查找需要的键值。
访问控制列表查找需要的键值包括IP五元组,路由查找需要的键值包括目的IP地址,而五元组包括源IP地址,源端口,目的IP地址,目的端口和传输层协议,明显访问控制列表查找和路由查找需要的键值都包括目的IP地址,结合上述对查表请求的精简方法,可以在生成内容寻址查表的查表请求时,删除重复的目的IP地址,只在查表请求中写入IP五元组及目的MAC、源MAC等信息即可;达到在不影响查表请求的查表结果的前提下,查表请求占用资源最少的目的。同样的,查表类型为直接查表的查表请求中,包含的用于直接查表的键值若有重复,也将重复的键值删除。
采用本实施例的网络处理器查表方法,根据接收的报文生成查表请求,该查表请求包含的键值对应的查表类型相同,即可以实现将多个查表类型相同的键值写入一个查表请求的目的,又能保证一个查表请求只对应一个查表类型,根据查表请求的查表类型确定对应的多个控制器,将查表请求发给与其查表类型对应的多个控制器,进行查表键值的组装以及利用查表键值查询存储器,可以生成一个查表请求控制多个控制器获取查表结果的目的,所以本实施例中,只需生成一个查表请求,就可以同时通过多个控制器查找对应的多个存储器,获取查表结果,提高了查表效率,充分利用存储器资源,提高网络处理器芯片的转发性能。
进一步地,在生成查表请求时,删除重复的键值,可以缩小查表请求的数据大小,降低发送查表请求需要的资源和带宽,使其能在发送查表请求的部件允许的范围内转发,降低转发功耗,缩短转发时间,提高网络处理器查表效率。
进一步地,现有技术中,每次获取查表结果后,需要根据查表结果对报文进行处理,才进行下一次查表,而本实施例中,将不同控制器返回的查表结果存放进不同的寄存器中供微码使用,意味着本实施例不需要等待报文的处理结果即可进行下一次的查表,所以本实施例的网络处理器查表方法可以有效地缩短相邻的查表间隔,大大缩短微码指令,因此可以极大提高芯片的转发性能。
实施例二:
本实施例提出一种网络处理器,参见图5,本实施例的网络处理器2包括微引擎21、集中控制器22和控制器23。其中,控制器23有与之连接的存储器,本实施例中,微引擎查询的各种表存储在存储器中,这些存储器可以是有内置于网络处理器的存储器,也可以是有外置于网络处理器的存储器。
本实施例的存储器的类型不限,可以包括TCAM(Tenary Content AddressableMemory,三重内容可寻址存储器),SRAM(Static RAM,静态随机存储器),DDR3SDRAM(DDR—Double Data Rate;SDRAM—Synchronous Dynamic Random Access Memory同步动态随机存储器)等等。
微引擎21用于接收报文,根据报文生成查表请求,并将查表请求转发给集中控制器22;查表请求包含的键值对应于同一查表类型;;
集中控制器22用于根据查表请求的查表类型、及各控制器23的查表类型,确定查表请求对应的多个控制器23,复制对应个数的查表请求,并分发至多个控制器23;
控制器23于接收查表请求,根据查表请求的查表类型组装查表键值,查询与控制器23连接的存储器,获取查表结果。
在本实施例中,微引擎21中驻留有微码,报文进入微引擎21就触发微码执行生成查表请求。
一般,现有技术中,对一个报文而言,网络处理器需要进行多次查表,才能对其进行最终的处理。所以现有技术中,每对报文进行一次处理,就需要微引擎21生成并转发一个查表请求给控制器,这不仅增加了微引擎和控制器的交互次数,增大了微引擎的负担,还增加了查表时间。
考虑到现有技术中,多次查表时的查表类型可能会相同,本实施例对查表请求进行了改进,生成了本实施例中的查表请求,该查表请求包含的键值对应的查表类型相同。利用查表请求进行查表实际上是利用查表请求中的键值进行查表,所以本实施例在生成查表请求时,生成方式可以是将对应于同一查表类型的多个键值写入一个查表请求中。
鉴于本实施例的查表请求中的键值的查表类型相同,一个查表请求中的键值较多,可能出现键值相同的情况,为了精简查表请求的数据大小,进一步降低微引擎的对查表请求的发送负担,降低对微引擎和控制器的查表带宽的需求,优选的,微引擎21在根据报文生成查表请求时,若对应于同一查表类型的键值中具有相同的键值,即出现重复的键值,只将多个相同的键值的其中之一写入查表请求中即可。
集中控制器22将查表请求转发给相同查表类型的控制器23,可以同时所有相同类型的控制器23根据查表请求查询与自身连接的存储器,达到一次查询多个存储器的效果。而根据预设的控制器与查表类型的对应关系来确定接收查表请求的控制器有利于集中控制器对查表请求的转发。
考虑到查表请求中的键值对应的查表类型相同,控制器23利用查表请求在多个存储器中查找表时,若查询的存储器包含查表类型与该查表请求的查表类型相同的表,有利于提高查表的成功率和有效率,一次性查询所有对应于同一查表类型的表,不用再利用控制器23重复查询该查表类型的表。
优选的,集中控制器22还用于在微引擎接收到报文之前,将各控制器的查表类型设置为与其连接的存储器中存储的表的查表类型,考虑到存储器中存储的表的查表类型有多种,可以将该存储器对应的控制器的查表类型设置为多种查表类型。即当存储器中存储的表的查表类型不止一种时,对应的控制器的查表类型也不止一种。
为了使得集中控制器22接收到查表请求后,能更快速地将该查表请求转发给对应的控制器23,节约转发时间,提高网络处理器的报文查表效率,可以为对应于相同的查表类型的控制器23设置一个索引值LookupID,若一控制器对应的查表类型有多个,则其对应的LookupID也有多个。将LookupID与控制器的对应关系存入集中控制器22中,在微引擎21生成查表请求时,根据查表请求中的键值的查表类型,将对应于该查表类型的LookupID写入查表请求中。再将包含该LookupID的查表请求发送给集中控制器22,集中控制器22可以根据查表请求中的LookupID以及其存储的LookupID与控制器23的对应关系,快速地将该查表请求转发给对应于该LookupID的多个存储器。
考虑到本实施例的微引擎21发出的查表类型不同的查表请求,集中控制器22可以获取对应于不同查表类型的控制器的查表结果,微引擎需要根据这些查表结果对报文进行处理。若将对应于不同查表类型的控制器返回的查表结果一起存储,微引擎21需要取出查表结果时,查表结果对应的查表类型过多会对微引擎21提取查表结果造成一定的干扰。为了方便微引擎21的微码对查表结果的提取和使用。
优选的,网络处理器还包括与各控制器对应的结果寄存器;控制器23还用于在获取查表结果后,将查表结果转发给集中控制器22,集中控制器22还用于将各控制器返回的查表结果放入各控制器对应的结果寄存器,供微码使用。当然,本实施例中,也可以将不同的控制器23返回的查表结果存放到微引擎21中的不同结果寄存器中,只要达到将不同的控制器返回的查表结果分开存放的目的即可,具体的存储位置,本实施例不作任何限制。
考虑到本实施例的查表请求的查表类型有多种,控制器23在将查表请求中的键值组装为查表键值时,对不同的查表类型,采用的查表键值的组装方式是不同的。为了使控制器23对查表请求的键值进行灵活提取和组装,达到快速组装查表键值的目的,优选地,参见图6示出的本实施例的控制器23的结构,相对于现有技术的控制器而言,本实施例的控制器23包括键值组装单元231,控制器23中可以存储预设的键值组装表,该键值组装表集成了对应于不同查表类型的键值的组装方式。键值组装单元231根据查表请求的查表类型,在键值组装表中确定组装查表键值的组装方式,按照组装方式将从查表请求中提取出的键值组装为查表键值。之后,控制器23可以利用查表键值查询相应的存储器,获取查表结果。
其中,控制器23获取查表请求后,将对应于自身查找的存储器的键值提取出来,根据其查表类型找到键值组装表中的对应的组装方式,按照组装方式组装出查表键值,再利用该查表键值查询相应的存储器即可。进一步地,键值组装表中,各查表类型对应的组装方式可以以模板的形式展现,键值组装单元231根据查表请求的类型,确定查表键值对应的模板格式,提取键值后,直接根据键值组装表中的模板的格式组装查表键值即可。
优选的,本实施例的查表请求的查表类型包括直接查表和内容寻址查表,查表直接查表表示直接以控制器23提取的查表键值为索引读取存储器24中的表。内容寻址查表是根据查表键值中的内容在存储器24中查到某个地址,再根据该地址进行对应的表的获取,即内容寻址查表是根据查表键值在存储器中查询得到一个地址,再查询该地址存储的内容,直接查表是根据查表键值直接在存储器中读取表,这里的直接可以理解为将查表键值作为地址在存储器中读取。
在本实施例中,直接查表查询的是直接表,内容寻址查表查询的表包括访问控制列表和路由表,对应的,查表类型为内容寻址查表的查表请求,包含了访问控制列表查找需要的键值和路由查找需要的键值。
访问控制列表查找需要的键值包括IP五元组,路由查找需要的键值包括目的IP地址,而五元组包括源IP地址,源端口,目的IP地址,目的端口和传输层协议,明显访问控制列表查找和路由查找需要的键值都包括目的IP地址,结合上述对查表请求的精简方法,可以在生成内容寻址查表的查表请求时,删除重复的目的IP地址,只在查表请求中写入IP五元组及目的MAC、源MAC等信息即可;达到在不影响查表请求的查表结果的前提下,查表请求占用资源最少的目的。同样的,查表类型为直接查表的查表请求中,包含的用于直接查表的键值若有重复,也将重复的键值删除。
可以理解的是,本实施例的网络处理器也可以用于查找查表类型为非直接查表和非内容寻址查表的表。
下面以直接查表和内容寻址查表为例对本实施例的网络处理器查表过程进行说明,参见图7,本实施例的网络处理器包括微引擎、集中控制器和控制器。假设本实施例中的网络处理器可读取的存储器有4个,分别是存储器A1、存储器A2、存储器A3、存储器A4,存储器A1和存储器A2只存放直接表,存储器A3存放访问控制列表,存储器A4存放路由表,其中,A1和A2是内置存储器,属于网络处理器的一部分,A3和A4是外置存储器。,对应读取存储器的控制器也有4个,分别是控制器B1、控制器B2、控制器B3、控制器B4:
第一步,先对控制器和集中控制器进行配置。
对集中控制器:按照控制器读取的存储器中存放的表对应的查表类型,为控制器配置LookupID。
将控制器B1和控制器B2的LookupID设置为1,即LookupID=1对应的是控制器B1和控制器B2。
将控制器B3和控制器B4的LookupID设置为2,即LookupID=2对应的是控制器B3和控制器B4。
对控制器:在每个控制器中设置如图8所示的键值组装表,其中包含查表类型(Type),键值提取偏移(Start)、长度(LEN,length的缩写)。
第二步,微引擎接收报文,触发微码执行,生成查表请求。
查表请求的生成方式是,按照图9所示的查表请求的模板,在查表请求中写入LookupID的值,和对应于LookupID的查表类型的键值key。
具体的可以按照图10所示的查表请求的格式,生成直接表的查表请求C1,LookupID的位置对应写入1,其他的key值的位置写入需要查询的直接表的key值,若key值有重复,则删除重复的一个或多个key值,这里写入查询存储器A1需要的键值Index0,查询存储器A2需要的键值Index1。
按照图11所示的访问控制列表查找的请求和路由查找的请求拼成的全集模板,生成访问控制列表和路由表的查表请求C2,LookupID的位置写入2,还要写入IP五元组和目的MAC、源MAC等信息,虽然访问控制列表和路由表的查询都需要使用到目的IP地址,但是为了减小查表请求的转发负担,控制查表请求的数据大小,生成的查表请求中包含一个目的IP地址即可,控制器在使用目的IP地址组装查表键值时,可以重复提取该IP地址信息进行使用。
第三步,微引擎将查表请求转发给集中控制器,集中控制器根据查表请求中的LookupID将查表请求转发到对应的控制器。
当集中控制器收到查表请求C1时,将其转发给控制器B1和控制器B2;当集中控制器收到查表请求C2时,将其转发给控制器B3和控制器B4。
第四步,控制器B1和控制器B2同时根据查表请求和键值组装表组装查表键值分别查询存储器A1和存储器A2,或者控制器B3和控制器B4根据查表请求和键值组装表组装查表键值分别查询存储器A3和存储器A4。
组装的过程:控制器B1,利用查表请求C1中的LookupID=1,指定查表类型(即图8中的Type0)为直接查表,配置图8中的Start0为图10中Index0的偏移位置,LEN0为图10中Index0的宽度,利用配置好的查表键值查询存储器A1,获取直接表的查表结果。
对于控制器B2而言,利用查表请求C1中的LookupID=1,指定查表类型为直接查表,配置图8中的Start0为图10中Index1的偏移位置,LEN0为图10中Index1的宽度,利用配置好的查表键值查询存储器A2,获取直接表的查表结果。
对于控制器B3而言,利用查表请求C2中的LookupID=2,指定查表类型为内容寻址查表,基于图11的键值,按照图8配置Start0/1/2…/N和Len0/1/2../N,保证组装出来的查表键值,为访问控制列表查询要求的查表键值即IP五元组,对于控制器B4而言,采取类似的方式进行查表键值的配置,即按照图8配置Start0/1/2…/N和Len0/1/2../N,保证组装出来的查表键值,为路由查找要求的键值即目的IP地址。
控制器B3利用查表键值查询存储器A3,获取访问控制列表的查表结果,控制器B4利用查表键值查询存储器A4,获取路由表的查表结果。
第五步:集中控制器将不同的控制器返回的查表结果存入不同的寄存器保存。
集中控制器接收控制器B1和控制器B2同时返回的查表结果,或者、接收控制器B3和控制器B4同时返回的查表结果,将不同的控制器返回的查表结果存储到不同的寄存器中,供微引擎提取使用。
在本发明的另一实施例中,还提供一种查表系统,包括实施例二中的网络处理器。进一步还包括外部的存储器,用于存储表项,供网络处理器的控制器查询。
采用本实施例的网络处理器,可以利用微引擎根据接收的报文生成查表请求,并将其转发给集中控制器;生成的查表请求包含的键值对应的查表类型相同;即可以实现将多个查表类型相同的键值写入一个查表请求的目的,又能保证一个查表请求只对应一个查表类型,利用集中控制器根据预设的控制器与查表类型的对应关系,将查表请求转发给与其查表类型相同的至少两个控制器;控制器根据查表请求中的键值组装查表键值,利用查表键值查询相应的存储器,获取查表结果,可以实现将一个查表请求转发给多个控制器的目的,获取多个查表结果的目的。所以本实施例中,只需生成一个查表请求,就可以同时通过多个控制器查找对应的多个存储器,获取查表结果,本实施例的网络处理器有利于减少微引擎和集中控制器的交互次数,减轻微引擎的负担,充分利用存储器资源,提高芯片的转发性能和查表效率。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (15)
1.一种网络处理器查表方法,其特征在于,包括:
接收报文,根据所述报文生成查表请求,所述查表请求包含的键值对应于同一查表类型;
根据所述查表请求的查表类型确定所述查表请求对应的多个控制器,发送所述查表请求至所述多个控制器;
控制所述多个控制器根据所述查表请求的查表类型组装查表键值,查询与自身连接的存储器,获取查表结果。
2.如权利要求1所述的网络处理器查表方法,其特征在于,在根据所述报文生成查表请求时,若对应于同一查表类型的键值中有相同的键值,只将多个相同的键值的其中之一写入所述查表请求中。
3.如权利要求1所述的网络处理器查表方法,其特征在于,在接收报文前,还包括:将各控制器对应的查表类型设置为与其连接的存储器中存储的表的查表类型。
4.如权利要求1所述的网络处理器查表方法,其特征在于,还包括:在获取查表结果后,将不同控制器的查表结果放入各控制器对应的结果寄存器。
5.如权利要求1所述的网络处理器查表方法,其特征在于,所述查表请求的查表类型包括直接查表和内容寻址查表。
6.如权利要求5所述的网络处理器查表方法,其特征在于,查表类型为内容寻址查表的查表请求还携带:访问控制列表查找需要的键值,和路由查找需要的键值。
7.如权利要求1-6任一项所述的网络处理器查表方法,其特征在于,所述多个控制器根据所述查表请求的查表类型组装查表键值包括:
所述多个控制器根据所述查表请求的查表类型,在预设的键值组装表中确定组装查表键值的组装方式,按照所述组装方式将从所述查表请求中提取出的键值组装为查表键值。
8.一种网络处理器,其特征在于,包括:微引擎、集中控制器、控制器;
所述微引擎用于接收报文,根据所述报文生成查表请求,并将所述查表请求转发给集中控制器;所述查表请求包含的键值对应于同一查表类型;
所述集中控制器用于根据所述查表请求的查表类型、及各控制器的查表类型,确定所述查表请求对应的多个控制器,复制对应个数的查表请求,并分发至所述多个控制器;
所述控制器用于接收所述查表请求,根据所述查表请求的查表类型组装查表键值,查询与所述控制器连接的存储器,获取查表结果。
9.如权利要求8所述的网络处理器,其特征在于,所述微引擎还用于,在根据所述报文生成查表请求时,若对应于同一查表类型的键值中有相同的键值,只将多个相同的键值的其中之一写入所述查表请求中。
10.如权利要求8所述的网络处理器,其特征在于,所述集中型控制器还用于将各控制器的查表类型设置为与其连接的存储器中存储的表的查表类型。
11.如权利要求8所述的网络处理器,其特征在于,所述网络处理器还包括与各控制器对应的结果寄存器;所述控制器还用于在获取查表结果后,将所述查表结果转发给所述集中控制器,所述集中控制器还用于将各控制器返回的查表结果放入各控制器对应的结果寄存器。
12.如权利要求8所述的网络处理器,其特征在于,所述控制器的查表类型包括直接查表和内容寻址查表。
13.如权利要求12所述的网络处理器,其特征在于,所述微引擎生成的查表类型为内容寻址查表的查表请求,还携带:控制访问列表查找需要的键值,和路由查找需要的键值。
14.如权利要求8-13任一项所述的网络处理器,其特征在于,所述控制器包括键值组装单元,用于根据所述查表请求的查表类型,在预设的键值组装表中确定组装查表键值的组装方式,按照所述组装方式将从所述查表请求中提取出的键值组装为查表键值。
15.一种查表系统,其特征在于,包括如权利要求8-14任一项所述的网络处理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428430.2A CN107517161B (zh) | 2016-06-15 | 2016-06-15 | 一种网络处理器查表方法、网络处理器和查表系统 |
PCT/CN2017/087092 WO2017215466A1 (zh) | 2016-06-15 | 2017-06-02 | 一种网络处理器查表方法、网络处理器、查表系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610428430.2A CN107517161B (zh) | 2016-06-15 | 2016-06-15 | 一种网络处理器查表方法、网络处理器和查表系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107517161A true CN107517161A (zh) | 2017-12-26 |
CN107517161B CN107517161B (zh) | 2021-11-12 |
Family
ID=60664139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610428430.2A Active CN107517161B (zh) | 2016-06-15 | 2016-06-15 | 一种网络处理器查表方法、网络处理器和查表系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107517161B (zh) |
WO (1) | WO2017215466A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632340A (zh) * | 2020-12-28 | 2021-04-09 | 盛科网络(苏州)有限公司 | 查表方法及装置、存储介质以及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112511440B (zh) * | 2020-11-30 | 2023-04-18 | 东软集团股份有限公司 | 报文转发方法、系统、存储介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
CN103501268A (zh) * | 2013-09-29 | 2014-01-08 | 杭州华三通信技术有限公司 | 一种tcam资源调度方法及装置 |
CN104158744A (zh) * | 2014-07-09 | 2014-11-19 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器的建表和查找方法 |
CN104239337A (zh) * | 2013-06-19 | 2014-12-24 | 中兴通讯股份有限公司 | 基于tcam的查表处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770485A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 表项添加方法及装置和表项处理方法、装置及系统 |
CN102402611B (zh) * | 2011-12-12 | 2013-07-24 | 盛科网络(苏州)有限公司 | 一种用tcam实现关键字快速查找并读表的方法 |
CN103560957A (zh) * | 2013-10-15 | 2014-02-05 | 华为技术有限公司 | 查表键值构造方法、微码下发方法、装置及系统 |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
-
2016
- 2016-06-15 CN CN201610428430.2A patent/CN107517161B/zh active Active
-
2017
- 2017-06-02 WO PCT/CN2017/087092 patent/WO2017215466A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
CN104239337A (zh) * | 2013-06-19 | 2014-12-24 | 中兴通讯股份有限公司 | 基于tcam的查表处理方法及装置 |
CN103501268A (zh) * | 2013-09-29 | 2014-01-08 | 杭州华三通信技术有限公司 | 一种tcam资源调度方法及装置 |
CN104158744A (zh) * | 2014-07-09 | 2014-11-19 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器的建表和查找方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632340A (zh) * | 2020-12-28 | 2021-04-09 | 盛科网络(苏州)有限公司 | 查表方法及装置、存储介质以及电子设备 |
CN112632340B (zh) * | 2020-12-28 | 2024-04-16 | 苏州盛科通信股份有限公司 | 查表方法及装置、存储介质以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2017215466A1 (zh) | 2017-12-21 |
CN107517161B (zh) | 2021-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5518135B2 (ja) | データセンター向けの拡張可能なマルチキャスト転送方法および装置 | |
JP3777161B2 (ja) | マルチキャスト伝送の効率的処理 | |
Bando et al. | FlashTrie: beyond 100-Gb/s IP route lookup using hash-based prefix-compressed trie | |
US8345685B2 (en) | Method and device for processing data packets | |
CN108833299A (zh) | 一种基于可重构交换芯片架构的大规模网络数据处理方法 | |
CN106254256B (zh) | 基于三层vxlan网关的数据报文转发方法和设备 | |
CN102185936B (zh) | 一种基于linux操作系统的DNS服务系统和方法 | |
JP2002510452A (ja) | 高性能多層スイッチ要素用探索エンジン・アーキテクチャ | |
CN109587065A (zh) | 转发报文的方法、装置、交换机、设备及存储介质 | |
CN104811382B (zh) | 数据包的处理方法与装置 | |
CN102857414A (zh) | 一种转发表写入、报文转发方法及装置 | |
CN104823428A (zh) | 存储系统中操作请求处理方法和装置 | |
JP2002508868A (ja) | 中継データベースへの中央処理装置のハードウェア支援によるアクセス | |
CN102025643A (zh) | 一种流表查找方法和装置 | |
Zhao et al. | Exploiting graphics processors for high-performance IP lookup in software routers | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN104782087B (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
CN104239337B (zh) | 基于tcam的查表处理方法及装置 | |
CN109088957A (zh) | Nat规则管理的方法、装置和设备 | |
CN107517161A (zh) | 一种网络处理器查表方法、网络处理器和查表系统 | |
CN108777662A (zh) | 表项管理方法及装置 | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN106487769A (zh) | 一种访问控制列表acl的实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |