Accélérer bgpq4 avec IRRd dans un containeur
Vincent Bernat
Lors de la construction de filtres avec bgpq4 ou bgpq3, la
vitesse de rr.ntt.net
ou whois.radb.net
est un goulot
d’étranglement. Mettre à jour de nombreux filtres peut prendre
plusieurs dizaines de minutes selon la charge de ces serveurs :
$ time bgpq4 -h whois.radb.net AS-HURRICANE | wc -l 909869 1.96s user 0.15s system 2% cpu 1:17.64 total $ time bgpq4 -h rr.ntt.net AS-HURRICANE | wc -l 927865 1.86s user 0.08s system 12% cpu 14.098 total
Une première solution est de faire tourner votre propre instance d’IRRd sur votre réseau, en miroir des principaux registres de routage. Une alternative assez proche est de construire une image Docker prête à l’emploi contenant à la fois IRRd et toutes les données. Cela présente également l’avantage d’une intégration facile dans un système de CI/CD basé sur Docker.
$ git clone https://github.com/jerikan-network/irrd-legacy.git -b blade/master $ cd irrd-legacy $ docker build . -t irrd-snapshot:latest […] Successfully built 58c3e83a1d18 Successfully tagged irrd-snapshot:latest $ docker container run --rm --detach --publish=43:43 irrd-snapshot 4879cfe7413075a0c217089dcac91ed356424c6b88808d8fcb01dc00eafcc8c7 $ time bgpq4 -h localhost AS-HURRICANE | wc -l 904137 1.72s user 0.11s system 96% cpu 1.881 total
Le Dockerfile procède en trois étapes :
- construction d’IRRd1,
- récupération des diverses bases IRR,
- assemblage du containeur final avec le résultat des deux étapes précédentes.
La seconde étape récupère les bases de données utilisées par
rr.ntt.net
: NTTCOM, RADB, RIPE, ALTDB, BELL, LEVEL3, RGNET,
APNIC, JPIRR, ARIN, BBOI, TC, AFRINIC, ARIN-WHOIS et REGISTROBR.
Toutefois, il manque RPKI2. Adaptez comme vous le souhaitez !
L’image peut être reconstruite journalièrement ou hebdomadairement,
selon vos besoins. Le dépôt inclut un fichier
.gitlab-ci.yaml
automatisant la construction et
déclenchant la compilation de tous les filtres via CI/CD en cas de
succès.
Mise à jour (05.2021)
Vous pouvez également récupérer
directement une image Docker avec docker pull
ghcr.io/jerikan-network/irrd-legacy:latest
. Elle est mise à jour une
fois par semaine et construite via la CI de GitHub.
-
Plutôt que d’utiliser la dernière version d’IRRd, l’image repose sur une version plus ancienne qui ne nécessite pas de serveur PostgreSQL et se contente de fichiers plats. ↩︎
-
Contrairement aux autres, la base de données RPKI est construite à partir de des ROA RPKI publiées. Elles peuvent être récupérées grâce à
rpki-client
et transformées en objets RPSL pour être importées dans IRRd. ↩︎