【云安全】Bifrost: Analysis and Optimization of Network I/O Tax in Confidential Virtual Machines 2023OSDI

背景和问题

云计算中数据安全很关键

  • 应用在云中处理敏感数据,如key-value store,AI inference,finance service
  • 被攻击的hypervisor可能窃取VM数据(hypervisor有权访问VM内存)
  • 公布很多法规强制保护数据安全,例如GDPR(general data protection regulation)

CVM适用于数据中心

  • 安全性
    • OS-level可信计算,每个guest OS互相隔离
    • VM exits时,CPU状态受保护
    • 硬件加密保护内存安全
  • 兼容性
    • 可以与现有IaaS集成
    • 对应用透明,不需要修改应用

红色部分共享,Hypervisor也可以访问,绿色部分私用,只有CVM可以访问

大比特以太网时代到来

  • 现有的网络设备速度增长,比如NVIDIA ConnectX-7 400GbE SmartNIC
  • CPU变成性能瓶颈,应用逻辑和IO操作都消耗大量的CPU资源

CVM中的虚拟化IO网络

  • 现代云服务商的主要IO虚拟化选择,典型用法:基于轮训的用户空间IO后端以提供高性能

    I/O event notification

  • Hypervisor通过vIRQ通知虚拟机,从而触发虚拟机退出

  • 与传统VM相比,CVM退出具有更高的延迟

CVMs’ exits have higher latency

I/O data transfer

  • 管理程序将IO数据拷贝to/fromVM内存
  • 由于管理程序无法访问私有内存,CVM需要反弹缓冲区bounce buffer

image-20240228142636671

I/O data protection

  • 端到端的加密,如传输层安全( TLS )
  • 内核中的TLS支持增强的性能和扩展的功能

TLS保护数据

CVM的网络性能差

Testbed configuration

  • CVM: AMD SEV-ES/SNP, w/o posted IRQ
  • CVM+PI: simulated Intel TDX, w/ posted IRQ

Summary: poor network performance

  • CVM: 21% - 28% overhead vs. baseline
  • CVM+PI: 13% - 29% overhead vs. baseline

*Posted IRQ: eliminate VM exits during vIRQ deliveries

CVM-IO Tax 影响性能

CVM-IO tax & application workloads共享有限的CPU执行时间

CVM IO tax

  • CVM-IO tax

    • CPU时间花费在安全保护和固有的网络I/O程序上
    • CPU花费时间越多,性能越差
  • Application workloads

    • CPU时间花费在业务逻辑和有效负载处理上
    • CPU花费时间越多,性能越好

CVM-IO tax consumes > 50% CPU time

IO tax 问题

Lengthy VM Exits

  • CVM引入了对CPU状态的保护,例如,当VM退出时,可信的固件可以保存和清除寄存器
  • 该保护为guest-host世界交换机增加了大量的CPU周期

CVM consumes 5,833 cycles more than its baseline

  • 如果没有posted IRQ,vIRQ导致频繁的VM退出

CVM triggers ~20x more VM exits/s than CVM+PI

  • VM exits占据CVM的大量CPU时间
  • 高达20%->严重的性能影响
  • 增加的延时和高频率->开销大
  • posted IRQ最小化了VM退出的性能影响
  • CVM+PI有最多1%的CPU周期数
  • 可以在下一代的CVM硬件平台中迅速支持

Bounce Buffer

  • 传统的VM内存是与管理程序共享的,只需要一次copy

traditional CM copy

  • CVM内存默认设置为私有,hypervisor不可以直接访问私有内存的packets,需要多一次copy

CVM copy

  • 多一次copy,更大的IO数据传输会导致更多的CPU时间占用
  • bounce buffer 消耗CVM的大量CPU时间
  • CVM+PI有高达20%的CPU周期->严重的性能影响
  • 拷贝IO数据和维护元数据都很昂贵
  • 更大的数据->开销大
  • 对于性能而言,有必要避免bouncing更大的IO数据

Packet Processing

  • 包括头解析、加帽和去帽等操作
  • 数据包越多,CPU时间就越多
  • Packet Processing消耗CVM的大量CPU时间
    • CVM+PI有高达36%的CPU周期->严重的性能影响
    • 网络密集场景有大量packets
  • 减少packets数量能消除性能影响

设计和方法

设计目标

  • 性能
    • Bounce buffer tax: avoid bouncing large-size I/O data
    • Packet processing tax: reduce the number of packets to be processed
  • 安全
    • Maintain the same level of security guarantees as existing CVMs
  • 通用
    • Applicable to diverse platforms (e.g., x86, ARM), guest/host OSes (e.g., Linux, FreeBSD)
  • 实用
    • Transparent to applications & Non-intrusive and minor modifications

挑战

  • C1:异地硬件存储器加密和解密

存储类型转换存在数据损失

  • C2:设备驱动中昂贵的包预操作

重组减少要处理的包

观察

  • O1:端到端的加密 or 私有内存都足以保证数据的安全性

可能存在冗余保护

  • O2:端到端加密存在有效载荷位置移动的副作用

异地加解密减少冗余保护或者bouncing

  • O3:I / O后端通常有大量的剩余CPU资源可用

CPU没有充分利用,vCPU充分利用

设计

  • D1:Zero-copy encryption deduplication (ZCED)

    • 利用O1和O2消除负载的bouncing tax,进行加密后,从private memory放到share memory,只需要一次copy

      通过加密,消除bouncing tax

    • 尽量减少对CVM分配器的修改和重用,专用NUMA节点(称为ZCED NUMA)

      architecture修改

  • D2. One-time trusted read (OTTR)

    • 防御TOCTTOU对ZCED NUMA的攻击
    • 原则:只信任从共享内存中的第一次读取,在TX和RX两个方向上实施保护

OTTR保护

  • D3:预接收包重组( PRPR )

    • 利用O3减少packet 预处理tax

      把重组任务卸载到网络IO后端

    • packet receive流程

      接收包

    • Packet Sending流程

      发送包

总结

工作总结


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论

×

喜欢就点赞,疼爱就打赏