Balancear el tráfico saliente mientras se usa openbgpd en freebsd

8

Estoy usando openbgpd en freeBSD con 2 conexiones ISP. Tengo mi propio número AS y una red / 22. Actualmente estoy anunciando todo / 22 a ambas redes. El tráfico entrante entra Pero mi tráfico saliente va a través de un solo enlace.

Me gustaría distribuir mi tráfico saliente a través de ambos enlaces para que el tráfico saliente también tenga una carga equilibrada.

¿Cómo configurar esto usando openbgpd en freebsd?

Mi configuración actual de openbgpd se adjunta como referencia.

AS 00my-as
listen on xx.xx.xx.x
router-id xx.xx.xx.x
network aa.aa.aa.0/22
group "ISP1" {
  remote-as 11remoteas-1
  neighbor bb.bb.bb.1 {
   descr "ISP1"
   announce all  
  }
}
group "ISP2" {
  remote-as 22remoteas-2
  neighbor cc.cc.cc.37 {
   descr "ISP2"
   announce all  
  }
}
deny from any
deny to any
allow from bb.bb.bb.1
allow to bb.bb.bb.1
allow from cc.cc.cc.37
allow to cc.cc.cc.37
Rajkumar S
fuente

Respuestas:

2

No he usado openbgpd en años, entonces, te daré una teoría que puedes aplicar a tu configuración.

Un proveedor puede enviarle rutas. Por lo general, enviarán 'predeterminado', 'clientes' o 'completo'. Una ruta predeterminada es solo eso, se le anuncia 0.0.0.0/0 y sabe que debe llegar a 0.0.0.0/0 (cualquier IP) a través de ellos. Su situación hace que parezca que ambos proveedores le están entregando una ruta predeterminada, y lo más probable es que el que tenga el ASN más bajo obtenga todo el tráfico (ASN es el desempate cuando un paquete puede ir a múltiples destinos y las rutas AS son iguales) longitud, etc.).

Un feed de 'clientes' les haría anunciar cada ruta que esté directamente conectada a ellos. Si tiene un proveedor como Level3, es probable que vea la mitad de Internet a través de este feed. Si su otro proveedor tiene un ASN más bajo, obtendrían cualquier tráfico que no estuviera directamente conectado con el par que le anunciara las rutas de sus clientes.

Un feed 'completo' tendrá anuncios de ruta para cada sitio al que un proveedor sepa cómo llegar, no solo para aquellos que están directamente conectados.

Deberías poder hacer algo como:

muestre el resumen del ip bgp (comando de IOS)

que debe enumerar la cantidad de prefijos recibidos en alguna parte.

Si sus dos proveedores existentes le envían una ruta predeterminada, su conexión está actualmente configurada para conmutación por error. El proveedor A se cae, luego se dirigirá al proveedor B. Si toma los datos de los clientes de ambos junto con la ruta predeterminada, el tráfico fluirá hacia el proveedor que tenga el ASpath más corto para llegar a una dirección determinada, y volverá a la predeterminada ruta si no puede encontrar la dirección. Si obtuvieras un feed completo de ambos, dependiendo de la superposición entre los proveedores, enviarías el tráfico a la 'mejor' ruta hacia cada uno.

En uno de nuestros enrutadores fronterizos, muestro 310540 rutas activas, me aseguro de que tenga suficiente RAM y haya configurado la máquina para manejar las rutas de ambos proveedores si toma rutas completas. Puede experimentar tomando rutas de clientes de ambos hasta que se sienta más cómodo. O tome rutas de clientes del proveedor más pequeño de los dos y vea cómo cambian las cosas.

Esto todavía no 'equilibra la carga' ni divide el tráfico de manera uniforme y dependiendo de su tráfico. Es posible que un proveedor todavía reciba la mayor parte del tráfico. En este punto, necesitaría hacer algunos mapas de prefijos / rutas para ajustar el tráfico y preferir uno u otro.

Una vez que configure los mapas de ruta o una coincidencia ASN para cambiar su tráfico, si el sitio de destino deja de funcionar y su ruta se elimina de ese proveedor, su enrutador aún enviará el tráfico a la otra conexión. BGP es algo autocurativo.

Lo que hemos hecho es que tenemos algunos mapas definidos que coinciden según el ASN.

PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH

Sin embargo, Juniper hace que esto sea más fácil que usar comunidades.

Nuestras listas de prefijos ven si el destino es un ASN particular, y si lo es, pasa por el mapa _TO. Si el ASN aparece en _THROUGH, preferirá ese proveedor. Dado que uno de nuestros proveedores tiene una conexión directa con AT&T, PROVIDER_B_THROUGH coincide con 7018 | 7019 (y algunas otras ASN) para que el tráfico de AT&T sea predeterminado para el Proveedor B. Aunque AT&T es accesible desde ambos, preferimos enviarlo a través del Proveedor B .

Estoy seguro de que openbgpd tiene métodos similares.


fuente
3

BGP no es un protocolo de equilibrio de carga.

Permítanme repetir eso, BGP NO es un protocolo de equilibrio de carga.

Si TODO el tráfico sale de una sola conexión, mi primera suposición es que no está recibiendo una fuente completa del proveedor que se está ignorando. El enrutamiento es tal que se da prioridad a rutas más específicas, por lo que si tiene una ruta de 192.168.0.0/23 que va al proveedor a, y dos rutas de 192.168.0.0/24 y 192.168.1.0/24 que van al proveedor b, proveedor a será completamente ignorado. No estoy familiarizado con OpenBGP. Así que no puedo decirte los detalles de cómo verificar algunas cosas sin mirar. Pero lo primero que debe hacer es validar que AMBOS proveedores le brinden una alimentación completa y no solo una ruta predeterminada.

Si ese es el caso, debe buscar la preferencia de ruta para el tráfico saliente y el relleno de ruta para el tráfico entrante. Asegúrese de esperar entre veinticuatro y cuarenta y ocho horas entre los cambios de configuración solo para asegurarse de tener un conjunto de datos lo suficientemente grande como para determinar la efectividad de sus cambios.

Richard June
fuente
1

Construir un puente. Freebsd realmente cargará el equilibrio en las características ascendentes de los prefijos actuales y cargará el equilibrio bastante bien. BGP no lo hará. Puede instalar tanto el ISP ascendente como anunciar a ambos ISP según su / 22 y probablemente rechazará sus prefijos wan / 30 pero iBGP lo recogerá. iBGP se ejecutará bien en el puente y luego no habrá una necesidad real de OSPF. Ahora tiene un equilibrador de carga y una configuración BGP totalmente redundante. Tenemos varios y los amamos en enlaces a Internet.


fuente
1

Lo primero que debe verificar es si ambas sesiones BGP realmente funcionan o no. utilizar

bgpctl muestra resumen

Y vea si tiene intercambio de mensajes con ambos pares.

Y debe eliminar el "anunciar todo" a menos que quiera que sus pares enruten su tráfico a través de usted, que generalmente es lo contrario;

Simplemente elimine el anuncio de todo y debería estar bien.

Bruno Mairlot
fuente