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

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

 

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

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

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

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

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

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

 

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

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

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

Рисунок 1

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

Физические интерфейсы eth2 и eth3 шлюза GW01 будут объединены в один логический интерфейс bond0 (Gi1/0). На шлюзе будет настроен режим агрегирования сетевых интерфейсов по стандарту 802.3ad с использованием протокола LACP. Данный протокол позволяет обеспечить отказоустойчивость физических интерфейсов и балансировку трафика. На коммутаторе Cisco будет настроен EtherChannel с использованием протокола LACP.

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


 

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

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

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

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

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

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

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

auto bond0

iface bond0 inet static

    address 10.1.1.1

    netmask 255.255.255.0

    slaves eth2 eth3

    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 и объединяемых интерфейсов eth2 и eth3.

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

Более полное описание настроек, относящихся к агрегированным каналам для ОС Linux смотрите в соответствующем документе.

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

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

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

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

root@sterragate:~# service networking restart

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

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

4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000

5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000

10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

    inet 10.1.1.1/24 brd 10.1.1.255 scope global bond0

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

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

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

interface (name="GigabitEthernet0/0" pattern="eth0")

interface (name="GigabitEthernet0/1" pattern="eth1")

interface (name="GigabitEthernet1/0" pattern="bond0")

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

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

SUCCESS:  Operation was successful.

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

root@sterragate:~# service vpngate restart

Stopping IPsec daemon.... done.

Starting IPsec daemon.. done.

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

Важно! IP-адрес интерфейса bond0 необходимо изменять только через файл /etc/network/interfaces, как описывается в п. 1.

Настройка устройства 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, а на шлюзе используется режим агрегации каналов по стандарту 802.3ad с использованием протокола LACP. При необходимости использования на шлюзе режима агрегации каналов Active-Backup, настраивать на коммутаторе EtherChannel нет необходимости. Каналы могут идти через разные коммутаторы (Рисунок 2).


 

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

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

Для того чтобы убедиться, что настройка протокола 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       0010.18a7.89dc  12s    0x0    0x11   0x1     0x3D 

Gi0/2     SA      255       0010.18a7.89dc  12s    0x0    0x11   0x2     0x3D 

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

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

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation

Transmit Hash Policy: layer3+4 (1)

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

802.3ad info

LACP rate: slow

Aggregator selection policy (ad_select): stable

Active Aggregator Info:

       Aggregator ID: 2

       Number of ports: 2

       Actor Key: 17

       Partner Key: 1

       Partner Mac Address: 58:8d:09:c9:5f:00

 

Slave Interface: eth2

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:10:18:a7:89:dc

Aggregator ID: 2

 

Slave Interface: eth3

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:10:18:a7:89:de

Aggregator ID: 2

MAC-адрес партнера по протоколу LACP: 58:8d:09:c9:5f:00, данный адрес должен соответствовать адресу на коммутаторе Switch01:

SWITCH01#show lacp sys-id

32768, 588d.09c9.5f00

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

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 с хоста 192.168.1.100 на адрес 192.168.2.100 и 192.168.2.101 с интервалом 0.1. Данный трафик будет идти по разным каналам.

root@IPHost1:~# ping 192.168.2.101 -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

auto bond0

iface bond0 inet static

       address 10.1.1.1

       netmask 255.255.255.0

       slaves eth2 eth3

       bond_mode active-backup

       bond_miimon 100

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

Более полное описание настроек, относящихся к агрегированным каналам для ОС Linux смотрите в соответствующем документе.

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

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

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

Рисунок 2).

Рисунок 2

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

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

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

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

auto bond0

iface bond0 inet manual

    slaves eth2 eth3

    bond_mode 802.3ad

    bond_miimon 100

    bond_xmit_hash_policy layer2+3

auto bond0.10

iface bond0.10 inet static

    address 10.1.1.1

    netmask 255.255.255.0

auto bond0.11

iface bond0.11 inet static

    address 10.2.1.1

    netmask 255.255.255.0

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

В данном случае добавляем два VLAN интерфейса – bond0.10 и bond0.11.

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

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

auto bond0

iface bond0 inet manual

    post-up ifconfig bond0 mtu 1700

    slaves eth2 eth3

    bond_mode 802.3ad

    bond_miimon 100

    bond_xmit_hash_policy layer2+3

auto bond0.10

iface bond0.10 inet static

    post-up ifconfig bond0 mtu 1700

    address 10.1.1.1

    netmask 255.255.255.0

iface bond0.11 inet static

auto bond0.11

    post-up ifconfig bond0 mtu 1700

    address 10.2.1.1

    netmask 255.255.255.0

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

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

root@sterragate:~# service networking restart

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

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

interface (name="GigabitEthernet1/0.10" pattern="bond0.10")

В данном случае добавляем только интерфейс bond0.10.

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

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

SUCCESS:  Operation was successful.

3.3.     Перезапустите сервис VPN агента:

root@sterragate:~# service vpngate restart

Stopping IPsec daemon.... done.

Starting IPsec daemon.. done.

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

4.    Проверить принадлежность трафика к 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, 10.1.1.1 > 10.1.1.2: 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, 10.1.1.2 > 10.1.1.1: ICMP echo reply, id 2143, seq 9, length 64