As rotas estáticas de custo igual e multi-próximo salto da Junos VRF não balançam

8

Estou balanceando o tráfego em links duplos de mesmo tamanho, agregados ao mesmo VRF no roteador PE (Juniper MX5 JunOS 11.4). O tráfego do CE (Cisco) está equilibrando bem, mas preciso fazer o inverso.

Eu não sou NATing dentro da rede de vários sites, o único NATing acontece no firewall de borda da Internet.

Eu configurei o VRF da seguinte maneira no roteador Juniper PE:

# show routing-instances {client}
instance-type vrf;
.
.
vrf-export {client}-load-balance;
.
.
routing-options {
    static {
        .
        .
        route 10.0.0.0/24 next-hop [ 196.33.144.11 196.33.144.3 ];
        .
        .
    }
}
forwarding-options {
    load-balance {
        indexed-next-hop;
        per-flow {
            hash-seed;
        }
    }
}

e na configuração principal isto:

# show policy-options policy-statement {client}-load-balance
then {
     load-balance per-packet;
}

e

# show forwarding-options hash-key
family inet {
    layer-3;
    layer-4;
}

O roteador ainda escolhe apenas o salto 196.33.144.3 para rotear o tráfego da sub-rede (10.0.0.0/24) e não se equilibrar nos dois links.

Aqui estão algumas verificações:

# run show route forwarding-table table {client}
Routing table: {client}.inet
Internet:
Destination        Type RtRef Next hop           Type Index NhRef Netif
default            user     0 8:5b:e:84:4c:b0    ucst   561     3 ge-1/1/2.3017
default            perm     0                    rjct   961     1
0.0.0.0/32         perm     0                    dscd   959     1
10.0.0.0/24        user     0 196.33.144.3       ucst   589     5 ge-1/1/5.2100
10.0.0.55/32       user     0                    ucst   645     6 gr-1/1/10.1
10.0.0.210/32      user     0                    ucst   645     6 gr-1/1/10.1
10.0.6.0/24        user     0                    ucst   921     3 gr-1/1/10.16
.
.

e

# run show route 10.0.0.0 table {client}.inet.0

{client}.inet.0: 19 destinations, 20 routes (19 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.0/24        *[Static/5] 3d 07:43:36
                    > to 196.33.144.3 via ge-1/1/5.2100
                      to 196.33.144.11 via gr-1/1/10.1

e

# run show route table {client}.inet.0 detail

{client}.inet.0: 19 destinations, 20 routes (19 active, 0 holddown, 0 hidden)
.
.
10.0.0.0/24 (1 entry, 1 announced)
        *Static Preference: 5
                Next hop type: Router, Next hop index: 1048574
                Address: 0xb6b407c
                Next-hop reference count: 3
                Next hop: 196.33.144.3 via ge-1/1/5.2100, selected
                Next hop: 196.33.144.11 via gr-1/1/10.1
                State: <Active Int Ext>
                Age: 3d 7:46:23
                Task: RT
                Announcement bits (2): 0-RT 2-KRT
                AS path: I
                AS path: Recorded

10.0.0.55/32 (1 entry, 1 announced)
        *Static Preference: 5
.
.

Existem guias explicando isso usando a instância inet.0 padrão do roteador, mas não consigo encontrar exemplos disso sendo feito dentro de um VRF.

Estou tentando o comando vrf-export como uma alternativa para "forwading-table export load-balance-policy-name" porque o VRF não possui a opção de tabela de encaminhamento.

Alguma idéia do que eu posso tentar?

Shawn Gradwell
fonte
Os próximos saltos são acessíveis a partir do MX?
Jordan Head
Sim. I can ping ambos os IPs com sucesso usando: # run de ping IP encaminhamento instância {Cliente}
Shawn Gradwell
Ok, deixe-me investigar isso - eu tenho um palpite.
Jordan Head
2
"Estou tentando o comando vrf-export como uma alternativa para forwading-table export load-balance-policy-name" Isso é estranho, sem modificar sua tabela de encaminhamento, o ECMP não funcionará. Não pretendo ofendê-lo, mas você tem certeza de que está tentando colocá-lo no editnível correto ? Deveria ser set routing-options forwarding-table export {client}-load-balance.
Ryan Foley
Ah, eu interpretei totalmente uma parte dele. Ryan está absolutamente certo, você deve aplicar a política de balanceamento de carga à hierarquia que ele mencionou. A exportação de VRF não é para balanceamento de carga, é para coisas como destinos / distintivos de rota.
Jordan Head

Respostas:

5

Parece que você está aplicando a política de balanceamento de carga ao routing-instance. Ele precisa ser aplicado ao forwarding-tablepara executar o ECMP no plano de encaminhamento.

routing-options {
     forwarding-table {
          export load-balancing-policy;
     }
}

Para confirmar que está funcionando, você deve ver algo semelhante a isso. Observe a entrada adicional na tabela de encaminhamento para entrada 10.0.0.0/24.

# run show route forwarding-table table {client}
Routing table: {client}.inet
Internet:
Destination        Type RtRef Next hop           Type Index NhRef Netif
default            user     0 8:5b:e:84:4c:b0    ucst   561     3 ge-1/1/2.3017
default            perm     0                    rjct   961     1
0.0.0.0/32         perm     0                    dscd   959     1
10.0.0.0/24        user     0 196.33.144.3       ucst   589     5 ge-1/1/5.2100 *
10.0.0.0/24        user     0 196.33.144.11      ucst   645     6 gr-1/1/10.1   *
10.0.0.55/32       user     0                    ucst   645     6 gr-1/1/10.1
10.0.0.210/32      user     0                    ucst   645     6 gr-1/1/10.1
10.0.6.0/24        user     0                    ucst   921     3 gr-1/1/10.16
.
.
Ryan Foley
fonte
11
Isso funcionou! Também adicionei os dois IPs do próximo salto a essa política específica para bloqueá-lo apenas nessa rota. Great material obrigado!
Shawn Gradwell