Skip to content

Releases: Dushnilin/tachyon-core

Release list

⚡ Tachyon Core v0.1.2 — Сетевое ядро для OpenWrt (XHTTP поверх HTTP/2, HardwareProfile, MASQUE инбаунд, WgPool, X.509 v1 REALITY, фикс %2F в Clash API)

Choose a tag to compare

@github-actions github-actions released this 14 Oct 09:25

⚡ Tachyon Core v0.1.2

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release Build Status RAM RSS Benchmarks OpenWrt Arch License


Выпуск tachyon-core v0.1.2 — двенадцатый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.1.2 включает полноценное мультиплексирование режимов XHTTP packet-up и stream-up поверх единого пула HTTP/2 соединений (H2Pool / XMUX) по эталону Xray-core, адаптивный аппаратный профиль (HardwareProfile) с автоматическим определением класса ОЗУ роутера и защитой от нехватки памяти (MEMORY_PRESSURE), новый серверный инбаунд MASQUE (RFC 9484 CONNECT-IP поверх HTTP/3 QUIC), многопоточный пул туннелей WireGuard / AmneziaWG (WgPool) и ускорение трактов Mieru / AnyTLS, поддержку сертификатов X.509 v1 для REALITY и пиннинга ключей (PinVerifier), неблокирующий connect в dialer с таймаутом half-close в relay, а также корректную обработку URL-кодированных слэшей (%2F) в именах узлов и групп Clash API.


🌟 Ключевые нововведения и исправления

  • 🌐 XHTTP поверх HTTP/2 (packet-up и stream-up в H2Pool / XMUX):
    • Снято принудительное сужение ALPN до http/1.1 для режимов packet-up и stream-up: при согласовании h2 поток скачивания (GET) и секвенсированные пакеты отправки (POST) мультиплексируются как HTTP/2 стримы внутри одного соединения из H2Pool (XMUX), как в эталонном Xray-core.
    • Устранено открытие двух отдельных TCP+TLS сессий на каждый packet-up запрос к серверам с поддержкой HTTP/2, что радикально ускорило установку соединения и убрало таймауты при пакетных потерях и DPI-троттлинге TLS-хендшейков.
    • В H2Pool::acquire исправлена гонка регистрации Notify::notified() (enable() до освобождения мьютекса), добавлено автоматическое вытеснение (evict) закрытых пиром H2-соединений с прозрачным повтором и RAII-счётчик активных стримов (CounterGuard).
    • В PostWriter для HTTP/1.1 повторная попытка после ошибки на переиспользуемом соединении теперь гарантированно открывает свежее соединение (fresh_connection) и корректно освобождает слот в xmux::Pool на всех путях ошибок.
    • В XhttpConn::poll_shutdown добавлено ожидание сброса буфера PacketsUp (poll_flush) перед закрытием пайпа, а закрытие стороны записи больше не обрывает фоновую задачу чтения (dl_task) до закрытия самого соединения.
  • 🧠 Адаптивный аппаратный профиль (HardwareProfile) и защита памяти (MEMORY_PRESSURE):
    • Реализован модуль hardware с автоопределением класса памяти устройства при старте (Constrained ≤ 128 МиБ, Router ≤ 512 МиБ, Midrange ≤ 2 ГиБ, DesktopServer > 2 ГиБ) по /proc/meminfo и лимитам cgroup.
    • Размеры буферов relay, окон HTTP/2 (h2io), сокетов smoltcp, splice-пайпов и ёмкость пулов автоматически масштабируются под доступное ОЗУ роутера с сохранением приоритета ручных переменных TACHYON_*.
    • Добавлен lock-free детектор давления памяти (is_memory_pressured / refresh_memory_pressure), мгновенно освобождающий буферы вместо возврата в пул при дефиците MemAvailable.
  • 🚀 Серверный инбаунд MASQUE (RFC 9484 CONNECT-IP over HTTP/3) и виртуальный стек smoltcp:
    • Реализован серверный инбаунд masque, принимающий HTTP/3 QUIC-соединения с Extended CONNECT, датаграммами и анонсом маршрутов (ROUTE_ADVERTISEMENT) и бриджующий клиентские IP-пакеты в Router.
    • Выделен общий виртуальный IP/TCP-стек smoltcp (new_virtual_ip_iface, accept_virtual_tcp_packet, pump_virtual_tcp_sessions), совместно используемый инбаундами tun, fptn и masque.
  • ⚡ Многопоточный пул WireGuard / AmneziaWG (WgPool) и оптимизация Mieru / AnyTLS:
    • В wireguard и amneziawg внедрён пул параллельных туннельных сессий с распределением потоков, пакетной обработкой noise и векторным fastchacha.
    • Переработаны тракты данных и буферизация кадров в mieru, anytls, shadowtls, shadowsocks и vmess для снижения числа системных вызовов и копирований на горячем пути.
  • 🔒 TLS: поддержка сертификатов X.509 v1 в REALITY и PinVerifier:
    • Добавлена поддержка верификации самоподписанных сертификатов X.509 v1 без тега версии (генерируемых Go x509.CreateCertificate на серверах Xray/sing-box REALITY) с проверкой подписи Ed25519 в CertificateVerify.
    • В tls_client и core-tls::verify подключён PinVerifier для привязки по certificate_sha256 и certificate_public_key_sha256.
  • 🔍 Clash API: поддержка слэша (/, %2F) в названиях прокси и групп:
    • Классификация маршрутов classify_with_ui переведена на разбор сырого URL-пути до вызова percent_decode, а декодирование выполняется отдельно для извлечённого сегмента имени (Route::Proxy, Route::Delay) с сохранением защиты от path traversal (%2e%2e) в /ui.
    • Устранена ошибка 404 Not Found при замере задержки (/proxies/{name}/delay, /group/{name}/delay) и переключении узлов, содержащих символ / в названии (например, до 10 Гбит/с или Group/A).
  • 🛡️ Неблокирующий connect в dialer и таймаут half-close в relay:
    • Переведён TCP connect на неблокирующий режим с явным контролем таймаута соединения (включая таймаут dial_tcp на платформе Windows), что исключает зависание воркеров рантайма на «чёрных дырах» маршрутизации.
    • В relay добавлен таймаут на стадию half-close, предотвращающий зависание задач и утечку файловых дескрипторов при полузакрытых соединениях.

📦 Контрольные суммы бинарников (SHA-256)

04b5118409612ec15fa64550873e94a282c3b121dfbf7c07ebc0211c565a023f  ./tachyon-core-aarch64-v0.1.2
16ae0448940ee31b36b7db24620ad0c5b24d1c38a8e8c3070691a491b6d105b5  ./tachyon-core-armv6-v0.1.2
0773995ebc2ab6c0a41f216d1223912f704306cce8269ea8b0f25c04ed4ca632  ./tachyon-core-armv7-v0.1.2
331ccb7eec314faf905faa404527bf31e63d1c99fa25401db0d458770a75d59d  ./tachyon-core-darwin-amd64-v0.1.2
fcac39050cf923ee33190f31cf524667823b0aa321acf5cf4744696029b5a5e4  ./tachyon-core-darwin-arm64-v0.1.2
b7712789ae5c8127bd7f295b345f1d9daed0999ca4f15dbf3f91dc6afde36736  ./tachyon-core-linux-amd64-v0.1.2
d2784c662f7295f376cc9221aac329d4ec7a0578a5ac63839e13954dd684adcf  ./tachyon-core-mips-v0.1.2
bdd95efc42e160a4e3af59c9571caa0895d3622d832bfe3bda48dd9a612ea424  ./tachyon-core-mipsel-v0.1.2
0401ddad7106b9c647b45c07a1885edeeb864c76c50dff17603917fdd03068cf  ./tachyon-core-riscv64-v0.1.2
626f7e1a384aa78f654a45d46a1f66abcc191e6165d92243eeef801078b957e7 *./tachyon-core.exe
08b8fc931d383c502abe97e1447789205d115c3335b46c43dc7bec2a6c6fe300  ./tachyon-core-x86_64-v0.1.2

Full Changelog: v0.1.1...v0.1.2

⚡ Tachyon Core v0.1.1 — Сетевое ядро для OpenWrt (Рекорд h2-бенчей на вендоренном HTTP/2, стабильный Hysteria2 Brutal CC, TLS 1.2 fallback для uTLS-отпечатков и починка утечек фоновых задач)

@github-actions github-actions released this 13 Oct 18:28

⚡ Tachyon Core v0.1.1

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release Build Status RAM RSS Benchmarks OpenWrt Arch License


Выпуск tachyon-core v0.1.1 — одиннадцатый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.1.1 включает переработанный тракт данных HTTP/2 с пулом буферов полезной нагрузки в вендоренном h2 и расширенными окнами 16/64 МиБ (выведший tachyon-core на первое место в обеих HTTP/2 ячейках бенч-матрицы), стабилизацию контроллера Hysteria2 Brutal CC на субмиллисекундных RTT и локальных релеях, автоматический прозрачный фолбэк на TLS 1.2 при использовании uTLS-отпечатков (TLS12_ENDPOINTS), поддержку plain HTTP в замере задержек Clash API, режим stream-one для XHTTP поверх REALITY/H2, устранение утечек фоновых задач remote rule-set и UDP-мостов, адаптивные thread-local буферы релея для одноядерных роутеров, а также исправление Vision UUID и выбор шифрования VMess auto.


🌟 Ключевые нововведения и исправления

  • ⚡ HTTP/2: переработанный путь данных и первое место в бенч-матрице:
    • В вендоренный h2 полезная нагрузка каждого DATA-фрейма копируется в переиспользуемый буфер из пула по потокам вместо заморозки общей аллокации кодека: на каждый GiB ушло ~8000 mmap и ~191000 minor faults (теперь <7000), системное время на GiB сократилось примерно на секунду.
    • В h2io окно приёма расширено с 8 до 16 МиБ на стрим и с 32 до 64 МиБ на соединение, отправка переведена на прямой запрос ёмкости (без промежуточного копирования в stage_bytes) и max_send_buffer_size.
    • Итог официального бенча (desktop, 8 стримов): vless-h2-tls — 18.8 Гбит/с против 13.3 у mihomo, vless-tls-h2mux — 17.6 Гбит/с против 16.1 у sing-box; расход CPU на GiB снизился с 2.74 до 1.70 и с 2.53 до 1.63.
  • 🚀 Hysteria2: устранение заморозки соединений на loopback и локальных релеях:
    • Контроллер Brutal считал размер окна как rate × RTT × 2; при субмиллисекундном RTT (петля, релей на одном хосте) окно схлопывалось ниже одного пакета, и проверка in_flight + bytes >= window в quinn блокировала отправку после первого ACK.
    • Установлен нижний порог окна в 8 MTU: реальные сети с RTT 1–2 мс также получили прирост (окно 2.5 КБ больше не упирается в потолок ~20 Мбит/с), при этом фактическую скорость по-прежнему задаёт явный темп пейсинга.
    • Интероп-тесты hy2/tuic синхронизированы через test_guard для исключения гонок process-global состояния.
  • 🔒 Автоматический откат на TLS 1.2 при uTLS-отпечатках:
    • Собственный TLS-стек ядра (core-tls) ориентирован на TLS 1.3 для uTLS и REALITY. При работе с CDN и серверами (например, Twitch/CloudFront для VLESS gRPC), поддерживающими только TLS 1.2 и отклоняющими TLS 1.3 (alert 70 / wrong legacy version), ядро перехватывает ошибку рукопожатия.
    • Узел автоматически помечается в LRU-кэше (TLS12_ENDPOINTS, ёмкость до 512 записей), после чего соединение прозрачно переподключается через 100% чистый Rust rustls без C-криптографии.
    • Повторные подключения к известным TLS 1.2 узлам сразу используют rustls, минуя лишние неудачные хендшейки.
  • 🔍 Поддержка plain HTTP в замере задержек Clash API:
    • Устранена принудительная подмена протокола с http:// на https:// при вызове /proxies/{name}/delay.
    • Исправлен парсер split_authority: для ссылок без явного указания порта по схеме http:// по умолчанию выставляется порт 80 вместо ошибочного 443.
    • Замеры задержки через http://www.gstatic.com/generate_204 и http://cp.cloudflare.com/generate_204 отрабатывают штатно.
  • 🌐 XHTTP и Mux: stream-one поверх REALITY/H2 и пул сессий:
    • В автоматическом режиме xhttp для REALITY и HTTP/2 выбирается двунаправленный режим stream-one с мультиплексированием поверх пула H2-соединений.
    • GET-запрос скачивания отправляется асинхронно, исключая взаимную блокировку с VLESS handshake в буфере.
    • В mux одновременные стримы больше не открывают TCP-сессии вхолостую (opening + Notify, дефолтный лимит max_connections — 8), а send_request учитывает poll_ready.
  • 🛡️ Устранение утечек и зависаний фоновых задач:
    • Фоновые задачи remote rule-set трекаются в роутере и гасятся при reload_in_place и shutdown.
    • connect_udp_index обёрнут в таймаут из роута/инбаунда — исходящие UDP-мосты больше не висят по 120 с; drain_backlog не зависает на сокете.
    • Глобальный server_addr_lock заменён на слабые мьютексы per-(resolver, host).
    • UDP-активность в hy2, tuic и masque учитывается в обе стороны; для per-connection hub в fptn, tun, mux и relay подключён StopHub.
  • 🧠 Адаптивные буферы под одноядерный роутер, VMess и Vision:
    • На одноядерных системах буфер релея составляет 32 КиБ (пул 64 буфера = 2 МиБ), буферы Shadowsocks ужаты с 256 до 48 КиБ, добавлен thread-local пул relay-буферов (4 на поток) без мьютекса на горячем пути.
    • В VMess security: auto при наличии TLS выбирает none (по эталону sing-box), буфер кадра зафиксирован на 256 КиБ с read-ahead 128 КиБ.
    • В Vision первый фрейм несёт префикс UUID пользователя для корректного снятия паддинга сервером.
  • 🧪 Ночные бенчмарки и стресс-тесты:
    • В scripts/bench/night_load.py добавлен 5-минутный интервал охлаждения между прогонами протоколов, общий буфер генератора нагрузки и раннее детектирование отказа ядра.

📦 Контрольные суммы бинарников (SHA-256)

fceb27a6e3472955aa3d4bbd0c79ab2e1f0af6f9480dd92de80d74e3138a07b4  ./tachyon-core-aarch64-v0.1.1
5f3368bd65f7f652f4d5326740d38ed4fbae41fa6373505fb7c094b3813ffdc8  ./tachyon-core-armv6-v0.1.1
4ba39efccf73b21fb214d2719a37b146c5aea9fa2e923d6c84313f440bb11c68  ./tachyon-core-armv7-v0.1.1
dcf7d43cc9c3d838d24c502928a94f79fa56f3cc56e1d37fc6956bb9cbab072e  ./tachyon-core-darwin-amd64-v0.1.1
1d71d116deee988b7b0e1c6387ba41af6b5a1706e0156f4e0eee5c71ec300356  ./tachyon-core-darwin-arm64-v0.1.1
f612ea2ec95833d196407f61290d6e7c3512497004d46f07778642233c3b9a4e  ./tachyon-core-linux-amd64-v0.1.1
395bff105e5c0c80e691ebbe1ce8e57af0c11d856f33d69c0d9731e2f50bf638  ./tachyon-core-riscv64-v0.1.1
12d536e1f9384811d5b204173067f32de285c4c2b4201e261bf3c7f23e70105f *./tachyon-core.exe
86fa3268ef19233d8b3d8d734f68d3a568973374a727c659be20a96568bcfedc  ./tachyon-core-x86_64-v0.1.1

Full Changelog: v0.1.0...v0.1.1

⚡ Tachyon Core v0.1.0 — Сетевое ядро для OpenWrt (Каскадный Detour, защита Flash-памяти и атомарный FakeIP, 100% Pure Rust без C-аллокатора, sing-box 1.15 Pin и Clash API)

@Dushnilin Dushnilin released this 12 Oct 20:33

⚡ Tachyon Core v0.1.0

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release Build Status RAM RSS Benchmarks OpenWrt Arch License


Выпуск tachyon-core v0.1.0 — десятый, юбилейный релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.1.0 включает полноценную поддержку каскадного транзита Detour с закрытием сессий на конечном хопе, атомарную персистентность FakeIP в cache.db и комплексную защиту Flash-памяти роутеров (Zero-Wear Protection) от паразитного износа, полный переход на 100% чистый Rust без C-аллокатора (std::alloc::System вместо mimalloc и собственная реализация blake3), расширение TCP-окон smoltcp до 256 КиБ и устранение зомби-сокетов WireGuard/TUN, перехватчик DoH (RFC 8484) и параллельный резолв A/AAAA, метрики Prometheus (/metrics) и детальный rulePayload в Clash API, а также поддержку корневых отпечатков сертификатов (certificate_pin) по спецификации sing-box 1.15.


🌟 Ключевые нововведения и исправления

  • 🔗 Каскадный Detour (#140) и закрытие сессий на последнем хопе:
    • В структуру DialOptions добавлено поле detour: Option<String>, исключающее потерю каскадных выходов при диале.
    • Роутер Router::connect_index и connect_udp_index раскручивают полную цепочку транзитных прокси с защитой от циклов (ограничение максимальной глубины в 64 хопа) и терминированием на прямом или терминальном выходе.
    • Опция закрытия активных соединений interrupt_exist_connections при переключении селектора теперь находит и разрывает сокеты строго на последнем (конечном) хопе цепочки, а не на промежуточных узлах.
  • 💾 Атомарная персистентность FakeIP (#135) и устранение асимметрии:
    • Устранена асимметрия между прямым и обратным хранением: регистрация FakeIP теперь синхронно фиксирует обе записи в персистентном bbolt-хранилище cache.db.
    • Механизм LRU-вытеснения (remember) синхронно очищает прямую и обратную запись из памяти и с диска, исключая сбои missing fakeip record.
    • В CacheFile добавлено чтение сырых бинарных ключей (raw_keys), исключающее рассинхрон строкового представления адресов.
    • При промахе по обратной записи в RAM она автоматически восстанавливается из дискового кэша на лету.
  • 🛡️ Комплексная защита Flash-памяти роутеров (Zero-Wear Protection):
    • Устранены паразитные перезаписи флеш-памяти при старте и штатной работе ядра.
    • Компиляция inline и local rule-sets в бинарный формат TSRS проверяет наличие идентичного файла на диске перед вызовом записи.
    • Опрос удаленных rule-sets при ответе HTTP 304 Not Modified больше не вызывает синхронный сброс базы на диск (батчинг через интервал flush_if_due).
    • При обновлении remote rule-set (HTTP 200 или наложение дельты) запись отменяется, если результирующий TSRS совпадает с уже имеющимся на диске.
    • Устранена паразитная перезапись Clash Mode в cache.db при инициализации сервиса.
    • В методах CacheFile::put и apply_changes реализована проверка совпадения значений (existing == value), предотвращающая ложное выставление флага dirty и вызов flush().
  • 🦀 100% Pure Rust без C-зависимостей (Zero-CC musl):
    • Полностью удален аллокатор mimalloc: ядро переведено на системный аллокатор std::alloc::System. Пиковый RSS снизился с 17.4 до 16.1 MiB, размер бинарника уменьшился более чем на 200 КиБ, дерево cargo tree -i cc для musl полностью пусто.
    • Написана собственная pure-Rust реализация blake3 без сишного кода и переписанных build.rs, полностью совпадающая по тестовым векторам с официальным крейтом 1.8.7.
  • 🚀 Сетевой стек smoltcp, буферы BDP и устранение зомби-сокетов:
    • Буферы TCP-сокетов userspace-стека smoltcp увеличены с 64 КиБ до 256 КиБ (динамический расчет через TACHYON_SMOL_TCP_BUF), что сняло искусственное ограничение BDP с ~120 Мбит/с на задержках 4 мс до гигабитных скоростей.
    • WireGuard: исправлена ротация сессионных ключей (учитывается возраст сессии, как в wireguard-go, а не last_recv).
    • Устранены зависания и зомби-сокеты: caller_eof теперь корректно закрывает сокет, next_deadline синхронизирован с poll_at.
    • TUN: исправлена потеря хвоста чанка при частичной записи в send_slice, устранено 100% зависание ядра на wake_by_ref при переполнении канала, ограничены очереди пакетов.
  • 🌐 DNS: параллельный резолв и перехватчик DoH (RFC 8484):
    • В hijack-dns добавлена поддержка перехвата и распаковки DNS-over-HTTPS запросов (GET и POST по RFC 8484) напрямую во встроенный резолвер.
    • Устранены зависания резолва: опрос записей A и AAAA переведен на параллельный режим с коротким grace-периодом вместо 5-секундного последовательного ожидания при недоступности одного из семейств IP.
    • DoH-транспорт переиспользует единое HTTP/2 соединение аналогично http2.Transport в sing-box вместо создания нового TLS-хендшейка на каждый запрос.
  • 📊 Clash API, метрики Prometheus и детальный rulePayload:
    • Добавлен эндпоинт /metrics в формате Prometheus для мониторинга активных соединений, битрейта и памяти.
    • Поток WebSocket /traffic переведен на отдачу дельты скорости (байт/сек) вместо накопленных счетчиков, восстанавливая правильное отображение битрейта в веб-панелях (Yacd, Metacubexd).
    • В снимке /connections поле "memory" заполняется реальным значением RSS процесса из /proc/self/statm, оживляя системный виджет потребления RAM.
    • Поле rulePayload в /connections теперь честно отдает сработавший суффикс, rule_set, CIDR или порт прямо из контекста правила вместо пустой строки.
  • ⚡ Окна HTTP/2 и горячий путь Relay:
    • В модуле h2io возврат емкости окна (release) теперь происходит строго по факту вычитки данных потребителем (serve, skip, poll_read_into) и при сбросе потока, исключая утечку окна в пустоту при медленном клиенте.
    • sniff_quic: заголовок Initial копируется в стек-буфер на 64 байта вместо аллокации to_vec() на куче для каждого пакета.
    • relay: промежуточный VLESS-заголовок размещен на стеке, исключены лишние аллокации при форматировании hex.
  • 🔒 Совместимость с sing-box 1.15 и протоколы:
    • Реализована поддержка корневых отпечатков сертификатов (certificate_pin) по спецификации sing-box 1.15 (форматы hex и base64 с префиксом sha256:).
    • Устранено дублирование UUID в заголовках VLESS и протоколе Vision.
    • NaïveProxy и Mieru: добавлены сквозные интеграционные тесты клиент-сервер, для NaïveProxy инбаунда по умолчанию выставляется h2 в ALPN.
  • 🛠️ CLI и бенчмарки:
    • Команда rule-set match поддерживает позиционный аргумент цели и флаг формата.
    • Интегрирован комплекс скриптов для ночного нагрузочного тестирования протокольной матрицы и пина процессов по ядрам CPU (scripts/bench/night_load.py, scripts/bench/night_report.py, scripts/bench/night.ps1).

📦 Контрольные суммы бинарников (SHA-256)

0286a3e65c7520e264668971f062ca97dd9b211cc24f47f9bd3f3dc4f702ed0b  ./tachyon-core-aarch64-v0.1.0
30c0024ac4eae128614363bd0c6aa6d6a857818ba94c237a8998d5c09bf55dd7  ./tachyon-core-armv6-v0.1.0
d6e037ba71404def9a90b63d5078065ad7abe72a52ddcc6a8013f31add39ff51  ./tachyon-core-armv7-v0.1.0
4d9857afd0f935702ad3259f4e27698787616f591338d835bb5064d30312e093  ./tachyon-core-darwin-amd64-v0.1.0
7a90af70e091ee3c82c7a6f692242de1999a9be0f37e8c7f6ed8b02fa061b4e7  ./tachyon-core-darwin-arm64-v0.1.0
36509830d4e8f928d776461e7a3fdde4a77c14b0f50a6735ef4f1d38b2135012  ./tachyon-core-linux-amd64-v0.1.0
b4dcdbe9f3d36ee33f3d86362c1c752945e0bd8eaab87933efe7d7088e380755  ./tachyon-core-mips-v0.1.0
055ca9203c10d677bc9bd21b26d7ed1ee3e01df25da246c82bc13dcef24a4973  ./tachyon-core-mipsel-v0.1.0
b16a7780f6e2a348f520ed2ef8fa506f089ad3d7a93b1a70b667b69e1943d553  ./tachyon-core-riscv64-v0.1.0
471c1547e2366bcd91123e60d850734df46dea519c7f317edfce2038e5b07cb6 *./tachyon-core.exe
c89c27a4e07edd752d6b55c4315dde89b7b3ab78b89ae72a6e352293c3529d8d  ./tachyon-core-x86_64-v0.1.0

Full Changelog: v0.0.9...v0.1.0

⚡ Tachyon Core v0.0.9 — Сетевое ядро для OpenWrt (Ядерный оффлоад WireGuard/AWG через Netlink, Quinn Brutal Pacing, Zero-Alloc Relay и аутентификация URLTest)

Choose a tag to compare

@github-actions github-actions released this 11 Oct 23:28

⚡ Tachyon Core v0.0.9

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release Build Status RAM RSS Benchmarks OpenWrt Arch License


Выпуск tachyon-core v0.0.9 — девятый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.9 включает нативный ядерный оффлоад WireGuard и AmneziaWG (wireguard.ko / amneziawg.ko) через чистый Rust Netlink драйвер для достижения гигабитных скоростей forwarding на роутерах, контроллер перегрузки и пейсинг Brutal для протоколов на базе QUIC (quinn-proto), оптимизацию пула буферов Relay (Zero-Alloc & Lazy Buffer) со сбросом памяти во время ожидания входящих пакетов, верификацию сертификатов TLS и чистый замер времени отклика сервера (TTFB) в URLTest, защиту от утечек UDP-мостов с очисткой по таймауту неактивности, а также персистентность FakeIP в bbolt с сырыми бинарными ключами и отклонение неразрешенных адресов.


🌟 Ключевые нововведения и исправления

  • 🚀 Ядерный оффлоад WireGuard и AmneziaWG (wireguard.ko / amneziawg.ko):
    • Реализован собственный pure-Rust драйвер Generic Netlink и rtnetlink без внешних C-зависимостей (libc и системные сокеты Netlink).
    • Поддержка создания интерфейсов (RTM_NEWLINK/RTM_DELLINK), динамического разрешения семейств контроллера Netlink (GENL_ID_CTRL) и конфигурирования устройств WireGuard (WG_CMD_SET_DEVICE).
    • Полная поддержка расширенных параметров обфускации AmneziaWG (Jc, Jmin, Jmax, S1, S2, H1..H4) для модулей ядра amneziawg.ko.
    • Опция "system": true: трафик направляется напрямую через ядерный интерфейс с привязкой через SO_BINDTODEVICE, обеспечивая скорость передачи данных 1+ Гбит/с на уровне ядра.
  • ⚡ Алгоритм контроля перегрузки Brutal для QUIC (Quinn Pacing):
    • Интегрирован контроллер пейсинга Brutal на базе quinn-proto для удержания фиксированной скорости передачи без деградации окна при потерях пакетов (рассмотрен PR #17).
  • 🛡️ Оптимизация буферизации Relay (Zero-Alloc & Lazy Buffer):
    • Реализован пул PooledBuffer с отложенным выделением памяти: буферы не аллоцируются впустую и возвращаются в пул во время ожидания входящих данных, радикально снижая потребление RSS при десятках тысяч фоновых соединений (рассмотрен PR #18).
  • 🔍 URLTest: аутентификация TLS и чистый замер задержки:
    • Из замера задержки urltest исключено время рукопожатия TCP и TLS: теперь измеряется чистое время отклика сервера (TTFB) по эталонной спецификации sing-box (рассмотрен PR #19).
    • Добавлена строгая проверка сертификатов TLS и пула доверенных центров сертификации (ca_certs) с кэшированием контекстов клиента rustls (рассмотрен PR #20).
  • 🔄 Жизненный цикл UDP-мостов и Zero-Alloc фрейминг:
    • Устранена утечка UDP-сокетов при разрыве TCP-соединения туннеля через тайм-аут неактивности и автоматическую очистку брошенных соединений.
    • Метод frame_into выполняет упаковку пакетов напрямую в предоставленный буфер без промежуточных аллокаций (рассмотрен PR #22).
  • 💾 Персистентность FakeIP и отклонение неразрешенных адресов:
    • Персистентное хранилище FakeIP в cache.db (bbolt) переведено на сырые бинарные ключи Big-Endian, устраняя деградацию производительности при форматировании строк (рассмотрен PR #23).
    • Неразрешенные IP-адреса из диапазона FakeIP отклоняются на этапе маршрутизации, предотвращая паразитный трафик в дефолтный аутбаунд.
  • 🌐 NaïveProxy и Mux Single-Frame:
    • В инбаунде NaïveProxy добавлена поддержка стандартного заголовка Padding, эхо-ответа паддинга и фоллбэка на заголовок Host / -connect-authority.
    • В Mux исходящий заголовок запроса объединяется с первым блоком полезной нагрузки в единый HTTP/2 фрейм с безопасным отслеживанием частичной записи.

📦 Контрольные суммы бинарников (SHA-256)

1736a0fd2c51bdc0534d065a43ba8323e475b1dd696b16ae196c1c4466cd2ab5  ./tachyon-core-aarch64-v0.0.9
c4dbf72b84ca5998d45e88f10a814a11b1165526fbd0124b6e50fcdf416ec7f8  ./tachyon-core-armv6-v0.0.9
ea327c3416290b97f80b40eecdc6eb81f2fd4550b83709c5bfe45a0159e01cff  ./tachyon-core-armv7-v0.0.9
f63dfa82d73dd35ff5b64152543ae14b08ea13fd9079de83eaf1ce6c79e916ed  ./tachyon-core-darwin-amd64-v0.0.9
20f684375e51dff28da6fc32a35e3ce9131b91f886155cb08c72885a9a3d9659  ./tachyon-core-darwin-arm64-v0.0.9
b4ecf1062790b977cac49f11078d39cf8449379bc2d2c2d4fe377b383d1e9cef  ./tachyon-core-linux-amd64-v0.0.9
89f01fed987e5c23e302c79e6e23bc9f2e1b8a87208e7cdb9974a85dbf119790  ./tachyon-core-mips-v0.0.9
da68d6f62df82045c7aecbd879b49ff9e4eeba9d8038cff6587e834dd3f3b06c  ./tachyon-core-mipsel-v0.0.9
5307013f1a330fa19bbe5d0771ce57c6c776facb2c85e69df716b5d28d22af8c  ./tachyon-core-riscv64-v0.0.9
5533f4d12578f6df71d7bd51cb6b6a4bf682f76377ed5e631235d6d14b81f1b8 *./tachyon-core.exe
75f7f4d7a96cc4467e5b39edad0db36b37db58070b616c95b2b4e3d871d5a553  ./tachyon-core-x86_64-v0.0.9

Full Changelog: v0.0.8...v0.0.9

⚡ Tachyon Core v0.0.8 — Сетевое ядро для OpenWrt (Нативный Outbound Desync, фикс XHTTP auto/packet-up, Soft-float MIPS и Fallback Config)

Choose a tag to compare

@github-actions github-actions released this 11 Oct 18:48

⚡ Tachyon Core v0.0.8

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release
Build Status
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.8 — восьмой релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.8 включает нативный outbound-десинхронизатор desync для обхода DPI на уровне L4/L7 без необходимости запускать сторонние демоны ByeDPI/Zapret, устраняет зависания транспорта XHTTP в режимах packet-up и auto, обеспечивает гарантированную совместимость с MIPS-роутерами без FPU (MediaTek MT7620/MT7621/MT7628) за счёт флагов soft-float, снижает требования x86_64 до базовой микроархитектуры, а также добавляет механизм автоматического отката на резервный конфиг (Fallback Config) и софт-старт для rule-set по умолчанию.


🌟 Ключевые нововведения и исправления

  • 🛡️ Нативный desync-аутбаунд для обхода DPI:
    • Встроенный протокол desync с поддержкой фрагментации TCP, сплита HTTP-запросов и нарезки TLS ClientHello на уровне сетевого стека ядра без необходимости запускать сторонние демоны ByeDPI (ciadpi) или Zapret.
  • ⚡ Починка клиента и сервера XHTTP в режимах packet-up и auto:
    • Согласование режимов приведено к эталону sing-box: auto резолвится строго в packet-up (stream-one зарезервирован только под REALITY).
    • Убран синхронный блокирующий троттлинг на каждый write в packet-up: отправка переведена на асинхронный воркер PacketsUp с пайпом и координацией байт через flush(), что устранило зависания сессий и обеспечило максимальную пропускную способность.
    • Добавлены обязательные вызовы flush() в XHTTP-инбаунде (ответные заголовки 200 OK на download GET, подтверждения upload POST и потоковые чанки) для предотвращения застревания ответов в TLS-буфере rustls.
  • 🌐 HTTP Inbound Transport и буферизация остаточных байт XHTTP:
    • Добавлена нативная поддержка входящего plain HTTP транспорта.
    • Исправлена буферизация остаточных байт при переходе границ фреймов в XHTTP.
  • ⚙️ Принудительный soft-float для MIPS (роутеры OpenWrt):
    • В целевых профилях сборки mips-unknown-linux-musl и mipsel-unknown-linux-musl принудительно включены флаги -msoft-float и +soft-float, полностью предотвращающие аварийное завершение SIGILL (Illegal Instruction) на роутерах без аппаратного блока FPU (MediaTek MT7620/MT7621/MT7628, Atheros AR9344).
  • 🖥️ Базовый x86_64 для всех процессоров и гипервизоров:
    • Требования к целевой архитектуре x86_64 снижены с x86-64-v3 до базового x86-64 для гарантированной совместимости со старыми роутерами, тонкими клиентами и виртуальными машинами.
  • 🔄 Отказоустойчивость и безопасность при старте:
    • При ошибке валидации конфигурации на этапе pre-flight сервис автоматически переключается на последнюю рабочую конфигурацию (fallback.json), защищая от потери удаленного доступа к роутеру.
    • Включен софт-старт для rule-set по умолчанию: ядро успешно стартует и маршрутизирует локальный трафик даже при «холодном» старте без активного подключения к сети.
    • Исключены петлевые адреса (loopback) из привязки bind_interface и навешивания fwmark, предотвращая зацикливание локального трафика.
    • Добавлен парсинг паролей из списка users для AnyTLS инбаунда.

📦 Контрольные суммы бинарников (SHA-256)

0153de30b6c9d3031a65da3d515b40519c9f3a37d7cb6a8e6add42a4a5af45d1  ./tachyon-core-aarch64-v0.0.8
bee0530900141fcca737266575eb2763dee154e4aa2c7733682a23d05c9a37a4  ./tachyon-core-armv6-v0.0.8
541e0ad0eb2f6cd5ba6f5fba318e0ace463c414e46a32b9d861de3f859087266  ./tachyon-core-armv7-v0.0.8
6eacedf86e5f1bf01c7545c0ed7f732275da244b763aec229217dcc21390d290  ./tachyon-core-darwin-amd64-v0.0.8
45b2e826070e8bebbd10f5aa8e2585ab04bef62e756e8c32c733af1a85ba2e77  ./tachyon-core-darwin-arm64-v0.0.8
2e147707ae7dfffde04d159a33e54054cf0c10fafe1b36598c2c024fee11411f  ./tachyon-core-linux-amd64-v0.0.8
f084ec8f0b5e2bc944b3a64207cfa283b210464619ca7b4daeac3eb92429f5ff  ./tachyon-core-mips-v0.0.8
f40bdef6be308d3fcac03cf6cd57c9e3b4c7b3fd2af3262068eeade98d64a5dd  ./tachyon-core-mipsel-v0.0.8
ad8e6c55ec2c72d707d5d2a1abd37938c2b6765521926c353226e2a8a3d3a5ce  ./tachyon-core-riscv64-v0.0.8
5c3624966d6f84553b50dec0fca585228cc10ef9885aa38811bbbb6c4a790250 *./tachyon-core.exe
5ace7a920306f45cc6dd7bf01920e3321863da8808cfe32ea703b106ad626780  ./tachyon-core-x86_64-v0.0.8

Full Changelog: v0.0.7...v0.0.8

⚡ Tachyon Core v0.0.7 — Сетевое ядро для OpenWrt (Hysteria2 Brutal CC, фикс ByeDPI/Zapret, нативный Tailscale и UDP L7-сниффинг)

Choose a tag to compare

@github-actions github-actions released this 11 Oct 09:59

⚡ Tachyon Core v0.0.7 — Сетевое ядро для OpenWrt (Hysteria2 Brutal CC, фикс ByeDPI/Zapret, нативный Tailscale и UDP L7-сниффинг)

Rust
Binary Size
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.7 — седьмой релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.7 реализует алгоритм контроля перегрузки Brutal Congestion Control для Hysteria2 для пробития искусственных потерь пакетов ТСПУ, полностью устраняет разрывы сессий и петли FakeIP при маршрутизации через локальные десинхронизаторы ByeDPI (ciadpi) и Zapret, включает нативный Tailscale mesh-клиент на чистом Rust без C-зависимостей, добавляет потоковый и пакетный L7-сниффинг для UDP (QUIC, DNS, STUN, BitTorrent), а также закрывает ряд критических нюансов стабильности сетевого стека.


🌟 Ключевые нововведения и исправления

  • 🚀 Brutal Congestion Control для Hysteria2:
    • Собственная реализация контроллера перегрузки и пейсера Brutal в сетевом стеке Quinn (Controller + ControllerFactory).
    • Фиксированный пейсинг передачи пакетов строго по заданной скорости up_mbps без отката окна перегрузки при потерях пакетов цензором ТСПУ (до 15–30% drop rate), спасая скорость туннеля там, где BBR и Cubic падают в ноль.
  • 🛡️ Нефатальный action: "resolve" и исправление интеграции с ByeDPI / Zapret:
    • Ошибки или задержки DNS-резолва в правилах action: "resolve" больше не валят входящее TCP-соединение с ошибкой на этапе роутинга — ядро продолжает проверку правил к целевому outbound (yt-out).
    • При успешном резолве адрес назначения перезаписывается на реальный IP (Target::Ip), а оригинальный домен сохраняется в ctx.domain для последующих правил domain_suffix.
    • SOCKS-аутбаунд передаёт в локальный демон ciadpi чистый реальный IP (ATYP 0x01/0x04), полностью устраняя зацикливание обратных DNS-запросов и петель FakeIP (198.18.x.y) на роутере.
    • В lookup_via добавлена корректная обработка локальных типов DNS-серверов (hosts и local/neighbor).
  • 🌐 Полноценный нативный Tailscale Outbound (рассмотрен PR #15 от @MaksSt):
    • Реализация клиентского узла Tailscale на чистом Rust (zero-C-crypto): аутентификация через координатор, STUN-запросы, Direct UDP P2P hole punching и шифрованные DERP-релеи (XSalsa20-Poly1305).
  • 🔍 L7-сниффинг для UDP и парсинг протоколов (рассмотрены PR #14 и PR #16 от @Screamshow):
    • Пакетный L7-сниффинг входящего UDP-трафика: детекция протоколов DNS, QUIC (v1/v2 Initial с парсингом фрагментированных ClientHello), STUN и BitTorrent.
    • Поддержка составных длительностей формата 1m30s, 300ms в рантайме.
    • Поддержка правил с опциями udp_timeout и ip_version.
    • Приведение формата ответов Clash API (/rules и /connections) в полное соответствие с эталоном sing-box.
  • 🔒 Надёжность криптографических примитивов и рантайма:
    • Корректная обработка пустых TLS-рекордов без падения воркера соединения.
    • Гарантированная зачистка буфера открытого текста при несовпадении аутентификационного тега в софтовом AES-GCM.
    • Исправлено поднятие лимита файловых дескрипторов RLIMIT_NOFILE на OpenWrt в procd (рассмотрен PR #13 от @Screamshow).

🤝 Рассмотренные Pull Requests и вклад сообщества

  • PR #15 (автор: @MaksSt) — рассмотрена нативная реализация клиента Tailscale и MagicDNS. Архитектура доработана под чистый Rust (zero-C-crypto), прямое P2P-соединение через STUN и встроенный сетевой стек Tachyon.
  • PR #14 и PR #16 (автор: @Screamshow) — рассмотрен L7-сниффинг UDP-датаграмм и распознавание пакетов QUIC v1/v2 Initial. Реализован полный сниффер (DNS, QUIC, STUN, BitTorrent, DTLS, NTP) с дефрагментацией ClientHello в UdpHub и wire-тестами RFC 9001/9369.
  • PR #13 (автор: @Screamshow) — рассмотрена логика поднятия мягкого лимита RLIMIT_NOFILE в окружениях с низким жестким лимитом (OpenWrt procd). Добавлен расчёт min(65535, hard) и подробное журналирование ошибок.

📦 Контрольные суммы бинарников (SHA-256)

d55072c9ae612c8fbf805fa4c47498912d37f66b727db51114561bf45199f5fa  ./tachyon-core-aarch64-v0.0.7
5983646a5de9a51610921d9f743b9c6fa5ab8340f75ba7b3ba1db5ffa3c0f523  ./tachyon-core-armv7-v0.0.7
7932b1c45ff5b6f21042f8f3e75c2eb512036dc6b34341a8583e4db8bbe66edf  ./tachyon-core-darwin-amd64-v0.0.7
781368dda21e634c0d4138b66091b53d7421a800e685822b47df24cd9165acf5  ./tachyon-core-darwin-arm64-v0.0.7
5b1d87d6fdaf17244e205b728f0322644583797b02a126928056e1ea926a004b  ./tachyon-core-linux-amd64-v0.0.7
e21ef7826054b65b80ad2872c9d5d58c642a208092b0db185ef7d68b858e3799  ./tachyon-core-mips-v0.0.7
83d78f5bffe1775956e92b8c7211f3e43e80da880f88159687a985c759455000  ./tachyon-core-mipsel-v0.0.7
186fd5dd8777c88e32a5a47f3840c6ec50c5a97f05801c49aa69ea0c6ddfcc2e  ./tachyon-core-riscv64-v0.0.7
ebc4eadf7069abe87568fb86ba1888be3c8bf22d7b46796b0abe5fa4a55565fa *./tachyon-core.exe
9b2ebac527511a9ba2c23885ebb88e271920fcadc96d8e33c58b19d56dee20f2  ./tachyon-core-x86_64-v0.0.7

Full Changelog: v0.0.6...v0.0.7

⚡ Tachyon Core v0.0.6 — Сетевое ядро для OpenWrt (Zero-Downtime Hot Reload, фикс петель DNS, uTLS Random и Trojan IPv6)

Choose a tag to compare

@github-actions github-actions released this 10 Oct 22:36

⚡ Tachyon Core v0.0.6 — Сетевое ядро для OpenWrt (Zero-Downtime Hot Reload, фикс петель DNS, uTLS Random и Trojan IPv6)

Rust
Binary Size
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.6 — шестой релиз сверхбыстрого, независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.6 реализует настоящий бесшовный Zero-Downtime Hot Reload по сигналу SIGHUP без пересоздания сокетов и без разрыва живых сессий, полностью устраняет сброс задержек серверов в N/A, ликвидирует опасные петли между ядром и системным резолвером dnsmasq, добавляет процессорную стабильность uTLS random-фингерпринтов и исправляет адресацию в сервере Trojan.


🌟 Ключевые нововведения и исправления

  • 🔄 Настоящий Zero-Downtime Hot Reload по SIGHUP:
    • Атомарная замена RouterInner на лету через RwLock без закрытия и пересоздания сетевых сокетов, когда инбаунды неизменны.
    • Живые TCP-соединения (видеосвязь, загрузки, SSH, мессенджеры) продолжают передачу данных без малейших разрывов.
    • Полная миграция истории задержек узлов (delay_history), выбранных состояний селекторов и задержек в группах urltest — статус серверов в веб-интерфейсе и Clash API больше никогда не сбрасывается в N/A при обновлении подписок или переключениях.
    • Миграция активного DNS-кэша, резолвленных адресов серверов, обратных зон и пулов FakeIP (LRU-маппинги адресов и доменов сохраняются без сброса).
    • Безопасный откат: если новый конфиг содержит ошибки или битый DNS, ядро оставляет текущую рабочую конфигурацию нетронутой.
  • 🛡️ Защита от DNS-петель и ретрансмит UDP:
    • Исключен опасный фолбэк на системный резолвер (lookup_host) при ошибке или таймауте domain_resolver. Устранено зацикливание запросов между dnsmasq и sing-box на 53 порту, вешавшее сеть на роутере.
    • Добавлен интервальный ретрансмит UDP-запросов (1.5 с) для надёжного восстановления при потерях пакетов на нестабильных PPPoE-линках.
  • 🎭 Процессно-стабильные uTLS Random фингерпринты (спасибо @Screamshow, PR #11):
    • Полноценная поддержка uTLS профилей "random" и "randomized" в рантайме (включая работу с REALITY).
    • Профиль стабилен на протяжении жизни процесса, расширения и наборы шифров рандомизируются без поломки согласования h2 и гибридных групп.
  • 🎯 Исправление адресации в сервере Trojan (спасибо @MaksSt, PR #10):
    • Преобразование SOCKS ATYP изолировано строго на границе Trojan-сервера, wire-формат VLESS/VMess остаётся стандартным.
    • Восстановлена передача данных к доменным и IPv6-целям через TLS в сервере Trojan с wire-тестами.

📦 Контрольные суммы бинарников (SHA-256)

c5e810fd96ec053cc074069a638ad7b7f68fc8653d2829d1cfd0e3df3e42e139  ./tachyon-core-aarch64-v0.0.6
6e521e6fff143383943722f4d56289b9741f60a7dbe9b1c3331bbc1e25d86d09  ./tachyon-core-armv6-v0.0.6
6618b2061eb5963b42ddb39ee08ddaf9fe6ab801e251dcbe3fe45d673538ab9e  ./tachyon-core-armv7-v0.0.6
8385a9d1b415f30b7aa92088f261fda65f793d178b3de26e5a100760fbb17c31  ./tachyon-core-darwin-amd64-v0.0.6
8558d73bfcf89c115eee4c406669ba0a12a841c3a1a125e1c175ae3eba723353  ./tachyon-core-darwin-arm64-v0.0.6
01895bbca96a8002b99c33414e738229252a6331435a2cdda74bcf656c448e39  ./tachyon-core-linux-amd64-v0.0.6
f519957e03a6d9327dbe965010a838e5ea80678bf52b44aa84cdf81bc26ae831  ./tachyon-core-mips-v0.0.6
f5df047e0f95cda13f9aabb3d9ad7b0131c129c9d79fda484ebc6a25ebac4df8  ./tachyon-core-mipsel-v0.0.6
82e88e14e7853ec626d8fbe2437203f38a5ee4aba7d940023364519c85881639  ./tachyon-core-riscv64-v0.0.6
00fdff29cfe3b51a9c1164057b89f61788923775fef32fdf23361341adc1ed83 *./tachyon-core.exe
c92cbba87b5a2799221f2538dfd00ea41533ef2a832dd15d19ec71c4effc3d96  ./tachyon-core-x86_64-v0.0.6

Full Changelog: v0.0.5...v0.0.6

⚡ Tachyon Core v0.0.5 — Сетевое ядро для OpenWrt (Поддержка Mieru TCP, кэширование Bootstrap DNS)

Choose a tag to compare

@github-actions github-actions released this 10 Oct 21:19

⚡ Tachyon Core v0.0.5 — Сетевое ядро для OpenWrt (Поддержка Mieru TCP, кэширование Bootstrap DNS)

Rust
Binary Size
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.5 — пятый релиз независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.5 внедряет полную клиентскую и серверную поддержку протокола mieru по TCP, а также решает критическую проблему с исчезновением интернета при использовании больших списков узлов за счет дедупликации и кэширования bootstrap DNS-запросов.


🌟 Ключевые нововведения и исправления

  • 🌐 Поддержка протокола mieru (TCP клиент и сервер):
    • Реализованы входящий (inbound) и исходящий (outbound) транспорты mieru.
    • Полная интероперабельность: подтверждена корректная работа в обе стороны с эталонными бинарниками mieru/mita 3.38.0 (побайтовая сверка потоков данных).
  • 🛡️ Кэширование и дедупликация Bootstrap DNS:
    • Адрес DoH-сервера, разрешаемый через domain_resolver, теперь кэшируется на 60 секунд, а параллельные запросы от десятков узлов объединяются в один.
    • Устранена проблема лавинообразных запросов при старте 50+ узлов, приводившая к дропам апстрима, таймаутам и зацикливанию в dnsmasq.
    • Сбой по одному типу записи (A или AAAA) больше не приводит к отказу всего bootstrap-запрос.
    • Информативные предупреждения с указанием реальной причины ошибки при сбое разрешения.

📦 Контрольные суммы бинарников (SHA-256)

c43211469fa313affbe31e6d4da2adeedf280e1c52c1dac6bdbbaa4a924b693a  ./tachyon-core-aarch64-v0.0.5
628a60c0209e9381268822d6e17f9de17f5cd13f0d24728880f2aedf930f8cc1  ./tachyon-core-armv6-v0.0.5
e021fabe597411bd205fb9e27ee8b7b7b515b8d038a6320f8b6b81f8e6709c9e  ./tachyon-core-armv7-v0.0.5
4520433f06038b60b3127fec9623c436c77f8ae69a7ac83af5508d706954d1fc  ./tachyon-core-darwin-amd64-v0.0.5
328f7515a52ecdc2091ffda375e13bb30f4e95018027676523194cfabb0298cf  ./tachyon-core-darwin-arm64-v0.0.5
da3502df1e722bf3c6a8603b5290f5c5755d6387bb4430aa8f66a4f9e183744b  ./tachyon-core-linux-amd64-v0.0.5
c3f19be51b7f577b8357851be9f01e20b361af3d8536b98dd6b2ef928088e590  ./tachyon-core-mips-v0.0.5
36ba9b381139264201236570ac4f70ed88e46ef6c5b1b168732ecfdce9fec849  ./tachyon-core-mipsel-v0.0.5
f46134466533f6c30fa65f59cec1cf28636dd31668e168aa2076f55e37754b5a  ./tachyon-core-riscv64-v0.0.5
b5a0169cc343df8e1a47bf8693d3c000a4306c3d5ab665d32b9dbea1d635eb4c *./tachyon-core.exe
e2076b534c35ba82a0c1cbfa01ca477232668ccb37210d306177076c18cf8538  ./tachyon-core-x86_64-v0.0.5

Full Changelog: v0.0.4...v0.0.5

⚡ Tachyon Core v0.0.4 — Сетевое ядро для OpenWrt (Оптимизация пула XHTTP, фикс задержек, очистка сокетов UDP)

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:56

⚡ Tachyon Core v0.0.4 — Сетевое ядро для OpenWrt (Оптимизация пула XHTTP, фикс задержек, очистка сокетов UDP)

Rust
Binary Size
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.4 — четвёртый релиз независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.4 устраняет зависание соединений и аномально высокие задержки в транспорте XHTTP, восстанавливает работу remote rule-set в правилах DNS, обеспечивает корректное освобождение портов и сокетов при SIGHUP, а также расширяет поддержку UDP (XUDP, TProxy, Hysteria 2).


🌟 Ключевые нововведения и исправления

  • ⚡ XHTTP: ликвидация задержек и возврат сокетов в пул:
    • Сокет теперь немедленно возвращается в пул после отправки POST-запроса (пустое тело с Content-Length: 0 больше не блокирует соединение).
    • Исправлена инвертированная проверка мультиплексора xmux, приводившая к открытию лишних соединений на каждый запрос.
    • Задержки по xhttp-узлам снизились до базовых значений, double-hop конфигурации больше не зависают в статусе N/A.
  • 🛡️ DNS-резолвер и правила:
    • Добавлена поддержка удалённых наборов правил (remote rule-set) внутри секции DNS-правил (PR #8).
    • Сохранение порядка правил и обратного сопоставления FakeIP в цепочках evaluate и respond.
    • Корректный заголовок Content-Length при взаимодействии с DoH-серверами Cloudflare.
  • 🔄 Очистка портов и UDP-стек (спасибо @MaksSt, PR #9):
    • Гарантированное освобождение портов инбаундов при SIGHUP и остановке сервиса: UDP, QUIC, Hysteria 2, TProxy (#5).
    • Защита от сбоя: автоматический откат к предыдущей конфигурации, если новая не может стартовать.
    • Корректная поддержка XUDP / VLESS UDP, ответы TProxy с исходного адреса назначения и session id для Hysteria 2.
    • Таймаут блокирующих фоновых воркеров в CLI.

Спасибо @Screamshow за PR #7 и детальный аудит поведения DNS.


📦 Контрольные суммы бинарников (SHA-256)

751cb8b23b4f61e9f188643c8d54d04d3136e29a8a3e65c09ccba9d343afa081  ./tachyon-core-aarch64-v0.0.4
137a6470f25ab602fde699e64f65f2035592ae08d7c0266bfbd465c3d3ff347d  ./tachyon-core-armv6-v0.0.4
908558536c463e82566591b2b725804bf54fb9e88aa5b153e8abeccb9f223126  ./tachyon-core-armv7-v0.0.4
4209aba6ca5b3ef134a3e7dfc46327db181ad242ab1dab83d84b8ef385e132dd  ./tachyon-core-darwin-amd64-v0.0.4
06bc7ef1a3e4f693b896ade9dace60ff06f8a84b2d43e1f61ca0eba30bc533b6  ./tachyon-core-darwin-arm64-v0.0.4
4010a0329131625e0aafb4dfc8b984e223d0c4fac5c330d463631b7e78f02b41  ./tachyon-core-linux-amd64-v0.0.4
93ec14464bc8a1ff9086771405cfdbae5bb40ba594808019e94598a215398684  ./tachyon-core-mips-v0.0.4
638c85af642e3d19f5beb76fd290dd0f764f088ee711daa889d03bb4de7e47f7  ./tachyon-core-mipsel-v0.0.4
b72a907ea282473fec0ca352b2fc23b53042c991d12bec1f13f5049ad06d5cdf  ./tachyon-core-riscv64-v0.0.4
5acfc7e09d796874b2dc9f88259e5f1e8a9043f0abfb0ec49239e436c31d04cf *./tachyon-core.exe
c6aebdffbe1f64598f789a55528d8ebdd56c2261e8fce1dcf16070a0bf345443  ./tachyon-core-x86_64-v0.0.4

Full Changelog: v0.0.3...v0.0.4

⚡ Tachyon Core v0.0.3 — Сетевое ядро для OpenWrt (Чистый вывод версии, фикс составных RuleSet и оптимизация CI)

Choose a tag to compare

@github-actions github-actions released this 10 Oct 11:56

⚡ Tachyon Core v0.0.3 — Сетевое ядро для OpenWrt (Чистый вывод версии, фикс составных RuleSet и оптимизация CI)

Rust
Binary Size
RAM RSS
Benchmarks
OpenWrt
Architectures
License


Выпуск tachyon-core v0.0.3 — третий релиз сверхбыстрого, независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.0.3 приводит формат идентификации ядра к лаконичному стандартному виду, устраняет критический баг ложного сопоставления составных headless rule-set правил в DNS-резолвере, гарантирует маркировку исходящих пакетов прокси-соединений для предотвращения сетевых петель в nftables, стабилизирует компоновку musl для архитектур MIPS/MIPSEL и оптимизирует процесс CI-сборки.


🌟 Ключевые нововведения и исправления

  • 🏷️ Чистый и стандартизированный вывод версии ядра:
    • Команда tachyon-core version и флаги -v/--version теперь строго выводят tachyon-core 0.0.3 (без префикса sing-box и без избыточных постфиксов .0).
    • Полная согласованность с регулярными выражениями парсера версий и статуса Tachyon (core/common.uc и components/versions.uc).
  • 🎯 Исправление матчинга составных headless правил в RuleSet:
    • В PlainRule::matches и RuleSetIndex устранена критическая ошибка сопоставления составных правил: поля правил (такие как network: udp и port_range) ошибочно оценивались независимо через OR, из-за чего правило Discord Voice для UDP портов 50000-65535 матчило абсолютно все DNS-запросы роутера и выдавало FakeIP 198.18.0.x на абсолютно все домены (включая yandex.ru, vk.com и т.д.).
    • Введена строгая семантика AND с флагами присутствия полей и вынесением составных правил в отдельный fallback-список индекса.
  • 🏷️ Маркировка сокетов прокси-соединений (routing_mark / default_mark):
    • Реализовано применение настроек apply_dial_defaults на всех типах прокси-исходящих (VLESS, Trojan, Shadowsocks, VMess, ShadowTLS, Naive, Snell).
    • Исходящие соединения до удалённых серверов теперь маркируются меткой 0x08000000, исключая зацикливание пакетов во входящую цепочку TachyonTable (TProxy Mangle в nftables).
  • 🔄 Бесшовный in-place reload по сигналу SIGHUP (Zero Downtime):
    • В рантайм core_runtime добавлена поддержка run_reloadable с перехватом системного сигнала SignalKind::hangup().
    • При вызове kill -HUP $pid (отправляемом Tachyon при DNS failover и применении новых параметров) ядро заново перечитывает конфигурационный файл, штатно освобождает сокеты и запускает новый инстанс с тем же PID без аварийного завершения процесса (код 129).
  • 🛠️ Стабильность линковщика для MIPS и MIPSEL (musl softfloat & ramips):
    • Для целевых платформ mips-unknown-linux-musl и mipsel-unknown-linux-musl встроена библиотека раскрутки стека со стабами _dl_find_object, исключающая ошибки линковки на старых ядрах и тулчейнах.
  • ⚡ Оптимизация CI-пайплайна сборки всех платформ:
    • Разделены триггеры автоматической сборки: полный билд матрицы из 11 платформ запускается строго при публикации релизного тега (release.yml), исключая дублирование параллельных сборок и снижая нагрузку на раннеры Actions.

📦 Контрольные суммы бинарников (SHA-256)

657e580576534363c1d20d23abea31883e109faf8546b713c14937864e93bc35  ./tachyon-core-aarch64-v0.0.3
cd7579c9962fef3b37ab84875b11ed84938dcf9f518b9a7af72c7bb096acd296  ./tachyon-core-armv6-v0.0.3
53a4d7ec6d14f056f44889d1705747203ae4a92afca1882d3da405ce1893535b  ./tachyon-core-armv7-v0.0.3
1a32c2780d3f50a77ae883a5cdeeee8b1e08cc387b3ebc94a320a164d4c0278b  ./tachyon-core-darwin-amd64-v0.0.3
32ec7e912b3ac47486e6b237ebc5c58add6eb4f89926f2966796cd95ed7efea1  ./tachyon-core-darwin-arm64-v0.0.3
c47a6f3dbe26f3c73df8248f23c85fcfcab866ef75d2e56d2850f8370444cbd5  ./tachyon-core-linux-amd64-v0.0.3
0e0c68f4cf54ccd05b3ce6f27255bb418a1736fd7e6caef810c824bc48659c31  ./tachyon-core-mips-v0.0.3
1bd2a8812db5d7782ebeb012fb7a5810629102ee2695c2b666fd4f4b3dfb397e  ./tachyon-core-mipsel-v0.0.3
cee41d76634b13592f5a0bcc3bddfe91f8da56ce5c31e400a0fc2c94ce0e7692  ./tachyon-core-riscv64-v0.0.3
f6e517749f04875b9fc08755f3818901036c300c4407da3ae8c2abfe67bdf50d *./tachyon-core.exe
84785165b6941619492885f5f0c1a6e04609733125490fdafd67847d6415c48c  ./tachyon-core-x86_64-v0.0.3

Commit: e4237ed

Full Changelog: v0.0.2...v0.0.3