| Код bridge в Linux является частичной реализацией стандарта ANSI/IEEE 802.1d [[http://standards.ieee.org/getieee802/ [2].]] Впервые бриджинг в Linux появился в 2.2, затем код был переписан Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge интегрирован в ядра серий 2.4 и 2.6. Содержание * 1 Коммутация и фильтрация Коммутация и фильтрация Linux-мосты более мощные чем простые аппаратные мосты и коммутаторы, Состояние Код обновляется как часть ядра Linux 2.4 и 2.6, доступного на Возможные будущие усовершенствования: Скачивание Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных Инсталляция утилит выполняется стандартным для дистрибутива способом. # apt-get install bridge-utils Исходный код последнего релиза утилит можно получить со страницы Как вариант можно сделать свою самую последнюю сборку кода с $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git Ручная конфигурация Сетевые карты Перед тем как вы приступите к настройке коммутатора, убедитесь, что Команда ifconfig должна показывать обе (или больше, если их Загрузка модуля В большинстве случаев код коммутатора оформляется в виде модуля. Если Если ваши утилиты bridge-utilities корректно установлены, и ядро и его # brctl Создание и удаление коммутатора Команда brctl addbr "bridgename" создаёт экземпляр логического коммутатора с именем bridgename. Для Соответствующая команда для выключения коммутатора: brctl delbr bridgename Включение устройства в коммутатор Команда brctl addif bridgename device включает сетевое устройство device в коммутатор с именем "bridgename." Соответствующая команда для выключения устройства из коммутатора: brctl delif bridgename device Просмотр устройств Команда brctl show показывает состояние всех работающих коммутаторов: # brctl addbr br549 Если выполнить команду brctl showmacs, будет показана информация о # brctl showmacs br549 Время жизни (aging time) - это количество секунд, которое MAC-адрес # brctl setageing bridgename time Если установить время в ноль, запись становится постоянной. Spanning Tree Protocol Если используется несколько коммутаторов, для того чтобы избежать # brctl stp br549 on Посмотреть параметры STP можно так: # brctl showstp br549 eth0 (1) eth1 (2) Настройка STP Конфигурироваться может несколько параметров, имеющих отношение к Приоритет коммутатора У каждого коммутатора есть относительный приоритет (priority) и # brctl setbridgeprio bridgename priority Бридж с наименьшим приоритетом избирается как корневой. Корневой бридж Приоритет и стоимость У каждого интерфейса моста может быть своя собственная скорость, и её # brctl setpathcost bridge port cost Для разных портов, имеющих одинаковую стоимость существует ещё Задержка передачи (Forwarding delay) Задержка передачи (forwarding delay) это время в течение которого порт # brctl setfd bridgename time Время Hello Время от времени корневой мост (Root Bridge) и выделенные мосты # brctl sethello bridgename time max age - таймаут hello Если другой коммутатор в дереве spanning tree не отправляет пакет # brctl maxage bridgename time Пример настройки Базовая настройка моста выполняется так: # ifconfig eth0 0.0.0.0 Хост настраивается как обычный мост. У него самого нет IP-адреса, Опционально можно настроить виртуальный интерфейс mybridge на доступ # ifconfig mybridge 192.168.100.5 netmask 255.255.255.0 Если вы хотите чтобы мост автоматически получал IP-адрес у ADSL-модема # ifconfig eth0 0.0.0.0 Если делать это много раз, процессов dhclient может расплодиться Конфигурирование через /etc/net Сначала в /etc/net настраиваются два ethernet-устройства port0 и # cat >> /etc/net/iftab После этого описывается мост: # mkdir /etc/net/ifaces/mybridge После этого можно поднять бридж командой ifup mybridge. Устройства FAQ > Что делает мост/коммутатор? Мост прозрачно пересылает трафик между несколькими сетевыми > Это как-то зависит от используемых протоколов? Нет. Коммутатор ничего не знает о протоколах высокого уровня, он > Чем этот код лучше чем аппаратный коммутатор? Пожалуйста, имейте в виду, что этот код не писался с целью заменить Основная сила кода моста Linux это его гибкость. И так есть уже Одним из главных преимуществ решения, базирующегося на Linux, в > Чем этот код хуже чем аппаратный коммутатор? Для того чтобы работать в качестве моста, устройство должно быть > Какова производительность моста? Производительность ограничивается используеммыми сетевыми картами и > Моего моста не видно в трассе traceroute'а! И не должно быть видно. Работа моста является полностью прозрачной для Дополнительная информация об этом в книгах по сетям TCP/IP. > Ничего не работает! Когда я пытаюсь добавить мост, система говорит: "br_add_bridge: bad Или ваше ядро слишком старое (2.2 или более ранее), или вы забыли > Работает ли бриджинг на ядре 2.2? Изначально разработка велась на 2.2, есть патчи для этого ядра. Но > Есть ли в планах поддержка RSTP (802.1w)? Да. Ведётся работа по включению поддержки RSTP в будущий релиз для > Что можно соединять с помощью моста? Мосты Linux очень гибкие; можно соединять как традиционные Ограничения, которые накладываются на соединяемые устройства: * У всех должен быть одинаковый максимальный размер пакета (MTU). * Устройства должны выглядеть как Ethernet, т.е. у них должны быть * Должен поддерживаться неразборчивый (promiscuous) режим. Мост * Должен быть разрешён спуфинг адресов. У моста должна быть > Можно ли выполнять коммутацию в сочетании с netfilter/iptables? Да. Соответствующий код включен в большинство ядер. Смотрите проект > Работает ли он с Token Ring, FDDI и Firewire? Нет. У этих протоколов отличается адресация и размер кадра. > Я продолжаю получать сообщение retransmitting tcn bpdu! Это означает, что ваш Linux-мост ретранслирует сообщение Topology В каждой коммутируемой сети есть один "главный коммутатор", который Когда топология коммутируемой сети меняется (например, кто-то выдернул После того как коммутатор отправляет сообщение об изменении топологии, Список вещей, которые можно сделать: * Найти какой коммутатор является корневым, где он находится и под * Заставить Linux-мост быть корневым. Найдите какой приоритет у * Вообще отключите STP на Linux-мосте. Только смотрите чтобы не > Оно не работает с моей обычной ethernet-карточкой! К сожалению, у некоторых сетевых карт глючные драйверы, которые сбоят Пожалуйста, сообщайте обо всех проблемах в список рассылки "Bridge > Оно не работает с моей wireless-карточкой! Это известная проблема, и она не связана с кодом моста. Большое Удалось ли кому-нибудь обойти проблему связанную с тем, что Wavelan не (Отвечает Michael Renzmann, mrenzmann at compulan.de) 99% пользователей никогда не смогут избавиться от этой проблемы. Для Если вам срочно нужна wireless-карта которая может работать в мосте, > И всё же я не понимаю!! Полноценный мост для беспроводных сетей (802.11) требует поддержки Можно сделать ограниченную функциональность с некоторыми драйверами. Есть способы добиться чтобы оно заработало, но они достаточно > Я получаю ошибку 'too much work in interrupt' Это связано с тем, что сетевая карта теряет пакеты. Можно попробовать Если драйвер не поддерживает NAPI, можно попробовать увеличить объём > Работает ли DHCP через/поверх моста? Мост передаёт DHCP-трафик (широковещательный) и ответы на него. Также Одна из распространённых ошибок при использовании DHCP является Если мост используется в одиночку (т.е. поблизости нет мостов) можно # brctl setfd br0 0 Контактная информация В настоящий момент код сопровождается Стефаном Хеммингером (Stephen | |
| Категория: Интересные статьи | Просмотров: 384 | |
Главная » Сетевые мосты в Linux (bridge ethernet linux kernel stp rstp etcnet)