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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.