Balanceamento de carga ECMP no JUNOS

1

Estou tentando descobrir como usar o balanceamento de carga do ECMP no JUNOS. Eu sei que isso não é a melhor maneira de equilibrar a carga, mas é rápido e sujo e é feito o que eu preciso. No ScreenOS isso foi muito fácil.

Dispositivo: SRX220 JunOS: 10.3R2.11

Aqui está o que eu tenho até agora:

routing-options {
    static {
        route 0.0.0.0/0 {
            next-hop [ 1.1.1.1 1.1.1.2 ];
            metric 10;
        }
    }
    maximum-paths 2;

Isso será feito?

Tom

    
por SpacemanSpiff 06.12.2010 / 18:41

1 resposta

5

Você definitivamente não quer o maximum-paths . Isso limitará o tamanho da sua tabela de roteamento e não terá nada a ver com o ECMP.

Então, com apenas:

routing-options {
    static {
        route 0.0.0.0/0 {
            next-hop [ 1.1.1.1 1.1.1.2 ];
            metric 10;
        }
    }
}

Você verá:

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

Ambos os próximos saltos aparecem na tabela de roteamento, MAS para ver o que realmente está acontecendo na tabela de encaminhamento, você precisa ir mais fundo:

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

Por padrão, quando o roteador empurra a tabela de roteamento para a tabela de encaminhamento, ele seleciona aleatoriamente UM próximo salto. Para alterar esse comportamento, você pode definir uma política de "exportação de tabela de encaminhamento" que controla o que acontece quando a tabela de encaminhamento é criada a partir da tabela de roteamento:

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;
        }
    }
}

Agora, a tabela de roteamento ainda parece a mesma:

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

Mas a tabela de encaminhamento (onde conta) tem as duas rotas:

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

Agora você está balanceando a carga!

No entanto, uma coisa a lembrar é que, apesar da declaração incrivelmente enganosa load-balance per-packet , todos os roteadores da Juniper com essa configuração realmente fazem por fluxo balanceamento de carga. Cada pacote é baseado em hash (src-ip, dst-ip e número de protocolo). Então, se você tiver apenas alguns fluxos de tráfego, eles podem muito bem usar o mesmo próximo salto. Depois de aumentar o número de fluxos, você verá um carregamento mais uniforme.

(Na verdade, o primeiro hardware fez balanceamento de carga por pacote, mas você provavelmente nunca encontrará um)

    
por 20.12.2010 / 16:36