Доставка через mKCP

mKCP - это надежный потоковый протокол. Основан на UDP.

Конфигурация:

{
  "mtu": 1350,
  "tti": 20,
  "uplinkCapacity": 5,
  "downlinkCapacity": 20,
  "congestion": false,
  "readBufferSize": 1,
  "writeBufferSize": 1,
  "header": {
    "type": "none"
  }
}

Где:

  • mtu: Maximum transmission unit. Устанавливает максимальное количество байт, которые может содержать пакет UDP. Рекомендуемое значение между 576 и 1460. По умолчанию 1350.
  • tti: Transmission time interval, в миллисекундах. mKCP будет отправлять данные через указанный интервал. Рекомендуемое значение между 10 и 100. По умолчанию 50.
  • uplinkCapacity: Ширина полосы исходящей линии, МБ/с. Максимальная пропускная способность для экземпляра V2Ray для выгрузки данных в Сеть. Значение по умолчанию: 5.
    • Обратите внимание, в "МБ/с" Б - это байт, а не бит.
    • Можно использовать 0 для небольшой пропускной способности.
  • downlinkCapacity: Ширина полосы входящей линии, МБ/с. Максимальная пропускная способность для экземпляра V2Ray для загрузки данных из Сети. Значение по умолчанию: 20.
    • Обратите внимание, в "МБ/с" Б - это байт, а не бит.
    • Можно использовать 0 для небольшой пропускной способности.
  • congestion: Следует ли включать контроль перегрузки. Значение по умолчанию: false.
    • Когда управление перегрузкой включено, V2Ray определяет качество сети. Он будет отправлять меньше пакетов, если потеря пакетов будет серьезной, или больше, если сеть не полностью заполнена.
  • readBufferSize: Размер буфера для чтения для каждого соединения, в МБ. Значение по умолчанию: 2.
  • writeBufferSize: Размер буфера для записи для каждого соединения, в МБ. Значение по умолчанию: 2.
  • header: Заголовок пакета для маскировки.
    • type: Тип маскировки. Возможные варианты:
      • "none": Значение по умолчанию. Без обфускации.
      • "srtp": Маскировка под SRTP трафик. Для прослушивающих выглядит как видеозвонок, например из Facetime.
      • "utp": Маскировка под uTP трафик. Со стороны выглядит как трафик от Bittorrent.
      • "wechat-video": Маскировка под WeChat.
      • "dtls": Маскировка под пакеты DTLS 1.2.
      • "wireguard" (V2Ray 3.38+): Маскировка под пакеты WireGuard. (только маскировка, НЕ настоящий протокол WireGuard)

Замечания

  • uplinkCapacity и downlinkCapacity определяют скорость mKCP. На стороне клиента uplinkCapacity устанавливает скорость отправки данных на сервер. На стороне сервера downlinkCapacity устанавливает скорость получения данных сервером. Реальная скорость будет определяться наименьшим значением.
  • mKCP использует протокол UDP. Убедитесь, что ваш брандмауэр настроен правильно.
  • mKCP отправляет больше трафика для более низкой задержки. Чтобы передавать один и тот же объем данных, mKCP обычно требует большей пропускной способности, чем TCP.

Благодарности

  • @skywind3000 создал оригинальный протокол KCP и воплотил его на C.
  • @xtaci реализовал KCP на Go.
  • @xiaokangwang встроил KCP в V2Ray.