前言
腾讯可编程网络历经近十年演变,已成为云时代最重要的基础设施之一。近期,腾讯可编程网络项目,成功入选第六届未来网络发展大会“2022未来网络领先创新科技成果”。本文将就腾讯可编程网络的演进历程、应用场景进行深度剖析。
近十年来,国内的云计算业务取得了长足的进步,越来越多的企业认识到云的价值,将业务部署在云上,云也为客户提供了存储、计算、数据库、安全、大数据等丰富的服务。云服务规模的爆发式增长,对网络提出了巨大的挑战,传统网络方式已无法满足大规模云应用阶段网络的诉求,主要有以下几个方面。
- 网络规模巨大,短视频、直播等业务应用快速发展,导致单一客户动辄要求10T级别带宽,10万级别路由,数以万计的客户叠加情况下对网络系统规格挑战巨大;
- 网络弹性要求高,客户业务发展变化快,并且存在秒杀、大促、公共突发事件、热点事件等正常业务活动,仅靠堆料式运营方式成本难以为继,网络需要具备极强的弹性能力;
- 业务特性繁多,不同场景需求各不相同,有状态的、无状态的、加密的、非加密的、安全的、加速的等等,没有任何一个单一网络应用能解决所有问题;
- 精细化调度要求高,不同客户对网络质量、网络成本要求各不相同,在越来越多的场景存在基于业务的精细化调度诉求;
- 大象流、微突发等问题频发,业务吞吐的飙升、高性能网络应用的普及,导致网络面临大量的大象流、微突发问题,对转发性能、数据面定位能力等要求极高;
针对这些挑战,我们通过多年不断的尝试和技术革新,由早期的纯软件转发平台,演进到基于可编程硬件的转发平台,再到软硬一体化的可编程网络平台,提高了云网络的弹性能力,降低了网络运营成本,为各类云服务的大规模应用铺平了道路。
腾讯可编程网络技术演进
腾讯探索可编程网络相关技术,主要目的是降低网络运营成本、提升网络质量。早期也曾使用过专用硬件方式,例如使用tilera众核芯片的专用服务器等,随着开源社区DPDK的成熟,逐步迁移到了基于通用x86 CPU的DPDK平台,形成了可编程网关平台1.0。可编程网关平台1.0主要基于DPDK的PMD能力,通过内存零拷贝、大页、无锁队列等方式极大的提高了网络处理性能,早期支持了10G级处理能力,后来随着硬件网卡和CPU能力的提升,逐步演进到100G级处理能力。由于底层基于通用的x86 CPU实现,可编程网关平台1.0最大的优势就是可编程能力极强,可以实现任意行为的网络处理能力,例如L3转发、VPN、LB、NAT、DPI、IDS等等。同时,由于本身基于通用服务器实现,天然能够和虚拟化技术结合,支持基于业务需求的弹性扩展能力,实现了资源复用,提高了资源的利用率。
图1 可编程网关平台演进
可编程网关平台1.0在网络应用的发展过程中起到了非常重要的作用,实现了很多网络业务从无到有的突破。但随着业务的持续演进和现网的大规模运营,数据面平台1.0逐渐碰到一些问题。首先,随着4G/5G基础设施的快速完善,以及以短视频、直播为主的视频类业务的快速发展,网络带宽需求在爆炸式增长,但基于服务器的网络处理能力,仍然停留在百G级别,无法跟上业务的增长。导致需要使用大量的服务器资源来扛住业务流量,以一个6.4T业务集群为例,需要128台服务器资源才能扛住所有的业务流量,运营成本极高。其次,在硬件升级和技术演进的助力下,云上业务的处理性能同步得到大幅提升,导致频繁出现大象流、微突发等网络问题。这类问题由于出现时间短、难以复现,通常很难定位,但出现这类问题时通常会伴随网络丢包和业务抖动,并且会出现多租户之间互相串扰,严重影响客户体验,因而对基于服务器构建的网络系统产生了巨大的挑战。
图2 网络带宽与服务器硬件演变趋势
基于服务器处理网络业务可行的最主要原因,是充分利用了服务器的多核并行处理能力,实现了性能的大幅度提升,满足了网络传输的高性能转发诉求。而产生上述这些挑战的根本原因,也是在于服务器的系统架构在处理更大规模网络流量方面并不擅长。网络流量流经服务器的典型路径是由网卡收发报文,再通过PCIe总线将数据DMA到内存,再由CPU来处理内存中的数据,整个处理过程非常漫长,需要经历至少4种不同的物理器件,导致成本很难降低,并且任意器件的性能问题都会导致整体性能变差。以CPU为例,最近十年间,由于CPU制程工艺逐渐接近物理极限,摩尔定律放缓成为事实,依靠CPU制程提升来提升处理性能的方法已不可持续。在此背景下,单核性能基本趋近于极限,大多数CPU厂商采用多核架构来提升性能。这种趋势的问题在于微突发问题严重依赖单核处理性能,同时共享数据的存在使得网络处理性能无法随核数线性扩展。其他硬件单元,如网卡、PCIe总线、内存等,也存在类似的问题。从图2可以看到网络带宽在近十年取得了爆发式的增长,CPU制程、PCIe传输率等影响硬件处理性能的关键指标增长却越来越平缓。在这种背景下,可编程硬件为解决这些问题提供了一种全新的思路。
图3 可编程网关平台2.0软件架构
可编程网关平台2.0基于可编程硬件构建,实现了Tbps级别数据转发能力,相比1.0提升了一个数量级,同时成本也得到大幅度优化。在可编程网关平台2.0中,数据面流量不再需要经过复杂的物理器件路径,仅在一颗ASIC芯片上就可以完成所有的处理逻辑,处理过程十分高效。同时,通过P4语言实现了对数据面流水线的灵活编程,以满足业务灵活的可编程诉求。在2.0阶段,由于所有业务逻辑基于可编程芯片实现,受限于芯片SRAM/TCAM等表项资源限制,业务规格无法做到太大。虽然通过流水线折叠方可以一定程度缓解这类问题,但在某些要求超大规格的网络场景就无法适用。针对这种情况,我们推出了可编程网关平台3.0,通过软硬件一体化方式,充分发挥异构硬件的优势,通过软硬协同实现超大规模Tbps级数据面处理能力。
图4 可编程网关平台3.0硬件架构
可编程网关平台3.0将可编程ASIC、FPGA、高性能CPU一体化,并且通过模块化的硬件设计,实现针对不同场景的灵活定制,满足全业务场景的高性能可编程诉求。在一些业务规格要求不高的场景,可以通过低配CPU 可编程ASIC退化为类似2.0的方式应用,尽可能减少成本,提高资源利用率。在一些业务规格要求较高的场景,可以通过FPGA扩展的方式实现大规格表项,满足业务大规格诉求。在一些特殊应用场景中,还可以将高性能CPU作为数据面慢路径,可编程ASIC作为快路径,通过软硬协同方式满足特殊场景需求。
可编程网关平台已经在腾讯网络中大规模部署应用,以下内容将就可编程网关平台的典型应用场景进行介绍。
企业专线接入
许多企业客户基于既有资源利用、数据安全、合规要求等原因,会采用混合云的方式来利用云上的各种服务。如何将企业云上资源与自有资源打通是一个重要问题,企业专线接入是解决这种问题最常用的手段之一。腾讯企业专线接入服务的主要特点是能够提供大带宽、低时延、高性能、高可靠的专线接入能力,可编程网关平台是提供这些能力的基础。目前基于可编程网关平台,腾讯企业专线接入服务已支持10Tbps级别带宽接入,2us转发时延,单机支持Tbps级转发能力,在可靠性方面支持多线接入、跨AZ容灾、单节点NSR等能力,为企业客户业务上云提供了坚实可靠的底层能力。
图5 企业专线接入
数据面可编程能力在企业专线接入场景有多方面的应用。在基础互联互通能力方面,为保护客户私有数据的安全性,腾讯云采用了定制GRE的方式来实现Overlay隔离,基于可编程网关平台可以便捷的实现这种定制转发行为,实现租户之间的安全隔离。同时,企业专线服务需要具备软件能力迭代、故障处理、跨AZ容灾等能力,这些能力要求数据面能够高效响应业务变化,并且在变化过程中业务无感知,可编程网关平台通过RPC方式与云上各类业务系统联动,支持快速故障感知、秒级业务迁移。另外,作为网关类型业务,企业专线业务要屏蔽云上网络细节,因此专线网关上需要支持大规模路由表项的维护,大型企业客户甚至达到10万级别的路由量,可编程网关平台通过流水线折叠扩展了业务表项,满足了大规格业务需求。
运营商公网接入
云上客户存在一个普遍诉求就是通过云上资源触达用户,运营商公网接入主要承载此类业务。早期腾讯运营商公网接入主要依赖商业设备来实现,但传统网络解决方案主要基于路由相关策略进行业务支持,无法精细化感知业务细节。通过可编程网关平台可以基于业务应用进行差异化调度,提升公网服务能力。以精品网业务为例,云上众多客户对网络质量要求各不相同,有些要求时延低,有的要求带宽高,有些要求成本低。而公网资源十分宝贵,如果对每个客户都采用相同的策略提供公网服务,将无法满足客户个性化需求,也无法收回成本。将质量敏感成本不敏感的业务走质量较好的链路,成本敏感但质量容忍度高的业务走带宽较大的链路,通过这种方式将网络流量分而治之,为不同客户提供差异化服务。
图6 BGP精品网服务
通过可编程网关,可以将不同的客户不同的业务区分开来,达到差异化服务的目的。可编程能力在公网服务中应用较多。在基础业务特性上,通过基于源IP选路的方式实现业务感知,公网服务通常是基于IP来提供服务的,通过源IP进行路径选择,可以较好的基于业务诉求来调整网络路径,实现差异化服务。另外,公网服务本身为公域流量提供服务,难以避免的存在网络攻击等安全问题,通过可编程网关可以在公网入口将流量调度到腾讯安全清洗中心,保证正常业务的安全。公网业务可编程应用较多,这里不再赘述,可编程网关平台丰富了公网业务的武器库,为公网业务的进一步演进提供了可能性。
边缘互联网络
随着分布式云的出现,大量客户选择根据业务的特点将云计算资源分布式地部署在中心云、边缘云,甚至是客户机房以取得性能和成本的折中。趋势之一是越来越多的云资源被部署在靠近数据和业务发生的网络边缘,以满足高带宽、低时延、数据不出局等需求。分布式云的典型场景包括在线课堂、自动驾驶、云游戏、AR/VR等对带宽和时延有着严苛要求的新兴应用。
分布式云的快速生长引入了大量的边缘云节点,将原本只连接中心云的骨干网络(DCI/vDCI)通过互联网向外扩张,形成了复杂、异构的边缘互联网络。传统的骨干网通常由稳定的大容量专线提供业务承载,边缘互联网络则由互联网承载,如何在不安全、欠稳定的互联网之上构建高可靠、高性能的边云、边边互联是我们发展分布式云遇到的全新课题;边缘云节点规模小,通常只能容纳数百台服务器,如果照搬中心云的设计,用于部署机房间加密互通、VPC互通、虚实互通、NAT等功能的网关服务器将占据15%~30%的机架空间,大大增加了边缘云节点的成本。如何通过软硬一体化设计融合网关功能降低网关成本是我们遇到的另一关键问题。此外,边缘互联网络发展过程中还涌现出了其他新的问题,包括但不限于智能化的管控、灵活的选路、路径优化等等。为此我们基于可编程网关平台3.0研发了新一代超融合边缘网关HyperSGW, 以满足边缘互联网络在新功能、低成本、高集成度方面的诸多需求。
图7 边缘网关系统架构
通过HyperSGW我们实现了多种适用于边缘场景的特性:
首先,实现了多链路优选,实时调度,支持边云、边边加速。腾讯中心-边缘一体化网络是由成百上千个HyperSGW构成的full mesh网络,任意两个边缘节点的HyperSGW之间存在多条不同运营商提供的直连(边边互联)和非直连(边-云-边)链路。不同运营商的链路在成本和质量上存在一定的差异性,而同一链路的质量(时延、带宽、丢包率)随网络负载的波动呈时变特性,使得租户的链路优选变成了一个含时间参数的动态规划问题。结合HyperSGW的高精度立体探测机制,控制器系统实时采集网络拓扑和节点流量,周期性地更新优化问题的约束条件,求取最优解并下发转发面,实现租户的全局路径优化和边云、边边加速。
另外,实现了基于成本、时延、质量的意图转发,满足云租户的个性化网络需求。利用HyperSGW的可编程能力,支持业务自定义调度标识,帮助客户按照不同的业务类型进行差异化调度选择。通过与底层物理网络在控制面和转发面的联动提供灵活的多级调度,客户可以在多个网络路径中,按需选择时延最低、成本最低或质量最优的线路。我们通过自研的多目标多约束调度算法,实现了客户可自定义的、多维度组合的调度策略,比如“在满足指定的时延范围内,选择成本最低的线路”,“在满足指定可用率范围内,选择时延最小的线路”等等,以尽可能满足云租户个性化的网络需求。
►►►
总结
互联网建立至今的数十年时间里,网络一直在不断演进,实现了人、信息、商品、服务等各种元素的丰富连接。在这个过程中,网络的承载技术也在不断演进,从早期的窄带宽带,到移动互联网,到现在的云网络时代。可编程网络为大规模云上服务而生,是云上服务与企业客户、终端用户之间的桥梁。在可编程网关平台的助力下,云网络将为不同的客户不同的应用提供更加灵活、高效、安全的连接服务。
欢迎关注公众账号“鹅厂网事”,我们给你提供最新的行业动态信息、腾讯网络最接地气的干货分享。
注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;
注2:本文图片部分来自互联网,如涉及相关版权问题,请联系:sandyshuang@tencent.com或 mianyang@tencent.com
/
关
注
我
们
/
/ 鹅厂网事/
分享鹅厂网络的那些事