Los bytes que no son tuyos
Un rastreador manda un reporte de 60 bytes: posición, hora, velocidad, entradas. Si reporta cada 30 segundos en movimiento y cada 5 minutos estacionado, son 1,368 reportes al día. Multiplicado, 82,080 bytes al día: unos 2.5 MB al mes. Con esa cuenta se elige el plan de datos de cada equipo.
La cuenta de verdad nunca sale así. Con el mismo reporte, puede dar tres veces y media, o casi ochenta veces más.
Las cifras de los ejemplos son ilustrativas: salen de la calculadora con un rastreador supuesto de 60 bytes por reporte, no de una factura ni de una red medida.
Lo que viaja con cada reporte
La red no cobra tus 60 bytes: cobra los paquetes IP que los llevan. Con TCP y la conexión ya abierta, un reporte es esto:
- tus 60 bytes, con 40 de encabezado IP y TCP;
- la respuesta del servidor, que confirma que lo recibió: unos bytes propios y otros 40 de encabezado;
- el ACK con el que el equipo confirma esa respuesta: 40 bytes más.
Son 209 bytes por reporte, contando los keepalive, las reconexiones y un 2 % de retransmisiones. Al mes, 8.6 MB en lugar de 2.5. Tus datos son el 28.7 % de lo que pagas; los encabezados solos, el 38.2 %, y los ACK, el 19.1 %.
Eso todavía es la versión barata.
Abrir una conexión cuesta más que el reporte
Hay firmware que abre una conexión para cada reporte, lo manda y la cierra. Con TCP sin TLS, abrir y cerrar cuesta 320 bytes: más que el reporte con todo lo anterior.
Con TLS es otra escala. Antes de mandar nada, el equipo y el servidor se saludan: intercambian certificados y llaves, y eso suele pesar entre 3 y 6 KB, sobre todo por el tamaño de los certificados (con una cadena RSA de dos; con ECDSA puede ser menos de la mitad, y si el equipo presenta su propio certificado, más). Con un saludo de 4 KB en cada reporte:
| Cómo se conecta | Cada reporte cuesta | MB al mes | Son tus datos |
|---|---|---|---|
| TCP, conexión abierta | 209 bytes | 8.6 | 28.7 % |
| TLS, conexión abierta | 286 bytes | 11.7 | 21.0 % |
| TLS, conexión nueva por reporte | 4,653 bytes | 191.0 | 1.3 % |
El mismo equipo, el mismo reporte, cifrado en los dos casos: con conexión nueva por reporte gasta 16 veces lo que con la conexión abierta. El saludo y los registros de TLS son el 87.2 % de lo que se paga. En una flota de 500 equipos, son 95.5 GB al mes contra 5.9 GB.
TLS no es el problema: hay que cifrar. El problema es pagar el saludo completo 1,368 veces al día.
Achicar el reporte casi no ayuda
La reacción natural ante una factura alta es comprimir el reporte. Con la conexión nueva por reporte, bajar de 60 a 30 bytes ahorra menos del 1 %: de 191.0 a 189.7 MB al mes. Con TCP y la conexión abierta, el mismo recorte ahorra cerca del 15 %, de 8.6 a 7.3 MB. Antes de quitarle bytes al reporte, conviene saber cuántos bytes son del reporte.
Lo que sí cambia la cuenta
- Mantener la conexión abierta. Con TLS, de 191.0 a 11.7 MB al mes. Cuesta keepalive, porque la red del operador suele cortar las conexiones que pasan un rato sin tráfico, y cuesta un saludo nuevo cada vez que la conexión se cae y se reabre: con 24 reconexiones al día en vez de 6, sube a 14.1 MB.
- Reanudar la sesión de TLS. Si el equipo y el servidor reanudan la sesión anterior en lugar de saludarse desde cero, el saludo baja a unos cientos de bytes. Con conexión nueva por reporte y saludo reanudado de 400 bytes, el reporte cuesta 981 bytes: 40.3 MB al mes en lugar de 191.0.
- Juntar reportes. Con la conexión abierta y 10 reportes por envío, cada reporte cuesta 137 bytes y el mes, 5.6 MB. El costo es que, en movimiento, un reporte puede llegar hasta cuatro minutos y medio tarde, y estacionado, hasta 45 minutos, y que los keepalive pesan más, porque los huecos entre envíos son más largos: pasan a ser el 27.4 % del total.
- UDP. Sin conexión, sin ACK de TCP: 122 bytes por reporte y 5.0 MB al mes. Pero esos 5.0 MB son sin cifrar, y UDP no garantiza que el reporte llegue: la confirmación y el reenvío tienen que ir en tu protocolo. Cifrado con DTLS, cada datagrama suma unos 37 bytes, y el saludo va aparte.
Ninguna es gratis. Cada una cambia bytes por otra cosa: latencia, complejidad, garantías. Lo que no conviene es elegir sin ver la cuenta.
Lo que la cuenta no ve
La calculadora suma bytes IP con encabezados sin opciones, y supone el caso limpio. En una red real hay más: las marcas de tiempo de TCP agregan 12 bytes a cada paquete, IPv6 agrega 20, un servidor que tarda en responder manda su ACK aparte, detectar que una conexión ya murió cuesta retransmisiones, los latidos de la aplicación pesan más que un keepalive de TCP, las consultas de DNS cuestan lo suyo, y los comandos y actualizaciones que manda el servidor no están contados. Y hay algo que puede pesar más que todo: algunos operadores redondean cada sesión de datos a un mínimo. Con muchas reconexiones, lo cobrado puede quedar muy por encima de lo transmitido.
La forma de saberlo es medir: un equipo de prueba con una captura de tráfico del lado del servidor, comparada con lo que el operador reporta para esa línea en el mismo periodo.
Para hacer la cuenta con tus números, está la calculadora de datos celulares: corre en el navegador y enseña en qué se va cada byte, con UDP, TCP o TLS, con la conexión abierta o nueva en cada envío.
Israel Negrete Lepe es ingeniero en electrónica. Veinticinco años haciendo que sistemas distintos funcionen juntos en condiciones reales: del sensor, el vehículo o la transacción al backend, los datos, la seguridad y la operación. Hoy, cada vez más, IA en el borde.