BGPexplorer - máquina del tiempo para redes IP / MPLS

Prefacio

Ocurre que al analizar las razones de la degradación de los servicios de red, desea tener una máquina del tiempo. Bueno, o al menos algo que registre el historial de mediciones de ruta ... Si alguna vez te has encontrado en tal situación, entonces quizás sea interesante.





Las redes modernas basadas en el enrutamiento de paquetes IP, o más bien los servicios que brindan, están de hecho controladas por BGP. Este protocolo fue diseñado a finales de los 80 en tres servilletas. Sí, desde entonces, se han agregado muchas funciones a este protocolo, incluido el intercambio de información de enrutamiento VPN, reglas de filtrado de tráfico y otras cosas útiles, pero la base sigue siendo la misma, descrita en tres servilletas. Y esto tiene su ventaja, porque este protocolo es muy simple en su esencia.





Pero quería hablar no de su simplicidad, sino de "agitar los puños después de una pelea", que a menudo se enfrenta a cualquier servicio de operación de red, o NOC - centro de operación de red (y tal vez centro).





" ", " -, 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.





Cuando pase el cursor sobre ASn, se realizará la dirección de los enrutadores, se realizará una consulta a whois o DNS, y la información recibida se mostrará en la ventana emergente. A veces es largo, pero puede resultar útil.





Me alegraría que esta herramienta fuera útil para otra persona. Los problemas encontrados, los deseos, las ideas, la crítica constructiva son bienvenidos.








All Articles