第35周:智能网卡与硬件卸载
目标:理解 SR-IOV、SmartNIC、RDMA/RoCE 等硬件加速技术,能够为 VM 配置网卡直通和高性能网络。
1. SR-IOV 概述
1.1 什么是 SR-IOV
1 | SR-IOV(Single Root I/O Virtualization): |
1.2 架构图
1 | ┌─────────────────────────────────────────────┐ |
1.3 SR-IOV vs 其他虚拟化方式
1 | ┌─────────────┬─────────┬────────┬─────────────┐ |
2. SR-IOV 配置
2.1 BIOS 和内核要求
1 | # === BIOS 设置 === |
2.2 加载 VFIO 驱动
1 | # 加载必要模块 |
2.3 启用 VF
1 | # 查看 NIC 当前的 VF 数量 |
2.4 绑定到 VFIO 驱动
1 | # === 方式 1:自动(推荐) === |
2.5 分配 VF 给 VM(KVM)
1 | # === QEMU 命令行(KVM) === |
2.6 完整脚本
1 |
|
3. Virtio-net(半虚拟化)
3.1 Virtio 架构
1 | Virtio:I/O 虚拟化的标准框架 |
3.2 三种模式
1 | virtio-net 的三种模式: |
3.3 配置 Virtio
1 | # === KVM VM 配置 === |
4.4 Virtio-net 性能优化
1 | # === 主机端 === |
5. SmartNIC(智能网卡)
5.1 智能网卡概念
1 | SmartNIC = 带 CPU 的网卡 |
5.2 卸载特性
1 | 传统 NIC 智能:基础 L2/L3 转发 |
5.3 Flow Director
1 | Flow Director:网卡硬件包过滤 |
6. RDMA 概览
6.1 RDMA 概念
1 | RDMA(Remote Direct Memory Access): |
6.2 RDMA 三种类型
1 | ┌────────────┬────────────┬────────────────┐ |
6.3 RoCE 配置
1 | # === RoCE v2 基础配置 === |
6.4 RDMA 编程基础
1 | // rdma_client.c — 简单的 RDMA 客户端 |
7. 卸载特性详细配置
7.1 卸载特性开关
1 | # === 查看所有 offload 状态 === |
7.2 Flow Director 配置
1 | # === 添加精确流规则 === |
7.3 SR-IOV + Flow Director
1 | # 在 PF 上添加 Flow Director 规则 |
8. 性能对比
8.1 不同虚拟化方式
1 | ┌──────────────┬──────────┬──────────┬──────────┐ |
8.2 RDMA vs TCP
1 | 延迟对比: |
9. 实践:SR-IOV 配置和性能测试
9.1 启用 SR-IOV
1 |
|
9.2 性能测试
1 | # === iperf3 测试 === |
9.3 对比不同虚拟化方式
1 |
|
10. 主流工具与平台
1 | 智能网卡平台: |
11. 故障排查
1 | # === SR-IOV 启用失败 === |
- 本文作者: CoderSong
- 本文链接: https://jack-song-gif.github.io/2026/05/29/第35周:智能网卡与硬件卸载/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!