{"id":13539383,"url":"https://github.com/wangyu-/udpspeeder","last_synced_at":"2025-05-14T12:10:00.683Z","repository":{"id":23715254,"uuid":"99672281","full_name":"wangyu-/UDPspeeder","owner":"wangyu-","description":"A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction, possible for All Traffics(TCP/UDP/ICMP)","archived":false,"fork":false,"pushed_at":"2025-05-03T20:33:14.000Z","size":6310,"stargazers_count":4846,"open_issues_count":170,"forks_count":839,"subscribers_count":168,"default_branch":"branch_libev","last_synced_at":"2025-05-03T21:25:56.516Z","etag":null,"topics":["ecc","fec","proxy","reed-solomon","tunnel","udp","udp-tunnel"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangyu-.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-08T08:57:18.000Z","updated_at":"2025-05-03T20:33:19.000Z","dependencies_parsed_at":"2024-01-07T22:49:00.290Z","dependency_job_id":"330300e3-397f-44fc-9608-546ada0e9f7c","html_url":"https://github.com/wangyu-/UDPspeeder","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangyu-%2FUDPspeeder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangyu-%2FUDPspeeder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangyu-%2FUDPspeeder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangyu-%2FUDPspeeder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangyu-","download_url":"https://codeload.github.com/wangyu-/UDPspeeder/tar.gz/refs/heads/branch_libev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140760,"owners_count":22021219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecc","fec","proxy","reed-solomon","tunnel","udp","udp-tunnel"],"created_at":"2024-08-01T09:01:24.791Z","updated_at":"2025-05-14T12:09:55.661Z","avatar_url":"https://github.com/wangyu-.png","language":"C++","funding_links":[],"categories":["\u003ca id=\"1a9934198e37d6d06b881705b863afc8\"\u003e\u003c/a\u003e通信\u0026\u0026代理\u0026\u0026反向代理\u0026\u0026隧道","\u003ca id=\"01e6651181d405ecdcd92a452989e7e0\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"56acb7c49c828d4715dce57410d490d1\"\u003e\u003c/a\u003e未分类-Proxy","\u003ca id=\"9d6789f22a280f5bb6491d1353b02384\"\u003e\u003c/a\u003e隧道\u0026\u0026穿透"],"readme":"# UDPspeeder\n\nA Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction.\n\nWhen used alone, UDPspeeder improves only UDP connection. Nevertheless, if you used UDPspeeder + any UDP-based VPN together,\nyou can improve any traffic(include TCP/UDP/ICMP), currently OpenVPN/L2TP/ShadowVPN are confirmed to be supported。\n\n![](/images/en/udpspeeder.PNG)\n\nor\n\n![image_vpn](/images/en/udpspeeder+openvpn3.PNG)\n\nAssume your local network to your server is lossy. Just establish a VPN connection to your server with UDPspeeder + any UDP-based VPN, access your server via this VPN connection, then your connection quality will be significantly improved. With well-tuned parameters , you can easily reduce IP or UDP/ICMP packet-loss-rate to less than 0.01% . Besides reducing packet-loss-rate, UDPspeeder can also significantly improve your TCP latency and TCP single-thread download speed.\n\n[UDPspeeder Wiki](https://github.com/wangyu-/UDPspeeder/wiki)\n\n[简体中文](/doc/README.zh-cn.md)\n\n# Efficacy\ntested on a link with 100ms latency and 10% packet loss at both direction\n\n### Ping Packet Loss\n![](/images/en/ping_compare_mode1.png)\n\n### SCP Copy Speed\n![](/images/en/scp_compare2.PNG)\n\n# Supported Platforms\nLinux host (including desktop Linux,Android phone/tablet, OpenWRT router, or Raspberry PI).\n\nFor Windows and MacOS You can run UDPspeeder inside [this](https://github.com/wangyu-/udp2raw-tunnel/releases/download/20171108.0/lede-17.01.2-x86_virtual_machine_image.zip) 7.5mb virtual machine image.\n\n# How does it work\n\nUDPspeeder uses FEC(Forward Error Correction) to reduce packet loss rate, at the cost of addtional bandwidth. The algorithm for FEC is called Reed-Solomon.\n\n![image0](/images/en/fec.PNG)\n\n### Reed-Solomon\n\n`\nIn coding theory, the Reed–Solomon code belongs to the class of non-binary cyclic error-correcting codes. The Reed–Solomon code is based on univariate polynomials over finite fields.\n`\n\n`\nIt is able to detect and correct multiple symbol errors. By adding t check symbols to the data, a Reed–Solomon code can detect any combination of up to t erroneous symbols, or correct up to ⌊t/2⌋ symbols. As an erasure code, it can correct up to t known erasures, or it can detect and correct combinations of errors and erasures. Reed–Solomon codes are also suitable as multiple-burst bit-error correcting codes, since a sequence of b + 1 consecutive bit errors can affect at most two symbols of size b. The choice of t is up to the designer of the code, and may be selected within wide limits.\n`\n\n![](/images/en/rs.png)\n\nCheck wikipedia for more info, https://en.wikipedia.org/wiki/Reed–Solomon_error_correction\n\n# Getting Started\n\n### Installing\nDownload binary release from https://github.com/wangyu-/UDPspeeder/releases\n\n### Running (improves UDP traffic only)\nAssume your server ip is 44.55.66.77, you have a service listening on udp port 7777.\n\n```bash\n# Run at server side:\n./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777  -f20:10 -k \"passwd\"\n\n# Run at client side\n./speederv2 -c -l0.0.0.0:3333  -r44.55.66.77:4096 -f20:10 -k \"passwd\"\n```\n\nNow connecting to UDP port 3333 at the client side is equivalent to connecting to port 7777 at the server side, and the connection has been boosted by UDPspeeder.\n\n##### Note\n\n`-f20:10` means sending 10 redundant packets for every 20 original packets.\n\n`-k` enables simple XOR encryption\n\n\n# Improves all traffic with OpenVPN + UDPspeeder\n\nSee [UDPspeeder + openvpn config guide](https://github.com/wangyu-/UDPspeeder/wiki/UDPspeeder-openvpn-config-guide).\n\n# Advanced Topic\n\n### Full Options\n```\nUDPspeeder V2\ngit version: 3e248b414c    build date: Aug  5 2018 21:59:52\nrepository: https://github.com/wangyu-/UDPspeeder\n\nusage:\n    run as client: ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port  [options]\n    run as server: ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port  [options]\n\ncommon options, must be same on both sides:\n    -k,--key              \u003cstring\u003e        key for simple xor encryption. if not set, xor is disabled\nmain options:\n    -f,--fec              x:y             forward error correction, send y redundant packets for every x packets\n    --timeout             \u003cnumber\u003e        how long could a packet be held in queue before doing fec, unit: ms, default: 8ms\n    --report              \u003cnumber\u003e        turn on send/recv report, and set a period for reporting, unit: s\nadvanced options:\n    --mode                \u003cnumber\u003e        fec-mode,available values: 0,1; mode 0(default) costs less bandwidth,no mtu problem.\n                                          mode 1 usually introduces less latency, but you have to care about mtu.\n    --mtu                 \u003cnumber\u003e        mtu. for mode 0, the program will split packet to segment smaller than mtu value.\n                                          for mode 1, no packet will be split, the program just check if the mtu is exceed.\n                                          default value: 1250. you typically shouldnt change this value.\n    -q,--queue-len        \u003cnumber\u003e        fec queue len, only for mode 0, fec will be performed immediately after queue is full.\n                                          default value: 200. \n    -j,--jitter           \u003cnumber\u003e        simulated jitter. randomly delay first packet for 0~\u003cnumber\u003e ms, default value: 0.\n                                          do not use if you dont know what it means.\n    -i,--interval         \u003cnumber\u003e        scatter each fec group to a interval of \u003cnumber\u003e ms, to protect burst packet loss.\n                                          default value: 0. do not use if you dont know what it means.\n    -f,--fec              x1:y1,x2:y2,..  similiar to -f/--fec above,fine-grained fec parameters,may help save bandwidth.\n                                          example: \"-f 1:3,2:4,10:6,20:10\". check repo for details\n    --random-drop         \u003cnumber\u003e        simulate packet loss, unit: 0.01%. default value: 0.\n    --disable-obscure     \u003cnumber\u003e        disable obscure, to save a bit bandwidth and cpu.\ndeveloper options:\n    --fifo                \u003cstring\u003e        use a fifo(named pipe) for sending commands to the running program, so that you\n                                          can change fec encode parameters dynamically, check readme.md in repository for\n                                          supported commands.\n    -j ,--jitter          jmin:jmax       similiar to -j above, but create jitter randomly between jmin and jmax\n    -i,--interval         imin:imax       similiar to -i above, but scatter randomly between imin and imax\n    --decode-buf          \u003cnumber\u003e        size of buffer of fec decoder,u nit: packet, default: 2000\n    --fix-latency         \u003cnumber\u003e        try to stabilize latency, only for mode 0\n    --delay-capacity      \u003cnumber\u003e        max number of delayed packets\n    --disable-fec         \u003cnumber\u003e        completely disable fec, turn the program into a normal udp tunnel\n    --sock-buf            \u003cnumber\u003e        buf size for socket, \u003e=10 and \u003c=10240, unit: kbyte, default: 1024\nlog and help options:\n    --log-level           \u003cnumber\u003e        0: never    1: fatal   2: error   3: warn \n                                          4: info (default)      5: debug   6: trace\n    --log-position                        enable file name, function name, line number in log\n    --disable-color                       disable log color\n    -h,--help                             print this help message\n\n```\n#### `--fifo` option\nUse a fifo(named pipe) for sending commands to the running program. For example `--fifo fifo.file`, you can use following commands to change parameters dynamically:\n```\necho fec 19:9 \u003e fifo.file\necho mtu 1100 \u003e fifo.file\necho timeout 5 \u003e fifo.file\necho queue-len 100 \u003e fifo.file\necho mode 0 \u003e fifo.file\n```\n\n\n# wiki\nCheck wiki for more info:\n\nhttps://github.com/wangyu-/UDPspeeder/wiki\n\n# Related repo\n\nYou can also try tinyfecVPN, a lightweight high-performance VPN with UDPspeeder's function built-in, repo:\n\nhttps://github.com/wangyu-/tinyfecVPN\n\nYou can use udp2raw with UDPspeeder together to get better speed on some ISP with UDP QoS(UDP throttling), repo: \n\nhttps://github.com/wangyu-/udp2raw-tunnel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangyu-%2Fudpspeeder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangyu-%2Fudpspeeder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangyu-%2Fudpspeeder/lists"}