Expand description

A minimum, userspace TCP based datagram stack

Overview

fake-tcp is a reusable library that implements a minimum TCP stack in user space using the Tun interface. It allows programs to send datagrams as if they are part of a TCP connection. fake-tcp has been tested to be able to pass through a variety of NAT and stateful firewalls while fully preserves certain desirable behavior such as out of order delivery and no congestion/flow controls.

Core Concepts

The core of the fake-tcp crate compose of two structures. Stack and Socket.

Stack

Stack represents a virtual TCP stack that operates at Layer 3. It is responsible for:

  • TCP active and passive open and handshake
  • RST handling
  • Interact with the Tun interface at Layer 3
  • Distribute incoming datagrams to corresponding Socket

Socket

Socket represents a TCP connection. It registers the identifying tuple (src_ip, src_port, dest_ip, dest_port) inside the Stack so so that incoming packets can be distributed to the right Socket with using a channel. It is also what the client should use for sending/receiving datagrams.

Examples

Please see client.rs and server.rs files from the phantun crate for how to use this library in client/server mode, respectively.

Modules

Structs

Enums