Sch*_*zuk 2 networking p2p bittorrent dht kademlia
节点:DHT 网络上的客户端。
Peers:尝试下载特定资源的客户端。
假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消费与 DHT 网络覆盖的互联网是完全连接的普遍看法相反)。
叠加在 DHT-network 上的 Peer-network 还是连通图吗?为什么?
Kademlia 是一种抽象算法,它在真空中假设球形奶牛。本文讨论的唯一故障模式是流失和临时图分区。不考虑非对称可达性。
在现实世界中实施的 Kademlia不做任何保证。一切都是在尽力而为的基础上完成的。
现实世界中的主要问题不是互连集群 A 无法与互连集群 B 通信的节点。NAT 和防火墙不会大规模引入此类集群。他们创建了一组任何人都无法始终访问的二等公民——没有 NAT 穿越措施——因此只能连接到一等公民,这些节点是任何人都可以与其他任何人交谈的节点。当然,存在一些边缘情况,但它们在很大程度上无关紧要。
无论如何,由于您甚至不是在询问 kademlia 而是询问 bittorrent,这并不是真正覆盖 kademlia 而是一个单独的网络,它只是从 kademlia 引导其联系信息,事情变得更加复杂。Bittorrent 可以通过两种不同的传输机制实现,TCP 和 µTP,并且客户端可能支持不同级别的 TCP、µTP 和 Kademlia-via-UDP 的 nat 遍历能力。
Kademlia 节点通常在几个可到达的节点上存储 bittorrent 的联系信息,因为它们 - 很明显 - 无法到达不可到达的节点以进行存储。他们还以冗余方式这样做,这确保了存储的联系信息很可能被其他任何人观察到。
基于该联系信息,bittorrent 客户端可以尝试相互连接。只要有一些可访问的 bittorrent 客户端,它们就能够建立直接连接,然后还可以在不可达节点之间尝试一些 nat 遍历措施。同样,没有保证,所以在某些情况下小群可能会失败,但是一旦群变得足够大,概率就会压倒性地倾斜,有利于图变得连通。
一个小的额外问题是 IPv4 与 IPv6。通常 IPv6 提供更好的连接性,但并非所有客户端都同样好地实现 ipv6 扩展,因此可能会阻止一些 v6-edges 在原则上提供相同节点之间的卓越连接时形成。
请注意,ipv4 和 ipv6 DHT 理论上是独立的 DHT 网络,它们只是碰巧有一些显着的重叠。如何协调多个独立网络基本上超出了 kademlia 的范围。