You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document provides a high-level overview of the components that make up Dino and how they interact to provide dynamic routing and tunneling.
4
+
5
+
📐 System Diagram
6
+
7
+

8
+
9
+
⌨️ CLI (Command Line Interface)
10
+
11
+
The Dino CLI is a statically linked Go binary that acts as the primary administrative tool. It communicates with the Server via gRPC to:
12
+
13
+
Provision and de-provision tunnels.\
14
+
Configure hostname-to-service routing rules.\
15
+
Monitor real-time tunnel health and throughput metrics.
16
+
17
+
🔌 API (Server)
18
+
19
+
The core of Dino is a high-performance H2C (HTTP/2 Cleartext) server. It serves as the single point of truth for the system state.
20
+
21
+
Dependency Injection: Built using uber-go/fx for a modular, testable lifecycle.\
22
+
Persistence: Manages the state of routes and tunnels (via the Service layer you saw in the code).\
23
+
Protocols: Uses gRPC for type-safe, low-latency communication between the CLI and the backend.
24
+
25
+
Tunnel Management
26
+
27
+
Tunnel Management handles the "Physical" layer of the connection. It abstracts the complexity of different network interfaces into a unified logical tunnel_id.
28
+
29
+
Isolation: Ensures that traffic arriving on one tunnel cannot "hop" to another unless explicitly routed.\
30
+
Lifecycle: Manages the handshake, keep-alives, and clean teardown of network pipes.\
31
+
Abstraction: Provides a common interface for Dino to interact with local TUN/TAP devices or remote overlay peers.
32
+
33
+
Proxy (Data Plane)
34
+
35
+
The Proxy is the engine that moves bits. It is responsible for the actual "forwarding" decision based on the configuration received from the API.
36
+
37
+
Host-Based Routing: Inspects the SNI or Host header of incoming requests to match them against the active routing table.\
38
+
Protocol Translation: Supports mapping incoming traffic to various destination protocols (as defined in dest_protocol).\
39
+
Flow Control: Handles the stream multiplexing between a single tunnel entry-point and multiple internal microservices.
This document serves as a breakdown of Dino Route.
4
+
5
+
## Core Concepts
6
+
7
+
Dino Routes are used when routing tunnel traffic after exiting the tunnel. The routing table will match based on Route `hostname` and dial the destination provided at Route creation.
This document explains how Dino maps incoming tunnel traffic to internal destinations.
4
+
5
+
## Core Concept
6
+
7
+
Dino operates a control plane for network tunnels. Functionality is different from wireguard as it does not interact with physical devices. Instead it manages the routing table that dictates where traffic goes once it exits the tunnel.
0 commit comments