Cisco BGP Ungleicher Kostenlastausgleich

9

Ich versuche, die BGP-Funktion zum Ausgleich ungleicher Kosten in meinem Netzwerk zu implementieren. Laut Cisco-Handbüchern (lang: http://www.cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html , kurz: https://ccieblog.co.uk / bgp / bgp-ungleiche Lastkostenverteilung ) Ich habe eine solche Netz-Topologie erstellt:

Netz-Topologie

R1 - Router, auf dem ich versuche, den Lastausgleich für ausgehenden Datenverkehr zu implementieren. VRF-Tabelle mit Namen natwird verwendet.

R2-R4 - NAT-Server, auf denen Quagga ausgeführt wird, wobei die Standardroute zu R5 über eBGP mit R1 geteilt wird.

R1 Konfiguration

R1 IOS-Version: 12.2 (33) SXJ4 (s72033-adventerprisek9_wan-mz.122-33.SXJ4.bin)

R2-Konfiguration ( R3 R4 nur Router-ID und VLAN unterscheiden sich)

Im Ergebnis habe ich 3 verschiedene Standardrouten auf R1 mit der gleichen Anzahl von Freigaben - 1/1 (1: 1: 1). Aber Verhältnis 1: 2: 3 erwartet:

R1# sh ip bgp vpnv4 vrf nat 0.0.0.0

Paths: (6 available, best #5, table nat)
Multipath: eiBGP
  Advertised to update-groups:
     2         
  65000
    10.30.227.227 from 10.30.227.227 (10.30.227.227)
      Origin IGP, localpref 100, valid, external, multipath
      Extended Community: RT:192.168.33.4:13
      DMZ-Link Bw 250 kbytes
  65000, (received-only)
    10.30.227.227 from 10.30.227.227 (10.30.227.227)
      Origin IGP, localpref 100, valid, external
      DMZ-Link Bw 250 kbytes
  65000
    10.30.228.228 from 10.30.228.228 (10.30.228.228)
      Origin IGP, localpref 100, valid, external, multipath
      Extended Community: RT:192.168.33.4:13
      DMZ-Link Bw 375 kbytes
  65000, (received-only)
    10.30.228.228 from 10.30.228.228 (10.30.228.228)
      Origin IGP, localpref 100, valid, external
      DMZ-Link Bw 375 kbytes
  65000
    10.30.225.225 from 10.30.225.225 (10.30.225.225)
      Origin IGP, localpref 100, valid, external, multipath, best
      Extended Community: RT:192.168.33.4:13
      DMZ-Link Bw 125 kbytes
  65000, (received-only)
    10.30.225.225 from 10.30.225.225 (10.30.225.225)
      Origin IGP, localpref 100, valid, external
      DMZ-Link Bw 125 kbytes

R1# sh ip cef vrf nat 0.0.0.0/0 internal

0.0.0.0/0, epoch 3, flags rib only nolabel, rib defined all labels, RIB[B], refcount 7, per-destination sharing
  sources: RIB, D/N, DRH
  feature space:
   NetFlow: Origin AS 0, Peer AS 0, Mask Bits 0
   Broker: linked
   IPRM: 0x00018000
  subblocks:
   DefNet source: 0.0.0.0/0
  ifnums:
   Vlan3225(231): 10.30.225.225
   Vlan3227(232): 10.30.227.227
   Vlan3228(233): 10.30.228.228
  path 541B7858, path list 53E3E0D8, share 1/1, type recursive nexthop, for IPv4, flags resolved
  recursive via 10.30.225.225[IPv4:nat], fib 5496C804, 1 terminal fib
    path 541B7BF8, path list 53E3E170, share 1/1, type adjacency prefix, for IPv4
    attached to Vlan3225, adjacency IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
  path 541B78CC, path list 53E3E0D8, share 1/1, type recursive nexthop, for IPv4, flags resolved
  recursive via 10.30.227.227[IPv4:nat], fib 54969B7C, 1 terminal fib
    path 541B7B10, path list 53E3E08C, share 1/1, type adjacency prefix, for IPv4
    attached to Vlan3227, adjacency IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
  path 541B7DC8, path list 53E3E0D8, share 1/1, type recursive nexthop, for IPv4, flags resolved
  recursive via 10.30.228.228[IPv4:nat], fib 54970EAC, 1 terminal fib
    path 541B79B4, path list 53E3E040, share 1/1, type adjacency prefix, for IPv4
    attached to Vlan3228, adjacency IP adj out of Vlan3228, addr 10.30.228.228 513F6560
  output chain:
    loadinfo 51283B80, per-session, 3 choices, flags 0003, 5 locks
    flags: Per-session, for-rx-IPv4
    15 hash buckets
      < 0 > IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
      < 1 > IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
      < 2 > IP adj out of Vlan3228, addr 10.30.228.228 513F6560
      < 3 > IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
      < 4 > IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
      < 5 > IP adj out of Vlan3228, addr 10.30.228.228 513F6560
      < 6 > IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
      < 7 > IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
      < 8 > IP adj out of Vlan3228, addr 10.30.228.228 513F6560
      < 9 > IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
      <10 > IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
      <11 > IP adj out of Vlan3228, addr 10.30.228.228 513F6560
      <12 > IP adj out of Vlan3225, addr 10.30.225.225 513F6B60
      <13 > IP adj out of Vlan3227, addr 10.30.227.227 513F66E0
      <14 > IP adj out of Vlan3228, addr 10.30.228.228 513F6560
    Subblocks:
     None

Was mache ich falsch? Laut Handbüchern sollten unterschiedliche dmzlink bwWerte unterschiedliche Lastverteilungsanteile verursachen, aber tatsächlich - das tut es nicht!


UPDATE 1 - vom Benutzer bangal angefordert

R1# show ip bgp all summary

For address family: IPv4 Unicast
BGP router identifier X.X.X.129, local AS number 41096
BGP table version is 22283352, main routing table version 22283352
34749 network entries using 4065633 bytes of memory
61661 path entries using 3206372 bytes of memory
8119/5337 BGP path/bestpath attribute entries using 1299040 bytes of memory
3752 BGP AS-PATH entries using 155474 bytes of memory
2990 BGP community entries using 138266 bytes of memory
146 BGP extended community entries using 5168 bytes of memory
53 BGP route-map cache entries using 1696 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 8871649 total bytes of memory
BGP activity 4716897/4682147 prefixes, 11331539/11269872 paths, scan interval 60 secs

# Here are bgp neighbours from global routing table. Not relevant to the question. IP addresses are hidden 

Neighbor     V       AS    MsgRcvd   MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
X.X.X.1      4       XX219    791704  760380 22283352    0    0 6d17h           1
X.X.X.33     4       XX219 112902498 1315655 22283352    0    0 6d17h           0
X.X.X.238    4       XX772    801422  762830 22283352    0    0 2w5d            0
X.X.X.206    4       XX540   2886112 1313917 22283352    0    0 4w4d         9641
X.X.X.70     4       XX772 188343075 1313853 22283352    0    0 6d14h       25881
X.X.X.78     4       XX772 148265282  941127 22283352    0    0 2w6d        26098

# Here are neighbours for vrf nat.

For address family: VPNv4 Unicast
BGP router identifier X.X.X.129, local AS number 41096
BGP table version is 824, main routing table version 824
1 network entries using 137 bytes of memory
6 path entries using 408 bytes of memory
1 multipath network entries and 3 multipath paths
8119/1 BGP path/bestpath attribute entries using 1299040 bytes of memory
3752 BGP AS-PATH entries using 155474 bytes of memory
2990 BGP community entries using 138266 bytes of memory
146 BGP extended community entries using 5168 bytes of memory
53 BGP route-map cache entries using 1696 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 1600189 total bytes of memory
3 received paths for inbound soft reconfiguration
BGP activity 4716897/4682147 prefixes, 11331539/11269872 paths, scan interval 15 secs

Neighbor        V          AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.30.225.225   4       65000   11003   11443      824    0    0 3d18h           1
10.30.227.227   4       65000    9853   10293      824    0    0 3d18h           1
10.30.228.228   4       65000   10992   11432      824    0    0 3d18h           1

R1# sh ip route vrf nat

Routing Table: nat
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 10.30.228.228 to network 0.0.0.0

     10.0.0.0/24 is subnetted, 4 subnets
C       10.30.0.0 is directly connected, Vlan30
C       10.30.228.0 is directly connected, Vlan3228
C       10.30.227.0 is directly connected, Vlan3227
C       10.30.225.0 is directly connected, Vlan3225
B*   0.0.0.0/0 [20/0] via 10.30.228.228, 3d18h
               [20/0] via 10.30.227.227, 3d18h
               [20/0] via 10.30.225.225, 3d18h

R1# sh ip bgp vpnv4 vrf nat neighbors

R1 sh ip bgp Nachbarn Ausgabe

R1# sh run

R1, auf dem konfigurationssensitive Informationen ausgeführt werden, ist maskiert

Shamanu4
quelle
1
bandwidth 50000Fehlt Ihre laufende Konfiguration von R1 für 'Schnittstelle Vlan3228'? Könnten Sie bitte auch die Ausgabe von 'sh ip bgp <IP of R5>' anhängen?
Andrey Sapegin
1
Auch in der Running-Konfiguration sollten, soweit ich verstanden habe, die Bandbreiten 50 kbs-100 kbs-150 kbs betragen, und Ihre Ausgabe von R1# sh ip bgp vpnv4 vrf nat 0.0.0.0zeigt 125 kbs-250 kbs-350 kbs ...
Andrey Sapegin
1
@AndreySapegin sh ip bgp vpnv4 vrf nat 10.30.228.228zeigt dasselbe an wie sh ip bgp vpnv4 vrf nat 0.0.0.0. Haben Sie das neighborsKeyword verpasst ? Wenn ja, können Sie die Ausgabe von sh ip bgp vpnv4 vrf nat neighbors 10.30.228.228am Ende von R1 sehen. Sh ip bgp Nachbarn Ausgabe
Shamanu4
1
Der Leitfaden Sie erwähnen ( cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html ) unterscheiden zwischen neighbor dmzlink-bw, die nur Werbung für Bandbreite zu Nachbarn (dargestellt in Ihrem config) ermöglicht und bgp dmzlink-bw, Dies ermöglicht einen proportionalen Lastausgleich (und es scheint in Ihrer Konfiguration zu fehlen). Könnten Sie versuchen, bgp dmzlink-bwin Ihre laufende Konfiguration zu integrieren?
Andrey Sapegin
1
@ AndySapegin. Ja, ich bin sicher, das maximum pathssollte unter sein address-family. Ich benötige eine Multipath-Funktion in der VRF-Instanz, jedoch nicht in der globalen Routing-Tabelle. Wenn ich maximum pathsunter stelle, router bgp 100erhalte ich im Ergebnis nur eine Route über R5 und keine Routen über R3 und R2. Gleiches Ergebnis für ibgpunter Adressfamilie, da alle Nachbarn extern sind. Die auf dem Port-Kanal geerbte Bandbreite ist in der Konfiguration konsistent. Ich habe diese Zeile ohne Wirkung entfernt. Commit
Shamanu4

Antworten:

3

Das Hauptproblem scheint eine fehlende bgp dmzlink-bwOption unter der Adressfamilie in der Konfiguration zu sein. Lassen Sie mich jedoch meine Kommentare hier zusammenfassen:

  1. bgp dmzlink-bwunter address-family. neighbor dmzlink-bwErmöglicht nur die Ankündigung der Bandbreite an Nachbarn, während bgp dmzlink-bwder proportionale Lastausgleich selbst ermöglicht wird.
  2. Bei Running-Config bandwidth 50000fehlte die Option für 'Schnittstelle Vlan3228'.
  3. Wie in diesem Konfigurationsbeispiel erwähnt , maximum-paths eibgp 3könnte anstelle von eine Option erforderlich seinmaximum-paths 3
  4. Zusätzlich zu sh ip bgp vpnv4 vrf nat 0.0.0.0und anderen Befehlen, die in den Originalhandbüchern (siehe Frage) von Shamanu4 und Bangal erwähnt wurden, ist es hilfreich zu überprüfen, ob die Anzahl der Verkehrsanteile für Links, deren Lastausgleich verwendet wird, unterschiedlich istsh ip route vrf nat 0.0.0.0
  5. Überprüfen Sie, ob keine anderen Optionen vorhanden sind, die die Konfiguration des Lastausgleichs beeinträchtigen könnten (z. B. bandwidth inheritauf dem Port-Kanal).

Generell ist es manchmal sehr schwierig, das Problem zu identifizieren, wenn Sie eine große Running-Konfiguration mit vielen Optionen haben. Wenn das Problem weiterhin besteht, würde ich ein ähnliches Setup mit leerer Konfiguration erstellen und versuchen, dort nur relevante Optionen zu konfigurieren (minimales Arbeitsbeispiel), um zu sehen, ob es funktioniert und andere Optionen nicht beeinträchtigt, Zugriffslisten (nur als Beispiel) ist in diesem speziellen Fall äußerst unwahrscheinlich) usw. Wenn Sie keine Ersatzhardware haben und Ihr Router in Produktion ist, sodass Sie nicht direkt mit einer leeren Konfiguration experimentieren können, können Sie:

  • Verwenden Sie Linux-PCs / VMs mit Routing-Software wie Quagga (in der Frage erwähnt).
  • Verwenden Sie einen Simulator von Cisco: Boson NetSim für CCNP unterstützt BGP. Ich bin mir jedoch nicht sicher, ob Adressfamilie / VPN / VRF unterstützt werden
  • Verwenden Sie virtuelle Maschinen mit IOS XRv von Cisco. Soweit ich mich erinnere, war es kostenlos mit einer Bandbreitenbeschränkung von 2 Mbit / s erhältlich, was zum Testen ausreichen sollte. Auch hier bin ich mir nicht sicher, ob Adressfamilie / VPN / VRF unterstützt werden: Cisco IOS XRv-Router-Übersicht , VM-Download-Link
  • Verwenden Sie den GNS3- Simulator ( http://www.gns3.com/ ). Es gibt Cisco IOS-Images dafür, aber ich weiß nicht, wie ich sie bekommen soll.
  • Schließlich könnten Sie sogar versuchen, gebrauchte Hardware nur zu Testzwecken so günstig wie möglich bei eBay zu kaufen.
Andrey Sapegin
quelle
1
Kann diese Theorie immer noch nicht bestätigen oder widerlegen. IOS Version 15.1 (2) SY4a hat auch keine Optionen zum Platzieren dmzlink-bwunter address-family. Ich brauche etwas Zeit, um die Widersprüche von Cisco Docs mit dem wirklichen Leben aufzudecken.
Shamanu4
Es ist wirklich seltsam. Sie können versuchen, die folgenden Dokumente anzuzeigen : cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/… , cisco.com/c/en/us/td/docs/ios -xml / ios / iproute_bgp / configuration /… , aber ich sehe nichts in Ihrer Konfiguration fehlen ...
Andrey Sapegin
Ich werde eine Cisco VIRL-Lizenz erwerben und versuchen, dort die Topologie zu simulieren. Ich werde später über alle Ergebnisse in der Post berichten. Danke für die Hilfe.
Shamanu4