Я замечаю, что в зависимости от марки сетевой карты имена интерфейсов различаются (я полагаю, это зависит от драйвера).
- Почему * BSD использует специфичные для драйвера имена для сетевых интерфейсов?
- Означает ли это, что в ядре нет уровня абстракции, описывающего «универсальный сетевой интерфейс», поэтому каждый драйвер будет внутренне адресован через собственный API?
- (как) это влияет на подсистемы, такие как агрегация каналов, формирование трафика, QoS ( ALTQ ), фильтрация и другие?
Точно так же, как в pfSense, я не могу использовать ALTQ с виртуальным интерфейсом агрегации каналов (LAG).
Является ли это внутренним ограничением BSD из-за отсутствия соответствующего уровня абстракции?
eth0
черезethINFINITY
. Вы больше не сможете просто печататьifconfig eth0
и ожидать, что вы будете смотреть на первый интерфейс Ethernet, который делает такие системы Linux функционально похожими с точки зрения пользовательского интерфейса на FreeBSD, где вам нужно либо априори знать имена интерфейсы в системе, или вам нужно сначала получить список с неквалифицированнойifconfig
командой. Основные механизмы ядра, конечно, совершенно разные.Выбор использования общих или специфичных для драйвера имен не имеет никакого отношения к каким-либо ограничениям драйвера.
Это в основном косметический выбор. Использование общих имен имеет то преимущество, что скрывает информацию, которая почти всегда не имеет значения - сетевой интерфейс - это сетевой интерфейс, независимо от того, кто его создал. Возможности устройства зависят от конкретной модели и его конфигурации, а не от того, какой драйвер используется. Преимущество определенных имен для администратора: если в сообщении об ошибке упоминается
eth0
(хорошо, так что 0, а 1 - 1), оно менее информативно, чем если быwlan0
(ах, это интерфейс wifi) илиbcm0
(ах, это интерфейс Broadcom).В FreeBSD операции настройки сети работают, вызывая
ioctl
сокет Unix. Этот ioctl обрабатывается общим сетевым кодом и передается соответствующему драйверу, если ioctl требует этого.Я не знаю, как ALTQ взаимодействует с агрегацией ссылок. Убедитесь, что вы используете последнюю версию FreeBSD, так как раньше она не работала, но теперь работает .
источник
Это позволяет определить, с какой сетевой картой вы разговариваете.
Если у вас есть процессор Intel (igb0) и Realtek (rl0), теперь вы можете сразу отличить их.
Также разные драйверы поддерживают разные функции. Некоторые драйверы поддерживают,
polling
а некоторые нет. Некоторая поддержкаLRO
,TSO
иRSS
т.д. легче отслеживать , какие поддержки , которые , когда они не являются всего лишь по имениeth
.eth
может иметь смысл, если у вас есть много других типов сетевых интерфейсов, но вы делаете это редко.источник
Чтобы все было просто. Если вы посмотрите на названный интерфейс
bge0
и взгляните на руководства или используете вашу мнемоническую систему связи, вы быстро вспомните, что этот драйвер является Broadcom Gigabit Etherhet . Этот документ также полезен.Правило здесь:
Слой абстракции не требуется. Так просто.
Имена интерфейсов не должны мешать формированию трафика.
Сегодня должно работать:
Это не значит, что для этого нет подходящего слоя. Это потому, что вы можете использовать другие ресурсы для обработки этих имен, такие как создание имен интерфейсов (
/etc/rc.conf
) или изменение его идентификатора pci в настройках материнской платы. И, как говорили другие по этому вопросу, даже Linux идет по этому путиbiosdevname
.источник