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 banda
Baja latencia
Plazos de entrega de tiempo real
Reposición en caliente de manera transparente
Mensajería fiable
Características NDDS
Comunicaciones anónimas
Las aplicaciones usan nombres para identificar tópicos, no direcciones de red.
Conversión de datos automática
No es necesario el Marshalling
Configuración de red dinámica
Arranca, añade y borra los nodos en cualquier secuencia, en cualquier momento
Características NDDS
NDDS es rápido
Mensajes de 256byte a 4 nodos
Unicast: inferior a 0.4ms
Multicast: inferior a 0.25 ms
Mensajes de 1024byte a 4 nodos
Unicast: inferior a 0.75ms
Multicast: inferior a 0.50ms
Para NDDS 2.3 sobre VxWorks con PIII(450MHz) sobre Ethernet de 100Mb
Características NDDS
API muy simple
Con sólo 4 llamadas se pueden publicar mensajes
Suscripción en sólo 3
Disponible para C, C++ y Java
Reemplaza 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
(Gp:) sin notificación
(Gp:) Nuevas
notificaciones
(Gp:) tiempo
(Gp:) Separación mínima
(Gp:) Plazo entrega
(Gp:) 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)
(Gp:) X
(Gp:) X
(Gp:) X
(Gp:) X
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.
Server1
Strength = 1
F(X) = 2.9
Cliente
Cálculo F(X)?
F(X) = 3
Server2
Strength = 4
F(X) = 3
Server3
Strength = 2
F(X) =3.1
(Gp:) Toma el mejor
(Gp:) Toma el primero
(Gp:) fallo
(Gp:) tiempo
(Gp:) espera
(Gp:) 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
(Gp:) Sin separación mínima
(Gp:) Deadline
(Gp:) Notificación
por timeout
(Gp:) Tiempo
(Gp:) Deadline es mayor que la frecuencia de
envío para dar tiempo para reenvíos
NDDS Speculative Caching Method
(Gp:) Especula con el 6 en caché.
(Gp:) Pone el 5 antes del 6 en la caché.
Llama a la función de callback con 5 y después 6.
(Gp:) Publica 4
Pone 4 en caché
(Gp:) 4
(Gp:) 5
(Gp:) 6
(Gp:) 5
(Gp:) 6
(Gp:) 6
(Gp:) 5
(Gp:) Borra 4 de caché
(Gp:) Publica 5
Pone 5 en caché
(Gp:) Publica 6
Pone 6 en caché
(Gp:) Borra 5 y 6 de caché
(Gp:) Llama a la función de callback con el 4
(Gp:) Envía 4
(Gp:) Envía 5
(Gp:) Envía 6
(Gp:) Reenvía 5
(Gp:) Ack 4
(Gp:) Solicita 5
(Gp:) Ack 5 y 6
(Gp:) Borra 5 y 6 de la caché
(Gp:) Publicador
(Gp:) 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 fallo
Marshalling/Demarshalling Transparente
Arranque aleatorio y descubrimiento dinámico
Patrones de suscripción
Grupos de publicación
Múltiples dominios