79 lines
1.9 KiB
Markdown
79 lines
1.9 KiB
Markdown
# L0 Transport Layer
|
|
|
|
**Layer:** L0 (Transport)
|
|
**Purpose:** Wire protocols, frame encoding, time primitives
|
|
**RFCs:** RFC-0000 (LWF), RFC-0105 (Time L0 component)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
The L0 Transport layer provides low-level wire protocol implementations for the Libertaria network. It handles packet framing, serialization, and transport-layer timestamps.
|
|
|
|
## Components
|
|
|
|
### LWF (Libertaria Wire Frame) - `lwf.zig`
|
|
**RFC:** RFC-0000
|
|
**Size:** 72-byte header + payload + 36-byte trailer
|
|
|
|
Wire protocol implementation with:
|
|
- Fixed 72-byte header (24-byte DID hints, u64 nanosecond timestamp)
|
|
- Variable payload (1092-8892 bytes depending on frame class)
|
|
- 36-byte trailer (Ed25519 signature + CRC32 checksum)
|
|
- Frame classes (Constrained, Standard, Ethernet, Bulk, Jumbo)
|
|
|
|
**Key Types:**
|
|
- `LWFHeader` - 72-byte fixed header
|
|
- `LWFTrailer` - 36-byte signature + checksum
|
|
- `LWFFrame` - Complete frame wrapper
|
|
- `FrameClass` - Size negotiation enum
|
|
|
|
### Time - `time.zig`
|
|
**RFC:** RFC-0105 (L0 component)
|
|
**Precision:** u64 nanoseconds (584-year range)
|
|
|
|
Transport-layer time primitives:
|
|
- `u64` nanosecond timestamps for drift detection
|
|
- Monotonic clock access
|
|
- Replay protection timestamps
|
|
|
|
**Note:** L1 uses full `SovereignTimestamp` (u128 attoseconds) for causal ordering.
|
|
|
|
---
|
|
|
|
## Usage
|
|
|
|
```zig
|
|
const l0 = @import("l0_transport.zig");
|
|
|
|
// Create LWF frame
|
|
var frame = try l0.lwf.LWFFrame.init(allocator, 1024);
|
|
defer frame.deinit(allocator);
|
|
|
|
// Set header fields
|
|
frame.header.service_type = 0x0700; // Vector message
|
|
frame.header.timestamp = l0.time.nowNanoseconds();
|
|
|
|
// Encode for transport
|
|
const encoded = try frame.encode(allocator);
|
|
defer allocator.free(encoded);
|
|
```
|
|
|
|
---
|
|
|
|
## Testing
|
|
|
|
Run L0 tests:
|
|
```bash
|
|
zig test l0-transport/lwf.zig
|
|
zig test l0-transport/time.zig
|
|
```
|
|
|
|
---
|
|
|
|
## Dependencies
|
|
|
|
- `std.mem` - Memory management
|
|
- `std.crypto` - CRC32, hashing
|
|
- `std.time` - System time access
|