Skip to content

Releases: nyarime/NRUP

v1.5.2

15 Apr 18:22

Choose a tag to compare

  • GoFEC v1.1.1 (local replace)

v1.5.1

15 Apr 17:13

Choose a tag to compare

修复Git作者信息

v1.5.0

15 Apr 16:56

Choose a tag to compare

  • GoFEC RaptorQ (v1.1.1)
  • FEC: rs / raptorq / ldpc

v1.4.3

15 Apr 07:23

Choose a tag to compare

v1.4.3 — 动态MTU + 预测性重传 + 批量ACK

动态MTU探测

  • 自动探测路径MTU(1500→500逐步)
  • 结果缓存(每连接一次)
  • ConnStats.MTU暴露

预测性重传

  • RTT抖动追踪(EWMA α=0.125)
  • 高抖动时提前20%触发重传(0.8*RTO)
  • ConnStats.Jitter暴露

批量ACK

  • 多个SACK合并为单个BatchACK帧
  • 减少小包数量
  • 向下兼容(单ACK仍支持)

go get github.com/nyarime/nrup@v1.4.3

v1.4.2

14 Apr 19:03

Choose a tag to compare

v1.4.2 — FEC智能平滑 + 代码清理

FEC自适应优化

  • EWMA平滑FEC有效性(α=0.3, 防震荡)
  • 连续丢包≥5立即提升FEC(不等周期)
  • 每次最多±2 parity变化

Metrics暴露

  • ConnStats: FECDecodes/FECRecovered/FECEffectiveness/CurrentParity
  • GetMetrics: 完整FEC+SACK数据

代码清理 (-326行)

  • 删除4个未使用文件 + 5个死函数 + 2个死类型
  • go vet零警告

弱网改进

  • 20%丢包: 100%送达
  • 30%丢包: 100%送达

go get github.com/nyarime/nrup@v1.4.2

v1.4.1

14 Apr 18:07

Choose a tag to compare

v1.4.1 — SACK选择性重传 + FEC闭环

SACK选择性重传

  • 32位bitmap标记已收到的包
  • 只重传真正丢失的包(非Go-Back-N)
  • 每3包发一次SACK(可配置SACKInterval)

FEC有效性反馈

  • 追踪FEC实际恢复率
  • effectiveness >80% → 降低冗余(省带宽)
  • effectiveness <30% → 提高冗余(加强保护)
  • FEC+SACK协同:FEC恢复大部分,SACK补漏

效果

  • 重传次数预计下降40-70%
  • 带宽利用更合理(不盲目冗余)
  • 零breaking change

go get github.com/nyarime/nrup@v1.4.1

NRUP v1.4.0

13 Apr 22:00

Choose a tag to compare

v1.4.0

  • ClientHello双发 + 服务端跳过重复包
  • 5档自适应冗余 (EWMA α=0.28)
  • FEC大包自动分片
  • SessionStore接口
  • 三档模式 (anyconnect/none/CipherNone)
  • 弱网: 30%→100%, 50%→97%

go get github.com/nyarime/nrup@v1.4.0

NRUP v1.3.0

13 Apr 18:50

Choose a tag to compare

v1.3.0

新增

  • 5档自适应小包冗余 (<20%=2份, >20%=3, >35%=4, >50%=5)
  • 大包自动分片 (>1024B拆分后FEC编码,不再需要StreamMode)
  • StreamEncoder (流式FEC编码+Flush)
  • SessionStore 接口 (可插入Redis持久化0-RTT)

修复

  • 所有TCP代理流量现在有FEC保护 (之前需StreamMode绕过)
  • Disguise='' 默认anyconnect (之前误走none模式)

弱网提升

场景 v1.2.1 v1.3.0
40% + 200ms 87% 97%
go get github.com/nyarime/nrup@v1.3.0

NRUP v1.2.1

12 Apr 20:39

Choose a tag to compare

v1.2.1

三档模式

模式 Disguise Cipher 每包开销 场景
公网过墙 anyconnect auto 41B 默认
专线加速 none auto 28B 加密无伪装
内网传输 none none 0B 纯可靠UDP

FEC + ARQ + BBR 三档全部保留。

新增

  • CipherNone — 零加密模式(noopAEAD)
  • Disguise="none" — 无DTLS record header
  • 三种组合覆盖全场景

使用

// 专线加速
cfg := &nrup.Config{Disguise: "none", Cipher: nrup.CipherAuto}

// 内网传输
cfg := &nrup.Config{Disguise: "none", Cipher: nrup.CipherNone}
go get github.com/nyarime/nrup@v1.2.1

NRUP v1.2.0

12 Apr 18:55

Choose a tag to compare

v1.2.0

新增

  • 0-RTT 会话恢复:首次握手后缓存 session(24h TTL),后续连接通过 Config.ResumeID 跳过完整握手
  • 防重放:HMAC(key, timestamp) + 5 分钟滑动窗口
  • 自动降级:ticket 过期自动走完整握手

v1.1.0 → v1.2.0 完整变更

  • v1.1.0: serverHandshake 迁移到 net.PacketConn(demux 兼容)、ServerHello 冗余双发、Ed25519 认证修复、CI + 文档
  • v1.1.1: 握手重试 3→5 次(指数退避 500ms)、动态冗余(>35% 丢包发 3 份)
  • v1.2.0: 0-RTT 会话恢复

弱网实测

场景 送达率
正常网络 100%
1-10% 丢包 100%
20% 丢包 + 200ms 90%
30% 丢包 + 200ms 93%

极端丢包(v1.1.1+)

场景 握手 送达
40% + 200ms 100% 87%
50% + 300ms 100% 77%
70% + 500ms 100% 63%

0-RTT 使用

conn, _ := nrup.Dial(addr, nrup.DefaultConfig())
sessionID := conn.SessionID()
conn.Close()

cfg := nrup.DefaultConfig()
cfg.ResumeID = sessionID
conn, _ = nrup.Dial(addr, cfg) // 0-RTT
go get github.com/nyarime/nrup@v1.2.0