mKCP
KCP over UDP · FEC · legacy 2015
Что это
mKCP (modified KCP) — надёжный UDP-транспорт с FEC (Forward Error Correction). Основан на протоколе KCP — китайском алгоритме reliable-UDP, придуманном разработчиком skywind3000 в 2015 году. Изначально для игровых серверов, где нужна была скорость и надёжность одновременно.
Идея KCP
TCP — надёжный, но при потерях пакетов сильно замедляется (congestion control «убегает» при малейших проблемах). UDP — быстрый, но ненадёжный.
KCP берёт UDP как транспорт, но добавляет поверх:
- Sequence numbers и retransmit — как в TCP, но настраиваемый
- FEC (Forward Error Correction) — сервер шлёт «избыточные» пакеты, из которых можно восстановить потерянные без переспроса
- Более агрессивный retransmit — не ждёт долго, пересылает раньше
- Настраиваемое окно — не адаптивное как TCP, а фиксированное
mKCP в контексте прокси
V2Ray, а затем Xray, добавили KCP как транспорт для VLESS/VMess. Обычно с обфускацией под что-то — например под WeChat-видеопакеты.
Конфиг
"streamSettings": {
"network": "mkcp",
"kcpSettings": {
"mtu": 1350,
"tti": 20,
"uplinkCapacity": 12,
"downlinkCapacity": 100,
"congestion": false,
"readBufferSize": 2,
"writeBufferSize": 2,
"header": {
"type": "wechat-video" // обфускация
},
"seed": "some_secret"
}
}
Обфускация пакетов
Параметр header.type добавляет к каждому UDP-пакету специальный заголовок, имитирующий:
- wechat-video — как видеозвонок WeChat
- srtp — как видеозвонок SIP/WebRTC
- utp — как торрент BitTorrent
- wireguard — как WireGuard-пакет
- dns — как DNS-запрос
- none — без обфускации
Плюсы
- Отличная скорость на плохих сетях (мобилка с потерями, WiFi через стены)
- FEC компенсирует потери без переспросов
- Обфускация под легитимные UDP-протоколы
Минусы
- UDP-трафик легко ограничивается провайдерами и ТСПУ (шейпинг UDP:443 в РФ)
- Много служебного трафика (FEC = 20-40% overhead)
- Настроить сложнее чем WS/gRPC (много параметров с шумной документацией)
- Сейчас (2026) — полу-legacy. Для «плохих сетей» лучше Hysteria2 (QUIC-based, лучше во всём)
mKCP vs Hysteria2
| mKCP | Hysteria2 | |
|---|---|---|
| Транспорт | UDP + свой протокол | UDP + QUIC |
| FEC | да (простая) | да (продвинутая через QUIC) |
| Congestion | ручной / off | Brutal (умный) |
| Обфускация | под WeChat/uTP/… | Salamander (случайные QUIC-хэдеры) |
| Setup | сложный | минимальный |
| 2026 | legacy | актуально |
Когда всё ещё выбирать mKCP
- Провайдер режет QUIC, но пропускает «странный» UDP
- Обфускация под конкретный протокол (WeChat) нужна для гео-специфики
- Historically-inherited конфиги