[release] softlan-vpn v0.1.0
First release of softlan-vpn, a low-latency virtual Layer 2 gaming VPN and Ethernet bridge built on QUIC datagrams. This release introduces the initial workspace architecture, crates, and operational components: - lanparty-relay: QUIC-based Layer 2 VPN relay server with room-level isolation, learning switch (CAM table), anti-spoofing MAC validation, safety filters against rogue DHCP servers and IPv6 Router Advertisements, token-bucket rate limiters, and development TLS certificate generation. - lanparty-gateway: Linux Layer 2 gateway bridge utilizing raw AF_PACKET sockets in promiscuous mode to bridge physical LAN segments to remote VPN rooms with carrier checking and datagram budget enforcement. - lanparty-client-win: Windows client CLI and session engine integrating TAP-Windows6 adapter I/O, scoped IP route management (relay host route pinning, default route suppression, metric configuration), and real-time terminal diagnostics. - lanparty-proto, lanparty-ctrl, lanparty-obs, lanparty-net: Protocol primitives, control stream codec, observability reporting, and network resolution helpers. Initial release is documented in CHANGELOG.md adhering to Keep a Changelog and Semantic Versioning. Test Plan: - `just clippy` -- passed - `just fmt` -- passed - `just test` -- passed (118 tests across all crates) - `git diff --cached --check` -- passed Refs: CHANGELOG.md "[0.1.0]", AGENTS.md "Versioning Policy"
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
|
and this project adheres to
|
||||||
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.1.0] - 2026-08-16
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **QUIC-based Layer 2 VPN Relay (`lanparty-relay`)**:
|
||||||
|
- Room-isolated virtual Layer 2 Ethernet switching over QUIC datagrams
|
||||||
|
(`quinn` / `rustls`).
|
||||||
|
- Learning switch (CAM table) for unicast frame forwarding and
|
||||||
|
broadcast/multicast flooding.
|
||||||
|
- L2 safety filters: client source MAC anti-spoofing, rogue DHCPv4/DHCPv6
|
||||||
|
server reply filtering, IPv6 Router Advertisement suppression (including
|
||||||
|
behind extension headers), IPv6 fragment filtering, remote VLAN tag
|
||||||
|
filtering, and malformed frame rejection.
|
||||||
|
- Token-bucket rate limiting for broadcast, unknown unicast, and total client
|
||||||
|
bandwidth.
|
||||||
|
- Development TLS certificate generation helper.
|
||||||
|
- **Linux Physical Gateway Bridge (`lanparty-gateway`)**:
|
||||||
|
- Promiscuous `AF_PACKET` raw socket bridge connecting local physical LAN
|
||||||
|
networks to virtual relay rooms.
|
||||||
|
- Ingress/egress datagram budget enforcement, carrier validation, and
|
||||||
|
self-injection filtering.
|
||||||
|
- **Windows Client (`lanparty-client-win`, `lanparty-client-core`,
|
||||||
|
`lanparty-client-tap`, `lanparty-client-route`)**:
|
||||||
|
- TAP-Windows6 adapter management and Ethernet frame I/O.
|
||||||
|
- Scoped Windows IP route management: relay host route pinning, TAP default
|
||||||
|
route suppression, and interface metric configuration.
|
||||||
|
- Virtual MAC persistence and reconnect handling.
|
||||||
|
- Real-time diagnostic reporting for RTT, LAN DHCP lease state, gateway
|
||||||
|
presence, and frame flow counters.
|
||||||
|
- **Shared Infrastructure**:
|
||||||
|
- Protocol primitives (`lanparty-proto`) for datagram framing, MTU
|
||||||
|
negotiation, and safety classifications.
|
||||||
|
- Control plane (`lanparty-ctrl`) for room admission, peer lifecycle events,
|
||||||
|
and stats snapshots.
|
||||||
|
- Observability suite (`lanparty-obs`) for structured frame logging and
|
||||||
|
diagnostic formatting.
|
||||||
|
- Network address resolution utilities (`lanparty-net`).
|
||||||
Reference in New Issue
Block a user