大家好,到了每周更新时间
索引:
- New transport
- 0.4.1 status
- ???
1) 新的传输
0.4.1 版本的发布比预期花了更长的时间,但新的传输协议及其实现已经就位,包含所有计划的内容——IP 检测、低成本的连接建立,以及在连接失败时便于调试的更易用接口。这是通过彻底抛弃旧的传输协议并实现一个新的协议来完成的,尽管我们仍沿用同样的一组算法名称(2048bit DH + STS, AES256/CBC/PKCS#5)。如果你想审阅该协议,可以在文档中找到。新的实现也清爽得多,因为旧版本只是过去一年里累积的一堆更新的集合。
总之,新 IP 检测代码里有些值得一提的内容。最重要的是,它完全是可选的——如果你在配置页面(或在 router.config 本身)中指定了一个 IP 地址,它无论如何都会使用那个地址。然而,如果你留空,你的 router 会让它联系到的第一个对等节点告诉它自己的 IP 地址是什么,随后它会在该地址上开始监听(在把该地址添加到自己的 RouterInfo 并将其放入 netDb(网络数据库)之后)。不过,这也不完全正确——如果你没有显式设置 IP 地址,那么只要该对等节点没有连接,它就会信任任何人来告知它可以被访问的 IP 地址。所以,如果你的互联网连接重启了,可能给了你一个新的 DHCP 地址,你的 router 将信任它能够首先联系到的那个对等节点。
是的,这意味着不再需要使用动态 DNS(dyndns)。当然,您仍然可以继续使用它,但没有必要。
不过,这还不能满足你所有的需求——如果你处在 NAT 或防火墙之后,知道你的外部 IP 地址也只是完成了一半——你仍然需要打开入站端口。不过,这总算是个开始。
(顺便提一下,对于运行自己私有 I2P 网络或模拟器的用户,有一对新的标志位需要设置 i2np.tcp.allowLocal 和 i2np.tcp.tagFile)
2) 0.4.1 status
除了 0.4.1 路线图上的项目之外,我还想再加入一些内容——既包括缺陷修复,也包括网络监控方面的更新。目前我正在定位一些过度的内存抖动问题,也想验证关于网络上偶发可靠性问题的若干假设,不过我们很快就能发布该版本,或许在周四。遗憾的是,它不会向后兼容,所以过程会有点颠簸,但有了新的升级流程以及更具容错性的传输实现,情况不至于像之前那些不向后兼容的更新那么糟。
3) ???
是的,过去两周我们的更新都比较简短,那是因为我们正埋头在一线专注于实现,而不是各种更高层的设计。我本可以跟大家讲讲性能分析数据,或者为新的传输机制准备的 1 万条连接标签缓存,但这些并不那么有意思。不过大家可能还有其他要讨论的事情,今晚顺道来参加会议,尽情畅所欲言吧。
=jr