Skip to content

Latest commit

 

History

History
58 lines (49 loc) · 1.16 KB

README.md

File metadata and controls

58 lines (49 loc) · 1.16 KB

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
Loading

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