Balanceamento de carga de custo desigual do Cisco BGP

9

Estou tentando implementar o recurso de balanceamento de carga desigual de custo BGP na minha rede. De acordo com os manuais da cisco (longo: http://www.cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html , curto: https://ccieblog.co.uk / bgp / bgp-desigual-load-cost-sharing ) Eu criei essa topologia líquida:

topologia líquida

R1 - roteador onde estou tentando implementar o balanceamento de carga para o tráfego de saída. A tabela VRF com nome naté usada.

R2-R4 - servidores NAT executando quagga, com rota padrão para o R5 compartilhado com o R1 no eBGP.

Configuração R1

Versão do R1 IOS: 12.2 (33) SXJ4 (s72033-adventerprisek9_wan-mz.122-33.SXJ4.bin)

Configuração R2 ( R3 R4 apenas identificação do roteador e vlan diferem)

Como resultado, tenho 3 rotas padrão diferentes no R1 com a mesma contagem de compartilhamento - 1/1 (1: 1: 1). Mas a proporção 1: 2: 3 é extinta:

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

O que estou fazendo errado? De acordo com os manuais, dmzlink bwvalores diferentes devem causar diferentes proporções de compartilhamento de carga, mas, de fato - isso não acontece!


ATUALIZAÇÃO 1 - solicitada pelo usuário 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

Saída de vizinhos R1 sh ip bgp

R1# sh run

R1 executando informações confidenciais de configuração é mascarada

Shamanu4
fonte
1
Sua configuração de execução do R1 falha bandwidth 50000na 'interface Vlan3228'? Você também pode anexar a saída de 'sh ip bgp <IP of R5>'?
precisa
1
Também no-config em execução, tanto quanto eu entendi, os bandwidthes deve ser 50kbs-100kbps-150kbs, e sua saída de R1# sh ip bgp vpnv4 vrf nat 0.0.0.0espectáculos 125kbs-250kbs-350kbs ...
Andrey Sapegin
1
@AndreySapegin sh ip bgp vpnv4 vrf nat 10.30.228.228exibe o mesmo que sh ip bgp vpnv4 vrf nat 0.0.0.0. Você perdeu a neighborspalavra-chave? Se assim for, a saída de sh ip bgp vpnv4 vrf nat neighbors 10.30.228.228você pode ver no final do R1 sh saída vizinhos ip BGP
Shamanu4
1
O guia que você mencionou ( cisco.com/c/en/us/td/docs/ios/12_2s/feature/guide/fsbgplb.html ) diferencia entre neighbor dmzlink-bw, o que permite apenas a publicidade da largura de banda para os vizinhos (apresentada na sua configuração) e bgp dmzlink-bw, que permite o balanceamento de carga proporcional (e parece estar faltando na sua configuração). Você poderia tentar colocar bgp dmzlink-bwna sua configuração em execução?
precisa
1
@AndreySapegin. Sim, eu tenho certeza que maximum pathsdeve estar abaixo address-family. Eu preciso do recurso de caminhos múltiplos na instância vrf, mas não na tabela de roteamento global. Se eu colocar maximum pathsabaixo router bgp 100, obtive no resultado apenas uma rota via R5 e nenhuma rota via R3 e R2. Mesmo resultado para ibgpa família de endereços, porque todos os vizinhos são externos. A largura de banda herdada no canal da porta é consistente na configuração. Eu removi esta linha sem efeito. comprometer
Shamanu4

Respostas:

3

O principal problema parece ser uma bgp dmzlink-bwopção ausente na família de endereços na configuração. Deixe-me, no entanto, resumir meus comentários aqui:

  1. bgp dmzlink-bwabaixo address-family. neighbor dmzlink-bwapenas permite a publicidade da largura de banda para os vizinhos, enquanto bgp dmzlink-bwpermite o balanceamento proporcional de carga.
  2. Running-config tinha a bandwidth 50000opção ausente para 'interface Vlan3228'
  3. Conforme mencionado neste exemplo de configuração , maximum-paths eibgp 3pode ser necessária uma opção em vez demaximum-paths 3
  4. Além dos sh ip bgp vpnv4 vrf nat 0.0.0.0comandos e outros mencionados nos guias originais (consulte a pergunta), por Shamanu4 e bangal, é útil verificar se as contagens de compartilhamento de tráfego são diferentes para links com balanceamento de carga usandosh ip route vrf nat 0.0.0.0
  5. Verifique se não há outras opções que possam interferir na configuração do balanceamento de carga (por exemplo, bandwidth inheritno canal da porta)

Como um conselho geral, às vezes é muito difícil identificar o problema, quando você tem uma grande configuração de execução com muitas opções. Se o problema persistir, eu criaria uma configuração semelhante com a configuração vazia e tentaria configurar apenas opções relevantes lá (Exemplo Mínimo de Trabalho), para ver se funciona e não interfere com outras opções, listas de acesso (apenas como exemplo, ele é extremamente improvável neste caso particular) etc. Se você não possui hardware sobressalente e seu roteador está em produção, para que você não possa experimentar diretamente com a configuração vazia, você pode:

  • Use PCs / VMs Linux com software de roteamento como o Quagga (mencionado na pergunta)
  • Use o simulador da Cisco: o Boson NetSim para CCNP suporta BGP, no entanto, não tenho certeza se a família de endereços / VPN / VRF é suportada
  • Use máquinas virtuais com o IOS XRv da Cisco. Tanto quanto me lembro, estava disponível gratuitamente com limite de largura de banda de 2 Mbit / s, o que deveria ser suficiente para testes. Novamente, não tenho certeza se a família de endereços / VPN / VRF é suportada: Visão geral do roteador Cisco IOS XRv , link de download da VM
  • Use o simulador GNS3 ( http://www.gns3.com/ ). Existem imagens do Cisco IOS para isso, no entanto, não sei como obtê-las.
  • Finalmente, você pode até tentar comprar hardware usado de lugares como o ebay o mais barato possível apenas para fins de teste.
Andrey Sapegin
fonte
1
Ainda não é possível confirmar ou refutar essa teoria. A versão 15.1 (2) SY4a do IOS também não tem opções para colocar dmzlink-bwabaixo address-family. Preciso de um tempo para desvendar as contradições da Cisco com a vida real.
Shamanu4
Isso é realmente estranho. Você pode tentar consultar os seguintes 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 /… , mas não vejo nada faltando na sua configuração ...
Andrey Sapegin
Vou comprar a licença VIRL da Cisco e tentar simular a topologia lá. Mais tarde, reportarei sobre quaisquer resultados. Obrigado pela ajuda.
Shamanu4