Skip to content

ParaCat: A multipath UDP forwarder for high reliability/throughput

Notifications You must be signed in to change notification settings

chenx-dust/paracat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

66a034d · Feb 19, 2025

History

14 Commits
Feb 19, 2025
Feb 6, 2025
Feb 6, 2025
Feb 19, 2025
Feb 14, 2025
Feb 6, 2025
Feb 14, 2025
Feb 14, 2025
Feb 19, 2025
Feb 5, 2025
Feb 14, 2025
Feb 14, 2025
Feb 14, 2025
Feb 5, 2025

Repository files navigation

ParaCat: A multipath UDP forwarder for high reliability/throughput

In crowded Internet, all connections are not reliable. To minimize jitter and packet loss, we can send it through different routes simultaneously then get redundancy.

Structure

Loading
flowchart LR
    C[UDP Client]
    PC[Paracat Client]
    D{Data}
    PS[Paracat Server]
    S(UDP Server)

    C -->|"handleForward()"| PC
    C <-->|MultiPort<->SinglePort| PC
    PC -->|"handleReverse()"| C

    PC -->|"
    SendUDPLoop()
    SendTCPLoop()
    Scatterer
    "| D
    PC <-->|MultiPort<->| D
    D -->|"
    handleUDPRelayRecv()
    ReceiveTCPLoop()
    Gather
    "| PC

    D -->|"
    handleUDPListener()
    ReceiveTCPLoop()
    Gather
    "| PS
    D <-->|<->SinglePort| PS
    PS -->|"
    SendUDPLoop()
    SendTCPLoop()
    Scatterer
    "| D

    PS -->|"handleForward()"| S
    PS <-->|MultiPort<->SinglePort| S
    S -->|"handleReverse()"| PS

    subgraph TCP/UDP Tunnel
        D
    end

TODO

  • Round-robin mode
  • Remove unused UDP connections
  • Re-connect after EOF
  • GRO & GSO
  • Single direction for connection
  • CRC check
  • New udp socket for each connection
  • UDP MTU discovery with DF
  • Routing strategy
  • API interface
  • Heartbeat keepalive
  • Optimize delay
  • Congestion control algorithm
  • Fake TCP with eBPF
  • Test coverage
  • Multi-user support

About

ParaCat: A multipath UDP forwarder for high reliability/throughput

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages