Jami 在俄罗斯:P2P 消息应用的网络难题与解决方案
去中心化消息应用 Jami 在俄罗斯网络中遭遇重大障碍,主要由于 CGNAT 和封锁,导致直接点对点连接不可靠。尽管技术潜力巨大,但当前的 ICE 协议配置和对 TURN 服务器的依赖,无法应对当今的网络限制。本文剖析工程问题,并提出彻底改造架构的具体步骤,实现稳如磐石的性能。
俄罗斯网络中的 P2P 连接难题
Jami 的主要不稳定性源于俄罗斯 ISP 的互联网基础设施处理方式。运营商级 NAT(CGNAT)在移动运营商中普遍存在,剥夺用户公网 IP,导致无法接收传入连接。对称 NAT 尤其棘手,标准 STUN 和 UDP 打洞技巧往往失效。
主要网络障碍:
- 移动用户无公网 IP。
- ICE 协议在 CGNAT 后难以工作。
- TURN 服务器如 turn.jami.net 在俄罗斯无法访问。
- 缺乏 DTLS/TLS 支持的 DPI 系统轻松识别 TURN 流量。
当前架构的缺陷
Jami 依赖中心化组件,与其去中心化理念相悖。加入网络所需的 DHT 引导节点易被封锁,TURN 服务器则是单点故障。TURN 路由流量增加延迟,且极易被封锁——在俄罗斯互联网监管下尤为致命。
中继方式对比:
- 当前 TURN:中心化服务器,易封锁,延迟飙升。
- P2P 中继:公网 IP 用户节点分担负载,分布式。
- 网状网络:通过多节点动态路由,韧性极强。
技术优化方案:现代化 Jami
克服这些网络限制,需要全面升级协议和架构。首要任务:摒弃 TURN 依赖,提升直接连接成功率。
第一级:强化 P2P 连接
- 优先 IPv6:在 ICE 候选中强制使用 IPv6 地址绕过 NAT。俄罗斯移动网络已广泛部署 IPv6,可为高达 70% 用户实现直连。
- 激进 UPnP:增加端口映射尝试,将保活间隔缩短至 15 秒,维持 NAT 会话活跃。
- CGNAT 优化 ICE:添加端口推断,预测对称 NAT 行为,建立直连。
第二级:新一代传输协议
转向 QUIC(基于 TCP/UDP):
- 内置保活和连接迁移,实现更顺畅 NAT 穿越。
- 无头部阻塞的多路复用。
- 集成 TLS 1.3 加密,抵抗 DPI。
- Wi-Fi 与移动数据无缝切换。
第三级:通过中继对等节点实现 P2P 中继
部署公网 IP 节点为 CGNAT 用户中继的系统:
- 新 ICE 候选中继类型:peer_relay。
- 在 DHT 中发布中继可用性。
- 即使通过中继,也保持端到端加密。
- 自组织网络:公网 IP 用户越多,系统越坚固。
第四级:超级强化 DHT 使用
集成 libtorrent,实现完全去中心化的文本和文件传输:
- DHT 用于数据分发,而非仅信令。
- 非媒体流量无需中心化服务器。
- 显著提升网络韧性。
第五级:网状路由
长期目标:构建覆盖网状网络,支持动态路由:
- 如 BATMAN 或 OLSR 协议。
- 通过多节点自动最优路径。
- 每新增用户,网络越强大。
第六级:彻底移除 TURN 代码
前几级落实后,完全剔除 TURN:
- 从 ICE 中删除中继候选。
- UI 中移除 TURN 设置。
- 构建无 TURN 的 PJSIP,缩小攻击面。
优化:使用协调器打洞
为减少中继流量,利用公网 IP 节点仅作为初始握手协调器。打洞成功后,中继退出,转为纯 P2P。这种方式兼顾中继可靠性和直连效率。
关键要点
- 俄罗斯移动网络 CGNAT 是 Jami P2P 的最大杀手。
- TURN 依赖带来漏洞和延迟。
- IPv6 和 QUIC 可解决多数 NAT 和封锁问题。
- 通过对等节点 P2P 中继,提供去中心化 TURN 替代。
- 彻底移除 TURN 应是项目终极目标。
— Editorial Team
暂无评论。