CN117880200A - 数据传输方法、装置及系统 - Google Patents

数据传输方法、装置及系统 Download PDF

Info

Publication number
CN117880200A
CN117880200A CN202211643989.9A CN202211643989A CN117880200A CN 117880200 A CN117880200 A CN 117880200A CN 202211643989 A CN202211643989 A CN 202211643989A CN 117880200 A CN117880200 A CN 117880200A
Authority
CN
China
Prior art keywords
node
message
data
packet
data block
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
CN202211643989.9A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2023/103315 priority Critical patent/WO2024078018A1/zh
Publication of CN117880200A publication Critical patent/CN117880200A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/31Flow control; Congestion control by tagging of packets, e.g. using discard eligibility [DE] bits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Abstract

本申请公开了一种数据传输方法、装置及系统,属于网络技术领域。对于发送方为SFU服务器的原始报文,在该原始报文的传输路径上支持数据去重的首个节点或中间节点获取该原始报文之后,判断自身是否向该原始报文的下一跳发送过载荷部分与该原始报文的载荷部分具有重复内容的历史报文,如果自身向该报文的下一跳发送过载荷部分与该原始报文的载荷部分具有重复内容的历史报文,则该节点对该原始报文的载荷部分进行去重处理得到去重报文,然后向该原始报文的下一跳发送该去重报文。由于去重报文的数据量相较于原始报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。

Description

数据传输方法、装置及系统
本申请要求于2022年10月10日提交的申请号为202211233819.3,发明名称为“基于SFU架构的流量分组与去重技术”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及网络技术领域,特别涉及一种数据传输方法、装置及系统。
背景技术
在视频会议或直播等通信场景中,同一用户的音视频数据通常需要分发给多个接收者,这会导致数据传输量较大,从而网络开销较大。
发明内容
本申请提供了一种数据传输方法、装置及系统,可以通过减少报文传输数据量来减少网络带宽的开销。
第一方面,提供了一种数据传输方法。该方法包括:第一节点获取发送方为选择性转发单元(selective forwarding unit,SFU)服务器的第一报文,第一节点为第一报文的传输路径上支持数据去重的首个节点。如果第一节点向第二节点发送的历史报文中存在目标报文,目标报文的载荷部分与第一报文的载荷部分具有重复内容,第一节点对第一报文的载荷部分进行去重处理,得到第二报文。第二报文不包括重复内容,且第二报文携带有去重标记以及对重复内容的指示信息。该去重标记用于指示第二报文为去重报文。第二节点为第一报文在第一节点上的下一跳。第一节点向第二节点发送第二报文。
本申请中,第一节点在接收到发送方为SFU服务器的报文之后,可以判断是否向该报文的下一跳发送过载荷部分与该报文的载荷部分具有重复内容的历史报文。如果第一节点向该报文的下一跳发送过载荷部分与该报文的载荷部分具有重复内容的历史报文,则第一节点可以对该报文进行数据去重,然后向下级节点发送去重报文。由于去重报文的数据量相较于未去重报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。
可选地,重复内容包括一个或多个重复数据块,对该重复内容的指示信息包括一个或多个指示。该一个或多个指示与重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值。
一种可能实现方式,第一节点中存储有数据集合,该数据集合包括第一节点向第二节点发送的历史报文的载荷部分。第一节点对第一报文的载荷部分与该数据集合中的载荷部分进行内容匹配。如果该数据集合中存在与第一报文的载荷部分具有重复数据块的目标载荷部分,第一节点确定历史报文中存在目标报文。相应地,第一节点对第一报文的载荷部分进行去重处理的实现过程,包括:针对第一报文的载荷部分与目标载荷部分之间的每个重复数据块,第一节点计算该重复数据块的哈希值。第一节点去除第一报文的载荷部分的该重复数据块,并在第一报文的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值以及该重复数据块在第一报文的载荷部分中的位置。
本申请中,第一节点可以对获取的报文的载荷部分与已存储的历史报文的载荷部分进行内容匹配。如果该报文的载荷部分与历史报文的载荷部分有重复数据块,则第一节点计算该重复数据块的哈希值,并去除该报文中的该重复数据块得到去重报文,进一步在该去重报文中携带对该重复数据块的哈希值以及该重复数据块的位置的指示,以实现对报文的数据去重。
可选地,如果数据集合中不存在与第一报文的载荷部分具有重复数据块的载荷部分,第一节点确定历史报文中不存在目标报文。第一节点在数据集合中添加第一报文的载荷部分。更新后的数据集合可以用于第一节点对后续获取的发送方为该SFU服务器的报文进行去重处理。
另一种可能实现方式,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于第一报文的数据部分。
可选地,第一节点中存储有采样标签集合,该采样标签集合包括历史数据块的哈希值,历史数据块为对第一节点向第二节点发送的历史报文的数据部分的预设位置采样得到的数据块。第一节点对第一报文的数据部分的预设位置进行采样,得到采样数据块。第一节点计算该采样数据块的哈希值。如果该采样标签集合中包括该采样数据块的哈希值,第一节点确定历史报文中存在目标报文。相应地,第一节点对第一报文的载荷部分进行去重处理的实现过程,包括:第一节点将哈希值属于该采样标签集合的采样数据块作为重复数据块,去除第一报文的数据部分的该重复数据块,并在第一报文的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值。
本申请中,第一节点可以计算获取的报文的数据部分的预设位置的采样数据块的哈希值,并将其与已存储的历史数据块的哈希值进行比较。如果该报文中某个采样数据块的哈希值与第一节点已存储的哈希值相同,则第一节点去除该报文中的该采样数据块得到去重报文,进一步在该去重报文中携带该采样数据块的哈希值,以实现对报文的数据去重。
可选地,上述预设位置有多个,第一节点对第一报文的数据部分的预设位置采样得到的采样数据块有多个,重复数据块对应的指示还用于指示该重复数据块在第一报文的数据部分中的位置。
本申请中,在预先设置的数据部分的采样位置有多个的情况下,第一节点对报文的数据部分进行采样会得到多个采样数据块,这种情况下需要指示去重报文中被去除的重复数据块在原始报文中的位置,以便后续节点对去重报文进行数据恢复。
可选地,如果采样标签集合中不包括采样数据块的哈希值,第一节点确定历史报文中不存在目标报文。第一节点在采样标签集合中添加采样数据块的哈希值。更新后的采样标签集合可以用于第一节点对后续获取的发送方为该SFU服务器的报文进行去重处理。
可选地,采样标签集合还包括哈希值所指示的历史数据块。如果采样标签集合中包括采样数据块的哈希值,第一节点确定历史报文中存在目标报文的实现方式,包括:如果采样标签集合中包括采样数据块的哈希值,第一节点对采样数据块与采样数据块的哈希值所指示的历史数据块进行内容匹配。当采样数据块与该采样数据块的哈希值所指示的历史数据块的内容相同时,第一节点确定历史报文中存在目标报文。
由于哈希值相同的两个数据块的数据内容有可能不同,通过在采样标签集合中存储历史数据块与历史数据块的哈希值的对应关系,可以使得第一节点在确定报文的采样数据块的哈希值与某个历史数据块的哈希值相同之后,进一步对该采样数据块与该历史数据块进行内容匹配,以实现精确匹配,进而提高对报文的去重准确率。
可选地,第一节点中还存储有第一节点向第二节点发送的历史报文的协议部分。上述重复内容还包括位于第一报文的协议部分的协议信息,对重复内容的指示信息还包括差异指示,该差异指示用于指示第一报文的协议部分与目标报文的协议部分的差异。
本申请中,第一节点除了可以对报文的数据部分的预设位置的数据块进行去重以外,还可以对报文的协议部分进行去重,通过在报文的载荷部分携带差异指示以替代协议部分,可以进一步减少报文传输数据量,从而减少网络带宽的开销。
可选地,第一节点中存储有第二节点对应的一个或多个流分组集合。每个流分组集合包括流经第二节点的多条流的流标识。在第一节点获取第一报文之后,如果第二节点对应的流分组集合中存在包括第一报文所属流的流标识的目标流分组集合,第一节点判断向第二节点发送的目标历史报文中是否存在目标报文,目标历史报文所属流的流标识属于目标流分组集合。如果第二节点对应的所有流分组集合均不包括第一报文所属流的流标识,第一节点向第二节点发送第一报文。
本申请中,第一节点可以根据下级节点对应的流分组集合,判断是否需要对向该下级节点发送的报文进行去重处理。如果该报文所属流的流标识不在该下级节点对应的流分组集合中,那么第一节点直接向下级节点转发该报文,而无需再执行报文去重流程,这样可以减小第一节点的处理开销。另外,当下级节点对应的流分组集合有多个时,这种实现方式下,第一节点只需对属于一个流分组集合所指示的多条流的历史报文的载荷部分与报文的载荷部分进行重复内容判断,减少了第一节点所需判断的历史报文的数量,从而减少了第一节点的处理开销,同时提高了第一节点的报文处理效率,从而可以提高报文传输效率。
可选地,第一节点接收第二节点发送的分组信息,该分组信息包括第二节点的节点标识与第二节点对应的一个或多个流分组集合的对应关系。
可选地,第一节点不为SFU服务器。第一节点接收到目的端口号为SFU服务端口号的第三报文之后,向第三节点发送第一节点发现报文,第三节点为第三报文在第一节点上的下一跳,第三报文的目的地为SFU服务器,第一节点发现报文携带有该SFU服务器的标识,且第一节点发现报文指示第一节点为第三节点在以该SFU服务器为起点的传输路径上的下级节点。响应于未接收到第三节点发送的第一节点发现报文对应的第一节点发现响应报文,第一节点确定第一节点为以该SFU服务器为起点的传输路径上支持数据去重的首个节点。
可选地,第一节点根据第三报文生成第一节点发现报文,第一节点发现报文的报文头与第三报文的报文头相同,第一节点发现报文的载荷部分携带有对第一节点发现报文的报文类型的指示。
可选地,第一节点接收第四节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第四节点为第一节点在以该SFU服务器为起点的传输路径上的下级节点。第一节点根据第二节点发现报文确定第四节点支持数据去重,并向第四节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。
本申请中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到下级节点发送的节点发现报文,且未接收到上级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的首个节点。
可选地,第一节点接收到源端口号为SFU服务端口号的第四报文之后,向第五节点发送第三节点发现报文,第五节点为第四报文在第一节点上的下一跳,第四报文的发送方为SFU服务器,第三节点发现报文携带有该SFU服务器的标识,且第三节点发现报文指示第一节点为第五节点在以该SFU服务器为起点的传输路径上的上级节点。响应于接收到第五节点发送的第三节点发现报文对应的第三节点发现响应报文,第一节点确定第五节点支持数据去重。
本申请中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到下级节点发送的节点发现响应报文,且未接收到上级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的首个节点。
可选地,如果第一节点向第二节点发送的历史报文中不存在目标报文,第一节点向第二节点发送第一报文。
第二方面,提供了一种数据传输方法。该方法包括:第一节点接收第二节点发送的第一报文。第一报文的发送方为SFU服务器。第一报文携带有去重标记以及对重复内容的指示信息。该去重标记用于指示第一报文为去重报文。第一节点为第一报文的传输路径上支持数据去重的最后一个节点。第一节点基于第一报文中的去重标记确定第一报文为去重报文。第一节点根据该指示信息从数据集合中获取该重复内容,数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分的至少部分内容。第一节点根据该重复内容对第一报文的载荷部分进行去重恢复处理,得到第二报文。第二报文的载荷部分包括该重复内容。第一节点向第三节点发送第二报文,第三节点为第一报文在第一节点上的下一跳。
本申请中,第一节点可以对发送方为SFU服务器的去重报文进行数据恢复,使得用户能够接收到携带有完整数据内容的原始报文,从而实现对用户业务的保障。
可选地,重复内容包括一个或多个重复数据块。对该重复内容的指示信息包括一个或多个指示。该一个或多个指示与重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值。
一种可能实现方式,每个指示还用于指示对应的重复数据块在第一报文对应的原始报文的载荷部分中的位置,数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分。第一节点根据指示信息从数据集合中获取重复内容的实现过程,包括:对于指示信息中的每个指示,第一节点根据该指示所指示的位置,获取数据集合中的载荷部分的该位置的待匹配数据块。第一节点计算待匹配数据块的哈希值。第一节点将哈希值与指示所指示的哈希值一致的待匹配数据块,确定为指示对应的重复数据块。
本申请中,第一节点可以根据去重报文中携带的指示所指示的重复数据块在原始报文的载荷部分的位置,分别计算已存储的多个载荷部分的该位置的数据块的哈希值,以获取哈希值与该指示所指示的哈希值一致的存储数据块,然后将该存储数据块添加至该指示所指示的位置,以实现对去重报文的数据恢复。
另一种可能实现方式,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于数据部分。
可选地,数据集合包括历史数据块的哈希值与历史数据块的对应关系,历史数据块为对第一节点接收到的来自第二节点的历史报文的数据部分的预设位置采样得到的数据块。第一节点根据指示信息从数据集合中获取重复内容的实现方式,包括:第一节点将数据集合中与指示信息中的指示所指示的哈希值对应的历史数据块,确定为指示对应的重复数据块。
可选地,对重复内容的指示信息中的指示还用于指示对应的重复数据块在第一报文对应的原始报文的数据部分中的位置。第一节点根据重复内容对第一报文的载荷部分进行去重恢复处理的实现方式,包括:对于指示信息中的每个指示,第一节点在第一报文的数据部分中该指示所指示的位置,添加该指示对应的重复数据块。
本申请中,第一节点可以在已存储的历史数据块的哈希值中查找去重报文中携带的哈希值,并将命中的哈希值所对应的历史数据块添加到去重报文的数据部分,以实现对去重报文的数据部分的恢复。
可选地,重复内容还包括位于协议部分的协议信息,指示信息还包括差异指示,差异指示用于指示第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为第一节点接收到的来自第二节点的历史报文中数据部分与原始报文的数据部分具有一个或多个重复数据块的历史报文。数据集合还包括历史数据块所属报文的协议部分。第一节点根据指示信息从数据集合中获取重复内容的实现过程,还包括:第一节点从数据集合中获取一个或多个重复数据块所属的目标报文的协议部分。相应地,第一节点根据重复内容对第一报文的载荷部分进行去重恢复处理的实现过程,还包括:第一节点根据差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为第二报文的协议部分。
本申请中,第一节点可以获取命中的哈希值对应的历史数据块所属的历史报文的协议部分,结合去重报文中针对协议部分的差异指示还原得到去重报文对应的原始报文的协议部分,以实现对去重报文的协议部分的恢复。
可选地,去重标记位于第一报文的载荷部分。第一节点中存储有一个或多个流分组集合,每个流分组集合包括流经第一节点的多条流的流标识。在第一节点基于去重标记确定第一报文为去重报文之前,第一节点确定该一个或多个流分组集合中存在包括第一报文所属流的流标识的目标流分组集合。第一节点解析第一报文的载荷部分,得到去重标记。
可选地,第一节点根据指示信息从数据集合中获取重复内容的实现方式,包括:第一节点根据指示信息,从数据集合中的目标历史报文的载荷内容中获取重复内容,目标历史报文所属流的流标识属于目标流分组集合。
这种实现方式下,当第一节点对应的流分组集合有多个时,第一节点只需查找属于一个流分组集合所指示的多条流的历史报文的载荷部分以获取重复内容,减少了第一节点所需检索的历史报文的数量,从而减少了第一节点的处理开销,同时提高了第一节点的报文处理效率,从而可以提高报文传输效率。
可选地,第一节点接收第三报文,第三报文所属流的流标识不属于任一流分组集合。第一节点转发第三报文。
本申请中,由于上级节点只会对属于下级节点对应的流分组集合所指示的流中的报文进行数据去重,因此第一节点在接收到报文之后,可以先判断该报文所属流的流标识是否属于自身对应的某个流分组集合。如果该报文所属流的流标识属于自身对应的某个流分组集合,则说明该报文有可能是经过上级节点去重处理的去重报文,第一节点需要进一步解析该报文的载荷部分以判断该报文是否为去重报文。如果该报文所属流的流标识不属于自身对应的任一流分组集合,则说明上级节点不会对该报文进行数据去重,即该报文不可能为去重报文,因此第一节点可以直接转发该报文,而无需解析该报文的载荷部分以判断该报文是否为去重报文。这样可以减少底部节点的处理开销。
可选地,第一节点接收第四报文,第四报文所属流的流标识属于流分组集合。第一节点解析第四报文的载荷部分,确定第四报文的载荷部分未携带有去重标记。第一节点在数据集合中添加第四报文的载荷部分的至少部分内容,并转发第四报文。这里的第四报文可视为第一节点接收到的一组可去重报文中的首包,第一节点通过在数据集合中存储第四报文的载荷部分的至少部分内容,以便对后续接收到的去重报文进行数据恢复。
可选地,第一节点将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一流分组集合中,该不同流的发送方均为SFU服务器。
可选地,第一节点向第二节点发送分组信息,分组信息包括第一节点的节点标识与一个或多个流分组集合的对应关系。
可选地,第一节点接收到目的端口号为SFU服务端口号的第五报文之后,向第四节点发送第一节点发现报文,第四节点为第五报文在第一节点上的下一跳,第五报文的目的地为SFU服务器,第一节点发现报文携带有该SFU服务器的标识,且第一节点发现报文指示第一节点为第四节点在以该SFU服务器为起点的传输路径上的下级节点。响应于接收到第四节点发送的第一节点发现报文对应的第一节点发现响应报文,第一节点确定第四节点支持数据去重。
可选地,第一节点根据第五报文生成第一节点发现报文,第一节点发现报文的报文头与第五报文的报文头相同,第一节点发现报文的载荷部分携带有对第一节点发现报文的报文类型的指示。
本申请中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现响应报文,且未接收到下级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的最后一个节点。
可选地,第一节点接收第五节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第五节点为第一节点在以该SFU服务器为起点的传输路径上的上级节点。第一节点根据第二节点发现报文确定第五节点支持数据去重,并向第五节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。
可选地,第一节点接收到源端口号为SFU服务端口号的第六报文之后,向第六节点发送第三节点发现报文,第六节点为第六报文在第一节点上的下一跳,第六报文的发送方为SFU服务器,第三节点发现报文携带有该SFU服务器的标识,且第三节点发现报文指示第一节点为第六节点在以该SFU服务器为起点的传输路径上的上级节点。响应于未接收到第六节点发送的第三节点发现报文对应的第三节点发现响应报文,第一节点确定第一节点为以该SFU服务器为起点的传输路径上支持数据去重的最后一个节点。
本申请中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现报文,且未接收到下级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的最后一个节点。
第三方面,提供了一种数据传输方法。该方法包括:第一节点接收第二节点发送的第一报文。第一报文的发送方为SFU服务器。第一节点为第一报文的传输路径上支持数据去重的中间节点。如果第一报文为未去重报文,且第一节点向第三节点发送的历史报文中存在第一原始报文,第一原始报文的载荷部分与第一报文的载荷部分具有第一重复内容,第一节点对第一报文的载荷部分进行去重处理,得到第二报文,第二报文不包括第一重复内容,且第二报文携带有去重标记以及对第一重复内容的第一指示信息,去重标记用于指示第二报文为去重报文,第三节点为第一报文在第一节点上的下一跳。第一节点向第三节点发送第二报文。
本申请中,第一节点可以对发送方为SFU服务器的未去重报文进行数据去重,以向下级节点发送去重报文。由于去重报文的数据量相较于未去重报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。第一节点在向下级节点发送去重报文时,只需保证向该下级节点发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文即可,以保证后续传输路径上存在节点能够对该去重报文进行数据恢复,使得用户最终接收到携带有完整数据内容的原始报文,保障用户业务。
可选地,如果第一报文为未去重报文,且第一节点向第三节点发送的历史报文中不存在第一原始报文,第一节点向第三节点发送第一报文。
可选地,第一重复内容包括一个或多个重复数据块,第一指示信息包括一个或多个指示。第一指示信息中的一个或多个指示与第一重复内容中的一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
一种可能实现方式,第一节点中存储有第一数据集合,第一数据集合包括第一节点向第三节点发送的历史报文的载荷部分。第一节点对第一报文的载荷部分与第一数据集合中的载荷部分进行内容匹配。如果第一数据集合中存在与第一报文的载荷部分具有重复数据块的目标载荷部分,第一节点确定历史报文中存在第一原始报文。如果第一数据集合中不存在与第一报文的载荷部分具有重复数据块的载荷部分,第一节点确定历史报文中不存在第一原始报文,并且,第一节点在第一数据集合中添加第一报文的载荷部分。
可选地,第一数据集合包括目标载荷部分,第一节点对第一报文的载荷部分进行去重处理的实现过程,包括:针对第一报文的载荷部分与目标载荷部分之间的每个重复数据块,第一节点计算该重复数据块的哈希值。第一节点去除第一报文的载荷部分的该重复数据块,并在第一报文的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值以及该重复数据块在第一报文的载荷部分中的位置。
另一种可能实现方式,载荷部分包括协议部分和数据部分。第一重复内容中的一个或多个重复数据块位于第一报文的数据部分。第一节点中存储有采样标签集合,采样标签集合包括历史数据块的哈希值,历史数据块为对第一节点向第三节点发送的历史报文的数据部分的预设位置采样得到的数据块。第一节点对第一报文的数据部分的预设位置进行采样,得到采样数据块。第一节点计算采样数据块的哈希值。如果采样标签集合中包括采样数据块的哈希值,第一节点确定历史报文中存在第一原始报文。如果采样标签集合中不包括采样数据块的哈希值,第一节点确定历史报文中不存在第一原始报文,并且,第一节点在采样标签集合中添加采样数据块的哈希值。
可选地,采样标签集合中包括采样数据块的哈希值,第一节点对第一报文的载荷部分进行去重处理的实现方式,包括:第一节点将哈希值属于采样标签集合的采样数据块作为重复数据块,去除第一报文的数据部分的该重复数据块,并在第一报文的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值。
可选地,第一节点中还存储有第一节点向第三节点发送的历史报文的协议部分;第一重复内容还包括位于第一报文的协议部分的协议信息,第一指示信息还包括差异指示,差异指示用于指示第一报文的协议部分与第一原始报文的协议部分的差异。
可选地,如果第一报文为去重报文,第一报文携带有对第二重复内容的第二指示信息,且第一节点向第三节点发送的历史报文中存在第二原始报文,第二原始报文的载荷部分包括第二重复内容,第一节点向第三节点发送第一报文。
可选地,如果第一报文为去重报文,第一报文携带有对第二重复内容的第二指示信息,且第一节点向第三节点发送的历史报文中不存在第二原始报文,第二原始报文的载荷部分包括第二重复内容,第一节点根据第二指示信息从第二数据集合中获取第二重复内容,第二数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分的至少部分内容。第一节点根据第二重复内容对第一报文的载荷部分进行去重恢复处理,得到第三报文,第三报文的载荷部分包括第二重复内容。第一节点向第三节点发送第三报文。
可选地,第二重复内容包括一个或多个重复数据块,第二指示信息包括一个或多个指示,第二指示信息中的一个或多个指示与第二重复内容中的一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
一种可能实现方式,每个指示还用于指示对应的重复数据块在第一报文对应的原始报文的载荷部分中的位置,第二数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分。第一节点根据第二指示信息从第二数据集合中获取第二重复内容的实现方式,包括:对于第二指示信息中的每个指示,第一节点根据该指示所指示的位置,获取第二数据集合中的载荷部分的该位置的待匹配数据块。第一节点计算待匹配数据块的哈希值。第一节点将哈希值与该指示所指示的哈希值一致的待匹配数据块,确定为该指示对应的重复数据块。
另一种可能实现方式,载荷部分包括协议部分和数据部分,第二重复内容中的一个或多个重复数据块位于数据部分。第二数据集合包括历史数据块的哈希值与历史数据块的对应关系,历史数据块为对第一节点接收到的来自第二节点的历史报文的数据部分的预设位置采样得到的数据块。第一节点根据第二指示信息从第二数据集合中获取第二重复内容的实现方式,包括:第一节点将第二数据集合中与第二指示信息中的指示所指示的哈希值对应的历史数据块,确定为该指示对应的重复数据块。
可选地,第二指示信息中的指示还用于指示对应的重复数据块在第一报文对应的原始报文的数据部分中的位置。第一节点根据第二重复内容对第一报文的载荷部分进行去重恢复处理的实现方式,包括:对于第二指示信息中的每个指示,第一节点在第一报文的数据部分中该指示所指示的位置,添加该指示对应的重复数据块。
可选地,第二重复内容还包括位于协议部分的协议信息,第二指示信息还包括差异指示,差异指示用于指示第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为第一节点接收到的来自第二节点的历史报文中数据部分与原始报文的数据部分具有一个或多个重复数据块的历史报文。第二数据集合还包括历史数据块所属报文的协议部分。第一节点根据第二指示信息从第二数据集合中获取第二重复内容的实现过程,还包括:第一节点从第二数据集合中获取一个或多个重复数据块所属的目标报文的协议部分。相应地,第一节点根据第二重复内容对第一报文的载荷部分进行去重恢复处理的实现过程,包括:第一节点根据差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为第三报文的协议部分。
可选地,第一节点中存储有一个或多个本地流分组集合,每个本地流分组集合包括流经第一节点的多条流的流标识。第一节点在确定一个或多个本地流分组集合中存在包括第一报文所属流的流标识的目标流分组集合之后,解析第一报文的载荷部分。如果第一报文的载荷部分携带有去重标记,第一节点确定第一报文为去重报文。如果第一报文的载荷部分未携带有去重标记,第一节点确定第一报文为未去重报文。
可选地,第一节点将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一本地流分组集合中,该不同流的发送方均为SFU服务器。
可选地,第一节点向第二节点发送第一分组信息,第一分组信息包括第一节点的节点标识与一个或多个本地流分组集合的对应关系。
可选地,第一节点中存储有第三节点对应的一个或多个下级流分组集合,每个下级流分组集合包括流经第三节点的多条流的流标识。在第一节点接收第二节点发送的第一报文之后,如果第三节点对应的下级流分组集合中存在包括第一报文所属流的流标识的目标流分组集合,第一节点判断向第三节点发送的目标历史报文中是否存在载荷部分与第一报文的载荷部分具有重复内容的报文,目标历史报文所属流的流标识属于目标流分组集合。如果第三节点对应的所有下级流分组集合均不包括第一报文所属流的流标识,第一节点向第三节点发送第一报文。
可选地,第一节点接收第三节点发送的第二分组信息,第二分组信息包括第三节点的节点标识与一个或多个下级流分组集合的对应关系。
可选地,第一节点接收到目的端口号为SFU服务端口号的第四报文之后,向第四节点发送第一节点发现报文,第四节点为第四报文在第一节点上的下一跳,第四报文的目的地为SFU服务器,第一节点发现报文携带有该SFU服务器的标识,且第一节点发现报文指示第一节点为第四节点在以该SFU服务器为起点的传输路径上的下级节点。响应于接收到第四节点发送的第一节点发现报文对应的第一节点发现响应报文,第一节点确定第四节点支持数据去重。
可选地,第一节点接收第七节点发送的第四节点发现报文,第四节点发现报文携带有SFU服务器的标识,且第四节点发现报文指示第七节点为第一节点在以该SFU服务器为起点的传输路径上的下级节点。第一节点根据第四节点发现报文确定第七节点支持数据去重,并向第七节点发送第四节点发现报文对应的第四节点发现响应报文,第四节点发现响应报文指示第一节点支持数据去重。
本申请中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现响应报文,且接收到下级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的中间节点。
可选地,第一节点接收到源端口号为SFU服务端口号的第五报文之后,向第六节点发送第三节点发现报文,第六节点为第五报文在第一节点上的下一跳,第五报文的发送方为SFU服务器,第三节点发现报文携带有该SFU服务器的标识,且第三节点发现报文指示第一节点为第六节点在以该SFU服务器为起点的传输路径上的上级节点。响应于接收到第六节点发送的第三节点发现报文对应的第三节点发现响应报文,第一节点确定第六节点支持数据去重。
可选地,第一节点接收第五节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第五节点为第一节点在以该SFU服务器为起点的传输路径上的上级节点。第一节点根据第二节点发现报文确定第五节点支持数据去重,并向第五节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。
本申请中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现报文,且接收到下级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的中间节点。
第四方面,提供了一种节点。所述节点包括多个功能模块,所述多个功能模块相互作用,实现上述第一方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
具体地,该节点为第一节点,第一节点包括:获取模块,用于获取发送方为SFU服务器的第一报文,所述第一节点为所述第一报文的传输路径上支持数据去重的首个节点。处理模块,用于如果所述第一节点向第二节点发送的历史报文中存在目标报文,所述目标报文的载荷部分与所述第一报文的载荷部分具有重复内容,对所述第一报文的载荷部分进行去重处理,得到第二报文,所述第二报文不包括所述重复内容,且所述第二报文携带有去重标记以及对所述重复内容的指示信息,所述去重标记用于指示所述第二报文为去重报文,所述第二节点为所述第一报文在所述第一节点上的下一跳。发送模块,用于向所述第二节点发送所述第二报文。
可选地,所述重复内容包括一个或多个重复数据块,所述指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
可选地,所述第一节点中存储有数据集合,所述数据集合包括所述第一节点向所述第二节点发送的历史报文的载荷部分,所述处理模块,用于:对所述第一报文的载荷部分与所述数据集合中的载荷部分进行内容匹配;如果所述数据集合中存在与所述第一报文的载荷部分具有重复数据块的目标载荷部分,确定所述历史报文中存在所述目标报文;针对所述第一报文的载荷部分与所述目标载荷部分之间的每个重复数据块,所述第一节点计算所述重复数据块的哈希值;去除所述第一报文的载荷部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值以及所述重复数据块在所述第一报文的载荷部分中的位置。
可选地,所述处理模块,用于:如果所述数据集合中不存在与所述第一报文的载荷部分具有重复数据块的载荷部分,确定所述历史报文中不存在所述目标报文;在所述数据集合中添加所述第一报文的载荷部分。
可选地,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于所述第一报文的数据部分。
可选地,所述第一节点中存储有采样标签集合,所述采样标签集合包括历史数据块的哈希值,所述历史数据块为对所述第一节点向所述第二节点发送的历史报文的数据部分的预设位置采样得到的数据块;所述处理模块,用于:对所述第一报文的数据部分的所述预设位置进行采样,得到采样数据块;计算所述采样数据块的哈希值;如果所述采样标签集合中包括所述采样数据块的哈希值,确定所述历史报文中存在所述目标报文;将哈希值属于所述采样标签集合的所述采样数据块作为重复数据块,去除所述第一报文的数据部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值。
可选地,所述预设位置有多个,所述第一节点对所述第一报文的数据部分的所述预设位置采样得到的采样数据块有多个,所述指示还用于指示所述重复数据块在所述第一报文的数据部分中的位置。
可选地,所述处理模块,用于:如果所述采样标签集合中不包括所述采样数据块的哈希值,确定所述历史报文中不存在所述目标报文;在所述采样标签集合中添加所述采样数据块的哈希值。
可选地,所述采样标签集合还包括哈希值所指示的历史数据块,如果所述采样标签集合中包括所述采样数据块的哈希值,所述处理模块,用于:如果所述采样标签集合中包括所述采样数据块的哈希值,对所述采样数据块与所述采样数据块的哈希值所指示的历史数据块进行内容匹配;当所述采样数据块与所述采样数据块的哈希值所指示的历史数据块的内容相同时,确定所述历史报文中存在所述目标报文。
可选地,所述第一节点中还存储有所述第一节点向所述第二节点发送的历史报文的协议部分;所述重复内容还包括位于所述第一报文的协议部分的协议信息,所述指示信息还包括差异指示,所述差异指示用于指示所述第一报文的协议部分与所述目标报文的协议部分的差异。
可选地,所述第一节点中存储有所述第二节点对应的一个或多个流分组集合,每个所述流分组集合包括流经所述第二节点的多条流的流标识;所述处理模块,还用于在所述第一节点获取第一报文之后,如果所述第二节点对应的流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合,判断向所述第二节点发送的目标历史报文中是否存在所述目标报文,所述目标历史报文所属流的流标识属于所述目标流分组集合;所述发送模块,还用于如果所述第二节点对应的所有流分组集合均不包括所述第一报文所属流的流标识,向所述第二节点发送所述第一报文。
可选地,所述第一节点还包括接收模块;所述接收模块,用于接收所述第二节点发送的分组信息,所述分组信息包括所述第二节点的节点标识与所述一个或多个流分组集合的对应关系。
可选地,所述第一节点不为所述SFU服务器;所述发送模块,还用于接收到目的端口号为SFU服务端口号的第三报文之后,向第三节点发送第一节点发现报文,所述第三节点为所述第三报文在所述第一节点上的下一跳,所述第三报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第三节点在以所述SFU服务器为起点的传输路径上的下级节点;所述处理模块,还用于响应于未接收到所述第三节点发送的所述第一节点发现报文对应的第一节点发现响应报文,确定所述第一节点为以所述SFU服务器为起点的传输路径上支持数据去重的首个节点。
可选地,所述处理模块,还用于:根据所述第三报文生成所述第一节点发现报文,所述第一节点发现报文的报文头与所述第三报文的报文头相同,所述第一节点发现报文的载荷部分携带有对所述第一节点发现报文的报文类型的指示。
可选地,所述第一节点还包括接收模块;所述接收模块,用于接收第四节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第四节点为所述第一节点在以所述SFU服务器为起点的传输路径上的下级节点;所述处理模块,还用于根据所述第二节点发现报文确定所述第四节点支持数据去重;所述发送模块,还用于向所述第四节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
可选地,所述发送模块,还用于接收到源端口号为SFU服务端口号的第四报文之后,向第五节点发送第三节点发现报文,所述第五节点为所述第四报文在所述第一节点上的下一跳,所述第四报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第五节点在以所述SFU服务器为起点的传输路径上的上级节点;所述处理模块,还用于响应于接收到所述第五节点发送的所述第三节点发现报文对应的第三节点发现响应报文,确定所述第五节点支持数据去重。
可选地,所述发送模块,还用于如果所述第一节点向所述第二节点发送的历史报文中不存在所述目标报文,向所述第二节点发送所述第一报文。
第五方面,提供了一种节点。所述节点包括多个功能模块,所述多个功能模块相互作用,实现上述第二方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
具体地,该节点为第一节点,第一节点包括:接收模块,用于接收第二节点发送的第一报文,所述第一报文的发送方为SFU服务器,所述第一报文携带有去重标记以及对重复内容的指示信息,所述去重标记用于指示所述第一报文为去重报文,所述第一节点为所述第一报文的传输路径上支持数据去重的最后一个节点;处理模块,用于基于所述去重标记确定所述第一报文为去重报文;根据所述指示信息从数据集合中获取所述重复内容,所述数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分的至少部分内容;根据所述重复内容对所述第一报文的载荷部分进行去重恢复处理,得到第二报文,所述第二报文的载荷部分包括所述重复内容;发送模块,用于向第三节点发送所述第二报文,所述第三节点为所述第一报文在所述第一节点上的下一跳。
可选地,所述重复内容包括一个或多个重复数据块,所述指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
可选地,每个所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的载荷部分中的位置,所述数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分;所述处理模块,用于:对于所述指示信息中的每个指示,根据所述指示所指示的位置,获取所述数据集合中的载荷部分的所述位置的待匹配数据块;计算所述待匹配数据块的哈希值;将哈希值与所述指示所指示的哈希值一致的待匹配数据块,确定为所述指示对应的重复数据块。
可选地,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于数据部分。
可选地,所述数据集合包括历史数据块的哈希值与所述历史数据块的对应关系,所述历史数据块为对所述第一节点接收到的来自所述第二节点的历史报文的数据部分的预设位置采样得到的数据块;所述处理模块,用于将所述数据集合中与所述指示信息中的指示所指示的哈希值对应的历史数据块,确定为所述指示对应的重复数据块。
可选地,所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的数据部分中的位置;所述处理模块,用于对于所述指示信息中的每个指示,在所述第一报文的数据部分中所述指示所指示的位置,添加所述指示对应的重复数据块。
可选地,所述重复内容还包括位于协议部分的协议信息,所述指示信息还包括差异指示,所述差异指示用于指示所述第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,所述目标报文为所述第一节点接收到的来自所述第二节点的历史报文中数据部分与所述原始报文的数据部分具有所述一个或多个重复数据块的历史报文;所述数据集合还包括所述历史数据块所属报文的协议部分;所述处理模块,还用于:从所述数据集合中获取所述一个或多个重复数据块所属的所述目标报文的协议部分;根据所述差异指示修改所述目标报文的协议部分,并将修改后的所述目标报文的协议部分作为所述第二报文的协议部分。
可选地,所述去重标记位于所述第一报文的载荷部分,所述第一节点中存储有一个或多个流分组集合,每个所述流分组集合包括流经所述第一节点的多条流的流标识;所述处理模块,还用于在所述第一节点基于所述去重标记确定所述第一报文为去重报文之前,确定所述一个或多个流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合;解析所述第一报文的载荷部分,得到所述去重标记。
可选地,所述处理模块,用于:根据所述指示信息,从所述数据集合中的目标历史报文的载荷内容中获取所述重复内容,所述目标历史报文所属流的流标识属于所述目标流分组集合。
可选地,所述接收模块,还用于接收第三报文,所述第三报文所属流的流标识不属于任一所述流分组集合;所述发送模块,还用于转发所述第三报文。
可选地,所述接收模块,还用于接收第四报文,所述第四报文所属流的流标识属于所述流分组集合;所述处理模块,还用于解析所述第四报文的载荷部分,确定所述第四报文的载荷部分未携带有所述去重标记;在所述数据集合中添加所述第四报文的载荷部分的至少部分内容,并转发所述第四报文。
可选地,所述处理模块,还用于:将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一流分组集合中,所述不同流的发送方均为所述SFU服务器。
可选地,所述发送模块,还用于向所述第二节点发送分组信息,所述分组信息包括所述第一节点的节点标识与所述一个或多个流分组集合的对应关系。
可选地,所述发送模块,还用于接收到目的端口号为SFU服务端口号的第五报文之后,向第四节点发送第一节点发现报文,所述第四节点为所述第五报文在所述第一节点上的下一跳,所述第五报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第四节点在以所述SFU服务器为起点的传输路径上的下级节点;所述处理模块,还用于响应于接收到所述第四节点发送的所述第一节点发现报文对应的第一节点发现响应报文,确定所述第四节点支持数据去重。
可选地,所述处理模块,还用于:根据所述第五报文生成所述第一节点发现报文,所述第一节点发现报文的报文头与所述第五报文的报文头相同,所述第一节点发现报文的载荷部分携带有对所述第一节点发现报文的报文类型的指示。
可选地,所述接收模块,还用于接收第五节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第五节点为所述第一节点在以所述SFU服务器为起点的传输路径上的上级节点;所述处理模块,还用于根据所述第二节点发现报文确定所述第五节点支持数据去重;所述发送模块,还用于向所述第五节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
可选地,所述发送模块,还用于接收到源端口号为SFU服务端口号的第六报文之后,向第六节点发送第三节点发现报文,所述第六节点为所述第六报文在所述第一节点上的下一跳,所述第六报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第六节点在以所述SFU服务器为起点的传输路径上的上级节点;所述处理模块,还用于响应于未接收到所述第六节点发送的所述第三节点发现报文对应的第三节点发现响应报文,确定所述第一节点为以所述SFU服务器为起点的传输路径上支持数据去重的最后一个节点。
第六方面,提供了一种节点。所述节点包括多个功能模块,所述多个功能模块相互作用,实现上述第三方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
具体地,该节点为第一节点,第一节点包括:接收模块,用于接收第二节点发送的第一报文,所述第一报文的发送方为SFU服务器,所述第一节点为所述第一报文的传输路径上支持数据去重的中间节点;处理模块,用于如果所述第一报文为未去重报文,且所述第一节点向第三节点发送的历史报文中存在第一原始报文,所述第一原始报文的载荷部分与所述第一报文的载荷部分具有第一重复内容,对所述第一报文的载荷部分进行去重处理,得到第二报文,所述第二报文不包括所述第一重复内容,且所述第二报文携带有去重标记以及对所述第一重复内容的第一指示信息,所述去重标记用于指示所述第二报文为去重报文,所述第三节点为所述第一报文在所述第一节点上的下一跳;发送模块,用于向所述第三节点发送所述第二报文。
可选地,所述发送模块,还用于如果所述第一报文为未去重报文,且所述第一节点向所述第三节点发送的历史报文中不存在所述第一原始报文,向所述第三节点发送所述第一报文。
可选地,所述第一重复内容包括一个或多个重复数据块,所述第一指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
可选地,所述第一节点中存储有第一数据集合,所述第一数据集合包括所述第一节点向所述第三节点发送的历史报文的载荷部分,所述处理模块,还用于:对所述第一报文的载荷部分与所述第一数据集合中的载荷部分进行内容匹配;如果所述第一数据集合中存在与所述第一报文的载荷部分具有重复数据块的目标载荷部分,确定所述历史报文中存在所述第一原始报文;如果所述第一数据集合中不存在与所述第一报文的载荷部分具有重复数据块的载荷部分,确定所述历史报文中不存在所述第一原始报文,并且,所述第一节点在所述第一数据集合中添加所述第一报文的载荷部分。
可选地,所述第一数据集合包括所述目标载荷部分,所述处理模块,用于:针对所述第一报文的载荷部分与所述目标载荷部分之间的每个重复数据块,计算所述重复数据块的哈希值;去除所述第一报文的载荷部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值以及所述重复数据块在所述第一报文的载荷部分中的位置。
可选地,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于所述第一报文的数据部分;所述第一节点中存储有采样标签集合,所述采样标签集合包括历史数据块的哈希值,所述历史数据块为对所述第一节点向所述第三节点发送的历史报文的数据部分的预设位置采样得到的数据块;所述处理模块,还用于:对所述第一报文的数据部分的所述预设位置进行采样,得到采样数据块;计算所述采样数据块的哈希值;如果所述采样标签集合中包括所述采样数据块的哈希值,确定所述历史报文中存在所述第一原始报文;如果所述采样标签集合中不包括所述采样数据块的哈希值,确定所述历史报文中不存在所述第一原始报文,并且,所述第一节点在所述采样标签集合中添加所述采样数据块的哈希值。
可选地,所述采样标签集合中包括所述采样数据块的哈希值,所述处理模块,用于:将哈希值属于所述采样标签集合的所述采样数据块作为重复数据块,去除所述第一报文的数据部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值。
可选地,所述第一节点中还存储有所述第一节点向所述第三节点发送的历史报文的协议部分;所述第一重复内容还包括位于所述第一报文的协议部分的协议信息,所述第一指示信息还包括差异指示,所述差异指示用于指示所述第一报文的协议部分与所述第一原始报文的协议部分的差异。
可选地,所述发送模块,还用于如果所述第一报文为去重报文,所述第一报文携带有对第二重复内容的第二指示信息,且所述第一节点向所述第三节点发送的历史报文中存在第二原始报文,所述第二原始报文的载荷部分包括所述第二重复内容,向所述第三节点发送所述第一报文。
可选地,所述处理模块,还用于如果所述第一报文为去重报文,所述第一报文携带有对第二重复内容的第二指示信息,且所述第一节点向所述第三节点发送的历史报文中不存在第二原始报文,所述第二原始报文的载荷部分包括所述第二重复内容,根据所述第二指示信息从第二数据集合中获取所述第二重复内容,所述第二数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分的至少部分内容;根据所述第二重复内容对所述第一报文的载荷部分进行去重恢复处理,得到第三报文,所述第三报文的载荷部分包括所述第二重复内容;所述发送模块,还用于向所述第三节点发送所述第三报文。
可选地,所述第二重复内容包括一个或多个重复数据块,所述第二指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
可选地,每个所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的载荷部分中的位置,所述第二数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分;所述处理模块,用于:对于所述第二指示信息中的每个指示,根据所述指示所指示的位置,获取所述第二数据集合中的载荷部分的所述位置的待匹配数据块;计算所述待匹配数据块的哈希值;将哈希值与所述指示所指示的哈希值一致的待匹配数据块,确定为所述指示对应的重复数据块。
可选地,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于数据部分;所述第二数据集合包括历史数据块的哈希值与所述历史数据块的对应关系,所述历史数据块为对所述第一节点接收到的来自所述第二节点的历史报文的数据部分的预设位置采样得到的数据块;所述处理模块,用于将所述第二数据集合中与所述第二指示信息中的指示所指示的哈希值对应的历史数据块,确定为所述指示对应的重复数据块。
可选地,所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的数据部分中的位置;所述处理模块,用于对于所述第二指示信息中的每个指示,在所述第一报文的数据部分中所述指示所指示的位置,添加所述指示对应的重复数据块。
可选地,所述第二重复内容还包括位于协议部分的协议信息,所述第二指示信息还包括差异指示,所述差异指示用于指示所述第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,所述目标报文为所述第一节点接收到的来自所述第二节点的历史报文中数据部分与所述原始报文的数据部分具有所述一个或多个重复数据块的历史报文;所述第二数据集合还包括所述历史数据块所属报文的协议部分;所述处理模块,还用于:从所述第二数据集合中获取所述一个或多个重复数据块所属的所述目标报文的协议部分;根据所述差异指示修改所述目标报文的协议部分,并将修改后的所述目标报文的协议部分作为所述第三报文的协议部分。
可选地,所述第一节点中存储有一个或多个本地流分组集合,每个所述本地流分组集合包括流经所述第一节点的多条流的流标识;所述处理模块,还用于:在确定所述一个或多个本地流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合之后,解析所述第一报文的载荷部分;如果所述第一报文的载荷部分携带有去重标记,确定所述第一报文为去重报文;如果所述第一报文的载荷部分未携带有去重标记,确定所述第一报文为未去重报文。
可选地,所述处理模块,还用于:将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一本地流分组集合中,所述不同流的发送方均为所述SFU服务器。
可选地,所述发送模块,还用于向所述第二节点发送第一分组信息,所述第一分组信息包括所述第一节点的节点标识与所述一个或多个本地流分组集合的对应关系。
可选地,所述第一节点中存储有所述第三节点对应的一个或多个下级流分组集合,每个所述下级流分组集合包括流经所述第三节点的多条流的流标识,所述处理模块,还用于在所述第一节点接收第二节点发送的第一报文之后,如果所述第三节点对应的下级流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合,判断向所述第三节点发送的目标历史报文中是否存在载荷部分与所述第一报文的载荷部分具有重复内容的报文,所述目标历史报文所属流的流标识属于所述目标流分组集合;所述发送模块,还用于如果所述第三节点对应的所有下级流分组集合均不包括所述第一报文所属流的流标识,向所述第三节点发送所述第一报文。
可选地,所述接收模块,还用于接收所述第三节点发送的第二分组信息,所述第二分组信息包括所述第三节点的节点标识与所述一个或多个下级流分组集合的对应关系。
可选地,所述发送模块,还用于接收到目的端口号为SFU服务端口号的第四报文之后,向第四节点发送第一节点发现报文,所述第四节点为所述第四报文在所述第一节点上的下一跳,所述第四报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第四节点在以所述SFU服务器为起点的传输路径上的下级节点;所述处理模块,还用于响应于接收到所述第四节点发送的所述第一节点发现报文对应的第一节点发现响应报文,确定所述第四节点支持数据去重。
可选地,所述接收模块,还用于接收第五节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第五节点为所述第一节点在以所述SFU服务器为起点的传输路径上的上级节点;所述处理模块,还用于根据所述第二节点发现报文确定所述第五节点支持数据去重;所述发送模块,还用于向所述第五节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
可选地,所述发送模块,还用于接收到源端口号为SFU服务端口号的第五报文之后,向第六节点发送第三节点发现报文,所述第六节点为所述第五报文在所述第一节点上的下一跳,所述第五报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第六节点在以所述SFU服务器为起点的传输路径上的上级节点;所述处理模块,还用于响应于接收到所述第六节点发送的所述第三节点发现报文对应的第三节点发现响应报文,确定所述第六节点支持数据去重。
可选地,所述接收模块,还用于接收第七节点发送的第四节点发现报文,所述第四节点发现报文携带有所述SFU服务器的标识,且所述第四节点发现报文指示所述第七节点为所述第一节点在以所述SFU服务器为起点的传输路径上的下级节点;所述处理模块,还用于根据所述第四节点发现报文确定所述第七节点支持数据去重;所述发送模块,还用于向所述第七节点发送所述第四节点发现报文对应的第四节点发现响应报文,所述第四节点发现响应报文指示所述第一节点支持数据去重。
第七方面,提供了一种数据传输系统,包括:SFU服务器和通信网络中的多个节点,所述多个节点包括第一节点和第二节点,所述第一节点位于所述SFU服务器与所述第二节点之间。所述SFU服务器用于向所述第一节点发送报文,所述第一节点用于执行上述第一方面及其各实施方式中的方法,所述第二节点用于执行上述第二方面及其各实施方式中的方法。
可选地,所述多个节点还包括第三节点,所述第三节点位于所述第一节点与所述第二节点之间,所述第三节点用于执行上述第三方面及其各实施方式中的方法。
第八方面,提供了另一种数据传输系统,包括:SFU服务器和通信网络中的第一节点。所述SFU服务器用于执行上述第一方面及其各实施方式中的方法,所述第一节点用于执行上述第二方面及其各实施方式中的方法。
可选地,所述通信网络还包括第二节点,所述第二节点位于所述SFU服务器与所述第一节点之间,所述第二节点用于执行上述第三方面及其各实施方式中的方法。
第九方面,提供了一种通信节点,包括:处理器和存储器。所述存储器,用于存储计算机程序,所述计算机程序包括程序指令。所述处理器,用于调用所述计算机程序,实现上述第一方面及其各实施方式中的方法,或者实现上述第二方面及其各实施方式中的方法,又或者实现上述第三方面及其各实施方式中的方法。
第十方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述第一方面及其各实施方式中的方法,或者实现上述第二方面及其各实施方式中的方法,又或者实现上述第三方面及其各实施方式中的方法。
第十一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述第一方面及其各实施方式中的方法,或者实现上述第二方面及其各实施方式中的方法,又或者实现上述第三方面及其各实施方式中的方法。
第十二方面,提供了一种芯片,芯片包括可编程逻辑电路和/或程序指令,当芯片运行时,实现上述第一方面及其各实施方式中的方法,或者实现上述第二方面及其各实施方式中的方法,又或者实现上述第三方面及其各实施方式中的方法。
附图说明
图1是本申请实施例提供的一种SFU通信架构的示意图;
图2是本申请实施例提供的一种数据传输系统的结构示意图;
图3是本申请实施例提供的另一种数据传输系统的结构示意图;
图4是本申请实施例提供的又一种数据传输系统的结构示意图;
图5是本申请实施例提供的再一种数据传输系统的结构示意图;
图6是本申请实施例提供的一种数据传输方法的流程示意图;
图7是本申请实施例提供的一种报文去重过程示意图;
图8是本申请实施例提供的另一种报文去重过程示意图;
图9是本申请实施例提供的又一种报文去重过程示意图;
图10是本申请实施例提供的另一种数据传输方法的流程示意图;
图11是本申请实施例提供的又一种数据传输方法的流程示意图;
图12是本申请实施例提供的一种通信节点的结构示意图;
图13是本申请实施例提供的另一种通信节点的结构示意图;
图14是本申请实施例提供的又一种通信节点的结构示意图;
图15是本申请实施例提供的一种通信设备的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在视频会议或直播等通信场景中,同一用户的音视频数据通常需要分发给多个接收者。比如在视频会议场景中,会议主持人的音视频数据需要分发给多个会议成员。又比如在直播场景中,主播用户的音视频数据需要分发给多个观众用户。当前主流视频会议和直播等通信场景通常采用SFU通信架构。在SFU通信架构下,源用户将音视频数据发送给SFU服务器,由SFU服务器负责完成对音视频数据的复制和分发。其中,在视频会议场景中,SFU服务器可以是视频会议服务器。在直播场景中,SFU服务器可以是直播服务器。
例如,图1是本申请实施例提供的一种SFU通信架构的示意图。如图1所示,SFU通信架构包括源用户、SFU服务器和多个接收者,比如多个接收者包括接收者a、接收者b和接收者c。源用户向多个接收者发送音视频数据的实现流程包括:源用户向SFU服务器发送音视频数据;SFU服务器将该音视频数据分别封装在多个报文的载荷部分,该多个报文的目的地分别为该多个接收者;SFU服务器通过通信网络分别向该多个接收者发送对应的报文,比如SFU服务器通过通信网络向接收者a发送报文a,向接收者b发送报文b,向接收者c发送报文c。由于通信网络中的节点需要分别转发SFU服务器向不同接收者发送的报文,而每个报文的载荷部分都携带有来自源用户的完整的音视频数据,即每个报文的数据量都较大,这会导致通信网络中的节点转发多个报文的传输数据量较大,进而导致网络带宽的开销较大。
基于此,本申请提出了一种技术方案,对于发送方为SFU服务器的原始报文,在该原始报文的传输路径上支持数据去重的首个节点或中间节点获取该原始报文之后,判断自身是否向该原始报文的下一跳发送过载荷部分与该原始报文的载荷部分具有重复内容的历史报文,如果自身向该报文的下一跳发送过载荷部分与该原始报文的载荷部分具有重复内容的历史报文,则该节点对该原始报文的载荷部分进行去重处理得到去重报文,该去重报文不包括该重复内容,且该去重报文携带有指示自身为去重报文的去重标记,然后该节点向该原始报文的下一跳发送该去重报文。在该去重报文到达目的地之前,该原始报文的传输路径上支持数据去重的中间节点或最后一个节点对该去重报文的载荷部分进行去重恢复处理,还原得到该原始报文,然后向目的地继续发送该原始报文。本申请中的原始报文均指未去重报文。本申请可以在通信网络传输去重报文来替代原始报文,在不影响用户业务的情况下,通过去重和恢复处理减少报文传输数据量,从而减少网络带宽的开销,提升传输效率和质量,以及降低用户成本。比如对于采用SFU通信架构的视频会议场景或直播场景,同一个视频会议或直播中多个接收者接收来自同一用户的音视频数据时,接收到的数据是高度重合的。通过应用本申请技术方案,可以对同一用户向多个接收者发送的并发流量进行数据去重,实现对同一用户发送给不同接收者的重复流量的削减,减少报文传输数据量,从而可以减少网络带宽的开销。
下面从系统、方法流程、虚拟装置、硬件装置等多个角度对本申请技术方案进行说明。
下面对本申请涉及的系统举例说明。
本申请实施例提供的数据传输系统采用SFU通信架构,可以应用于多种通信场景,比如视频会议场景或直播场景等。可选地,在视频会议场景中,SFU服务器可以是视频会议服务器。在直播场景中,SFU服务器可以是直播服务器。
本申请一种典型应用场景为云到分支(cloud-to-branch)场景。在cloud-to-branch场景中,SFU服务器部署在云上,也即是,云为SFU服务器所在位置。分支通常部署在广域网内,分支为用户所在位置。云与分支之间可以通过局域网进行通信。通过在云和分支之间部署支持数据去重的多个节点。SFU服务器向用户发送流量时,多个节点在流量转发过程中,由靠近云的节点对流量进行数据去重,由靠近分支的节点对流量进行数据恢复。本申请中,将具备数据去重功能和/或数据恢复功能的节点统称为支持数据去重的节点。其中,支持数据去重的节点可以是独立的硬件设备,或者也可以以软件形式部署到服务器或者网络设备上。当然,本申请的应用场景不限于cloud-to-branch场景,也可以根据实际需要进行部署。比如将支持数据去重的多个节点部署在局域网中,则可以对局域网中的流量进行数据去重和数据恢复。又比如将支持数据去重的多个节点部署在广域网中的某一段内,则可以对这一段网络中的流量进行数据去重和数据恢复。本申请可以用于对符合SFU通信架构的各种流量进行数据去重处理和数据恢复处理。
本申请不限于只部署两层支持数据去重的节点,还可以支持部署多层支持数据去重的节点。其中,靠近SFU服务器的节点可称为顶部节点,靠近用户的节点可称为底部节点,位于顶部节点与底部节点之间的节点可称为中间节点。本申请实施例提供的数据传输系统至少包括顶部节点和底部节点。顶部节点具备数据去重功能,负责对SFU服务器向用户发送的流量进行数据去重。底部节点具备数据恢复功能,负责对SFU服务器向用户发送的流量进行数据恢复。可选地,本申请实施例提供的数据传输系统还可以包括中间节点。中间节点具备数据去重功能和数据恢复功能,负责对SFU服务器向用户发送的流量进行数据去重或者数据恢复。
例如,图2是本申请实施例提供的一种数据传输系统的结构示意图。如图2所示,数据传输系统200采用一对一分支两层节点部署模型。该数据传输系统200包括SFU服务器201以及通信网络中的节点202A和节点202B。其中,节点202A靠近SFU服务器201部署,即节点202A为顶部节点,也就是说,节点202A为以SFU服务器201为起点的传输路径上支持数据去重的首个节点。节点202B靠近分支21部署,即节点202B为底部节点,也就是说,节点202B为从SFU服务器201到分支21的传输路径上支持数据去重的最后一个节点。
又例如,图3是本申请实施例提供的另一种数据传输系统的结构示意图。如图3所示,数据传输系统300采用一对多分支两层节点部署模型。该数据传输系统300包括SFU服务器301以及通信网络中的节点302A、节点302B、节点302C和节点302D。其中,节点302A靠近SFU服务器301部署,即节点302A为顶部节点,也就是说,节点302A为以SFU服务器301为起点的传输路径上支持数据去重的首个节点。节点302B靠近分支31部署,即节点302B为分支31对应的底部节点,也就是说,节点302B为从SFU服务器301到分支31的传输路径上支持数据去重的最后一个节点。节点302C靠近分支32部署,即节点302C为分支32对应的底部节点,也就是说,节点302C为从SFU服务器301到分支32的传输路径上支持数据去重的最后一个节点。节点302D靠近分支33部署,即节点302D为分支33对应的底部节点,也就是说,节点302D为从SFU服务器301到分支33的传输路径上支持数据去重的最后一个节点。
又例如,图4是本申请实施例提供的又一种数据传输系统的结构示意图。如图4所示,数据传输系统400采用多层节点多分支部署模型。该数据传输系统400包括SFU服务器401以及通信网络中的节点402A、节点402B、节点402C、节点402D、节点402E、节点402F和节点402G。其中,节点402A靠近SFU服务器401部署,即节点402A为顶部节点,也就是说,节点402A为以SFU服务器401为起点的传输路径上支持数据去重的首个节点。节点402B靠近分支41部署,即节点402B为分支41对应的底部节点,也就是说,节点402B为从SFU服务器401到分支41的传输路径上支持数据去重的最后一个节点。节点402D靠近分支45部署,即节点402D为分支45对应的底部节点,也就是说,节点402D为从SFU服务器401到分支45的传输路径上支持数据去重的最后一个节点。节点402E靠近分支42部署,即节点402E为分支42对应的底部节点,也就是说,节点402E为从SFU服务器401到分支42的传输路径上支持数据去重的最后一个节点。节点402F靠近分支43部署,即节点402F为分支43对应的底部节点,也就是说,节点402F为从SFU服务器401到分支43的传输路径上支持数据去重的最后一个节点。节点402G靠近分支44部署,即节点402G为分支44对应的底部节点,也就是说,节点402G为从SFU服务器401到分支44的传输路径上支持数据去重的最后一个节点。节点402C部署在节点402A与节点402E、节点402F以及节点402G之间,即节点402C为分支42、分支43和分支44分别对应的中间节点,也就是说,节点402C为从SFU服务器401到分支42的传输路径上支持数据去重的中间节点,且节点402C为从SFU服务器401到分支43的传输路径上支持数据去重的中间节点,且节点402C为从SFU服务器401到分支44的传输路径上支持数据去重的中间节点。
可选地,SFU服务器也可以支持数据去重,则SFU服务器为以该SFU服务器为起点的传输路径上支持数据去重的首个节点。例如,图5是本申请实施例提供的再一种数据传输系统的结构示意图。如图5所示,数据传输系统500包括SFU服务器501和通信网络中的节点502。其中,SFU服务器501为顶部节点,也就是说,SFU服务器501为以SFU服务器501为起点的传输路径上支持数据去重的首个节点。节点502靠近分支51部署,即节点502为分支51对应的底部节点,也就是说,节点502为从SFU服务器501到分支51的传输路径上支持数据去重的最后一个节点。在如图5所示的数据传输系统500中,SFU服务器501与节点502之间还可以部署有支持数据去重的中间节点,具体可参考图4示出的数据传输系统400,本申请实施例在此不再赘述。
可选地,在如图2至图5所示的数据传输系统中,通信网络中支持数据去重的节点可以是独立的硬件设备,或者也可以以软件形式部署到现网中的服务器或者网络设备上。网络设备包括但不限于路由器或交换机。本申请实施例对通信网络的类型不做限定。例如该通信网络可以是专线网络,或者也可以是非专线网络。又例如该通信网络可以包括隧道,或者也可以不包括隧道。又例如该通信网络可以是广域网或局域网等。
一种可能实现方式,本申请实施例涉及的通信场景采用可伸缩视频编码(scalable video coding,SVC)。SVC是视频编码的一种,通过对视频数据进行分层编码和选择传输实现。通信场景采用SVC的具体实现方式为,源端主机向SFU服务器发送多层码流,该多层码流包括基本层码流和增强层码流,然后由SFU服务器根据接收端主机的能力对多层码流进行选择分发。比如,对于解码能力较强的接收端主机,SFU向该接收端主机发送基本层码流和增强层码流。对于解码能力较弱的接收端主机,SFU只向该接收端主机发送基本层码流。
一种可能实现方式,本申请实施例涉及的通信场景支持端到端加密(end-to-endencryption,E2EE)。这种实现方式下,源端主机采用高级加密标准(advanced encryptionstandard,AES)密钥对业务数据进行加密后,将加密得到的密文发送给SFU服务器,SFU服务器将密文携带在报文中分发给接收端主机,接收端主机采用AES密钥对密文进行解密得到业务数据。在通信场景中包括多个接收端主机的情况下,该多个接收端主机可以采用相同的AES密钥。比如在视频会议场景中,会议主持人可以通过信令方式将AES密钥统一分发给多个会议成员。
举例来说,本申请实施例涉及的通信场景采用SFU通信架构,采用SVC,以及支持E2EE。这种通信场景下的数据传输具有以下特点:信令数据基于传输控制协议(transmission control protocol,TCP)和安全传输层(transport layer security,TLS)协议传输,业务数据(比如音视频数据)基于用户数据报协议(user datagram protocol,UDP)和AES加密传输。对于弱网或弱终端场景,业务数据也可以采用TCP和AES加密传输。
下面对本申请涉及的方法流程举例说明。
在本申请实施例提供的数据传输系统中,顶部节点、底部节点和中间节点在传输发送方为SFU服务器的报文时,对报文进行去重和恢复处理的流程各自有所不同。本申请通过以下三个实施例对这三种节点传输报文的实现方式分别进行说明。
第一个实施例应用于顶部节点,顶部节点用于对报文进行去重处理。例如,图6是本申请实施例提供的一种数据传输方法600的流程示意图。为了便于区分各个实施例的内容,在方法600中将第一节点称为节点11,将第二节点称为节点12,将第一报文称为报文11,将第二报文称为报文12。该方法600可以应用于图2示出的数据传输系统200,则该方法600中的节点11为节点202A,节点12为节点202B。或者,该方法600可以应用于图3示出的数据传输系统300,则该方法600中的节点11为节点302A,节点12为节点302B、节点302C或节点302D。或者,该方法600可以应用于图4示出的数据传输系统400,则该方法600中的节点11为节点402A,节点12为节点402B、节点402C或节点402D。或者,该方法600可以应用于图5示出的数据传输系统500,则该方法600中的节点11为SFU服务器501,节点12为节点502。如图6所示,该方法600包括但不限于以下步骤601至步骤603。
步骤601、节点11获取发送方为SFU服务器的报文11,节点11为报文11的传输路径上支持数据去重的首个节点。
其中,报文11为原始报文,即未去重报文。报文11的发送方为SFU服务器,且节点11为报文11的传输路径上支持数据去重的首个节点,也即是,节点11为以SFU服务器为起点、报文11的目的地为终点的传输路径上支持数据去重的首个节点。可选地,报文11的源互联网协议(Internet Protocol,IP)地址可以是SFU服务器的IP地址,比如SFU服务器部署在公网中,则报文11的源IP地址可以采用该SFU服务器的公网地址来表示。或者,报文11的源IP地址可以是SFU服务器的IP地址经过网络地址转换(network address translation,NAT)之后得到的地址,比如SFU服务器部署在私网中,则报文11的源IP地址可以采用该SFU服务器的私网地址对应的公网地址来表示。
可选地,节点11为SFU服务器,则节点11获取报文11,可以是节点11生成报文11。
或者,节点11不为SFU服务器,比如节点11为与SFU服务器相连的网络设备,则节点11获取报文11,可以是节点11接收SFU服务器发送的报文11。可选地,节点11在接收到一个报文之后,可以根据该报文携带的源端口号确定该报文的发送方是否为SFU服务器。
步骤602、如果节点11向节点12发送的历史报文中存在目标报文,目标报文的载荷部分与报文11的载荷部分具有重复内容,节点11对报文11的载荷部分进行去重处理,得到报文12,报文12不包括该重复内容,且报文12携带有去重标记以及对该重复内容的指示信息,该去重标记用于指示报文12为去重报文,节点12为报文11在节点11上的下一跳。
可选地,载荷部分为UDP载荷或TCP载荷。载荷部分包括协议部分和数据部分。协议部分可以用于承载应用层协议,比如实时传输协议(real-time transport protocol,RTP)、文件传输协议(file transfer protocol,FTP)或超文本传输协议(hyper texttransfer protocol,HTTP)等。数据部分可以用于承载应用层数据,比如信令数据或业务数据等。
可选地,目标报文的载荷部分与报文11的载荷部分之间的重复内容包括一个或多个重复数据块,对该重复内容的指示信息包括一个或多个指示,该一个或多个指示与该重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值,具体可以是,每个指示包括对应的重复数据块的哈希值。可选地,重复数据块的哈希值可以根据该重复数据块的数据内容和长度计算得到,或者也可以将重复数据块的部分数据内容作为该重复数据块的哈希值,本申请实施例对重复数据块的哈希值的计算方式不做限定。
可选地,节点11在获取发送方为SFU服务器的报文11之后,需要执行判断流程,该判断流程用于判断自身向节点12发送的历史报文中是否存在载荷部分与报文11的载荷部分具有重复内容的目标报文。这里的历史报文指的是节点11在执行该判断流程之前向节点12发送过的原始报文。本申请以下实施例提供了节点11执行判断流程的两种可能实现方式,包括可能实现方式A1和可能实现方式A2。
可能实现方式A1,上述重复内容中的一个或多个重复数据块位于报文11的载荷部分的数据部分和/或协议部分。节点11中存储有数据集合,该数据集合包括节点11向节点12发送的历史报文的载荷部分。节点11执行判断流程,包括:节点11对报文11的载荷部分与数据集合中的载荷部分进行内容匹配。如果数据集合中存在与报文11的载荷部分具有重复数据块的目标载荷部分,节点11确定向节点12发送的历史报文中存在目标报文。如果数据集合中不存在与报文11的载荷部分具有重复数据块的载荷部分,节点11确定向节点12发送的历史报文中不存在目标报文。可选地,节点11在确定向节点12发送的历史报文中不存在目标报文之后,节点11可以在数据集合中添加报文11的载荷部分,得到更新后的数据集合。该更新后的数据集合可以用于节点11对后续获取的发送方为SFU服务器的报文进行去重处理。
可选地,节点11对报文11的载荷部分与数据集合中的载荷部分进行内容匹配,可以是对报文11的载荷部分的一个或多个位置进行采样,以及对数据集合中的载荷部分的一个或多个位置进行采样。如果报文11的载荷部分的位置1的采样内容与数据集合中某个载荷部分的位置2的采样内容相同,节点11继续对报文11的载荷部分的位置1的前后内容与数据集合中该载荷部分的位置2的前后内容进行精确匹配,以确定报文11的载荷部分与数据集合中该载荷部分的重复数据块。本申请实施例对内容匹配的具体实现方式不做限定。
例如,报文11的载荷部分的内容为“44336655”,数据集合中某个载荷部分的内容为“11332255”,节点11对报文11的载荷部分与数据集合中的该载荷部分进行内容匹配,确定报文11的载荷部分与数据集合中的该载荷部分具有重复数据块“33”和“55”,则节点11可以将数据集合中的该载荷部分确定为目标载荷部分,并确定节点11向节点12发送的历史报文中存在目标报文。目标报文即包括目标载荷部分的历史报文。
结合上述可能实现方式A1,节点11对报文11的载荷部分进行去重处理的实现过程,包括:针对报文11的载荷部分与目标载荷部分之间的每个重复数据块,节点11计算该重复数据块的哈希值。节点11去除报文11的载荷部分的该重复数据块,并在报文11的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值以及该重复数据块在报文11的载荷部分中的位置。可选地,重复数据块在报文11的载荷部分中的位置可以采用该重复数据块在报文11的载荷部分中的起始位置和该重复数据块的长度来表示,或者可以采用该重复数据块在报文11的载荷部分中的结束位置和该重复数据块的长度来表示,又或者可以采用该重复数据块在报文11的载荷部分中的起始位置和该重复数据块在报文11的载荷部分中的结束位置来表示。
例如参考上述举例,重复数据块“33”的哈希值为a,重复数据块“55”的哈希值为b。则对报文11的载荷部分进行去重处理之后,得到的报文12的载荷部分的内容可以表示为“4466;指示1:<a,位置3-4>;指示2:<b,位置7-8>”。其中,“4466”是去除报文11的载荷部分中与目标载荷部分的重复内容之后的剩余内容,指示1“<a,位置3-4>”用于指示哈希值a对应的数据块位于报文12的载荷部分的第3字节和第4字节,指示2“<b,位置7-8>”用于指示哈希值b对应的数据块位于报文12的载荷部分的第7字节和第8字节。
可选地,如果节点11有多个下级节点,节点11中可以存储有多个节点级数据集合,每个节点级数据集合分别用于存储节点11向一个下级节点发送的历史报文的载荷部分,即节点11针对每个下级节点分别存储一个数据集合。或者,节点11中可以存储有一个全局数据集合,该全局数据集合中包括载荷部分与节点标识的对应关系,节点标识用于指示对应的载荷部分所属的历史报文是向该节点标识所指示的下级节点发送的,即节点11针对所有下级节点存储一个共用的数据集合。节点11的下级节点是指在以SFU服务器为起点的传输路径上位于节点11之后的一个节点,比如在图3示出的数据传输系统300中,节点11可以是节点302A,则节点302B、节点302C和节点302D均为节点11的下级节点。
在上述可能实现方式A1下,顶部节点存储向下级节点发送过的历史报文的载荷部分的完整内容。顶部节点在判断获取到的原始报文与历史报文是否存在重复内容时,对报文的载荷部分的整体内容进行匹配,而无需区分重复内容是在数据部分还是在协议部分中。
本申请实施例中,顶部节点可以对获取的原始报文的载荷部分与已存储的历史报文的载荷部分进行内容匹配。如果原始报文的载荷部分与历史报文的载荷部分有重复数据块,则顶部节点计算该重复数据块的哈希值,并去除原始报文中的该重复数据块得到去重报文,进一步在该去重报文中携带对该重复数据块的哈希值以及该重复数据块的位置的指示,以实现对原始报文的数据去重。
例如,图7是本申请实施例提供的一种报文去重过程示意图。如图7所示,原始报文包括以太头、IP头、TCP/UDP头以及载荷部分,该载荷部分包括协议部分和数据部分。对原始报文的载荷部分进行去重处理得到去重报文。去重报文包括以太头、IP头、TCP/UDP头以及载荷部分,该载荷部分包括去重标记、重复数据块对应的指示以及原始报文的载荷部分中除重复数据块以外的其它内容。其中,重复数据块对应的指示用于指示重复数据块的哈希值以及该重复数据块在原始报文的载荷部分中的位置。其中,去重报文的载荷部分中,去重标记和重复数据块对应的指示可以在协议部分和数据部分之前,或者也可以在协议部分和数据部分之后,本申请实施例对此不做限定。
可能实现方式A2,上述重复内容中的一个或多个重复数据块位于报文11的载荷部分的数据部分。节点11中存储有采样标签集合,该采样标签集合包括历史数据块的哈希值。历史数据块为对节点11向节点12发送的历史报文的数据部分的预设位置采样得到的数据块。节点11执行判断流程,包括:节点11对报文11的数据部分的预设位置进行采样,得到采样数据块。节点11计算该采样数据块的哈希值。如果采样标签集合中包括该采样数据块的哈希值,节点11确定向节点12发送的历史报文中存在目标报文。如果采样标签集合中不包括该采样数据块的哈希值,节点11确定向节点12发送的历史报文中不存在目标报文。可选地,节点11在确定向节点12发送的历史报文中不存在目标报文之后,节点11可以在采样标签集合中添加该采样数据块的哈希值,得到更新后的采样标签集合。更新后的采样标签集合可以用于节点11对后续获取的发送方为SFU服务器的报文进行去重处理。
其中,数据部分的预设位置即预先设置的数据部分的采样位置。可选地,数据部分的预设位置可以是整个数据部分,则节点11对报文11的数据部分的预设位置进行采样得到的采样数据块为报文11的数据部分的完整内容。或者,数据部分的预设位置也可以是数据部分的局部字段,这种情况下,预设位置可以有一个或多个,则节点11对报文11的数据部分的每个预设位置分别进行采样,得到一个或多个采样数据块。
结合上述可能实现方式A2,节点11对报文11的载荷部分进行去重处理的实现过程,包括:节点11将哈希值属于采样标签集合的采样数据块作为重复数据块,去除报文11的数据部分的该重复数据块,并在报文11的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值。
可选地,预设位置有多个,则节点11对报文11的数据部分的预设位置采样得到的采样数据块有多个,相应地,重复数据块可能有一个或多个。这种情况下,重复数据块对应的指示还用于指示该重复数据块在报文11的数据部分中的位置,比如一个重复数据块对应的指示可表示为<哈希值,位置>。本申请实施例中,在预先设置的数据部分的采样位置有多个的情况下,顶部节点对原始报文的数据部分进行采样会得到多个采样数据块,这种情况下需要指示去重报文中被去除的重复数据块在原始报文中的位置,以便后续节点对去重报文进行数据恢复。
可选地,如果节点11有多个下级节点,节点11中可以存储有多个节点级采样标签集合,每个节点级采样标签集合分别对应一个下级节点,每个节点级采样标签集合分别用于存储对节点11向对应的下级节点发送的历史报文的数据部分的预设位置采样得到的数据块的哈希值。即节点11针对每个下级节点分别存储一个采样标签集合。或者,节点11中可以存储有一个全局采样标签集合,该全局采样标签集合中包括哈希值与节点标识的对应关系,节点标识用于指示对应的哈希值来自向该节点标识所指示的下级节点发送的历史报文,即节点11针对所有下级节点存储一个共用的采样标签集合。
在上述可能实现方式A2下,顶部节点存储向下级节点发送过的历史报文的数据部分的预设位置的数据块的哈希值。顶部节点在判断获取到的原始报文与历史报文是否存在重复内容时,计算对原始报文的数据部分的预设位置采样得到的采样数据块的哈希值,将其与存储的哈希值进行比较,实现对原始报文的数据部分的预设位置的数据块的整体去重。
本申请实施例中,顶部节点可以计算获取的原始报文的数据部分的预设位置的采样数据块的哈希值,并将其与已存储的历史数据块的哈希值进行比较。如果原始报文中某个采样数据块的哈希值与顶部节点已存储的哈希值相同,则顶部节点去除原始报文中的该采样数据块得到去重报文,进一步在该去重报文中携带该采样数据块的哈希值,以实现对原始报文的数据去重。与上述可能实现方式A1相比,顶部节点无需对原始报文和历史报文的载荷部分进行内容匹配,提高了报文去重效率。
例如,图8是本申请实施例提供的另一种报文去重过程示意图。如图8所示,原始报文包括以太头、IP头、TCP/UDP头以及载荷部分,该载荷部分包括协议部分和数据部分。对原始报文的载荷部分进行去重处理得到去重报文。去重报文包括以太头、IP头、TCP/UDP头以及载荷部分。假设预先设置的数据部分的采样位置为整个数据部分,则去重报文的载荷部分包括去重标记、原始报文的数据部分的哈希值以及原始报文的协议部分。其中,去重报文的载荷部分中,去重标记和数据部分的哈希值可以在协议部分之前,或者也可以在协议部分之后,本申请实施例对此不做限定。
可选地,节点11中存储的采样标签集合还包括哈希值所指示的历史数据块,也即是,节点11中存储的采样标签集合可以包括历史数据块与历史数据块的哈希值的对应关系。则上述如果采样标签集合中包括采样数据块的哈希值,节点11确定历史报文中存在目标报文的实现方式,包括:如果采样标签集合中包括采样数据块的哈希值,节点11对该采样数据块与该采样数据块的哈希值所指示的历史数据块进行内容匹配。如果该采样数据块与该采样数据块的哈希值所指示的历史数据块的内容相同,节点11确定历史报文中存在目标报文。
由于哈希值相同的两个数据块的数据内容有可能不同,通过在采样标签集合中存储历史数据块与历史数据块的哈希值的对应关系,可以使得节点11在确定采样数据块的哈希值与某个历史数据块的哈希值相同之后,进一步对该采样数据块与该历史数据块进行内容匹配,以实现精确匹配,进而提高对报文的去重准确率。
结合上述可能实现方式A2,节点11中还可以存储有节点11向节点12发送的历史报文的协议部分。报文11的载荷部分与目标报文的载荷部分的重复内容还可以包括位于报文11的协议部分的协议信息,相应地,对该重复内容的指示信息还可以包括差异指示,该差异指示用于指示报文11的协议部分与目标报文的协议部分的差异。报文11的协议部分与目标报文的协议部分的差异具体包括报文11的协议部分与目标报文的协议部分的差异信息以及该差异信息在报文11的协议部分的位置。
可选地,节点11在确定历史报文中存在目标报文之后,对报文11的协议部分与目标报文的协议部分进行内容匹配,以确定报文11的协议部分与目标报文的协议部分的差异信息以及该差异信息在报文11的协议部分的位置。
例如,图9是本申请实施例提供的又一种报文去重过程示意图。如图9所示,原始报文包括以太头、IP头、TCP/UDP头以及载荷部分,该载荷部分包括协议部分和数据部分。对原始报文的载荷部分进行去重处理得到去重报文。去重报文包括以太头、IP头、TCP/UDP头以及载荷部分。假设预先设置的数据部分的采样位置为整个数据部分,则去重报文的载荷部分包括去重标记、原始报文的数据部分的哈希值以及差异指示。该差异指示用于指示原始报文的协议部分与目标报文的协议部分的差异信息以及该差异信息在原始报文的协议部分的位置。
本申请实施例中,顶部节点除了可以对报文的数据部分的预设位置的数据块进行去重以外,还可以对报文的协议部分进行去重,通过在报文的载荷部分携带差异指示以替代协议部分,可以进一步减少报文传输数据量,从而减少网络带宽的开销。
步骤603、节点11向节点12发送报文12。
可替代地,节点11在执行用于判断自身向节点12发送的历史报文中是否存在载荷部分与报文11的载荷部分具有重复内容的目标报文的上述判断流程之后,如果节点11向节点12发送的历史报文中不存在目标报文,节点11向节点12发送报文11,也即是,节点11直接转发报文11,而不对报文11进行去重处理,即不执行上述步骤602和步骤603。
本申请实施例中,顶部节点在接收到发送方为SFU服务器的报文之后,可以判断是否向该报文的下一跳发送过载荷部分与该报文的载荷部分具有重复内容的历史报文。如果顶部节点向该报文的下一跳发送过载荷部分与该报文的载荷部分具有重复内容的历史报文,则顶部节点可以对该报文进行数据去重,然后向下级节点发送去重报文。由于去重报文的数据量相较于未去重报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。顶部节点在向下级节点发送去重报文时,只需保证向该下级节点发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文即可,以保证后续传输路径上存在节点能够对该去重报文进行数据恢复,使得用户最终接收到携带有完整数据内容的原始报文,保障用户业务。
第二个实施例应用于底部节点,底部节点用于对报文进行去重恢复处理。例如,图10是本申请实施例提供的另一种数据传输方法1000的流程示意图。为了便于区分各个实施例的内容,在方法1000中将第一节点称为节点21,将第二节点称为节点22,将第三节点称为节点23,将第一报文称为报文21,将第二报文称为报文22。该方法1000可以应用于图2示出的数据传输系统200,则该方法1000中的节点21为节点202B,节点22为节点202A。或者,该方法1000可以应用于图3示出的数据传输系统300,则该方法1000中的节点21为节点302B、节点302C或节点302D,节点22为节点302A。或者,该方法1000可以应用于图4示出的数据传输系统400,则该方法1000中的节点21为节点402B或节点402D,节点22为节点402A,或者,节点21为节点402E、节点402F或节点402G,节点22为节点402C。或者,该方法1000可以应用于图5示出的数据传输系统500,则该方法1000中的节点21为节点502,节点22为SFU服务器501。如图10所示,该方法1000包括但不限于以下步骤1001至步骤1005。
步骤1001、节点21接收节点22发送的报文21,报文21的发送方为SFU服务器,报文21携带有去重标记以及对重复内容的指示信息,该去重标记用于指示报文21为去重报文,节点21为报文21的传输路径上支持数据去重的最后一个节点。
报文21的发送方为SFU服务器,且节点21为报文21的传输路径上支持数据去重的最后一个节点,也即是,节点21为以SFU服务器为起点、报文21的目的地为终点的传输路径上支持数据去重的最后一个节点。可选地,报文21的源IP地址可以是SFU服务器的IP地址,或者可以是SFU服务器的IP地址经过NAT之后得到的地址。
可选地,重复内容包括一个或多个重复数据块,对该重复内容的指示信息包括一个或多个指示,该一个或多个指示与该重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值,具体可以是,每个指示包括对应的重复数据块的哈希值。其中,对重复内容以及指示信息的具体解释可参考上述步骤602中的相关内容,本申请实施例在此不再赘述。
步骤1002、节点21基于该去重标记确定报文21为去重报文。
可选地,去重标记位于报文21的载荷部分。节点21接收到报文21之后,解析报文21的载荷部分,得到去重标记,进一步基于该去重标记确定节点21为去重报文。
步骤1003、节点21根据对重复内容的指示信息从数据集合中获取该重复内容,该数据集合包括节点21接收到的来自节点22的历史报文的载荷部分的至少部分内容。
如果数据传输系统中的节点采用上述步骤602中的可能实现方式A1对报文进行去重处理,则节点21中存储的数据集合包括节点21接收到的来自节点22的历史报文的载荷部分。如果数据传输系统中的节点采用上述步骤602中的可能实现方式A2对报文进行去重处理,则节点21中存储的数据集合包括历史数据块的哈希值与历史数据块的对应关系,该历史数据块为对节点21接收到的来自节点22的历史报文的数据部分的预设位置采样得到的数据块。如果数据传输系统中的节点采用上述步骤602中的可能实现方式A2对报文进行去重处理,节点21中存储的数据集合还可以包括历史数据块所属报文的协议部分。
可能实现方式B1,报文21由传输路径上位于节点21之前的节点采用上述步骤602中的可能实现方式A1对原始报文进行去重处理得到。对重复内容的指示信息中的每个指示用于指示对应的重复数据块的哈希值以及对应的重复数据块在报文21对应的原始报文的载荷部分中的位置。
结合上述可能实现方式B1,节点21根据对重复内容的指示信息从数据集合中获取该重复内容的实现过程,包括:对于该指示信息中的每个指示,节点21根据该指示所指示的位置,获取数据集合中的载荷部分的该位置的待匹配数据块。节点21计算待匹配数据块的哈希值。节点21将哈希值与该指示所指示的哈希值一致的待匹配数据块,确定为该指示对应的重复数据块。
例如报文21的载荷部分的内容包括“4466;指示1:<a,位置3-4>;指示2:<b,位置7-8>”。其中,“4466”包括协议部分的内容和/或数据部分的内容,指示1“<a,位置3-4>”用于指示哈希值a对应的数据块位于报文21对应的原始报文的载荷部分的第3字节和第4字节,指示2“<b,位置7-8>”用于指示哈希值b对应的数据块位于报文21对应的原始报文的载荷部分的第7字节和第8字节。假设数据集合中某个载荷部分的内容为“11332255”,节点21根据指示1所指示的位置获取该载荷部分中的待匹配数据块“33”,根据指示2所指示的位置获取该载荷部分中的待匹配数据块“55”。如果待匹配数据块“33”的哈希值为a,则节点21将待匹配数据块“33”作为指示1对应的重复数据块。如果待匹配数据块“55”的哈希值为b,则节点21将待匹配数据块“55”作为指示2对应的重复数据块。
可能实现方式B2,报文21由传输路径上位于节点21之前的节点采用上述步骤602中的可能实现方式A2对原始报文进行去重处理得到。上述重复内容中的一个或多个重复数据块位于报文11的载荷部分的数据部分。
结合上述可能实现方式B2,节点21根据对重复内容的指示信息从数据集合中获取该重复内容的实现过程,包括:节点21将数据集合中与该指示信息中的指示所指示的哈希值对应的历史数据块,确定为该指示对应的重复数据块。
可选地,如果上述步骤602中的可能实现方式A2中预先设置的数据部分的采样位置只有一个,则对重复内容的指示信息中的指示无需指示对应的重复数据块在报文21对应的原始报文中的位置,节点21默认该重复数据块位于报文21对应的原始报文的数据部分的该采样位置。如果上述步骤602中的可能实现方式A2中预先设置的数据部分的采样位置有多个,则对重复内容的指示信息中的指示还用于指示对应的重复数据块在报文21对应的原始报文的数据部分中的位置。
结合上述可能实现方式B2,节点21中存储的数据集合可以包括历史数据块所属报文的协议部分。上述重复内容还可以包括位于协议部分的协议信息,相应地,对该重复内容的指示信息还包括差异指示,该差异指示用于指示报文21对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为节点21接收到的来自节点22的历史报文中数据部分与报文21对应的原始报文的数据部分具有上述一个或多个重复数据块的历史报文。这种情况下,节点21根据对重复内容的指示信息从数据集合中获取该重复内容的实现过程,还包括:节点21从数据集合中获取该一个或多个重复数据块所属的目标报文的协议部分。
步骤1004、节点21根据该重复内容对报文21的载荷部分进行去重恢复处理,得到报文22,报文22的载荷部分包括该重复内容。
其中,报文22即上述报文21对应的原始报文。
结合上述步骤1003中的可能实现方式B1,节点21根据该重复内容对报文21的载荷部分进行去重恢复处理的实现方式为:针对指示信息中的每个指示,节点21在报文21的载荷部分中该指示所指示的位置,添加该指示对应的重复数据块。
例如参考上述步骤1003中的第一可能实现方式中的举例,报文21的载荷部分的内容包括“4466;指示1:<a,位置3-4>;指示2:<b,位置7-8>”,假设哈希值a对应的重复数据块为“33”,哈希值b对应的重复数据块为“55”,则节点21在“44”和“66”之间插入数据块“33”得到“443366”,使得数据块“33”位于还原后的报文的载荷部分的第3字节和第4字节,以及在“443366”之后增加数据块“55”得到“44336655”,使得数据块“55”位于还原后的报文的载荷部分的第7字节和第8字节。
本申请实施例中,底部节点可以根据去重报文中携带的指示所指示的重复数据块在原始报文的载荷部分的位置,分别计算已存储的多个载荷部分的该位置的数据块的哈希值,以获取哈希值与该指示所指示的哈希值一致的存储数据块,然后将该存储数据块添加至该指示所指示的位置,以实现对去重报文的数据恢复。
结合上述步骤1003中的可能实现方式B2,如果对重复内容的指示信息中的指示用于指示对应的重复数据块在报文21对应的原始报文的数据部分中的位置,则节点21根据该重复内容对报文21的载荷部分进行去重恢复处理的实现方式为:对于该指示信息中的每个指示,节点21在报文21的数据部分中该指示所指示的位置,添加该指示对应的重复数据块。如果对重复内容的指示信息中的指示未指示重复数据块在报文21对应的原始报文的数据部分中的位置,则节点21根据该重复内容对报文21的载荷部分进行去重恢复处理的实现方式为:节点21将获取的重复数据块添加在报文21的数据部分的默认去重位置,该默认去重位置即上述预先设置的数据部分的采样位置。
可选地,如果对重复内容的指示信息包括针对协议部分的差异指示,则节点21根据重复内容对报文21的载荷部分进行去重恢复处理的实现过程,还包括:节点21根据该差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为报文22的协议部分。对差异指示的具体解释可参考上述步骤602中的相关内容,本申请实施例在此不再赘述。
本申请实施例中,底部节点可以在已存储的历史数据块的哈希值中查找去重报文中携带的哈希值,并将命中的哈希值所对应的历史数据块添加到去重报文的数据部分,以实现对去重报文的数据部分的恢复。另外,底部节点还可以获取命中的哈希值对应的历史数据块所属的历史报文的协议部分,结合去重报文中针对协议部分的差异指示还原得到去重报文对应的原始报文的协议部分,以实现对去重报文的协议部分的恢复。
在上述步骤1004中,节点21对报文21进行数据恢复时,还可以删除报文21中的去重标记以及对重复内容的指示信息,以还原得到报文21对应的原始报文。
步骤1005、节点21向节点23发送报文22,节点23为报文21在节点21上的下一跳。
可选地,节点23可以是报文22的目的地,或者也可以是报文22的传输路径上不支持数据去重的网络设备。
由于网络不稳定因素可能会导致报文乱序到达底部节点,比如底部节点有可能会先接收到去重报文,之后才接收到与该去重报文对应的原始报文具有重复内容的未去重报文,该未去重报文携带有该去重报文中所指示的重复内容。这种情况下,底部节点在接收到去重报文之后无法立即对该去重报文进行数据恢复,需要等待携带有该去重报文中所指示的重复内容的未去重报文到达,之后再根据该未去重报文的载荷部分对该去重报文进行数据恢复。
可选地,如果节点21接收到未去重报文,则节点21直接转发该未去重报文。本申请实施例中,底部节点无需执行报文去重流程。
本申请实施例中,底部节点可以对发送方为SFU服务器的去重报文进行数据恢复,使得用户能够接收到携带有完整数据内容的原始报文,从而实现对用户业务的保障。
第三个实施例应用于中间节点,中间节点用于对报文进行去重处理或者去重恢复处理。例如,图11是本申请实施例提供的又一种数据传输方法1100的流程示意图。为了便于区分各个实施例的内容,在方法1100中将第一节点称为节点31,将第二节点称为节点32,将第三节点称为节点33,将第一报文称为报文31,将第二报文称为报文32,将第三报文称为报文33。该方法1100可以应用于图4示出的数据传输系统400,则该方法1100中的节点31为402C,节点32为402A,节点33为402E、节点402F或节点402G。如图11所示,该方法1100包括但不限于以下步骤1101至步骤1105。
步骤1101、节点31接收节点32发送的报文31,报文31的发送方为SFU服务器,节点31为报文31的传输路径上支持数据去重的中间节点。
可选地,报文31可以是去重报文或者是未去重报文。报文31的发送方为SFU服务器,且节点31为报文31的传输路径上支持数据去重的中间节点,也即是,节点31为以SFU服务器为起点、报文31的目的地为终点的传输路径上支持数据去重的中间节点。可选地,报文31的源IP地址可以是SFU服务器的IP地址,或者可以是SFU服务器的IP地址经过NAT之后得到的地址。
步骤1102、节点31判断报文31为去重报文还是未去重报文。
本申请实施例中的去重报文携带有去重标记。可选地,去重标记位于去重报文的载荷部分。节点31接收到报文31之后,解析报文31的载荷部分。如果报文31的载荷部分携带有去重标记,节点31确定报文31为去重报文。如果报文31的载荷部分未携带有去重标记,节点31确定报文31为未去重报文。
步骤1103、如果报文31为未去重报文,节点31判断向节点33发送的历史报文中是否存在第一原始报文,第一原始报文的载荷部分与报文31的载荷部分具有第一重复内容,节点33为报文31在节点31上的下一跳。
可选地,第一重复内容包括一个或多个重复数据块。
可能实现方式C1,节点31中存储有第一数据集合,第一数据集合包括节点31向节点33发送的历史报文的载荷部分。节点31判断向节点33发送的历史报文中是否存在第一原始报文的实现过程,包括:节点31对报文31的载荷部分与第一数据集合中的载荷部分进行内容匹配。如果第一数据集合中存在与报文31的载荷部分具有重复数据块的目标载荷部分,节点31确定向节点33发送的历史报文中存在第一原始报文。如果第一数据集合中不存在与报文31的载荷部分具有重复数据块的载荷部分,节点31确定向节点33发送的历史报文中不存在第一原始报文。可选地,节点31在确定向节点33发送的历史报文中不存在第一原始报文之后,节点31可以在第一数据集合中添加报文31的载荷部分,得到更新后的第一数据集合。更新后的第一数据集合可以用于节点31对后续获取的发送方为SFU服务器的未去重报文进行去重处理。此实现方式可参考上述步骤602中的可能实现方式A1。
可选地,如果节点31有多个下级节点,节点31中可以存储有多个节点级数据集合,每个节点级数据集合分别用于存储节点31向一个下级节点发送的历史报文的载荷部分,即节点31针对每个下级节点分别存储一个数据集合。或者,节点31中可以存储有一个全局数据集合,该全局数据集合中包括载荷部分与节点标识的对应关系,节点标识用于指示对应的载荷部分是向该节点标识所指示的下级节点发送的,即节点31针对所有下级节点存储一个共用的数据集合。
可能实现方式C2,节点31中存储有采样标签集合,该采样标签集合包括历史数据块的哈希值。历史数据块为对节点31向节点33发送的历史报文的数据部分的预设位置采样得到的数据块。节点31判断向节点33发送的历史报文中是否存在第一原始报文的实现过程,包括:节点31对报文31的数据部分的预设位置进行采样,得到采样数据块。节点31计算该采样数据块的哈希值。如果采样标签集合中包括该采样数据块的哈希值,节点31确定向节点33发送的历史报文中存在第一原始报文。如果采样标签集合中不包括该采样数据块的哈希值,节点31确定向节点33发送的历史报文中不存在第一原始报文。可选地,节点31在确定向节点33发送的历史报文中不存在第一原始报文之后,节点31可以在采样标签集合中添加该采样数据块的哈希值,得到更新后的采样标签集合。更新后的采样标签集合可以用于节点31对后续获取的发送方为SFU服务器的未去重报文进行去重处理。此实现方式可参考上述步骤602中的可能实现方式A2。
可选地,如果节点31有多个下级节点,节点31中可以存储有多个节点级采样标签集合,每个节点级采样标签集合分别对应一个下级节点,每个节点级采样标签集合分别用于存储对节点31向对应的下级节点发送的历史报文的数据部分的预设位置采样得到的数据块的哈希值。即节点31针对每个下级节点分别存储一个采样标签集合。或者,节点31中可以存储有一个全局采样标签集合,该全局采样标签集合中包括哈希值与节点标识的对应关系,节点标识用于指示对应的哈希值来自向该节点标识所指示的下级节点发送的历史报文,即节点31针对所有下级节点存储一个共用的采样标签集合。
可选地,节点31中存储的采样标签集合还包括哈希值所指示的历史数据块,也即是,节点31中存储的采样标签集合可以包括历史数据块与历史数据块的哈希值的对应关系。则上述如果采样标签集合中包括采样数据块的哈希值,节点31确定历史报文中存在第一原始报文的实现方式,包括:如果采样标签集合中包括采样数据块的哈希值,节点31对该采样数据块与该采样数据块的哈希值所指示的历史数据块进行内容匹配。如果该采样数据块与该采样数据块的哈希值所指示的历史数据块的内容相同,节点31确定历史报文中存在第一原始报文。
由于哈希值相同的两个数据块的数据内容有可能不同,通过在采样标签集合中存储历史数据块与历史数据块的哈希值的对应关系,可以使得节点31在确定采样数据块的哈希值与某个历史数据块的哈希值相同之后,进一步对该采样数据块与该历史数据块进行内容匹配,以实现精确匹配,进而提高对报文的去重准确率。
步骤1104、如果节点31向节点33发送的历史报文中存在第一原始报文,节点31对报文31的载荷部分进行去重处理,得到报文32,报文32不包括第一重复内容,且报文32携带有去重标记以及对第一重复内容的第一指示信息,该去重标记用于指示报文32为去重报文。
可选地,第一重复内容包括一个或多个重复数据块,对第一重复内容的第一指示信息包括一个或多个指示,该一个或多个指示与第一重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值。
结合上述步骤1103中的可能实现方式C1,第一重复内容中的一个或多个重复数据块位于报文31的载荷部分的数据部分和/或协议部分。节点31向节点33发送的历史报文中存在第一原始报文,即第一数据集合中存在与报文31的载荷部分具有重复数据块的目标载荷部分。节点31对报文31的载荷部分进行去重处理的实现过程,包括:针对报文31的载荷部分与目标载荷部分之间的每个重复数据块,节点31计算该重复数据块的哈希值。节点31去除报文31的载荷部分的该重复数据块,并在报文31的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值以及该重复数据块在报文31的载荷部分中的位置。这里节点31对报文31的载荷部分进行去重处理的实现过程,可参考上述步骤602中的可能实现方式A1下,节点11对报文11的载荷部分进行去重处理的实现过程。
本申请实施例中,中间节点可以对获取的未去重报文的载荷部分与已存储的历史报文的载荷部分进行内容匹配。如果该未去重报文的载荷部分与历史报文的载荷部分有重复数据块,则中间节点计算该重复数据块的哈希值,并去除未去重报文中的该重复数据块得到去重报文,进一步在去重报文中携带对该重复数据块的哈希值以及该重复数据块的位置的指示,以实现对未去重报文的数据去重。
结合上述步骤1103中的可能实现方式C2,第一重复内容中的一个或多个重复数据块位于报文31的载荷部分的数据部分。节点31对报文31的载荷部分进行去重处理的实现过程,包括:节点31将哈希值属于采样标签集合的采样数据块作为重复数据块,去除报文31的数据部分的该重复数据块,并在报文31的载荷部分添加该重复数据块对应的指示,该指示用于指示该重复数据块的哈希值。这里节点31对报文31的载荷部分进行去重处理的实现过程,可参考上述步骤602中的可能实现方式A2下,节点11对报文11的载荷部分进行去重处理的实现过程。
本申请实施例中,中间节点可以计算获取的未去重报文的数据部分的预设位置的采样数据块的哈希值,并将其与已存储的历史数据块的哈希值进行比较。如果该未去重报文中某个采样数据块的哈希值与中间节点已存储的哈希值相同,则中间节点去除该未去重报文中的该采样数据块得到去重报文,进一步在去重报文中携带该采样数据块的哈希值,以实现对未去重报文的数据去重。与上述可能实现方式C1相比,中间节点无需对未去重报文和历史报文的载荷部分进行内容匹配,提高了报文去重效率。
结合上述步骤1103中的可能实现方式C2,节点31中还可以存储有节点31向节点33发送的历史报文的协议部分。报文31的载荷部分与第一原始报文的载荷部分的第一重复内容还包括位于报文31的协议部分的协议信息,相应地,第一指示信息还包括差异指示,该差异指示用于指示报文31的协议部分与第一原始报文的协议部分的差异。这里节点31对报文31的协议部分进行去重处理的实现方式,可参考上述步骤602中的可能实现方式A2下,节点11对报文11的协议部分进行去重处理的实现方式。
本申请实施例中,中间节点除了可以对报文的数据部分的预设位置的数据块进行去重以外,还可以对报文的协议部分进行去重,通过在报文的载荷部分携带差异指示以替代协议部分,可以进一步减少报文传输数据量,从而减少网络带宽的开销。
步骤1105、节点31向节点33发送报文32。
本申请实施例中,中间节点在接收到发送方为SFU服务器的未去重报文之后,可以判断是否向该未去重报文的下一跳发送过载荷部分与该未去重报文的载荷部分具有重复内容的历史报文。如果中间节点向该未去重报文的下一跳发送过载荷部分与该未去重报文的载荷部分具有重复内容的历史报文,则中间节点可以对该未去重报文进行数据去重,然后向下级节点发送去重报文。由于去重报文的数据量相较于未去重报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。中间节点在向下级节点发送去重报文时,只需保证向该下级节点发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文即可,以保证后续传输路径上存在节点能够对该去重报文进行数据恢复,使得用户最终接收到携带有完整数据内容的原始报文,保障用户业务。
步骤1106、如果节点31向节点33发送的历史报文中不存在第一原始报文,节点31向节点33发送报文31。
步骤1107、如果报文31为去重报文,报文31携带有对第二重复内容的第二指示信息,节点31判断向节点33发送的历史报文中是否存在第二原始报文,第二原始报文的载荷部分包括第二重复内容,节点33为报文31在节点31上的下一跳。
可选地,第二重复内容包括一个或多个重复数据块,对第二重复内容的第二指示信息包括一个或多个指示,该一个或多个指示与第二重复内容中的一个或多个重复数据块一一对应。每个指示用于指示对应的重复数据块的哈希值。
可能实现方式D1,报文31由传输路径上位于节点31之前的节点采用上述步骤602中的可能实现方式A1对原始报文进行去重处理得到。对第二重复内容的第二指示信息中的每个指示用于指示对应的重复数据块的哈希值以及对应的重复数据块在报文31对应的原始报文的载荷部分中的位置。节点31中存储有第一数据集合,第一数据集合包括节点31向节点33发送的历史报文的载荷部分。节点31判断向节点33发送的历史报文中是否存在第二原始报文的实现过程,包括:对于第二指示信息中的任一指示,节点31根据该指示所指示的位置,获取第一数据集合中的载荷部分的该位置的待匹配数据块。节点31计算待匹配数据块的哈希值。节点31将哈希值与该指示所指示的哈希值一致的待匹配数据块,确定为该指示对应的重复数据块。如果第一数据集合中存在包括第二指示信息中的各个指示分别对应的重复数据块的载荷部分,节点31确定向节点33发送的历史报文中存在第二原始报文。第二原始报文即载荷部分包括第二指示信息中的各个指示分别对应的重复数据块的历史报文。如果第一数据集合中不存在包括第二指示信息中的各个指示分别对应的重复数据块的载荷部分,节点31确定向节点33发送的历史报文中不存在第二原始报文。
可能实现方式D2,报文31由传输路径上位于节点31之前的节点采用上述步骤602中的可能实现方式A2对原始报文进行去重处理得到。对第二重复内容的第二指示信息中的每个指示用于指示对应的重复数据块的哈希值。节点31中存储有采样标签集合,该采样标签集合包括历史数据块的哈希值。历史数据块为对节点31向节点33发送的历史报文的数据部分的预设位置采样得到的数据块。节点31判断向节点33发送的历史报文中是否存在第二原始报文的实现过程,包括:如果采样标签集合中包括第二指示信息中的各个指示所指示的哈希值,节点31确定向节点33发送的历史报文中存在第二原始报文。第二原始报文即载荷部分包括第二指示信息中的各个指示所指示的哈希值对应的所有历史数据块的历史报文。如果采样标签集合中不包括第二指示信息中的任一指示所指示的哈希值,节点31确定向节点33发送的历史报文中不存在第二原始报文。
步骤1108、如果节点31向节点33发送的历史报文中存在第二原始报文,节点31向节点33发送报文31。
本申请实施例中,中间节点在接收到发送方为SFU服务器的去重报文之后,可以判断是否向该去重报文的下一跳发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文。如果中间节点向该去重报文的下一跳发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文,则中间节点可以直接向下级节点转发该去重报文。
步骤1109、如果节点31向节点33发送的历史报文中不存在第二原始报文,节点31根据第二指示信息从第二数据集合中获取第二重复内容,第二数据集合包括节点31接收到的来自节点32的历史报文的载荷部分的至少部分内容。
结合上述步骤1107中的可能实现方式D1,第二指示信息中的每个指示用于指示对应的重复数据块的哈希值以及对应的重复数据块在报文31对应的原始报文的载荷部分中的位置。第二数据集合包括节点31接收到的来自节点32的历史报文的载荷部分。节点31根据第二指示信息从第二数据集合中获取第二重复内容的实现过程,包括:对于第二指示信息中的每个指示,节点31根据该指示所指示的位置,获取第二数据集合中的载荷部分的该位置的待匹配数据块。节点31计算待匹配数据块的哈希值。节点31将哈希值与该指示所指示的哈希值一致的待匹配数据块,确定为该指示对应的重复数据块。这里节点31根据第二指示信息从第二数据集合中获取第二重复内容的实现过程,可参考上述步骤1003中的可能实现方式B1下,节点21根据对重复内容的指示信息从数据集合中获取该重复内容的实现过程。
结合上述步骤1107中的可能实现方式D2,第二重复内容中的一个或多个重复数据块位于数据部分。第二数据集合包括历史数据块的哈希值与历史数据块的对应关系,该历史数据块为对节点31接收到的来自节点32的历史报文的数据部分的预设位置采样得到的数据块。节点31根据第二指示信息从第二数据集合中获取第二重复内容的实现过程,包括:节点31将第二数据集合中与第二指示信息中的指示所指示的哈希值对应的历史数据块,确定为该指示对应的重复数据块。这里节点31根据第二指示信息从第二数据集合中获取第二重复内容的实现过程,可参考上述步骤1003中的可能实现方式B2下,节点21根据对重复内容的指示信息从数据集合中获取该重复内容的实现过程。
结合上述步骤1107中的可能实现方式D2,第二数据集合还可以包括历史数据块所属报文的协议部分。第二重复内容还可以包括位于协议部分的协议信息,相应地,第二指示信息还包括差异指示,该差异指示用于指示报文31对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为节点31接收到的来自节点32的历史报文中数据部分与报文31对应的原始报文的数据部分具有上述一个或多个重复数据块的历史报文。这种情况下,节点31根据对第二指示信息从第二数据集合中获取第二重复内容的实现过程,还包括:节点31从第二数据集合中获取该一个或多个重复数据块所属的目标报文的协议部分。
步骤1110、节点31根据第二重复内容对报文31的载荷部分进行去重恢复处理,得到报文33,报文33的载荷部分包括第二重复内容。
这里报文31为去重报文,报文33为报文31对应的原始报文。
结合上述步骤1109中的可能实现方式D1,节点31根据第二重复内容对报文31的载荷部分进行去重恢复处理的实现方式为:针对第二指示信息中的每个指示,节点31在报文31的载荷部分中该指示所指示的位置,添加该指示对应的重复数据块。此实现方式可参考上述步骤1004中的可能实现方式B1下,节点21根据重复内容对报文21的载荷部分进行去重恢复处理的实现方式。
本申请实施例中,中间节点可以根据去重报文中携带的指示所指示的重复数据块在原始报文的载荷部分的位置,分别计算已存储的多个载荷部分的该位置的数据块的哈希值,以获取哈希值与该指示所指示的哈希值一致的存储数据块,然后将该存储数据块添加至该指示所指示的位置,以实现对去重报文的数据恢复。
结合上述步骤1109中的可能实现方式D2,如果第二指示信息中的指示用于指示对应的重复数据块在报文31对应的原始报文的数据部分中的位置,则节点31根据第二重复内容对报文31的载荷部分进行去重恢复处理的实现方式为:对于第二指示信息中的每个指示,节点31在报文31的数据部分中该指示所指示的位置,添加该指示对应的重复数据块。如果第二指示信息中的指示未指示重复数据块在报文31对应的原始报文的数据部分中的位置,则节点31将获取的重复数据块添加在报文31的数据部分的默认去重位置,该默认去重位置即上述预先设置的数据部分的采样位置。此实现方式可参考上述步骤1004中的可能实现方式B2下,节点21根据该重复内容对报文21的载荷部分进行去重恢复处理的实现方式。
可选地,如果第二指示信息包括针对协议部分的差异指示,则节点31根据第二重复内容对报文31的载荷部分进行去重恢复处理的实现过程,还包括:节点31根据该差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为报文33的协议部分。
本申请实施例中,中间节点可以在已存储的历史数据块的哈希值中查找去重报文中携带的哈希值,并将命中的哈希值所对应的历史数据块添加到去重报文的数据部分,以实现对去重报文的数据部分的恢复。另外,中间节点还可以获取命中的哈希值对应的历史数据块所属的历史报文的协议部分,结合去重报文中针对协议部分的差异指示还原得到去重报文对应的原始报文的协议部分,以实现对去重报文的协议部分的恢复。
在上述步骤1110中,节点31对报文31进行数据恢复时,还可以删除报文31中的去重标记以及第二指示信息,以还原得到报文31对应的原始报文。
步骤1111、节点31向节点33发送报文33。
可选地,节点33为报文33的传输路径上的网络设备。
由于网络不稳定因素可能会导致报文乱序到达中间节点,比如中间节点有可能会先接收到去重报文,之后才接收到与该去重报文对应的原始报文具有重复内容的未去重报文,该未去重报文携带有该去重报文中所指示的重复内容。这种情况下,中间节点需要对乱序报文进行保序处理,中间节点在接收到去重报文之后先缓存该去重报文,等到携带有该去重报文中所指示的重复内容的未去重报文到达之后,中间节点进一步判断是直接转发该去重报文,还是根据该未去重报文的载荷部分对该去重报文进行数据恢复。
本申请实施例中,中间节点可以对发送方为SFU服务器的未去重报文进行数据去重,以向下级节点发送去重报文。由于去重报文的数据量相较于未去重报文的数据量较小,因此可以减少报文传输数据量,从而减少网络带宽的开销。另外,中间节点也可以对发送方为SFU服务器的去重报文进行数据恢复,或者直接向下级节点转发该去重报文。中间节点在向下级节点发送去重报文时,只需保证向该下级节点发送过载荷部分携带有该去重报文相对于原始报文被去除的内容的历史报文即可,以保证后续传输路径上存在节点能够对该去重报文进行数据恢复,使得用户最终接收到携带有完整数据内容的原始报文,保障用户业务。
可选地,本申请实施例还提出了针对SFU通信架构的流量分组方案。流量分组用于节点确定哪些流可以作为一组流,进而对同一组流中的报文进行数据去重和/或数据恢复,以提高报文处理效率。在针对SFU通信架构的流量分组方案中,可以由底部节点和中间节点进行分组识别,即主动识别可去重的流,并将可去重的流进行分组。分组完成后,底部节点和中间节点可以将分组结果分别发送给上级节点,上级节点可以根据分组结果对报文进行数据去重或数据恢复。顶部节点可以无需进行分组识别。下面对顶部节点、底部节点和中间节点在数据传输过程中应用流量分组方案的具体实现方式分别进行说明。
对于顶部节点,例如图6示出的方法600中的节点11。节点11中可以存储有节点12对应的一个或多个流分组集合。每个流分组集合包括流经节点12的多条流的流标识。一个流分组集合指示一个分组,一个流分组集合中的流标识所指示的流属于同一个分组。节点11中存储的流分组集合为下级节点对应的流分组集合,本申请实施例中可以将存储的下级节点对应的流分组集合称为下级流分组集合。流标识可以采用流的五元组信息中的一个或多个来表示。五元组信息包括源IP地址、目的IP地址、源端口、目的端口和传输层协议。
在节点11中存储有节点12对应的一个或多个流分组集合的情况下,在节点11获取报文11之后,节点11可以先判断节点12对应的流分组集合中是否包括报文11所属流的流标识。如果节点12对应的流分组集合中存在包括报文11所属流的流标识的目标流分组集合,节点11执行上述步骤602和步骤603。如果节点12对应的所有流分组集合均不包括报文11所属流的流标识,节点11向节点12发送报文11。
其中,节点11判断节点12对应的流分组集合中是否包括报文11所属流的流标识,也即是,节点11判断报文11所属流是否已加入到节点12对应的某个分组中。可选地,节点11可以根据报文11的五元组信息查找节点12对应的流分组集合,以确定报文11所属流是否已加入到节点12对应的某个分组中。对于已经加入分组的流中的报文,节点11进一步判断是否对该报文进行数据去重处理,对于未加入分组的流中的报文,节点11直接转发该报文。
可选地,节点11接收节点12发送的分组信息,该分组信息包括节点12的节点标识与节点12对应的一个或多个流分组集合的对应关系。在节点11有多个下级节点的情况下,节点11存储下级节点的节点标识与下级流分组集合的对应关系。在节点11只有一个下级节点的情况下,节点11可以只存储下级流分组集合。其中,节点标识可以是节点的IP地址、媒体访问控制(Media Access Control,MAC)地址或硬件地址等能够在通信网络中唯一标识该节点的信息。
可选地,节点12向节点11发送的分组信息中还可以包括与该分组信息中的一个或多个流分组集合一一对应的一个或多个分组标识。每个分组标识用于唯一标识节点12对应的一个流分组集合。例如,分组标识可以是节点12在本节点内为流分组集合分配的能够唯一标识该流分组集合的编号。可选地,在视频会议场景中,分组信息还可以包括例如会议号等会议标识。在直播场景中,分组信息还可以包括例如直播房间号等直播标识。
可选地,分组信息携带在加入(join)消息中。也即是,节点12可以通过join消息向节点11发送分组信息。节点11接收到join消息之后,将join消息中携带的分组信息存储在分组表中。之后,节点11还可以向节点12发送join应答消息,以便节点12确认分组成功。进一步地,节点12接收到join应答消息之后,还可以向节点11发送join应答确认消息。
值得说明的是,顶部节点中存储的分组表中的分组信息均来自下级节点,该分组表可称为下级分组表。例如,顶部节点中存储的分组表可以如表1所示。
表1
参见表1,该分组表中以流标识为键(key)、节点标识和分组标识为值(value)。其中,节点标识A用于标识顶部节点的一个下级节点A,节点标识B用于标识顶部节点的另一个下级节点B。分组标识A1用于标识下级节点A的一个流分组集合,分组标识A2用于标识下级节点A的另一个流分组集合。分组标识B1用于标识下级节点B的流分组集合。基于表1可知,流标识1和流标识2属于下级节点A对应的一个流分组集合,流标识3和流标识4属于下级节点A对应的另一个流分组集合,流标识5和流标识6属于下级节点B对应的流分组集合。顶部节点在接收到报文之后,可以根据该报文所属流的流标识查找键这一列。如果键这一列没有该报文所属流的流标识,则顶部节点直接转发该报文。如果键这一列有该报文所属流的流标识,则顶部节点进一步判断是否对该报文进行数据去重。
本申请实施例中,顶部节点可以根据下级节点对应的流分组集合,判断是否需要对向该下级节点发送的报文进行去重处理。如果该报文所属流的流标识不在该下级节点对应的流分组集合中,那么顶部节点直接向下级节点转发该报文,而无需再执行报文去重流程,这样可以减小顶部节点的处理开销。
可选地,在节点12对应的流分组集合中存在包括报文11所属流的流标识的目标流分组集合的情况下,节点11在判断向节点12发送的历史报文中是否存在载荷部分与报文11的载荷部分具有重复内容的目标报文时,可以只判断向节点12发送的目标历史报文中是否存在目标报文,目标历史报文所属流的流标识属于目标流分组集合。这样,当节点12对应的流分组集合有多个时,节点11只需对属于一个流分组集合所指示的多条流的历史报文的载荷部分与报文11的载荷部分进行重复内容判断,减少了节点11所需判断的历史报文的数量,从而减少了节点11的处理开销,同时提高了节点11的报文处理效率,从而可以提高报文传输效率。
可选地,节点11以报文11所属流的流标识为键,在例如表1示出的分组表中进行键值匹配,确定报文11所属流的流标识属于节点12对应的目标流分组集合。
结合上述步骤602中的可能实现方式A1,节点11中存储有数据集合,该数据集合包括节点11向下级节点发送的历史报文的载荷部分。
第一种实现方式,节点11针对所有下级节点存储一个共用的全局数据集合,该全局数据集合包括节点11向所有下级节点发送的历史报文的载荷部分。全局数据集合中可以包括载荷部分、节点标识与分组标识的对应关系。这里,节点标识可以用于指示对应的载荷部分所属历史报文是向该节点标识所指示的下级节点发送的,分组标识可以用于指示对应的载荷部分所属历史报文所属的流的流标识在该分组标识所指示的流分组集合中。
例如,顶部节点中存储的全局数据集合可以如表2所示。
表2
/>
参见表2,该全局数据集合中以节点标识和分组标识为键、载荷部分为值。其中,节点标识A用于标识顶部节点的一个下级节点A,节点标识B用于标识顶部节点的另一个下级节点B。分组标识A1用于标识下级节点A的一个流分组集合,分组标识A2用于标识下级节点A的另一个流分组集合。分组标识B1用于标识下级节点B的流分组集合。基于表2可知,载荷部分1、载荷部分2和载荷部分3来自顶部节点向下级节点A发送的、属于一个分组的历史报文。载荷部分4和载荷部分5来自顶部节点向下级节点A发送的、属于另一分组的历史报文。载荷部分6和载荷部分7来自顶部节点向下级节点B发送的属于同一分组的历史报文。这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后再以对应的节点标识和分组标识为键,在表2中进行键值匹配以获取对应的载荷部分,进一步判断该报文的载荷部分与获取的载荷部分是否具有重复内容。
例如流标识为五元组信息,节点11以报文11的五元组信息为键,在表1示出的分组表中进行键值匹配,确定报文11对应节点标识A和分组标识A2。然后节点11再以节点标识A和分组标识A2为键,在表2示出的全局数据集合中进行键值匹配,获取载荷部分4和载荷部分5。进一步地,节点11将报文11的载荷部分分别与载荷部分4和载荷部分5进行内容匹配。如果报文11的载荷部分与载荷部分4或载荷部分5具有重复内容,则节点11确定向节点12发送的历史报文中存在目标报文,目标报文即包括与报文11的载荷部分具有重复内容的载荷部分4或载荷部分5的历史报文。
第二种实现方式,节点11针对每个下级节点分别存储一个节点级数据集合,每个节点级数据集合包括节点11向一个下级节点发送的历史报文的载荷部分。节点级数据集合中可以包括载荷部分与分组标识的对应关系。
例如参考表2示出的例子,顶部节点中可以分别存储有下级节点A对应的节点级数据集合和下级节点B对应的节点级数据集合。其中,下级节点A对应的节点级数据集合可以如表3所示,下级节点B对应的节点级数据集合可以如表4所示。
表3
表4
这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后查找到该节点标识对应的节点级数据集合,再以分组标识为键,在例如表3或表4示出的节点级数据集合中进行键值匹配以获取对应的载荷部分,进一步判断该报文的载荷部分与获取的载荷部分是否具有重复内容。
第三种实现方式,节点11针对每个流分组集合分别存储一个分组级数据集合,每个分组级数据集合包括节点11向一个下级节点发送的属于一个流分组集合所指示的多条流的历史报文的载荷部分。每个分组级数据集合中包括一个流分组集合对应的载荷部分。
这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后查找到该节点标识和该分组标识对应的分组级数据集合,再获取该分组级数据集合中的载荷部分,进一步判断该报文的载荷部分与获取的载荷部分是否具有重复内容。
结合上述步骤602中的可能实现方式A2,节点11中存储有采样标签集合,该采样标签集合包括历史数据块的哈希值。历史数据块为对节点11向节点12发送的历史报文的数据部分的预设位置采样得到的数据块。
第一种实现方式,节点11针对所有下级节点存储一个共用的全局采样标签集合,该全局采样标签集合包括对节点11向所有下级节点发送的历史报文的数据部分的预设位置采样得到的数据块的哈希值。全局采样集合中可以包括哈希值、节点标识与分组标识的对应关系。这里,节点标识可以用于指示对应的哈希值是基于向该节点标识所指示的下级节点发送的历史报文得到的,分组标识可以用于指示对应的哈希值源自的历史报文所属的流的流标识在该分组标识所指示的流分组集合中。
例如,顶部节点中存储的全局采样标签集合可以如表5所示。
表5
参见表5,该全局采样标签集合中以节点标识和分组标识为键、哈希值为值。其中,节点标识A用于标识顶部节点的一个下级节点A,节点标识B用于标识顶部节点的另一个下级节点B。分组标识A1用于标识下级节点A的一个流分组集合,分组标识A2用于标识下级节点A的另一个流分组集合。分组标识B1用于标识下级节点B的流分组集合。这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后再以对应的节点标识和分组标识为键,在表5中进行键值匹配以获取对应的哈希值,进一步判断获取的哈希值中是否包括从报文11的数据部分的预设位置采样得到的采样数据块的哈希值。
例如流标识为五元组信息,节点11以报文11的五元组信息为键,在表1示出的分组表中进行键值匹配,确定报文11对应节点标识A和分组标识A2。然后节点11再以节点标识A和分组标识A2为键,在表5示出的全局采样标签集合中进行键值匹配,获取哈希值4和哈希值5。节点11计算从报文11的数据部分的预设位置采样得到的采样数据块的哈希值。如果该采样数据块的哈希值为哈希值4或哈希值5,则节点11确定向节点12发送的历史报文中存在目标报文。
第二种实现方式,节点11针对每个下级节点分别存储一个节点级采样标签集合,每个节点级采样标签集合包括对节点11向一个下级节点发送的历史报文的数据部分的预设位置采样得到的数据块的哈希值。节点级采样标签集合中可以包括哈希值与分组标识的对应关系。
例如参考表5示出的例子,顶部节点中可以分别存储有下级节点A对应的节点级采样标签你集合和下级节点B对应的节点级采样标签集合。其中,下级节点A对应的节点级采样标签集合可以如表6所示,下级节点B对应的节点级采样标签集合可以如表7所示。
表6
表7
这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后查找到该节点标识对应的节点级采样标签集合,再以分组标识为键,在例如表6或表7示出的节点级采样标签集合中进行键值匹配以获取对应的哈希值,进一步判断获取的哈希值中是否包括从报文11的数据部分的预设位置采样得到的采样数据块的哈希值。
第三种实现方式,节点11针对每个流分组集合分别存储一个分组级采样标签集合,每个分组级采样标签集合包括对节点11向一个下级节点发送的属于一个流分组集合所指示的多条流的历史报文的数据部分的预设位置采样得到的数据块的哈希值。每个分组级采样集合中包括一个流分组集合对应的哈希值。
这种实现方式下,顶部节点在接收到报文之后,可以基于表1确定该报文对应的节点标识和分组标识,然后查找到该节点标识和该分组标识对应的分组级采样标签集合,再获取该分组级采样标签集合中的哈希值,进一步判断获取的哈希值中是否包括从报文11的数据部分的预设位置采样得到的采样数据块的哈希值。
对于底部节点,例如图10示出的方法1000中的节点21。节点21中可以存储有一个或多个流分组集合。每个流分组集合包括流经节点21的多条流的流标识。节点21中存储的流分组集合为节点21自身对应的流分组集合,本申请实施例中可以将存储的节点自身对应的流分组集合称为本地流分组集合。
可选地,在节点21基于去重标记确定报文21为去重报文之前,即上述步骤1002执行之前,节点21确定该一个或多个流分组集合中存在包括报文21所属流的流标识的目标流分组集合。也即是,节点21在接收到报文21之后,先判断节点21对应的流分组集合中是否包括报文21所属流的流标识。节点21在确定报文21所属流的流标识属于节点21对应的某个流分组集合之后,才会解析报文21的载荷部分。节点21判断节点21对应的流分组集合中是否包括报文21所属流的流标识的实现方式可参考上述节点11判断节点12对应的流分组集合中是否包括报文11所属流的流标识的实现方式。
可选地,节点21接收报文23,报文23所属流的流标识不属于节点21对应的任一流分组集合。节点21转发报文23。
本申请实施例中,由于上级节点只会对属于下级节点对应的流分组集合所指示的流中的报文进行数据去重,因此底部节点在接收到报文之后,可以先判断该报文所属流的流标识是否属于自身对应的某个流分组集合。如果该报文所属流的流标识属于自身对应的某个流分组集合,则说明该报文有可能是经过上级节点去重处理的去重报文,底部节点需要进一步解析该报文的载荷部分以判断该报文是否为去重报文。如果该报文所属流的流标识不属于自身对应的任一流分组集合,则说明上级节点不会对该报文进行数据去重,即该报文不可能为去重报文,因此底部节点可以直接转发该报文,而无需解析该报文的载荷部分以判断该报文是否为去重报文。这样可以减少底部节点的处理开销。
可选地,节点21接收报文24,报文24所属流的流标识属于节点21对应的流分组集合。节点21解析报文24的载荷部分,确定报文24的载荷部分未携带有去重标记,即报文24为未去重报文。节点21在数据集合中添加报文24的载荷部分的至少部分内容,并转发报文24。这里的报文24可视为节点21接收到的一组可去重报文中的首包,节点21通过在数据集合中存储报文24的载荷部分的至少部分内容,以便对后续接收到的去重报文进行数据恢复。
可选地,节点21将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一流分组集合中,这些不同流的发送方为同一SFU服务器。例如,节点21在接收到报文23之后,可以存储报文23的载荷部分的至少内容,后续再接收到发送方与报文23的发送方为同一SFU服务器且与报文23属于不同流的报文之后,判断该报文的载荷部分与报文23的载荷部分是否存在重复内容,如果存在,则确定该报文所属的流与报文23所属的流能够构成一个新的分组,进而生成一个新的流分组集合,该流分组集合包括该报文所属流的流标识和报文23所属流的流标识。
进一步地,节点21可以向节点22发送分组信息,该分组信息包括节点21的节点标识与节点21对应的一个或多个流分组集合的对应关系。当节点21对应的某个流分组集合发生更新时,比如某个流分组集合中添加了新的流标识,节点21可以向节点22发送新的流分组集合。或者节点21也可以向节点22发送该发生更新的流分组集合对应的分组标识以及该新的流标识,以便节点22在该分组标识所指示的流分组集合中添加该新的流标识,实现对该流分组集合的同步更新。
可选地,分组信息携带在join消息中。也即是,节点21可以通过join消息向节点22发送分组信息。节点22接收到join消息之后,将join消息中携带的分组信息存储在分组表中。之后,节点22还可以向节点21发送join应答消息,以便节点21确认分组成功。进一步地,节点21接收到join应答消息之后,还可以向节点22发送join应答确认消息。
结合上述步骤1003中的可能实现方式B1,节点21中存储的数据集合包括节点21接收到的未去重报文的载荷部分。
这种实现方式下,对于发送方为SFU服务器、且流标识不属于底部节点对应的任一流分组集合的流,底部节点接收到该流中的报文之后,存储该流中报文的载荷部分。之后,如果底部节点再接收到发送方为该SFU服务器、且流标识不属于该底部节点对应的任一流分组集合的另一条流中的报文,底部节点对这两条流的报文的载荷部分进行内容匹配,如果这两条流的报文的载荷部分存在重复内容,则说明这两条流匹配成功,进一步生成包括这两条流的流标识的流分组集合。
结合上述步骤1003中的可能实现方式B2,节点21中存储的数据集合包括对节点21接收到的未去重报文的数据部分的预设位置采样得到的数据块的哈希值与该数据块的对应关系。
这种实现方式下,对于发送方为SFU服务器、且流标识不属于底部节点对应的任一流分组集合的流,底部节点接收到该流中的报文之后,对该报文的数据部分的预设位置进行采样得到采样数据块,计算并存储该采样数据块的哈希值。之后,如果底部节点再接收到发送方为该SFU服务器、且流标识不属于该底部节点对应的任一流分组集合的另一条流中的报文,底部节点同样对该报文的数据部分的预设位置进行采样得到采样数据块,并计算该采样数据块的哈希值。如果从这两条流的报文中获取的采样数据块的哈希值相同,则说明这两条流匹配成功,进一步生成包括这两条流的流标识的流分组集合。为了提高流分组的准确性,这种实现方式,底部节点还可以存储采样数据块的内容,在属于不同流的两个报文的采样数据块的哈希值相同的情况下,底部节点可以进一步对这两个报文的采样数据块的数据内容进行精确匹配,以确定这两个报文的采样数据块的数据内容是否相同。
在节点21中存储有一个或多个流分组集合的情况下,上述步骤1003的实现方式可以为:节点21根据对重复内容的指示信息,从数据集合中的目标历史报文的载荷内容中获取该重复内容,目标历史报文所属流的流标识属于目标流分组集合。这样,当节点21对应的流分组集合有多个时,节点21只需查找属于一个流分组集合所指示的多条流的历史报文的载荷部分以获取重复内容,减少了节点21所需检索的历史报文的数量,从而减少了节点21的处理开销,同时提高了节点21的报文处理效率,从而可以提高报文传输效率。
对于中间节点,例如图11示出的方法1100中的节点31。节点31中可以存储有一个或多个本地流分组集合,每个本地流分组集合包括流经节点31的多条流的流标识。和/或,节点31中可以存储有节点33对应的一个或多个下级流分组集合,每个下级流分组集合包括流经节点33的多条流的流标识。
在节点31中存储有一个或多个本地流分组集合的情况下,在节点31判断报文31为去重报文还是未去重报文之前,即上述步骤1102执行之前,节点31确定该一个或多个本地流分组集合中存在包括报文31所属流的流标识的目标流分组集合。也即是,节点31在接收到报文31之后,先判断本地流分组集合中是否包括报文31所属流的流标识。节点31在确定报文31所属流的流标识属于某个本地流分组集合之后,再解析报文31的载荷部分。节点31判断本地流分组集合中是否包括报文31所属流的流标识的实现方式可参考上述节点11判断节点12对应的流分组集合中是否包括报文11所属流的流标识的实现方式。
本申请实施例中,由于上级节点只会对属于下级节点对应的流分组集合所指示的流中的报文进行数据去重,因此中间节点在接收到报文之后,可以先判断该报文所属流的流标识是否属于自身对应的某个流分组集合。如果该报文所属流的流标识属于自身对应的某个流分组集合,则说明该报文有可能是经过上级节点去重处理的去重报文,中间节点需要进一步解析该报文的载荷部分以判断该报文是否为去重报文。如果该报文所属流的流标识不属于自身对应的任一流分组集合,则说明上级节点不会对该报文进行数据去重,即该报文不可能为去重报文,因此中间节点可以直接转发该报文,而无需解析该报文的载荷部分以判断该报文是否为去重报文。这样可以减少中间节点的处理开销。
可选地,节点31将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一本地流分组集合中,这些不同流的发送方为同一SFU服务器。进一步地,节点31可以向节点32发送第一分组信息,第一分组信息包括节点31的节点标识与一个或多个本地流分组集合的对应关系。节点31中存储的本地流分组集合的生成方式、发送方式以及作用可分别参考上述节点21中存储的节点21对应的流分组集合的生成方式、发送方式以及作用,节点31中存储的第二数据集合中的内容也可参考节点21中存储的数据集合中的内容,本申请实施例在此不再赘述。
在节点31中存储有节点33对应的一个或多个下级流分组集合的情况下,在节点31获取报文31之后,如果报文31为未去重报文,节点31可以先判断节点33对应的下级流分组集合中是否包括报文31所属流的流标识。如果节点33对应的下级流分组集合中存在包括报文31所属流的流标识的目标流分组集合,节点31执行上述步骤1103,即节点31判断向节点33发送的历史报文中是否存在载荷部分与报文31的载荷部分具有重复内容的报文。如果节点33对应的所有流分组集合均不包括报文31所属流的流标识,节点31向节点33发送报文31。
本申请实施例中,中间节点可以根据下级节点对应的下级流分组集合,判断是否需要对接收到的需要向该下级节点发送的未去重报文进行去重处理。如果该未去重报文所属流的流标识不在该下级节点对应的下级流分组集合中,那么中间节点直接向该下级节点转发该未去重报文,而无需再执行报文去重流程,这样可以减小中间节点的处理开销。
可选地,在节点33对应的下级流分组集合中存在包括报文31所属流的流标识的目标流分组集合的情况下,节点31在判断向节点33发送的历史报文中是否存在载荷部分与报文31的载荷部分具有第一重复内容的第一原始报文时,可以只判断向节点33发送的目标历史报文中是否存在第一原始报文,目标历史报文所属流的流标识属于目标流分组集合。这样,当节点33对应的下级流分组集合有多个时,节点31只需对属于一个下级流分组集合所指示的多条流的历史报文的载荷部分与报文31的载荷部分进行重复内容判断,减少了节点31所需判断的历史报文的数量,从而减少了节点31的处理开销,同时提高了节点31的报文处理效率,从而可以提高报文传输效率。
可选地,节点31接收节点33发送的第二分组信息,第二分组信息包括节点33的节点标识与节点33对应的一个或多个下级流分组集合的对应关系。节点31中存储的节点33对应的下级流分组集合的获取方式以及作用可分别参考上述节点11中存储的节点12对应的流分组集合的获取方式以及作用,节点31中存储的第一数据集合或采样标签集合中的内容也可对应参考节点11中存储的数据集合或采样标签集合中的内容,本申请实施例在此不再赘述。
本申请实施例中定义的顶部节点、中间节点和底部节点用于区分不同节点相对于SFU服务器的位置,这些节点具备的功能可以是相同的。可选地,可以手动配置数据传输系统中多个节点相对于SFU服务器的位置以及该多个节点之间的连接关系。或者也可以由数据传输系统中的多个节点分别执行节点发现流程以确定自身相对于SFU服务器的位置以及与其它节点的连接关系,实现自动化部署。
本申请实施例中,可以由发送方为SFU服务器的报文或目的地为SFU服务器的报文触发数据传输系统中的节点执行节点发现流程。发送方为SFU服务器的报文的源端口号为SFU服务端口号,节点可以根据报文的源端口号判断该报文的发送方是否为SFU服务器。目的地为SFU服务器的报文的目的端口号为SFU服务端口号,节点可以根据报文的目的端口号判断该报文的目的地是否为SFU服务器。下面对顶部节点、底部节点和中间节点执行节点发现流程的具体实现方式分别进行说明。
对于顶部节点,例如图6示出的方法600中的节点11。如果节点11为SFU服务器,在SFU服务器配置有支持数据去重的功能的情况下,节点11直接确定自身为顶部节点。如果节点11不为SFU服务器,则节点11可以通过以下两种可能实现方式确定自身相对于SFU服务器的位置。
一种可能实现方式,由目的地为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点11接收到目的端口号为SFU服务端口号的报文13之后,可以向节点13发送节点发现报文11。节点13为报文13在节点11上的下一跳。报文13的目的地为SFU服务器,节点发现报文11携带有该SFU服务器的标识,且节点发现报文11指示节点11为节点13在以该SFU服务器为起点的传输路径上的下级节点。响应于未接收到节点13发送的节点发现报文11对应的节点发现响应报文11,节点11确定节点11为以该SFU服务器为起点的传输路径上支持数据去重的首个节点。其中,SFU服务器的标识可以是SFU服务器的IP地址,或者是SFU服务器的IP地址经过NAT之后得到的地址。
可选地,节点发现报文11指示节点11为节点13在以SFU服务器为起点的传输路径上的下级节点的方式有多种。比如,如果节点发现报文11的目的端口号为SFU服务端口号,且节点发现报文11携带有SFU服务器的标识,则表示发送节点发现报文11的节点11为接收节点发现报文11的节点13在以该SFU服务器为起点的传输路径上的下级节点。又比如,节点发现报文11中携带有用于指示自身为下级节点的位置指示,则节点发现报文11携带的该位置指示和SFU服务器的标识共同指示发送节点发现报文11的节点11为接收节点发现报文11的节点13在以该SFU服务器为起点的传输路径上的下级节点。
可选地,节点11根据报文13生成节点发现报文11,节点发现报文11的报文头与报文13的报文头相同,节点发现报文11的载荷部分携带有对节点发现报文11的报文类型的指示。例如,节点11根据报文13生成节点发现报文11的实现方式可以是,节点11复制报文13,然后只保留复制报文的报文头,并在复制报文的载荷部分添加用于指示自身的报文类型为节点发现报文的指示,得到节点发现报文11。其中,报文头包括以太头、IP头和传输层协议头(UDP头或TCP头)。或者,节点发现报文11也可以是节点11构造的一种新报文,本申请实施例对节点发现报文的报文结构不做限定。
这种实现方式下,节点11还可以接收节点14发送的节点发现报文12,节点发现报文12携带有SFU服务器的标识,且节点发现报文12指示节点14为节点11在以该SFU服务器为起点的传输路径上的下级节点。节点11根据节点发现报文12确定节点14支持数据去重,并向节点14发送节点发现报文12对应的节点发现响应报文12,节点发现响应报文12指示节点11支持数据去重,且节点11还可以确定自身不是在以该SFU服务器为起点的传输路径上的最后一个节点。节点14例如可以是上述节点12。
本申请实施例中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到下级节点发送的节点发现报文,且未接收到上级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的首个节点。
另一种可能实现方式,由发送方为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点11接收到源端口号为SFU服务端口号的报文14之后,向节点15发送节点发现报文13,节点15为报文14在节点11上的下一跳,报文14的发送方为SFU服务器,节点发现报文13携带有该SFU服务器的标识,且节点发现报文13指示节点11为节点15在以该SFU服务器为起点的传输路径上的上级节点。响应于接收到节点15发送的节点发现报文13对应的节点发现响应报文13,节点11确定节点15支持数据去重,且节点11还可以确定自身不是在以该SFU服务器为起点的传输路径上的最后一个节点。节点15例如可以是上述节点12。进一步地,节点11还可以向节点15发送节点发现响应确认报文。
可选地,节点发现报文13指示节点11为节点15在以SFU服务器为起点的传输路径上的上级节点的方式有多种。比如,如果节点发现报文13的源端口号为SFU服务端口号,且节点发现报文11携带有SFU服务器的标识,则表示发送节点发现报文13的节点11为接收节点发现报文11的节点15在以该SFU服务器为起点的传输路径上的上级节点。又比如,节点发现报文13中携带有用于指示自身为上级节点的位置指示,则节点发现报文13携带的该位置指示和SFU服务器的标识共同指示发送节点发现报文13的节点11为接收节点发现报文11的节点15在以该SFU服务器为起点的传输路径上的上级节点。
可选地,节点11根据报文14生成节点发现报文13,节点发现报文13的报文头与报文14的报文头相同,节点发现报文13的载荷部分携带有对节点发现报文13的报文类型的指示。
本申请实施例中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到下级节点发送的节点发现响应报文,且未接收到上级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的首个节点。
对于底部节点,例如图10示出的方法1000中的节点21。节点21可以通过以下两种可能实现方式确定自身相对于SFU服务器的位置。
一种可能实现方式,由目的地为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点21接收到目的端口号为SFU服务端口号的报文25之后,向节点24发送节点发现报文21。节点24为报文25在节点21上的下一跳。报文25的目的地为SFU服务器,节点发现报文21携带有该SFU服务器的标识,且节点发现报文21指示节点21为节点24在以该SFU服务器为起点的传输路径上的下级节点。响应于接收到节点24发送的节点发现报文21对应的节点发现响应报文21,节点21确定节点24支持数据去重,且节点21还可以确定自身不是在以该SFU服务器为起点的传输路径上的首个节点。节点24例如可以是上述节点22。进一步地,节点21还可以向节点24发送节点发现响应确认报文。
可选地,节点21根据报文25生成节点发现报文21,节点发现报文21的报文头与报文25的报文头相同,节点发现报文21的载荷部分携带有对节点发现报文21的报文类型的指示。节点21生成节点发现报文的方式可参考上述节点11生成节点发现报文的方式。
本申请实施例中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现响应报文,且未接收到下级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的最后一个节点。
另一种可能实现方式,由发送方为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点21可以接收节点25发送的节点发现报文22,节点发现报文22携带有SFU服务器的标识,且节点发现报文22指示节点25为节点21在以该SFU服务器为起点的传输路径上的上级节点。节点21根据节点发现报文22确定节点25支持数据去重,并向节点25发送节点发现报文22对应的节点发现响应报文22,节点发现响应报文22指示节点21支持数据去重,且节点21还可以确定自身不是在以该SFU服务器为起点的传输路径上的首个节点。节点25例如可以是上述节点22。
这种实现方式下,节点21接收到源端口号为SFU服务端口号的报文26之后,还可以向节点26发送节点发现报文23,节点26为报文26在节点21上的下一跳。报文26的发送方为SFU服务器,节点发现报文23携带有该SFU服务器的标识,且节点发现报文23指示节点21为节点26在以该SFU服务器为起点的传输路径上的上级节点。响应于未接收到节点26发送的节点发现报文23对应的节点发现响应报文23,节点21确定节点21为以该SFU服务器为起点的传输路径上支持数据去重的最后一个节点。
可选地,节点21根据报文26生成节点发现报文23,节点发现报文23的报文头与报文26的报文头相同,节点发现报文23的载荷部分携带有对节点发现报文23的报文类型的指示。
本申请实施例中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现报文,且未接收到下级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的最后一个节点。
对于中间节点,例如图11示出的方法1100中的节点31。节点31可以通过以下两种可能实现方式确定自身相对于SFU服务器的位置。
一种可能实现方式,由目的地为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点31接收到目的端口号为SFU服务端口号的报文34之后,向节点34发送节点发现报文31。节点34为报文34在节点31上的下一跳。报文34的目的地为SFU服务器,节点发现报文31携带有该SFU服务器的标识,且节点发现报文31指示节点31为节点34在以该SFU服务器为起点的传输路径上的下级节点。响应于接收到节点34发送的节点发现报文31对应的节点发现响应报文31,节点31确定节点34支持数据去重,且节点31还可以确定自身不是在以该SFU服务器为起点的传输路径上的首个节点。节点34例如可以是上述节点32。进一步地,节点31还可以向节点34发送节点发现响应确认报文。
可选地,节点31根据报文34生成节点发现报文31,节点发现报文31的报文头与报文34的报文头相同,节点发现报文31的载荷部分携带有对节点发现报文31的报文类型的指示。节点31生成节点发现报文的方式可参考上述节点11生成节点发现报文的方式。
这种实现方式下,节点31还可以接收节点37发送的节点发现报文34,节点发现报文34携带有SFU服务器的标识,且节点发现报文34指示节点37为节点31在以该SFU服务器为起点的传输路径上的下级节点。节点31根据节点发现报文34确定节点37支持数据去重,并向节点37发送节点发现报文34对应的节点发现响应报文34,节点发现响应报文34指示节点31支持数据去重,且节点31还可以确定自身不是在以该SFU服务器为起点的传输路径上的最后一个节点。节点37例如可以是上述节点33。
本申请实施例中,在由目的地为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现响应报文,且接收到下级节点发送的节点发现报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的中间节点。
另一种可能实现方式,由发送方为SFU服务器的报文触发节点发现流程。
这种实现方式下,节点31接收到源端口号为SFU服务端口号的报文35之后,可以向节点36发送节点发现报文33。节点36为报文35在节点31上的下一跳。报文35的发送方为SFU服务器,节点发现报文33携带有该SFU服务器的标识,且节点发现报文33指示节点31为节点36在以该SFU服务器为起点的传输路径上的上级节点。响应于接收到节点36发送的节点发现报文33对应的节点发现响应报文33,节点31确定节点36支持数据去重,且节点31还可以确定自身不是在以该SFU服务器为起点的传输路径上的最后一个节点。节点36例如可以是上述节点33。进一步地,节点31还可以向节点36发送节点发现响应确认报文。
可选地,节点31根据报文35生成节点发现报文33,节点发现报文33的报文头与报文35的报文头相同,节点发现报文33的载荷部分携带有对节点发现报文33的报文类型的指示。
这种实现方式下,节点31还可以接收节点35发送的节点发现报文32,节点发现报文32携带有SFU服务器的标识,且节点发现报文32指示节点35为节点31在以该SFU服务器为起点的传输路径上的上级节点。节点31根据节点发现报文32确定节点35支持数据去重,并向节点35发送节点发现报文32对应的节点发现响应报文32,节点发现响应报文32指示节点31支持数据去重,且节点31还可以确定自身不是在以该SFU服务器为起点的传输路径上的首个节点。节点35例如可以是上述节点32。
本申请实施例中,在由发送方为SFU服务器的报文触发节点发现流程的方案中,如果某个节点接收到上级节点发送的节点发现报文,且接收到下级节点发送的节点发现响应报文,那么该节点可以确定自身为以该SFU服务器为起点的传输路径上的中间节点。
可选地,本申请实施例提供的数据传输系统中的各个节点还可以存储有SFU服务器的标识与节点位置的对应关系,该节点位置用于指示节点自身相对于对应的SFU服务器的位置。由于数据传输系统中可能有多个SFU服务器,同一节点相对于不同SFU服务器可能处于不同位置,比如某个节点相对于SFU服务器1为顶部节点,相对于SFU服务器2为中间节点,通过在节点中存储SFU服务器的标识与节点位置的对应关系,使得节点在接收到发送方为某个SFU服务器的报文之后,能够确定自身应该以哪个位置的节点对报文进行去重或恢复处理,适用于组网复杂的应用场景。
本申请实施例提供的数据传输方法的步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内。例如,本申请实施例中,各个节点中存储的数据集合和/或采样标签集合中的内容可以定期更新,比如只存储最近一定时长内的数据,并自动删除过期数据,以减少节点的内存资源消耗。又例如,目的地为SFU服务器或发送方为SFU服务器的报文除了上述实施例中描述的可以触发接收到该报文的节点在该报文的传输方向上发送节点发现报文以外,还可以触发接收到该报文的节点在该报文的反向传输方向上发送节点发现报文,节点在报文的反向传输方向上发送节点发现报文确定自身相对于SFU服务器的位置的原理可参考上述实施例中节点在报文的传输方向上发送节点发现报文确定自身相对于SFU服务器的位置的原理,本申请实施例在此不再一一赘述。
下面对本申请实施例的虚拟装置举例说明。
例如,图12是本申请实施例提供的一种通信节点的结构示意图。该通信节点为第一节点,例如可以是图6示出的方法600中的节点11。如图12所示,通信节点1200包括获取模块1201、处理模块1202和发送模块1203。可选地,通信节点1200还包括接收模块1204。
获取模块1201,用于获取发送方为SFU服务器的第一报文,第一节点为第一报文的传输路径上支持数据去重的首个节点。处理模块1202,用于如果第一节点向第二节点发送的历史报文中存在目标报文,目标报文的载荷部分与第一报文的载荷部分具有重复内容,对第一报文的载荷部分进行去重处理,得到第二报文,第二报文不包括重复内容,且第二报文携带有去重标记以及对重复内容的指示信息,去重标记用于指示第二报文为去重报文,第二节点为第一报文在第一节点上的下一跳。发送模块1203,用于向第二节点发送第二报文。这里,第一节点可以是上述节点11,第二节点可以是上述节点12,第一报文可以是上述报文11,第二报文可以是上述报文12。
可选地,重复内容包括一个或多个重复数据块,指示信息包括一个或多个指示,一个或多个指示与一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
可选地,第一节点中存储有数据集合,数据集合包括第一节点向第二节点发送的历史报文的载荷部分,处理模块1202,用于:对第一报文的载荷部分与数据集合中的载荷部分进行内容匹配。如果数据集合中存在与第一报文的载荷部分具有重复数据块的目标载荷部分,确定历史报文中存在目标报文。针对第一报文的载荷部分与目标载荷部分之间的每个重复数据块,第一节点计算重复数据块的哈希值。去除第一报文的载荷部分的重复数据块,并在第一报文的载荷部分添加重复数据块对应的指示,指示用于指示重复数据块的哈希值以及重复数据块在第一报文的载荷部分中的位置。
可选地,处理模块1202,用于:如果数据集合中不存在与第一报文的载荷部分具有重复数据块的载荷部分,确定历史报文中不存在目标报文。在数据集合中添加第一报文的载荷部分。
可选地,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于第一报文的数据部分。
可选地,第一节点中存储有采样标签集合,采样标签集合包括历史数据块的哈希值,历史数据块为对第一节点向第二节点发送的历史报文的数据部分的预设位置采样得到的数据块。处理模块1202,用于:对第一报文的数据部分的预设位置进行采样,得到采样数据块。计算采样数据块的哈希值。如果采样标签集合中包括采样数据块的哈希值,确定历史报文中存在目标报文。将哈希值属于采样标签集合的采样数据块作为重复数据块,去除第一报文的数据部分的重复数据块,并在第一报文的载荷部分添加重复数据块对应的指示,指示用于指示重复数据块的哈希值。
可选地,预设位置有多个,第一节点对第一报文的数据部分的预设位置采样得到的采样数据块有多个,指示还用于指示重复数据块在第一报文的数据部分中的位置。
可选地,处理模块1202,用于:如果采样标签集合中不包括采样数据块的哈希值,确定历史报文中不存在目标报文。在采样标签集合中添加采样数据块的哈希值。
可选地,采样标签集合还包括哈希值所指示的历史数据块,如果采样标签集合中包括采样数据块的哈希值,处理模块1202,用于:如果采样标签集合中包括采样数据块的哈希值,对采样数据块与采样数据块的哈希值所指示的历史数据块进行内容匹配。当采样数据块与采样数据块的哈希值所指示的历史数据块的内容相同时,确定历史报文中存在目标报文。
可选地,第一节点中还存储有第一节点向第二节点发送的历史报文的协议部分;重复内容还包括位于第一报文的协议部分的协议信息,指示信息还包括差异指示,差异指示用于指示第一报文的协议部分与目标报文的协议部分的差异。
可选地,第一节点中存储有第二节点对应的一个或多个流分组集合,每个流分组集合包括流经第二节点的多条流的流标识。处理模块1202,还用于在第一节点获取第一报文之后,如果第二节点对应的流分组集合中存在包括第一报文所属流的流标识的目标流分组集合,判断向第二节点发送的目标历史报文中是否存在目标报文,目标历史报文所属流的流标识属于目标流分组集合。发送模块1203,还用于如果第二节点对应的所有流分组集合均不包括第一报文所属流的流标识,向第二节点发送第一报文。
可选地,接收模块1204,用于接收第二节点发送的分组信息,分组信息包括第二节点的节点标识与一个或多个流分组集合的对应关系。
可选地,第一节点不为SFU服务器;发送模块1203,还用于接收到目的端口号为SFU服务端口号的第三报文之后,向第三节点发送第一节点发现报文,第三节点为第三报文在第一节点上的下一跳,第三报文的目的地为SFU服务器,第一节点发现报文携带有SFU服务器的标识,且第一节点发现报文指示第一节点为第三节点在以SFU服务器为起点的传输路径上的下级节点。处理模块1202,还用于响应于未接收到第三节点发送的第一节点发现报文对应的第一节点发现响应报文,确定第一节点为以SFU服务器为起点的传输路径上支持数据去重的首个节点。这里,第三节点可以是上述节点13,第三报文可以是上述报文13,第一节点发现报文可以是上述节点发现报文11,第一节点发现响应报文可以是上述节点发现响应报文11。
可选地,处理模块1202,还用于:根据第三报文生成第一节点发现报文,第一节点发现报文的报文头与第三报文的报文头相同,第一节点发现报文的载荷部分携带有对第一节点发现报文的报文类型的指示。
可选地,接收模块1204,用于接收第四节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第四节点为第一节点在以SFU服务器为起点的传输路径上的下级节点。处理模块1202,还用于根据第二节点发现报文确定第四节点支持数据去重。发送模块1203,还用于向第四节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。这里,第四节点可以是上述节点14,第二节点发现报文可以是上述节点发现报文12,第二节点发现响应报文可以是上述节点发现响应报文12。
可选地,发送模块1203,还用于接收到源端口号为SFU服务端口号的第四报文之后,向第五节点发送第三节点发现报文,第五节点为第四报文在第一节点上的下一跳,第四报文的发送方为SFU服务器,第三节点发现报文携带有SFU服务器的标识,且第三节点发现报文指示第一节点为第五节点在以SFU服务器为起点的传输路径上的上级节点。处理模块1202,还用于响应于接收到第五节点发送的第三节点发现报文对应的第三节点发现响应报文,确定第五节点支持数据去重。这里,第五节点可以是上述节点15,第四报文可以是上述报文14,第三节点发现报文可以是上述节点发现报文13,第三节点发现响应报文可以是上述节点发现响应报文13。
可选地,发送模块1203,还用于如果第一节点向第二节点发送的历史报文中不存在目标报文,向第二节点发送第一报文。
又例如,图13是本申请实施例提供的另一种通信节点的结构示意图。该通信节点为第一节点,例如可以是图10示出的方法1000中的节点21。如图13所示,通信节点1300包括接收模块1301、处理模块1302和发送模块1303。
接收模块1301,用于接收第二节点发送的第一报文,第一报文的发送方为SFU服务器,第一报文携带有去重标记以及对重复内容的指示信息,去重标记用于指示第一报文为去重报文,第一节点为第一报文的传输路径上支持数据去重的最后一个节点。处理模块1302,用于基于去重标记确定第一报文为去重报文;根据指示信息从数据集合中获取重复内容,数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分的至少部分内容;根据重复内容对第一报文的载荷部分进行去重恢复处理,得到第二报文,第二报文的载荷部分包括重复内容。发送模块1303,用于向第三节点发送第二报文,第三节点为第一报文在第一节点上的下一跳。这里,第一节点可以是上述节点21,第二节点可以是上述节点22,第三节点可以是上述节点23,第一报文可以是上述报文21,第二报文可以是上述报文22。
可选地,重复内容包括一个或多个重复数据块,指示信息包括一个或多个指示,一个或多个指示与一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
可选地,每个指示还用于指示对应的重复数据块在第一报文对应的原始报文的载荷部分中的位置,数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分。处理模块1302,用于:对于指示信息中的每个指示,根据指示所指示的位置,获取数据集合中的载荷部分的位置的待匹配数据块。计算待匹配数据块的哈希值。将哈希值与指示所指示的哈希值一致的待匹配数据块,确定为指示对应的重复数据块。
可选地,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于数据部分。
可选地,数据集合包括历史数据块的哈希值与历史数据块的对应关系,历史数据块为对第一节点接收到的来自第二节点的历史报文的数据部分的预设位置采样得到的数据块。处理模块1302,用于将数据集合中与指示信息中的指示所指示的哈希值对应的历史数据块,确定为指示对应的重复数据块。
可选地,指示还用于指示对应的重复数据块在第一报文对应的原始报文的数据部分中的位置。处理模块1302,用于对于指示信息中的每个指示,在第一报文的数据部分中指示所指示的位置,添加指示对应的重复数据块。
可选地,重复内容还包括位于协议部分的协议信息,指示信息还包括差异指示,差异指示用于指示第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为第一节点接收到的来自第二节点的历史报文中数据部分与原始报文的数据部分具有一个或多个重复数据块的历史报文;数据集合还包括历史数据块所属报文的协议部分。处理模块1302,还用于:从数据集合中获取一个或多个重复数据块所属的目标报文的协议部分。根据差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为第二报文的协议部分。
可选地,去重标记位于第一报文的载荷部分,第一节点中存储有一个或多个流分组集合,每个流分组集合包括流经第一节点的多条流的流标识。处理模块1302,还用于在第一节点基于去重标记确定第一报文为去重报文之前,确定一个或多个流分组集合中存在包括第一报文所属流的流标识的目标流分组集合;解析第一报文的载荷部分,得到去重标记。
可选地,处理模块1302,用于根据指示信息,从数据集合中的目标历史报文的载荷内容中获取重复内容,目标历史报文所属流的流标识属于目标流分组集合。
可选地,接收模块1301,还用于接收第三报文,第三报文所属流的流标识不属于任一流分组集合。发送模块1303,还用于转发第三报文。这里,第三报文可以是上述报文23。
可选地,接收模块1301,还用于接收第四报文,第四报文所属流的流标识属于流分组集合。处理模块1302,还用于解析第四报文的载荷部分,确定第四报文的载荷部分未携带有去重标记;在数据集合中添加第四报文的载荷部分的至少部分内容,并转发第四报文。这里,第四报文可以是上述报文24。
可选地,处理模块1302,还用于将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一流分组集合中,不同流的发送方均为SFU服务器。
可选地,发送模块1303,还用于向第二节点发送分组信息,分组信息包括第一节点的节点标识与一个或多个流分组集合的对应关系。
可选地,发送模块1303,还用于接收到目的端口号为SFU服务端口号的第五报文之后,向第四节点发送第一节点发现报文,第四节点为第五报文在第一节点上的下一跳,第五报文的目的地为SFU服务器,第一节点发现报文携带有SFU服务器的标识,且第一节点发现报文指示第一节点为第四节点在以SFU服务器为起点的传输路径上的下级节点。处理模块1302,还用于响应于接收到第四节点发送的第一节点发现报文对应的第一节点发现响应报文,确定第四节点支持数据去重。这里,第四节点可以是上述节点24,第五报文可以是上述报文25,第一节点发现报文可以是上述节点发现报文21,第一节点发现响应报文可以是上述节点发现响应报文21。
可选地,处理模块1302,还用于根据第五报文生成第一节点发现报文,第一节点发现报文的报文头与第五报文的报文头相同,第一节点发现报文的载荷部分携带有对第一节点发现报文的报文类型的指示。
可选地,接收模块1301,还用于接收第五节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第五节点为第一节点在以SFU服务器为起点的传输路径上的上级节点。处理模块1302,还用于根据第二节点发现报文确定第五节点支持数据去重。发送模块1303,还用于向第五节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。这里,第五节点可以是上述节点25,第二节点发现报文可以是上述节点发现报文22,第二节点发现响应报文可以是上述节点发现响应报文22。
可选地,发送模块1303,还用于接收到源端口号为SFU服务端口号的第六报文之后,向第六节点发送第三节点发现报文,第六节点为第六报文在第一节点上的下一跳,第六报文的发送方为SFU服务器,第三节点发现报文携带有SFU服务器的标识,且第三节点发现报文指示第一节点为第六节点在以SFU服务器为起点的传输路径上的上级节点。处理模块1302,还用于响应于未接收到第六节点发送的第三节点发现报文对应的第三节点发现响应报文,确定第一节点为以SFU服务器为起点的传输路径上支持数据去重的最后一个节点。这里,第六节点可以是上述节点26,第六报文可以是上述报文26,第三节点发现报文可以是上述节点发现报文23,第三节点发现响应报文可以是上述节点发现响应报文23。
又例如,图14是本申请实施例提供的又一种通信节点的结构示意图。该通信节点为第一节点,例如可以是图11示出的方法1100中的节点31。如图14所示,通信节点1400包括接收模块1401、处理模块1402和发送模块1403。
接收模块1401,用于接收第二节点发送的第一报文,第一报文的发送方为SFU服务器,第一节点为第一报文的传输路径上支持数据去重的中间节点。处理模块1402,用于如果第一报文为未去重报文,且第一节点向第三节点发送的历史报文中存在第一原始报文,第一原始报文的载荷部分与第一报文的载荷部分具有第一重复内容,对第一报文的载荷部分进行去重处理,得到第二报文,第二报文不包括第一重复内容,且第二报文携带有去重标记以及对第一重复内容的第一指示信息,去重标记用于指示第二报文为去重报文,第三节点为第一报文在第一节点上的下一跳。发送模块1403,用于向第三节点发送第二报文。这里,第一节点可以是上述节点31,第二节点可以是上述节点32,第三节点可以是上述节点33,第一报文可以是上述报文31,第二报文可以是上述报文32。
可选地,发送模块1403,还用于如果第一报文为未去重报文,且第一节点向第三节点发送的历史报文中不存在第一原始报文,向第三节点发送第一报文。
可选地,第一重复内容包括一个或多个重复数据块,第一指示信息包括一个或多个指示,一个或多个指示与一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
可选地,第一节点中存储有第一数据集合,第一数据集合包括第一节点向第三节点发送的历史报文的载荷部分,处理模块1402,还用于:对第一报文的载荷部分与第一数据集合中的载荷部分进行内容匹配。如果第一数据集合中存在与第一报文的载荷部分具有重复数据块的目标载荷部分,确定历史报文中存在第一原始报文。如果第一数据集合中不存在与第一报文的载荷部分具有重复数据块的载荷部分,确定历史报文中不存在第一原始报文,并且,第一节点在第一数据集合中添加第一报文的载荷部分。
可选地,第一数据集合包括目标载荷部分,处理模块1402,用于:针对第一报文的载荷部分与目标载荷部分之间的每个重复数据块,计算重复数据块的哈希值。去除第一报文的载荷部分的重复数据块,并在第一报文的载荷部分添加重复数据块对应的指示,指示用于指示重复数据块的哈希值以及重复数据块在第一报文的载荷部分中的位置。
可选地,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于第一报文的数据部分;第一节点中存储有采样标签集合,采样标签集合包括历史数据块的哈希值,历史数据块为对第一节点向第三节点发送的历史报文的数据部分的预设位置采样得到的数据块。处理模块1402,还用于:对第一报文的数据部分的预设位置进行采样,得到采样数据块。计算采样数据块的哈希值。如果采样标签集合中包括采样数据块的哈希值,确定历史报文中存在第一原始报文。如果采样标签集合中不包括采样数据块的哈希值,确定历史报文中不存在第一原始报文,并且,第一节点在采样标签集合中添加采样数据块的哈希值。
可选地,采样标签集合中包括采样数据块的哈希值,处理模块1402,用于将哈希值属于采样标签集合的采样数据块作为重复数据块,去除第一报文的数据部分的重复数据块,并在第一报文的载荷部分添加重复数据块对应的指示,指示用于指示重复数据块的哈希值。
可选地,第一节点中还存储有第一节点向第三节点发送的历史报文的协议部分;第一重复内容还包括位于第一报文的协议部分的协议信息,第一指示信息还包括差异指示,差异指示用于指示第一报文的协议部分与第一原始报文的协议部分的差异。
可选地,发送模块1403,还用于如果第一报文为去重报文,第一报文携带有对第二重复内容的第二指示信息,且第一节点向第三节点发送的历史报文中存在第二原始报文,第二原始报文的载荷部分包括第二重复内容,向第三节点发送第一报文。
可选地,处理模块1402,还用于如果第一报文为去重报文,第一报文携带有对第二重复内容的第二指示信息,且第一节点向第三节点发送的历史报文中不存在第二原始报文,第二原始报文的载荷部分包括第二重复内容,根据第二指示信息从第二数据集合中获取第二重复内容,第二数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分的至少部分内容;根据第二重复内容对第一报文的载荷部分进行去重恢复处理,得到第三报文,第三报文的载荷部分包括第二重复内容。发送模块1403,还用于向第三节点发送第三报文。这里,第三报文可以是上述报文33。
可选地,第二重复内容包括一个或多个重复数据块,第二指示信息包括一个或多个指示,一个或多个指示与一个或多个重复数据块一一对应,每个指示用于指示对应的重复数据块的哈希值。
可选地,每个指示还用于指示对应的重复数据块在第一报文对应的原始报文的载荷部分中的位置,第二数据集合包括第一节点接收到的来自第二节点的历史报文的载荷部分。处理模块1402,用于:对于第二指示信息中的每个指示,根据指示所指示的位置,获取第二数据集合中的载荷部分的位置的待匹配数据块。计算待匹配数据块的哈希值。将哈希值与指示所指示的哈希值一致的待匹配数据块,确定为指示对应的重复数据块。
可选地,载荷部分包括协议部分和数据部分,一个或多个重复数据块位于数据部分;第二数据集合包括历史数据块的哈希值与历史数据块的对应关系,历史数据块为对第一节点接收到的来自第二节点的历史报文的数据部分的预设位置采样得到的数据块。处理模块1402,用于将第二数据集合中与第二指示信息中的指示所指示的哈希值对应的历史数据块,确定为指示对应的重复数据块。
可选地,指示还用于指示对应的重复数据块在第一报文对应的原始报文的数据部分中的位置。处理模块1402,用于对于第二指示信息中的每个指示,在第一报文的数据部分中指示所指示的位置,添加指示对应的重复数据块。
可选地,第二重复内容还包括位于协议部分的协议信息,第二指示信息还包括差异指示,差异指示用于指示第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,目标报文为第一节点接收到的来自第二节点的历史报文中数据部分与原始报文的数据部分具有一个或多个重复数据块的历史报文;第二数据集合还包括历史数据块所属报文的协议部分。处理模块1402,还用于:从第二数据集合中获取一个或多个重复数据块所属的目标报文的协议部分。根据差异指示修改目标报文的协议部分,并将修改后的目标报文的协议部分作为第三报文的协议部分。
可选地,第一节点中存储有一个或多个本地流分组集合,每个本地流分组集合包括流经第一节点的多条流的流标识;处理模块1402,还用于:在确定一个或多个本地流分组集合中存在包括第一报文所属流的流标识的目标流分组集合之后,解析第一报文的载荷部分。如果第一报文的载荷部分携带有去重标记,确定第一报文为去重报文。如果第一报文的载荷部分未携带有去重标记,确定第一报文为未去重报文。
可选地,处理模块1402,还用于将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一本地流分组集合中,不同流的发送方均为SFU服务器。
可选地,发送模块1403,还用于向第二节点发送第一分组信息,第一分组信息包括第一节点的节点标识与一个或多个本地流分组集合的对应关系。
可选地,第一节点中存储有第三节点对应的一个或多个下级流分组集合,每个下级流分组集合包括流经第三节点的多条流的流标识。处理模块1402,还用于在第一节点接收第二节点发送的第一报文之后,如果第三节点对应的下级流分组集合中存在包括第一报文所属流的流标识的目标流分组集合,判断向第三节点发送的目标历史报文中是否存在载荷部分与第一报文的载荷部分具有重复内容的报文,目标历史报文所属流的流标识属于目标流分组集合。发送模块1403,还用于如果第三节点对应的所有下级流分组集合均不包括第一报文所属流的流标识,向第三节点发送第一报文。
可选地,接收模块1401,还用于接收第三节点发送的第二分组信息,第二分组信息包括第三节点的节点标识与一个或多个下级流分组集合的对应关系。
可选地,发送模块1403,还用于接收到目的端口号为SFU服务端口号的第四报文之后,向第四节点发送第一节点发现报文,第四节点为第四报文在第一节点上的下一跳,第四报文的目的地为SFU服务器,第一节点发现报文携带有SFU服务器的标识,且第一节点发现报文指示第一节点为第四节点在以SFU服务器为起点的传输路径上的下级节点。处理模块1402,还用于响应于接收到第四节点发送的第一节点发现报文对应的第一节点发现响应报文,确定第四节点支持数据去重。这里,第四节点可以是上述节点34,第四报文可以是上述报文34,第一节点发现报文可以是上述节点发现报文31,第一节点发现响应报文可以是上述节点发现响应报文31。
可选地,接收模块1401,还用于接收第五节点发送的第二节点发现报文,第二节点发现报文携带有SFU服务器的标识,且第二节点发现报文指示第五节点为第一节点在以SFU服务器为起点的传输路径上的上级节点。处理模块1402,还用于根据第二节点发现报文确定第五节点支持数据去重。发送模块1403,还用于向第五节点发送第二节点发现报文对应的第二节点发现响应报文,第二节点发现响应报文指示第一节点支持数据去重。这里,第五节点可以是上述节点35,第二节点发现报文可以是上述节点发现报文32,第二节点发现响应报文可以是上述节点发现响应报文32。
可选地,发送模块1403,还用于接收到源端口号为SFU服务端口号的第五报文之后,向第六节点发送第三节点发现报文,第六节点为第五报文在第一节点上的下一跳,第五报文的发送方为SFU服务器,第三节点发现报文携带有SFU服务器的标识,且第三节点发现报文指示第一节点为第六节点在以SFU服务器为起点的传输路径上的上级节点。处理模块1402,还用于响应于接收到第六节点发送的第三节点发现报文对应的第三节点发现响应报文,确定第六节点支持数据去重。这里,第六节点可以是上述节点36,第五报文可以是上述报文35,第三节点发现报文可以是上述节点发现报文33,第三节点发现响应报文可以是上述节点发现响应报文33。
可选地,接收模块1401,还用于接收第七节点发送的第四节点发现报文,第四节点发现报文携带有SFU服务器的标识,且第四节点发现报文指示第七节点为第一节点在以SFU服务器为起点的传输路径上的下级节点。处理模块1402,还用于根据第四节点发现报文确定第七节点支持数据去重。发送模块1403,还用于向第七节点发送第四节点发现报文对应的第四节点发现响应报文,第四节点发现响应报文指示第一节点支持数据去重。这里,第七节点可以是上述节点37,第四节点发现报文可以是上述节点发现报文34,第四节点发现响应报文可以是上述节点发现响应报文34。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
下面对本申请实施例涉及的基本硬件结构举例说明。
例如,图15是本申请实施例提供的一种通信设备的硬件结构示意图。如图15所示,通信设备1500包括处理器1501和存储器1502,存储器1501与存储器1502通过总线1503连接。图15以处理器1501和存储器1502相互独立说明。可选地,处理器1501和存储器1502集成在一起。该通信设备1500例如可以是网络设备或服务器。
其中,存储器1502用于存储计算机程序,计算机程序包括操作系统和程序代码。存储器1502是各种类型的存储介质,例如只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、电可擦可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)、闪存、光存储器、寄存器、光盘存储、光碟存储、磁盘或者其它磁存储设备。
其中,处理器1501是通用处理器或专用处理器。处理器1501可能是单核处理器或多核处理器。处理器1501包括至少一个电路,以执行本申请实施例提供的上述数据传输方法,例如上述方法实施例中节点11、节点21或节点31执行的步骤。
可选地,通信设备1500还包括网络接口1504,网络接口1504通过总线1503与处理器1501和存储器1502连接。网络接口1504能够实现通信设备1500与其它设备通信。
可选地,通信设备1500还包括输入/输出(input/output,I/O)接口1505,I/O接口1505通过总线1503与处理器1501和存储器1502连接。处理器1501能够通过I/O接口1505接收输入的命令或数据等。I/O接口1505用于通信设备1500连接输入设备,这些输入设备例如是键盘、鼠标等。可选地,在一些可能的场景中,上述网络接口1504和I/O接口1505被统称为通信接口。
可选地,通信设备1500还包括显示器1506,显示器1506通过总线1503与处理器1501和存储器1502连接。显示器1506能够用于显示处理器1501执行上述方法产生的中间结果和/或最终结果等。在一种可能的实现方式中,显示器1506是触控显示屏,以提供人机交互接口。
其中,总线1503是任何类型的,用于实现通信设备1500的内部器件互连的通信总线。例如系统总线。本申请实施例以通信设备1500内部的上述器件通过总线1503互连为例说明,可选地,通信设备1500内部的上述器件采用除了总线1503之外的其他连接方式彼此通信连接,例如通信设备1500内部的上述器件通过通信设备1500内部的逻辑接口互连。
上述器件可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本申请实施例对上述器件的具体实现形式不做限定。
图15所示的通信设备1500仅仅是示例性的,在实现过程中,通信设备1500还可以包括其他组件,本文不再一一列举。图15所示的通信设备1500可以通过执行上述实施例提供的方法的全部或部分步骤来实现数据传输。
本申请实施例还提供了一种数据传输系统,包括:SFU服务器和通信网络中的多个节点。该多个节点包括第一节点和第二节点,第一节点位于SFU服务器与第二节点之间。SFU服务器用于向第一节点发送报文,第一节点用于执行上述方法实施例中节点11执行的步骤,第二节点用于执行上述方法实施例中节点21执行的步骤。
可选地,该多个节点还包括第三节点,第三节点位于第一节点与第二节点之间。第三节点用于执行上述方法实施例中节点31执行的步骤。
本申请实施例还提供了另一种数据传输系统,包括:SFU服务器和通信网络中的第一节点。SFU服务器用于执行上述方法实施例中节点11执行的步骤,第一节点用于执行上述方法实施例中节点21执行的步骤。
可选地,该通信网络还包括第二节点,第二节点位于SFU服务器与第一节点之间。第二节点用于执行上述方法实施例中节点31执行的步骤。
本申请实施例还提供了一种通信节点,包括:处理器和存储器。所述存储器,用于存储计算机程序,所述计算机程序包括程序指令。所述处理器,用于调用所述计算机程序,实现上述方法实施例中节点11、节点21或节点31执行的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述方法实施例中节点11、节点21或节点31执行的步骤。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述方法实施例中节点11、节点21或节点31执行的步骤。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (63)

1.一种数据传输方法,其特征在于,所述方法包括:
第一节点获取发送方为选择性转发单元SFU服务器的第一报文,所述第一节点为所述第一报文的传输路径上支持数据去重的首个节点;
如果所述第一节点向第二节点发送的历史报文中存在目标报文,所述目标报文的载荷部分与所述第一报文的载荷部分具有重复内容,所述第一节点对所述第一报文的载荷部分进行去重处理,得到第二报文,所述第二报文不包括所述重复内容,且所述第二报文携带有去重标记以及对所述重复内容的指示信息,所述去重标记用于指示所述第二报文为去重报文,所述第二节点为所述第一报文在所述第一节点上的下一跳;
所述第一节点向所述第二节点发送所述第二报文。
2.根据权利要求1所述的方法,其特征在于,所述重复内容包括一个或多个重复数据块,所述指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
3.根据权利要求2所述的方法,其特征在于,所述第一节点中存储有数据集合,所述数据集合包括所述第一节点向所述第二节点发送的历史报文的载荷部分,所述方法还包括:
所述第一节点对所述第一报文的载荷部分与所述数据集合中的载荷部分进行内容匹配;
如果所述数据集合中存在与所述第一报文的载荷部分具有重复数据块的目标载荷部分,所述第一节点确定所述历史报文中存在所述目标报文;
所述第一节点对所述第一报文的载荷部分进行去重处理,包括:
针对所述第一报文的载荷部分与所述目标载荷部分之间的每个重复数据块,所述第一节点计算所述重复数据块的哈希值;
所述第一节点去除所述第一报文的载荷部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值以及所述重复数据块在所述第一报文的载荷部分中的位置。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果所述数据集合中不存在与所述第一报文的载荷部分具有重复数据块的载荷部分,所述第一节点确定所述历史报文中不存在所述目标报文;
所述第一节点在所述数据集合中添加所述第一报文的载荷部分。
5.根据权利要求2所述的方法,其特征在于,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于所述第一报文的数据部分。
6.根据权利要求5所述的方法,其特征在于,所述第一节点中存储有采样标签集合,所述采样标签集合包括历史数据块的哈希值,所述历史数据块为对所述第一节点向所述第二节点发送的历史报文的数据部分的预设位置采样得到的数据块;所述方法还包括:
所述第一节点对所述第一报文的数据部分的所述预设位置进行采样,得到采样数据块;
所述第一节点计算所述采样数据块的哈希值;
如果所述采样标签集合中包括所述采样数据块的哈希值,所述第一节点确定所述历史报文中存在所述目标报文;
所述第一节点对所述第一报文的载荷部分进行去重处理,包括:
所述第一节点将哈希值属于所述采样标签集合的所述采样数据块作为重复数据块,去除所述第一报文的数据部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值。
7.根据权利要求6所述的方法,其特征在于,所述预设位置有多个,所述第一节点对所述第一报文的数据部分的所述预设位置采样得到的采样数据块有多个,所述指示还用于指示所述重复数据块在所述第一报文的数据部分中的位置。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
如果所述采样标签集合中不包括所述采样数据块的哈希值,所述第一节点确定所述历史报文中不存在所述目标报文;
所述第一节点在所述采样标签集合中添加所述采样数据块的哈希值。
9.根据权利要求6至8任一所述的方法,其特征在于,所述采样标签集合还包括哈希值所指示的历史数据块,如果所述采样标签集合中包括所述采样数据块的哈希值,所述第一节点确定所述历史报文中存在所述目标报文,包括:
如果所述采样标签集合中包括所述采样数据块的哈希值,所述第一节点对所述采样数据块与所述采样数据块的哈希值所指示的历史数据块进行内容匹配;
当所述采样数据块与所述采样数据块的哈希值所指示的历史数据块的内容相同时,所述第一节点确定所述历史报文中存在所述目标报文。
10.根据权利要求5至9任一所述的方法,其特征在于,所述第一节点中还存储有所述第一节点向所述第二节点发送的历史报文的协议部分;所述重复内容还包括位于所述第一报文的协议部分的协议信息,所述指示信息还包括差异指示,所述差异指示用于指示所述第一报文的协议部分与所述目标报文的协议部分的差异。
11.根据权利要求1至10任一所述的方法,其特征在于,所述第一节点中存储有所述第二节点对应的一个或多个流分组集合,每个所述流分组集合包括流经所述第二节点的多条流的流标识,在所述第一节点获取第一报文之后,所述方法还包括:
如果所述第二节点对应的流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合,所述第一节点判断向所述第二节点发送的目标历史报文中是否存在所述目标报文,所述目标历史报文所属流的流标识属于所述目标流分组集合;
如果所述第二节点对应的所有流分组集合均不包括所述第一报文所属流的流标识,所述第一节点向所述第二节点发送所述第一报文。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述第一节点接收所述第二节点发送的分组信息,所述分组信息包括所述第二节点的节点标识与所述一个或多个流分组集合的对应关系。
13.根据权利要求1至12任一所述的方法,其特征在于,所述第一节点不为所述SFU服务器,所述方法还包括:
所述第一节点接收到目的端口号为SFU服务端口号的第三报文之后,向第三节点发送第一节点发现报文,所述第三节点为所述第三报文在所述第一节点上的下一跳,所述第三报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第三节点在以所述SFU服务器为起点的传输路径上的下级节点;
响应于未接收到所述第三节点发送的所述第一节点发现报文对应的第一节点发现响应报文,所述第一节点确定所述第一节点为以所述SFU服务器为起点的传输路径上支持数据去重的首个节点。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述第一节点根据所述第三报文生成所述第一节点发现报文,所述第一节点发现报文的报文头与所述第三报文的报文头相同,所述第一节点发现报文的载荷部分携带有对所述第一节点发现报文的报文类型的指示。
15.根据权利要求1至14任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第四节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第四节点为所述第一节点在以所述SFU服务器为起点的传输路径上的下级节点;
所述第一节点根据所述第二节点发现报文确定所述第四节点支持数据去重,并向所述第四节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
16.根据权利要求1至15任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收到源端口号为SFU服务端口号的第四报文之后,向第五节点发送第三节点发现报文,所述第五节点为所述第四报文在所述第一节点上的下一跳,所述第四报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第五节点在以所述SFU服务器为起点的传输路径上的上级节点;
响应于接收到所述第五节点发送的所述第三节点发现报文对应的第三节点发现响应报文,所述第一节点确定所述第五节点支持数据去重。
17.根据权利要求1至16任一所述的方法,其特征在于,所述方法还包括:
如果所述第一节点向所述第二节点发送的历史报文中不存在所述目标报文,所述第一节点向所述第二节点发送所述第一报文。
18.一种数据传输方法,其特征在于,所述方法包括:
第一节点接收第二节点发送的第一报文,所述第一报文的发送方为选择性转发单元SFU服务器,所述第一报文携带有去重标记以及对重复内容的指示信息,所述去重标记用于指示所述第一报文为去重报文,所述第一节点为所述第一报文的传输路径上支持数据去重的最后一个节点;
所述第一节点基于所述去重标记确定所述第一报文为去重报文;
所述第一节点根据所述指示信息从数据集合中获取所述重复内容,所述数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分的至少部分内容;
所述第一节点根据所述重复内容对所述第一报文的载荷部分进行去重恢复处理,得到第二报文,所述第二报文的载荷部分包括所述重复内容;
所述第一节点向第三节点发送所述第二报文,所述第三节点为所述第一报文在所述第一节点上的下一跳。
19.根据权利要求18所述的方法,其特征在于,所述重复内容包括一个或多个重复数据块,所述指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
20.根据权利要求19所述的方法,其特征在于,每个所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的载荷部分中的位置,所述数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分;
所述第一节点根据所述指示信息从数据集合中获取所述重复内容,包括:
对于所述指示信息中的每个指示,所述第一节点根据所述指示所指示的位置,获取所述数据集合中的载荷部分的所述位置的待匹配数据块;
所述第一节点计算所述待匹配数据块的哈希值;
所述第一节点将哈希值与所述指示所指示的哈希值一致的待匹配数据块,确定为所述指示对应的重复数据块。
21.根据权利要求19所述的方法,其特征在于,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于数据部分。
22.根据权利要求21所述的方法,其特征在于,所述数据集合包括历史数据块的哈希值与所述历史数据块的对应关系,所述历史数据块为对所述第一节点接收到的来自所述第二节点的历史报文的数据部分的预设位置采样得到的数据块;
所述第一节点根据所述指示信息从数据集合中获取所述重复内容,包括:
所述第一节点将所述数据集合中与所述指示信息中的指示所指示的哈希值对应的历史数据块,确定为所述指示对应的重复数据块。
23.根据权利要求22所述的方法,其特征在于,所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的数据部分中的位置;
所述第一节点根据所述重复内容对所述第一报文的载荷部分进行去重恢复处理,包括:
对于所述指示信息中的每个指示,所述第一节点在所述第一报文的数据部分中所述指示所指示的位置,添加所述指示对应的重复数据块。
24.根据权利要求21至23任一所述的方法,其特征在于,所述重复内容还包括位于协议部分的协议信息,所述指示信息还包括差异指示,所述差异指示用于指示所述第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,所述目标报文为所述第一节点接收到的来自所述第二节点的历史报文中数据部分与所述原始报文的数据部分具有所述一个或多个重复数据块的历史报文;所述数据集合还包括所述历史数据块所属报文的协议部分;
所述第一节点根据所述指示信息从数据集合中获取所述重复内容,还包括:
所述第一节点从所述数据集合中获取所述一个或多个重复数据块所属的所述目标报文的协议部分;
所述第一节点根据所述重复内容对所述第一报文的载荷部分进行去重恢复处理,包括:
所述第一节点根据所述差异指示修改所述目标报文的协议部分,并将修改后的所述目标报文的协议部分作为所述第二报文的协议部分。
25.根据权利要求18至24任一所述的方法,其特征在于,所述去重标记位于所述第一报文的载荷部分,所述第一节点中存储有一个或多个流分组集合,每个所述流分组集合包括流经所述第一节点的多条流的流标识;
在所述第一节点基于所述去重标记确定所述第一报文为去重报文之前,所述方法还包括:
所述第一节点确定所述一个或多个流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合;
所述第一节点解析所述第一报文的载荷部分,得到所述去重标记。
26.根据权利要求25所述的方法,其特征在于,所述第一节点根据所述指示信息从数据集合中获取所述重复内容,包括:
所述第一节点根据所述指示信息,从所述数据集合中的目标历史报文的载荷内容中获取所述重复内容,所述目标历史报文所属流的流标识属于所述目标流分组集合。
27.根据权利要求25或26所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第三报文,所述第三报文所属流的流标识不属于任一所述流分组集合;
所述第一节点转发所述第三报文。
28.根据权利要求25至27任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第四报文,所述第四报文所属流的流标识属于所述流分组集合;
所述第一节点解析所述第四报文的载荷部分,确定所述第四报文的载荷部分未携带有所述去重标记;
所述第一节点在所述数据集合中添加所述第四报文的载荷部分的至少部分内容,并转发所述第四报文。
29.根据权利要求25至28任一所述的方法,其特征在于,所述方法还包括:
所述第一节点将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一流分组集合中,所述不同流的发送方均为所述SFU服务器。
30.根据权利要求25至29任一所述的方法,其特征在于,所述方法还包括:
所述第一节点向所述第二节点发送分组信息,所述分组信息包括所述第一节点的节点标识与所述一个或多个流分组集合的对应关系。
31.根据权利要求18至30任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收到目的端口号为SFU服务端口号的第五报文之后,向第四节点发送第一节点发现报文,所述第四节点为所述第五报文在所述第一节点上的下一跳,所述第五报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第四节点在以所述SFU服务器为起点的传输路径上的下级节点;
响应于接收到所述第四节点发送的所述第一节点发现报文对应的第一节点发现响应报文,所述第一节点确定所述第四节点支持数据去重。
32.根据权利要求31所述的方法,其特征在于,所述方法还包括:
所述第一节点根据所述第五报文生成所述第一节点发现报文,所述第一节点发现报文的报文头与所述第五报文的报文头相同,所述第一节点发现报文的载荷部分携带有对所述第一节点发现报文的报文类型的指示。
33.根据权利要求18至32任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第五节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第五节点为所述第一节点在以所述SFU服务器为起点的传输路径上的上级节点;
所述第一节点根据所述第二节点发现报文确定所述第五节点支持数据去重,并向所述第五节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
34.根据权利要求18至33任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收到源端口号为SFU服务端口号的第六报文之后,向第六节点发送第三节点发现报文,所述第六节点为所述第六报文在所述第一节点上的下一跳,所述第六报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第六节点在以所述SFU服务器为起点的传输路径上的上级节点;
响应于未接收到所述第六节点发送的所述第三节点发现报文对应的第三节点发现响应报文,所述第一节点确定所述第一节点为以所述SFU服务器为起点的传输路径上支持数据去重的最后一个节点。
35.一种数据传输方法,其特征在于,所述方法包括:
第一节点接收第二节点发送的第一报文,所述第一报文的发送方为选择性转发单元SFU服务器,所述第一节点为所述第一报文的传输路径上支持数据去重的中间节点;
如果所述第一报文为未去重报文,且所述第一节点向第三节点发送的历史报文中存在第一原始报文,所述第一原始报文的载荷部分与所述第一报文的载荷部分具有第一重复内容,所述第一节点对所述第一报文的载荷部分进行去重处理,得到第二报文,所述第二报文不包括所述第一重复内容,且所述第二报文携带有去重标记以及对所述第一重复内容的第一指示信息,所述去重标记用于指示所述第二报文为去重报文,所述第三节点为所述第一报文在所述第一节点上的下一跳;
所述第一节点向所述第三节点发送所述第二报文。
36.根据权利要求35所述的方法,其特征在于,所述方法还包括:
如果所述第一报文为未去重报文,且所述第一节点向所述第三节点发送的历史报文中不存在所述第一原始报文,所述第一节点向所述第三节点发送所述第一报文。
37.根据权利要求35或36所述的方法,其特征在于,所述第一重复内容包括一个或多个重复数据块,所述第一指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
38.根据权利要求37所述的方法,其特征在于,所述第一节点中存储有第一数据集合,所述第一数据集合包括所述第一节点向所述第三节点发送的历史报文的载荷部分,所述方法还包括:
所述第一节点对所述第一报文的载荷部分与所述第一数据集合中的载荷部分进行内容匹配;
如果所述第一数据集合中存在与所述第一报文的载荷部分具有重复数据块的目标载荷部分,所述第一节点确定所述历史报文中存在所述第一原始报文;
如果所述第一数据集合中不存在与所述第一报文的载荷部分具有重复数据块的载荷部分,所述第一节点确定所述历史报文中不存在所述第一原始报文,并且,所述第一节点在所述第一数据集合中添加所述第一报文的载荷部分。
39.根据权利要求38所述的方法,其特征在于,所述第一数据集合包括所述目标载荷部分,所述第一节点对所述第一报文的载荷部分进行去重处理,包括:
针对所述第一报文的载荷部分与所述目标载荷部分之间的每个重复数据块,所述第一节点计算所述重复数据块的哈希值;
所述第一节点去除所述第一报文的载荷部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值以及所述重复数据块在所述第一报文的载荷部分中的位置。
40.根据权利要求37所述的方法,其特征在于,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于所述第一报文的数据部分;所述第一节点中存储有采样标签集合,所述采样标签集合包括历史数据块的哈希值,所述历史数据块为对所述第一节点向所述第三节点发送的历史报文的数据部分的预设位置采样得到的数据块;所述方法还包括:
所述第一节点对所述第一报文的数据部分的所述预设位置进行采样,得到采样数据块;
所述第一节点计算所述采样数据块的哈希值;
如果所述采样标签集合中包括所述采样数据块的哈希值,所述第一节点确定所述历史报文中存在所述第一原始报文;
如果所述采样标签集合中不包括所述采样数据块的哈希值,所述第一节点确定所述历史报文中不存在所述第一原始报文,并且,所述第一节点在所述采样标签集合中添加所述采样数据块的哈希值。
41.根据权利要求40所述的方法,其特征在于,所述采样标签集合中包括所述采样数据块的哈希值,所述第一节点对所述第一报文的载荷部分进行去重处理,包括:
所述第一节点将哈希值属于所述采样标签集合的所述采样数据块作为重复数据块,去除所述第一报文的数据部分的所述重复数据块,并在所述第一报文的载荷部分添加所述重复数据块对应的指示,所述指示用于指示所述重复数据块的哈希值。
42.根据权利要求41所述的方法,其特征在于,所述第一节点中还存储有所述第一节点向所述第三节点发送的历史报文的协议部分;所述第一重复内容还包括位于所述第一报文的协议部分的协议信息,所述第一指示信息还包括差异指示,所述差异指示用于指示所述第一报文的协议部分与所述第一原始报文的协议部分的差异。
43.根据权利要求35所述的方法,其特征在于,所述方法还包括:
如果所述第一报文为去重报文,所述第一报文携带有对第二重复内容的第二指示信息,且所述第一节点向所述第三节点发送的历史报文中存在第二原始报文,所述第二原始报文的载荷部分包括所述第二重复内容,所述第一节点向所述第三节点发送所述第一报文。
44.根据权利要求35所述的方法,其特征在于,所述方法还包括:
如果所述第一报文为去重报文,所述第一报文携带有对第二重复内容的第二指示信息,且所述第一节点向所述第三节点发送的历史报文中不存在第二原始报文,所述第二原始报文的载荷部分包括所述第二重复内容,所述第一节点根据所述第二指示信息从第二数据集合中获取所述第二重复内容,所述第二数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分的至少部分内容;
所述第一节点根据所述第二重复内容对所述第一报文的载荷部分进行去重恢复处理,得到第三报文,所述第三报文的载荷部分包括所述第二重复内容;
所述第一节点向所述第三节点发送所述第三报文。
45.根据权利要求44所述的方法,其特征在于,所述第二重复内容包括一个或多个重复数据块,所述第二指示信息包括一个或多个指示,所述一个或多个指示与所述一个或多个重复数据块一一对应,每个所述指示用于指示对应的重复数据块的哈希值。
46.根据权利要求45所述的方法,其特征在于,每个所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的载荷部分中的位置,所述第二数据集合包括所述第一节点接收到的来自所述第二节点的历史报文的载荷部分;
所述第一节点根据所述第二指示信息从第二数据集合中获取所述第二重复内容,包括:
对于所述第二指示信息中的每个指示,所述第一节点根据所述指示所指示的位置,获取所述第二数据集合中的载荷部分的所述位置的待匹配数据块;
所述第一节点计算所述待匹配数据块的哈希值;
所述第一节点将哈希值与所述指示所指示的哈希值一致的待匹配数据块,确定为所述指示对应的重复数据块。
47.根据权利要求45所述的方法,其特征在于,所述载荷部分包括协议部分和数据部分,所述一个或多个重复数据块位于数据部分;所述第二数据集合包括历史数据块的哈希值与所述历史数据块的对应关系,所述历史数据块为对所述第一节点接收到的来自所述第二节点的历史报文的数据部分的预设位置采样得到的数据块;
所述第一节点根据所述第二指示信息从第二数据集合中获取所述第二重复内容,包括:
所述第一节点将所述第二数据集合中与所述第二指示信息中的指示所指示的哈希值对应的历史数据块,确定为所述指示对应的重复数据块。
48.根据权利要求47所述的方法,其特征在于,所述指示还用于指示对应的重复数据块在所述第一报文对应的原始报文的数据部分中的位置;
所述第一节点根据所述第二重复内容对所述第一报文的载荷部分进行去重恢复处理,包括:
对于所述第二指示信息中的每个指示,所述第一节点在所述第一报文的数据部分中所述指示所指示的位置,添加所述指示对应的重复数据块。
49.根据权利要求47或48所述的方法,其特征在于,所述第二重复内容还包括位于协议部分的协议信息,所述第二指示信息还包括差异指示,所述差异指示用于指示所述第一报文对应的原始报文的协议部分与目标报文的协议部分的差异,所述目标报文为所述第一节点接收到的来自所述第二节点的历史报文中数据部分与所述原始报文的数据部分具有所述一个或多个重复数据块的历史报文;所述第二数据集合还包括所述历史数据块所属报文的协议部分;
所述第一节点根据所述第二指示信息从第二数据集合中获取所述第二重复内容,还包括:
所述第一节点从所述第二数据集合中获取所述一个或多个重复数据块所属的所述目标报文的协议部分;
所述第一节点根据所述第二重复内容对所述第一报文的载荷部分进行去重恢复处理,包括:
所述第一节点根据所述差异指示修改所述目标报文的协议部分,并将修改后的所述目标报文的协议部分作为所述第三报文的协议部分。
50.根据权利要求35至49任一所述的方法,其特征在于,所述第一节点中存储有一个或多个本地流分组集合,每个所述本地流分组集合包括流经所述第一节点的多条流的流标识;所述方法还包括:
所述第一节点在确定所述一个或多个本地流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合之后,解析所述第一报文的载荷部分;
如果所述第一报文的载荷部分携带有去重标记,所述第一节点确定所述第一报文为去重报文;
如果所述第一报文的载荷部分未携带有去重标记,所述第一节点确定所述第一报文为未去重报文。
51.根据权利要求50所述的方法,其特征在于,所述方法还包括:
所述第一节点将接收到的属于不同流的多个报文中,载荷部分存在重复内容的报文所属流的流标识添加至同一本地流分组集合中,所述不同流的发送方均为所述SFU服务器。
52.根据权利要求50或51所述的方法,其特征在于,所述方法还包括:
所述第一节点向所述第二节点发送第一分组信息,所述第一分组信息包括所述第一节点的节点标识与所述一个或多个本地流分组集合的对应关系。
53.根据权利要求35至52任一所述的方法,其特征在于,所述第一节点中存储有所述第三节点对应的一个或多个下级流分组集合,每个所述下级流分组集合包括流经所述第三节点的多条流的流标识,在所述第一节点接收第二节点发送的第一报文之后,所述方法还包括:
如果所述第三节点对应的下级流分组集合中存在包括所述第一报文所属流的流标识的目标流分组集合,所述第一节点判断向所述第三节点发送的目标历史报文中是否存在载荷部分与所述第一报文的载荷部分具有重复内容的报文,所述目标历史报文所属流的流标识属于所述目标流分组集合;
如果所述第三节点对应的所有下级流分组集合均不包括所述第一报文所属流的流标识,所述第一节点向所述第三节点发送所述第一报文。
54.根据权利要求53所述的方法,其特征在于,所述方法还包括:
所述第一节点接收所述第三节点发送的第二分组信息,所述第二分组信息包括所述第三节点的节点标识与所述一个或多个下级流分组集合的对应关系。
55.根据权利要求35至54任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收到目的端口号为SFU服务端口号的第四报文之后,向第四节点发送第一节点发现报文,所述第四节点为所述第四报文在所述第一节点上的下一跳,所述第四报文的目的地为所述SFU服务器,所述第一节点发现报文携带有所述SFU服务器的标识,且所述第一节点发现报文指示所述第一节点为所述第四节点在以所述SFU服务器为起点的传输路径上的下级节点;
响应于接收到所述第四节点发送的所述第一节点发现报文对应的第一节点发现响应报文,所述第一节点确定所述第四节点支持数据去重。
56.根据权利要求35至55任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第五节点发送的第二节点发现报文,所述第二节点发现报文携带有所述SFU服务器的标识,且所述第二节点发现报文指示所述第五节点为所述第一节点在以所述SFU服务器为起点的传输路径上的上级节点;
所述第一节点根据所述第二节点发现报文确定所述第五节点支持数据去重,并向所述第五节点发送所述第二节点发现报文对应的第二节点发现响应报文,所述第二节点发现响应报文指示所述第一节点支持数据去重。
57.根据权利要求35至56任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收到源端口号为SFU服务端口号的第五报文之后,向第六节点发送第三节点发现报文,所述第六节点为所述第五报文在所述第一节点上的下一跳,所述第五报文的发送方为所述SFU服务器,所述第三节点发现报文携带有所述SFU服务器的标识,且所述第三节点发现报文指示所述第一节点为所述第六节点在以所述SFU服务器为起点的传输路径上的上级节点;
响应于接收到所述第六节点发送的所述第三节点发现报文对应的第三节点发现响应报文,所述第一节点确定所述第六节点支持数据去重。
58.根据权利要求35至57任一所述的方法,其特征在于,所述方法还包括:
所述第一节点接收第七节点发送的第四节点发现报文,所述第四节点发现报文携带有所述SFU服务器的标识,且所述第四节点发现报文指示所述第七节点为所述第一节点在以所述SFU服务器为起点的传输路径上的下级节点;
所述第一节点根据所述第四节点发现报文确定所述第七节点支持数据去重,并向所述第七节点发送所述第四节点发现报文对应的第四节点发现响应报文,所述第四节点发现响应报文指示所述第一节点支持数据去重。
59.一种数据传输系统,其特征在于,包括:选择性转发单元SFU服务器和通信网络中的多个节点,所述多个节点包括第一节点和第二节点,所述第一节点位于所述SFU服务器与所述第二节点之间;
所述SFU服务器用于向所述第一节点发送报文,所述第一节点用于执行如权利要求1至17任一所述的方法,所述第二节点用于执行如权利要求18至34任一所述的方法。
60.根据权利要求59所述的系统,其特征在于,所述多个节点还包括第三节点,所述第三节点位于所述第一节点与所述第二节点之间,所述第三节点用于执行如权利要求35至58任一所述的方法。
61.一种数据传输系统,其特征在于,包括:选择性转发单元SFU服务器和通信网络中的第一节点;
所述SFU服务器用于执行如权利要求1至17任一所述的方法,所述第一节点用于执行如权利要求18至34任一所述的方法。
62.根据权利要求61所述的系统,其特征在于,所述通信网络还包括第二节点,所述第二节点位于所述SFU服务器与所述第一节点之间,所述第二节点用于执行如权利要求35至58任一所述的方法。
63.一种通信节点,其特征在于,包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如权利要求1至58任一所述的方法。
CN202211643989.9A 2022-10-10 2022-12-20 数据传输方法、装置及系统 Pending CN117880200A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2023/103315 WO2024078018A1 (zh) 2022-10-10 2023-06-28 数据传输方法、装置及系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211233819 2022-10-10
CN2022112338193 2022-10-10

Publications (1)

Publication Number Publication Date
CN117880200A true CN117880200A (zh) 2024-04-12

Family

ID=90590600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211643989.9A Pending CN117880200A (zh) 2022-10-10 2022-12-20 数据传输方法、装置及系统

Country Status (2)

Country Link
CN (1) CN117880200A (zh)
WO (1) WO2024078018A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2007078A1 (en) * 2007-06-19 2008-12-24 Panasonic Corporation Header size reduction of data packets
US20200167091A1 (en) * 2018-11-27 2020-05-28 Commvault Systems, Inc. Using interoperability between components of a data storage management system and appliances for data storage and deduplication to generate secondary and tertiary copies
CN111324774B (zh) * 2020-02-26 2021-08-31 腾讯科技(深圳)有限公司 一种视频去重方法和装置
CN113709510A (zh) * 2021-08-06 2021-11-26 联想(北京)有限公司 高速率数据实时传输方法及装置、设备、存储介质
CN114244781B (zh) * 2021-12-20 2023-12-22 苏州盛科通信股份有限公司 一种基于dpdk的报文去重处理方法和装置

Also Published As

Publication number Publication date
WO2024078018A1 (zh) 2024-04-18

Similar Documents

Publication Publication Date Title
US11082342B2 (en) System and method to facilitate content forwarding using Bit Index Explicit Replication (BIER) in an Information-Centric Networking (ICN) environment
JP4564228B2 (ja) ネットワーク通信データをオンラインで透過的にクロスセッションで符号化及び伝送するための構成及び方法
US10778464B2 (en) NSH encapsulation for traffic steering establishing a tunnel between virtual extensible local area network (VxLAN) tunnel end points (VTEPS) using a NSH encapsulation header comprising a VxLAN header whose VNI field has been replaced by an NSH shim
US9847934B2 (en) Reducing packet reordering in flow-based networks
US8023419B2 (en) Remote monitoring of real-time internet protocol media streams
US9654303B2 (en) Method and apparatus for emulating network devices
US8817792B2 (en) Data forwarding method, data processing method, system and relevant devices
US20060159091A1 (en) Active multicast information protocol
US8009683B2 (en) IP network system
CN110224935B (zh) 一种处理组播数据报文的方法及装置
CN108141387B (zh) 对于分组报头采样的长度控制
WO2019127134A1 (zh) 一种数据传送的方法和虚拟交换机
CN106656615B (zh) 一种基于tracert命令的报文处理方法及装置
CN109275044B (zh) 一种实现ip组播流灵活调度的系统
CN113489652A (zh) 一种数据流放大方法、装置、汇聚分流器以及存储介质
JP2007058858A (ja) ネットワーク上でコンテンツ情報を要請及び提供する装置及びその方法
CN110115011B (zh) 组播业务处理方法及接入设备
CN117880200A (zh) 数据传输方法、装置及系统
US8149832B2 (en) Methods, systems, and computer program products for pushing and/or popping multiple multiprotocol label switching (MPLS) labels/shim headers at a single node
WO2017118428A1 (zh) 实现报文检错的方法及装置
CN112910774B (zh) 通信方法、系统以及网络转发设备
CN111600798B (zh) 一种发送和获取断言报文的方法和设备
Ali et al. Performance comparison of video multicasting over Asynchronous Transfer Mode (ATM) & Multiprotocol Label Switching (MPLS) networks
CN108632149B (zh) 卫星帧中继网组播方法和路由装置
US20130128774A1 (en) System and method for distributed internet group management protocol processing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication