传输报文的方法及通信装置与流程

文档序号:29513642发布日期:2022-04-06 20:27阅读:210来源:国知局
传输报文的方法及通信装置与流程

1.本技术涉及通信领域,并且更具体地,涉及一种传输报文的方法及通信装置。


背景技术:

2.在传输报文的过程中,若发生报文丢失,则发送端设备对丢失的报文进行重传。然而在重传报文的过程中会引入至少一个往返时延(round trip time,rrt)。
3.为了减少报文丢失的情况下,因为重传丢失报文引起的时延,现有技术中采用一种网络编码传输的方案。网络编码是定义一个固定编码窗口m,每当有m个报文,就插入一个冗余编码包,这样在窗口内丢失一个报文的情况下,接收端可以通过冗余编码包恢复丢失的报文。然而,在报文间隔过大的情况下,上述网络编码传输的方案会导致解码窗口时延过大。


技术实现要素:

4.本技术提供一种报文传输的方法及通信装置,可以满足报文丢失的情况下的时延目标,也可以达到较高的传输效率。
5.第一方面,提供了一种报文传输的方法,该方法可以包括:第一设备发送n个第一报文中的第n个第一报文,n=1,2,

,n,n为正整数;该第一设备缓存该第n个第一报文;该第一设备确定是否满足第一条件,该第一条件为:定时器的计时时长达到预设时长,该定时器在发送该n个第一报文中的第一个第一报文时开启;该第一设备在确定满足该第一条件的情况下发送第二报文,该第二报文是该第一设备对缓存的一个或多个第一报文进行编码得到的;该第一设备在发送该第二报文之后清空该缓存的一个或多个第一报文;该第一设备在发送该第二报文之后重启该定时器。
6.基于上述技术方案,通过采用定时触发的方式触发第一设备发送编码报文(即第二报文),可以避免在报文稀疏且有报文丢失的情况下,解码时延过大的弊端,从而保证的了时延需求。
7.结合第一方面,在第一方面的某些实现方式中,该方法还可以包括:该第一设备在确定不满足该第一条件的情况下,确定是否满足第二条件,该第二条件为:该缓存的一个或多个第一报文的个数大于或等于预设编码窗口大小;该第一设备在确定满足该第二条件的情况下,向该第二设备发送该第二报文;该第一设备清空该缓存的一个或多个第一报文;该第一设备在发送该第二报文之后重启该定时器。
8.若仅仅采用定时触发的方式触发第一设备发送编码报文,则在报文密集的情况下,在预设时长内,第一设备用于得到编码报文的原始报文(即第一报文)数量过多,因此将影响报文传输的效率。而基于上述技术方案,在采用定时触发的方式触发第一设备发送编码报文的情况下,进一步引入固定编码窗口触发的方式,在报文比较密集的情况下,若定时器的定时时长没有达到预设时长,但是固定编码窗口到达时,也可以触发第一设备发送编码报文,从而可以在保证时延需求的情况下,也保证了报文传输的效率。
9.结合第一方面,在第一方面的某些实现方式中,该n个第一报文中的至少两个第一报文是不同用户数据报协议(user data protocol,udp)流中的报文。
10.基于上述技术方案,第一设备可以将多条udp流捆做一条流对待,从而可以增大编码窗口,减小资源代价消耗。
11.结合第一方面,在第一方面的某些实现方式中,该第二报文包括以下至少一个字段:起始编号、报文数量、内容标识。
12.在一种实现方式中,若n个第一报文是同一条udp流中的报文,第二报文可以包括以下字段:起始编号、报文数量。
13.在另一种实现方式中,若n个第一报文中的至少两个第一报文是不同udp流中的报文,第二报文可以包括以下字段:起始编号、报文数量、内容标识。
14.可以理解,第二报文还可以包括以下字段:因特网协议(internet protocol,ip)头、类型、udp头、载荷。
15.结合第一方面,在第一方面的某些实现方式中,该第一报文包括以下字段:内容标识。
16.具体地,若n个第一报文中的至少两个第一报文是不同udp流中的报文,第一报文可以包括以下字段:内容标识。
17.可以理解,第一报文还可以包括以下字段:ip头、类型、报文编号、载荷、udp头。
18.第二方面,提供了一种通信装置,包括用于执行第一方面以及第一方面中任一种可能实现方式中的方法的各个模块或单元。
19.第三方面,提供了一种通信装置,包括处理器。该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面及第一方面中任一种可能实现方式中的方法。可选地,该通信装置还包括存储器。可选地,该通信装置还包括通信接口,处理器与通信接口耦合。
20.在一种实现方式中,该通信装置为第一设备。当该通信装置为第一设备时,该通信接口可以是收发器,或,输入/输出接口。
21.在另一种实现方式中,该通信装置为配置于第一设备中的芯片。当该通信装置为配置于第一通设备中的芯片时,该通信接口可以是输入/输出接口。
22.可选地,该收发器可以为收发电路。可选地,该输入/输出接口可以为输入/输出电路。
23.第四方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。所述处理电路用于通过所述输入电路接收信号,并通过所述输出电路发射信号,使得所述处理器执行第一方面及第一方面中任一种可能实现方式中的方法。
24.在具体实现过程中,上述处理器可以为一个或多个芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本技术实施例对处理器及各种电路的具体实现方式不做限定。
25.第五方面,提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器
中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行第一方面及第一方面中任一种可能实现方式中的方法。
26.可选地,所述处理器为一个或多个,所述存储器为一个或多个。
27.可选地,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
28.在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
29.应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理器输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
30.上述第五方面中的处理装置可以是一个或多个芯片。该处理装置中的处理器可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
31.第六方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行上述第一方面及第一方面中任一种可能实现方式中的方法。
32.第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得上述第一方面及第一方面中任一种可能实现方式中的方法被执行。
33.第八方面,提供了一种通信系统,包括前述的第一设备。
附图说明
34.图1示出了固定编码窗口的网络编码传输的方案的原理示意图。
35.图2示出了适用于本技术实施例提供的报文传输的方法的通信系统。
36.图3示出了本技术实施例提供的报文传输的方法的示意性流程图。
37.图4示出了本技术实施例提供的第一报文和第二报文的格式示意图。
38.图5示出了本技术另一实施例提供的第一报文和第二报文的格式示意图。
39.图6示出了本技术实施例提供的发送设备的结构示意图。
40.图7示出了本技术实施例提供的接收设备的结构示意图。
41.图8示出了本身实施例提供的通信装置的示意图。
42.图9示出了本技术另一实施例提供的通信装置的示意性框图。
43.图10示出了本技术实施例提供的一种芯片系统的示意图。
具体实施方式
44.下面将结合附图,对本技术中的技术方案进行描述。
45.传输控制协议(transmission control protocol,tcp)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由互联网工程任务组(internet engineering task force。ietf)的请求评议(request for comments,rfc)793定义。
46.tcp旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中成对进程之间依靠tcp提供可靠的通信服务。tcp假设它可以从较低级别的协议获得简单的、可能不可靠的数据报服务。原则上,tcp应该能够从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
47.tcp是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。
48.互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。tcp的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性。
49.不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是ip层不提供这样的流机制,而是提供不可靠的包交换。
50.应用层向tcp层发送用于网间传输的、用8位字节表示的数据流、然后tcp层把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(maximum transmission unit,mtu)的限制)。之后tcp层把结果包传给ip层,由ip层来通过网络将包传送给接收端实体的tcp层。tcp层为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功接收到的包发回一个相应的确认(acknowledgement,ack);如果发送端实体在合理的rrt内未收到确认,那么对应的数据包就被假设为已丢失,该数据包将会被进行重传。tcp层用一个校验和函数来检验数据是否有错误,在发送端和接收端都要计算校验和。
51.每台支持tcp协议的机器都有一个tcp传输实体。tcp传输实体可以是一个库过程、一个用户进程,或者内核的一部分。在所有这些情形下,tcp传输实体管理tcp流,以及与ip层之间的接口。tcp传输实体接受本地进程的用户数据流,将用户数据流分割成不超过64kb(实际上去掉ip和tcp头,通常不超过1460数据字节)的分段,每个分段以单独的ip数据报形式发送。当包含tcp数据的数据报到的一台机器时,数据报被递交给tcp传输实体,tcp传输实体重构出原始的字节流。
52.ip层并不保证数据报一定被正确地递交到接收方,也不指示数据报的发送速度有多快。正是tcp层负责既要足够快地发送数据报,以便使用网络容量,但又不能引起网络拥塞。而且,tcp层超时后,要重传没有递交的数据报。即使被正确递交的数据报,也可能存在错序的问题,这也是tcp层的责任,tcp层必须把接收到的数据报重新装配成正确的顺序。简而言之,tcp层必须提供可靠性的良好性能,这正是大多数用户所期望的而ip层又没有提供的功能。
53.本技术中主要关注可靠性重传机制。根据上文所述,tcp层对每个报文都编了序号,当一个报文在传输中丢失了一个报文,接收端接收到的报文的序号就不连续了,因此接收端可以根据接收到的报文的序号检测到丢包,并会通过确认消息报文反馈给发送端,发送端也就可以知道报文丢失,于是重发一下丢失的报文。在整个过程中可以发现,如果一个报文丢失,需要经历额外的2倍的路程时延——也叫rrt,具体原理如下:
54.在不丢包的情况下,发送端发送一个报文到接收端,从发送到接收仅经历一个路程的时延,即rrt/2;如果报文丢失,接收端检测到报文丢失,需要至少一个路程时延,即rrt/2;接收端向发送端发送确认消息,需要经历一个路程的时延,即rrt/2;发送端重传一次丢失的报文,报文从发送端到达接收端又经历了一个路程的时延,即rrt/2。可以看到,在发生丢包的情况下,接收端接收到发送端重传的报文,经历的时间至少需要3*rrt/2,相比于不丢包,经历的时间至少多出一个rrt。
55.举例来说,假如发送端到接收端单程时延为10ms,正常不丢包的情况下,一个报文只需经历10ms就可以被接收端收到。可是一旦发生丢包,一个报文要最终被正确接收,至少需要30ms的时延。
56.在一些时延特性要求比较高的场景下,上述重传方式因为引入额外的一个rrt时延而不被接受。
57.为了减小报文丢失的情况下,因为重传引起的时延,现有技术中采用一种网络编码传输的方案。网络编码是定义一个编码窗口m,每当有m个报文,就插入一个冗余编码包,这样在窗口内丢失一个报文的情况下,可以通过冗余编码包恢复丢失的报文。
58.如图1所示。p1至p16为原始报文,即未被编码的报文。r
1-8
和r
9-16
为编码报文,r
1-8
=p1

p2

p3

p4

p5

p6

p7

p8,r
9-16
=p9

p10

p11

p12

p13

p14

p15

p16。例如,在丢失报文p2的情况下,发送端无需重传报文p2,因为当接收端接收到编码报文r
1-8
时,可以通过如下运算恢复出报文p2:p2=r
1-8

p1

p3

p4

p5

p6

p7

p8。
59.在上述网络编码传输方案中,恢复丢失报文的时延最大是解码窗口时延,而解码窗口时延完全可以定义的比rrt小,以满足可靠性业务所要求的时延。例如,rrt是10ms,但是发送8个报文的时间仅为1ms,则即使报文p2丢失,恢复报文p2仅需要11ms就可以完成,远低于重传报文p2所需要的30ms。此外,该方案的冗余效率也比较好,为1/m,即多消耗1/m的资源。
60.但是,在采用上述网络编码传输的方案时,若报文间隔不均匀,则在报文间隔过大的情况下,会导致解码窗口时延过大,超过可靠性业务要求的时延。以图1为例,假设报文p1到报文p8的间隔特别稀疏,以至于发送报文p1到发送报文p8的时间超过20ms,例如,发送报文p1到发送报文p8的时间为40ms,则接收端在接收到编码报文r
1-8
时已经经历了40ms,如果报文p2丢失,那么根据编码报文r
1-8
恢复报文p2的时延将高达40ms,还不如重传报文p2的时延小。
61.目前,还有一种网络编码传输的方案是采用1:1的冗余,即在发送完一个报文之后,紧接着重发一次该报文。在此情况下,接收端只要接收到两个重复报文中的一个,就可以认为报文可以可靠到达。然而该方案的代价太高,相当于浪费了一半的资源。
62.有鉴于此,本技术实施例提供一种报文传输的方法,既可以满足报文丢失的情况下的时延目标,也可以达到较高的传输效率。
63.为便于理解,首先结合图2说明适用于本技术实施例提供的方法的通信系统。
64.图2是适用于本技术实施例提供的方法的通信系统100的示意图。如图2所示,通信系统100可以至少包括两个设备,例如图2所示的设备#1和设备#2。设备#1和设备#2之间可以通过中间网络通信,例如,设备#1可以通过中间网络向设备#2发送报文(例如,报文p1和报文p2)。可以理解,在设备#1向设备#2发送报文的情况下,设备#1为发送端,设备#2为接收
端。
65.应理解,图中仅为示意,示出了两个设备,但不应对本技术构成任何限定。该通信系统中,还可以包括更多数量的设备,该通信系统中的至少两个设备之间都可以通过中间网络进行通信。还应理解,在图2所示的通信系统100中,若是由设备#2向设备#1发送报文,则设备#2为发送端,设备#1为接收端。
66.下面将结合附图说明本技术实施例提供的报文传输的方法。
67.图3是本技术实施例提供的报文传输的方法的示意性流程图,图3所示的方法300可以由图2中的设备#1执行。如图3所示,方法300可以包括s310至s360。下面详细说明各个步骤。
68.需要说明的是,第一设备依次发送n个第一报文,在发送每个第一报文的过程中,第一设备都可以执行方法300。下文实施例中,以第一设备发送第n个第一报文为例进行说明。其中,n=1,2,

,n,n为正整数。
69.还需要说明的是,下文提及的预设编码窗口、固定编码窗口可以是一个预先设置的定值,下文提及的编码窗口是实际报文传输过程中,发送端设备生成编码报文所作用的原始报文的数量,也就是说,编码窗口在实际报文传输的过程中,有可能是随时变化的。
70.s310,第一设备发送n个第一报文中的第n个第一报文。
71.具体地,第一设备可以以单播的方式向第二设备发送第n个第一报文,在此情况下,只有第二设备可以收到第n个第一报文;或者,第一设备可以以广播的方式发送第n个第一报文,在此情况下,有多个设备可以接收到第n个第一报文,例如,第二设备、第三设备和第四设备可以接收到第n个第一报文。
72.第一报文可以是第一设备生成的报文,也可以是第一设备从其他设备接收的报文,本技术实施例对此不做限定。
73.可选地,n个第一报文中是同一个udp流中的报文。
74.可选地,n个第一报文中的至少两个第一报文是不同udp流中的报文。也就是说,在有多条udp流的情况下,第一设备可以将多条udp流捆做一条大的流对待。
75.s320,第一设备缓存第n个第一报文。
76.本技术实施例对第一设备缓存第n个第一报文的方式不做限定,例如,第一设备可以在对第n个第一报文不做处理的情况下缓存第一报文;又例如,第一设备可以将第n个第一报文与在先缓存的一个或多个第一报文进行编码之后,缓存得到的编码报文。例如,第一设备第n个第一报文为报文p2,则第一设备可以在对报文p2不做处理的情况下缓存报文p2,或者,第一设备可以将报文p2与在先缓存的报文p1进行编码之后,缓存得到的编码报文r
1-2
,例如第一设备可以对报文p2和报文p1进行异或编码,即r
1-2
=p1

p2。
77.s330,第一设备确定是否满足第一条件。
78.第一条件为定时器的计时时长达到预设时长,第一设备确定是否满足第一条件也可以理解为,第一设备确定定时器的时长是否达到预设时长。其中,预设时长可以是由协议预定义的,也可以是由用户根据待传输的业务的时延需求设置的,本技术实施例对此不做限定。
79.其中,第一设备可以在发送第一个第一报文之后开启定时器,进一步地,第一设备可以在发送第二报文之后重启定时器,即将定时器的计时归零。第二报文是第一设备对缓
存的一个或多个第一报文进行编码得到的。
80.例如,将第一设备发送的第一个第一报文记为p1,则第一设备在发送p1之后开启定时器;进一步地,第一设备继续发送一个或多个第一报文,假设第一设备在发送了第八个第一报文(记为p8)之后,达到了发送第二报文的条件,则第一设备发送对p1至p8进行编码得到的第二报文之后,重启定时器,即将定时器的计时归零。
81.进一步地,若第一设备确定不满足第一条件,则方法300返回去执行s310;若第一设备确定满足第一条件,则方法300执行s340,第一设备发送第二报文。
82.也就是说,第一设备发送一个第一报文,并缓存第一报文之后,若第一设备确定不满足第一条件,则继续发送第一报文,直到第一设备确定满足第一条件的情况下,第一设备发送第二报文。
83.例如,第一设备发送第一个第一报文(记为p1),并缓存p1之后,确定是否满足第一条件,若第一设备确定不满足第一条件,则第一设备发送第二个第一报文(记为p2),第一设备缓存p2之后,继续确定是否满足第一条件,若第一设备确定不满足第一条件,则第一设备继续发送第三个第一报文(记为p3),第一设备缓存p3之后,继续确定是否满足第一条件,若第一设备确定满足第一条件,则第一设备发送第二报文。
84.第二报文是第一设备对缓存的一个或多个第一报文进行编码得到的。本技术实施例对第一设备对缓存的第一报文编码得到第二报文的编码方式不做限定,例如,第一设备可以采用卷积码编码方式对缓存的一个或多个第一报文进行编码,或者,可以采用所罗门编码方式对缓存的一个或多个第一报文进行编码,或者,可以采用异或编码方式对缓存的一个或多个第一报文进行编码。下文中以第一设备对缓存的一个或多个第一报文进行异或编码得到第二报文为例进行说明。
85.例如,第一设备发送了p3之后确定满足第一条件,且此时第一设备缓存了三个第一报文,即p1、p2和p3,则第一设备可以对p1、p2和p3进行异或编码得到第二报文(记为r
1-3
),r
1-3
=p1

p2

p3。
86.可选地,在第一设备确定不满足第一条件的情况下,方法300还可以执行s350。
87.s350,第一设备确定是否满足第二条件。
88.第二条件为缓存的一个或多个第一报文的个数等于预设编码窗口大小,第一设备确定是否满足第二条件也可以理解为,第一设备确定缓存的一个或多个第一报文的个数是否大于或等于预设编码窗口大小。其中,预设编码窗口大小可以是由协议预定义的,也可以是由用户根据待传输的业务的时延需求设置的,本技术实施例对此不做限定。下文中将预设编码窗口大小记为m,m为正整数。
89.本技术实施例对第一设备确定缓存的第一报文的个数是否大于或等于预设编码窗口大小的方法不做限定。
90.作为一个示例,第一设备每缓存一个第一报文之后,都对缓存的第一报文的数量进行一次判断,即判断缓存的第一报文的数量是否大于或等于m。
91.作为另一个示例,第一设备维护一个计数器,第一设备每发送或缓存一个第一报文,计数器的数值都会加1,进一步地,第一设备判断计数器的数值是否大于或等于m。应理解,在第一设备发送第二报文之后,计数器的数值清零。
92.例如,将第一设备发送的第一个第一报文记为p1,则第一设备在发送p1之后开启
计数器;进一步地,第一设备继续发送一个或多个第一报文,假设第一设备在发送了第八个第一报文(记为p8)之后,达到了发送第二报文的条件,则第一设备发送对p1至p8进行编码得到的第二报文之后,将计数器的数值清零。
93.进一步地,若第一设备确定不满足第二条件,则方法300返回去执行s310;若第一设备确定满足第二条件,则方法300执行s340,第一设备发送第二报文。
94.也就是说,第一设备发送一个第一报文,并缓存第一报文之后,若第一设备确定不满足第一条件,也不满足第二条件,则继续发送第一报文,直到第一设备确定满足第一条件,或不满足第一条件但满足第二条件的情况下,第一设备发送第二报文。
95.例如,第一设备发送第一个第一报文(记为p1),并缓存p1之后,确定是否满足第一条件,若第一设备确定不满足第一条件,则继续确定是否满足第二条件,若第一设备确定不满足第二条件,则第一设备发送第二个第一报文(记为p2),第一设备缓存p2之后,继续确定是否满足第一条件,若第一设备确定不满足第一条件,则继续确定是否满足第二条件,若第一设备确定满足第二条件,则第一设备发送第二报文,此时第一设备缓存了p1和p2,则第一设备可以对p1和p2进行异或编码得到第二报文(记为r
1-2
),r
1-2
=p1

p2。
96.如上文所述,第二报文是第一设备对缓存的一个或多个第一报文进行编码得到的,因此,第二报文也可以称作编码报文,相应地,第一报文是未编码的报文,可以称作原始报文。
97.图4和图5示出了本技术实施例提供的第一报文和第二报文的格式。若n个第一报文是同一个udp流中的报文,则第一报文和第二报文的格式可以如图4所示。若n个第一报文中的至少两个第一报文是不同udp流中的报文,则第一报文和第二报文的格式可以如图5所示。
98.如图4中的(a)所示,第一报文可以包括以下字段:ip头、udp头、类型、报文编号和载荷。如图4中的(b)所示,第二报文可以包括以下字段:ip头、udp头、类型、起始编号、报文数量和载荷。
99.如图5中的(a)所示,第一报文可以包括以下字段:ip头、内容标识(context identifier,xid)、类型、报文编号、udp头和载荷。如图5中的(b)所示,第二报文可以包括以下字段:ip头、xid、类型、起始编号、报文数量、udp头和载荷。
100.其中,类型用于指示报文的类型,类型的大小可以是8比特(bits),例如,类型的值为“0”可以表示原始报文,即其载荷没有被编码,类型的值为“1”可以表示编码报文,即其载荷被编码;或者,类型的值为“1”可以表示编码报文,类型的值为“0”可以表示原始报文。
101.报文编号的大小可以是32bits,用于唯一识别一个原始报文。报文编号的值可以是按发送原始报文的顺序确定的,例如,发送的第一个原始报文,其报文编号可以是1,发送的第二个原始报文,其报文编号可以是2,
……
,发送的第n个原始报文,其报文编号可以是n。
102.起始编号的大小可以是32bits,用于指示编码报文作用于的第一个原始报文的编号。例如,编码报文是由编号为1的报文至编号为n的报文编码得到的,则起始编号为1。
103.报文数量的大小可以是16bits,用于指示编码报文作用的原始报文的数量。例如,编码报文是由编号为1的报文至编号为n的报文编码得到的,则报文数量为n。
104.xid用于指示不同udp流中的报文共同使用一个序号序列,以及不同udp流中的报
文在发送端(例如第一设备)共享一个编码上下文,即不同udp流中的报文使用共同的定时器、计数器和编码报文缓存。相应地,在接收端(例如第二设备),不同udp流中的报文共享一个解码上下文,使用共同的解码报文缓存。
105.s360,第一设备在发送第二报文之后,清空缓存的一个或多个第一报文。
106.例如,第一设备发送了报文p1、p2和p3之后,达到了发送第二报文的条件,则第一设备在发送了第二报文之后,清空报文p1、p2和p3。
107.如上文所述,第一设备在发送第二报文之后,还重启定时器。
108.若第一设备维护了计数器,用于对第一报文进行计数,则第一设备在发送第一报文之后,还重启计数器。
109.进一步地,若第一设备继续生成或接收第一报文,则继续执行s310至s360,直至发送完所有的第一报文(例如,n个第一报文)。
110.需要说明的是,上文实施例中仅以第一设备先确定是否满足第一条件,后确定是否满足第二条件为例进行说明,不应对本技术实施例构成任何限定。例如,第一设备可以先确定是否满足第二条件,若满足第二条件,则第一设备发送第二报文,若不满足第二条件,则第二设备进一步确定是否满足第一条件,若满足第一条件,则第一设备发送第二报文,若不满足第一条件,则第一设备继续发送第一报文。又例如,第一设备可以同时判断是否满足第一条件和是否满足第二条件,在满足第一条件和第二条件中的任意一个的情况下,第一设备发送第二报文,在第一条件和第二条件都不满足的情况下,第一设备继续发送第一报文。
111.相比于现有的固定编码窗口触发的方式,本技术实施例通过采用定时触发的方式触发第一设备发送编码报文(即第二报文),可以避免在报文稀疏的场景下有可能引来时延过大的弊端,从而保证了时延需求。例如,rrt=10ms,预设时长为1ms,则在定时触发机制中,若发生丢包,则最大引入的额外时延是1ms。
112.本技术实施例在采用定时触发的方式的情况下,进一步地还可以引入固定编码窗口触发的方式,在报文比较密集的情况下,若定时器的定时时长没有达到预设时长,但是固定编码窗口到达时,也可以触发第一设备发送编码报文,从而保证了报文传输的效率。
113.此外,当一条udp流的流量太小时,编码窗口不可避免的也就太小,在此情况下,本技术实施例可以采用将多条udp流捆做一条流来对待,从而可以使得编码窗口增大,在编码窗口增大的情况下,也可以减小资源代价消耗。
114.下面结合本技术实施例提供的装置说明本技术实施例提供的传输报文的方法。
115.图6示出了本技术实施例提供的发送设备(例如第一设备)的结构示意图。发送设备可以包括:调度器、报文计数器、定时器、收发器。
116.其中,收发器可以用于获取待发送报文(例如,第一报文);收发器还可以用于通过网络发送待发送报文或编码报文;调度器可以用于缓存待发送报文或编码报文;调度器还可以用于对待发送报文进行编码得到编码报文;调度器还可以用于控制定时器的开启、关闭或更新;调度器还可以用于控制计数器的开启、关闭或更新。
117.下面以图6示出的发送设备为例,说明本技术实施例提供的传输报文的方法。
118.假设预设时长为t,预设编码窗口尺寸为m。
119.(1)当收发器获取到一个待发送报文,调度器更新编码报文中的报文数量n加1,以
及更新编码报文的载荷p,p可以为当前待发送报文载荷和当前编码报文载荷的异或。例如,当前编码报文的报文数量n为2,载荷p为p1

p2,当收发器获取到报文p3,则调度器更新n为3,p为p1

p2

p3;
120.(2)收发器通过网络将待发送报文发送出去;
121.(3)调度器更新报文计数器加1;
122.(4)调度器同时检查计数器的计数值和定时器的定时时长:
123.若计数器的计数值等于m或者定时器的定时时长等于t,则收发器通过网络将编码报文发送出去;进一步地,调度器将编码报文载荷p初始为0,将起始编号初始化为s+n+1,将报文数量n复位为0,重启计数器和定时器,即将计数器计数值和定时器的定时时长复位为0。
124.若计数器的计数值小于m,且定时器的定时时长小于t,则发送设备继续发送下一个待发送报文。
125.图7示出了本技术实施例提供的接收设备(例如第二设备)的结构示意图。接收设备可以包括:接收调度器、收发器。其中,收发器可以用于从网络中接收报文;接收调度器可以用于判断报文的类型,还可以用于解码编码报文,还用于将报文提交给上层应用。可选地,若接收设备接收的报文是发送设备以广播的方式发送的,则接收调度器还可以用于判断接收的报文是否为本节点报文。
126.下面以图7示出的接收设备为例,说明本技术实施例提供的传输报文的方法。
127.(1)收发器从网络中接收一个报文;
128.(2)判断接收的报文的类型:
129.若接收的报文为原始报文,则接收调度器将接收到的报文提交给上层应用;进一步地,更新当前解码报文的载荷r,r可以为当前接收的报文载荷和当前解码报文载荷的异或。例如,当前接收报文的载荷为p3,当前解码报文的载荷r为p1,则接收调度器将解码报文的载荷r更新为p1

p3。
130.可选地,若接收设备接收的报文是发送设备以广播的方式发送的,则接收调度将接收到的报文提交给上层应用之前,还可以判断接收的报文是否为本节点的报文。若接收的报文为本节点的报文,则接收调度器将接收的报文提交给上层应用;若接收的报文不是本节点的报文,则接收调度器丢弃接收的报文。
131.若接收的报文为原始报文,且当前接收的报文与上一个原始报文的报文编号不连续,则表示中间有报文丢失,则接收调度器置解码报文的原始报文编号为丢失的报文的编号,并置解码报文有效。例如,当前接收的报文的编号为3,上一个原始报文的编号为1,则表示编号为2的报文丢失,则接收调度器将解码报文的原始报文编号置为2,并置有效。
132.可选地,若接收设备接收的报文是发送设备以广播的方式发送的,则接收调度器在置解码报文的原始报文编号为丢失报文编号之后,还可以判断丢失的报文是否为本节点的报文。若丢失的报文为本节点的报文,则接收调度器置解码报文的原始编号为丢失报文编号,并置解码报文有效。
133.若接收的报文为编码报文,则更新当前解码报文的载荷r,r可以为当前接收的报文载荷和当前解码报文载荷的异或。例如,当前接收报文为编码报文r
1-3
,当前解码报文的载荷r为p1

p3,则接收调度器将解码报文的载荷r更新为p1

p3
⊕r1-3

134.若接收的报文为编码报文,接收调度器进一步判断解码报文是否有效。
135.若解码报文有效,则接收调度器将解码报文提交给上层应用,可以理解,此时解码报文即为在先丢失的原始报文。例如,前文所述,在丢失编号为2的报文p2的情况下,解码报文被置为有效,接收到编码报文r
1-3
,解码报文被更新为p1

p3
⊕r1-3
,根据r
1-3
=p1

p2

p3,可以得到:p1

p3
⊕r1-3
=p2。
136.若解码报文无效,则解码报文的原始报文编号x和载荷r都置为0。
137.需要说明的是,上文实施例仅以采用异或编码的方式对原始报文进行编码为例进行说明,不应对本技术实施例构成任何限定。以及上文实施例仅以丢失一个报文为例说明恢复丢失报文的方法,具体实现中,发送设备可以对原始报文采用其他的编码方式,或者采用交叉异或编码的方式,以使得在丢失多个原始报文的情况下,接收设备也可以根据编码报文恢复出丢失的原始报文。具体地,发送设备对原始报文进行编码的方式可以参考现有技术。
138.上文结合图3至图7详细地描述了本技术实施例的方法,下文结合图8至图10详细地描述本技术实施例的装置。需要说明的是,图8至图10所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
139.图8是本技术实施例提供的通信装置的示意性框图。如图8所示,该通信装置2000可以包括处理单元2100和收发单元2200。
140.在一种可能的设计中,该通信装置2000可对应于上文方法实施例中的第一设备,例如,可以为第一设备,或者配置于第一设备中的部件(如芯片或芯片系统等)。
141.应理解,该通信装置2000可对应于根据本技术实施例的方法300中的第一设备,该通信装置2000可以包括用于执行图3中的方法300中第一设备执行的方法的单元。并且,该通信装置2000中的各单元和上述其他操作和/或功能分别为了实现3中的方法300中的相应流程。应理解,各单元执行上述相应步骤的具体过程在上述方法实施例中已经详细说明,为了简洁,在此不再赘述。
142.还应理解,通信装置2000中处理单元2100可以实现的功能可以对应于,图6示出的发送设备中的调度器、定时器和报文计数器一起实现的功能;收发单元2200可以实现的功能可以对应于图6示出的发送设备中的收发器实现的功能。
143.图9是本技术另一实施例的通信装置的示意性框图。图9所示的通信装置3000可以包括:存储器3100、处理器3200、以及通信接口3300。其中,存储器3100、处理器3200,通信接口3300通过内部连接通路相连,该存储器3100用于存储指令,该处理器3200用于执行该存储器3100存储的指令,以控制输入/输出接口3000接收/发送报文。可选地,存储器3100既可以和处理器3200通过接口耦合,也可以和处理器3200集成在一起。
144.需要说明的是,上述通信接口3300使用例如但不限于收发器一类的收发装置,来实现通信装置3000与其他设备或通信网络之间的通信。上述通信接口3300还可以包括输入/输出接口(input/output interface)。
145.在实现过程中,上述方法的各步骤可以通过处理器3200中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的
存储介质中。该存储介质位于存储器3100,处理器3200读取存储器3100中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
146.应理解,本技术实施例中,该处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
147.还应理解,本技术实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。
148.图10是本技术实施例的一种芯片系统的示意图。图10所示的芯片系统4000包括:逻辑电路4100以及输入/输出接口(input/output interface)4200,所述逻辑电路用于与输入接口耦合,通过所述输入/输出接口传输数据(例如第一指示信息),以执行图3所述的方法。
149.本技术实施例还提供了一种处理装置,包括处理器和接口;所述处理器用于执行上述任一方法实施例中的方法。
150.应理解,上述处理装置可以是一个或多个芯片。例如,该处理装置可以是现场可编程门阵列(field programmable gate array,fpga),可以是专用集成芯片(application specific integrated circuit,asic),还可以是系统芯片(system on chip,soc),还可以是中央处理器(central processor unit,cpu),还可以是网络处理器(network processor,np),还可以是数字信号处理电路(digital signal processor,dsp),还可以是微控制器(micro controller unit,mcu),还可以是可编程控制器(programmable logic device,pld)或其他集成芯片。
151.在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
152.应注意,本技术实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储
介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
153.可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
154.根据本技术实施例提供的方法,本技术还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行图3所示实施例中第一设备执行的方法。
155.根据本技术实施例提供的方法,本技术还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行图3所示实施例中第一设备执行的方法。
156.根据本技术实施例提供的方法,本技术还提供一种系统,其包括前述的一个或多个第设备。
157.上述各个装置实施例中第一设备和方法实施例中的第一设备完全对应,由相应的模块或单元执行相应的步骤,例如收发单元(收发器)执行方法实施例中接收或发送的步骤,除发送、接收外的其它步骤可以由处理单元(处理器)执行。具体单元的功能可以参考相应的方法实施例。其中,处理器可以为一个或多个。
158.在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
159.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
160.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、
装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
161.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
162.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
163.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
164.在上述实施例中,各功能单元的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令(程序)。在计算机上加载和执行所述计算机程序指令(程序)时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
165.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
166.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1