OPPO云VPC网络实践
1 OPPO 云网络现状
随着OPPO业务的快速发展,OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题,给网络运维和业务的快速上线带来了挑战。
梳理存在的主要问题如下:
1)网络缺乏集中的控制系统,业务开通以手工配置为主,自动开通能力几乎没有,为后期维护、升级埋下隐患。
2)虚拟网络和物理网络耦合紧密,没有做到业务分离。虚拟网络的MAC或者路由会传递到物理设备上,对物理设备的二、三层表项的容量提出了很高的要求。虚拟实例大规模扩容后可能会使硬件设备上的路由表项耗尽,导致业务无法使用。
3)虚拟网络缺乏安全策略,已有的安全策略不能很好的管控虚拟网络之间的互访互通,网络访问控制机制不健全。
4)虚拟网卡带宽无法支持高性能业务。网络的虚拟网卡只支持veth/tap设备,网络带宽不高,满足不了网络数据密集型业务的需求。
5)虚拟网络系统没有实现控制和转发分离,控制面故障或者升级会影响业务。
2 虚拟网络选型
分析上述问题的根本原因之后,决定选择目前业界主流的SDN网络技术来解决上述网络隔离和运维自动化能力不足的问题,选择智能网卡OFFLOAD功能来实现虚拟实例的网络加速,选用虚拟私有云(VPC)技术来治理不同用户的业务网络、提高系统的健壮性、安全性。
SDN的数据面采用开源的OVS来实现,主要原因是OVS已经在数据中心中大规模应用,其转发性能、稳定性和安全性已经得到实践证明,其维护成本也相对降低。
VPC控制器、VPC网络接口(CNI)插件、VPC网关、VPC负载均衡(Load Balance)决定采用自研的方式实现,虽然社区已经有类似的方案(Neutron/OpenDaylight),但是这些项目都比臃肿,侧重于电信业务场景,维护成本较高,不能直接应用于数据中心互联网业务场景,并且和已有的平台系统,集成开发工作也比较多。而自研也有很多优点,比如新功能开发快速不在依赖社区、定制开发方便、轻量化、性能高、稳定性强。
3 VPC网络方案
整个VPC网络系统架构如下图所示。
图1 VPC网络架构
VPC控制台提供统一业务入口和便捷的界面操作,业务操作可视化,关键数据存于数据库中,便于维护和使用。
VPC SERVER是整个系统的中心,对云平台提供高效,简洁的业务接口。是整个系统的消息转发枢纽。
FlowEngine是位于计算节点的OVS控制器,它采用规则推理的方式计算流表,指示OVS如何转发业务报文。FlowEngine与VPC Server一起称作网络的中央中枢。
VPC CNI Agent负责计算节点网卡资源的管理和分配,同时对云平台提供了创建、删除等业务接口。它采用智能网卡虚拟化(SR-IOV)技术实现虚拟实例的网络加速。
VPC网关分为东西向的分布式网关和南北向的集中网关,提供不同子网的通信,解决了集中网关的单点故障问题。南北向的集中网关支持VXLAN隧道,实现虚拟网络和物理网络的互通,并且支持横向扩展和DPDK加速技术。
VPC LB实现四层负载均衡,对外提供业务的高可用方案。
3.1 VPC网络类型
当前VPC网络支持租户网络、公共网络和弹性IP网络。租户网络中虚拟实例之间可以互相访问,只能通过VPC网关访问外部网络,虚拟实例的IP地址不会发布出去,因而不能被外部主机访问。只有绑定上弹性IP才可以对外直接提供服务,这种网络特别适合于开发测试环境向生产环境的切换,有利于业务的快速发布。
租户网络也可以借助LB网关,发布虚拟IP(VIP)路由,对外提供业务。
公共网络类似于传统的VLAN网络,它的网段会被VPC网关发布到上联设备上,直接可以和IDC网络互通。方便部署基础虚拟云平台的监控服务以及公共服务。
图2 VPC业务网络架构
3.2 租户隔离的隧道VXLAN
VPC网络的类型为VXLAN隧道,每个子网分配唯一的VXLAN隧道ID,同安全组技术一起使用保证不同用户网络的完全隔离,解决了业务上云的安全风险。
OVS的数据面转发由本地控制器来控制,控制器故障不会影响其他节点的通信和已有隧道业务流的转发。
采用智能网卡的VXLAN卸载功能,不会因为VXLAN的性能损耗影响业务转发,同时节省了主机的CPU资源。
3.3 VPC隧道封装说明
3.3.1 VXLAN隧道隔离
VPC网络支持虚拟机和容器位于同一个二层网络,从网络角度看,他们都在同一个VPC子网内。不同节点虚拟实例互访,需要借助VXLAN隧道完成。同子网虚拟实例通信,报文的VXLAN ID是本子网的ID,异子网虚拟实例通信,报文的VXLAN ID是目的子网的ID。
虚拟实例访问VPC外部网络需要借助VPC网关,VPC网关采用软件实现,通过DPDK和高速网卡加速,运行在X86服务器上即可。当前也支持第三方VPC网关,VPC网关可以通过HTTP API或者BGP-EVPN接口与VPC SERVER交互VXLAN的路由信息。
图3 VXLAN隧道转发示意
3.3.2 VPC 负载均衡
VPC负载均衡采用全NAT方式实现,报文封装在VXLAN报文中进行转发。路由和隧道信息由VPC SERVER同步给LB控制器,LB控制器负责将路由信息更新到对应的网元。
图4 负载均衡转发示意
从上图可以清楚的看出报文的交互方案,LB网元会保持业务的会话session,支持轮巡、最小负载优先等调度算法。支持一致性哈希算法,无缝迁移业务功能。
LB网元采用DPDK和高速网卡实现,报文转发速率(PPS)可以达到800万以上 ,会话数目可以达到10万以上,时延小于1ms。满足互联网及IOT场景高并发业务要求。
3.4 VPC性能指标
VPC虚拟实例透传VF网卡后,转发性能可以到 25000Gbit/s。PktGen测试报文转发速率(PPS) 可以达到2400万,带宽可以达到25Gbps。带宽和PPS都可以达到虚拟的tap设备的两倍以上,同时降低了网络转发的CPU使用率。
VPC租户隔离的特性很好的解决多个租户内百万虚拟实例的快速互访问题。单实例和LB性能的提高了解决了现网中百万节点数据计算的带宽瓶颈。大大提高了系统的业务承载能力。VPC网络技术赋能AI和大数据计算平台。
4 收益与展望
上线运行后,VPC架构简化了网络架构,提高了网络的安全性、提高了系统的业务承载能力及运维效率,为用户带去良好的体验并得到客户的一致赞赏。
VPC版本仍在不断迭代中,即将发布的新功能有VPC统一管理容器、虚拟机、逻辑等多种类型的计算实例,数据面的高可用,OVS流表计算引擎高可用,100G最新智能网卡等。
转载 OPPO云VPC网络实践
相关文章:

OPPO云VPC网络实践
1 OPPO 云网络现状 随着OPPO业务的快速发展,OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题,给网络运维和业务的快速上线带来了挑战。 梳理存在的主要问题如下…...
力扣(数组)找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1: 输入:nums [4,3,2,7,8,2,3,1] 输出:[5,6]示例 2&am…...

每日面经分享(Spring Boot: part3 Service层)
SpringBoot Service层的作用 a. 封装业务逻辑:Service层负责封装应用程序的业务逻辑。Service层是控制器(Controller)和数据访问对象(DAO)之间的中间层,负责处理业务规则和业务流程。通过将业务逻辑封装在S…...

k8s的pod访问service的方式
背景 在k8s中容器访问某个service服务时有两种方式,一种是把每个要访问的service的ip注入到客户端pod的环境变量中,另一种是客户端pod先通过DNS服务器查找对应service的ip地址,然后在通过这个service ip地址访问对应的service服务 pod客户端…...

shell脚本发布docker-nginx vue2 项目示例
docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面,参见:https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇(宿主机nginx,非docker-nginx)&am…...

【THM】Nmap Basic Port Scans(基本端口扫描)-初级渗透测试
介绍 本房间是Nmap系列的第二个房间(网络安全简介模块的一部分)。 1.Nmap实时主机发现 2.Nmap基本端口扫描 3.Nmap高级端口扫描 4.Nmap后端口扫描 在之前的房间里,我们专注于发现在线系统。到目前为止,我们已经介绍了Nmap扫描的三个步骤: 枚举目标发现活动主机反向-…...

Groovy结合Java在生产中的落地实战
Groovy简介 Groovy是用于Java虚拟机的一种敏捷的动态语言,是一种成熟的面向对象编程语言,又是一种纯粹的脚本语言。Groovy运行在JVM环境上,在语法上兼具java 语言和脚本语言特点,大大简化了语法。同时又具有闭包和动态语言中的其…...
达梦数据库 创建外部表 [-7082]:外部表数据错误.
1:定义 外部表,是指不存在于数据库中的表。通过向达梦提供描述外部表的元数据,可以把一 个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来 进行访问。 外部表的数据存储在操作系统中࿰…...

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

JavaScript简介
目录 概要: 说明: 学习JS的原因: JS可以干什么: 了解JavaScript: 前言: JavaScript的历史: JavaScript与ECMAScript: 如何运行JavaScript以及JavaScrip的特点: …...
使用PaddleX实现的智慧农业病虫检测项目
目录 1. 数据集解压 2.检查数据集的图片是否均可读取 3. 查看数据集的类别信息...

算法学习——LeetCode力扣图论篇1(797. 所有可能的路径、200. 岛屿数量、695. 岛屿的最大面积)
算法学习——LeetCode力扣图论篇1 797. 所有可能的路径 797. 所有可能的路径 - 力扣(LeetCode) 描述 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特…...

【IP组播】PIM-SM的RP、RPF校验
目录 一:PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二: RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…...
前端代码规范-命名规范
命名规则 camelCase(小驼峰式命名法 —— 首字母小写)PascalCase(大驼峰式命名法 —— 首字母大写)kebab-case(短横线连接式)Snake(下划线连接式) 项目名称 项目名 全部采用小写方…...

移动端APP测试常见面试题精析
现在面试测试职位,要求非常全面,那么APP测试一般需要哪些技术呢?下面总结了APP测试常见面试题: 1.Android四大组件? Activity:描述UI,并且处理用户与机器屏幕的交互。应用程序中,一个Activity就相当于手…...

报错[Vue warn]: $listeners is readonly. $attrs is readonly.怎么解决?
代码也没有逻辑错误,但是报错 [Vue warn]: $listeners is readonly. $attrs is readonly. 情况1:多处声明了new Vue,解决方案:删除一个,用全局变量引用同一个Vue 情况2:import Vue from Vue;第二个Vue首字…...
android 14 apexd分析(1)apexd bootstrap
Apex的由来,我们都知道普通的apk我们可以通过应用商店playstore等进行更新,apex的引入是google希望也能通过playstore更新bin文件.so etc配置文件等类型文件. 这些文件的安装实际通过apexd来进行,现在我们来解析一下apexd, apexd的启动分为两个阶段,bootstrap和普通apexd启…...

C++ 中的 vector 的模拟实现【代码纯享】
文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中,vector 是一个非常重要的容器,它提供了动态数组的功能。在本篇博客中,我们将尝试模拟实现…...

UE4 方块排序动画
【动画效果】 入动画: 出动画: 【分析】 入动画:方块动画排序方式为Z字形,堆砌方向为X和Y轴向 出动画:方块动画排序方式为随机 【关键蓝图】 1.构建方块砌体 2.入/出动画...

网络与并发编程(一)
并发编程介绍_串行_并行_并发的区别 串行、并行与并发的区别 串行(serial):一个CPU上,按顺序完成多个任务并行(parallelism):指的是任务数小于等于cpu核数,即任务真的是一起执行的并发(concurrency):一个CPU采用时间…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...