Equilibrio de carga de costos desiguales de Cisco BGP

9

Estoy tratando de implementar la función de equilibrio de carga de costo desigual de BGP en mi red. De acuerdo con los manuales de Cisco (largo: http://www.cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html , corto: https://ccieblog.co.uk / bgp / bgp-unequal-load-cost-cost-sharing ) He creado dicha topología de red:

topología neta

R1 : enrutador donde intento implementar el equilibrio de carga para el tráfico saliente. natSe utiliza la tabla VRF con nombre .

R2-R4 : servidores NAT que ejecutan quagga, con ruta predeterminada a R5 compartida con R1 a través de eBGP.

Configuración R1

Versión R1 IOS: 12.2 (33) SXJ4 (s72033-adventerprisek9_wan-mz.122-33.SXJ4.bin)

Configuración de R2 ( R3 R4 solo el router-id y vlan difieren)

Como resultado, tengo 3 rutas predeterminadas diferentes en R1 con el mismo recuento de acciones: 1/1 (1: 1: 1). Pero proporción 1: 2: 3 expexted:

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é estoy haciendo mal? Según los manuales, los dmzlink bwvalores diferentes deberían causar una proporción de carga compartida diferente, pero de hecho, ¡no es así!


ACTUALIZACIÓN 1 - solicitado por el usuario 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

Salida de vecinos R1 sh ip bgp

R1# sh run

R1 que ejecuta información confidencial de configuración está enmascarada

Shamanu4
fuente
1
¿Su configuración de ejecución de R1 falla bandwidth 50000para 'interface Vlan3228'? ¿Podría adjuntar también la salida de 'sh ip bgp <IP of R5>'?
Andrey Sapegin
1
También en la configuración de ejecución, según tengo entendido, los anchos de banda deben ser 50kbs-100kbs-150kbs, y su salida de R1# sh ip bgp vpnv4 vrf nat 0.0.0.0muestra 125kbs-250kbs-350kbs ...
Andrey Sapegin
1
@AndreySapegin sh ip bgp vpnv4 vrf nat 10.30.228.228muestra lo mismo que sh ip bgp vpnv4 vrf nat 0.0.0.0. ¿Te has perdido la neighborspalabra clave? Si es así, sh ip bgp vpnv4 vrf nat neighbors 10.30.228.228puede ver la salida al final de R1 sh ip bgp vecinos salida
Shamanu4
1
La guía que mencionó ( cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html ) diferencia entre neighbor dmzlink-bw, lo que solo permite la publicidad de ancho de banda a los vecinos (presentada en su configuración) y bgp dmzlink-bw, lo que permite el equilibrio de carga proporcional (y parece faltar en su configuración). ¿Podría intentar poner bgp dmzlink-bwen su configuración en ejecución?
Andrey Sapegin
1
@AndreySapegin. Sí, estoy seguro de que maximum pathsdebería estar debajo address-family. Necesito la función de múltiples rutas en la instancia de vrf pero no en la tabla de enrutamiento global. Si pongo maximum pathsbajo router bgp 100que ponerse en consecuencia sólo una ruta a través de R5 y no hay rutas a través de R3 y R2. El mismo resultado para ibgpbajo dirección-familia, porque todos los vecinos son externos. El ancho de banda heredado en Port-channel es consistente en la configuración. Eliminé esta línea sin efecto. commit
Shamanu4

Respuestas:

3

El problema clave parece ser una bgp dmzlink-bwopción que falta en la familia de direcciones en la configuración. Permítanme, sin embargo, resumir mis comentarios aquí:

  1. bgp dmzlink-bwbajo address-family. neighbor dmzlink-bwsolo permite anunciar el ancho de banda a los vecinos, mientras que bgp dmzlink-bwpermite el equilibrio proporcional de la carga.
  2. Running-config tenía la bandwidth 50000opción faltante para 'interface Vlan3228'
  3. Como se menciona en este ejemplo de configuración , la opción maximum-paths eibgp 3podría ser necesaria en lugar demaximum-paths 3
  4. Además de sh ip bgp vpnv4 vrf nat 0.0.0.0y otros comandos mencionados en las guías originales (vea la pregunta), de Shamanu4 y bangal, es útil verificar si el recuento de tráfico compartido es diferente para los enlaces con carga equilibrada usandosh ip route vrf nat 0.0.0.0
  5. Compruebe si no hay otras opciones que puedan interferir con la configuración del equilibrio de carga (por ejemplo, bandwidth inheriten el canal del puerto)

Como consejo general, a veces es muy difícil identificar el problema, cuando tienes una gran configuración de ejecución con muchas opciones. Si el problema persiste, crearía una configuración similar con una configuración vacía y trataría de configurar solo las opciones relevantes allí (Ejemplo de trabajo mínimo), para ver si funciona y no interfiere con otras opciones, listas de acceso (solo como ejemplo, es extremadamente improbable en este caso en particular), etc. Si no tiene hardware de repuesto y su enrutador está en producción, de modo que no puede experimentar directamente con la configuración vacía, podría:

  • Use PC / VM Linux con software de enrutamiento como Quagga (mencionado en la pregunta)
  • Use el simulador de Cisco: Boson NetSim para CCNP es compatible con BGP, sin embargo, no estoy seguro si la familia de direcciones / VPN / VRF son compatibles
  • Use máquinas virtuales con IOS XRv de Cisco. Hasta donde recuerdo, estaba disponible de forma gratuita con un límite de ancho de banda de 2 Mbit / s, que debería ser suficiente para las pruebas. Nuevamente, no estoy seguro de si la familia de direcciones / VPN / VRF son compatibles: descripción general del enrutador Cisco IOS XRv , enlace de descarga de VM
  • Utilice el simulador GNS3 ( http://www.gns3.com/ ). Hay imágenes de Cisco IOS para ello, sin embargo, no sé cómo obtenerlas.
  • Finalmente, incluso podría intentar comprar hardware usado en lugares como eBay lo más barato posible solo con fines de prueba.
Andrey Sapegin
fuente
1
Todavía no puedo confirmar ni refutar esta teoría. IOS versión 15.1 (2) SY4a tampoco tiene opciones para colocar dmzlink-bwdebajo address-family. Necesito algo de tiempo para desentrañar las contradicciones de los documentos de Cisco con la vida real.
Shamanu4
Es realmente extraño Puede intentar ver los siguientes documentos: 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 / ... , pero no veo que falte nada en su configuración ...
Andrey Sapegin
Voy a comprar la licencia de Cisco VIRL e intentar simular la topología allí. Informaré sobre cualquier resultado en la publicación más tarde. Gracias por la ayuda.
Shamanu4