基于对称多处理SMP系统的无锁化通信方法和系统与流程

文档序号:12038844阅读:187来源:国知局
基于对称多处理SMP系统的无锁化通信方法和系统与流程
本发明涉及计算机技术领域,特别涉及一种基于对称多处理SMP系统的无锁化通信方法和系统。

背景技术:
SMP(SymmetricalMulti-Processing,对称多处理机系统)架构中,核心模块会存在共享资源的情况。多个处理机上运行的进程并行执行,可能会有若干个进程同时访问某共享资源,在编程时需要考虑共享内存带来的锁开销。目前主流网卡的报文接收技术RSS(Receive-SideScaling)中,哈希算法是在网卡硬件中进行编程,因此无法在外部进行自定义编程,不能根据需要调整哈希算法。RSS技术可以保证数据流的单向亲和性,因此,对于只处理单向数据流的网络设备来说,可以做到避免共享内存,但是RSS不能保证双向数据流亲和。对于一般的流处理设备,尤其是具有NAT(NetworkAddressTranslation,网络地址转换)功能的设备,如果能够做到双向流亲和,即保证同一条流进出都由同一个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通过哈希算法将所述逆向数据流的分配给包括所述私有地址的逆向数据流核心。根据本发明实施例的基于对称多处理SMP系统的无锁化通信系统,通过哈希算法和无锁队列技术,保证数据流的双向亲和性,即同一条流进出由同一个cpu处理,避免核与核之间的内存共享以及其带来的锁竞争,消除了共享内存带来的锁开销,对用户透明,对数据流具有高度可控。可编程,灵活性和可控性强,同时性能优化效果明显。在本发明的一个实施例中,所述哈希算法为取余的哈希算法。在本发明的一个实施例中,还包括配置模块,用于在所述socket的每个端口配置所述端口对应的snat的ip段的第二个地址。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1是根据本发明实施例的基于对称多处理SMP系统的无锁化通信方法的流程图;图2是根据本发明实施例的对称多处理SMP系统的架构图;图3是根据本发明实施例的snatip的分配示意图;和图4是根据本发明实施例的基于对称多处理SMP系统的无锁化通信系统的结构示意图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。下面参考图1描述根据本发明实施例的基于对称多处理SMP系统的无锁化通信方法,SMP系统包括多个socket,其中每个socket为SMP结构,多个socket之间的端口独立,其中,每个socket进行无锁化通信包括如下步骤:步骤S110:将ip段中的ip通过哈希算法分配至每个数据流处理核心上,并对socket的每个端口配置多个源地址转换snat的ip段,将snat的ip插入到接收器的维护表中,其中,将正向数据流的源地址设置为当前所在数据流处理核心的私有地址。其中,每个socket中设置有具有接收数据流处理核心,接收数据流处理核心通过无锁队列将接收到的数据流按照五元组哈希分配到每个数据流处理核心上。步骤S120:当接收器检测到有逆向数据流返回时,接收器检测逆向数据流的目的地址是否为自身所在端口的snat的ip段。步骤S130:如果是,则采用ip通过哈希算法将逆向数据流的分配给包括私有地址的逆向数据流核心。其中,哈希算法为取余的哈希算法。其中,在socket的每个端口配置端口对应的snat的ip段的第二个地址。下面参考图2的具体的实施例对本方法进行说明。图2为对称多处理SMP系统的架构图,如图所示,本实施例中的服务器采用NUMA(NonUniformMemoryAccessAchitecture)架构,SMP系统中的服务器有两个socket,分别为socketS1和socketS2。每个socket为SMP架构,多个socket之间的端口独立。具体的服务器配置参数如下:Cpu:westmereE56452.4GHZSocketnumber:2Cpunumber:2Cpucores:6L1cachesize:32kL2cachesize:256kL3cachesize:12288kMemory:96GBSMP系统采用pipe-line的报文处理模式。由于NUMA结构具有对称性,因此下面的例子中只对socketS1进行分析,另一个socketS2以此类推。Core0为socketS1的接收数据流处理核心,用于收包,通过无锁队列Q1将收到的数据包按照五元组哈希分配到每个数据流处理核心上,如图2中,socketS1中分配到每个数据流处理核心分别为core1、core2、core3、core4、core5。从而保证单向的流亲和。数据流处理核心在处理数据包后需要做源地址转换snat,将正向数据流的源地址设置为当前所在数据流处理核心的私有的地址。接收数据流处理核心在接收到以该私有地址为目的地址的数据包后,可以使用与分配私有地址相同的哈希算法,将数据包分配给拥有该私有地址的数据流处理核心,从而实现双向流亲和。具体地,如图3所示,双向流亲和的实现进一步包括:通过配置文件在在socket的每个端口(port)上配置多个源地址转换snat的ip段。如图3所示,port0和port1分别包含的ip段为snatiplist1和snatiplist2。初始化时,将ip段中的ip通过取余哈希算法,分配至每个数据流处理核心上,如图3所示的corea、coreb、corec。将snat的ip段插入接收器Receiver/Dispatcher的维护表中,如T1、T2、T3。当逆向数据流返回时,接收器对目的地址进行识别,判断是否属于自身所在端口的snatip段。如果是,采用ip通过取余的哈希算法,将该数据包分配至包括私有地址的逆向数据流核心,从而保证同一条数据流进出方向在同一个核心 上。为了使逆向流数据包和正向流数据包从相同的端口接收,在socket的每个端口上配置snatip段的第二个地址。例如端口port0上的snatip段为1.1.1.0/24,则在port0上配置地址1.1.1.2/24之后,目的地址属于1.1.1.0/24的数据包会通过直连路由转发至port0。为了最大限度降低竞争所带来的损耗,数据包接收核心和数据流处理核心间采用单生产者、单消费者的无锁队列实现,并采用了批处理和预取等手段进行优化。可以理解的是,上述说明仅出于示例目地,本发明的实施例不限于此。本发明实施例的基于对称多处理SMP系统的无锁化通信方法,提出了一种基于SMP结构的无锁化流处理的哈希方法,可编程,保证了数据流的双向亲和性,避免了内存共享所带来的锁竞争,对用户透明,对数据流具有高度可控,同时性能优化效果明显。下面参考图4描述根据本发明实施例的基于对称多处理SMP系统的无锁化通信系统100,SMP系统包括多个socket,其中每个socket为SMP结构,多个socket之间的端口独立,基于对称多处理SMP系统的无锁化通信系统对每个socket进行无锁化通信处理,其中基于对称多处理SMP系统的无锁化通信系统包括:其中,基于对称多处理SMP系统的无锁化通信系统100包括:分配装置110、源地址转换snat装置120、接收器分配装置130和配置模块140。分配装置110用于将ip段中的ip通过哈希算法分配至每个数据流处理核心上;源地址转换snat装置120用于对socket的每个端口配置多个源地址转换snat的ip段,将snat的ip插入到接收器130的维护表中,其中,将正向数据流的源地址设置为当前所在数据流处理核心的私有地址;接收器130用于 存储snat的ip并在检测到有逆向数据流返回时,接收器130检测逆向数据流的目的地址是否为自身所在端口的snat的ip段;分配装置110还用于在逆向数据流的目的地址是自身所在端口的snat的ip段时,采用ip通过哈希算法将逆向数据流的分配给包括私有地址的逆向数据流核心。配置模块用于在socket的每个端口配置端口对应的snat的ip段的第二个地址。其中,哈希算法为取余的哈希算法。下面参考图2的具体的实施例对本系统进行说明。如图2所示,本实施例中的服务器采用NUMA(NonUniformMemoryAccessAchitecture)架构,SMP系统中的服务器有两个socket,分别为socketS1和socketS2。每个socket为SMP架构,多个socket之间的端口独立。具体的服务器配置参数如下:Cpu:westmereE56452.4GHZSocketnumber:2Cpunumber:2Cpucores:6L1cachesize:32kL2cachesize:256kL3cachesize:12288kMemory:96GBSMP系统采用pipe-line的报文处理模式。由于NUMA结构具有对称性,因此下面的例子中只对socketS1进行分析,另一个socketS2以此类推。Core0为socketS1的接收数据流处理核心,用于收包,分配装置110通过无锁队列Q1将收到的数据包按照五元组哈希分配到每个数据流处理核心上,如图2 中,分配装置110分配到每个数据流处理核心分别为core1、core2、core3、core4、core5,从而保证单向的流亲和。源地址转换snat装置120在数据流处理核心处理数据包后做源地址转换snat,将正向数据流的源地址设置为当前所在数据流处理核心的私有的地址。接收数据流处理核心在接收到以该私有地址为目的地址的数据包后,可以使用与分配私有地址相同的哈希算法,将数据包分配给拥有该私有地址的数据流处理核心,从而实现双向流亲和。具体地,如图3所示,双向流亲和的实现进一步包括:源地址转换snat装置120通过配置文件在在socket的每个端口(port)上配置多个源地址转换snat的ip段。如图3所示,port0和port1分别包含的ip段为snatiplist1和snatiplist2。初始化时,分配装置110将ip段中的ip通过取余哈希算法,分配至每个数据流处理核心上,如图3所示的corea、coreb、corec。源地址转换snat装置120将snat的ip段插入接收器130Receiver/Dispatcher的维护表中,如T1、T2、T3。当逆向数据流返回时,接收器130对目的地址进行识别,判断是否属于自身所在端口的snatip段。如果是,分配装置110采用ip通过取余的哈希算法,将该数据包分配至包括私有地址的逆向数据流核心,从而保证同一条数据流进出方向在同一个核心上。为了使逆向流数据包和正向流数据包从相同的端口接收,配置模块在socket的每个端口上配置snatip段的第二个地址。例如端口port0上的snatip段为1.1.1.0/24,则在port0上配置地址1.1.1.2/24之后,目的地址属于1.1.1.0/24的数据包会通过直连路由转发至port0。为了最大限度降低竞争所带来的损耗,数据包接收核心和数据流处理核心 间采用单生产者、单消费者的无锁队列实现,并采用了批处理和预取等手段进行优化。可以理解的是,上述说明仅出于示例目地,本发明的实施例不限于此。本发明实施例的基于对称多处理SMP系统的无锁化通信系统,提出了一种基于SMP结构的无锁化流处理的哈希方法,可编程,保证了数据流的双向亲和性,避免了内存共享所带来的锁竞争,对用户透明,对数据流具有高度可控,同时性能优化效果明显。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1