一种时间敏感网络报文转发方法、装置、终端及存储介质转让专利

申请号 : CN202110429224.4

文献号 : CN112995064B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄勇李伟超成剑詹双平冯景斌汪漪

申请人 : 鹏城实验室

摘要 :

本发明公开了一种时间敏感网络报文转发方法、装置、终端及存储介质,方法包括:接收待转发报文,确定待转发报文对应的目标业务流,获取目标业务流已发送报文的字节数和目标业务流的承诺服务速率;根据待转发报文的字节数和已发送报文的字节数确定待转发报文的发送轮数和所属实时队列,将待转发报文加入所属实时队列;在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所属实时队列中的待转发报文时,若所属实时队列的剩余读取时间大于待转发报文的发送时间且待转发报文的发送轮数不大于当前轮数,则发送待转发报文。本发明可以支持对时间敏感网络中的业务流的动态增加/删除。

权利要求 :

1.一种时间敏感网络报文转发方法,其特征在于,所述方法包括:接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率;

根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属实时队列;

在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转发报文时,若所述所属实时队列的剩余读取时间大于所述待转发报文的发送时间且所述待转发报文的发送轮数不大于当前轮数,则发送所述待转发报文。

2.根据权利要求1所述的时间敏感网络报文转发方法,其特征在于,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,包括:

当所述待转发报文不是所述目标业务流的首报文时,根据第一预设公式和第二预设公式确定所述发送轮数和所述所属实时队列;

其中,所述第一预设公式为:

所述第二预设公式为:

其中,为所述发送轮数,为所述所属实时队列的序号, 为当前轮数, 为所述目标业务流已发送报文的字节数, 为所述待转发报文的字节数, 为所述预设时间周期,为所述目标业务流的承诺服务速率, 为所述目标业务流的初始轮数, 为实时队列的个数, 为所述目标业务流的初始队列序号,“/”表示整除取商,“%”表示整除取余数。

3.根据权利要求2所述的时间敏感网络报文转发方法,其特征在于,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列之前,包括:

获取接收所述目标业务流的首报文时的轮数作为所述目标业务流的初始轮数;

根据接收所述目标业务流的首报文时正在读取的队列确定所述目标业务流的初始队列。

4.根据权利要求1所述的时间敏感网络报文转发方法,其特征在于,所述将所述待转发报文加入所述所属实时队列,包括:当所述待转发报文的发送轮数与当前轮数的差值不大于预设阈值时,将所述待转发报文加入所述所属实时队列;

当所述待转发报文的发送轮数与当前轮数的差值大于预设阈值时,丢弃所述待转发报文。

5.根据权利要求1所述的时间敏感网络报文转发方法,其特征在于,所述读取到所述所属实时队列中的所述待转发报文之后,还包括:若所述待转发报文的发送轮数大于当前轮数,则将所述待转发报文置于所述所属实时队列的队尾;

若所述所属实时队列剩余的读取时间小于所述待转发报文的发送时间,则读取所述所属实时队列的下一个队列中的报文。

6.根据权利要求5所述的时间敏感网络报文转发方法,其特征在于,所述将所述待转发报文置于所述所属实时队列的队尾,包括:当所述所属实时队列中存在隔离标签时,将所述待转发报文直接置于所述所属实时队列的队尾;

当所述所属实时队列中不存在隔离标签时,在所述所属实时队列插入隔离标签后再将所述待转发报文置于所述所属实时队列的队尾。

7.根据权利要求6所述的时间敏感网络报文转发方法,其特征在于,所述在每一轮中依次读取各个实时队列中的报文,包括:在读取目标实时队列的报文时,若所述目标实时队列为空或读取到所述隔离标签,则读取BE队列中的报文;

当从所述BE队列中读取到的当前报文不能在所述目标实时队列剩余的读取时间内完成发送时,读取所述目标实时队列的下一个队列中的报文;

其中,所述BE队列中包括BE业务流的报文。

8.一种时间敏感网络报文转发装置,其特征在于,包括:接收模块,所述接收模块用于接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率;

确定模块,所述确定模块用于根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属实时队列;

调度模块,所述调度模块用于在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转发报文时,若所述所属实时队列的剩余读取时间大于所述待转发报文的发送时间且所述待转发报文的发送轮数不大于当前轮数,则发送所述待转发报文。

9.一种终端,其特征在于,所述终端包括:处理器、与处理器通信连接的计算机可读存储介质,所述计算机可读存储介质适于存储多条指令,所述处理器适于调用所述计算机可读存储介质中的指令,以执行实现上述权利要求1‑7任一项所述的时间敏感网络报文转发方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1‑7任一项所述的时间敏感网络报文转发方法的步骤。

说明书 :

一种时间敏感网络报文转发方法、装置、终端及存储介质

技术领域

[0001] 本发明涉及时间敏感网络技术领域,特别涉及一种时间敏感网络报文转发方法、装置、终端及存储介质。

背景技术

[0002] 信息化技术带来工业自动化的深入变革,很多新的业务需要确定性的网络通信保证,如高质量音视频传输、远程医疗、无人机群控制等等,TSN(Time‑Sensitive 
Networking,时间敏感网络)被广泛应用,实现TSN技术的关键是要保证业务数据流的低时
延可靠传送。
[0003] TSN标准802.1Qbv提出TAS,即时间感知整形,TAS时间感知调度程序将数据流量划分为不同的类型,为时间敏感性关键数据分配特定的时间槽,并且在规定的时间节点,网络
中的所有节点都必须优先确保重要数据帧的通过,TAS是通过门控队列GCL(Gate Control 
List)实现精确时间调度的,基于GCL控制的实现思想,针对一个低时延保证的业务,需要预
先针对该业务流的数据发送周期与发送的数据流大小,为业务在沿途确定需要打开的门控
时刻与时长。利用一个全网可视的控制器可以规划做到这一点,当有上千条以上的业务时,
控制器需要一个复杂的算法来保证所有业务在沿途所有网络节点的出口产生GCL门控信
息,但是这种集中计算各网络出口的GCL,需要预先掌握所有业务流的需求,然后集中计算
求解,当需要新增一条业务流时,需要将所有业务流输入到算法中重新计算,不能满足现实
中需要动态增加/删除流的效果。
[0004] 因此,现有技术还有待改进和提高。

发明内容

[0005] 针对现有技术的上述缺陷,本发明提供一种时间敏感网络报文转发方法、装置、终端及存储介质,旨在解决现有技术中基于GCL控制不能满足动态增加/删除流的问题。
[0006] 为了解决上述技术问题,本发明所采用的技术方案如下:
[0007] 本发明的第一方面,提供一种时间敏感网络报文转发方法,所述方法包括:
[0008] 接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率;
[0009] 根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属实时队列;
[0010] 在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转发报文时,若所述所属实时队
列的剩余读取时间大于所述待转发报文的发送时间且所述待转发报文的发送轮数不大于
当前轮数,则发送所述待转发报文。
[0011] 所述的时间敏感网络报文转发方法,其中,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,包括:
[0012] 当所述待转发报文不是所述目标业务流的首报文时,根据第一预设公式和第二预设公式确定所述发送轮数和所述所属实时队列;
[0013] 其中,所述第一预设公式为:
[0014] ;
[0015] 所述第二预设公式为:
[0016] ;
[0017] 其中, 为所述发送轮数, 为所述所属实时队列的序号, 为当前轮数, 为所述目标业务流已发送报文的字节数, 为所述待转发报文的字节数, 为所述预设时
间周期, 为所述目标业务流的承诺服务速率, 为所述目标业务流的初始轮数, 为实
时队列的个数, 为所述目标业务流的初始队列序号,“/”表示整除取商,“%”表示整除取
余数。
[0018] 所述的时间敏感网络报文转发方法,其中,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列之前,包括:
[0019] 获取接收所述目标业务流的首报文时的轮数作为所述目标业务流的初始轮数;
[0020] 根据接收所述目标业务流的首报文时正在读取的队列确定所述目标业务流的初始队列。
[0021] 所述的时间敏感网络报文转发方法,其中,所述将所述待转发报文加入所述所属实时队列,包括:
[0022] 当所述待转发报文的发送轮数与当前轮数的差值不大于预设阈值时,将所述待转发报文加入所述所属实时队列;
[0023] 当所述待转发报文的发送轮数与当前轮数的差值大于预设阈值时,丢弃所述待转发报文。
[0024] 所述的时间敏感网络报文转发方法,其中,所述读取到所述所属实时队列中的所述待转发报文之后,还包括:
[0025] 若所述待转发报文的发送轮数大于当前轮数,则将所述待转发报文置于所述所属实时队列的队尾;
[0026] 若所述所属实时队列剩余的读取时间小于所述待转发报文的发送时间,则读取所述所属实时队列的下一个队列中的报文。
[0027] 所述的时间敏感网络报文转发方法,其中,所述将所述待转发报文置于所述所属实时队列的队尾,包括:
[0028] 当所述所属实时队列中存在隔离标签时,将所述待转发报文直接置于所述所属实时队列的队尾;
[0029] 当所述所属实时队列中不存在隔离标签时,在所述所属实时队列插入隔离标签后再将所述待转发报文置于所述所属实时队列的队尾。
[0030] 所述的时间敏感网络报文转发方法,其中,所述在每一轮中依次读取各个实时队列中的报文,包括:
[0031] 在读取目标实时队列的报文时,若所述目标实时队列为空或读取到所述隔离标签,则读取BE队列中的报文;
[0032] 当从所述BE队列中读取到的当前报文不能在所述目标实时队列剩余的读取时间内完成发送时,读取所述目标实时队列的下一个队列中的报文;
[0033] 其中,所述BE队列中包括BE业务流的报文。
[0034] 本发明的第二方面,提供一种时间敏感网络报文转发装置,包括:
[0035] 接收模块,所述接收模块用于接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率;
[0036] 确定模块,所述确定模块用于根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属
实时队列;
[0037] 调度模块,所述调度模块用于在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转
发报文时,若所述所属实时队列的剩余读取时间大于所述待转发报文的发送时间且所述待
转发报文的发送轮数不大于当前轮数,则发送所述待转发报文。
[0038] 本发明的第三方面,提供一种终端,所述终端包括处理器、与处理器通信连接的计算机可读存储介质,所述计算机可读存储介质适于存储多条指令,所述处理器适于调用所
述计算机可读存储介质中的指令,以执行实现上述任一项所述的时间敏感网络报文转发方
法的步骤。
[0039] 本发明的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上
述任一项所述的时间敏感网络报文转发方法的步骤。
[0040] 与现有技术相比,本发明提供了一种时间敏感网络报文转发方法、装置、终端及存储介质,所述的时间敏感网络报文转发方法,设置多个实时队列,每一轮中依次读取各个实
时队列中的报文,在接收到待转发报文后,根据待转发报文对应的目标业务流的已发送字
节数和承诺服务速率确定待转发报文的轮数和所属实时队列,当读取到待转发报文时,若
待转发报文所属实时队列的剩余读取时间大于待转发报文的发送时间且待转发报文的发
送轮数不大于当前轮数,则发送所述待转发报文,不需要设置门控信息,可以支持对时间敏
感网络中的业务流的动态增加/删除。

附图说明

[0041] 图1为本发明提供的时间敏感网络报文转发方法的实施例的流程图;
[0042] 图2为本发明提供的时间敏感网络报文转发方法的实施例中读取目标业务流的信息的示意图;
[0043] 图3为本发明提供的时间敏感网络报文转发方法的实施例中报文在网络节点内的流转示意图;
[0044] 图4为本发明提供的时间敏感网络报文转发方法的实施例中读取队列中的报文时的逻辑框图;
[0045] 图5为本发明提供的时间敏感网络报文转发装置的实施例的结构原理图;
[0046] 图6为本发明提供的终端的实施例的原理示意图。

具体实施方式

[0047] 为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于
限定本发明。
[0048] 本发明提供的时间敏感网络报文转发方法,可以是由时间敏感网络中任一个网络节点执行。
[0049] 实施例一
[0050] 如图1所示,所述时间敏感网络报文转发方法的一个实施例中,包括步骤:
[0051] S100、接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率。
[0052] 当节点接收到待转发报文后,确定所述待转发报文对应的目标业务流,在本实施例中,目标业务流为实时业务流,即存在转发时延要求的流。随后查找所述待转发报文所述
业务流已发送报文的字节数和所述目标业务流的承诺服务速率,具体地,查找所述目标业
务流已发送报文的字节数和所述目标业务流的承诺服务速率,可以是通过流信息表来实
现,具体地,流信息表中记录当前网络中所有实时流的信息,如图2所示,可以采用2‑left哈
希算法建立索引表,从索引表再查找流信息表。2‑left哈希索引表包括两个相等大小的哈
希表,分别称为A表和B表,当接收到所述待转发报文后,提取报文的关键字即f‑key,通过两
个哈希函数分别将f‑key哈希到表A和表B两个索引位置,每个索引位置建立M个哈希桶,每
个哈希桶存放对应f‑key的一个压缩值ckey及指向留信息表的索引index,当存贮一个f‑
key时,两个索引位置总,选择占用哈希桶少的位置,如果两个索引位置占用相同,则总是将
f‑key存在在A表,理论和经验表明,取哈希表大小A+B>1.5N,N为流的数量,即可得到很好
的散列效果。考虑到仍可能出现两个索引位置完成占满的情况,设置一个很小的列表来应
用极端的哈希冲突,一般这个小的列表大小可取N/20。对于需要单节点支持2K条业务流的
情况,上述流信息表结构需要占用的空间大约为450B,每个报文只需要三次存贮访问,易于
在硬件芯片中实现。当然,可以理解的是,这里只是举例说明了流信息表的实现方式,本领
域技术人员可以选择其他的流信息表实现方式以使得在节点接收到待转发报文后能够查
询到所述待转发报文对应的所述目标业务流的相关信息。
[0053] 若所述待转发报文不是实时业务流的报文,说明所述待转发报文是BE(Best Effort,尽力而为)业务流的报文,直接将所述待转发报文送入BE队列。
[0054] S200、根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文内的发送轮数和所属实时队列,将所述待转发报文加入所述所属实时队列。
[0055] 在本实施例中,节点中设置多个实时队列(如图3中的Q1、Q2、Q3),每个实时业务流的报文会被加入至其中一个实时队列中,节点周期性地读取各个实时队列中的报文,每轮
中依次读取各个实时队列中的报文并记录轮数,每轮结束后轮数加一,根据读取到的报文
的发送轮数和当前轮数确定报文当前是否需要被发送。
[0056] 值得说明的是,本实施例中所述待转发报文的发送轮数并不是所述待转发报文实际被发送时的轮数,而是一个期望值,与所述待转发报文的实际被发送时的轮数可能并不
一致,这点将在后文被详细说明。
[0057] 具体地,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,包括:
[0058] 当所述待转发报文不是所述目标业务流的首报文时,根据第一预设公式和第二预设公式确定所述发送轮数和所述所属实时队列;
[0059] 其中,所述第一预设公式为:
[0060] ;
[0061] 所述第二预设公式为:
[0062] ;
[0063] 其中, 为所述发送轮数, 为所述所属实时队列的序号, 为当前轮数, 为所述目标业务流已发送报文的字节数, 为所述待转发报文的字节数, 为所述预设
时间周期, 为所述目标业务流的承诺服务速率, 为所述目标业务流的初始轮数,
为实时队列的个数, 为所述目标业务流的初始队列序号,“/”表示整除取商,“%”表示整
除取余数。
[0064] 所述目标业务流的初始队列序号和所述目标业务流的初始轮数为所述目标业务流的首报文的发送轮数和所属实时队列。
[0065] 所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列之前,包括:
[0066] 获取接收所述目标业务流的首报文时的轮数作为所述目标业务流的初始轮数;
[0067] 根据接收所述目标业务流的首报文时正在读取的队列确定所述目标业务流的初始队列。
[0068] 所述目标业务流的首报文是节点第一次接收到的所述目标业务流的报文,当节点接收到所述目标业务流的首报文时,将当前轮数作为所述目标业务流的初始轮数即 ,在
确定所述目标业务流的初始队列时,可以是将正在读取的队列作为所述目标业务流的初始
队列,在一种可能的实现方式中,基于所述目标业务流的首报文能够被尽快被转发的原则
确定所述目标业务流的初始队列,即,确定接收所述目标业务流的首报文时将所述目标业
务流的首报文加入正在读取的队列是否可以实现在正在读取队列的当前读取周期中被发
送,具体地,可以根据正在读取队列的已读取时间、所述目标业务流的首报文的字节长度来
确定,若是,则将所述目标业务流的首报文加入当前正在读取的队列,即将当前正在读取的
队列作为所述目标业务流的初始队列 ,若否,则将所述目标业务流的首报文加入正在读
取队列的下一个队列,即将正在读取的队列的下一个队列作为所述目标业务流的初始队列

[0069] 如图3所示,在确定了所述待转发报文的发送轮数和所属实时队列之后,将所述待转发报文加入所述所属实时队列。
[0070] 在实际中,低时延的实时业务流的速率是波动的,存在突发,当所述目标业务流有超过容限的突发时,应丢弃突发的报文,因此,在本实施例中,所述将所述待转发报文加入
所述所属实时队列,包括:
[0071] 当所述待转发报文的发送轮数与当前轮数的差值不大于预设阈值时,将所述待转发报文加入所述所属实时队列;
[0072] 当所述待转发报文的发送轮数与当前轮数的差值大于预设阈值时,丢弃所述待转发报文。
[0073] 即,在将所述待转发报文加入所述所属实时队列之前,计算所述待转发报文的发送轮数与当前轮数的差值: ,若差值大于预设阈值时,表明所述目标业务流存在超
过容限的突发,丢弃所述待转发报文。所述预设阈值可以根据节点中可用于报文转发的RAM
空间大小来决定,例如可以取3‑8之间的值。
[0074] 请再次参阅图1,本实施例提供的时间敏感网络报文转发方法还包括步骤:
[0075] S300、在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转发报文时,若所述所属
实时队列的剩余读取时间大于所述待转发报文的发送时间且所述待转发报文的发送轮数
不大于当前轮数,则发送所述待转发报文。
[0076] 值得说明的是,虽然在本说明中所述在每一轮中依次读取各个实时队列中的报文的步骤的序号在接收到所述待转发报文的步骤序号之后,但是本发明中在每一轮中依次读
取各个实时队列中的报文的步骤并不限定在接收到所述待转发报文之后进行,而是在节点
开始执行本实施例提供的时间敏感网络报文时一直重复执行。
[0077] 节点周期性地依次读取各个实时队列中的报文,如图3所示,假设节点中设置三个队列Q1、Q2和Q3三个实时队列,那么在每一轮中,先读取队列Q1中的报文,再读取Q2中的报
文、Q3中的报文,每次每个队列的读取时间不超过预设时间周期,完成一轮,再开始新的一
轮,每次完成一轮后轮数加一。所述预设时间周期基于时间敏感网络服务的最高速率业务
选择或基于出口线路的链路带宽选择,比如,如果业务最高速率或出口线路带宽是10Gbps,
考虑到每次读取队列时至少可以输出一个最长报文(1500字节),则所述预设时间周期为
1500*8/10Gbps=1.2微秒。
[0078] 在读取所述所属实时队列时,当读取到所述待转发报文时,若所述所属实时队列的剩余读取时间大于所述待转发报文的发送时间,那么确定所述待转发报文的发送轮数是
否大于当前轮数,若不大于,那么发送所述待转发报文。获取队列中的报文的发送轮数可以
是在将报文加入至队列时将报文的发送轮数 加入至报文的报头,从而可以在读取到报文
时获取报文的发送轮数。当开始读取所述所属实时队列中的报文时开始计时,每次对所述
所属实时队列的总读取时间不超过预设时间周期,即,所述所属实时队列的剩余读取时间
为所述预设时间周期减去该次对所述所属实时队列已经进行了的读取时间,假设当前时刻
为t,本轮中开始对所述所属实时队列进行读取的时刻为t0,所述预设时间周期为T,那么所
述所属实时队列的剩余读取时间为T‑(t0‑t)。
[0079] 在将所述待转发报文发送出去后,继续读取所述所属实时队列中的下一个报文,直至从所述所属实时队列中读取到的报文的发送时间大于所述所属实时队列的剩余读取
时间或者所述所属实时队列的读取时间达到所述预设时间周期或者所述所属实时队列的
报文为空或者读取到隔离标签,具体将在后文被说明。
[0080] 从上面的说明不难看出,本实施例提供的时间敏感网络报文转发方法,可以做到对每个业务流的分别独立调度,并且每条流的报文转发时刻是根据流的承诺速率调度的,
可以覆盖较广的流速范围,对于超出承诺速率的流,能够做到及时整形。并且即使链路上只
有一条流,报文转发也不会超过流最大承诺速率,这样,流报文不会因更充足的带宽而在链
路上产生更快速传送从而挤压带宽,实现了non‑working conserving(非工作时段带宽保
护)。本实施例提供的时间敏感网络报文转发方法,可以由时间敏感网络中的各个节点分别
独立执行,这样,每个节点均是根据业务流的承诺速率以及已发送的报文字节数确定报文
转发的先后顺序,报文转发 的沿路不会出现抖动的持续积累。
[0081] 进一步地,在读取到所述待转发报文之后,还包括:
[0082] 若所述待转发报文的发送轮数大于当前轮数,则将所述待转发报文置于所述所属实时队列的队尾;
[0083] 若所述所属实时队列剩余的读取时间小于所述待转发报文的发送时间,则读取所述所属实时队列的下一个队列中的报文。
[0084] 在本实施例中,为了增加对业务突发的适应,防止突发的业务报文被大量丢弃,将队列中发送轮数大于当前轮数的报文回绕到队列的队尾,而由于在不满足切换队列的情况
下,对队列中的报文的读取是持续的,因此,当报文回绕到队尾后,如不进行相应设置,会导
致报文被重复读取和判断,浪费资源,因此,在本实施例中,设置有隔离标签,具体地,所述
将所述待转发报文置于所述所属实时队列的队尾,包括:
[0085] 当所述所属实时队列中存在隔离标签时,将所述待转发报文直接置于所述所属实时队列的队尾;
[0086] 当所述所属实时队列中不存在隔离标签时,在所述所属实时队列插入隔离标签后再将所述待转发报文置于所述所属实时队列的队尾。
[0087] 在一个队列中最多只存在一个隔离标签,只要读取到隔离标签,说明隔离标签后的报文是已经被读取过并判断在本次周期内不需要被发送的报文,此时可以读取BE队列中
的报文,具体地,所述在每一轮中依次读取各个实时队列中的报文,包括:
[0088] 在读取目标实时队列的报文时,若所述目标实时队列为空或读取到所述隔离标签,则读取BE队列中的报文;
[0089] 当从所述BE队列中读取到的当前报文不能在所述目标实时队列剩余的读取时间内完成发送时,读取所述目标实时队列的下一个队列中的报文;
[0090] 其中,所述BE队列中包括BE业务流的报文。
[0091] 对于每一个实时队列,若该队列为空,即当前该队列中没有待发送的报文,当读取到隔离标签时,隔离标签后的报文是在本次周期内不需要被发送的报文,因此当队列为空
或从队列中读取到隔离标签时,则节点开始读取BE队列中的报文。
[0092] 如图4所示,每次对队列中的报文进行读取的具体步骤可以总结如下:
[0093] 1、当一个读取周期开始时,首先置插入标签允许标记F为1。插入标签允许标记F,用于控制在一个调度周期内,向一个队列只能插入1个隔离标签。每个队列都有一个对应的
F标记。
[0094] 2、从队列中读报文,同时获取报文的大小(size)及报文头的r值。
[0095] 3、如果队列空,或者如果读到一个隔离标签,则执行4;否则执行5。
[0096] 4、弹出隔离标签,并读取BE队列。转9。
[0097] 5、判断当前报文是否可以在当前时间周期内发送完,是则执行6,否则执行9。
[0098] 6、判断r是否大于R值,如果r不大于R,则发送报文,然后转2处理下一个报文;否则转7。
[0099] 7、判断F是否=1是则插入隔离标签到队尾,并置F=0,然后转8。如果F=0,则直接转8。
[0100] 8、将报文回绕到队尾,然后转2处理下一个报文。
[0101] 9、令Q=Q+1, 如果Q是最后一个队列,则Q=0指向第1个队列。当完成一轮队列读取时,R=R+1。
[0102] 10、等待本周期结束。本周期时间到后,会开始下一个队列的读取,重复上述1‑10的流程。
[0103] 综上所述,本实施例提供一种时间敏感网络报文转发方法,设置多个实时队列,每一轮中依次读取各个实时队列中的报文,在接收到待转发报文后,根据待转发报文对应的
目标业务流的已发送字节数和承诺服务速率确定待转发报文的轮数和所属实时队列,当读
取到待转发报文时,若待转发报文所属实时队列的剩余读取时间大于待转发报文的发送时
间且待转发报文的发送轮数不大于当前轮数,则发送所述待转发报文,不需要设置门控信
息,可以支持对时间敏感网络中的业务流的动态增加/删除。
[0104] 应该理解的是,虽然本发明说明书附图中给出的的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有
明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而
且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段
并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执
行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少
一部分轮流或者交替地执行。
[0105] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取计算机可读存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的
流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任
何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、
可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储
器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种
形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM
(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线
(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM
(RDRAM)等。
[0106] 实施例二
[0107] 基于上述实施例,本发明还相应提供了一种时间敏感网络报文转发装置,如图5所示,所述时间敏感网络报文转发装置包括:
[0108] 接收模块,所述接收模块用于接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率,具
体如实施例一中所述;
[0109] 确定模块,所述确定模块用于根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属
实时队列,具体如实施例一中所述;
[0110] 调度模块,所述调度模块用于在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转
发报文时,若所述所属实时队列的剩余读取时间大于所述待转发报文的发送时间且所述待
转发报文的发送轮数不大于当前轮数,则发送所述待转发报文,具体如实施例一中所述。
[0111] 实施例三
[0112] 基于上述实施例,本发明还相应提供了一种终端,如图6所示,所述终端包括处理器10以及存储器20。图6仅示出了终端的部分组件,但是应理解的是,并不要求实施所有示
出的组件,可以替代的实施更多或者更少的组件。
[0113] 所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终
端上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure 
Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述终端
的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件
及各类数据。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实
施例中,存储器20上存储有时间敏感网络报文转发程序30,该时间敏感网络报文转发程序
30可被处理器10所执行,从而实现本申请中时间敏感网络报文转发方法。
[0114] 所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit, CPU),微处理器或其他芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执
行所述时间敏感网络报文转发方法等。
[0115] 在一实施例中,当处理器10执行所述存储器20中时间敏感网络报文转发程序30时实现以下步骤:
[0116] 接收待转发报文,确定所述待转发报文对应的目标业务流,获取所述目标业务流已发送报文的字节数和所述目标业务流的承诺服务速率;
[0117] 根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,将所述待转发报文加入所述所属实时队列;
[0118] 在每一轮中依次读取各个实时队列中的报文,每次每个实时队列的读取时间不超过预设时间周期,当读取到所述所属实时队列中的所述待转发报文时,若所述所属实时队
列的剩余读取时间大于所述待转发报文的发送时间且所述待转发报文的发送轮数不大于
当前轮数,则发送所述待转发报文。
[0119] 其中,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列,包括:
[0120] 当所述待转发报文不是所述目标业务流的首报文时,根据第一预设公式和第二预设公式确定所述发送轮数和所述所属实时队列;
[0121] 其中,所述第一预设公式为:
[0122] ;
[0123] 所述第二预设公式为:
[0124] ;
[0125] 其中, 为所述发送轮数, 为所述所属实时队列的序号, 为当前轮数,为所述目标业务流已发送报文的字节数, 为所述待转发报文的字节数, 为所述预
设时间周期, 为所述目标业务流的承诺服务速率, 为所述目标业务流的初始轮数,
为实时队列的个数, 为所述目标业务流的初始队列序号,“/”表示整除取商,“%”表示整
除取余数。
[0126] 其中,所述根据所述待转发报文的字节数和所述已发送报文的字节数确定所述待转发报文的发送轮数和所属实时队列之前,包括:
[0127] 获取接收所述目标业务流的首报文时的轮数作为所述目标业务流的初始轮数;
[0128] 根据接收所述目标业务流的首报文时正在读取的队列确定所述目标业务流的初始队列。
[0129] 其中,所述将所述待转发报文加入所述所属实时队列,包括:
[0130] 当所述待转发报文的发送轮数与当前轮数的差值不大于预设阈值时,将所述待转发报文加入所述所属实时队列;
[0131] 当所述待转发报文的发送轮数与当前轮数的差值大于预设阈值时,丢弃所述待转发报文。
[0132] 其中,所述读取到所述所属实时队列中的所述待转发报文之后,还包括:
[0133] 若所述待转发报文的发送轮数大于当前轮数,则将所述待转发报文置于所述所属实时队列的队尾;
[0134] 若所述所属实时队列剩余的读取时间小于所述待转发报文的发送时间,则读取所述所属实时队列的下一个队列中的报文。
[0135] 其中,所述将所述待转发报文置于所述所属实时队列的队尾,包括:
[0136] 当所述所属实时队列中存在隔离标签时,将所述待转发报文直接置于所述所属实时队列的队尾;
[0137] 当所述所属实时队列中不存在隔离标签时,在所述所属实时队列插入隔离标签后再将所述待转发报文置于所述所属实时队列的队尾。
[0138] 其中,所述在每一轮中依次读取各个实时队列中的报文,包括:
[0139] 在读取目标实时队列的报文时,若所述目标实时队列为空或读取到所述隔离标签,则读取BE队列中的报文;
[0140] 当从所述BE队列中读取到的当前报文不能在所述目标实时队列剩余的读取时间内完成发送时,读取所述目标实时队列的下一个队列中的报文;
[0141] 其中,所述BE队列中包括BE业务流的报文。
[0142] 实施例四
[0143] 本发明还提供一种计算机可读存储介质,其中,存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的时间敏感网络报文转发
方法的步骤。
[0144] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和
范围。