OPPO VPC 实践探索

01 概述

一年前(20年6月),OPPO云网络技术底座开始支持VPC方案,解决了用户担心的云上安全和虚拟实例的性能问题。我们称这个版本为VPC1.0,其采用了先进的智能网卡加速和VXLAN隧道隔离技术,实现了VPC从无到有的突破。

然而由于业务快速增加,短短的一年时间不到,云上VPC环境中的虚拟实例就达到百万级别。这史无前例的实例规模迅速给VPC的故障定位和运维带来巨大压力和成本开销。

经过团队调研业界趋势和当前版本功能,发现1.0版本存在下面问题:

(1) 网络控制器数量逐渐增多,一些相同的配置需要在每个控制器上都配置一遍,每天都有业务上线,经常重复配置,效率低、运维成本高。每个集群使用的IP地址单独管理,缺乏统一的IP地址管理机制,业务开通效率低而且容易出错造成业务故障。

(2) 控制器对于运行的虚拟路由器状态无感知,无法高效的获取系统运行的状态。

(3) 基于pyDatalog的控制器完全计算一次大规模的网络拓扑耗时较长,性能低,导致虚拟路由器无法及时转发超低延时的报文,最终带来业务受损。

(4) 虚拟网络缺乏南北向流量的安全策略防护,已有的东西向安全组策略不能高效的管控虚拟网络之间的互访互通,网络访问控制机制不健全,效率低。

(5) VPC无法跨集群互访、不能同裸金属一起实现VPC隔离组网,需要依赖物理网关打通,这种方式需要频繁更改物理交换机的配置甚至搬迁机器,运维成本较高。

02 VPC 2.0系统需求

分析上述问题的根本原因之后,提出下面的解决方案,具体解决如表1所示。

VPC支持南北向的安全防护功能,VPC支持跨集群互访,VPC支持裸金属组网,控制器OVS流表生成算法重构,增强观测性和日志告警闭环处理。

增加一个VPC的超级控制器vnCenter(Virtual Network Center), 用于给控制器分发统一的配置、实现业务编排及统一的IP地址管理。

问题描述

解决方案

统一的IP地址管理机制, 每个控制器需要重复相同的配置操作

集中到超级控制器vnCenter上处理,由vnCenter自动分发给其他VPC集群

无法快速查询虚拟路由器状态,运维效率低

增强控制器可观测性,增强运维能力

控制器更新流表慢

自研控制器

缺乏南北向安全防护

VPC网关支持ACL功能

VPC无法跨集群互访

实现VPC跨集群互访

VPC不支持裸金属

用硬件网关实现裸金属的VPC隔离

表1  问题与解决方案对照

03 VPC 2.0方案

VPC2.0主要组件系统如图1所示。

图片

图1   VPC系统组件图

Cloud控制台提供统一业务入口和便捷的界面操作,业务操作可视化,关键数据存于数据库中,便于维护和使用。

vnCenter用于给控制器VPC Server分发统一的配置、实现业务编排及统一的IP地址管理。

VPC Server 是整个系统的中心,对云平台提供高效,简洁的业务接口。是整个系统的消息转发枢纽,通常称为控制器。

HostController是位于计算节点的OVS (OVS, Open vSwitch)控制器,它指导OVS如何转发业务报文。HostControllerVPC Server一起称作VPC网络的中枢,承担网络转发的重要职责。

VPC CNI Agent负责计算节点网卡资源的管理和分配,同时对云平台提供了创建、删除等业务接口。它采用智能网卡虚拟化(SR-IOV)技术为虚拟实例分配高速网卡,实现虚拟实例的网络加速。

VPC网关分为东西向的分布式网关和南北向的集中网关。分布式网关提供不同子网的通信功能,解决了集中网关的单点故障问题。南北向的集中网关支持VXLAN隧道,实现虚拟网络和物理网络的互通,并且支持横向扩展和DPDK加速技术。网关还支持ACL功能,集中网关可以是自研产品,也可以是第三方支持EVPN-VXLAN协议的硬件设备。

3.1 控制器

3.1.1 增强业务运维能力和可观测性

控制器支持子网IP地址资源的状态自动更新。若即将没有地址,则触发子网扩容IP告警。运维人员收到告警后,安排扩容,关闭告警。

观测性增强包括计算节点和网关的状态跟踪。控制器不断监控系统计算节点的消息,如果没有及时收到消息,则显示其状态为Inactive状态, 如一直有消息更新,则显示其为Active状态。再结合VPC网关,计算节点IP可以迅速构建出一幅业务的网络拓扑,便于故障排查和问题定位。除此之外,还可以支持VPC网关的状态查看。

控制器业务日志入库,定期搜索异常日志,触发告警,运维人员收到告警后,处理潜在风险,关闭告警。

3.1.2 OVS流表计算优化

原有的OVS流表计算引擎是一个单线程的Python程序,无法并行计算流表。网络规模大时,计算时间太长,容易引起业务短暂中断。为此我们采用Go语言,重新设计了一套OVS流表的生成算法,自主开发了HostController程序。其支持流表的并行计算,简化了业务逻辑,提高了流表计算效率。满足原有业务低时延的要求。按需模式经过优化后的首包时延可以降为原来的十分之一。

3.1.3 增强VPC网关接入能力

虽然自研VPC软件网关具有弹性和性能兼顾的综合优势,但其单台转发容量受制于CPU的主频和网卡的数目。在大数据和AI计算业务场景下,并不具备优势。因而我们开发了采用第三方硬件设备充当VPC网关的功能。

采用第三方硬件网关除了可以增加系统的吞吐量外,还可以借助硬件网关的VXLAN隔离能力,将裸金属纳入VPC逻辑范围内,实现虚拟机、容器、裸金属统一组网。如图2所示展示了VPC混合组网的场景。

图片

图2 VPC混合组网

VPCServer引入GoBGP后具备了和通用硬件设备交换EVPN-VXLAN路由的能力,从而可以实现裸金属和虚拟实例的隔离访问的功能。

对于一般的互联网数据中心(IDC,Internet Data Center)物理区,其和VPC网络之间是路由互通模式,可以在网关应用特定的防火墙隔离。

3.1.4 增强VPC网关安全能力

基于OVS实现的安全组功能可以很好地实现东西向的安全访问,但对南北向的安全防控,却有点力不从心。为此我们开发了网关的安全访问控制控制(ACL)功能。其基于五元组的方式实现防火墙级的安全保障。VPC控制台支持ACL的配置和查看,并且支持复制功能,高效实用,有利于业务维护。

如图1所示,VPC控制台可以针对每个VPC配置单独的ACL策略,并自动同步到VPC网关上,用于实现防火墙的功能。

自研VPC网关的ACL功能采用用户态DPDK技术实现加速,并不会因为添加了ACL而带来转发性能的明显下降。

3.2 vnCenter 业务编排能力

3.2.1 统一编排所有控制器

图片

图3  vnCenter统一管控VPC控制

如图3,对于一些通用的配置可以通过vnCenter操作,实现一次配置所有集群生效,高效实现配置的同步。

例如常见的租户信息,用户信息以及用户和VPC的关系,这些都是全局统一的,一次配置可以实现多个集群/可用区都可以使用,不需要每个集群单独配置。

vnCenter上可以查看所有VPC的可用子网信息,通过vnCenter上可以实现VPC网络地址的统一管理和分配,避免地址的冲突。

3.2.2 多集群业务编排能力

图片

图4   DCI互通业务编排

vnCenter可以在多个集群之间实现VPC互通业务,并不需要专用的硬件设备。可以很好的支持业务的备份和集群多活功能。如图3所示。VPCServer在收到vnCenter的集群间业务编排后,开始进行网络拓扑的更新,并指导HostController完成集群间的VPC互通。

04 收益与展望

新版本VPC上线后,提高了网络的稳定性、改进了系统业务承载能力及运维效率,为用户带来良好的体验并得到客户的一致赞赏。

尤其是新上线的控制器HostController,裸金属,ACL功能使VPC的应用场景进一步扩大,推动更多的业务迁移到VPC环境运行。给用户带来更多业务收益。VPC后续版本将向支持高性能和eBPF方向演进。

原文连接: OPPO VPC 实践探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HehuaTang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值