Чому * BSD використовує специфічні для драйвера імена для мережевих інтерфейсів?
Щоб зробити прості речі. Якщо ви звернетесь до інтерфейсу з назвою bge0
та ознайомтеся з посібниками або скористаєтеся мнемонічною системою зв’язків, ви швидко запам’ятаєте, що цей драйвер - це широкосмуговий гігабітний ефір . Цей документ також є корисним.
Чи означає це, що в ядрі відсутній шар абстракції, що описує "загальний мережевий інтерфейс", тож кожен драйвер буде внутрішньо адресований через власний API?
Правило тут:
- Використовуйте ім'я драйвера, щоб створити ім'я пристрою;
- Використовуйте найнижчий ідентифікатор PCI, щоб створити номер відразу після імені пристрою;
Шар абстракції не потрібен. Це просто.
(як) це впливає на такі підсистеми, як агрегація зв’язків, формування трафіку, QoS (ALTQ), фільтрація та інші?
Імена інтерфейсів не повинні перешкоджати формуванню трафіку.
Точно це виглядає як під pfSense, я не можу використовувати ALTQ з віртуальним інтерфейсом агрегації посилань (LAG).
Сьогодні це має працювати:
Це внутрішнє обмеження BSD через відсутність відповідного шару абстракції?
Справа не в тому, що не існує відповідного шару для цього. Це тому, що ви можете використовувати інші ресурси для обробки таких імен, як, наприклад, створення імен інтерфейсу ( /etc/rc.conf
) або зміна ідентифікатора pci на налаштуваннях материнської плати. І, як говорять інші з цього питання, навіть Linux йде на цей шлях biosdevname
.