KISS (protocolo de radioaficionado)

KISS (Keep It Simple, Stupid [1] ) es un protocolo para comunicarse con un dispositivo controlador de nodo terminal (TNC) en serie utilizado para radioaficionados . Esto permite que el TNC combine más funciones en un solo dispositivo y estandarice las comunicaciones. KISS fue desarrollado por Mike Cheponis y Phil Karn para permitir la transmisión de tramas de radio por paquetes AX.25 que contienen paquetes IP a través de un enlace en serie asíncrono , para su uso con el programa NOS KA9Q . [1]

Descripción

El protocolo KISS está diseñado para ser fácil de implementar en dispositivos integrados simples , que sean capaces de realizar comunicaciones seriales asincrónicas. Si bien permite la transferencia de datos arbitrarios, no admite control de flujo ni manejo de errores .

KISS utiliza el protocolo de Internet de línea serie , pero define su propio protocolo simple en lugar de encapsular paquetes IP sin procesar, como lo hace SLIP. Los mensajes del protocolo KISS permiten configurar variables de control comunes de TNC, así como enviar paquetes de mensajes arbitrarios para que los reenvíe la TNC. Si bien los paquetes pueden ser arbitrarios, los protocolos que se usan comúnmente con KISS incluyen AX.25 e IPv4 .

Caracteres especiales

Valor hexadecimalAbreviaturaDescripción
0xC0DEFENDERSEExtremo del marco
0xDBFESCEscape de marco
0xDCEnvíaloFinal del marco transpuesto
0xDDTFESC-ESEscape de marco transpuesto

De manera similar a SLIP, los códigos FEND consecutivos no deben interpretarse como cuadros vacíos. En cambio, todos los códigos FEND, excepto el último, deben descartarse. Esto se puede utilizar para la sincronización y para darle tiempo al AGC del receptor para que se estabilice.

Si los códigos FEND o FESC aparecen en los datos que se van a transferir, es necesario escaparlos . El código FEND se envía entonces como FESC, TFEND y el FESC se envía entonces como FESC, TFESC. Dos FESC seguidos constituyen una violación del protocolo y se pueden utilizar para señalar una transmisión abortada. Esto permite que el receptor (normalmente el TNC) evite malinterpretar los datos subsiguientes como parte de una trama válida. Cualquier dato recibido antes del siguiente FEND se descartaría correctamente.

Códigos de comando

Cualquiera de estos códigos puede enviarse desde el host a la TNC, pero solo el código de "trama de datos" debe enviarse desde la TNC al host. "En las TNC multipuerto, los 4 bits superiores del byte indicador de tipo pueden especificar uno de hasta dieciséis puertos". [1]

Bytes de comandoNombreLongitud del argumentoDescripción
0x?0 [...]Marco de datos: puerto XVaríaLa TNC debe transmitir los siguientes bytes. La cantidad máxima de bytes, y por lo tanto el tamaño del paquete encapsulado, está determinada por la cantidad de memoria de la TNC.
0x?1, 0x??RETRASO DE TRANSMISIÓN1La cantidad de tiempo que se debe esperar entre el momento en que se activa el transmisor y el comienzo del envío de datos (en unidades de 10 ms).
0x?2, 0x??PAG1El parámetro de persistencia. Persistencia=Datos*256-1. Se utiliza para CSMA .
0x?3, 0x??Tiempo de ranura1Tiempo de intervalo en unidades de 10 ms. Se utiliza para CSMA .
0x?4, 0x??Cola TX1El tiempo que se debe mantener activado el transmisor después de enviar los datos (en unidades de 10 ms).
0x?5, 0x??Dúplex completo10 significa semidúplex , cualquier otro valor significa dúplex completo.
0x?6, [...]Establecer hardwareVaríaDepende del dispositivo.
0xFFDevolver0Salir del modo KISS. El TNC deja de procesar el protocolo KISS y vuelve a su comportamiento específico del proveedor.

Los bytes del comando se muestran aquí en formato hexadecimal , pero se envían como bytes, no como cadenas hexadecimales. En todos los casos, excepto en el comando Return, el nibble alto indica a qué puerto (en una TNC multipuerto) se aplica el comando.

Una TNC puede admitir otros comandos no estándar, a discreción del proveedor.

Formato de paquete

ComenzarDominioDatos0..DatosNFin
DEFENDERSEMordisco alto   – Índice de puerto Mordisco
bajo   – Comando
DatosDEFENDERSE

Envía los caracteres "TEST" fuera del puerto 0 de TNC

C0 - DEFENDER00 - MARCO DE DATOS54 - "T"45 - "E"53 - "S"54-"T"C0 - DEFENDER

Envía los caracteres "Hola" desde el puerto 5 de TNC

C0 - DEFENDER50 - MARCO DE DATOS: puerto 548 - "H"65 - "e"6C - "l"6C - "l"6F - "o"C0 - DEFENDER

(el byte hexadecimal 50 es binario 0101 0000, que un TNC multipuerto interpretaría como "MARCO DE DATOS, PUERTO 5" porque 0101 -> 5)

Envía los bytes 0xC0, 0xDB fuera del puerto 0 de TNC

C0 - DEFENDER00 - MARCO DE DATOS: puerto 0Base de datos - FESCDC-TFENDERBase de datos - FESCDD-TFESCC0 - DEFENDER

Ambos bytes del mensaje de ejemplo requieren escape, por lo que se envían como una secuencia de dos bytes. La TNC los anulará antes de la transmisión.

Salir del modo KISS

C0 - DEFENDERFF - REGRESOC0 - DEFENDER

El comportamiento de la TNC después de regresar del modo KISS depende del proveedor. Algunos proporcionan un "cliente de nodo" orientado a líneas o un cliente de comandos de "buzón de correo".

Usos comunes

Alternativas

  • PAQUETE DE 6 [2] [3]

Véase también

Referencias

  1. ^ abc Mike Chepponis, K3MC; Phil Karn, KA9Q (1987). El KISS TNC: un protocolo de comunicaciones de host a TNC simple. Sexta conferencia de redes informáticas de la ARRL. Redondo Beach, CA. Archivado desde el original el 7 de junio de 2022.{{cite conference}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  2. ^ "6PACK, un protocolo PC a TNC en "tiempo real"". Archivado desde el original el 2022-12-27 . Consultado el 2012-04-08 .
  3. ^ "Protocolo 6pack: la documentación del kernel de Linux". docs.kernel.org .
  • Interfaz Perl Device::TNC::KISS para un TNC en modo KISS, por R Bernard Davison en CPAN (2007)
  • Código fuente de KISS TNC-2 (lenguaje ensamblador Z-80): https://github.com/cheponis/KISS-TNC2
Retrieved from "https://en.wikipedia.org/w/index.php?title=KISS_(amateur_radio_protocol)&oldid=1206908045"