feat(renaser): Fase 18 — red: virtio-net y el primer hola al exterior

renaser hablaba consigo mismo. Esta fase abre una boca y una oreja al
exterior con una tarjeta de red, reutilizando el `KernelHal` del
disco y el mapeador MMIO (la pieza estructural que hizo esto posible).

- `drivers/red`: monta `VirtIONet<KernelHal, PciTransport, 16>`,
  expone `enviar(frame)` y `drenar_rx(callback)`. Sin pila TCP/IP —
  solo Ethernet crudo; la composición de paquetes la hace el llamante.
- `componer_arp_request(mac, ip, objetivo)` construye el saludo
  inicial: «¿quien tiene 10.0.2.2?» dirigido al gateway de QEMU.
- `interrupts::registrar_irq_red` + handler `irq_red`, gemelo del de
  disco. La IRQ del dispositivo activa `red::atender_irq`, que hace
  `ack_interrupt` y suelta la línea.
- `tarea_red` en el reactor: al arrancar envía el ARP, después cada
  fotograma drena la cola RX y vuelca cada paquete a COM1.
- QEMU args ganan `-netdev user,id=net0 -device virtio-net-pci`.

Verificado con `-object filter-dump,...,file=/tmp/red.pcap`:
  red :: virtio-net :: MAC 52:54:00:12:34:56 :: IRQ Some(11)
  red :: ARP REQUEST enviado :: ¿quien tiene 10.0.2.2?
  red :: RX 64 bytes :: src=52:55:0a:00:02:02 type=0x0806

El src del paquete entrante (`52:55:0a:00:02:02`) codifica `10.0.2.2`
dentro del MAC — es el gateway de QEMU respondiendo. Renaser ya habla
con el exterior.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-23 04:06:23 +00:00
parent 60553bec44
commit bdd088b89e
9 changed files with 420 additions and 6 deletions
+14
View File
@@ -568,6 +568,20 @@ apagar y volver a encender, el papel vuelve a su sitio con cada palabra
intacta. Apaga, enciende, sigue escribiendo. La casa no olvida lo que se
le confía.
## El primer saludo afuera — la red
Hasta hoy, la casa era un islote completo: tenía cuartos, voces, manos y
ahora memoria, pero no había forma de hablar con nada de lo que estuviera
afuera. Hoy le crece una pequeña puerta lateral —una tarjeta de red— y por
ella sale un saludo. El primero: una pregunta sencilla a quien hubiese
escuchando. «¿Quién es 10.0.2.2?», dice. Y la red contesta: «yo». La casa
toma nota, lo deja escrito en su libro de marcas, y se queda atenta.
A partir de aquí queda mucho por construir —entender lo que llega, hablar
en idiomas más altos como TCP, abrir capacidades para que sus inquilinos
también puedan dialogar— pero lo grueso ya está. La casa dejó de hablar
sola.
---
*El diario continúa. La próxima página la escribirá la próxima jornada.*