Lorsqu’on est connecté sur un point d’échange IX, type FranceIX ou Equinix-IX, il peut être intéressant pour les membres de se connecter en direct d’AS à AS au lieu de passer par les routes servers de l’IXP.
Pour cela, il est conseillé de filtrer par liste de préfixes les peerings directs, afin d’éviter d’obtenir une mauvaise annonce de route(s). La génération de ces prefix-lists peut devenir fastidieuse et lourde en cas de nombreux peerings.
Ce script se base sur l’API Stat du RIPE-NCC, donc la documentation est ici : https://stat.ripe.net/docs/data_api
Le script est disponible sur mon repository github : https://github.com/beufanet/ripe-tools/blob/master/cisco_pfx_list_from_as.pl
Il permet de générer en Cisco IOS-Like des prefix-lists standardisées pour mise en place dans la configuration du peering BGP, qu’il sera assez simple d’appliquer pour éviter des leaks de route voir un blackhole …
Par exemple, si on monte un peering direct avec l’AS 15169 de Google en IPv4 et en IPv6, on pourra simplement lancer la commande :
[user@localhost ripe-tools]$ perl cisco_pfx_list_from_as.pl 15169 -------------------------------------------------------------------------------------------------------------- AS NUMBER FOR QUERY 15169 -------------------------------------------------------------------------------------------------------------- AS HOLDER RESULT : GOOGLE - Google Inc.,US AS HOLDER FORMATTED : AS15169_GOOGLE___Google_Inc__US -------------------------------------------------------------------------------------------------------------- IPv6 Prefix List for AS [15169] ipv6 prefix-list AS-15169-IN-IP6 description "IPv6 PREFIX AS_15169 (GOOGLE - Google Inc.,US)" ipv6 prefix-list AS-15169-IN-IP6 seq 10 permit 2404:6800::/32 ipv6 prefix-list AS-15169-IN-IP6 seq 11 permit 2001:1900:2292::/48 ipv6 prefix-list AS-15169-IN-IP6 seq 12 permit 2620:0:1000::/40 ipv6 prefix-list AS-15169-IN-IP6 seq 13 permit 2607:f8b0::/32 ipv6 prefix-list AS-15169-IN-IP6 seq 14 permit 2620:15c::/36 [...] -------------------------------------------------------------------------------------------------------------- IPv4 Prefix List for AS [15169] ip prefix-list AS-15169-IN-IP4 description "IPv4 PREFIX AS-15169 (GOOGLE - Google Inc.,US)" ip prefix-list AS-15169-IN-IP4 seq 10 permit 64.233.160.0/24 ip prefix-list AS-15169-IN-IP4 seq 11 permit 107.178.192.0/18 ip prefix-list AS-15169-IN-IP4 seq 12 permit 72.14.192.0/18 ip prefix-list AS-15169-IN-IP4 seq 13 permit 64.233.176.0/24 ip prefix-list AS-15169-IN-IP4 seq 14 permit 74.125.138.0/24 [...]
Il ne reste plus ensuite qu’à configurer le peering BGP et le filtrage des prefix en IN :
router bgp 65255 neighbor 1.2.3.4 remote-as 15169 neighbor 1.2.3.4 prefix-list AS-15169-IN-IP4 in neighbor 2a00:1000::dead:beef remote-as 15169 neighbor 2a00:1000::dead:beef prefix-list AS-15169-IN-IP6 in
Il est bien évident possible d’automatiser ou d’agrémenter le script pour mettre à jour les filtres de prefix-list.
Bref, n’hésitez pas à forker le script sur GitHub 😉