domingo, 28 de junio de 2015

Script para ruta default en entornos BGP Multihomed.

    Hay mil maneras de configurar un entorno con mas de una salida a Internet. La mas usual (o la mas efectíva) es BGP (Multihomed). En mi escenario, tengo 2 routers MIKROTIK haciendo eBGP, cada uno en un extremo de la red. Con route-policy de BGP ajusto la entrada de tráfico (Down de clientes), pero la salida se la publico a toda mi red a través de OSPF. O dicho de otra manera, hacia dentro de mi red no se publica el Full Route a ningún router (soy pequeño y solo tengo 2 carriers). Únicamente se publica la ruta default via OSPF.
    Con este escenario, puede darse algún caso concreto, en el que los routers BGP estén activos, pero la sesion eBGP caida. Con este escenario concreto estaríamos publicando todavía la ruta default hacia dentro, pero en realidad no tenemos salida. Para solucionar esto me he tenido que currar un pequeño script que detecte el estado del peer BGP, y si está activo, que levante la ruta default.
 
Lo primero es decirle a OSPF que distribuya la ruta default solo en caso de tenerla instalada y activa.


/routing ospf instance
set distribute-default=if-installed-as-type-1 numbers=0

Después creamos la ruta default (estática), con un comentario (route_default), que es el que usará el script para activar o desactivar la ruta.

/ip route add dst-address=0.0.0.0/0 gateway=X.X.X.X comment="route_default" disabled=no

X.X.X.X Será la dirección de nuestro gateway. Normalmente la misma que la de nuestro peer BGP (excepto en peers Multihop).

Debemos configurar el peering eBGP con nuestro peer. Al nombre del peer le daremos el nombre "peerBGP1" . Nos aseguraremos de que conecte bien.

Con todo esto hecho, creamos un script como este:

/system script add name="Check_BGP" owner="admin" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive last-started=jun/28/2015 21:45:47 run-count=378 source=
       #Declare Variable. Nom del PEER BGP
       :global PeerName "peerBGP1";
       
       #Declare Variable. Nom de l'ultim estat conegut del peer BGP.
              :global BgpLastState
       
       #Declare Variable. Estat acutal del PeerBGP.
              :global BgpCurrentState [/routing bgp peer get [:pick [find name=$PeerName] 0] state];
       
       #Declare variable. Comentari que ha de tindre la ruta default.
              :global RouteComment "route_default";
       
       #Comprobe que el peer no estiga deshabilitat.
         :if ([:len $BgpCurrentState] = 0 ) do={:global BgpCurrentState "peer_disabled"};
       
       
       #Comprobe si hi han canvis d'estat i aplique configuracions.
              :if \
                  ($BgpLastState != $BgpCurrentState) do=\
                        {\
                             :if ($BgpCurrentState = "established")\
                                                                                  do=\
                                                                                               {\
                                                                                                  [ip route enable [find comment=$RouteComment]];\
                                                                                                  [:set BgpLastState $BgpCurrentState];\
                                                                                                  [:log info "peering BGP established";];\
                                                                                                  [:log warning  "ruta 0.0.0.0/0 habilitada";];\
                                                                                                 }\
                                                                                  else=\
                                                                                                {\
                                                                                                  [ip route disable [find comment=$RouteComment]];\
                                                                                                  [:set BgpLastState $BgpCurrentState];\
                                                                                                  [:log warning  "peering BGP caigut";];\
                                                                                                  [:log error  "ruta 0.0.0.0/0 deshabilitada";];\
                                                                                                 }                                        
              } 

Con el script funcionando solo nos queda añadirlo al Scheduler para que se ejecute cada 10 segundos.

/system scheduler add interval=10s on-event=Check_BGP name= schedule_bgp_script.

Todas las configuraciones las hago en los dos routers que hacen el eBGP.

De momento tengo el script en el escenario de pruebas, y funciona a la perfección. En breve pasará al entorno de producción. Se aceptan mejoras (y hasta críticas).

miércoles, 24 de junio de 2015

Downtime. El cancer de un ISP

    Muchos son los aspectos que me preocupan a la hora de gestionar la red. Tal vez, uno de los que mas pánico me produce es el Downtime. Cuando digo downtime me refiero a la caida de algún tramo de la red, sobre todo de la capa de agregación o de la de core. Caida que produce la falta de servicio a mas de un cliente, por lo tanto, responsabilidad directa del operador.
¿Y como puedes evitar el downtime?
    Pues no se si me atrevo a contestar a esta pregunta, casi diría que directamente no puedes evitarlo. Pero una serie de medidas te pueden ayudar a minimizar el tiempo de corte, evitarlo, o en cualquier caso, disminuir su impacto sobre el servicio. Enumeraría estas medidas, de mayor a menor importancia, según mi criterio, de la siguiente manera:


1.- Redundancia.
    Como bien indica el amigo Felipe ( )   en la publicación de su blog, la redundáncia es un aspecto imprescindible. Es la primera medida inmediata. Gracias a la redundancia podemos hacer que el fallo sea inapreciable para el cliente final. La redundancia es seguramente el aspecto que mas caro parezca de todos lo que enumeraremos, aunque una caida de varias horas es seguro mas cara que todo el material redundante. Redundar significa tener por duplicado todo. Routers, switches, AP's, técnicos (si, humanos), proveedores, baterías, etc, etc, y un largo etc. TODO.
    2.- herramientas de monitorización y solución de fallos.
        Tan importante como la redundancia es la monitorización en tiempo (casi) real. Si detectamos el fallo antes que nadie, lo mas probable es que no afecte a mucha gente, y si somos rápidos, no afectará a nadie.  En cualquier caso, el downtime siempre será menor.  A continuación detallo algunas de las herramientas que utilizo a diario para la detección y solución a fallos.
    • SNMP (dude)
    • tr069
    • Smokeping 
    • Ospf, BGP, (R)STP,Stacking, Bonding.
    • Scripting
    Seguro que hay muchas mas y mejores.
    3.-memoria.
        Para mi, tener memoria significa no cometer el mismo fallo mas de una vez (a lo sumo dos). Cada vez que uno de mis técnicos vuelve de una incidencia en el servicio le pregunto por que ha sido provocada. La mayoría de las veces son problemas del cliente (cables mal conectados, ordenadores infectados con multitud de virus, problemas de cobertura con el wifi interno, etc.), pero aun así, siempre intentamos buscar alguna forma de que ese mismo problema no nos vuelva a afectar. En este aspecto, es fundamental el Scripting y el TR-069. Casi siempre son las mejores herramientas. 

    4.- información al cliente.
        Aún teniendo todo el cuidado del mundo, y las mejores herramientas, todavía cabe la posibilidad de una caida. Ante esta situación, no hay que esconder la realidad. Mas bién todo lo contrario. Desde mi punto de vista es fundamental mantener informado periodicamente a los usuarios de la caida, y que vean que estamos trabajando en ella. Uno de mis proveedores, ante una caida del servicio, me avisa por SMS cada 30 minutos, y me indica que siguen trabajando en encontrar una solución. Me gusta que me aporten nueva información en cada SMS, como el tiempo estimado de resolución, o la ubicación de la avería. Sobre todo para que no parezca que es un robot quien envia los SMS. Yo no tengo nada similar en mi red, pero reconozco que me gustaría aplicarlo. Todo llegará.
        

    miércoles, 10 de junio de 2015

    Es cara mi conexión a Internet ?

    Muchos son los operadores de Internet los que venden Internet a precios  baratos. La mayoría de ellos a través de tecnologías Wifi, aunque en sus páginas web lo anuncien como Wimax.

    Este es un primer concepto que se debería aclarar. El hecho de utilizar protocolos propietarios de los fabricantes , como el Airmax de Ubiquiti o el NV2 de Mikrotik, no convierte a un chip Wifi en Wimax. Es cierto que estas tecnologías propietarias ofrecen mejoras de rendimiento, pero NO ES WIMAX.  Wimax implicaría posesión de espacio radioeléctrico, espacio por el cual se paga (y no poco). Sin contar con el coste de los equipos. Por lo tanto, desconfiaría de una compañía que dice venderme Wimax por 10€/mes o incluso menos. Simplemente es mentira. Ahora tambien se lleva llamarlo "4G" incluso en algunos casos he visto llamarlo 5G. En la mayoría de los casos, mas de lo mismo. Se aprovecha el desconocimiento general en tecnología de los potenciales clientes para venderles palabras que suenan muy bien, pero que no son mas que tecnología Wifi mejorada. Tengo que reconocer que en alguna ocasión me he dejado seducir por estas nomenclaturas, y las he usado cuando no debía. Sirva esta entrada como penitencia.

    Por otra parte, muchos de estos operadores "ultra low cost" suelen vender muchiiiiiiisimos megas. Cosa que es , si cabe, mas falsa que la anterior. Como he comentado antes, el 99% de estos operadores usan tecnologías Wifi. Con Wifi se pueden dar bastantes megas por cada punto de acceso (AP), pero si conectas a toda una ciudad a este AP, los megas se tendrán que repartir. Por lo tanto, la solución ideal para dar muchos megas es tener muchos puntos de acceso, y a ser posible, próximos al cliente final. Todos estos puntos de acceso son caros, y también lo es, el espacio que ocupan en las torres. La mayoría de operadores "low cost" tienen muy pocos AP's (o uno solo), colocados estratégicamente en un punto alto, al que conectan a muchísimos clientes. Con este sistema pueden dar Internet barato, claro, pero es imposible dar Internet de calidad, sin cortes ni laténcias altas. tampoco podrán dar nunca los megas que prometen.


    Y no se les ve el plumero?, pues existen técnicas para maquillar el resultado. Con politicas de QoS (calidad de servicio) puedes hacer que un test de velocidad te muestre los resultados que el cliente quiere ver, aunque en realidad, estés penalizándole el resto de tráfico. Usar políticas de QoS es algo necesario e imprescindible en una red. No todo el tráfico que se genere tiene que tener necesariamente la misma prioridad. pero usar el QoS para engañar al cliente es una práctica cuanto menos despreciable. Sobre todo cuando la unes con una oferta comercial agresiva (e imposible de cumplir). He llegado a ver compañias que ofrecen 40 mbps por 6€ al mes. Simplemente, mentira. Algunos por lo menos tienen la decencia de poner "hasta 40 mbps". Así siempre pueden decir que no mienten.
    *Router Mikrotik con un ejemplo de penalización de tráfico P2P

    Resumiendo, cuando una compañia te ofrezca una ganga en la conexión, ten por seguro varias cosas:
    - No tienen redundancia en su red. Caidas continuas del servicio.
    - No te llegarán los megas que te dicen, aunque se esforzarán por que el test de velocidad diga lo contrario. Haz la prueba con descargas grandes.
    - Tendrás laténcias altas, debido a la gran cantidad de tráfico que soporta el AP que te da servicio y al estado de su red en general.
    - Mala calidad en la atención al cliente. Un técnico dará servicio a miles de usuarios. La facturación mensual que generan estas compañías no da para mucho mas.
    - Tus datos viajaran con una seguridad comprometida. Seguramente la compañía cuenta con 0 ingenieros de Telecomunicaciones o Informática en la plantilla.

    Vamos, que si pagas 6€ por tu conexión a internet, tendrás un servicio de 6€, aunque te digan lo contrario.

    Con esta entrada no pretendo defender los precios caros en las conexiones a Internet. Solo intento promover que los operadores ofrezcan un mínimo de calidad en sus conexiones, ya que las malas prácticas que muchos practican, acaban ensuciando a los "wiferos" en general. Muchos clientes empiezan a desconfiar de la tecnología debido a su mala experiencia con estos operadores.

    miércoles, 3 de junio de 2015

    La maldita tecla de borrar del Mac

    Etos dias estoy configurando la cabecera GPON de Huawei. Pues al acceder a ella por SSH desde el Mac, el botón de borrado no funciona. No he visto cosa mas molesta para trabajar que esta. Al final, con un ratito de google y varios intentos de prueba > fallo, he dado con la solución.

    Con la ventana de la consola activa, hay que entrar en el menú Terminal > preferencias > menú configuración > botón de teclado. Una vez aquí, seleccionar el perfil al que quereis añadir el botón de borrado (en mi caso Ocean), configurarlo sin ningún modificador y con la acción enviar el texto: \010 (se escribe solo  posicionandosé directamente sobre la caja de texto y pulsando las teclas alt + h). Con esto, problemon solucionado. Ahora toca a ir afinando los demas botones que tambien fallan.