Junos VRF statische Routen mit gleichen Kosten und mehreren nächsten Hops, die nicht ausgeglichen sind

8

Ich verteile den Datenverkehr auf zwei Links gleicher Größe, die zu derselben VRF auf dem PE-Router (Juniper MX5 JunOS 11.4) zusammengefasst sind. Der Verkehr vom CE (Cisco) gleicht sich gut aus, aber ich muss das Gegenteil richtig machen.

Ich bin kein NATing innerhalb des Multi-Site-Netzwerks, das einzige NATing erfolgt über die Edge-Firewall zum Internet.

Ich habe die VRF auf dem Juniper PE-Router wie folgt konfiguriert:

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

und in der Hauptkonfiguration dies:

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

und

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

Der Router wählt immer noch nur den 196.33.144.3-Hop, um den Datenverkehr des Subnetzes (10.0.0.0/24) an beide Verbindungen weiterzuleiten und nicht über diese zu balancieren.

Hier sind einige Überprüfungen:

# 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
.
.

und

# 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

und

# 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
.
.

Es gibt Anleitungen, die dies anhand der Standardinstanz inet.0 des Routers erklären, aber ich kann keine Beispiele dafür finden, die in einer VRF ausgeführt werden.

Ich versuche den Befehl vrf-export als Alternative für "forwading-table export load-balance-policy-name", da die VRF nicht über die Option forwarding-table verfügt.

Irgendwelche Ideen, was ich versuchen kann?

Shawn Gradwell
quelle
Sind beide Next-Hops vom MX aus erreichbar?
Jordan Head
Ja. Ich kann beide IPs erfolgreich pingen mit: # Ping-IP-Routing-Instanz {Client} ausführen
Shawn Gradwell
Okay, lassen Sie mich das untersuchen - ich habe eine Ahnung.
Jordan Head
2
"Ich versuche den Befehl vrf-export als Alternative für forwading-table export load-balance-policy-name" Das ist seltsam, ohne Ihre Weiterleitungstabelle zu ändern, wird ECMP nicht funktionieren. Ich will dich nicht beleidigen, aber bist du dir sicher, dass du versuchst, es unter das richtige editLevel zu bringen? Es sollte sein set routing-options forwarding-table export {client}-load-balance.
Ryan Foley
Oh, ich habe einen Teil davon total falsch verstanden. Ryan hat absolut Recht, Sie müssen die Lastausgleichsrichtlinie auf die von ihm erwähnte Hierarchie anwenden. VRF-Export dient nicht zum Lastausgleich, sondern zum Beispiel für Routenziele / -unterscheidungsmerkmale.
Jordan Head

Antworten:

5

Es scheint, dass Sie die Lastausgleichsrichtlinie auf die anwenden routing-instance. Es muss auf das angewendet werden forwarding-table, damit ECMP auf der Weiterleitungsebene ausgeführt werden kann.

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

Um zu bestätigen, dass es funktioniert, sollten Sie etwas Ähnliches sehen. Beachten Sie den zusätzlichen Eintrag in der Weiterleitungstabelle für den Eintrag 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
quelle
1
Das hat funktioniert! Ich habe dieser spezifischen Richtlinie auch die beiden Next-Hop-IPs hinzugefügt, um sie nur für diese Route zu sperren. Tolles Zeug, danke!
Shawn Gradwell