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 <IP> dev <INT> # ip route add|del <IP> dev <INT> # ip route add|del 0.0.0.0/0 via <IP> dev <INT>

Configuración de rutas
● ●

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 <IP> 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 <IP> 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 ISP

ENRUTADOR 1

VRRP

ENRUTADOR 2

Servidor 1

Servidor 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 ISP

ENRUTADOR 1

VRRP

ENRUTADOR 2

SWITCH 1

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