- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
何荣光-VIrtio-ISM VM容器间动态安全内存共享_20230328_113546
展开查看详情
1 .Virtio-ISM:VM/容器间动态安全内存共享 结合SMC实现业务零修改的高速通信 何容光 阿里云-操作系统 2023/03/26
2 .背景/应用场景 随着CPU个数越来越多,一个宿主机上的容器个数也会越来越多 • 大数据:多安全容器/VM间Map/Reduce • NFV:链式服务 • Host上的服务进程 服务于(<->) VM/安全容器
3 .当前路径 容器A 容器B 数据拷贝 TCP/ TCP通信 TCP/ IP IP 协议 协议 栈 栈
4 .理想情况 容器A 容器B 数据拷贝 TCP/ TCP通信 TCP/ IP IP 协议 协议 容器A 容器B 栈 栈 免数据拷贝 绕过 绕过 TCP/ TCP通信 TCP/ IP IP 协议 协议 栈 栈
5 .理想情况 零业务修改 容器A 容器B 数据拷贝 TCP/ TCP通信 TCP/ IP IP 协议 协议 容器A 容器B 栈 栈 免数据拷贝 绕过 绕过 TCP/ TCP通信 TCP/ IP IP 协议 协议 栈 栈
6 .SMC-x family • SMC-R:RDMA硬件 • SMC-D:ISM设备 • SMC-V:Virtio-ISM设备 • 为什么选用SMC? • SMC的优点 • SMC的缺点
7 .本地间高速通信:现有方案 • 模拟ISM设备 • Q不通用 • Q硬件Spec未公开 • Ivshmem 1.0 • Q一块共享内存 • Ivshmem 2.0 -> • Q所有VM呈现相同的共享内存
8 .本地间高速通信:现有方案(cont.) • Virtio over ivshmem 2.0 -> • Q设备一对一
9 .本地间高速通信:现有方案(cont.) • Vhost-pci -> • Q1对1 • Q映射所有内存 • VirtioVhostUser • Q1对1 • Q映射所有内存 • 相比vhost-pci:实现方式通用 一点 • 其他proposal……
10 .Virtio-ISM: 宿主机 整体 安全容器 安全容器 普通容器 /VM A /VM B (Runc) D Virtio-ism设备 Virtio-ism设备 Virtio-ism设备 分配(alloc) 映射(attach) N 分配(alloc) 分配(alloc) 映射(attach) Y 共享内存1 共享内存2 共享内存3 token:M token:N Token:Y 协议:Get_device_info/Alloc/Attach/Grant/Free/Bind_irq/Get_irqfd Host server(中心 管家)
11 .Virtio-ISM: 宿主机 驱动呈现API 安全容器 安全容器 普通容器 (图示) /VM A /VM B (Runc) D 1. get_device_info() -> 1. get_device_info() sysid=UUID1,devid=dev3 -> sysid=UUID1,devid=dev1 1. get_device_info() 2. alloc_buffer(size = 2. alloc_buffer(size = 1MB) -> sysid= UUID1,devid=dev2 1MB) -> token N -> token M 2. attach_buffer(token = N) 3. grant_buffer(token = 3. grant_buffer(token = M, -> address 0x123, size = N, target=dev2) target=dev2) 1MB 4. attach_buffer(token = 4. alloc_buffer(size = 2MB) Y) -> address 0x789, size -> token Y = 2MB Virtio-ism设备 Virtio-ism设备 Virtio-ism设备 分配(alloc) 映射(attach) N 分配(alloc) 分配(alloc) 映射(attach) Y 共享内存1 共享内存2 共享内存3 token:M token:N Token:Y
12 .Virtio-ISM: Virtio-ism device 1 Virtio-ism device 2 Virtio-ism device 3 通知 Shmem Region 0 Shmem Region 0 Shmem Region 0 4' Shmem Region 1 Shmem Region 1 Shmem Region 1 Shmem Shmem Shmem 4 region region region 1 1' Shmem Region Z Shmem Region Z Shmem Region Z MSI-x Region 0 MSI-x Region 0 MSI-x Region 0 2' Virtio-ism device 2 2 Virtio-ism device 3 MSI-x Region 1 MSI-x Region 1 MSI-x Region 1 MSI-x MSI-x MSI-x region region region MSI-x Region Z MSI-x Region Z MSI-x Region Z 3' MMIO Notifier Region 0 MMIO Notifier Region 0 MMIO Notifier Region 0 3 MMIO MMIO Notifier Region 1 MMIO MMIO Notifier Region 1 MMIO MMIO Notifier Region 1 Notifier Notifier Notifier region region region MMIO Notifier Region Z MMIO Notifier Region Z MMIO Notifier Region Z
13 .Virtio-ISM: 宿主机 支持runc-rund间通信 VM 业务方业务 host server VM内核 Runc容器方案的选择 SMC-V unix scoket virtio-ism驱动 • vDPA框架 virtio-ism设备模拟用户 态进程(sim-app) • vduse框架 qemu virtio-ism设备(PCI 设备) runc runc里的业务方业务 宿主机内核 SMC-V vduse virtio-ism驱动 virtio-vDPA总线 virtio-ism设备 驱动
14 .Virtio-ISM: 整体架构中的一些选择 • virtio设备,而不是PCI设备 • Host上分配内存,而不是Guest内分配内存 • 缺点 • 优点 • 解映射时对端不响应时怎么办? • 等待? • 强制解除映射? • account记账 • 实现通知机制 • 通知走virtio-ring还是直接给对端发送中断?
15 .Virtio-ISM: 效果 • Iperf TCP/IP Benchmark • GPU共享真实业务场景 业务模型:runc容器<->rund安全容器: 业务模型:安全容器内的GPU请求转发到host runc容器里的服务端处理 效果: 效果: 时延:12us -> 5us 端到端业务效果提升10%~20% 吞吐:735MBps -> 9716 MBps (即使还未针对业务进一步优化情况下)
16 .Virtio-ISM: 开源中 SPEC RFC: • [PATCH v3 0/1] introduce virtio-ism: internal shared memory device Thanks
17 .Thanks