基于多核转发的负载均衡方法、装置及虚拟交换机制造方法及图纸

技术编号:12875269 阅读:124 留言:0更新日期:2016-02-17 11:56
本发明专利技术公开了一种基于多核转发的负载均衡方法、装置及虚拟交换机,属于网络技术领域。方法包括:对于多个CPU中的每一个CPU,竞争多个接收端口的收包权限;在竞争到任一接收端口的收包权限后,通过任一接收端口接收第一数据包;竞争与第二数据包匹配的目的发送端口的发包权限;在竞争到目的发送端口的发包权限后,通过目的发送端口发送第二数据包。由于端口与CPU之间不进行绑定,而是CPU公平竞争各个端口的收包权限和发包权限,在竞争到收包权限或发包权限后进行数据的收发,因此不会出现多个大流量的Port绑定至同一个CPU的情况,确保了CPU之间的负载均衡,且突破单个Port的处理能力受单个CPU处理能力的限制,大大降低了时延增加甚至丢包等情况的出现。

【技术实现步骤摘要】

本专利技术涉及网络
,特别涉及一种基于多核转发的负载均衡方法、装置及虚拟交换机
技术介绍
对于移动运营商来说,为了向用户提供更好的网络服务,逐步实行了网络功能虚拟化。这样诸如防火墙、流量计费、路由服务等网络吞吐量较大的服务会迀移到虚拟机(英文:Virtual Machine ;简称:VM)中运行,以取代通信网中的私有专用网元设备。由于上述服务的网络吞吐量较大,因此引入了虚拟交换机(英文:Virtual-Switch ;简称:vSwitch)来提升VM的流量处理能力。目前业界通常采用在非特权状态下进行网络流量转发的vSwitch方案。由于vSwitch负责网络流量转发,而时下随着用户业务的蓬勃发展,转发的网络流量呈大幅攀升趋势,因此使用单个中央处理器(英文:Central Processing Unit ;简称:CPU)时会存在瓶颈,所以需要引入多个CPU,即通过多核并行处理来提高转发性能。参见图1,由于vSwitch使用了多核机制,因此会同时使用多个CPU进行流量转发处理。此时每个VM的端口(Port)和物理网卡的级联端口(uplink port)交给多个CPU处理。关于一个CPU需要处理哪些Port上的流量,即如何进行多个CPU之间的负载均衡,详见图2。在图2中,Ρ0-Ρη表示不同Port,T0-Tm表示多个CPU。在进行负载均衡时,预先配置各个Port与CPU之间的绑定关系。即,首先提前对各个VM的流量状态进行评估,结合每个CPU的处理能力和每个port的流量需求,将有大流量需求的Port尽量平均分布在各个CPU上。在创建vSwitch时,在配置文件或命令行中指定多核转发所使用的CPU范围。例如,Oxf表示CPU0?CPU3用于转发。在添加Port时,通过配置文件或命令行指定当前Port使用哪个CPU进行处理。例如,config(Pl,CPU2)表示Portl的流量在CPU 2上进行处理,其中P1为Portl的缩写。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:由于提前预测各个VM的流量很困难,因此采取将Port与CPU预先进行绑定的方式,很可能会出现多个大流量的Port绑定至同一个CPU的情况。这会导致CPU之间的负载不均,进而导致流量转发的时延增加甚至出现丢包的情况。此外,由于一个Port仅能被一个CPU独占处理,因此单个Port的处理能力存在瓶颈,其处理能力受与其绑定CPU的处理能力的限制。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种基于多核转发的负载均衡方法、装置及虚拟交换机。所述技术方案如下:第一方面,提供了一种基于多核转发的负载均衡方法,应用于虚拟交换机,所述虚拟交换机包括多个CPU、多个接收端口和多个发送端口,所述方法包括:对于多个CPU中的每一个CPU,竞争多个接收端口的收包权限,所述收包权限指代接收数据包的权限;在竞争到任一接收端口的收包权限后,通过所述任一接收端口接收第一数据包;竞争与第二数据包匹配的目的发送端口的发包权限,所述第二数据包指代已经过所述CPU处理完成的数据包,所述发包权限指代发送数据包的权限;在竞争到所述目的发送端口的发包权限后,通过所述目的发送端口发送所述第二数据包。需要说明的是,本专利技术中端口与CPU之间不设定绑定关系,而是CPU公平竞争端口 ;竞争到收包或发包权限的CPU进行收包操作或发包操作。在第一方面的第一种可能的实现方式中,所述方法还包括:在所述第一数据包接收完毕后,释放所述任一接收端口的收包权限;在通过所述目的发送端口发送所述第二数据包后,释放所述目的发送端口的发包权限。竞争到收包或发包权限的CPU在本次操作完成后,需要立即释放收包权限或发包权限。其中,所述收包权限指代接收数据包的权限;所述发包权限指代发送数据包的权限。同时,将转发处理流程拆分为收包、包处理和发包三个阶段,三个阶段可并发。结合第一方面,在第一方面的第二种可能的实现方式中,所述通过所述任一接收端口接收第一数据包之后,所述方法还包括:将所述第一数据包放入所述任一接收端口的保序队列中,所述保序队列中存储了不同CPU从所述任一接收端口接收到的数据包。为了保证包的原有顺序,本专利技术还引入了保序队列,保序队列逻辑上为先进先出队列,从而保证先收到的数据包先被发出去。其中,保序队列与端口一一对应。不同CPU从同一端口接收到的数据包均被保存在同一个保序队列中。每一个CPU在对自身的数据包进行处理过程中,业务逻辑便会设定该数据包的目的发送端口。在该数据包处理完成后,该CPU竞争目的发送端口的发送权限。结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述竞争与第二数据包匹配的目的发送端口的发包权限,包括:判断所述保序队列中可发送数据包的序列号是否与所述第二数据包中起始数据包的序列号一致,所述起始数据包指代在所述第二数据包中最先通过所述任一接收端口接收到的子数据包;若所述保序队列中可发送数据包的序列号与所述第二数据包中起始数据包的序列号一致,则竞争所述目的发送端口的发包权限;其中,每一个数据包的序列号由对其进行处理的CPU分配,并存储在与接收所述数据包的接收端口匹配的保序队列中。各个接收到的数据包本身并不是真正存储在保序队列中,而是将各个数据包的序列号存储在保序队列中的相应位置,这样通过序列号便可以获取到各个数据包。对于竞争发包权限的方式,举一个简单例子来说,假如当前保序队列中有10个已经处理完成的数据包,序号为10-20 ;tl时刻CPU1从接收端口 P1收到了 10个数据包,其在保序队列中的位置为21-30,t4时刻处理完成;t2时刻CPU2从接收端口 P1也收到了 10个数据包,其在保序队列中的位置为31-40,t3时刻处理完成。此时,保序队列中可发送数据包的序列号便为21。其中,tl时刻<t2时刻<t3时刻<t4时刻。由于CPU2先处理完成,但是保序队列中可发送数据包的序号为21,起始数据包的序列号31与序列号20不连续,因而CPU2会将数据包信息保存,而不去竞争端口发送权限。而t4时刻,CPU1处理完成,起始数据包的序列号21因与序列号20连续,因此会去竞争端口发送权限。结合第一方面的第二种可能实现的方式,在第一方面的第四种可能的实现方式中,所述释放对所述任一接收端口的收包权限之后,所述方法还包括:将所述保序队列中已经过所述CPU处理完成的所述第二数据包放入对应的端口发送序列中。处理完成的数据包具体放入哪一个端口发送序列,是在对保序队列中的数据包进行处理过程中,由业务逻辑规定。其中,一个端口可对应一个或多个端口发送序列。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述将所述保序队列中已经过所述CPU处理完成的所述第二数据包放入对应的端口发送序列中,包括:将已经过所述CPU处理完成的数据包从所述保序队列中移出,并将所述数据包存储在中转缓存中;在所述保序队列中需经所述CPU处理的数据包均处理完成后,按照先进先出规则,依次将存储在所述中转缓存中的数据包放入所述端口发送序列中。结合第一方面,在第一方面的第六种可能的实现方式中,所述方法还包括:若未竞争到所述目的发送端口的发包权限,则本文档来自技高网
...

【技术保护点】
一种基于多核转发的负载均衡方法,应用于虚拟交换机,所述虚拟交换机包括多个中央处理器CPU、多个接收端口和多个发送端口,其特征在于,所述方法包括:对于多个CPU中的每一个CPU,竞争多个接收端口的收包权限,所述收包权限指代接收数据包的权限;在竞争到任一接收端口的收包权限后,通过所述任一接收端口接收第一数据包;竞争与第二数据包匹配的目的发送端口的发包权限,所述第二数据包指代已经过所述CPU处理完成的数据包,所述发包权限指代发送数据包的权限;在竞争到所述目的发送端口的发包权限后,通过所述目的发送端口发送所述第二数据包。

【技术特征摘要】

【专利技术属性】
技术研发人员:李力军吴伟蔡和
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1