多处理器系统及该系统的数据处理方法

文档序号:6486571阅读:142来源:国知局
多处理器系统及该系统的数据处理方法
【专利摘要】一种多处理器系统包括:应用系统、虚拟平台、虚拟硬件系统和硬件转发系统。所述应用系统上运行一个或多个应用程序;虚拟平台运行一个或多个虚拟机,该虚拟机中的每个虚拟机支持不同操作系统运行,且支持所述应用系统中的所述一个或多个应用程序运行;该虚拟硬件系统包括多个虚拟中央处理器CPU、主核,及对应每个虚拟CPU的专用内存,其中,各虚拟CPU用于支持各个虚拟机的运行,各虚拟CPU对应唯一的虚拟ID,该主核上运行虚拟硬件管理系统,用于负责所有虚拟CPU的管理,该对所有虚拟CPU的管理包括根据需要控制各虚拟CPU中物理CPU或物理内核的数量;该硬件转发系统,用于接收报文并查找转发表,将有对应表项的报文按照该表项的指示进行处理及转发。
【专利说明】多处理器系统及该系统的数据处理方法
【技术领域】
[0001]本发明涉及计算机处理器【技术领域】,更具体地说,涉及一种多处理器系统及多处理器系统的数据处理方法。
【背景技术】
[0002]计算机处理器技术从单核CPU (中央处理器,Central Processing Unit, CPU)到多核CPU的发展,极大地提高了 CPU的处理性能。计算机产品(如网络通信设备和应用服务器等)中,越来越多采用一个甚至多个多核CPU,以最大限度地提高产品的处理能力。
[0003]现有技术中,计算机产品的基本结构如图1所示,包括应用系统11、平台12及硬件转发系统13,其中:所述应用系统11用于运行各种应用程序,如防火墙、内容分析及负载均衡等;硬件转发系统13包括硬件转发模块132和硬件分流模块131,所述硬件转发模块132主要用于将接收到的报文通过查询转发表获取处理动作和转发出口,所述转发表可以是流表或转发信息库(Forward Information Base, FIB)。所述硬件分流模块131将需要CPU处理的报文上传给平台12 ;所述平台12可以是通用的操作系统或专用的处理平台,主要负责所述应用系统11中多个应用之间的协调运行。所述通用的操作系统可以是Linux,VxWorks或 Windows。
[0004]在实现本发明的过程中,发明人发现,上述计算机产品中,所述平台12基于多CPU或者多核架构时,各个CPU或核只能固定地被某应用程序占用,这种固定绑定方式存在的一个严重问题=CPU的利用率较低,导致计算机产品的工作效率降低,例如:某些需要运行较多数据的应用程序由于受到其占用的CPU数量的制约而延缓了处理速度,而某些此时不需要运行数据的应用程序占用的CPU又会处于空闲状态,无法得到有效利用。

【发明内容】

[0005]本发明实施例提供一种多处理器系统及基于该多处理器系统的数据处理方法,以提高物理CPU或内核的利用率,提高系统的工作效率。
[0006]根据本发明实施例的一方面,一种多处理器系统,包括:应用系统、虚拟平台、虚拟硬件系统和硬件转发系统,其中:
[0007]所述应用系统上运行一个或多个应用程序;
[0008]虚拟平台运行一个或多个虚拟机,所述虚拟机中的每个虚拟机支持不同操作系统运行,且支持所述应用系统中的所述一个或多个应用程序运行;
[0009]所述虚拟硬件系统包括多个虚拟中央处理器CPU、主核,及对应每个虚拟CPU的专用内存,其中,各虚拟CPU用于支持各个虚拟机的运行,各虚拟CPU对应唯一的虚拟ID,所述主核上运行虚拟硬件管理系统,用于负责所有虚拟CPU的管理,所述对所有虚拟CPU的管理包括根据需要控制各虚拟CPU中物理CPU或物理内核的数量;
[0010]所述硬件转发系统,用于接收报文并查找转发表,将有对应表项的报文按照该表项的指示进行处理及转发。[0011]可选地,所述硬件转发系统包括硬件分流模块和硬件转发模块,所述硬件转发模块用于对报文进行转发,所述硬件分流模块用于依据预先确定的表示各虚拟CPU的权重信息,分发报文。
[0012]可选地,所述虚拟硬件管理系统包括监控单元和第一动态迁移控制单元,其中:
[0013]所述监控单元,用于监控其他虚拟CPU及所述虚拟CPU的内核的运行状态;
[0014]所述第一动态迁移控制单元,用于获取所述监控单元的监控结果,增加负载超过预设门限的虚拟CPU中的物理CPU或物理内核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。
[0015]可选地,所述虚拟硬件管理系统还包括:第二动态迁移控制单元,用于将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭。
[0016]可选地,所述虚拟硬件管理系统还包括镜像创建单元,用于获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,再将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上。
[0017]可选地,所述虚拟硬件管理系统还包括镜像删除单元,用于获取所述监控单元的监控结果,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
[0018]根据本发明实施例的另一方面,一种基于上述多处理器系统的数据处理方法,包括:
[0019]接收需要分发的报文时,将所述报文按照虚拟ID发送给对应的虚拟CPU ;
[0020]所述虚拟CPU将所接收到的报文发送至与虚拟ID对应的虚拟机,由所述虚拟机上运行的操作系统或应用程序进行处理,所述虚拟CPU中物理CPU或核的数量由主核上运行的虚拟硬件管理系统根据业务需要进行控制。
[0021]可选地,所述虚拟硬件管理系统根据需要控制所述虚拟CPU中物理CPU或核的数量的过程包括:
[0022]监控所有虚拟CPU及所述虚拟CPU的内核的运行状态;
[0023]增加负载超过预设门限的虚拟CPU中的物理CPU或物理CPU核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。
[0024]可选地,所述虚拟硬件管理系统根据需要控制所述虚拟CPU中物理CPU或核的数量的过程还包括:
[0025]将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭以节省电能。
[0026]可选地,还包括:所述虚拟管理系统获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,在将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上;以及,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
[0027]可选地,所述方法还包括:
[0028]主核依据负载情况计算流量分发到各虚拟CPU及该虚拟CPU的内核的分发权重,负载越大,权重越小;以及,
[0029]将所述分发权重下发至硬件转发系统,由所述硬件转发系统根据权重分发报文。[0030]可选地,分发报文是依据流表进行的,所述方法还包括:
[0031]所述主核接收应用程序提供的应用程序ID,所述应用程序ID包括虚拟机ID ;以及,
[0032]确定处理该应用程序实例的虚拟CPU,并将该虚拟CPU的ID与所述应用程序ID组成所述虚拟ID;以及,
[0033]依据所述虚拟ID建立流表后下发给所述硬件转发系统。
[0034]本发明实施例对物理CPU或CPU的物理内核按照应用进行虚拟化,将部分物理CPU或CPU的内核作为一个虚拟CPU支持操作系统及应用程序的运行,可同时支持多个不同应用系统的应用程序。并且,由于对物理CPU或CPU的物理内核按照应用进行虚拟化,因此能够根据需要控制各虚拟CPU中物理CPU或CPU的内核的数量,即本实施例中,虚拟CPU与应用程序的绑定是动态变化的,可以根据虚拟CPU的当前状态(轻载或重载)进行业务迁移,虚拟CPU内核(物理CPU或物理CPU的内核)的绑定关系也是动态的,可以根据虚拟CPU内核的当前状态(轻载或重载)进行业务迁移,提高物理CPU或物理CPU的内核的利用率以提高系统的工作效率。并且,这种迁移无需中断业务,充分体现智能性。
【专利附图】

【附图说明】
[0035]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0036]图1现有技术中多处理器架构示意图;
[0037]图2为AMP结构示意图
[0038]图3为SMP结构示意图
[0039]图4为BMP结构示意图
[0040]图5为本发明实施例提供的一种多处理器系统的结构不意图
[0041]图6为本发明实施例提供的多处理器系统进行CFS的示意图
[0042]图7为本发明实施例提供的多处理器系统进行BFS的示意图
[0043]图8为本发明实施例提供的另一种多处理器系统的结构示意图;
[0044]图9为本发明实施例提供的又一种多处理器系统的结构示意图;
[0045]图10为本发明实施例提供的多处理器系统中所采用的智能BMP的启动过程流程图;
[0046]图11为本发明实施例提供的多处理器系统中实现虚拟流表的示意图;
[0047]图12为本发明实施例提供的多处理器系统进行应用镜像的示意图;
[0048]图13为本发明实施例提供的多处理器系统进行进程镜像的示意图;
[0049]图14为本发明实施例提供的多处理器系统产生应用/进程镜像的示意图;
[0050]图15示出了本发明实施例提供的多处理器系统中,多个虚拟CPU并发运行多个实例(包括镜像实例)的示意图;
[0051]图16示出了本发明实施例提供的网络设备中,主控板和业务板的连接结构示意[0052]图17示出了本发明实施例提供的多处理器系统的数据处理方法的流程图。【具体实施方式】
[0053]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0054]多处理器系统是指包含两个或多个功能相近的处理器,处理器之间彼此可以交换数据,所有处理器共享内存,输入输出设备,控制器及外部设备,整个硬件系统由统一的操作系统控制,在处理器和程序之间实现作业、任务、程序、数组极其元素各级的全面并行。
[0055]多核处理器也叫多微处理器核心。多核处理器是将两个或更多的独立处理器封装在一起的方案,通常在一个集成电路(IC)中。比如,双核心设备只有两个独立的微处理器。
[0056]基于多核CPU的多处理器架构通常有几种基本的实现方案:AMP、SMP和BMP。为方便本领域技术人员理解,下面对这几种方案做简单介绍:
[0057]AMPCAsymmetric Mult1-Processing,非对称多处理)架构是指多个CPU或多个CPU内核中的每个CPU或者每个CPU内核独占系统资源,分别运行独立的操作系统,或者同一操作系统中的不同实例,所述多个独立的操作系统可以是异构的系统,如Linux、vxworks、Windows等。AMP是一种处理方式,需要系统资源本身是可用的,比如多个CPU,每个CPU都与内存相连,这个内存资源就是CPU可以独占的,即该CPU可以访问这个内存,其它CPU只能访问自己相连的内存。对于CPU的多个内核,它也可以预先将内存分成多个块,每个块只能由一个核访问,这也认为是独占内存资源如图2所示,各操作系统或操作系统的实例之间通过互联机制(如 TIPC (Transparent Inter-process Communication, TIPC,透明进程间通信)接口或通信协议)进行信息交互。多个同构或者异构的操作系统或操作系统实例在独立的CPU或者CPU内核上并行运行,支持线性扩展,可以最大限度地利用多处理器的处理性能。但是,各操作系统或操作系统的实例之间过多的信息交互会带来较大性能损耗,因此限制各操作系统或操作系统的实例之间的共享数据大小,并且,需要对应用程序进行分布式改造,带来较大的开发工作量。
[0058]SMP (Symmetric Mult1-Processing,对称多处理)架构是指多个 CPU 或 CPU 内核完全共享所有系统资源,整个系统只运行一个操作系统(如Linux系统),如图3所示,应用程序的运行由操作系统在所有CPU或CPU内核之间进行调度分配。由操作系统通过特定机制对系统资源进行管理,保证内存或计算资源由所有应用程序共享,应用程序透明运行,不关心其资源的具体占用情况,也不需要进行CPU之间或CPU内核之间的信息交互,因此,基于单核系统的应用程序可以无需修改即可在系统中运行,以利用多核CPU或多CPU系统的强大性能。但是,系统进行多CPU或者多CPU内核管理时需要对共享资源进行锁定以保证同时只能有一个CPU或者CPU内核进行资源处理,即各CPU或CPU内核无法同时工作,如此,一方面导致工作效率低,另一方面,频繁的锁定操作会带来较大的系统开销,并且系统开销随着CPU或CPU内核的数量增多而增大,从而影响了系统的扩展性。
[0059]BMP (Bound Mult1-Processing,混合多处理)架构是指多个CPU或多个CPU内核整体运行一个操作系统,由操作系统对所有资源进行管理,但同时对特定应用程序可以指定其与某CPU或某个CPU内核进行绑定,如图4所示。BMP架构综合了 AMP架构和SMP架构的优点,既允许绑定CPU或CPU内核的应用程序能够分布式运行以提升性能,又能使对性能要求不高的应用程序能够充分利用共享资源。因此,BMP架构能够保证高速的报文转发性能和多种业务的计算处理需要,比较适用于网络通讯设备的开发。但是,某个应用绑定的CPU或者CPU内核不能被其他应用所使用,当所绑定的应用未激活或者实际业务量不大时,其所绑定的CPU或者CPU内核的能力无法被利用,从而降低了系统的处理能力。
[0060]计算机与通信领域的虚拟化技术主要指在共享资源的情况下,应用程序从逻辑上拥有独立的运行环境,互不干扰,即应用程序具备逻辑上的各种虚拟资源,甚至从逻辑上看,应用程序拥有整个系统,如应用程序在虚拟CPU上运行,对虚拟内存的连续可用的地址空间进行管理,该地址空间可能不是连续的物理地址空间,甚至可能是由其它硬件如硬盘虚拟而成。操作系统对资源进行虚拟管理的过程即称为系统的虚拟化。所述资源包括内存资源、计算资源、输入输出资源、软件系统等各种物理资源或非物理资源。
[0061]虚拟机属于一种虚拟化技术。通过运行虚拟机监控程序(VMM, Virtual MachineMonitor)对系统硬件进行虚拟化处理,以产生多个逻辑上完全独立的虚拟机实例,每个实例可以包括所需的多种虚拟硬件,且每个虚拟机支持独立运行操作系统。每个虚拟机上运行的操作系统可以是异构系统,如Linux、vxworks和windows可分别在不同的虚拟机上运行。虚拟机的虚拟程度较大,其通过支持异构系统同时运行,从而具备跨平台的特点,使得各种不同平台的应用程序可以集成于一台硬件设备中,即一台硬件设备能够虚拟成多台虚拟设备(虚拟机与其上运行的操作系统和应用程序构成一台虚拟设备),从而较大程度地提高了硬件的利用率。另外,由于不同虚拟机之间完全隔离,互不影响,因此虚拟机也具备良好的安全性和可靠性,比较适合数据中心、云计算等需要大量设备部署的应用环境。
[0062]本发明实施例提供了一种多处理器系统,在该多处理器系统中结合虚拟化技术,对多个物理CPU或多个物理CPU中的每个物理CPU的多个内核按照应用进行虚拟化,将部分物理CPU或物理CPU的部分内核作为一个虚拟CPU支持操作系统及应用程序的运行,采用类似BMP架构,一方面能同时支持多种操作系统的应用程序的运行,另一方面,由于对物理CPU或CPU的内核按照应用进行虚拟化,因此能够根据需要控制各虚拟CPU中物理CPU或核的数量,提高物理CPU或核的利用率以提高系统的工作效率。
[0063]图5示出了本发明实施例提供的一种多处理器系统的结构示意图,如图5所示,所述多处理器系统包括应用系统51、虚拟平台52、虚拟硬件系统53和硬件转发系统54,其中:
[0064]所述应用系统51中运行各种应用程序,如路由协议、防火墙、CGN (Carrier GradeNAT,运营商级网络地址转换)或SLB (Server Load Balancing,服务器负载均衡)等应用程序。
[0065]所述虚拟平台52包括多个虚拟机,各虚拟机分别支持不同操作系统的运行,也支持所述应用系统51中各种应用程序的运行。
[0066]所述虚拟硬件系统53包括多个虚拟CPU531及虚拟内存(图5中未示出,一个虚拟内存与一个虚拟CPU相对应),各虚拟CPU531是依据物理CPU或者物理CPU的内核虚拟而成的。这个虚拟内存是逻辑概念,它可能是多个物理内存,也可能是一个物理内存的某个块或多个块。每个虚拟CPU531可以包括一个或多个物理CPU,每个虚拟CPU531也可能包括一个或多个物理CPU的一个或多个内核。所述虚拟内存依据物理内存虚拟而成,一个虚拟CPU531对应一个虚拟内存,一个虚拟CPU531与一个虚拟内存共同组成一个虚拟资源,每个虚拟资源可以用于支持一个或多个虚拟机的运行。一个虚拟内存就是系统分配给这个虚拟(PU使用的所有内存。它可以是动态管理的,从物理内存中动态分配或释放。在该多处理器系统中,各虚拟CPU具有唯一的虚拟ID,即各虚拟资源具有唯一的虚拟ID。
[0067]硬件转发系统54,用于接收报文并查找转发表,将转发表中有对应表项的报文按照该表项的指示进行处理及转发,将无对应表项的报文发送至承载于该报文中的虚拟ID对应的虚拟CPU。
[0068]所述虚拟硬件系统53包括一个或多个多个物理内存、一个或多个物理CPU或一个或多个内核,部分物理CPU或内核被虚拟成多个虚拟CPU,没有被虚拟化的部分物理CPU或内核用于管理所有虚拟CPU,即:没有被虚拟化的部分物理CPU或内核作为主核533,虚拟CPU531为从核,所述主核533上运行虚拟硬件管理系统,用于负责所有虚拟CPU的管理。所述管理包括根据需要控制各虚拟CPU中物理CPU或物理CPU的内核的数量。
[0069]具体的,所述虚拟硬件管理系统的功能包括:
[0070]1、完成所有硬件资源的虚拟化管理,所述硬件资源包括CPU、内存、接口等器件,具体的,将物理资源分成多份,每份交给一个应用程序(即实例)使用,采用虚拟ID来进行区分(即在流表的查找关键词中增加虚拟ID)不同的应用程序使用的虚拟资源,需要说明的是,物理资源与应用程序之间的关系并非固定不变的,而是可以根据情况进行调整,具体的,即可以通过修改硬件流表的内容来实现。
[0071]2、对运行于操作系统中的应用程序进行管理,对外提供应用程序的运行接口,以屏蔽内部细节,对内将应用程序加载到相应的虚拟CPU上运行,并可根据需要生成镜像实例并运行,以实现应用程序在多个虚拟CPU上并发运行。
[0072]为某个应用程序确定相应的虚拟CPU的过程可以视为一种调度过程。Linux系统可以米用CFS (Completely Fair Scheduler,完全公平调度)调度器或BFS (Brain FuckScheduler,脑残调度)调度器进行上述调度过程。下面简单介绍CFS调度器、BFS调度器。
[0073]CFS调度器对每个CPU维护一个进程队列。如图6所示,进程完成之后,由CFS调度器从队列中获取下一个进程进行运行,并进行相关进程参数的修改,因此各个CPU可以独立运行队列中的进程,为了保证各个CPU得到充分利用,可以通过一个负载均衡程序对多个CPU的运行情况进行监控,并对各进程队列进行修改以实现CPU负载的动态均衡,负载均衡的过程中需要进行锁操作,以切换进程队列。
[0074]BFS调度器对所有虚拟CPU维护一个进程队列。如图7所示,当进程队列运行完成之后,由BFS调度器从队列中获取下一个进程进行运行切换,并进行相关进程参数的修改。BFS队列从统一进程队列中选择运行进程,并选择适合的虚拟CPU进行运行切换,调度过程中无需进行队列的锁操作,避免了相应的性能开销。从严格意义上来说,本发明实施例的BFS调度器不同于传统的BFS调度器,因为其调度的是虚拟CPU而非物理CPU,并且位于虚拟硬件系统53中且基于应用程序进行调度,而非位于操作系统中,另外还可以进行镜像应用。
[0075]CFS调度通过多独立队列处理实现了并行调度的能力,但因为负载均衡的锁操作限制了处理性能,而BFS调度通过单一队列调度避免了锁操作,在物理CPU数量较少时能够获取较高的处理性能。
[0076]3、应用的负载均衡管理,即监控其他虚拟CPU及所述虚拟CPU的内核的运行状态,根据需要进行应用程序的动态迁移,或动态计算流量到虚拟CPU及所述虚拟CPU的内核的分发权重,并下发到硬件转发系统54,以便所述硬件转发系统54中的可根据下发的权重分发报文,即前文所述“所述物理CPU或物理CPU的核的权重可以根据物理CPU或物理CPU的核的工作状态动态设定”具体是由主核或主CPU执行的。所述运行状态包括轻载、满负荷等中的一个或多个。
[0077]本发明实施例中,对于运行同一个操作系统的虚拟CPU来说,其内核数量是可以修改的,包括:增加负载超过预设门限的虚拟CPU中的物理CPU或物理CPU核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU,或者,将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭以节省电能。
[0078]例如同样运行Linux系统的虚拟CPUl和虚拟CPU2,分别具有4个内核,其中,虚拟CPUl运行防火墙程序,虚拟CPU2运行SLB,则可根据情况进行修改。具体的修改依据即是所述动态迁移的依据或条件。
[0079]所述依据或条件包括:
[0080]①某个虚拟CPU/或虚拟内核(组成虚拟CPU的物理CPU或物理CPU的核)任务繁忙,虚拟CPU/或内核的占用率超过预设门限(警戒线),则可增加物理CPU或物理CPU内核,或者将该虚拟CPU对应的应用转移到其他虚拟CPU,或者运用镜像应用,关于所述镜像应用的内容将在下文详细介绍。
[0081 ] ②某个虚拟CPU/或虚拟内核(组成虚拟CPU的物理CPU或物理CPU内核)处于空闲,可减少几个物理内核或者将别的虚拟的应用迁移过来(或者运用镜像应用)。
[0082]③某个虚拟CPU/或虚拟内核处于空闲,将其他虚拟CPU的应用均集中于该处于空闲的虚拟CPU上,并将其他虚拟CPU关闭以节省电能,需要说明的是,这种功能可以通过配置激活或者关闭。
[0083]主核(默认为O核即第一核)启动后,收集所有虚拟CPU的信息,在上述条件中的任一或多个满足时,发起动态迁移过程。
[0084]在一些实施例中,所述虚拟硬件管理系统包括监控单元和第一动态迁移控制单元,其中:
[0085]所述监控单元,用于监控其他虚拟CPU及所述虚拟CPU的内核的运行状态;
[0086]所述第一动态迁移控制单元,用于获取所述监控单元的监控结果,增加负载超过预设门限的虚拟CPU中的物理CPU或物理CPU核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。
[0087]在另外的一些实施例中,所述虚拟硬件管理系统还可以进一步包括第二动态迁移控制单元。所述第二动态迁移控制单元用于将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭以节省电能。
[0088]4、实时调度,基于应用(即应用程序)进行调度,将实时应用对应的报文以高优先级实时发送,具体的,主核需要识别哪些应用是实时应用(可以在该应用运行时向主核注册以增加实时标记),对于这些应用,主核收到报文时马上交给应用处理,而不需要以排队的方式等待,以保证低时延、高优先级实时转发的目的。
[0089]可以看出,本系统结合了虚拟化技术,在现有技术的架构上进一步增加了虚拟硬件系统,该虚拟硬件系统中设置有多个依据一个或多个物理器件(CPU、CPU内核及物理内存)虚拟而成的虚拟资源,各虚拟资源能够支持虚拟机运行。不同的虚拟资源能够独立支持不同的操作系统,其与操作系统可以是一对一的关系,即能够并行运行操作系统及应用程序。并且能够根据需要控制各虚拟CPU中物理CPU或核的数量,从而提高了物理CPU或核的利用率,提高系统的工作效率。并且,在改变各虚拟CPU中物理CPU或核的数量(即动态迁移)过程中,业务无需中断,充分体现“智能”性。
[0090]为了配合上述虚拟硬件系统的配置,本系统对相关的硬件表项进行虚拟,即设置对应各个虚拟CPU的虚拟ID,在硬件分流时可以直接将报文提供给虚拟ID对应的虚拟CPU,所述各个虚拟CPU的虚拟ID可以设置在报文中。硬件表项指前面提到的硬件中的转发表项(如端口表、流表)。
[0091]可选地,所述硬件转发系统54包括硬件转发模块541和硬件分流模块542。如图8所示,所述硬件转发模块541接收到报文,基于报文中的虚拟ID查找转发表,并完成转发表中指定的动作,并转发报文到相关出接口 ;所述硬件分流模块542对转发表中无对应表项的报文或指定上送的报文按照该报文中的虚拟ID发送至对应虚拟CPU。这里的转发表指硬件中转发流程涉及的相关表,不仅仅指FIB表,文中有说明,包括端口表、流表等。
[0092]所述硬件分流模块542基于五元组(源IP、目的IP、源端口、目的端口和协议号)进行分发。如果虚拟CPU中具有多个物理CPU或物理CPU内核,则所述硬件分流模块542可按照物理CPU或物理CPU内核的不同权重分发报文。所述物理CPU或物理CPU内核的权重可以根据物理CPU或物理CPU内核的工作状态动态设定。
[0093]可选地,应用系统51和虚拟平台52均可包括管理控制部分和业务控制与转发部分。如图9所示,管理控制部分用于进行管理控制,运行标准的Linux/vxworks操作系统以及网络控制过程,主要处理多处理器系统所在网络设备作为网络端点的相关报文,例如执行路由协议:所在网络设备(即本设备)与对端设备(外部设备)运行路由协议,对端设备的协议报文是发送给本设备的,也就是说本设备是端节点,要分析协议报文并处理其中的路由信息。业务控制与转发部分进行业务控制与转发,运行优化的Linux(本文将优化的Linux称为Linux+) /vxworks系统(包括虚拟机监控程序)。应用系统51运行防火墙、CGN或SLB等应用程序,主要处理所在网络设备(即本设备)作为网络转发节点的相关数据报文,例如:启动CGN功能以处理报文,该报文为一个浏览网页的报文,是用户终端发给服务器的报文,经过本设备进行IP地址变化后再将报文转发出去,最终到达服务器。
[0094]为了方便本领域技术人员理解,下面详细介绍所述标准的Linux及优化后的Linux (即 Linux+)。
[0095]Linux是一种具备良好开放性的操作系统软件,由于其开源特点,可以支持运行和优化各种各样的基于Linux内核的应用软件,因此得到越来越多的应用。在数据通信领域,产生了许多基于Linux的应用软件和系统,例如路由器、交换机、防火墙或SLB等。
[0096]Linux+基于标准Linux进行优化,以使其适合网络通讯设备对报文进行快速转发的需要。业界已经存在一些优化的方案,例如ZOL (Zero-Overhead Linux,零开销Linux),可通过减小甚至消除Linux系统开销(如系统调度和中断开销、时间片机制引起的开销等)来提高数据报文的处理性能。
[0097]上述多处理器系统中,虚拟硬件系统中,一个虚拟CPU可以由多个物理CPU或物理CPU内核组成,物理CPU或物理CPU内核的数量一般不大于4个,进程调度采用上述优化的BFS调度机制,每个虚拟CPU上运行上述优化的操作系统(Linux+),虚拟CPU之间为AMP模式,且通过高速的通讯接口相互通讯。
[0098]所述虚拟硬件系统的启动过程如图10所示,包括:
[0099]S101、主核(一般默认O核为主核)启动。
[0100]S102、检查虚拟CPU及对应系统状态。
[0101]S103、启动其他虚拟CPU及对应系统。
[0102]S104、以模式I工作,所述模式I为:基于业务,不同虚拟CPU运行不同系统。
[0103]例如不同虚拟CPU 运行 FW (Firewall,防火墙)/DPI (Deep Packet Inspection,深度报文检测)/SLB,或 GGSN (Gateway GPRS Support Node,网关 GPRS (General PacketRadio Service,通用包无线服务)支持节点)。
[0104]S105、以模式2工作,所述模式2为:基于实例,不同虚拟CPU运行同一系统,所述系统启动不同业务实例或虚拟机。
[0105]S106、以模式3工作,所述模式3为:混合模式,不同虚拟CPU运行不同系统或同一系统。
[0106]所述虚拟硬件系统基于虚拟CPU运行;能够支持多个系统在虚拟CPU上并行运行,而传统的BMP架构只运行一个系统;主核控制标准操作系统,从核运行基于转发进行优化;虚拟CPU与应用程序的绑定是动态变化的,可以根据虚拟CPU的当前状态(轻载或重载)进行业务无损迁移,体现智能性;虚拟CPU内核(物理CPU或物理CPU的核)的绑定关系也是动态的,可以根据核当前状态轻载或重载)进行业务无损迁移,同样体彰显智能性。
[0107]本申请中,每一个虚拟机具有一个独立的ID:虚拟机ID。每一个应用程序实例具有一个独立的ID:应用程序实例ID (VlnstID)0应用程序实例ID中具有对应虚拟机ID。每一个虚拟CPU具有一个独立的ID =VCPUID0硬件转发系统54中用于指导分发的流表中具有虚拟ID表项,该虚拟ID表项包括所述VlnstID和所述vCPWD。所述流表由应用系统中的应用程序建立。所述应用程序建立所述流表的过程为:应用程序建立或者删除流表时,通过操作系统及虚拟机获取vlnstlD,并下发给虚拟硬件系统53,虚拟硬件系统53中的主核确定处理该应用程序实例的虚拟CPU,并获取处理该应用程序实例的虚拟CPU的ID (即vCPUID),将VlnstID和vCPHD组成虚拟ID表项(vID),所有虚拟ID表项vID组成该虚拟流表,主核将该虚拟流表下发给硬件转发系统54。需要说明的是,虚拟流表的建立和删除由虚拟机上的应用程序触发。但应用程序不能直接操作硬件表项,而必须通过虚拟硬件系统53的主核上运行的虚拟硬件管理程序进行操作。即所述虚拟硬件管理程序将vCPWD发到各个从核,各从核实现虚拟流表的建立和删除。其中,所述vID可以是个32位整数。其中,所述vID的高16位为vCPUID,所述vID的低16位为VlnstID0
[0108]在本发明的一个实施例中,应用程序需要获取该应用程序对应的虚拟机ID。应用程序获取该应用程序对应的虚拟机ID的方式可以有多种,例如,直接将某个虚拟机对应的IP地址作为虚拟机ID,或者建立虚拟机管理程序与应用程序之间的接口,由虚拟机管理程序通过该接口将虚拟机ID通知应用程序。虚拟机管理程序可以知道所有的虚拟机ID。[0109]此外,所述vID也可以是其他位数的,例如可以是更长位的,前文所述32位整数只是一个例子而已。
[0110]虚拟流表支持共享模式和非共享模式。虚拟流表基于虚拟CPU进行配置管理。如图11所示,在处于共享模式时,多个应用程序在虚拟CPU的虚拟机上运行,可以处理同一个数据报文(如报文进行防火墙处理后,进行的NAT (Network Address Translation,网络地址转换)处理)。此时,在硬件转发系统54中只需要建立一个流表,不同应用程序的动作都下发到该流表中,于是,在进行报文转发时,只查一次流表即可完成多个动作;而在处于非共享模式时,虚拟机上的应用程序分别通过虚拟硬件系统53建立流表,在虚拟转发系统54中存在针对同一条流的多个流表,于是报文转发时,将会查到多个流表并完成相应的动作。
[0111]硬件转发系统54中,除了流表外,该硬件转发系统54中的其他表项,如端口表、用户表、ACL表、FIB表均需要通过vID进行虚拟化。实际上就是在查相应的表时,其查找KEY要增加vID。
[0112]硬件转发系统54中的硬件分流模块542在需要分发报文时,如果已有流表,则vID信息携带在报文中,将所述报文上送到该报文携带的vID信息对应的虚拟CPU,并由所述虚拟CPU上的系统根据所述vID上送报文至对应的应用程序。如果流表不存在,则只需在报文中携带vCPWD,硬件分流模块542根据该ID将报文提供给相应虚拟CPU处理;所述vCPWD可根据接口表或ACL (Access Control List,访问控制列表)或用户表或FIB表的vID分解得到。此过程中,如果在多个虚拟CPU之间分担流量,根据接口表或ACL或用户表或FIB表得到的该vCPWD则为与对应虚拟CPU关联的一个特殊值,根据该值及分担算法(如按权重),硬件分流模块542可以将报文进行分发。
[0113]在本发明的另一个实施例中,在虚拟硬件系统53中,主核对从核的调度过程中还可结合镜像处理。所述镜像处理包括应用镜像和进程镜像。所述应用镜像由主核实现。具体的,所述应用镜像由主核维护一个应用队列,具体应用程序由该应用程序启动时注册到主核。如图12所示,该应用队列确定需要加载到哪个虚拟CPU,以及,是否可以根据其他虚拟CPU的负载情况动态产生镜像应用,以及对镜像应用的删除。而所述进程镜像的管理由运行于主核上的操作系统控制和管理,所述控制系统维护进程队列,如图13所示,采用BFS调度方法,只有一个进行队列,所述控制系统根据虚拟CPU内各核及其他虚拟CPU的负载情况确定是否需要产生镜像进程,并且还维护镜像进程的产生和删除。
[0114]下面结合图14,介绍应用/进程镜像的产生过程:
[0115]由定时器或者业务状态变化触发应用/进程队列切换处理(即触发下一个处理),即在定时器超时或者当前应用/进程的处理结束时,或者检测出某虚拟CPU或核的负载状态变化(如检测为空闲或者超负荷)。
[0116]检测所述下一个表项是否有镜像,如果没有镜像且允许镜像并且某虚拟CPU或某个虚拟内核(非已经有当前应用或应用镜像运行的虚拟CPU或虚拟内核)轻载时,将应用的一个副本加载到该虚拟CPU(或者产生一个镜像进程调度到该虚拟CPU或该虚拟内核)。并且,修改接口表中的VCPHD值或ACL中的VCPHD值或用户表中的vCPHD值或FIB表中的vCPUID值,以使后续该应用/进程需要处理的报文能被送到同一个应用程序处理。
[0117]删除过程与上述应用/进程的产生过程类似,不对其赘述。
[0118]经过上述过程,系统内就实现了应用/进程在多个虚拟CPU或核内的并发运行,需要注意的是,镜像应用/进程的目的是实现虚拟CPU或核内的并发运行,因此每个虚拟CPU只需一个镜像应用,而虚拟CPU的核只需要一个镜像进程。应用镜像时绑定的为虚拟CPU,而进程镜像时则绑定虚拟CPU的核。
[0119]主核和操作系统(如Linux)分别维护应用和进程的相关消息,当发生虚拟CPU或核超过负载时,优先将该虚拟CPU或核上的镜像应用/进程删除。
[0120]本实施例所采用的镜像处理(应用镜像和进程镜像)可以在多个虚拟CPU或核上并发运行,提高处理性能。图15示出了虚拟硬件系统53中,多个虚拟CPU并发运行多个实例(包括镜像实例)的示意图。如图15所示,应用程序实例1、应用程序实例2和应用程序实例3均运行于标准Linux上,所述Linux运行于主核上,虚拟硬件系统53中具有多个虚拟CPU,其中,对应实例I的虚拟CPU包括物理CPUl,对应实例2的虚拟CPU包括物理CPU2、CPU3,对应镜像实例I和镜像实例2的虚拟CPU包括CPU4、CPU5和CPU6,对应实例3及镜像实例I的虚拟CPU包括CPU7和CPU8。并且,对应镜像实例I和镜像实例2的虚拟CPU采用BFS调度方式。
[0121]在一些实施例中,所述虚拟硬件管理系统除了包括监控单元、第一动态迁移控制单元和第二动态迁移控制单元之外,还可以进一步包括镜像管理单元,所述镜像管理单元可以包括镜像创建单元和/或镜像删除单元,其中:
[0122]所述镜像创建单元,用于获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,在将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上。
[0123]所述镜像删除单元,用于获取所述监控单元的监控结果,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
[0124]此外,在本发明的其他实施例中,所述镜像处理还可以包括虚拟机镜像,对于虚拟机而言,不能直接到其他虚拟机中运行应用程序,而是需要生成一个新的虚拟机来运行。
[0125]虚拟机的镜像由操作系统的虚拟管理程序来控制和管理,方法与前文应用镜像和进程镜像类似,在此不再赘述。
[0126]另外,本发明其他实施例还提供一种网络设备,该网络设备包括主控板和业务板,其中主控板为用户提供控制平面,业务板包括所述多处理器系统,所述主控板和业务板的结构如图16所示,其中,每个物理CPU中具有多个核,各物理CPU中包括一个控制核和多个业务核,所有控制核组成所述主核,所有业务核(可以位于不同的物理CPU)中的一个或多个组成某个虚拟CPU,例如图16中黑色曲线箭头所指的多个业务核即可组成一个虚拟CPU。
[0127]基于所述多处理器系统,本申请还提供一种数据处理方法,该方法主要包括该多处理器系统接收到报文后的处理过程,基本流程如图17所示,包括:
[0128]S171、接收报文。
[0129]S172、判断所述报文是转发还是分发,若是转发,则进入S173;否则,进入S174。
[0130]S173、查找流表,将所述报文转发至相应出接口。
[0131]S174、按照虚拟ID分发给与所述虚拟ID对应的虚拟CPU,进入S175。具体的,流表经过虚拟化后,其中包含有虚拟ID,具体可以参照前文系统中硬件转发系统部分的内容。查找流表确定对应的虚拟ID,然后发送至与所述虚拟ID对应的虚拟CPU。这个虚拟ID是流表中的虚拟ID,它包含所有的虚拟信息(虚拟CPU ID,虚拟机ID),是上面变换/组合出来的一个ID。
[0132]S175、所述虚拟CPU将所接收到的报文发送至与虚拟ID对应的虚拟机,由所述虚拟机上运行的操作系统或应用程序进行处理。
[0133]所述系统中的虚拟硬件系统中,包括从核和由一个或多个物理CPU或物理内核形成的主核,从核通常包括一个或多个虚拟CPU。
[0134]所述方法还包括动态迁移过程,该过程包括:
[0135]主核上运行的虚拟硬件管理系统监控其他虚拟CPU及所述虚拟CPU的内核的运行状态。
[0136]增加负载超过预设门限的虚拟CPU中的物理CPU或物理CPU核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。
[0137]或者,将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭以节省电能。
[0138]此外,上述S 174的具体过程是通过虚拟CPU的不同权重进行有分别的分发的,具体由硬件转发系统根据获取的权重信息执行,而权重信息是由主核下发的。其过程如下:
[0139]所述虚拟硬件管理系统依据负载情况计算流量各虚拟CPU及所述虚拟CPU内核的分发权重,负载越大,权重越小;以及,
[0140]将所述分发权重下发至硬件转发系统,由所述硬件转发系统根据权重分发报文。
[0141]可选地,分发报文是依据流表进行的,而流表同样是由所述虚拟硬件管理系统下发的,具体过程包括:
[0142]所述虚拟硬件管理系统接收应用程序提供的应用程序ID,所述应用程序ID中具有虚拟机ID ;确定处理该应用程序实例的虚拟CPU,并将该虚拟CPU的ID与所述应用程序ID组成虚拟ID ;依据所述虚拟ID建立流表后下发给所述硬件转发系统。
[0143]此外,另外实施例提供的数据处理方法还可以包括镜像管理过程:
[0144]所述虚拟管理系统获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,在将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上;以及,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
[0145]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0146]本领域技术人员可以理解,可以使用许多不同的工艺和技术中的任意一种来表示信息、消息和信号。例如,上述说明中提到过的消息、信息都可以表示为电压、电流、电磁波、磁场或磁性粒子、光场或以上任意组合。
[0147]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0148]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,所述程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0149]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种多处理器系统,其特征在于,包括应用系统、虚拟平台、虚拟硬件系统和硬件转发系统,其中:所述应用系统上运行一个或多个应用程序;虚拟平台运行一个或多个虚拟机,所述虚拟机中的每个虚拟机支持不同操作系统运行,且支持所述应用系统中的所述一个或多个应用程序运行;所述虚拟硬件系统包括多个虚拟中央处理器CPU、主核,及对应每个虚拟CPU的专用内存,其中,各虚拟CPU用于支持各个虚拟机的运行,各虚拟CPU对应唯一的虚拟ID,所述主核上运行虚拟硬件管理系统,用于负责所有虚拟CPU的管理,所述对所有虚拟CPU的管理包括根据需要控制各虚拟CPU中物理CPU或物理内核的数量;所述硬件转发系统,用于接收报文并查找转发表,将有对应表项的报文按照该表项的指示进行处理及转发。
2.根据权利要求1所述的多处理器系统,其特征在于,所述硬件转发系统包括硬件分流模块和硬件转发模块,所述硬件转发模块用于对报文进行转发,所述硬件分流模块用于依据预先确定的表示各虚拟CPU的权重信息,分发报文。
3.根据权利要求2所述的多处理器系统,所述虚拟硬件管理系统包括监控单元和第一动态迁移控制单元,其中:所述监控单元,用于监控其他虚拟CPU及所述虚拟CPU的内核的运行状态;所述第一动态迁移控制单元,用于获取所述监控单元的监控结果,增加负载超过预设门限的虚拟CPU中的物理CPU或物理内核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。`
4.根据权利要求3所述的多处理器系统,所述虚拟硬件管理系统还包括:第二动态迁移控制单元,用于将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭。
5.根据权利要求2或3所述的多处理器系统,其特征在于,所述虚拟硬件管理系统还包括镜像创建单元,用于获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,再将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上。
6.根据权利要求5所述的多处理器系统,其特征在于,所述虚拟硬件管理系统还包括镜像删除单元,用于获取所述监控单元的监控结果,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
7.一种基于权利要求1所述的多处理器系统的数据处理方法,其特征在于,包括:接收需要分发的报文时,将所述报文按照虚拟ID发送给对应的虚拟CPU ;所述虚拟CPU将所接收到的报文发送至与虚拟ID对应的虚拟机,由所述虚拟机上运行的操作系统或应用程序进行处理,所述虚拟CPU中物理CPU或核的数量由主核上运行的虚拟硬件管理系统根据业务需要进行控制。
8.根据权利要求7所述的数据处理方法,其特征在于,所述虚拟硬件管理系统根据需要控制所述虚拟CPU中物理CPU或核的数量的过程包括:监控所有虚拟CPU及所述虚拟CPU的内核的运行状态;增加负载超过预设门限的虚拟CPU中的物理CPU或物理CPU核的数量,或者,负载超过预设门限的虚拟CPU对应的应用转移到其他负载低于所述预设门限的虚拟CPU。
9.根据权利要求8所述的数据处理方法,其特征在于,所述虚拟硬件管理系统根据需要控制所述虚拟CPU中物理CPU或核的数量的过程还包括: 将其他虚拟CPU的应用均集中于处于空闲的虚拟CPU上,并将所述其他虚拟CPU关闭以节省电能。
10.根据权利要求7至9中任一所述的数据处理方法,其特征在于,还包括: 所述虚拟管理系统获取所述监控单元的监控结果,依据所述监控结果确定负载较轻的虚拟CPU,在将需要镜像的应用或进程的副本加载到所述确定的负载较轻的虚拟CPU上;以及,当加载有应用镜像或进程镜像的虚拟CPU的负载超过预设门限,或者所述应用或进程处理结束时,将该虚拟CPU上的应用镜像或进程镜像删除。
11.根据权利要求7-10中任一所述的数据处理方法,其特征在于,所述方法还包括: 主核依据负载情况计算流量分发到各虚拟CPU及该虚拟CPU的内核的分发权重,负载越大,权重越小;以及, 将所述分发权重下发至硬件转发系统,由所述硬件转发系统根据权重分发报文。
12.根据权利要求7所述的数据处理方法,其特征在于,分发报文是依据流表进行的,所述方法还包括: 所述主核接收应用程序提供的应用程序ID,所述应用程序ID包括虚拟机ID ;以及,确定处理该应用程序实例的虚拟CPU,并将该虚拟CPU的ID与所述应用程序ID组成所述虚拟ID ;以及, 依据所述虚拟ID建立流表后下发给所述硬件转发系统。
【文档编号】G06F9/50GK103514043SQ201210220131
【公开日】2014年1月15日 申请日期:2012年6月29日 优先权日:2012年6月29日
【发明者】滕新东 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1