Sobre el proyecto
pktc es una herramienta de interfaz de línea de comandos (CLI) y compilador de tipo tree-tiling que permite describir la estructura de paquetes esperada en el cable de red y deriva automáticamente la configuración correspondiente del dispositivo túnel del kernel Linux.
A diferencia de otras herramientas como netplan, systemd-networkd y NetworkManager, que requieren nombrar primero un tipo de dispositivo y luego rellenar los parámetros, pktc adopta un enfoque opuesto: describes la pila de encapsulamiento como un árbol, y la herramienta determina qué primitiva del kernel produce esa estructura.
La idea central es la selección de instrucciones mediante el enlazado de árboles (tree tiling). Una pila de encapsulamiento se aplanan a un eje —una lista lineal de capas de protocolo— que luego se cubre con mosaicos de forma de dispositivo. Esta técnica refleja cómo los backends de compiladores seleccionan instrucciones máquina, excepto que los mosaicos son dispositivos túnel de Linux y el código generado son comandos de iproute2.
Los mosaicos soportados incluyen IPIP (`ipv4 · ipv4`), GRE (`ipv4 · gre · ipv4`), GRE tap (`ipv4 · gre · ethernet`) y VXLAN (`ipv4 · udp · vxlan · ethernet`). Los túneles anidados se componen naturalmente como múltiples mosaicos sin lógica especial para casos particulares.
Comandos clave:
- `pktc lower` — imprime los comandos `ip link` / `ip addr` para crear el dispositivo
- `pktc mirror` — imprime la configuración simétrica para el extremo remoto
- `pktc expect` — imprime cómo debería verse el tráfico de bajo nivel para verificación
- `pktc parse` — imprime el eje de encapsulamiento desde un archivo de descripción
Una característica distintiva es el modo de prueba de cierre de bucle: `make netns` construye dos espacios de nombres de red en un par veth, configura ambos extremos desde la misma descripción, envía tráfico a través de ellos y captura el tráfico subyacente. Una prueba de referencia demuestra que se emitieron los comandos deseados; una prueba del kernel demuestra que se creó el dispositivo; y la captura demuestra que el dispositivo transporta lo que el árbol afirmaba.
Instálalo con `go install github.com/vinodhalaharvi/pktc/cmd/pktc@latest` o compílalo desde el código fuente con `make check`, `make demo` y `make netns`.
El proyecto está en fase inicial con cuatro mosaicos y un solo backend. Geneve, VLAN, XFRM y WireGuard se omitieron intencionalmente porque sus módulos del kernel no estaban disponibles durante el desarrollo.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.