快速回顾

出席: aum, deer, jrandom, mihi

会议记录

13:12 < jrandom> 议程: 13:12 < jrandom> 0) 嗨 13:12 < jrandom> 1) 管理杂务 13:13 < jrandom> 2) 0.3 进度 13:13 < jrandom> 3) peer(对等节点)画像/选择 13:13 < jrandom> 4) Web 架构 13:13 < jrandom> 5) ??? 13:13 < jrandom> 0) 嗨 13:13 * jrandom 向大家挥手 13:14 < deer> * jrandom_ 从 i2p 挥手 13:14 < deer> * wilde 击个掌 13:15 < deer> <ughabugha> 嗨! 13:15 < deer> * duck 正在阅读 13:15 < deer> <human> yo! 13:16 < jrandom> w0rd,抱歉把那些进度说明挂出来晚了 (http://i2p.net/pipermail/i2p/2004-March/000165.html) 13:18 < jrandom> 1) 管理杂务 13:19 < jrandom> 为了简单起见,也为了避免我们上周因为各网络闹脾气遇到的麻烦,我们做了点小魔法,这次会议同时跑在三个 IRC 网络上 13:19 < deer> <duck> (amazing!) 13:19 < jrandom> iip 的 #i2p、duck/baffled 的 i2p IRC 网络的 #i2p,以及 freenode 的 #i2p 13:19 < jrandom> :) 13:19 < deer> <baffled> 谁才偏执? 13:20 < deer> <ughabugha> 好了,读完进度说明了。 13:20 < deer> <ughabugha> jrandom: 有什么要说的吗? 13:20 < deer> <ughabugha> 还是说它们? 13:21 < jrandom> 只是提一下,这样在一个网络上有问题的人可以换另一个 13:21 < deer> <mihi> 好的。我也读完进度说明了 13:21 < jrandom> 另外,drupal 机器本周末应该会恢复上线(祈祷中) 13:22 < deer> <ughabugha> 哦,好的。1) 还有什么要讨论的吗? 13:22 < deer> <ughabugha> 还是说等大家读完? 13:22 < deer> <ughabugha> jrandom: 好。:) 13:22 < jrandom> 没有,除非有人有管理杂务要提出? 13:23 < deer> * mihi 想在第 3 点做个标记 13:23 < jrandom> 旗子已插 ;) 13:23 < deer> * duck 在第 2 点 13:23 < deer> <duck> 呃,我们用什么索引? 13:24 * jrandom 觉得我们可以转到议程项目 2) 0.3 进度 13:25 < jrandom> 我为 0.3 的进度说明打了比平时多得多的字,所以这里就不重复了,有没有人有任何问题/担忧要提? 13:25 < deer> <ughabugha> 继续。 13:26 < deer> <duck> 为什么 ElGamal/AES+SessionTag 的解密经常失败? 13:26 < jrandom> duck> 因为过载和延迟。如果一个 garlic 路由的消息被延迟超过该 sessionTag 的寿命,解密就会失败 13:27 < deer> <duck> 好 13:27 < jrandom> 此外,即使 garlic 路由的消息解密没问题,但内容被延迟得太久,以至于 cloves 过期了,那也是一次无用的解密 13:28 < deer> <duck> 不知为何那句话让我以为除了过载/延迟之外还有别的原因 13:28 < deer> <tro|l> ce zi e azi? 13:28 < jrandom> 嗯,源路由的回复块在解密上也有些问题,不过它们会在 0.3.1 里消失,太深入调试不太值得 13:29 < deer> <kaji> 哇,它能用了! 13:29 < jrandom> (而且一次失败的 ElG 可能是 i2p 做的最耗 CPU 的事情) 13:30 < deer> <jrandom_> 呵呵 欢迎来到 i2p #i2p :) 13:30 < deer> * kaji 赞美 0.2.5.1 13:30 < deer> <jrandom_> 0.2.5.1?靠,快去用 0.2.5.4 :) 13:30 < jrandom> 好,0.3 进度还有别的吗? 13:31 < deer> <kaji> .. 13:31 < deer> <duck> . 13:31 < deer> <kaji> ping? 13:31 < jrandom> p0ng 13:31 < mihi> pung 13:31 < deer> <mihi_backup> pung2 13:32 < deer> <Pellinore> prawn 13:32 < jrandom> 好,转到 3) peer 画像/选择 13:32 * mihi 把旗子挪到另一个编号为 3 的议题 ;) 13:32 < jrandom> (天哪,居然没有素食海鲜替代品,真是有点好笑……) 13:32 < deer> * kaji 赞美 0.2.5.4.1 13:32 < deer> <duck> 整个 peer 画像看起来像是在耍魔法,你打算怎么调试? 13:32 < deer> <Pellinore> 有素蟹肉。 13:32 < jrandom> 啊,说得对,pellinore。 13:32 < deer> <wilde> jrandom: 还有素寿司 13:33 < jrandom> duck> 哪一部分看起来像魔法? 13:33 < deer> <duck> 整个分类之类的 13:33 < deer> <Pellinore> 我记得我还见过某种 chik-type 鱼排替代品,但也可能我记错了。 13:33 < deer> <duck> 我的意思是,你怎么知道你做的是最优的? 13:33 < jrandom> peer 组织器(把画像移动到不同组的那个)是一个非常简单且可分离的组件 13:33 < jrandom> 哦,这是个好问题。 13:34 < jrandom> 我前几天做了些基准测试,用 10,000 个画像跑这个组织器,组织完大约用了 ~50ms 13:34 < jrandom> (organizing == 跑计算器并在组之间移动它们) 13:34 < jrandom> 画像也只占 ~3-4KB 的完整画像,最小画像大约 ~200 字节 13:35 < deer> <duck> 是的,但你怎么知道对第 1 组用“0.597s 回复”是对的 13:35 < deer> <duck> 而不是 0.603s 13:35 < jrandom> (所以我们会保留最好的 1000 个 peers 的完整画像,以及接下来 10,000 个的最小画像) 13:35 < jrandom> 啊,好问题。 13:36 < jrandom> 那是 Rate 组件 13:36 < jrandom> 显然会有些波动,我们不会非常精确。目标是大致有个范围,然后据此组织 13:37 < deer> <duck> 我确实看到它在用平均值 13:37 < jrandom> 例如,找出跑在 T3 上、四核处理器的那些 routers,把它们和跑在 386 上配 2400 bps 调制解调器的 routers 分开 13:37 < deer> <duck> 所以如果丢进 100 个很烂的节点,会严重影响平均值 13:37 < jrandom> 同意——那里面有两方面我们可以调 13:38 < jrandom> 首先,我们可以让阈值用前 10% 来决定“快”与“非快” 13:38 < jrandom> (或者前 90%,随你) 13:38 < jrandom> 其次,我们可以调整 Rate 组件来保留各种统计——不是简单的平均,它可以忽略偏斜、求 stddev 等 13:39 < jrandom> rate 组件目前相当初级,如果有擅长统计的人能看看并改进就太好了 13:39 < jrandom> (它的一个关键目标是与规模无关(scale-free)——所以即使我们收到 100,000 个事件,也不必把所有数据点都留在内存里等) 13:40 < deer> <duck> 好,那么是什么能防止另一个 NGRouting 灾难发生? 13:40 < jrandom> 但你说得对——计算器和 peer 选择算法将是未来改进网络的主要焦点 13:40 < jrandom> ngrouting 试图做两件不同的事——找特定数据,以及找可用的 peers。 13:40 < jrandom> 我们只需要找可用的 peers 13:41 < deer> <duck> 不错 13:41 < jrandom> (然后把我们的 tunnels 放在那里) 13:41 < deer> * duck 移除了断点 13:41 < jrandom> :) 13:41 < mihi> 但我们也得找到 tunnels。 13:41 < jrandom> 对,mihi——netDb 是个重要点 13:42 < deer> <Pellinore> 我统计学的数学没问题,但把数据转成计算机能用的数据这方面技术很差。 13:42 < deer> <Pellinore> 不过我很乐意和某人合作,尽力贡献。 13:42 < jrandom> 太好了,pellinore! 13:43 < jrandom> 主要的 rate 类在这里:http://i2p.net/cgi-bin/cvsweb.cgi/i2p/code/core/java/src/net/invisiblenet/i2p/stat/Rate.java?rev=1.3&content-type=text/x-cvsweb-markup 我们可以稍后再聊 :) 13:43 < deer> <Pellinore> 好 13:43 < jrandom> (我知道,我不指望你读代码,只是提一下) 13:44 < deer> <Pellinore> 我会读的,不过大概跟我家狗在读 Kierkegaard 差不多。 13:44 < jrandom> 呵呵 13:45 < deer> <Pellinore> 但我在学习。 13:45 < deer> <Pellinore> 不管怎样,请继续——我不想拖慢进度。 13:45 < jrandom> (自愿帮忙可不是拖后腿 ;) 13:46 < jrandom> 关于 peer 画像/选择代码我忘了提一点,“integration” 级别只在网络数据库中用于“探索”,不用在搜索/存储中 13:46 < jrandom> 搜索/存储我们仍然对所有未失败的 peers 做(相当)传统的 Kademlia(卡德姆利亚)search/store 13:46 < jrandom> 而且,在每个 peer 组内,我们总是*随机地*选择 13:46 < jrandom> (也就是不会总是选最快组里最快的那个,等等) 13:47 < jrandom> 这是出于安全和负载均衡的原因 13:48 < jrandom> (安全方面,这样攻击者不能只造一个特别快的 router 然后看大家都用它——他们得造大量特别快的 routers,把整个分布往自己那边倾斜,等等) 13:49 < jrandom> 好,3) peer 画像/选择还有别的吗? 13:49 < deer> <duck> . 13:50 < deer> <ughabugha> 看起来没有。 13:50 < jrandom> 好,进入 4) Web 架构 13:52 < jrandom> mihi 的新流式库给了我们很多灵活性,而且他提过几次想把 httpclient 代码抽出来做得更健壮。此外,human 已经开始更新,让同一个客户端内支持透明的 Squid(或 tor-www)代理和 eepsite 代理 13:52 < jrandom> 综合这些因素,再考虑到类似 Web 的功能很可能对 i2p 的用户群很重要,我觉得我们应该退一步,设想一下这些东西该如何拼在一起 13:53 * mihi 我硬盘上有一些 httptunnel 的代码在飞,但离完成还差得远 13:53 < mihi> 对我来说 httptunnel == httpclient + 一些过滤器 13:53 < mihi> 当然使用我的命名和流式 API。 13:54 < mihi> 目前代码只允许不同的“匿名性配置”。 13:54 < jrandom> 对 human 的那种切换到像 squid 等 outproxies 的做法,有什么想法吗? 13:54 < mihi> 也就是把所有请求都从一个 destination 发出,最多复用到 10 个,把它们按每个主机名复用到一个 dest,等等。 13:54 < jrandom> 啊,有意思 13:55 < mihi> 不过这些目标现在还没用上 ;) 13:55 < jrandom> w3rd。是的,有个大前提是,在一个 router 上放很多 destinations 会非平凡地增加 CPU 负载 13:55 < jrandom> (因为任何一次 garlic 失败都得对每个 dest 失败一次,才算彻底失败) 13:56 < jrandom> 不过我想我们还有些魔法可以用来把它最小化 13:56 < deer> <ughabugha> 你确定透明的 Squid 代理在性能上是个好主意吗?我的意思是,人们可能会变懒,浏览完 I2P 站点或使用 I2P squid 后不把 eepproxy 关掉,从而把不需要匿名的东西也浪费 I2P 带宽。 13:56 < jrandom> ughabugha> 一切都需要匿名 :) 13:57 < jrandom> (如果他们分不清,好吧,靠……) 13:57 < mihi> 我对 httptunnel 的设想是会重写 HTTP 链接(类似 fproxy),这样你不需要代理,只要一个 servlet。 13:57 < deer> <ughabugha> jrandom: 呵。那样 I2P 一出生就死了。网络上不会有足够的可用带宽,所有终端节点可能会把它吃光。 13:58 < mihi> 在那个信息页上可以加个功能,比如通过 squid 浏览该站点。 13:58 < jrandom> 我不太跟上了。我理解并同意涉及的 DNS 问题(不过我觉得我们有几种办法绕开) 13:58 < jrandom> 啊,好的 mihi 13:58 < deer> <aum> 大家早 13:58 < jrandom> mihi> 所以像一个更更高级的“Unable to reach peer”页面? 13:59 < mihi> 更像 freenet 里的“匿名性警告”页面 ;) 13:59 < jrandom> ughabugha> 如果我们连网页浏览都搞不定,那我们怎么搞 BT/文件共享? 13:59 < jrandom> 嗯 mihi,但我们想要那样吗?对于想匿名浏览 Web 的人?或者说 httpclient 不是他们会用的应用? 14:00 < jrandom> 早啊 aum,正好赶上开发会议 :) 14:00 < mihi> jrandom: 如果有人只是想匿名浏览 Web,他 14:00 < deer> <ughabugha> jrandom: 嗯……好问题。我们真的会去搞吗? ;) 14:00 < deer> <aum> jrandom: 你不在 iip,不在 irc.duck.i2p?!? 14:00 < jrandom> ughabugha> 我们必须得搞。 14:01 < mihi> 也许会配置 httptunnel 去这么做(httptunnel 仍然能当代理用,所以加上去很简单) 14:01 < mihi> 而且我猜大多数“匿名”浏览 Web 的人会喜欢一些内容过滤器 ;) 14:01 < jrandom> mihi> 我觉得 human 已经做了 :) 14:01 < jrandom> 同意 mihih 14:01 < jrandom> /hih/hi/ 14:02 < mihi> 我说 httptunnel 的时候,不是指 httpclient ;) 14:02 < jrandom> 啊好 14:02 < deer> <jrandom_> 我在这儿呢 aum ;) 14:02 < mihi> 但我们真的应该尽快把 i2ptunnel 挪到用流式 API,这样我们要维护的文件数量就会减少 14:03 < jrandom> 同意 14:03 < mihi> human 只修了旧版本,我把新版本自己也修了 14:03 < jrandom> 我们今天下午遇到了一些 bug,不确定 human 是否把日志转发给你了 14:03 < deer> <wilde> 还有个要加到清单上的事:outproxy 被用了,但更像 i2p2i 14:04 < mihi> 我还没从任何人那儿收到日志…… 14:04 < jrandom> mihi> 我们会尽快上流式代码,会后如果你有空可以聊,或者邮件? 14:04 < deer> * aum 昨天有一段时间在看 p2p 应用,想看看能不能在 i2p 上跑 14:04 < jrandom> wilde> 嗯? 14:04 < jrandom> 太好了 aum,有什么看起来有戏的吗? 14:04 < deer> * aum 目前倾向于“推送”型文件共享,比如 konspire2b 14:05 < jrandom> i2psnark 也可以比较容易地改用新的 i2ptunnel 流式 API 14:05 < deer> <human> mihi: 正在发日志(mihi@i2p.net,对吗?) 14:06 < mihi> 不知道 mihi 有没有给我做个转发 14:06 < deer> <mihi> s/mihi/jrandom 14:06 < jrandom> 嗯 aum,你觉得 freenet/insert 模型真的会最有效吗? 14:06 < deer> <wilde> jrandom: 我在想用一个 i2p webserver -> proxy -> internet,这样人们可以浏览一个 i2p 站点,不过也许普通的 tunnel 就能扛住流量 14:06 < jrandom> mihi> 要不要我把它转发到你那儿? 14:06 < mihi> jrandom: 没意见 ;) 14:07 < deer> <ughabugha> aum: “推送”型?那是什么? 14:07 < deer> <aum> 我喜欢 konspire2b 的一点是,它去掉了对即时/快速传输的期待,通过只广播内容公告,然后让人们“订阅”“内容源”,来降低带宽需求 14:07 < jrandom> mihi> 搞定。 14:08 < deer> <aum> 所以不用请求一个文件、干等、等得心烦,你只要“订阅”源的“频道”,然后去忙别的 14:08 < deer> <aum> konspire2b.sf.net 14:08 < jrandom> aum> 但那不是非常低效吗,因为你要维护一个用于可用清单的覆盖网络(广播),然后还要中继它们? 14:09 < jrandom> 直接的 swarming 系统不是会更有用/更高效吗? 14:09 < deer> <ughabugha> 呵。听起来很适合 I2P。 14:09 < deer> <aum> jrandom: 有直接 swarming 的例子吗? 14:09 < jrandom> wilde> 哦,就像 duck 和 janonymous 站上的 cgiproxy? 14:09 < jrandom> aum> bittorrent 14:10 < deer> <ughabugha> aum: 你是指 http://konspire.sourceforge.net/? 14:10 < jrandom> 你从某处拿到 torrent,然后直接从有该内容的 peers 那里取内容块 14:10 < deer> <aum> ughabugha: 应该是 :) 14:10 < mihi> argl... $me->brother 把 i2p 的端口映射给去掉了... 14:10 < jrandom> 真糟 14:10 < deer> <aum> jrandom: 现在有人在尝试 bt/i2p 吗? 14:11 < deer> <baffled> aum,你仔细看过 mnet 吗? 14:11 < jrandom> aum> eco 在 i2psnark 上有一些进展 14:11 < deer> <aum> 我看过,但没仔细看 14:11 < jrandom> (虽然他现在不见了) 14:12 < jrandom> 嗯,mnet 配合 eepsite 元跟踪器和 human 的 i2p/twisted 传输可能可行 14:12 < deer> <duck> 我和 janonymous 的深入测试似乎表明当前 i2psnark 的问题 50% 是 i2p 造成的,50% 是 snark 造成的 14:12 < jrandom> duck> 那些测试是最近做的吗? 14:12 < deer> <duck> 上周 14:12 < jrandom> 不过我也不反对可能探索其他 bt 实现 14:12 < jrandom> 啊好 14:13 < deer> <duck> 至于 mnet,我觉得你得先修 mnet 本身,然后才可能让它工作 14:13 < deer> <duck> 所以你不如去修 freenet 然后用它 14:13 < jrandom> 呵 14:13 < deer> <aum> 修 freenet,好!就在我们实现世界和平之后 ;p 14:13 < deer> <duck> 但可以去 freenode 的 #mnet 问问 14:13 < deer> <Pellinore> mnet=? 14:13 < deer> <Pellinore> Mute? 14:14 < jrandom> 从这个意义上说,也许做一个适配 i2p 的 azureus 模组会可行? 14:14 < deer> <wilde> 不,是一种基于市场的 p2p 方法 14:14 < jrandom> pellinore - mnet.sf.net,一个不提供匿名性的分布式数据存储 14:14 < deer> <baffled> 实际上,我在大约五台机器上都在可靠地用 mnet。 14:14 < jrandom> 对,mojonation 的后续 14:14 < deer> <baffled> 我在一台机器上都无法可靠地使用 freenet。 14:14 < deer> <duck> baffled: 0.6 还是 0.7? 14:14 < deer> <duck> (0.7 用的是 twisted,记得没错的话) 14:16 < deer> <Pellinore> jrandom —— 谢谢。 14:16 < deer> <Pellinore> 你在任何机器上都不能可靠地用 Freenet。 14:17 < deer> <baffled> 0.6.[23]. 14:17 < deer> <Pellinore> 也因此等等原因,我们才在这儿。:) 14:17 < deer> <aum> 我发现 entropy 挺好用的……最终会的! 14:17 < jrandom> 我不知道,我还是觉得 freenet 也许是做 i2p DHT 的一个不错基础(当我们能砍掉大部分代码,只保留数据存储/SSK/CHK 的东西时) 14:18 < jrandom> 对文件共享,我们应该向文件共享圈学习哪些方法最有效 14:18 < deer> <aum> 但自从我写了那篇关于 entropy 的 linuxworld 文章,现在有成堆的 entropy 节点,这个网已经开始有点 freenet 的性能特征了 14:18 < deer> <Pellinore> 我喜欢 Freenet 的基本布局和功能,只是这玩意不工作,尤其是拨号连接的话。 14:18 < jrandom> 例如 DC 克隆、BT、[那些疯狂的文件共享人还用啥?] 14:19 < jrandom> 呵 aum,该死的你 ;) 14:19 < deer> <duck> 还有 Newsbyte 指出的 entropy 的那些问题…… 14:19 < deer> <aum> 比如它更弱的匿名性? 14:19 < deer> <baffled> 不过 0.7 有稳定性问题。 14:19 < deer> <baffled> 我觉得这条连接又开始不稳定了。 14:19 < jrandom> 还有安全问题。我想我们可以很遗憾地放弃使用 entropy 14:21 < jrandom> 不过,呃,我们现在在第 4 点,Web 架构,所以暂时跳回这个话题吧 ;) 14:21 < deer> <aum> 另一个疯狂的文件共享想法——用 nntp,让 n 个人跑互联的 nntpd,然后用某种把文件拆成 b64 块并发帖的库,再用库来取回它们? 14:22 < jrandom> NNTP(网络新闻传输协议)会很有意思——它非常可靠而且久经考验 14:22 < deer> <duck> 让服务器互联? 14:22 * jrandom 很想在 i2p 上跑个 innd ;) 14:23 < deer> <aum> 而且既然 i2p 做匿名,那 nntp 就不需要了 14:23 < jrandom> 对,innd 的 feed 线可以指向本地的 i2ptunnel 代理 14:23 < deer> <aum> 而且不同服务器的人可以把服务器配置成缓存自己选择的群组 14:23 < mihi> 取决于它们互联的频率,可以通过制造 message id 冲突来审查文章 14:23 < deer> <duck> (你配置过 innd 吗?) 14:24 < jrandom> 配过很多次 duck,不过很久以前了 14:24 < deer> <aum> innd 难配吗? 14:24 < deer> <duck> 哦好吧,你是神 14:24 < jrandom> mihi> 同意——那不是一个抗审查的分发媒介 14:24 < jrandom> aum> 相当折腾 14:25 < jrandom> 就像 squid 一样——它很擅长它的事,但我们可能需要一些极其简单的(最好一键)来打包 14:25 * jrandom 把我们拉回正题 14:26 < deer> <aum> 还有一种 p2p/文件共享方法——我记得见过一种通过 http 工作、把 http 服务器串起来的 p2p 应用 14:26 * mihi 猜大多数用户不会在浏览器里设置代理…… 14:26 < deer> <aum> 抱歉,话题是什么? 14:26 < jrandom> 议程第 4 项)Web 架构 ;) 14:26 < aum> 也就是,I2P 内的 Web 服务器? 14:26 < mihi> aum: 是的 14:26 < jrandom> 这是个好点子 mihi——一个 Web 系统会需要基础脚本(.bat、.sh)用于启动/停止 14:27 < jrandom> 嗯,mozilla 里是不是有某个 JavaScript URL 可以用来设置代理? 14:27 < jrandom> 比如我们能不能在 httptunnel 上做个配置页,点击“on”/“off”? 14:28 < jrandom> 我知道我们今天不太可能就 Web 功能如何工作达成决定,但我们应该定下一些方向 14:28 < aum> 现在的 eepproxy 设置有什么问题? 14:29 < jrandom> 比如过滤、入站代理(eeproxies)、出站服务器(普通 i2ptunnel server)、出站代理(像 squid 或 tor-www 那样的 outproxies(外部代理)) 14:29 < mihi> aum: 提供和请求 eepsites 都需要相当的技能 14:29 < jrandom> 而且,现有的 outproxy 系统很糟糕。 14:29 < jrandom> 完全无法扩展 14:29 < jrandom> 我们需要某种东西来允许/迫使把出站 Web 请求负载分配到多个 outproxies 上 14:30 < mihi> 用户如何获得这些 outproxies。配置文件(像 hosts.txt 那样?) 14:30 < jrandom> 而普通人愿意跑 outproxies 的一个原因是可否认性——即使他们请求了“坏东西”,也可以说“是 i2p 干的” 14:31 < jrandom> 那是一个选项 mihhi 14:31 < mihi> jrandom: 呵呵 14:31 < jrandom> s/hh/h/ 14:31 < aum> 但 eepproxy 不是对目标服务器做“直接”的 http 连接吗,也就是在 i2p 里能有多“直接”就多直接? 14:31 < deer> <wilde> . /castvote DHT 按 Freenet 的方式 14:31 < mihi> aum: 问题在“普通”的 Web URL。 14:31 < jrandom> ./castvote 3 developers x 1 month x 12h / day 14:32 < deer> * human 顺便给 TunnelManager 加了 httptunnel 支持 14:32 < deer> <human> s/httptunnel/httpclient/ 14:32 < deer> <aum> 那是啥? 14:32 < deer> <aum> 哦,http client 支持? 14:32 < deer> <human> aum: 是的 14:32 < jrandom> 对,我们需要找到一种办法让人们通过 i2p 浏览 slashdot.org 14:32 < deer> <aum> 所以 tunnelmgr 现在会说 http? 14:32 < jrandom> nice1 human! 14:32 < jrandom> aum> 记得那个 squid 代理吗? 14:33 < deer> <aum> 记得 14:33 < deer> <wilde> jrandom: 所以大约 4 人月做一个 DHT(分布式哈希表)? 14:33 < deer> <human> aum: 是的:openhttpclient <port> [<outbound WWW proxy>] 14:33 < jrandom> wilde> 我觉得合理,是的。 14:34 < deer> <aum> human: 你有写说明在哪吗? 14:35 < jrandom> aum> 它做的只是说 "if !eepsite { send through $outboundWWWproxy } else {send to eepsite}" 14:35 < deer> <human> aum: 我正要提交,然后被一个 StreamingI2PTunnelServer 的 bug 卡住了…… 14:36 < jrandom> 一个不错的短期方案是一个 "outproxies.txt",类似 hosts.txt 14:36 < deer> <aum> human: “openhttpclient <port> [<outbound WWW proxy>]” 到底做什么? 14:36 < jrandom> 不过我们也应该开始想中期和长期方案 14:37 < deer> <human> human: 会打开一个监听连接的代理,把所有不以 .i2p 结尾的 URL 的东西都重定向到 WWW-proxy 14:38 < deer> <Pellinore> 这就有意思了。 14:38 < deer> <aum> human: 啊,真不错,所以你在 tunnelmgr 里分出一个线程了? 14:38 < deer> <human> human: 也就是说,你可以用它同时浏览 eepsite 和普通 Web 14:38 < deer> <human> human: 是的 14:38 < deer> <human> s/human/aum/ :-) 14:39 < deer> <aum> 有点超出 tunnelmgr 的“职责”,不过嘿,i2p 代码里也没有更合适的地方——干得漂亮 d00d 14:39 < deer> <aum> human: 所以你既会 python 也会 java?这不伤脑子吗? 14:39 < deer> <human> aum: 我这么做是为了避免再启动一个 JVM 来跑 EepProxy 14:40 < jrandom> (嗯,代码实现是在 i2ptunnel 的 httpclient 里,human 最近只是把它也通过 tunnelmanager 暴露了出来) 14:40 < deer> <aum> 是的,尽量让 JVM 实例少点总是好事 14:40 < jrandom> ((个人觉得 httpclient 放在那儿就对了 ;) 14:40 < jrandom> (((直到 mihi 的下一代 httpclient [httptunnel] 出来))) 14:41 < deer> <aum> httpclient 在 cvs 里吗,这样它会跟着 i2p update/build 一起编译? 14:41 < jrandom> 是的,eepProxy 用的是 httpclient 14:42 < deer> <aum> *天哪这也太精神分裂了——我开了 3 个 xchat 会话 (irc.duck.i2p,iip,freenode)) 14:42 < jrandom> :) 14:42 < deer> <aum> irc.duck.i2p 的延迟很大 14:42 < jrandom> 好,所以今天显然不会对 Web 架构做出结论,不过讨论很有价值 14:43 < jrandom> 是啊 aum,我这儿大概 15 秒 14:43 < jrandom> 现在关于 Web 架构还有什么吗,还是我们转到 5) ??? 开放讨论部分? 14:43 < deer> * human 正在想着一个 I2PSocksTunnel 14:44 < jrandom> 天,这就很酷了 14:44 < deer> <human> (嗯,也许它属于 5) 14:44 < deer> <aum> socks?有没有办法把不支持 socks 的客户端“垫片”到一个 socks 接口? 14:44 < deer> <human> aum: apt-get install tsocks :-) 14:45 < aum> Web 讨论——最后一件事——要不要考虑 fork/打补丁一个现有的 Web 客户端 14:45 < mihi> aum: Windows 下的 sockscap 14:45 < jrandom> aum> 有点可怕。很强大,但可怕。 14:45 < jrandom> [我可不想去维护那个] 14:45 < aum> 就算现在,用 dillo 这样简单到发傻的浏览器也行 14:46 < jrandom> [[虽然可以把它做得“超级安全”,等等。但仍然,非常非常可怕]] 14:46 < aum> 或者更好,用 wxWindows 里的浏览器控件,它是跨平台的 14:46 * jrandom 回忆起最初的 flinks,当时内置了一个 freesite 浏览器 14:47 < aum> 但话又说回来,如果不能上他们平时那种充斥着 M$ 特定 JavaScript 的站点,小白会抱怨的 14:47 < jrandom> 对 aum,如果不支持最新标准兼容的代码,黑客也会抱怨。 14:47 < aum> 嘿,我们应该去问 Microsoft 要 IE6 的源代码,然后打补丁 ;p 14:47 < jrandom> 造一个浏览器 == 浪费成千上万工时的好办法 14:47 < jrandom> 呵 14:47 < deer> * human 用 privoxy 非常开心 14:48 < aum> 也许他们会把 IE6 源码当作欧洲惩罚性和解的一部分“toss”给我们 14:48 < deer> <human> (http://www.privoxy.org/) 14:48 < aum> s/toos/toss/ 14:48 < jrandom> human> 那在代理的两端要怎么用? 14:48 < jrandom> 比如我们想在本地过滤内容,而不是在出站端点 14:49 < deer> <human> jrandom: 可以鼓励用户安装 14:49 < jrandom> (但出站端点也会想过滤一些内容以避免滥用,等等) 14:49 < deer> <human> jrandom: 或者把它作为 I2P 默认安装的一部分 14:49 < aum> 如果一个 DWP(分布式 Web 代理)用 DHT 做缓存怎么样? 14:49 < jrandom> 鼓励 == 只有极客会装。打包吧 :) 14:49 < jrandom> 那就很棒 aum 14:49 < deer> <human> jrandom: 呵呵,同意 :-) 14:49 < deer> <human> jrandom: 顺便说,privoxy 也能跑在 windogs 上 14:50 < jrandom> word。是的,我们需要某种内容过滤——Privoxy、Muffin,随便什么都行。 14:50 < deer> <wilde> 漫长的会议…… 14:50 * jrandom 明白了这个暗示.. 14:51 < deer> <Pellinore> wilde: 要说的很多。 14:51 < jrandom> 还有谁要提什么吗?更多内容我们可以走邮件列表 14:51 < deer> <Pellinore> 当然要做的也很多。 14:51 < deer> <Pellinore> 我有几个小问题。 14:51 < aum> 我们能不能 fork privoxy 并且 1) 让它跑在 i2p 上,2) 让它用 DHT 做缓存? 14:51 < deer> <Pellinore> 不过这些私下说也一样。 14:51 < jrandom> pellinore> 怎么了? 14:51 < deer> <Pellinore> 没事儿,抱歉我多嘴了。 14:51 < jrandom> aum> 多半不需要 fork 14:52 < deer> <Pellinore> 我会私下找你或 duck 谈,改天吧。 14:52 < deer> <Pellinore> 不算真正的开发话题。 14:52 < deer> <duck> 10+16+7=33 人时浪费在这一个小时的加时上 :) 14:52 < jrandom> 但做一个 DHT 要花很多力气。完全、极其值得 14:52 -!- Irssi: #i2p: 共有 10 个昵称 [0 ops, 0 halfops, 0 voices, 10 normal] 14:52 * aum 再去看看 infoanarchy.org 上关于 DHT 的 wiki 页面 14:52 < jrandom> iip 上有 16 个人? 14:53 < deer> <human> aum: 不需要 fork,只要:web browser <-> privoxy <-> httpclient <-> i2p <-> outbound proxy <-> www.pr0n.com 14:53 < deer> <wilde> 一个通用的 DHT,也能在 I2P 之外工作,并且允许 HTTP 之外的其他绑定 14:53 < jrandom> aum> 看看 duck 加到 i2p wiki 的那个链接,列了各种方案 14:54 < deer> <human> aum: 你可以把 privoxy 配成连接另一个 HTTP/socks 代理(我的 I2P-to-tor privoxy 就是这么工作的) 14:54 < deer> <duck> (http://www.bamboo-dht.org/) 14:54 < aum> 不太喜欢一个在 i2p 外也工作的 dht——最好的 dht 是不试图提供匿名性的(也就没有匿名开销),能在 i2p 里最优地工作 14:54 < jrandom> 呃 duck,那份列表怎么了? 14:54 < deer> <duck> aum: 更容易测试 14:55 < deer> <duck> jrandom: 我猜是哪个家伙把它删了 14:55 < jrandom> 呵 14:56 < jrandom> google++ : http://www.etse.urv.es/~cpairot/dhts.html 14:56 < jrandom> (不是同一页,但也有意思) 14:56 < jrandom> 哦,这里有那页——http://himalia.it.jyu.fi/ffdoc/storm/pegboard/available_overlays--hemppah/peg.gen.html 14:57 < jrandom> 不过,是的,一个不试图实现匿名性的 DHT,加上一个同时支持 CHK(内容哈希键,Content-Hash Key)风格和 SSK(签名子空间键,Signed Subspace Key)风格内容的 DHT,才是最好的 14:58 < jrandom> (SSK 风格不是绝对必要,但它会非常有用) 14:58 < jrandom> 好,言归正传 14:58 < jrandom> 还有谁要提什么吗? 14:59 < deer> <duck> 明天是圣帕特里克节 14:59 < deer> <wilde> 话题 5) ? 14:59 < deer> <duck> 所以都去喝爱尔兰啤酒吧 14:59 < jrandom> 好主意 14:59 < deer> <Pellinore> 明天既是我当前这段关系的周年纪念,也是我第二次婚姻的纪念日。 14:59 * jrandom 记下,明天避开爱尔兰酒吧 15:00 < jrandom> 哦,恭喜 pellinore :) 15:00 < jrandom> wilde> 我们在 5) ??? 15:01 < jrandom> (而且马上要到 6) [baf]) 15:01 * jrandom 马上就到 iip [如果能的话] 15:01 * jrandom 收尾 15:01 * jrandom *baf* 地宣布会议结束