Title: Presentacin de PowerPoint
1REDES DE ALTAS PRESTACIONES Y SUS APLICACIONES
Lección 6. Aplicaciones de los Procesadores de Red
Departamento de Arquitectura y Tecnología de
Computadores
E.T.S. Ingeniería Informática
Julio Ortega Lopera. Curso 2004/2005
2Índice
- Introducción
- IP Forwarding
- Distribución de Carga Adaptativa
- Redes Activas
- Externalización de protocolos (offloading)
Curso de Doctorado RAPyA (2004/05)
3Introducción
La evolución hacia los Procesadores de red
(a)
(b)
CPU
CPU
El bus que conecta las NIC con la CPU se
reemplaza por un conmutador (switch fabric) A
medida que se necesita un ancho de banda mayor
las NIC se sustituyen por circuitos integrados de
propósito específico (ASIC) Para conseguir más
flexibilidad y eficiencia en coste los ASIC son
reemplazados con procesadores de red (NP)
NIC
NIC
Bus E/S
Switch Fabric
(c)
(d)
CPU
CPU
Interfaz
API con NP
ASIC
NP
Interfaz
Switch Fabric
Switch Fabric
Curso de Doctorado RAPyA (2004/05)
4Introducción
- Los Procesadores de Red se están extendiendo
rápidamente por dar una respuesta aceptable a los
requisitos de - Prestaciones
- Adaptabilidad
- Diferenciación
- Corto tiempo de desarrollo de aplicaciones
- Se está produciendo un proceso de estandarización
de APIs y protocolos por diversas organizaciones
(IETF, Internet Engineering Task Force,
www.ietf.org)
- Aplicaciones Funciones de Red Avanzadas
- Procesamiento de cabeceras
- Envío inteligente (Intelligent Forwarding)
- Procesamiento de datos (Redes Activas)
- Externalización de Protocolos (Offloading)
Curso de Doctorado RAPyA (2004/05)
5Índice
- Introducción
- IP Forwarding
- Distribución de Carga Adaptativa
- Redes Activas
- Externalización de protocolos (offloading)
Curso de Doctorado RAPyA (2004/05)
6IP Forwarding
- La recepción y el envío de paquetes IP es una de
las funciones más frecuentes en los sistemas de
red y por ello es también uno de los benchmarks
más utilizados para evaluar las prestaciones de
los distintos procesadores de red (ver
www.npforum.org) - Realizar el IP forwarding implica
- - Examinar la dirección de destino de los
paquetes entrantes - Determinar la dirección del encaminador siguiente
al que enviar - Enviar el paquete al siguiente encaminador
- Para determinar la dirección del siguiente equipo
al que enviar el paquete hay que consultar la
Tabla de Enrutamiento almacenada. Esta tabla la
crea y la mantiene el protocolos de
encaminamiento (como por ejemplo el BGP, Border
Gateway Protocol)
Curso de Doctorado RAPyA (2004/05)
7IP Forwarding en el IXP1200 (I)
StrongARM Procesador RISC de 32 bits con caches
internas Microengines (PE) 6 unidades de 32 bits
programables y arquitectura RISC, cada una con un
cauce de 5 etapas, con multihebra (4 contextos) y
256 registros. Unidad SDRAM interfaz
inteligente de memoria que se puede utilizar
desde el strongARM, las Microengines, y los
dispositivos en el bus PCI Unidad SRAM interfaz
inteligente de memoria accesible desde el
StrongARM y las Microengines Unidad de Interfaz
PCI interfaz para acceder al procesador host o a
un dispositivo PCI Unidad de Bus IX unidad
controlada por las Microengines para el
movimiento de datos Otros elementos unidad de
hashing, FIFOs para transmisión y recepción,..
Curso de Doctorado RAPyA (2004/05)
8IP Forwarding en el IXP1200 (II)
El procesador StrongARM es el responsable de
cargar las memorias de instrucciones de los PE
(microengines) Las instrucciones del StrongARM se
captan desde la DRAM Existe una memoria interna
(4 KB on-chip scratch memory) para la
sincronización y el control de los PE Las colas
FIFO se utilizan para enviar/recibir paquetes de
los puertos de red conectados al bus IX. Las
colas FIFO son en realidad bancos de registros de
16 slots (registros) de 64 bits. El programador
es el responsable de utilizar esos registros como
si fueran una cola
La DRAM está conectada con un camino de datos de
64 bits a 88 MHz (5.6 Gb/s) y se utiliza como
buffer para los paquetes. La SRAM almacena la
tabla de encaminamiento y los estados de flujo
necesarios. Tiene un ancho de banda de 32 x 88
MHz 2.8 Gbps
Curso de Doctorado RAPyA (2004/05)
9IP Forwarding en un IXP1200 (III)
La unidad común para la transferencia de datos es
un paquete MAC de 64 bytes (MP) (1) Cuando se
recibe un paquete IP (en un puerto MAC) se divide
en MPs, se marca (primero, intermedio, o único
MP) y se pasan a la cola FIFO de entrada (2) Un
contexto de un PE (Microengine) mueve los MPs de
cada paquete desde la FIFO al buffer en DRAM (3)
Cuando el paquete está listo para ser enviado,
otro contexto de un PE (posiblemente distinto del
anterior) lee los MPs del buffer en DRAM los
marca con el puerto MAC de salida y los almacena
en la FIFO de salida (4) El circuito MAC
correspondiente (al puerto MAC de salida) lee los
MP de la FIFO de salida
Las prestaciones dependen del retardo de la
transferencia de cada MP Ciclos para transferir
32 bytes entre componentes Como cada
transferencia mueve 32 bytes como máximo,
transferir un MP (64 bytes) entre las FIFO de
entrada y de salida necesita 4 transferencias (2
FIFO-DRAM y 2 DRAM-FIFO) 2x452x55200 ciclos
(1,12 microseg con PEs a 177 MHz)
Curso de Doctorado RAPyA (2004/05)
10IP Forwarding en un IXP1200 (IV)
La transferencia de un MP (64 bytes) entre FIFO
de entrada y de salida necesita 1,12 microseg
(con PEs a 177 MHz) cada contexto tiene una
velocidad de envío de 893 Kpps (1 paquete de 64
bytes/1.12 ms) Si los 24 contextos pudieran
funcionar a pleno rendimiento en paralelo, se
tendrían 21.4 Mpps. Sin embargo, el cuello de
botella es la memoria DRAM (5.6Gbps/(648
bits/paquete))/2 5.45 Mpps
Se divide por 2 dado que cada paquete hay que
escribirlo y leerlo de la DRAM
Curso de Doctorado RAPyA (2004/05)
11IP Forwarding en un IXP1200 (V)
La programación del IXP1200 para el IP Forwarding
plantea dos complicaciones Hay que gestionar dos
conjuntos de recursos paralelos (los 24 contextos
y los 32 slots de las FIFOs) Las posibles
colisiones en los puertos (dos o más paquetes de
entrada asignados a un mismo puerto de salida).
Para evitar problemas se asigna un contexto para
la entrada de paquetes desde los puertos a la
DRAM y otro contexto diferente para la salida de
la DRAM hacia los puertos de salida.
Los 24 contextos de dividen en dos grupos (16 se
encargan de la FIFO de entrada y 8 de la de
salida) así hay un número entero de contextos
por puerto, un número entero de Microengines
asignados a la entrada y a la salida y hay el
doble trabajo para la entrada que para la
salida. Se hace una asignación estática de los
slots de las FIFOs se definen 8 parejas de slots
en cada FIFO a cada contexto de salida se asigna
una pareja slots de la FIFO de salida y un
puerto y a cada dos contextos de entrada se
asigna una pareja de slots de la FIFO de entrada
y un puerto. En SRAM, además de la tabla de
enrutamiento, hay 8 colas (una por puerto) de
direcciones de paquetes a transmitir. Estas
direcciones apuntan a los paquetes en los buffers
de la DRAM.(donde se implementa el buffer para
los paquetes
Componentes principales utilizados para el IP
Forwarding (8 puertos Ethernet de 100 Mbps, es
decir 800 Mbps)
Curso de Doctorado RAPyA (2004/05)
12IP Forwarding en un IXP1200 (VI)
Cada línea de la tabla de enrutamiento tiene 16
bytes de información SrcIPAddr (4 bytes) con la
dirección IP fuente DstIPAddr (4 bytes) con la
dirección IP destino DstEthAddr(6 bytes) con la
dirección Ethernet destino Queue (1 byte) para
seleccionar la cola a utilizar Func (1 byte)
para seleccionar la función a aplicar al
paquete) Cada contexto dispone de un conjunto de
registros que, estáticamente, se asignan para
contener las cabeceras de los paquetes (Reg_Hdr)
y a una entrada de la tabla de enrutamiento
(Reg_Entry)
Curso de Doctorado RAPyA (2004/05)
13IP Forwarding en un IXP1200 (VII)
until_ready_rcv(p,c) chequea (busy loop) si hay
datos disponibles en el puerto p y, en ese caso,
hace que el MP correspondiente pase al slot de la
FIFO asignado al contexto c Reg_Entry.Queue es
el campo Queue de la línea de la tabla de
enrutamiento que está almacenado en las registros
del contexto asignados a las líneas de dicha
tabla. Reg_Hdr.DstIPAddr es la dirección de
destino de la cabecera IP que se encuentra en los
registros. DRAMa dirección a en la DRAM En la
DRAM se define un buffer cíclico, de forma que el
buffer para un paquete se selecciona como una
función del puerto p (dirección p_buf) enqueue
inserta la dirección del buffer que tiene el
paquete en la cola de paquetes del puerto de
salida hash es una función implementada en
hardware que no requiere accesos a
memoria. Reg_Entry.Func() incluye las
modificaciones de contenidos o cabeceras de
paquetes específicas del protocolo (checksum, set
MAC address de destino,...) End_Of_Packet indica
al contexto que se ha recibido todo el paquete y
que se puede insertar en la cola de transmisión
(el movimiento se produce para todos los MP, la
condición una vez por paquete)
c es un contexto asignado al puerto p Cada bucle
se ejecuta una vez por cada MP recibido
La salida se realiza de forma similar a la
entrada los MP pasan de la DRAM a la FIFO.
Curso de Doctorado RAPyA (2004/05)
14IP Forwarding en un IXP1200 (VIII)
Se comprueba si hay datos disponibles en el
puerto p. Cuando los haya el contexto c se
encargará de moverlos a la cola FIFO de entrada
(a los slots asignados a c)
Se mueven los datos desde los slots de la cola
FIFO asignados a c al buffer en DRAM (a la
dirección que se le ha asignado al contexto
Se mueve la cabecera a los registros del contexto
correspondientes
Se busca en la tabla de enrutamiento (mediante la
función hash aplicada a la dirección de destino
que está en los registros del contexto) la línea
que correspondería al mensaje
Se aplica la función que estaba en la línea de la
tabla de enrutamiento (ahora en el registro
correspondiente del contexto) a la cabecera del
mensaje
Se mueve la línea de la tabla de enrutamiento
desde la SRAM hasta los registros del contexto
Si se ha recibido todo el paquete (y después de
haber realizado el procesamiento de la cabecera
en las anteriores instrucciones) un puntero al
paquete se introduce en la cola de transmisión
(en la DRAM) cuya dirección está en el registro
correspondiente del contexto (se había leído de
la tabla de enrutamiento
Curso de Doctorado RAPyA (2004/05)
15IP Forwarding en un IXP1200 (IX)
El contexto de salida c, que está asignado al
puerto p comprueba si hay datos para enviar a
través de ese puerto
Si es el comienzo del envío de los datos habrá
que determinar en que dirección de la DRAM
empieza el paquete. Para ello se utiliza el
puntero que está en la cola de transmisión
asignada al puerto p
Se mueven los MP desde la dirección
correspondiente de la DRAM a los slots de la cola
de salida que se han asignado al puerto p (y al
contexto c)
Se da la orden para que empiece la transferencia
entre la cola FIFO de salida (los slots asignados
al puerto p y al contexto c) y el puerto MAC p.
Curso de Doctorado RAPyA (2004/05)
16IP Forwarding en un IXP1200 (X)
Para cada MP de 64 bytes se necesitan 7 accesos a
DRAM (no los 4 accesos que se indicaron
antes) Para cada paquete, la cabecera debe pasar
a los registros del contexto, modificarse y
volverse a escribir en memoria. La asimetrís en
el número de accesos (1 lectura y dos escrituras)
se debe a que el número de bytes de cabecera
Ethernet IP al comienzo de cada paquete es de 34
bytes y sólo se dispone de 32 bytes de registros
para las transferencias DRAM no hay que copiar
toda la cabecera Ethernet en los registros (solo
una lectura a DRAM) pero sí hay que copiar la
cabecera Ethernet (una vez construida) para el
paquete de salida (2 escrituras) Ancho de banda
de DRAM 5.01 Gbps (transferencias de 64 bytes) y
4.16 Gbps (transferencias de 32 bytes) 3x64
bytes 1536 bits a 5.01 Gbps 1x32 bytes 256
bits a 4.16 Gbps Total2.71 Mpps Los accesos a
la memoria local se realizan para implementar
operaciones de sincronización, para acceder a los
registros de control,.. etc. prácticamente
saturan la memoria local (aunque se podrían pasar
estas operaciones a la SRAM)
Hay que tener en cuenta que se consideran 8
puertos Ethernet de 100 Mbps 800
Mbps Considerando paquetes de 64 bytes 1.56 Mpps
Curso de Doctorado RAPyA (2004/05)
17IP Forwarding en un IXP1200 (XI)
Jerarquía de Procesadores del IXP1200
Los Microengines (PE) están pensados para
procesar a la velocidad de la línea de datos
pueden dedicar a procesar paquetes aquellos
ciclos que no consume con la recepción/envío de
paquetes. Cada Microengine tiene su memoria de
instrucciones (ISTORE) con capacidad para 1024
instrucciones y puede programarse
independientemente de los restantes. En el
arranque el procesador StrongARM inicializa las
350 instrucciones correspondientes al movimiento
de paquetes (código de infraestructura de
enrutamiento) y deja las restantes para las
actividades de procesamiento que se requieran (se
cargan en el arranque o una vez está operando
previa desactivación por parte del StrongARM). La
modificación de la ISTORE conlleva dos accesos a
memoria por instrucción.
Pentium
StrongARM
Microengines
- Los PE (microengines) controlan las situaciones
correspondientes al tráfico usual (el caso
común). Las situaciones excepcionales (fallos en
la tabla de erutamiento, con necesidad de más
procesamiento) se pasan al procesador StrongARM. - El procesador StrongARM puede acceder
directamente a la DRAM y puede actuar sobre un
paquete almacenado en la misma en cuanto un
Microengine le informe de que está disponible el
paquete (mediante una interrupción o através de
memoria compartida, que puede ser sondeada por el
StrongARM en determinados momentos). - El StrongARM debe verse como un séptimo PE (ya
que compite con los otros seis por acceder a la
memoria DRAM). - Así pues, el StrongARM
- Controla los microengines (actualizando la tabla
de enrutamiento y cargando nuevo código en los
procesadores). - Procesa paquetes excepcionales (con funciones de
envío/recepción IP conocidad) - Sirve de conexión con el procesador Pentium
(carga MPs y los pone en el bus PCI,....)
Curso de Doctorado RAPyA (2004/05)
18IP Forwarding en un IXP1200 (XII)
Jerarquía de Procesadores del IXP1200
En el nivel más alto de la jerarquía está el
procesador de propósito general. Por ejemplo, un
Pentium (en el trabajo de Spalink et al.). Este
procesador ofrece una capacidad de cómputo
considerable, pero hay que tener en cuenta el
tiempo que tarda la información en hacerse
accesible. Una vez se conoce la velocidad a la
que los paquetes pueden llegar al procesador, se
puede estimar el número de ciclos disponible para
procesar los paquetes que llegan.
Pentium
StrongARM
Microengines
Mitad de la media armónica
Velocidades de transferencia en el bus PCI
Curso de Doctorado RAPyA (2004/05)
19Índice
- Introducción
- IP Forwarding
- Distribución de Carga Adaptativa
- Redes Activas
- Externalización de protocolos (offloading)
Curso de Doctorado RAPyA (2004/05)
20Distribución de Carga Adaptativa (I)
- Muchas aplicaciones de red necesitan distribuir
las tareas de procesamiento de datos entre varios
servidores o unidades de procesamiento. - Ejemplo las agrupaciones de servidores Web (Web
server farms) - La distribución equilibrada y adaptativa de carga
entre varios servidores no es trivial - Gran volumen de tráfico y el desconocimiento de
sus características - Necesidad de mantener la conectividad de los
paquetes activos en distintos hosts - Necesidad de minimizar la información de estado
almacenada - Esta aplicación es un ejemplo de lo que se
denomina envío inteligente (intelligent
forwarding)
Curso de Doctorado RAPyA (2004/05)
21Distribución de Carga Adaptativa (II)
El servidor de destino de un paquete se determina
mediante una función hash que tiene en cuenta las
capacidades de procesamiento de los servidores y
es adaptativa dado que considera la evolución de
su carga. Para eso se utilizan dos funciones de
hash Hold y Hnew Las funciones hash utilizan una
parte del paquete que es constante durante la
duración del flujo (por ejemplo la dirección de
la fuente)
Ross, K.W.Hash routing for collections of
shared web caches. IEEE Network, pp.37-44,
Nov-Dic, 97. Kencl, L. Le Boudec,
J.-Y.Adaptive Load Sharing for Network
Processors Proc. INFOCOM, pp.545-554, Junio,
2002.
El procedimiento minimiza la información de
estado que hay que almacenar. El número de
instrucciones a ejecutar depende del número de
servidores, m 20m75 para mlt8 y para mgt8 el
número crece logarítmicamente con m
Curso de Doctorado RAPyA (2004/05)
22Distribución de Carga Adaptativa (III)
Aspectos clave de esta aplicación Colaboración
entre CPU y procesador de red Implementación
rápida de las funciones hash en campos disjuntos
en los encabezamientos Implementación de esquemas
de clasificación con multicampo y actualización
rápida de las reglas de los clasificadores
multicampo Distribución uniforme de las funciones
de hash
Curso de Doctorado RAPyA (2004/05)
23Índice
- Introducción
- IP Forwarding
- Distribución de Carga Adaptativa
- Redes Activas
- Externalización de protocolos (offloading)
Curso de Doctorado RAPyA (2004/05)
24Redes Activas (I)
Las redes activas constituyen una aproximación a
la arquitectura de red en la que los nodos de la
red realizan tareas específicas sobre los
mensajes que se transmiten a través de dicha
red. Esta aproximación está motivada tanto por
las necesidades de determinadas aplicaciones de
usuario como por el surgimiento de las
tecnologías de código móvil que buscan la
capacidad de innovación dinámica de los de
servicios de red Las redes activas suponen un
cambio en la visión tradicional de las
aplicaciones de red (networking) desde una
perspectiva en la que la programabilidad estaba
determinada por la definición de los protocolos y
estaba limitada a sus funciones, a una situación
en la que los paquetes pueden dar lugar a la
ejecución de código a medida que viajan a través
de la red
Curso de Doctorado RAPyA (2004/05)
25Redes Activas (II)
Hay dos aproximaciones Incluir código en los
paquetes para que se vaya ejecutando a medida que
pasa de nodo a nodo (capsule approach) Mantener
el formato de los paquetes y conseguir la
programabilidad a través de programas que se
cargan dinámicamente y se ejecutan a medida que
llegan los paquetes (plug-in approach) La
primera aproximación lleva a la necesidad de
encapsular programas en byte-code (como java)
para asegurar la neutralidad frente a distintas
arquitecturas y la seguridad
Curso de Doctorado RAPyA (2004/05)
26Redes Activas (III)
Aspectos clave de esta aplicación La
interpretación de los programas en byte-code es
un cuello de botella (se puede aliviar mediante
el uso de la compilación JIT, just-in-time, del
código activo) Acceso (especialmente la
escritura) eficiente a la memoria de
instrucciones del NP Procesamiento eficiente de
la parte de datos de los paquetes (payload)
Acceso y programación de la información de envío
(forwarding) de paquetes
Curso de Doctorado RAPyA (2004/05)
27Índice
- Introducción
- IP Forwarding
- Distribución de Carga Adaptativa
- Redes Activas
- Externalización de protocolos (offloading)
Curso de Doctorado RAPyA (2004/05)
28Externalización de Protocolos (I)
Se trata de implementar todo (o la mayor parte)
del trabajo relacionado con el procesamiento de
los protocolos en las interfaces de red. En este
caso, en el procesador de red. Esta técnica está
recibiendo gran atención, fundamentalmente por la
posibilidad de relevar a la CPU del procesamiento
de los protocolos dejando libres los
correspondientes ciclos para otras
aplicaciones. El interés de esta opción es mayor
a medida que las conexiones de gigabits por
segundo se están generalizando Además, la
externalización de los protocolos permite la
implementación de determinadas aplicaciones de
red (cortafuegos, distribuidores de carga de
servidores a nivel de aplicación, etc.) fuera de
la CPU.
Curso de Doctorado RAPyA (2004/05)
29Externalización de Protocolos (II)
La externalización de protocolos de transporte
fiables (como TCP) plantea las siguientes
dificultades Mantenimiento eficiente de un
contexto de estado para cada onexión Disponer de
un servicio de temporización para los
temporizadores de los protocolos Iplementar los
servicios de segmentación, reensamblado y
retransmisión necesarios para el almacenamiento
(buffering) intermedio de los paquetes de cada
contexto Gestión eficiente del tamaño de la
memoria para que no limite la funcionalidad
extensiva de algunos protocolos Disponer de una
API que permita una integración eficiente con las
demás aplicaciones Colaboración eficiente entre
CPU y procesador de red Procesamiento eficiente
de la parte de datos de los paquetes y cálculos
de CRC y demás códigos
Curso de Doctorado RAPyA (2004/05)
30Referencias
Haas, R. et al.Creating Advanced Functions on
Network Processors Experience and Perspectives.
IEEE Network, pp.46-54. Julio/Agosto,
2003. Spalink, T. Karlin, S. Peterson,
L.Evaluating Network Processors in IP
Forwarding. Noviembre, 2000 http//www.cs.prince
ton.edu/research/techreps/TR-626-00
http//www.npforum.org
Curso de Doctorado RAPyA (2004/05)