
Postado originalmente por
uesleycorrea
O que você está sofrendo não se chama loop, e sim, assimetria e isso é normal em BGP. O BGP escolhe (caso você não manipule) o melhor caminho de saída, e o de retorno é você quem define na exportação dos seus prefixos. Com certeza você está tendo problemas, pois exportando o mesmo bloco para ambas operadoras, os roteadores na Internet elegem um caminho só (o best path) para fazer a volta. Então, tens mais download em um link do que no outro.
Para balancear: se seu bloco for um /20, crie no networks além do bloco /20, dois /21. Para exportar, faça um route-map de saída, exportando cada bloco usando prefix-list (lembrando de continuar exportando o /20 pelos dois) para cada upstream diferente. E o upload, pode deixar por conta do bgp, que ele vai analisar qual é o menor as-path para chegar ao caminho. Segue um exemplo:
router bgp 65000
bgp router-id xxx.xxx.xxx.xxx
bgp log-neighbor-changes
network xxx.xxx.xxx.0/20
network xxx.xxx.xxx.0/21
network xxx.xxx.xxx.8/21
neighbor abc peer-group
neighbor abc remote-as 65001
neighbor abc description bgp-abc
neighbor abc update-source fastethernet 2
neighbor abc soft-reconfiguration inbound
neighbor abc route-map abc-in in
neighbor abc route-map abc-out out
neighbor def peer-group
neighbor def remote-as 65002
neighbor def soft-reconfiguration inbound
neighbor def route-map def-IN in
neighbor def route-map def-OUT out
neighbor def-V6 peer-group
neighbor def-V6 remote-as 65002
neighbor yyy.yyy.yyy.yyy peer-group def
neighbor zzz.zzz.zzz.zzz peer-group abc
!
address-family ipv6
network 2001:db8::/32
neighbor def-V6 activate
neighbor def-V6 next-hop-self
neighbor def-V6 soft-reconfiguration inbound
neighbor def-V6 route-map def-OUT-V6 out
neighbor 2001:db8::4 peer-group def-V6
exit-address-family
!
ip prefix-list bloco-inteiro seq 5 permit xxx.xxx.xxx.0/20
ip prefix-list primeiro-21 seq 5 permit xxx.xxx.xxx.0/21
ip prefix-list segundo-21 seq 5 permit xxx.xxx.xxx.8/21
!
ipv6 prefix-list blocointeiro-OUT-V6 seq 10 permit 2001:db8::/32
!
route-map abc-OUT permit 2
match ip address prefix-list bloco-inteiro
!
route-map abc-OUT permit 3
match ip address prefix-list primeiro-21
set as-path prepend 65000 65000
!
route-map abc-OUT permit 4
match ip address prefix-list segundo-21
!
route-map def-OUT-V6 permit 10
match ipv6 address prefix-list blocointeiro-OUT-V6
!
route-map abc-IN permit 10
!
route-map def-IN permit 5
!
route-map def-OUT permit 2
match ip address prefix-list bloco-inteiro
!
route-map def-OUT permit 3
match ip address prefix-list primeiro-21
!
route-map def-OUT permit 4
match ip address prefix-list segundo-21
set as-path prepend 65000 65000
!
line vty
!
Está aí, de mãos beijadas, com direito a IPv6. Os blocos que você exportar /21 preferencialmente por um fornecedor, no outro, você coloca o as-path prepend (com o número do seu ASN).
Qualquer coisa, grita aí. Mas em teoria, é só adaptar ao seu cenário.