A simple extensible asynchronous network framework.
A flexible, lightweight and asynchronous network framework based on standalone Asio.
netJeep nodes can connect directly to the Internet, or be chained together to form a multi-hop network topology.
This allows users to build flexible proxy networks, relay systems, or custom communication infrastructures.
Example:
Client -> Node A -> Node B -> Node C -> Internet
The core communication logic in netJeep is abstracted as a Strategy interface.
By implementing the Strategy interface, users can customize:
- Encryption methods
- Handshake protocols
- Relay logic
- Packet transformation
This design allows communication methods to be replaced without modifying the core framework.
Currently implemented strategies include:
An encrypted communication protocol similar to early Shadowsocks implementations.
Features:
- AES encrypted data transport
- Lightweight protocol
- Suitable for relay and proxy communication
Allows inbound connections to communicate through the SOCKS5 protocol.
Suitable for:
- Browser proxy
- Local proxy applications
- Standard SOCKS5 clients
netJeep is built on standalone Asio and uses fully asynchronous, non-blocking I/O.
Represents the inbound/local-side connection.
Examples:
- SOCKS5 client
- Browser connection
- Acceptor of other node
Represents the outbound/remote-side connection.
Examples:
- Remote server
- Next-hop node
- Internet target
Handles the communication logic between InConn and OutConn.
Examples:
- Encryption
- Handshake
- Protocol transformation
- Packet encapsulation
netJeep uses an event-driven asynchronous state machine to process network traffic.
For InConn, the processing flow is:
toInRead
↓
inRead
↓
onInRead
↓
toOutWrite
↓
outWrite
↓
onOutWrite
↓
toInRead (loop)
Prepare for asynchronous reading from InConn.
Typical operations:
- Buffer allocation
- State checking
- Strategy preprocessing
Perform asynchronous read operation.
Usually implemented using:
asio::async_read_some(...)Handle received data after reading.
Typical operations:
- Decryption
- Packet parsing
- Protocol processing
- Strategy dispatching
Prepare data before sending to OutConn.
Typical operations:
- Encryption
- Packet encapsulation
- Compression
- Buffer generation
Perform asynchronous write operation.
Usually implemented using:
asio::async_write(...)Handle post-write processing.
Typical operations:
- Continue next read cycle
- Release buffers
- State transition
Depending on the current Strategy, netJeep may asynchronously trigger reading from OutConn at specific stages.
The OutConn processing flow is similar to InConn:
toOutRead
↓
outRead
↓
onOutRead
↓
toInWrite
↓
inWrite
↓
onInWrite
↓
toOutRead (loop)
This design enables fully asynchronous bidirectional forwarding.
Since both inbound and outbound are abstracted connections, netJeep nodes can easily be chained together.
Example topology:
Client
↓
Node A
↓
Node B
↓
Node C
↓
Internet
Each node may use different strategies.
For example:
Client
↓ SOCKS5
Node A
↓ AES Strategy
Node B
↓ Custom Strategy
Node C
↓ Internet
Potential future features:
- UDP support
-
structured InConnection and OutConnection manager - json config parser
- logger
- TLS strategy
- QUIC strategy
- WebSocket transport
- Traffic statistics
- Dynamic routing
Boost >= 1.66.0
Asio non-Boost == 1.22.1
CryptoPP == 8.6
other requirements workings with cmake.