CN115914074A - 点对点网络报文的传递方法、路由设备及计算机存储介质 - Google Patents

点对点网络报文的传递方法、路由设备及计算机存储介质 Download PDF

Info

Publication number
CN115914074A
CN115914074A CN202111165924.3A CN202111165924A CN115914074A CN 115914074 A CN115914074 A CN 115914074A CN 202111165924 A CN202111165924 A CN 202111165924A CN 115914074 A CN115914074 A CN 115914074A
Authority
CN
China
Prior art keywords
protocol
address
message
information
routing
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.)
Pending
Application number
CN202111165924.3A
Other languages
English (en)
Inventor
林祥兴
艾本仁
杜聚龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shujie Shenzhen Technology Co ltd
Original Assignee
Shujie Shenzhen Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shujie Shenzhen Technology Co ltd filed Critical Shujie Shenzhen Technology Co ltd
Priority to CN202111165924.3A priority Critical patent/CN115914074A/zh
Publication of CN115914074A publication Critical patent/CN115914074A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种点对点网络报文的传递方法、路由设备和计算机存储介质;其中,P2P网络中设置有P2P路由设备,所述传递方法包括:所述P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,与相应的P2P节点建立邻接关系,和/或等待其它P2P节点和本P2P路由设备建立邻接关系;所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点。本申请实施例可以在不改变P2P网络协议的情况下,可以通过P2P路由设备加速P2P报文传递,适用但不限于P2P网络需要信息传播与同步的场景。

Description

点对点网络报文的传递方法、路由设备及计算机存储介质
技术领域
本文涉及通信领域,尤指一种点对点网络报文的传递方法路由设备和计算机存储介质。
背景技术
P2P(Peer to Peer,点对点)网络经过多年发展,形成各种不同的类型的P2P协议。一般来说,P2P网络共同的特点是都有P2P的Peer,即P2P节点,作为P2P网络的参与基本单元。P2P网络内的节点通过P2P协议报文传递消息。从传播逻辑上分,报文传递的信息可分为以广泛传播到每个节点或多个节点为目的的消息和传送到某个特定节点为目的的消息,为方便起见本文把前者称为P2P广播报文或广播消息,后者称为P2P单播报文或单播消息。目前的P2P网络应用广泛,可用于分布式文件存储、CDN应用、P2P组播、物联网、区块链等场景。
发明内容
本申请提供了一种点对点网络报文的传递方法、路由设备和计算机存储介质,可以提高P2P网络报文的传递效率、降低P2P节点的网络流量。
本申请提供了一种P2P网络报文的传递方法,P2P网络中设置有P2P路由设备,所述方法包括:
所述P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,与相应的P2P节点建立邻接关系,和/或等待其它P2P节点和本P2P路由设备建立邻接关系;
所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点。
本申请还提供了一种路由设备,包括:存储器、处理器;
所述存储器用于保存进行点对点网络报文传递的程序;
所述处理器用于读取执行所述进行点对点网络报文传递的程序,实现上述的P2P网络报文的传递方法。
本申请还提供了一种计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于在被执行时,实现上述的P2P网络报文的传递方法。
本申请还提供了一种路由设备,用于实现上述的P2P网络报文的传递方法,包括:上层处理模块、路由处理模块、设备链路信息模块、转发模块、一个或多个协议端点;
所述协议端点用于处理数据转发路径上的P2P协议报文;协议端点所采用的P2P协议处理软件/模块和该协议端点要转发到的P2P节点匹配;
所述协议端点之间、所述协议端点和所述设备链路信息模块之间、路由设备之间通过所述转发模块互联互通;
所述设备链路信息模块用于进行链路信息的处理,以及形成并维护邻接表;并通过所述转发模块对接所述协议端点,收集和提供邻接信息;对接所述路由处理模块,提供邻接信息;
所述路由处理模块用于进行路由信息的生成和同步更新;
所述上层处理模块用于配置管理路由设备。
与相关技术相比,本申请实施例通过在P2P网络中设置P2P路由设备,所述P2P路由设备与所述P2P网络中的P2P节点建立邻接关系;所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点,可以在不改变P2P网络协议的情况下,可以通过P2P路由设备加速P2P报文传递,适用但不限于P2P网络需要信息传播与同步的场景。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书、权利要求书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1是本申请实施例的P2P路由设备单域布设方式的示意图;
图2是本申请实施例的P2P路由设备多域布设方式的示意图;
图3是本申请实施例的P2P路由设备的内部逻辑的示意图;
图4是本申请实施例的P2P网络报文的传递方法的流程图;
图5是单域布设的P2P路由设备传递P2P广播报文的示例的示意图;
图6是多域布设的P2P路由设备传递P2P广播报文的示例的示意图;
图7是单域布设的P2P路由设备传递P2P单播报文的示例的示意图;
图8是多域布设的P2P路由设备传递P2P单播报文的示例的示意图;
图9是一个示例中协议端点注册的示意图;
图10是一个示例中邻接信息查询的示意图;
图11是一个示例中邻接表查询的示意图;
图12是一个示例中邻接信息变化上报的示意图;
图13是本申请实施P2P路由设备的一种实现示例示意图;
图14是一个P2P路由设备下进行P2P广播报文转发的示例的示意图;
图15是一个P2P路由设备下进行P2P单播报文转发的示例的示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本申请实施例中,在P2P网络中设置P2P路由设备,选择合适的协议处理端点对P2P协议加以探测、链路建立、内容处理、报文转发等操作,可适用于各种具体的P2P网络,P2P路由设备能够既加快整体转发报文速度又不破坏原有P2P协议。
所述P2P路由设备可以根据接入的P2P节点分布特点、处理设备的接入能力采用多种布设方式,包括单域布设和多域布设方式。分别如图1和图2所示,单域布设方式中的P2P路由设备为单域处理设备,接入所服务的P2P节点(如图1中的A、B、C、D),P2P路由设备的实际IP地址、P2P地址、物理线路接口都可以是多个并可分布于不同的物理位置,比如利用多个数据中心布设一个P2P路由设备;多域布设方式是采用分布式的多个P2P路由设备的布设方式,由多台P2P路由设备组网来服务P2P节点(如图2中的A、B、C、D、E、F、G、H),P2P路由设备为多域转发设备,而P2P路由设备之间可用高速数据通道互联,这进一步的提高了网络的可扩展性,随着网络扩大,可通过增加P2P路由设备来增减网络性能和容量而对原有的网络设备和节点没有影响。
P2P链路是指一个P2P节点和另一个P2P节点之间直接相连并建立P2P邻接关系的连接。P2P链路包括开放型和加密型P2P链路。加密型P2P链路是指P2P邻接点之间数据采用加密通道传输的P2P链路;未加密的传输的P2P链路则称为开放型链路。现实网络中在加密型链路建立前,节点往往会以未加密的探测报文发送到目标节点协商后续建立起带有加密通道的邻接关系,然后在此链路上传输报文,这也归类到加密型P2P网络类型中。
如图3所示,P2P路由设备的内部逻辑可以分为P2P链路层、P2P路由层和应用处理层。图3中的A、B、C、D是P2P节点。
P2P链路层用于学习和发现和P2P路由设备在P2P协议意义上(而非IP连接意义上)直接邻接的P2P节点,这些P2P节点称为P2P路由设备的邻接点,简称邻接点,用于连接邻接点的P2P路由设备内的设备或模块称为协议端点。协议端点用于处理不同的P2P协议特性和加密型链路的加解密处理。通常P2P协议要求转发报文或发送报文时承载P2P协议报文内容的底层IP报文需要按照本地的P2P邻接点的通信信息适配,即承载P2P报文的IP报文中的源IP地址和端口设备为本节点的IP和端口,目标IP地址和端口设为邻接点的IP和端口,如果遇到有加密型链路P2P协议,还需要根据邻接点的加解密链路要求对收到的报文按收到的邻接点的加解密链路密钥解密处理,对发送的报文按照发送的邻接点的加解密链路密钥加密处理然后发送给它。协议端点需要如上所述地执行协议要求的转发协议报文或发送协议报文,本文以下为行文方便,描述协议端点转发或发送报文时即指按此要求处理的转发或发送。
本文中链路层信息包含协议端点和邻接点的P2P端口信息的关联关系,该关联关系称为邻接链路关系。P2P端口信息将在下文详细描述。
P2P链路层通过协议端点建立、维护、更新邻接关系并提供这些信息供P2P路由设备内部查询。
本文的P2P路由层用于学习和维护P2P地址或地址段和具体P2P路由设备之间的对应关系,并为P2P路由设备自身以及互联的P2P路由设备之间提供这些信息的查询。
当P2P网络使用P2P路由设备提供服务时,P2P路由设备生成一组该P2P网络协议对应的协议端点,这些端点各自有自己的P2P地址,用于和P2P网络内的P2P节点形成邻接关系并进行P2P协议通信。
P2P路由设备生成协议端点的方法可采用协议探测或预配置方式,协议探测方式,例如:由P2P路由设备设定一定范围的P2P协议集合,并对网络中的P2P报文进行监听分析,例如采用DPI(Deep Packet Inspection,深度报文解析)技术分析网络中的报文等方法,以获得网络中P2P节点协议详细信息,再根据这些信息生成相应适合该P2P网络协议的协议端点。预配置方式为:根据P2P路由设备的配置生成相应的协议端点。
为了让P2P网络内的P2P节点和协议端点建立邻接关系并维护邻接关系,可以采取3种方法配合使用:1)协议端点作为P2P网络的种子节点,或者在P2P网络提供的种子节点的初始连接节点列表中增加协议端点信息,作为其他P2P节点接入P2P网络的初始邻接点,这样新加入的P2P节点根据P2P协议就会主动尝试和协议端点建立P2P链路;2)协议端点通过学习和探测获得未建立邻接关系的P2P节点信息,之后,主动向目标P2P节点发送相应P2P网络协议的邻接建立协议报文来建立邻接关系,并周期性使用相应P2P网络协议的保活报文来维持邻接关系,通常没有专门保活报文的P2P网络协议可以采用向对方发送查询自己的P2P地址对应的通信地址的方法替代保活报文;3)收到P2P节点发起P2P邻接点列表查询时仅应答一组P2P路由设备特定地址分布的协议端点作为邻接点列表,分布方式应考虑具体P2P网络的寻址算法来设计。
本申请实施例中,P2P路由设备中可建立并维护如下三个表:
邻接表,记录不同P2P路由设备邻接点的P2P地址所对应的通信信息(包含所对应的协议端点的信息、所对应的P2P节点的信息包括IP地址及端口、以及P2P协议信息)。
映射表,记录目标P2P地址和能转发到该目标P2P地址的直连邻接点以及对应的协议端点这三者的信息。
路由表,记录P2P路由设备和其能转发的P2P地址,是P2P路由设备和其能转发到的P2P协议节点之间的关系表,其中包含有P2P路由设备直连的邻接点P2P地址以及通过直连邻接点能转发到的P2P地址。
路由表、映射表、邻接表将在下文详细描述。
如图4所示,本申请实施例的P2P网络报文的传递方法,包括:
步骤101,P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,与相应的P2P节点建立邻接关系,和/或等待其它P2P节点和本P2P路由设备建立邻接关系。
本申请实施例中,转发关系可以包括邻接表、映射表和路由表,通过这三个表来记录转发关系。
本申请实施例中,和P2P节点之间建立邻接关系可以看成是动态的、不断进行的过程,P2P路由设备刚加入P2P网络时没有和任何P2P节点建立邻接关系,之后则可以通过主动和/或被动方式不断去建立邻接关系,在主动和一个P2P节点建立邻接关系时,需要先探测或学习到该P2P节点的P2P地址和通信信息(如IP地址),然后和该P2P节点建立邻接关系;也可以通过将自身的协议端点的P2P地址和通信信息设置为种子节点、初始连接点、初始邻接表中节点、或通过已加入的网络的协议端点传递给其它P2P节点,来促使其它P2P节点主动和本设备建立邻接关系。如果对于直连邻接点的数量有限制,则可以在建立一定数量的邻接关系后暂停建立新的邻接关系,直到邻接点不足时再开始建立邻接关系。在建立邻接关系后,还要对邻接关系进行维护以保持一定的邻接点数量。
在一示例性实施例中,所述P2P路由设备配置为所述P2P节点的种子节点或初始连接点。可以在P2P网络设置一个或一组协议端点为种子节点,并在种子节点提供的初始的邻接表里设置一组协议端点信息;或者在已有的P2P网络中的种子节点处增加一组协议端点作为优先连接点,一般来说就是在种子节点的邻接表中优先位置增加这些协议端点。这样新加入的P2P节点就会根据P2P协议主动探测或尝试连接这些协议端点。通过以上行为协议端点可获得这些来探测或尝试连接的P2P节点信息并建立邻接关系。此外,协议端点还可以主动探测P2P网络节点,例如使用网络流量分析技术来探测相同P2P协议的IP地址/P2P地址,然后向该地址发起探测报文,建立邻接关系;根据转发的P2P查询报文通过报文中的邻接表/邻接点的拓扑信息来发现未建立邻接的P2P节点信息;根据P2P协议规则对特定的P2P地址发起探测报文或查询报文来获得特定的一批P2P地址信息;针对这些已经获得P2P节点信息的P2P节点但未和P2P路由设备建立邻接关系的P2P节点,可采用向目标P2P节点发送P2P协议邻接建立报文用以建立邻接关系。
在一示例性实施例中,设备初始化工作包括如下过程:
多域布设情况下,所述P2P路由设备与所述P2P网络中的其它P2P路由设备建立转发关系;
通过网络流量探测或预配置的方式生成特定的协议端点来处理该P2P网络的协议报文;其中,当协议端点对应的P2P协议采用加密型链路时,所述协议端点能够进行邻接线路的加解密处理。
在一示例性实施例中,P2P路由设备中的协议端点被设置为P2P网络的种子节点,或者该协议端点的信息被保存在P2P网络提供的种子节点的初始连接节点列表中;通过这种设置,其他新加入的P2P节点会主动连接本P2P路由设备并尝试建立邻接关系;
如果本P2P路由设备没有机会设置为种子节点或初始连接点列表中的节点,则按照具体P2P网络给出的信息设置该P2P网络的种子节点、初始连接点列表等,准备主动和其他P2P节点建立邻接关系。
在一示例性实施例中,P2P路由设备通过以下一种或多种方式学习所述P2P网络中P2P节点的转发关系和拓扑结构:
方式一、所述协议端点通过分析流经本协议端点的P2P报文(包括发给本协议端点的P2P报文或者通过本协议端点转发的P2P报文)中携带的以下一种或多种信息:P2P源地址信息、目标地址信息、邻接信息(报文中可能有邻接信息,也可能没有),学习拓扑结构和对应直连邻接点的转发关系,获得已建立邻接关系和未建立邻接关系的P2P节点的P2P地址和通信信息。其中,学习拓扑结构时,可以根据已经累积学习的拓扑结构,和新学习的报文中的邻接信息更新拓扑结构。
方式二、所述协议端点通过发起对未建立邻接关系的P2P地址的查询报文来主动探测目标P2P节点的通信信息。
方式三、所述协议端点向已经获得的第i层节点发送P2P协议的邻接表获取报文或能触发该节点发送邻接信息的报文,来获得第i+1层的P2P节点信息以扩展拓扑结构信息。
一种示例性实施例中,P2P路由设备与P2P网络中的P2P节点建立邻接关系可以包括:
所述协议端点设置为种子节点或初始连接点,该P2P网络中的新加入的P2P节点或已加入网络的节点重新建立邻接关系时,向协议端点发起邻接建立协议报文,从而建立邻接关系;
所述协议端点主动向已经学习到的P2P网络节点信息中未加入P2P路由设备的目标P2P节点发送相应P2P网络协议的邻接建立协议报文来建立邻接关系。
一种示例性实施例中,传递方法还包括:
所述P2P路由设备将直连邻接点数量维持在合适数量,比如将数量维持在预设范围内,如果邻接点数量过多(比如大于所述预设范围的上限值),则停止对于其中部分邻接点的保活操作;如果邻接点数量过少(比如小于所述预设范围的下限值),则所述P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,主动与未建立邻接关系的P2P节点建立邻接关系,和/或通过以下一种或多种方式来增加协议端点在P2P网络中的优先连接概率:主动发布仅包含协议端点的邻接表报文、应答报文中的最佳可达地址、邻接表信息中仅包含协议端点,并等待其它P2P节点和本P2P路由设备建立邻接关系;
其中,所述保活操作用于维护邻接关系,包括:
周期性使用相应P2P协议中专门的保活报文;如果P2P路由设备对应的P2P协议中没有专门的保活报文,则采用向需要保活的邻接点发送针对特定目标P2P地址的查询报文来维护邻接关系,该查询报文的目标P2P地址设为发送该报文的协议端点本身的P2P地址。
一种示例性实施例中,传递方法还包括:
所述协议端点通过主动发布仅包含协议端点的邻接表报文,向网络其他节点传播协议端点通信信息;
协议端点收到针对目标P2P地址的查询报文,则协议端点对目标地址发起查询,如果未得到目标地址信息,协议端点可将距离查询目标地址最近的协议端点信息作为该查询的应答返回,这些协议端点加入原始查询报文的节点的候选连接点中,该操作可用于增加直连的P2P节点数量;
协议端点收到邻接点信息获取报文,则协议端点可应答仅包含一组合适的P2P地址分布的协议端点的信息作为邻接点信息,有利于协议端点集合保持在P2P节点的优先连接列表中,该操作可用于增加直连的P2P节点数量;
本实施例中,可以通过主动向未建立邻接关系的节点发起邻接报文增加邻接关系,通过特殊的报文应答增加邻接点被其他P2P节点作为邻接点的概率。
本申请实施例中,P2P路由设备通过分析协议报文学习其中的网络拓扑结构、转发关系、P2P地址信息,而这些报文通过协议端点接收,这些报文可分为被动接收报文和主动创造条件接收报文;被动接收报文指的是分析流经协议端点的报文,其中P2P报文包含有源P2P地址和目标P2P地址,但由于P2P转发的原因,其中并不一定包含有这两者对应的通信信息例如IP地址;在收到P2P报文是原始节点发送P2P报文的情况下,例如收到原始节点查询特定P2P地址的报文,可学习到源P2P地址可通过哪个协议端点转发、还可以找到接收该报文的协议端点以及接收报文时对应的直连邻接点;在收到其他节点应答报文的情况下,可学习到报文中源P2P地址(例如对应原始报文的目标P2P地址)可通过哪个协议端点转发、还可以找到接收该报文的协议端点以及接收报文时对应的直连邻接点;如果报文中还包含有邻接关系表或者单独的邻接点信息,还可以分析出这些节点的关联的节点的邻接关系,系统设置由直连邻接点向外扩散的K层拓扑关系,直连邻接点以及由它向外扩散的K层网络拓扑关系将被学习到,注意,这个学习过程同时会生成映射表中的条目,这将在后文的映射表部分专门描述;主动创造条件接收报文是指通过协议端点主动发起协议流程操作而有意触发其他节点向协议端点返回报文,例如,向学习到的映射表中未学到拓扑结构的节点发出邻接表申请报文、查询通信信息报文、查询报文等等、甚至可以猜测网络中存在的P2P节点地址而向已知的P2P地址发起对该猜测地址的查询报文等来触发包含邻接表信息返回的方法;收到邻接点或者向外扩散的多层的节点递归返回报文时也按照上面的说明方式学习拓扑信息和映射表。
另一种主动创造条件接收报文的方法如下所述:
所述P2P路由设备当收到用于获取目标P2P地址对应的通信信息的查询报文时,使用所述目标P2P地址查找邻接表,如果能查找到包含该目标P2P地址的条目,则根据P2P协议应答该查询报文,返回查询到的通信信息;如果查找不到包含该目标P2P地址的条目,则P2P路由设备中的协议端点对该目标P2P地址发出递归查询报文,得到查询结果后应答所述查询报文,返回查询到的通信信息,如果都未查询到结果,则返回(该P2P协议意义上)离目标P2P地址最近的协议端点信息作为最佳可达地址;
其中,所述递归查询报文流经的协议端点通过所述递归查询报文学习网络拓扑结构和未建立邻接关系的P2P节点信息。对于这些报文,还是按照前述方法进行拓扑学习和生成映射表中的条目。
其中,邻接表是从邻接协议操作那学习的,建立邻接,不管是被动的还是主动连接其他节点,这些都是协议端点直接参与的,很容易学习到。
这里学习和邻接建立前学习是同时进行的,但邻接建立前的最重要信息这里不一定有,就是目标P2P地址的通信信息。建立邻接需要的是这个通信信息,所以,邻接建立前还需要一个步骤就是查询要建立邻接的P2P节点通信信息。
步骤102,所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点。
本申请实施例中,当P2P网络报文为广播型的P2P网络报文时,步骤102可以包括:
所述P2P路由设备为单域处理设备时,所述P2P路由设备如果确定所述P2P网络报文未被广播转发过,则将所述P2P网络报文发送给本域内除接收到所述P2P网络报文的直连邻接点(即针对这个广播报文而言,P2P路由设备通过该直连邻接点接收到该广播报文)之外的其他直连邻接点;
所述P2P路由设备为多域转发设备时,所述P2P路由设备如果确定所述P2P网络报文未被广播转发过,则将所述P2P网络报文发送给本域内除接收到所述P2P网络报文的直连邻接点之外的其他直连邻接点,以及相连的其他P2P路由设备,其他P2P路由设备继续将此报文转发其相邻的其他P2P路由设备和本域内直连邻接点。
其中,P2P网络报文未被广播转发过,可以是指在设定时间段内没有收到过该P2P网络报文。
其中,针对限制扇出数的广播型的P2P网络报文,保留P2P网络报文中的扇出数转发给直连的邻接点;
针对限制转发深度的广播型报文,P2P路由设备转发不进行转发深度计算,即:转发时不将转发深度减一。
本申请实施例中,P2P网络报文为单播型的P2P网络报文时,步骤102可以包括:
所述P2P路由设备为单域处理设备时,所述P2P路由设备的协议端点收到报文后根据报文中目标P2P地址首先查找邻接表;如果找到具有该目标P2P地址的条目,则根据找到的条目中记录的协议端点和邻接点的通信信息进行以下处理:如果找到的协议端点就是本协议端点,则根据找到的邻接点的通信信息将所述P2P网络报文传递至相应的P2P节点,其中,目标节点的通信信息可以包括目标节点的IP地址信息、端口信息以及P2P地址、P2P协议等信息。如果记录的不是本协议端点,则将该报文发送到所记录的协议端点(接收的协议端点将按上述方式传递);如果未找到具有该目标P2P地址的条目,则根据目标P2P地址继续查找P2P路由设备的映射表,如果找到具有该目标P2P地址的条目,并且映射表带有转发深度信息且命中多个不同转发深度的条目(一个目的地址可能有多个不同的转发深度的条目,对应不同的邻接点和协议端点),则优先选择转发深度小的条目,提取出协议端点和邻接点的信息,如果找到的协议端点是本协议端点,则按照找到的条目中记录的邻接点的通信信息,把报文发给相应的邻接点。如果不是本协议端点,则把报文发给找到的条目中记录的协议端点处理。
所述P2P路由设备为多域布设时,协议端点收到P2P网络报文,则根据该报文中的目标P2P地址按以下顺序处理:
查找本P2P路由设备的路由表中标记为直连路由的条目,如果找到,则查找本P2P路由设备的邻接表,根据找到的邻接表的条目把报文发送给对应的协议端点处理,或直接把报文发给邻接点(找到的条目中记录的协议端点就是本协议端点);
如果路由表中没有找到直连路由的条目,则查找路由表中标记为转发路由的条目,如果找到则查找本P2P路由设备的映射表,提取所找到的条目中记录的协议端点和邻接点的信息,把该报文发送给对应的协议端点处理,或者如果找到的协议端点就是本协议端点,则根据该目标P2P地址在邻接表中查找,把报文发送给找到的条目中记录的邻接点;
如果也没有找到标记为转发路由的条目,则查找其他P2P路由设备的路由表,包括标记为直连路由的和转发路由的条目,如果能找到,则将该P2P报文转发到相应的其它P2P路由设备。
一个可选的实施例中,查找顺序可以是本地设备直接查前两个表,没查到,再查其他路由设备的路由表,具体如下:
先按照单域处理设备相同方式处理,即先查找本设备的邻接表,如果未找到再查找本设备的映射表;
如果还没有找,则查找其他P2P路由设备的路由表,如果能找到,则将该P2P报文转发到相应的其它P2P路由设备。
下面将P2P网络报文分为广播型的P2P网络报文和单播型的P2P网络报文分别阐述具体如何进行步骤102。
1、P2P网络报文为广播型的P2P网络报文。
广播型的P2P网络报文也可称为广播类消息,或P2P广播报文。
P2P广播报文传递的总体规则是,如果所述P2P路由设备收到其P2P邻接点或相邻P2P路由设备发来的P2P广播报文时,如果该P2P广播报文在设定时间段内未收到过,则向其他邻接点以及其他相邻的P2P路由设备转发该P2P广播报文。选取合理的时间段范围可减少消息比对的历史数据累积,以减少对系统资源的需求,一般来说,设定时间段的长度可以选取8倍的TCP MSL(Maximum Segment Lifetime,最大报文生存周期)。
所述P2P路由设备为单域处理设备(即单域布设的P2P路由设备)时传递P2P广播报文的方案如下:
所述P2P路由设备收到其P2P邻接点发来的P2P广播报文且该P2P广播报文在设定时间段内未收到过,则所述P2P路由设备将所述P2P广播报文发送给本域内除接收到所述P2P广播报文的P2P邻接点之外的其他属于相同P2P网络的邻接点。如果该P2P广播报文已经收到过,则直接丢弃。
一个单域布设的P2P路由设备传递P2P广播报文的示例如图5所示,当P2P节点发广播型的P2P网络报文时,向其邻接点发出P2P广播报文,其中一个P2P广播报文到达P2P路由设备,P2P路由设备收到该P2P广播报文后在内部转发给各个属于相同P2P网络的其他邻接点。图5中,1表示的方向是P2P网络中P2P广播报文发送到P2P路由设备的方向(即从P2P节点A发送P2P广播报文到P2P路由设备的方向),2表示的方向是P2P路由设备向邻接点发送P2P广播报文的方向(即P2P路由设备向P2P节点B、C、D发送P2P广播报文的方向)。
所述P2P路由设备为多域处理设备(即多域布设的P2P路由设备)时传递P2P广播报文的方案如下:
1)所述P2P路由设备收到其P2P邻接点发来的P2P广播报文且该P2P广播报文在设定时间段内未收到过,则所述P2P路由设备将所述P2P广播报文发送给除接收到该广播报文的邻接点之外的邻接点和相邻的P2P路由设备;
2)所述P2P路由设备收到其相邻的P2P路由设备发来的P2P广播报文且该报文在设定时间段内未收到过,则发送给本域内的P2P邻接点以及相邻的除发来该报文的P2P路由设备外其他的P2P路由设备。上述1)、2)两种情况中,如果在设定时间段内已经收到过该报文,则直接将其丢弃。
一个多域布设的P2P路由设备传递P2P广播报文的示例如图6所示,当P2P路由设备收到P2P节点发来的P2P广播报文后,向跨域处理设备转发该P2P广播报文(图6中即第一P2P路由设备向第二P2P路由设备转发所收到的P2P广播报文)。其他P2P路由设备收到P2P网络报文后向自身邻接的P2P节点和除收到该报文的P2P路由设备之外其他P2P路由设备转发该P2P网络报文。图中,A、B、C、D、E、F、G、H均表示P2P节点。图6中,1表示的方向是P2P网络中P2P广播报文发送到P2P路由设备的方向(即从P2P节点A发送P2P广播报文到第一P2P路由设备的方向),2表示的方向是P2P路由设备向邻接点发送P2P广播报文的方向(即第一P2P路由设备向P2P节点B、C、D发送P2P广播报文、以及第二P2P路由设备向P2P节点E、F、G、H发送P2P广播报文的方向)。
相同P2P网络中,非P2P路由设备的邻接点产生的P2P广播报文经由邻接点转发到P2P路由设备的,按照前述方法同样处理。
针对限制扇出数的广播型的P2P网络报文(扇出数指的是广播报文时最多向几个相邻节点发送报文。此类限制广播型典型的例子如gosspy协议类的P2P协议,在广播报文时往往限制扇出数),本申请实施例在利用P2P路由设备转发时按照上述P2P广播报文处理,协议端点发送广播报文可设置为不受扇出数限制,并保留P2P广播报文中的扇出数转发给直连的邻接点。
针对限制转发深度的广播型的P2P网络报文:限制转发深度指在报文中指定转发深度的最大值,即转发的最多跳数,例如限制转发深度为3,即最多3跳,报文中指定3作为转发深度,当报文从节点A转发给节点B(第1跳),转发深度减1,节点B再转发给节点C(第2条),转发深度减1,节点C再转发给节点D(第3跳),转发深度减1,此时转发深度为0,节点D收到后就不再转发。P2P路由设备的协议端点处理这样的广播报文时不进行以上的减一处理。
2、P2P网络报文为单播型的P2P网络报文。
P2P网络报文中除广播型的P2P网络报文之外,带有传送目标P2P地址的报文称为单播型的P2P网络报文,又可称为P2P单播报文。
在进行P2P单播报文传递时,会使用到邻接表、映射表和路由表,单域时主要使用邻接表和映射表,多域时使用路由表、映射表、最后再使用邻接表。具体实现细节如下。
所述P2P路由设备为单域处理设备时传递P2P单播报文的方案如下:
所述P2P路由设备的协议端点收到P2P单播报文后,根据该报文中目标P2P地址首先查找本路由设备的邻接表,匹配表中的对端P2P地址和目标P2P地址,来确定所述P2P单播报文的目标节点的通信信息(包括本地通信信息和对端通信信息,本地通信信息包括协议端点的P2P节点地址、IP地址、端口和协议,对端通信信息包括P2P节点的地址、IP地址、端口和协议),如果找到,则根据找到的通信信息中记录的协议端点和邻接点进行以下处理:如果找到的通信信息中记录的协议端点就是本协议端点,则根据找到的目标节点的通信信息将所述P2P单播报文传递至相应的P2P节点,其中,目标节点的通信信息包括目标节点的IP地址、端口以及P2P地址、P2P协议信息等。如果找到的通信信息中记录的协议端点不是本协议端点,则将该报文发送到记录的协议端点按上述处理;如果在邻接表中未找到目标节点的通信信息,则根据目标P2P地址继续查找本路由设备的映射表,如果找到,则提取出协议端点和邻接点信息,如果找到的协议端点是本协议端点,则按照找到的邻接点信息,把该报文发给邻接点。如果找到的协议端点不是本协议端点,则把报文发给找到的协议端点处理。
一个单域布设的P2P路由设备传递P2P单播报文的示例如图7所示,P2P路由设备从P2P节点A收到P2P单播报文,所述P2P路由设备根据查找到的通信信息内记录的目标P2P节点的IP地址和端口以及P2P协议信息发送该报文给目标节点,即图7中的P2P节点D。图7中1表示的方向是P2P网络中P2P单播报文发送到P2P路由设备的方向(即从P2P节点A发送P2P单播报文到P2P路由设备的方向),2表示的方向是P2P路由设备向目标节点发送P2P单播报文的方向(即P2P路由设备向P2P节点D发送P2P单播报文的方向)。
所述P2P路由设备为多域布设时,其中的协议端点收到P2P单播报文,则根据报文中目标P2P地址按以下顺序查找:1)查找本路由设备的路由表中标记为直连路由的P2P节点,如果找到(即目标P2P地址是标记为直连路由的P2P节点),则查找本路由设备的邻接表,根据邻接表中查找到的通信信息把该报文发送给对应的协议端点处理,如果查找到的通信信息中记录的协议端点就是本协议端点则直接把报文发给相应的邻接点。如果没有找到标记为直连路由的P2P节点,则;2)查找本路由设备的路由表中标记为转发路由的P2P节点,如果找到则查找本路由设备的映射表,提取协议端点和邻接点信息,把报文发送给对应的协议端点处理,如果找到的协议端点就是本协议端点,则根据邻接表详细信息把报文发送给找到的邻接点。如果在标记为转发路由的条目中还没找到,则3)查找其他P2P路由设备的路由表,包括标记为直连路由的和转发路由的P2P节点,如果找到,则将该报文转发到能找到目标P2P地址的其它P2P路由设备。
一个多域布设的P2P路由设备传递P2P单播报文的示例如图8所示,第一P2P路由设备从P2P节点A收到P2P单播报文,第一P2P路由设备根据目标P2P地址查找到此目标地址在第二P2P路由的路由表中,则发送该单播报文给第二P2P路由设备,第二P2P路由设备根据目标P2P地址查找到此目标地址在本路由表中,则通过映射表/邻接表进一步查到具体的IP地址、端口、协议(TCP/IP)、P2P具体协议信息,将该单播报文发送到目标P2P节点,即图8中的P2P节点H。图8中1表示的方向是P2P网络中P2P单播报文发送到P2P路由设备的方向(即从P2P节点A发送P2P单播报文到第一P2P路由设备的方向),2表示的方向是P2P路由设备向目标节点发送P2P单播报文的方向(即第二P2P路由设备向P2P节点H发送P2P单播报文的方向)。
下面介绍P2P路由设备传递报文时涉及的三个表:
(1)邻接表
邻接到P2P路由设备上的P2P节点和P2P路由设备之间建立的邻接关系称为P2P链路。P2P网络报文发往P2P路由设备后经P2P路由设备转发,首先遇到问题是怎么发报文给目标P2P地址对应的目标节点,因此需要一个协议端点和目标P2P地址以及通信信息(IP通信地址)的关系表,这个表称为邻接表。
邻接表中的邻接信息包含以下内容:
P2Pprotocol,用于指示具体的P2P协议的信息,比如包括:所使用的P2P协议的标识、协议版本、协议端口、协议镜像URL等。
Peer传输方式,用于指示进行加密或非加密传输,以及用于加密传输时使用的具体加密协议。
本地P2P地址,是本方节点的P2P地址,即协议端点的P2P地址。
本地IP+Port+Protocol,即本地通信信息,是本方用于P2P协议通信的底层网络协议地址和端口。
对端P2P地址,是通信对方节点的P2P地址,即直连邻接点的P2P地址。
对端IP+Port+Protocol,即对端通信信息,是通信对方用于P2P协议通信的底层网络协议地址和端口。
其中,P2Pprotocol、Peer传输方式、P2P节点地址以及IP+Port+Protocol称为P2P端口信息。包含本地P2P节点地址和本地IP+Port+Protocol的端口信息称为本地P2P端口信息,同样道理,包含对方P2P节点地址和对方IP+Port+Protocol的端口信息称为对端P2P端口信息。
邻接表的信息可以是动态地通过P2P节点和P2P路由设备内处理P2P协议的协议端点之间的链路学习的,邻接的P2P节点离线、新建邻接关系、变更IP或端口等都会导致邻接信息变更。
其中,所述P2P路由设备即设备中包含的协议端点可以通过P2P网络的邻接协议来获得和更新直连的邻接点信息即邻接表信息。
通常P2P邻接关系建立后按照具体的P2P协议的保活周期进行更新保活,这个过程可作为相应的该协议的邻接表更新和老化处理,如果遇到没有保活更新的P2P协议,可通过其收发P2P消息来维护邻接信息;甚至还可以设计定期发送P2P协议查询信息来充当保活信息,这需要根据具体P2P协议来确定,通常可以周期性的向邻接点发送目标P2P地址为本节点的P2P地址的查询报文达到保活目的。
(2)映射表
对于路由表中标记为转发路由的条目,需配合映射表使用,映射表记录目标P2P地址和能转发到该目标P2P地址的直连邻接点以及该直连邻接点对应的协议端点这3者的信息;在映射表中,通过目标P2P地址能够查询到对应的协议端点和直连邻接点,要发到目标P2P地址的P2P网络报文经由记录条目中的协议端点发到记录条目中的直连邻接点再由该直连邻接点向下转发。
映射表包含以下内容:
目标P2P地址:报文要转发的目地P2P地址。
协议端点:能够转发报文到目标P2P地址的协议端点的P2P地址。
直连邻接点:能够转发报文到目标P2P地址的直连邻接点的P2P地址。
可选地,映射表还可以包括以下一项或多项内容:
转发深度:表示该P2P地址经过几跳能够到达。
衰减周期值:表示该条目还有多少存活时间。
其中,通过转发报文时学习来生成映射表可以包括如下一种或多种情况:
1)协议端点收到经由直连邻接点发来的P2P网络报文,如果报文中源P2P地址不在邻接表中则可以把该源P2P地址加入到本P2P路由设备的映射表中,深度设置为未知,深度代表转发几次到达直连邻接点。同时记录相应的协议端点和直连邻接点的信息。
2)协议端点收到的P2P节点A发布或应答的报文中携带有邻接表信息或邻接信息时(例如收到由P2P地址查询或P2P邻接表信息查询引发的应答报文),如果A是P2P路由设备的直连邻接点,则可分析其中包含的邻接信息,将其中A的一个邻接点的P2P地址(除协议端点之外)作为目标P2P地址、A的P2P地址作为直连邻接点以及对应的协议端点P2P地址作为协议端点信息,这些信息作为一个条目增加到本P2P路由设备的映射表中,深度设置为1。如果该P2P地址、A的P2P地址、协议端点的P2P地址条目已经在本地映射表中,并且深度为未知,则修改深度为1,A可能包含多个邻接点则按所述方法记录多个条目。
3)由直连邻接点A下一跳的邻接的P2P节点B发布的邻接表或邻接信息,将B的一个邻接点(除A和协议端点之外)作为目标P2P地址、A的P2P地址作为直连邻接点和其对应的协议端点的P2P地址作为协议端点,这些信息作为一个条目加入本P2P路由设备的映射表中,深度设置为2。如果该条目已经在本P2P路由设备的映射表中,并且深度是未知的,则修改深度为2,B可能包含多个邻接点则按所述方法记录多个条目,以此类推,系统可设定拓扑学习的深度数K,超出K深度的邻接节点信息(包含深度未知的节点)可以保存在映射表中而不更新到累积学习的拓扑结构中。根据K的大小进行拓扑结构和转发关系的学习,可学习到一张比较完整的K层拓扑结构和节点转发关系。
可选的,映射表的每个条目可以分别设定一定的衰减周期,在衰减周期值减小到0之前需要得到更新,否则,将移除。P2P路由设备在学习到映射表条目后,在衰减周期值减到最大值一半时,或其他大于0的值之前,如果还没有再学习到该条目包含的路由信息,则可向目标P2P地址发起P2P协议报文,例如查询报文,以触发再次学习到该路由条目。衰减周期是针对P2P协议节点随机加入和离开网络的特点设计的,有助于实时的动态的学习更新。
一种示例性实施例中,传递方法还包括:针对映射表可保留多条不同转发深度的条目,每条有不同的深度和衰减周期值;
按照前述方法,在将包含目标P2P地址的条目添加到映射表时,如果在映射表中找到该目标P2P地址的条目中协议端点和邻接点信息一致,则修改深度为当前深度;否则,添加一条对应的条目,深度设置为当前深度;
可选的,映射表可以保留多条路径不同深度的,比如:在将包含目标P2P地址的条目添加到映射表时,如果在表中找到该目标P2P地址的条目中协议端点和邻接点信息一致的,则修改深度为当前深度;否则,添加一条对应的条目深度设置为当前深度,因此,转发的目标P2P地址可以由这些不同深度的转发路径转发,深度往往代表了转发代价。
从报文中提取节点邻接的P2P地址信息进行映射表学习的方式举例如下:以太坊P2P网络中,在节点加入网络时,以及后续维护邻接点信息表时,会向一定数量的邻接点发起findnode的报文,其目的就是查找一个目标地址。收到报文的节点会根据自己的邻接表的信息返回离此地址最近的邻接点信息,原发节点收到后会进行递归查找不断接近目标节点,因此,在递归过程中,触发了一系列的节点发送邻接点的信息。P2P路由设备可通过协议端点收集由邻接点发出查询报文以及引发的递归查询报文,或者由协议端点根据已知拓扑继续查询的下一级连接的节点报文及其引发的递归查询报文,对报文中包含的邻接点的信息进行学习再结合已有的拓扑结构,就能不断组成一张网络节点拓扑,即可抽取路由表。
(3)路由表
路由表是P2P路由设备和其能转发到的P2P协议节点之间的关系表,其中包含有P2P路由设备的直连邻接点(即标记为直连路由的P2P节点)以及通过直连邻接点能转发到的P2P节点(即标记为转发路由的P2P节点)。每个P2P路由设备都有自己的路由表,在多域布设场景下,在本地P2P路由设备无法转发的P2P地址或确定转发最优路径时,需要查询其他路由设备的路由表来决定是否将该报文转发给该P2P路由设备。因此,作为源路由设备,需要把自己的路由表同步给其他P2P路由设备。
路由表包含以下内容:
P2P路由设备标识:用于唯一标识不同的P2P路由设备。
版本:单调递增,用于唯一确定该路由表信息版本信息,区分相同路由设备的路由表不同版本。
路由表更新周期:用于表示该路由表多久以后将会有下一个路由表更新,更新周期信息包含发布该周期路由表的时间和时长。P2P路由设备在发布时刻加上时长这个时间点发布新的路由表,其他P2P路由设备未收到新路由表可主动向源P2P路由设备或相邻其他P2P路由设备索取。
目标P2P地址:能转发的P2P地址。
衰减周期:可选的,用于表示该条目的存活时间。
直连路由/转发路由标识:用于指示该条目是直连路由还是转发路由属性。
可选的,为最大化压缩路由表信息,路由表中包含的P2P路由设备公共信息例如用于和其他P2P路由设备通信地址详细信息,可不在路由表中传递,可通过P2P路由设备的其他沟通渠道协商完成。
生成路由表时,由P2P路由设备自己的邻接表中提取直连邻接点的P2P地址作为路由表条目中的目标P2P地址,并标记为直连路由,邻接表中对应条目的衰减周期作为本条目的衰减周期。由P2P路由设备自己的映射表中提取目标P2P地址作为路由表条目中的目标P2P地址,并标记为转发路由,映射表中对应条目的衰减周期作为该条目的衰减周期,当遇到映射表中多个条目对应同一个转发路由条目时(多条路径可达同一个目标地址),选取其中转发深度较小的,如果相同,则选择最大的衰减周期的条目。
可选的,本申请实施例的传递方法还包括:采用布鲁姆过滤器法压缩路由信息。
布鲁姆过滤器(Bloom Filter):针对大空间低占用的P2P地址,采用布鲁姆过滤器具备产生数据量少,查询快速的优点,因此,可利布鲁姆过滤器的特性作为路由信息的传递。布鲁姆过滤器是一种位图数据结构,采用哈希映射存储一个数据集合。布鲁姆过滤器采用k个哈希函数映射n个数据(集合元素)到一个m比特的位图。布鲁姆过滤器常用算法有插入元素算法即把一个数据集元素插入这过滤器和查询元素算法即查询一个元素是否在这个过滤器里。布鲁姆过滤器有存储开销小(即m/n)、查询速度快(k次存储访问)的特点。对于布鲁姆过滤器本身,本申请实施例不进行限制,本申请实施例利用布鲁姆过滤器对本申请实施例特有的转发信息(包括邻接表、映射表、路由表),结合其特点,进行布鲁姆过滤器应用来压缩数据大小。特别是在多域布设的场景下,P2P路由设备之间把各自生成的最新的路由表同步给其他路由设备,因此,压缩这些交互的信息是很有价值的。
邻接表的信息、映射表信息和路由表的信息都可以进行数据压缩处理。具体操作方法说明如下。
针对邻接表的压缩方法:一个P2P路由设备下记录其所有的协议端点的信息,每个协议端点可对应一个布鲁姆过滤器,其中记录和该协议端点直连的所有P2P节点的P2P地址,布鲁姆过滤器的元素插入方法是把和该协议端点相连的邻接点P2P地址作为其中集合元素按照选定的布鲁姆过滤器的插入元素方法加入该表,如果某个地址不再邻接则从过滤器中删除该元素(无法支持删除操作的布鲁姆过滤器可用重新生成过滤表的方式替代),这样可通过该布鲁姆过滤器判定查询的P2P地址是否属于该集合,即是否和该布鲁姆过滤器对应的协议端点直连。
针对映射表的压缩方法:一个匹配对(协议端点和直接邻接点)对应一个布鲁姆过滤器,其中记录通过该协议端点和直接邻接点能转发到的P2P协议地址。布鲁姆过滤器的元素插入方法是把相应的P2P地址作为其中集合元素按照选定的布鲁姆过滤器的插入元素方法加入该表,如果某个地址不再经由该协议端点和直接邻接点转发需要从过滤器中删除该元素(无法支持删除操作的布鲁姆过滤器可用重新生成过滤表的方式替代),如果映射表条目带有可选的转发深度和衰减周期,则扩充布鲁姆过滤器描述信息,即扩充匹配对(协议端点、直接邻接点、转发深度和衰减周期值)对应一个布鲁姆过滤器。
针对每个P2P路由设备的路由表或其子表:一个P2P路由设备可生成一个布鲁姆过滤器或按照子路由分为多个子表,各自对应一个或多个布鲁姆过滤器,每个布鲁姆过滤器中记录对应的该路由表或子表可转发的P2P地址信息。每个子表可根据路由表里的信息(P2P路由设备标识、版本、更新周期、衰减周期、直连路由/转发路由)选择不同的条件进行组合,符合其中条件的P2P地址作为对应子表的信息存放该子表中。
这里以路由表为例说明如何利用布鲁姆过滤器来实现路由表的数据压缩。具体做法是,根据网络中的P2P节点数量和平均路由条目/子路由条目的数量n;选择合适长度m的位图,例如采用数组表示位图,该位图用于判断P2P地址是否包含在其中,因此,也称为过滤器;选择k个的合适的哈希函数用于把P2P地址映射到位图中。这些布鲁姆过滤器的参数在P2P路由设备之间沟通完成也可以附加在路由表信息中一起传送。当要生成一个路由子表时,即把这个子表所包含的所有P2P地址按照布鲁姆过滤器插入法插入到对应的过滤器中,初始的过滤器中不包含任何元素。该过滤器就表示对应的路由子表的地址集合,再加上该子表的描述(P2P路由设备标识、版本、更新周期、衰减周期、直连路由/转发路由)等信息,即形成该路由子表。当查询路由表时,用目标P2P节点地址在对应的子表的过滤器中按照布鲁姆过滤器查询方法进行查询,如果命中,则说明该地址包含在这个路由子表中。
在本申请实施例中,以采用布鲁姆过滤器压缩路由信息为例说明路由表的同步方法,布鲁姆过滤器方法用于压缩路由表的信息大小便于传输,这并不影响采用任何其他组织路由信息的方式来同步路由表的逻辑,因此,其他方法也可采用类似的处理。
本申请实施例中,路由信息同步的过程可包括步骤201-203:
201、P2P路由设备所能转发的P2P地址发生变化时,即路由表发生变化时,例如,加入新的直接邻接点或者已有直接邻接点离开;新学习到转发路由条目或已有转发路由条目失效,等等。发生路由信息变化的P2P路由设备称为源路由设备,源路由设备可实时或者周期性地向相连的其他路由设备发送源路由设备ID和对应的路由表版本信息,甚至更进一步地携带增/减的P2P邻接地址的信息;
202、P2P路由设备收到路由更新信息后向其相连的其他P2P路由设备转发该信息,并且判断路由表版本与本地存放的该源路由设备的路由表版本是否相同,如果不同,向源路由设备请求指定版本的或者最新版本的路由详细信息,用于更新对应的路由信息;
203、源路由设备收到请求信息后,根据请求版本信息、比较两个版本之间的差距,根据比较结果决定发送一个完整的新路由表信息或者仅发送版本之间的差距的路由信息。
当版本之间路由信息差距过大时,发送新的完整路由信息;当版本之间路由信息差距不大时,可发送仅包含差距的路由信息,这样收到差距信息的P2P路由设备可根据这些信息进行路由表信息的重建。
所述P2P路由设备作为源路由设备时,路由信息同步可包括如下步骤301-303:
301、所述P2P路由设备周期性地向相邻的P2P路由设备发送路由表版本信息;
302、所述P2P路由设备接收所述相邻P2P路由设备同步路由信息的请求,所述请求携带所述相邻P2P路由设备的路由表版本信息;
303、所述P2P路由设备根据版本之间的差距,向所述相邻P2P路由设备发送路由表的对应版本的完整路由信息、或仅发送差距地址集信息、或发送路由表的布鲁姆过滤器信息。
所述P2P路由设备作为接收路由信息的路由设备时,路由信息同步可包括如下步骤401-403:
401、所述P2P路由设备接收相邻P2P路由设备发送的路由表版本信息;
402、所述P2P路由设备向其他相邻P2P路由设备转发该消息,如果确定接收到的路由表版本信息与本地保存的路由表版本信息不一致,则向所述源路由设备发送同步路由信息的请求,所述请求携带本地的路由表版本信息;
403、所述P2P路由设备根据接收到来自所述相邻P2P路由设备的路由信息(比如布鲁姆过滤器信息或差距地址集信息等),更新本地存放的源路由设备对应的路由表。
本申请实施例中,P2P路由设备的具体实现示例如图13所示,可以包括上层处理模块、路由处理模块、设备链路信息模块、转发模块、协议端点。
一个P2P路由设备中可包括多个协议端点,用于处理数据转发路径上的P2P协议报文。这些协议端点可以安装各种P2P协议处理软件/模块。例如采用Docker(容器)技术来动态加载和删除对应的P2P软件镜像,或者采用其他技术安装对应的P2P协议处理软件/模块。协议端点具体的P2P协议处理软件/模块和该协议端点要转发到的P2P节点要匹配;如图13中,四个协议端点分别和P2P节点A、B、C、D的P2P协议要匹配。
协议端点和协议端点之间、协议端点和设备链路信息模块之间以及P2P路由设备之间通过转发模块互联互通;
设备链路信息模块负责上文描述的链路信息处理;
路由处理模块负责上文描述的路由信息生成和同步更新;
上层处理模块可用于配置管理P2P路由设备。
转发模块是P2P路由设备内部以及P2P路由设备之间的数据通道,具备高速的带宽通道。针对P2P广播报文,在协议端点之间、协议端点和设备链路信息模块之间以及P2P路由设备之间可采用组播方式进行转发;每个P2P协议可使用一个组播地址;
可以更进一步的优化是,为方便转发体系的路由和交换体系设计以及降低广域网组播转发复杂度,转发模块可布设私网连接,转发模块的IP地址可以设置为私网地址,相连的模块和实体除P2P协议所在的IP地址外,再根据转发模块的需求分配私网IP地址,这样利用转发模块进行通信时可用内部私网IP地址进行交互。
一个示例中,邻接信息(邻接表中包含的信息)同步协议可以如下:
P2P路由设备内部处理P2P链路信息的模块或实体称为设备链路信息模块,它与本路由设备的各个协议端点建立通信通道,本文不限制该通道的形式以及建立流程等。设备链路信息模块主要的功能是形成并维护邻接表,向下通过转发模块对接协议端点,收集和提供邻接信息;向上对接路由处理模块,提供邻接信息。以下是协议端点和设备链路信息模块针对邻接信息的几种同步过程:
(1)协议端点注册:如图9所示,协议端点在设备链路信息模块上注册,确定用于邻接表更新的操作通道,其中可包含协议端点的P2P协议详细信息、操作通道持续有效时间范围、更新周期、通知条件等关键信息;设备链路信息模块向协议端点返回注册确认消息。设备链路信息模块和协议端点在注册完成后遇到符合注册的通知条件的邻接表变化,即以邻接表更新事件通知给对应的协议端点。
(2)设备链路信息模块向协议端点主动请求最新的邻接信息;或者协议端点向链路信息处理模块查询当前邻接表内对应的通信信息;如图10所示,协议端点发送邻接信息查询消息给设备链路信息模块,设备链路信息模块返回查询应答;或者如图11所示,协议端点发送邻接表查询消息给设备链路信息模块,设备链路信息模块返回邻接表查询应答。
(3)邻接信息变化上报:协议端点在邻接信息变化时上报变化后最新的邻接信息给设备链路信息模块。例如协议端点和P2P节点新增、断开邻接、或者P2P节点的IP地址或端口发生变化等。如图12所示,协议端点发送邻接信息上报消息给设备链路信息模块,设备链路信息模块返回上报确认。
P2P广播报文的处理示例:
协议端点的处理:从邻接的P2P节点收到P2P广播报文时,判断该P2P广播报文是否在设定时间段内已经收到过,如果没有,则这个P2P广播报文发给除接收到该报文的邻接的P2P节点外的其他与所述协议端点邻接的P2P节点;此外,将此报文打包(或称为组播封装)为IP组播报文,组播目标为对应该P2P网络的转发模块指定的组播地址,不同的P2P网络使用不同的组播地址。协议端点从转发模块收到组播报文封装的P2P广播报文时,判断该P2P广播报文是否在设定时间段内已经收到过,如果没有,则根据P2P协议的邻接转发要求把这个P2P广播报文发给邻接的P2P节点。
转发模块的处理:收到上述IP组播报文(即经过组播封装的P2P广播报文)时,根据组播地址转发给该组播的所有成员;如果存在多域P2P路由设备组网,则同时还把该报文转发给其他属于该组播组成员的P2P网络的P2P路由设备的模块和协议端点等。转发模块并不局限于使用单个硬件,可以是使用多个设备组合、甚至广域网设备组成的转发系统。
一个P2P路由设备下进行P2P广播报文转发的示例如图14所示,包括如下过程:
第一P2P节点发送P2P广播报文Pb给第一协议端点;
第一协议端点发送P2P广播报文Pb给它所直连的其他邻接点,可能有多个,图示中以第二P2P节点代表,打包该报文为内部组播报文S(Pb),并发送内部组播报文S(Pb)给转发模块;
转发模块发送内部组播报文S(Pb)给第二、第三协议端点;
第二协议端点收到组播报文后恢复出P2P报文Pb,发送P2P广播报文Pb给它所直连的邻接点,可能有多个,图示中以第三P2P节点代表,第三协议端点和第二协议端点类似的处理,发送P2P广播报文Pb给它所直连的邻接点,可能有多个,图示中以第四P2P节点。
至于转发到其他P2P路由设备的情况,根据前面描述可以得知,这里就不再赘述。
一个P2P路由设备中进行单播报文转发的示例如图15所示,包括如下过程:
第一P2P节点发送P2P单播报文Pu给第一协议端点;
第一协议端点发送内部单播报文S(Pu)给转发模块;
转发模块发送内部单播报文S(Pu)给第二协议端点;
第二协议端点发送P2P单播报文Pu给第三P2P节点。
其中,协议端点的处理:当收到P2P节点发来的P2P单播报文时,判断目标P2P地址是否为本协议端点的邻接点,如果是,则按照P2P协议要求转发给目标P2P地址对应的P2P节点。如果不是,则:1)根据目标P2P地址查询本协议端点所在P2P路由设备的路由表,优先查询标记为直连路由的条目,如果查询到了,则查询本协议端点所在P2P路由设备的邻接表,找到目标P2P地址对应的协议端点,通过转发模块把给该报文发给该协议端点。2)如果没查到标记为直连路由的条目,则查询路由表中标记为转发路由的条目,如果命中,则根据目标P2P地址查询本协议端点所在P2P路由设备的映射表,找到协议端点和直连的邻接点,再通过本协议端点所在P2P路由设备的邻接表,找到目标P2P地址对应的协议端点,如果不是本协议端点则通过转发模块把给报文发给找到的协议端点;如果是本协议端点,则根据映射表向对应的直连的邻接点发送该报文。3)如果在路由表没找到任何条目,则查询其他P2P路由设备的路由表,如果找到,则通过转发模块把给报文发给对应的P2P路由设备,收到该报文的P2P路由设备按照上述协议端点的处理过程进行相应处理。
转发模块的处理:转发模块根据内部单播报文的目标P2P地址进行转发。协议端点和转发模块之间采用的内部地址的形式不做限定,可选择IP地址、硬件设备地址等等。
协议端点要适用于具体的P2P网络协议,因此,其支持的范围很广。可通过各种动态加载处理模块的技术达到。举例来说,可以但不限于采用Docker技术通过加载不同的P2P协议处理镜像来完成。
在一示例性实施例中,所述P2P路由设备可以通过启动Docker(容器)安装P2P协议处理镜像以处理所述P2P网络报文。具体可以包括:
所述P2P路由设备根据配置管理信息启动容器,通过所述容器安装所述P2P协议;或者,
所述P2P路由设备通过分析所述P2P网络内P2P节点协议特征启动容器,通过所述容器安装所述P2P协议生成P2P协议处理节点以处理所述P2P网络报文,即协议端点。
综上所述,不管是结构型还是非结构型的P2P网络,都可以在不改变原有P2P协议情况下使用本申请实施例的P2P路由设备来加速P2P报文传播,也有利于降低整网流量,最大化利用P2P设备的高带宽等等,适合但不限于P2P网络需要信息同步的场景。
本申请至少一个实施例具有如下有益效果:1)加速P2P消息传播速度,当直连的P2P节点数量足够多时,使得P2P网络信息同步速度接近于恒定值。2)减少P2P节点之间的网络流量,特别是广播报文的流量。3)通常监听转发模式无法解决加密连接和传输的P2P网络的报文转发,本申请实施例可以解决此类问题。4)针对大多数P2P网络协议,可以在仅对P2P节点进行初始配置的情况下应用本申请实施例的P2P路由设备,对原有P2P网络几乎不用投入代价进行改造就能获得本申请实施例带来的好处。5)在追求P2P网络信息同步要求较高的场景使用本申请实施例能达到很好的效果,例如在区块链中当需要同步候选区块信息、竞选leader信息、投票信息等等。
本申请实施例还提供一种P2P网络的路由设备,该路由设备可实现上述任一实施例的传递方法,包括:存储器、处理器;所述存储器用于保存进行P2P网络报文传递的程序,所述处理器用于读取执行所述进行P2P网络报文传递的程序,实现上述实施例中的P2P网络报文的传递方法。
本申请实施例还提供一种计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于在被执行时,实现上述实施例中的P2P网络报文的传递方法。
在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (27)

1.一种点对点P2P网络报文的传递方法,其特征在于,P2P网络中设置有P2P路由设备,所述方法包括:
所述P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,与相应的P2P节点建立邻接关系,和/或等待其它P2P节点和本P2P路由设备建立邻接关系;
所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点。
2.根据权利要求1所述的传递方法,其特征在于,还包括:进行初始化;
所述初始化包括:
多域布设情况下,所述P2P路由设备与所述P2P网络中的其它P2P路由设备建立转发代理关系;
通过网络流量探测或预配置的方式生成特定的协议端点来处理该P2P网络的协议报文;其中,当协议端点对应的P2P协议采用加密型链路时,所述协议端点能够进行邻接线路的加解密处理。
3.根据权利要求1所述的传递方法,其特征在于,所述P2P路由设备通过以下一种或多种方式学习所述P2P网络中P2P节点的转发关系和拓扑结构:
方式一、所述P2P路由设备中的协议端点加入P2P网络后通过分析流经本协议端点的P2P报文,中携带的以下一种或多种信息:P2P源地址信息、目标地址信息、邻接信息,学习拓扑结构和对应直连邻接点的转发关系,获得已建立邻接关系和未建立邻接关系的P2P节点的P2P地址及通信信息;其中,流经本协议端点的P2P报文包括发给本协议端点的P2P报文或者通过本协议端点转发的P2P报文;
方式二、所述协议端点通过发起对未建立邻接关系的P2P地址的查询报文来主动探测目标P2P节点的通信信息;
方式三、所述协议端点向已经获得的第i层节点发送P2P协议的邻接表获取报文或能触发该节点发送邻接信息的报文,来获得第i+1层的P2P节点信息以扩展拓扑结构信息。
4.根据权利要求1所述的传递方法,其特征在于,还包括:
所述P2P路由设备将直连邻接点数量维持在预设范围内,如果邻接点数量大于所述预设范围的上限值,则停止对于其中部分邻接点的保活操作;如果邻接点数量小于所述预设范围的下限值,则所述P2P路由设备根据所学习到的P2P节点的转发关系和拓扑结构,主动与未建立邻接关系的P2P节点建立邻接关系,和/或通过以下一种或多种方式来增加协议端点在P2P网络中的优先连接概率:主动发布仅包含协议端点的邻接表报文、应答报文中的最佳可达地址、邻接表信息中仅包含协议端点,并等待其它P2P节点和本P2P路由设备建立邻接关系;
其中,所述保活操作用于维护邻接关系,包括:
周期性使用相应P2P协议中专门的保活报文;如果P2P路由设备对应的P2P协议中没有专门的保活报文,则采用向需要保活的邻接点发送针对特定目标P2P地址的查询报文来维护邻接关系,该查询报文的目标P2P地址设为发送该报文的协议端点本身的P2P地址。
5.根据权利要求1所述的传递方法,其特征在于,还包括:
所述P2P路由设备中的协议端点通过主动发布仅包含协议端点的邻接表报文,向网络其他节点传播协议端点通信信息;
所述协议端点收到针对目标P2P地址的查询报文则对目标地址发起查询,如果未得到目标地址信息,所述协议端点将距离查询目标地址最近的协议端点信息作为该查询的应答返回,将这些协议端点加入原始查询报文的节点的候选连接点中;
所述协议端点收到邻接点信息获取报文,则应答仅包含一组合适的P2P地址分布的协议端点的信息作为邻接点信息。
6.根据权利要求1所述的传递方法,其特征在于,P2P网络报文为广播型的P2P网络报文时,所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点,包括:
所述P2P路由设备为单域处理设备时,所述P2P路由设备如果确定所述P2P网络报文未被广播转发过,则将所述P2P网络报文发送给本域内除接收到所述P2P网络报文的直连邻接点之外的其他直连邻接点;
所述P2P路由设备为多域转发设备时,所述P2P路由设备如果确定所述P2P网络报文未被广播转发过,则将所述P2P网络报文发送给本域内除接收到所述P2P网络报文的直连邻接点之外的其他直连邻接点,以及相连的其他P2P路由设备,其他P2P路由设备继续将此报文转发其相邻的其他P2P路由设备和本域内直连邻接点;
其中,针对限制扇出数的广播型的P2P网络报文,保留P2P网络报文中的扇出数转发给直连的邻接点;
针对限制转发深度的广播型报文,P2P路由设备转发时不将转发深度减一。
7.根据权利要求1所述的传递方法,其特征在于,P2P网络报文为单播型的P2P网络报文时,所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点,包括:
所述P2P路由设备为单域处理设备时,所述P2P路由设备的协议端点收到P2P网络报文后根据该报文中目标P2P地址首先查找邻接表;
如果找到包含该目标P2P地址的条目,则根据找到的条目中记录的协议端点和邻接点的通信信息进行以下处理:如果找到的条目中记录的协议端点就是本协议端点,则根据找到的邻接点的通信信息将所述P2P网络报文传递至相应的P2P节点;如果不是本协议端点,则将该报文发送到找到的协议端点;
如果未找到包含该目标P2P地址的条目,则根据目标P2P地址继续查找所述P2P路由设备的映射表,优先查找转发深度较小的条目,如果找到包含该目标P2P地址的条目,则进行如下处理:如果找到的条目中记录的协议端点是本协议端点,则按照找到的邻接点的信息把该报文发给相应的邻接点;如果不是本协议端点,则把该报文发给找到的条目中记录的协议端点。
8.根据权利要求1所述的传递方法,其特征在于,P2P网络报文为单播型的P2P报文时,所述P2P路由设备接收到P2P网络报文时,将所述P2P网络报文传递至相应的P2P节点,包括:
所述P2P路由设备为多域转发设备时,P2P路由设备的协议端点收到P2P网络报文后进行如下处理:
根据该报文中的目标P2P地址查找本P2P路由设备的路由表中标记为直连路由的条目,如果找到,则根据所述目标P2P地址查找本P2P路由设备的邻接表,根据找到的邻接表的条目进行相应处理:如果所找到的条目中记录的协议端点不是本协议端点则把报文发送给对应的协议端点,如果所找到的条目中记录的协议端点就是本协议端点则直接把该报文发给所找到的条目中记录的邻接点;
如果没有找到标记为直连路由的条目,则查找本P2P路由设备的路由表中标记为转发路由的条目,如果找到则根据所述目标P2P地址查找本P2P路由设备的映射表,根据找到的映射表的条目进行相应处理:如果所找到的条目中记录的协议端点不是本协议端点则把报文发送给对应的协议端点处理,如果找到的条目中记录的协议端点就是本协议端点,则根据所述目标P2P地址查找本P2P路由设备的邻接表,并把该报文发送给找到的条目中记录的邻接点;
如果在标记为转发路由的条目中还没找到,则根据所述目标P2P地址查找其他P2P路由设备的路由表,包括标记为直连路由的和转发路由的条目,如果找到,则将该报文转发到相应的其它P2P路由设备。
9.根据权利要求1所述的传递方法,其特征在于,还包括:
所述P2P路由设备当收到用于获取目标P2P地址对应的通信信息的查询报文时,使用所述目标P2P地址查找邻接表,如果能查找到包含该目标P2P地址的条目,则根据P2P协议应答该查询报文,返回查询到的通信信息;如果查找不到包含该目标P2P地址的条目,则P2P路由设备中的协议端点对该目标P2P地址发出递归查询报文,得到查询结果后应答所述查询报文,返回查询到的通信信息,如果都未查询到结果,则返回该P2P协议意义上离目标P2P地址最近的协议端点信息作为最佳可达地址。
10.根据权利要求6-9任一项所述的传递方法,其特征在于:所述转发关系包括邻接表;
所述邻接表为协议端点和目标P2P地址和IP通信地址的关系表;邻接表中的邻接信息至少包含以下内容:
P2Pprotocol,用于指示P2P协议的信息;
Peer传输方式,用于指示进行加密或非加密传输,以及当进行加密传输时所用的加密协议;
本地P2P地址,是本P2P路由设备的协议端点的P2P地址;
本地IP+Port+Protocol,是本方的通信信息,是本方用于P2P协议通信的底层网络协议地址和端口;
对端P2P地址,是通信对方节点的P2P地址,即直连邻接点的P2P地址;
对端IP+Port+Protocol,是对端的通信信息,是通信对方用于P2P协议通信的底层网络协议地址和端口;
邻接表的信息可以是动态地通过P2P节点和P2P路由设备内处理P2P协议的协议端点之间的链路学习的,邻接的P2P节点离线、新建邻接关系、变更IP或端口等都会导致邻接信息变更;
其中,所述P2P路由设备中包含的协议端点通过P2P网络邻接协议来获得和更新邻接表信息。
11.根据权利要求10所述的传递方法,其特征在于,还包括:
所述P2P路由设备通过P2P网络交互报文或者P2P协议的邻接更新协议获得邻接表信息。
12.根据权利要求10所述的传递方法,其特征在于:所述转发关系还包括映射表;
所述映射表记录目标P2P地址和能转发到该目标P2P地址的直连邻接点以及该直连邻接点对应的协议端点的信息;在映射表中,通过目标P2P地址能查询到对应的协议端点和直连邻接点,要发到目标P2P地址的P2P网络报文经由记录的协议端点发到记录的直连邻接点再由该直连邻接点向下转发;
所述映射表包含以下内容:
目标P2P地址:报文要转发到的目地P2P地址;
协议端点:能够转发报文到目标P2P地址的协议端点的P2P地址;
直连邻接点:能够转发报文到目标P2P地址的直连邻接点的P2P地址;
其中,通过转发报文时学习来生成映射表,包括如下一种或多种情况:
1)协议端点收到经由直连邻接点发来的P2P网络报文,如果报文中源P2P地址不在邻接表中则可以把该源P2P地址加入到本P2P路由设备的映射表中,深度设置为未知;其中,深度代表转发几次到达直连邻接点;同时记录相应的协议端点和直连邻接点的P2P地址信息;
2)协议端点收到的第一P2P节点发布或应答的报文中携带有邻接表信息或邻接信息时,如果第一P2P节点是P2P路由设备的直连邻接点,则分析其中包含的邻接信息,将第一P2P节点的除协议端点以外的一个邻接点的P2P地址作为目标P2P地址、第一P2P节点的P2P地址作为直连邻接点以及对应的协议端点的P2P地址作为协议端点,这些信息作为一个条目增加到本P2P路由设备的映射表中,深度设置为1;如果该P2P地址、第一P2P节点的P2P地址、协议端点的P2P地址条目已经在本地映射表中,并且深度为未知,则修改深度为1;如果第一P2P节点包含多个邻接点则记录多个条目;
3)如果第一P2P节点是直连邻接点,则由第一P2P节点下一跳的邻接的第二P2P节点发布的邻接表或邻接信息,将第二P2P节点的除第一P2P节点和所述协议端点以外的一个邻接点作为目标P2P地址、第一P2P节点的P2P地址作为直连邻接点和其对应的协议端点的P2P地址作为协议端点,这些信息作为一个条目加入本P2P路由设备的映射表中,深度设置为2;如果该条目已经在本P2P路由设备的映射表中,并且深度是未知的,则修改深度为2;如果第二P2P节点包含多个邻接点则记录多个条目;以此类推,根据预先设定的拓扑学习的深度数K进行学习,超出K深度的邻接节点信息以及深度未知的节点保存在映射表中而不更新到累积学习的拓扑结构中。
13.根据权利要求12所述的传递方法,其特征在于,还包括:
映射表的每个条目分别设定有衰减周期值,在衰减周期值减小到0之前需要得到更新,否则,将移除;
P2P路由设备在学习到映射表的条目后,在该条目的衰减周期值减到最大值一半时,或其他大于0的值之前,如果还没有再学习到该条目包含的路由信息,则可向目标P2P地址发起P2P协议报文,以触发再次学习到该条目。
14.根据权利要求12所述的传递方法,其特征在于,还包括:针对映射表保留多条不同转发深度的条目,每条有不同的深度和衰减周期值;
在将包含目标P2P地址的条目添加到映射表时,如果在映射表中找到该目标P2P地址的条目中协议端点和邻接点信息一致,则修改深度为当前深度;否则,添加一条对应的条目,深度设置为当前深度。
15.根据权利要求13所述的传递方法,其特征在于:所述转发关系还包括路由表;所述路由表是P2P路由设备和其能转发到的P2P协议节点之间的关系表,其中包含有P2P路由设备的直连邻接点以及通过直连邻接点能转发到的P2P节点;
生成路由表时,由P2P路由设备自己的邻接表中提取直连邻接点的P2P地址作为路由表条目中的目标P2P地址,并标记为直连路由,邻接表中对应条目的衰减周期作为本条目的衰减周期;由P2P路由设备自己的映射表中提取目标P2P地址作为路由表条目中的目标P2P地址,并标记为转发路由,映射表中对应条目的衰减周期作为该条目的衰减周期,当遇到映射表中多个条目对应同一个转发路由条目时,选取其中转发深度较小的,如果深度相同,则选择最大的衰减周期的条目。
16.根据权利要求15所述的传递方法,其特征在于,还包括:
所述P2P路由设备周期性地向相邻P2P路由设备发送路由表版本信息;
所述P2P路由设备接收所述相邻P2P路由设备同步路由信息的请求,所述请求携带所述相邻P2P路由设备的路由表版本信息;所述P2P路由设备根据版本之间的差距,向所述相邻P2P路由设备发送路由表的布鲁姆过滤器信息或差距地址集信息;
所述P2P路由设备接收相邻P2P路由设备发送的路由表版本信息;所述P2P路由设备确定接收到的路由表版本信息与本地保存的路由表版本信息不一致,则向所述相邻P2P路由设备发送所述同步路由信息的请求,所述请求携带本地的路由表版本信息;
所述P2P路由设备根据接收到来自所述相邻P2P路由设备的路由表的布鲁姆过滤器信息或差距地址集信息,更新本地的路由表。
17.根据权利要求1所述的方法,其特征在于:
所述P2P路由设备通过启动容器安装P2P协议处理镜像以处理所述P2P网络报文。
18.根据权利要求17所述的方法,其特征在于,所述P2P路由设备通过启动容器安装P2P协议处理镜像以处理所述P2P网络报文,包括:
所述P2P路由设备根据配置管理信息启动容器,通过所述容器安装所述P2P协议;或者,
所述P2P路由设备通过分析所述P2P节点特征,启动容器,通过所述容器安装所述P2P协议生成P2P协议处理节点以处理所述P2P网络报文。
19.根据权利要求1所述的方法,其特征在于,还包括:
采用布鲁姆过滤器法压缩邻接表的信息、映射表信息和路由表的信息;
针对邻接表:每个协议端点可对应一个布鲁姆过滤器,其中记录和该协议端点直连的所有P2P节点的P2P地址,通过该布鲁姆过滤器可以判定查询的P2P地址是否属于集合,即是否和该布鲁姆过滤器对应的协议端点直连;
针对映射表:每对协议端点和直接邻接点对应一个布鲁姆过滤器,其中记录通过该协议端点和直接邻接点能转发到的P2P协议地址;
针对每个P2P路由设备的路由表或其子表:一个P2P路由设备生成一个布鲁姆过滤器或按照子路由分为多个子表,各自对应一个或多个布鲁姆过滤器;每个布鲁姆过滤器中记录对应的该路由表或子表能转发的P2P地址信息;每个子表根据路由表里的信息选择不同的条件进行组合,符合其中条件的P2P地址作为对应子表的信息存放该子表中。
20.一种路由设备,包括:存储器、处理器;其特征在于:
所述存储器用于保存进行点对点网络报文传递的程序;
所述处理器用于读取执行所述进行点对点网络报文传递的程序,实现如权利要求1-19中任意一项所述的P2P网络报文的传递方法。
21.一种计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于在被执行时,实现如权利要求1-19中任意一项所述的P2P网络报文的传递方法。
22.一种路由设备,其特征在于,用于实现如权利要求1-19中任意一项所述的P2P网络报文的传递方法,包括:上层处理模块、路由处理模块、设备链路信息模块、转发模块、一个或多个协议端点;
所述协议端点用于处理数据转发路径上的P2P协议报文;协议端点所采用的P2P协议处理软件/模块和该协议端点要转发到的P2P节点匹配;
所述协议端点之间、所述协议端点和所述设备链路信息模块之间、路由设备之间通过所述转发模块互联互通;
所述设备链路信息模块用于进行链路信息的处理,以及形成并维护邻接表;并通过所述转发模块对接所述协议端点,收集和提供邻接信息;对接所述路由处理模块,提供邻接信息;
所述路由处理模块用于进行路由信息的生成和同步更新;
所述上层处理模块用于配置管理路由设备。
23.根据权利要求22所述的路由设备,其特征在于:
所述转发模块针对P2P广播报文,在协议端点之间、协议端点和设备链路信息模块之间以及路由设备之间采用组播方式进行转发;每个P2P协议使用一个组播地址。
24.根据权利要求23所述的路由设备,其特征在于:
所述转发模块的IP地址为私网地址,相连的模块和实体除P2P协议所在的IP地址外,根据所述转发模块的需求分配私网IP地址;其中,利用所述转发模块进行通信时采用内部私网IP地址进行交互。
25.根据权利要求22所述的路由设备,其特征在于:
所述协议端点还用于在设备链路信息模块上注册,确定用于邻接表更新的操作通道,以及如下信息:协议端点的P2P协议信息、操作通道持续有效时间范围、更新周期、通知条件;还用于向所述链路信息处理模块发送邻接信息查询消息,查询当前邻接表内对应的通信信息;还用于在邻接信息变化时发送邻接信息上报消息给所述设备链路信息模块,以上报变化后最新的邻接信息;
所述设备链路信息模块还用于向协议端点返回注册确认消息;还用于向协议端点主动请求最新的邻接信息;还用于当收到所述邻接信息查询消息时,返回邻接表查询应答;还用于当收到所述邻接信息上报消息时返回上报确认;
所述设备链路信息模块和协议端点在注册完成后遇到符合注册的通知条件的邻接表变化,以邻接表更新事件通知给对应的协议端点。
26.根据权利要求22所述的路由设备,其特征在于:
所述协议端点还用于当从邻接的P2P节点收到P2P广播报文时,判断该P2P广播报文是否在设定时间段内已经收到过,如果没有,则将该P2P广播报文发给除接收到该报文的邻接的P2P节点外的其他与所述协议端点邻接的P2P节点;此外,将此报文打包为IP组播报文,组播目标为对应该P2P网络的转发模块指定的组播地址,不同的P2P网络使用不同的组播地址;当从所述转发模块收到组播报文封装的P2P广播报文时,判断该P2P广播报文是否在设定时间段内已经收到过,如果没有,则根据P2P协议的邻接转发要求把这个P2P广播报文发给邻接的P2P节点。
27.根据权利要求26所述的路由设备,其特征在于:
所述转发模块用于收到所述IP组播报文时,根据组播地址转发给该组播的所有成员;如果存在多域P2P路由设备组网,则还把该报文转发给其他属于该组播组成员的P2P网络的P2P路由设备的模块和协议端点。
CN202111165924.3A 2021-09-30 2021-09-30 点对点网络报文的传递方法、路由设备及计算机存储介质 Pending CN115914074A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111165924.3A CN115914074A (zh) 2021-09-30 2021-09-30 点对点网络报文的传递方法、路由设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111165924.3A CN115914074A (zh) 2021-09-30 2021-09-30 点对点网络报文的传递方法、路由设备及计算机存储介质

Publications (1)

Publication Number Publication Date
CN115914074A true CN115914074A (zh) 2023-04-04

Family

ID=86495389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111165924.3A Pending CN115914074A (zh) 2021-09-30 2021-09-30 点对点网络报文的传递方法、路由设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN115914074A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116566973A (zh) * 2023-06-20 2023-08-08 北京中宏立达科技发展有限公司 一种基于对等网络的文件传输系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116566973A (zh) * 2023-06-20 2023-08-08 北京中宏立达科技发展有限公司 一种基于对等网络的文件传输系统
CN116566973B (zh) * 2023-06-20 2023-11-07 北京中宏立达科技发展有限公司 一种基于对等网络的文件传输系统

Similar Documents

Publication Publication Date Title
US8837483B2 (en) Mapping private and public addresses
JP6047229B2 (ja) 情報中心ネットワークにおける名前ベースの近隣探索及びマルチホップサービス探索
KR101399914B1 (ko) 피어-투-피어 통신 시스템 및 방법
EP2501083B1 (en) Relay node, distributed network of relay node and networking method thereof
KR100513282B1 (ko) 에드 혹 네트워크에서의 패스 엠티유를 이용하여 데이터를 송신하는 데이터 송신 노드 및 송신 방법
EP2093960B1 (en) Network architecture of mutiple address spaces, and method for host information register and data transmission
US20110047272A1 (en) Dissemination of Network Management Tasks in a Distributed Communication Network
US20100146053A1 (en) Method, apparatus and system for answering requests on peer-to-peer overlay network
CN111598564A (zh) 区块链节点连接建立方法、装置及设备
CN101640628B (zh) 基于Mesh网络的路由管理与路由方法、节点、装置及系统
US20140317271A1 (en) Method and node apparatus for collecting information in content network based on information-centric networking
CN115914074A (zh) 点对点网络报文的传递方法、路由设备及计算机存储介质
US8051167B2 (en) Optimized mirror for content identification
US20100212006A1 (en) Peer-to-peer traffic management based on key presence in peer-to-peer data transfers
US9392055B2 (en) Data sharing method and system
Bosunia et al. Enhanced multimedia data delivery based on content-centric networking in wireless networks
KR100641796B1 (ko) P2p 오버레이 네트워크 구축 방법 및 장치
KR100696206B1 (ko) 피어-투-피어 응용을 위한 자원 검색 방법
CN102714664B (zh) 数据共享方法和系统
EP2835954B1 (fr) Procédé de traitement, dans un réseau ad hoc de radiocommunication, stations de radiocommunication et programmes d'ordinateur correspondants
CN115174955B (zh) 基于未来网络的数字电影全国高速发行系统
CN110418218B (zh) 报文处理方法、装置及fcf交换设备
JP5287500B2 (ja) ノード装置およびノード装置用プログラム
Minorikawa et al. Applicability of Contents Mobility Support Exploiting Caching and NLSR in NDN
Tsaoussidis et al. Network Working Group P. Mendes, Ed. Internet-Draft Airbus Intended status: Experimental R. Sofia Expires: March 19, 2021 fortiss GmbH

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