5月24日,2022网络开源技术生态峰会(线上)盛大开幕,本届大会由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院主办,SDNLAB社区承办。在“P4技术与应用”论坛上,百度智能云IaaS网络负责人王佩龙和大家分享了百度云在云计算网络领域的可编程硬件实践。
云计算网络面临的挑战
随着数字化转型和智能化升级的加速,更多的企业级应用开始基于多云、混合云、边缘云等新模式构建,比如自动驾驶、车路协同、物联网、电商、视频、游戏等。这些应用对网络提出了更高的要求,对云网络产生了一系列挑战:
1. 带宽需求急剧扩张;
2. 传统DPDK多核转发网元,大象流打爆转发CPU,云上多租户混部互相影响,抖动影响域广,故障隔离能力亟待提升;
3. 云边端一体化协同,边缘节点数量繁多,单节点规模又较小,成本十分敏感,如果通过传统IDC IaaS的建设模式,部署大量不同种类的网关来在边缘节点实现和公有云等价的产品功能以及吞吐性能,会大量占用节点计算资源;
4. 碳达峰大背景下,云计算数据中心的功耗问题尤为重要。传统X86服务器形态的集群网关会导致功耗占比严重超标,不利于可持续发展;
5. 网络安全,公网和内网的防攻击能力需要不断增强;
6. 网络作为基础设施的基础设施,其稳定性是云计算各类产品可用性的基石,虚拟网络叠加物理网络,组网更加复杂,流量调度能力、故障发现能力、网络可视化能力、故障域隔离能力等等,对于提升网络稳定性尤为重要。
面对以上挑战问题,百度云持续深耕,采取了一系列的升级改造措施,通过可编程硬件 通用的软件协同的软硬一体化架构演进,以及NFV增加弹性扩缩容能力、SFC增加网络业务链路可编程能力来应对这些挑战。已全面应用于专线网关、云智能网CSN、对等连接、弹性公网IP、流日志、边缘计算、本地计算集群LCC等产品,有力提升了产品性能和稳定性。
具体举例来说,通过引入可编程硬件网元:
1. 为专线网关、云智能网、弹性公网EIP等网络产品提供高达10T级别的吞吐以及低水位保证能力;
2. 为边缘计算产品提供高吞吐、低时延、低功耗的All In One软硬一体化解决方案;
3. 通过大带宽灵活引流调度,实现分集群隔离容灾、虚拟网络ECMP、同源同宿等需求,服务于多个产品;
4. 满足了Flowlog产品 T级别带宽、千万级IP对的细粒度的流量可视化需求,服务于广大头部客户。
百度智能云网关演进
云计算网络的网元设施,经历了以下发展历程:专用硬件→ 基于内核转发实现 → 基于DPDK集群化→ 网卡offload加速→可编程硬件( 软件)。
专用硬件时代,嵌入式专用设备的器件定制化能力差,业务功能迭代缓慢,提升性能通常走的是scale up方式,研发、运维和运营的成本很高。
CPU的性能提升和通用服务器货架化的易得性,使得软件转发逐步登上历史舞台,从kernel协议栈转发到DPDK用户态转发,逐步优化提升性能,且可以通过scale out的方式集群化扩容,互联网公司面对的业务快速迭代和流量爆发性增长,逐步选择了X86服务器集群化架构。
但是,随着摩尔定律失效,以及X86服务器集群扩容带来的高成本、高功耗和低效率,还有CPU转发固有的缺陷(高延时、稳定性差、大象流打爆单核影响多个业务流),使得原先推崇集群化纯软件方式实现大规模流量处理的云计算厂商,开始重新回过头去看硬件转发的价值,进而有了各种CPU软件转发配合硬件offload加速的方案,典型的代表就是智能网卡和可编程硬件网关的大面积使用。
近些年Intel、Barefoot等公司为网关和交换机等提供了相比传统ASIC更灵活的可编程交换芯片,业界一些云厂商陆续开始使用P4等编程语言来定义交换芯片的转发行为,实现云上网络产品业务功能定制,百度云也是其中的积极份子。
百度云的网关技术已经从1.0版本迭代演进到了3.0版本。
1.0时代,采用X86集群实现水平扩容,内核态转发演进到DPDK转发,以及部分数据流量实现服务器网卡硬件offload。
多云、混合云、边缘云等新的云计算架构的应用,数据流通量级继续爆发式增长,导致DPDK 网卡Offload加速的服务器集群方案也难以满足需求,业界开始尝试采用可编程硬件解决问题。百度云基于可编程硬件升级了自己的技术方案,相继推出了网关2.0和3.0技术方案。其中,网关2.0技术方案,对中心云的相关网络产品进行了全面升级,已经规模化部署上线。
网关3.0技术方案,通过引入新的UNP架构,在2.0的基础上将带宽能力提升了数倍,业务表项能力提升了百倍,在边缘计算和公有云IDC机房已逐步开始落地。
随着5G、IoT、自动驾驶、工业互联网等业务规模化铺开,云计算业务的形态已经从Region化的中心云向边缘计算、本地云等近源计算拓展开来。云边互联、边边互联需要云网络提供高质量的统一接入和管理。相对于云中心IDC来说,边缘节点、本地云等的特点是分布广、节点多、成本敏感,虽然单点体量小但带宽需求和稳定性要求并不低,同时又要保证客户对云产品的使用体感一致,所以技术同栈、产品底座小型化、软硬件一体化协同成为云网络在边缘、本地计算集群LCC等分布式云场景的新的挑战。
为了应对这些挑战,百度智能云结合多年在云计算IDC的技术沉淀,打造UNP(Universal Networking Platform )平台,实现一套可定制硬件基础平台输出多种产品形态 ,兼顾软件灵活性和硬件高性能,实现“超高带宽 超低延时 超大表项”的软硬一体化超融合系统,覆盖公有云IDC、边缘计算节点、LCC等场景。UNP将原先需要多套X86集群部署的网络组件,实现控制面容器化部署 转发面可编程硬件加速,同时CPU和可扩展NIC配合实现密钥协商、IPsec加解密以及CPU配合可编程硬件实现DDoS等安全功能,敏捷、灵活,应对业务快速变化,从而实现降本提效,同等带宽下相比X86服务器能耗下降90%以上 。
软硬件一体化协同实践案例
实践案例一:安全防攻击和导流器
弹性公网IP为用户提供公网接入服务。通过可编程硬件网关EGW可满足超大公网带宽的访问需求,并可以在不同业务需求下灵活调度流量。部分高吞吐的弹性公网IP流量直接通过EGW设备实现快速路径转发处理,节约大量慢速路径的X86机器,同时缩小故障域、降低时延、减轻服务器间负载不均的问题;通过流量特征识别,EGW可以将公网流量按指定规则导流到不同的X86软件网关集群,从而实现故障域隔离或专属集群调度,典型场景如异常大象流的治理。
实践案例二:混合云专线和CSN
1.多云互联场景或者混合云场景
专线网关是VPC打通用户IDC或者多云之间实现内网互联的重要产品。为了满足客户对专线的海量带宽和频繁扩容的需求,百度智能云的专线网关通过可编程硬件部分负责处理海量带宽、低时延、有限配置规模场景下的业务流量,对于其他流量不大的场景则全部交由X86软件网关处理。
2.跨地域互联场景
云智能网CSN实现了不同地域VPC之间、VPC与本地数据中心之间的高性能、低延迟的网络互通。客户可以基于云智能网打造企业级云上全球一张网。相比传统的对等连接方式,云智能网的组网更加灵活。通过可编程硬件网关TGW,云智能网提供高吞吐接入的同时,也提供了灵活的路由策略和网络QoS等能力,并且可以利用百度智能云的骨干网实现多VPC跨地域互联的智能选路优化。
实践案例三:软硬协同负载均衡
引入Tofino这类可编程硬件后,系统的吞吐、时延等指标得到了极大的提升。但是这类可编程交换芯片在硬件表项容量上相比传统X86服务器的内存表项容量要弱的多,而且可编程交换芯片在有状态业务处理上并无优势,例如NAT和负载均衡这类有session状态的业务。为了让业务享受到大带宽、低延时的同时,仍能具备超大业务表项能力,百度云尝试通过UNP平台将CPU tofino FPGA实现软硬结合来划分快慢路径、热点表项换入换出等业务逻辑处理。如图所示:
- Client集群通过UNP-BGW实现网络四层负载均衡访问后端server集群;
- 蓝色线表示的是对于一条报文流的首包,在快速路径tofino pipeline转发时无法命中session表项,则转到FPGA进行session查询,同样无法命中,则上送CPU DPDK多核转发慢速路径进行session新建处理,通过负载均衡算法选中后端server并记录在session中;
- session新建完成后,CPU会将session下发到FPGA;
- 绿色线表示的是这条流的后续报文,在tofino芯片pipeline转发时无法命中session表项,则转发到FPGA进行session查询,由于CPU已经下发过这条流的session,因此可以在FPGA上命中session,我们称之为warm session,继而携带session信息选中后端server并通过tofino pipeline转发出去;
- CPU定期获取到session流量统计,当这条流转发稳态达到一定时间,且带宽bps或者pps达到指定阈值时,CPU判定此流为大象流,并将此session也下发给tofino做hot session offload;
- 红色线表示的是,这条流成为大象流后,报文在tofino pipeline转发时即可命中session表项并直接转发到后端server。
通过上述逻辑,实现了Tofino hot path、FPGA warm path、CPU slow path三级转发能力,是典型的软硬件协同案例,充分结合了软件灵活性和硬件高性能,实现较好的性价比。
当流量停止或者配置变更时,CPU会及时老化掉tofino或者FPGA上的hot session和warm session,以便硬件资源的合理使用。
实践案例四:Local Compute Cluster
传统的中心化云计算基础设施都在公有云固定的机房内,对数据安全、本地处理、网络低延时等指标有硬性要求的客户,在使用传统公有云时遇到不便。百度智能云推出的本地计算机群LCC,是百度云智能云公有云在用户就近一侧的延伸,可以助力用户实现百度云云服务的本地化部署。公有云的硬件基础设施将会部署在客户指定位置的机房,满足数据安全、就近计算、网络低延时等业务需求。
LCC作为一种重要的分布式云计算形态,具备如下特点:
1. 客户本地部署:满足对数据安全、数据本地处理、低延时等的业务需求;
2. 客户免运维:LCC开箱即用,无需运维,按需购买LCC的计算、存储资源,一键下单后,由百度云负责LCC在用户本地的安装、激活和硬件维修等服务;
3. 低成本:起建成本低:无需一次性投入高成本购买硬件设备,只需购买LCC服务,即可享受包括软件、硬件在内的百度云服务。部署时间成本低:LCC在装备中心完成预安装,当运送到用户的机房后,只需要通电、通网,即插即用,用户可在公共云控制台上查看和使用自己的专属LCC里的计算、存储、网络资源,大幅缩短现场实施时间和应用上线时间;
4. 易用性:提供与公共云一致的实例规格族和控制台体验。提供LCC容量监控、性能监控和主动运维能力,方便查看LCC内资源运作情况。LCC和公共云地域通过LCC网络连接互通,可以使用公共云服务形成丰富的解决方案;
5. 安全性:提供多重安全方案,包括角色权限控制、机柜动环监控、数据LCC本地存储、内网隔离、防攻击及流量监控等。LCC所有的操作日志透明化,并提供针对LCC网络连接的第三方审计。
LCC为了给用户提供更多的计算、存储机架位,必须压缩网络相关底座的规模,通过可编程硬件网关 Smart-Tor,将网络交换机和云网关融合复用,在保证带宽性能和稳定性的基础上,最大限度的提升计算、存储资源量,保护用户投资,提升产品性价比。
实践案例五:SFC&NFV化,网络业务弹性扩展灵活编排
为了追求极致的网元弹性能力,百度云选择了可编程硬件 NFV SFC的架构演进路线:
- 通过云网络的边界网关硬件化,追求大带宽 低功耗 降成本让利于客户;
- 通过业务网关NFV化,追求弹性 功能快速迭代上线;
- 通过SFC实现X86集群网元、NFV网元、可编程硬件网元的灵活业务编排,满足不同云计算客户对链路可编程能力的需求,例如:混合云专线链路是先做防火墙还是先做NAT,希望在东西向或者南北向转发链路的任意指定位置串接入第三方网元应用等等。
NFV的技术亮点:复用计算资源池构建网关和防火墙等网元,具备弹性扩缩容、灵活降成本、故障域隔离、按需流量调度、边缘计算/私有云部署小型化等优势。
实践案例六:Tofino流量镜像分析 助力网络可视化
前面已经介绍过,百度智能云的公网、专线、跨Region等边界网元实现可编程硬件化转发并已经规模化部署后,带来的另外一个能力就是可以进行流量的全量镜像或者按比例镜像分析,结合自研的MAS系统和云坤平台,实现了flow粒度的精细化统计和安全审计功能。例如混合云场景的客户专线流量topN地址对展示,公网流量来源分地域统计和网络攻击行为审计,等等。为客户提供更精细的流量可视化功能,同时也在故障诊断上提供了更加丰富的手段。
上图是云坤平台在网络流量和topN分析统计上的一些示例。
百度智能云通过上述多个场景的实践,充分结合可编程硬件和传统软件系统的特点,实现优势互补,并陆续对云上网络产品全面升级,在产品性能、弹性、能耗等维度得到显著提升,最后总结一下软硬件一体化带来的价值:
- 容量:单集群几百G升级为几十T,集群机器数目反而大幅度下降;
- 时延:30us降至 1us,长尾几乎消失,转发更快速;
- 丢包率:十万分之一降至数亿分之一,网络更可靠;
- 线速能力:256字节降至150字节,网络更稳定;
- 扩容排期:月级别降至周级别,弹性能力更强;
- 扩容频度:季度级别降至年级别,水位冗余度提升;
- 能耗:单T能耗下降90%以上,现在每T仅需不到200 w能耗,实现碳减排。
虽然可编程硬件的网关技术带来了各项指标的大幅提升,但是相比X86的几百GB的内存,可编程硬件的存储空间缩小为几百Mb。容器场景下辅助IP的大量运用导致系统的表项规模产生了十倍乃至百倍的跃增,此时可编程硬件在表项容量上的紧缺成为了新的问题。
百度智能云运用多种手段,包括架构升级、单机优化、硬件升级等,将有限的存储运用到极致,实现同等硬件条件下部分关键表项容量提升10倍,并具备分集群扩展能力,满足高性能的云原生网络需求。
最后,王佩龙介绍了百度智能云网络的使命愿景:致力于打造可靠、高速、智能的云网络,让上云更简单。
【活动专栏】
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。
【投稿】
欢迎SDN、NFV、SD-WAN、智能网卡、确定性网络、TSN、5G 网络切片等网络方向的观点类、新闻类、技术类稿件。
联系人:kk__wu(微信号)
投稿邮箱:pub@sdnlab.com
详情请参考:SDNLAB原创文章奖励计划