NFV场景下网元运行在虚拟机中,而虚拟机之间的连接也由虚拟网络互连。由于CT网元,特别是数据面网元,对计算能力和转发能力要求非常高,网络虚拟化无论在技术上还是运维上都是一个系统化的演进优化过程。从技术上看,实现虚拟化由易到难的顺序是:控制面->业务面->媒体(数据)面,当前运营商的NFV化尝试主要集中在控制面网元。从运营商的角度看,VNF、EMS和VNFM主要是设备厂家的范畴,对应于传统的物理设备和厂家网管,而上层的NFVO+OSS以及底层的NFVI+VIM则属于运营商的公共平台,是整个ETSI NFV架构的基石。
NFV架构下的性能、可靠性等很大程度上依赖于NFVI+VIM,事实上就是OpenStack。目前主流的虚拟层是基于x86架构下的KVM方案,本文仅列举了NFV场景下KVM优化的相关知识点,不涉及网络拓扑、协议等层面的优化。
虚拟层主要包括计算、存储和网络,下面的优化也分别对应于这几部分。
NFV架构下的性能、可靠性等很大程度上依赖于NFVI+VIM,事实上就是OpenStack。目前主流的虚拟层是基于x86架构下的KVM方案,本文仅列举了NFV场景下KVM优化的相关知识点,不涉及网络拓扑、协议等层面的优化。
虚拟层主要包括计算、存储和网络,下面的优化也分别对应于这几部分。
NUMA亲和
在高性能服务器上,一般有多个槽(Socket)上可以插CPU,每个CPU有多个核(Core),而支持超线程的CPU,每个核有2个超线程(HT),也就是2个逻辑核。根据CPU访问内存中地址所需时间和距离,我们可以将CPU和内存结构分为SMP(Symmetric Multi-Processor,也称之为一致内存访问UMA)、NUMA(Non-Uniform Memory Access Architecture,非一致性内存访问)和MPP(Massive Parallel Processing,本文不涉及)。如图:
UMA方式即是传统的通过FSP访问北桥的内存方式,各个CPU和所有的内存的访问延迟是一致的。而NUMA将CPU和相近的内存配对组成节点(node),在每个NUMA节点里,CPU都有本地内存,访问距离短(也叫亲合性好),性能也相对好。