基于状态机自适应控制的低时延GMP映射方法及系统与流程

文档序号:17070047发布日期:2019-03-08 23:14阅读:552来源:国知局
基于状态机自适应控制的低时延GMP映射方法及系统与流程

本发明涉及gmp映射领域,具体是涉及一种基于状态机自适应控制的低时延gmp映射方法及系统。



背景技术:

近年来,人们对移动通信需求的不断增长,推动着移动互联网技术的飞速发展。移动网络进入4g时代后,虽在用户接入速率上较3g网络而言有了本质的提升,但人们对更高性能移动通信的追求从未停止。为了应对未来爆炸性的移动数据流量增长、海量的设备连接、不断涌现的各类新业务和应用场景,第五代移动通信(5g)系统应运而生。

未来5g网络,不仅对数据接入速率有更高的要求,同时也对时延提出了“无感知”的苛刻要求。5g网络对端到端提出了毫秒级的时延要求。端到端时延包含接入网时延和传输网时延,otn(opticaltransportnetwork,光传送网)传输网时延又分为信息传送时延和设备内部处理时延,而otn设备处理时延主要包含fec(forwarderrorcorrection,前向纠错)编译码时延和数据流映射处理时延等。

在otn光传送网各种业务颗粒映射场景中,gmp(genericmappingprocedure,通用映射规程)映射被广泛采用。gmp映射是一种通用异步映射规程,主要通过插入填充字节,完成异步数据流的转换。按照otng.709协议,gmp异步映射既可在otn网络内部实现低速otn业务流到高速otn业务流的汇聚,也可以完成对otn网络外部固定比特速率客户信号的承载,即通过gmp映射实现cbr(constantbitrate,固定码率)overotn。由此可见,gmp映射为otn光传送网的一项核心技术,gmp映射技术的性能指标(例如时延特性)将会直接影响otn网络的相关性能。按照协议规定的gmp映射方法,实现gmp映射有多种方案,不同方案带来的处理延时会有较大的差别。

otn光传送网中实现gmp映射,主要涉及如何实时计算cm(numberofm-bitclientdataentities,m比特块客户数据个数)、cnd值、σcnd值以及对填充块的插入控制,m为承载侧每个数据块中的比特数,n为客户侧每个数据块中的比特数,参见g.709标准17.7节第100页,m取值为8、16、64、256或640,n取值为8或1,cnd表示cn与m/n*cm_down之间的差值(differencebetweencnand(m/n*cm)),cm为m比特块客户数据个数,cm_up表示对cm值向上取整,cm_down表示对cm值向下取整,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量;σcnd值表示cn与m/n*cm_down之间的差值求和。本帧的cm值决定了下一帧是否插入以及插入多少填充块,插入填充块的具体位置则由误差求和算法的固定规律决定;收端利用上一帧的cm值,剥离出当前帧中的所有填充块,并将当前帧承载的客户侧数据解下来,然后利用接收的σcnd值的统计规律得出精确的cnd值,利用cnd可以精确恢复出客户侧业务时钟。gmp映射的核心就是如何准确实时计算cm、cnd、σcnd的值。计算cm、cnd、σcnd值有多种方法,不同方法带来的时延有较大的差别。急需一种全新的计算cm、cnd、σcnd的方法,最大限度满足低时延性能。



技术实现要素:

本发明的目的是为了最大限度满足低时延性能,提供一种基于状态机自适应控制的低时延gmp映射方法及系统,能够最小化fifo的深度,最大限度满足低时延性能。

第一方面,提供一种基于状态机自适应控制的低时延gmp映射方法,包括以下步骤:

根据gmp映射状态机的自适应控制机制,自动感知gmp映射的输入和输出两侧业务频偏情况,完成gmp映射状态的切换和fifo水位控制,通过fifo水位控制gmp映射状态机的状态转移。

根据第一方面,在第一方面的第一种可能的实现方式中,该方法具体包括以下步骤:

gmp映射状态机至少有2种状态,根据gmp映射状态机的当前状态,计算下一个映射处理周期对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况,m为承载侧每个数据块中的比特数,n为客户侧每个数据块中的比特数,m取值为8、16、64、256或640,n取值为8或1,cm为m比特块客户数据个数,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量,cnd为cn与m/n*cm_down之间的差值,cm_down为对cm值向下取整,σcnd值为cn与m/n*cm_down之间的差值求和。

根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该方法具体包括以下步骤:

无频偏时,gmp映射状态机有2种状态,以m字节块的颗粒度进行映射,每n帧有1帧相对前n-1帧多插入一个数据块,少一个填充块,按下式计算n值:

m表示cm中的m/8取值,表示对向上取整,表示对向下取整,n_up表示对向上取整后的数值,n_down表示对向下取整后的数值。

根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该方法还包括以下步骤:

无频偏时,gmp映射状态机有以下2种状态:

状态1:每n_up帧有1帧以cm=cm_up进行映射,其他帧以cm=cm_down进行映射,cm_up表示对cm值向上取整;状态1对应的cm值序列为:cnd平均值为:

状态2:每n_down帧有1帧以cm=cm_up进行映射,其他帧以cm=cm_down进行映射;状态2对应的cm值序列为:cnd平均值为:

每种gmp映射状态形成一组对应的cm值序列,依据cm值序列,计算cnd值序列、σcnd值序列。

根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还包括以下步骤:

无频偏时,定时采样fifo水位,判断当前gmp映射状态是否需要切换,具体过程为:

当承载侧读出的速率大于客户侧写入速率,使得fifo水位降低达到门限值时,由状态2切换到状态1,通过读使能控制,降低承载侧读出数据的速率,从而使水位适当升高;

当承载侧读出的速率小于客户侧写入速率,使得fifo水位升高达到门限值时,由状态1切换到状态2,通过读使能控制,提高承载侧读出数据的速率,从而使水位适当降低;

gmp映射状态机根据水位值的变化,在状态1、状态2两种状态之间自动切换,完成gmp映射,并使得fifo水位在中值水位附近一定门限值内波动。

根据第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式中,该方法具体包括以下步骤:

有频偏时,对gmp映射状态机进行分解,并插入新状态,插入新状态的原则是:

使任意相邻的状态之间cnd序列变化不超过2;

下边界状态:小于cnd的最小值cnd_min;

上边界状态:大于cnd的最大值cnd_max;

每个状态的最后一帧∑cnd=0。

根据第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,该方法还包括以下步骤:

有频偏时,gmp映射状态机有多于2种状态,根据以下公式计算gmp映射状态机的状态个数:

先计算cnd_max和cnd_min,gmp映射状态机的状态个数=floor(cnd_max)-floor(cnd_min)+1,floor表示向下取整。

根据第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,该方法还包括以下步骤:

有频偏时,每种gmp映射状态形成一组对应的cm值序列,各个状态中假设每x帧有y帧以cm=cm_up进行映射,其他帧以cm=cm_down映射,根据以下公式计算每个状态中的x和y值及对应的cnd平均值

状态w:满足floor(cnd_min)+(w-1)<=m*y/x<=floor(cnd_min)+w与x+y求和最小的x、y取值,w为非零自然数,取值从1到状态个数,x和y为非零自然数,此时对应的即m*y/(floor(cnd_min)+w)<=x<=m*y/(floor(cnd_min)+w-1),y取最小值时,对应的x+y的值最小;

依据cm值序列,计算cnd值序列、σcnd值序列。

根据第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,该方法还包括以下步骤:

有频偏时,gmp映射状态机有多于2种状态,初始化时选择中间状态进行映射,对应最接近理想无频偏情况,每个映射处理周期完成一次fifo水位定时采样和判断,如果水位升高,gmp映射状态机往映射速率高的相邻状态转移;如果水位不变,gmp映射状态机维持当前状态;如果水位下降,gmp映射状态机往映射速率低的相邻状态转移;gmp映射状态机最终自适应稳定在相邻的两个状态之间来回切换,fifo水位锁定在中值水位附近波动。

根据第一方面的第三种可能的实现方式或者第一方面的第七种可能的实现方式,在第一方面的第九种可能的实现方式中,该方法还包括以下步骤:

无频偏和有频偏两种情况下,cnd值序列值的计算过程均为:

cnd(z)表示cnd序列的第z个cnd值,z取值范围为[1,x],x为状态中所有帧的个数,delta为每次计算的误差累计值,delta初值为0;

ceiling表示向上取整,则floor表示向下取整,否则

根据第一方面的第一种可能的实现方式,在第一方面的第十种可能的实现方式中,该方法还包括以下步骤:

根据cm值序列中的每一个cm值决定下一帧填充块的数量,填充块的位置由误差求和算法决定;

在调整控制字节jc开销中填入cm值序列中的cm值及cm值的校验信息、σcnd值序列中的σcnd值及σcnd值的校验信息。

第二方面,提供一种基于状态机自适应控制的低时延gmp映射系统,包括状态机自适应控制模块,用于:根据gmp映射状态机的自适应控制机制,自动感知gmp映射的输入和输出两侧业务频偏情况,完成gmp映射状态的切换和fifo水位控制,通过fifo水位控制gmp映射状态机的状态转移。

根据第二方面,在第二方面的第一种可能的实现方式中,所述gmp映射状态机至少有2种状态,所述状态机自适应控制模块包括计算子模块,用于:根据gmp映射状态机的当前状态,计算下一个映射处理周期对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况,m为承载侧每个数据块中的比特数,n为客户侧每个数据块中的比特数,m取值为8、16、64、256或640,n取值为8或1,cm为m比特块客户数据个数,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量,cnd为cn与m/n*cm_down之间的差值,cm_down为对cm值向下取整,σcnd值为cn与m/n*cm_down之间的差值求和。

与现有技术相比,本发明的优点如下:

本发明着眼于未来5g网络低时延的要求,提出一种gmp映射方案,映射处理时延接近理论上的最低值。本发明基于状态机自适应控制机制,不论gmp映射状态机的状态数有多少,根据实际频偏大小,gmp映射状态机会自动稳定在相邻的两个状态来回切换,最终实现gmp映射过程。本发明利用fifo水位控制gmp映射状态机的状态转移,利用gmp映射状态机的状态计算cm、cnd、∑cnd值序列,从而确保了整个gmp映射的自适应控制过程。由于gmp映射的自适应特性,不论频偏如何变化,稳定后fifo水位在中值水位附近极小范围内波动,因此能够最小化fifo的深度,最大限度满足低时延性能。

附图说明

图1为本发明实施例中基于状态机自适应控制的低时延gmp映射方法的流程图。

图2为本发明实施例中基于状态机自适应控制的低时延gmp映射系统的结构框图。

图3为g.709标准中章节17.7.5的figure17-16。

图4为本发明实施例6中状态1的cnd平均值的波动示意图。

图5为本发明实施例6中状态2的cnd平均值的波动示意图。

图6为本发明实施例6中状态3的cnd平均值的波动示意图。

图7为本发明实施例6中状态4的cnd平均值的波动示意图。

图8为本发明实施例6中状态5的cnd平均值的波动示意图。

图9为本发明实施例6中5值状态机转移的示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

实施例1

本发明实施例1提供一种基于状态机自适应控制的低时延gmp映射方法,包括以下步骤:

根据gmp映射状态机的自适应控制机制,自动感知gmp映射的输入和输出两侧业务频偏情况,完成gmp映射状态的切换和fifo(firstinputfirstoutput,先入先出队列)水位控制,通过fifo水位控制gmp映射状态机的状态转移。

参见图1所示,上述gmp映射方法具体包括以下步骤:

s1、gmp映射状态机至少有2种状态,根据gmp映射状态机的当前状态,计算下一个映射处理周期对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况,m为承载侧每个数据块中的比特数,n为客户侧每个数据块中的比特数,m取值为8、16、64、256或640,n取值为8或1,cm为m比特块客户数据个数,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量,cnd为cn与m/n*cm_down之间的差值,cm_down为对cm值向下取整,σcnd值为cn与m/n*cm_down之间的差值求和;

s2、根据cm值序列中的每一个cm值决定下一帧填充块的数量,填充块的位置由误差求和算法决定;

s3、在jc(调整控制字节)开销中填入:cm值序列中的cm值及cm值的校验信息、σcnd值序列中的σcnd值及σcnd值的校验信息,步骤s3是国际标准做法。

本发明实施例最大的优点是:cm值序列、cnd值序列、σcnd值序列直接从gmp映射状态机的状态映射得到,不会对gmp映射状态机的状态转移造成影响。gmp映射状态机负责控制fifo水位,不论fifo两侧业务时钟频偏如何变化(在协议规定范围内),最终都会让fifo水位收敛在一个预期的极小的水位区间内,从而只需设置一个极小深度的fifo完成gmp映射的缓存处理,保证了gmp映射处理的时延足够小。

下面先描述gmp映射的基本原理,然后在此基础之上具体描述具有低时延gmp映射的技术方案。

对于任何给定的固定比特速率的客户侧信号,在一个承载帧周期或者承载复帧周期内,需要承载的客户侧n比特块的数量为:

fclient为客户侧数据比特速率,fserver为承载侧数据比特速率,需要注意的是:承载侧的数据比特速率>客户侧的数据比特速率。

tserver为承载侧帧周期/复帧周期,bserver为承载侧一个帧周期/复帧周期的比特数,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量。

由于在实际gmp映射过程中,每一帧的cn值必须是一个整数,而(1)式计算的cn值必然含小数,假设按照(1)式计算得到的cn为100.25,那么在实际gmp映射过程中,将会通过4个帧周期的cn值平均,得到100.25的统计结果,这4个帧周期的cn值序列可以是100、100、100、101。

由于实际的cn只能是整数,因此规定cn值只能在cn_up、cn_down两个整数之间变化。

将gmp映射应用在otn光传送网领域,以m字节块颗粒度的映射为例,(1)式将会是以下形式:

同理,cm值也必须是整数,并且规定cm只能在cm_up、cm_down两个整数之间变化,cm_up表示对cm值向上取整,cm_down表示对cm值向下取整。

cm和cn的区别仅仅在于gmp映射处理的颗粒度变大了。

定义一次gmp映射之后,客户侧剩余没有映射完的n比特块的数量为cnd,cnd具有以下表达形式:

cnd值的物理意义可以这么理解:

在一个承载帧周期内,客户侧总共需要映射的n比特块的数量为cn,m字节块的数量为cm,按照cm值映射完后,还剩余的没有映射完的n比特块的数量即为cnd,cnd值直观的反应了(4)式计算得到的cm值的小数部分。

当进行多个帧周期的gmp映射后,累积还未映射完的n比特块数量记为∑cnd,如果∑cnd值大于等于m字节,那么下一帧的cm将会增加1,即下一帧将会多映射一个m字节的数据块,少一个m字节的填充块。

∑cnd的取值范围为:

0≤∑cnd≤m-1(n=8)(8)

业务承载侧除了承载客户侧业务外,还必须携带开销字段以及用于速率适配的填充块。本帧填充块的数量由上一帧的cm值决定,填充块的位置由误差求和算法决定:

数据:if(j×cn)modpserver<cn(n=640)(9)

填充:if(j×cn)modpserver≥cn(n=640)(10)

公式(9)(10)就是误差求和算法,上式中,pserver代表承载侧一个帧周期内可供映射的m字节块的数量,j代表m字节块的编号,每个m字节块可以装载客户侧数据,也可以插入全零填充。公式(9)中的j表示第j个m字节块填数据,公式(10)中的j表示第j个m字节块填全零填充,j的范围是[1,pserver]。

按照以上原则,当一帧数据需插入多个填充块时,各填充块在本帧数据中将会是均匀分布的。

以上(1)~(10)式完整描述了gmp映射中计算cm、cnd、∑cnd的基本公式以及数据块和填充块分布的基本算法。按照gmp映射原理,计算cm、cnd、∑cnd是有多种方法的,为了找到一种具有低时延特性的gmp映射处理机制,需要进一步分析。

实施例2

在实施例1的基础上,根据gmp映射状态机的当前状态,计算下一个映射处理周期对应的各组cm、cnd、∑cnd值序列,具体包括以下步骤:

在理想无频偏的情况下,对于一个确定的cnd值(小数),以m字节块的颗粒度进行gmp映射,那么每n帧必将有1帧相对前n-1帧会多插入一个数据块,少一个填充块,其中n值按下式计算:

其中,n_up-n_down=1。

m表示cm中的m/8取值(itu-tg.709附录d.2章节规定:m=m/8),cnd表示cn与m/n*cm_down之间的差值,表示对向上取整,表示对向下取整,n_up表示对向上取整后的数值,n_down表示对向下取整后的数值。

上述(11)和(12)式的物理意义是:

由于m/cnd的结果并不会是整数,为了实现gmp映射速率匹配,gmp映射处理状态机必然会在2种状态之间交替,也即gmp映射处理状态机有2种状态:

状态1是:每n_up帧中有1帧以cm=cm_up进行映射,其他n_up-1帧以cm=cm_down进行映射,cm_up表示对cm值向上取整,cm_down表示对cm值向下取整;

状态2是:每n_down帧中有1帧以cm=cm_up进行映射,其他n_down-1帧以cm=cm_down进行映射。

通过定时采样fifo水位,根据fifo水位值的变化,判断当前gmp映射状态是否需要切换,当fifo水位超过预期值时,需由状态1切换到状态2;当fifo水位低于预期值时,需由状态2切换到状态1。每种gmp映射状态都会形成一组对应的cm值序列,依据该cm值序列,可巧妙构造出cnd值序列、∑cnd值序列。

按照上述(11)~(12)式对应的两个状态,构造得到的cm、cnd、∑cnd序列如下表:

表1、gmp映射状态机状态与cm、cnd、∑cnd序列的关系

状态1对应的cm值序列为:cnd平均值为:cnd值序列为:∑cnd值序列为:表示对向下取整,表示对向上取整,mod(∑icnd(i),m)表示求余;

状态2对应的cm值序列为:cnd平均值为:cnd值序列为:∑cnd值序列为:

表1中,i、j表示当前cnd值在cnd值序列中的序号。

表1中,cm值序列是直接根据gmp映射状态机的状态获知的,cnd值序列需要在floor(cnd)和ceiling(cnd)之间不断组合搭配得到,cnd值序列最终的效果是要表示为cnd的平均值,例如:cnd的平均值是10.25,那么cnd序列就可能是:10、10、10、11;而∑cnd值序列则需根据cnd值序列中的各cnd值累加(模m)得到。

这里在构造cnd序列时,需要满足的一个条件是:

一个状态处理周期(例如n_up帧或者n_down帧)内的cnd值之和是映射颗粒度m的整数倍,表1中的x1、x2即为该整数倍的数值,该整数倍的数值在构造cnd值时是可调节的。

这样构造的cnd值序列生成∑cnd值序列时,∑cnd值序列的最后一个∑cnd值必然为0,代表∑cnd向cm值有进位,所以,∑cnd=0对应的cm值也必然会比上一帧的cm值大1,如表1所示。

上述cnd值序列的构造方法不仅满足gmp映射协议的要求,另外重要一点,让一个状态处理周期的最后一帧的∑cnd为0,可以隔离gmp映射状态机的两个状态之间∑cnd值序列计算的复杂度,可以最大化简化设计,易于生成∑cnd值,同时又不会对gmp映射处理的性能带来影响。

无频偏时,定时采样fifo水位,判断当前gmp映射状态是否需要切换,具体过程为:

①当承载侧读出的速率大于客户侧写入速率,使得fifo水位降低达到门限值时,由状态2切换到状态1,通过读使能控制,降低承载侧读出数据的速率,从而使水位适当升高;

②当承载侧读出的速率小于客户侧写入速率,使得fifo水位升高达到门限值时,由状态1切换到状态2,通过读使能控制,提高承载侧读出数据的速率,从而使水位适当降低。

gmp映射状态机将根据水位值的变化,在状态1、状态2两种状态之间自动切换,完成gmp映射,并使得fifo水位在中值水位附近一定门限值内波动。

综上所述,对于cnd值为确定值的情况,以上述方法进行gmp映射,gmp映射处理状态只有上述两种状态,每种状态都会计算出一组cm值序列和∑cnd值序列。通过对fifo水位的监测和控制,gmp映射状态机将会在两种状态之间频繁切换,完成gmp映射过程。

考虑实际情况,由于fclient和fserver均会存在频偏和抖动,(7)计算得到的cnd值不会是固定的,而是在一个范围内变化。

假设客户侧业务允许的频偏为±δfc,承载侧业务允许的频偏为±δfs,相应的,可以计算得到最大和最小的cnd值如下:

cn_max表示cn最大值,cm_max_down表示cm最大值时向下取整,cn_min表示cn最小值,cn_min_down表示cn最小值时向下取整,fclient为客户侧数据比特速率,fserver为承载侧数据比特速率,bserver为承载侧一个帧周期/复帧周期的比特数。

考虑频偏的情况,上述(11)~(12)式改为:

考虑频偏后,一般地,n_up-n_down>1。

当两侧数据速率和映射颗粒度确定时,n_up-n_down的差值大小由系统允许的频偏范围唯一确定。

gmp映射处理模块考虑到当两侧业务具有极端频偏的情况下也能正常工作,所以n_up和n_down值就必须按照(15)、(16)式计算。此时gmp映射状态机也可以按照表1所示的方法在两种状态之间切换,实现整个gmp映射过程。唯一不同的地方在于,考虑频偏之后的n_up和n_down值由(15)~(16)式决定,并且考虑了频偏之后,cnd值精度也会受到一定的影响。

实施例3

在实施例2的基础上,为了提高cnd值精度,可将gmp映射状态机总共设置2种状态,并按照表1的方法得到对应的2组cm、cnd、∑cnd序列,每种状态对应不同的实际频偏情况。

为了得到更精细的cnd值,可以将gmp映射状态机的状态进行进一步拆分,使cnd值变化的颗粒度更小。

当gmp映射状态机有多于2个状态时,初始化时默认情况下选择中间状态(对应最接近理想无频偏情况)进行映射,每个映射处理周期完成一次fifo水位定时采样和判断,如果水位升高,gmp映射状态机往映射速率高的相邻状态转移;如果水位不变,gmp映射状态机维持当前状态;如果水位下降,gmp映射状态机往映射速率低的相邻状态转移。当承载侧读出的速率大于客户侧写入速率,使得fifo水位降低达到门限值时,通过读使能控制,降低承载侧读出数据的速率,从而使水位适当升高;当承载侧读出的速率小于客户侧写入速率,使得fifo水位升高达到门限值时,通过读使能控制,提高承载侧读出数据的速率,从而使水位适当降低。。

不论gmp映射状态机最终有多少个状态,gmp映射状态机最终都会自适应稳定在相邻的两个状态之间来回切换,而且不论实际频偏大小,fifo水位却始终会锁定在中值水位附近波动。

有频偏时,对gmp映射状态机进行分解,并插入新状态,插入新状态的原则是:

使任意相邻的状态之间cnd序列变化不超过2;

下边界状态:小于cnd的最小值cnd_min;

上边界状态:大于cnd的最大值cnd_max;

每个状态的最后一帧∑cnd=0。

根据gmp映射状态机的当前状态,计算下一个映射处理周期的cm值序列、cnd值序列、σcnd值序列,还包括以下步骤:

有频偏时,根据以下公式计算gmp映射状态机的状态个数:

先计算cnd_max和cnd_min,gmp映射状态机的状态个数=floor(cnd_max)-floor(cnd_min)+1,floor表示向下取整;各个状态中假设每x帧有y帧以cm=cm_up进行映射,其他帧以cm=cm_down映射;

根据以下公式计算每个状态中的x和y值及对应的

状态w:满足floor(cnd_min)+(w-1)<=m*y/x<=floor(cnd_min)+w与x+y求和最小的x、y取值,w为非零自然数,取值从1到状态个数,x和y为非零自然数,此时对应的即m*y/(floor(cnd_min)+w)<=x<=m*y/(floor(cnd_min)+w-1),y取最小值时,对应的x+y的值最小。

无频偏和有频偏两种情况下,cnd值序列值的计算过程均为:

cnd(z)表示cnd序列的第z个cnd值,z取值范围为[1,x],x为状态中所有帧的个数,delta表示每次计算的误差累计值,delta初值为0;

ceiling表示向上取整,则floor表示向下取整,否则

有频偏时,gmp映射状态机至少有2种状态,计算出对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况;

gmp映射状态机有多于2种状态时,初始化时选择中间状态进行映射,对应最接近理想无频偏情况,每个映射处理周期完成一次fifo水位定时采样和判断,如果水位升高,gmp映射状态机往映射速率高的相邻状态转移;如果水位不变,gmp映射状态机维持当前状态;如果水位下降,gmp映射状态机往映射速率低的相邻状态转移;gmp映射状态机最终自适应稳定在相邻的两个状态之间来回切换,fifo水位锁定在中值水位附近波动。

实施例4

参见图2所示,本发明实施例4提供一种基于状态机自适应控制的低时延gmp映射系统,该系统包括状态机自适应控制模块,用于:根据gmp映射状态机的自适应控制机制,自动感知gmp映射的输入和输出两侧业务频偏情况,完成gmp映射状态的切换和fifo(firstinputfirstoutput,先入先出队列)水位控制,通过fifo水位控制gmp映射状态机的状态转移。

状态机自适应控制模块包括计算子模块、承载侧成帧子模块和读控制子模块。

计算子模块用于:所述gmp映射状态机至少有2种状态,所述状态机自适应控制模块包括计算子模块,用于:根据gmp映射状态机的当前状态,计算下一个映射处理周期对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况,m为承载侧每个数据块中的比特数,n为客户侧每个数据块中的比特数,m取值为8、16、64、256或640,n取值为8或1,cm为m比特块客户数据个数,cn为一个承载帧周期或者复帧周期需要承载的客户侧n比特数据块的数量,cnd为cn与m/n*cm_down之间的差值,cm_down为对cm值向下取整,σcnd值为cn与m/n*cm_down之间的差值求和。

承载侧成帧子模块用于:根据cm值序列中的每一个cm决定下一帧填充块的数量,填充块的位置由误差求和算法决定;在jc(调整控制字节)开销中填入:cm值序列中的cm值及cm值的校验信息、σcnd值序列中的σcnd值及σcnd值的校验信息。

读控制子模块,用于:依据cm值完成fifo读速率的控制。

现有的gmp映射方案一般包含fifo写控制模块、fifo缓存模块、fifo读控制模块、cm/cnd/σcnd计算模块以及承载侧成帧模块。

本发明实施例利用gmp映射状态机自适应控制fifo水位,并同时计算cm、cnd、σcnd。

计算子模块具体用于:

在无频偏的情况下,对于确定的cnd值,以m字节块的颗粒度进行映射,每n帧有1帧相对前n-1帧多插入一个数据块,少一个填充块,计算子模块按下式计算n值:

m表示cm中的m/8取值,cnd表示cn与m/n*cm_down之间的差值,表示对向上取整,表示对向下取整,n_up表示对向上取整后的数值,n_down表示对向下取整后的数值;

gmp映射状态机有以下2种状态:

状态1:每n_up帧有1帧以cm=cm_up进行映射,其他帧以cm=cm_down进行映射,cm_up表示对cm值向上取整,cm_down表示对cm值向下取整;

状态2:每n_down帧有1帧以cm=cm_up进行映射,其他帧以cm=cm_down进行映射。

通过对fifo水位的监测和控制,gmp映射状态机在2种状态之间频繁切换,完成gmp映射:定时采样fifo水位,根据水位值的变化,判断当前gmp映射状态是否需要切换,当水位超过预期值时,由状态1切换到状态2;当水位低于预期值时,由状态2切换到状态1,每种gmp映射状态形成一组对应的cm值序列,计算子模块依据该cm值序列,计算出cnd、∑cnd值序列。

状态1对应的cm值序列为:cnd平均值为:cnd值序列为:∑cnd值序列为:表示对向下取整,表示对向上取整,mod(∑icnd(i),m)表示求余;

状态2对应的cm值序列为:cnd平均值为:cnd值序列为:∑cnd值序列为:

其中,i、j表示当前cnd值在cnd值序列中的序号,cm值序列根据gmp映射状态机的状态直接得到,cnd值序列在floor(cnd)和ceiling(cnd)之间组合搭配得到,∑cnd值序列根据cnd值序列中的各cnd值累加得到;n_up帧或者n_down帧内的cnd值之和是映射颗粒度m的整数倍,x1、x2为可调节的整数倍数值;cnd值序列生成∑cnd值序列时,∑cnd值序列的最后一个∑cnd值为0,代表∑cnd向cm值有进位,∑cnd=0对应的cm值比上一帧的cm值大1。

无频偏时,计算子模块定时采样fifo水位,判断当前gmp映射状态是否需要切换,具体过程为:

①当承载侧读出的速率大于客户侧写入速率,使得fifo水位降低达到门限值时,由状态2切换到状态1,通过读使能控制,降低承载侧读出数据的速率,从而使水位适当升高;

②当承载侧读出的速率小于客户侧写入速率,使得fifo水位升高达到门限值时,由状态1切换到状态2,通过读使能控制,提高承载侧读出数据的速率,从而使水位适当降低。

gmp映射状态机将根据水位值的变化,在状态1、状态2两种状态之间自动切换,完成gmp映射,并使得fifo水位在中值水位附近一定门限值内波动。

考虑到频偏时,客户侧业务允许的频偏为±δfc,承载侧业务允许的频偏为±δfs,最大的cnd值cnd_max和最小的cnd值cnd_min分别为:

cn_max表示cn最大值,cm_max_down表示cm最大值时向下取整,cn_min表示cn最小值,cn_min_down表示cm最小值时向下取整,fclient为客户侧数据比特速率,fserver为承载侧数据比特速率,bserver为承载侧一个帧周期/复帧周期的比特数;

考虑到频偏时,n_up-n_down>1,当两侧数据速率和映射颗粒度确定时,n_up-n_down由系统允许的频偏范围唯一确定。

有频偏时,计算子模块对gmp映射状态机进行分解,并插入新状态,插入新状态的原则是:

使任意相邻的状态之间cnd序列变化不超过2;

下边界状态:小于cnd的最小值cnd_min;

上边界状态:大于cnd的最大值cnd_max;

每个状态的最后一帧∑cnd=0。

根据gmp映射状态机的当前状态,计算下一个映射处理周期的cm值序列、cnd值序列、σcnd值序列,还包括以下步骤:

有频偏时,计算子模块根据以下公式计算gmp映射状态机的状态个数:

先计算cnd_max和cnd_min,gmp映射状态机的状态个数=floor(cnd_max)-floor(cnd_min)+1,floor表示向下取整;各个状态中假设每x帧有y帧以cm=cm_up进行映射,其他帧以cm=cm_down映射;

计算子模块根据以下公式计算每个状态中的x和y值及对应的

状态w:满足floor(cnd_min)+(w-1)<=m*y/x<=floor(cnd_min)+w与x+y求和最小的x、y取值,w为非零自然数,取值从1到状态个数,x和y为非零自然数,此时对应的即m*y/(floor(cnd_min)+w)<=x<=m*y/(floor(cnd_min)+w-1),y取最小值时,对应的x+y的值最小。

无频偏和有频偏两种情况下,计算子模块计算cnd值序列值的过程均为:

cnd(z)表示cnd序列的第z个cnd值,z取值范围为[1,x],x为状态中所有帧的个数,delta表示每次计算的误差累计值,delta初值为0;

ceiling表示向上取整,则floor表示向下取整,否则

有频偏时,gmp映射状态机至少有2种状态,计算出对应的各组cm、cnd、∑cnd值序列,每种状态对应不同的实际频偏情况;gmp映射状态机有多于2种状态时,初始化时选择中间状态进行映射,对应最接近理想无频偏情况,每个映射处理周期完成一次fifo水位定时采样和判断,如果水位升高,gmp映射状态机往映射速率高的相邻状态转移;如果水位不变,gmp映射状态机维持当前状态;如果水位下降,gmp映射状态机往映射速率低的相邻状态转移;gmp映射状态机最终自适应稳定在相邻的两个状态之间来回切换,fifo水位锁定在中值水位附近波动。

实施例5

下面以100gbase-r(100ge以太网)到opu4(opticalchannelpayloadunit,光通路净荷单元)的gmp映射为例,详细描述基于状态机自适应控制的低时延gmp映射系统的具体实现过程。

参见图2所示,本发明实施例5提供一种基于状态机自适应控制的低时延gmp映射系统,该系统包括写控制模块11、fifo缓存模块12、状态机自适应控制模块13,状态机自适应控制模块13包括承载侧成帧子模块14、读控制子模块15和计算子模块16。

fifo写控制模块11负责将客户侧有效数据写入fifo。

fifo缓存模块12用于缓存客户侧数据。

状态机自适应控制模块13利用读控制子模块15完成fifo水位的自适应控制,当承载侧读出的速率大于客户侧写入速率,使得fifo水位降低达到门限值时,通过读使能控制,降低承载侧读出数据的速率,从而使水位适当升高;当承载侧读出的速率小于客户侧写入速率,使得fifo水位升高达到门限值时,通过读使能控制,提高承载侧读出数据的速率,从而使水位适当降低,最终将fifo水位维持在期望的中值水位附近。

承载侧成帧子模块14负责承载侧数据成帧,包括cm、σcnd编码及插入等。

读控制子模块15依据cm值完成fifo读速率的控制。

计算子模块16利用gmp映射状态机的实时状态计算出cm/cnd/σcnd值,将cm值反馈给读控制子模块15。

100gbase-r到opu4的gmp映射的各相关参数见下表:

表2、100gbase-r到opu4gmp映射相关参数

将表2参数代入(5)、(6)式,计算标称cm值,其中的3800、3808是100ge映射到opu4中的固定填充导致的比例系数,具体可参见g.709标准中章节17.7.5的figure17-16,如图3所示。

在有频偏情况下,用cm_down表示cm值,将表2的参数代入(7)式,计算标称cnd值:

按照(11)(12)式,计算n_up、n_down值:

将以上计算结果代入到表1中,得到100gbase-r到opu4的gmp映射场景的2值状态机和gmp映射参数的关系如下表3所示:

表3、无频偏情况100gbase-r到opu4gmp映射2值状态机与cm、cnd、σcnd序列的关系

以上是标称情况下gmp映射2值状态机的相关参数,状态1得到的cnd=11.429,状态2得到的cnd=13.333,gmp映射状态机通过fifo水位监测和控制,在状态1和状态2之间不断切换,最终实现标称cnd=12.324的统计结果。

此处仅为举例说明,cm值序列中的189也可以在前面任何一处位置,但此时cnd值序列也要相应变化,从便于实现角度来说,将189放置在最后面是最好的。

7帧时的cnd值序列“11111211121112”,是基于状态1的x=7、y=1和cnd平均值11.429,通过计算子模块计算cnd值序列值的过程为:

每7帧中有1帧以cm=189映射,其他6帧以cm=188映射:

cnd=11111211121112

delta=0.4290.8570.2860.7140.1430.5710.000

σcnd=1122344557680

6帧时的cnd值序列“131314131314”,是基于状态2的x=6、y=1和cnd平均值13.333,通过计算子模块计算cnd值序列值的过程为:

cnd=131314131314

delta=0.3330.6670.0000.3330.6670.000

σcnd=13264053660

考虑客户侧频偏±100ppm和承载侧频偏±20ppm的情况,按照(13)~(16)式计算,得到cnd_min、cnd_max、n_up、n_down如下:

将以上计算结果代入到表1中,得到考虑频偏情况下100gbase-r到opu4的gmp映射场景的2值状态机和gmp映射参数的关系如下表4所示:

表4、有频偏情况100gbase-r到opu4gmp映射2值状态机与cm、cnd、σcnd序列的关系

按照表4所列的gmp映射2值状态机及对应的cm、cnd、∑cnd序列值,可以完成gmp映射过程。对比表4和表3中的cnd值序列,可以发现:考虑频偏后,cnd值的波动范围变大了,对应的cnd值分别是11.429~13.333和10.000~16.000,因此,可以说:δcnd(cnd值的波动范围)由1.9增大到6。cnd在大范围内变化,一定程度上会影响客户侧时钟恢复质量。

实施例6

在实施例5的基础上,有频偏时,为了缩小cnd值的变化范围,得到更高精度的cnd值,计算子模块需对gmp映射状态机进行分解,并插入新状态,插入新状态满足的原则是:

a)使任意相邻的状态之间cnd序列变化不超过2;

b)下边界状态:cnd平均值小于cnd的最小值cnd_min;

上边界状态:cnd平均值大于cnd的最大值cnd_max;

c)每个状态的最后一帧∑cnd=0。

表5为插入新状态之后的5值状态机gmp参数计算结果,总共含有5个状态,gmp映射稳定后,取决于实际频偏的大小,gmp映射状态机只会自适应到某相邻的两个状态之间切换。

表5、有频偏情况100gbase-r到opu4gmp映射5值状态机与cm、cnd、σcnd序列的关系

以上5个状态的帧数:8、7、13、6、11是通过cnd平均值10~14.545逆推算出来的,所有通过有频偏的情况下计算出cnd值的最大值和最小值,譬如是14.131和10.518,那么就需要分别取几个状态:10、11、12、13、14,15然后通过逆推的方式计算出cm值序列,此时就可以计算出状态处理周期了。

表5中有频偏的情况下cnd的状态机个数及对应的值序列的推算过程如下:

1、首先计算cnd的最大值cnd_max和最小值cnd_min,再计算需要的状态机状态个数=floor(cnd_max)-floor(cnd_min)+1。譬如:如果此时算出的cnd_max=14.131,cnd_min=10.518,那么状态个数=floor(14.131)-floor(10.518)+1=5。

2、各个状态中假设每x帧有y帧以cm=cm_up进行映射,其他帧以cm=cm_down映射。根据以下公式分别算出每个状态中的x和y值,同时计算出对应的此例中cm_up为189,cm_down为188。

w为非零自然数,从1到状态个数;

状态w:满足floor(cnd_min)+(w-1)<=m*y/x<=floor(cnd_min)+w与x+y求和最小的x、y取值,x和y为非零自然数,计算出此时对应的

即m*y/(floor(cnd_min)+w)<=x<=m*y/(floor(cnd_min)+w-1),可知y取最小值时,对应的x+y的值最小。

代入上述参数值,此时m=80:

状态1:当y为1时,80*1/(floor(10.518)+1)<=x<=

80*1/floor(10.518),即80/11<=x<=8,x解为8;故状态1中x=8,y=1,即每8帧有1帧以cm=189映射,其他以cm=188映射。

状态2:当y为1时,80/12<=x<=80/11,6.66<=x<=7.27,x解为7,故状态2中x=7,y=1;

状态3中:当y为1时,80/13<=x<=80/12,6.15<=x<=6.66无解;当y为2时,12.3<=x<=13.3,x解为13。故状态3中x=13,y=2;

状态4中:当y为1时,80/14<=x<=80/13,5.71<=x<=6.15;x解为6;故状态4中x=6,y=1;

状态5中;当y为1时,80/15<=x<=80/14,5.33<=x<=5.71;x无解;当y为2时,10.66<=x<=11.42,x解为11;故状态5中x=11,y=2。

3、基于每个状态的x、y和cnd平均值,通过下述算法计算出cnd序列值,下面以计算cnd(z)为例进行说明:

cnd(z)表示cnd序列的第z个cnd值,z取值范围为[1,x],x为状态中所有帧的个数,delta表示每次计算的误差累计值,delta初值为0;

否则

以状态1为例:参见图4所示,初始情况下delta=0,每8帧中有1帧以cm=189映射,其他以cm=188映射:

cnd=1010101010101010

delta=0.0000.0000.0000.0000.0000.0000.0000.000

σcnd=102030405060700

以状态2为例:参见图5所示,初始情况下为11.429,delta=0,每7帧中有1帧以cm=189映射,其他以cm=188映射:

cnd=11111211121112

delta=0.4290.8570.2860.7140.1430.5710.000

σcnd=1122344557680

以状态3为例:参见图6所示,初始情况下为12.308,delta=0,每13帧中有2帧以cm=189映射,其他以cm=188映射:

cnd=12121213121213121213121213

delta=0.3080.6150.9230.2310.5380.8460.1540.4620.7690.0770.3850.6920.000

σcnd=122436496173618304355670

以状态4为例:参见图7所示,初始情况下为13.333,delta=0,每6帧中有1帧以cm=189映射,其他以cm=188映射:

cnd=131314131314

delta=0.3330.6670.0000.3330.6670.000

σcnd=13264053660

以状态5为例:参见图8所示,初始情况下为14.545,delta=0,每11帧中有2帧以cm=189映射,其他以cm=188映射:

cnd=1415141514151415141515

delta=0.5450.0910.6360.1820.7270.2730.8180.3640.9090.4550.000

σcnd=14294358727213650650

下面结合图9和表5详细说明表5中的5值状态机的状态转移过程。

参见图9所示,gmp映射状态机的5个状态分别表示为s101、s102、s103、s104、s105。图3中带箭头的线条上的0x0100/0x0010之类的6位数字表示状态转移输入条件,即图3中左上角的in1、in2、in3、in4、in5、in6,in1、in2、in3、in4、in5、in6分别表示:in1=复位,高有效;in2=水位半满,高有效;in3=水位上升,高有效;in4=水位不变,高有效;in5=水位下降,高有效;in6=fifo读空/写满,高有效。每个状态的gmp映射处理周期以及该处理周期对应的cm、cnd、σcnd值序列分别如表5的状态1~状态5所示。

gmp映射状态机的运行过程如下:

gmp映射状态机处于开始等待状态,随着客户侧数据不断写入fifo,fifo水位上升,等待fifo水位到达中值水位后,gmp映射状态机进入s103状态。

gmp映射状态机进入s103状态后,执行每13帧中有2帧以cm=189映射,其他帧以cm=188映射,并按照表5中的状态3生成cm值序列、cnd值序列、σcnd值序列。

gmp映射状态机进入s103状态后,每次在第13帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位升高了,gmp映射状态机进入s104状态。

gmp映射状态机进入s103状态后,每次在第13帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位降低了,gmp映射状态机进入s102状态。

gmp映射状态机进入s103状态后,每次在第13帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位没有变化,gmp映射状态机维持s103状态。

gmp映射状态机进入s103状态后,如果fifo出现读空或者写满的情况,gmp映射状态机复位,进入开始等待状态。

gmp映射状态机进入s104状态后,执行每6帧中有1帧以cm=189映射,其他帧以cm=188映射,并按照表5中的状态4生成cm值序列、cnd值序列、σcnd值序列。

gmp映射状态机进入s104状态后,每次在第6帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位升高了,gmp映射状态机进入s105状态。

gmp映射状态机进入s104状态后,每次在第6帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位降低了,gmp映射状态机进入s103状态。

gmp映射状态机进入s104状态后,每次在第6帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位没有变化,gmp映射状态机维持s104状态。

gmp映射状态机进入s104状态后,如果fifo出现读空或者写满的情况,gmp映射状态机复位,进入开始等待状态。

gmp映射状态机进入s102状态后,执行每7帧中有1帧以cm=189映射,其他帧以cm=188映射,并按照表5中的状态2生成cm值序列、cnd值序列、σcnd值序列。

gmp映射状态机进入s102状态后,每次在第7帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位升高了,gmp映射状态机进入s103状态。

gmp映射状态机进入s102状态后,每次在第7帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位降低了,gmp映射状态机进入s101状态。

gmp映射状态机进入s102状态后,每次在第7帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位没有变化,gmp映射状态机维持s102状态。

gmp映射状态机进入s102状态后,如果fifo出现读空或者写满的情况,gmp映射状态机复位,进入开始等待状态。

gmp映射状态机进入s105状态后,执行每11帧中有2帧以cm=189映射,其他帧以cm=188映射,并按照表5中的状态5生成cm值序列、cnd值序列、σcnd值序列。

gmp映射状态机进入s105状态后,每次在第11帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位升高了,gmp映射状态机维持s105状态。

gmp映射状态机进入s105状态后,每次在第11帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位降低了,gmp映射状态机进入s104状态。

gmp映射状态机进入s105状态后,每次在第11帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位没有变化,gmp映射状态机维持s105状态。

gmp映射状态机进入s105状态后,如果fifo出现读空或者写满的情况,gmp映射状态机复位,进入开始等待状态。

gmp映射状态机进入s101状态后,执行每8帧中有1帧以cm=189映射,其他帧以cm=188映射,并按照表5中的状态5生成cm值序列、cnd值序列、σcnd值序列。

gmp映射状态机进入s101状态后,每次在第8帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位升高了,gmp映射状态机进入s102状态。

gmp映射状态机进入s101状态后,每次在第8帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位降低了,gmp映射状态机维持s101状态。

gmp映射状态机进入s101状态后,每次在第8帧的最后一个时钟周期采样fifo水位,如果水位相对中值水位没有变化,gmp映射状态机维持s101状态。

gmp映射状态机进入s101状态后,如果fifo出现读空或者写满的情况,gmp映射状态机复位,进入开始等待状态。

经过上述过程完成gmp映射,稳定后,取决于实际频偏的大小,gmp映射状态机必然会固定在某两个相邻的状态之间来回切换,而fifo水位却始终锁定在中值水位附近,和频偏没有关系。因此fifo缓存深度只需设置一个较小的值,即可完成gmp映射,充分降低了缓存时延。

本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。

说明书中未详细描述的内容为本领域技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1