(由 Wayback Machine 提供 http://www.archive.org/)
快速回顾
Present: eco\_, i2p, jrandom, mihi, Ophite1, polo, rsk
会议记录
<jrandom> 0) 嗨 <jrandom> 1) router 状态 <jrandom> 2) i2ptunnel <jrandom> 3) 即时通讯 <jrandom> 4) 0.3 计划 <jrandom> 5) 时间同步 <jrandom> 6) ??? <jrandom> 你好 mihi,polo <polo> 你好! <mihi> 嗨 jrandom <jrandom> 0) 嗨 <jrandom> :) <rsk> 嗨 <i2p> <duck> 嗨 <jrandom> 1) router 状态 <jrandom> 0.2.3.3 已经发布,看起来运行正常 <jrandom> 当然,还有很多事要做 <jrandom> 但这应该是 0.2 系列的最后一个版本 <jrandom> 0.3 将加入 peer profiling(对等体画像),让 router 能避开糟糕的 router <jrandom> (而 0.3.1 会重做传输层) <jrandom> hola Ophite1 <Ophite1> Heya. <rsk> 所以 0.3 会有更多开销吗? <jrandom> 也对也不对 <jrandom> 会有对等体测试,但会更有针对性 <rsk> 路径选择会带来速度提升吗? <jrandom> 会的 <jrandom> 我们已有那些“活跃度”计算器,还会加入新的时延和吞吐量计算器 <jrandom> 另外,大家还能针对特定对等体调整自己的偏好 <jrandom> 例如,如果你想优先选择对等体 X 而不是对等体 Y,你就可以给它一个加权加分, 加一些随机分值 <mihi> 会不会有干净的关闭?*g* <jrandom> 这其实是个好问题,mihi <jrandom> i2p 已经到了需要一个管理界面的阶段。 <jrandom> 目前阻塞它运行时间最长的 Job 是 GenerateStatusConsoleJob <jrandom> 现在可能要耗时 4–6 秒 <jrandom> (把其他一切都卡住) <jrandom> 它需要改成异步、按需执行。 <jrandom> 但我不想写一个 web 监听器 / 之类的。 <jrandom> 也许反过来——写个 servlet 来启动 router 并与之通信 <mihi> 你不需要一个完整的 web 服务器。看到 GET 就返回你的数据即可。 <jrandom> 对 <jrandom> 你说得对,这些也应该放进 0.3。 <mihi> 看到其他东西(比如 SHUTDOWN)就按你喜欢的做。当然只允许来自 localhost ;) <jrandom> 哎呀别这样 <mihi> 那样别人就能做个漂亮的管理程序 <jrandom> 对 <mihi> 你不是有一些基于文件的触发器吗?有没有在什么地方文档化? >>> mihi [~mihi@ags9-d9ba536a.pool.mediaWays.net] requested PING 1072820995 from jrandom <jrandom> 那些在 IDN 里,不是在 router 本身里 <jrandom> 不过那可能是个不错的方向 <jrandom> 那是个非常简单的系统 <jrandom> 好主意,就这么办 <jrandom> (而且我可以直接复用那段代码 :) <i2p> <duck> 这个神奇的文件玩意儿开始有点像 plan9 了 <jrandom> lol <mihi> 但是文件触发器需要轮询 <jrandom> 对,mihi,每 30 秒读一下目录也没那么糟 <mihi> 但一个 ServerSocket#accept 更省。 <mihi> 因为它不会占用时间。(前提是操作系统给力) <mihi> 好吧,文件触发器聊胜于无,没错。 <jrandom> server socket 还能实现远程管理 <jrandom> (在合适的时候) <jrandom> 不知道。 <jrandom> 需要再琢磨。 <jrandom> (或者谁想上来动手写写代码也行... :) <mihi> 而且 server socket 还可以提供 routerConsole。 <jrandom> 对 <jrandom> 好的,2) i2ptunnel <jrandom> :) <jrandom> i2ptunnel 依然很强,我们看起来想加一个基于 socket 的 API 来控制它 <i2p> <anon> aum 的 ic2cp2pc 计划现在搁置了吗? <jrandom> 是的,ci2cp 已经胎死腹中,改为用基于 socket 的 API 来控制 I2PTunnel <jrandom> 我想接下来几天我能把那个 API 加上,这样他就可以开始实现了 <mihi> 就用一个 socket,做个 in.readLine() 然后把那一行喂给 runCommand() ;) <rsk> 这个 API 能给 i2p 带来什么? <jrandom> 差不多就是这样,mihi(只不过它会把结果格式化,并以标准方式发回去) <mihi> 配上一个合适的“logger”把结果发回去。 <mihi> s/commands/results/ <jrandom> rsk> 它让应用开发者可以在 i2p 之上构建客户端/服务端 socket,而不用处理 I2CP 的 加密需求 <jrandom> 对,对 <jrandom> i2ptunnel 在存在大量 i2ptunnel 的场景下确实有开销 <jrandom> 与 JVM 无关 <jrandom> i2ptunnel 客户端会为每个联系到的客户端创建一个新的 destination(目的地),而且随着本地 destination 数量的增长, router 的性能会显著变差。 <rsk> 啊 <jrandom> 这是因为网络的匿名性需求与我们的加密工作方式绑定在一起 <jrandom> 对于只想向某个对等体开一两个 tunnel 的应用,这个新 API 会非常好用 <jrandom> 但对需要和很多其他对等体通信的应用,I2CP 才是正道。 <jrandom> (因为那是一个单一的目的地,由 i2cp 复用) <jrandom> 某种程度上,这就像老生常谈的 TCP 与 UDP 的权衡 <jrandom> mihi> 你有什么想法,或者关于 i2ptunnel 未来的点子吗? <rsk> 在 i2p 之上的 IP,或者 VPN 那些东西,进展如何? <mihi> jrandom:让人先写个好用的 streaming API,然后让 i2ptunnel 使用它。 <mihi> 命名服务器也一样。 <mihi> 如果没人做上面的事,也许就加些序列号。 <mihi> 这将意味着不兼容的变更。 <jrandom> 不兼容的变更不算坏事,我们还在早期开发阶段 <jrandom> (如果我们还能把 ID 的大小也增加到每端两或四个字节?) <mihi> 无论如何,streaming API 都会是不兼容的变更。而且如果 i2p 工作良好,我们不需要序列 号。 <jrandom> rsk> 暂停,直到有人有时间来推进? ≡ rsk/#i2p 认为不兼容的变更是最棒的那种 <jrandom> 对,mihi <mihi> ID 目前应该是 3 字节,为什么要“增加”到 2 字节? <jrandom> mihi> 实际上,我想逐步废弃 mode=GUARANTEED,把那部分做进 streaming API 里 ≡ mihi/#i2p 也这么想 <jrandom> 让 i2p 保持为 IP,而不是 TCP 或 UDP <jrandom> 该死,我真希望一天再多 14 个小时。 <mihi> 只有 14 个?;) <jrandom> ;) <jrandom> 3 字节的 id 不是由连接双方各自派生的吗?或者是我搞混了 <mihi> 每一端都有一个 3 字节的 ID,不过一次只需发送其中一个。 <jrandom> 也许我会实现 streaming API,移除 GUARANTEED,然后再加上那个 socket 控制器。 <jrandom> 啊,好 <mihi> 参见 /apps/i2p/i2ptunnel/java/src/protocol.txt <jrandom> 对,对 <mihi> 顺便问一句,谁把那个文件放到*那里*的? ≡ jrandom 指责 eco ;) <jrandom> 等等,不对,是你放那儿的 <jrandom> 不是你吗? <jrandom> 哦等等,不,是我导进去的 ≡ jrandom 责怪自己蠢。 <jrandom> (啦啦啦) <jrandom> 见鬼。好吧,嗯,做 streaming API 和 socket 控制器会让我能一边琢磨 对等体测试/画像/选择的方案 <jrandom> 我会在几天内发出来征求意见 <jrandom> (还能让我把注意力从 router 上挪开。variety++) <jrandom> mihi> 关于 i2ptunnel 还有别的吗? <mihi> 据我所知没有 <jrandom> 酷 <jrandom> (再次感谢你抽时间参与这些讨论,我知道你忙着 fiw 和其他) <jrandom> 好,thecrypto 不在,不过他的 IM 应用在推进。 <jrandom> (那是议程第 3 项) <jrandom> 4) 0.3 计划 <jrandom> 0.3.0 ~= peer profiling 的东西,现在还会包含用于 i2ptunnel 的 streaming API 和那个 socket 控制器 <jrandom> 不过,你也能猜到,它不会在 1 月 1 日发布 <jrandom> 1 月 15 日有可能,但希望不大。我们看看进展如何。 <jrandom> 0.3.1 不是整整一个月的工作,所以也许不需要推迟。 <jrandom> 除此之外,路线图基本都在轨道上,也能代表我们的前进方向 <jrandom> 5) 时间同步 <jrandom> 新的常见问题发布在 http://wiki.invisiblenet.net/iip-wiki?I2PTiming <jrandom> mihi,你对那里的第四个选项(在 i2p 内部自建时间同步)有个建议? <jrandom> 嗨 brawl <mihi> 是的。 ∙φ∙ brawl 现在改名为 eco_ <eco_> 嗨,各位 <jrandom> 哦嗨,eco <mihi> 你应该连接 3 个随机节点,并记住平均时间与本地时间的差值。 <jrandom> 我们刚刚讨论了 streaming API / tunnel API <mihi> 然后改造你自己的 getTimeMillis 来校正。 <Ophite1> mihi:不,你不该这么做。 <jrandom> mihi> 那么如果攻击者创建 1000 个时间错误的节点,所有人都会遭殃 <jrandom> (因为平均值会在中间被随机拉偏) <mihi> 如果攻击者创建 1000 个节点,反正所有人都会遭殃吧……? <rsk> 那不会自我校正吗? <Ophite1> mihi:好吧,3 个。 <jrandom> 不,我们应该能处理这种情况,mihi。 <mihi> 好吧,那就只有当标准差低于 1 秒左右时才采用平均值。 <rsk> 如果大家的时间都一样就没问题,即使那个时间是错的,对吧? <jrandom> rsk> 如果这 1000 个节点彼此同步是没问题的,但如果它们都是随机的呢 <mihi> 只使用彼此足够接近的时间。不行的话,换 3 个新节点。 <jrandom> mihi> 对,我们可以实现 NTP(基本上就是你说的,使用一系列候选平均值 迭代逼近正确时间 <mihi> 但我们不必像 ntp 那样关心所有东西(比如 ping 时延)。 <Ophite1> 如果我们不这么做,mihi,时间会慢慢往回漂。 ≡ mihi/#i2p 觉得这总比让用户各自设置时间要好。 <jrandom> 所以任何随机挑了 3 个偏移节点的人都会被送进他们自己的私有网络? <jrandom> 那第三个选项呢—— <jrandom> i2p 有一个组件通过 NTP 或 SNTP 向真实的 NTP 服务器校时 <mihi> 如果你的 netDB 里只有这些偏移的节点,你也会在那个私有网里…… <jrandom> 而不是重新造轮子 <Ophite1> 虽然我部分赞同这个…… <Ophite1> NTP 没有签名,容易遭受中间人攻击。 <Ophite1> 或者比如对 time.nist.gov 做 DNS 缓存投毒 <jrandom> 没错,Ophite1,不过有 20 万多个 SNTP 或 NTP 主机,要攻击的集合很大。 <jrandom> 我们绝对不会和 time.nist.gov 同步。 <Ophite1> i2p 去连 NSA 的时间服务器可能会引来些关注,对吧? :) <jrandom> 而且如果攻击者针对 time.nist.gov,下场是所有人都会受影响 <jrandom> 呵 <mihi> 那就两者结合。问一个“真正的” NTP 服务器和你的邻居。如果两者一致,就可以。 <jrandom> 那就需要/更多/代码了 ;) <jrandom> 不过,是个合理的方案。 <Ophite1> 有意思。如果它们不一致呢? <Ophite1> 再选一个 NTP 服务器? <jrandom> 拒绝那个对等体。 <mihi> 再试别的 NTP 服务器和另一个对等体。 <mihi> 直到你得到匹配。然后拒绝之前所有的对等体。 ≡ mihi/#i2p 打字比 jrandom 慢 :( <Ophite1> 匹配在某个阈值内,比如 1 秒? <jrandom> 1 秒可以。 <jrandom> 接受与我们相差不超过 30 秒左右的对等体(应对延迟) <Ophite1> 在非常拥塞的连接上 1 秒合适吗? <jrandom> 同步用 1 秒,通信用 30 秒。 <Ophite1> 我见过 DSL 的延迟在被“折腾”时到 5 秒。 <jrandom> 用 TCP 还是 UDP? <Ophite1> 不过那样的话,那台主机可能也不是你想用来对时的 ;) <jrandom> 对 <Ophite1> UDP。 <jrandom> 嗯 ‘k <Ophite1> 你会以为它会被丢包呢 :) <i2p> <duck> 我觉得问题更多在于让用户知道出问题了 <jrandom> duck> 的确如此。 <i2p> <duck> 只有翻很长的日志,他们才会发现自己的时钟不对(如果找得到的话) <Ophite1> 也许吧。某种程度上。 <i2p> <duck> 或者端口已经被占用了 <jrandom> 有个管理界面就好了。 <i2p> <duck> 大家都使用 NTP 并连接到本地 stratum 2 服务器会更好 CTCP Cloaking is now [On] <jrandom> 也许我们会在 1.0 之前先发一个 0.4,做一堆清理和面向终端用户的东西? <jrandom> 对(stratum) <i2p> <duck> 只有 Windows 客户端不太可能有这个 <i2p> <duck> 但它们也不太可能稳定 <jrandom> Windows 有 NTP <i2p> <duck> 那谁在乎呢 <Ophite1> duck:Windows XP 和 Windows Server 2003 内置 NTP。 <jrandom> 比在 Unix 上简单多了 <Ophite1> 默认同步到 time.windows.com,如果我记得没错。 <jrandom> 还有下拉选项可选其它的 <Ophite1> 那是 Windows 产品激活的重要部分。 <Ophite1> 不知道时间就没法过期 :) <jrandom> 呵 <mihi> 我所在的大学没这个选项……所有时钟都偏了 1 到 5 小时。不过我可能也不被允许在那里运行 i2p …… <Ophite1> mihi:i2p 在这种环境里尤其应该努力能工作…… <jrandom> mihi> 太棒了!你可以帮忙测试隐蔽运行(hidden operation) :) <jrandom> 插一句,今年夏天我要出去旅行一阵 <jrandom> 我可能会离线,没带笔记本。 <i2p> <duck> 顺带一想:ntp.duck.i2p :) <Ophite1> 这么想:Brianna Kazaa 下载了一个很酷的新匿名文件分享客户端,她最好的朋友告诉她这东西真酷, 还能让你偷偷聊天之类。我们是想告诉她必须把时钟设置在 30 秒以内(她怎么做到?)?还是希望它直接就能用? <jrandom> 但我会确保只用公共终端我也能上 I2P。CTCP Cloaking is now [Off] <jrandom> 这还用说吗,Ophite1。直接能用(给极客准备文档) <jrandom> duck> 引导(bootstrap);) <jrandom> 而且 i2p /不/需要 root。 <Ophite1> 我就是这个意思。 <Ophite1> jrandom:你会在一个你没有 root 权限的机器上跑一个 router 吗? <jrandom> 所以,介于选项 3 和 4 之间的混合方案 <Ophite1> 选项 3.5 听起来挺酷 ;) <jrandom> Ophite1> 我会跑上一百个 :) <mihi> 选项 3.1415926... <jrandom> (然后换到下一个机房,再跑一百个) <Ophite1> 哦。派。真好吃。;) <Ophite1> jrandom:我说的是你没有 root 权限。菜鸟。:) <jrandom> lol <jrandom> 所以我们大致就是这个方向。 <jrandom> 在时间这套东西实现之前,大家应该用选项 1 或 2。 <jrandom> 关于选项 2,如果有人能写点文档,我会很感激 <Ophite1> 这对现在来说可以接受,因为我们还没准备好面对 Brianna Kazaa 等人 ;) <mihi> 仅供记录:我不会测试“隐蔽运行”。我的大学账号已经被停过一次了,我不想再被封 一次…… <Ophite1> mihi:你是我们能想象到的最佳测试对象。 <jrandom> Ophite1 > 不用于测试。 <jrandom> 好,mihi,我们会找到办法的,等它准备好了你就能用了。 <Ophite1> 好吧,也许不测试。有些大学足够较真,会把你踢出去而不是只封你。 <Ophite1> 我认识一个在美国最反文件分享、最亲 RIAA 的大学里的人。他运营着一个 2 Gbit 的 dumpsite。 <jrandom> lol 不错 <Ophite1> 我明白,敢这么干的人非常非常少。 <jrandom> 好,时间同步就到这里。 <jrandom> eco_> 嗨。有什么 BT 的东西想聊吗? {或者留到下周} <Ophite1> 但请记住,将来互联网的大多数可能会变成大学/企业网络。 i2p 可能会被封禁。大型 ISP 很可能会把 i2p 视为滥用。无论如何 i2p 也必须能工作。 <Ophite1> 我在这方面有些有趣的想法,改天会提出来。 <jrandom> 好嘞 <Ophite1> (transport) <rsk> i2p 被大型 ISP 视为滥用,看看你的合同 <Ophite1> rsk:运行一个分布式代理缓存? <rsk> 运行任何“服务器” <Ophite1> rsk:除非它转发到 SMTP 或 WWW。 <jrandom> 运行任何形式的服务 <jrandom> 对 <Ophite1> rsk:嘿嘿,我对此有个解决办法 ;) <eco_> jrandom:可以简要更新一下 <jrandom> 麦克风交给你 :) <eco_> 我在移植基于 Java 的 BitTorrent 客户端 snark(www.klomp.org/snark),以便熟悉 i2p <eco_> 第一版移植跑在 i2ptunnel 之上,直接调用 Java 类 <eco_> 当前状态:和 2 个对等体时能工作,超过 2 个就乱了,tunnel 没有被清理,所以重启 很痛苦 <eco_> 预计完成时间:这个周末 ≡ eco_/#i2p 意识到这可能会被认为 > 2003 <jrandom> w00t! ≡ jrandom 入侵 time.nist.gov <eco_> 一个“真正的”移植大概会减少 tunnel 的开销,但那是下一步 <jrandom> 酷 ≡ eco_/#i2p 把话筒交还给主持人 jrandom <jrandom> 好,我想就这些 <jrandom> 6) ??? <jrandom> 还有别的吗? ≡ eco_/#i2p 想要对 jrandom 及团队到目前为止出色的工作表示感谢 <eco_> 以及睡眠对智人还是有点用的,尽管 jrandom 似乎证明了并非如此 <jrandom> ;) <jrandom> 在 i2p 足够可靠之前,大家觉得在这里开会而不是在 iip 上如何? <jrandom> 我个人已经厌倦了每周会议都被撕得支离破碎。 <i2p> <anon> lilo 真糟! <eco_> 我们到这里来,可能会把一些人排除在外 <jrandom> 是的,我知道。 <jrandom> 如果我们能搞一个 iip<-->这里 的桥接 <i2p> <duck> IIP 每天都在把人拒之门外 <jrandom> 那就好了。 <jrandom> 对。 <jrandom> 不幸的是,iip 对一个需要可靠性的开发社区来说不可用。 <i2p> <duck> http://banaan.zeelandnet.nl/open/changate.html <i2p> <duck> 那是 eyeKon 等所基于的代码 <jrandom> 虽然我也喜欢自己埋头写代码,但你们都能提出很棒的想法并做出很棒的东西,这些都 至关重要 ≡ rsk/#i2p 正在写一个 Windows 更新脚本 <i2p> <duck> 理论上它可以连到 3 个服务器,并镜像它们每一个 <jrandom> 好主意,duck,也许我会试着在 i2p.dnsalias.net 上跑一个 <jrandom> 来自地狱的 ping 洪流 ;) <eco_> duck.i2p 上的 irc 今天挺不错,胜过 iip <jrandom> 同意 <jrandom> 不过也把我踢下线了几次。 <jrandom> 也许下周会更可靠 <eco_> 这就看你了 :-) <jrandom> 可靠性大概要到 0.3 才会提升,那大约要 2 周 <jrandom> (1 周做 tunnel/streaming 的东西,1 周做 peer profiling/测试) <jrandom> 然后会有那些改动带来的各种 bug :) <jrandom> 不过我得说,昨晚我能从 aum 流式播放音频让我挺兴奋的 <jrandom> 而 ardvark 能不缓冲地串流了 42 分钟! <jrandom> 所以也许我们可以足够可靠 <jrandom> (我本地的 router 只有 phttp,这可能是一个小原因) <jrandom> 好,还有别的吗? <i2p> <duck> 想不到别的了 ≡ eco_/#i2p 也没有 ≡ jrandom 收尾中…… ≡ jrandom *baf* 宣布会议结束