Redes de alto rendimiento Eloy Espozo Espinoza
Introducción Las redes de alto rendimiento requieren de dispositivos especializados Mantenimiento especializado Resulta una opción de elevado costo
Linux – la alternativa
Es un sistema operativo robusto Presenta capacidades de alto rendimiento en redes Usa mecanismos y algoritmos abier tos
Configuración de la red en Linux ➲
Se pueden utilizar los viejos comandos ● ●
➲
Ifconfig Route
O utilizar el conjunto de herramientas de Iproute2
IProute2 ➲ ➲
Permite manipular todo los detalles relacionados a comunicaciones por red Permite configurar ● ● ● ●
Manipulación de direcciones de red Tablas de enrutamiento Manipulación de túneles Servicios virtuales
IProute2 ➲
Configuración de interfaces de red ●
➲
# ip addr add|del dev
Configuración de rutas ● ●
# ip route add|del dev # ip route add|del 0.0.0.0/0 via dev
Agregación de enlaces ➲
Permite a un equipo tener dos interfaces de red distintas funcionando como una sola ●
Dos equipos interconectados por un cable cruzado (cross-over) pueden sacar ventaja de esta característica
Agregación de enlaces ➲ ➲ ➲ ➲
# modprobe bonding # ip addr add dev bond0 # ip link set bond0 up # ifenslave bond0 eth1 eth2
Alta disponibilidad ➲ ➲
Linux viene con el soporte para Bonding Un equipo puede tener varias conexiones físicas con diferentes switches y presentar una sola dirección al usuario
Alta disponibilidad ➲ ➲ ➲ ➲ ➲
# modprobe bonding mode=1 miimon=100 downdelay=200 updelay=200 # ip link set bond0 addr <MAC> # ip addr add dev bond0 # ip link set bond0 up # ifenslave bond0 eth1 eth2
Linux como conmutador ➲ ➲ ➲ ➲ ➲
Baja Latencia Soporte Spanning Tree Compilar el kernel con soporte para Bridging Instalar bridge-utils Levantar las instancias correspondientes
➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲
Bridge-utils
# brctl addbr switch # brctl addif switch eth0 # brctl addif switch eth1 # brctl addif switch eth2 # ip addr flush dev eth0 # ip addr flush dev eth1 # ip addr flush dev eth2 # brctl stp switch on # ip link set switch up
Bridge-utils ➲ ➲ ➲ ➲ ➲ ➲ ➲
#ip link switch down # brctl stp switch off # brctl delif switch eth0 # brctl delif switch eth1 # brctl delif switch eth2 # brctl delbr switch # rmmod bridge
➲ ➲ ➲ ➲
Ebtables
Proyecto que busca implementar un cortafuegos de capa 2 Impacto mínimo en una red Transparente a las aplicaciones finales Permite MAC-NAT, Brouting
Ebtables ➲ ➲
Se instala generalmente en un bridge Se debe reconfigurar el kernel ●
➲
802.1d Ethernet Bridging (CONFIG_BRIDGE)
Se puede instalar también arptables
Vlan ➲ ➲ ➲
Una manera de dividir una LAN en segmentos lógicos Requiere recompilar el kernel Configuración ● ● ●
# vconfig add eth0 7 # ip addr add dev eth0.7 192.168.1.3/24 # ip link set eth0.7 up
Linux como enrutador Permite establecer diferentes tipos de enrutado Permite filtrar y seleccionar información a enrutar Trabaja con rutas estáticas y dinámicas
Linux como enrutador ➲
Se debe habilitar el reenvío IP (IP forwarding) ● ●
/proc/sys/net/ipv4/ip_forwarding /proc/sys/net/ipv4/conf/$DEV/forward
Selección de rutas ➲
Se basan en la dirección destino ● ●
Se consulta la caché de enrutamiento Se consulta la Base de Datos de Políticas de Enrutamiento (RPDB)
Calidad de Servicio ➲
Servicio que provee diferenciación y rendimiento asegurado para aplicaciones Internet ● ●
Diferentes servicios a diferentes aplicaciones de acuerdo a sus requerimientos Ancho de banda, retardos, retardo y variación de retardo (jitter) controlados
Calidad de servicio
➲
Permite trabajar con Diffserv/Intserv
➲
No se limita sólo a tráfico saliente
➲
Se puede utilizar el comando tc de Iproute
➲
●
Policing
●
Shaping
Existe una gran variedad de selectores y filtros
Linux Virtual Server ➲
Es un parche que permite al kernel establecer balanceo de carga y virtualización
➲
Establece un contenedor de servidores virtuales
➲
Provee capacidades de virtualización y balanceo de carga entre servidores
Balanceo de carga ➲ ➲ ➲
Los servidores pueden resultar pequeños para la carga que reciben Se convierten en cuellos de botella Un alternativa es instalar más servidores
Balanceo de carga ➲ ➲ ➲
Los clientes sólo conocen a uno de los servidores Se tendría que replicar la información en todos los servidores Si uno falla, el servicio por completo puede detenerse
Balanceo de carga ➲
Se requiere ● ●
➲
Mecanismo para mantener varios equipos interconectados Mecanismos para aparentar ser un solo servicio
LVS. Linux Virtual Server
Balanceo de Carga ➲
Se debe tener cuidado de: ● ●
Disponibilidad de los servidores reales usando verificaciones de salud Disponibilidad de balanceadores de carga usando protocolos de sobrefalla
Balanceo de carga ISP
ENRUTADOR 1
Servidor 1
Servidor 2
Servidor 3
Enrutadores redundantes ➲ ➲ ➲
Generalmente los clientes utilizan sólo un enrutador para conectarse a Internet Un enrutador es un punto de falla crítico La solución es tener múltiples enrutadores redundantes
Enrutadores redundantes ➲
➲
Los clientes no utilizan protocolos de enrutamiento, no saben como lidiar con varios enrutadores Sólo tienen una dirección de pasarela por defecto (aunque falle)
Enrutadores redundantes ➲
La solución ● ●
➲ ➲
Mecanismos de monitoreo entre enrutadores Mecanismos para aparentar tener un único enrutador
HSRP. Hot Standby Router Protocol VRRP. Virtual Router Redundancy Protocol
VRRP ➲ ➲
➲
Es un protocolo que provee redundancia entre enrutadores Permite a dos o más enrutadores presentar una dirección IP común virtual a todos los sistemas de la red Se basa en una especificación IETF
Solución de alta disponibilidad ISP
ENRUTADOR 1
Servidor 1
ISP
VRRP
Servidor 2
ENRUTADOR 2
Servidor 3
Caso Práctico La UCB La Paz, ve con interés el uso de nuevas tecnologías: Ipv6, VoIP, MPLS, etc.. Se viene experimentando con soluciones de alta disponibilidad de bajo costo Se trata de utilizar equipos en “desuso”
Recursos utilizados Equipos monoprocesador AMD K6 Memoria RAM 32-64 MB Disco duro de 1-10 GB Tarjetas de red 10/100 Mbps Cableado Linux (2.4.31)
Arquitectura implementada ISP
ENRUTADOR 1
ISP
VRRP
SWITCH 1
ENRUTADOR 2
SWITCH 2
SWITCH 3
Keepalived
Aplicación del área de usuario que interactúa con LVS Realiza verificación en capa 3, 4 y 5 Balanceo de Carga verificación de conexión (healthcheck) Usa VRRP como director
Keepalived vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 1 priority 100 authentication { auth_type PASS auth_pass password
} virtual_ipaddress { 192.168.10.10/24 brd 192.168.10.255 dev eth0
} virtual_routes { src 192.168.10.10 to 192.168.100 dev eth0 src 192.168.10.10 to 0.0.0.0/0 via 192.168.10.100 dev eth0
}
}
Keepalived vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 1 priority 50 authentication { auth_type PASS auth_pass password
} virtual_ipaddress { 192.168.10.10/24 brd 192.168.10.255 dev eth0
} virtual_routes { src 192.168.10.10 to 192.168.100 dev eth0 src 192.168.10.10 to 0.0.0.0/0 via 192.168.10.100 dev eth0
}
}
Comportamiento del tráfico ICMP ➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲ ➲
64 bytes from 192.168.10.100: icmp_seq=23 ttl=63 time=1.12 ms 64 bytes from 192.168.10.100: icmp_seq=24 ttl=63 time=1.07 ms 64 bytes from 192.168.10.100: icmp_seq=25 ttl=63 time=1.21 ms 64 bytes from 192.168.10.100: icmp_seq=26 ttl=63 time=1.02 ms 64 bytes from 192.168.10.100: icmp_seq=27 ttl=63 time=1.05 ms 64 bytes from 192.168.10.100: icmp_seq=28 ttl=63 time=1.31 ms 64 bytes from 192.168.10.100: icmp_seq=29 ttl=63 time=1.19 ms 64 bytes from 192.168.10.100: icmp_seq=30 ttl=63 time=1.13 ms 64 bytes from 192.168.10.100: icmp_seq=31 ttl=63 time=1.09 ms 64 bytes from 192.168.10.100: icmp_seq=32 ttl=63 time=1.18 ms 64 bytes from 192.168.10.100: icmp_seq=33 ttl=63 time=1.20 ms
Comportamiento del tráfico ICMP
Comportamiento del tráfico TCP
Enlaces de interés • • • • • • •
http://www.linux-ip.net http://www.lartc.org http://ebtables.sourceforge.net http://www.keepalived.org http://www.linux-ha.org http://bridge-utils.sourceforge.net http://www.netfilter.org
Muchas gracias