解读: 火山引擎自研vSwitch技术

最近看到一篇文章介绍火山云的网络vSwitch技术,虽然是2022年的比较老的介绍,但是对于我们看到vSwitch技术的发展还是有些参考的。下面就截取了当时火山vSwitch关心的几个问题,做了一下梳理。

背景

在云计算发展过程中,虚拟网络的主要追求在于产品的丰富和极致的性能。OVS因其考虑通用性,架构在针对特点的场景中显复杂,转发性能方面相比就偏低。这篇文章主要讲述火山云在自研vSwitch技术上的探索。

火山云网络产品一览表如下,其中主要是三个方面,一是云上网络,而是云间网络(跨地域互联),三是云上云下网络(数据中心延伸)。这个和各大云厂商并没有太大的差异性。

vSwitch发展历程

从第一代kernel版本,到用户态DPDK OVS,到自研BVS,再到软硬件结合,业界的主流趋势。

第三代vSwitch(BVS)

在自研vSwitch的路上做了哪些工作:

  1. 性能优化
    a. 高性能的架构
    b. 高性能的算法
  2. 运维能力建设
  3. 高级特性的支持
    同时产出一个平台框架-ByteFlow,可以给VPC网关、LB网关等数据面转发使用。

热升级

一般采用双进程方案,整体的流程如下:

Step1: 启动一个新进程

Step2: 数据同步

Step3: 网卡分流到新的进程

Step4: 杀死老的进程,ECS与新进程重连

面临的问题是: 热升级方案的downtime会比较长,极端情况下downtime会到6s以上,这个用户是无法接受的。

解决方法: 通过迁移机制把存量的queue信息从旧的BVS进程迁移到新的BVS进程,这个新方案中,ESC网卡是没有down/up的,因此只要队列没满就不会丢包,所以网络的中断时间也非常的短。20ms以内,业务无感。

热迁移

  1. BVS上支持了vport级别的session同步功能,热迁移开始时会做一次全量的session同步,全量同步完后会实时同步增量session,从而保证两边的session是一致的。
  2. relay转发功能,旧的BVS节点收到迁移VM的流量后会relay转发到新的BVS节点。

incast优化

如何应对微突发?

  1. 转发性能提升,快慢速路径优化
  2. cache优化 + RXQ buffer从4K调到了8K
  3. 调大网卡RXQ队列数,增大网卡polling权重
  4. 基于负载的自适应权重调度功能

软硬件一体化

  1. 接口层面新增了对SRIOV和vDPA的支持;
  2. 在BVS快路径层之下设计一套抽象的Offload层,用于屏蔽不同的底层硬件差异。

统一架构服务各种场景

BVS支持 ECS场景、VCI弹性容器场景、EBM裸金属场景,采用统一的技术栈,具备统一的产品能力和产品体验。

总结

自研vSwitch,带来的主要收益:

  1. 网络传输延时可降低一半
  2. 全面提升至100G*2物理网络
  3. 最大网络带宽提升220%
  4. 单实例网络转发能力提升180%,最高可达25M万PPS
  5. 单实例支持会话数提升350%,最高可达1600万
    未来演进硬件DPU等等。

1.《突破性能瓶颈,火山引擎自研vSwitch技术实践揭秘》https://www.volcengine.com/docs/6359/162368

相关推荐
go2coding5 小时前
OpenAI发布多语言MMMLU数据集;火山引擎发布AI视频生成大模型豆包
人工智能·火山引擎
别NULL8 天前
DPDK 简易应用开发之路 2:UDP数据包发送及实现
linux·网络·网络协议·udp·dpdk
OceanBase数据库官方博客8 天前
浅析OceanBase数据库的向量化执行引擎
oceanbase·分布式数据库·火山引擎·执行引擎·向量化
火山引擎边缘云13 天前
火山引擎携手地瓜机器人,加速大模型在机器人场景规模落地
人工智能·物联网·机器人·iot·火山引擎
别NULL16 天前
DPDK基础入门(十):虚拟化
linux·网络·tcp/ip·dpdk
yuvenhol16 天前
火山引擎大模型语音合成双向流式-python demo
开发语言·python·火山引擎
火山引擎边缘云17 天前
探索端智能,加速大模型应用,火山引擎边缘智能 x 扣子技术沙龙等你来
人工智能·机器人·火山引擎
字节跳动数据平台1 个月前
火山引擎VeDI赋能小城酒店业,助力“流量”向“留量”转化
大数据·数据分析·云服务·火山引擎·数据平台·增长营销
字节数据平台2 个月前
火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效
大数据·火山引擎