Сетевой мост в Linux, он же Linux Bridge.
Например, в Debian GNU/Linux:#Бридж (англ. bridge, мост) - это способ соединения двух сегментов
Ethernet на канальном уровне, т.е. без использования протоколов более
высокого уровня, таких как IP. Пакеты передаются на основе
Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку
передача выполняется на канальном уровне (уровень 2 модели OSI), все
протоколы более высокого уровня прозрачно проходят через мост.
Термины коммутатор, мост и бридж могут использоваться на данной странице как взаимознаменяемые.
Код
bridge в Linux является частичной реализацией стандарта ANSI/IEEE
802.1d. Впервые бриджинг в Linux появился в 2.2, затем код был переписан
Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge интегрирован в
ядра серий 2.4 и 2.6.
Коммутация и фильтрация
Linux-мосты
более мощные чем простые аппаратные мосты и коммутаторы, поскольку они
могут ещё фильтровать и регулировать трафик. Комбинация коммутатора и
брандмауэра выполняется с помощью родственного проекта ebtables.
Состояние
Код обновляется как часть ядра Linux 2.4 и 2.6, доступного на kernel.org.
Возможные будущие усовершенствования:
* Описать фильтрацию STP
* Использовать Netlink interface для управление бриджами (прототип в 2.6.18)
* Добавить поддержку в user space
* Сделать поддержку RSTP и других расширений 802.1d STP
Скачивание
Поддержка
бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных дистрибутивов
Linux. Требуемый комплект утилит для администрирования bridge-utils есть
практически во всех дистрибутивах.
Инсталляция утилит выполняется стандартным для дистрибутива способом. Например, в Debian GNU/Linux:
# apt-get install bridge-utils
Как вариант можно сделать свою самую последнюю сборку кода с kernel.org и собрать утилиты bridge-utils из GIT-репозитория.
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git
$ cd bridge-utils
$ autoconf
$ ./configure
Ручная конфигурация
Сетевые карты
Перед
тем как вы приступите к настройке коммутатора, убедитесь, что сетевые
карты работают нормально. Не устанавливайте на них IP-адресов, и не
позволяйте начальным скриптам выполнять DHCP-запрос с них. IP-адреса
должны устанавливаться уже после того как бридж сконфигурирован.
Команда
ifconfig должна показывать обе (или больше, если их больше) сетевые
карты, и они должны быть выключены, т.е. находиться в состоянии DOWN.
Загрузка модуля
В
большинстве случаев код коммутатора оформляется в виде модуля. Если
модуль сконфигурирован и установлен корректно, он автоматически
загружается при первом вызове команды brctl.
Если ваши утилиты
bridge-utilities корректно установлены, и ядро и его модуль bridge в
порядке, вызовом команды brctl можно будет просмотреть маленькую сводку о
синтаксисе команды:
Создание и удаление коммутатора
# brctl
# commands:
addbr add bridge
delbr delete bridge
addif add interface to bridge
delif delete interface from bridge
setageing set ageing time
setbridgeprio set bridge priority
setfd set bridge forward delay
sethello set hello time
setmaxage set max message age
setpathcost set path cost
setportprio set port priority
show show a list of bridges
showmacs show a list of mac addrs
showstp show bridge stp info
stp turn stp on/off
Команда
brctl addbr "bridgename"
создаёт
экземпляр логического коммутатора с именем bridgename. Для того чтобы
выполнять коммутацию пакетов, нужно создать хотя бы один коммутатор .
Можно воспринимать логический бридж как контейнер интерфейсов,
принимающих участие в коммутации. Каждый экземпляр коммутатора
представлен новым сетевым интерфейсом.
Соответствующая команда для удаления коммутатора:
brctl delbr bridgename
Включение устройства в коммутатор
Команда
brctl addif bridgename device
включает
сетевое устройство device в коммутатор с именем "bridgename." Все
устройства, включенные в один бридж работают как одна большая сеть.
Нельзя добавить устройство в несколько бриджей одновременно, поскольку
это не имеет никакого смысла. Коммутатору потребуется небольшое время
после того как устройство подключено, для того чтобы узнать его
Ethernet-адрес, а затем он начинает делать перенаправление (forward).
Соответствующая команда для выключения устройства из коммутатора:
brctl delif bridgename device
Просмотр устройств
Команда brctl show показывает состояние всех работающих коммутаторов:
# brctl addbr br549
# brctl addif br549 eth0
# brctl addif br549 eth1
# brctl show
bridge name bridge id STP enabled interfaces
br549 8000.00004c9f0bd2 no eth0
eth1
Если
выполнить команду brctl showmacs, будет показана информация о сетевых
адресах источников трафика, прошедшего через коммутатор (и самого
коммутатора тоже):
# brctl showmacs br549
port no mac addr is local? ageing timer
1 00:00:4c:9f:0b:ae no 17.84
1 00:00:4c:9f:0b:d2 yes 0.00
2 00:00:4c:9f:0b:d3 yes 0.00
1 00:02:55:1a:35:09 no 53.84
1 00:02:55:1a:82:87 no 11.53
...
Время
жизни (aging time) - это количество секунд, которое MAC-адрес будет
находится в таблице forwarding database после получения пакета с этим
адресом. Записи в таблице периодически удаляются по тайм-ауту, для того
чтобы не получилось, что они будут находиться там вечно. В нормальной
ситуации, не понадобится менять данные параметры, но это сделать можно
(время указывается в секундах)
# brctl setageing bridgename time
Если установить время в ноль, запись становится постоянной.
Spanning Tree Protocol
Если
используется несколько коммутаторов, для того чтобы избежать петель
коммутации, нужно включить поддержку протокола Spanning Tree Protocol
(Протокол остовного дерева).
# brctl stp br549 on
Посмотреть параметры STP можно так:
# brctl showstp br549
br549
bridge id 8000.00004c9f0bd2
designated root 0000.000480295a00
root port 1 path cost 104
max age 20.00 bridge max age 200.00
hello time 2.00 bridge hello time 20.00
forward delay 150.00 bridge forward delay 15.00
ageing time 300.00 gc interval 0.00
hello timer 0.00 tcn timer 0.00
topology change timer 0.00 gc timer 0.33
flags
eth0 (1)
port id 8001 state forwarding
designated root 0000.000480295a00 path cost 100
designated bridge 001e.00048026b901 message age timer 17.84
designated port 80c1 forward delay timer 0.00
designated cost 4 hold timer 0.00
flags
eth1 (2)
port id 8002 state disabled
designated root 8000.00004c9f0bd2 path cost 100
designated bridge 8000.00004c9f0bd2 message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
Настройка STP
Конфигурироваться
может несколько параметров, имеющих отношение к Spanning Tree Protocol.
Код автоматически определяет скорость соединения и другие параметры,
поэтому, как правило, вручную их менять не нужно.
Приоритет коммутатора
У
каждого коммутатора есть относительный приоритет (priority) и стоимость
(cost). Каждый интерфейс коммутатора ассоциируется с номером порта в
коде STP. У каждого есть приоритет и стоимость, на основе которых
принимается решение о том, какой путь для передчи пакета является
кратчайшим. Всегда используется путь с наимеьшей стоимостью (за
исключением случая, когда этот путь разорван). Если у вас несколько
коммутаторов и интерфейсов, может понадобиться отрегулировать
приоритеты, чтобы достичь максимальной производительности.
# brctl setbridgeprio bridgename priority
Бридж
с наименьшим приоритетом избирается как корневой. Корневой бридж
является центром остовного дерева (spanning tree) коммутационных связей.
Приоритет и стоимость
У
каждого интерфейса моста может быть своя собственная скорость, и её
значение используется при выборе какое соединение должно использоваться.
У более быстрых интерфейсов должна быть более низкая стоимость.
# brctl setpathcost bridge port cost
Для разных портов, имеющих одинаковую стоимость существует ещё приоритет.
Задержка передачи (Forwarding delay)
Задержка
передачи (forwarding delay) это время в течение которого порт находится
в состояниях Listening и Learning, прежде чем перейти в состояние
Forwarding. Это время нужно для того чтобы мост, когда он включается в
сеть, сначала должен ознакомиться с трафиком, прежде чем включаться в
работу.
# brctl setfd bridgename time
Время Hello
Время
от времени корневой мост (Root Bridge) и выделенные мосты (Designated
Bridges) отправляют пакет hello. Пакеты hello нужны для обмена
информацией о топологии все коммутироемой локальной сети.
# brctl sethello bridgename time
max age - таймаут hello
Если
другой коммутатор в дереве spanning tree не отправляет пакет hello в
течение долгого времени, считается, что он не в порядке (dead). Таймаут
устанавливается командой:
# brctl maxage bridgename time
Пример настройки
Базовая настройка моста выполняется так:
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr mybridge
# brctl addif mybridge eth0
# brctl addif mybridge eth1
# ifconfig mybridge up
Хост
настраивается как обычный мост. У него самого нет IP-адреса, поэтому к
нему нельзя получить доступ (или взломать) удалённо по TCP/IP.
Опционально можно настроить виртуальный интерфейс mybridge на доступ по
локальной сети. Он будет работать как обычный интерфейс - как сетевая
карта. Процесс настройки полностью совпадает с вышеописанным, за тем
исключением, что нужно заменить последнюю команду на такую:
# ifconfig mybridge 192.168.100.5 netmask 255.255.255.0
Если вы хотите чтобы мост автоматически получал IP-адрес у ADSL-модема по DHCP (или в другой похожей ситуации), сделайте так:
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr mybridge
# brctl addif mybridge eth0
# brctl addif mybridge eth1
# dhclient mybridge
Если
делать это много раз, процессов dhclient может расплодиться великое
множество. Или безжалостно убейте их, или почитайте об omshell.
Конфигурирование через /etc/net
Сначала в /etc/net настраиваются два ethernet-устройства port0 и port1:
# cat >> /etc/net/iftab
port0 mac 00:13:46:66:01:5e
port1 mac 00:13:46:66:01:5f
# mkdir /etc/net/ifaces/port0
# cat > /etc/net/ifaces/port0/opt>ions
TYPE=eth
MODULE=via-rhine
# mkdir /etc/net/ifaces/port1
# cat > /etc/net/ifaces/port1/opt>ions
TYPE=eth
MODULE=via-rhine
После этого описывается мост:
# mkdir /etc/net/ifaces/mybridge
# cat > /etc/net/ifaces/mybridge/>options
TYPE=bri
HOST='port0 port1'
# cat > /etc/net/ifaces/mybridge/>brctl
stp AUTO on
После этого можно поднять бридж командой ifup mybridge. Устройства port0 и port1 поднимутся автоматически.
А так же :
Партизанские ориентиры.часть.1. Волхушка-деревушка
запись 13. BDMC Grindcore compilation vol.1
Традиционная
культура Московского государства
Традиционализм как явление. Культура России XVI в. носила ярко выраженный традиционалистский характер. Считалось, что все происходящее в мире — это отображение божественного “первообраза”, наиболее четко запечатленного в древности. Впоследствии наступило “искажение” истины. При решении конкретных государственных вопросов в Боярской думе в расчет принимались не столько обстоятельства дела, сколько примеры из истории прошлого.
YouTube is now 25% of all Google searches
- ЖЕНСКИЙ СПОРТ В ПЕРИОД СТАНОВЛЕНИЯ СОВРЕМЕННОГО МЕЖДУНАРОДНОГО ОЛИМПИЙСКОГО ДВИЖЕНИЯ
- Чемодан, вокзал... Кишинёв!!!
- Chan Haber Ajans n Gndemi
- Полеты во сне и наяву
- Подкасты и бизнес
- спокойным отношением к нему, что н
- неко ~
- Критерии устойчивого развития: муниципальные аспекты
- Travel for Treatment - Can Georgia Play?.. in Georgian Journal
- By: Герман
- Синдром Хорнера у собак