当前位置: 首页 > article >正文

网卡SR-IOV:单个物理网卡(PF)被划分为多个虚拟功能(VF)

SR-IOV(Single Root I/O Virtualization)是一种网络虚拟化技术,允许单个物理网卡被划分为多个虚拟功能(VF),每个虚拟功能可以独立地作为虚拟机的网络接口使用。

  1. 虚拟功能(VF)和物理功能(PF):SR-IOV将物理网卡(PF)分割成多个虚拟功能(VF),每个VF可分配给不同的虚拟机使用。
  2. 用户态访问:VF直接通过网卡硬件与用户态应用交互,避免内核态中断的干预,减少延迟和性能损失。
  3. 网卡驱动:SR-IOV通过网卡驱动(如Intel的ixgbevf、Mellanox的mlx5vf等)支持虚拟功能,虚拟机通过VF与硬件通信,绕过传统内核网络栈。
  4. 内核与用户态:SR-IOV通过硬件资源分配给虚拟机,使得虚拟机能够直接控制VF并与外部网络通信,减少了内核与用户态之间的切换,提高性能。

SR-IOV提升了虚拟化环境中的网络效率,降低了数据处理的延迟。

模式概述工作原理
混杂模式(Promiscuous Mode)网卡接收所有经过的数据包,而不仅仅是发往自身的数据包。

PF:在PF端,网卡启用混杂模式后,所有数据包会被传送至PF处理。PF决定是否将数据包分发给不同的VF。

VF:在VF端,VF通过驱动接收所有传送给它的数据包(包括不是发往自己的包),用户态应用可以处理这些包,通常用于网络监控。

接收模式(Receive Mode)网卡只接收发往该设备的特定数据包。

PF:PF负责配置VF的接收模式,仅转发目标数据包至指定VF。

VF:VF只接收发往自身的数据包,内核通过VF驱动进行数据处理,确保流量仅限于目标虚拟机,提升网络性能和安全性。

VLAN模式(VLAN Mode)网卡支持虚拟局域网(VLAN)标签数据包的处理和转发。

PF:PF配置VLAN标签,管理多个VF的VLAN流量隔离。

VF:VF接收带VLAN标签的数据包并处理,确保每个虚拟机仅接收其VLAN对应的数据流量。PF通过硬件和驱动管理VF之间的VLAN划分,确保流量隔离。

单播模式(Unicast Mode)网卡仅接收发往特定MAC地址的数据包。

PF:PF配置网卡仅转发到特定VF的单播数据包。

VF:VF只接收目标MAC地址为自己的一对一单播数据包,避免不必要的流量消耗,提升网络效率。PF通过硬件过滤机制确保只有正确的流量到达VF。

VF多队列技术使得每个虚拟功能(VF)能够拥有多个独立的接收(Rx)和发送(Tx)队列,提升虚拟机的网络性能,支持更高的并发处理能力。通过将流量分配到多个队列,减少了网络瓶颈,并实现了更好的负载均衡和吞吐量。

工作原理:

  • 网卡驱动:网卡驱动负责在硬件上配置多个队列,分配给每个VF。硬件支持多个队列,能够并行处理来自不同源的数据包。
  • 内核态:内核通过多队列模式管理和调度网络流量,将数据包分配到不同的队列,并利用中断合并等技术优化性能。内核保证每个VF的队列分配合理,减少CPU资源的竞争。
  • 用户态:用户态应用通过网络栈与驱动交互,实现对多队列的访问和管理,优化数据的处理和调度,提高吞吐量和响应速度。


VF QinQ(虚拟功能的双层VLAN标签)技术通过在每个虚拟功能(VF)上使用双层VLAN标签(即QinQ)来实现更细粒度的网络隔离和流量管理。QinQ技术允许在数据帧中嵌套两个VLAN标签,提供多层次的虚拟网络分割,提升虚拟化环境中网络资源的安全性与效率。

工作原理:

  • 网卡驱动:网卡驱动在硬件上支持双层VLAN标签的处理,能够为每个VF配置VLAN标签的嵌套。硬件根据配置将QinQ标签附加到进出数据包中,确保不同VLAN之间的流量隔离。
  • 内核态:内核通过配置虚拟接口处理QinQ标签,管理每个VF的流量,并负责标签的添加、删除和转发。内核还负责调度数据包,确保QinQ标签正确地应用于数据帧。
  • 用户态:用户态应用通过配置网络接口和VLAN标签,控制流量的流向及其处理方式。用户态程序可以根据VLAN标签进行流量分类与过滤,优化网络的资源分配。

VF QoS(虚拟功能的服务质量)技术用于在虚拟化环境中对每个虚拟功能(VF)分配带宽、延迟和优先级等资源,确保不同虚拟机或应用的网络流量得到合理的优先级调度,避免网络拥塞,提升网络性能和可靠性。

工作原理:

  • 网卡驱动:网卡驱动在硬件中配置VF的QoS策略,支持流量的优先级和带宽控制。硬件基于这些配置对网络流量进行分类和调度,确保重要流量优先传输。
  • 内核态:内核负责管理QoS策略,通过TC(Traffic Control)等工具配置流量的优先级、带宽限制等。内核根据网络流量的类型和QoS设置,执行数据包调度、队列管理等功能。
  • 用户态:用户态应用通过配置QoS策略(如使用tc命令)来定义流量的优先级和带宽要求,优化虚拟机之间的网络资源分配,保障高优先级应用的网络质量。


http://www.kler.cn/a/444402.html

相关文章:

  • Qt之串口设计-线程实现(十二)
  • 两点间最短距离 - Dijkstra
  • 安卓环境配置及打开新项目教程,2024年12月20日最新版
  • 文心一言对接FreeSWITCH实现大模型呼叫中心
  • 【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析
  • C# winform 字符串通过枚举类型转成int类型的数据
  • <mutex>注释 12:重新思考与猜测、补充锁的睡眠与唤醒机制,结合 linux0.11 操作系统代码的辅助(下)
  • LabVIEW在电液比例控制与伺服控制中的应用
  • 基于Spring Boot的校园商城系统
  • es 3期 第16节-运用启发式特性引导用户查询
  • 个人秋招总结
  • 探索 CI/CD 工具的力量
  • 机械鹦鹉与真正的智能:大语言模型推理能力的迷思
  • 3、交换机IP路由功能
  • git企业开发的相关理论(二)
  • 使用xjar 对Spring-Boot JAR 包加密运行
  • GO OSS 前端直传 Presign
  • 快速解决oracle 11g中exp无法导出空表的问题
  • InnoDB 查询成本
  • 【Leetcode Top 100】105. 从前序与中序遍历序列构造二叉树
  • Python:动态粒子爱心
  • Spring IOC 和 AOP的学习笔记
  • Spring篇--xml方式整合第三方框架
  • linux CentOS系统上卸载docker
  • Android Binder 进程间通信
  • 肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)