[FUG-BR] OpenBGP allowas-in

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Domingo Janeiro 25 11:56:37 BRST 2015


On 01/24/15 19:24, ae moura wrote:
> Uau! patrick!Funcionou direitinho.

Opa, que bom que funcionou ai tambem.

> Quase perfeito exceto que tive que reiniciar o servico, veja abaixo.

Bora ver isso...

>Segundo patch seu que funciona muito bem no OpenBGP tomara que coloque logo no ports.

Daqui uma semana a mais em producao eu mando o PR. Se vai entrar ja n 
sei ;-)

> Não entendi porém seu comentário no patch:
> " Cisco, Juniper and other BGP routing daemons do offer the samefeature, sometimes with explicit control of how many times the ASnumber is accepted in the as-path. It does not help, the wrong setupwill loop anyway, therefore we just allow it any number of times."
> Qual é a diferenca na implementacao?

Cisco, Juniper, Mikrotik, e varios outros engines BGP permitem algo do tipo


allowas-in 3

Isso quer dizer que é permitido até 3 vezes o seu AS no AS-Path da rota 
recebida, mas não será permitido 4 vezes seu AS-path la.

Ou seja na pratica não importa se é 1 ou 10 vezes, a possibilidade de 
loop é exatamente a mesma, então liberar e impor um limite é meio aquele 
negocio... voce permite que seu filho vai pra balada mas impoe um 
limite: nao chegar depois das 3 da manha. Convenhamos o que quer q vc 
tenha medo que ele faca de errado... ele podera fazer até as 3 da manha 
hehehe ou vc confia ou não confia.

Na pratica ainda piora pq vc tem que pensar "quantos prepend do meu 
proprio AS eu ja fiz? quantos desses anuncios prependados podem chegar 
por esse peer?" e ai vc vai concluir que precisaria liberar:

allowas-in = (seu_numero_de_prepend_anunciado+1)

Ou seja... filhao vai pra balada mas nao volte depois de 
(horas_do_fervo_da_balada+1).

Por isso eu preferi uma abordagem do tipo ou voce confia e libera, ou 
nao libera. O risco de loop é o mesmo, independente se voce da 1 metro 
ou 1 km de corda pro cidadao se enforcar.

Alem disso voce viu a simplicidade do patch? Mudancas de 1 ou 2 linhas 
em locais chaves da estrutura. Eu nao quero ter que ir no rde.c e ficar 
contando e comparando com o limite configurado. Quanto maior o patch 
mais dificil de manter e de ser aceito no ports alem de maior 
probabilidade de conflitar com outros.


>Outra coisa coloquei allowas-in no peer e dei reload, nao funcionou. Mas quando reiniciei o openbgpd funcionou, era isso mesmo esperado?

Não, você não tinha que reiniciar o servico ;-)

O "allowas-in" é definido no fechamento da sessão. Não está implementado 
em softreconfig pq não faz muito sentido essa mudanca ser dinamica, 
entao na pior das hipoteses... voce poderia ter dado um clear no peer, 
pra forcar imediatamente a renegociacao. Algo menos radical seria 
aguardar renegociacao de capabilities, que acontece no inicio da sessao 
ou periodicamente, ou ainda se solicitado entre as pontas. Isso pq o 
controle de loop do OpenBGP ja é reprocessado no capabilities change... 
ou seja voce poderia esperar, forcar renegociacao mudando alguma 
capability anunciada... ou na pior das hipoteses dar clear na sessao mas 
reiniciar o processo nao precisava nao ;-)

Abracos e sigamos.




>> From: eksffa em freebsdbrasil.com.br
>> To: freebsd em fug.com.br
>> Date: Sat, 24 Jan 2015 02:47:00 -0200
>> Subject: [FUG-BR] OpenBGP allowas-in
>>
>> Botei a feature no OpenBGP. O patch[1] funciona OK no OpenBSD tambem,
>> alem do FreeBSD claro (e ate aplicou na versão do Linux mas como n
>> uso, só vi que aplicou clean...). Se alguem preferir usar direto no
>> ports ao invés de aplicar o patch na mão o diff está pronto[2] pra
>> enviar um PR pro ports também, mas vou enviar depois de 1 semana de
>> testes.
>> Todo teste é bem-vindo.
>>
>> [1]http://main.bh.freebsdbrasil.com.br/~eksffa/l/local-patch-openbgpd-allowas-in.c> [2]http://main.bh.freebsdbrasil.com.br/~eksffa/l/ports_net_openbgpd-allowas-in.diff
>>
>> 	Allow the AS path of a received route to contain the recipient BGP
>> speaker's AS number any number of times, avoiding Route Decision
>> Engine loop prevention for this peer. This is a feature that should
>> rarely be needed. Usually the need for this feature suggests something
>> wrong on the current BGP setup. However in some particular setups it's
>> just needed, and can be used without breaking BGP or adding loops.
>> Cisco, Juniper and other BGP routing daemons do offer the same
>> feature, sometimes with explicit control of how many times the AS
>> number is accepted in the as-path. It does not help, the wrong setup
>> will loop anyway, therefore we just allow it any number of times. On
>> bgpd.conf(5), use it on a per neighbor/group basis: group "my_peers" {
>> allowas-in (...) neighbor $a_peer { (...) allowas-in } } Shamely, I
>> didn't patch bgpd.conf(5), therefore it's more than welcome. --
>> Patrick Tracanelli
>
>   		 	   		
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


-- 
Patrick Tracanelli


Mais detalhes sobre a lista de discussão freebsd