feat(renaser): Fase 20 — Akasha Over Ether (grafo distribuido)
Tres mensajes y un EtherType propio bastan para extender el grafo de
objetos —direccionado por contenido, ya BLAKE3— a otras maquinas
renaser que escuchen en la misma red de capa-2. Sin TCP, sin IP,
sin DNS.
Crate nueva 'akasha/' (no_std compartido, gemela de 'formato',
excluida del workspace):
- MensajeAkasha enum con SolicitarObjeto(id), ProveedorObjeto(id,
payload), AnunciarRaiz(id).
- Codec: postcard (mismo que ya usa el grafo en disco).
- EtherType: 0x88B5. MAX_PAYLOAD_AKASHA = 1486 (MTU sin fragmentar).
- Helpers componer_frame(src, dst, msg) y analizar_frame(bytes) que
distinguen EtherType ajeno, frame truncado y payload basura.
- 6 pruebas unitarias en verde.
Modulo nuevo 'kernel/src/akasha.rs' con tres oficios:
1. Demuxer (drenar_y_demultiplexar): drena la cola RX del dispositivo
virtio-net y demultiplexa: frames AoE con payload valido los
procesa el respondedor; el resto va a una cola del userspace que
'sys_net_recibir' ahora lee. Frames 0x88B5 con payload
no-postcard (saludo de pregon) se cuentan y tambien viajan al
userspace.
2. Atencion de mensajes (procesar):
- SolicitarObjeto(id): consulta almacen::recuperar; si tenemos el
objeto, respondemos ProveedorObjeto unicast con objeto.serializar()
y re-hashing de defensa en profundidad.
- ProveedorObjeto(id, payload): verifica blake3(payload)==id antes
de absorber con almacen::almacenar.
- AnunciarRaiz(id): si ignoramos el nodo, le solicitamos al emisor.
3. Faro periodico (difundir_raiz cada 5 s): broadcast del hash del
manifiesto actual. Cadencia medida contra reloj::milisegundos(),
no contra los awaits — el interprete wasmi de los apps degrada
la cadencia de EsperaFrame::await a varios cientos de ms, asi
que se mide contra el reloj monotono y los oficios per-fotograma
se enganchan al tic del compositor (cuyo latido es fiable).
Contadores ResumenAkasha (rx/tx por variante, descartados, cola del
usuario) listos para un futuro indicador AoE en la barra de tareas.
Cambios complementarios:
- sys_net_recibir lee de akasha::pop_usuario, no de
drivers::red::recibir_en (que queda #[allow(dead_code)] como
primitiva del driver para diagnostico).
- tarea_red queda corta: envia un ARP al gateway y termina. El
demuxer y el faro viven en el tic del compositor.
Verificacion:
- 'cargo test -p akasha' → 6 pruebas en verde.
- QEMU headless 60 s con -object filter-dump → 14 frames: 11
AnunciarRaiz (Δ promedio 5.86 s sobre 5.00 s de target), 2 ARP
y el pregon hello. Cada AnunciarRaiz lleva el hash del manifiesto
'2f3deadfcc7dae25..' en 33 bytes postcard sobre 47 bytes de frame.
- COM1 vuelca 'akasha :: ANUNCIO emitido :: raiz=2f3deadfcc7dae25..'
en cada disparo.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -608,4 +608,31 @@ que la voz ya no es de uno solo. Ahora la casa habla en coro.
|
||||
|
||||
---
|
||||
|
||||
## Akasha — el grafo se vuelve aire
|
||||
|
||||
Pregón gritaba sin alfabeto: una frase corta dirigida a quien quisiera
|
||||
oír. Hoy la casa aprende su primer idioma propio para la red, y se le
|
||||
ocurre uno sencillo, con apenas tres palabras: *pide*, *toma*, *aquí
|
||||
estoy*. Pide un objeto del archivo por su huella; recibe el objeto en
|
||||
respuesta; o anuncia, sin destinatario, la huella de su biblioteca
|
||||
actual para que cualquiera que esté escuchando sepa por dónde puede
|
||||
acompañarla.
|
||||
|
||||
El nombre es viejo. *Akasha* es la palabra sánscrita para el éter, el
|
||||
soporte de lo sutil; *Akasha Over Ether* es nuestro chiste a dos
|
||||
niveles: el grafo viaja por el éter del cable, y la huella del grafo
|
||||
—las treinta y dos cifras del BLAKE3— es la firma sutil de cada
|
||||
objeto. Con tres frases bastan: el archivo de la casa deja de ser
|
||||
exclusivamente local. Quien sintonice la red de la sala podrá,
|
||||
mañana, recibir un objeto suyo o pedirle uno.
|
||||
|
||||
De momento la casa habla sola. Cada cinco segundos, sin esperar a
|
||||
nadie, suelta su faro: *aquí estoy, mi raíz es esta*. Si otra renaser
|
||||
se encendiera en la misma sala, escucharía y podría empezar a pedir
|
||||
los objetos que le faltan. Hoy no pasa eso porque sólo hay una casa,
|
||||
pero el alfabeto está. Y, cuando un día se encienda la segunda,
|
||||
empezará el diálogo sin que haya que añadir ni una palabra más.
|
||||
|
||||
---
|
||||
|
||||
*El diario continúa. La próxima página la escribirá la próxima jornada.*
|
||||
|
||||
Reference in New Issue
Block a user