Агрегирование сетевых интерфейсов

Скачать в формате PDF

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО

«С-Терра СиЭсПи» и Продуктов третьих производителей.

ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.

Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.

Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах

только после тестовой и/или опытной эксплуатации.

Описание стенда

Сценарий проиллюстрирует настройку агрегирования сетевых интерфейсов на шлюзе безопасности «С-Терра Шлюз 4.3» и коммутаторе Cisco WS-C3560X-24.

Схема стенда (Рисунок 1):

Рисунок 1

Логика работы

Физические интерфейсы eth1 и eth2 шлюза GW01 будут объединены в один логический интерфейс bond0 (в консоли cisco-like этот интерфейс будет добавлен как Port-channel0). На шлюзе будет настроен режим агрегирования сетевых интерфейсов по стандарту 802.3ad с использованием протокола LACP. Данный протокол позволяет обеспечить отказоустойчивость физических интерфейсов и балансировку трафика. На коммутаторе Cisco будет также настроен EtherChannel с использованием протокола LACP.

Важно: Поддержка протокола LACP необходима со стороны коммутатора

Настройка стенда

Настройка устройства GW01

Настройка шлюза безопасности GW01 производиться с учетом того, что шлюз был инициализирован и импортированы все необходимые сертификаты. Настройка производится через локальную консоль или удаленно (SSH с правами суперпользователя) по доверенному каналу связи.

Объединение интерфейсов

Выберите физические интерфейсы, которые необходимо объединить в логический интерфейс. В данной инструкции будут рассматриваться интерфейсы eth1 и eth2, которые будут объедены в один логический bond0.

1.     Внесите следующие настройки для агрегированного канала в файл /etc/network/interfaces.d/bond0:

root@sterragate:~# vim.tiny /etc/network/interfaces.d/bond0

auto bond0

iface bond0 inet static

    address 192.168.2.1

    netmask 255.255.255.0

    slaves eth1 eth2

    bond_mode 802.3ad

    bond_miimon 100

    bond_xmit_hash_policy layer2+3

где:

·         address <IP-адрес> - IP-адрес логического интерфейса (bond0);

·         slaves <интерфейс> - имена физических интерфейсов, объединяемых в агрегированный канал;

·         bond_mode - настройка, отвечающая за протокол, который обеспечивает работу агрегации каналов (в данном примере - это LACP, который основан на стандарте 802.3ad);

·         bond_miimon <интервал> - параметр, определяющий интервал времени в миллисекундах. Через заданное время будет происходить проверка физических интерфейсов на их доступность;

·         bond_xmit_hash_policy - параметр, определяющий уровень (эталонная модель OSI), на котором будет происходить вычисление хеш-функции для последующей балансировки трафика;

·         mtu <значение> - параметр для задания MTU интерфейса; значение по умолчанию - 1500; при изменении MTU интерфейса bond0 меняется MTU и объединяемых интерфейсов eth1 и eth2.

Важно! Если в файле /etc/network/interfaces или в файлах директории /etc/network/interfaces.d/ присутствуют строки с настройками для интерфейсов eth1 и eth2, то необходимо их удалить.

Более полное описание настроек, относящихся к агрегированным каналам для Linux смотрите по ссылке https://www.kernel.org/doc/Documentation/networking/bonding.txt.

Важно! Изменение IP адреса, маски подсети и значения MTU для интерфейса bond0 должно происходить через файл /etc/network/interfaces.d/bond0, а не через cisco-like консоль.

В данной инструкции описывается настройка агрегации каналов по стандарту 802.3ad с использованием протокола LACP. Пример настройки в режиме Active-Backup представлен в Приложении в разделе “Использование режима Active-Backup”.

Пример настройки VLAN на bond-интерфейсе представлен в Приложении в разделе “Использование VLAN на интерфейсе bond0”.

2.     Для применения настроек выполните перезапуск сетевого сервиса:

root@sterragate:~# systemctl restart networking.service

3.     Проверьте логический и физические интерфейсы:

root@sterragate:~# ip address show | grep bond0

3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc mq master bond0 state DOWN group default qlen 1000

4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc mq master bond0 state DOWN group default qlen 1000

5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    inet 192.168.2.1/24 brd 192.168.2.255 scope global bond0

Наглядно видно, что интерфейсы eth1 и eth2 находятся в режиме SLAVE, а bond0 в режиме MASTER.

4.     Для работы IPsec на интерфейсе bond0 необходимо прописать данный интерфейс в файл /etc/ifaliases.cf. Строки с интерфейсами eth1 и eth2 необходимо удалить.

root@sterragate:~# vim.tiny /etc/ifaliases.cf

...

interface (name="Port-channel0" pattern="bond0")

...

interface (name="default" pattern="*")

5.     Пересчитайте контрольную сумму измененного файла:

root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf

SUCCESS:  Operation was successful.

6.     Перезапустите VPN сервис:

root@sterragate:~# systemctl restart vpngate.service

7.     После проведенных настроек можно прикрепить крипто-карту на интерфейс Port-channel0 (bond0) в консоли cisco-like.

Важно! Изменение IP адреса, маски подсети и значения MTU для интерфейса bond0 должно происходить через файл /etc/network/interfaces.d/bond0, а не через cisco-like консоль.

Настройка устройства Switch01

Для того, чтобы настроить протокол LACP на коммутаторе Cisco WS-C3560X-24, выполните следующие действия:

1.    Войдите в режим конфигурирования:

SWITCH01>enable

Password:

SWITCH01#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

2.    Укажите алгоритм балансировки трафика:

SWITCH01(config)#port-channel load-balance src-dst-ip

3.    Настройте порты Gi0/1 и Gi0/2 коммутатора на работу протокола LACP:

SWITCH01(config)#interface range Gi0/1-2

4.    Укажите протокол LACP:

SWITCH01(config-if-range)#channel-protocol lacp

5.    Укажите режим работы:

SWITCH01(config-if-range)#channel-group 1 mode active

Creating a port-channel interface Port-channel 1

6.    Включите опцию “Portfast” (не обращайте внимание на предупреждение):

SWITCH01(config-if-range)#spanning-tree portfast

%Warning: portfast should only be enabled on ports connected to a single

 host. Connecting hubs, concentrators, switches, bridges, etc... to this

 interface  when portfast is enabled, can cause temporary bridging loops.

 Use with CAUTION

 

%Portfast will be configured in 2 interfaces due to the range command

 but will only have effect when the interfaces are in a non-trunking mode.

7.    Включите порты:

SWITCH01(config-if-range)#no shutdown

SWITCH01(config-if-range)#exit

8.    Сохраните конфигурацию:

SWITCH01#write

Building configuration...

[OK]

В данной инструкции на коммутаторе Cisco применяется EtherChannel с использованием протокола LACP.


 

Проверка работоспособности стенда

Общие сведения

Для того, чтобы убедиться, что настройка протокола LACP выполнена корректно выполните следующие проверки:

1.    На коммутаторе Switch01 выполните:

SWITCH01#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                        Admin  Oper   Port    Port

Port      Flags   Priority  Dev ID          Age    key    Key    Number  State

Gi0/1     SA      255       00:90:0b:4a:c0:b8  12s    0x0    0x11   0x1     0x3D 

Gi0/2     SA      255       00:90:0b:4a:c0:b8  12s    0x0    0x11   0x2     0x3D 

Обратите внимание на колонку Dev ID. Данные адреса должны соответствовать MAC-адресам логическому интерфейсу bond0 на шлюзе.

2.    На шлюзе безопасности GW01 выполните команду:

root@sterragate:~# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation

Transmit Hash Policy: layer2+3 (2)

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

802.3ad info

LACP rate: slow

Min links: 0

Aggregator selection policy (ad_select): stable

System priority: 65535

System MAC address: 00:90:0b:4a:c0:b8

Active Aggregator Info:

        Aggregator ID: 3

        Number of ports: 2

        Actor Key: 9

        Partner Key: 1000

        Partner Mac Address: e0:d9:e3:a0:fe:80

 

Slave Interface: eth1

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:90:0b:4a:c0:b8

Slave queue ID: 0

Aggregator ID: 3

Actor Churn State: none

Partner Churn State: none

Actor Churned Count: 1

Partner Churned Count: 1

details actor lacp pdu:

    system priority: 65535

    system mac address: 00:90:0b:4a:c0:b8

    port key: 9

    port priority: 255

    port number: 1

    port state: 61

details partner lacp pdu:

    system priority: 1

    system mac address: e0:d9:e3:a0:fe:80

    oper key: 1000

    port priority: 1

    port number: 49

    port state: 61

 

Slave Interface: eth2

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:90:0b:4a:c0:b9

Slave queue ID: 0

Aggregator ID: 3

Actor Churn State: none

Partner Churn State: none

Actor Churned Count: 1

Partner Churned Count: 1

details actor lacp pdu:

    system priority: 65535

    system mac address: 00:90:0b:4a:c0:b8

    port key: 9

    port priority: 255

    port number: 2

    port state: 61

details partner lacp pdu:

    system priority: 1

    system mac address: e0:d9:e3:a0:fe:80

    oper key: 1000

    port priority: 1

    port number: 50

    port state: 61

MAC-адрес партнера по протоколу LACP: e0:d9:e3:a0:fe:80, данный адрес должен соответствовать адресу на коммутаторе Switch01:

SWITCH01#show lacp sys-id

32768, e0d9.e3a0.fe80

Проверка балансировки

1.    В данной инструкции на коммутаторе используется правило балансировки - dst-src-ip.

2.    Проверить правило балансировки можно, выполнив команду:

SWITCH01#show etherchannel load-balance

EtherChannel Load-Balancing Configuration:

        src-dst-ip

 

EtherChannel Load-Balancing Addresses Used Per-Protocol:

Non-IP: Source XOR Destination MAC address

  IPv4: Source XOR Destination IP address

  IPv6: Source XOR Destination IP address

3.    Проверить через какие интерфейсы идет трафик можно выполнив команду:

SWITCH01#test etherchannel load-balance interface port-channel 1 ip 192.168.1.100 192.168.2.100

Would select Gi0/2 of Po1

SWITCH01#test etherchannel load-balance interface port-channel 1 ip 192.168.1.100 192.168.2.101

Would select Gi0/1 of Po1

4.    На шлюзе используется правило балансировки bond_xmit_hash_policy layer2+3.

Правила балансировки на используемом коммутаторе Cisco и «С-Терра Шлюз» различаются. Добиться заметного увеличения пропускной способности можно только при большом количестве сессий.

Проверка отказоустойчивости

1.    Предположим, что есть удаленная подсеть 192.168.2.0/24 с хостами 192.168.2.100 и 192.168.2.101.

2.    Запустите утилиту ping с хоста IPHost1 с адресом 192.168.1.100 на адрес 192.168.2.100 и 192.168.2.101 с интервалом 0.1. Данный трафик будет идти по разным каналам.

root@IPHost1:~# ping 192.168.2.100 -i 0.1

root@IPHost1:~# ping 192.168.2.101 -i 0.1

3.    Отключите на коммутаторе один из линков.

4.    Данный линк перейдет в состояние DOWN:

SWITCH01#show etherchannel summary

Flags:  D - down        P - bundled in port-channel

        I - stand-alone s - suspended

        H - Hot-standby (LACP only)

        R - Layer3      S - Layer2

        U - in use      f - failed to allocate aggregator

 

        M - not in use, minimum links not met

        u - unsuitable for bundling

        w - waiting to be aggregated

        d - default port

 

 

Number of channel-groups in use: 5

Number of aggregators:           5

 

Group  Port-channel  Protocol    Ports

------+-------------+-----------+-----------------------------------------------

1      Po1(SU)         LACP      Gi0/1(D)    Gi0/2(P)   

5.    При этом небольшое количество пакетов пропадет.

64 bytes from 192.168.2.101: icmp_req=269 ttl=64 time=0.101 ms

64 bytes from 192.168.2.101: icmp_req=270 ttl=64 time=0.101 ms

64 bytes from 192.168.2.101: icmp_req=271 ttl=64 time=0.100 ms

64 bytes from 192.168.2.101: icmp_req=272 ttl=64 time=0.102 ms

64 bytes from 192.168.2.101: icmp_req=273 ttl=64 time=0.100 ms

64 bytes from 192.168.2.101: icmp_req=274 ttl=64 time=0.099 ms

 

64 bytes from 192.168.2.101: icmp_req=282 ttl=64 time=0.112 ms

64 bytes from 192.168.2.101: icmp_req=283 ttl=64 time=0.073 ms

64 bytes from 192.168.2.101: icmp_req=284 ttl=64 time=0.074 ms

64 bytes from 192.168.2.101: icmp_req=285 ttl=64 time=0.095 ms

64 bytes from 192.168.2.101: icmp_req=286 ttl=64 time=0.091 ms

В данном случае сессия перестроилась на другой канал за ~0,8 секунд.


 

Приложение

Использование режима Active-Backup

При необходимости использования агрегации каналов в режиме Active-Backup используйте параметр bond_mode active-backup. При этом параметр bond_xmit_hash_policy не используется.

root@sterragate:~# vim.tiny /etc/network/interfaces.d/bond0

auto bond0

iface bond0 inet static

    address 192.168.2.1

    netmask 255.255.255.0

    slaves eth1 eth2

    bond_mode active-backup

    bond_miimon 100

Важно! Если в файле /etc/network/interfaces или в файлах директории /etc/network/interfaces.d/ присутствуют строки с настройками для интерфейсов eth1 и eth2, то необходимо их удалить.

Балансировки трафика в данном режиме не предусмотрено.

Существует возможность использовать данный режим не только для резервирования каналов, но и для резервирования коммутаторов (

Рисунок 2

 

Рисунок 2

Дальнейшая настройка не отличается от настройки агрегации каналов по стандарту 802.3ad с использованием протокола LACP.

Использование VLAN на интерфейсе bond0

1.    При необходимости использования VLAN на интерфейсе bond0 отредактируйте файл /etc/network/interfaces.d/bond0.

root@sterragate:~# vim.tiny /etc/network/interfaces.d/bond0

auto bond0

iface bond0 inet manual

    slaves eth1 eth2

    bond_mode 802.3ad

    bond_miimon 100

    bond_xmit_hash_policy layer2+3

auto bond0.10

iface bond0.10 inet static

    address 192.168.2.1

    netmask 255.255.255.0

Важно! Предполагается, что изменения IP адреса, маски подсети и значения MTU для интерфейсов bond0, bond0.10 будет происходить через файлы, находящиеся в каталоге /etc/network/interfaces.d/bond0, а не через cisco-like консоль.

Интерфейс bond0 должен быть с параметром inet maual, а не inet static, так как IP адреса на данном интерфейсе не заданы.

При использовании на VLAN интерфейсах значений MTU отличных от 1500, необходимо прописать в файле /etc/network/interfaces.d/bond0 строки для задания MTU интерфейса bond0 и VLAN интерфейсов.

MTU VLAN-интерфейса bond0.10 не может быть больше, чем MTU интерфейса bond0.

Для применения настроек выполните перезапуск сетевого сервиса:

root@sterragate:~# systemctl restart networking.service

Для работы IPsec на VLAN интерфейсе необходимо выполнить следующие действия:

1.1.      Добавьте данный интерфейс в файл /etc/ifaliases.cf:

...

interface (name="Port-channel0.10" pattern="bond0.10")

...

interface (name="default" pattern="*")

1.2.      Пересчитайте контрольную сумму измененного файла:

root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf

SUCCESS:  Operation was successful.

1.3.      Перезапустите VPN сервис:

root@sterragate:~# systemctl restart vpngate.service

1.4.      После проведенных настроек можно прикрепить крипто-карту на интерфейс Port-channel0.10 (bond0.10).

Проверить принадлежность трафика к VLAN можно с помощью утилиты tcpdump:

root@sterragate:~# tcpdump -i bond0 -e -n

08:45:45.246018 00:10:18:a7:89:dc > 00:10:18:9e:ed:1c, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 192.168.2.1 > 192.168.2.100: ICMP echo request, id 2143, seq 9, length 64

08:45:45.246079 00:10:18:9e:ed:1c > 00:10:18:a7:89:dc, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 192.168.2.100 > 192.168.2.1: ICMP echo reply, id 2143, seq 9, length 64