Depuis qu'ARN, FAI associatif en Alsace, a une infra, je fais des mesures avec le système Atlas du RIPE.
Pour découvrir RIPE Atlas, voir la présentation de Stéphane Bortzmeyer lors de la Journée du Conseil Scientifique de l'AFNIC 2015 (
https://www.youtube.com/watch?v=UmCtwTkhnb0 ). En gros c'est un projet communautaire de métrologie basé sur le volontariat : des volontaires partout dans le monde hébergent au moins une sonde (un boitier TP-Link TL-MR3020) que ce soit à la maison, dans un datacenter, au travail... Ces sondes forment un botnet (mais un gentil botnet) : un contrôleur leur distribue des mesures à effectuer (ping, traceroute, http, ssl, ...). Chaque sonde sélectionnée essaye d'effectuer la mesure demandée et retourne le résultat au contrôleur du RIPE qui permet de le récupérer pour analyse (JSON).
Tout une API REST a été développée autour pour automatiser la création de mesures et leur récupération.
Les mesures sont publiques par défaut (et la possibilité de les rendre privées disparaîtra bientôt) afin de profiter à la communauté (les chercheurs manquent souvent de données pour bosser, par exemple).
Évidemment, plein de limites empêchent d'utiliser le système dans un DDoS : il faut des crédits pour lancer des mesures (que l'on obtient en hébergeant une sonde ou en étant membre ou sponsor du RIPE), on ne peut pas lancer plus de 10 mesures concurrentes sur une même cible,...
Deux biais de mesures présents sur RIPE Atlas dont il faut être conscient avant de lire la suite :
* RIPE Atlas est représentatif uniquement de lui-même. C'est basé sur le volontariat donc seul un public bien spécifique a des sondes : informaticiens informés. Du coup, cela introduit des biais dans les mesures. Exemple : le taux de déploiement d'IPv6 est largement supérieur aux moyennes mondiales.
* D'après mes mesures, un écart d'un à deux points sur le pourcentage de paquets perdus/reçus entre deux mesures est normal selon que la mesure a été effectuée en heure pleine ou creuse dans la zone géographique considérée.
Concernant ARN, j'effectue une mesure ping en IPv4 et en IPv6. Ce qui m'intéresse :
* La visibilité. Si le réseau dans lequel se trouve la sonde n'a aucune route pour joindre ARN, une erreur ICMP sera retournée à la sonde qui nous la retournera). Si le taux d'erreur dépasse une marge de tolérance, alors il y a un problème puisque le réseau d'ARN n'est pas visible de partout ;
* Le nombre de paquets perdus. Si le pourcentage est trop élevé, c'est qu'il y a un souci dont il faudra s'inquiéter ;
* La latence. Une latence moyenne qui augmente, c'est le signe d'un problème (routage pas optimal, attaque provoquant une redirection du trafic type Pilosov&Kapela).
Pour l'instant, j'ai effectué ces mesures à chaque grande étape de l'évolution de l'infra d'ARN : quand nous étions chez notre premier prestataire puis quand nous étions sur Cogent uniquement puis maintenant que nous sommes sur Cogent et Interoute. Une bonne idée est de monitorer l'infra avec Atlas. C'est parfaitement prévu par le projet qui a même développé une fonctionnalité qui va dans ce sens : le contrôleur analyse les résultats pour vous et positionne un flag dans si le seuil que vous fixez est atteint, il suffit de récupérer ce flag avec un check_http banal). C'est dans ma TODO.
Les mesures sont publiques et vous pouvez donc les récupérer pour vérifier que je ne dis pas de bêtises :
* Octobre 2013 :
* WW - IPv4 :
https://atlas.ripe.net/measurements/1034521/ - IPv6 :
https://atlas.ripe.net/measurements/1034528/
* West - IPv4 :
https://atlas.ripe.net/measurements/1034524/ - IPv6 :
https://atlas.ripe.net/measurements/1034531/
* NC - IPv4 :
https://atlas.ripe.net/measurements/1034522/ - IPv6 :
https://atlas.ripe.net/measurements/1034529/
* SE - IPv4 :
https://atlas.ripe.net/measurements/1034523/ - IPv6 :
https://atlas.ripe.net/measurements/1034530/
* Juin 2015 :
* WW - IPv4 :
https://atlas.ripe.net/measurements/2048937/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048953/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049310/
* West - IPv4 :
https://atlas.ripe.net/measurements/2048939/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048960/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049314/
* NC - IPv4 :
https://atlas.ripe.net/measurements/2048940/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048961/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049315/
* SC - IPv4 :
https://atlas.ripe.net/measurements/2048941/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048962/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049317/
* NE - IPv4 :
https://atlas.ripe.net/measurements/2048942/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048963/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049318/
* SE - IPv4 :
https://atlas.ripe.net/measurements/2048943/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048964/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049319/
* FR - IPv4 :
https://atlas.ripe.net/measurements/2048944/ - IPv6 (Cogent uniquement) :
https://atlas.ripe.net/measurements/2048965/ - IPv6 (Cogent + Hurricane Electric) :
https://atlas.ripe.net/measurements/2049320/
* Février 2016 :
* WW - IPv4 :
https://atlas.ripe.net/measurements/3572810/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572818/
* West - IPv4 :
https://atlas.ripe.net/measurements/3572811/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572819/
* NC - IPv4 :
https://atlas.ripe.net/measurements/3572812/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572820/
* SC - IPv4 :
https://atlas.ripe.net/measurements/3572813/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572821/
* NE - IPv4 :
https://atlas.ripe.net/measurements/3572814/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572835/
* SE - IPv4 :
https://atlas.ripe.net/measurements/3572816/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572836/
* FR - IPv4 :
https://atlas.ripe.net/measurements/3572845/ - IPv6 (Cogent + Interoute) :
https://atlas.ripe.net/measurements/3572847/
* Février 2016 - IPv6 + tag « system-ipv6-works » (tag attribué automatiquement par le contrôleur RIPE à une sonde qui a réussie à ping6 plusieurs amers. Beaucoup de sondes sont sur des réseaux sur lesquels un préfixe IPv6 est annoncé avec des Router Advertisements (RA) mais sur lesquels l'acheminement des paquets IPv6 n'est pas fonctionnel... Ces mesures ne sont donc pas comparables avec les précédentes !
* WW -
https://atlas.ripe.net/measurements/3586435/
* West -
https://atlas.ripe.net/measurements/3586436/
* NC -
https://atlas.ripe.net/measurements/3586437/
* SC -
https://atlas.ripe.net/measurements/3586438/
* NE -
https://atlas.ripe.net/measurements/3586440/
* SE -
https://atlas.ripe.net/measurements/3586444/
* FR -
https://atlas.ripe.net/measurements/3586762/
* Février 2016 - IPv6 + tags « system-ipv6-works » (voir ci-dessus) et « native-ipv6 » (tag ajouté manuellement pour indiquer que l'accès Internet est natif, sans méthode de transition) donc on peut avoir des déclarations mensongères/erronées/dépassées (exemple :
https://atlas.ripe.net/probes/13900/#!tab-network ) et des absences de déclaration) :
* WW -
https://atlas.ripe.net/measurements/3588197/
* West -
https://atlas.ripe.net/measurements/3588198/
* NC -
https://atlas.ripe.net/measurements/3588199/
* SC -
https://atlas.ripe.net/measurements/3588200/
* NE -
https://atlas.ripe.net/measurements/3588201/
* SE -
https://atlas.ripe.net/measurements/3588202/
* FR -
https://atlas.ripe.net/measurements/3588203/
* Février 2016 - IPv6 + tag « system-ipv6-works » (voir ci-dessus) et exclure le tag « native-ipv6 » (voir ci-dessus) :
* WW -
https://atlas.ripe.net/measurements/3588258/
* West -
https://atlas.ripe.net/measurements/3588259/
* NC -
https://atlas.ripe.net/measurements/3588260/
* SC -
https://atlas.ripe.net/measurements/3588261/
* NE -
https://atlas.ripe.net/measurements/3588262/
* SE -
https://atlas.ripe.net/measurements/3588263/
* FR -
https://atlas.ripe.net/measurements/3588264/
* Février 2016 - Interoute uniquement :
* WW - IPv4 :
https://atlas.ripe.net/measurements/3588379 - IPv6 :
https://atlas.ripe.net/measurements/3588405/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588438/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588466/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588512/
* West - IPv4 :
https://atlas.ripe.net/measurements/3588380 - IPv6 :
https://atlas.ripe.net/measurements/3588406/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588439/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588467/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588513/
* NC - IPv4 :
https://atlas.ripe.net/measurements/3588381 - IPv6 :
https://atlas.ripe.net/measurements/3588407/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588440/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588468/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588515/
* SC - IPv4 :
https://atlas.ripe.net/measurements/3588382 - IPv6 :
https://atlas.ripe.net/measurements/3588408/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588442/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588469/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588516/
* NE - IPv4 :
https://atlas.ripe.net/measurements/3588384 - IPv6 :
https://atlas.ripe.net/measurements/3588409/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588443/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588470/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588517/
* SE - IPv4 :
https://atlas.ripe.net/measurements/3588385 - IPv6 :
https://atlas.ripe.net/measurements/3588410/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588444/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588471/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588518/
* FR - IPv4 :
https://atlas.ripe.net/measurements/3588386 - IPv6 :
https://atlas.ripe.net/measurements/3588411/ - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588445/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588473/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588519/
* Février 2016 - Cogent uniquement :
* WW - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588604/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588625/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588666/
* West - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588605/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588626/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588667/
* NC - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588607/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588627/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588668/
* SC - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588608/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588628/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588669/
* NE - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588609/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588630/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588670/
* SE - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588610/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588631/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588671/
* FR - IPv6 + tag « system-ipv6-works » :
https://atlas.ripe.net/measurements/3588611/ - IPv6 + tags « system-ipv6-works » et « native-ipv6 » :
https://atlas.ripe.net/measurements/3588632/ - IPv6 + tag « system-ipv6-works » et exclure tag « native-ipv6 » :
https://atlas.ripe.net/measurements/3588672/
Pour analyser ces mesures, j'utilise le script Python « atlas-ping-retrieve » de Stéphane Bortzmeyer (
http://www.bortzmeyer.org/files/atlas-ping-retrieve.py ). On pourrait aussi utiliser la bibliothèque Sagan (
https://github.com/RIPE-NCC/ripe.atlas.sagan ).
J'ai compilé tout ça dans une feuille de tableur avec de zolis graphiques qui portent uniquement sur l'évolution vers l'infra actuelle donc je n'ai pas graphé ipv6-works car pas de recul ni "Interoute uniquement" ni "Cogent uniquement" car ce n'est pas la configuration que nous utilisons au quotidien. Pour une copie PDF, c'est par ici :
http://www.guiguishow.info/wp-content/uploads/2016/02/arn-mesures_atlas.pdf
Attention : les mesures d'octobre 2013 souffrent de plusieurs biais :
* Ces mesures sont dépassées puisque tous les réseaux évoluent. Des mesures actuelles vers LDN (hébergé par ce même presta) donnent des résultats similaires aux nôtres en IPv4 et légèrement meilleurs en IPv6 en terme de paquets perdus.
* Ces mesures sont effectuées en envoyant 3 icmp-request alors que les mesures postérieures sont effectuées avec 5 paquets. Un nombre plus élevé de paquets (multiplié par le nombre de sondes dans la mesure) peut déclencher des limiteurs de trafic et fausser la mesure, par exemple.
* La cible de ces mesures est une IP (v4 ou v6) alors que la cible des mesures postérieures est un nom (et qu'on ne positionne pas le flag « resolve on probe »). Or, la résolution du nom peut échouer de manière indépendante de la mesure elle-même, ce qui contribue à la fausser.
Quelles conclusions peut-on en tirer ?
* Les tunnels 6in4 et autres méthodes de transition vers IPv6, c'est cool car ça fournit de la connectivité v6 là où il n'y en a pas mais globalement, ça perd quand même beaucoup de paquets (ne jamais oublier que 5 echo-request, c'est une durée très courte... donc perdre autant de paquets en si peu de temps, ça doit bien pénaliser les connexions TCP). Par contre, surprise : ces méthodes de transition ne font pas exploser la latence tant que ça : 8 ms en moyenne, toutes régions du globe confondues. :O
* Il y a vraiment beaucoup de réseaux IPv6 ready (qui reçoivent un préfixe IPv6 via un RA) mais pas IPv6-works. La différence est flagrante (entre 5 et 18 points d'écart et jusqu'à 30 pour la Russie et alentours) ! :O Conclusion : pour faire une mesure IPv6 fiable avec Atlas, il faut vraiment utiliser le tag « system-ipv6-works » sinon, vous remontez des erreurs pour lesquelles vous ne pouvez rien faire (elles sortent de votre périmètre et ne sont pas de votre responsabilité). Un tel écart me fait également dire qu'IPv6, ce n'est très clairement pas encore pour aujourd'hui quoi qu'en disent les optimistes.
* Interoute a un taux de paquets perdus impressionnant en IPv6 (plus de 50% dans la plupart des cas) ! :O Ce n'est pas le cas en IPv4 où Interoute survit bien à la coupure de Cogent. Fait amusant : on remarque qu'IPv6 confirme les différentes stratégies de déploiement de réseau de ces deux sociétés commerciales : Interoute est euro et asie centré, Cogent est USA-centré à la base. Interoute sauve les meubles en IPv6 en Europe + Russie + FR mais s'écroule en Amériques et Afrique surtout si l'on prend en compte uniquement l'IPv6 natif (donc pas les tunnels 6in4 notamment fournis par HE avec qui Interoute peere très bien). À l'inverse, on voit que Cogent a un déficit en Europe et en Asie.
* Cogent est beaucoup plus impacté qu'Interoute par l'écart entre les mesures « ipv6 » et « ipv6-works ». Je n'explique pas cela... Peut-être la popularité d'où plus de machines donc plus de fail de configuration des réseaux ? Je veux dire : il semble que Cogent est plus présent qu'Interoute dans les zones géographiques où IPv6 fonctionne mal (Asie et Afrique, par exemple).
* On remarque également qu'un tunnel 6in4 BGP HE côté ARN perd moins de paquets que de passer via Interoute dans certaines régions du monde comme l'Afrique, la Russie et l'Asie (entre 6 et 16 points d'écart). L'Europe est également concernée (6 points d'écart). Cela tend à confirmer la concentration/centralisation que représente HE et la nécessité d'une interconnexion avec eux.
* On remarque aussi que la latence vers l'Asie est le double de celle vers les Amériques, ce qui indique que la connectivité vers l'Asie se fait toujours via les USA. :(
* Un truc qui fait plaisir : l'infra d'ARN a constamment gagnée en visibilité et en diminution de pertes de paquets au fil des évolutions. À l'inverse, la latence n'a pas été diminuée significativement par les évolutions successives de l'infra.
* Limite des chiffres et de la représentativité d'Atlas, le passage à deux transitaires ne se justifie pas via ces mesures puisque l'écart est trop faible et correspond à la marge de tolérance. Pourtant, qualitativement, l'interconnexion entre Cogent et Google (dont Youtube) est mauvaise (débit pas top) alors que celle d'Interoute est top, Cogent ne propose aucun accès aux préfixes IPv6 de Google, Cogent n'offre aucun accès à certains préfixes IPv4 chinois (moins important pour ARN), Interoute nous permet de tendre vers l'émancipation d'un tunnel 6in4 avec HE (qui est glop techniquement et moralement (concentration du trafic IPv6 chez un petit nombre d'acteurs)). Sans compter que deux transitaires se justifient pour ne pas disparaître des Internet en cas de panne/maintenance.