一种提高带宽分配效率的方法及系统
技术领域
本发明涉及光通信领域,特别涉及一种在无源光纤网络PON系统中提高带宽分配效率的方法及相关装置。
背景技术
在10吉比特无源光纤网络XGPON协议中,每个光网络单元ONU可以有多个传输容器TCONT,每个TCONT都用一个分配标识号Alloc_ID来表示,相应的上行数据流定义为一个数据Allocation。同时,在上行帧的帧结构中,如图1所示,每一个Allocation都有一个动态带宽报告DBRu域,DBRu域包含3字节的BufOcc字段和1字节的CRC。BufOcc表示所有流经与被分配带宽的Alloc_ID相关联缓存的服务数据单元SDU流量值,这些流量的表达值以4字节的字长为单位。根据XGPON协议中的动态带宽分配DBA协议要求,状态报告SR方式的DBA计算是基于BufOcc的数据内容进行带宽分配的。
在现有XGPON OLT系统中SR方式带宽分配的公式如下:
grant(i)=alpha*dbru(i);
其中,i为TCONT的标识号,alpha为平滑系数。
在现有的XGPON ONU系统中,ONU缓存都是通过DDR来实现,根据DDR固有的行列关系将每一行定义为一个缓存空间,对应一个缓存号buf_id,ONU的每个Alloc-ID会被固定分配多个buf_id,这样buf_id的个数就决定了一个Alloc_ID的缓存能力。ONU在上报的DBRu值(指DBRu字段中的BufOcc值,下同)也以Alloc_ID对应的缓冲区的数字量为准。然而不同型号ONU的缓存管理机制不一样,缓存的利用率和缓存大小也会不一致,这样当一个XGPON系统中的OLT PON口连接多种型号的ONU的时候,同样配置和流量模型的Alloc_ID,OLT分配的带宽也会有不一致,这样就会影响XGPON网络的公平性和分配效率。
其中主要的原因是,由于缓存空间有限,在TCONT接收到大流量时,缓存就会溢出,导致上报的DBRu保持在一个恒定值,理论上这个值为Alloc_ID缓存的最大值。这时OLT并不了解TCONT的实际情况,仍然按原有的DBRu值在分配带宽,这样就会不同ONU的表现差异,缓存相对大一些的ONU则能正常工作,缓存小的ONU出现持续丢包,这种场景在实际工程应用中也是很常见的。
发明内容
本发明的目的在于提供一种提高带宽分配效率的方法及系统,能更好地解决TCONT缓存溢出时,OLT仍按DBRu恒定值分配带宽而导致的ONU数据丢包问题,使得ONU的Alloc_ID缓存溢出时,即TCONT缓存溢出时,仍然能使DBA正确分配带宽,支持ONU上发送大流量。
根据本发明的一个方面,提供了一种提高带宽分配效率的方法,包括:
PON系统中,光网络单元ONU实时检测其每个传输容器TCONT,当检测到某个TCONT缓存溢出时,向光线路终端OLT发送私有的用于报告缓存溢出的消息;
OLT根据收到的用于报告缓存溢出的消息,向ONU发送私有的用于指示ONU启动溢出分配机制的消息;
ONU收到所述用于指示ONU启动溢出分配机制的消息后,启动溢出分配机制,并计算TCONT缓存实际流量,发送至OLT;
OLT按照所述TCONT缓存实际流量,为所述TCONT动态分配带宽。
优选地,所述私有的用于报告缓存溢出的消息包括TCONT缓存溢出指示信息、用来标识TCONT的分配标识号、缓存参数信息。
优选地,OLT接收用于报告缓存溢出的消息,并根据其中的缓存参数信息,计算所述分配标识号对应的TCONT支持的理论最大带宽,并根据所述理论最大带宽、OLT的PON口的剩余带宽、所述TCONT的优先级,生成用于指示ONU启动溢出分配机制的消息,所述消息包括包含溢出模式允许控制标识、用来标识TCONT的分配标识号。
优选地,ONU收到所述用于指示ONU启动溢出分配机制的消息后,根据其中的溢出模式允许控制标识,启动溢出分配机制,并通过分配标识号,计算已进入TCONT缓存的数据量和溢出TCONT缓存的数据量之和,得到所述TCONT缓存实际流量,并发送至OLT。
优选地,还包括:
ONU检测到所述TCONT缓存不再溢出时,生成私有的用于报告缓存不再溢出的消息,并发送至OLT,所述用于报告缓存不再溢出的消息包括TCONT缓存溢出退出指示信息、用来标识TCONT的分配标识号。
优选地,还包括:
OLT接收用于报告缓存不再溢出的消息,并根据其中的TCONT缓存溢出退出指示信息,生成私有的用于指示ONU停止溢出分配机制的消息,发送至ONU,所述用于指示ONU停止溢出分配机制的消息包括溢出模式停止控制标识、用来标识TCONT的分配标识号。
优选地,还包括:
当OLT检测到其PON口剩余带宽减少时,将私有的用于指示ONU停止溢出分配机制的消息发送至ONU,所述用于指示ONU停止溢出分配机制的消息包括溢出模式停止控制标识、用来标识TCONT的分配标识号。
优选地,还包括:
ONU收到所述用于指示ONU停止溢出分配机制的消息后,根据其中的溢出模式停止控制标识,将所述分配标识号对应的TCONT的溢出分配机制停止。
优选地,所述PON系统是10吉比特无源光纤网络XGPON系统;所述私有的用于报告缓存溢出/不再溢出的消息是动态带宽报告物理层操作管理维护Dbru_Report PLOAM消息;所述私有的用于指示启动/停止溢出分配机制的消息是动态带宽控制物理层操作管理维护Dbru_Control PLOAM消息。
根据本发明的另一方面,提供了一种提高带宽分配效率的系统,包括:
光网络单元ONU,用于在无源光纤网络PON系统中,实时检测其每个传输容器TCONT,当检测到某个TCONT缓存溢出时,向光线路终端OLT发送私有的用于报告缓存溢出的消息,并在收到来自OLT的用于指示其启动溢出分配机制的消息后,启动溢出分配机制,并计算所述TCONT的缓存实际流量,发送至OLT;
光线路终端OLT,用于根据收到的用于报告缓存溢出的消息,向ONU发送私有的用于指示ONU启动溢出分配机制的消息,并按照来自ONU的所述TCONT缓存实际流量,为所述TCONT动态分配带宽。
与现有技术相比较,本发明的有益效果在于:
本发明通过ONU将TCONT缓存溢出情况上报给OLT,使OLT能够及时调整带宽分配模式,提高了带宽分配的效率,使单个ONU能支持更大流量的业务,同时也有效减轻了因不同ONU缓存不同导致的性能差异。
附图说明
图1是现有技术提供的XGPON上行帧帧结构示意图;
图2是本发明实施例提供的提高带宽分配效率的方法流程图;
图3是本发明实施例提供的DBA溢出分配机制模型;
图4是本发明实施例提供的DBA溢出分配机制握手流程图;
图5是现有技术提供的BWMAP条目格式示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
由于XGPON上行为时分系统,每个Alloc_ID只在上行某一个时隙中有发送数据的机会,这样数据包在进入ONU后,必然要通过存储转发,如果Alloc_ID的时隙没到缓存已经满了,数据包自然会被丢弃。但是从实际工程应用中也发现,如果带宽足够大,很多数据包在进入缓存区后可以马上被读出来进行发送,可以说这部分数据是不需要缓存的,因此从理论上分析,如果OLT能了解到Alloc_ID的实际流量情况,Alloc_ID完全可以支持超过缓存最大值的数据流。
以下结合图2至图4对本发明进一步说明。
图2是本发明实施例提供的提高带宽分配效率的方法流程图,如图2所示,步骤包括:
步骤201、无源光纤网络PON系统中,光网络单元ONU实时检测其每个传输容器TCONT,当检测到某个TCONT缓存溢出时,向光线路终端OLT发送私有的用于报告缓存溢出的消息。
所述步骤201中,所述私有的用于报告缓存溢出的消息包括TCONT缓存溢出指示信息、用来标识TCONT的分配标识号、缓存参数信息。
步骤202、OLT根据收到的用于报告缓存溢出的消息,向ONU发送私有的用于指示ONU启动溢出分配机制的消息。
所述步骤202中,OLT接收用于报告缓存溢出的消息,并根据其中的缓存参数信息,计算所述分配标识号对应的TCONT支持的理论最大带宽,并根据所述理论最大带宽、OLT的PON口的剩余带宽、所述TCONT的优先级,生成用于指示ONU启动溢出分配机制的消息,所述消息包括包含溢出模式允许控制标识、用来标识TCONT的分配标识号。
步骤203、ONU收到所述用于指示ONU启动溢出分配机制的消息后,启动溢出分配机制,并计算所述TCONT缓存实际流量,发送至OLT。
所述步骤203中,ONU收到所述用于指示ONU启动溢出分配机制的消息后,根据其中的溢出模式允许控制标识,启动溢出分配机制,并通过分配标识号,计算已进入TCONT缓存的数据量和溢出TCONT缓存的数据量之和,得到所述TCONT缓存实际流量,并发送至OLT。
步骤204、OLT按照所述TCONT缓存实际流量,为所述TCONT动态分配带宽。
进一步地,ONU检测到所述TCONT缓存不再溢出时,生成私有的用于报告缓存不再溢出的消息,并发送至OLT,所述用于报告缓存不再溢出的消息包括TCONT缓存溢出退出指示信息、用来标识TCONT的分配标识号。OLT接收用于报告缓存不再溢出的消息,并根据其中的TCONT缓存溢出退出指示信息,生成私有的用于指示ONU停止溢出分配机制的消息,发送至ONU,以便ONU收到所述用于指示ONU停止溢出分配机制的消息后,根据其中的溢出模式停止控制标识,将所述分配标识号对应的TCONT的溢出分配机制停止。所述用于指示ONU停止溢出分配机制的消息包括溢出模式停止控制标识、用来标识TCONT的分配标识号。
进一步地,当OLT检测到其PON口剩余带宽减少时,也可以将私有的用于指示ONU停止溢出分配机制的消息发送至ONU,所述用于指示ONU停止溢出分配机制的消息包括溢出模式停止控制标识、用来标识TCONT的分配标识号。
进一步地,上述PON系统是10吉比特无源光纤网络XGPON系统,上述私有的用于报告缓存溢出/不再溢出的消息是动态带宽报告物理层操作管理维护Dbru_Report PLOAM消息,上述私有的用于指示启动/停止溢出分配机制的消息是动态带宽控制物理层操作管理维护Dbru_Control PLOAM消息。
图3是本发明实施例提供的DBA溢出分配机制模型,如图3所示,系统包括:
光网络单元ONU,用于在无源光纤网络PON系统中,实时检测其每个传输容器TCONT,当检测到某个TCONT缓存溢出时,向光线路终端OLT发送私有的用于报告缓存溢出的消息,并在收到来自OLT的用于指示其启动溢出分配机制的消息后,启动溢出分配机制,并计算所述TCONT缓存实际流量,发送至OLT;
光线路终端OLT,用于根据收到的用于报告缓存溢出的消息,向ONU发送私有的用于指示ONU启动溢出分配机制的消息,并按照来自ONU的所述TCONT缓存实际流量,为所述TCONT动态分配带宽。
上述PON系统是10吉比特无源光纤网络XGPON系统,上述私有的用于报告缓存溢出的消息是动态带宽报告物理层操作管理维护Dbru_Report PLOAM消息,上述私有的用于指示启动溢出分配机制的消息是动态带宽控制物理层操作管理维护Dbru_Control PLOAM消息。
在现在XGPON协议的基础上,上下行各增加了一个私有的PLOAM消息,用于在Alloc_ID缓存溢出情况下,OLT和ONU交互各种状态和配置信息。另外结合这些交互的信息,对ONU上报DBRu的方式和OLT分配带宽的方式进行了改进。
所述系统的工作流程包括以下几个主要步骤:
步骤A、ONU上报缓存溢出情况
ONU实时检测各TCONT缓存占用情况,如果发现流量过大,导致TCONT缓存溢出,则通过上行私有Dbru_Report PLOAM消息(表1)上报TCONT缓存大小以及缓存溢出情况。
步骤B、OLT决定是否启动溢出分配机制
OLT根据上报状态,决定是否需要开启DBRu溢出上报模式,并通过下行私有Dbru_control PLOAM消息(表2),通知ONU是否对TCONT启动溢出分配机制,即通知ONU是否使TCONT进入溢出上报模式。
步骤C、ONU进入溢出上报模式
ONU收到OLT的Dbru_control PLOAM消息通知允许溢出上报后,对TCONT启动溢出分配机制,改变DBRU上报模式,统计进入Alloc_ID缓存的实际流量(包括因缓存满丢弃的流量),将实际流量值通过BufOcc上报给OLT。
步骤D、OLT进入溢出模式带宽分配
OLT根据ONU上报的溢出模式DBRU值,调整带宽分配方式,充分提高带宽的利用率。
表1
相反,当ONU的流量发生变化而导致TCONT缓存不溢出时,OLT和ONU系统可以重复以上步骤,退出DBRu溢出分配机制,恢复正常带宽分配。
图4是本发明实施例提供的DBA溢出分配机制握手流程图,在现有XGPON DBA协议中,还有一种基于流量方式的(TM)DBA分配方式,这种方法虽然可以避免DBRu溢出而导致的问题,但这种方法过分依赖上行净荷pm和上行空闲帧idle的统计数值,为了使带宽预测能实时跟上ONU的实际流量以及解决工程上的一些误差因素,往往分配的带宽偏大会造成不必要的带宽浪费。本发明仍然基于SR方式对DBA系统进行改进,通过增加私有的PLOAM消息,使OLT和ONU双方能进入DBRu溢出工作模式,可以有效地解决这个问题。具体实现过程如图4所示,包括:
步骤一、ONU上报缓存溢出情况。
一个ONU可以同时支持多个TCONT,每个TCONT用一个Alloc_ID来表示,ONU会给每个Alloc_ID分配一定的独占缓存空间,也有一些ONU会有部分额外缓存空间用于多个Alloc_ID共享,但一般也会有最大的缓存限制。每一个Alloc_ID实时检测缓存占用情况(如图3),当Alloc_ID对应的多条流进入缓存时,如果发现缓存溢出了,则对缓存溢出丢弃部分的数据量进行统计,同时通过上行私有的Dbru_Report PLOAM消息(如表1)向OLT上报TCONT缓存大小以及缓存溢出情况。
以上Dbru_Report PLOAM消息的消息类型message_id固定为0x20,当Alloc_ID对应的缓存溢出时发送Dbru_Report PLOAM消息,其中overflow_ind位置1,同时上报缓存参数信息buf_num和buf_len,所述Buf_num和buf_len为2的指数次幂参数,可以覆盖到各种缓存大小的ONU型号。
当ONU不支持缓存参数上报时,buf_num和buf_len值填写为0xff。
步骤二、OLT决定是否启动溢出分配机制。
OLT在接收上行各个ONU发送的Dbru_Report PLOAM消息后,将各个Alloc_ID实时上报的缓存参数信息和TCONT缓存溢出指示信息存储在一张TCONT表中。OLT可以通过缓存参数信息推断出该Alloc_ID在当前配置下理论支持的最大带宽,然后决策是否允许这个Alloc_ID支持超过理论最大带宽的流量。OLT在做决定时需要按以下优先级顺序考虑以下三个因素:
1、理论最大带宽小于保证带宽。
2、PON口有剩余带宽可以利用。
3、Alloc_ID优先级较高。
当OLT决定对该Alloc_ID启动溢出分配机制时,通过下行Dbru_controlPLOAM消息(表2),通知ONU进入溢出上报模式,其中message_id固定为0x15,overflow_rpt_en置1。
当OLT认为该Alloc_ID不能启动溢出分配机制时,仍然需要下发Dbru_controlPLOAM消息,其中overflow_rpt_en置0。
步骤三、ONU进入溢出上报模式。
ONU收到Dbru_control PLOAM消息后,如果判断为OLT不允许溢出模式控制,则记录OLT的应答状态,后续不再上报Dbru_Report PLOAM消息,除非缓存退出溢出状态后,再次进入溢出状态。
如果判断为OLT允许溢出模式控制,则改变DBRu上报模式,由原来的只统计进入TCONT缓存的数据量buf_used,变为计算TCONT缓存数据量和因TCONT缓存满而丢弃的数据量buf_discard之和,公式如下:
Dbru(n)=buf_used(n)+buf_discard(n)
ONU将该Alloc_ID计算出的新DBRu(n)值通过BufOcc上报给OLT。
在统计数据量时,由于丢弃是按整包丢的,因此也需要按整包进行统计。
步骤四、OLT进入溢出模式带宽分配。
OLT接收DBRu值时不区分带宽分配模式,而在进行DBA计算时,根据该Alloc_ID相应的溢出分配允许状态来决定计算方式。
在正常分配模式中,一般alpha参数为0.25,这样可以对流量进行平滑,减少带宽抖动,但同时对ONU缓存的压力增大了4倍,一旦DBRu值溢出算法就失效了。
在溢出分配模式中,alpha值可以调整为1,这样既可以提高了缓存的利用率,又能使DBA对Alloc_ID按实际需求进行带宽分配。同时,在缓存溢出时,由于一般都是大流量,流量相对比较平稳,因此带宽抖动指标不会有太多恶化。
DBA计算的结果值,仍然通过BWMAP条目下发给Alloc_ID(如图5),与正常分配的下发方式相同。
另外,本发明还考虑了DBA溢出分配过程中的退出机制。
ONU检测到Alloc_ID的流量减小缓存不再溢出时,可以通过发送Dbru_ReportPLOAM消息(overflow_ind=0)通知OLT可以结束溢出分配机制,等待OLT下发Dbru_ControlPLOAM消息(overflow_rpt_en=0)通知ONU可以退出溢出分配机制时,恢复正常DBRu上报方式,同时OLT恢复正常分配模式。
同样地,当OLT检测到PON口剩余带宽减少或是满足其它业务需求时,可以强制退出溢出分配机制,直接下发Dbru_Control PLOAM消息(overflow_rpt_en=0)通知ONU退出。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。