深入探索Gnutella网络:问题、优化与政策考量
1. Gnutella网络的发展与主机缓存问题
Gnutella网络早期发展较为平稳,用户数量从几百增长到几千,再到几十万,网络都能正常运行。然而,主机缓存的广泛使用带来了真正的问题。
在Gnutella早期,用户通过口口相传、IRC询问或查看少数维护主机列表的网页来找到连接的主机地址,逐个输入到Gnutella软件中,直到找到可用的主机。这种方式虽然繁琐,但能使网络连接较为随机,不同人推荐的主机位于网络不同位置,主机列表鼓励了网络的稀疏性和小集群,各单元之间连接稀疏,串扰少,形成了近乎最优的网络结构,就像由少数道路相互连接的小城市和乡镇组成的地域。
后来,Bob Schmidt的GnuCache和Josh Pieper在其Unix版Gnut软件中加入的主机缓存逻辑,为用户提供了连接到Gnutella网络的便捷起点。主机缓存会提供一个始终运行的主机,向新节点提供其他可连接主机的列表,消除了连接的不确定性,带来了更好的用户体验。
但在2000年7月26日Napster禁令之后,大量新Gnutella用户登录,都依赖主机缓存连接网络。主机缓存只向新主机提供其最近看到的主机信息,导致Gnutella节点在网络上紧密聚集在同一小区域,形成一个高度互联的大单元,造成Gnutella网络通信拥堵和流量下降。原本拥有大量性能良好、每个包含约一万个节点单元的网络,如今变成了一个充满噪音的大单元,查询只能传播一两跳就被拥挤的网络连接淹没,单元规模也缩小到只有几十台主机,用户体验极差。
2. 恢复网络的自然状态
主机缓存本质上是Gnutella网络的非自然添加物,带来了意想不到的后果。