UDPspeeder
Туннель, который улучшает качество вашей сети при высокой задержке и потере пакетов с помощью прямой коррекции ошибок.
При использовании отдельно UDPspeeder улучшает только UDP-соединение. Однако если вы используете UDPspeeder + любой VPN на основе UDP вместе, вы можете улучшить любой трафик (включая TCP/UDP/ICMP), в настоящее время подтверждено, что OpenVPN/L2TP/ShadowVPN поддерживаются.
Предположим, что ваша локальная сеть до сервера ненадёжна. Просто установите VPN-соединение с вашим сервером через UDPspeeder и любой VPN на базе UDP, получите доступ к своему серверу через это VPN-соединение, тогда качество вашего соединения значительно улучшится.
С хорошо настроенными параметрами вы можете легко уменьшить частоту потери IP-пакетов или пакетов UDP/ICMP до менее чем 0,01 %. Помимо уменьшения частоты потери пакетов, UDPspeeder также может значительно улучшить вашу задержку TCP и скорость однопоточной загрузки TCP.
Эффективность протестирована на канале со 100 мс задержкой и 10 % потерей пакетов в обоих направлениях.
Поддерживаемые платформы
Хост Linux (включая настольный Linux, телефон/планшет Android, маршрутизатор OpenWRT или Raspberry PI).
Для Windows и MacOS вы можете запустить UDPspeeder внутри образа виртуальной машины размером 7,5 МБ по ссылке.
Как это работает
UDPspeeder использует FEC (прямую коррекцию ошибок) для снижения частоты потери пакетов за счёт дополнительной пропускной способности. Алгоритм для FEC называется Reed-Solomon.
Reed-Solomon — это код, который принадлежит классу недвоичных циклических кодов с коррекцией ошибок. Код Рида-Соломона основан на одномерных полиномах над конечными полями. Он способен обнаруживать и исправлять множественные символьные ошибки. Добавляя t проверочных символов к данным, код Рида-Соломона может обнаруживать любую комбинацию до t ошибочных символов или исправлять до ⌊t/2⌋ символов. В качестве кода стирания он может исправить до t известных стираний или может обнаружить и исправить комбинации ошибок и стираний. Коды Рида-Соломона также подходят в качестве кодов с множественной коррекцией битовых ошибок, поскольку последовательность из b + 1 последовательных битовых ошибок может повлиять не более чем на два символа размера b. Выбор t остаётся за разработчиком кода и может быть выбран в широких пределах.
Дополнительная информация доступна в Википедии: https://en.wikipedia.org/wiki/Reed–Solomon_error_correction.
Начало работы
Скачайте бинарный релиз с сайта https://github.com/wangyu-/UDPspeeder/releases.
Предположим, ваш сервер имеет IP 44.55.66.77, у вас есть служба, прослушивающая порт UDP 7777.
# Запустить на стороне сервера:
./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -f20:10 -k "passwd"
# Запустить на клиентской стороне
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -f20:10 -k "passwd"
Теперь подключение к порту UDP 3333 на клиентской стороне эквивалентно подключению к порту 7777 на сервере, и соединение было усилено с помощью UDPspeeder.
Примечание:
-f20:10
означает отправку 10 избыточных пакетов на каждые 20 исходных пакетов.-k
включает простое XOR-шифрование.Улучшает весь трафик с OpenVPN + UDPspeeder
См. руководство по настройке UDPspeeder с OpenVPN.
Расширенная тема
UDPspeeder V2
git version: 3e248b414c build date: Aug 5 2018 21:59:52
repository: https://github.com/wangyu-/UDPspeeder
usage:
run as client: ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port [options]
run as server: ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port [options]
common options, must be same on both sides:
-k,--key <string> key for simple xor encryption. if not set, xor is disabled
main
``` **Опции:**
* -f, --fec x:y — прямая коррекция ошибок (forward error correction), отправка y избыточных пакетов для каждых x пакетов;
* --timeout <число> — как долго пакет может находиться в очереди перед выполнением FEC, единица измерения: миллисекунды, значение по умолчанию: 8 мс;
* --report <число> — включить отправку/получение отчётов и установить период для отправки отчётов, единица измерения: секунды.
**Расширенные опции:**
* --mode <число> — режим FEC, доступные значения: 0, 1; режим 0 (по умолчанию) требует меньше пропускной способности, нет проблем с MTU. Режим 1 обычно приводит к меньшей задержке, но вам нужно учитывать MTU;
* --mtu <число> — MTU. Для режима 0 программа будет разделять пакеты на сегменты меньше значения MTU. В режиме 1 пакеты не будут разделяться, программа просто проверит, превышено ли значение MTU, значение по умолчанию: 1250. Обычно это значение менять не следует;
* -q, --queue-len <число> — длина очереди FEC. Только для режима 0 FEC будет выполняться сразу после заполнения очереди, значение по умолчанию: 200;
* -j, --jitter <число> — смоделированный джиттер. Случайная задержка первого пакета на 0~<число> мс, значение по умолчанию: 0. Не используйте, если вы не знаете, что это значит;
* -i, --interval <число> — разброс каждой группы FEC на интервал в <число> мс для защиты от потери пакетов, значение по умолчанию: 0. Не используйте, если вы не знаете, что это значит;
* -f, --fec x1:y1, x2:y2, ... — аналогично -f / --fec выше, более детальные параметры FEC могут помочь сэкономить пропускную способность. Пример: «-f 1:3, 2:4, 10:6, 20:10». Подробности см. в репозитории;
* --random-drop <число> — имитация потери пакетов, единица измерения: 0,01 %. Значение по умолчанию: 0;
* --disable-obscure <число> — отключить неясность, чтобы сэкономить немного пропускной способности и ресурсов процессора.
**Опции разработчика:**
* --fifo <строка> — использовать fifo (именованный канал) для отправки команд работающей программе, чтобы можно было динамически изменять параметры кодирования FEC. Проверьте readme.md в репозитории для получения информации о поддерживаемых командах;
* -j ,--jitter jmin:jmax — аналогично -j выше, но создаёт джиттер случайным образом между jmin и jmax;
* -i,--interval imin:imax — аналогично -i выше, но разброс случайным образом между imin и imax;
* --decode-buf <число> — размер буфера декодера FEC, единица измерения: пакеты, значение по умолчанию: 2000;
* --fix-latency <число> — попытаться стабилизировать задержку, только для режима 0;
* --delay-capacity <число> — максимальное количество задержанных пакетов;
* --disable-fec <число> — полностью отключить FEC, превратить программу в обычный UDP-туннель;
* --sock-buf <число> — размер buf для сокета, >=10 и <=10240, единица измерения: килобайт, значение по умолчанию: 1024.
**Параметры журнала и справки:**
* --log-level <число> — 0: никогда, 1: фатальный, 2: ошибка, 3: предупреждение, 4: информация (по умолчанию), 5: отладка, 6: трассировка;
* --log-position — включить имя файла, имя функции, номер строки в журнале;
* --disable-color — отключить цвет в журнале;
* -h, --help — вывести это справочное сообщение. QoS (UDP throttling), репозиторий:
https://github.com/wangyu-/udp2raw-tunnel
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )