Sobre o projeto

O pktc é uma ferramenta CLI e compilador de tree-tiling que permite descrever a estrutura de pacotes esperada na rede e deriva automaticamente a configuração correspondente do dispositivo túnel do kernel Linux. Em vez de nomear um tipo de dispositivo primeiro e depois preencher parâmetros (como `netplan`, `systemd-networkd` e NetworkManager exigem), o pktc adota a abordagem oposta: você descreve a pilha de encapsulamento como uma árvore, e a ferramenta determina qual primitiva do kernel a produz. A ideia central é a seleção de instruções por tree-tiling. Uma pilha de encapsulamento se achata em uma espinha — uma lista linear de camadas de protocolo — que é então coberta com tiles em forma de dispositivo. A técnica espelha como back-ends de compiladores escolhem instruções de máquina, exceto que os tiles são dispositivos túnel do Linux e o código emitido são comandos `iproute2`. Os tiles suportados incluem IPIP (`ipv4 · ipv4`), GRE (`ipv4 · gre · ipv4`), GRE tap (`ipv4 · gre · ethernet`) e VXLAN (`ipv4 · udp · vxlan · ethernet`). Túneis aninhados se compõem naturalmente como múltiplos tiles sem lógica de caso especial. Comandos principais: - `pktc lower` — imprime os comandos `ip link` / `ip addr` para criar o dispositivo - `pktc mirror` — imprime a configuração simétrica para a extremidade oposta - `pktc expect` — imprime como o tráfego de underlay deve parecer para verificação - `pktc parse` — imprime a espinha de encapsulamento a partir de um arquivo de descrição Uma característica distintiva é o modo de teste de fechamento de loop: `make netns` constrói dois namespaces de rede em um par veth, configura ambas as extremidades a partir da mesma descrição, empurra tráfego e captura o underlay. Um teste golden prova que os comandos pretendidos foram emitidos; um teste de kernel prova que o dispositivo foi criado; a captura prova que o dispositivo carrega o que a árvore reivindicou. Instale via `go install github.com/vinodhalaharvi/pktc/cmd/pktc@latest` ou construa a partir do source com `make check`, `make demo` e `make netns`. O projeto está em estágio inicial com quatro tiles e um backend. Geneve, VLAN, XFRM e WireGuard são intencionalmente omitidos porque seus módulos do kernel não estavam disponíveis durante o desenvolvimento.