BGPexplorer - machine à remonter le temps pour les réseaux IP/MPLS

Avant-propos

Il se trouve que lors de l'analyse des raisons de la dégradation des services réseau, vous souhaitez disposer d'une machine à remonter le temps. Eh bien, ou du moins quelque chose qui enregistrerait l'historique des mesures d'itinéraires ... Si vous vous êtes déjà retrouvé dans une telle situation, alors ce sera peut-être intéressant.





Les réseaux modernes basés sur le routage de paquets IP, ou plutôt les services qu'ils fournissent, sont en fait contrôlés par BGP. Ce protocole a été conçu à la fin des années 1980 sur trois serviettes. Oui, depuis lors, de nombreuses fonctionnalités ont été ajoutées à ce protocole, notamment l'échange d'informations de routage VPN, des règles de filtrage du trafic et d'autres choses utiles, mais la base reste la même, décrite sur trois serviettes. Et cela a son plus, car ce protocole est très simple dans son essence.





Mais je voulais parler non pas de sa simplicité, mais de "agiter les poings après un combat", auquel sont souvent confrontés tout service d'exploitation de réseau, ou NOC - centre d'exploitation de réseau (et peut-être centre).





" ", " -, 5 ". 5 . ? . , "" 5 , ? , - , , . - . ( ) . - , . , bgplay. . , , , .





. ( , ). , - ? , .





. , , BGP - exabgp. . , , - python. , . , . python (, GIL), , . ( ) , . BGP (, golang!). ? , , bgp- . . .





Rust — . BGP . exabgp BGP FSM , Rust API, std , . zettabgp, — bgpexplorer.





. Bgpexplorer bgp-, ( route reflector) bgp-, . RIB (Routing Information Database) , . -. - , .






- . , () .





, git rust.





$ git clone https://github.com/wladwm/bgpexplorer
...
$ cd bgpexplorer
$ cargo build
...
      
      



. .





Cisco, :





!    65535   ,   
router bgp 65535
 !       ,    IBGP
 neighbor 10.1.1.1 remote-as 65535
 !     
 neighbor 10.1.1.1 update-source Loopback0
 !      
 neighbor 10.1.1.1 transport connection-mode passive
 address-family ipv4
 !    
  neighbor 10.1.1.1 activate
 !       
  neighbor 10.1.1.1 route-reflector-client
 !    ipv4 labeled-unicast
  neighbor 10.1.1.1 send-label
 address-family vpnv4
 !  VPNv4
  neighbor 10.1.1.1 activate
  neighbor 10.1.1.1 send-community extended
      
      







$ cat > bgpexplorer.ini <<EOF
[main]
httplisten=0.0.0.0:8080
httproot=contrib
session=s0
whoisjsonconfig=whois.json
[s0]
mode=bmpactive
bgppeer=10.0.0.1
peeras=65535
EOF
      
      



main :





  • httplisten — http





  • httproot — . index.html .





  • Whoisjsonconfig whois





  • Session – , bgp, s0





(s0 ) :





  • bgppeer — BGP





  • Peeras —





  • protolisten — :, BGP BMP





  • Mode —





mode :





  • bgppassive —





  • bgpactive —





  • bmpactive — BMP





  • bmppassive — BMP





ini- bgpexplorer, ,





cargo run
      
      



.





RIB - IPv4, IPv6, VPN ..





, - .





. , .





community, aspath, nexthop, route-target, route-distinguisher.





Lorsque vous passez le curseur sur ASn, l'adresse des routeurs, une requête vers whois ou DNS sera effectuée et les informations reçues seront affichées dans la fenêtre contextuelle. Parfois c'est long, mais ça peut être utile.





Je serais heureux si cet outil est utile à quelqu'un d'autre. Les problèmes trouvés, les souhaits, les idées, les critiques constructives sont les bienvenus.








All Articles