Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4 (FAQ).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
406.02 Кб
Скачать

6.2.2.1. Изменение настроек физического уровня

В общем случае, для конфигурирования физических параметров интерфейса надо предварительно изучить справку по соответствующему драйверу. Мы приведём примеры на основе драйвера к распространённому чипсету RealTek. (См. man rl.) Для этого драйвера можно изменять скорость передачи данных (10 или 100 Mbps) и режим передачи (half-duplex — одновременная передача пакетов в обе стороны не поддерживается; или full-duplex — поддерживается одновременная передача пакетов в обе стороны).

$ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet autoselect (100baseTX <full-duplex>)

status: active

Переведём интерфейс вручную на скорость 10 мегабит в секунду (Mbps):

# ifconfig rl0 media 10baseT/UTP

$ ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet 10baseT/UTP

status: active

Здесь в командной строке опция media принадлежит команде ifconfig(8), а значение 10baseT/UTP взято из справки по драйверу rl.

Теперь мы можем вручную выставить обратно 100baseTX, командой ifconfig rl0 media 100baseTX, а можем включить назад автоопределение.

# ifconfig rl0 media autoselect

$ ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet autoselect (none)

status: no carrier

$ ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet autoselect (100baseTX <full-duplex>)

status: active

Обратите внимание: после включения автоопределения некоторое время интерфейс был недоступен. При этом флаг UP был установлен, т.е. приложения имели право его использовать, но интерфейс вёл себя так, как буд-то из него вынули провод: status: no carrier. Что неудивитеьно, пока интерфейс не знает на какой скорости вести передачу, о какой несущей может идти речь?

Наконец, переключение дуплекса, здесь нас ждёт некоторая недокументированная неожиданность:

# ifconfig rl0 media 100baseTX

$ ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet 100baseTX

status: active

В настоящий момент наш интерфейс пребывает в режиме half-duplex, потому что это режим по умолчанию. Соответственно никакой опции для его включения нет, и при попытке задать её получится ошибка, с некоторой совершенно дикой диагностикой:

# ifconfig rl0 mediaopt half-duplex

ifconfig: SIOCSIFMEDIA (mediaopt): Device not configured

Что поделаешь, и на солнце есть пятна. Итак, в настоящий момент наш интерфейс пребывает в режиме half-duplex, а для перевода его в full-duplex, мы можем употребить следующую команду:

# ifconfig rl0 mediaopt full-duplex

$ ifconfig rl0

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::250:22ff:feb0:7f39%rl0 prefixlen 64 scopeid 0x1

inet 192.168.25.158 netmask 0xffffff00 broadcast 192.168.25.255

ether 00:50:22:b0:7f:39

media: Ethernet 100baseTX <full-duplex>

status: active

Сравните это с первым скриншотом:

...

media: Ethernet autoselect (100baseTX <full-duplex>)

...

Как видно, выставлено всё тоже самое, только отсутствует автоопределение. Если мы не добиваемся какого-то специального эффекта, то лучше оставить автоопределение. Из моего личного опыта: однажды мне пришлось вручную понижать скорость работы интерфейсов, которые были соединены некачественным проводом. Сопротивление в медном проводе было вдвое выше нормы. Интерфейсы договаривались о передаче данных на скорости 100Mbps в режиме full-duplex, но реально вести передачу на такой скорости не могли и их пришлось вручную «тормозить».