À propos du projet
pktc est un outil CLI et un compilateur tree-tiling qui permet de décrire la structure de paquet attendue sur le fil réseau et qui déduit automatiquement la configuration correspondante du dispositif tunnel du noyau Linux.
Plutôt que de nommer un type de dispositif en premier puis de remplir les paramètres (comme `netplan`, `systemd-networkd` et NetworkManager l'exigent), pktc adopte l'approche inverse : vous décrivez la pile d'encapsulation sous forme d'arbre, et l'outil détermine quelle primitive du noyau la produit.
L'idée centrale est l'instruction selection par tree tiling. Une pile d'encapsulation s'aplatit en une colonne vertébrale — une liste linéaire de couches protocolaires — qui est ensuite recouverte de tuiles en forme de dispositif. La technique fait écho à la manière dont les back-ends de compilateur choisissent les instructions machine, sauf que les tuiles sont des dispositifs tunnel Linux et que le code émis sont des commandes `iproute2`.
Les tuiles prises en charge incluent IPIP (`ipv4 · ipv4`), GRE (`ipv4 · gre · ipv4`), GRE tap (`ipv4 · gre · ethernet`) et VXLAN (`ipv4 · udp · vxlan · ethernet`). Les tunnels imbriqués se composent naturellement comme plusieurs tuiles sans logique de cas particulier.
Commandes clés :
- `pktc lower` — imprime les commandes `ip link` / `ip addr` pour créer le dispositif
- `pktc mirror` — imprime la configuration symétrique pour l'extrémité distante
- `pktc expect` — imprime ce à quoi devrait ressembler le trafic underlay pour vérification
- `pktc parse` — imprime la colonne vertébrale d'encapsulation depuis un fichier de description
Une fonctionnalité distinctive est le mode test de fermeture de boucle : `make netns` construit deux namespaces réseau sur une paire veth, configure les deux extrémités depuis la même description, pousse le trafic à travers et capture l'underlay. Un test golden prouve que les commandes prévues ont été émises ; un test kernel prouve que le dispositif a été créé ; la capture prouve que le dispositif transporte ce que l'arbre affirmait.
Installation via `go install github.com/vinodhalaharvi/pktc/cmd/pktc@latest` ou build depuis les sources avec `make check`, `make demo` et `make netns`.
Le projet est early-stage avec quatre tuiles et un backend. Geneve, VLAN, XFRM et WireGuard sont intentionnellement omis car leurs modules noyau n'étaient pas disponibles durant le développement.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.