CN102938000A - 一种高速并行的无锁流表路由查找方法 - Google Patents

一种高速并行的无锁流表路由查找方法 Download PDF

Info

Publication number
CN102938000A
CN102938000A CN2012105202710A CN201210520271A CN102938000A CN 102938000 A CN102938000 A CN 102938000A CN 2012105202710 A CN2012105202710 A CN 2012105202710A CN 201210520271 A CN201210520271 A CN 201210520271A CN 102938000 A CN102938000 A CN 102938000A
Authority
CN
China
Prior art keywords
list item
time
flow
message
stream table
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
Application number
CN2012105202710A
Other languages
English (en)
Other versions
CN102938000B (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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Wuhan FiberHome Networks 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 Wuhan FiberHome Networks Co Ltd filed Critical Wuhan FiberHome Networks Co Ltd
Priority to CN201210520271.0A priority Critical patent/CN102938000B/zh
Publication of CN102938000A publication Critical patent/CN102938000A/zh
Application granted granted Critical
Publication of CN102938000B publication Critical patent/CN102938000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及路由查找算法,具体说是一种多核处理器高速并行的无锁流表路由查找方法。多核处理器并行执行环境中,采用与核数相对应数目流表的设计结构,并用多核中控制平面与数据平面相结合的方式,将流表中表项的删除操作分割成两个相对独立的FLOW_INVALID(失效)和FLOW_DELETE(删除)阶段,使得多个核对一张流表同时进行读写操作而无需依赖资源锁的控制。本发明所述的高速并行的无锁流表路由查找方法,解决多核处理器并行执行过程中,现有流表设计方法造成的数据处理瓶颈问题,实现了多核并行执行过程中数据转发的安全性和快速性,提高大容量系统路由查找速度和并行路由查找的性能。

Description

一种高速并行的无锁流表路由查找方法
技术领域
本发明涉及路由查找算法,具体说是一种高速并行的无锁流表路由查找方法,尤指多核处理器高速并行的无锁流表路由查找方法。
背景技术
随着网络带宽的急剧增加,使得网络的链路速率发展到10Gb/s,甚至更高,应用高性能的多核处理器硬件平台和高速的路由查找算法,设计出满足网络性能要求的路由器显得非常必要。
传统的单核处理器的处理能力受到主频和功耗等因素的制约,在性能上难以满足日益增长的网络数据处理任务要求。高性能的多核处理器在数据处理过程中能够实现并行处理,网络延时小,数据吞吐量大,在当前的高端路由器中有着一定的应用范围。但是,传统的基于基数排序树(Radix Trie)、多分支Trie树(Multibit Trie,多分支查找树)、分段地址等路由查找算法多应用在串行数据流处理的单核处理器中,这些算法在多核处理器中,由于多核并行执行数据处理导致的路由资源竞争,易造成数据瓶颈,使得多核处理器的并行处理能力不能完全得以发挥,造成极大的资源浪费。路由查找的专用芯片TCAM(Ternary Content Addressable Memory,三态内容寻址存储器),由于其价格高昂,不适合在一些对成本敏感的路由器设计中广泛采用,而SDRAM(同步动态随机存储器)价格低廉,因此开展基于SDRAM的快速路由查找算法的应用研究显得异常重要。
高端路由器进行路由转发时其转发条目可达到百万之上,在众多的路由条目中匹配一条路由所消耗的时间主要取决于查找算法的性能。为了提高路由性能,在路由表设计过程中,基于原有路由表上再增加一张表,形成两层路由表的结构设计。第一层表是总表,保存着所有的路由条目和信息;新增的第二层表为流表,保存一定时间段下的常用路由的路由表项信息(Entry)。每次数据包转发过程中,先去流表中进行查找,如果在流表中查找到匹配的路由表项信息,则数据包直接根据匹配的路由表项信息中的路由信息输出到出端口;如果查询不成功,则再进入总表中查找,在总表中查找到匹配的路由条目和信息后,将数据转发出去的同时并将该匹配的路由条目和信息添加到流表中,方便同一数据流的下一个数据包在流表中查找。之所以采用流表的查找策略可以提高路由查找的效率,是因为流表中维护的路由条目远远小于总表,在流表中进行一次路由匹配与在总表中去匹配所需要的平均时间要小,并且,一般在路由表设计的时候,将流表置于处理器内部的Cache(高速缓冲存储器)中,使得基于流表的路由查找方式在性能上有更大的提升。
上述基于流表的路由查找策略在单核串行处理方式上的确可以优化性能,提高路由查找的性能。为了提高多核处理器查找的性能,同样引入了流表的设计思想,但是由于多核处理器并行处理的特点,表项资源的共享和互斥问题给流表的设计提出了新的挑战。
一般常用的方法是在系统的Cache上创建一张多个核(处理器的核)共享的流表,但是多个核共同使用一张表必定造成资源的竞争,为了保证数据处理的安全性通常的解决办法就是采用资源锁,这在并行处理上容易造成数据处理瓶颈。同时每个核上处理的数据各不一样,创建的表项形成的流表表项数目较多,对于基于流表的遍历查找效率有所打折。
另一种方法是在系统的Cache上创建与核数相对应数目的流表,每个核维护一张流表,这种方式对于多核系统中同一个流的数据包送往同一个核处理的核间调度机制来说不会存在流表的竞争关系。因为相同的数据流在同一个核上进行处理,建立的流表的表项不会被其它核所用,此时这个流表只属于这个核所私有,数据包路由查找在该核上串行实现,多核间对于流表不会存在竞争的关系,如图1所示的核1上处理数据流“A”。但流分类一般采用Hash算法(哈希算法),因Hash冲突的存在,导致Hash值相同但对应转发表不在流表中的数据流会进入同一个核进行处理,由于查表失败而只能进入总表中进行第二次查找,从而对系统性能产生一定影响。
对于多核数据流无序调度机制来讲,也会产生问题,同一个数据流的数据包可能会发送到几个不同的核上去处理,在处理的过程中它们共享一张流表,因此存在相互竞争的关系。如图1所示核2、核3和核4处理数据流“O”时所示,三个核处理的数据包都需要用到同一张流表,此时就会发生假如一个核上的数据包正在查询该数据包流对应的流表的某一个表项时,另一个核正对该表项进行删除,此时就会造成冲突,出现数据丢包等错误现象。常用的解决办法就是对流表增加资源锁,在无序的并行处理机制中,同一时间只允许一个核对其某一流表进行操作。
采用流表设计的路由查找策略可以提升路由查找的性能,当前在单核处理中存在广泛的应用,但是在多核处理器执行并行查找的特殊环境下,对流表资源存在竞争的关系,上述方法依旧会产生路由过程中的数据处理瓶颈,对多核的并行处理效率的较大影响,并造成数据处理延时加大。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种高速并行的无锁流表路由查找方法,解决多核处理器并行执行过程中,现有流表设计方法造成的数据处理瓶颈问题,实现了多核并行执行过程中数据转发的安全性和快速性,提高大容量系统路由查找速度和并行路由查找的性能。
为达到以上目的,本发明采取的技术方案是:
一种高速并行的无锁流表路由查找方法,其特征在于,包括以下步骤:
步骤1:控制平面定期分别对初始化创建的N个流表g_flow_table[i]中的表项进行遍历,0=<i<N,N值等于多核处理器的核数且N大于等于2,每遍历一个表项的同时对表项的创建时间进行检测;
步骤2:控制平面执行表项时间检测函数,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+生存周期时间time_info.expired_time,表明该表项已经超期,则通过消息发送函数向表项对应的核发送超期消息FLOW_INVALID,同时,将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中;
步骤3:控制平面对超期池g_expired_flow_pool对应的链表进行遍历,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+2*生存周期时间time_info.expired_time,表明该表项需要从内存中删除,则通过消息发送函数向表项对应的核发送释放内存消息FLOW_DELETE。
在上述技术方案的基础上,步骤4:数据平面通过接收函数接收控制平面通过消息发送函数发送过来的消息,并对消息的种类进行分析;
如果控制平面通过消息发送函数发送过来的消息是超期消息FLOW_INVALID,表明需要将对应的表项从流表中移出,则:数据平面调用移出函数,通过双向链表中表项结点的操作(例如:next->prev=prev,prev->next=next)将该表项从流表的链表中移出,并将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中,此时并未释放表项内存,因此可以保证可能正在利用该表项进行转发操作的其它核,将数据包顺利转发出去;
如果控制平面通过消息发送函数发送过来的消息是释放内存消息FLOW_DELETE,表明需要将该表项从流表中删除,并释放内存空间,则:数据平面调用删除函数,将该表项从流表中删除并释放内存空间。
在上述技术方案的基础上,还包括以下步骤:
步骤5:当数据平面执行完消息处理后,进入待转发数据包的路由查找处理,调用流表查找函数flow_lookup在对应的流表中进行路由查找,如果在对应的流表中没有查找到匹配的表项,则通过流表增加函数flow_add在流表中创建新表项flow_entry,此时新表项flow_entry中的有效标志位action_num置0,用表项添加函数list_add将表项添加到该流表数据链的头部,并把待转发数据包的路由信息指针flow_info指向该新表项flow_entry,以便通过该指针获得路由表项信息,完成后进入步骤6;如果在对应的流表中查找到匹配的表项,通过待转发数据包的路由信息指针flow_info返回得到路由表项信息,然后进入步骤7;
步骤6:通过路由查找函数rt_lookup在总表中进行路由查找,如果没有查找到匹配的表项,则依照配置规则对数据包做相应的处理,可按现有技术实施,不再详述;如果查找到匹配的表项,将该表项的内容复制到上一步(步骤5)创建的新表项flow_entry中,并将该新表项的有效标志位action_num置1,加上表项的创建时间,然后进入步骤7;
步骤7:根据待转发数据包查表返回得到的路由表项信息将待转发数据包发送到对应的出端口。
本发明所述的高速并行的无锁流表路由查找方法,解决多核处理器并行执行过程中,现有流表设计方法造成的数据处理瓶颈问题,实现了多核并行执行过程中数据转发的安全性和快速性,提高大容量系统路由查找速度和并行路由查找的性能。
附图说明
本发明有如下附图:
图1多核并行调度环境下流表、总表与核之间的关系图,
图2多核并行执行环境流表原理图,
图3初期的流和超期池表项结构图,
图4第一阶段流表和超期池表项结构图,
图5第二阶段流表和超期池表项结构图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
通过对现有的采用流表设计的路由查找策略进行分析,我们可知:多核处理器中采用流表的路由查找策略,在一定程度上提高了路由查找的效率,但是由于多核处理器具有的并行执行的特点,使得无论是多核共享同一张流表的设计架构,还是每个核各自维护一张流表的设计架构,都会产生表项资源的竞争。为了系统的安全性和可靠性,在一定范围内都需要采用资源锁的形式解决流表表项的竞争问题,这种采用资源锁的解决方法对多核处理器的并行执行效率有所折损,在一定程度上容易产生数据瓶颈,不利于多核处理器硬件性能的完全发挥。
以下对现有的多核并行执行环境中流表原理进行分析。
在多核处理器的多核并行执行环境中,根据核完成的任务不同,分为数据平面(Data Plane)和控制平面(Control Plane)。数据平面主要实现数据包数据的接收、数据头分析、流表和总表的查询、数据的转发等。控制平面主要实现将各种路由协议中学习的路由信息,下发到数据平面的转发表中,并对处于数据平面的总表和流表进行管理与维护。一般来讲总表和流表是建立在一段系统共享内存上,可以确保控制平面和数据平面对其都可见,便于数据平面对路由表项数据的查询和读取,便于控制平面对路由表项数据的管理与维护。
在多核并行执行环境中采用流表的方式加快路由查找的速率,系统通常在Cache中申请与处理器的核数N(N大于等于2)相等的用来存放流表的空间块。每个流表内的路由表项集合是总表的一个子集,流表(Flow Table)与总表(Global Router Table)之间的关系如图2所示,在路由初始化后随着数据流转发过程一步步建立。处理器的核每次进行路由查找时,先去对应的流表中进行查找,如果找到则数据直接根据路由信息转发到出端口,如果查询不到,则再进入总表中查找,在总表中查找到路由后,将该条路由添加到流表中。
多核处理器在并行执行的任务调度上分为有序调度模式(staticaffinity mode)和无序调度模式(round-robin mode)。有序调度模式下相同Hash值的数据流发往同一个核进行处理;无序调度模式下相同Hash值的数据流可能发往不同的核进行处理,多核并行执行系统中流表的设计需要兼顾到这两种调度方式的区别。设计过程中为了同时实现上述两个执行模式下流表工作的高效性和内存消耗的合理性,在有序调度模式上,流表属于核所私有,因为同一数据流在同一核上处理,可以确保其它的核不来竞争该流表资源;在无序调度模式上,流表属于同一数据流所共享,但是同一数据流的数据包会发往不同的核进行处理,核在处理该流的数据包时,根据数据包信息哈希到该流对应的同一个流表上,因此流表此时为核间所共享。
虽然系统为数据平面的每个核创建了一个属于自己的流表,但是在多核无序调度过程中,本属于该核处理的数据流可能会发送到其它的核上去处理,其它核处理该数据过程中,通过数据任务本身携带的信息可以哈希到该核的流表上,因此还是会形成多个核使用相同的一张流表的现象,例如当同流的数据包在一个核上的正在查询对应的流表的某一个表项同时,另一个核此时正对该表项进行删除,一定程度上还是会造成数据转发的不确定性。
以下对本发明的多核并行执行环境中无锁流表原理进行分析。
为了完全解决上述问题,实现真正意义上的无锁流表设计,本发明在设计中将表项的删除过程划分为两个阶段,第一阶段将需要删除的表项从流表的链表中剥离,第二阶段是在一段一定周期(生存周期)时间后,通过释放第一阶段中剥离的表项内存空间来删除表项。第一阶段中表项虽然已经从流表的链表中剥离,但是不删除,这样做可以保证核在删除表项操作过程时,其它核上处于使用该表项的数据仍能正确转发出去。
流表中的表项生存周期是根据时间来设定的,如果生存周期已到需要对表项进行相应的删除操作。初期的流表(g_flow_table)和超期池(g_expired_flow_pool)表项结构图如图3所示,流表g_flow_table[i](0=<i<N,N为处理器核数)中的每个表项flow_entry在创建时有一个时间标签flow_entry.create_time,表项的生存周期时间为time_info.expired_time,当前时间为time_info.current_time。控制平面对于流表中表项的删除过程的两个阶段按照时间来划分,控制平面负责定期对所有流表进行遍历,当发现表项的当前时间time_info.current_time大于表项的创建时间flow_entry.create_time与生存周期时间time_info.expired_time之和,表明表项已经超期,进入第一阶段,将该表项从流表中移出,并将超期的表项添加到g_expired_flow_pool链表后,第一阶段流表(g_flow_table)和超期池(g_expired_flow_pool)表项结构图如图4所示。当控制平面定期对添加了超期链表g_expired_flow_pool中的表项进行遍历时,如果表项的当前时间大于表项的创建时间与2倍的生存周期时间之和时,表项操作进入第二阶段,表明超期的表项需要释放内存空间,进行真正的删除,第二阶段流表(g_flow_table)和超期池(g_expired_flow_pool)表项结构图如图5所示。
控制平面负责所有流表的表项的时间检测和超期表项链表g_expired_flow_pool的维护管理,并通过消息队列的方式将需要移出和需要释放空间的表项信息发送到对应所属的数据平面核上,该核接收到控制平面的队列消息(FLOW_INVALID或FLOW_DELETE),分别对该表项进行相应的操作。
本发明所述的高速并行的无锁流表路由查找方法,包括以下步骤:
A)控制平面实现步骤:
步骤1:控制平面定期分别对初始化创建的N个流表g_flow_table[i]中的表项进行遍历,0=<i<N,N值等于多核处理器的核数且N大于等于2,每遍历一个表项的同时对表项的创建时间进行检测;
步骤2:控制平面执行表项时间检测函数,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+生存周期时间time_info.expired_time,表明该表项已经超期,则通过消息发送函数向表项对应的核发送超期消息FLOW_INVALID,同时,将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中;
步骤3:控制平面对超期池g_expired_flow_pool对应的链表进行遍历,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+2*生存周期时间time_info.expired_time,表明该表项需要从内存中删除,则通过消息发送函数向表项对应的核发送释放内存消息FLOW_DELETE;
B)数据平面实现步骤:
步骤4:数据平面通过接收函数接收控制平面通过消息发送函数发送过来的消息,并对消息的种类进行分析;
如果控制平面通过消息发送函数发送过来的消息是超期消息FLOW_INVALID,表明需要将对应的表项从流表中移出,则:数据平面调用移出函数,通过双向链表中表项结点的操作(例如:next->prev=prev,prev->next=next)将该表项从流表的链表中移出,并将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中,此时并未释放表项内存,因此可以保证可能正在利用该表项进行转发操作的其它核,将数据包顺利转发出去;
如果控制平面通过消息发送函数发送过来的消息是释放内存消息FLOW_DELETE,表明需要将该表项从流表中删除,并释放内存空间,则:数据平面调用删除函数,将该表项从流表中删除并释放内存空间。
在上述技术方案的基础上,还包括以下步骤:
步骤5:当数据平面执行完消息处理后,进入待转发数据包的路由查找处理,调用流表查找函数flow_lookup在对应的流表中进行路由查找,如果在对应的流表中没有查找到匹配的表项,则通过流表增加函数flow_add在流表中创建新表项flow_entry,此时新表项flow_entry中的有效标志位action_num置0,用表项添加函数list_add将表项添加到该流表数据链的头部,并把待转发数据包的路由信息指针flow_info指向该新表项flow_entry,以便通过该指针获得路由表项信息,完成后进入步骤6;如果在对应的流表中查找到匹配的表项,通过待转发数据包的路由信息指针flow_info返回得到路由表项信息,然后进入步骤7;
步骤6:通过路由查找函数rt_lookup在总表中进行路由查找,如果没有查找到匹配的表项,则依照配置规则对数据包做相应的处理,可按现有技术实施,不再详述;如果查找到匹配的表项,将该表项的内容复制到上一步(步骤5)创建的新表项flow_entry中,并将该新表项的有效标志位action_num置1,加上表项的创建时间,然后进入步骤7;
步骤7:根据待转发数据包查表返回得到的路由表项信息将待转发数据包发送到对应的出端口。
本发明的关键点:多核处理器并行执行的环境中,采用与核数相对应数目流表的设计结构提高路由查找效率,并用多核中的控制平面与数据平面相结合,将流表中表项的删除操作分割成两个相对独立的FLOW_INVALID(失效)和FLOW_DELETE(删除)阶段,用无锁流表(流表无资源锁)的方式解决了多核并行执行过程中,多个核同时共享(读写)同一张流表造成的数据转发不安全问题,避免了采用资源锁对流表进行管理而降低路由查找的效率问题,实现多核并行执行各模式(无序调度和有序调度模式)下的无锁流表路由查找方法。
特别说明:无序调度和有序调度模式对于无锁流表的上述步骤是没有影响的,本发明能够支持多核下两种调度模式,两种调度方式的不同只会影响到数据包发往处理的核有所差别,但是对于数据包hash到的流表则不会产生影响。
本发明通过设计方法将对流表表项的删除操作分成两个阶段,第一阶段是让表项失效,但是不删除表项;第二阶段再去释放表项资源空间。使得并行路由查找过程中,多个核在同一时刻对同一表项进行的删除和查找操作,可以并行执行而不影响效率,并且可以保证在表项失效的时,其它核上正在利用该表项的数据包,依旧可以利用该表项的路由信息将数据发送出去,保障了数据处理的安全性和可靠性。本发明避免了采用资源锁造成对流表的执行只能串行执行,使得并行路由查找产生数据处理瓶颈,而降低并行查找的效率。
特别说明:失效的表项加入超期池是为了便于控制平面对表项的生存周期进行管理,系统并不根据超期池中的表项进行数据转发。本发明中对一个表项删除划分为失效和删除两个操作的根本原因在于:无序调度下可能存在的多个核共用一个表项,但是此时有核对表项进行删除操作,如果此时进行表项的内存释放,面临的问题是其它核正在利用该表项进行转发的操作是不安全的。因此划分为FLOW_INVALID(失效)和FLOW_DELETE(删除)两个阶段,失效但是内存不释放,因此其它核(在该时刻)依旧可以利用其表项进行安全的数据转发。由于失效操作,该表项从链表中已经移除,以后的流表查找操作也不会查找到该表项。需要理解的是,我们设计该发明保护数据的安全性,就是要保护删除表项的这个时间点(这个点可能有多个核都在用同一个表项),而不是第一个阶段。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (3)

1.一种高速并行的无锁流表路由查找方法,其特征在于,包括以下步骤:
步骤1:控制平面定期分别对初始化创建的N个流表g_flow_table[i]中的表项进行遍历,0=<i<N,N值等于多核处理器的核数且N大于等于2,每遍历一个表项的同时对表项的创建时间进行检测;
步骤2:控制平面执行表项时间检测函数,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+生存周期时间time_info.expired_time,表明该表项已经超期,则通过消息发送函数向表项对应的核发送超期消息FLOW_INVALID,同时,将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中;
步骤3:控制平面对超期池g_expired_flow_pool对应的链表进行遍历,如果当前时间time_info.current_time>表项的创建时间flow_entry.create_time+2*生存周期时间time_info.expired_time,表明该表项需要从内存中删除,则通过消息发送函数向表项对应的核发送释放内存消息FLOW_DELETE。
2.如权利要求1所述的高速并行的无锁流表路由查找方法,其特征在于,步骤4:数据平面通过接收函数接收控制平面通过消息发送函数发送过来的消息,并对消息的种类进行分析;
如果控制平面通过消息发送函数发送过来的消息是超期消息FLOW_INVALID,表明需要将对应的表项从流表中移出,则:数据平面调用移出函数,通过双向链表中表项结点的操作将该表项从流表的链表中移出,并将该表项通过链表添加函数添加到超期池g_expired_flow_pool对应的链表中,此时并未释放表项内存,因此可以保证可能正在利用该表项进行转发操作的其它核,将数据包顺利转发出去;
如果控制平面通过消息发送函数发送过来的消息是释放内存消息FLOW_DELETE,表明需要将该表项从流表中删除,并释放内存空间,则:数据平面调用删除函数,将该表项从流表中删除并释放内存空间。
3.如权利要求2所述的高速并行的无锁流表路由查找方法,其特征在于,还包括以下步骤:
步骤5:当数据平面执行完消息处理后,进入待转发数据包的路由查找处理,调用流表查找函数flow_lookup在对应的流表中进行路由查找,如果在对应的流表中没有查找到匹配的表项,则通过流表增加函数flow_add在流表中创建新表项flow_entry,此时新表项flow_entry中的有效标志位action_num置0,用表项添加函数list_add将表项添加到该流表数据链的头部,并把待转发数据包的路由信息指针flow_info指向该新表项flow_entry,以便通过该指针获得路由表项信息,完成后进入步骤6;如果在对应的流表中查找到匹配的表项,通过待转发数据包的路由信息指针flow_info返回得到路由表项信息,然后进入步骤7;
步骤6:通过路由查找函数rt_lookup在总表中进行路由查找,如果没有查找到匹配的表项,则依照配置规则对数据包做相应的处理,可按现有技术实施,不再详述;如果查找到匹配的表项,将该表项的内容复制到上一步创建的新表项flow_entry中,并将该新表项的有效标志位action_num置1,加上表项的创建时间,然后进入步骤7;
步骤7:根据待转发数据包查表返回得到的路由表项信息将待转发数据包发送到对应的出端口。
CN201210520271.0A 2012-12-06 2012-12-06 一种高速并行的无锁流表路由查找方法 Active CN102938000B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210520271.0A CN102938000B (zh) 2012-12-06 2012-12-06 一种高速并行的无锁流表路由查找方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210520271.0A CN102938000B (zh) 2012-12-06 2012-12-06 一种高速并行的无锁流表路由查找方法

Publications (2)

Publication Number Publication Date
CN102938000A true CN102938000A (zh) 2013-02-20
CN102938000B CN102938000B (zh) 2015-08-19

Family

ID=47696897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210520271.0A Active CN102938000B (zh) 2012-12-06 2012-12-06 一种高速并行的无锁流表路由查找方法

Country Status (1)

Country Link
CN (1) CN102938000B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103824245A (zh) * 2014-03-10 2014-05-28 北京壹平台科技有限公司 一种电子即开型彩票的出票数据处理方法
CN103824246A (zh) * 2014-03-10 2014-05-28 北京壹平台科技有限公司 一种电子即开型彩票数据的分配出票方法
CN104135437A (zh) * 2013-04-30 2014-11-05 西普联特公司 用于在网络交换机中利用集中式存储器池的表搜索的装置和方法
CN104361296A (zh) * 2014-11-14 2015-02-18 武汉烽火网络有限责任公司 一种并行的大容量访问控制列表的查找方法
CN104363115A (zh) * 2014-10-30 2015-02-18 任子行网络技术股份有限公司 一种dpi无锁流状态管理方法及系统
WO2015024167A1 (zh) * 2013-08-20 2015-02-26 华为技术有限公司 一种处理用户报文的方法及转发面设备
CN105224692A (zh) * 2015-11-03 2016-01-06 武汉烽火网络有限责任公司 支持多核处理器的sdn多级流表并行查找的系统及方法
CN105591934A (zh) * 2015-08-05 2016-05-18 杭州华三通信技术有限公司 一种流表的管理方法和装置
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置
WO2016206520A1 (zh) * 2015-06-26 2016-12-29 中兴通讯股份有限公司 一种流表遍历业务的实现方法及装置
CN106713023A (zh) * 2016-12-14 2017-05-24 东软集团股份有限公司 Cam表的操作方法及装置
CN106789733A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种提高大规模网络流表查找效率的装置及方法
CN112383480A (zh) * 2020-10-29 2021-02-19 曙光网络科技有限公司 流表的处理方法、装置、监管设备和存储介质
CN113098858A (zh) * 2021-03-29 2021-07-09 上海辰锐信息科技公司 一种建链报文的无锁处理系统及方法
CN113138711A (zh) * 2020-01-20 2021-07-20 北京希姆计算科技有限公司 一种存储管理装置及芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885812A (zh) * 2006-05-29 2006-12-27 华中科技大学 一种流媒体点播系统中时间相关的对等网络组织方法
CN1925453A (zh) * 2006-10-12 2007-03-07 杭州华为三康技术有限公司 报文转发方法和装置
CN101217497A (zh) * 2008-01-18 2008-07-09 北京邮电大学 一种无线网状网络的路径选择方法
CN101330390A (zh) * 2008-03-12 2008-12-24 武汉理工大学 基于多核网络处理器的慢速路径、快速路径及其接口设计方法
CN101436989A (zh) * 2008-12-26 2009-05-20 福建星网锐捷网络有限公司 一种转发报文的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885812A (zh) * 2006-05-29 2006-12-27 华中科技大学 一种流媒体点播系统中时间相关的对等网络组织方法
CN1925453A (zh) * 2006-10-12 2007-03-07 杭州华为三康技术有限公司 报文转发方法和装置
CN101217497A (zh) * 2008-01-18 2008-07-09 北京邮电大学 一种无线网状网络的路径选择方法
CN101330390A (zh) * 2008-03-12 2008-12-24 武汉理工大学 基于多核网络处理器的慢速路径、快速路径及其接口设计方法
CN101436989A (zh) * 2008-12-26 2009-05-20 福建星网锐捷网络有限公司 一种转发报文的方法及装置

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104135437A (zh) * 2013-04-30 2014-11-05 西普联特公司 用于在网络交换机中利用集中式存储器池的表搜索的装置和方法
CN104135437B (zh) * 2013-04-30 2018-04-10 凯为公司 用于在网络交换机中利用集中式存储器池的表搜索的装置和方法
US9979642B2 (en) 2013-08-20 2018-05-22 Huawei Technologies Co., Ltd. User packet processing method and forwarding plane device
WO2015024167A1 (zh) * 2013-08-20 2015-02-26 华为技术有限公司 一种处理用户报文的方法及转发面设备
CN104541481A (zh) * 2013-08-20 2015-04-22 华为技术有限公司 一种处理用户报文的方法及转发面设备
CN103824245A (zh) * 2014-03-10 2014-05-28 北京壹平台科技有限公司 一种电子即开型彩票的出票数据处理方法
CN103824246A (zh) * 2014-03-10 2014-05-28 北京壹平台科技有限公司 一种电子即开型彩票数据的分配出票方法
CN104363115A (zh) * 2014-10-30 2015-02-18 任子行网络技术股份有限公司 一种dpi无锁流状态管理方法及系统
CN104363115B (zh) * 2014-10-30 2017-11-03 任子行网络技术股份有限公司 一种dpi无锁流状态管理方法及系统
CN104361296B (zh) * 2014-11-14 2017-03-15 武汉烽火网络有限责任公司 一种并行的大容量访问控制列表的查找方法
CN104361296A (zh) * 2014-11-14 2015-02-18 武汉烽火网络有限责任公司 一种并行的大容量访问控制列表的查找方法
CN106330694A (zh) * 2015-06-26 2017-01-11 中兴通讯股份有限公司 一种流表遍历业务的实现方法及装置
WO2016206520A1 (zh) * 2015-06-26 2016-12-29 中兴通讯股份有限公司 一种流表遍历业务的实现方法及装置
CN105591934B (zh) * 2015-08-05 2019-07-09 新华三技术有限公司 一种流表的管理方法和装置
CN105591934A (zh) * 2015-08-05 2016-05-18 杭州华三通信技术有限公司 一种流表的管理方法和装置
CN105224692A (zh) * 2015-11-03 2016-01-06 武汉烽火网络有限责任公司 支持多核处理器的sdn多级流表并行查找的系统及方法
CN105224692B (zh) * 2015-11-03 2018-08-31 武汉烽火网络有限责任公司 支持多核处理器的sdn多级流表并行查找的系统及方法
CN105634958B (zh) * 2015-12-24 2019-05-31 东软集团股份有限公司 基于多核系统的报文转发方法和装置
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置
CN106789733A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种提高大规模网络流表查找效率的装置及方法
CN106789733B (zh) * 2016-12-01 2019-12-20 北京锐安科技有限公司 一种提高大规模网络流表查找效率的装置及方法
CN106713023A (zh) * 2016-12-14 2017-05-24 东软集团股份有限公司 Cam表的操作方法及装置
CN106713023B (zh) * 2016-12-14 2020-01-07 东软集团股份有限公司 Cam表的操作方法及装置
CN113138711A (zh) * 2020-01-20 2021-07-20 北京希姆计算科技有限公司 一种存储管理装置及芯片
CN113138711B (zh) * 2020-01-20 2023-11-17 北京希姆计算科技有限公司 一种存储管理装置及芯片
CN112383480A (zh) * 2020-10-29 2021-02-19 曙光网络科技有限公司 流表的处理方法、装置、监管设备和存储介质
CN113098858A (zh) * 2021-03-29 2021-07-09 上海辰锐信息科技公司 一种建链报文的无锁处理系统及方法

Also Published As

Publication number Publication date
CN102938000B (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
CN102938000A (zh) 一种高速并行的无锁流表路由查找方法
CN102882810B (zh) 一种报文快速转发方法及装置
CN105224692B (zh) 支持多核处理器的sdn多级流表并行查找的系统及方法
US9225643B2 (en) Lookup cluster complex
CN104361296B (zh) 一种并行的大容量访问控制列表的查找方法
US9531723B2 (en) Phased bucket pre-fetch in a network processor
Qi et al. Multi-dimensional packet classification on FPGA: 100 Gbps and beyond
AU2010322819B2 (en) Processing network traffic
Qi et al. Feacan: Front-end acceleration for content-aware network processing
CN102331923A (zh) 一种基于多核多线程处理器的功能宏流水线实现方法
Ma et al. Leveraging parallelism for multi-dimensional packetclassification on software routers
CN108200092A (zh) 基于nfv技术加速报文acl匹配处理的方法及系统
CN104468357A (zh) 流表的多级化方法、多级流表处理方法及装置
Yang et al. Practical multituple packet classification using dynamic discrete bit selection
Yuan et al. HALO: Accelerating flow classification for scalable packet processing in NFV
CN106453091B (zh) 路由器转发平面的等价路由管理方法和装置
CN104008130B (zh) 一种基于混合计算硬件的网络报文分类系统和方法
Chang et al. Hash-based OpenFlow packet classification on heterogeneous system architecture
WO2021103207A1 (zh) 基于在网计算的分布式信息检索方法、系统与装置
CN103309950A (zh) 一种键值搜索方法
Jia et al. FACL: A Flexible and High-Performance ACL engine on FPGA-based SmartNIC
CN106789706A (zh) 一种基于tcam的网络分流系统
Liu et al. Memory-efficient RMT Matching Optimization Based on MBitTree
Erdem et al. High-performance ip lookup engine with compact clustered trie search
CN110830375B (zh) 基于tcam存储路由mac信息的方法及装置

Legal Events

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

Effective date of registration: 20170323

Address after: 430000 East Lake high tech Development Zone, Hubei Province, No. 6, No., high and new technology development zone, No. four

Patentee after: Fenghuo Communication Science &. Technology Co., Ltd.

Address before: East Lake high tech city of Wuhan province Hubei Dongxin road 430074 No. 5 East optical communication industry building in Wuhan Fenghuo Network Co Ltd

Patentee before: Wuhan Fenghuo Network Co., Ltd.