decentralized-internet
Version:
An NPM library of programs to create decentralized web and distributed computing projects
354 lines (288 loc) • 11.7 kB
Markdown
# DecentG Architecture
## Overview
DecentG is a hybrid mesh network that combines peer-to-peer (P2P) mesh networking with 5G core network capabilities (Open5gs/Free5gc) to create a private, distributed network infrastructure for open peering.
## System Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ DecentG Node │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Mesh │ │ Peering │ │ 5G Core │ │
│ │ Controller │◄─┤ Manager │ │ Interface │ │
│ └──────────────┘ └──────────────┘ └─────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Event Bus (EventEmitter2) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Node │ │ Router │ │ API Server │ │
│ │ Discovery │ │ Module │ │ (Express) │ │
│ └──────────────┘ └──────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
UDP/Multicast TCP/P2P Open5gs/Free5gc
(Discovery) (Mesh) (5G Core)
```
## Core Components
### 1. Mesh Controller (`mesh-controller.js`)
**Responsibilities:**
- Manages TCP connections between peers
- Handles UDP-based discovery responses
- Maintains peer registry
- Broadcasts messages to all peers
- Validates handshakes and network IDs
**Key Features:**
- TCP server for persistent peer connections
- UDP socket for discovery messages
- Connection lifecycle management
- Peer validation and authentication
- Message broadcasting
**Protocols:**
- TCP on port 8000 (configurable)
- UDP on port 8001 (mesh port + 1)
### 2. 5G Core Interface (`5g-core-interface.js`)
**Responsibilities:**
- Interfaces with Open5gs AMF, SMF, UPF
- Interfaces with Free5gc AMF, NRF
- UE (User Equipment) registration/deregistration
- PDU session management
- Network Function status monitoring
**Key Features:**
- Dual support for Open5gs and Free5gc
- UE registration tracking
- Session lifecycle management
- SBI (Service Based Interface) communication
- Network Function discovery
**5G Network Functions:**
- AMF: Access and Mobility Management
- SMF: Session Management Function
- UPF: User Plane Function
- NRF: Network Repository Function
### 3. Peering Manager (`peering-manager.js`)
**Responsibilities:**
- Manages open peering relationships
- Creates and enforces peering agreements
- Heartbeat monitoring
- Peer blacklisting
- Stale peer cleanup
**Key Features:**
- Peering agreement contracts
- Bandwidth and data limit enforcement
- Priority-based routing
- Automatic failover
- Peer statistics tracking
**Peering Agreement Structure:**
```javascript
{
peerId: 'peer-uuid',
terms: {
bandwidthLimit: null,
dataLimit: null,
priority: 'normal',
routeSharing: true
},
status: 'active',
createdAt: timestamp
}
```
### 4. Router Module (`router-module.js`)
**Responsibilities:**
- Computes optimal routes through mesh
- Maintains routing tables
- Implements routing algorithms
- Forwards packets between nodes
**Routing Algorithms:**
#### Dijkstra's Algorithm (Default)
- Shortest path first algorithm
- Best for static or semi-static topologies
- Low computational overhead
- Optimal path selection
#### Bellman-Ford Algorithm
- Distributed distance-vector
- Handles negative edge weights
- More robust but slower
- Better for dynamic topologies
#### Distance Vector
- Simple hop-based routing
- Minimal overhead
- Best for small networks
**Routing Table Entry:**
```javascript
{
destination: 'node-uuid',
nextHop: 'next-node-uuid',
cost: 5,
hops: 3
}
```
### 5. Node Discovery (`node-discovery.js`)
**Responsibilities:**
- Discovers nodes on local network
- Multicast-based peer discovery
- Periodic discovery broadcasts
- Stale node cleanup
**Key Features:**
- UDP multicast on 239.255.255.250:9999
- Automatic peer detection
- Network ID validation
- Response-based discovery confirmation
**Discovery Protocol:**
```javascript
// Discovery broadcast
{
type: 'discovery',
nodeId: 'uuid',
networkId: 'network-id',
timestamp: 1234567890
}
// Discovery response
{
type: 'discovery:response',
nodeId: 'uuid',
networkId: 'network-id',
port: 8000
}
```
## Data Flow
### Peer Connection Flow
```
Node A Node B
│ │
├──► TCP Connect ─────────►│
│ │
│◄──── Handshake ──────────┤
│ │
├──► Handshake ───────────►│
│ │
│◄──── Connected ──────────┤
│ │
├──► Heartbeat ───────────►│
│ │
│◄──── Heartbeat ──────────┤
```
### Routing Update Flow
```
Node A Router Node B
│ │ │
├─► Route Update ─────►│ │
│ │ │
│ ├─ Compute Routes ─►│
│ │ │
│◄──── Updated Table ──┤ │
│ │ │
│ ├─ Broadcast Update ►│
```
### UE Registration Flow
```
Node 5G Core Interface Open5gs/Free5gc
│ │ │
├─► Register UE ──►│ │
│ │ │
│ ├──► AMF Request ────►│
│ │ │
│ │◄─── AMF Response ───┤
│ │ │
│◄─── UE Info ─────┤ │
│ │ │
├─► Create PDU ───►│ │
│ │ │
│ ├──► SMF Request ────►│
│ │ │
│ │◄─── Session Info ───┤
```
## Network Topology
### Mesh Network
```
Node A ◄────────► Node B
│ │
│ │
▼ ▼
Node C ◄────────► Node D
│
│
▼
Node E
```
### Hybrid Architecture
```
┌──────────────────────────────────────────┐
│ P2P Mesh Network Layer │
│ (Nodes connected via TCP/UDP) │
└──────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ 5G Core Network Layer │
│ (Open5gs/Free5gc) │
│ │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ AMF │ │ SMF │ │ UPF │ │ NRF │ │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
└──────────────────────────────────────────┘
```
## Scalability
### Horizontal Scaling
- Add more nodes to expand mesh coverage
- Automatic peer discovery and connection
- Dynamic routing table updates
- Load distribution across peers
### Vertical Scaling
- Increase max peers per node
- Optimize routing algorithm
- Tune heartbeat intervals
- Adjust discovery frequency
## Security Considerations
### Network Security
- Network ID validation
- Peer authentication via handshake
- Optional TLS for TCP connections
- Blacklist for malicious peers
### 5G Security
- SUPI encryption
- AKA (Authentication and Key Agreement)
- SEAF (Security Anchor Function)
- Integrity protection
## Performance Characteristics
### Latency
- Direct peer connection: ~1-5ms
- 2-hop routing: ~5-15ms
- 3-hop routing: ~15-30ms
### Throughput
- TCP mesh: Limited by network bandwidth
- UDP discovery: Minimal overhead
- Routing updates: ~1KB per update
### Resource Usage
- Memory: ~50-100MB per node
- CPU: <5% idle, <20% under load
- Network: ~1-10Mbps depending on traffic
## Extension Points
### Custom Routing Algorithms
```javascript
class CustomRouter extends RouterModule {
computeCustomAlgorithm() {
// Implement custom routing logic
}
}
```
### Custom Peering Policies
```javascript
class CustomPeeringManager extends PeeringManager {
validatePeeringTerms(terms) {
// Implement custom validation
}
}
```
### 5G Extensions
```javascript
class Custom5GInterface extends FiveGCoreInterface {
handleCustomNF(nfType) {
// Handle custom network functions
}
}
```