[发明专利]基于对称多处理SMP系统的无锁化通信方法和系统有效
申请号: | 201310141762.9 | 申请日: | 2013-04-22 |
公开(公告)号: | CN103269317A | 公开(公告)日: | 2013-08-28 |
发明(设计)人: | 张宇;刘涛;吴教仁;刘宁 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | H04L12/743 | 分类号: | H04L12/743;H04L29/06;H04L29/12 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 宋合成 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 称多 处理 smp 系统 无锁化 通信 方法 | ||
技术领域
本发明涉及计算机技术领域,特别涉及一种基于对称多处理SMP系统的无锁化通信方法和系统。
背景技术
SMP(Symmetrical Multi-Processing,对称多处理机系统)架构中,核心模块会存在共享资源的情况。多个处理机上运行的进程并行执行,可能会有若干个进程同时访问某共享资源,在编程时需要考虑共享内存带来的锁开销。
目前主流网卡的报文接收技术RSS(Receive-Side Scaling)中,哈希算法是在网卡硬件中进行编程,因此无法在外部进行自定义编程,不能根据需要调整哈希算法。RSS技术可以保证数据流的单向亲和性,因此,对于只处理单向数据流的网络设备来说,可以做到避免共享内存,但是RSS不能保证双向数据流亲和。
对于一般的流处理设备,尤其是具有NAT(Network Address Translation,网络地址转换)功能的设备,如果能够做到双向流亲和,即保证同一条流进出都由同一个cpu处理,就可以避免核与核间对内存的共享,从而消除共享内存带来的锁开销。但是目前还没有很好的解决方案。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明的一个目的在于提出一种基于对称多处理SMP系统的无锁化通信方法。本方法实现了双向流亲和,可编程,可控性强,无锁队列避免竞争开销,优化了系统性能。
本发明的第二个目的在于提出一种基于对称多处理SMP系统的无锁化通信系统。
为达到上述目的,本发明第一方面的实施例提出了一种基于对称多处理SMP系统的无锁化通信方法,所述SMP系统包括多个socket,其中每个所述socket为SMP结构,所述多个socket之间的端口独立,其中,每个所述socket进行无锁化通信包括如下步骤:
将所述ip段中的ip通过哈希算法分配至每个数据流处理核心上,并对所述socket的每个端口配置多个源地址转换snat的ip段,将snat的ip插入到接收器的维护表中,其中,将正向数据流的源地址设置为当前所在数据流处理核心的私有地址;当所述接收器检测到有逆向数据流返回时,所述接收器检测所述逆向数据流的目的地址是否为自身所在端口的snat的ip段;如果是,则采用ip通过哈希算法将所述逆向数据流的分配给包括所述私有地址的逆向数据流核心。
根据本发明实施例的基于对称多处理SMP系统的无锁化通信方法,通过哈希算法和无锁队列技术,保证数据流的双向亲和性,即同一条流进出由同一个cpu处理,避免核与核之间的内存共享以及其带来的锁竞争,消除了共享内存带来的锁开销,对用户透明,对数据流具有高度可控。可编程,灵活性和可控性强,同时性能优化效果明显。
在本发明的一个实施例中,所述哈希算法为取余的哈希算法。
在本发明的一个实施例中,在所述socket的每个端口配置所述端口对应的snat的ip段的第二个地址。
在本发明的一个实施例中,每个所述socket中设置有具有接收数据流处理核心,所述接收数据流处理核心通过无锁队列将接收到的数据流按照五元组哈希分配到每个数据流处理核心上。
本发明第二方面的实施例提出了一种基于对称多处理SMP系统的无锁化通信系统,所述SMP系统包括多个socket,其中每个所述socket为SMP结构,所述多个socket之间的端口独立,所述基于对称多处理SMP系统的无锁化通信系统对每个所述socket进行无锁化通信处理,其中所述基于对称多处理SMP系统的无锁化通信系统包括:分配装置、源地址转换snat装置和接收器。
分配装置用于将所述ip段中的ip通过哈希算法分配至每个数据流处理核心上;源地址转换snat装置用于对所述socket的每个端口配置多个源地址转换snat的ip段,将snat的ip插入到接收器的维护表中,其中,将正向数据流的源地址设置为当前所在数据流处理核心的私有地址;所述接收器用于存储snat的ip,并在检测到有逆向数据流返回时,所述接收器检测所述逆向数据流的目的地址是否为自身所在端口的snat的ip段;所述分配装置还用于在所述逆向数据流的目的地址是自身所在端口的snat的ip段时,采用ip通过哈希算法将所述逆向数据流的分配给包括所述私有地址的逆向数据流核心。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310141762.9/2.html,转载请声明来源钻瓜专利网。