Votre cœur de réseau n’est pas celui d’internet
Cinq réseaux atteignent 94 % des origines de ma table. Déplacez-vous d’un saut d’AS_PATH et ce sont cinq réseaux différents.
Michel Wijnberg
L’article précédent s’achevait sur un résultat qui ressemble à un fait sur internet : cinq systèmes autonomes atteignent 94 % des AS d’origine d’une table d’un million de chemins. Les voici.
AS2516. AS7575. AS2497. AS6939. AS1221.
Et maintenant ce qui compte. Ce sont des réseaux d’Asie-Pacifique, et leur domination ici est une propriété de ce point de vue et des deux transitaires qui l’alimentent, non une mesure d’un cœur de réseau mondial. Je ne prétends délibérément pas que la géographie du collecteur en soit la cause : ce que la table montre, ce sont les réseaux que ces transitaires-là ont placés sur ces chemins-là, et le choix des transitaires, la politique et les relations commerciales y sont tous entremêlés. Dans la même mesure, Lumen apparaît à 11 % et Cogent à 6 %, deux réseaux que la plupart des ingénieurs citeraient sans hésiter si on leur demandait d’énumérer le cœur d’internet.
Déplacez le flux d’un saut d’AS_PATH et la réponse tient en cinq autres noms.
Cet article parle de cela, car ce n’est pas une curiosité. C’est la propriété qui décide si un outil vous dit quelque chose sur internet ou quelque chose sur votre propre connectivité, et presque rien n’indique laquelle.
Ce que le classement mesure réellement
« Portée de transit » sonne comme une propriété globale. Elle se calcule ainsi : parmi les AS d’origine de ma table, combien se trouvent dans le cône de cet AS. Chaque terme de cette phrase est borné au flux, et le cône est pris sur l’arbre dominant, dont l’article précédent a montré qu’il est une approximation du graphe réel et non une description de celui-ci.
La lecture honnête des cinq noms ci-dessus n’est donc pas « voilà le cœur d’internet ». C’est :
Étant donné où se trouve ce routeur et ce que ses deux transitaires ont choisi de lui envoyer, ces cinq réseaux sont ce sur quoi repose son accessibilité.
C’est une réponse réellement utile. C’est celle que vous voulez avant de décider quel contrat de transit renégocier. Elle n’est simplement transférable à personne d’autre, et un produit qui la présenterait comme si elle l’était livrerait la géographie de son auteur comme une fonctionnalité.
C’est pourquoi il n’y a aucune liste de réseaux de niveau 1 dans le code d’Osprey, et pourquoi il n’y en aura pas. Le classement est calculé par flux, à partir de votre table, à chaque fois. Une liste en dur serait juste pour celui qui l’a écrite et silencieusement fausse pour tous les autres, et la défaillance serait invisible : les noms auraient l’air plausibles.
La même table, une troisième question, une quatrième réponse
Dans la série jusqu’ici : classez par nombre de préfixes et vous obtenez des désagrégateurs. Classez par portée de transit et vous obtenez les cinq ci-dessus. Voici un troisième axe, construit parce que « avec qui devrais-je peerer » est encore une autre question.
Classez l’espace d’adressage qui vous parvient via du transit, par origine, à deux sauts ou plus :
AS1136 (KPN). AS6805 (Telefónica Germany). AS9644 (SK Telecom). AS3243 (MEO). AS4739 (iiNet).
Des réseaux d’accès. Aucun n’apparaît dans les deux listes précédentes. Ce sont les réseaux dont les abonnés arrivent aujourd’hui via quelqu’un que vous payez, ce qui est exactement l’ensemble que veut un coordinateur de peering.
Et cet axe est bien plus pentu que le nombre de préfixes, ce qui le rend exploitable. Les deux colonnes ci-dessous sont mesurées sur la même population, les origines atteintes via du transit, elles sont donc directement comparables entre elles. (Elles ne sont pas comparables aux 8,3 % de l’article précédent : celui-ci portait sur le top 12 par nombre de préfixes sur la table entière, un dénominateur différent.)
| Couverture de la population via transit | Par espace | Par nombre de préfixes |
|---|---|---|
| Top 12 | 42,2 % | 10,9 % |
| Top 48 | 63,5 % | 27,9 % |
C’est l’axe tournant sur un autre flux, DN42 plutôt que la table complète : les noms et les pourcentages sont donc les siens. Ce qui se transpose, c’est la ligne d’en-tête : elle dit de combien de réseaux l’axe parle, quelle part de l’espace détiennent ceux qui sont dessinés, et que le reliquat n’est pas à l’écran. Une vue qui laisserait tomber cette dernière proposition aurait l’air identique et voudrait dire autre chose.
Trois axes, trois réponses disjointes, une table. Aucun n’est le classement. Chacun répond à une question que quelqu’un se pose vraiment, et le seul geste malhonnête disponible est d’en proposer un sans étiquette.
Deux endroits où notre propre implémentation a supposé une forme absente
Les deux méritent d’être notés car c’est la même erreur habillée différemment : calculer une propriété globale à partir d’une structure locale.
Sommer un sous-arbre n’est pas une union. La première conception calculait l’espace de transit côté client, en additionnant l’espace d’adressage de tout ce qui pendait sous un nœud. C’est faux d’un facteur 1,3 à 3,6 par rapport à l’union réelle, car l’espace d’une origine ne vous parvient pas entièrement par un seul transit. L’espace qui vous parvient par deux voies est compté deux fois, et l’erreur n’est pas une constante qu’on pourrait étalonner ; elle dépend du degré de multihoming des clients. Le champ est désormais calculé côté serveur comme une véritable union sur les préfixes qui traversent l’AS, ou il n’est pas servi du tout.
Le correctif est visible dans le produit plutôt que caché derrière. Les deux chiffres sont montrés, le plus petit est étiqueté somme d’arbre, et la note en dessous dit lequel est la réponse honnête et pourquoi. Cela fait plus de mots qu’il n’en faudrait pour un seul chiffre, et c’est la différence entre un nombre et un nombre sur lequel on peut agir.
Un candidat n’est pas nécessairement une feuille. La première implémentation du troisième axe ne prenait que les nœuds feuilles, au motif que les origines se trouvent en bordure. Elle sautait 276 AS portant 37 % de tous les préfixes originés. AS9808 origine 14 214 préfixes et a cinq clients en dessous de lui. C’est le chiffre de 94,4 % de l’article précédent qui réapparaît sous forme de bug plutôt que de statistique : si presque tout transit origine aussi, alors « les origines sont les feuilles » n’est pas une simplification, c’est un filtre qui jette un tiers de votre réponse.
Les deux ont été détectés en mesurant contre une vraie table. Aucun ne l’aurait été avec DN42, où la structure est assez petite pour que les approximations tiennent par hasard.
Le filtre qui ne fait rien ici et qui marcherait chez vous
Encore un artefact de point de vue, et celui-là est presque drôle.
Le troisième axe a un filtre de saut : montrer les origines à distance deux ou plus, afin d’exclure vos voisins directs. Sur ce flux, il retire 3 origines sur 7 578. Il ne fait pour ainsi dire rien, parce que le point de vue est un réseau terminal à deux transitaires et n’a donc presque pas de voisins directs à exclure.
Sur un réseau avec du vrai peering, ce même réglage est significatif. Même code, même valeur par défaut, et son utilité oscille entre décisive et inerte selon l’endroit où il tourne.
Nous l’avons gardé, parce que la valeur de l’axe est dans la mesure d’espace et non dans le filtre, et parce que l’alternative serait de régler un contrôle sur un point de vue unique. Mais c’est une bonne illustration de la distance qui peut séparer l’intuition « voilà à quoi ressemble un réseau » de n’importe quel réseau donné.
L’absence aussi a la forme du point de vue
L’article 13 soutenait que ce qui manque à votre table n’est pas loin, c’est absent, et que cette absence n’a pas de rayon. L’angle du point de vue achève cette idée.
Chacune des quatre raisons pour lesquelles un chemin manque est une propriété de votre position. Quelque chose ne vous a pas été annoncé. Votre politique l’a refusé. Un agrégateur en amont de votre flux l’a effondré. Un route server derrière lequel vous êtes n’a laissé aucun saut. Pointez le même code sur une autre table et un autre ensemble de choses devient invisible, silencieusement et sans qu’aucune ne soit signalée.
Les manques ne sont donc pas du bruit que l’on pourrait moyenner avec davantage de flux depuis le même endroit. Ils sont structurés par l’endroit où vous êtes, ce qui est la forme la plus forte de l’argument de cet article : votre point de vue ne se contente pas de classer internet différemment, il décide quelles parties d’internet existent pour vous.
L’essentiel
Tout dans cet article est un chiffre correctement calculé à partir d’une vraie table, et aucun n’est un fait sur internet.
Les cinq réseaux sur lesquels votre table repose, le classement qui converge, le fait qu’un filtre serve à quelque chose, et même le fait que « les origines sont des feuilles » soit une simplification sûre : tout cela a bougé quand le point de vue a bougé, et deux de ces choses ont bougé assez pour devenir des bugs.
Un exploitant qui demande « à quoi ressemble internet vu d’ici » pose la bonne question. Le mot qui fait le travail est ici, et une vue qui le laisse tomber n’est pas plus simple. Elle répond à une question que personne n’a posée, avec la connectivité de quelqu’un d’autre.
Ensuite : ce que coûte le maintien d’un flux complet, mesuré plutôt qu’estimé, y compris une valeur par défaut de notre cru que la mesure a tuée. Ce que coûte vraiment un flux complet.