CN1937575A - 信令流分发方法及信令分发处理单元 - Google Patents
信令流分发方法及信令分发处理单元 Download PDFInfo
- Publication number
- CN1937575A CN1937575A CNA2005100864692A CN200510086469A CN1937575A CN 1937575 A CN1937575 A CN 1937575A CN A2005100864692 A CNA2005100864692 A CN A2005100864692A CN 200510086469 A CN200510086469 A CN 200510086469A CN 1937575 A CN1937575 A CN 1937575A
- Authority
- CN
- China
- Prior art keywords
- hash
- address
- message
- signaling
- processing module
- 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
Images
Abstract
本发明公开了一种信令流分发方法及信令分发处理单元,用于将控制信令流负荷分发到信令处理模块,其中该方法包括:使用信令处理模块的连接配置的传输地址四元组信息为原始索引创建哈希索引表和负荷分担表;获取IP报文的源IP地址和源端口号、目的IP地址和目的端口号,并分别对源IP地址和源端口号、目的IP地址和目的端口号进行硬件哈希运算,根据运算结果取出查表的哈希键值和原始索引,在哈希索引表和负荷分担表中查找所述信令处理模块的地址信息;根据信令处理模块的地址信息分发所述控制信令流。应用本发明,不仅提高了信令流转发的速度和效率,而且具有数据配置灵活、适合多种组网方式、适用于任何传输方式的消息分发的优点。
Description
技术领域
本发明涉及网络通信领域的流分发方法,尤其是基于网络处理器使用长索引精确匹配查找实现信令流快速分发的方法及系统。
背景技术
IP分组技术以其传输信道利用率高,传输速率灵活,适合于非对称突发性数据业务传输的特点在电信网中得到了广泛应用。
传统的电信网络正在逐步IP化,网络架构上也开始将控制功能与承载分离,如信令单独组网用于呼叫等业务控制。第三代移动通信技术中分组语音承载核心网与传统电路交换网络如PSTN(Public Switched Telephone Network)、ISDN(Integrated Services Digital Network)进行互通时,一般通过信令网关SG(Signaling Gateway)完成信令的IP承载与TDM(Time Division Multiplexing)承载之间的转换。SG采用IETF(Internet Engineering Task Force)制定的SIGTRAN/SCTP(Signaling Transport/Streaming Control Transmission Protocol)协议,为SS7信令在IP网上传送提供可靠的连接。同时两个网络进行互通时由于控制信令和语音承载方面的差异,需要在关口位置完成呼叫控制信令的互通。目前一般选择SCTP、TCP(Transmission Control Protocol)等基于字节流的传输层可靠协议作为信令的传输方式。
如图1所示,对于信令网关系统而言,在网络边缘通常需要有一个处于IP层的信令分发处理单元10,完成信令IP报文的接入,并分发到多个信令处理模块20及30等。对于信令分发处理单元10而言,特别相对于传统固定网而言,信令流量一般不大,大多都采用擅长控制层面处理的通用处理器实现,但在呼叫用户规模较大的多局向、多网络互通环境下,由于通用处理器处理能力限制,控制面传送带宽很难达到核心网中大容量网关信令接入的要求,选择专用的网络处理器替代通用处理器是一个比较好的解决办法。
以Intel的IXP1200为例,IXP1200包括一个嵌入式核心中央处理器(ARMCore)和若干个精简指令结构的微处理器(微引擎)。嵌入式核心中央处理器用于异常处理和控制面处理,微处理器负责快速数据通路的用户IP报文处理,使用专为优化包处理而设计的指令集对微引擎编程,实现用户IP报文实时的并行处理,从而将IP报文以线速转发到下一节点。但使用网络处理器实现信令分发处理单元要求功能简单,IP报文转发时需尽量减少对上层协议的处理,特别是对于64bit以上长索引的查表处理难以实现。
使用网络处理器的实现信令分发处理单元,在实现信令流的线速转发的同时,需要以适当方式将信令流以负荷分担方式分发到多个信令处理模块进行上层处理,这样需要设计并实现一种高效、灵活、适用性好的分发规则保证系统的整体性能和稳定性。
一个信令端点对应一个(IP+PORT)二元组,本端和对端两个端点的IP和PORT信息共同确定一条连接(对于SCTP称为偶联)。如果简单的以连接发起端的(IP+PORT)或知名端口号作为分发依据,难以满足本端网络设备作为客户端或服务端与其他厂商设备对接多种组网方式时的流量分担要求,同时考虑对单连接(偶联)多IP的支持,此时必须实现根据三元组或四元组48bit以上索引的精确匹配算法快速进行表查找并转发IP报文。对于通用处理器而言,如果根据接收消息中的源IP地址、源端口、目的IP地址、目的端口这四个字段来判断并分发到相应的信令处理模块进行上层协议适配和处理,查表过程的延时开销很大,当有大量信令IP报文要处理时,将因为处理器负荷过高导致大量丢包甚至整个系统崩溃。目前一般采用的替代分发方式是取接收消息中的源IP地址、源端口、目的IP地址、目的端口四元组中的一个或两个作为索引进行信令处理模块的查找匹配,缺点是实际组网时,两个交换局之间建立多条连接,通常如果连接的建立可能会使用用户协议的默认端口号,尤其对于Server一侧,对外公开IP和熟知端口号用来建立连接,这时无法做到将多条连接分别配置在不同的信令处理模块以达到信令流的负荷分担和可靠传输,故这种分发方式虽然效率较高,但对于灵活组网和数据灵活配置都存在一定的局限性;另一种方法是利用某种上层协议的特性来唯一的标识一个连接,例如根据SCTP协议的验证标签字段(TAG字段),由两个对接的系统在连接建立时消息交互过程中相互确定,以后在该连接上传递的所有消息,都要携带该TAG字段,由此实现SCTP消息的分发,这种分发方式利用单一协议的特性规避了四元组分发的复杂性,但不能应用于基于其他传输协议的信令流分发。
发明内容
本发明的目的在于提供一种信令流分发方法及信令分发处理单元,通过利用网络处理器的硬件特性实现长索引精确匹配查找,在不影响性能的前提下实现基于任何传输层协议信令流的快速分发。
为了实现上述目的,本发明提供了一种信令流分发方法,基于网络处理器实现,用于将控制信令流负荷分发到信令处理模块,其中,包括:
步骤1,使用所述信令处理模块的连接配置的传输地址四元组信息为原始索引创建哈希索引表和负荷分担表;
步骤2,获取IP报文的源IP地址和源端口号、目的IP地址和目的端口号,并分别对所述源IP地址和源端口号、目的IP地址和目的端口号进行硬件哈希运算,根据运算结果取出查表的哈希键值和原始索引,在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息;
步骤3,根据所述信令处理模块的地址信息分发所述控制信令流。
上述的信令流分发方法,其中,所述步骤1之前还包括:
步骤4,从所述信令处理模块获得所有信令点间连接配置信息及对应的所述信令处理模块地址信息,用于步骤1创建所述哈希索引表和负荷分担表。
上述的信令流分发方法,其中,所述步骤1还包括:
步骤5,连接配置发生更改时,接收新的连接配置消息,并实现对所述负荷分担表的更新。
上述的信令流分发方法,其中,所述哈希索引表和负荷分担表使用传输地址四元组信息作为索引。
上述的信令流分发方法,其中,所述步骤2具体包括以下步骤:
步骤21,从外部端口循环接收IP报文,对所述IP报文作MAC、IP首部检查过滤非信令IP报文,然后送入业务IP报文处理队列;
步骤22,通过查路由和判断协议类型过滤所述IP报文,然后提取所述源IP地址、目的IP地址、源端口号和目的端口号;
步骤23,利用硬件哈希单元分别对所述源IP地址和所述源端口号,所述目的IP地址和所述目的端口号进行两次哈希运算,并对结果异或后得到根据运算结果取出查表的所述哈希键值和原始索引,并根据所述哈希键值和原始索引在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息。
上述的信令流分发方法,其中,所述步骤23中根据所述哈希键值和原始索引在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息具体执行以下操作:
取所述键值的低16位在64K表中直接定位哈希单元,在原始索引不匹配的情况下继续查next_trieblock指向的哈希单元,使用键值的16-19位在TRIEBLOCK表中直接定位哈希单元,在原始索引不匹配仍然冲突的情况下,查next_collision_node指向的哈希单元,直到找到对应表项或查表失败。
上述的信令流分发方法,其中,所述步骤23具体包括以下步骤:
步骤2301,所述源IP地址和所述源端口号、所述目的IP地址和所述目的端口号分别作48位哈希运算,将得到的哈希输出结果异或得到所述哈希键值;
步骤2302,取所述哈希键值的低16位在64K表中直接定位哈希单元;
步骤2303,判断所述IP报文的四元组信息与所述64K表项中的原始索引是否匹配,如果匹配则转步骤2313,否则转步骤2304;
步骤2304,判断所述64K表项中next_trieblock是否有效,无效则转步骤2312,否则转2305;
步骤2305,以所述步骤2304中的next_trieblock为偏移地址,定位到对应的TRIE BLOCK首地址,以所述哈希键值的16到19位在所述TRIE BLOCK中定位对应哈希单元;
步骤2306,判断所述IP报文的四元组信息与所述TRIE BLOCK表项中的原始索引是否完全匹配,如果是转2313,否则转2307;
步骤2307,判断所述TRIE BLOCK表项中的next_trieblock是否有效,无效则转2312,否则转2308;
步骤2308:以所述步骤2307中的next_collision_node为偏移地址,在COLLISION表中定位到相应冲突节点对应的哈希单元;
步骤2309:判断所述IP报文的四元组信息与所述COLLISION表项中的原始索引是否匹配,如果是转步骤2313,否则转步骤2312;
步骤2310,判断所述COLLISION表项中next_collision_node是否有效,无效则转2312,否则转2311;
步骤2311,以所述步骤2310中的所述next_collision_node为偏移地址,在所述COLLISION表中定位到相应冲突节点对应的哈希单元,转2309;
步骤2312,查表失败,丢弃所述IP报文;
步骤2313,查找成功,在所述负荷分担表中对应查找所述信令处理模块的地址信息后封装转发IP报文。
为了更好的实现上述目的,本发明还提供了一种信令分发处理单元,基于网络处理器实现,用于将控制信令流负荷分发到信令处理模块,其中,包括:
哈希索引表和负荷分担表建立及存储模块,位于所述网络处理器的核心处理器中,用于使用所述信令处理模块的连接配置的传输地址四元组信息创建并存储哈希索引表和负荷分担表;
哈希运算及信令处理查询模块,位于所述网络处理器的微处理器中,用于分别对IP报文的源IP地址和源端口号、目的IP地址和目的端口号进行硬件哈希运算,并根据运算结果取出查表的哈希键值和原始索引,在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息;
IP报文发送模块,位于所述网络处理器的微处理器中,根据哈希运算及信令处理查询模块得到的所述信令处理模块的地址信息发送所述IP报文。
上述的信令分发处理单元,其中,还包括:
连接配置信息获取模块,位于所述网络处理器的核心处理器中,用于从所述信令处理模块获取信令处理模块的连接配置信息及所述信令处理模块地址信息,供所述哈希索引表和负荷分担表建立及存储模块利用。
上述的信令分发处理单元,其中,还包括:
IP报文接收模块,位于所述网络处理器的微处理器中,循环接收IP报文,并对所述IP报文作MAC、IP首部检查过滤非信令IP报文,并送入业务IP报文处理队列。
上述的信令分发处理单元,其中,还包括:
IP报文信息提取处理模块,位于所述网络处理器的微处理器中,对所述IP报文处理队列中的IP报文通过查路由和判断协议类型进行过滤,并从接收到的IP报文首部中提取所述源IP地址、目的IP地址、源端口号和目的端口号供所述哈希运算及信令处理查询模块使用。
上述的信令分发处理单元,其中,还包括:
连接配置信息更新模块,位于所述网络处理器的核心处理器中,连接配置发生更改时,用于接收新的连接配置消息,并实现对所述哈希索引表和负荷分担表的更新。
本发明的信令流分发方法及信令分发处理单元,基于网络处理器实现,支持使用长索引精确匹配实现信令流,与其他方法相比,不仅提高了信令流转发的速度和效率,而且完全利用了连接中传输地址的全部信息分发来实现负荷分担,分发与上层协议本身无关,不需要对SCTP或TCP消息本身的内容进行判别和解析,具有数据配置灵活、适合多种组网方式、适用于任何传输方式的消息分发的优点。通过该方法可以在网络处理器上进行信令流快速分发,从而使网络处理器能够应用于大容量信令网关等边缘网络设备中,发挥重要作用。
附图说明
图1为IP承载信令组网典型配置图;
图2为本发明的信令分发处理单元结构示意图;
图3(a)为本发明实现信令流分发方法的哈希索引表和负荷分担表创建流程示意图;
图3(b)为本发明实现信令流分发方法的查询哈希索引表和负荷分担表决定路由的流程示意图;
图4为本发明实现信令流分发方法的精确匹配表查表流程示意图;
具体实施方式
本发明为解决背景技术中提到的技术问题而提出的信令流分发方法及信令分发处理单元基于网络处理器实现,支持使用长索引精确匹配查找来实现快速流分发,通过微处理器解析接收消息中传输地址四元组,使用硬件哈希进行精确匹配查找实现快速分发;同时信令分发处理单元与上层协议无关,不需要对SCTP或TCP消息的内容进行判别和解析,能同时适用于使用任何传输方式的消息分发;最后,使用网络处理器的硬件哈希单元,选择合适的哈希乘数算子,减少查表出现的冲突概率,微处理器基于四元组的查表处理可高效快速的完成,不影响消息分发效率。
图1给出了IP承载信令组网的典型配置,系统由处于网络边缘的信令分发处理单元10和多个信令处理模块20、30组成。其中本发明的信令分发处理单元10基于网络处理器实现,将网络处理器媒体面网口作为接入控制面网口,通过该网口发送信令消息到各个信令处理模块20、30。一条链路对应于两个信令端点的传输地址标识的一条信令连接,信令端点传输地址由一个IP地址和一个端口号组成,通过配置多条连接可将信令流负荷分担到多个信令处理模块。
结合图1和图2所示,该信令分发处理单元10与信令处理模块20、30或更多信令处理模块通过控制交换网连接,且信令分发处理单元10归属到其中一个或多个信令处理模块,信令处理系统A与外部系统B之间承载信令的多条连接可以以分担方式分别配置在信令处理模块20、30上。
信令分发处理单元10包括以下模块:
连接配置信息获取及更新模块101,位于网络处理器的核心处理器中,在信令分发处理单元10启动时,从其归属的信令处理模块20或30获得本系统内所有信令点间连接配置信息,包括连接对应的本端IP地址、对端IP地址、本端端口号、对端端口号,及该连接对应的信令处理模块地址信息,包括信令处理模块控制面IP地址和MAC,同时在连接配置发生更改时,对哈希索引表和负荷分担表建立及存储模块中的负荷分担表及哈希索引表进行维护更新。
哈希索引表和负荷分担表建立及存储模块102,位于网络处理器的核心处理器中,根据信息获取模块101获取的配置的传输地址四元组信息为原始索引创建并存储96bit索引的精确匹配哈希索引表和负荷分担表,通过原始索引使用精确匹配算法查哈希索引表定位哈希单元,并最终找到一条负荷分担表表项,表项内容即四元组索引对应连接配置中需要分发的信令处理模块;
IP报文接收模块103,位于网络处理器的微处理器中,循环接收IP报文,并对IP报文作MAC、IP首部检查过滤非信令IP报文,并送入业务IP报文处理队列;
IP报文信息提取处理模块104,位于网络处理器的微处理器中,对业务IP报文处理队列中的IP报文通过查路由和判断协议类型进行过滤,对于查出来的路由为非本网元的报文与协议号不为信令指定传输协议类型的报文作丢弃处理,对于过滤后正常的业务报文则从IP报文首部中提取源IP地址、目的IP址、源端口号和目的端口号;
哈希运算及信令处理查询模块105,位于网络处理器的微处理器中,根据IP报文信息提取处理模块104得到的源IP地址和源端口号、目的IP地址和目的端口号进行2次哈希运算,并根据运算结果取出查表的哈希键值和精确匹配的原始索引,并取出负荷分担表表项对应的信令处理模块地址信息;
IP报文发送模块106,位于网络处理器的微处理器中,将信令消息封装为控制面IP报文,并根据哈希运算及信令处理查询模块得到的信令处理模块地址信息将IP报文通过控制通道发送到对应的信令处理模块进行处理。
其中,本发明的信令流分发方法包括建立哈希索引表和负荷分担表的步骤及根据哈希索引表和负荷分担表查询并决定路由步骤。
如图3(a)所示,建立哈希索引表和负荷分担表的步骤由网络处理器中的核心处理器来实现,包括以下具体步骤:
步骤311,信令分发处理单元启动时,连接配置信息获取及更新模块从信令分发处理单元归属的信令处理模块获得本系统内所有信令点间连接配置信息及对应的信令处理模块地址信息;
步骤312,哈希索引表和负荷分担表建立及存储模块使用配置的传输地址四元组信息创建用于信令分发的96bit索引的精确匹配哈希索引表和负荷分担表;
步骤313,在连接配置发生更改时,连接配置信息获取及更新模块处理接收到的相关连接配置消息,并实现哈希索引表与负荷分担表的同步更新。
如图3(b)所示,根据哈希索引表和负荷分担表查询并决定路由步骤由网络处理器中的微处理器来实现,包括以下具体步骤:
步骤321,微处理器加载指令后,IP报文接收模块从外部端口循环接收IP报文,通过对IP报文作MAC、IP首部检查过滤非信令IP报文,然后送入业务IP报文处理队列;
步骤322,IP报文信息提取处理模块对业务IP报文处理队列中的IP报文通过查路由和判断协议类型进行过滤,并从接收到的IP报文首部中提取唯一标识一条连接的源IP地址、目的IP地址、源端口号和目的端口号;
步骤323,信令处理查询模块以IP报文的源IP地址、目的IP地址、源端口号和目的端口号作为输入使用硬件哈希单元进行哈希运算,根据运算结果取出查表的多级索引键值和精确匹配的原始索引,并取出负荷分担表表项对应的信令处理模块地址信息;
步骤324,IP报文发送模块将信令消息封装为控制面IP报文,送入发送队列,根据哈希单元查负荷分担表取得信令处理模块地址信息,通过与信令处理模块之间的控制通道交换到对应的信令处理模块进行处理。
在网络处理器上采用本发明的方法实现信令流快速分发,首先需要在核心处理器上进行负荷分担表及哈希索引表的创建工作,主要完成两个任务:
创建96bit索引精确匹配的负荷分担表Entry表及其对应的哈希(Hash)索引表;
将所有连接配置的四元组信息加载到负荷分担表中,表项保存分发对应的信令处理模块信息。
哈希索引表对应一组信息索引表,包括64K表、TRIE BLOCK表和冲突(COLLISION)表。
64K表为对应64K个哈希单元(保存哈希运算结果的索引表项)的直接索引表,精确匹配时对应哈希键值的低16bit数值;
TRIE BLOCK表对应一个TRIE BLOCK集合,每个TRIE BLOCK含有16个单元,可以使用哈希键值的4位直接索引定位;
COLLISION表对应所有冲突节点的集合。
索引表空间中每个哈希单元对应一组定位负荷分担信息的链接关系,该单元中保存着与连接相关的关键信息,包括64K表表项和TRIE BLOCK表与冲突表表项。
64K表表项如下表所示:
31 16 | 0 |
entry_loc | next_trieblock |
Src_IP | |
Dst_IP | |
Dst_Port | Src_Port |
TRIE BLOCK表与冲突表表项如下表所示:
31 16 | 0 |
entry_loc | next_collision_node |
Src_IP | |
Dst_IP | |
Dst_Port | Src_Port |
本发明中,哈希单元中保存了如下信息:
表项位置序号entry_loc;
下一TRIE BLOCK哈希单元(next_trieblock)或冲突节点内存地址(next_collision_node);
本端信令端点IP地址Src_IP;
对端端信令端点IP地址Dst_IP;
本端信令端点传输端口号Src_Port;及
对端信令端点传输端口号Dst_Port。
加载负荷分担表项时,可能出现以下几种情况:
如果当前64K表项还未被占用,在Entry表空间申请一个空闲条目,在该64K表项的entry_1oc写入该表项的序号,在该64K表项中写入四元组原始索引;
如果当前64K表项已被占用且没有带TRIE BLOCK块,在TRIE BLOCK表中申请一个空闲块,用哈希键值的第16-19位在该空闲块中定位,找到对应TRIE BLOCK表项单元,在该单元写入对应64K表项的next_trieblock,在Entry表空间申请一个空闲条目,把该表项的序号写入当前TRIE BLOCK表项的entry_loc,在当前TRIE BLOCK表项中写入四元组原始索引;
如果当前64K表项已被占用,当前TRIE BLOCK表项未被占用,在Entry表空间申请一个空闲条目,把该表项的序号写入当前TRIE BLOCK表项的entry_loc,在当前TRIE BLOCK表项中写入原始索引;
如果当前64K表项已被占用,当前TRIE BLOCK表项已被占用,且当前TRIE BLOCK表项无后挂节点,在COLLISION表中申请一个空闲条目,作为当前COLLISION表项,把COLLISION表项的序号写入当前TRIE BLOCK表项的next_collision_node,在ENTRY表中申请一个空闲条目,把该表项的序号写入当前COLLISION表项的entry_loc,在当前COLLISION表项中写入原始索引;
如果当前64K表项已被占用,当前TRIE BLOCK表项已被占用,且当前TRIE BLOCK表项已有后挂节点,找到最后一个后挂节点,作为当前节点,在COLLISION表中申请一个空闲条目,把偏移地址写入当前COLLISION节点的next_collision_node,把该空闲的COLLISION表条目作为当前COLLISION节点,在ENTRY表中申请一个空闲条目,把该表项的序号写入当前COLLISION表项的entry_loc,在当前COLLISION表项中写入原始索引。
步骤323中,利用该传输地址四元组作为输入参数进行哈希运算,并根据哈希运算结果定位到一个哈希单元。哈希运算过程首先将(源IP地址+源端口号)、(目的IP地址+目的端口号)作为原始索引分别送入硬件哈希单元作两次哈希运算,两个48位哈希输出结果相互异或得到查表键值。取键值的低16位在64K表中直接定位哈希单元,在原始索引不匹配的情况下继续查next_trieblock指向的哈希单元,使用键值的16-19位在TRIE BLOCK表中直接定位哈希单元,在原始索引不匹配仍然冲突的情况下,查next_collision_node指向的哈希单元,直到找到对应表项或查表失败,查表流程见图4,具体包括以下步骤:
步骤401,取四元组信息(源IP地址+源端口号)、(目的IP地址+目的端口号)分别作48位哈希运算,将得到的哈希输出结果异或,得到哈希键值KEY;
步骤402,取KEY值低16位在64K表中直接定位哈希单元;
步骤403,如果IP报文的四元组信息与64K表项中的原始索引完全匹配,转421,否则转404;
步骤404,判断64K表项中next_trieblock是否有效,无效则转420,否则转405;
步骤405,以64K表项中next_trieblock为偏移地址,定位到对应的TRIEBLOCK首地址,以哈希键值的16到19位在TRIE BLOCK中定位对应哈希单元;
步骤406,判断IP报文的四元组信息与TRIE BLOCK表项中的原始索引是否完全匹配,如果是转421,否则转407;
步骤407,判断TRIE BLOCK表项中next_trieblock是否有效,无效则转420,否则转408;
步骤408:以TRIE BLOCK表项中next_collision_node为偏移地址,在COLLISION表中定位到相应冲突节点对应的哈希单元;
步骤409:如果IP报文的四元组信息与COLLISION表项中的原始索引完全匹配,转421,否则转410;
步骤410:判断COLLISION表项中next_collision_node是否有效,无效则转420,否则转411;
步骤411:以COLLISION表项中next_collision_node为偏移地址,在COLLISION表中定位到相应冲突节点对应的哈希单元,转409;
步骤420:查表失败,IP报文丢弃;
步骤421:查找成功,封装转发IP报文,根据哈希单元查负荷分担表取得信令处理模块地址信息,对IP报文进行控制面封装后通过与信令处理模块间的控制通道交换到对应模块,从而实现基于四元组的长索引哈希精确匹配查表与分发。
在表查找发生冲突情况下由于二次索引导致的访存开销线性增长,查表效率大大降低。使用合适的哈希乘法算子实际应用中根据索引长度,选择48位或64位哈希算法,固定哈希乘法算子中部分位,编制算法对一定长度范围内的索引穷举,同时变化哈希乘法算子中其他位,对于冲突次数大于设定值的样本丢弃,对于冲突次数较少的哈希乘法算子保存,作为优选的哈希乘法算子,可将冲突可能性很小。由于硬件HASH使用的2-stage输入/输出缓存可以一条指令装入2个48bit索引值,96bit索引长度的HASH运算时间与48bit索引的HASH运算时间相比几乎没有差别。单次查表开销较48bit索引时增加不到0.2μs。就整体而言,信令分发单元的分发能力不会因为采用长索引而降低性能。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (12)
1、一种信令流分发方法,基于网络处理器实现,用于将控制信令流负荷分发到信令处理模块,其特征在于,包括:
步骤1,使用所述信令处理模块的连接配置的传输地址四元组信息为原始索引创建哈希索引表和负荷分担表;
步骤2,获取IP报文的源IP地址和源端口号、目的IP地址和目的端口号,并分别对所述源IP地址和源端口号、目的IP地址和目的端口号进行硬件哈希运算,根据运算结果取出查表的哈希键值和原始索引,在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息;
步骤3,根据所述信令处理模块的地址信息分发所述控制信令流。
2、根据权利要求1所述的信令流分发方法,其特征在于,所述步骤1之前还包括:
步骤4,从所述信令处理模块获得所有信令点间连接配置信息及对应的所述信令处理模块地址信息,用于步骤1创建所述哈希索引表和负荷分担表。
3、根据权利要求2所述的信令流分发方法,其特征在于,所述步骤1还包括:
步骤5,连接配置发生更改时,接收新的连接配置消息,并实现对所述负荷分担表和哈希索引表的更新。
4、根据权利要求2所述的信令流分发方法,其特征在于,所述哈希索引表和负荷分担表使用传输地址四元组信息作为索引。
5、根据权利要求1或4所述的信令流分发方法,其特征在于,所述步骤2具体包括以下步骤:
步骤21,从外部端口循环接收IP报文,对所述IP报文作MAC、IP首部检查过滤非信令IP报文,然后送入业务IP报文处理队列;
步骤22,通过查路由和判断协议类型过滤所述IP报文,然后提取所述源IP地址、目的IP地址、源端口号和目的端口号;
步骤23,利用硬件哈希单元分别对所述源IP地址和所述源端口号,所述目的IP地址和所述目的端口号进行两次哈希运算,并对结果异或后得到根据运算结果取出查表的所述哈希键值和原始索引,并根据所述哈希键值和原始索引在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息。
6、根据权利要求5所述的信令流分发方法,其特征在于,所述步骤23中根据所述哈希键值和原始索引在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息具体执行以下操作:
取所述键值的低16位在64K表中直接定位哈希单元,在原始索引不匹配的情况下继续查next_trieblock指向的哈希单元,使用键值的16-19位在TRIEBLOCK表中直接定位哈希单元,在原始索引不匹配仍然冲突的情况下,查next_collision_node指向的哈希单元,直到找到对应表项或查表失败。
7、根据权利要求6所述的信令流分发方法,其特征在于,所述步骤23具体包括以下步骤:
步骤2301,所述源IP地址和所述源端口号、所述目的IP地址和所述目的端口号分别作48位哈希运算,将得到的哈希输出结果异或得到所述哈希键值;
步骤2302,取所述哈希键值的低16位在64K表中直接定位哈希单元;
步骤2303,判断所述IP报文的四元组信息与所述64K表项中的原始索引是否匹配,如果匹配则转步骤2313,否则转步骤2304;
步骤2304,判断所述64K表项中next_trieblock是否有效,无效则转步骤2312,否则转2305;
步骤2305,以所述步骤2304中的next_trieblock为偏移地址,定位到对应的TRIE BLOCK首地址,以所述哈希键值的16到19位在所述TRIE BLOCK中定位对应哈希单元;
步骤2306,判断所述IP报文的四元组信息与所述TRIE BLOCK表项中的原始索引是否完全匹配,如果是转2313,否则转2307;
步骤2307,判断所述TRIE BLOCK表项中的next_trieblock是否有效,无效则转2312,否则转2308;
步骤2308:以所述步骤2307中的next_collision_node为偏移地址,在COLLISION表中定位到相应冲突节点对应的哈希单元;
步骤2309:判断所述IP报文的四元组信息与所述COLLISION表项中的原始索引是否匹配,如果是转步骤2313,否则转步骤2312;
步骤2310,判断所述COLLISION表项中next_collision_node是否有效,无效则转2312,否则转2311;
步骤2311,以所述步骤2310中的所述next_collision_node为偏移地址,在所述COLLISION表中定位到相应冲突节点对应的哈希单元,转2309;
步骤2312,查表失败,丢弃所述IP报文;
步骤2313,查找成功,在所述负荷分担表中对应查找所述信令处理模块的地址信息后封装转发IP报文。
8、一种信令分发处理单元,基于网络处理器实现,用于将控制信令流负荷分发到信令处理模块,其特征在于,包括:
哈希索引表和负荷分担表建立及存储模块,位于所述网络处理器的核心处理器中,用于使用所述信令处理模块的连接配置的传输地址四元组信息创建并存储哈希索引表和负荷分担表;
哈希运算及信令处理查询模块,位于所述网络处理器的微处理器中,用于分别对IP报文的源IP地址和源端口号、目的IP地址和目的端口号进行硬件哈希运算,并根据运算结果取出查表的哈希键值和原始索引,在所述哈希索引表和负荷分担表中查找所述信令处理模块的地址信息;
IP报文发送模块,位于所述网络处理器的微处理器中,根据哈希运算及信令处理查询模块得到的所述信令处理模块的地址信息发送所述IP报文。
9、根据权利要求8所述的信令分发处理单元,其特征在于,还包括:
连接配置信息获取模块,位于所述网络处理器的核心处理器中,用于从所述信令处理模块获取信令处理模块的连接配置信息及所述信令处理模块地址信息,供所述哈希索引表和负荷分担表建立及存储模块利用。
10、根据权利要求8所述的信令分发处理单元,其特征在于,还包括:
IP报文接收模块,位于所述网络处理器的微处理器中,循环接收IP报文,并对所述IP报文作MAC、IP首部检查过滤非信令IP报文,并送入业务IP报文处理队列。
11、根据权利要求10所述的信令分发处理单元,其特征在于,还包括:
IP报文信息提取处理模块,位于所述网络处理器的微处理器中,对所述IP报文处理队列中的IP报文通过查路由和判断协议类型进行过滤,并从接收到的IP报文首部中提取所述源IP地址、目的IP地址、源端口号和目的端口号供所述哈希运算及信令处理查询模块使用。
12、根据权利要求11所述的信令分发处理单元,其特征在于,还包括:
连接配置信息更新模块,位于所述网络处理器的核心处理器中,连接配置发生更改时,用于接收新的连接配置消息,并实现对所述哈希索引表和负荷分担表的更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100864692A CN100502353C (zh) | 2005-09-22 | 2005-09-22 | 信令流分发方法及信令分发处理单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100864692A CN100502353C (zh) | 2005-09-22 | 2005-09-22 | 信令流分发方法及信令分发处理单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1937575A true CN1937575A (zh) | 2007-03-28 |
CN100502353C CN100502353C (zh) | 2009-06-17 |
Family
ID=37954849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100864692A Expired - Fee Related CN100502353C (zh) | 2005-09-22 | 2005-09-22 | 信令流分发方法及信令分发处理单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100502353C (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296192B (zh) * | 2008-06-20 | 2010-12-29 | 中兴通讯股份有限公司 | 多归属动态信令链路建立的方法及装置 |
CN101425960B (zh) * | 2007-11-02 | 2011-07-13 | 中兴通讯股份有限公司 | 实现负载均分的方法和设备 |
CN101242255B (zh) * | 2008-02-15 | 2011-09-21 | 中兴通讯股份有限公司 | 一种实现业务n+1冗余备份及负荷分担的方法及系统 |
CN103164434A (zh) * | 2011-12-13 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 实时数据的获取方法、装置及系统 |
CN103179040A (zh) * | 2013-03-12 | 2013-06-26 | 浙江大学 | 一种软件路由器的数据包模糊匹配方法 |
CN103368872A (zh) * | 2013-07-24 | 2013-10-23 | 广东睿江科技有限公司 | 数据包转发系统和方法 |
CN103391219A (zh) * | 2013-08-09 | 2013-11-13 | 盛科网络(苏州)有限公司 | 基于会话的报文分析方法及装置 |
WO2015103868A1 (zh) * | 2014-01-09 | 2015-07-16 | 中兴通讯股份有限公司 | 一种路由查找方法和路由器 |
CN106572132A (zh) * | 2015-10-09 | 2017-04-19 | 中兴通讯股份有限公司 | 分发建链方法、装置和系统 |
CN106850625A (zh) * | 2017-02-07 | 2017-06-13 | 北京百卓网络技术有限公司 | 信令流分发方法及装置 |
CN107371189A (zh) * | 2017-07-28 | 2017-11-21 | 北京中创腾锐技术有限公司 | Lte信令分流方法及系统 |
CN109302467A (zh) * | 2018-09-19 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 消息分发方法、装置、终端及存储介质 |
CN110932983A (zh) * | 2019-12-04 | 2020-03-27 | 锐捷网络股份有限公司 | 一种tcp负载均衡方法、装置、设备及介质 |
CN111352931A (zh) * | 2018-12-21 | 2020-06-30 | 中兴通讯股份有限公司 | 一种哈希冲突的处理方法、装置及计算机可读存储介质 |
CN112202677A (zh) * | 2020-09-29 | 2021-01-08 | 中移(杭州)信息技术有限公司 | 硬件加速查询方法、系统、电子设备及存储介质 |
CN112583797A (zh) * | 2020-11-30 | 2021-03-30 | 深圳力维智联技术有限公司 | 多协议数据处理方法、装置、设备及计算机可读存储介质 |
CN114785742A (zh) * | 2022-06-21 | 2022-07-22 | 闪捷信息科技有限公司 | 访问地址信息加载方法、流量处理方法和电子设备 |
-
2005
- 2005-09-22 CN CNB2005100864692A patent/CN100502353C/zh not_active Expired - Fee Related
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425960B (zh) * | 2007-11-02 | 2011-07-13 | 中兴通讯股份有限公司 | 实现负载均分的方法和设备 |
CN101242255B (zh) * | 2008-02-15 | 2011-09-21 | 中兴通讯股份有限公司 | 一种实现业务n+1冗余备份及负荷分担的方法及系统 |
CN101296192B (zh) * | 2008-06-20 | 2010-12-29 | 中兴通讯股份有限公司 | 多归属动态信令链路建立的方法及装置 |
CN103164434A (zh) * | 2011-12-13 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 实时数据的获取方法、装置及系统 |
CN103179040A (zh) * | 2013-03-12 | 2013-06-26 | 浙江大学 | 一种软件路由器的数据包模糊匹配方法 |
CN103179040B (zh) * | 2013-03-12 | 2015-11-04 | 浙江大学 | 一种软件路由器的数据包模糊匹配方法 |
CN103368872A (zh) * | 2013-07-24 | 2013-10-23 | 广东睿江科技有限公司 | 数据包转发系统和方法 |
CN103391219A (zh) * | 2013-08-09 | 2013-11-13 | 盛科网络(苏州)有限公司 | 基于会话的报文分析方法及装置 |
CN104780100B (zh) * | 2014-01-09 | 2019-06-04 | 中兴通讯股份有限公司 | 一种路由查找方法和路由器 |
WO2015103868A1 (zh) * | 2014-01-09 | 2015-07-16 | 中兴通讯股份有限公司 | 一种路由查找方法和路由器 |
CN106572132B (zh) * | 2015-10-09 | 2020-12-29 | 中兴通讯股份有限公司 | 分发建链方法、装置和系统 |
CN106572132A (zh) * | 2015-10-09 | 2017-04-19 | 中兴通讯股份有限公司 | 分发建链方法、装置和系统 |
CN106850625A (zh) * | 2017-02-07 | 2017-06-13 | 北京百卓网络技术有限公司 | 信令流分发方法及装置 |
CN106850625B (zh) * | 2017-02-07 | 2020-11-20 | 北京百卓网络技术有限公司 | 信令流分发方法及装置 |
CN107371189A (zh) * | 2017-07-28 | 2017-11-21 | 北京中创腾锐技术有限公司 | Lte信令分流方法及系统 |
CN107371189B (zh) * | 2017-07-28 | 2020-04-10 | 北京中创腾锐技术有限公司 | Lte信令分流方法及系统 |
CN109302467A (zh) * | 2018-09-19 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 消息分发方法、装置、终端及存储介质 |
CN111352931A (zh) * | 2018-12-21 | 2020-06-30 | 中兴通讯股份有限公司 | 一种哈希冲突的处理方法、装置及计算机可读存储介质 |
CN110932983A (zh) * | 2019-12-04 | 2020-03-27 | 锐捷网络股份有限公司 | 一种tcp负载均衡方法、装置、设备及介质 |
CN110932983B (zh) * | 2019-12-04 | 2022-03-18 | 锐捷网络股份有限公司 | 一种tcp负载均衡方法、装置、设备及介质 |
CN112202677A (zh) * | 2020-09-29 | 2021-01-08 | 中移(杭州)信息技术有限公司 | 硬件加速查询方法、系统、电子设备及存储介质 |
CN112583797A (zh) * | 2020-11-30 | 2021-03-30 | 深圳力维智联技术有限公司 | 多协议数据处理方法、装置、设备及计算机可读存储介质 |
CN112583797B (zh) * | 2020-11-30 | 2022-07-19 | 深圳力维智联技术有限公司 | 多协议数据处理方法、装置、设备及计算机可读存储介质 |
CN114785742A (zh) * | 2022-06-21 | 2022-07-22 | 闪捷信息科技有限公司 | 访问地址信息加载方法、流量处理方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100502353C (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100502353C (zh) | 信令流分发方法及信令分发处理单元 | |
CA2255726C (en) | A system for converting a routing address within a telecommunications network | |
US7522580B2 (en) | Edge device and method for interconnecting SS7 signaling points (SPs) using edge device | |
KR960007672B1 (ko) | 패킷된 디지탈 정보의 전송 방법 및 스위칭 노드 | |
CN100568787C (zh) | 支持以太网媒体接入控制电路的方法及装置 | |
JPH03148940A (ja) | Lanとisdnとの相互接続方式 | |
JPH09505704A (ja) | 電話局コードを共有するための構成 | |
US6014440A (en) | Inter-half call protocol negotiation techniques | |
US7043002B2 (en) | Methods and systems for identifying, redirecting, and processing messages of different SS7 protocol variations | |
EP1169817B1 (en) | Edge device and method for interconnecting ss7 signaling points (sps) using edge device | |
JPH066413A (ja) | 連結モードネットワークと非連結モードネットワークとの間のosiトランスポートリレーシステム | |
US7725581B1 (en) | Prioritizing actions at a media gateway controller and a media gateway | |
US6819673B1 (en) | Method and system for establishing SNA sessions over wide area networks | |
US6850518B1 (en) | DLSw RIF passthru technique for providing end-to-end source route information to end stations of a data link switching network | |
US5412649A (en) | Method for multi-address transmission of cells in a communication network operating in the asynchronous transfer mode | |
CN101184047B (zh) | 一种消息路由方法、设备及系统 | |
EP1179263B1 (en) | Signalling in a telecommunications network | |
CN100544300C (zh) | 实现信令网互通的方法 | |
FI106595B (fi) | Signallointi telekommunikaatiojärjestelmässä | |
US20070220166A1 (en) | Marine pipelay system and method | |
US20040076167A1 (en) | Method for transmitting a signaling message in an ss#7 network | |
FI107308B (fi) | Signalointi telekommunikaatiojärjestelmässä | |
KR20050062245A (ko) | 이더넷 기반 대용량 사설교환기 | |
US20080046517A1 (en) | Routing of Peer-To-Peer Messages in a Communications Network | |
WO2001048982A1 (en) | Methods and systems for connecting telephony exchanges to packet switched networks using virtual trunks |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090617 Termination date: 20170922 |