Коммутация, объединение линков (агрегация линков)
Обзор
Термины CISCO
- Port Channel - название виртуального интерфейса в CISCO IOS, объединяющего линки
- Ether Channel - термин CISCO, обозначающий технологию объединения группы физических линков в один виртуальный
Протоколы агрегации линков
- LACP (Link Aggregation Control Protocol) - (IEEE 802.3ad) открытый протокол
- PAgP - проприетарный протокол CISCO
- Duralink Trunking - проприетарный протокол Adaptec
- MLT (multi link trunking) - проприетарный протокол Nortel
Управление нагрузкой
- можно управлять только нагрузкой исходящего трафика, чтобы распределять нагрузку в обе стороны, необходимо настраивать распределение нагрузки на другой стороне агрегированного линка.
- если вы на стороне вашего устройства объединяете линки с разных коммутаторов (не объединенных в стек), то вы можете управлять только исходящим трафиком, входящий трафик может приходить через любой из коммутаторов, путь трафика может зависеть от места подключения источника.
- агрегация линков не увеличивает пропускную способность между двумя хостами, но трафик между различными парами хостов может идти параллельно по разным линкам увеличивая общую пропускную способность
Настройка на CISCO
Подробно смотрите здесь
Задача
- Есть два коммутатора SW1, SW2
- Необходимо объединить их двумя линками с агрегацией канала
Требования к портам:
- Одинаковый Duplex
- Одинаковая скорость интерфейсов
- Одинаковые разрешенные VLAN-ы и Native VLAN
- Одинаковый режим интерфейсов (access, trunk)
ВАЖНО: Нельзя объединять коммутаторы линками до настройки агрегации портов, либо порты должны быть предварительно выключены, иначе может возникнуть петля
КОНФИГУРАЦИЯ ПРИВЕДЕННАЯ НИЖЕ НЕ ПРОВЕРЯЛАСЬ
SW1
# создание группы для объединения портов (config)# interface port-channel 5 # настройка и подключение портов (config)# int gi 0/1-2 (config-if-range)# switchport mode trunk switchport trunk allowed vlan 20,30,40 channel-group 5 mode active no shutdown
SW2
# создание группы для объединения портов (config)# interface port-channel 5 (config)# int gi 0/1-2 (config-if-range)# switchport mode trunk switchport trunk allowed vlan 20,30,40 channel-group 5 mode passive no shutdown
Физически соединяем линки SW1(gi0/1)-SW2(gi0/1), SW1(gi0/2)-SW2(gi0/2)
Проверка
show etherchannel port-channel
Особенности:
- passive автоматически включает LACP при получении пакета LACP от активного порта
- по умолчанию балансировка, нагрузки производится по src-mac
- если к SW1 подключены рабочие станции, а к SW2 роутер или сервер, то со стороны SW2 лучше переключить схождение на dst-mac
Режимы
channel-group 1 mode {auto [non-silent] | desirable [non-silent] | on} | {active | passive} # auto - включает PAgP, только если на другой стороне обнаружено устройство с включенным PAgP # desirable - включает PAgP в активном режиме # on — Forces the port to channel without PAgP or LACP. With the on mode, a usable EtherChannel exists only when a port group in the on mode is connected to another port group in the on mode. # non-silent — (Optional) If your switch is connected to a partner that is PAgP capable, configure the switch port for nonsilent operation when the port is in the auto or desirable mode. If you do not specify non-silent, silent is assumed. The silent setting is for connections to file servers or packet analyzers. This setting allows PAgP to operate, to attach the port to a channel group, and to use the port for transmission. # active — Enables LACP only if a LACP device is detected. It places the port into an active negotiating state in which the port starts negotiations with other ports by sending LACP packets. # passive — Enables LACP on the port and places it into a passive negotiating state in which the port responds to LACP packets that it receives, but does not start LACP packet negotiation.
Настройка cisco коммутатора, если на другой стороне хост
Если на другой стороне хост, то желательно использовать LACP в пассивном режиме (на стороне хоста если LACP включен, то как правило он активен).
Также желательно определить VLAN для не тегированного трафика.
Пример настройки access порта
switchport mode access switchport access vlan 10
Пример настройки гибридного порта
switchport mode trunk switchport trunk native 10 switchport trunk allowed vlan 20,30,40
RHEL 7,8,9 bonding
RHEL 7,8 teaming
Примечание: в RHEL 9 механизм teaming удален, для агрегации доступен только bonding
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":["eth", "ipv4", "ipv6"] }, "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[link_watch_0]: name: ethtool link: up runner: aggregator ID: 2, Selected selected: yes state: current eth2 link watches: link summary: up instance[link_watch_0]: 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