一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据传输方法和装置与流程

2022-03-16 02:07:03 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种数据传输方法和装置。


背景技术:

2.数据中心作为面向应用的综合业务平台和未来云计算的核心基础架构,对网络设备的交换架构提出了更全面、更苛刻的要求。例如,期望交换架构向更大容量和带宽、更精细的服务质量(quality of service,qos)保证、更高的可靠性和容错性能等方向发展,以满足不断涌现的各种新型业务和应用。
3.目前数据中心普遍使用clos网络拓扑进行组网,clos网络中发送到一个目的地的数据流通常存在多条链路(或称为路径)。传统的路由技术,发往同一目的地址的数据流只能利用该多条链路中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下链路相互切换需要一定时间。而使用等价路由(equal-costmultipath routing,ecmp)技术可以在网络环境下同时使用该多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。ecmp最大的特点是实现了等价情况下,多路径负载均衡和链路备份的目的,但是,上述基于流级别的负载均衡,由于哈希本身具有随机性,每个数据流的大小、速率等也具有随机性,对于多个等价路径可能出现流量分布不均,负载均衡效果不好的问题。基于此,相关技术中提出了采用报文(packet)级别的负载均衡,针对数据流中的每个报文采用随机(random)或者轮询调度(round robin)等方式为报文选择一条链路。
4.基于报文级别的负载均衡,由于粒度很细,负载均衡效果好,但是该方式可能会造成大量的报文乱序,如果接收端处理报文乱序的能力不足,会导致业务性能下降。所以,现有的负载均衡方式,均无法满足需求。


技术实现要素:

5.本技术实施例提供一种数据传输方法和装置,能够基于报文组进行负载均衡,负载均衡效果好,且能够实现报文保序。
6.本技术提供一种数据传输方法,转发设备接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同。所述转发设备根据所述第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路,通过所述目标链路将所述第一报文转发给下一个转发设备或者接收设备。
7.通过对数据流中的报文进行分组,为同一个报文组内的报文添加相同的组标识,转发设备根据报文组标识和数据流的标识信息从多条链路中为报文选路,从而实现了基于报文组的负载均衡,该方案中同一个报文组内的报文在同一条链路上传输,不会出现乱序,不需要接收端进行乱序重排,降低了接收端的要求。
8.一种可能的实现方式中,所述转发设备对所述第一报文中包括的组标识和第一数
据流的标识信息进行哈希运算得到哈希值,根据所述哈希值从所述多条链路中选择所述目标链路。该方式中,转发设备通过对报文包括的组标识和数据流的标识信息进行哈希运算,为报文选路,不需要额外的流表信息即可实现报文转发和保序。
9.另一种可能的实现方式中,所述转发设备对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值之前,根据所述第一报文中包括的数据流的标识信息查询所述第一数据流的流表,所述第一数据流的流表中包括已经转发的报文的组标识和链路信息,所述转发设备将所述第一报文中包括的组标识与所述第一数据流的流表进行匹配。如果匹配成功,则所述转发设备通过匹配成功的已转发的报文的链路信息对应的链路对所述第一报文进行转发。如果匹配失败,所述转发设备对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据所述哈希值从所述多条链路中选择所述目标链路。该方式中对每个报文组中的第一个报文通过哈希运算进行选路,该报文组中的其他报文根据报文中携带的组标识和流表,为其他报文选择与第一个报文选择相同的链路进行转发。该方式建立的流表简单,流表中只需要保存每个报文组的组标识以及报文组的链路。
10.所述转发设备对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值之后,所述转发设备根据所述第一报文中包括的组标识和所述目标链路更新所述第一数据流的流表。
11.本技术第二方面提供一种数据传输方法,发送设备确定第一数据流中的第一报文所属的报文组,将所述第一报文所属的报文组的组标识添加到所述第一报文中,所述第一报文中还包括所述第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同,所述发送设备将所述第一报文发送给转发设备。
12.发送设备通过对数据流中的报文进行分组,并在报文中携带组标识,使得转发设备能够根据报文携带的组标识和数据流的标识信息为报文选路,实现负载均衡。
13.一种可能的实现方式中,所述发送设备将所述第一报文所属的报文组的组标识添加到所述第一报文中之前,所述发送设备生成所述第一报文所属的报文组的组标识。
14.一种可能的实现方式中,所述发送设备根据前一个报文组的组标识生成所述第一报文所属的报文组的组标识,其中,所述第一数据流中的第一个报文组的组标识在所述第一数据流初始化过程中生成。
15.一种可能的实现方式中,所述发送设备根据前一个报文组的组标识生成所述第一报文所属的报文组的组标识,可以为:所述发送设备将所述前一个报文组的组标识增加、减少或者乘以预设值得到所述第一报文所属的报文组的组标识。
16.本技术第三方面提供一种数据传输方法,接收设备接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或者等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同,所述接收设备根据所述第一报文的组标识和序列号,确定所述第一报文所属的报文组内是否发生丢包或乱序。
17.该方案中同一个报文组内的报文携带相同的组标识,转发设备根据组标识为报文选路,从而保证同一个报文组内的报文在同一条链路上传输,不会出现乱序,不需要接收端
进行乱序重排,降低了接收端的要求。
18.一种可能的实现方式中,还包括:所述接收设备发送所述第一报文的响应报文,所述第一报文的响应报文中包括所述第一报文所属的报文组的组标识。
19.在本技术第一方面至第三方面中,一种可能的实现方式中,所述第一数据流中的不同报文组内的报文的序列号无关。
20.在本技术第一方面至第三方面中,一种可能的实现方式中,所述第一报文中还包括有效位,所述有效位用于指示所述第一报文中的组标识是否有效。
21.在本技术第一方面至第三方面中,一种可能的实现方式中,所述第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息;
22.所述五元组信息包括源网际协议ip地址、目的ip地址、源端口、目的端口和协议号;
23.所述四元组信息包括源ip地址、目的ip地址、源端口和目的端口;
24.所述三元组信息包括源ip地址、源端口和协议号;
25.或者,所述第一数据流的标识信息包括所述五元组信息、四元组信息或者三元组信息中的任意一个,以及以下信息中的一个或多个:源媒体接入控制mac地址、目的mac地址、源接口和虚拟局域网vlan标识。
26.在本技术第一方面至第三方面中,一种可能的实现方式中,所述第一报文为通过以太网使用远程直接内存访问roce协议报文,所述组标识携带在所述第一报文的基本传输头的保留字段中。
27.在本技术第一方面至第三方面中,一种可能的实现方式中,所述第一报文为传输控制协议tcp报文,所述组标识携带在所述第一报文的保留位和/或选项字段中。
28.本技术第四方面提供一种转发设备,包括:
29.接收模块,用于接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
30.选路模块,用于根据所述第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路;
31.发送模块,用于通过所述目标链路将所述第一报文转发给下一个转发设备或者接收设备。
32.一种可能的实现方式中,所述选路模块具体用于:
33.对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值;
34.根据所述哈希值从所述多条链路中选择所述目标链路。
35.一种可能的实现方式中,还包括:
36.查询模块,用于根据所述第一报文中包括的数据流的标识信息查询所述第一数据流的流表,所述第一数据流的流表中包括已经转发的报文的组标识和链路信息;
37.匹配模块,用于将所述第一报文中包括的组标识与所述第一数据流的流表进行匹配;
38.如果匹配成功,所述发送模块还用于通过匹配成功的已转发的报文的链路信息对应的链路对所述第一报文进行转发;
39.所述选路模块具体用于:
40.如果匹配失败,则对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值;
41.更新模块,用于根据所述第一报文中包括的组标识和所述目标链路更新所述第一数据流的流表。
42.本技术第五方面提供一种发送设备,包括:
43.确定模块,用于确定第一数据流中的第一报文所属的报文组;
44.添加模块,用于将所述第一报文所属的报文组的组标识添加到所述第一报文中,所述第一报文中还包括所述第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
45.发送模块,用于将所述第一报文发送给转发设备。
46.一种可能的实现方式中,还包括:
47.生成模块,用于生成所述第一报文所属的报文组的组标识。
48.一种可能的实现方式中,所述生成模块具体用于:
49.根据前一个报文组的组标识生成所述第一报文所属的报文组的组标识,其中,所述第一数据流中的第一个报文组的组标识在所述第一数据流初始化过程中生成。
50.一种可能的实现方式中,所述生成模块具体用于:
51.将所述前一个报文组的组标识增加、减少或者乘以预设值得到所述第一报文所属的报文组的组标识。
52.本技术第六方面提供一种接收设备,包括:
53.接收模块,用于接收设备接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或者等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
54.确定模块,用于根据所述第一报文的组标识和序列号,确定所述第一报文所属的报文组内是否发生丢包或乱序。
55.一种可能的实现方式中,还包括:
56.发送模块,用于发送所述第一报文的响应报文,所述第一报文的响应报文中包括所述第一报文所属的报文组的组标识。
57.在本技术第四方面至第六方面中,一种可能的实现方式中,所述第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息;
58.所述五元组信息包括源网际协议ip地址、目的ip地址、源端口、目的端口和协议号;
59.所述四元组信息包括源ip地址、目的ip地址、源端口和目的端口;
60.所述三元组信息包括源ip地址、源端口和协议号;
61.或者,所述第一数据流的标识信息包括所述五元组信息、四元组信息或者三元组
信息中的任意一个,以及以下信息中的一个或多个:源媒体接入控制mac地址、目的mac地址、源接口和虚拟局域网vlan标识。
62.在本技术第四方面至第六方面中,一种可能的实现方式中,所述第一数据流中的不同报文组内的报文序列号无关。
63.在本技术第四方面至第六方面中,一种可能的实现方式中,所述第一报文中还包括有效位,所述有效位用于指示所述报文中的组标识是否有效。
64.在本技术第四方面至第六方面中,一种可能的实现方式中,所述第一报文为通过以太网使用远程直接内存访问roce报文,所述组标识携带在所述第一报文的基本传输头的保留字段中。
65.在本技术第四方面至第六方面中,一种可能的实现方式中,所述第一报文为传输控制协议tcp报文,所述组标识携带在所述第一报文的保留位和/或选项字段中。
66.本技术第七方面提供一种转发设备,包括处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述转发设备执行如本技术第一方面以及第一方面的任一可能实现方式提供的方法。
67.本技术第九方面提供一种发送设备,包括处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述发送设备执行如本技术第二方面以及第二方面的任一可能实现方式提供的方法。
68.本技术第十方面提供一种接收设备,包括处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述接收设备执行如本技术第三方面以及第三方面的任一可能实现方式提供的方法。
69.本技术第十一方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如本技术第一方面至第三方面任一可能实现方式提供的方法。
70.本技术第十二方面提供一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被执行时,使得计算机执行如本技术第一方面至第三方面任一可能实现方式提供的方法。
71.本技术第十三方面提供一种芯片上系统或系统芯片,所述芯片上系统或系统芯片可应用于服务器,所述芯片上系统或系统芯片包括:至少一个通信接口,至少一个处理器,至少一个存储器,所述通信接口、存储器和处理器通过总线互联,所述处理器通过执行所述存储器中存储的指令,使得所述服务器可执行如本技术第二方面或者第三方面任一可能实现方式提供的方法。
72.本技术第十四方面提供一种芯片上系统或系统芯片,所述芯片上系统或系统芯片可应用于转发设备,所述芯片上系统或系统芯片包括:至少一个通信接口,至少一个处理器,至少一个存储器,所述通信接口、存储器和处理器通过总线互联,所述处理器通过执行所述存储器中存储的指令,使得所述转发设备执行如本技术第二方面或者第三方面任一可能实现方式提供的方法。
73.本技术实施例提供的数据传输方法和装置,第一服务器在发送数据流时,根据报文的保序需求对数据流中的报文进行分组,并为同一个报文组内的报文添加组标识,同一个报文组内的报文需要保序,不同报文组之间不需要保序,转发设备(可以是交换机)接收到报文后,根据报文中包括的组标识和报文所属的数据流的标识信息从多条链路中选择一条目标链路,通过该目标链路将报文转发给接收设备。第二服务器接收到报文后,根据报文的组标识和序列号,确定报文所属的报文组内是否发生丢包或乱序。该方案中同一个报文组内的报文在同一条链路上传输,不会出现乱序,不需要作为接收端的服务器进行乱序重排,降低了接收端的要求。并且,该方案中通过在报文中添加组标识,转发设备可以根据组标识和数据流的标识选路,不需要转发设备保存流表,实现方案更加简单。
附图说明
74.图1为本技术实施例提供的数据中心网络的结构示意图;
75.图2为报文级别的负载均衡的示意图;
76.图3为flowlet级别的负载均衡的示意图;
77.图4为本技术实施例提供的一种数据传输方法的流程图;
78.图5为第一数据流的分组示意图;
79.图6为roce v2报文的帧结构示意图;
80.图7为tcp报文的帧结构示意图;
81.图8为本技术实施例二提供的数据传输方法的流程图;
82.图9为报文转发示意图;
83.图10为本技术实施例三提供的数据传输方法的流程图;
84.图11为本技术实施例四提供的数据传输方法的流程图;
85.图12为本技术实施例五提供的转发设备的结构示意图;
86.图13为本技术实施例六提供的发送设备的结构示意图;
87.图14为本技术实施例七提供的接收设备的结构示意图;
88.图15为本技术实施例八提供的转发设备的一种结构示意图;
89.图16为本技术实施例九提供的服务器的结构示意图。
具体实施方式
90.以下,对本技术中的部分用语进行解释说明,以便于本领域技术人员理解。
91.1)本技术中的单元(或者模块)是指功能单元或逻辑单元。其可以为软件形式,通过处理器执行程序代码来实现其功能;也可以为硬件形式。
92.2)“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“以上”或“以下”等所描述的范围包括边界点。
93.为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
94.本技术下述各实施例提供的数据传输方法,可适用于数据中心网络,例如高性能计算网络、高性能分布式存储网络、大数据网络、人工智能网络等。图1为本技术实施例提供
的数据中心网络的结构示意图,下面以数据中心网络中包括八个服务器为例进行说明,若包括其他数量的服务器时的工作过程和工作原理,与包括八个服务器时的工作工程和工作原理类似,此处不再赘述。其中,如图1所示,服务器1和服务器2与交换机1连接、服务器3和服务器4与交换机2连接、服务器5和服务器6与交换机3连接、服务器7和服务器8与交换机4连接,其中,服务器也称为主机(host)。所有服务器之间均可以采用传输控制协议/网络协议(transmission control protocol/internet protocol,tcp/ip)协议进行通信,例如:服务器1与服务器2之间或者服务器2与服务器5之间通过tcp/ip进行通信。在上述数据中心网络中,任意两个服务器之间传输数据报文。
95.在数据中心网络中,采用的流量工程(traffic engineering,te)技术可以是等价多路径(equal-cost multipath,ecmp),其通过随机哈希方式将所有流分散到多条等长路径中,以充分利用所有路径上的带宽,达到负载均衡。例如:服务器1将流发送到服务器5中时,会存在两条路径:路径1和路径2,路径1为:服务器1-交换机1-交换机5-交换机9-交换机7-交换机3-服务器5,路径2为:服务器1-交换机1-交换机6-交换机9-交换机10-交换机8-交换机3-服务器5。但是,由于ecmp一般使用数据流的五元组静态哈希随机地将数据流映射到多个路径中的一个进行转发。由于哈希本身具有随机性,每个数据流的大小、速率等也具有随机性,对于多个等价路径可能出现有的路径发生拥塞而有的路径低负载,流量分布不均,负载均衡效果不好。在本技术实施例中,路径也称为链路。
96.为了解决上述问题,在相关技术中,通常采用如下两种方式进行负载均衡:第一种负载均衡方式,ecmp采用报文(packet)级别的负载均衡,针对数据流中的每个报文采用随机或者轮询调度等方式为报文选择一条链路。图2为报文级别的负载均衡的示意图,如图2所示,数据流1(也称为flow1)包括报文1、报文2、报文3和报文4,当数据流1到达交换机1时,在交换机1和交换机2之间存在两条链路,交换机1分别为每个报文选择链路,例如,交换机为报文1和报文4选择链路1,为报文2和报文3选择链路2。该方式中,由于报文级别粒度很细,所以负载均衡效果很好。
97.然而,在上述报文级别的负载均衡方式中,由于同一个数据流中的报文所选路径不同,不同路径的时延不同,可能会造成大量的报文乱序,例如,在不乱序的情况下,数据流1中报文到达接收端的顺序为:报文1、报文2、报文3和报文4,在实际情况中,报文2可能先于报文1达到接收端,从而导致报文乱序。如果接收端处理报文乱序能力不足将导致业务性能下降,例如,对于通过以太网使用远程直接内存访问(rdma)的网络协议(rdma over converged ethernet,roce)报文,一旦乱序对业务性能影响很大。
98.第二种负载均衡方式,是基于子流级别(flowlet)的负载均衡,该方案交换机在转发报文时会判断待转发报文与其所属flow中上一个报文之间的时间间隔,如果该时间间隔超过了设定的阈值则进行flowlet的切分,否则报文还属于上一个flowlet。图3为flowlet级别的负载均衡的示意图,如图3所示,数据流1(也称为flow1)包括报文1、报文2、报文3、报文4和报文5,假设报文1是数据流1中的第一个报文,当报文1到达交换机1时,交换机1为数据流1建立流表,该流表中包括数据流的标识信息和报文1的接收时间。在建立数据流1的流表之后,交换机1从两条链路中为报文1选择链路1,并将报文1的链路记录在流表中。交换机1接收到报文2后,查询流表,确定报文2和报文1的接收时间间隔,如果时间间隔小于阈值,则说明报文2和报文1属于一个flowlet,报文2使用与报文1相同的链路发送,并更新流表。
同样,交换机1接收到报文3后根据报文3的接收时间和流表,查询流表,根据报文3和报文2的接收时间间隔确定报文3和报文2属于同一flowlet,使用与报文2相同的链路发送报文3,并更新流表。交换机1接收到报文4后,查询流表,根据报文3和报文4的接收时间间隔,确定报文3和报文4不属于同一个flowlet,交换机1从两条链路中为报文4选择链路2,并更新流表,后续的报文5和报文4属于同一个flowlet,则使用与报文4相同的链路发送。通过上述转发流程,可知数据流1的报文1、2、3属于flowlet1-1,4、5属于flowlet1-2,交换机按照flowlet进行选路,同一flowlet内的报文的路径相同。
99.基于flowlet的负载均衡方案,flowlet内部报文是保序的,但是如果切分flowlet的阈值不足够大,报文仍然有乱序可能。另外,对flow切分flowlet及选择路径需要交换机保存每条流的流表,对交换机流表规格要求高,很多交换机可能不支持。
100.本技术实施例中考虑到上述问题,提出了一种数据传输方法,发送设备(可以为服务器)在发送数据流时,根据报文的保序需求对数据流中报文进行分组,并为同一个报文组内的报文添加组标识,同一个报文组内的报文需要保序,不同报文组之间不需要保序,转发设备(可以是交换机或者其他具有数据转发功能的设备)接收到报文后,转发设备根据报文中包括的组标识和报文所属的数据流的标识信息从多条链路中选择一条目标链路,通过该目标链路将报文转发给接收设备。接收设备(可以为服务器)接收到报文后,根据报文的组标识和序列号,确定报文所属的报文组内是否发生丢包或乱序。该方案中同一个报文组内的报文在同一条链路上传输,不会出现乱序,不需要接收端进行乱序重排,降低了对接收端的要求。并且,该方案中转发设备可以根据组标识和数据流的标识选路,不需要转发设备保存流表,能够兼容各种转发设备,方案实现更简单。
101.可以理解,本技术的方案不局限于数据中心场景,只要存在多路径需要负载均衡选路的场景都可以使用本技术的方案,例如城域网中可以使用本技术的方案进行负载均衡。下面,通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
102.图4为本技术实施例提供的一种数据传输方法的流程图。如图4所示,在本实施例中,该流量控制方法可以包括如下步骤:
103.s101、发送设备确定第一数据流中的第一报文所属的报文组。
104.发送设备可以根据业务需求,生成第一数据流,第一数据流中包括多个报文,第一数据流并不是特指某个数据流,而是指发送设备当前要发送的数据流,同样,第一报文也不是特指第一数据流中的某一个报文,而是发送设备当前要处理的报文。发送设备可能会生成多个不同的数据流,每个数据流的处理都相同,以下实施例以一条数据流为例进行说明。
105.第一数据流中包括至少一个报文组,第一数据流中连续n个报文组的组标识不同,n大于或等于2,第一数据流中的同一个报文组内的报文中的组标识相同。
106.本技术实施例中,每个报文组内的报文需要保序,不同报文组之间不需要保序,发送设备可以根据报文的保序需求进行分组。
107.传统流级别的负载均衡要求整个数据流的所有报文都要保序,但实际上很多业务并不需要整个数据流保序,而只需要分段保序。例如,一条数据库的查询业务流,可能几个报文构成一个查询操作,另外几个报文又构成另一个查询操作,以此类推。只需要每个操作
内部的报文保序,而不需要整个数据流的所有报文保序。基于此,本技术实施例可以根据保序需求对数据流进行分组,分组后的每个报文组内的报文需要保序。
108.本技术实施例中,可以由发送设备的业务软件对第一数据流的报文进行分组,业务软件知道每个报文对应的操作,可以根据报文的操作将操作相同的连续几个报文划分为一个报文组。
109.发送设备在生成第一数据流时,会生成第一数据流的标识信息,第一数据流的标识信息可以唯一标识一个数据流,不同数据流的标识信息不同。第一数据流的标识信息可以包括以下信息中的任意一个:业务的五元组信息、四元组信息或者三元组信息。
110.五元组信息包括源网际协议(internet protocol,ip)地址、目的ip地址、源端口、目的端口和协议号。四元组信息包括源ip地址、目的ip地址、源端口和目的端口。三元组信息包括源ip地址、源端口和协议号。
111.或者,第一数据流的标识信息包括五元组信息、四元组信息或者三元组信息中的任意一个,以及以下信息中的一个或多个:源媒体接入控制(media access control,mac)地址、目的mac地址、源接口和虚拟局域网(virtual local area network,vlan)标识。例如,第一数据流的标识信息包括五元组信息以及源mac地址,或者,第一数据流的标识信息包括四元组信息以及vlan标识,或者,第一数据流包括三元组信息、源mac地址和vlan标识。
112.s102、发送设备将第一报文所属的报文组的组标识添加到第一报文中。
113.可以由发送设备的业务软件确定第一报文所属的报文组,在确定第一报文所属报文组之后,业务软件将报文组的标识添加到第一报文中,或者,业务软件将第一报文的分组信息发送给发送设备的网卡,发送设备的网卡根据第一报文的分组信息将第一报文所属的报文组的组标识添加到第一报文中。
114.第一报文的分组信息可以是第一报文与第一数据流中的前一个报文是否属于同一个报文组,网卡接收到第一报文的分组信息后,如果第一报文与前一个报文属于同一个报文组,则将前一个报文组的组标识添加到第一报文中,如果第一报文与前一个报文不属于同一个报文组,则说明第一报文属于一个新的报文组,网卡可以生成一个新的组标识,将该新的组标识添加到第一报文中。第一报文的分组信息还可以是第一报文所属报文组的组标识。
115.可选的,发送设备将第一报文所属的报文组的组标识添加到第一报文中之前,发送设备生成第一报文所属的报文组的组标识。
116.其中,上述n个报文组的组标识可以是独立生成的,组标识之间不具有关联关系,例如,随机的生成n个报文组的组标识。上述n个报文组的组标识之间也可以具有关联关系。
117.示例性的,第一数据流中的第一个报文组的组标识在第一数据流初始化过程中生成,后续发送设备根据前一个报文组的组标识生成第一报文所属的报文组的组标识,例如,发送设备可以将前一个报文组的组标识增加、减少或者乘以预设值得到第一报文所属的报文组的组标识。
118.图5为第一数据流的分组示意图,如图5所示,第一数据流中包括n个报文组,n大于等于3,报文1-4属于一个报文组1,报文组2从5个报文开始包括连续的多个报文,依次类推,报文组n包括6个报文。假设第一数据流初始化过程中生成了初始组标识,初始组标识可以是第一个随机值或者固定值,该初始组标识即第一数据流中的第一报文组的标识。发送设
备在报文1-4中分别插入该初始组标识,在第一个报文组分组完成之后,发送设备对初始报文组进行更新得到第二个报文组的标识,例如,在初始组标识的基础上加1或者减1得到第二个报文组的组标识,同样,在第二个报文组分组完成之后,发送设备对第一个报文组的组标识进行更新得到第三个报文组的组标识,例如,在初始组标识的基础上加1或者减1得到第三个报文组的组标识,依次类推,得到n个报文组的组标识。
119.第一报文可以为roce报文或者tcp报文,当第一报文为roce报文时,组标识可以携带在第一报文的基本传输头(base transport header,bth)的保留(reserve)字段中。当第一报文为tcp报文时,组标识可以携带在第一报文的保留位和/或选项字段中。
120.图6为roce v2报文的帧结构示意图,如图6所示,roce v2报文包括:eth l2报文头(header)、以太网类型(ether type)、ip报文头、ip协议号(ip protocol number)、udp报文头、udp端口号(udp dport number)、ib bth、ib(无线带宽,infiniband)负载(payload)、不变循环冗余校验(invariant cyclic redundancy check,icrc)和帧检验序列(frame check sequence fcs)。
121.ib bth占用12个字节,0-3字节(共32个比特)的0-15比特为分区键(partition key),16-23比特分别为se、m、pad和tver字段,34-31比特为操作字段(operation code)。4-7字节的0-23比特为目标队列对(queue pair,qp),24-31比特为保留字段(共8比特)。8-11字节的0-23比特为数据包序列号(packet sequence number),24-30比特为保留字段(共7比特),31比特为a。
122.ib bth共有15比特的保留字段,分别位于不同的字节中,报文组的组标识可以占用该15比特的保留字段中的全部或者部分。
123.图7为tcp报文的帧结构示意图,如图7所示,tcp报文包括的报文头占用20字节,分别为:16位的源端口号、16位的目的端口号、32位的序号、32位的确认序号、4位的首部长度、6位的保留字段、1位的紧急指针标志(urgency,urg)标志、1位的确认信息(acknowledgement,ack)标志、1位的推进(push,psh)标志、1位的重置(reset,rst)标志、1比特的同步(synchronization,syn)标志、1比特的完成(finish,fin)标志、16位的窗口大小、16位的校验和、16位的紧急指针。tcp报文中还包括选项(option)和数据,其中,选项字段占用0-40比特。报文组的组标识可以携带在tcp报文的6比特的保留字段中,也可以携带在选项字段,组标识还可以同时占用6比特的保留字段,以及全部或者部分选项字段。
124.可选的,第一报文中还包括有效位(valid),该有效位用于指示报文中的组标识是否有效。该有效位可以占用一个或者多个比特,在roce报文中,该有效位可以和组标识一起占用ib bth的15比特的保留字段。在tcp报文中,该有效位可以和组标识一起占用6比特的保留字段,以及全部或者部分选项字段。
125.第一报文中还包括第一数据流的标识信息,第一数据流中的每个报文中携带的标识信息相同,转发设备或者接收设备可以根据报文中包括的数据流的标识信息确定报文所属的数据流。
126.为了保证数据流中的报文的序列号(serial number,sn),数据流中的报文具有序列号。一种实现方式中,第一数据流中的报文统一进行编号,在数据流初始化过程中,生成一个初始序列号,初始序列号可以是0或者随机产生的值,后续每个报文的序列号可以在前一个序列号的基础上加1得到。接收设备根据报文的序列号可以确定数据流中是否发生丢
包,根据组标识和序列号可以确定报文组内是否发生丢包。该方式中,第一数据流中的不同报文组内的报文的序列号是关联的。
127.另一种实现方式中,第一数据流中不同报文组内的报文的序列号无关,各个报文组的序列号独立进行编号,例如,每个报文组的序列号都从0或者一个随机值开始,后续报文的序列号在前一个序列号的基础上加1得到。该方式中,各个报文组的序列号可以相同,例如,报文组1和报文组2的序列号都从0开始,序列号都为0、1、2、3。在接收设备侧,由于各个报文组的序列号存在重复,接收设备仅根据序列号无法确定报文的顺序,需要根据报文组的组标识和序列号共同确定报文组内的报文是否发生丢包。
128.s103、发送设备将第一报文发送给转发设备。
129.发送设备将第一报文发送给连接的转发设备,例如,图1所示场景中,服务器1为发送设备,服务器1将第一报文发送给交换机1,交换机1为转发设备。
130.本技术实施例中,发送设备对第一数据流中的报文进行分组,分组可以是实时的,发送设备的应用层在生成报文之后,确定报文所属的报文组,所以发送设备在发送过程中各个报文组之间具有先后顺序,先分组的报文组先发送。各个报文组可能经过不同的链路到达接收设备,各个报文组经过的转发设备在转发报文时,由于各个报文组经过的路径不同,各个转发设备在发送报文组时并不需要考虑报文组的先后顺序,相应的,接收设备在接收时也不需要考虑报文组的先后顺序。例如,在发送设备侧报文组1先于报文组2发送,在不同的转发设备上,报文组1和报文组2的发送顺序可能不同,例如,在转发设备1上报文组1先于报文组2发送,在转发设备2上报文组2先于报文组1发送,在接收设备,报文组2可能先于报文组1到达,即接收设备先接收到报文组2,再接收到报文组1。
131.但是,同一个报文组内的报文在发送时具有先后顺序,无论在发送设备或转发设备上,同一个报文组内的报文在发送时都是有先后顺序的,该顺序在转发过程中不会改变。相应的,在接收设备侧,同一个报文组内的报文也是按照发送端的发送顺序进行接收。
132.本实施例中,发送设备确定第一数据流中的第一报文所属的报文组,将第一报文所属的报文组的组标识添加到第一报文中,第一报文中还包括第一数据流的标识信息,第一数据流中包括至少一个报文组,第一数据流中连续n个报文组的组标识不同,n大于或等于2,第一数据流中的同一个报文组内的报文中的组标识相同,发送设备将第一报文发送给转发设备。发送设备通过对数据流中的报文进行分组,并在报文中插入组标识,后续转发设备根据该组标识和第一数据流的标识信息为各报文组选择路径,发送设备在分组时根据保序需求进行分组,从而在实现负载均衡的同时满足保序需求,且在选路时不需要建立额外的流表。
133.图8为本技术实施例二提供的数据传输方法的流程图,如图8所示,本实施例提供的方法包括以下步骤。
134.s201、转发设备接收第一报文,该第一报文中包括该第一报文所属的报文组的组标识和第一数据流的标识信息,第一数据流中包括至少一个报文组,第一数据流中连续n个报文组的组标识不同,n大于或等于2,第一数据流中的同一个报文组内的报文中的组标识相同。
135.从发送设备到接收设备存在多个链路,每个链路上包括多个转发设备,本实施例中的转发设备可以是该链路上的任意一个转发设备。当转发设备为该路径上的第一个转发
设备,该转发设备从发送设备接收第一报文,当该转发设备不是该路径上的第一个转发设备时,该转发设备从上一个(或者前一个)转发设备接收第一报文。
136.第一报文中包括的组标识是发送设备添加的,组标识用于指示第一报文所属的报文组,第一数据流的标识信息用于唯一标识该第一报文所属的数据流,第一报文所属的数据流为第一数据流。第一数据流中包括多个报文组,每个报文组内包括至少一个报文,每个报文组的报文需要保序。
137.第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息。或者,第一数据流的标识信息包括五元组信息、四元组信息、三元组信息中的任意一个,以及以下信息中的一个或多个:源mac地址、目的mac地址、源接口和vlan标识。
138.s202、转发设备根据第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路。
139.一种实现方式中,转发设备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据该哈希值从多条链路中选择一条目标链路用于传输该第一报文。常用的哈希算法包括信息摘要(message digest)第四版(简称md4)、md5、sha-1等,本技术实施例不对哈希算法进行限制。
140.针对报文组内的每个报文,由于其携带的组标识和第一数据流的标识信息相同,所以进行哈希运算后的哈希值相同,因此,能够保证同一个报文组的报文在同一个链路上传输。不同报文组的组标识不同,不同报文组进行哈希运算后的哈希值可能相同,可能不同,例如,转发设备对第一组标识和第一数据流的标识信息进行哈希运算得到第一哈希值,对第二组标识和第一数据流的标识进行哈希运算得到第二哈希值,第一组标识为第一报文组的标识,第二组标识为第二报文组的标识,第一哈希值和第二哈希值可能相同可能不同。所以,连续n个报文组中的部分报文组可能选择相同的链路,例如,n取值为4,第一报文组和第四报文组选择链路1,第二报文组和第三报文组选择链路2,从而实现负载均衡。
141.该实现方式中,转发设备对接收到每个报文都进行哈希运算,根据得到的哈希值进行选路,在实现负载均衡和报文保序的基础上,不需要额外的流表,实现简单。
142.另一种实现方式中,转发设备先根据第一报文中包括的数据流的标识信息查询第一数据流的流表,该第一数据流的流表中包括已经转发的报文的组标识和链路信息。转发设备会为每个数据流维护一张流表,该流表中包括已经转发的报文的组标识和已经转发的报文的链路信息。已经转发的报文的组标识和链路信息可以以报文组的形式存在,即该流表中包括已经转发的报文组的组标识,以及每个报文组的链路信息。
143.转发设备将第一报文中包括的组标识与第一数据流的流表进行匹配,如果匹配成功,则转发设备通过匹配成功的已转发的报文的链路信息对应的链路对第一报文进行转发。如果匹配失败,则转发设备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据哈希值从多条链路中选择目标链路对第一报文进行转发,相应的,转发设备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值之后,根据第一报文中包括的组标识和该目标链路更新第一数据流的流表。
144.将第一报文中包括的组标识与第一数据流的流表进行匹配可以为:转发设备将第一报文中包括的组标识与流表中已经转发的报文的组标识进行比较,如果流表中存在与第一报文中包括的组标识相同的组标识,则将该相同的组标识对应的已转发报文作为匹配成
功的已转发报文,并将该匹配成功的已转发报文的链路作为目标链路。其中,组标识相同的报文属于同一个报文组,同一个报文组的报文的转发路径相同,所以不需要再对第一报文进行哈希运算,而是使用该报文组中已转发报文的链路作为第一报文的链路。
145.如果流表中不存在与第一报文中包括的组标识相同的组标识,则匹配失败,说明该第一报文不属于已经转发的报文组,第一报文属于一个新的报文组,对于一个新的报文组需要重新选路,重新选路时转发设备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据哈希值为第一报文选路。
146.在匹配成功之后,可选的,转发设备可以对流表进行更新,此时,将第一报文的信息更新到流表中,例如,将第一报文的序列号、组标识以及链路更新到流表中。该方式中,在每个报文转发之后都需要更新流表。
147.可选的,在匹配成功之后,转发设备也可以不对流表更新,每个报文组只更新一次流表,转发设备在对每个报文组中的第一个报文进行转发之后更新流表,流表中只需要包括该报文组的组标识和报文组的链路。
148.在匹配失败的情况下,转发设备通过哈希算法对第一报文选择链路之后,转发设备根据第一报文中包括的组标识和目标链路更新第一数据流的流表。转发设备将第一报文的组标识和链路信息更新到流表中,后续第一报文所属的报文组中的其他报文达到转发设备时,转发设备可以根据流表进行转发,不再需要通过哈希运算选路。
149.图9为报文转发示意图,如图9所示,在第一数据流中包括5个报文,报文1-3属于报文组1,报文4、5属于报文组2,交换机1接收第一数据流的5个报文后,为报文组1选择链路1进行传输,为报文组2选择链路2进行传输。
150.本技术实施例中,同一个报文组内的报文需要保序,不同报文组之间不需要保序,所以,图9所示两个报文组中,报文组2的报文可以先于报文子1的报文达到接收设备,报文组2的报文也可以晚于报文子1的报文达到接收设备。
151.可选的,第一报文中还包括有效位,该有效位用于指示报文中的组标识是否有效,相应的,转发设备接收到第一报文之后,从报文头中获取到有效位,如果有效位指示组标识无效,则转发设备不再使用组标识对第一报文进行选路,而是采用其他方式对第一报文选路。如果有效位指示组标识有效,则转发设备使用组标识和第一数据流的标识信息对第一报文进行选路。
152.s203、转发设备通过目标链路将第一报文转发给下一个转发设备或者接收设备。
153.如果转发设备是目标链路中的最后一个转发设备,则转发设备将第一报文发送给接收设备,如果转发设备不是目标链路中的最后一个转发设备,则转发设备将第一报文转发给链路中的下一个转发设备。
154.本实施例中,转发设备接收第一报文,第一报文中包括第一报文所属的报文组的组标识和第一数据流的标识信息,第一数据流中包括至少一个报文组,第一数据流中连续n个报文组的组标识不同,n大于或等于2,第一数据流中的同一个报文组内的报文中的组标识相同,转发设备根据第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路,通过该目标链路将第一报文转发给下一个转发设备或者接收设备。通过在报文中增加组标识,转发设备根据该组标识和第一数据流的标识信息为各报文组选择路径,实现了数据流的分组级别的负载均衡,且转发设备不需要存储流表,或者存储的流表简
化了,降低了转发设备的要求。
155.图10为本技术实施例三提供的数据传输方法的流程图,如图10所示,本实施例提供的方法包括以下步骤:
156.s301、接收设备接收第一报文,第一报文中包括第一报文所属的报文组的组标识和第一数据流的标识信息,第一数据流中包括至少一个报文组,第一数据流中连续n个报文组的组标识不同,n大于或者等于2,第一数据流中的同一个报文组内的报文中的组标识相同。
157.第一报文中包括的组标识是发送设备添加的,组标识用于指示第一报文所属的报文组,第一数据流的标识信息用于唯一标识该第一报文所属的数据流,第一报文所属的数据流为第一数据流。第一数据流中包括多个报文组,每个报文组内包括至少一个报文,每个报文组的报文需要保序。
158.第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息。或者,第一数据流的标识信息包括五元组信息、四元组信息、三元组信息中的任意一个,以及以下信息中的一个或多个:源mac地址、目的mac地址、源接口和vlan标识。
159.s302、接收设备根据第一报文的组标识和序列号,确定第一报文所属的报文组内是否发生丢包或乱序。
160.每个报文都有序列号,序列号用于确定报文的顺序,无论接收设备对第一数据流中的报文的序列号统一编号,还是各个报文组的序列号独立编号,接收设备都能够根据报文的组标识和序列号确定报文组内是否发生丢包或者乱序。接收设备可以先根据组标识接收不同报文组,进一步根据各报文组内报文的序列号判断你是否发生丢包或者乱序,不同报文组内的报文分别产生应答报文,应答报文中需要包括组标识。
161.接收设备产生第一报文的应答报文之后,将第一报文的应答报文发送给发送设备。一种方式中,一个报文组内的报文可以产生一个应答报文;另一种方式中,一个报文组内的每个报文分别产生一个应答报文;再一种方式中,指定个数的报文产生一个应答报文。本技术实施例不对应答报文的产生方式进行限制,不论采用何种方式产生应答报文,应答报文都需要包括确认的报文所属的报文组的组标识。
162.图11为本技术实施例四提供的数据传输方法的流程图,如图11所示,本实施例提供的方法包括以下步骤:
163.s401、发送设备确定第一数据流中的第一报文所属的报文组,将第一报文所属的报文组的组标识添加到第一报文中。
164.s402、发送设备将第一报文发送给转发设备。
165.该第一报文中包括组标识和第一数据流的标识信息。
166.s403、转发设备根据第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路。
167.从发送设备到接收设备,第一报文会经过多个转发设备,在每个转发设备上,转发设备都根据第一报文中包括的组标识和第一数据流的标识信息选路,图11中仅示出了一个转发设备,各个转发设备选路方式相同。本实施例中,转发设备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据哈希值从多条链路中选择一条目标链路。
168.s404、转发设备将第一报文通过目标链路发送给接收设备或者下一个转发设备。
169.s405、接收设备根据第一报文的组标识和序列号,确定第一报文所属的报文组内是否发生丢包或乱序。
170.s406、接收设备向发送设备发送第一报文的响应报文,第一报文的响应报文中包括第一报文所属的报文组的组标识。
171.接收设备根据接收结果生成第一报文的响应报文,并向发送设备发送第一报文的响应报文,可以理解,第一报文的响应报文也会经过多个转发设备到达发送设备。
172.本实施例中,发送设备确定第一数据流中的第一报文所属的报文组,将第一报文所属的报文组的组标识添加到第一报文中后发送给转发设备,转发设备备对第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据哈希值从多条链路中选择一条目标链路,通过目标链路将第一报文发送给下一个转发设备或者接收设备,接收设备根据第一报文的组标识和序列号,确定第一报文所属的报文组内是否发生丢包或乱序。发送设备在分组时根据保序需求进行分组,在报文中增加组标识,转发设备根据组标识以及数据流的标识信息进行选路,保证同一个报文组内的报文在一条链路上转发,从而在实现负载均衡的同时满足保序需求,转发设备根据报文中的组标识和数据流的标识信息选路,不需要建立额外的流表。
173.图12为本技术实施例五提供的转发设备的结构示意图,如图12所示,本实施例提供的转发设备包括:
174.接收模块11,用于接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
175.选路模块12,用于根据所述第一报文中包括的组标识和第一数据流的标识信息从多条链路中选择一条目标链路;
176.发送模块13,用于通过所述目标链路将所述第一报文转发给下一个转发设备或者接收设备。
177.一种可选方式中,所述选路模块12具体用于:对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据所述哈希值从所述多条链路中选择所述目标链路。
178.另一种可选方式中,所述发送设备还包括查询模块、匹配模块和更新模块。查询模块用于根据所述第一报文中包括的数据流的标识信息查询所述第一数据流的流表,所述第一数据流的流表中包括已经转发的报文的组标识和链路信息。匹配模块用于将所述第一报文中包括的组标识与所述第一数据流的流表进行匹配,如果匹配成功,所述发送模块13还用于通过匹配成功的已转发的报文的链路信息对应的链路对所述第一报文进行转发。如果匹配失败,所述选路模块12具体用于:则对所述第一报文中包括的组标识和第一数据流的标识信息进行哈希运算得到哈希值,根据所述哈希值从所述多条链路中选择所述目标链路。更新模块用于根据所述第一报文中包括的组标识和所述目标链路更新所述第一数据流的流表。
179.可选的,所述第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四
元组信息或者三元组信息。所述五元组信息包括源网际协议ip地址、目的ip地址、源端口、目的端口和协议号,所述四元组信息包括源ip地址、目的ip地址、源端口和目的端口,所述三元组信息包括源ip地址、源端口和协议号。或者,所述第一数据流的标识信息包括所述五元组信息、四元组信息或者三元组信息中的任意一个,以及以下信息中的一个或多个:源mac地址、目的mac地址、源接口和vlan标识。
180.可选的,所述第一数据流中的不同报文组内的报文序列号无关。
181.可选的,所述第一报文中还包括有效位,所述有效位用于指示所述报文中的组标识是否有效。
182.可选的,所述第一报文为roce报文,所述组标识携带在所述第一报文的基本传输头的保留字段中。或者,所述第一报文为tcp报文,所述组标识携带在所述第一报文的保留位和/或选项字段中。
183.本实施例的转发设备,可用于执行上述实施例一至实施例四中转发设备执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。
184.图13为本技术实施例六提供的发送设备的结构示意图,如图13所示,本实施例提供的发送设备包括:
185.确定模块21,用于确定第一数据流中的第一报文所属的报文组;
186.添加模块22,用于将所述第一报文所属的报文组的组标识添加到所述第一报文中,所述第一报文中还包括所述第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
187.发送模块23,用于将所述第一报文发送给转发设备。
188.可选的,发送设备还包括生成模块,用于生成所述第一报文所属的报文组的组标识。
189.可选的,所述生成模块具体用于:根据前一个报文组的组标识生成所述第一报文所属的报文组的组标识,其中,所述第一数据流中的第一个报文组的组标识在所述第一数据流初始化过程中生成。
190.可选的,所述生成模块将所述前一个报文组的组标识增加、减少或者乘以预设值得到所述第一报文所属的报文组的组标识。
191.可选的,所述第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息。所述五元组信息包括源网际协议ip地址、目的ip地址、源端口、目的端口和协议号,所述四元组信息包括源ip地址、目的ip地址、源端口和目的端口,所述三元组信息包括源ip地址、源端口和协议号。或者,所述第一数据流的标识信息包括所述五元组信息、四元组信息或者三元组信息中的任意一个,以及以下信息中的一个或多个:源mac地址、目的mac地址、源接口和vlan标识。
192.可选的,所述第一数据流中的不同报文组内的报文序列号无关。
193.可选的,所述第一报文中还包括有效位,所述有效位用于指示所述报文中的组标识是否有效。
194.可选的,所述第一报文为roce报文,所述组标识携带在所述第一报文的基本传输头的保留字段中。或者,所述第一报文为tcp报文,所述组标识携带在所述第一报文的保留
位和/或选项字段中。
195.本实施例的发送设备,可用于执行上述实施例一至实施例四中发送设备执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。
196.图14为本技术实施例七提供的接收设备的结构示意图,如图14所示,本实施例提供的接收设备包括:
197.接收模块31,用于接收设备接收第一报文,所述第一报文中包括所述第一报文所属的报文组的组标识和第一数据流的标识信息,所述第一数据流中包括至少一个报文组,所述第一数据流中连续n个报文组的组标识不同,n大于或者等于2,所述第一数据流中的同一个报文组内的报文中的组标识相同;
198.确定模块32,用于根据所述第一报文的组标识和序列号,确定所述第一报文所属的报文组内是否发生丢包或乱序。
199.可选的,接收设备还包括发送模块,用于发送所述第一报文的响应报文,所述第一报文的响应报文中包括所述第一报文所属的报文组的组标识。
200.可选的,所述第一数据流的标识信息包括以下信息中的任意一个:五元组信息、四元组信息或者三元组信息。所述五元组信息包括源网际协议ip地址、目的ip地址、源端口、目的端口和协议号,所述四元组信息包括源ip地址、目的ip地址、源端口和目的端口,所述三元组信息包括源ip地址、源端口和协议号。或者,所述第一数据流的标识信息包括所述五元组信息、四元组信息或者三元组信息中的任意一个,以及以下信息中的一个或多个:源mac地址、目的mac地址、源接口和vlan标识。
201.可选的,所述第一数据流中的不同报文组内的报文序列号无关。
202.可选的,所述第一报文中还包括有效位,所述有效位用于指示所述报文中的组标识是否有效。
203.可选的,所述第一报文为roce报文,所述组标识携带在所述第一报文的基本传输头的保留字段中。或者,所述第一报文为tcp报文,所述组标识携带在所述第一报文的保留位和/或选项字段中。
204.本实施例的接收设备,可用于执行上述实施例一至实施例四中接收设备执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。
205.以上各个模块或单元都可以通过软件、硬件或软件硬件结合的方式来实现,例如,上述图14中的确定模块以及图13中的添加模块都可以基于软件实现。
206.本技术中,“通过软件实现”是指处理器读取并执行存储在存储器中的程序指令来实现上述模块或单元所对应的功能,其中,处理器是指具有执行程序指令功能的处理电路,包括但不限于以下至少一种:中央处理单元(central processing unit,cpu)、微处理器、数字信号处理器(digital signal processing,dsp)、微控制器(microcontroller unit,mcu)、或人工智能处理器等各类能够运行程序指令的处理电路。在另一些实施例中,处理器还可以包括其他处理功能的电路(如用于硬件加速的硬件电路、总线和接口电路等)。处理器可以以集成芯片的形式呈现,例如,以处理功能仅包括执行软件指令功能的集成芯片的形式呈现,或者还可以以soc(system on a chip,片上系统)的形式呈现,即在一个芯片上,除了包括能够运行程序指令的处理电路(通常被称为“核”)外,还包括其他用于实现特定功能的硬件电路(可以是基于asic、fpga实现),相应的,处理功能除了包括执行软件指令功能
外,还可以包括各种硬件加速功能(如ai计算、编解码、压缩解压等)。
207.本技术中,“通过硬件实现”是指通过不具有程序指令处理功能的硬件处理电路来实现上述模块或者单元的功能,该硬件处理电路可以通过分立的硬件元器件组成,也可以是集成电路。为了减少功耗、降低尺寸,通常会采用集成电路的形式来实现。硬件处理电路可以包括asic(application-specific integrated circuit,专用集成电路),或者pld(programmable logic device,可编程逻辑器件);其中,pld又可包括fpga(field programmable gate array,现场可编程门阵列)、cpld(complex programmable logic device,复杂可编程逻辑器件)等等。这些硬件处理电路可以是单独封装的一块半导体芯片,也可以跟其他电路(如cpu、dsp)集成在一起后封装成一个半导体芯片。例如,可以将asic与cpu集成在一起组成soc,并单独封装成一个芯片,或者也可以将fpga与cpu集成在一起组成sopc(system on a programmable chip,可编程片上系统)。
208.需要说明的是,本技术在通过软件、硬件或者软件硬件结合的方式实现时,可以使用不同的软件、硬件,并不限定只使用一种软件或者硬件。例如,其中,其中一个模块或者单元可以使用cpu来实现,另一个模块或者单元可以使用dsp来实现。同理,当使用硬件实现时,其中一个模块或者单元可以使用asic来实现,另一个模块或者单元可以使用fpga实现。当然,也不限定部分或者所有的模块或者单元使用同一种软件(如都通过cpu)或者同一种硬件(如都通过asic)来实现。此外,对于本领域技术人员,可以知道,软件通常来说灵活性更好,但性能不如硬件,而硬件正好相反,因此,本领域技术人员可以结合实际需求来选择软件或者硬件或者两者结合的形式来实现。
209.图15为本技术实施例八提供的转发设备的一种结构示意图,如图15所示,该转发设备400包括:处理器41、存储器42和收发器43,所述存储器42用于存储指令,所述收发器43用于和其他设备通信,所述处理器41用于执行所述存储器中存储的指令,以使所述转发设备400执行如上述方法实施例中转发设备执行的方法。
210.图16为本技术实施例九提供的服务器的结构示意图,该服务器可以作为发送设备和/或接收设备,如图16所示,该服务器500包括:处理器51、存储器52和收发器53,所述存储器52用于存储指令,所述收发器53用于和其他设备通信,所述处理器51用于执行所述存储器中存储的指令,以使所述服务器500执行如上述方法实施例中发送设备或者接收设备执行的方法。
211.本技术实施例十提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如上述方法实施例中转发设备执行的方法。
212.本技术实施例十一提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如上述方法实施例中发送设备或者接收设备执行的方法。
213.本领域技术人员能够领会,结合本技术公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应
于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本技术中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
214.作为实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
215.可通过例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
216.本技术的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本技术中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
217.以上所述,仅为本技术示例性的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献