How strangebit-io/hip-vpls works
HIP-VPLS provides a HIP control plane that establishes authenticated associations between routers, then carries customer LAN traffic across a virtual private LAN. The documented kernel-mode path keeps base exchange and key derivation in Python while Linux bridge/gretap forwarding and XFRM ESP handle customer frames; Python thread/process forwarding remains a fallback. The four router trees appear to be per-router copies, so paths below use router1 as the representative implementation. Unsampled modules are included where the README or source index establishes their role; uncertain internal wiring is omitted.
Main entry points: hlib.py HIP Exchange · switchd.py Router Daemon · dataplane_mp.py Python Forwarder · xfrm.py XFRM ESP
Components 21
HIP Control Plane
- Router Daemon
router1/switchd.py - HIP Exchange
router1/hiplib/hlib.py - HIP Messages
router1/hiplib/packets/HIP.py - Controller Messages
router1/hiplib/packets/Controller.py - Router Config
router1/hiplib/config/config.py - HIP State
router1/hiplib/databases/HIPState.py - Firewall Rules
router1/hiplib/databases/Firewall.py - Security Associations
router1/hiplib/databases/SA.py
Identity and Crypto
- Host Identity
router1/hiplib/utils/hi.py - HIT Utilities
router1/hiplib/utils/hit.py - Crypto Algorithms
router1/hiplib/crypto/asymmetric.py - Crypto Selection
router1/hiplib/crypto/factory.py - Key Derivation
router1/hiplib/utils/misc.py
Kernel Data Plane
- Linux Bridge
router1/hiplib/network/xfrm.py - XFRM ESP
router1/hiplib/network/xfrm.py - Switch Fabric
router1/switchfabric.py
Python Data Plane
- IP Packet Models
router1/hiplib/packets/IPv4.py - IPv6 Packet Model
router1/hiplib/packets/IPv6.py - ESP Packet Model
router1/hiplib/packets/IPSec.py - Python Forwarder
router1/hiplib/dataplane_mp.py
Other components
- LAN Hosts
Connections 20
- Router Daemon → HIP Exchange: starts control
router1/switchd.py - Router Daemon → Router Config: loads settings
router1/switchd.py - Router Daemon → Switch Fabric: configures fabric
router1/switchd.py - Router Daemon → Python Forwarder: selects fallback
router1/switchd.py - Router Daemon → XFRM ESP: configures kernel mode
router1/switchd.py - HIP Exchange → HIP Messages: builds messages
router1/hiplib/hlib.py - HIP Exchange → Host Identity: validates identity
router1/hiplib/hlib.py - HIP Exchange → HIT Utilities: checks HITs
router1/hiplib/hlib.py - HIP Exchange → Crypto Selection: selects algorithms
router1/hiplib/hlib.py - Crypto Selection → Crypto Algorithms: selects primitives
router1/hiplib/crypto/factory.py - HIP Exchange → Key Derivation: derives key material
router1/hiplib/hlib.py - HIP Exchange → XFRM ESP: installs derived keys
router1/hiplib/hlib.py - LAN Hosts → Linux Bridge: sends LAN frames
- Linux Bridge → XFRM ESP: protects tunnel traffic
router1/hiplib/network/xfrm.py - HIP Exchange → HIP State: tracks exchange state
router1/hiplib/hlib.py - HIP Exchange → Security Associations: maintains associations
router1/hiplib/hlib.py - Router Daemon → Firewall Rules: loads firewall rules
- Python Forwarder → IP Packet Models: handles IP packets
- Python Forwarder → IPv6 Packet Model: handles IPv6 packets
- Python Forwarder → ESP Packet Model: handles ESP packets