浅谈一种高效安全的P2P覆盖网络

2020-07-10 09:22宋静静
科学与财富 2020年12期
关键词:路由表覆盖层可用性

宋静静

摘 要:大多数结构化P2P网络都利用分布式哈希表(DHT)来实现无管理、容错的覆盖网络,并保证在O(log N)跳内将消息发送到目的地。网络中节点的频繁加入和离开不仅会产生巨大的维护开销,而且节点的各种行为和资源也会损害网络的性能和安全性。本文通過结合不同的网络拓扑感知技术,构建了一个与Internet拓扑结构紧密匹配的覆盖网络。基于这种结构的P2P系统不仅路由效率高,而且即使在高度动态的环境下,维护开销也很低。

一、引言

我们先讨论如何构建一个与互联网拓扑结构非常接近的覆盖层,然后在此覆盖层的基础上构建一个查找效率高、维护开销低、可用性高的P2P系统。

覆盖结构背后的本质是根据节点在Internet中的物理网络位置来组织节点。所有节点都可以按其自治系统(As)轨迹划分为组。由于Internet是由AS组成的,每个AS都是一个单一管理权限下的网络,因此它为P2P节点提供了一个良好的边界。与Internet中的AS一样,组是覆盖中路由和组织节点的基本单元。但是,在许多情况下,仅按节点作为驻留来划分节点可能过于粗糙。

二、P2P覆盖网络

为了支持类似DHT的ID查找操作,在覆盖中采用了类似的ID机制。与当前的DHT设计一样,网络中的每个对象都被分配了一个128位的ID。使用两级映射机制,而不是像当前网络那样将一小部分对象映射到每个节点。如前所述,我们的覆盖层是由类似的组构成的。通常一个组包含10到50个节点。每个组都会选择一个具有良好网络带宽和可用性的领导者。同时,每个组都会分配一个32位的Steam ID。这些ID在第一次出现在覆盖图中时随机分配给每个组。

组是存储对象的基本单元。两个对象副本将保存在一个组中,以提高可靠性和可用性。一个副本保存在组的领导者中,以响应所有其他对等方的查询。许多不稳定的节点加入到系统路由中,只有选择了带宽和可用性都比较好的节点才能成为覆盖层路由的代理。通常,3个代理可以提供足够的可用性和性能,而不会影响其主机。

由于覆盖层与Internet拓扑结构非常匹配,因此与当前的DHT设计相比,路由机制实际上很简单。由于网络中使用了两级映射机制,路由表由两部分组成。其中一个记录网络中每个组的ID和代理信息,称为路由表。此表在每个代理和引导程序中维护,用于为正常节点路由消息。另一个记录组中所有组的ID和领导信息,称为交付表。给定一个对象ID,责任组及其代理可以通过路由表定位。消息将直接发送到目标组的代理,而不是逐跳接近目标组。当消息到达该代理时,它只是由传递表转发给响应组领导。最后,领导解析并回复查询。

三、节点维护

节点的加入和退出过程比较简单。当一个新节点加入网络时,它的轨迹可以由它的IP地址决定。通过网络内的任何节点,加入请求将转发到该AS的代理。在测量其地标向量之后,节点根据网络的局部性加入一个组。如果一个组节点太多,则根据节点的网络位置分成两个组。如果加入节点是AS中的第一个节点,则加入请求将转发到附近的物理组。节点最初成为组内的一个队友,称为母组,而不是组成一个新组。

对于正常节点,组自动容忍其离开或失败。如果一个领导或代理节点离开,将选择一个新的机制。在P2P环境下,不仅每个节点的离开和失败都是不可预测的,而且每个节点都可以任意的加入和离开网络,整个网络也是高度动态的,这对所有P2P覆盖网络来说都是一个挑战。

尽管代理和领导被认为比普通节点的更可用,但他们不是维护良好的服务器。这里使用一个环协议来监视它们。例如,所有的领导节点都形成一个环作为它们的ID关系,并且每秒钟每个节点都会向它的后续和前继节点发送消息。尽管这个协议很简单,但足以检测出一个或多个领导者的失败。同样的方法也适用于不同的代理。通常,组的领导节点可以通过他们的查询消息来监控组成员的变化。然而,为了准确地区分每个节点的行为,以供领导者和代理的候选,每个节点被设计为每隔30秒向其领导节点发送一个查询消息。

由于领导节点从组代理缓存在路由表,因此需要一些方法来保持它们的一致性。可以利用当前路由器广泛支持的管理范围的IP多播来有效地传递最新的代理信息。对于不支持多播协议的AS,使用以代理为根的分发树将信息多播到所有的领导者。当组更大时,它会分成两个或多个组。

如前所述,每个代理维护一个记录所有代理信息的路由表。保持这些路由表的最新状态对于查找的正确性至关重要。而且这种维护的开销应该很低,否则,系统性能和可伸缩性都会受到影响。因此,我们的覆盖被设计成这些维护工作集成到公共操作、查找中。当领导节点发送或应答消息时,有关已更改代理的最新信息将附加到消息中,到达目标组的一个代理,然后传播到所有领导节点。同样,这些信息将被发送到更多的组,并最终到达每个组。

四、网络安全

识别每个节点是P2P覆盖网络安全的一个重要问题。然而,在P2P环境下,这是一个真正的挑战,以往的研究已经指出,恶意攻击和恶意节点之间的串通几乎是不可避免的,甚至节点ID的分配都委托给一个可信的中心机构。当前的P2P覆盖网络通常通过其IP地址来识别节点。然而,由于不同的网络配置和连接技术,超过40%的节点没有真正的IP地址或不时地更改其IP地址。尽管已经有人提出了一些安全地分配节点ID的解决方案,如支付证书费用和将节点ID绑定到真实身份,但是在P2P环境下,这些方案都不实用。

我们不只是使用可变的IP地址作为每个节点的标识符,而是提出通过每个节点准确的网络物理特性来识别每个节点,称为网络打印,这是一组可以用来精确定位节点位置和网络设备的信息。有两个原因使它实用有效。如前所述,节点按其As轨迹组织,As在单一网络管理下,因此一个As内的机器处于相同的网络配置和策略下,例如DHCP、NAT和防火墙策略。另一个原因是可以直接使用许多功能强大的协议,例如ICMP,由于安全考虑,网络管理员通常禁止外部访问,而且由于通信量在附近的物理节点之间,因此开销很小。

在一个节点加入一个组之前,它将测量AS中多个路由器,以形成其地标向量。网络打印矢量不是直接使用该节点所声称的矢量,而是由这些路由器的子网络中随机选择的节点所测量形成的。通过比较这两个向量,可以很容易地检测出作弊行为。此外,该方法还可以通过伪造网络打印向量来伪装恶意节点的合谋。此外,由于所有这些节点都在相同的范围内,因此可以通过具有IP记录路由的Internet控制消息协议(ICMP)进一步找到节点的默认路由器的IP。此外,MAC地址可以用作网络打印的一部分,并且可以由同一子网络下的其他对等方进一步识别。因此,即使在允许节点的IP地址动态变化的环境下,包括节点的默认路由器IP、MAC和地标向量的网络打印也是每个节点的准确和可信任的标识符。

实际上,网络打印本身就是一个自认证数据,它可以被其他节点直接验证。例如,一个节点M想要假装为另一个节点A,甚至知道A的网络打印,但是,其他节点可以通过比较所声称的网络打印和直接测量的网络打印来容易地验证M。因此,恶意节点之間的串通几乎是不可能的。虽然恶意节点可以在同一子网下伪装成不同的节点进行攻击,但是网络打印技术可以有效地将其限制在较小的网络范围内。通过同时用一个独特的计算难题挑战这些节点,可以识别出恶意节点。

五、总结

针对开放网络环境下P2P网络所面临的困难,从不同的角度探讨了一种构建P2P覆盖网络的新方法。与当前的设计不同,我们的设计侧重于自己的系统覆盖层,我们的方法侧重于物理网络,并在物理网络之后构建覆盖网络。自然地利用物理网络的特性来构建一个高效、安全的P2P覆盖网络。基于节点的物理网络特性,网络打印为开放互联网环境下的节点提供了一种实用的自认证标识。结合简单的覆盖路由机制,路由过程是安全的。

参考文献:

[1] 李聪, 张文红. 基于DHT的P2P覆盖网络的研究[J]. 计算机工程, 2018, 34(7): 101-103.

[2] M. Castro, P. Druschel, A. Ganesh, A. Rowstron, and D. S. Wallach. Secure routing for structured peer-to-peer overlay networks. In Proceedings of 5th Symposium on Operating Systems Design and Implementation (OSDI02), Boston,MA, Dec 2012.

猜你喜欢
路由表覆盖层可用性
基于文献计量学的界面设计可用性中外对比研究
深水浅覆盖层倾斜岩面河床围堰设计及应用
基于辐射传输模型的GOCI晨昏时段数据的可用性分析
声子晶体覆盖层吸声机理研究
基于OSPF特殊区域和LSA的教学设计与实践
无限元法在深覆盖层土石坝动力分析中的应用
浅薄覆盖层倾斜岩面大直径钢护筒施工方案比选及应用
空客A320模拟机FD1+2可用性的讨论
基于新路由表的双向搜索chord路由算法
黔西南州烤烟化学成分可用性评价