[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