AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

从纯软件转发到软硬一体化可编程,腾讯云网关技术演进之路

  • 2022-08-31
    北京
  • 本文字数:5147 字

    阅读完需:约 17 分钟

从纯软件转发到软硬一体化可编程,腾讯云网关技术演进之路

近十年来,国内的云计算业务取得了长足的进步,越来越多的企业认识到云的价值,将业务部署在云上,云也为客户提供了存储、计算、数据库、安全、大数据等丰富的服务。云服务规模的爆发式增长,对网络提出了巨大的挑战,传统网络方式已无法满足大规模云应用阶段网络的诉求,主要有以下几个方面。


  • 网络规模巨大,短视频、直播等业务应用快速发展,导致单一客户动辄要求 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 的可编程能力,支持业务自定义调度标识,帮助客户按照不同的业务类型进行差异化调度选择。通过与底层物理网络在控制面和转发面的联动提供灵活的多级调度,客户可以在多个网络路径中,按需选择时延最低、成本最低或质量最优的线路。我们通过自研的多目标多约束调度算法,实现了客户可自定义的、多维度组合的调度策略,比如“在满足指定的时延范围内,选择成本最低的线路”,“在满足指定可用率范围内,选择时延最小的线路”等等,以尽可能满足云租户个性化的网络需求。


结   语


互联网建立至今的数十年时间里,网络一直在不断演进,实现了人、信息、商品、服务等各种元素的丰富连接。在这个过程中,网络的承载技术也在不断演进,从早期的窄带宽带,到移动互联网,到现在的云网络时代。可编程网络为大规模云上服务而生,是云上服务与企业客户、终端用户之间的桥梁。在可编程网关平台的助力下,云网络将为不同的客户不同的应用提供更加灵活、高效、安全的连接服务。


作者简介:


郑胜利,腾讯网络平台部网关团队负责人,致力于网络领域产品研发,先后负责腾讯公网传输系统、对等连接、专线接入网关、公网接入网关等产品研发,熟悉高性能包处理、可编程硬件、高可靠 BGP 等网络技术。


2022-08-31 16:084375

评论 1 条评论

发布
用户头像
66666666
2022-08-31 17:22 · 上海
回复
没有更多了
发现更多内容

HDI硬件设备接口介绍

科技汇

web前端培训React 中Router的必备知识点

@零度

前端开发 React

云电脑的四重守护,安全有谱

天翼云开发者社区

安全 云电脑

原生JavaScript灵魂拷问(二),你能全部答对吗?

战场小包

JavaScript 前端 4月月更

神秘男嘉宾登场,引爆全场灯光?

龙智—DevSecOps解决方案

Atlassian Confluence confluence插件

Apache APISIX Summit ASIA 2022——5月20日开启开源生态探索之旅

API7.ai 技术团队

网关 API网关 APISIX 开源生态 summit

OpenHarmony新增两个分布式能力!快来了解~

科技汇

秒云 (元来云志)获邀加入中国开源云联盟,共筑开源生态

MIAOYUN

开源 开源生态 开源中国

划重点,2022 常见的面试题和八股文都为大家总结出来了

Java架构追梦

程序员 java面试 后端开发 Java面试八股文

低通信量是筛选分布式多方安全计算常用安全协议方案的先决条件

易观分析

安全多方计算 低通信量

【高并发】如何使用互斥锁解决多线程的原子性问题?这次终于明白了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

java不使用客户端授权密码直接用账号密码发送带附件的邮件

爱好编程进阶

程序员 后端开发

DM 是如何处理 DML 的丨TiDB 工具分享

PingCAP

大数据培训Spark SQL知识点与实战分析

@零度

spark 大数据开发

蚂蚁三面被挂,幸获内推,历经5轮终于拿到口碑offer

Java架构追梦

java面试 后端开发 程序员面试 大厂Offer

总结JAVA全栈知识点,七面阿里成功斩获P8Offer

Java架构追梦

程序员 java面试 后端开发

使用xdebug调试php详细教程

CRMEB

【架构视角】一篇文章带你彻底吃透Spring

潘大壮

spring 后端 springboot 后端开发

华为云持续快速增长,IaaS市场排名中国第二、全球第五

科技热闻

我以为自己MySQL够牛逼了,直到看到了Alibaba的面试题,是我不配了。。

Java架构追梦

Java 后端开发 MySQL 运维 程序员面试

简述数仓的时间域函数

华为云开发者联盟

数据库 时间 时间戳 GaussDB(DWS) 时间域函数

蒙牛乳业加入星策开源社区,携手推动企业智能化转型建设

星策开源社区

人工智能 机器学习 企业数智化 智能化转型

netty系列之:可能有人听过ThreadLocal,但一定没人听过ThreadLocal对象池

程序那些事

Java Netty 程序那些事 4月月更

npm install xxxx --legacy-peer-deps命令是什么?

华为云开发者联盟

前端 npm install 依赖树 对等依赖关系

【三级等保】三级等保办理流程经验大分享

行云管家

网络安全 等保 等级保护 等保三级 等保2.0

助力提升研发效能的“黄金三角”

博文视点Broadview

使用APICloud & MobTech SDK 快速实现分享到社交平台功能

YonBuilder低代码开发平台

APP开发 APICloud MobTech袤博科技 社交分享

【堡垒机】2022年网络安全堡垒机厂商排名看这里!

行云管家

网络安全 堡垒机 移动云 网络安全堡垒机

与多家机构战略合作,背后彰显PlatoFarm元宇宙龙头的实力

西柚子

Java中当对象不再使用时,不赋值为null会导致什么后果?

爱好编程进阶

Java 程序员 后端开发

从纯软件转发到软硬一体化可编程,腾讯云网关技术演进之路_服务革新_郑胜利_InfoQ精选文章