Управление Ethernet в FreeBSD

Мне нужен метод для выполнения следующей задачи, предположим, что у меня есть компьютер с k (k — это большое) число интерфейсов Ethernet. Я хочу иметь метод для определения того, какой идентификатор (em0) назначен какому физическому интерфейсу.

Единственный «простой» способ, который я придумал, — это мигать светодиодом на физическом интерфейсе.

Например

etherblink em0

Будет мигать ссылка или индикатор активности на физическом интерфейсе Ethernet, который назначен em0.

Я знаю, что в Linux есть ethertool, но он не работает с FreeBSD. Во FreeBSD также есть драйвер светодиодов, но он поддерживает только ограниченное количество модулей Ethernet.

Есть идеи? Я думал о привязке сокета к интерфейсу и записи в сокет, но это не сработало.

С или Перл


person Bill    schedule 29.12.2011    source источник
comment
Да, вы можете, и я смущен, я не могу вспомнить, как. Вы спрашивали на форуме FreeBSD? forums.freebsd.org   -  person Rob    schedule 29.12.2011
comment
Да, я сделал, время ждать, чтобы увидеть, смогу ли я получить рабочий ответ/решение.   -  person Bill    schedule 30.12.2011


Ответы (3)


Я этого не делал, но, согласно справочнику FreeBSD, можно привязать определенный узел драйвера к определенному аппаратному IRQ, используя подсказки конфигурации ядра. См. device.hints(5) и FreeBSD. настройки сети, чтобы узнать, как найти IRQ каждого устройства Ethernet.

person user1104456    schedule 29.12.2011
comment
Я обязательно займусь этим, когда у меня будет больше свободного времени. - person Bill; 11.01.2012

Предположим, что речь идет об интерфейсе fxp0... запустите его как root

use strict; 
my $intf = "fxp0";
while (1) { 
    foreach my $state (qw/up down/) {
        system("ifconfig $intf $state\n");
        sleep 3;
    }
}

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

person This    schedule 29.12.2011
comment
Спасибо за ответ, однако это не помогло мне в том, что я делал, светодиод не горел. - person Bill; 11.01.2012
comment
Я впервые слышу об интерфейсе Ethernet, который не подключался, когда вы его включали... вы пробовали более длинную частоту (скажем, 10 секунд?) - person This; 11.01.2012
comment
У меня не было подключенного кабеля, это был SBC от Sokeris engineering. - person Bill; 06.02.2012
comment
@bill, если ты подключишь кабели ко всем портам Ethernet на сервере, это сработает. - person This; 07.02.2012

К сожалению, я не нашел общего решения этой проблемы, однако из моих исследований (путем чтения журнала изменений FreeBSD 8.2 и форумов) кажется, что:

"some cards blink the LEDs on access, so pings could make a repeated pattern. 
The LEDs might even go off if the card is downed with ifconfig(8)." 

В частности, интерфейсы em и igb, как указано:

"The em(4) and igb(4) drivers now support the led(4) interface via /dev/led/emN and 
/dev/led/igbN for identification LED control. The following command line makes the 
LED blink on em0:[r211241]" (FreeBSD 8.2 Release changelog)

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

person Bill    schedule 10.01.2012