原生以太网卡与PCIe以太网卡
以Intel 原生以太网卡与PCIe以太网卡为例:
Intel原生以太网卡和PCIe以太网卡在系统中实现网络连接时,涉及到与系统总线(如PCIe总线)的连接方式和性能差异。
Intel 原生以太网卡
定义:所谓原生以太网卡通常指的是集成在主板上的网卡,这些网卡直接与主板芯片组相连,而不是通过额外的插卡形式存在。
连接方式:
集成到主板:原生以太网卡通常直接集成在主板上,连接到主板的南桥芯片或是直接连接到CPU的I/O接口。
专用接口:这种集成方式可以利用主板上的专用接口和线路,通常能够提供高效的数据传输路径和较低的延迟。
性能:
低延迟:由于集成在主板上,数据传输路径较短,因此原生以太网卡通常具有较低的延迟。
系统资源利用:原生网卡通常与主板设计相匹配,能够更高效地利用系统资源,如内存和CPU。
PCIe 以太网卡
定义:PCIe(Peripheral Component Interconnect Express)以太网卡是通过PCIe插槽连接到主板上的独立网卡。
连接方式:
插入PCIe插槽:这种网卡通过插入主板上的PCIe插槽来连接系统总线。PCIe插槽有不同的带宽(x1、x4、x8、x16),通常以太网卡使用x1或x4带宽。
标准接口:PCIe提供高带宽、低延迟的数据传输路径,适合高速网络需求。
性能:
可扩展性:PCIe插槽提供灵活的扩展能力,可以根据需要更换或增加网络接口。
高带宽:PCIe接口能够提供高带宽,特别是对于万兆以太网(10GbE)或更高速率的网卡,PCIe接口能够充分利用其带宽优势。
延迟:尽管PCIe网卡具有高带宽优势,但由于数据需要通过PCIe总线传输,延迟可能略高于集成网卡。然而,这种差异通常在几纳秒级别,对大多数应用来说影响不大。
总线性能与带宽
PCIe带宽:PCIe总线带宽根据插槽类型而不同。PCIe 3.0 x1插槽的理论带宽为1GB/s,x4插槽为4GB/s,x16插槽为16GB/s。对于大多数以太网卡来说,即使是PCIe x1插槽的带宽也足够应对千兆以太网(1Gbps)或10GbE的需求。
总线利用率:原生以太网卡由于集成在主板上,其设计更加优化,能够更高效地利用系统总线。而PCIe网卡的性能更多依赖于PCIe插槽的带宽和主板的PCIe通道设计。
永久性修改以太网卡mac地址
明确mac地址存放位置
以太网卡的 MAC 地址通常存储在网卡上的 EEPROM(Electrically Erasable Programmable Read-Only Memory)芯片中。这种设计在很多网卡中都很常见,原因如下:
存储在 EEPROM 的原因
持久性:EEPROM 是一种非易失性存储器,这意味着在设备断电后数据不会丢失。因此,存储在 EEPROM 中的 MAC 地址在系统重新启动或设备重新加电后仍然有效。
可编程性:EEPROM 可以通过特定的工具或命令进行修改(如 ethtool 命令),这使得在某些情况下可以重新配置 MAC 地址。但通常情况下,MAC 地址在生产过程中就已经被写入 EEPROM,并且在正常使用中不会被改变。
独立性:将 MAC 地址存储在 EEPROM 中,使其与网卡的其他功能和配置独立开来。即使系统硬件或软件发生变化,网卡的 MAC 地址仍然保持不变。
存储位置
独立网卡:对于独立的 PCIe 网卡,MAC 地址通常存储在网卡上的一个小型 EEPROM 芯片中。这些芯片通常是一个小型的8针或16针器件,焊接在网卡的电路板上。
集成网卡:对于集成在主板上的以太网控制器,MAC 地址也会存储在一个专用的 EEPROM 或直接在主板芯片组的非易失性存储区中。
局限性
并非所有网卡和驱动都支持修改mac地址
修改方法
- 获取PCIe 配置空间的网卡VID和DID, 这两个组合起来就是网卡magic
- lspci 查看网卡对应总线号
- lspci -s <总线号> -nn 获取magic
VID:100f
DID:8086
Magic:0x100f8086
- 通过ethtool 获取magic
- 注意事项:offset 0不能写入奇数,offset x范围不能超过5, 避免损坏固件。
ethtool -E ens33 magic 0x100f8086 offset 0 value 0xec
ethtool -E ens33 magic 0x100f8086 offset 1 value 0xe0
ethtool -E ens33 magic 0x100f8086 offset 2 value 0x20
ethtool -E ens33 magic 0x100f8086 offset 3 value 0x00
ethtool -E ens33 magic 0x100f8086 offset 4 value 0x10
ethtool -E ens33 magic 0x100f8086 offset 5 value 0xac