L’Internet est très étendu, et comporte d’innombrables réseaux ayant chacun ses particularités. Il est relativement fréquent, par exemple, qu’il y ait un problème depuis tel réseau mais pas depuis tel autre. Il faut donc disposer de moyens d’interroger un service depuis divers endroits. C’est ce que permettent les sondes RIPE Atlas, des milliers de petites machines qui, placées un peu partout dans l’Internet, permettent à tous et toutes de regarder si ça marche.
Le principe
Les sondes Atlas sont des petits boîtiers qui étaient autrefois fabriqués spécialement sur les spécifications du RIPE1, mais qui sont désormais des machines du commerce2, avec un logiciel adapté. Des volontaires les installent un peu partout dans le monde, connectées par des réseaux très variés. Elles effectuent des mesures actives, par exemple en envoyant des messages à d’autres machines et en attendant leur réponse. Ces sondes sont aujourd’hui au nombre de 8 300 actives, ce qui en fait certainement le plus grand réseau de mesure de l’Internet3.
L’une des originalités de ce service est que les sondes font ces mesures sur demande. Tout le monde (oui, vous aussi) peut demander « je voudrais essayer de joindre 2001:67c:2218:751::105
depuis trente sondes situées au Brésil » et obtenir un résultat.
On peut ainsi vérifier le bon fonctionnement d’un service depuis plusieurs endroits. Très souvent, lorsqu’une panne partielle se produit, l’administrateur réseaux négligent se contente de répondre « non, pour moi, ça marche », sans penser que d’autres réseaux ne sont pas aussi chanceux. Tester qu’un service marche depuis un seul point de mesure est très insuffisant.
Certains louent des machines distantes chez divers opérateurs dans le monde pour faire ces tests, mais cela revient vite cher et ne donne qu’un nombre de points de mesure très faible. D’autres utilisent un VPN avec divers points de sortie mais cela ne permet pas de tester tous les problèmes possibles. Et, là encore, le nombre de points de mesure est très faible, par rapport à ce que permet Atlas.
C’est ainsi que l’Afnic, qui a une concession de service public pour la gestion du .fr
, utilise Atlas. La convention avec l’État impose entre autres l’envoi mensuel de rapports au gouvernement, indiquant les performances et la fiabilité du service. Ces rapports sont en bonne partie fondés sur des mesures faites avec Atlas. L’Afnic utilise également Atlas pour déboguer les problèmes signalés, surtout quand ils commencent par « ça ne marche pas depuis tel FAI »4.
Les sondes Atlas permettent de faire des mesures avec les protocoles suivants :
- ICMP (Internet Control Message Protocol), en l’occurrence son service Echo Request/Echo Reply, tel qu’il est utilisé par la commande ping, afin de savoir si une machine est joignable5,
- traceroute (pas un protocole, mais une façon d’utiliser des protocoles internet pour déterminer la route suivie par les paquets IP vers une cible),
- DNS (Domain Name System), ce qui est évidemment particulièrement intéressant pour un registre de noms de domaine, comme l’Afnic,
- TLS (Transport Layer Security), mais dans une version limitée, permettant juste de récupérer le certificat du serveur,
- NTP (Network Time Protocol),
- HTTP (Hypertext Transfer Protocol) mais dans une version limitée, permettant juste de parler aux ancres Atlas6.
Un exemple de mesure avec Atlas
Voyons un exemple concret. Chaque mesure faite avec Atlas est stockée dans les serveurs du RIPE et peut être affichée par la suite. La mesure 52277291 consistait à demander une résolution DNS du nom www.impots.gouv.fr
, au moment où celui-ci était victime d’une attaque par déni de service (dDoS), au printemps 20237. On peut visualiser les résultats de plusieurs manières, ici, on utilise l’interface Web d’Atlas pour voir le code de retour (rcode) des résolveurs DNS utilisés par les sondes (chacune utilise le résolveur configuré sur le réseau où elle est connectée). On voit que plus d’un tiers des sondes reçoit un code de retour SERVFAIL (Server Failure), indiquant que l’attaque a été un succès partiel.
Figure 1 : Une des visualisations possibles de la mesure 52277291, un point orange étant une sonde Atlas qui n’a pu obtenir la résolution de noms demandée.
Déclencher des mesures
Les mesures effectuées par les sondes Atlas peuvent être déclenchées de plusieurs façons. On peut se servir de l’interface Web pour lancer les mesures et les analyser8, mais aussi le faire via l’API9, l’interface de programmation d’Atlas, pour laquelle il existe plusieurs programmes tout faits, mais qui permet aussi de développer les siens. Voyons d’abord avec l’interface Web. On va créer une mesure ICMP (« ping ») vers 192.134.1.25
:
Figure 2 : Début de définition d’une mesure, ici avec ICMP sur IPv4
On sélectionne ensuite les sondes. Ici, dix sondes prises dans l’AS10 3215, celui d’Orange :
Figure 3 : Choix des sondes pour une mesure. Atlas dispose de plusieurs critères pour les sélectionner.
On crée la mesure, et on a le résultat11 :
Figure 4 : Résultats d’une mesure. Tous les points sont verts, tout s’est bien passé et le résultat est positif.
Et voyons maintenant l’utilisation de programmes, ici avec l’outil « officiel », ripe-atlas-tools, un programme en ligne de commande pour lancer des mesures et visualiser leur résultat. Une fois l’outil installé12 et configuré13, on peut lancer, par exemple, une mesure DNS :
% ripe-atlas measure dns --probes 3 internetsociety.org.lr
Looking good! Measurement 73436126 was created …
…
Probe #1007557
===============================================================================
; <<>> RIPE Atlas Tools <<>> internetsociety.org.lr.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47937
;; flags: qr ra rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;internetsociety.org.lr. IN A
;; ANSWER SECTION:
internetsociety.org.lr. 1200 IN A 104.219.248.49
;; Query time: 2594.44 msec
;; SERVER: 127.0.0.11#53(127.0.0.11)
;; WHEN: Sat Jun 15 10:25:23 CEST 2024
;; MSG SIZE rcvd: 56
On voit que le résultat est affiché de manière à ressembler aux commandes de test et de débogage des réseaux classiques, ici, la sortie est conçue pour ressembler à celle de dig.
De la même façon, on peut demander un traceroute :
% ripe-atlas measure traceroute --probes 3 --traceroute-show-asns \
2001:67c:217c:4::2
Looking good! Measurement 73436086 was created …
Probe #1001423
Sat Jun 15 10:23:53 CEST 2024
1 2001:4bd8:52:1::81:67 AS199284 2.776 ms 0.943 ms 0.944 ms
2 2a01:75c0:1000::6a AS199284 1.164 ms 1.02 ms 3.718 ms
3 2001:920:0:7::72 AS8220 6.492 ms 6.479 ms 6.43 ms
4 2001:920:c000:0:212:74:90:32 AS8220 29.847 ms 31.732 ms 32.567 ms
5 2001:7f8:43::2486:1 30.298 ms 30.296 ms 30.237 ms
6 2001:67c:217c:4::2 AS2486 30.32 ms 30.287 ms 30.313 ms
…
Pour tous les protocoles, ce programme fournit un très grand nombre d’options pour tester tous les cas possibles. N’hésitez pas à regarder la documentation.
Un autre programme utilisant l’API est Blaeu, développé à l’Afnic. Il est surtout intéressant pour obtenir des statistiques agrégées. Par exemple, la mesure « brésilienne » citée au début a été créée ainsi :
% blaeu-reach --requested 30 --country BR 2001:67c:2218:751::105
27 probes reported
Test #73433215 done at 2024-06-15T07:31:02Z
Tests: 78 successful tests (96.3 %), 0 errors (0.0 %), 3 timeouts (3.7 %), average RTT: 202 ms
On peut aussi demander un traceroute, depuis le même pays :
% blaeu-traceroute --format --requested 3 --country BR 2001:67c:217c:4::2
…
Test #73612634 done at 2024-06-17T13:51:32Z
…
From: 2804:b48:1975:be00:da58:d7ff:fe03:539 262732 PROSERVER TELECOMUNICACOES S.A., BR
Source address: 2804:b48:1975:be00:da58:d7ff:fe03:539
Probe ID: 61742
1 2804:b48:1975:be00::1 262732 PROSERVER TELECOMUNICACOES S.A., BR [1.298, 1.178, 0.505]
2 2804:b48:19ff:ffff:10:254:253:1 262732 PROSERVER TELECOMUNICACOES S.A., BR [4.984, 6.004, 6.56]
3 2804:b48:19ff:ffff:a::a 262732 PROSERVER TELECOMUNICACOES S.A., BR [6.782, 5.728, 5.852]
4 2804:30c:4:80::10:1 28343 UNIFIQUE TELECOMUNICACOES SA, BR [15.708, 15.976, 15.698]
5 fd00::10:85:161:26 NA NA [16.374, 16.005, 16.461]
6 2804:4c0:ffff:ff0d::1 3549 LVLT-3549, US [20.371, 19.822, 20.259]
7 ['*', '*', '*']
8 2001:1900:5:2:2::d32 3356 LEVEL3, US [216.74, 216.324, 217.144]
9 2001:67c:217c:4::2 2486 NIC-FR-DNS-UNICAST-PARIS2 AFNIC Association Francaise pour le Nommage Internet en Cooperation, FR [218.231, 217.825, 217.329]
On peut également visualiser le résultat de ce traceroute plus joliment sur le Web :
Figure 5 : Une des visualisations possibles d’un traceroute sur le site Web de RIPE Atlas
On voit que le parcours depuis la sonde Atlas 61742 est passé par l’opérateur Lumen (ex-Level 3), probablement aux États-Unis. L’absence de câble sous-marin entre le Brésil et l’Europe explique ce détour.
Vous pouvez bien sûr écrire votre propre programme utilisant l’API (c’est ainsi que Blaeu a été développé). Lisez la documentation14.
Crédits pour utiliser Atlas
Pour lancer des mesures, vous allez avoir besoin de crédits. Non, il ne s’agit pas d’une nouvelle cryptomonnaie tournant sur une chaîne de blocs. Les crédits sont la « monnaie » émise par le RIPE pour « payer » l’utilisation d’Atlas. Tout lancement d’une mesure va nécessiter d’en dépenser. On obtient des crédits en hébergeant une sonde Atlas, une ancre, en étant LIR15, c’est-à-dire membre du RIPE ou tout simplement en demandant gentiment sur la liste de diffusion Atlas. Le but des crédits est simplement d’éviter une utilisation excessive du réseau des sondes, pas d’empêcher les étudiants et les curieux de se servir d’Atlas. On voit donc souvent sur la liste des demandes en deux paragraphes, où un étudiant en réseaux informatiques explique son projet et demande des millions de crédits, qu’il obtient toujours très vite16.
Plus complexe : le placement des serveurs DNS anycast
L’anycast est une technique permettant d’avoir des dizaines, voire des centaines de serveurs répartis dans le monde et répondant à la même adresse IP. Cette technique est très utilisée par les gérants de serveurs DNS pour répartir la charge et faire face aux attaques par déni de service. Idéalement, les sites physiques du service anycasté sont placés de manière à minimiser la latence, le temps nécessaire pour les joindre, le mieux étant quand chaque résolveur va toujours au site physique le plus « proche17 ». Mais la perfection dans ce domaine est difficile à atteindre, notamment en raison des limites du protocole de routage BGP18. Les sondes Atlas peuvent permettre d’aider à ce placement optimal, en demandant au serveur qu’elles interrogent son NSID, Name Server Identifier19.
Ainsi, ici, on demande à cent sondes Atlas en France d’interroger d.nic.fr
et d’afficher son NSID :
% blaeu-resolve --requested 100 --country FR --nsid \
--nameserver d.nic.fr --type SOA fr
Nameserver d.nic.fr
[NSID: dns.th2.nic.fr; a.nic.fr. dnsmaster.afnic.fr. 2238829988 3600 1800 1209600 600] : 88 occurrences
[NSID: dns.ams.nic.fr; a.nic.fr. dnsmaster.afnic.fr. 2238829988 3600 1800 1209600 600] : 3 occurrences
[NSID: dns.lyn.nic.fr; a.nic.fr. dnsmaster.afnic.fr. 2238829988 3600 1800 1209600 600] : 2 occurrences
[NSID: dns.lon.nic.fr; a.nic.fr. dnsmaster.afnic.fr. 2238829988 3600 1800 1209600 600] : 2 occurrences
[NSID: dns.fra.nic.fr; a.nic.fr. dnsmaster.afnic.fr. 2238829988 3600 1800 1209600 600] : 3 occurrences
[TIMEOUT] : 2 occurrences
Test #73613034 done at 2024-06-17T14:02:59Z
Figure 6 : Affichage de l’identité de chaque instance anycast de d.nic.fr
(« th2 » est à Paris, « lyn » à Lyon, « fra » à Francfort,etc.) Mais l’interface Web donne un résultat plus joli.
Les couleurs ne sont pas idéales mais on voit que les sondes Atlas en France sont presque toutes allées vers un serveur DNS en France (les trois qui sont allés à Francfort sont situées dans l’Est de la France, ce qui est logique).
Conclusion : la puissance du système coopératif
Outre leur caractère pratique indispensable pour le ou la responsable opérationnel de la gestion de réseaux et de services sur l’Internet, les sondes RIPE Atlas sont en même temps un exemple parfait de la puissance du modèle coopératif : le plus grand réseau de mesures internet du monde n’est pas une offre commerciale mais un effort de nombreux volontaires, coordonné par une organisation sans but lucratif et gérée par ses membres.
1 – Réseaux IP Européens, le registre régional (Europe et Moyen-Orient) d’adresses IP.
2 – TP-Link, puis Raspberry Pi. Il existe également désormais des sondes purement logicielles.
3 – Parmi les autres réseaux analogues, on peut citer le Ring, qui a moins de machines, mais celles-ci sont davantage de possibilités.
4 – Les usages des sondes Atlas sont innombrables. Par exemple, dans le recours de la Quadrature du Net contre la décision du gouvernement de censurer TikTok en Nouvelle-Calédonie en mai 2024, on trouve parmi les documents produits à l’appui de ce recours des résultats de mesures faites par les sondes situées en Nouvelle-Calédonie, une utilisation juridique rare de ces sondes.
5 – Et, oui, l’Internet étant compliqué, ce test ne suffit pas à déterminer la joignabilité ; les sondes Atlas sont des outils, l’interprétation de leurs résultats nécessite toujours des compétences sur l’Internet.
6 – Les ancres sont des sondes spéciales, dotées de capacités supplémentaires, et qui peuvent servir de cibles pour des mesures, par exemple pour tester sa connectivité. L’Afnic en héberge une.
7 – Attaque s’inscrivant dans la série d’attaques contre les noms de domaine de plusieurs services publics français, revendiquée par « Anonymous Sudan », qui est probablement autant soudanais que je suis japonais.
8 – La nouvelle interface Web lancée au printemps 2024 améliore sérieusement ces possibilités d’analyse. Si vous aviez essayé l’ancienne, et avez été découragé, jetez donc un coup d’œil à l’actuelle.
9 – Application Programming Interface.
10 – Autonomous System. Un AS est identifié par un nombre, et correspond en gros à un opérateur internet. En pratique, les problèmes sont en général liés aux AS, pas aux villes/régions et donc, quand vous signalez une panne, l’indication de l’AS est souvent plus utile que celle de la ville.
11 – Les délais sont variables, et dépendent de la charge du serveur qui contrôle les mesures, ainsi que d’éventuels problèmes (rappelons qu’il s’agit d’un service gratuit, financé par le RIPE, donc par ses membres).
12 – pip install ripe-atlas-tools
13 – ripe-atlas configure –set authorisation.create=MY_API_KEY. Les clés d’API nécessaires sont créées via l’interface Web, et vous aurez besoin d’un compte RIPE (il s’obtient gratuitement et automatiquement) et de crédits (voir plus loin).
14 – Ripe-atlas-tools et Blaeu étant des logiciels libres, vous pouvez aussi lire leur code source pour vous en inspirer.
15 – Local Internet Registry, registre d’adresses IP local
16 – C’est un des nombreux avantages d’Atlas : permettre à des chercheurs en réseaux informatiques et à des « simples » étudiants d’effectuer des mesures mondiales. Par exemple, les chercheurs et chercheuses du groupe GEODE les utilisent régulièrement.
17 – Proche au sens de la latence, pas forcément de la distance kilométrique.
18 – Border Gateway Protocol. Un exemple d’un tel réglage est présenté dans cet article.
19 – Un mécanisme normalisé dans le RFC 5001.