[Feature] UDP 转发(udp_session / udp_data / 会话超时)
I maintainer di solito rispondono entro 13 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- nodejs, python, rust, typescript
- Ambito
- networking
Direzione di ricerca
Start with issue #3's Protocol v2 binary data-plane design and the existing WS_TUNNEL_TCP_LISTEN handling. Trace the server session lifecycle and the TypeScript dgram and Rust tokio::net::UdpSocket client paths before deciding how the three clients fit. Done means the DNS, timeout cleanup, conformance, and WS-disconnect acceptance checks pass without leaked resources.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
背景
当前只支持 TCP。frp / rathole / bore 均支持 UDP(DNS、游戏、QUIC 等场景)。
设计草图
UDP 无连接,但需要 NAT 会话语义。建议:
- 新增消息(与 TCP 三件套平行):
udp_open { session_id, conn_id }(服务端 → 客户端):外部 UDP 首包到达时,服务端为该 (外部地址, 端口) 分配会话并通知客户端建 socketudp_data { session_id, data(base64) }(双向):数据报传递udp_close { session_id, reason? }(双向):会话结束- 复用现有 WS 会话,session_id 由服务端分配
- 服务端:新增 UDP 监听器(每端口绑一条隧道,复用 0.5.0 的 WS_TUNNEL_TCP_LISTEN 格式,如
"9080:dsh/udp");会话表 (endpoint → session_id),空闲超时(建议 30s 可配)后回收并下发 udp_close - 客户端:每 session 绑定一个 UdpSocket(TS: dgram / Rust: tokio::net::UdpSocket),回包按 session_id 路由
- 顺序与重复:UDP 本身不保证,不做重传;分片由 IP 层处理,单报文不超过 MTU(服务端按 1472 截断告警)
验收
- DNS 查询经隧道往返成功(A 记录)
- 会话空闲超时回收,客户端资源不泄漏
- 三客户端实现 + conformance 场景
- WS 断开时会话全量清理(与 TCP 行为一致)
依赖
建议与 Protocol v2 二进制数据面 同期实施(UDP 报文天然适合二进制帧)。
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 0
- Merge medio
- 12g 4h
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jeffkit/tunely
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
jeffkit/tunely#24 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
jeffkit/tunely#22 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
-
fix(release): 发布链 fail-open(缺 secret 时 Actions 绿但什么都没发)+ PyPI 上的 0.10.0 恰是 /forward 无鉴权的安全缺口版本Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 34/100
jeffkit/tunely#23 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
Tutte le issue di jeffkit/tunely
Issue simili
-
Performance: deprecated DeviceEntry.config_entries access blocks the event loop for tens of secondsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
tuya/tuya_cloud_ha_bridge#14 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
semantica-agi/semantica#1968 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
agent: ready area: submission priority: high type: docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
dkritarth/scopewatch#213 ·
I maintainer di solito rispondono entro 1 giorno
-
Broken link in RELEASE.mdForse già presa @Jah-yee l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
sphinx-contrib/httpdomain#143 ·
I maintainer di solito rispondono entro 1 giorno