Mostrando postagens com marcador BGP. Mostrar todas as postagens
Mostrando postagens com marcador BGP. Mostrar todas as postagens

segunda-feira, 23 de março de 2009

Você está preparado?

"Você está preparado?". É assim que começa a mensagem que circulou hoje na lista LACNOG (lista mantida pelo LACNIC). Esta mensagem, enviada pelo Roque Gagliano, ressalta uma importante questão sobre o suporte do ASN de 32 bits nas mais diversas plataformas e fabricantes. Assunto que já foi discutido por aqui em outubro do ano passado. Naquela época, algumas versões oficiais ainda não suportavam ASN de 32 bits.

O link enviado hoje pelo Roque remete a uma página que contém um bom resumo para verificar como está o suporte a ASN 32 bits hoje, além de muitas outras informações sobre qual é o padrão adotado para a notação do ASN de 32 bits e o calendário de alocação de ASN adotado pelos RIR. Para quem acredita em saci, caipora e cuca (como eu) também pode conferir como está a alocação de ASN (16 bits) no relatório produzido pelo Geoff Huston. A imagem abaixo (retirada deste relatório) mostra a progressão das alocações de ASN de 16 bits até março de 2009 e ainda a projeção linear e exponencial para o futuro.... não muito distante.

Mais informações em:

quarta-feira, 12 de novembro de 2008

Monitoração de prefixos BGP na Internet

O Problema

Depois dos diversos problemas de sequestro de prefixos BGP na Internet - como o famoso caso YouTube versus Pakistan Telecom - as ferramentas de monitoração de prefixos BGP, gratuitas ou pagas, ganharam mais visibilidade entre os administradores de rede ao redor do mundo. E nesta última terça-feira, 11 de novembro às 2:00 horas GMT, uma destas ferramentas começou a disparar inúmeros alertas alegando que o AS16735 havia sequestrado uma grande quantidade de prefixos (mais de 50% dos prefixos existentes na Internet). Veja um exemplo do alerta gerado pelo BGPmon:

You Receive this email because you are subscribed to BGPmon.net.
For more details about these updates please visit:
http://bgpmon.net/showupdates.php

====================
Possible Prefix Hijack (Code: 11)
1 number of peer(s) detected this updates for your prefix
10.10.80.0/20:
Update details: 2008-11-11 02:24 (UTC)
10.10.80.0/20
Announced by: AS16735 (Companhia de Telecomunicacoes do
Brasil Central)
Transit AS: 27664 (CTBC Multimídia)
ASpath: 27664 16735
=====================
Como os administradores que receberam estes alertas não conseguiram alcançar o AS16735, logo assumiram que o sequestro realmente tinha acontecido, já que ao verificar a situação dos prefixos sequestrados no RIS (ferramenta do RIPE) ou no looking glass do PTT-Metro, também constataram que o AS-path (27664 16735 ou ainda 22548 16735) não estava correto.

Os Fatos

O primeiro fato interessante é que tanto o AS27664 e quanto o AS22548 são clientes de trânsito do AS16735 e os dois primeiros (AS27664 e o AS22548) estão alimentando com a tabela BGP completa o projeto RIS do RIPE no PTT-Metro (rrc15). Isso significa que tanto para o RIS quanto para o BGPmon (que utiliza as informações do RIS para monitorar e gerar os alertas) ínumeros prefixos da tabela BGP passaram a ser anunciados pelo AS16735 - o que comumente é conhecido como leaking (ou vazamento) da tabela BGP. Já que o AS16735 não possui autoridade administrativa sobre estes prefixos, podemos supor então que houve um re-anúncio da tabela BGP, este último causado por algum problema interno ao AS16735.

Esse sequestro de prefixos, no entanto, não foi percebido em nenhum outro ponto da Internet - ficando restrito ao AS16735 e seus clientes, como é o caso do AS27664 e AS22548 - graças aos filtros existentes na maioria dos sistemas autônomos ou grandes operadoras de telecomunicações. Ainda de acordo com as análises do BGPmon e da Renesys, este problema durou aproximadamente 5 minutos. Mas, mesmo depois deste período, muitos outros sistemas autônomos continuaram não alcançando a rede do AS16735, pois grande parte do AS16735 não estava acessível em razão de outros problemas. E este último fato aumentou consideravelmente o burburinho sobre este problema.

As Lições Aprendidas

A primeira grande lição é não confiar somente em uma fonte de informação, como foi o caso de muita gente. Para ter certeza do problema, verifique a informação nos mais diversos servidores de looking glass espalhados pelo mundo. Como exemplo, o primeiro looking glass que eu verifiquei naquela madrugada, sequer soube da existência do AS16735 no caminho destes inúmeros prefixos... Mesmo assim, esse tipo de problema não deve ser subestimado.

É interessante também utilizar vários sistemas de monitoração e verificação dos prefixos na tabela BGP da Internet, desde que estes sistemas sejam alimentados por fontes de informação diferentes (esse não foi o caso do RIS, BGPmon ou do Looking Glass do PTT-Metro). Alguns exemplos de ferramentas disponíveis para verificação são: Internet Alert RegistryWatchMY.net, BGPmon e PHAS.

Por último (e já não tão relacionado com o que acabei de descrever) fica a dica de uma ferramenta (ainda beta) para visualização mais amigável das informações colhidas pelo projeto RIS e pode ser acessada da página principal do projeto, entrando com a informação de número de AS ou prefixo próximo ao canto superior direito.


Tela da ferramenta de visualização do RIS/RIPE.

Atualizado em 13/Nov/2008:

Ontem a noite, algumas horas depois de terminar este post, Danny McPherson publicou no blog da Arbor Networks uma análise muito semelhante a exposta acima, no entanto, ele acrecentou um ponto que eu também gostaria de destacar aqui:

Toda esta confusão só poderá ser evitada com a utilização de uma solução segura para roteamento entre-domínios (ou sistemas autônomos). E este padrão está em fase de desenvolvimento dentro do IETF, mais especificamente através do grupo SIDR (Secure Inter-Domain Routing). Queria destacar também a apresentação do Ricardo Patara (do LACNIC) na última reunião do GTER sobre este tema. Vale a pena dar uma olhada!

Mais informações em:

segunda-feira, 6 de outubro de 2008

BGP AS com 4 Bytes

Tradicionalmente o número de sistema autônomo (aka AS) possui 2 bytes (ASN16 ou 2 octetos), permitindo assim que estes sistemas autônomos utilizem teoricamente qualquer número no intervalo de 1 até 65536. O número de sistema autônomo identifica uma rede (ou um conjunto de redes) que possui uma mesma política de roteamento e está sob administração de um conjunto comum de pessoas (por exemplo, um provedor de serviços Internet). Este número é utilizado pelo protocolo BGP, mais precisamente no atributo AS_PATH, que determina a que distância encontra-se uma rede, medindo essa distância pelo número de sistemas autônomos que deve-se atravessar para alcançar a rede em questão.

Com o crescimento exponencial (?) da Internet, espera-se que o esgotamento do número de AS disponível para alocação esgote-se por volta do ano de 2015, no mais otimista dos casos. Por isso foi criada uma extensão ao tradicional AS de 2 bytes para um número AS de 4 bytes (ASN32) e este padrão foi publicado oficialmente pelo IETF no RFC 4893 no início de 2007. O padrão garante a compatibilidade entre os antigos e os novos números de AS de forma a garantir a interoperabilidade entre os dois padrões, já que esta informação deve ser utilizada dentro do protocolo BGP (pelo atributo AS_PATH) que é visível através de toda Internet.

Alguns grandes fabricantes de equipamentos de rede já estão se adaptando ao novo padrão, como é o caso da Juniper que a partir da versão 9.x do JunOS já suporta ASN32. Vale lembrar que o padrão para utilização de communities dentro do BGP também será ligeiramente alterado (para a Juniper, por exemplo, o padrão para communites com o ASN32 será 334324L:132 para o ASN 334324 e target 132). A Cisco diz possuir o código para ASN32 implementado na versão 12.5T do IOS que deve estar disponível em breve.

Vale lembrar que os primeiros testes desse novo padrão foram feitos com software-routers como o openbgpd e o Quagga. Para mais informações sobre o como os fabricantes estão se preparando e os testes realizados até agora na Internet visite o Wiki AS4 sobre ASN32.

Mais informações:

quinta-feira, 31 de julho de 2008

Cisco BGP default-information originate

Não é um cenário muito comum utilizar uma rota default dentro do BGP para roteamento na Internet, no entanto, uma rota default é muito útil quando estamos falando de redes baseadas na tecnologia MPLS (utilizando BGP entre o CE e o PE), principalmente em topologias HUB-and-SPOKE.

Basicamente, é possível anunciar uma rota default de duas maneiras: 1) utilizando o comando default-information originate e 2) utilizando o comando network 0.0.0.0. A questão é: qual a diferença entre estes dois comandos ? (afinal de contas, os dois anunciam uma rota default! :-)

1) Default-information originate

Para utilizar o comando default-information originate dentro da configuração do BGP é necessário que uma rota default seja redistribuída para o BGP de outro protocolo de roteamento (dinâmico ou estático). Por exemplo:

ip route 0.0.0.0 0.0.0.0 189.1.1.1
!
router bgp 65000
default-information originate
redistribute static

2) Network 0.0.0.0

Se utilizarmos o comando network 0.0.0.0 dentro da configuração do BGP, desde que uma rota default esteja instalada na tabela de roteamento, o roteador passará a anunciar uma rota default para seus peers BGP (independente de como esta rota default foi instalada na tabela, via protocolo dinâmico ou uma simples rota estática).
ip route 0.0.0.0 0.0.0.0 189.1.1.1
!
router bgp 65000
network 0.0.0.0
Mais informações em: Cisco IP Routing Protocols Command Reference: Default-information originate

segunda-feira, 2 de junho de 2008

Rcat Tool


Rcat (Root Cause Analysis Tool) é uma ferramenta desenvolvida por Anthony Lambert (Orange Labs) para análise de problemas no roteamento eBGP. Esta ferramenta tem uma interface não muito amigável mas é bem completa e interessante. Para testá-la, basta entrar com um período (não maior que 7 dias), depois um número de sistema autônomo, por exemplo "as10429" no campo logical query, digitar o código e clicar no botão Search. A seguir, basta navegar pelos resultados.

sábado, 31 de maio de 2008

iBGPlay "all'italiana"

Além do BGPlay (ferramenta desenvolvida dentro do project NCC da RIPE e já comentada aqui no blog), uma outra ferramenta interessante para visualização de roteamento entre domínios (ou sistemas autônomos) é a iBGPlay (http://www.ibgplay.org), projeto da Universidade de Roma na Itália e uma espécie de atualização do BGPlay. A iBGPlay possui praticamente os mesmos parâmetros de configuração e uma interface mais amigável. 

segunda-feira, 26 de maio de 2008

BGP, route servers e afins

Para quem acompanha o blog já deve ter observado as outras dicas a respeito dos route servers. Estes são roteadores reais (ou simulados através de software), geralmente a livre disposição para acesso remoto (via telnet) para troubleshooting de problemas de anúncios de rotas BGP e alcançabilidade pela Internet.

A dica agora é para o site CiscoNet que representa e dispõe no mapa Mundi os route servers disponíveis bastando apenas um click para que se acesse o route server desejado.

Para quem deseja ir mais a fundo neste assunto há neste site muitas outras informações interessantes além do acesso aos route servers como noções e configuração de BGP, sites de whois, listas de servidores de dns entre outras.

sexta-feira, 29 de fevereiro de 2008

AS17557 e o Youtube

No último dia 24 de fevereiro o governo do Paquistão ordenou o bloqueio do site Youtube em seu país alegando que o site exibia vídeos com conteúdo considerado impróprio para seus cidadãos. A Pakistan Telecom (AS 17557), tentando cumprir esta decisão, anunciou internamente um prefixo /24 do Youtube em seus roteadores. Tudo transcorreria bem se o AS17557 tivesse anunciado o prefixo do Youtube somente para seus peers BGP internos, mas não foi isso o que realmente aconteceu.

O AS17557 passou a anunciar de forma não-autorizada para o seu peer BGP de trânsito (AS3491) o prefixo 208.65.153.0/24 que pertence ao Youtube. O AS3491 aceitou e repassou o anúncio do prefixo para Internet o que resultou em um sequestro de todo o tráfego destinado ao prefixo citado pois este prefixo é mais específico do que o anuncionado pelo próprio Youtube (que o anuncia através do bloco 208.65.152.0/22). Este problema deixou o Youtube inacessível por até duas horas em diversas regiões do mundo (possívelmente em toda a Internet).

Este tipo de problema não é novo no BGP e já aconteceu outras vezes, tal como no famoso caso do AS7007 em 1997 e diversos outros. Dentre as informações publicadas sobre o caso do Youtube e o AS17557, quero destacar duas análises: 1) da empresa Renesys e 2) do RIPE-NCC.

Esta é uma boa oportunidade para comentar sobre o projeto RIS do RIPE-NCC. O RIS (Routing Information Service) é um projeto que colheta informações da tabela BGP (full routing) ao redor do mundo. O projeto possui mais de 600 peers BGP e está presente em 16 pontos de troca de tráfego (IXP ou Internet Exchange Point). No Brasil, quem quiser estabelecer um peer BGP com o projeto deve estar conectado ao PTT.br, onde o RIPE-NCC já possui conectividade.

Os dados observados pelo projeto posteriormente podem ser analisados nas diversas ferramentas disponíveis no site: http://www.ripe.net/is-portal/. Uma ferramenta que com certeza é destaque é o BGPlay. Esta ferramenta possibilita visualizar graficamente as mudanças dos anúncios de prefixos no BGP com o passar do tempo e é utilizada para mostrar como aconteceu o o anúncio indevido do prefixo do Youtube.

quarta-feira, 13 de fevereiro de 2008

BGP Multipath

Permite que a tabela de rotas tenha múltiplos caminhos para um mesmo destino, ou seja, na tabela de roteamento IP não é só instalada o best path para um determinado destino, mas também um número finito de rotas adicionais (max. de 6) de forma a permitir balanceamento de carga entre múltiplos links.

Esta feature pode ser aplicada a: eBGP, iBGP ou ambos (eiBGP).

Para a escolha das demais rotas da tabela BGP que serão instaladas na tabela de roteamento IP são utilizados os seguintes critérios (que devem ser iguais ao do best path):

  • Weight
  • Local preference
  • AS-PATH length
  • Origin
  • MED
  • Um dos listados abaixo:
  1. Neighboring AS ou sub-AS (antes da inclusão da feature no IOS para eiBGP Multipath)
  2. AS-PATH (depois da inclusão da feature no IOS para eiBGP Multipath)

Obs1: por definição o protocolo BGP sempre anuncia somente o best path para seus neighbors, portanto, as múltiplas rotas instaladas na tabela de roteamento IP ficarão restritas ao roteador local.

Obs2: caso as rotas não tenham "custos" equivalentes conforme os critérios citados acima, deve-se utilizar outra feature chamada BGP Link Bandwidth, mas que também só pode ser utilizada com VPN MPLS.

terça-feira, 23 de janeiro de 2007

Looking Glass

Looking glass é uma ferramenta que permite efetuar consultas sobre tabelas de roteamento (protocolo BGP) e testes de ping e traceroute. Ela é muito útil para que os administradores de rede possam obter uma visão externa de como estão sendo propagados os anúncios dos seus blocos CIDR na Internet.

A grande maioria dos looking glasses são de acesso gratuito e são implementados através de uma interface web, mas também é possível encontrar quem disponibilize o acesso direto a um roteador (real ou virtual) em que se pode conectar através de telnet. Em ambos os casos os comandos que podem ser efetuados são limitados para evitar problemas de segurança.

Segue a lista de looking glasses que costumo consultar:


GlobalCrossing - telnet://route-server.gblx.net
GlobalCrossing - http://www.globalcrossing.com/network/network_looking_glass.aspx

Host.net - telnet://route-server.host.net
Hurricane Electric - http://lg.he.net/
iPivot - http://lg.ipivot.net.br/
iVeloz - http://lg.iveloz.net.br/
Maxiweb - http://lg.maxiweb.com.br/cgi-local/lg.cgi
NetBotanic - http://lg.netbotanic.com.br/lg.php
NTT - http://www.us.ntt.net/support/looking-glass/
PCH - https://prefix.pch.net/applications/lg/

PTTMetro-RJ - telnet://lg.rj.ptt.br
PTTMetro-SP - telnet://lg.sp.ptt.br
RedIRIS - http://www.rediris.es/red/lg/
RNP - https://memoria.rnp.br/ip/lg.php
Savvis - http://as3561lg.savvis.net/lg.html
Seabone - https://gambadilegno.noc.seabone.net/lg/
SUNET - http://stats.sunet.se/looking-glass/lg.cgi
SouthTech Telecom - http://bgp.stech.net.br/lg
Sprint - https://www.sprint.net/lg/lg_start.php
Telefônica TIWS https://www.globalsolutions.telefonica.com/en/wholesale/looking-glass/
Unifique - http://asn28343.net.br/
Zayo - http://lg.zayo.com/lg.cgi

sábado, 20 de janeiro de 2007

Whois centralizado

O time da Cymru (http://www.cymru.com/) está disponibilizando gratuitamente no link abaixo uma ferramenta de whois centralizado que vai facilitar em muito as identificações de AS numbers de origem. As informações são atualizadas de 4 em 4 horas o que confere grande credibilidade as informações divulgadas e o mais interessante é que ele permite mostrar também as informações das entidades que um determinado AS faz peering.

https://asn.cymru.com/cgi-bin/whois.cgi

Maiores informações de como utilizar as ferramentas podem ser encontradas em:

http://www.cymru.com/BGP/asnlookup.html

terça-feira, 2 de janeiro de 2007

Traceroute for Dummies

Disclaimer: Os exemplos deste post não refletem a realidade.

A ferramenta traceroute é utilizada para determinar o caminho (ou rota) por onde os pacotes IP trafegam de uma origem A até um destino B na rede. No entanto, a forma como esta ferramenta é utilizada e como são determinadas as rotas na Internet pode confundir o usuário desatento.

O traceroute funciona enviando pacotes com o campo Time To Live (TTL) configurado para 1. O primeiro roteador (primeiro hop) envia então um pacote (ICMP) indicando que o pacote não pode ser roteado (devido ter expirado o TTL) para a origem. Após receber a indicação de erro, um outro pacote é enviado com o TTL configurado para 2 e o segundo roteador (segundo hop) neste momento enviará uma indicação de erro para a origem. Esse processo continua até que se alcance o destino ou um limite pré-determinado. Para mais informações sobre o funcionamento do traceroute consultar o RFC1393.

Uma das desvantagens deste mecanismo é que existem alguns roteadores (ou firewalls de camada 3) que não enviam pacotes ICMP TTL Expiried e, portanto, o traceroute ficará incompleto nestes casos. No entanto, o mecanismo do traceroute continuará funcionando ou mesmo o acesso da origem até o destino independentemente do resultado do traceroute.

Vejamos então o exemplo abaixo:

traceroute to registro.br (200.160.2.3), 30 hops max, 38 byte packets
1 10.13.0.1 (10.13.0.1) 13.016 ms 14.776 ms 20.168
ms
2 c9060002.virtua.com.br (201.6.0.2) 26.941 ms 12.479 ms 47.129 ms
3 c9060005.virtua.com.br (201.6.0.5) 15.636 ms 15.005 ms 13.898 ms
4 embratel-G6-0-gacc05.spo.embratel.net.br (200.178.78.1) 25.453 ms 12.044 ms 12.600 ms
5 ebt-C1-core03.spo.embratel.net.br (200.230.242.18) 166.976 ms 152.516 ms 59.465 ms
MPLS Label=440 CoS=0 TTL=1 S=1
6 200.244.40.185 (200.244.40.185) 25.348 ms 32.426 ms 45.846 ms
MPLS Label=26 CoS=0 TTL=1 S=1
7 ebt-G6-0-gacc02.pae.embratel.net.br (200.230.221.130) 34.828 ms 26.831 ms 40.176 ms
8 brasiltelecom-P4-1-gacc02.pae.embratel.net.br (200.248.240.26) 51.079 ms 40.072 ms 35.036 ms
9 BrT-G7-1-1-pae-core01.brasiltelecom.net.br (201.10.225.29) 173.797 ms 70.255 ms 48.286 ms
MPLS Label=836 CoS=0 TTL=1 S=1
10 BrT-G3-0-bsace-core01.brasiltelecom.net.br (201.10.192.33) 50.676 ms 61.465 ms 49.934 ms
MPLS Label=898 CoS=0 TTL=1 S=1

11 BrT-P2-11-spopa-core01.brasiltelecom.net.br (201.10.192.169) 61.742 ms 54.972 ms 72.244 ms
MPLS Label=35 CoS=0 TTL=1 S=1
12 BrT-G0-1-2-spopa302.brasiltelecom.net.br (201.10.241.150) 47.699 ms 86.113 ms 79.095 ms
13 BRT-RegistroBR.brasiltelecom.net.br (200.169.193.2) 55.980 ms 52.105 ms 71.012 ms
14 registro.br (200.160.2.3) 58.213 ms 49.184 ms 70.845 ms

Este traceroute, feito de um acesso net/virtua para um IP do registro.br, mostra por onde os pacotes devem passar para sair do meu computador até os servidores do Registro.br: net/virtua, embratel, brasiltelecom e finalmente, registro.br. Observe o caminho de ida traçado em verde e o caminho de volta (do registro.br para o meu computador) destacado em vermelho. Este caminho destacado em vermelho é a interconexão entre NET e Registro.br através do PTT-Metro.

Desta figura podemos rapidamente chegar a duas conclusões importantes:

1) O tempo total apresentado nos pacotes de A (net/virtua) até B (registro.br) é o tempo de ida (destacado em verde) adicionado ao tempo de volta (em vermelho).

2) Sabendo que o tempo total é o tempo de ida + volta, então também devemos admitir que, dada a política de roteamento adotada por cada provedor presente na rede, o pacote de resposta para cada um dos hops pode retornar por caminhos diferentes do caminho de ida e, portanto, o tempo apresentado por cada hop pode sofrer influência de outros caminhos que não aquele que podemos visualizar na saída do traceroute (caminho de ida).

Por exemplo, se observarmos atentamente as conexões da figura acima veremos que a embratel possui uma conexão com a globalcrossing (gblx) que, por sua vez, possui uma conexão com a net/virtua. Em um determinado momento os pacotes da embratel até a net/virtua podem (devido a política de roteamento adotada pela embratel) trafegar pela gblx e, portanto, o tempo da net/virtua até a embratel será a soma do tempo de ida (net/virtua até embratel) e do tempo de volta (embratel até net/virtua, passando pela gblx). A observação de um tempo de resposta elevado no hop embratel poderá portanto indicar um problema na net/virtua, embratel ou gblx.

A ferramenta traceroute pode ser facilmente utilizada nos principais sistemas operacionais disponíveis (unix/linux ou windows). No unix/linux o traceroute utiliza geralmente pacotes UDP (utilizar opção "-I" para pacotes ICMP) e no windows o tracert utiliza pacotes ICMP. Além disso, podemos utilizar front-ends disponíveis na web para obter o resultado da ferramenta traceroute - dentre outras ferramentas - para analisar problemas de rede verificando o caminho de diversos provedores e lugares do mundo para um destino específico. Para mais informações acessar o website traceroute.org mantido por Thomas Kernen (thanks Thomas!).