brctl означает Bridge Control.
В Linux эта команда используется для создания и управления мостом Ethernet.
Обычно это используется, когда на ваших серверах имеется несколько сетей ethernet, и вы хотите их объединить и представить как одну логическую сеть.
Например, если у вас есть eth0 и eth1, вы можете объединить их и представить их как просто br0, которые будут использовать как eth0, так и eth1 для сетевого трафика.
В этой статье мы рассмотрим следующее:
- Создание нового моста Ethernet с помощью addbr
- Показать доступный мост Ethernet с использованием show
- Удалить существующий мост Ethernet с помощью delbr
- Добавить интерфейс к существующему мосту
- Добавление нескольких интерфейсов к существующему мосту
- Отслеживание MAC-адреса моста
- Установите время старения для Mac-адреса на мосту
- Настройка связующего дерева на мосту Ethernet
- Отображение значений параметра STP для моста
- Изменить значения параметров моста
1. Создайте новый мост Ethernet с помощью addbr
Используя brctl addbr, мы можем создать новый мост Ethernet.
В следующем примере мы создали три сетевых моста на этом сервере: dev, stage и prod.
brctl addbr dev brctl addbr stage brctl addbr prod
Обратите внимание, что на данном этапе это всего лишь пустой мост Ethernet, на котором нет другой сети Ethernet.
2. Показать доступный мост Ethernet с использованием show
Используя brctl show, мы можем просмотреть все доступные сетевые мосты на вашем сервере.
В следующем примере будут отображаться все текущие экземпляры трех мостов, которые мы только что создали.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no stage 8000.000000000000 no
Если вы заметите, что последний столбец «interfaces» не имеет значений. Это означает, что ни один из этих мостов в настоящее время не имеет связанного с ним Ethernet-устройства.
3. Удалите существующий мост Ethernet с помощью delbr
Используя brctl delbr, мы можем удалить существующий мост ethernet.
В следующем примере удаляется экземпляр «stage» моста ethernet.
brctl delbr stage
Как вы видите из команды show, мы больше не видим «stage» моста ethernet.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
Обратите внимание, что когда мост активен (т.е. поднят), его можно удалить. Сначала нужно снести мост, а затем удалить его.
Также обратите внимание, что ранее команда brctl называлась brcfg.
4. Добавьте интерфейс к существующему мосту
Используя brctl addif, мы можем добавить интерфейс к существующему мосту Ethernet.
Следующий пример добавит сеть ethernet eth0 к мосту «dev», который мы только что создали.
Предупреждение. Не пытайтесь использовать это на каких-либо критичных машинах, так как вы можете потерять сетевое соединение с этой машиной, когда что-то пойдет не так. Попробуйте это только в тестовом экземпляре, где у вас есть доступ к консоли.
brctl addif dev eth0
В приведенном выше:
- Это действительно сделает eth0 как порт моста «dev».
- Таким образом, все пакеты, которые поступают на eth0, будут обрабатываться так, как будто они действительно прибывают на мост.
- Кроме того, когда пакеты отправляются на мост «dev», он будет использовать eth0. Когда несколько интерфейсов являются частью моста «dev», eth0 будет потенциальным кандидатом для отправки исходящих кадров с моста.
После добавления моста eth0 к «dev» команда brctl show отобразит следующее.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 prod 8000.000000000000 no
Как видно из приведенного выше вывода, последний столбец «interfaces» имеет значение eth0 для моста «dev».
Примечание. Если что-то пойдет не так, добавив eth0 на мост «dev», выполните следующую команду с консоли, чтобы удалить мост dev.
# brctl delbr dev
Обратите внимание, что если вы попытаетесь добавить интерфейс loopback к мосту, вы получите следующую команду недопустимого аргумента.
# brctl addif dev lo can’t add lo to bridge dev: Invalid argument
Как вы можете себе представить, вы не можете добавить интерфейс, который не существует в системе для моста.
# brctl addif dev eth2 interface eth2 does not exist!
5. Добавьте несколько интерфейсов в существующий мост.
В приведенном выше примере мы добавили к мосту только одно Ethernet-устройство (eth0).
Но вся идея использования моста заключается в добавлении дополнительных интерфейсов к мосту.
В следующем примере мы добавляем как eth0, так и eth1 к мосту «dev».
# brctl addif dev eth0 eth1
Как видно из следующего вывода, для dev-моста мы видим две строки. В последнем столбце «interfaces» мы видим как eth0, так и eth1 для «dev» ethernet-моста.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 eth1 prod 8000.000000000000 no
В принципе, одна сеть может быть частью только одного моста. Если нет, мы получим следующее сообщение об ошибке при попытке добавить его на другой мост.
# brctl addif prod eth1 device eth1 is already a member of a bridge; can't enslave it to bridge prod
6. Отслеживание MAC-адреса моста
Используя brctl showmacs, мы можем видеть все MAC-адреса моста.
В следующем примере, на данный момент, следующие два адреса mac, которые подключены к мосту ethernet «prod». Эти данные будут меняться в зависимости от текущего состояния того, что связано с мостом.
# brctl showmacs prod port no mac addr is local? ageing timer 1 00:50:56:89:54:bc yes 0.00 2 00:60:50:46:bc:40 no 0.00
7. Установите время старения для Mac-адреса на мосту
В следующем примере мы устанавливаем время старения адреса mac на 120 секунд на модеме «dev».
brctl setaging dev 120
В приведенном выше:
- dev – это имя моста, где мы устанавливаем это значение
- 120 секунд
- Итак, если пакет не отображается для моста «dev» за 120 секунд, тогда мост «dev» удалит адрес mac из базы данных пересылки.
8. Установка связующего дерева на мосте Ethernet
Используя brctl stp, мы можем установить связующее дерево на мосте Ethernet.
Но по умолчанию, spanning tree не включен, когда мы создаем мост.
Spanning tree полезно, когда у вас несколько мостов в вашей сети, и все они могут сотрудничать, чтобы найти кратчайший путь между двумя ethernets.
В следующем примере мы включаем связующее дерево на ethernet-мосте «dev».
Мы можем использовать on или yes для включения spanning tree. Таким образом, обе следующие команды будут делать то же самое.
brctl stp dev on brctl stp dev yes
Как видно из следующего вывода на экране, значения в столбце «STP enabled» для моста «dev» теперь «yes».
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 yes prod 8000.000000000000 no
Чтобы отключить связующее дерево на мосту Ethernet, выполните следующие действия:
# brctl stp dev off # brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
9. Отображение значений параметра STP для моста
STP обозначает протокол Spanning Tree.
После того, как вы включили stp на вашем мосту, вы можете использовать showstp, как показано ниже, для просмотра всех значений параметра stp вашего моста.
Ниже будет показан параметр stp и его текущее значение для моста «dev».
# brctl showstp dev dev bridge id 000a.000000000000 designated root 000a.000000000000 root port 0 path cost 0 max age 19.99 bridge max age 19.99 hello time 1.99 bridge hello time 1.99 forward delay 14.99 bridge forward delay 14.99 ageing time 299.95 hello timer 0.00 tcn timer 0.00 topology change timer 0.00 gc timer 0.00 hash elasticity 4 hash max 512 mc last member count 2 mc init query count 2 mc router 1 mc snooping 1 mc last member timer 0.99 mc membership timer 259.96 mc querier timer 254.96 mc query interval 124.98 mc response interval 9.99 mc init query interval 31.24 flags
10. Изменение значения параметров моста
Значения по умолчанию для параметра spanning tree для конкретного моста могут быть изменены. Вы также можете изменить другие значения параметров созданного моста.
Все следующие команды набора, упомянутые в таблице ниже, начинаются с brctl. Например:
brctl setageing dev 100
В следующей таблице показаны доступные команды набора для brctl. Значение времени находится в секундах.
команда brctl | Описание |
---|---|
setageing bridge time | Установите время старения |
setbridgeprio bridge prio | Установите приоритет моста (от 0 до 65535) |
setfd bridge time | Установить задержку перемычки моста |
sethello bridge time | Установить время приветствия |
setmaxage bridge time | Установить максимальный возраст сообщения |
setgcint bridge time | Установите интервал сбора мусора в секундах |
sethashel bridge int | Установить эластичность hash |
sethashmax bridge int | Установить максимальный hash |
setmclmc bridge int | Устанавливать счетчик последнего члена многоадресной рассылки |
setmcrouter bridge int | Установка многоадресного маршрутизатора |
setmcsnoop bridge int | Настройка многоадресного отслеживания |
setmcsqc bridge int | Задайте количество запросов на запуск многоадресной рассылки |
setmclmi bridge time | Устанавливать интервал последнего члена многоадресной рассылки |
setmcmi bridge time | Установите интервал членства в многоадресном |
setmcqpi bridge time | Установите интервал многоадресного запроса |
setmcqi bridge time | Установка интервала межсетевого запроса |
setmcqri bridge time | Задать интервал ответа многоадресного запроса |
setmcqri bridge time | Задать интервал запроса многоадресной загрузки |
setpathcost bridge port cost | Установить стоимость пути |
setportprio bridge port prio | Установите приоритет порта (от 0 до 255) |
setportmcrouter bridge port int | Установить многоадресный маршрутизатор портов |
sethashel bridge int | Установить значение эластичности хэша |