El Protocolo de transmisión Licklider es un protocolo punto a punto para su uso en enlaces de espacio profundo. LTP se ve comúnmente como el protocolo de capa de convergencia subyacente estándar para el Bundle Protocolos ( RFC 5050 ), apoyando una amplia selección de redes.
LTP recibe su nombre en honor al científico informático estadounidense Joseph Carl Robnett Licklider .
Diseño
LTP está diseñado para ejecutarse directamente sobre una capa de enlace de datos (por ejemplo, el Protocolo de enlace de datos espaciales de los sistemas en órbita avanzada (AOS) [1] ). También se puede ejecutar en el Protocolo de datagramas de usuario (UDP), por ejemplo, si se usa en una red de sensores, en una red privada (donde la impugnación del ancho de banda no es un problema) o con fines de depuración de software. Por lo tanto, no aborda problemas como el enrutamiento o el control de congestión. Originalmente fue diseñado para soportar la transmisión de “larga distancia” en una red interplanetaria; su diseño se basa en experiencias con el protocolo de entrega de archivos CCSDS (CFDP).
Desarrollado para la comunicación espacial, sus características son:
- Transporte de datos confiable para datos importantes (como el encabezado de un archivo)
- Transporte de datos no confiable para datos menos importantes (como píxeles de imagen; un píxel dañado se puede superar)
- Sin intercambio de mensajes para realizar negociación. El protocolo evita este proceso para evitar retrasos debido a los altos tiempos de ida y vuelta . También evita la infrautilización de enlaces.
- Eficiencia energética, ya que solo transmite si hay un enlace disponible y distingue entre datos importantes y no importantes.
- Sus temporizadores funcionan junto con los programas de comunicación y se pueden suspender siempre que se produzca una interrupción programada del enlace.
- Debe estar informado sobre la disponibilidad de la capa de enlace, el tiempo de ida y vuelta y los horarios de comunicación, lo que básicamente requiere una base de información de gestión (MIB). LTP tiene mucho estado.
- Sesiones de transmisión unidireccional, evitan tiempos de ida y vuelta elevados o la incapacidad de un nodo de comunicación de pares para transmitir
La aplicación divide sus datos para enviarlos en dos partes (cualquiera de las partes puede tener un tamaño de 0):
- una parte roja : contiene datos que deben transportarse de manera confiable, deben ser reconocidos por el receptor y deben mantenerse disponibles hasta que se reconozcan. Esto podría ser, por ejemplo, un encabezado que contiene información importante para decodificar los siguientes datos, y cuya corrupción inutilizaría todos los datos siguientes.
- una parte verde . Contiene datos que no requieren un transporte confiable. Dado que no se reconoce la recepción de estos datos, se pueden descartar después de la transmisión.
Protocolo
El motor LTP almacena datos en una cola, comprueba si el enlace hacia el destino está disponible y, de ser así, inicia la transmisión. Si el enlace no está disponible, los datos permanecen en la cola y la transmisión comienza tan pronto como llega una llamada "señal de estado del enlace", ya sea desde una capa de enlace subyacente o desde una base de información de gestión . Dados los datos rojos para enviar, el último segmento de los datos rojos se marca con una bandera de "fin de datos rojos" y se inicia un temporizador para ese segmento. Si no hay datos verdes para enviar, se activa la bandera de "fin de bloque"; de lo contrario, se transmiten los datos verdes y el último segmento de esta parte se marca con la bandera de "fin de bloque". El receptor emite un segmento de informe para el remitente una vez que recibió el segmento de "fin de datos rojos" y todos los datos están completos. Una vez que se ha transmitido el segmento de informe, se inicia un temporizador. Al llegar el segmento de informe, el remitente cancela su temporizador, pone en cola un informe de acuse de recibo para el receptor e informa a la aplicación que todos los datos rojos se han transmitido correctamente. Una vez que el receptor recibe el informe-acuse de recibo, cancela su temporizador y se completa la transmisión de los datos rojos. La transmisión se completa si ha llegado el segmento de "fin de bloque".
Implementaciones
Implementaciones de referencia
Las dos implementaciones de referencia para LTP son:
- ION, escrito en C por el Jet Propulsion Laboratory y mantenido en la Universidad de Ohio .
- LTPlib, escrito en C por Trinity College, Dublín .
Otras implementaciones
Referencias
- ^ "PROTOCOLO DE ENLACE DE DATOS DEL ESPACIO AOS" (PDF) . El Comité Consultivo de Sistemas de Datos Espaciales (CCSDS) . CCSDS . Consultado el 18 de diciembre de 2019 .
- ^ https://github.com/secdev/scapy/blob/master/scapy/contrib/ltp.py
- ^ Scapy: el programa y la biblioteca interactivos de manipulación de paquetes basados en Python. Compatible con Python 2 y Python 3 .: secdev / scapy , SecDev, 2019-03-05 , consultado el 2019-03-05