Capa de Abstracción de Transporte de Datos (Layer 4-7) diseñada para desacoplar la comunicación digital de la arquitectura tradicional cliente-servidor.
El Protocolo Orzatty no es una aplicación de chat ni una herramienta de red local (LAN) limitada por IP. El objetivo operativo final es "WhatsApp sin Internet": la creación de una malla descentralizada (mesh) global o hiper-local donde los nodos (smartphones, IoT, PCs) se descubren e intercambian frames binarios comprimidos de alta velocidad.
Es fundamentalmente Transport-Agnostic. Puede correr sobre:
Para lograr independencia absoluta del medio físico, el núcleo del protocolo es el trait AsyncTransport escrito en Rust.
#[async_trait]
pub trait AsyncTransport: Send + Sync {
async fn read(&mut self, buf: &mut [u8]) -> Result<Option<usize>>;
async fn write_all(&mut self, data: &[u8]) -> Result<()>;
}
El Framer (motor de lectura/escritura) solo se comunica con AsyncTransport. Esto permite que la lógica del protocolo, el cifrado y el parseo de frames permanezcan 100% idénticos sin importar el medio de transporte.
Orzatty elimina los protocolos web pesados (HTTP/JSON) y utiliza frames binarios compactos de 9 bytes de cabecera mínima.
| Offset | Size (Bytes) | Field Name | Description |
|---|---|---|---|
| 0x00 | 1 | Flags | Modificadores (0x01 RkyvAligned, 0x02 Compressed). |
| 0x01 | 1 | Frame Type | Handshake, Stream, FileTransfer, etc. |
| 0x02 | 2 | Channel ID | Canal de ejecución (u16). |
| 0x04 | 4 | Stream ID | ID de flujo concurrente (u32). |
| 0x08 | 1-9 | Length | Custom VarInt (LEB128-style). |
Para alcanzar velocidades de memoria cercanas a los 100 Gbps en bucles locales, Orzatty utiliza rkyv. Los bytes se mapean en memoria (RkyvAligned) y la aplicación lee la estructura directamente desde el buffer de red, usando 0 bytes de asignación extra de RAM.
En entornos IP estándar (Hotspot / LAN), Orzatty utiliza balizas UDP Multicast. Cada N segundos, un nodo susurra a 255.255.255.255:5001:
ORZATTY_NODE|<USERNAME>|<PORT>
Los nodos cercanos capturan este latido y actualizan su registro interno DashMap en RAM.