CN112039775A - 一种实现kad网络节点快速路由的方法和系统 - Google Patents
一种实现kad网络节点快速路由的方法和系统 Download PDFInfo
- Publication number
- CN112039775A CN112039775A CN202010747529.5A CN202010747529A CN112039775A CN 112039775 A CN112039775 A CN 112039775A CN 202010747529 A CN202010747529 A CN 202010747529A CN 112039775 A CN112039775 A CN 112039775A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- routing
- protocol
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/122—Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种实现KAD网络节点快速路由的方法和系统,所述方法和系统具体为采用竞速的方式,从TCP+TLS协议和QUIC协议中选择每次通信连接的网络传输协议;基于邻居节点管理机制,每个节点与本地线性路由表K‑Buckets中的所有节点建立并保持加密通信连接;基于延迟敏感的路由节点选择算法,同时以节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,选择α个候选节点作为第一跳路由节点;基于递归式Kad协议,每一跳路由节点从本地K‑Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果;建立加密通信连接。本发明实施例提供的方法和系统,通过上述方案实现了KAD网络节点的快速路由,能有效降低KAD网络的通信连接延迟。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种实现KAD网络节点快速路由的方法和一种实现KAD网络节点快速路由的系统。
背景技术
P2P(Peer to Peer,对等式网络),又称点对点技术,区别于C/S(客户/服务器)架构,是一种没有中心服务器的网络架构。P2P作为分布式账本底层的网络通信技术,承担节点发现、节点定位、节点间的通信等职责。
Kad是Kademlia的简称,是P2P重叠网络传输协议,KAD网络是一种分布式的P2P网络,由于在资源的发现和定位的效率方面都存在优势,目前广泛应用于分布式账本。
Kad协议使得分布式账本中的P2P网络节点A在事先不知道节点B的IP地址和端口号的情况下,通过节点B的Node ID查询其IP地址和端口号,进而使得节点A能够通过TCP/IP协议与节点B进行通信。
当下采用随机见证共识机制的大数据可信图式结构分布式账本,相对于传统的采用全网节点共识机制的链式结构分布式账本,解决了节点间不能并发产生区块和吞吐量受限的问题,有效提高了全网TPS(Transaction Per Second,每秒钟的交易数量)。随着随机见证共识机制在图式结构分布式账本上的应用,节点间数据吞吐率的高速增长,导致分布式账本对KAD网络延迟的要求越来越高,而目前的Kad网络协议还存在部分场景延迟高、无法快速路由的缺陷。
发明内容
鉴于上述问题,提出了本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的一种实现KAD网络节点快速路由的方法和一种实现KAD网络节点快速路由的系统。
为了解决上述问题,本发明实施例提供了一种实现KAD网络节点快速路由的方法,所述方法包括:所述KAD网络节点之间必须在加密通信信道中传输数据,当本地节点需要与某个节点进行通信时,由所述本地节点向所述目标节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议;基于自定义的邻居节点管理机制,根据所述KAD网络中节点的节点唯一标识Node ID长度和线性路由表K-Bucket大小,计算所述KAD网络中每个节点的邻居节点的数量,所述每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密通信连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是所述本地节点的邻居节点;基于预先设计的延迟敏感的路由节点选择算法,同时以所述KAD网络中节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,计算所述本地节点的线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点;基于递归式Kad协议,令每一跳路由节点从本地K-Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果,以此减少将中间结果回传给起始节点所需的时间;根据所述目标节点的查询结果,建立所述起始节点和所述目标节点之间的加密通信连接。
可选地,所述KAD网络节点之间必须在加密通信信道中传输数据,当本地节点需要与某个节点进行通信时,由所述本地节点向所述目标节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议,包括:初始化分布式账本的网络模块,使每个节点在底层通信协议上同时支持TCP+TLS协议和QUIC协议;通过在配置文件中配置参数quic为true,将QUIC协议设置为节点间的默认的通信协议;本地节点同时向目标节点同时发送TCP连接请求和QUIC连接请求;所述网络模块的端口同时监听所有外部IP的TCP连接请求和QUIC连接请求,获取每次握手数据传输的时间戳,在连接建立完毕后,由本地节点分别计算并比较TCP协议和QUIC协议下握手数据传输的RTT值,若QUIC协议下的RTT值不大于3倍TCP协议下的RTT值,则使用默认的QUIC协议作为本次连接的通信协议;若QUIC协议下的RTT值大于3倍TCP协议下的RTT值,则回退到TCP+TLS协议作为本次连接的通信协议。
可选地,基于预先设计的延迟敏感的路由节点选择算法,同时以所述KAD网络中节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,计算所述本地节点的线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点,包括:所述起始节点通过测量节点自身和本地K-Buckets中每一个节点之间的RTT值,以获知所述起始节点与本地K-Buckets中所有候选节点之间的网络延迟;基于所述延迟敏感的路由节点选择算法,当所述起始节点执行Kad协议时,从本地K-Buckets中选择第一跳的α个路由节点。
可选地,所述起始节点通过测量节点自身和本地K-Buckets中每一个节点之间的RTT值,以获知所述起始节点与本地K-Buckets中所有候选节点之间的网络延迟,包括:初始化所述KAD网络中每个节点的RTT为0;启动子程序对RTT值为0的节点进行网络延迟的测试;在每一次执行Kad协议的过程中,更新起始节点与路由节点间的RTT值。
可选地,基于所述延迟敏感的路由节点选择算法,当所述起始节点执行Kad协议时,从本地K-Buckets中选择第一跳的α个路由节点,包括:所述起始节点根据其节点唯一标识Node ID与所述目标节点Node ID之间的异或距离定位K-Bucket,获得候选节点的集合candidate Peers;对所述candidate Peers中的所有节点按优先级的高低进行降序排序;得到排序后的列表sorted Candidate Peers;从所述sorted Candidate Peers中选择优先级最高的count个节点作为路由节点并返回;其中,节点的优先级越高,说明选择其作为路由节点能够更有效的降低本次路由查询执行所需的时间。
可选地,对所述candidate Peers中的所有节点按优先级的高低进行降序排序,包括:参照如下计算公式,对任意两个候选节点与所述本地节点的连接优先级高低进行比较,同时以节点间的网络延迟和节点唯一标识Node ID异或距离为参考值进行计算:
其中,r为每一跳路由所需的平均RTT数;b为每一跳路由在逻辑距离上向目标节点Node ID逼近的平均速度;c1为节点p1的Node ID与目标节点Node ID之间的公共前缀长度CPL(Common Prefix Length),CPL越大,异或距离越近;c2为节点p2的Node ID与目标节点Node ID之间的CPL;r1为节点p1与本地节点间的RTT;r2为节点p2与本地节点间的RTT;l为本地节点与K-Buckets中所有节点之间RTT的平均值,用于估计每跳查询的平均网络延迟,也可以是经过验证的经验值,计算时需排除RTT值异常的节点;n1为节点p1的邻居节点附加值,若p1是邻居节点,取值为1,否则为0,该取值方式的原因在于本地节点与邻居节点通信不需要再次建立连接,可以节省至少1个RTT的时间;n2为节点p2的邻居节点附加值,取值同p1所选择的方法;p为优先级比较结果:p若小于0,则说明节点p1的优先级低于p2;若等于0,则说明优先级相同,优先选则异或距离较近的节点;若大于0,则说明节点p1的优先级高于p2。
可选地,基于递归式Kad协议,令每一跳路由节点从本地K-Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果,以此减少将中间结果回传给起始节点所需的时间,包括:第一步,所述起始节点选择出α个第一跳路由节点后,分别与α个所述第一跳路由节点建立可靠的加密连接,将查询请求并发地发送给α个所述第一跳路由节点;第二步,α个所述第一跳路由节点在收到查询请求后,在自身K-Buckets中查询是否包含目标节点的三元组信息,并返回查询结果;若所述查询结果为是,则将所述目标节点的三元组信息返回所述起始节点,同时结束对后续候选节点的查询;若查询结果为否,则采用选择所述第一跳路由节点所采用的选择方法,选择出α个第二跳路由节点,并将查询请求并发地发送给α个所述第二跳路由节点;其中,所述目标节点的三元组信息包括:所述目标节点的NodeID信息、所述目标节点的IP地址、所述目标节点的端口号;同时,起始节点接收到所述查询结果后,若所述查询结果为是,则结束路由查询,同时根据所述目标节点的三元组信息,将所述目标节点的IP地址和端口号返回给上层的调用程序,在所述调用程序的支持下,与所述目标节点建立连接;若所述查询结果为否,则继续等待查询结果;第三步:α个所述第二跳路由节点在收到查询请求后,重复第二步所述的内容;直至第N跳路由节点的K-Buckets中所有候选节点均已发送过查询请求,则查询失败,并将查询失败的结果消息返回给起始节点,结束查询。
可选地,还包括:每一跳路由节点返回查询结果,同时将自己K-Buckets中离目标节点NodeID异或距离最近的k个节点的三元组信息返回给起始节点,起始节点收到第一跳路由节点返回的距离更近的节点信息后,按照Kad协议中规定的规则更新K-Buckets,并判断是否查询成功。
可选地,还包括:在所述起始节点和所有路由节点发起的每一次所述查询请求中,携带目标节点的NodeID、查询发起者的NodeID、本次查询发起时的时间戳信息,以避免在同一个起始节点发起的同一次查询中,向同一个路由节点发起重复的查询请求。
本发明实施例还提供了一种实现KAD网络节点快速路由的系统,所述系统具体包括:协议竞选模块,用于所述KAD网络节点之间必须在加密通信信道中传输数据,当本地节点需要与某个节点进行通信时,由所述本地节点向所述目标节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议;邻居节点管理模块,用于基于自定义的邻居节点管理机制,根据所述KAD网络中节点的节点唯一标识Node ID长度和线性路由表K-Bucket大小,计算所述KAD网络中每个节点的邻居节点的数量,所述每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密通信连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是所述本地节点的邻居节点;路由节点选择模块,用于基于预先设计的延迟敏感的路由节点选择算法,同时以所述KAD网络中节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,计算所述本地节点的线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点;路由查询管理模块,用于基于递归式Kad协议,令每一跳路由节点从本地K-Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果,以此减少将中间结果回传给起始节点所需的时间;网络连接模块,用于根据所述目标节点的查询结果,建立所述起始节点和所述目标节点之间的加密通信连接。
从上述技术方案可以看出,本发明实施例提供了一种实现KAD网络节点快速路由的方法和系统,首先,采用竞速的方式,从QUIC协议和TCP+TLS协议中选择延迟较低的协议作为当次通信的协议;其次,通过自定义的邻居节点管理机制在节点之间建立更多的长连接,基于延迟敏感的路由节点选择算法,综合考量节点间的网络延迟和Node ID异或距离,选择路由节点,基于递归式Kad协议,由路由节点转发查询请求,减少节点路由查询时间;最终,在保证通信连接安全性的前提下,实现KAD网络节点的快速路由,有效地降低KAD网络的通信连接延迟。
附图说明
图1是本发明提供的一种实现KAD网络节点快速路由的方法的步骤流程图;
图2是一种KAD网络节点基于TCP+TLS协议进行握手连接的过程示意图;
图3是一种KAD网络节点基于QUIC协议进行握手连接的过程示意图;
图4是本发明实施例提供的一种KAD网络低延迟加密通信功能相关类的UML图;
图5是一种KAD网络节点的线性路由表K-Buckets示意图;
图6是本发明实施例提供的一种KAD网络邻居节点管理机制相关类的UML图;
图7是本发明实施例提供的一种KAD网络新增邻居节点的交互过程示意图;
图8是一种KAD网络基于节点Node ID异或距离进行节点路由的选择示意图;
图9是本发明实施例提供的一种KAD网络延迟敏感的路由节点选择算法相关类的UML图;
图10是一种迭代式Kad协议执行过程的示意图;
图11是本发明实施例提供的一种递归式Kad协议执行过程的示意图;
图12是本发明实施例提供的一种递归式Kad协议相关类的UML图;
图13是本发明提供的一种实现KAD网络节点快速路由的系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明提供的一种实现KAD网络节点快速路由的方法的步骤流程图。如图1所示,本发明实施例提供的方法可以应用于KAD网络,具体的方法包括如下步骤:
步骤S101,所述KAD网络节点之间必须在加密通信信道中传输数据,当本地节点需要与某个节点进行通信时,由所述本地节点向所述目标节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议。
KAD网络的节点之间通过网络连接进行通信,进而协作完成功能,而节点之间在进行通信之前前必须建立加密连接。当下P2P网络拓扑结构的大数据分布式账本,需要解决大数据场景下的数据全生命周期的可信管控问题,因此,节点间必须在可靠的加密通信连接中通信,以保证数据的正确性和私密性。当然,KAD网络也面临这样的问题。
在这种需求背景下,目前广泛应用于P2P网络的网络通信协议是TCP协议和TLS协议的组合,其中,TCP协议保证了节点间数据的可靠交付,TLS协议采用对称加密算法保障数据的私密性。
如图2所示,采用TCP+TLS的协议组合,节点间进行通信前,需要至少3倍RTT(往返时延Round-Trip Time)的时间进行握手,才能建立加密连接。而握手过程中花费的时间,可以近似看作所述节点间加密通信连接的建立需要的时间。
如图3所示,QUIC(Quick UDP Internet Connection)协议是基于UDP的一种网络传输协议,由于建立加密连接所需的时间仅为1RTT,相比较于TCP协议,可以进一步减少建立通信连接所说需要的时间。QUIC协议同时还融合了包括TCP、TLS、HTTP/2等协议的优势,在安全性上相较于传统的UDP协议也有一定的提升。同时,QUIC协议还支持连接的多路复用,即,可以在同一个加密连接中传输多个上层协议的数据,且不同协议的数据之间互不干扰。连接多路复用可以进一步减少建立连接所需的开销,比如:若节点A在较短的时间间隔内向节点B发起了多个不同的查询请求,节点A仅需在发送第一个查询请求前与节点B运行一次QUIC握手协议,随后的查询请求均通过复用已经建立好的连接来发送。
由于UDP协议不提供拥塞控制和流量控制,在实际的网络环境中,为防止UDP速率过快造成网络拥塞,某些路由器会限制UDP的速率,可能会导致基于UDP的QUIC协议延迟较高。这样一来,在某些实际的网络情况中,基于QUIC协议建立网络连接花费的时间可能会比TCP协议更多。、
鉴于每次握手数据传输的时间戳是可以被节点读取的,而在TCP+TLS协议进行握手连接的过程中,基于TCP协议发送的握手数据的第一次往返时延RTT值已经可以反映整体的网络延迟。
图4示出了本发明实施例提供的一种KAD网络低延迟加密通信功能相关类的UML图,如图4所示,在本发明提供的一种优选实施例中,初始化分布式账本的网络模块,使每个节点在底层通信协议上同时支持TCP+TLS协议和QUIC协议;通过在配置文件中配置参数quic为true,将QUIC协议设置为节点间的默认的通信协议;本地节点同时向目标节点同时发送TCP连接请求和QUIC连接请求;所述网络模块的端口同时监听所有外部IP的TCP连接请求和QUIC连接请求,获取每次握手数据传输的时间戳,在连接建立完毕后,由本地节点分别计算并比较TCP协议和QUIC协议下握手数据传输的RTT值,若QUIC协议下的RTT值不大于3倍TCP协议下的RTT值,则使用默认的QUIC协议作为本次连接的通信协议;若QUIC协议下的RTT值大于3倍TCP协议下的RTT值,则回退到TCP+TLS协议作为本次连接的通信协议。
举例说明,如基于QUIC协议下的RTT值为100ms,则基于QUIC协议建立网络连接花费的时间约为100ms;同时,基于TCP协议下的RTT值为50ms,则基于TCP+TLS协议建立网络连接花费的时间约为3倍RTT值,即,150ms。此时,QUIC协议下的RTT值不大于3倍TCP协议下的RTT值,使用默认的QUIC协议作为本次连接的通信协议,能够选择到建立网络连接花费的时间的协议用于网络连接。
本发明实施例在应用于KAD网络时,还可以根据实际的网络情况和TLS协议下的握手时延,设置所述TCP协议和QUIC协议下RTT值比较的倍数,也就是说,并不一定局限为3倍,也可以是1.5倍、2倍等等。
参照图4所示,在本发明实施例中,通过配置功能可以对交换器类Swarm对象的行为进行配置,使交换器类Swarm的对象在同一端口同时监听TCP协议和QUIC协议。
表1示出了本发明实施例提供的一种用于监听连接请求的交换器类Swarm配置示例。
表1
如表1所示,本发明实施例在同一指定端口监听所有外部IP的TCP连接请求和QUIC连接请求。
步骤S102,基于自定义的邻居节点管理机制,使所述KAD网络中每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是本地节点的邻居节点。
图5示出了一种KAD网络节点的线性路由表K-Buckets示意图。如图5所示,若规定每个节点由一个长度为160b的Node ID作为节点唯一标识,每个节点在本地维护160个被称之为K-Bucket的线性路由表,每个K-Bucket保存K个项,每个项记录了一个节点的三元组信息<Node ID,IP地址,端口号>,即:某个节点的Node ID与其IP地址和端口号的映射。第i个K-Bucket所存储的NodeID与本地节点的NodeID的异或距离在[2^i,2^(i+1))之间。
在本发明实施例中,可以根据所述KAD网络中节点的节点唯一标识Node ID长度和线性路由表K-Bucket大小,计算所述KAD网络中每个节点的邻居节点的数量,可以进一步根据服务器的实际负载进行。例如,若KAD网络中每个节点的Node ID长度为160b,每个K-Bucket的大小设置为20,若想使得任意一次查询的第一跳路由节点都是邻居节点,则最多需要与3200个节点事先建立好连接并保持长连接。保持长连接的主要开销是内存,而保持3200个QUIC长连接所需占用的内存约为320MB,将这个内存开销数值返回给服务器,由服务器根据实际的负载情况,在不影响服务器运行的前提下,尽可能多的保持每个节点与本地线性路由表K-Bucket之间的。
图6示出了本发明实施例提供的一种KAD网络邻居节点管理机制相关类的UML图,如图6所示,其中各类的作用包括:
P2P主机类P2PHost中的数据成员负责实现Kad协议。Kad协议类KadDHT的数据成员路由表是路由表类的实例化对象,用于管理本地节点的路由表,是K-Buckets的具体数据结构。<<接口>>连接管理器类ConnManager定义了连接管理功能需要实现的方法。包括用于对连接进行裁剪,使连接数维持在低水平Low Water附近;以及,通过对节点进行标记,保护其不被裁剪。连接管理器类ConnMgr实现了ConnManager接口,负责对本地节点的连接进行管理。<<接口>>通知者类Notifiee定义了用于接收底层网络状态信息的相关方法。当底层网络与其它节点建立了一个新的连接时,将触发Connected;当底层网络与某个节点断开连接时,将触发Disconnected。Kad协议类KadDHT和连接管理器类ConnMgr实现了Notifiee接口,使Kad协议类KadDHT和连接管理器类ConnMgr的对象获得感知底层网络状态的能力。
具体实现的步骤为:
步骤1021、当底层网络与某节点建立新的连接时,分别调用Kad协议类KadDHT和连接管理器类ConnMgr各自实现的连接Connected方法,告知他们与新的节点建立了连接。连接管理器类ConnMgr接到通知后,将该连接存入segments中,并更新连接数量connCount值。KadDHT接到通知后,将调用Update方法对路由表routingTable(K-Buckets)进行更新。若成功的向Buckets中插入一个新节点的路由信息,则调用ConnMgr类将新节点标记为邻居节点,表示该节点是受保护的节点,从而避免被裁剪。
步骤1022、当底层网络与某个节点断开连接时,分别调用KadDHT和ConnMgr各自实现的Disconnected方法,告知他们与某个节点断开了连接。ConnMgr在收到断开连接的通知后,将其从segments中删除,并更新connCount的值。KadDHT在收到断开连接的通知后,将通过routingTable调用Remove方法,将该节点的信息从K-Buckets中移除。
步骤1023、当节点收到路由查询的响应消息时,将调用KadDHT类的Update方法更新routingTable,并执行KAD网络新增邻居节点的交互。
图7是本发明实施例提供的一种KAD网络新增邻居节点的交互过程示意图。参照图7所示,具体包括:
第一步,检查K-Buckets中是否存在未连接的节点。若已连接,则将其标记为邻居节点;若未连接,则执行下一步。
第二步,节点A发起建立邻居关系的请求,与节点B建立连接。
第三步,节点B通过判断节点A的三元组信息是否在自己的K-Buckets中来决定是否接受节点A发起的建立邻居关系的请求:若在,则接受该请求,并通过Protect方法将节点A标记为邻居节点;若不在,则按KAD网络中K-Buckets的更新机制,试图将节点A的三元组信息插入到自己的K-Buckets中:若插入成功,则接受该请求,并通过Protect方法将节点A标记为邻居节点;若插入失败,则检查自己的并发连接数是否已经达到最大值:若未达到,则接受该请求;若达到,则拒绝该请求。
第四步,节点A根据节点B返回的处理结果进行相应的处理:若节点B接受了请求,则通过Protect方法将其标记为邻居节点;若节点B拒绝了请求,则记录本次请求的时间。
步骤S103,基于预先设计的延迟敏感的路由节点选择算法,同时以所述KAD网络中节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,计算所述本地节点的线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点。
参照图5所示,在现有Kad协议的设计中,每个节点将从本地K-Buckets中选择与目标节点Node ID异或距离最近的α个节点作为下一跳的路由节点,是一种完全基于节点间的逻辑距离的选择方式。虽然这种方式能够使得查询请求以逻辑上最短的路径路由到最终的节点,但在部分情况下,最短的逻辑距离组成的最短路径并不一定代表最短的物理距离,这种方法并不能最大程度地获得最低的网络连接延迟。
如图8所示,若节点A与节点B位于中国,节点C、D和E位于阿根廷,节点B、C、D和E的三元组信息均在节点A的同一个K-Bucket中。某一时刻,节点A发起对某一目标节点的查询,假设该目标节点的NodeID与节点B、C、D和E所在的K-Bucket中的节点NodeID间的异或距离最近,则节点A将按照异或距离选择节点C、D和E作为第一跳路由节点,并向他们发送查询请求。这种情况下,虽然节点C、D和E在逻辑上比节点B更接近目标节点,但节点A与节点C、D和E之间网络延迟(≥300ms)却远远大于节点A与节点B之间的网络延迟(30ms)。在本次Kad协议执行的过程中,若在第一跳路由中选择节点A作为其中的一个路由节点,大概率能降低本次路由查询所需的时间。
具体到本发明实施例中来看,若节点A’发起对目标节点F’的查询,根据逻辑距离只跳转1次就选择了与目标节点F’的异或距离最近的节点B’,建立网络连接的路径A’→B’→F’,只需要2跳,建立网络间接花费的时间为500ms;假设综合考虑了路由节点与当前节点的网络延迟,最终得到的路径为A’→C’→D’→E’→F’,需要4跳,但是实际花费的时间仅为200ms。
表2是本发明实施例提供的一种延迟敏感的路由节点选择算法。
表2
参照表2所示,在本发明提供的一种优选实施例中,所述起始节点通过测量节点自身和本地K-Buckets中每一个节点之间的RTT值,以获知所述起始节点与本地K-Buckets中所有候选节点之间的网络延迟,具体包括:初始化所述KAD网络中每个节点的RTT为0;启动子程序对RTT值为0的节点进行网络延迟的测试;在每一次执行Kad协议的过程中,更新起始节点与路由节点间的RTT值;
基于所述延迟敏感的路由节点选择算法,当所述起始节点执行Kad协议时,从本地K-Buckets中选择第一跳的α个路由节点,具体包括:所述起始节点根据其节点唯一标识Node ID与所述目标节点Node ID之间的异或距离定位K-Bucket,获得候选节点的集合candidate Peers;对所述candidate Peers中的所有节点按优先级的高低进行降序排序;得到排序后的列表sorted Candidate Peers;从所述sorted Candidate Peers中选择优先级最高的count个节点作为路由节点并返回;其中,节点的优先级越高,说明选择其作为路由节点能够更有效的降低本次路由查询执行所需的时间。
在本发明提供的一种优选实施例中,参照如下计算公式,对任意两个候选节点与所述本地节点的连接优先级高低进行比较,同时以节点间的网络延迟和节点唯一标识NodeID异或距离为参考值进行计算:
其中,r为每一跳路由所需的平均RTT数;b为每一跳路由在逻辑距离上向目标节点Node ID逼近的平均速度;c1为节点p1的Node ID与目标节点Node ID之间的公共前缀长度CPL(Common Prefix Length),CPL越大,异或距离越近;c2为节点p2的Node ID与目标节点Node ID之间的CPL;r1为节点p1与本地节点间的RTT;r2为节点p2与本地节点间的RTT;l为本地节点与K-Buckets中所有节点之间RTT的平均值,用于估计每跳查询的平均网络延迟,也可以是经过验证的经验值,计算时需排除RTT值异常的节点;n1为节点p1的邻居节点附加值,若p1是邻居节点,取值为1,否则为0,该取值方式的原因在于本地节点与邻居节点通信不需要再次建立连接,可以节省至少1个RTT的时间;n2为节点p2的邻居节点附加值,取值同p1所选择的方法;p为优先级比较结果:p若小于0,则说明节点p1的优先级低于p2;若等于0,则说明优先级相同,优先选则异或距离较近的节点;若大于0,则说明节点p1的优先级高于p2。
图9是本发明实施例提供的一种KAD网络延迟敏感的路由节点选择算法相关类的UML图,参照图8所示,Kad协议类KadDHT用于远端测试节点是否在线以及本地节点与远端节点的RTT值;路由表类RoutingTable用于从K-Buckets中选择查询目标target时优先级最高的count数量的节点;指标类Metrics实现了Metrics接口。
步骤S104,基于递归式Kad协议,令每一跳路由节点从本地K-Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果,以此减少将中间结果回传给起始节点所需的时间。
如图10所示,在现有的迭代式Kad协议中,起始节点A需要连接IP地址和端口未知的目标节点F。节点A作为路由查询的发起者,首先从自己的K-Buckets中选择与节点F的Node ID异或距离最近的三个节点B1、B2和B3,采用并发的方式向他们同时发起第一跳查询请求。节点B1、B2和B3收到请求后分别将自己K-Buckets中与节点F的Node ID异或距离最近的K个节点的三元组信息作为响应消息返回给节点A。节点A收到响应消息后,再从响应消息中选择与节点F的Node ID异或距离最近的3个节点C1、C2和C3,向他们发起第二跳查询请求。需要注意的是,为了加快路由查询过程,C1,C2和C3并不是同时选择出来的。假如节点B1最先将响应消息返回给节点A,则节点A在收到节点B1的响应消息后将立即选择C1作为下一跳的路由节点,并立刻向其发送查询请求。换而言之,节点A在选择C1时不必等待B2,B3响应,只要保证任意时刻的查询的并发度为3即可。如此往复,直到响应给节点A的消息中包含目标节点B的三元组信息,则视为查询成功,完成本次查询;或者无法找到下一跳路由节点时,则视为查询失败,完成本次查询。由此可见,查询是迭代进行的,第一跳路由节点将查询请求路由到第二跳路由节点,第二跳路由节点再将查询请求路由到第三跳路由节点,如此往复,直到查询结束。
图11示出了本发明实施例提供的一种递归式Kad协议执行过程的示意图。参照图10所示,本发明实施例提出了一种递归式Kad协议,在节点B1、B2和B3分别收到查询请求并查询完成后,将直接在本地转发查询请求至C1、C2和C3,并依次向下转发查询,直至查询到目标节点E2的三元组信息,返回结果至节点A,建立起始节点A和目标节点E2之间的连接。这样做可以减少迭代式Kad协议每次都需要节点A重新响应后才能由节点A继续发出查询请求浪费的时间,进一步降低KAD网络节点路由查询的时间开销,降低网络连接的延迟。
每次在本发明提供的一种优选实施例中,具体采用如下做法:
第一步,所述起始节点选择出α个第一跳路由节点后,分别与α个所述第一跳路由节点建立可靠的加密连接,将查询请求并发地发送给α个所述第一跳路由节点;
第二步,α个所述第一跳路由节点在收到查询请求后,在自身K-Buckets中查询是否包含目标节点的三元组信息,并返回查询结果;若所述查询结果为是,则将所述目标节点的三元组信息返回所述起始节点,同时结束对后续候选节点的查询;若查询结果为否,则采用选择所述第一跳路由节点所采用的选择方法,选择出α个第二跳路由节点,并将查询请求并发地发送给α个所述第二跳路由节点;其中,所述目标节点的三元组信息包括:所述目标节点的NodeID信息、所述目标节点的IP地址、所述目标节点的端口号;
同时,起始节点接收到所述查询结果后,若所述查询结果为是,则结束路由查询,同时根据所述目标节点的三元组信息,将所述目标节点的IP地址和端口号返回给上层的调用程序,在所述调用程序的支持下,与所述目标节点建立连接;若所述查询结果为否,则继续等待查询结果;
第三步:α个所述第二跳路由节点在收到查询请求后,重复第二步所述的内容;直至第N跳路由节点的K-Buckets中所有候选节点均已发送过查询请求,则查询失败,并将查询失败的结果消息返回给起始节点,结束查询。
在本发明提供的一种优选实施例中,每一跳路由节点返回查询结果,同时将自己K-Buckets中离目标节点NodeID异或距离最近的k个节点的三元组信息返回给起始节点,起始节点收到第一跳路由节点返回的距离更近的节点信息后,按照Kad协议中规定的规则更新K-Buckets,并判断是否查询成功。
在本发明提供的一种优选实施例中,在所述起始节点和所有路由节点发起的每一次所述查询请求中,携带目标节点的Node ID、查询发起者的Node ID、本次查询发起时的时间戳信息,以避免在同一个起始节点发起的同一次查询中,向同一个路由节点发起重复的查询请求。具体地,如果已经处理过同样的查询请求,则通知上一跳路由节点本次请求属于重复请求,不做进一步处理;如果未处理过同样的查询请求,则将其记录在历史请求列表中,并正常执行递归式的路由查询。由于每个查询请求的有效时间是固定的,因此,每一个节点会定时将历史记录中已经超时的记录删除,以避免占用不必要的存储资源。
图12是本发明实施例提供的一种递归式Kad协议相关类的UML图。参照图12所示,其中各个类的作用如下:
Kad协议类KadDHT用于实现递归式的Kad协议;
路由表类RoutingTable用于实现对K-Buckets的相关操作;
递归式查询类dhtRecursiveQuery定义了与一次路由查询相关的数据结构;
递归式查询运行器类dhtRecursiveQueryRunner实现了对递归式查询dhtRecursiveQuery的一次具体的执行;
查询结果类dhtQueryResult用于记录一次路由查询的结果;
查询元数据类queryMetaData用于记录一次路由查询过程中的元数据;
查询的标识类queryID用于唯一的标识一次路由查询;
节点信息册类peerstore用于存储节点相关的所有信息;
地址信息类AddrInfo用于记录一个节点的网络信息。
步骤S105,根据所述目标节点的查询结果,建立所述起始节点和所述目标节点之间的加密通信连接。
可以看出,本发明提供的上述方法实施例,首先,采用竞速的方式,从QUIC协议和TCP+TLS协议中选择延迟较低的协议作为当次通信的协议;其次,通过自定义的邻居节点管理机制在节点之间建立更多的长连接,基于延迟敏感的路由节点选择算法,综合考量节点间的网络延迟和Node ID异或距离,选择路由节点,基于递归式Kad协议,由路由节点转发查询请求,减少节点路由查询时间;最终,在保证通信连接安全性的前提下,实现KAD网络节点的快速路由,有效地降低KAD网络的通信连接延迟。
实施例二
图13是本发明提供的一种实现KAD网络节点快速路由的系统的结构框图。如图13所示,本发明提供的系统可以应用于可以应用于KAD网络,具体的系统包括:
协议竞选模块201,用于所述KAD网络节点之间必须在加密通信信道中传输数据,当本地节点需要与某个节点进行通信时,由所述本地节点向所述目标节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议。
邻居节点管理模块202,用于基于自定义的邻居节点管理机制,根据所述KAD网络中节点的节点唯一标识Node ID长度和线性路由表K-Bucket大小,计算所述KAD网络中每个节点的邻居节点的数量,所述每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密通信连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是所述本地节点的邻居节点。
路由节点选择模块203,用于基于预先设计的延迟敏感的路由节点选择算法,同时以所述KAD网络中节点间的网络延迟和节点唯一标识Node ID异或距离为参考值,计算所述本地节点的线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点。
路由查询管理模块204,用于基于递归式Kad协议,令每一跳路由节点从本地K-Buckets中选取下一跳路由节点,并直接向其转发查询请求,返回目标节点的查询结果,以此减少将中间结果回传给起始节点所需的时间。
网络连接模块205,用于根据所述目标节点的查询结果,建立所述起始节点和所述目标节点之间的加密通信连接。
可以看出,本发明提供的上述系统实施例,首先,采用竞速的方式,从QUIC协议和TCP+TLS协议中选择延迟较低的协议作为当次通信的协议;其次,通过自定义的邻居节点管理机制在节点之间建立更多的长连接,基于延迟敏感的路由节点选择算法,综合考量节点间的网络延迟和Node ID异或距离,选择路由节点,基于递归式Kad协议,由路由节点转发查询请求,减少节点路由查询时间;最终,在保证通信连接安全性的前提下,实现KAD网络节点的快速路由,有效地降低KAD网络的通信连接延迟。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种实现KAD网络节点快速路由的方法和一种实现KAD网络节点快速路由的系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种实现KAD网络节点快速路由的方法,其特征在于,所述方法包括:
所述KAD网络节点之间在加密通信信道中传输数据,当本地节点需要与其他节点进行通信时,由所述本地节点向其他节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议;
基于自定义的邻居节点管理机制,使所述KAD网络中每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是本地节点的邻居节点;
基于预先设计的延迟敏感的路由节点选择算法,本地节点测量自身与本地线性路由表K-Buckets中所有候选节点之间的网络延迟,并计算与所述候选节点之间的节点唯一标识Node ID异或距离,同时以所述网络延迟和所述节点唯一标识Node ID异或距离为参考值,计算所述本地节点的本地线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点;
基于递归式Kad协议,起始节点发出对目标节点的路由查询请求,每一跳路由节点从本地线性路由表K-Buckets中选取下一跳路由节点,并直接向所述下一跳路由节点转发所述路由查询请求,最终返回所述目标节点的路由查询结果,以此减少将中间结果回传给起始节点所需的时间;
根据所述目标节点的路由查询结果,建立所述起始节点和所述目标节点之间的加密连接。
2.根据权利要求1所述的方法,其特征在于,所述KAD网络节点之间在加密通信信道中传输数据,当本地节点需要与其他节点进行通信时,由所述本地节点向其他节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议,包括:
初始化分布式账本的网络模块,使每个节点在底层通信协议上同时支持TCP+TLS协议和QUIC协议;通过在配置文件中配置参数quic为true,将QUIC协议设置为节点间的默认的通信协议;本地节点同时向目标节点同时发送TCP连接请求和QUIC连接请求;所述网络模块的端口同时监听所有外部IP的TCP连接请求和QUIC连接请求,获取每次握手数据传输的时间戳,在连接建立完毕后,由本地节点分别计算并比较TCP协议和QUIC协议下握手数据传输的RTT值,若QUIC协议下的RTT值不大于3倍TCP协议下的RTT值,则使用默认的QUIC协议作为本次连接的通信协议;若QUIC协议下的RTT值大于3倍TCP协议下的RTT值,则回退到TCP+TLS协议作为本次连接的通信协议。
3.根据权利要求1所述的方法,其特征在于,基于预先设计的延迟敏感的路由节点选择算法,本地节点测量自身与本地线性路由表K-Buckets中所有候选节点之间的网络延迟,并计算与所述候选节点之间的节点唯一标识Node ID异或距离,同时以所述网络延迟和所述节点唯一标识Node ID异或距离为参考值,计算所述本地节点的本地线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点,包括:
所述起始节点通过测量节点自身和本地K-Buckets中每一个节点之间的RTT值,以获知所述起始节点与本地K-Buckets中所有候选节点之间的网络延迟;
基于所述延迟敏感的路由节点选择算法,当所述起始节点执行Kad协议时,从本地K-Buckets中选择第一跳的α个路由节点。
4.根据权利要求3所述的方法,其特征在于,所述起始节点通过测量节点自身和本地K-Buckets中每一个节点之间的RTT值,以获知所述起始节点与本地K-Buckets中所有候选节点之间的网络延迟,包括:
初始化所述KAD网络中每个节点的RTT为0;启动子程序对RTT值为0的节点进行网络延迟的测试;在每一次执行Kad协议的过程中,更新起始节点与路由节点间的RTT值。
5.根据权利要求3所述的方法,其特征在于,基于所述延迟敏感的路由节点选择算法,当所述起始节点执行Kad协议时,从本地K-Buckets中选择第一跳的α个路由节点,包括:
所述起始节点根据其节点唯一标识Node ID与所述目标节点Node ID之间的异或距离定位K-Bucket,获得候选节点的集合candidate Peers;对所述candidate Peers中的所有节点按优先级的高低进行降序排序;得到排序后的列表sorted Candidate Peers;从所述sorted Candidate Peers中选择优先级最高的count个节点作为路由节点并返回;其中,节点的优先级越高,说明选择其作为路由节点能够更有效的降低本次路由查询执行所需的时间。
6.根据权利要求5所述的方法,其特征在于,对所述candidate Peers中的所有节点按优先级的高低进行降序排序,包括:
参照如下计算公式,对任意两个候选节点与所述本地节点的连接优先级高低进行比较,同时以节点间的网络延迟和节点唯一标识Node ID异或距离为参考值进行计算:
其中,r为每一跳路由所需的平均RTT数;b为每一跳路由在逻辑距离上向目标节点NodeID逼近的平均速度;c1为节点p1的Node ID与目标节点Node ID之间的公共前缀长度CPL(Common Prefix Length),CPL越大,异或距离越近;c2为节点p2的Node ID与目标节点NodeID之间的CPL;r1为节点p1与本地节点间的RTT;r2为节点p2与本地节点间的RTT;l为本地节点与K-Buckets中所有节点之间RTT的平均值,用于估计每跳查询的平均网络延迟,也可以是经过验证的经验值,计算时需排除RTT值异常的节点;n1为节点p1的邻居节点附加值,若p1是邻居节点,取值为1,否则为0,该取值方式的原因在于本地节点与邻居节点通信不需要再次建立连接,可以节省至少1个RTT的时间;n2为节点p2的邻居节点附加值,取值同p1所选择的方法;p为优先级比较结果:p若小于0,则说明节点p1的优先级低于p2;若等于0,则说明优先级相同,优先选则异或距离较近的节点;若大于0,则说明节点p1的优先级高于p2。
7.根据权利要求1所述的方法,其特征在于,基于递归式Kad协议,起始节点发出对目标节点的路由查询请求,每一跳路由节点从本地线性路由表K-Buckets中选取下一跳路由节点,并直接向所述下一跳路由节点转发所述路由查询请求,最终返回所述目标节点的路由查询结果,以此减少将中间结果回传给起始节点所需的时间,包括:
第一步,所述起始节点选择出α个第一跳路由节点后,分别与α个所述第一跳路由节点建立可靠的加密连接,将查询请求并发地发送给α个所述第一跳路由节点;
第二步,α个所述第一跳路由节点在收到查询请求后,在自身K-Buckets中查询是否包含目标节点的三元组信息,并返回查询结果;若所述查询结果为是,则将所述目标节点的三元组信息返回所述起始节点,同时结束对后续候选节点的查询;若查询结果为否,则采用选择所述第一跳路由节点所采用的选择方法,选择出α个第二跳路由节点,并将查询请求并发地发送给α个所述第二跳路由节点;其中,所述目标节点的三元组信息包括:所述目标节点的NodeID信息、所述目标节点的IP地址、所述目标节点的端口号;
同时,起始节点接收到所述查询结果后,若所述查询结果为是,则结束路由查询,同时根据所述目标节点的三元组信息,将所述目标节点的IP地址和端口号返回给上层的调用程序,在所述调用程序的支持下,与所述目标节点建立连接;若所述查询结果为否,则继续等待查询结果;
第三步:α个所述第二跳路由节点在收到查询请求后,重复第二步所述的内容;直至第N跳路由节点的K-Buckets中所有候选节点均已发送过查询请求,则查询失败,并将查询失败的结果消息返回给起始节点,结束查询。
8.根据权利要求7所述的方法,其特征在于,还包括:
每一跳路由节点返回查询结果,同时将自己K-Buckets中离目标节点NodeID异或距离最近的k个节点的三元组信息返回给起始节点,起始节点收到第一跳路由节点返回的距离更近的节点信息后,按照Kad协议中规定的规则更新K-Buckets,并判断是否查询成功。
9.根据权利要求7或8所述的方法,其特征在于,还包括:
在所述起始节点和所有路由节点发起的每一次所述查询请求中,携带目标节点的NodeID、查询发起者的NodeID、本次查询发起时的时间戳信息,以避免在同一个起始节点发起的同一次查询中,向同一个路由节点发起重复的查询请求。
10.一种实现KAD网络节点快速路由的系统,其特征在于,所述系统包括:
协议竞选模块,用于所述KAD网络节点之间在加密通信信道中传输数据,当本地节点需要与其他节点进行通信时,由所述本地节点向其他节点同时发送TCP连接请求和QUIC连接请求,分别计算TCP协议和QUIC协议下握手数据传输的RTT值,根据所述RTT值的数值大小的比较,从TCP+TLS协议和QUIC协议中选择一个延迟更低的协议作为本次连接的网络传输协议;
邻居节点管理模块,用于基于自定义的邻居节点管理机制,使所述KAD网络中每个节点与本地线性路由表K-Buckets中的所有节点建立并保持加密连接,以使所述KAD网络中任意一次路由查询的第一跳路由节点都是本地节点的邻居节点;
路由节点选择模块,用于基于预先设计的延迟敏感的路由节点选择算法,本地节点测量自身与本地线性路由表K-Buckets中所有候选节点之间的网络延迟,并计算与所述候选节点之间的节点唯一标识Node ID异或距离,同时以所述网络延迟和所述节点唯一标识Node ID异或距离为参考值,计算所述本地节点的本地线性路由表K-Buckets中所有候选节点的优先级,根据所述候选节点的优先级排序,选择α个所述候选节点作为第一跳路由节点;
路由查询管理模块,用于基于递归式Kad协议,起始节点发出对目标节点的路由查询请求,每一跳路由节点从本地线性路由表K-Buckets中选取下一跳路由节点,并直接向所述下一跳路由节点转发所述路由查询请求,最终返回所述目标节点的路由查询结果,以此减少将中间结果回传给起始节点所需的时间;
网络连接模块,用于根据所述目标节点的路由查询结果,建立所述起始节点和所述目标节点之间的加密连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010747529.5A CN112039775B (zh) | 2020-07-29 | 2020-07-29 | 一种实现kad网络节点快速路由的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010747529.5A CN112039775B (zh) | 2020-07-29 | 2020-07-29 | 一种实现kad网络节点快速路由的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112039775A true CN112039775A (zh) | 2020-12-04 |
CN112039775B CN112039775B (zh) | 2022-09-06 |
Family
ID=73583539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010747529.5A Active CN112039775B (zh) | 2020-07-29 | 2020-07-29 | 一种实现kad网络节点快速路由的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112039775B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112688870A (zh) * | 2020-12-28 | 2021-04-20 | 杭州趣链科技有限公司 | 一种路由方法、路由装置及节点设备 |
CN113641869A (zh) * | 2021-10-13 | 2021-11-12 | 北京大学 | 一种人机物融合环境下的数字对象访问方法和系统 |
CN113934933A (zh) * | 2021-10-15 | 2022-01-14 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN115412493A (zh) * | 2022-06-30 | 2022-11-29 | 中国电子科技集团公司第五十四研究所 | 一种支持Kademlia网络的高效节点查询方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064649A (zh) * | 2007-02-02 | 2007-10-31 | 华为技术有限公司 | 选举超级节点、搜索网络节点或资源的方法、装置及系统 |
CN101582845A (zh) * | 2009-06-16 | 2009-11-18 | 湖北工业大学 | 一种快速定位对等网络目标节点标识的方法 |
CN105827537A (zh) * | 2016-06-01 | 2016-08-03 | 四川大学 | 一种基于quic协议的拥塞改进方法 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
US20190116123A1 (en) * | 2017-10-16 | 2019-04-18 | Verizon Digital Media Services Inc. | Load Balancing of Connectionless Traffic |
CN109787962A (zh) * | 2018-12-28 | 2019-05-21 | 贵州蓝石科技有限公司 | 一种基于多协议双向单连接的p2p软件识别方法 |
-
2020
- 2020-07-29 CN CN202010747529.5A patent/CN112039775B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064649A (zh) * | 2007-02-02 | 2007-10-31 | 华为技术有限公司 | 选举超级节点、搜索网络节点或资源的方法、装置及系统 |
CN101582845A (zh) * | 2009-06-16 | 2009-11-18 | 湖北工业大学 | 一种快速定位对等网络目标节点标识的方法 |
CN105827537A (zh) * | 2016-06-01 | 2016-08-03 | 四川大学 | 一种基于quic协议的拥塞改进方法 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
US20190268797A1 (en) * | 2016-11-11 | 2019-08-29 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
US20190116123A1 (en) * | 2017-10-16 | 2019-04-18 | Verizon Digital Media Services Inc. | Load Balancing of Connectionless Traffic |
CN109787962A (zh) * | 2018-12-28 | 2019-05-21 | 贵州蓝石科技有限公司 | 一种基于多协议双向单连接的p2p软件识别方法 |
Non-Patent Citations (2)
Title |
---|
ZHOU YA等: "Kad-D:An Improved Model Based on Kademlia", 《PROCEEDINGS OF THE THIRD INTERNATIONAL CONFERENCE ON MULTIMEDIA INFORMATION NETWORKING AND SECURITY(MINES 2011)》 * |
张泰: "结构化P2P网络关键技术研究", 《中国博士学位论文电子期刊网》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112688870A (zh) * | 2020-12-28 | 2021-04-20 | 杭州趣链科技有限公司 | 一种路由方法、路由装置及节点设备 |
CN113641869A (zh) * | 2021-10-13 | 2021-11-12 | 北京大学 | 一种人机物融合环境下的数字对象访问方法和系统 |
US11496562B1 (en) | 2021-10-13 | 2022-11-08 | Peking University | Method and system for accessing digital object in human-cyber-physical environment |
JP7202558B1 (ja) | 2021-10-13 | 2023-01-12 | 北京大学 | ヒューマンサイバーフィジカル融合環境におけるデジタルオブジェクトアクセス方法及びシステム |
JP2023058423A (ja) * | 2021-10-13 | 2023-04-25 | 北京大学 | ヒューマンサイバーフィジカル融合環境におけるデジタルオブジェクトアクセス方法及びシステム |
CN113934933A (zh) * | 2021-10-15 | 2022-01-14 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN113934933B (zh) * | 2021-10-15 | 2024-04-05 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN115412493A (zh) * | 2022-06-30 | 2022-11-29 | 中国电子科技集团公司第五十四研究所 | 一种支持Kademlia网络的高效节点查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112039775B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112039775B (zh) | 一种实现kad网络节点快速路由的方法和系统 | |
US7881223B2 (en) | Method for on demand distributed hash table update | |
US8817798B2 (en) | Constraining topology size and recursively calculating routes in large networks | |
US11303553B1 (en) | Return path trace | |
WO2020001393A1 (zh) | 发送网络性能参数、计算网络性能的方法和网络节点 | |
US20090323700A1 (en) | Method of determining a routing path | |
US9559909B2 (en) | Identifying an egress port of a device | |
US20190140949A1 (en) | Path determining method, apparatus, and system | |
WO2018076765A1 (zh) | 云计算系统的内容分发方法及装置、计算节点及系统 | |
JP2018191290A (ja) | 負荷分散を実現するための方法、装置、およびネットワークシステム | |
JP7053901B2 (ja) | ループ回避通信方法、ループ回避通信デバイスおよびループ回避通信システム | |
US9160648B2 (en) | Content-centric network and method of performing routing between domains therefor | |
CN111200622B (zh) | 一种资源传输方法及装置、存储介质 | |
JP6142699B2 (ja) | 通信システム | |
US8045545B2 (en) | Intelligent database exchange for OSPF | |
EP4152701A1 (en) | Routing processing method and related device | |
JP7366283B2 (ja) | ルート更新方法及び装置 | |
US20150381775A1 (en) | Communication system, communication method, control apparatus, control apparatus control method, and program | |
CN103001987B (zh) | 一种数据处理方法和数据处理节点 | |
KR101541168B1 (ko) | 소프트웨어 정의 네트워크 환경에서 컨트롤러의 플로우에 대한 경로 제어방법 | |
US20200341968A1 (en) | Differential Update of Local Cache from Central Database | |
WO2016177135A1 (zh) | 资源管理方法、装置及控制终端 | |
US20150200813A1 (en) | Server connection apparatus and server connection method | |
WO2014040409A1 (zh) | 路由管理的方法和节点 | |
JP2010206736A (ja) | ネットワークシステム、その通信方法、ルータ、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |