containers/gvisor-tap-vsock
A new network stack based on gVisor
What's novel
A new network stack based on gVisor
Code Analysis
14 files read · 4 roundsA pure Go user-mode network stack (based on gVisor) that provides DHCP, DNS, NAT, and port forwarding for VMs running under QEMU, Hyperkit, Hyper-V, UML, and vfkit, replacing libslirp and VPNKit.
Strengths
Excellent architecture that cleanly separates the gVisor network stack, Ethernet switch, and service layers (DHCP/DNS/forwarding) with a well-defined HTTP API for dynamic configuration. The implementation is genuinely deep — it implements a full L2/L3/L4 network stack in userspace with proper packet routing, ARP spoofing protection, connection tracking, and cross-platform transport support.
Weaknesses
The UDP proxy code is a direct port from Docker with a `goto` statement and string-based error checking (`isClosedError`), and the DNS server uses `context.TODO()` rather than proper request-scoped contexts. Some error paths in the switch (e.g., `txBuf` ENOBUFS retry loop) could spin indefinitely under sustained backpressure.
Score Breakdown
Signal breakdown
Innovation
Craft
Traction
Scope
Evidence
Commits
193
Contributors
34
Files
6512
Active weeks
42
Repository
Language
Go
Stars
372
Forks
83
License
Apache-2.0