为什么 *BSD 为网络接口使用驱动程序特定名称?这是否意味着限制?

Tot*_*tor 13 freebsd networking kernel api pfsense

我注意到根据网卡的品牌,接口名称有所不同(我想取决于驱动程序)。

  • 为什么 *BSD 为网络接口使用驱动程序特定名称?
  • 这是否意味着内核中没有描述“通用网络接口”的抽象层,因此每个驱动程序都将通过其自己的 API 在内部进行寻址?
  • (如何)它会影响链路聚合、流量整形、QoS ( ALTQ )、过滤等子系统?

确切地说,在 pfSense 下,我无法将 ALTQ 与链路聚合 (LAG) 虚拟接口一起使用。

由于缺乏适当的抽象层,这是 BSD 内部限制吗?

War*_*ung 7

为什么 *BSD 为网络接口使用驱动程序特定名称?

这只是历史的选择。名称中的字母来自与卡通信的驱动程序,因此如果两个单独的接口碰巧使用相同的驱动程序,它们将是相同的。

它确实有一个实际的好处:在 BSD 上,网络驱动程序在第 4 节中有自己的手册页。因此,dc(4)告诉您有关控制dc0网络适​​配器的 DEC 21143 驱动程序的信息。

您也可以在 BSD Unix 的其他部分看到这一点,例如硬盘。

由于缺乏适当的抽象层,这是 BSD 内部限制吗?

不。

就其价值而言,Linux 正朝着类似的道路前进。随着网络变得越来越复杂,以太网适配器的简单命名规则的日子正在消失。


Gil*_*il' 5

使用通用名称或驱动程序特定名称的选择与任何驱动程序限制无关。

这主要是一种化妆品选择。使用通用名称的优点是可以隐藏几乎总是不相关的信息——网络接口就是网络接口,无论是谁制造的。设备的功能取决于确切的型号及其配置,而不取决于正在使用的驱动程序。特定名称的好处是对管理员而言:如果错误消息提到eth0(好吧,哪一个是 0,哪一个是 1),它比它提到wlan0(啊,那是 wifi 接口)或bcm0(啊,那是Broadcom 接口)。

在 FreeBSD 上,网络设置操作通过调用ioctlUnix 套接字来工作。该 ioctl 由通用网络代码处理,并在 ioctl 调用时向下传递到相关驱动程序。

我不知道 ALTQ 如何与链路聚合交互。确保使用最新版本的 FreeBSD,因为这以前不起作用,但现在可以了