报文转发方法、多核CPU及网络设备与流程

文档序号:16246930发布日期:2018-12-11 23:40阅读:315来源:国知局
报文转发方法、多核CPU及网络设备与流程

本公开涉及通信技术领域,尤其涉及一种报文转发方法、多核cpu及网络设备。

背景技术

在nfv(networkfunctionvirtualization,网络功能虚拟化)的应用场景中,vnf(virtualizednetworkfunction,虚拟网络层)一般运行在数据中心的服务器上。服务器的cpu(centralprocessingunit,中央处理器)一般为多路cpu设计,每路cpu都是一个多核cpu。例如,某款两路cpu(即两颗cpu)的服务器每路cpu具有10个核,则服务器整体具有20个核。

相关技术中,通过软件层面的仔细设计能够实现最大限度利用服务器中多核cpu中的核,避免服务器中多核cpu中的核浪费。例如,针对多核cpu,可以依靠启动多个vm(virtualmachine,虚拟机)充分利用多核cpu中的核,不同的vm利用不同的核。但是,如果vm过多,将会存在不同vm之间如何通信以及通信开销的问题。目前,对于多核cpu中的核,需要考虑如何在单个vm里面能够利用cpu的全部核,以便于发挥出cpu整体的最大性能。



技术实现要素:

有鉴于此,本公开提出了一种报文转发方法、多核cpu及网络设备,以解决相关技术中多核cpu中的核利用效率较低导致多核cpu整体转发性能较差的问题。

根据本公开的一方面,提供了一种报文转发方法,应用于多核cpu,所述多核cpu包括处于单核运行模式的核,所述方法包括:

所述处于单核运行模式的核轮询各个接口对应的缓冲区,所述各个接口用于接收报文;

如果确定第一接口接收到报文,则对所述第一接口对应的缓冲区中存储的报文进行抢占获取;

如果抢占获取到第一报文,则所述处于单核运行模式的核停止轮询所述各个接口对应的缓冲区,对所述第一报文进行转发处理和发送。

根据本公开的另一方面,提供了一种多核cpu,所述多核cpu包括处于单核运行模式的核:

所述处于单核运行模式的核轮询各个接口对应的缓冲区,所述各个接口用于接收报文;如果确定第一接口接收到报文,则对所述第一接口对应的缓冲区中存储的报文进行抢占获取;如果抢占获取到第一报文,则所述处于单核运行模式的核停止轮询所述各个接口对应的缓冲区,对所述第一报文进行转发处理和发送。

根据本公开的另一方面,提供了一种网络设备,所述网络设备包括上述的多核cpu。

本公开的报文转发方法、多核cpu及网络设备,将多核cpu中的核按照预设配置比例配置为控制核、接收核、转发核和发送核,将多核cpu中除了满足预设配置比例之外的核配置为处于单核运行模式,由此能够充分利用多核cpu中的核,降低多核cpu中的核浪费,从而提升cpu整体转发性能。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出相关技术中采用pipeline模式的核分配方法的cpu示意图。

图2示出相关技术中采用rtc模式的核分配方法的cpu示意图。

图3示出相关技术中采用rss模式的核分配方法的cpu示意图。

图4示出根据本公开一实施例的报文转发方法的流程图。

图5示出根据本公开一实施例的核分配方法的cpu示意图。

图6示出根据本公开一实施例的报文转发方法的流程图。

图7示出根据本公开一实施例的报文转发方法的流程图。

图8示出根据本公开一实施例的多核cpu的框图。

图9示出根据本公开一实施例的多核cpu的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

为了使本技术领域的人员更好地理解本公开实施例中的技术方案,下面先对本公开实施例中涉及的部分技术术语进行简单说明。

cpu:是超大规模的集成电路,是一台计算机的运算核心和控制核心,主要用于解释计算机指令以及处理计算机软件中的数据。cpu主要包括算术逻辑运算单元(arithmeticlogicunit,alu)和高速缓冲存储器(cache)以及实现它们之间联系的数据(data)、控制和状态的总线(bus)。

cpu核(core,简称核):是cpu中的核心芯片,用于完成cpu所有的计算、接受或存储命令、处理数据等,是数字处理核心。各种类型的核都具有固定的逻辑结构。换言之,在各种类型的核中,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元都具有科学的布局。

多核cpu:是指集成多个完整核的cpu。一个cpu可以具有多个核,而一个核只能属于一个cpu。

相关技术中,对于多核cpu的利用,存在以下核的分配方法:

图1示出相关技术中采用pipeline模式的核分配方法的cpu示意图。如图1所示,在pipeline(流水线)模式下,核根据功能可以分为接收核、控制核、转发核和发送核。

接收核:是指轮询各个接口对应的缓冲区,以对各个接口对应的缓冲区中存储的报文进行抢占获取的核。其中,抢占获取是指获取报文对应的指针(pointer)的过程,通过指针可以读取以指针为地址的内存中存储的报文。接口对应的缓冲区属于临界资源,获取报文时需要采用加锁等保护技术。

控制核:是指对报文进行控制处理的核。控制处理是指对报文进行各种类型控制层面处理的过程。例如,控制处理可以包括arp(addressresolutionprotocol,地址解析协议)控制处理或路由控制处理等。

转发核:是指对报文进行转发处理的核。转发处理是指根据报文的信息,查找转发表以确定报文对应的出接口的过程。其中,出端口可以包括物理接口或逻辑接口等。例如,转发核可以根据报文的目的ip(internetprotocol,网络协议)地址,查找路由表以确定报文对应的出接口。

发送核:是指发送报文的核。发送核根据转发核确定的报文对应的出接口,将报文通过该出接口发出。

如图1所示,接收核获取报文对应的指针,将指针写入到某个转发核的队列里,并通知转发核进行报文的后续处理。转发核从自己的队列里读取指针,并根据指针读取报文,对报文进行转发处理。发送核对报文进行发送。在pipeline模式下,需要对cpu的核进行合理划分,即需要确定接收核、控制核、转发核和发送核各自的个数。

在pipeline模式下,可以自由划分接收核、控制核、发送核和转发核的配置比例,流程灵活且具有较好的适应性。但是,各个类型核需要进行合理的配比和配合,cpu才能够具有较好的整体转发性能。如果各个类型核的配比不合理,将会导致cpu整体转发性能较差。例如,如果某个类型核的数量不足,将会成为整个处理流程的瓶颈,而cpu整体转发性能是由整个处理流程的瓶颈决定。

通过实验可以知晓,在接收核、控制核、转发核和发送核的配置比例是1:1:5:1的时,cpu整体转发性能可以达到最佳。即在cpu中的核的个数是8的倍数时,cpu中的核可以得到充分利用。但是,cpu中的核的个数通常是按2递增,例如,核的个数是8、10、12、14和16等。在pipeline模式下,如果cpu中的核的个数是8或16等8的倍数时,则cpu中的核可以得到充分利用。如果cpu中的核的个数是12或14等非8的倍数,则cpu中的核按照1:1:5:1的配置比例配置后,还将剩余部分核,造成核浪费。

相关技术中,如果cpu中的核的个数是12或14等非8的倍数,在将cpu中的核按照1:1:5:1的配置比例配置后,通常将剩余的部分核配置为转发核。但是,此时cpu的瓶颈核是接收核、控制核或发送核,cpu整体转发性能是由接收核、控制核或发送核的性能决定。因此,将剩余的部分核配置为转发核对于提升cpu整体转发性能作用不大。

图2示出相关技术中采用rtc模式的核分配方法的cpu示意图。如图2所示,在rtc(runtocompletion,运行至完成)模式下,报文由接收到报文的接口对应的核进行处理。接口和核之间存在静态对应关系。其中,接口是指物理接口。

如图2所示,接口接收到报文后,通过dma(directmemoryaccess,直接内存存取)将报文存储至接口对应的缓冲区,并通过中断通知接口对应的核进行报文的后续处理。接口对应的核根据指针读取报文,对报文进行控制处理和转发处理等,并对报文进行发送。

例如,cpu包括核1和核2,将核1静态分配给接口1,将核2静态分配给接口2。接口1接收到报文后,通过dma将报文存储至接口1对应的缓冲区,并通过中断通知核1进行报文的后续处理。核1对报文进行控制处理和转发处理等,并对报文进行发送。

在rtc模式下,流程简单,接口在接收到报文后,通过中断通知接口对应的核进行报文的后续处理,不需要报文分流的过程。但是,由于没有分流的过程,且接口和核之间静态对应,在接口的流量不均衡时,可能出现某些接口流量大,对应的核繁忙,而某些接口流量小,对应的核空闲的情况,造成cpu负载不均衡。

图3示出相关技术中采用rss模式的核分配方法的cpu示意图。如图3所示,在rss(receivesidescale,接收边尺度)模式下,网卡对接收到的报文进行解析,获取报文特定字段的内容,例如五元组信息:ip地址、传输层协议和端口。网卡根据配置的hash算法和报文特定字段的内容计算hash值。网卡通过hash值来确定对应的核,并通知对应的核进行报文的后续处理。

如图3所示,接口接收到报文后,网卡对报文进行解析,获取报文的源ip地址1.1.1.1和目的ip地址2.2.2.2。网卡根据配置的hash算法和源ip地址1.1.1.1、目的ip地址2.2.2.2计算hash值。网卡通过hash值来确定核1,并通知核1进行报文的后续处理。核1对报文进行控制处理和转发处理等,并对报文进行发送。

在rss模式下,cpu中的核可以得到充分利用,硬件网卡的分流效率也比较高。接口接收到的报文能够均匀地分布到cpu中的核上进行处理。但是,rss模式需要依赖网卡的硬件分流功能。目前,不是所有的网卡都具有硬件分流功能。此外,依靠网卡的硬件分流功能,不利于业务灵活扩展。如果vnf需要新的分流方式,例如,按照gre(genericroutingencapsulation,通用路由封装)、vxlan(virtualextensiblelocalareanetwork,虚似扩展局域网)隧道内部ip报文进行分流,网卡能否支持将取决于网卡的功能,造成应用受限。

在本公开实施例中,对于多核cpu的利用,存在以下核的运行模式:

单核运行模式:是指由单个核独立完成报文接收、转发处理和发送过程的运行模式。在报文需要控制处理时,处于单核运行模式的核可以对报文进行控制处理。在单核运行模式下,核可以运行有接收线程和packet处理线程。

其中,通过接收线程轮询各个接口对应的缓冲区,以对各个接口对应的缓冲区中存储的报文进行抢占获取。通过packet处理线程对报文进行控制处理和转发处理等,并对报文进行发送。

在单核运行模式下,接收线程和packet处理线程不同时运行。接收线程在抢占获取到报文后,即获取到报文对应的指针。接收线程停止运行,packet处理线程开始运行。packet处理线程根据报文对应的指针读取报文,对报文进行控制处理和转发处理等,并对报文进行发送。在将报文发送完毕后,packet处理线程停止运行,接收线程开始运行。

多核运行模式:是指由多个核配合完成报文接收、控制处理、转发处理和发送过程的运行模式。在多核运行模式下,核根据功能可以分为接收核、控制核、转发核和发送核。

其中,接收核运行有接收线程,通过接收线程轮询各个接口对应的缓冲区,以对各个接口对应的缓冲区中存储的报文进行抢占获取。控制核运行有控制线程,通过控制线程对报文进行各种类型控制层面处理。转发核运行有转发线程,转发线程根据报文的信息,查找转发表以确定报文对应的出接口。发送核运行有发送线程,通过发送线程根据转发核确定的报文对应的出接口,将报文通过该出接口发出。

在多核运行模式下,接收线程、控制线程、转发线程和发送线程由于运行于不同的核中,因此上述几个线程可以同时运行。接收线程在抢占获取到报文后,即获取到报文对应的指针。控制线程根据报文对应的指针读取报文,对报文进行控制处理。转发线程根据报文对应的指针读取报文,对报文进行转发处理。发送线程根据通过转发线程确定的报文对应的出接口,将报文通过该出接口发出。

图4示出根据本公开一实施例的报文转发方法的流程图。该方法应用于多核cpu。该多核cpu可以应用于网络设备,例如路由器、交换机或服务器等,本公开对此不作限制。如图4所示,该方法包括步骤s41和步骤s42。

在步骤s41中,将多核cpu中的核按照预设配置比例配置为控制核、接收核、转发核和发送核。

在步骤s42中,将多核cpu中除了满足预设配置比例之外的核配置为处于单核运行模式。

其中,预设配置比例是指预先设置的接收核、控制核、转发核和发送核之间的个数比例。预设配置比例可以根据经验设定,例如,预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1。本公开实施例对于预设配置比例的取值不作限制。

作为一个示例,预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1。如果cpu具有10个核,则将1个核配置为接收核、1个核配置为控制核、5个核配置为转发核以及1个核配置为发送核,多核cpu中除了满足预设配置比例之外剩余有2个核,则将该2个核配置为单核运行模式。

作为一个示例,预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1。如果cpu具有20个核,则将2个核配置为接收核、2个核配置为控制核、10个核配置为转发核以及2个核配置为发送核,多核cpu中除了满足预设配置比例之外剩余的4个核配置为单核运行模式。

作为一个示例,预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1。如果cpu具有20个核,则将1个核配置为接收核、1个核配置为控制核、5个核配置为转发核以及1个核配置为发送核,多核cpu中除了满足预设配置比例之外剩余的12个核配置为单核运行模式。

需要说明的是,尽管以将多核cpu中的核按照预设配置比例配置为接收核、控制核、转发核和发送核,将多核cpu中除了满足预设配置比例之外剩余的4个核配置为单核运行模式作为示例介绍了多核cpu中的核分配方法,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景灵活设定多核cpu中的核分配方法。

示例一:

图5示出根据本公开一实施例的核分配方法的cpu示意图。如图5所示,多核cpu属于numa节点。本实施例中以numa节点具有2个物理接口为例,即接口1和接口2进行说明。接口1和接口2的带宽分别为10gbe(gigabitethernet,千兆位以太网)。numa节点还包括内存,部分内存作为接口1对应的缓冲区(即缓冲区1),部分内存作为接口2对应的缓冲区(即缓冲区2),缓冲区用于存储接口接收到的报文。cpu具有10个核,即核1~10。核1~10可以具有相同的物理结构。

报文可以通过接口1或接口2进入,由多核cpu进行相关处理后,再通过接口1或接口2发出。接口1和接口2可以虚拟出不同逻辑接口。报文可以从numa节点的同一个物理接口进入和发出,但是进入和发出的逻辑接口不相同。例如,接口1可以虚拟出逻辑接口1和逻辑接口2。报文可以从逻辑接口1进入,从逻辑接口2发出。

如图5所示,如果预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1,则可以将核1~8配置为核组1。具体地,将核1配置为接收核、核2配置为控制核、核3~7配置为转发核以及核8配置为发送核。多核cpu中剩余2个未配置的核,即多核cpu中剩余未配置的核9和核10。将cpu除了满足上述预设配置比例之外所剩余的2个核,即多核cpu中的核9和核10配置为处于单核运行模式。

如图5所示,在核9中建立接收线程1和packet处理线程1。在核10中建立接收线程2和packet处理线程2。核9或核10可以单独完成报文的接收、转发处理和发送。核1~8构成核组1。在核1(即接收核)中建立接收线程3,在核2(即控制核)中建立控制线程1,在核3~7(即转发核)中建立转发线程1~5,在核8(即发送核)中建立发送线程1。核组1中的各个核可以配合完成报文的接收、控制处理、转发处理和发送。

本发明实施例的报文转发方法,将多核cpu中的核按照预设配置比例配置为控制核、接收核、转发核和发送核,将多核cpu中除了满足预设配置比例之外的核配置为处于单核运行模式,由此能够充分利用多核cpu中的核,降低多核cpu中的核浪费,从而提升cpu整体转发性能。

图6示出根据本公开一实施例的报文转发方法的流程图。该方法应用于多核cpu。多核cpu包括处于单核运行模式的核,处于单核运行模式的核运行有接收线程和packet处理线程。如图6所示,该方法包括步骤s61至步骤s63。

在步骤s61中,处于单核运行模式的核轮询各个接口对应的缓冲区,接口用于接收报文。

其中,轮询是指处于单核运行模式的核针对每个接口对应的缓冲区,依序定时发出询问以确定接口是否接收到报文,周而复始。例如,处于单核运行模式的核可以运行接收线程轮询各个接口对应的缓冲区。

在步骤s62中,如果确定第一接口接收到报文,则对第一接口对应的缓冲区中存储的报文进行抢占获取。

在步骤s63中,如果抢占获取到第一报文,则处于单核运行模式的核停止轮询各个接口对应的缓冲区,对第一报文进行转发处理和发送。

在一种实现方式中,对于处于单核运行模式的核,由于不能同时运行多个线程,对报文的处理与轮询过程,需要交替进行。因此在对第一报文进行转发处理和发送(步骤s63)之后,处于单核运行模式的核轮询各个接口对应的缓冲区。后续的处理流程与步骤s62和s63类似,当确定接口接收到第三报文时,则对第三报文进行抢占,并停止轮询接口,开始对第三报文进行转发处理和发送。

示例二:

承接示例一,如图5所示,核9运行接收线程1轮询缓冲区1和缓冲区2,核10运行接收线程2轮询缓冲区1和缓冲区2。如果某一时刻报文1~100进入接口1,则报文1~100存储至缓冲区1。核9运行接收线程1轮询缓冲区1,抢占获取30个报文,例如报文1~30。核10运行接收线程2轮询缓冲区1,抢占获取20个报文,例如报文31~50。

如图5所示,在核9中,接收线程1获得报文1~30对应的指针p1~p30。接收线程1停止运行,packet处理线程1开始运行。如果报文1需要进行控制处理,packet处理线程1根据指针p1读取报文1,对报文1进行控制处理和转发处理,并对报文1进行发送。如果报文2不需要进行控制处理,packet处理线程1根据指针p2读取报文2,对报文2进行转发处理,并对报文2进行发送。在将报文1~30发送完毕后,packet处理线程1停止运行,接收线程1开始运行。核10的运行过程可以参见核9,在此不再赘述。

图7示出根据本公开一实施例的报文转发方法的流程图。该方法应用于多核cpu。多核cpu还包括处于多核运行模式的处于单核运行模式的核组,处于单核运行模式的核组包括接收核、控制核、转发核和发送核,接收核运行有接收线程,控制核运行有控制线程,转发核运行有转发线程,发送核运行有发送线程。如图7所示,该方法还包括步骤s71至步骤s75。

在步骤s71中,接收核轮询各个接口对应的缓冲区。

在步骤s72中,如果确定第一接口接收到报文,则对第一接口对应的缓冲区中存储的报文进行抢占获取。

在步骤s73中,如果抢占获取到第二报文,且第二报文需要进行控制处理,则控制核对第二报文进行控制处理。

在步骤s74中,转发核对第二报文进行转发处理。

在步骤s75中,发送核对第二报文进行发送。

示例三:

承接示例二,如图5所示,核1(即接收核)运行接收线程3轮询缓冲区1和缓冲区2。如果某一时刻报文1~100进入接口1,则报文1~100存储至缓冲区1。接收线程3轮询缓冲区1,抢占获取50个报文,例如报文51~100。接收线程3获得报文51~100对应的指针p51~p100。接收线程3对报文51~100进行分流,以使得报文51~100分别由核3~7(即转发核)进行转发处理。

如图5所示,如果报文51需要进行bgp控制处理,则核2(即控制核)运行控制线程1,根据指针p51读取报文51,对报文51进行bgp控制处理;核3运行转发线程1对报文51进行转发处理;核8(即发送核)运行发送线程1发送报文51。如果报文52不需要进行控制处理,则核3运行转发线程1,根据指针p52读取报文52,对报文52进行转发处理;核8运行发送线程1发送报文52。核4~7的运行过程可以参见核3,在此不再赘述。

图8示出根据本公开一实施例的多核cpu的框图。如图8所示,所述多核cpu包括处于单核运行模式的核81。

其中,所述处于单核运行模式的核轮询各个接口对应的缓冲区,所述各个接口用于接收报文;如果确定第一接口接收到报文,则对所述第一接口对应的缓冲区中存储的报文进行抢占获取;如果抢占获取到第一报文,则所述处于单核运行模式的核停止轮询所述各个接口对应的缓冲区,对所述第一报文进行转发处理和发送。

在一种实现方式中,在对所述第一报文进行转发处理和发送之后,所述处于单核运行模式的核81轮询所述各个接口对应的缓冲区。

在一种实现方式中,所述多核cpu还包括处于多核运行模式的核组82,所述处于多核运行模式的核组82包括接收核、控制核、转发核和发送核。

其中,所述接收核轮询所述各个接口对应的缓冲区;如果确定所述第一接口接收到报文,则对所述第一接口对应的缓冲区中存储的报文进行抢占获取;如果抢占获取到第二报文,且所述第二报文需要进行控制处理,则所述控制核对所述第二报文进行控制处理;所述转发核对所述第二报文进行转发处理;所述发送核对所述第二报文进行发送。

在一种实现方式中,所述多核cpu中的核按照预设配置比例被配置为控制核、接收核、转发核和发送核;所述多核cpu中除了满足所述预设配置比例之外的核被配置为处于单核运行模式。

在一种实现方式中,所述预设配置比例为接收核:控制核:转发核:发送核=1:1:5:1。

本发明实施例的多核cpu,将多核cpu中的核按照预设配置比例配置为控制核、接收核、转发核和发送核,将多核cpu中除了满足预设配置比例之外的核配置为处于单核运行模式,由此能够充分利用多核cpu中的核,降低多核cpu中的核浪费,从而提升cpu整体转发性能。

图9示出根据本公开一实施例的多核cpu的框图。参照图9,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与报文转发逻辑对应的机器可执行指令以执行上文中多核cpu执行的报文转发方法。

本公开还可以提供另外一种网络设备,该网络设备可以包括处理器、存储有机器可执行指令的机器可读存储介质。处理器与机器可读存储介质可经由系统总线通信。并且,处理器通过读取机器可读存储介质中与报文转发逻辑对应的机器可执行指令以执行上文中cpu执行的报文转发方法。

本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或类似的存储介质,或它们的组合。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1