😎 𝗩𝗶𝗲𝗿𝗻𝗲𝘀 𝗳𝗲𝗿𝗶𝗮𝗱𝗼 𝗱𝗲 𝗻𝗲𝗿𝗱𝘀.
Aprovechamos el día para aprender e implementar en nuestro laboratorio de networking la tecnología BGP sobre una instancia Cloud con Linux Debian; utilizando código abierto, en este caso, nos llamó la atención el proyecto: GoBGP, escrito en lenguaje Go.
👀 La configuración de GoBGP nos resultó realmente, muy simple:
[global.config]
as = 200
router-id = "10.10.0.1"
local-address-list = ["10.10.0.1"]]
[[neighbors]]
[neighbors.config]
neighbor-address = "10.10.0.2"
peer-as = 100
Básicamente en esta configuración, establecemos un ASN local 200, configuramos una IP privada para la escucha del protocolo BGP: 10.10.0.1
El protocolo BGP, hace uso del protocolo TCP (para conseguir una entrega fiable de la información) sobre el puerto 179 por default , podemos modificarlo si queremos.
Ejemplo, si nos gustaría modificar el port default 179, por 1790 es tan fácil como agregar a la sección [global.config] la siguiente variable: port = 1790
Luego en la configuración: agregamos el “neighbors” o “vecino”, es decir, le brindamos la información al protocolo BGP contra quién debe establecer el peer, en este ejemplo de configuración, estoy utilizando la IP privada: 10.10.0.2 y el ASN local 100.
Por último para la prueba de establecer el peer entre la instancia Cloud Linux Debian con GoBGP y un router de borde, configuramos el peer en el otro extremo, es decir, configuramos una instancia BGP, asignamos un nombre identificador, configuramos el ASN local 100 y el router ID 10.10.0.2.
Ahora, solo nos resta, configurar el peer BGP, para ello, nuevamente asignamos un nombre identificador, le configuramos la instancia BGP que creamos anteriormente, configuramos la dirección IP privada del GoBGP, en este caso: 10.10.0.1, introducimos el número de ASN que configuramos en la config de GoBGP: ASN 100 y listo.
Recomendado por LinkedIn
Ya deberíamos tener el peer establecido, para poder visualizar si se estableció el peer en GoBGP, es tan simple con tirar el siguiente comando: # gobgp neighbor
💪🏻 Nos debería mostrar algo así:
Peer AS Up/Down State |Received Accepted
10.10.0.2 100 02:13:19 Establ | 1 1
Para obtener la información de que prefijos IP se están recibiendo por el peer establecido, es tan simple: # gobgp neighbor 10.10.0.2 adj-in
ID Network Next Hop AS_PATH Age Attrs
0 10.10.0.0/24 10.10.0.2 100 02:23:18 [{Origin: ?}]
Si reciben muchos prefijos IP; es posible que deseen agregar filtros BGP en la salida de su router, aceptando únicamente el prefijo que desea enviar a GoBGP y descartando el resto con discard, además, es una buena práctica.
🚀 Muchos ya sabrán que en Waugi Cloud nos encantan las tecnológicas Open Source y este proyecto; nos llamó mucho la atención, el próximo paso es ponerlo a prueba con un full route +10k de rutas, para medir el rendimiento en cuanto CPU y RAM, tal y como prometen los desarrolladores:
GoBGP is designed to exploit todays multicore processors. Golang makes it extremely easy and simple to write concurrent code.
❤️ Además es amigable a nivel integración vía API con múltiples soluciones, ejemplo: Fastnetmon de nuestro querido Pavel Odintsov , permitiendo despublicar automáticamente prefijos IP bajo ataque DoS o DDoS.
Acá si se podría decir que la red está en la nube, ya que la técnologia BGP pasaría a estar virtualizada en una instancia Cloud, ahorrando energía, espacio físico y dinero. 😏
Ingeniero en Sistemas | PM Certificado | Especialista en Data Centers | Fullstack Developer (Python/JavaScript)"_ Funcional/analista de datos
2 añosExcelente Alan, bienvenido todo lo que se basa en open source ya que permite que la comunidad crezca y se nutra de los avances que otros alcanzan, además te felicito por hoy viernes feriado estar activo cultivando tu conocimiento