导读:5G的商用以及IoT、AI等技术的成熟推动着云技术的发展。无时不刻产生的数据洪流,对云的网络架构和处理数据的能力提出了新的需求,为了满足这些需求,下一代虚拟网络技术路在何方?在探讨这个问题之前,我们以腾讯云数据中心网络为例,介绍一下它的技术发展脉络。
一、腾讯云数据中心网络的技术发展脉络
1. 从千兆到万兆:2014年,腾讯公有云服务器接入带宽从千兆迈入了万兆。
2. 从万兆到25G:2017年,腾讯公有云服务器接入带宽从万兆向25G转变,这种转变主要来自于业务对网络吞吐的性能诉求。
3. 从25G到50-100G:未来的1~2年,公有云服务器接入带宽将全面向100G转变。高密计算(单台虚拟化服务器的CPU核数越来越多)、高密存储(单台存储服务器的盘数和磁盘容量越来越高)、AI、HPC的发展,对网络的高吞吐和低延迟提出了更高要求。
不同的服务器接入带宽,对虚拟化网络的架构和扩展性会提出不一样的要求。在100G的网络时代,虚拟化网络架构会是怎样的?
二、腾讯云100G时代下的VPC架构剖析
1.宿主机vSwitch能力
云网络发展早期, 网络虚拟化的vSwitch通常使用内核模块来实现, 基于netfilter的钩子定制encap/decap/安全组/qos等逻辑,快速满足业务要求。但是基于内核实现的vSwitch有几个问题:
(1)vSwitch逻辑受制于内核的框架, Linux内核并非为网络转发所设计,存在大量的锁和队列, 网络性能和时延表现都比较差。
(2)为了满足性能,vSwtich逻辑与虚拟机混跑CPU,在Linux调度层面,vSwtich逻辑的运行优先级更高,这干扰了虚拟机的CPU性能稳定性。
随着DPDK技术的成熟, vSwitch逻辑逐步转向用DPDK实现:
(1)利用kernel的UIO机制, 数据包跳过kernel的处理逻辑,直接送往用户态。DPDK框架专门为网络转发而设计,vSwtich逻辑更简单纯粹。同时通过将DPDK vSwitch逻辑绑定物理核,并尽量移除DPDK所在物理核上的内核逻辑(irq,softirq,rcu cb,timer,worker…)等方法,可以保证DPDK vSwitch逻辑运行的稳定性。
(2)DPDK vSwitch的处理逻辑与用户虚拟机的CPU彼此隔离,这保证了用户虚拟机CPU的运行稳定性。
随着服务器带宽的进一步增长, DPDK vSwitch的扩展能力也遇到很大的挑战。DPDK的性能通过横向扩展占用的CPU核数来保证, 但也有瓶颈:
(1)DPDK的单核处理能力受制于vhost-user的内存拷贝,最高只能达到20-25Gbps。
(2)软件横向扩展受制于软件的局部化设计,存在天花板。
(3)堆砌通用CPU,将导致功耗增大、成本增高。
无限制地横向扩展不可持续。在100G的时代, 保证虚拟化网络的高性能和性能稳定性成为vSwitch设计上重要的目标, 主要的技术突破是智能网卡。
智能网卡的技术方案带来如下优点:
(1)vSwitch的快转表下沉到硬件(FPGA/ASIC)中实现, 性能扩展不需要占用CPU资源, 显著提升了性能的可扩展性。
(2)全路径硬件IO直通到虚拟机内部, 拥有比软件方案更稳定的性能。
(3)硬件实现QoS隔离,租户间隔离更稳定。
但是硬件有规格和灵活性上的局限性。 为了满足不同场景对网络性能的不同诉求,腾讯对vSwitch的架构做了分层。
vSwitch被分为三层: 软件实现的慢速路径,软件实现的快速路径,硬件实现的快速路径。对于不同场景,软件自学习分析流的特征后, 会将数据流分配到三种路径上进行转发:
(1)对于QQ类型的UDP无连接包业务类型, 每条流只有一个包,这种类型的流量直接通过软件慢路径进行转发,不下发流表。
(2)对于TCP短链接业务,这种类型流量只下发到软件快路径,不下发到硬件快路径。
(3)TCP大流量长连接业务,下发到硬件快路径。
在下一代虚拟化网络中,智能网卡是每台虚拟化服务器的标配。除了网络虚拟化,还会将存储虚拟化,计算虚拟化的部分功能下沉到智能网卡中, 给客户提供超强的性能稳定性。
2.云网关能力
网关在云环境面临的最主要问题有资源问题、性能问题、故障域问题。在100G的网络时代,性能扩展带来的资源问题最为凸显。下一代虚拟化网络中,云网关的技术突破最为重要,在这块技术攻坚工作中,我们有几个原则:
(1)业务网关NFV化,内部服务去网关,边界网关硬件化;
(2)边界网关无状态化,状态分布式化。
下面详细讲讲这些原则:
A、业务网关NFV化
针对虚拟化要解决的核心问题——资源问题, 主要有以下策略:
(1)装箱算法:解决整体资源利用率和碎片问题。
(2)快速冷迁移、无感热迁移:解决资源的快速置换和故障恢复。
(3)Auto-scaling:解决资源平行扩容问题。
(4)巨大的资源池:通过热迁移调度可提升整体的利用率。
业务网关NFV化时, 网关所面临问题是这样解决的:
(1)资源问题:直接复用虚拟化平台所提供的资源能力。
(2)性能问题:直接复用虚拟化网络vSwitch实现的高性能及性能隔离能力。
(3)故障域问题:基于虚拟化平台,做到更细粒度的sharding,让一个集群承担更少的客户。在集群内部,复用虚拟化网络已有的HAVIP主备同步及ECMP,单播/多播同步实现集群内容灾。
B、内部服务去网关
内部服务包含两种:大吞吐类型(如对象存储),主要瓶颈在大吞吐情形下的资源扩容及性能问题;延时敏感性(如数据库),主要瓶颈在于网关这一跳带来的时延问题以及可靠性问题。
在下一代虚拟化网络中,我们将连通overlay和underlay服务的集中式网关,分解到overlay虚拟化服务器+underlay物理服务器上。在underlay服务器上安装一个内核模块,提供了underlay服务器的被动VPC访问能力。
内部服务去网关后,网关问题这样解决:
(1)资源问题:网关能力分布式化,天然解决资源问题。
(2)性能问题:网关能力分布式化,没有集中式性能瓶颈,单机的性能依赖虚拟化母机的vSwitch和underlay服务器模块解决。
(3)故障域隔离:网关能力分布式化,没有集中式单点,故障域缩小到虚拟化母机维度或underlay服务器维度。可利用虚拟化的迁移或underlay的服务调度来修复该问题。
C、边界网关硬件化
边界网关包含两种:公网与腾讯云内网的边界网关(如EIP网关);腾讯云不同地域间DCI的边界网关(如云联网网关),这两种网关必须要集中式解决。边界网关硬件化后,网关面临的问题是这样解决的:
(1)资源问题:一台可编程硬件网关,可以提供至少10倍软件网关的能力,它所需的资源规模相比而言大大减少。
(2)性能问题:利用可编程硬件芯片,可以提供更强的包转发能力、更少的时延表现、更稳定的性能、更好的性能隔离。
(3)故障域问题:硬件网关因为承载流量大,客户多,单台故障的影响面也会很大,腾讯通过简化硬件网关的逻辑,将边界网关无状态化,通过多集群部署、跨集群调度来解决集群的容灾问题。
3.控制面能力
随着数据面带宽的急剧增长,整体虚拟化网络面对的客户数及单客户规模都会与日俱增。超大虚拟化网络所面对的控制面扩展能力也是我们首要考虑的问题。在下一代VPC网络中,我们将配置数据分为动态配置数据与静态配置数据。
(1)动态配置数据(如位置关系),完全分布式按需学习,定期老化,解决配置数据量中最大的部分。
(2)静态配置数据(譬如子网路由、安全组),采用静态预下发。静态预下发时采取snapshot + binlog方式,加快预下发效率。
至于“动态学习及静态预下发时,部分配置关系未能及时下发”的问题,引入中转网关来辅助流量转发。中转网关基于包做转发,完全无状态,方便容灾及扩容。
在下一代虚拟化网络中,基于控制面的按需改造,我们可以做到单VPC超过300K VM,且VM创建完成后VPC实时可通。此外,控制面的租户隔离也是一个非常重要的问题。我们的解决办法是:
(1)对于大客户,我们通过大小客户分集群单独部署,以解决控制面的租户隔离问题。
(2)对于一个集群内部的租户间互相影响,我们主要通过针对单租户的访问频率控制,以及对于恶意租户的额外队列惩罚控制,来避免一个租户造成集群雪崩。
4.故障定位能力
下一代虚拟网络中,除了通常的计数器统计,针对大吞吐高性能场景下性能无损的故障分析,我们研发了一套带内的流跟踪系统。
通过这套流跟踪系统,我们可以实时获取网络路径上函数级别的时延和丢包情况。
在下一代网络中,我们将借助流跟踪系统,更从容地应对客户对丢包和网络时延的挑战。
总结:“随风潜入夜,润物细无声”我们希望腾讯云的“网络能力”像春雨一样,对用户来说是“透明”的,不必被感知的。因为默默地守护好前方业务的“花团锦簇”,就是春雨最大的满足。
关注「腾讯开发者」,一起用技术改变世界。