[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