← Todos os artigos

Seu backbone não é o da internet

Cinco redes alcançam 94% das origens na minha tabela. Ande um salto de AS_PATH e são cinco redes diferentes.

Michel Wijnberg

O artigo anterior terminou com um resultado que parece um fato sobre a internet: cinco sistemas autônomos alcançam 94% dos AS de origem numa tabela de um milhão de caminhos. Aqui estão eles.

AS2516. AS7575. AS2497. AS6939. AS1221.

Agora a parte que importa. São redes da Ásia-Pacífico, e o domínio delas aqui é uma propriedade deste ponto de observação e dos dois upstreams que o alimentam, não uma medição de um backbone global. Deliberadamente não afirmo que a geografia do coletor tenha causado isso: o que a tabela mostra é quais redes esses upstreams específicos puseram nesses caminhos específicos, e a escolha de upstream, a política e as relações comerciais estão todas embaralhadas nisso. Na mesma medição, a Lumen aparece com 11% e a Cogent com 6%, duas redes que a maioria dos engenheiros citaria sem hesitar se lhes pedissem para listar o backbone da internet.

Mova o feed um salto de AS_PATH e a resposta são cinco nomes diferentes.

É disso que trata este artigo, porque não é uma curiosidade. É a propriedade que decide se uma ferramenta está lhe dizendo algo sobre a internet ou algo sobre a sua própria conectividade, e quase nada rotula qual das duas.


O que o ranking está realmente medindo

“Alcance de trânsito” soa como propriedade global. É calculado assim: dos AS de origem na minha tabela, quantos ficam no cone deste AS. Todo termo dessa frase está limitado ao feed, e o cone é tomado sobre a árvore dominante, que o artigo anterior mostrou ser uma aproximação do grafo real em vez de uma descrição dele.

Então a leitura honesta dos cinco nomes acima não é “este é o núcleo da internet”. É:

Dado onde este roteador está e o que seus dois upstreams escolheram lhe mandar, essas cinco redes são aquilo sobre o que sua alcançabilidade repousa.

É uma resposta genuinamente útil. É a que você quer antes de decidir qual contrato de trânsito renegociar. Só não é transferível para mais ninguém, e um produto que a apresentasse como se fosse estaria entregando a geografia do autor como funcionalidade.

Por isso não há lista alguma de redes tier-1 no código do Osprey, e por isso não vai haver. O ranking é calculado por feed, a partir da sua tabela, toda vez. Uma lista fixa estaria certa para quem a escreveu e silenciosamente errada para todos os outros, e a falha seria invisível: os nomes pareceriam plausíveis.


A mesma tabela, uma terceira pergunta, uma quarta resposta

Na série até aqui: ranqueie por contagem de prefixos e você recebe desagregadores. Ranqueie por alcance de trânsito e você recebe os cinco acima. Aqui vai um terceiro eixo, que construímos porque “com quem eu deveria peerar” é, de novo, outra pergunta.

Ranqueie o espaço de endereçamento que chega até você através de trânsito, por origem, a dois saltos ou mais:

AS1136 (KPN). AS6805 (Telefónica Germany). AS9644 (SK Telecom). AS3243 (MEO). AS4739 (iiNet).

Redes de acesso. Nenhuma delas aparece em qualquer das listas anteriores. São as redes cujos assinantes chegam hoje via alguém a quem você paga, que é exatamente o conjunto que um coordenador de peering quer.

E esse eixo é bem mais íngreme que a contagem de prefixos, o que o torna utilizável. As duas colunas abaixo são medidas sobre a mesma população, as origens alcançadas via trânsito, então são diretamente comparáveis entre si. (Não são comparáveis aos 8,3% do artigo anterior: aquele era top-12 por contagem de prefixos sobre a tabela inteira, um denominador diferente.)

Cobertura da população via trânsitoPor espaçoPor contagem de prefixos
Top 1242,2%10,9%
Top 4863,5%27,9%
A mesma visão comutada para o eixo de espaço de endereçamento, no feed do DN42 e não na tabela cheia. Só os candidatos nomeados são desenhados, e o cabeçalho enuncia o resíduo: 984 redes alcançadas apenas via trânsito, os doze nomeados segurando 96,4% de 1,5 M de endereços, o resto não desenhado
A mesma visão comutada para o eixo de espaço de endereçamento, no feed do DN42 e não na tabela cheia. Só os candidatos nomeados são desenhados, e o cabeçalho enuncia o resíduo: 984 redes alcançadas apenas via trânsito, os doze nomeados segurando 96,4% de 1,5 M de endereços, o resto não desenhado

Esse é o eixo rodando num feed diferente, DN42 em vez da tabela cheia, então os nomes e as porcentagens são dele. O que se transfere é a linha de cabeçalho: ela diz de quantas redes o eixo trata, quanto do espaço as desenhadas seguram, e que o restante não está na tela. Uma visão que deixasse cair essa última oração pareceria idêntica e significaria outra coisa.

Três eixos, três respostas disjuntas, uma tabela. Nenhum deles é o ranking. Cada um é resposta a uma pergunta que alguém de fato tem, e a única jogada desonesta disponível é oferecer um deles sem rótulo.


Dois lugares onde nossa própria implementação supôs uma forma que não estava lá

Ambos merecem registro porque são o mesmo erro com roupas diferentes: computar uma propriedade global a partir de uma estrutura local.

Somar uma subárvore não é uma união. O primeiro projeto computava o espaço de trânsito no cliente, somando o espaço de endereçamento de tudo que ficava abaixo de um nó. Isso erra por um fator de 1,3 a 3,6 contra a união real, porque o espaço de uma origem não chega todo por um único trânsito. Espaço que chega até você por dois caminhos é contado duas vezes, e o erro não é uma constante que se possa calibrar; depende de quão multihomed os clientes por acaso são. O campo agora é computado no servidor como uma união genuína sobre os prefixos que passam pelo AS, ou não é servido de jeito nenhum.

O dossiê de um AS no feed do DN42. O alcance de trânsito é dado duas vezes: 1.112 endereços como soma de árvore, e depois 3.112 endereços de espaço único que de fato chega via este AS, com uma nota explicando que a soma de árvore põe cada origem sob um único pai e que a união é a cifra maior e mais verdadeira
O dossiê de um AS no feed do DN42. O alcance de trânsito é dado duas vezes: 1.112 endereços como soma de árvore, e depois 3.112 endereços de espaço único que de fato chega via este AS, com uma nota explicando que a soma de árvore põe cada origem sob um único pai e que a união é a cifra maior e mais verdadeira

A correção está visível no produto em vez de escondida atrás dele. As duas cifras são mostradas, a menor vem rotulada como soma de árvore, e a nota abaixo diz qual é a resposta honesta e por quê. São mais palavras do que uma única cifra precisaria, e é a diferença entre um número e um número com o qual dá para agir.

Um candidato não é necessariamente uma folha. A primeira implementação do terceiro eixo pegava só nós folha, com o raciocínio de que origens ficam na borda. Ela pulava 276 AS carregando 37% de todos os prefixos originados. O AS9808 origina 14.214 prefixos e tem cinco clientes embaixo dele. É a cifra de 94,4% do artigo anterior aparecendo como bug em vez de como estatística: se quase todo trânsito também origina, então “origens são as folhas” não é uma simplificação, é um filtro que descarta um terço da sua resposta.

Os dois foram pegos medindo contra uma tabela real. Nenhum teria sido pego pelo DN42, onde a estrutura é pequena o bastante para que as aproximações se sustentem por acaso.


O filtro que não faz nada aqui e funcionaria para você

Mais um artefato de ponto de observação, e este é quase engraçado.

O terceiro eixo tem um filtro de saltos: mostrar origens a distância dois ou mais, para excluir seus vizinhos diretos. Neste feed ele remove 3 de 7.578 origens. Ele não faz essencialmente nada, porque o ponto de observação é um stub com dois upstreams e portanto quase não tem vizinhos diretos a excluir.

Numa rede com peering de verdade, esse mesmo controle é significativo. Mesmo código, mesmo padrão, e a utilidade dele oscila entre decisiva e inerte dependendo de onde roda.

Nós o mantivemos, porque o valor do eixo está na medição de espaço e não no filtro, e porque a alternativa é calibrar um controle contra um único ponto de observação. Mas é uma boa ilustração de quão longe o instinto de “é assim que uma rede se parece” pode estar de qualquer rede dada.


A ausência também tem o formato do ponto de observação

O artigo 13 argumentou que o que falta na sua tabela não está longe, está ausente, e que essa ausência não tem raio. O ângulo do ponto de observação encerra esse pensamento.

Cada uma das quatro razões pelas quais um caminho falta é uma propriedade da sua posição. Algo não foi anunciado a você. Sua política recusou. Um agregador acima do seu feed colapsou aquilo. Um route server atrás do qual você está não deixou salto. Aponte o mesmo código para outra tabela e um conjunto diferente de coisas se torna invisível, em silêncio e sem que nenhuma delas seja marcada.

Então as lacunas não são ruído que você poderia mediar com mais feeds do mesmo lugar. Elas são estruturadas por onde você senta, que é a forma mais forte do argumento deste artigo: seu ponto de observação não apenas ranqueia a internet de outro jeito, ele decide quais partes dela existem para você.


O ponto

Tudo neste artigo é um número computado corretamente a partir de uma tabela real, e nenhum deles é um fato sobre a internet.

As cinco redes sobre as quais sua tabela repousa, o ranking que converge, se um filtro faz alguma coisa, e até se “origens são folhas” é uma simplificação segura: tudo isso se moveu quando o ponto de observação se moveu, e duas dessas coisas se moveram o bastante para serem bugs.

Um operador que pergunta “como a internet se parece daqui” está fazendo a pergunta certa. A palavra que faz o trabalho é daqui, e uma visão que a deixa cair não está sendo mais simples. Está respondendo a uma pergunta que ninguém fez, usando a conectividade de outra pessoa.


A seguir: o que custa manter um feed completo, medido em vez de estimado, incluindo um padrão nosso que a medição matou. O que um feed completo realmente custa.