ndds: publicación-suscripción en tiempo real javier garcía carreño
TRANSCRIPT
NDDS: Publicación-Suscripción en Tiempo Real
Javier García Carreño
NDDS: beneficios claves
Es un middleware que permite la publicación-suscripción en tiempo real.
Evita la necesidad de ser un experto en la programación de redes.
Mensajería rápida y eficiente para aplicaciones en tiempo real.
Simplifica el diseño de aplicaciones.
Sistemas distribuidos en tiempo real
Diferentes clases de nodos Diferentes tipos de iteraciones
Mensajes cíclicos Comandos y eventos acíclicos
Patrones complejos de comunicación. Reconfiguración dinámica. Tolerancia a fallos. Integración con sistemas comerciales sobre
redes estándar.
Sistemas distribuidos en tiempo real
Diferentes tipos de datos tienen diferentes requisitos de comunicación Datos cíclicos
El tiempo es crítico A menudo es Muchos-a-Muchos Lo último es lo mejor
Datos acíclicos Comandos, eventos y solicitudes
1-a-1 o 1-a-Muchos En ocasiones el tiempo es crítico Fiable y en orden, exactamente una sola vez
Información de estado 1-a-1 o 1-a-Muchos Subconjuntos dinámicos de toda la estructura de datos
Uso de protocolos de Internet en aplicaciones en Tiempo Real
TCP/IP se usa en comunicación fiable TCP reintenta el envío de
los paquetes perdidos y no enviará nuevos paquetes mientras tanto.
La aplicaciones esperan en TCP a obtener los paquetes perdidos o un timeout.
Por todo ello, TCP se usa en comunicaciones que no requieran tiempo real.
Standard IP network(Ethernet, Wireless, 1394,
etc.)
IP Protocol Stack
TCP
No RT
Uso de protocolos de Internet en aplicaciones en Tiempo Real
UDP/IP soporta mensajería determinista Sólo envía datagramas Introduce mínima
sobrecarga y puede ser muy rápido
Sin conexiones ni reintentos
Se pueden construir aplicaciones en tiempo real sobre UDP
Standard IP network(Ethernet, Wireless, 1394, etc.)
IP Protocol Stack
TCP
No RT
UDP
Tiempo Real
Uso de protocolos de Internet en aplicaciones en Tiempo Real
UDP es un protocolo sencillo, a bajo nivel. Esto implica aplicaciones complejas.
El uso de un middleware simplifica el desarrollo, ya que actúa como una capa de software entre la pila de protocolos y la aplicación, que: Aísla la aplicación de las
funciones propias de red. Proporciona una capa de
servicios que simplifican la programación de la aplicación.
Standard IP network (Ethernet, Wireless, 1394, etc.)
IP Protocol Stack
TCP
No RT
UDP
Aplicación Tiempo Real
Middleware tiempo real
Modelos de Distribución de datos
Punto a Punto Modelo telefónico, diseñado en los 70
Para empleo con TCP
Sencillo, gran ancho de banda
Sólo funciona con unos pocos nodos
Modelos de Distribución de datos
Cliente/Servidor Modelo de Mainframe diseñado en los 80
Práctico cuando los datos están centralizados
Cuellos de botella en el servidor, único punto de fallo, poco adecuado para la comunicación cliente-cliente
Modelos de Distribución de datos
Publicación / Suscripción
Campo probado Simplifica la
programación de 1-a-Muchos
Mínima carga de red Adecuado sobre
cualquier red estándar
Paradigma Publicación/Suscripción
El productor de datos no necesita saber donde se encuentran los suscriptores
Los consumidores tampoco necesitan saber donde están los publicadores.
Middleware
PS es lo mejor para Tiempo Real
El más eficiente uso del ancho de banda No necesita tráfico alguno Directo, transferencia conducida por evento Distribución de Muchos-a-Muchos No son necesarios servidores intermedios
Programación muy sencilla Comunicaciones anónimas Apropiado para todos los tipos de datos:
Cíclico Acíclico Propagación de variables
PS no es suficiente para TR
Los requisitos de una aplicación en TR:Uso eficiente del ancho de bandaBaja latenciaPlazos de entrega de tiempo realReposición en caliente de manera
transparenteMensajería fiable
Características NDDS
Comunicaciones anónimasLas aplicaciones usan nombres para
identificar tópicos, no direcciones de red.Conversión de datos automática
No es necesario el MarshallingConfiguración de red dinámica
Arranca, añade y borra los nodos en cualquier secuencia, en cualquier momento
Características NDDS
NDDS es rápidoMensajes de 256byte a 4 nodos
Unicast: inferior a 0.4msMulticast: inferior a 0.25 ms
Mensajes de 1024byte a 4 nodosUnicast: inferior a 0.75msMulticast: inferior a 0.50ms
Para NDDS 2.3 sobre VxWorks con PIII(450MHz) sobre Ethernet de 100Mb
Características NDDS
API muy simpleCon sólo 4 llamadas se pueden publicar
mensajes
Suscripción en sólo 3Disponible para C, C++ y JavaReemplaza cientos de llamadas a sockets
NddsInit(0,NULL);HelloMsgNddsRegister();publication = NddsPublicationCreate(“Mensaje”,”Hola”, &temp,
persistence, strength);NddsPublicationSend(publication);
Suscripciones NDDS
Suscripciones Control de threads en tiempo real Determinismo Flujo de control
Propiedades de la suscripción Plazo entrega Separación mínima
sin notificación Nuevas notificaciones tiempo
Separación mínima
Plazo entrega timeout notificación
Publicaciones NDDS
Publicaciones Reemplazo rápido y transparente... Actualización fácil
Propiedades de la publicación Fuerza Persistencia
Los suscriptores toman los envíos más fuertes dentro del marco de tiempo persistente
Toma el más fuerte
Toma cualquiera
tiempo
persistencia
Publicación-Suscripción fiable
Modo best-effort minimiza la latencia. NDDS no reenvía los paquetes perdidos (streaming data)
Modo fiable permite recibir los envíos en orden. NDDS reenvía automáticamente los paquetes perdidos (Comandos y eventos)
XX
XX
Modo Best-effort Modo Fiable
NDDS Cliente-Servidor
Los servicios tienen nombre y fuerza
El cliente define el periodo de espera y el plazo de entrega (deadline)
NDDS Envía las solicitudes a los
proveedores seleccionados
Devuelve el más fuerte como primera respuesta
Devuelve fallo si el deadline expira.
Server1Strength = 1
F(X) = 2.9
ClienteCálculo “F(X)”? F(X) = 3
Server2Strength = 4
F(X) = 3 Server3Strength = 2
F(X) =3.1
Toma el mejorToma el primero
fallo
tiempo
espera
deadline
RTPS Reliability Model
Control total para el programador Usa un caché de históricos para conseguir el
envío en orden Esta basado en NACK, con ACKs opcional En el publicador, la aplicación manda el envío
una sola vez El programador establece el tamaño de la caché NDDS guarda en caché todos los envíos hasta que
todos los suscriptores lo obtienen Usa marcas de agua para el control de flujo
Suscriptores: envíos en orden
Cada suscriptor establece Caché de históricos para almacenar los envíos fuera de orden Deadline
NDDS guarda en caché los envíos fuera de orden y solicita su reenvío
Usa ACK y NACK
Sin separación mínima
DeadlineNotificación por timeout
Tiempo
Deadline es mayor que la frecuencia de envío para dar tiempo para reenvíos
NDDS Speculative Caching Method
Especula con el 6 en caché.
Pone el 5 antes del 6 en la caché.Llama a la función de callback con 5 y después 6.
Publica 4Pone 4 en caché 4
5
6
56
6
5
Borra 4 de caché
Publica 5Pone 5 en caché
Publica 6Pone 6 en caché
Borra 5 y 6 de caché
Llama a la función de callback con el 4
Envía 4
Envía 5
Envía 6
Reenvía 5
Ack 4
Solicita 5
Ack 5 y 6
Borra 5 y 6 de la caché
Publicador Suscriptor
Ajuste de fiabilidad
Control de flujo Al publicador se le avisa cuando la cola está a
punto de llenarse El publicador ralentiza la frecuencia para permitir a
los suscriptores la captura Control de buffer
Los publicadores y suscriptores controlan el tamaño de sus buffers
Ajustan su tamaño para afinar rendimiento y memoria
Modelo basado en NACK que disminuye la carga de la red
Beneficios de NDDS
Sin punto único de falloMarshalling/Demarshalling TransparenteArranque aleatorio y descubrimiento
dinámicoPatrones de suscripciónGrupos de publicaciónMúltiples dominios