LAG vs LACP: в чем разница?
LAG (link aggregation group) относится к исходной технологии для реализации объединения каналов и балансировки нагрузки без участия какого-либо протокола. Он также называется ручным режимом из-за его рабочего процесса — пользователям необходимо вручную создать порт-канал и добавить интерфейсы-элементы к этому порту-каналу.
После того, как каналы агрегации установлены, все эти ссылки становятся активными ссылками для пересылки пакетов данных. Если одна активная ссылка не работает, остальные оставшиеся активные ссылки будут балансировать нагрузку на трафик. Однако этот режим может обнаруживать только разъединения входящих в него каналов, но не может обнаруживать другие сбои, такие как сбои канального уровня и неправильные соединения каналов.
LACP — это протокол для автоматической настройки и поддержки LAG. В режиме LACP порт-канал создается на основе LACP. LACP предоставляет стандартный механизм согласования для коммутационного устройства, так что коммутационное устройство может автоматически формировать и запускать агрегированный канал в соответствии с его конфигурацией. После того, как агрегированный канал сформирован, LACP отвечает за поддержание статуса канала.
Когда условие агрегирования ссылок изменяется, LACP корректирует или удаляет агрегированный канал. Если одна активная ссылка выходит из строя, система выбирает ссылку среди резервных ссылок в качестве активной ссылки. Таким образом, количество ссылок, участвующих в пересылке данных, остается неизменным. Кроме того, этот режим не только обнаруживает разъединения своих звеньев, но и другие сбои, такие как сбои канального уровня и неправильные соединения каналов.
[править] С версии 7.3 и ~8.1
Вариант 1
В rc.conf
ifconfig_em1="up" vlans_em1="10 20" ifconfig_em1_10="inet 192.168.10.1/24" ifconfig_em1_20="inet 192.168.20.1/24"
ifconfig берет данные из rc.conf
# ifconfig em1.10 create
создаст интерфейс с нужными настройками
# ifconfig em1.10 em1.10: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=3<RXCSUM,TXCSUM> ether 08:00:27:f1:9f:1e inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255 media: Ethernet autoselect (1000baseTX <full-duplex>) status: active vlan: 10 parent interface: em1
# ifconfig em1.10 destroy
соответственно удалит интерфейс
Вариант 2
В rc.conf
ifconfig_em1="up" vlans_em1="vlan1 vlan2" create_args_vlan1="vlan 10" create_args_vlan2="vlan 20" ifconfig_vlan1="inet 192.168.10.1/24" ifconfig_vlan2="inet 192.168.20.1/24"
ifconfig берет данные из rc.conf
# ifconfig vlan1 create
создаст интерфейс с нужными настройками
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=3<RXCSUM,TXCSUM> ether 08:00:27:f1:9f:1e inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255 media: Ethernet autoselect (1000baseTX <full-duplex>) status: active vlan: 10 parent interface: em1
# ifconfig vlan1 destroy
соответственно удалит интерфейс
Вариант 3
В rc.conf
ifconfig_em1="inet 192.168.0.0 netmask 255.255.255.0" cloned_interfaces="vlan1 vlan2" ifconfig_vlan1="inet 192.168.10.1/24 vlan 10 vlandev em1" ifconfig_vlan2="inet 192.168.20.1/24 vlan 20 vlandev em1"
Примечания к вариантам
Оба варианта задания vlan-ов в rc.conf можно смешивать, см. /etc/defaults/rc.conf
Второй вариант, обычно используется если нужно указывать vlan-ы в конфигурации MPD(Multi-link PPP daemon for FreeBSD), т.к. в подсистеме netgraph для именования нод нельзя использовать символ «точки», узлы интефейсов создаются без имени, а в конфигурации mpd прописывается именно NG-нода, которую ему следует использовать, а не интерфейс.
Что такое LAG и как это работает?
LAG (Link Aggregation Group) — это реальный метод или пример для агрегации каналов. Группа агрегации каналов формируется, когда мы подключаем несколько портов параллельно между двумя коммутаторами и настраиваем их как LAG. LAG создает несколько каналов между двумя коммутаторами, что увеличивает пропускную способность.
Кроме того, он обеспечивает резервирование на уровне канала при отказе сети и балансировке нагрузки трафика. Даже если одна связь выйдет из строя, остальные связи между двумя коммутаторами все равно будут работать. Они также принимают на себя тот трафик, который должен проходить через вышедшего из строя, поэтому пакет данных не будет потерян.
7.1. Общие сведения об агрегации портов
Агрегирование портов — это процесс объединения нескольких портов с одинаковой конфигурацией и для использования их логически в качестве одного физического порта (Port-Channel), что позволяет суммировать полосу пропускания в одном логическом линке и использовать резервирование. Для агрегации портов на коммутаторах SNR используется Port-Group, который должен быть создан и добавлен на порты для работы их как часть одного Port-Channel.Для создания и корректной работы порты-члены интерфейса Port-Channel должны работать в дуплексном режиме (full-duplex) и иметь одинаковую конфигурацию.После объединения физические порты могут конфигурироваться одновременно как один логический интерфейс Port-channel. Система автоматически установит порт с наименьшим номером в качестве Master port. Если на коммутаторе включен функционал spanning tree protocol(STP),то STP будет рассматривать Port-Channel как логический порт и отправлять кадры BPDU через Master port.
Коммутатор позволяет объединять физические порты любых двух коммутаторов, существует ограничение на максимальное число групп — 14, и максимальное число портов в каждой группе — 8.
7.1.1. Статическое агрегирование
Статическое агрегирование производится путем ручного конфигурирования пользователем и не требует использования протокола LACP. При конфигурировании статического агрегирования используется режим “on” для добавления порта в Port-Group.
7.1.2. Динамическое агрегирование LACP
LACP (Link Aggregation Control Protocol) — протокол агрегирования каналов, описанный в стандарте IEEE 802.3ad. LACP использует LACPDU сообщения для обмена информацией с соседней стороной.После включения LACP порт посылает LACPDU, уведомляя ответную сторону о приоритете и MAC адресе системы, приоритете и адресе порта и ключе операции. Когда ответный порт получает эту информацию, он сравнивает её с информацией о своих портах, настроенных на агрегацию. Таким образом обе стороны достигают соглашения о включении или исключении порта из динамической группы агрегации.В динамической группе агрегации порты имеют 2 статуса — выбранный (selected) и в ожидании (standby). Порты могут посылать и принимать LACPDU находясь в любом статусе, но в статусе standby порт не может передавать данные.Поскольку существует ограничение на количество портов в группе, если текущее число членов агрегации превышает это ограничение, коммутатор согласовывает статус порта с другой стороной на основании port ID. Согласование происходит следующим образом:
-
Сравнение ID устройств (приоритет системы + MAC адресе системы). Если приоритет устройств одинаков — сравниваются MAC адреса устройств. Наименьший номер будет иметь наивысший приоритет;
-
Сравнение ID портов (приоритет порта + идентификатор порта). Для каждого порта на стороне устройства с наивысшим приоритетом системы сравниваются приоритеты портов. Если приоритеты одинаковые — сравниваются ID портов. Порт с наименьшим идентификатором порта становится выбранным (selected), а остальные — в режим ожидания (standby).
-
В данной Port-Group порт с наименьшим идентификатором и статусом standby становится мастер-портом. Другие порты со статусом selected становятся членами группы.
7.3. Пример конфигурации агрегации портов
Сценарий 1: LACP
Рисунок 11.1 — LACP
Коммутаторы Switch A и Switch B соединены между собой с помощью 4х линий: порты 1/0/1-1/0/4 коммутатора Switch A добавлены в port-group 1 в режиме active, порты 1/0/7-1/0/10 коммутатора Switch B добавлены в port-group 2 в режиме passive. В результате конфигурации и согласований LACP порты 1/0/1-1/0/4 коммутатора Switch A будут объединены в интерфейс “Port-Channel1”, а порты 1/0/7-1/0/10 коммутатора Switch B будут объединены в интерфейс “Port-Channel2”.
Конфигурация будет выглядеть следующим образом:
SwitchA#config SwitchA(config)#interface ethernet 1/0/1-4 SwitchA(Config-If-Port-Range)#port-group 1 mode active SwitchA(Config-If-Port-Range)#exit SwitchA(config)#interface port-channel 1 SwitchA(Config-If-Port-Channel1)#SwitchB#config SwitchB(config)#port-group 2 SwitchB(config)#interface ethernet 1/0/7-10 SwitchB(Config-If-Port-Range)#port-group 2 mode passive SwitchB(Config-If-Port-Range)#exit SwitchB(config)#interface port-channel 2 SwitchB(Config-If-Port-Channel2)#
Сценарий 2: Ручное агрегирование портов
Рисунок 11.2 — Ручное агрегирование портов
Коммутаторы Switch A и Switch B соединены между собой с помощью 4х линий: порты 1/0/1-1/0/4 коммутатора Switch A добавлены в port-group 1 в режиме on, порты 1/0/7-1/0/10 коммутатора Switch B добавлены в port-group 2 в режиме on.
SwitchA#config SwitchA(config)#interface ethernet 1/0/1-4 SwitchA(Config-If-Port-Range)#port-group 1 mode on SwitchA(Config-If-Port-Range)#exit SwitchA(config)#interface port-channel 1 SwitchA(Config-If-Port-Channel1)#SwitchB#config SwitchB(config)#port-group 2 SwitchB(config)#interface ethernet 1/0/7-10 SwitchB(Config-If-Port-Range)#port-group 2 mode on SwitchB(Config-If-Port-Range)#exit SwitchB(config)#interface port-channel 2 SwitchB(Config-If-Port-Channel2)#
В результате выполнения конфигурации описанной выше, порты добавляются в Port-Channel сразу, как только выполняется команда , задающая режим on. Обмен LACPDU не требуется.
[править] LACP в Linux
LACP в Linux через bonding
В Linux поддержка LACP осуществляется с помощью модуля bonding,
как и всякая другая агрегация на канальном уровне.
Режим агрегации: 4.
Пример загрузки модуля:
bonding miimon=100 mode=4 lacp_rate=1
LACP в Linux через teaming
Teaming — новый механизм создания агрегированных линков в Linux, более архитектурно правильны. Состоит из ядерной части, которая реализует базовые механизмы обработки трафика, и части пространства пользователя, которая отвечает за сигнализацию и управление ядерной частью.
Необходимые опции ядра (отмечаем только те режимы коммутации, которые будем использовать):
CONFIG_NET_TEAM=m CONFIG_NET_TEAM_MODE_BROADCAST=m CONFIG_NET_TEAM_MODE_ROUNDROBIN=m CONFIG_NET_TEAM_MODE_RANDOM=m CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m CONFIG_NET_TEAM_MODE_LOADBALANCE=m
Конфигурационный файл (/etc/network/team0.conf):
{ "device": "team0", "runner": { "name":"lacp", "active":true, "fast_rate":true, "tx_hash": }, "link_watch": {"name": "ethtool"}, "ports": { "eth0": {}, "eth2": {} } }
Стоит заметить, что интерфейсы-порты должны быть в состоянии down, иначе агрегированный линк не запустится.
Запускаем демон teamd:
teamd -g -f /etc/network/team0.conf -d
Проверяем работу:
# teamdctl team0 state setup: runner: lacp ports: eth0 link watches: link summary: up instance: name: ethtool link: up runner: aggregator ID: 2, Selected selected: yes state: current eth2 link watches: link summary: up instance: name: ethtool link: up runner: aggregator ID: 2, Selected selected: yes state: current runner: active: yes fast rate: yes
Добавляем адрес
ip link set up dev team0 ip address add X.X.X.X/X dev team0
Выключаем
teamd -t team0 -k
Что такое LACP (протокол управления агрегацией каналов) и как он работает?
LACP — это подкомпонент стандарта IEEE 802.3ad (Link Aggregation).Стандарт предписывает, что LACP может быть методом объединения нескольких физических каналов между сетевыми устройствами в один логический канал.
В результате, каналы, поддерживающие протокол LACP, могут увеличить логическую полосу пропускания и надежность сети без изменения какой-либо сетевой инфраструктуры.
Более того, даже если одна ссылка выходит из строя, в режиме LACP другие доступные члены ссылки в той же группе LACP будут балансировать нагрузку.
В момент, когда LACP включен между двумя коммутаторами, они будут отправлять LACPDU (блоки данных LACP) друг другу. После получения друг от друга LACPDU два коммутатора будут определять, у какой стороны системный приоритет выше.
Затем они будут вести переговоры друг с другом, чтобы выбрать того, кто выше, чтобы быть Актером, а тот, кто ниже, — Партнером. Если два коммутатора имеют одинаковый системный приоритет, коммутатор с меньшим значением MAC-адреса будет Актером.
После выбора Субъекта два коммутатора будут выбирать активные порты на основе приоритетов портов порта Субъекта. Однако, если порты Субъекта имеют одинаковые приоритеты, порты с меньшими номерами портов будут выбраны в качестве активных портов.
После выбора соответствующих портов двух коммутаторов устанавливается порт-канал (группа LACP). Тогда активные ссылки загрузят данные баланса для связи.
[править] LACP в FreeBSD
На FreeBSD (одна сторона):
# ifconfig lagg0 create # ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1
На Cisco (другая сторона):
interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp
На коммутаторе, при этом, информация о LACP-соседях должна выглядеть так:
switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 1 neighbors Partner's information: LACP port Oper Port Port Port Flags Priority Dev ID Age Key Number State Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
29.6.3 Examples
Example 29-1. LACP aggregation with a Cisco switch
This example connects two interfaces on a FreeBSD machine to the switch as a single
load balanced and fault tolerant link. More interfaces can be added to increase
throughput and fault tolerance. Since frame ordering is mandatory on Ethernet links then
any traffic between two stations always flows over the same physical link limiting the
maximum speed to that of one interface. The transmit algorithm attempts to use as much
information as it can to distinguish different traffic flows and balance across the
available interfaces.
On the Cisco switch add the interfaces to the channel group.
interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp !
On the FreeBSD machine create the lagg interface.
# ifconfig lagg0 create # ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1
View the interface status from ifconfig; ports marked as ACTIVE are part of the active aggregation group that has been
negotiated with the remote switch and traffic will be transmitted and received. Use the
verbose output of ifconfig(8) to view
the LAG identifiers.
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto lacp laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
The switch will show which ports are active. For more detail use show lacp neighbor detail.
switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 1 neighbors Partner's information: LACP port Oper Port Port Port Flags Priority Dev ID Age Key Number State Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
Example 29-2. Failover mode
Failover mode can be used to switch over to another interface if the link is lost on
the master.
# ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER,ACTIVE>
Traffic will be transmitted and received on fxp0. If the
link is lost on fxp0 then fxp1
will become the active link. If the link is restored on the master interface then it will
once again become the active link.
Дополнительные материалы по Freebsd
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Рекомендую полезные материалы по Freebsd: |
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик. Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности. Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления. Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop. Подробная настройка на Freebsd прокси сервера squid + sams2 — панели управления для удобного администрирования. Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache. Настройка web сервера на Freebsd в связке с apache, nginx, php и mysql. Пошаговая установка и настройка каждого компонента. |
Заключение
Вы получили представление об агрегирования каналов, LAG и LACP? Сможете ли вы использовать их с пользой и найти сетевой коммутатор, который вам подойдет? Агрегация каналов — это способ объединения нескольких отдельных (Ethernet) каналов, чтобы они могли работать как единое логическое соединение. Группа портов, объединенных вместе, называется группой агрегации каналов или LAG. Протокол активного мониторинга, который позволяет устройствам включать или удалять отдельные ссылки из LAG, называется протоколом управления агрегацией каналов (LACP).
-
Сетевой коммутатор
-
Руководство по настройке
-
LACP