发明内容
本申请实施例提供一种调度方法及设备,能够在使用以太网承载CPRI数据时,按照固定传输窗口的顺序调度IQ数据流中的数据帧,降低IQ数据流的抖动。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供了一种调度方法,可以应用于报文交换设备,该交换设备上配置有m行n列的二维帧队列,m和n均为大于1的整数,二维帧队列的列表示队列,每个队列对应一种同相正交调制IQ数据流或对应背景BG数据流,每个队列用于存储所对应的数据流的数据帧,二维帧队列的行与调度周期相对应,调度周期包括多个传输窗口,每个队列对应至少一个传输窗口。该方法包括:交换设备周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧,并将获取到的数据帧通过输出端口发送给其它设备。
这样,当交换设备的入口端有多种IQ数据流时,交换设备可以将入端口的不同IQ数据流分别存入相应的队列中,从而根据传输窗口、队列与数据流的对应关系,按照确定的时间顺序将每种IQ数据流的数据帧从出端口发送出去,因而可以降低交换设备转发的IQ数据流的抖动。当采用以太网承载前传网络中的CPRI数据时,前传网络中的交换设备可以采用本申请实施例提供的调度方案,从而降低前传网络中IQ数据流的抖动。
在一种可能的实现方式中,BG数据流对应一个队列,与BG数据流对应的队列对应至少一个传输窗口;每种IQ数据流对应至少一个队列,与IQ数据流对应的每个队列对应一个传输窗口。
由于BG数据流的优先级较低,且实时性要求不高,因而可以仅为BG数据流所分配一个存储队列,使得所有BG数据流都存储在同一个队列中,这样可以使得对BG数据流的管理和调度较为简单。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备上保存有输出调度表,输出调度表用于表示队列、传输窗口与调度周期的对应关系。交换设备周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧包括:根据输出调度表中队列、传输窗口与调度周期的对应关系,周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧。
这样,交换设备可以根据维护的输出调度表中传输窗口的顺序进行调度。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备上还保存有分类规则表和队列管理表,分类规则表用于表示队列与数据流的对应关系,队列管理表用于表示队列与队尾地址的对应关系。该方法还包括:交换设备从输入端口接收第一数据帧,根据第一数据帧对应的第一数据流和分类规则表,确定第一数据帧对应的第一队列,根据队列管理表确定第一队列对应的第一队尾地址,将第一数据帧存储到第一队列中第一队尾地址对应的位置。
这样,交换设备可以根据维护的分类规则表和队列管理表将不同数据流的数据帧分别存储到二维帧队列中的对应位置。
结合上述可能的实现方式,在另一种可能的实现方式中,分类规则表包括队列标识、数据流的流信息和计数器值的对应关系,数据流的流信息包括数据流的流标识或媒体访问控制(media access control,MAC)地址中的至少一种。交换设备根据第一数据帧对应的第一数据流和分类规则表,确定第一数据帧对应的第一队列包括:交换设备根据第一数据帧确定第一数据流,根据分类规则表中与第一数据流的流信息对应的至少一个队列和第一计数器值,从第一数据流的流信息对应的至少一个队列确定第一队列,而后将第一计数器值加1。
这样,交换设备可以根据计数器值从多个待存储队列中确定一个目标队列,从而将接收到的数据帧存储至目标队列。
结合上述可能的实现方式,在另一种可能的实现方式中,队列管理表包括队列标识、队尾指针以及队列相对于行首地址的偏移量的对应关系,队尾指针指向队尾所在的行。交换设备根据队列管理表确定第一队列对应的第一队尾地址包括:交换设备根据队列管理表确定第一队列对应的队尾指针和偏移量,根据第一队列对应的队尾指针和偏移量确定第一队尾地址。在交换设备将第一数据帧存储到第一队列中第一队尾地址对应的位置之后,该方法还包括:交换设备将队列管理表中第一队列对应的队尾指针指向二维帧队列的下一行。
这样,交换设备可以根据队列管理表确定接收到的数据帧的待存储位置。
结合上述可能的实现方式,在另一种可能的实现方式中,与IQ数据流对应的队列,对应第一队尾指针;与BG数据流对应的队列,对应第二队尾指针。
这样,IQ数据流队列的队尾指针和BG数据流队列的队尾指针是独立的,交换设备根据各自的指针对IQ数据流和BG数据流分别进行存储和管理。
结合上述可能的实现方式,在另一种可能的实现方式中,输出调度表包括传输窗口标识、起始时间以及队列相对于行首地址的偏移量的对应关系,起始时间为传输窗口相对于当前调度周期开始时刻的偏移时间;
或者,输出调度表包括传输窗口标识、传输窗口的起始时间、队列相对于行首地址的偏移量以及最大帧长的对应关系,最大帧长用于表示传输窗口可传输的最大数据量。
结合上述可能的实现方式,在另一种可能的实现方式中,二维帧队列对应连续的存储地址,每个队列中每行对应的单元格的存储空间为预设值,偏移量用于表示队列相对于行首地址偏移的单元格的数量。
这样,可以减少交换设备在调度过程中的寻址次数,提高处理效率。
结合上述可能的实现方式,在另一种可能的实现方式中,在交换设备周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧之前,该方法还包括:交换设备获取参考信息,参考信息包括网络拓扑信息、所有入口数据流的流速和所有入口数据流的帧长,并根据参考信息配置分类规则表、队列管理表和输出调度表。
这样,交换设备在调度数据流的数据帧之前,可以首先配置分类规则表、队列管理表和输出调度表,以便于交换设备后续可以根据分类规则表和队列管理表对接收到的数据流的数据帧进行存储,并根据输出调度表对已存储的数据帧进行调度。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备根据参考信息配置分类规则表、队列管理表和输出调度表包括:交换设备根据参考信息中所有入口IQ数据流的流速和入口IQ数据流的帧长,分别确定所有入口IQ数据流的发送间隔;计算所有入口IQ数据流的发送间隔的第一最小公倍数,第一最小公倍数为调度周期;根据参考带宽、所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率,计算所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率与参考带宽的比值的第二最小公倍数,第二最小公倍数为时隙数量,所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率均为参考带宽的整数倍;根据调度周期和时隙数量确定时隙长度;根据时隙长度确定IQ数据流对应的传输窗口的大小和数量;根据IQ数据流对应的传输窗口的大小和数量,设置数据流对应的传输窗口在调度周期中的位置;根据数据流对应的传输窗口在调度周期中的位置关系,配置分类规则表、队列管理表和输出调度表。
这样,可以使得第一最小公倍数为调度周期,从而确保在一个调度周期内,交换设备接收到每种IQ数据流的数量都是整数个,且至少能传输每种数据流的一个数据帧;可以使得第二最小公倍数作为时隙数量,从而使得时隙数量为每个调度周期内接收到的IQ数据包数的整数倍,因而可以通过配置可以使得每种IQ数据流对应的数据包均匀分开,从而降低IQ数据流的抖动。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备根据IQ数据流对应的传输窗口的大小和数量,设置IQ数据流对应的传输窗口在调度周期中的位置包括:对于入口IQ数据流,按照流速从大到小的顺序,交换设备根据IQ数据流对应的传输窗口的大小和数量,设置IQ数据流对应的传输窗口在调度周期中的位置。在设置完入口IQ数据流对应的传输窗口在调度周期中的位置后,交换设备将调度周期中未分配的剩余时隙设置为入口BG数据流的传输窗口。
由于某种数据流的流速越高,一个调度周期内该种数据流对应的传输窗口的数量也可能越多,因而该种数据流与其它数据流发生冲突的概率也越大。因而,交换设备可以按照流速从大到小的顺序,为流速大的数据流优先设置传输窗口,以尽量降低冲突发生的概率。
又由于IQ数据流的优先级高,且属于CBR类型,需要保证IQ数据流的实时性、时延和抖动特性;BG数据流的优先级低,是VBR类型的数据流,其数据帧的延迟无法预测,前传网络对其也没有严格的实时性要求,不需要考虑BG数据流的抖动特性。因而,交换设备可以首先为IQ数据流配置传输窗口,在配置完成后,将剩余的空隙时隙配置为BG数据流的传输窗口。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备在设置入口IQ数据流中第二数据流对应的传输窗口在调度周期中的位置时,该方法还包括:若第二数据流对应的第一传输窗口在调度周期中向后偏移了p个时隙,则交换设备向后顺延p个时隙设置第二数据流对应的另一传输窗口,p为正整数。
这样,可以尽量使得第二数据流的抖动最小。
结合上述可能的实现方式,在另一种可能的实现方式中,队列的首行和末行相连。这样可以形成循环队列。
结合上述可能的实现方式,在另一种可能的实现方式中,交换设备为以太网承载的前传网络中的交换设备、中继器或网桥。
这样,可以降低以太网承载的前传网络中IQ数据流的抖动。
第二方面,本申请实施例提供了一种交换设备,交换设备包括存储模块,存储模块中配置有m行n列的二维帧队列,m和n均为大于1的整数,二维帧队列的列表示队列,每个队列对应一种同相正交调制IQ数据流或对应背景BG数据流,每个队列用于存储所对应的数据流的数据帧,二维帧队列的行与调度周期相对应,调度周期包括多个传输窗口,每个队列对应至少一个传输窗口。交换设备还包括:输出调度模块,用于周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧,并将获取到的数据帧通过输出端口发送给其它设备。
在一种可能的实现方式中,BG数据流对应一个队列,与BG数据流对应的队列对应至少一个传输窗口;每种IQ数据流对应至少一个队列,与IQ数据流对应的每个队列对应一个传输窗口。
结合上述可能的实现方式,在另一种可能的实现方式中,存储模块中保存有输出调度表,输出调度表用于表示队列、传输窗口与调度周期的对应关系。输出调度模块具体用于:根据输出调度表中队列、传输窗口与调度周期的对应关系,周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧。
结合上述可能的实现方式,在另一种可能的实现方式中,存储模块中还保存有分类规则表和队列管理表,分类规则表用于表示队列与数据流的对应关系,队列管理表用于表示队列与队尾地址的对应关系。交换设备还包括:接收模块,用于从输入端口接收第一数据帧。队列映射模块,用于根据第一数据帧对应的第一数据流和分类规则表,确定第一数据帧对应的第一队列。队列管理模块,用于根据队列管理表确定第一队列对应的第一队尾地址。处理模块,用于将第一数据帧存储到第一队列中第一队尾地址对应的位置。
结合上述可能的实现方式,在另一种可能的实现方式中,分类规则表包括队列标识、数据流的流信息和计数器值的对应关系,数据流的流信息包括数据流的流标识或MAC地址中的至少一种。队列映射模块具体用于:根据第一数据帧确定第一数据流;根据分类规则表中与第一数据流的流信息对应的至少一个队列和第一计数器值,从第一数据流的流信息对应的至少一个队列确定第一队列;将第一计数器值加1。
结合上述可能的实现方式,在另一种可能的实现方式中,队列管理表包括队列标识、队尾指针以及队列相对于行首地址的偏移量的对应关系,队尾指针指向队尾所在的行。队列管理模块具体用于:根据队列管理表确定第一队列对应的队尾指针和偏移量;根据第一队列对应的队尾指针和偏移量确定第一队尾地址。队列管理模块还用于:将队列管理表中第一队列对应的队尾指针指向二维帧队列的下一行。
结合上述可能的实现方式,在另一种可能的实现方式中,与IQ数据流对应的队列,对应第一队尾指针;与BG数据流对应的队列,对应第二队尾指针。
结合上述可能的实现方式,在另一种可能的实现方式中,输出调度表包括传输窗口标识、起始时间以及队列相对于行首地址的偏移量的对应关系,起始时间为传输窗口相对于当前调度周期开始时刻的偏移时间。或者,输出调度表包括传输窗口标识、传输窗口的起始时间、队列相对于行首地址的偏移量以及最大帧长的对应关系,最大帧长用于表示传输窗口可传输的最大数据量。
结合上述可能的实现方式,在另一种可能的实现方式中,二维帧队列对应连续的存储地址,每个队列中每行对应的单元格的存储空间为预设值,偏移量用于表示队列相对于行首地址偏移的单元格的数量。
结合上述可能的实现方式,在另一种可能的实现方式中,处理模块还用于:在输出调度模块周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧之前,获取参考信息,参考信息包括网络拓扑信息、所有入口数据流的流速和所有入口数据流的帧长;根据参考信息配置分类规则表、队列管理表和输出调度表。
结合上述可能的实现方式,在另一种可能的实现方式中,处理模块具体用于:根据参考信息中所有入口IQ数据流的流速和入口IQ数据流的帧长,分别确定所有入口IQ数据流的发送间隔;计算所有入口IQ数据流的发送间隔的第一最小公倍数,第一最小公倍数为调度周期;根据参考带宽、所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率,计算所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率与参考带宽的比值的第二最小公倍数,第二最小公倍数为时隙数量,所有入口IQ数据流的流速近似值、交换设备的输入链路速率和输出链路速率均为参考带宽的整数倍;根据调度周期和时隙数量确定时隙长度;根据时隙长度确定IQ数据流对应的传输窗口的大小和数量;根据IQ数据流对应的传输窗口的大小和数量,设置数据流对应的传输窗口在调度周期中的位置;根据数据流对应的传输窗口在调度周期中的位置关系,配置分类规则表、队列管理表和输出调度表。
结合上述可能的实现方式,在另一种可能的实现方式中,处理模块用于根据IQ数据流对应的传输窗口的大小和数量,设置数据流对应的传输窗口在调度周期中的位置,包括:对于入口IQ数据流,按照流速从大到小的顺序,根据IQ数据流对应的传输窗口的大小和数量,设置IQ数据流对应的传输窗口在调度周期中的位置;在设置完入口IQ数据流对应的传输窗口在调度周期中的位置后,将调度周期中未分配的剩余时隙设置为入口BG数据流的传输窗口。
结合上述可能的实现方式,在另一种可能的实现方式中,处理模块还用于:若第二数据流对应的第一传输窗口在调度周期中向后偏移了p个时隙,则向后顺延p个时隙设置第二数据流对应的另一传输窗口,p为正整数。
结合上述可能的实现方式,在另一种可能的实现方式中,队列的首行和末行相连。结合上述可能的实现方式,在另一种可能的实现方式中,交换设备为以太网承载的前传网络中的交换设备、中继器或网桥。
第三方面,本申请实施例提供一种交换设备,包括:一个或多个处理器和一个或多个存储器。一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,交换设备执行如第一方面任一项的中的调度方法。
第四方面,本申请实施例提供一种计算机存储介质,包括计算机指令,当计算机指令在交换设备上运行时,使得交换设备执行如第一方面任一项中的调度方法。
第五方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项中的调度方法。
第六方面,本申请实施例提供一种芯片,包括处理器和存储器,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使得芯片执行如第一方面任一项中的调度方法。
其中,关于上述第二方面至第六方面的有益效果可以参见上述第一方面中的描述,这里不再赘述。
具体实施方式
CPRI是前传网络中广泛使用的数据接口规范,用于在BBU和RRH之间传输采样后的射频数据。CPRI协议支持三种类型的数据流:(1)、IQ数据流,以IQ同向正交分量的形式发送的用户平面信息,可以根据应用程序或应用功能进行数据流的划分;(2)、控制和管理(control and management,C&M)数据流;(3)、同步(synchronization)数据流,用于CPRI帧的时间校准。在前传网络中,IQ数据流具有高优先级且流量占比高达90%,C&M流具有低优先级流量占比少于10%。IQ数据流有100us的端到端延迟和65ns的最大抖动要求,可以称为对时延抖动敏感的数据流或对时间敏感的数据流,前传网络可以称为对时间敏感的网络,C&M数据流无抖动上的要求。在前传网络中,C&M数据流和同步数据流可以称为BG数据流,为可变比特率(variable bit rate,VBR)类型,IQ数据流为恒定比特率(constant bit rate,CBR)类型。
在使用以太网承载CPRI数据时,由于受到BG数据流的传输影响等原因,IQ数据流从交换设备入端口到出端口的顺序无法确定,从而导致了IQ数据流输出调度的不确定性,使得对时延抖动敏感的IQ数据流的抖动性无法满足要求。本申请实施例提供了一种调度方法,在使用以太网承载CPRI数据时,通过在交换设备上为每种IQ数据流分配固定的传输窗口和队列,从而根据传输窗口、队列与数据流的对应关系,按照确定的时间顺序将每种IQ数据流的数据帧从出端口发送出去,因而可以降低交换设备转发的IQ数据流的抖动。
为了便于理解,示例的给出了部分与本申请实施例相关概念的说明以供参考。如下所示:
时延:指数据帧从源端发出到接收端收到之间所经历的时间。
抖动:指最大延迟和最小延迟之差。
时间敏感网络:对延迟和抖动有严格要求的网络,例如前传网络。
以太网:一种局域网通用的通信协议标准,使用载波监听多路访问及冲突检测技术,并以10M/S的速率运行在多种类型的电缆上。
交换设备:即转接交换设备,用于对连接到交换节点的传输链路上的信号进行汇集、转接和分配。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
本申请实施例涉及的设备为时间敏感网络中的交换设备,用于将接收到的数据帧转发给其它设备。例如可以是以太网承载的前传网络中的交换机、网桥或中继器等。示例性的,图1给出了以太网前传网络10的一种网络架构示意图。其中,以太网前传网络10可以包括RRU100、BBU200以及以太网交换机300,RRU100和BBU200以及前传网络中的其它网络设备可以通过交换机300进行数据交互。
其中,以太网交换机是基于以太网传输数据的交换机,以太网采用共享总线型传输媒体方式的局域网。以太网交换机的结构是每个端口都直接与主机相连,并且一般都工作在全双工方式。交换机能同时连通许多对端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据。示例性的,当交换设备为以太网交换机300时,图2示出了交换机300的一种结构示意图。交换机300可以包括处理器301、存储器302、总线303和端口304等。
其中,处理器301可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),一个或多个用于控制本申请方案程序执行的集成电路,或以上的组合。在一种具体实现中,处理器301可以包括中央处理器CPU3011和网络处理器(network processor,NP)3012。
通信总线303可包括一通路,在上述组件之间传送信息。
端口304,用于与其它设备或通信网络通信,当端口304用于接收数据帧时可以称为输入端口;当端口304用于发送数据帧时,可以称为输出端口。端口304具体可以为RJ-45接口、BNC接口或AUI接口等。
存储器303可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器303可以包括内容可寻址存储器CAM 3021,用于根据内容进行寻址。存储器303还可以用于存储执行本申请方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的应用程序代码,从而实现本申请下述实施例提供的调度方法。
在具体实现中,作为一种实施例,交换机300可以包括多个处理器,这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
以下将以交换设备为图2所示的以太网前传网络中的交换机300为例,对本申请实施例提供的调度方法进行说明。
具体的,交换机上可以配置有m(大于1的整数)行n(大于1的整数)列的二维帧队列,该二维帧队列的列表示队列。二维帧队列中每个队列可以对应一种IQ数据流。或者,二维帧队列中的每个队列可以对应背景BG数据流。二维帧队列中的每个队列用于存储该队列所对应的数据流的数据帧。二维帧队列的行与调度周期相对应,调度周期包括多个传输窗口,该多个传输窗口具有固定的排列顺序,二维帧队列中的每个队列可以对应至少一个传输窗口。示例性的,图3示出了一种二维帧队列、数据流与调度周期的一种对应关系。
在此基础上,参见图4,本申请实施例提供的调度方法可以包括:
401、交换机周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧。
402、交换机将获取到的数据帧通过输出端口发送给其它设备。
在本申请实施例中,交换机可以周期性地按照调度周期中传输窗口的顺序,对二维帧队列每行中的数据帧进行调度。示例性的,交换机的周期性调度过程可以如图3中的虚线所示。在每个调度周期内,交换机调度二维帧队列一行中的数据帧,从而将数据帧通过交换机的输出链路发送给其它设备;当交换机调度到某一传输窗口时,若在二维帧队列的当前行中,与当前传输窗口对应的队列内没有存储数据帧,则交换机继续对当前传输窗口的下一传输窗口进行调度;当调度完二维帧队列当前行中的数据帧后,交换机在当前调度周期的下一个调度周期,调度二维帧队列当前行的下一行中存储的数据帧。
示例性的,在图3所示场景中,交换机的入口数据流包括IQ数据流1至IQ数据流9以及BG数据流共十种数据流。交换机可以在每个调度周期中,按照传输窗口从1到11的顺序,依次调度IQ数据流1的数据帧、IQ数据流2的数据帧、IQ数据流3的数据帧、BG数据流的数据帧、IQ数据流4的数据帧、IQ数据流5的数据帧、IQ数据流6的数据帧、IQ数据流7的数据帧、IQ数据流8的数据帧、IQ数据流9的数据帧以及BG数据流的数据帧。
需要说明的是,图3是以每种IQ数据流对应一个队列为例进行说明的,每种IQ数据流也可以对应多个队列,本申请实施例不予限定;并且,图3是以BG数据流对应一个队列为例进行说明的,BG数据流也可以对应少数的几个队列,本申请实施例不予限定。
可见,本申请实施例提供了一种类似时分复用(time division multiplexing,TDM)的调度方案,交换机可以为每种IQ数据流分配固定的传输窗口,从而可以根据固定的调度周期以及调度周期中传输窗口的固定排列顺序,依次调度传输窗口对应的队列所存储的IQ数据流的数据帧。
在现有技术中,当多种IQ数据流在交换机汇聚时,IQ数据流汇聚时会产生突发,当该IQ数据流再次与其它IQ数据流汇聚时,将导致其它IQ数据流传输的不稳定,从而引起抖动。同时,对于扇入(同时到达交换设备)的IQ数据流,可能因交换设备的特性,使得从入端口到出端口的输出顺序无法确定,进一步导致输出调度的不确定性,从而引起抖动。并且,在现有技术中,IQ数据流的优先级高于BG数据流的优先级。BG数据流的流量是VBR类型,数据包大小和周期都不固定。由于交换设备存在缓冲区效应,若当前链路上已有低优先级的数据帧在传输,则高优先级的数据帧必须等待低优先级的数据帧发送完毕才可以进行传输,此时高优先级的IQ数据流便会产生抖动。
而在本申请实施例提供的方案中,当多种IQ数据流在交换机汇聚时,交换机可以将入口处的不同IQ数据流分别存入相应的队列中,从而根据传输窗口、队列与数据流的对应关系,按照确定的时间顺序将每种IQ数据流的数据帧从输出端口发送出去,因而可以降低由于交换机的不确定性交换动作而引起的抖动。并且,在本申请实施例中,严格按照传输窗口调度依次对不同数据流进行调度,不同数据流之间不会相互影响,因而可以降低多种数据流汇聚时BG数据流或一种IQ数据流传输的不稳定对其它IQ数据流引起的抖动。
此外,现有技术中提出了一种通过帧抢占减少延迟和抖动的方法:IQ数据流均划分为高优先级流,BG数据流划分为低优先级流,允许对低优先级数据帧进行切片以加快高优先级数据帧的传输。实际上,在该方案中,抢占动作会不可避免的引起抖动,并且由于抢占时机以及抢占结果的不确定性,使得数据帧被阻塞的时间不固定,导致高优先级数据流会出现更大的抖动。并且,IQ数据流会进入同一高优先级队列中,存在扇入(同优先级同时到达)时出帧顺序无法确定的问题;同优先级流流量之间存在竞争关系,一种数据流的突发可能会导致其他流的丢包;同时突发还会导致不确定的延迟,增大抖动。并且,BG数据流的VBR特性,会给IQ数据流造成影响,即使采用了帧抢占模式,也无法避免对高优先级IQ数据流的传输产生不确定性的影响。
而在本申请实施例提供的方案中,通过为IQ数据流和BG数据流分别分配传输窗口,可以将IQ数据流和BG数据流相隔离,IQ数据流对应的数据帧不需要等待VBR类型的BG数据流对应的数据帧发送完毕后再进行传输,IQ数据流和BG数据流可以独立进行传输,因而可以避免低优先级的BG数据流对高优先级的IQ数据流的调度确定性产生的影响,消除帧抢占方法带来的抖动;并且,高优先级的不同IQ数据流分别按照对应传输窗口的固定顺序进行调度,相互之间互不影响,因而也可以消除高优先级IQ数据流之间的影响。
在理想情况下,当同一种IQ数据流对应的传输窗口在调度周期中均匀分布,即同一种IQ数据流的调度间隔相等时,本申请实施例提供的方法可以将IQ数据流的抖动降为0。
当采用以太网承载前传网络中的CPRI数据,前传网络中的交换设备采用本申请实施例提供的调度方案时,可以降低前传网络中IQ数据流的抖动。
需要说明的是,本申请实施例是以以太网前传网络这一时间敏感网络中的交换机为例进行说明的,对于其它时间敏感网络中的交换设备,仍然可以采用本申请实施例提供的调度方法进行调度,从而降低时间敏感数据流的抖动。
在本申请实施例的一种具体实现中,BG数据流可以对应一个队列,与BG数据流对应的队列对应至少一个传输窗口;每种IQ数据流可以对应至少一个队列,与IQ数据流对应的每个队列对应一个传输窗口。其中,将所有BG数据流的数据帧存储在一个队列中,可以便于对BG数据流的管理。当某种IQ数据流的数据量较大时,该种IQ数据流可以对应多个队列,从而使得该种IQ数据流的数据帧可以存储在多个队列中,与该种IQ数据流对应的每个队列可以对应一个传输窗口。
具体的,在本申请实施例中,交换机上可以保存有输出调度表,输出调度表用于表示队列、传输窗口与调度周期的对应关系。在步骤401中,交换机周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧具体可以包括:
4010、交换机根据输出调度表中队列、传输窗口与调度周期的对应关系,周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧。
其中,能够用于表示队列、传输窗口与调度周期的对应关系的数据结构都可以称为输出调度表,本申请实施例对输出调度表的具体形式不作具体限定。
进一步地,参见图5,交换机上还可以保存有分类规则表和队列管理表,分类规则表用于表示队列与数据流的对应关系,队列管理表用于表示队列与队列的队尾地址的对应关系。其中,用于表示队列与数据流的对应关系的所有数据结构都可以称为分类规则表,能够用于表示队列与队列的队尾地址的对应关系的所有数据结构本申请实施例提供的方法还可以包括:
403、交换机从输入端口接收第一数据帧。
404、交换机根据第一数据帧对应的第一数据流和分类规则表,确定第一数据帧对应的第一队列。
405、交换机根据队列管理表确定第一队列对应的第一队尾地址。
406、交换机将第一数据帧存储到第一队列中第一队尾地址对应的位置。
其中,第一数据帧可以是交换机接收到的任意一个数据帧。根据步骤403-406描述的过程,对于交换机接收到的每一个数据帧,交换机都可以首先确定该数据帧所属的数据流,而后根据分类规则表确定该数据帧所属的数据流对应的队列,并根据队列管理表确定该队列的队尾地址,而后将该数据帧存储到该队列的队尾地址所对应的位置,以等待交换机根据输出调度表对队列中的数据帧进行调度。在申请实施例中,二维帧队列采用双端口存储器,支持同时进行读(调度、出队列)操作和写(入队列)操作,因而二维帧队列的入队操作和调度操作可以同时进行。
在本申请实施例中,由于调度周期与交换机入口的所有IQ数据流相对应,二维帧队列的每行都与调度周期对应,因而二维帧队列存储的IQ数据帧是按照调度周期一整行一整行地同步增长的;又由于且交换机按照调度周期一行一行地对二维帧队列中的数据帧进行调度,因而,不同IQ数据流实际存储有数据帧的队列的长度是同步增减的。
步骤406具体可以包括:交换机确定第一数据帧的帧长是否小于或者等于预设阈值,若小于或者等于预设阈值,则交换机将第一数据帧存储到第一队列中第一队尾地址对应的位置;若大于预设阈值,则交换机可以直接将第一数据帧丢弃而不再将第一数据帧存入二维帧队列中。
具体的,在本申请实施例中,交换机用于进行输出调度的输出端口的结构示意图可以参见图6。如图6所示,输出端口可以包括二维帧队列、队列映射模块、队列管理模块和输出调度模块。其中,队列映射模块内部可以维护有分类规则表,队列管理模块内部可以维护有队列管理表,输出调度模块内部可以维护有输出调度表。
其中,队列映射模块的功能在于为入口到达的数据帧查找应当被储存的目标队列。在进行输出调度前,交换机可以根据网络中的入口流信息初始化队列映射模块维护的分类规则表。在一种具体实现中,队列映射模块维护的分类规则表可以包括队列标识和数据流标识。在另一种具体实现中,分类规则表可以包括队列标识、数据流的流信息和计数器值的对应关系。其中,当某个数据流对应多个队列时,计数器值可以用于确定获取的该种数据流的数据帧的待存储队列具体为多个队列中的哪一个队列;当某个数据流仅对应一个队列时,该数据流可以不设置有计数器。数据流的流信息可以包括数据流的流标识或MAC地址中的至少一种,还可以包括数据流的优先级。具体的,MAC地址还可以包括S-MAC地址和D-MAC地址。示例性的,表1示出了一种分类规则表的结构示意图。在表1中,优先级包括标识7对应的高优先级和标识0对应的低优先级两种。其中,IQ数据流对应的优先级标识为7,BG数据流对应的优先级标识为0。由于BG数据流实际包括多个类型的数据流,因而BG数据流没有明确的S-MAC地址和D-MAC地址。
表1
在上述步骤404中,交换机根据第一数据帧对应的第一数据流和分类规则表,确定第一数据帧对应的第一队列可以包括:
4041、交换机根据第一数据帧确定第一数据流。
4042、交换机根据分类规则表中与第一数据流的流信息对应的至少一个队列和第一计数器值,从第一数据流的流信息对应的至少一个队列确定第一队列。
4043、交换机将第一计数器值加1。
具体的,对于任意数据流f对应的数据帧,步骤4043可以包括:
1、令k为待存储的可用队列数量;
2、令j=count mod k,其中,mod表示求余;
3、更新计数器值count,将count加1;
4、返回第j个匹配的队列,该队列即为待存储数据帧的目标队列。
示例性的,若第一数据流对应队列1和队列3,则交换机可以根据计算获得的计数器值,将接收到第一数据流的数据帧轮流存储在队列1和队列3中。
在本申请实施例中,队列管理模块的功能在于维护二维帧队列的配置信息(行、列和二维帧队列的起始地址)和进行队列地址管理。在一种具体实现中,队列管理模块维护的队列管理表可以包括队列标识、队尾指针(tailpoint)以及队列相对于二维帧队列行首地址的偏移量(offset)的对应关系。其中,队尾指针指向队尾所在的行,每个队列相对于行首地址的偏移量为固定值。在上述步骤405中,交换机根据队列管理表确定第一队列对应的第一队尾地址可以包括:
4051、交换机根据队列管理表确定第一队列对应的队尾指针和偏移量。
4052、交换机根据第一队列对应的队尾指针和偏移量确定第一队尾地址。
在上述步骤406中将第一数据帧存储到第一队列中第一队尾地址对应的位置之后,该方法还可以包括:
407、交换机将队列管理表中第一队列对应的队尾指针指向二维帧队列的下一行。
其中,在本申请实施例中,由于不同IQ数据流实际存储有数据帧的队列的长度是同步增减的,因而每种IQ数据流对应的队列的队尾指针相同;当BG数据流仅对应一个队列或少数几个队列时,BG数据流的数据帧只能存储在对应的一个或少数几个队列中,因而实际存储BG数据流通常与IQ数据流的数据帧的队列增减不同步,BG数据流与IQ数据流对应的队尾指针不相同。因而,在本申请实施例中,与IQ数据流对应的队列,可以对应第一队尾指针;与BG数据流对应的队列,可以对应第二队尾指针。示例性的,队列管理模块对应的队列管理信息可以参见图7。
在本申请实施例中,输出调度模块的功能在于按传输窗口进行队列调度。在进行输出调度前,交换机可以根据事先计算的调度序列表确定调度周期Ts,并初始化当前调度周期的开始时间和二维帧队列中的当前行指针。
在一种具体实现中,输出调度模块维护的输出调度表可以包括传输窗口标识、起始时间以及队列相对于行首地址的偏移量的对应关系。其中,起始时间为传输窗口相对于当前调度周期开始时刻的偏移时间,在不同调度周期中,同一传输窗口对应的起始时间相同。根据传输窗口对应的起始时间和开始周期性调度的时刻,交换机可以确定每个传输窗口开始传输数据的传输时刻。交换机上还维护有行指针,根据行指针与队列的偏移量可以获得队列的队头地址。
在另一种具体实现中,输出调度表可以包括传输窗口标识、传输窗口的起始时间、队列相对于行首地址的偏移量以及最大帧长的对应关系,最大帧长用于表示传输窗口可传输的最大数据量。在调度过程中,当交换机从二维存储队列获取到的数据帧的帧长小于或者等于最大帧长时,交换机可以将该数据帧发送出去;当数据帧的帧长大于最大帧长时,交换机可以不将该数据帧发送出去。示例性的,输出调度表对应的输出调度信息可以参见图8。
在一些实施例中,二维帧队列占用一块连续的存储区域,对应连续的存储地址,每个队列中每行对应的单元格的存储空间为预设值。例如单元格的存储空间大小可以为以太网最大帧长1500字节,此时,每个单元格都可以容纳下交换机在以太网中接收到的数据帧。当单元格的存储空间为预设值时,偏移量可以用于表示队列相对于行首地址偏移的单元格的数量,偏移量与单元格存储空间预设值的乘积即为队列相对于行首地址偏移的地址。这样,可以减少交换机在整个调度过程中的寻址次数,提高处理效率。
并且,在本申请实施例中,二维帧队列的每个队列的首行和末行可以相连,这样每个队列都可以形成一个循环队列。
另外,在本申请实施例中,由于以太网中发送至交换机的IQ数据流的数量有限,不像因特网中那样有成千上万种数据流,因而便于在以太网交换机上为每种IQ数据流均配置相应的传输窗口,从而按照固定的调度周期和传输窗口对数据流进行调度。
此外,在本申请实施例中,交换机在根据分类规则表、队列管理表和输出调度表,周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,传输窗口对应的队列内获取数据帧之前,该方法还可以包括:
408、交换机获取参考信息,参考信息包括网络拓扑信息、所有入口数据流的流速和所有入口数据流的帧长。
其中,入口数据流为交换机接收到的数据流。前传网络中,CPRI支持的拓扑类型可以有多种,例如树型拓扑、环型拓扑或链型拓扑等。对于入口IQ数据流,由于是CBR形式,因而其流速是固定的。对于入口BG数据流,由于是VBR形式,因而其流速是变化的,交换机可以获取预设时间段内BG数据流的平均流速。
具体的,交换机可以从中心设备或通过网络管理配置功能等方式获取参考信息。该中心设备是根据SRP流预留协议配置的集中式的控制器设备。该参考信息可以包括网络拓扑信息、所有入口数据流的流速和所有入口数据流的帧长,还可以包括入口数据流的数据帧发送周期、入口数据流源端的MAC地址、入口数据流的优先级以及入口数据流的流标识等信息。
409、交换机根据参考信息配置分类规则表、队列管理表和输出调度表。
在一种实现方式中,参见图9,交换机在步骤409根据参考信息配置分类规则表、队列管理表和输出调度表可以包括:
4091、交换机根据参考信息中所有入口IQ数据流的流速和入口IQ数据流的帧长,分别确定所有入口IQ数据流的发送间隔。
其中,某种IQ数据流的发送间隔为周期性地发送该种IQ数据流的数据帧时,相邻两个数据帧之间的时间间隔。
4092、交换机计算所有入口IQ数据流的发送间隔的第一最小公倍数,该第一最小公倍数为调度周期。
这样,可以确保在一个调度周期内,交换机接收到每种IQ数据流的数据帧的数量都是整数个,且在一个调度周期内至少能传输每种IQ数据流对应的一个数据帧。
4093、交换机根据参考带宽、所有入口IQ数据流的流速近似值、交换机的输入链路速率和输出链路速率,计算所有入口IQ数据流的流速近似值、交换机的输入链路速率和输出链路速率与参考带宽的比值的第二最小公倍数,该第二最小公倍数为调度周期中的时隙数量。
其中,交换机所在网络的拓扑结构不同,交换机的输入链路速率(即入口带宽)和输出链路速率(即出口带宽)也可能不同;当交换机所在网络的拓扑结构确定时,交换机的输入链路速率和输出链路速率也可以确定。参考带宽的大小可以根据实际需要进行设定,以使得有入口IQ数据流的流速近似值、交换机的输入链路速率和输出链路速率均为参考带宽的整数倍。获取入口IQ数据流的流速近似值,是为了便于进行整数倍运算,从而得到第二最小公倍数。
当采用第二最小公倍数作为时隙数量时,可以使得时隙数量为每个调度周期内接收到的IQ数据包数的整数倍,有利于通过配置使得每种IQ数据流对应的传输窗口均匀分开,从而降低IQ数据流的抖动。
示例性的,若入口IQ数据流包括A、B、C三种,流速分别为1.228Gbps、2.457Gbps、4.915Gbps,交换机输入链路速率和输出链路速率分别为10Gbps与40Gbps。为了能够进行整数运算,将1.228Gbps、2.457Gbps、4.915Gbps的近似值分别设置为1.25Gbps、2.5Gbps、5Gbps。近似后入口流速和链路带宽的最大公约数为1.25Gbps,因而参考带宽也可以为1.25Gbps。这样,入口IQ数据流流速为{1.25Gbps,2.5Gbps,5Gbps},链路带宽为{10Gbps,40Gbps},与参考带宽的比值可以映射为整数集合{1,2,4,8,32}。在该种场景下,时隙数量可以为1、2、4、8、32的最小公倍数32。
4094、交换机根据调度周期和时隙数量确定时隙长度。
在确定调度周期和时隙长度后,调度周期和时隙数量的比值即为时隙长度。
4095、交换机根据时隙长度确定IQ数据流对应的传输窗口的大小和数量。
交换机在确定时隙长度后,可以根据IQ数据流信息确定传输窗口的大小和数量。具体的,当一个调度周期内某种IQ数据流会到达多个数据帧时,可以将该种IQ数据流对应多个传输窗口;当一个调度周期内某种IQ数据流会达到一个数据帧时,可以将该种IQ数据流对应一个传输窗口。
并且,交换机可以根据每种IQ数据流的帧长与时隙长度内可传输的比特数的比值,确定该种IQ数据流对应的传输窗口所包括的时隙数量。这样,可以根据不同IQ数据流的不同帧长配置相应的传输窗口的大小,避免采用固定大小的传输窗口,或者传输窗口的时间有冗余而导致的带宽浪费。举例来说,若一个时隙长度内可传输q个比特数,则对于帧长为t的IQ数据流来说,其传输窗口大小包括的时隙数量可以为t与q的比值向上取整得到的数值。
4096、交换机根据IQ数据流对应的传输窗口的大小和数量,设置数据流对应的传输窗口在调度周期中的位置。
其中,设置数据流对应的传输窗口在调度周期中的位置可以理解为,设置数据流对应的传输窗口与调度周期中的不同时隙的对应关系,即确定数据流对应的传输窗口在调度周期中的起始时间。交换机在确定IQ数据流对应的传输窗口的大小和数量后,可以根据预设算法,在调度周期Ts内,寻找到一种所有数据流(包括IQ数据流和BG数据流)传输窗口的排列方案,即设置数据流对应的传输窗口在调度周期中的位置,从而尽量使得同一种IQ数据流在每个调度周期和不同调度周期中的调度时间间隔相一致或相差较小,以尽量降低IQ数据流的抖动。
4097、交换机根据数据流对应的传输窗口在调度周期中的位置关系,配置分类规则表、队列管理表和输出调度表。
具体的,交换机可以根据数据流对应的传输窗口在调度周期中的位置关系以及传输窗口的数量,设置队列的数量n(例如,IQ数据流的每个传输窗口可以对应一个队列,BG数据流的所有传输窗口对应一个队列)以及数据流、传输窗口与队列之间的对应关系。二维帧队列的行数m可以根据实际情况进行设定。例如,二维帧队列的行数m可以根据交换机缓冲区中可设置二维帧队列的空间与二维帧队列的列数n的比值大小来确定。交换机可以根据缓冲区的空间以及列数n等信息生成二维帧队列,记录缓冲区中二维帧队列的起始地址,初始化调度周期的开始时间、传输窗口的起始时间、当前行指针、计数器值以及队列编号等,生成数据流、传输窗口、调度周期和队列相互之间的对应关系,从而生成分类规则表、队列管理表和输出调度表。进而,交换机可以根据分类规则表、队列管理表和输出调度表,周期性地对各种入口数据流进行调度。
在步骤4096中,参见图10,交换机根据IQ数据流对应的传输窗口的大小和数量,设置数据流对应的传输窗口在调度周期中的位置可以包括:
501、交换机对于入口IQ数据流,按照流速从大到小的顺序,根据IQ数据流对应的传输窗口的大小和数量,设置IQ数据流对应的传输窗口在调度周期中的位置。
其中,传输窗口在调度周期中的位置可以通过传输窗口分配的调度周期中的时隙来确定,具体的,传输窗口在调度周期中的起始时间可以为传输窗口分配的时隙的起始时间。
在步骤501中,交换机可以寻找一种各IQ数据流对应的传输窗口的排列方案,使得不同IQ数据流的各数据帧在固定时间窗口被传输到链路上,从而实现类似时分复用TDM的调度效果;并尽量使得同一IQ数据流的传输窗口的间隔尽量相等,即使得同一IQ数据流的数据帧的传输间隔尽量相等,从而尽量降低各IQ数据流(即CBR数据流)的抖动。
在设置数据流对应的传输窗口的过程中,若不同数据流对应的传输窗口对应同一个时隙,则可以称为传输窗口的分配过程发生了冲突。由于某种数据流的流速越高,一个调度周期内该种数据流对应的传输窗口的数量也可能越多,因而该种数据流与其它数据流发生冲突的概率也越大。因而,交换机可以按照流速从大到小的顺序,为流速大的数据流优先设置传输窗口,以尽量降低冲突发生的概率。
502、交换机在设置完入口IQ数据流对应的传输窗口在调度周期中的位置后,将调度周期中未分配的剩余时隙设置为入口BG数据流的传输窗口。
由于IQ数据流的优先级高,且属于CBR类型,需要保证IQ数据流的实时性、时延和抖动特性;BG数据流的优先级低,是VBR类型的数据流,其数据帧的延迟无法预测,前传网络对其也没有严格的实时性要求,不需要考虑BG数据流的抖动特性。因而,交换机可以首先为IQ数据流配置传输窗口,在配置完成后,将剩余的空隙时隙配置为BG数据流的传输窗口。具体的,当剩余的空闲时隙连续时,BG数据流可以对应一个传输窗口;当剩余的空闲时隙不连续时,BG数据流对应多个传输窗口。
具体的,步骤501-502可以包括:
1、将所有时隙slot初始化为空闲,按时隙的排列顺序对时隙进行编号。
2、对于按照流速大小排序后其中一个IQ数据流f,在调度周期Ts内为IQ数据流f的每个传输窗口分配时隙。对于任意一个传输窗口,分配过程包括:
2.1、计算数据流f对应的传输窗口占用的时隙数s;
2.2、在空闲时隙中,分配编号最小的连续s个时隙给数据流f对应的传输窗口,并将已分配的时隙标记为占用;
2.3、设置传输窗口的起始时间为被分配的第一个时隙的开始时间;
2.4、回到第2步,检查下一个IQ数据流,直到所有IQ数据流都已分配完毕。
3、将剩余未占用的slot分配给BG数据流的传输窗口。
4、输出结果,得到一个调度周期内传输窗口、时隙以及数据流的对应关系。其中,调度周期内传输窗口与时隙的对应关系可以表明传输窗口在调度周期中的位置。
在步骤501中,设置入口IQ数据流中第二数据流对应的传输窗口在调度周期中的位置时,该方法还可以包括:
5010、交换机在设置入口IQ数据流中第二数据流的传输窗口时,若第二数据流对应的第一传输窗口在调度周期中向后偏移了p个时隙,则向后顺延p个时隙设置第二数据流对应的另一传输窗口,p为正整数。
其中,第二数据流为交换机可接收到的任意一种IQ数据流。若第二数据流对应多个传输窗口,在为第二数据流设置传输窗口时,若与已分配的时隙发生冲突,使得第二数据流对应的第一传输窗口向后偏移了p个时隙,则交换机可以向后偏移p个时隙设置第二数据流对应的其它传输窗口,从而尽量使得第二数据流的抖动最小。
举例来说,若交换机的入口IQ数据流包括A、B、C三种,流速分别为1.228Gbps,2.457Gbps,4.915Gbps,数据帧长均为1500Byte,交换机的输入链路速率和输出链路速率均为10Gbps,根据本申请实施例提供的方法计算得到第一最小公倍数为9770ns,第二最小公倍数为8,则调度周期T为9770ns,可以划分为8个时隙,每个时隙长度为1220ns,发送每个数据帧需要占据1个时隙。在一个调度周期内,三种数据流到来的包的数量分别为1,2,4。三种数据流的到达时间分别为{0,T},{0,T/2,T},{0,T/4,T/2,3T/4,T}。为了使得每种数据流的传输间隔均匀开,从而尽量降低数据流的抖动,在该种情况下为数据流分配传输窗口和时隙时,数据流A、B和C会在调度周期T的0时刻产生冲突,数据流B和C会在T/2时刻产生冲突。
记i为调度周期中的第i个时隙,对于A、B、C三种数据流来说,若为了使得各自的传输窗口分配得尽量均匀,则参见图11,三种数据流各自的初始分配方案中传输窗口与时隙的对应关系可以分别为时隙{0},时隙{0,4}以及时隙{0,2,4,6}。若按照流速从大到小的降序顺序即C-B-A的顺序,对数据流进行时隙分配,则对于数据流C,所有时隙均空闲,可以按照其初始分配方案的结果分配时隙{0,2,4,6},这4个时隙分别标记为传输窗口{C1,C2,C3,C4};对于数据流B,由于0号时隙已经被C1占用,数据流B的第一个传输窗口B1只能寻找最近的可用时隙1进行设置,即B1向后偏移了1个时隙,数据流B的第二个传输窗口B2初始调度的时隙4被C3占用,则向后也偏移1个时隙确定可用时隙5为B2,而不会直接向后寻找第一个空闲时隙3作为流B的第二个传输窗口,即B2与B1向后偏移量(延迟量)一致;对于数据流A,由于一个调度周期内只有一个帧,寻找最近可用时隙3即可。对于剩余时隙7,可以用于作为BG数据流的传输窗口。因而,交换机为三种数据流实际分配的传输窗口与时隙的对应关系为C{0,2,4,6},B{1,5},A{3},传输窗口与调度周期的相对位置可以参见图12。当采用图12所示的传输窗口周期性地调度A、B、C三种数据流的数据帧时,数据流C的传输窗口之间均间隔1个时隙,数据流B的传输窗口之间均间隔3个时隙,数据流A的传输窗口之间均间隔7个时隙,A、B、C三种数据流的抖动均为0。
在另一种实现方式中,在步骤4092中确定调度周期后,交换机还可以根据调度周期、IQ数据流的帧长与预设时隙值确定传输窗口的大小和数量。其中,预设时隙值对应一个固定长度的时间片,预设时隙值的大小需要合理的设置,由于帧长通常不会是预设时隙值的整数倍,传输窗口的大小以预设时隙为粒度进行扩展,因而当预设时隙值太大时,容易造成带宽的浪费;而当预设时隙太小时,又容易使得交换机频繁以预设时隙为粒度扩展传输窗口,因而增加了交换机的计算负荷。
示例性的,在一个预设时隙值对应的时隙slot内,输出线路上可传输固定数量(记为q)的比特数,如q=8,32,…bits等。slot的时间长度δ与输出链路的速率R有关:δ=q/R。从一个周期Ts的起始开始,按照长度δ划分slot。周期Ts包含的slot中的数量为Ts/δ个,当未能整除时,最后一个slot的长度可能小于δ。数据帧的传输窗口开始于某个slot的起点,这样可降低实现和计算的复杂度。此时,参见图13,若q较小(如q=8),则具有更高的带宽利用率和计时精度、更小的抖动计算误差,但算法计算开销增大;参见图14,若q变大(如q=256),则可以降低计算调度时序的开销,但可能导致精度下降,带宽利用率降低。通过调节slot中的比特数q,可以实现带宽利用率和计算开销的折中。
在配置完成分类规则表、队列管理表和调度输出表后,交换机可以对二维帧队列中的数据帧进行调度。在调度开始时,交换机可以顺序检查调度输出表中的每一表项,从而根据当前表项确定一个队列,根据队列对应的偏移量和行指针得到队头地址,获取待发送的数据帧;当时间到达当前表项对应的传输窗口的传输时刻时,开启传输窗口,发送数据帧,且当前传输窗口可发送的数据帧的长度不得超过调度控制信息表中规定的最大帧长,若当前传输窗口可发送的数据帧的长度大于最大帧长,则可以不发送该数据帧,结束当前传输窗口的调度;当前传输窗口传输结束后,检测下一表项;若队头地址处未存储有数据,则继续检查调度输出表的下一表项,如此循环往复。
在另外的实现方式中,交换机根据参考信息配置分类规则表、队列管理表和输出调度表可以包括:交换机根据参考信息计算调度序列表,而后根据调度序列表配置分类规则表、队列管理表和输出调度表。其中,调度序列表可以用于表示调度周期、传输窗口与队列的对应关系。具体的,根据上述步骤501-502的具体步骤4中的输出结果可以得到输出序列表。
对于由于分配冲突使得某种IQ数据流的抖动无法完全降为0的情况,本申请实施例提供的方法还可以计算每种数据流的抖动值,并且根据该抖动值设置设备缓冲区的大小,从而根据缓冲区对数据帧的缓冲时间的配合,进一步降低抖动。
另外,本申请实施例提供的方法要求交换机支持802.1Qat协议,以获取网络拓扑和流信息;要求设备支持802.1As协议,以保持设备间的时钟同步。
此外,在交换机的输出端口包括二维帧队列、队列映射模块、队列管理模块和输出调度模块的基础上,图15示出了另一种本申请实施例提供的调度方法流程图。在图15所举示例中,数据流a对应二维帧队列中的一个队列,数据流b对应二维帧队列中的一个队列,数据流c对应二维帧队列中的2个队列。
此外,需要说明的是,本申请实施例是以以太网前传网络这一时间敏感网络为例进行说明的,对于其它时间敏感网络,例如基于时分复用时隙分配方案的用于信号采集的无线传感网络等,仍然可以采用本申请实施例提供的调度方法进行调度,从而降低时间敏感网络中数据流的抖动性,本申请实施例不再一一赘述。
可以理解的是,为了实现上述功能,交换设备包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对交换设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图16示出了上述和实施例中涉及的交换设备的一种可能的组成示意图。如图16所示,该交换设备600可以包括:存储模块61和输出调度模块62。
其中,存储模块61中配置有m行n列的二维帧队列,m和n均为大于1的整数,二维帧队列的列表示队列,每个队列对应一种同相正交调制IQ数据流或对应背景BG数据流,每个队列用于存储所对应的数据流的数据帧,二维帧队列的行与调度周期相对应,调度周期包括多个传输窗口,每个队列对应至少一个传输窗口。输出调度模块62可以用于,周期性地按照调度周期中传输窗口的顺序从二维帧队列的每行中,与传输窗口对应的队列内获取数据帧,并将获取到的数据帧通过输出端口发送给其它设备。
在本申请实施例中,进一步的,该交换设备600还可以包括:接收模块63、队列映射模块64、队列管理模块65和处理模块66。
其中,接收模块63可以用于支持交换设备600执行图5中的步骤403;队列映射模块64可以用于支持交换设备600执行图5中的步骤404;队列管理模块65可以用于支持交换设备600执行图5中的步骤405,处理模块66可以用于支持交换设备600执行图5中的步骤406,图9中的步骤4091-4097,以及图10中的步骤501-502。
此外,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的交换设备,用于执行上述调度方法,因此可以达到与上述调度方法相同的效果。
在采用集成的单元的情况下,图17示出了上述实施例中所涉及的交换设备的另一种可能的组成示意图。如图17所示,该交换设备包括:处理单元71、通信单元72和存储单元73。
处理单元71用于对交换设备700的动作进行控制管理,例如,处理单元71用于支持交换设备700执行图4中的步骤401,图5中的步骤401、步骤404-406,图9中的步骤4091-4097,图10中的步骤501-502,和/或用于本文所描述的技术的其它过程。通信单元72用于支持交换设备700与其它网络实体的通信,例如可以支持交换设备700执行图4中的步骤402,图5中的步骤402-403,和/或用于本文所描述的技术的其它过程。存储单元73,可以用于存储交换设备700的程序代码和数据,以及二维帧队列,二维帧队列中的数据帧,分类规则表,队列管理表、输出调度表,以及各种配置信息等。
其中,处理单元71可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信单元82可以是收发器、收发电路或通信接口等。存储单元73可以是存储器。
当交换设备700为交换机,且处理单元71为处理器,通信单元72为通信接口,存储单元73为存储器时,本申请实施例所涉及的交换设备700可以为图2所示的以太网中的交换机。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。