[FUG-BR] Freebsd + Quagga + BGP

Renato Frederick renato em frederick.eti.br
Segunda Agosto 26 18:39:18 BRT 2013


On 8/26/2013 10:28 AM, André Gustavo N. Lopes wrote:
> Bom dia Renato, eu não entendi muito bem a necessidade de PBR, não é só uma questão de ajustar os local-preference ?
>
> On Sun, Aug 25, 2013 at 04:44:12PM -0300, Renato Frederick wrote:

André,

Boa Noite!

Sobre o PBR, imagine isto

link1 = 10mb
link2 = 10mb
link3 = 10mb

Imagine, pra simplificar que você tem 3 blocos /24.

redeA 10.0.0.0/24
redeB 10.0.1.0/24
redeC 10.0.2.0/24

PBR seria o seguinte: Você falar que todo o tráfego da redeA sai pelo 
link1, todo trafego da redeB sai pelo link2 e todo tráfego da redeC pelo 
link3.

Agora, imagine que o link3 está 100% usado, mas o link1 está 20% só.

Se você for no BGP e falar que o link1 tem local-preference maior, TODAS 
as 3 redes, redeA, redeB, redeC, começaram a siar pelo link1. Então você 
não resolveu, apenas transferiu o problema do link3 pro link1.

Com o PBR você faria o seguinte:

Analisaria quais IP estão usando, por exemplo, 40% do link3.

Daí, jogaria estes IP e SOMENTE eles para o link1.

Então, o link1 que tinha 20%, vai ter agora 20 + 40 = 60% de uso.
e o link3, que tinha 100%, vai ter só 60%.

então ficou balanceado, 60% link1, 60% link3.

Porém, imagina que o link1 caiu. sua regra está manual, você teria que 
entrar no firewall e mudar a regra.

Com o PF + OPENBGPD você faz o seguinte que resolve.

pega todas as redes(full rouring) aprendidas pelo BGP do link1 e poe na 
table do PF <link1>

Faz o mesmo com o link2 e 3.

E daí faz uma regra de fwd:

pass out quick route-to ( em0 ip.remoto ) from { 10.0.0.0/24 } to 
<link1> keep state

assim, se o link1 cair, a table <link1> estará vazia(já que o openbgpd 
não vai popular ela).

isto é o que o cisco faz no bgp dele, você usa o bgp + estado da 
interface(fisica ou loopback). Se a interface cai, aquela origem é 
roteada para outra, usando pesos.

então, em resumo, local-prefence redireciona TODAS as redes de origem, 
manipula só destino. Usando este esquema, você  manipula a origem 
também(com o route-to) e destino(com local-preference, weight, etc).

No passado eu até perguntei isto aqui, acho que foi até o Patrick que 
falou algo sobre "BATMAN", olha o link abaixo:

http://www.fug.com.br/historico/html/freebsd/2008-11/msg00477.html

Esta ideia dele de usar o pf + openbgpd foi muito legal, e me ajudou 
demais!!



Mais detalhes sobre a lista de discussão freebsd