Почему BSD использует конкретные имена драйверов для сетевых интерфейсов? Это подразумевает ограничения?

Я замечаю, что в зависимости от марки сетевой карты имена интерфейсов различаются (зависит от драйверов).

  • Почему BSD использует конкретные имена драйверов для сетевых интерфейсов?
  • Означает ли это, что в ядре нет слоя абстракции, описывающего «общий сетевой интерфейс», поэтому каждый драйвер будет внутренне адресован через собственный API?
  • (как) это влияет на подсистемы, такие как агрегация ссылок, формирование трафика, QoS ( ALTQ ), фильтрация и другие?

Точно, это похоже на pfSense, я не могу использовать ALTQ с виртуальным интерфейсом агрегации ссылок (LAG).

  • grep print относительный путь к файлу при выполнении рекурсивного поиска
  • Как заставить FreeBSD назначать маршрутизатор по умолчанию при получении IP-адреса в режиме DHCP?
  • Доступ к зашифрованному Luks диску от FreeBSD
  • Создание раздела ext2 для FreeBSD 10.1, работающего на базе x86 с разделением MBR
  • Установка bash SHELL для удаленных соединений openSSH?
  • Как правильно построить минимальное ядро ​​FreeBSD?
  • Является ли это внутренним ограничением BSD из-за отсутствия соответствующего уровня абстракции?

  • API для IPROUTE2 на любом языке программирования
  • BTX остановился. Когда я пытаюсь установить FreeBSD 10.3 на свой ноутбук, я получил это сообщение:
  • Плагин мониторинга сетевого трафика Nagios для FreeBSD
  • Каковы обязанности каждого компонента Pseudo-Terminal (PTY) (программное обеспечение, ведущая сторона, подчиненная сторона)?
  • Как адрес ядра заменяет страницы памяти на swap partition \ file?
  • У вас установлена ​​безопасность / openssl, но DEFAULT_VERSIONS + = ssl = openssl не установлен в вашем make.conf
  • 4 Solutions collect form web for “Почему BSD использует конкретные имена драйверов для сетевых интерфейсов? Это подразумевает ограничения?”

    Почему BSD использует конкретные имена драйверов для сетевых интерфейсов?

    Это просто исторический выбор. Буквы от имени получаются от драйвера, который разговаривает с картой, поэтому они будут одинаковыми для двух отдельных интерфейсов, если они будут использовать один и тот же драйвер.

    У этого есть одно практическое преимущество: на BSD сетевые драйверы имеют свои собственные страницы руководства в разделе 4. Итак, dc(4) сообщает вам о драйвере DEC 21143, который будет управлять сетевым адаптером dc0.

    Вы также видите это в других частях BSD Unix, таких как жесткие диски.

    Является ли это внутренним ограничением BSD из-за отсутствия соответствующего уровня абстракции?

    Нет.

    Для чего это стоит, Linux идет по аналогичному пути . Дни простых правил именования для Ethernet-адаптеров исчезают, поскольку сетевое взаимодействие становится более сложным.

    Выбор использования общих или определенных драйверов имен не имеет никакого отношения к ограничению драйверов.

    Это в основном косметический выбор. Использование общих имен имеет то преимущество, что скрывает информацию, которая почти всегда не имеет значения – сетевой интерфейс является сетевым интерфейсом, независимо от того, кто его создал. Возможности устройства зависят от точной модели и ее конфигурации, а не от того, какой драйвер используется. Преимущество конкретных имен для администратора: если в сообщении об ошибке упоминается eth0 (ok, поэтому какой из них равен 0, а один – 1), это менее информативно, чем если бы упоминалось wlan0 (ах, это интерфейс wifi) или bcm0 ( ах, это интерфейс Broadcom).

    В FreeBSD операции настройки сети работают, вызывая ioctl в сокете Unix. Этот ioctl обрабатывается общим сетевым кодом и стекает до соответствующего драйвера, если ioctl требует этого.

    Я не знаю, как ALTQ взаимодействует с агрегацией ссылок. Не забудьте использовать последнюю версию FreeBSD, поскольку это раньше не работало, но теперь это делает .

    Это упрощает определение сетевой карты, с которой вы разговариваете.

    Если у вас есть Intel (igb0) и Realtek (rl0) nic, вы можете сразу же разделить их.

    Кроме того, разные драйверы поддерживают разные функции. Некоторые драйверы поддерживают polling а некоторые – нет. Некоторые поддерживают LRO , TSO и RSS и т. Д. Легче отслеживать ту поддержку, которая, когда они еще не названы eth .

    eth может иметь смысл, если у вас было много других типов сетевых интерфейсов, но вы редко это делаете.

    Почему BSD использует конкретные имена драйверов для сетевых интерфейсов?

    Сделать все просто. Если вы посмотрите на интерфейс с именем bge0 и взгляните на руководства или используете свою систему ссылок, вы быстро помните, что этот драйвер является Broadcom Gigabit Etherhet . Этот документ также полезен.

    Означает ли это, что в ядре нет слоя абстракции, описывающего «общий сетевой интерфейс», поэтому каждый драйвер будет внутренне адресован через собственный API?

    Правило здесь:

    • Используйте имя драйвера для создания имени устройства;
    • Используйте самый низкий идентификатор PCI для создания номера сразу после имени устройства;

    Не требуется слой абстракции. Так просто.

    (как) это влияет на подсистемы, такие как агрегация ссылок, формирование трафика, QoS (ALTQ), фильтрация и другие?

    Имена интерфейсов не должны мешать формированию трафика.

    Точно, это похоже на pfSense, я не могу использовать ALTQ с виртуальным интерфейсом агрегации ссылок (LAG).

    Сегодня он должен работать:

    • ALTQ + LAGG
    • ALTQ + LAGG + VLAN

    Является ли это внутренним ограничением BSD из-за отсутствия соответствующего уровня абстракции?

    Дело не в том, что для этого не существует подходящего слоя. Это связано с тем, что вы можете использовать другие ресурсы для обработки этих имен, таких как создание имен интерфейса ( /etc/rc.conf ) или изменение идентификатора pci на настройке материнской платы. И, как говорили другие по этому вопросу, даже Linux идет по этому пути с помощью biosdevname .

    Linux и Unix - лучшая ОС в мире.