На коммутаторе MES1400/2400 можно выбрать следующие алгоритмы балансировки:
- src-mac — балансировка основана на MAC адресе источника
- dest-mac — балансировка основана на MAC адресе назначения
- src-ip – балансировка основана на IP адресе источника
- dest-ip – балансировка основана на IP адресе назначения
- src-dest-ip – балансировка основана на IP адресе источника и IP адресе назначения
- src-dest-mac — режим по умолчанию, балансировка основана на MAC адресе источника и MAC адресе назначения. Режим по умолчанию.
- src-dest-mac-ip — балансировка основана на MAC адресе источника, MAC адресе назначения, IP адресе источника и IP адресе назначения.
- src-dest-mac-ip-port — балансировка основана на MAC адресе источника, MAC адресе назначения, IP адресе источника и IP адресе назначения, на портах источника и назначения TCP/UDP.
Команда установки алгоритма балансировки:
console(config)#
port-channel load-balance src-dest-mac-ip
Алгоритм рачёта балансировки:
Значение каждого указанного в алгоритме поля разбивается на блоки одинаковой длинны. Размер блока определяется пакетным процессором на коммутаторе (см. примечание ниже). Если размер поля не делится нацело на требуемое число бит, то последний блок добивается нулями слева до требуемого размера. Над всеми этими блоками проводится операция XOR, в результате чего получается HASH для конкретного поля. После вычисления HASH для всех настроенных полей, между всеми ними опять выполняется операция XOR для вычисления финального значения. Над финальным HASH выполняем операцию MOD x (x - колличество портов в LAG). Получаем Index порта в LAG.
Примечание: Разные модели устройств при балансировке разбивают поля на блоки разных размеров. MES2411x/MES2424/MES2448 (устройтва на базе пакетных процессоров RTL93xx) разбивают поля на блоки по 6 бит, остальные устройства на базе пакетных процессоров RTL83xx на блоки по 4 бит.
Примечание: При расчёте номера порта для устройств на базе пакетных процессоров RTL83xx необходимо учитывать особенность привязки внутреннего номера порта на процессоре к системному номеру порта (ifindex) в системе. Все чётные не оптические и не combo порты имеют аппаратный индекс на 2 меньше, чем ifindex. Поэтому при расчёте, если рассчитанный номер порта выпал на физический порт с чёрным ifindex, то необходимо сравнить его с ifindex предыдущего порта в LAG (если порт не первый в LAG). При сравнении, если ifindex предыдущего порта на 1 меньше, чем рассчитаный, то тогда вместо рассчитанного пакет будет отправлен в порт c индексом на 1 меньше.
Пример:
- Алгоритм src-dest-mac-ip
- Устройство MES2424B
Порты в LAG:
Индекс порта в LAG 0 1 2 3 4 5 6 7 Имя порта в LAG Gi 0/2 Gi 0/3 Gi 0/6 Gi 0/7 Gi 0/8 Gi 0/9 Gi 0/10 Gi 0/11 - Поля пакетов Source MAC f0:79:59:5e:32:3e, Destination MAC e0:d9:e3:f9:b3:40, Source IP 10.25.56.23, Destination IP 149.154.167.41.
- Разбиваем поля на блоки по 6 бит и производим операцию XOR между ними
Поле | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Поле | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
MAC SA[47..42] | 1 | 1 | 1 | 1 | 0 | 0 | MAC DA[47..42] | 1 | 1 | 1 | 0 | 0 | 0 |
MAC SA[41..36] | 0 | 0 | 0 | 1 | 1 | 1 | MAC DA[41..36] | 0 | 0 | 1 | 1 | 0 | 1 |
MAC SA[35..30] | 1 | 0 | 0 | 1 | 0 | 1 | MAC DA[35..30] | 1 | 0 | 0 | 1 | 1 | 1 |
MAC SA[29..24] | 0 | 1 | 1 | 0 | 0 | 1 | MAC DA[29..24] | 1 | 0 | 0 | 0 | 1 | 1 |
MAC SA[23..18] | 0 | 1 | 0 | 1 | 1 | 1 | MAC DA[23..18] | 1 | 1 | 1 | 1 | 1 | 0 |
MAC SA[17..12] | 1 | 0 | 0 | 0 | 1 | 1 | MAC DA[17..12] | 0 | 1 | 1 | 0 | 1 | 1 |
MAC SA[11..6] | 0 | 0 | 1 | 0 | 0 | 0 | MAC DA[11..6] | 0 | 0 | 1 | 1 | 0 | 1 |
MAC SA[0..5] | 1 | 1 | 1 | 1 | 1 | 0 | MAC DA[0..5] | 0 | 0 | 0 | 0 | 0 | 0 |
HASH (XOR) | 0 | 0 | 0 | 1 | 0 | 1 | HASH (XOR) | 0 | 1 | 1 | 0 | 0 | 1 |
Поле | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Поле | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
IP SA[31..30] | 0 | 0 | 0 | 0 | 0 | 0 | IP DA[31..30] | 0 | 0 | 0 | 0 | 1 | 0 |
IP SA[29..24] | 0 | 0 | 1 | 0 | 1 | 0 | IP DA[29..24] | 0 | 1 | 0 | 1 | 0 | 1 |
IP SA[23..18] | 0 | 0 | 0 | 1 | 1 | 0 | IP DA[23..18] | 1 | 0 | 0 | 1 | 1 | 0 |
IP SA[17..12] | 0 | 1 | 0 | 0 | 1 | 1 | IP DA[17..12] | 1 | 0 | 1 | 0 | 1 | 0 |
IP SA[11..6] | 1 | 0 | 0 | 0 | 0 | 0 | IP DA[11..6] | 0 | 1 | 1 | 1 | 0 | 0 |
IP SA[0..5] | 0 | 1 | 0 | 1 | 1 | 1 | IP DA[0..5] | 1 | 0 | 1 | 0 | 0 | 1 |
HASH (XOR) | 1 | 0 | 1 | 0 | 0 | 0 | HASH (XOR) | 1 | 0 | 1 | 1 | 1 | 0 |
Производим XOR над всеми получившимися HASH:
HASH | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
MAC SA | 0 | 0 | 0 | 1 | 0 | 1 |
MAC DA | 0 | 1 | 1 | 0 | 0 | 1 |
IP SA | 1 | 0 | 1 | 0 | 0 | 0 |
IP DA | 1 | 0 | 1 | 1 | 1 | 0 |
XOR | 0 | 1 | 1 | 0 | 1 | 0 |
b011010 = 26. В порт-ченнеле 8 портов, т.о. пакет улетит в порт с index равным 26 mod 8 = 2.
В настроенном LAG данному индексу порта соответсвует порт Gi 0/6.