Équilibrage de charge de coûts inégaux Cisco BGP

9

J'essaie d'implémenter la fonctionnalité d'équilibrage de charge à coûts égaux BGP dans mon réseau. Selon les manuels de Cisco (long: http://www.cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html , court: https://ccieblog.co.uk / bgp / bgp-inégal-load-cost-sharing ) J'ai construit une telle topologie nette:

topologie nette

R1 - routeur où j'essaie d'implémenter l'équilibrage de charge pour le trafic sortant. La table VRF avec nom natest utilisée.

R2-R4 - Serveurs NAT exécutant quagga, avec une route par défaut vers R5 partagée avec R1 via eBGP.

Configuration R1

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

Configuration R2 ( R3 R4 uniquement l'ID de routeur et le vlan diffèrent)

En conséquence, j'ai 3 itinéraires par défaut différents sur R1 avec le même nombre de partages - 1/1 (1: 1: 1). Mais la proportion 1: 2: 3 s'exprimait:

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

Qu'est-ce que je fais mal? Selon les manuels, différentes dmzlink bwvaleurs devraient entraîner des proportions de partage de charge différentes, mais en fait - ce n'est pas le cas!


UPDATE 1 - demandé par l'utilisateur bangal

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 sortie des voisins

R1# sh run

R1 en cours d'exécution les informations sensibles de configuration sont masquées

Shamanu4
la source
1
Votre configuration courante de R1 manque-t-elle bandwidth 50000pour 'interface Vlan3228'? Pourriez-vous également joindre la sortie de «sh ip bgp <IP of R5>»?
Andrey Sapegin
1
Aussi dans la configuration en cours, pour autant que je sache, les bandes passantes devraient être de 50kbs-100kbs-150kbs, et votre sortie de R1# sh ip bgp vpnv4 vrf nat 0.0.0.0spectacles 125kbs-250kbs-350kbs ...
Andrey Sapegin
1
@AndreySapegin sh ip bgp vpnv4 vrf nat 10.30.228.228affiche la même chose que sh ip bgp vpnv4 vrf nat 0.0.0.0. Avez-vous oublié un neighborsmot-clé? Si c'est le cas, la sortie de sh ip bgp vpnv4 vrf nat neighbors 10.30.228.228vous pouvez voir à la fin de la sortie des voisins R1 sh ip bgp
Shamanu4
1
Le guide que vous avez mentionné ( cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html ) fait la différence entre les deux neighbor dmzlink-bw, ce qui permet uniquement la publication de la bande passante auprès des voisins (présentée dans votre configuration) et bgp dmzlink-bw, ce qui permet un équilibrage de charge proportionnel (et il semble manquer dans votre configuration). Pourriez-vous essayer de mettre bgp dmzlink-bwdans votre configuration en cours d'exécution?
Andrey Sapegin
1
@AndreySapegin. Oui, je suis sûr que cela maximum pathsdevrait être inférieur address-family. J'ai besoin de la fonctionnalité de trajets multiples dans l'instance vrf mais pas dans la table de routage globale. Si je mets maximum pathssous router bgp 100j'obtiens en résultat un seul itinéraire via R5 et aucun itinéraire via R3 et R2. Même résultat pour ibgpunder address-family, car tous les voisins sont externes. La bande passante héritée sur Port-canal est cohérente dans la configuration. J'ai supprimé cette ligne sans effet. commit
Shamanu4

Réponses:

3

Le problème clé semble être une bgp dmzlink-bwoption manquante sous la famille d'adresses dans la configuration. Permettez-moi cependant de résumer mes commentaires ici:

  1. bgp dmzlink-bwsous address-family. neighbor dmzlink-bwactive uniquement la publication de la bande passante auprès des voisins, tout en bgp dmzlink-bwpermettant l'équilibrage de charge proportionnel lui-même.
  2. Running-config avait une bandwidth 50000option manquante pour 'interface Vlan3228'
  3. Comme mentionné dans cet exemple de configuration , une option maximum-paths eibgp 3peut être nécessaire au lieu demaximum-paths 3
  4. En plus des sh ip bgp vpnv4 vrf nat 0.0.0.0autres commandes mentionnées dans les guides originaux (voir la question), par Shamanu4 et bangal, il est utile de vérifier si le nombre de partages du trafic est différent pour les liens dont la charge est équilibrée à l'aide desh ip route vrf nat 0.0.0.0
  5. Vérifiez s'il n'y a pas d'autres options susceptibles d'interférer avec la configuration de l'équilibrage de charge (par exemple, bandwidth inheritsur le canal de port)

En règle générale, il est parfois très difficile d'identifier le problème, lorsque vous avez une grande configuration de fonctionnement avec beaucoup d'options. Si le problème persiste, je créerais une configuration similaire avec une configuration vide et j'essaierais de configurer uniquement les options pertinentes (exemple de travail minimal), pour voir si cela fonctionne et qu'il n'interfère pas avec d'autres options, accéder aux listes (tout comme l'exemple, il est extrêmement improbable dans ce cas particulier) etc. Si vous n'avez pas de matériel de rechange et que votre routeur est en production, de sorte que vous ne pouvez pas expérimenter directement avec une configuration vide, vous pouvez:

  • Utiliser des PC / VM Linux avec un logiciel de routage comme Quagga (mentionné dans la question)
  • Utilisez le simulateur de Cisco: Boson NetSim pour CCNP prend en charge BGP, cependant, je ne sais pas si la famille d'adresses / VPN / VRF est prise en charge
  • Utilisez des machines virtuelles avec IOS XRv de Cisco. Pour autant que je m'en souvienne, il était disponible gratuitement avec une limite de bande passante de 2 Mbit / s, ce qui devrait être suffisant pour les tests. Encore une fois, je ne sais pas si la famille d'adresses / VPN / VRF est prise en charge: vue d'ensemble du routeur Cisco IOS XRv , lien de téléchargement de la machine virtuelle
  • Utilisez le simulateur GNS3 ( http://www.gns3.com/ ). Il existe des images Cisco IOS pour cela, cependant, je ne sais pas comment les obtenir.
  • Enfin, vous pouvez même essayer d'acheter du matériel d'occasion dans des endroits comme eBay aussi bon marché que possible à des fins de test uniquement.
Andrey Sapegin
la source
1
Je ne peux toujours pas confirmer ou infirmer cette théorie. IOS version 15.1 (2) SY4a n'a pas non plus d'options à placer dmzlink-bwsous address-family. J'ai besoin d'un peu de temps pour démêler les contradictions de Cisco Docs avec la vie réelle.
Shamanu4
C'est vraiment étrange. Vous pouvez essayer de consulter les documents suivants: 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 /… , mais je ne vois rien qui manque dans votre config ...
Andrey Sapegin
Je vais acheter une licence Cisco VIRL et essayer de simuler la topologie là-bas. Je ferai rapport sur les résultats dans un article plus tard. Merci pour l'aide.
Shamanu4