No post anterior você aprendeu o que é o BGP, como configurá-lo e os seus diferentes atributos.
Nest post, veremos de forma prática, como estes atributos podem influenciar o roteamento das redes mas primeiro, um pouco de teoria.
Quando dois routers estabelecem uma sessão BGP, eles trocam entre si as seguintes mensagens:
OPEN - primeira mensagem enviada após a sessão TCP ser estabelecida. Usada para enviar informações como ASN e BGP router-id.
KEEPALIVE - enviado periodicamente para garantir que a sessão se mantenha ativa. Caso a mensagem não seja enviado no tempo esperado (hold-timer), a sessão é terminada.
NOTIFICATION - envianda quando ocorre algum problema ou alguma condição em particular.
UPDATE - enviada para atualizar informações como PATH Attributes associado a determinados prefixos/redes.
Alguns atributos BGP são enviados quando dois routers pretendem estabelecer sessão, ou após a sessão já ter sido estabelecida. Os atributos podem ser categorizados da seguinte forma:
Well known, Mandatory - precisam aparecer em toda mensagem UPDATE. É suportado por todos os vendors. Como exemplo temos NEXT_HOP, AS_PATH.
Well-Known, Discretionary - podem ou não aparecer em todas as mensagens UPDATE mas devem ser suportados por todos os vendors. Como exemplo temos LOCAL_PREF e AT_AGGREGATE.
Optional, Transitive - pode ou não ser suportado por todos os vendors. Vai ser ignorado se não for reconhecido pelo receptor. Como exemplo temos AGGREGATOR COMMUNITY.
Optional, Non-Transitive - pode ou não ser suportado por todos os vendors. Não é necessário reencaminhar, pode ser ignorado pelo router vizinho.
Os atributos Transitive, podem ser enviados de um AS para outro. Os Non-Transitive não são anunciados para fora do AS. Vamos ver alguns exemplos práticos.
NEXT_HOP
É um atributo well-known, mandatory, transitive e deve estar presente em todas as mensagens update. É o IP do router vizinho para redes aprendidas remotamente. Poderá ser 0.0.0.0 para redes anunciadas usando o comando network ou aggregate. O NEXT_HOP precisa ser alcançável (estar na tabela de routing) e é alterado quando passa por AS diferentes.
Weight
É um atributo proprietário da Cisco, non-transitive e local. Quanto mais alto for o valor melhor será preferência. Para redes anunciadas localmente terão um valor 32678 e 0 para redes aprendidas remotamente. Pode ser alterado por vizinho ou usando route-maps.
R4
ip prefix-list WEIGHT permit 10.102.0.0/24 le 32
route-map SET_WEIGHT permit 10
match ip address prefix-list WEIGHT
set weight 30
route-map SET_WEIGHT permit 99
router bgp 65105
neighbor 192.168.4.23 remote-as 64512
add ipv4
neighbor 192.168.4.23 route-map SET_WEIGHT in
ou
router bgp 65105
neighbor 192.168.4.23 remote-as 64512
add ipv4
neighbor 192.168.4.23 weight 30
LOCAL_PREF
É um atributo well-known, discretionary, non-transitive e deve ser suportado por todos os vendors mas não precisa aparecer em todas as mensagens UPDATE. Usado para influenciar o AS em que inserido, quanto maior o valor melhor será a preferência, tendo 100 como valor padrão. É o atributo mais recomendado para influenciar rotas anunciadas pelo routers externos, influenciado o tráfego com destino as redes anunciadas. Pode ser alterado usando route-maps.
R4
ip prefix-list LOCAL_PREF permit 10.102.0.0/24 le 32
route-map SET_LOCAL_PREF permit 10
match ip address prefix-list LOCAL_PREF
set local-preference 200
route-map SET_LOCAL_PREF permit 99
router bgp 65105
neighbor 192.168.4.23 remote-as 64512
add ipv4
neighbor 192.168.4.23 route-map SET_LOCAL_PREF in
AS_PATH
É um atributo well-known, mandatory, transitive e deve estar presente em todas as mensagens UPDATE. É visto como uma lista ordenada (AS_SEQUENCE), sendo lida da direita para a esquerda. Por vezes também pode ser uma lista desordenada (AS_SET). Usada para prevenção de loop, quanto menor for o valor melhor será a preferência. Pode ser alterada usando route-maps.
Sem manipulação
Usando route-map.
ip prefix-list AS_PATH permit 10.102.0.0/24 le 32
route-map SET_AS_PATH permit 10
match ip address prefix-list AS_PATH
set as-path prepend 65102 65102 65102
route-map SET_AS_PATH permit 99
router bgp 65105
bgp log-neighbor-changes
neighbor 192.168.4.23 remote-as 64512
!
address-family ipv4
neighbor 192.168.4.23 route-map SET_AS_PATH in
Leitura adicional
https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html