Freebsd – Why does *BSD uses driver specific names for network interfaces? Does it imply limitations

apifreebsdkernelnetworkingpfsense

I notice that depending on the brand of the network card, interface names differ (driver dependent I suppose).

  • Why does *BSD uses driver specific names for network interfaces?
  • Does it mean there is no abstraction layer describing "a generic network interface" in the kernel, so each driver would be internally addressed via its own API?
  • (how) does it affect subsystems like link aggregation, traffic shaping, QoS (ALTQ), filtering and others?

Precisely, it looks like under pfSense, I cannot use ALTQ with a link aggregation (LAG) virtual interface.

Is this a BSD internal limitation due to the lack of an appropriate abstraction layer?

Best Answer

Why does *BSD uses driver specific names for network interfaces?

It's just a historical choice. The letters in the name come from the driver that talks to the card, so they will be the same for two separate interfaces if they happen to use the same driver.

It does have one practical benefit: on BSD, the network drivers have their own manual pages in section 4. So, dc(4) tells you about the DEC 21143 driver, which would control the dc0 network adapter.

You see this in other parts of BSD Unix as well, such as hard disks.

Is this a BSD internal limitation due to the lack of an appropriate abstraction layer?

No.

For what it's worth, Linux is heading down a similar path. The days of simple naming rules for Ethernet adapters are disappearing, as networking gets more complicated.

Related Question