Categorygithub.com/chenx-dust/paracat
repositorypackage
0.0.0-20250206122141-ea50adec5dab
Repository: https://github.com/chenx-dust/paracat.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

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

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

TODO

  • Round-robin mode
  • Remove unused UDP connections
  • GRO & GSO
  • Optimize delay
  • Re-connect after EOF
  • Congestion control algorithm
  • Fake TCP with eBPF
  • UDP MTU discovery with DF
  • API interface