Я пытаюсь понять, как использовать балансировку нагрузки ECMP в JUNOS. Я знаю, что это не лучший способ балансировки нагрузки, но он быстрый, грязный и позволяет делать то, что мне нужно. В ScreenOS это было довольно просто.
Устройство: SRX220 JunOS: 10.3R2.11
Вот что у меня есть на данный момент:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
maximum-paths 2;
Это сработает?
Том
Вы определенно не хотите maximum-paths
. Это ограничит размер вашей таблицы маршрутизации и не имеет ничего общего с ECMP.
Итак, всего лишь:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
}
Вот увидишь:
lab@router> show route 0.0.0.0/0
...
0.0.0.0/0 *[Static/5] 00:01:28, metric 10
> to 1.1.1.1 via ge-0/0/0.0
to 1.1.1.2 via ge-0/0/0.0
Оба следующих перехода отображаются в таблице маршрутизации, НО, чтобы увидеть, что на самом деле происходит в таблице пересылки, вам нужно копнуть глубже:
lab@router> show route forwarding-table destination 0.0.0.0/0
...
Destination Type RtRef Next hop Type Index NhRef Netif
0.0.0.0/0 user 0 1.1.1.1 ucst 558 3 ge-0/0/0.0
По умолчанию, когда маршрутизатор перемещает таблицу маршрутизации в таблицу пересылки, он случайным образом выбирает ОДИН следующий переход. Чтобы изменить это поведение, вы можете определить политику «экспорта таблицы пересылки», которая контролирует, что происходит, когда таблица пересылки строится из таблицы маршрутизации:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
forwarding-table {
export LOAD-BALANCE;
}
}
policy-options {
policy-statement LOAD-BALANCE {
then {
load-balance per-packet;
}
}
}
Теперь таблица маршрутизации выглядит так же:
lab@router> show route 0.0.0.0/0
...
0.0.0.0/0 *[Static/5] 00:07:28, metric 10
> to 1.1.1.1 via ge-0/0/0.0
to 1.1.1.2 via ge-0/0/0.0
Но в таблице переадресации (где она считается) есть оба маршрута:
lab@router> show route forwarding-table destination 0.0.0.0/0
...
Destination Type RtRef Next hop Type Index NhRef Netif
0.0.0.0/0 user 0 ulst 262142 2
1.1.1.1 ucst 558 3 ge-0/0/0.0
1.1.1.2 ucst 540 3 ge-0/0/0.0
Теперь вы балансируете нагрузку!
Однако следует помнить, что, несмотря на невероятно вводящий в заблуждение load-balance per-packet
заявлении, все маршрутизаторы Juniper с этой конфигурацией действительно за поток балансировки нагрузки. Каждый пакет хешируется на основе (src-ip, dst-ip и номер-протокола). Так что, если у вас всего пара потоков трафика, они вполне могут использовать один и тот же следующий переход. Как только вы увеличите количество потоков, вы увидите более равномерную загрузку.
(На самом деле самое первое оборудование выполняло балансировку нагрузки по пакетам, но вы, вероятно, никогда не столкнетесь с ней)