Sortie de la version 1.20 d'ExaBGP

Posté par  . Modéré par baud123.
Étiquettes :
16
27
jan.
2011
Mobile
ExaBGP est un logiciel d'injection de route BGP, permettant aux administrateurs d'affecter le routage IP dans leur réseau. BGP (Border Gateway Protocol) est le protocole de routage utilisé entre F.A.I., mais il est aussi très couramment utilisé pour transporter des préfixes internes. ExaBGP est donc utile pour re-router (blackhole, transproxy) ou simplement annoncer des adresses IP à partir d'une machine Unix.

L'application supporte les préfixes IPv4 et IPv6 ainsi que les flow routes (sortes de règles de pare-feu diffusables par BGP), et peut se connecter à des routeurs via IPv4 ou IPv6. C'est à ma connaissance la seule application libre supportant les flow routes (RFC5575).

La syntaxe est très proche de celle des routeurs Juniper. À noter qu'une option permet la désagrégation de routes. Par exemple, « route 10.0.0.0/16 next-hop 127.0.0.1 split /24 » génère les 256 sous-réseaux classe C « 10.0.xxx.0/24 » qui composent le classe B « 10.0.0.0/16 », permettant d'être sûr que toutes les adresses IP du préfixe seront toujours préférées à celles apprises du net. Le programme peut-être installé en une ligne de commande (en root) :
cd /opt ; wget http://exabgp.googlecode.com/files/exabgp-1.2.0.tgz; tar zxvf exabgp-1.2.0.tgz; rm -rf exabgp-1.2.0.tgz; cd -; /opt/exabgp-1.2.0/bin/bgpd
...ou encore avec Python Distutils :
wget http://exabgp.googlecode.com/files/exabgp-1.2.0.tgz; tar zxvf exabgp-1.2.0.tgz; cd exabgp-1.2.0; python setup.py install; cd -; rm -rf exabgp-1.2.0.tgz

La version 1.20 apporte son lot d'améliorations avec entre autres :
  • la possibilité de partager les routes entre plusieurs pairs ;
  • chiffrement MD5 de la connexion BGP ;
  • journal d'activité (local, distant, ou un fichier) ;
  • « démoniser » le programme ;
  • sauvegarder l'identifiant de processus (PID) du daemon.

Le logiciel est utilisé en production par plusieurs sociétés, dont celle de l'auteur. Il utilise les variables d'environnement comme moyen de configuration.
> env DEBUG_CONFIGURATION=Yes ./bin/bgpd ./etc/bgp/myconfig.txt
> env SYSLOG=./mylogs.log PID=/var/run/exabgp.pid DAEMON=Yes ./bin/bgpd ./etc/bgp/myconfig.txt
Voici un exemple de configuration pour vous donner une idée de la syntaxe utilisée.
group test {

local-as 65111;
peer-as 65111;
hold-time 180;

static {
route 1.0.0.0/8 next-hop 1.1.1.1;
route 2.0.2.0/24 {
next-hop 1.1.1.1;
community 30740:30740;
as-path 350;
}
}

neighbor 192.168.127.128 {
description "router 1 with two routes";
router-id 198.111.227.39;
local-address 192.168.127.1;
graceful-restart 1200;
}

static {
route 3.0.0.0/8 next-hop 1.1.1.1 community [ 30740:30740 30740:10 ] as-path 350 ;
route 4.0.0.0/8 next-hop 1.1.1.1 local-preference 200;
}

neighbor 127.0.0.1 {
description "router 2 with five routes";
local-address 192.168.127.1;
static {
route 5.0.0.0/8 next-hop 1.1.1.1;
}
}

neighbor 127.0.0.2 {
description "router 3 with four routes";
local-address 192.168.127.1;
md5 "mysecretmd5";
}

neighbor 127.0.0.3 {
description "router 4 with MANY routes";
local-address 192.168.127.1;
static {
route 6.0.0.0/8 next-hop 1.1.1.1 split /16;
}
}
}

neighbor 127.0.0.4 {
description "router 5 with 256 routes";
router-id 1.2.3.4;
local-address 192.168.127.1;
local-as 1234;
peer-as 4567;
static {
route 7.0.0.0/16 next-hop 1.1.1.1 split /24;
}
}

Aller plus loin

  • # Les classes.

    Posté par  (site web personnel) . Évalué à 3.

    [je m'la pete avec ma science que j'étale bien (surtout que j'ai appris ça récemment)]
    10.0.xx.0/24 n'est PAS un réseau de classe C
    cf http://fr.wikipedia.org/wiki/Classe_d'adresse_IP
    Le premier octet d'une adresse IP de classe C commence toujours par la séquence de bits 110, il est donc compris entre 192 et 223. Un exemple d'adresse IP de classe C est : 192.168.1.34.
    [/je m'la pete]
    C'est une croyance populaire (même ma grand-mère le croit!) que de croire que /24 est synonyme de classe C, mais c'est faux en fait.
    • [^] # Re: Les classes.

      Posté par  . Évalué à 10.

      Et cette notion de classe n'a plus de sens depuis CIDR ... qui date de 1993 ([RFC1518] [RFC1519]).
    • [^] # Re: Les classes.

      Posté par  (site web personnel) . Évalué à 0.

      Le(s) modérateur(s) sont maintenant informé(s) :D
      Au passage, il faut aussi écrire "peers" et non p.a.i.r.s. :D
      Je dis merci pour le reste de la réécriture :D ..
  • # Chiffrement ?

    Posté par  (site web personnel) . Évalué à 8.

    chiffrement MD5 de la connexion BGP
    MD5 ne fait pas du chiffrement, c'est un algorithme de hachage (donc irréversible), il est uniquement utilisé pour signer un segment TCP.

    "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

  • # BGP

    Posté par  (site web personnel) . Évalué à 3.

    Par exemple, « route 10.0.0.0/16 next-hop 127.0.0.1 split /24 » génère les 256 sous-réseaux classe C « 10.0.xxx.0/24 » qui composent le classe B « 10.0.0.0/16 », permettant d'être sûr que toutes les adresses IP du préfixe seront toujours préférées à celles apprises du net.

    En tant que profane en BGP j'ai du mal à voir l'intéret d'annoncer 256 routes alors qu'on peut en annoncer qu'une ? Ça fait quoi au juste cette fonctionnalité ? (oui j'ai la flemme de me taper les RFC là)

    Comment cette appli se positionne par rapport à Quagga ou OpenBGPd ?

    (si j'ai un peu de temps j'essaierais sous FreeBSD)

    les pixels au peuple !

    • [^] # Re: BGP

      Posté par  (site web personnel) . Évalué à 4.

      Dans un routeur, l'algorithme de selection de route utilise toujours les prefixes plus specifiques. un /32 est utilise preferentiellement a un /31 qui est prefere a un /30, etc.

      Quand une organisation a une allocation, elle peut decider de la "casser" quand elle l'annonce, ou d'en annoncer qu'une partie.

      Donc si tu veux bloquer 10.0.0.0/16 mais que tu recois 10.0.0.0/17 et 10.0.128.0/17 via ton fournisseur de transit, ce sont ces deux routes seront preferees si tu injecte le /16 et non pas deux /17 via un routeur bgp.
      Le block le plus petit accepte par les fournisseurs de transit est le /24, donc en cassant un /16 en 256 /24, tu t'assures que ton interception sera efficasse.
      C'est un peu plus complique que cela, pour les details Cisco a un bon document : http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080094431.shtml

      Quagga, Openbgpd (et mon favori Bird) sont des applications pour transformer un PC en routeur. Ce n'est pas le but d'exabgp qui ne manipule pas la RIB de la machine et n'accepte pas de connection entrante, et ne decode pas les routes recues par BGP.

      Son avantage est de supporter flowspec (il faut avoir des routeurs Juniper pour pouvoir en profiter)

      exabgp peut aussi generer des routes avec des attributs qu'un routeur normal ne voudrait pas valider, ou difficilement, par exemple, avec une source provenant d'un FAI.

      Il est aussi facile a hacker, il serait aussi facile de le modifier exabgp pour refaire l'experience de RIPE
      http://labs.ripe.net/Members/erik/ripe-ncc-and-duke-university-bgp-experiment

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.