本发明涉及增强型多媒体广播/多播业务(embms,ehancedmultimediabroadcast/multicastservice),尤其涉及一种数据包处理方法和装置。
背景技术:
embms也被称为长期演进(lte,longtermevolution)广播/多播,是一种先进的移动数据传输技术,可以使运营商显著降低在lte网络上同一时间向多个用户提供诸如视频、音频等高带宽内容的成本。embms采用lte制式的非确认模式(um,unacknowledgedmode)无线链路控制(rlc,radiolinkcontrol)层传输方式,该种方式不需要接收方确认,发送方不重传数据,适用于实时性高的场景;因此保证传输成功率是非常重要的。
rlc层是用来完成服务数据单元(sdu,servicedataunit)的组包或协议数据单元(pdu,protocoldataunit)解包工作。embms业务中rlc层是um模式,基站侧将sdu组包成pdu,并按序将序列号(sn,serialnumber)和sdu分段信息(fi,framinginfo)写入rlc子头;终端侧根据rlc子头信息从pdu中解出sdu数据,并将完整的sdu提交高层。
对于终端侧,sn的连续性很重要,连续的sn能保证sdu数据的连续性、完整性;如果sn发生跳跃,则意味着可能会发生sdu丢包;一般sn发生跳跃的原因是空口丢包,这种情况下,丢失的sdu或sdu分段就无法还原。
但是,在embms业务中,sn的跳跃不一定是因为空口丢包;这种场景下,是有可能保证sdu数据的连续性和完整性的。embms相关协议规定,在多播控制信道(mcch,multicastcontrolchannel)修改周期点或者多播信道调度信息(msi,multicastchannelschedulinginformation)周期点,基站侧要 将sn复位为0;这样,对于终端侧来说,终端侧接收的sn很可能是不连续的;sn的不连续意味着中间丢包,这种情况下,作为接收方的终端侧会将之前保存的sdu分段信息丢掉;并且,如果sn等于0的pdu中,第一个sdu不是完整的,即为sdu分段,则该sdu也会被丢弃。
如何避免在mcch修改周期点或msi周期点这种场景下丢包,是亟待解决的问题。
技术实现要素:
有鉴于此,本发明实施例期望提供一种数据包处理方法和装置,能避免在mcch修改周期点和/或msi周期点的场景下丢包,提高传输成功率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种数据包处理方法,所述方法包括:
获取当前多播/组播单频网络(mbsfn,multimediabroadcastmulticastservicesinglefrequencynetwork)子帧信息和rlc组包sn复位时间点;
根据mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包。
上述方案中,所述采用不同方式进行pdu组包,包括:
所述mbsfn子帧为所述sn复位时间点,且有上一次pdu组包剩余sdu分段组入时,将所述sdu分段所属sdu重新组包到pdu中;和/或,所述mbsfn子帧为所述sn复位时间点的前一个mbsfn子帧,且有sdu不能完全组入当前pdu中,需要进行分段时,放弃将所述sdu组入当前pdu中。
上述方案中,所述sn复位时间点,包括:mcch修改周期点、和/或msi周期点。
本发明实施例还提供了一种数据包处理方法,所述方法包括:
获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点;
比较所述第一sn和所述第二sn,当所述第一sn和第二sn不连续时, 根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包。
上述方案中,所述采用不同方式进行pdu解包,包括:
如果所述第一sn为0,所述当前mbsfn子帧为所述sn复位时间点,且保存的sdu分段和当前pdu之间没有丢失过数据,则将之前保存的sdu分段和当前pdu中的第一个sdu分段合并出完整的sdu;
如果所述第一sn不为0,则丢弃之前保存的sdu分段和当前pdu中的第一个sdu分段。
上述方案中,确定所述保存的sdu和当前pdu之间没有丢失过数据的方法,包括:
如果所述保存的sdu分段是在所述当前pdu前一个连续的mbsfn子帧被更新过,且所述当前pdu前一个连续的mbsfn子帧和当前pdu的mbsfn子帧为配置给同一终端的mbsfn子帧,则确定保存的sdu分段和当前pdu之间没有丢失过数据。
上述方案中,所述rlc组包sn复位时间点,包括:mcch修改周期点、和/或msi周期点。
本发明实施例还提供了一种数据包处理装置,所述装置包括:第一获取模块、组包模块;其中,
所述第一获取模块,用于获取当前mbsfn子帧信息和rlc组包sn复位时间点;
所述组包模块,用于根据mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包。
上述方案中,所述组包模块,具体用于:
所述mbsfn子帧为所述sn复位时间点,且有上一次pdu组包剩余sdu分段组入时,将所述sdu分段所属sdu重新组包到pdu中;和/或,所述mbsfn子帧为所述sn复位时间点的前一个mbsfn子帧,且有sdu不能完全组入当前pdu中,需要进行分段时,放弃将所述sdu组入当前pdu中。
上述方案中,所述sn复位时间点,包括:mcch修改周期点、和/或msi周期点。
本发明实施例还提供了一种数据包处理装置,所述装置包括:第二获取模块、解包模块;其中,
所述第二获取模块,用于获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点信息;
所述解包模块,用于比较所述第一sn和所述第二sn,当所述第一sn和第二sn不连续时,根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包。
上述方案中,所述解包模块,具体用于:
如果所述第一sn为0,所述当前mbsfn子帧为所述sn复位时间点,且保存的sdu分段和当前pdu之间没有丢失过数据,则将之前保存的sdu分段和当前pdu中的第一个sdu分段合并出完整的sdu;
如果所述第一sn不为0,则丢弃之前保存的sdu分段和当前pdu中的第一个sdu分段。
上述方案中,所述解包模块,还用于:
如果所述保存的sdu分段是在所述当前pdu前一个连续的mbsfn子帧被更新过,且所述当前pdu前一个连续的mbsfn子帧和当前pdu的mbsfn子帧为配置给同一终端的mbsfn子帧,则确定保存的sdu分段和当前pdu之间没有丢失过数据。
上述方案中,所述rlc组sn复位时间点,包括:mcch修改周期点、和/或msi周期点。
本发明实施例所提供的数据包处理方法和装置,在基站侧,获取当前mbsfn子帧信息和rlc组包sn复位时间点;根据所述mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包;在终端侧,获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点;比较所述第一sn和所述第二sn,当所述第一sn和第 二sn不连续时,根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包。如此,rlc组包sn复位时间点,如mcch修改周期点、和/或msi周期点的场景下,能避免基站侧发送sn不连续的pdu,终端能对sn不连续的sdu进行合并;避免在mcch修改周期点和/或msi周期点的场景中丢包,从而提高传输成功率。
附图说明
图1为本发明实施例基站侧数据包处理方法的流程示意图;
图2为本发明实施例第一种pdu组包方法的流程示意图;
图3为本发明实施例第二种pdu组包方法的流程示意图;
图4为本发明实施例终端侧数据包处理方法的流程示意图;
图5为本发明实施例终端侧pdu解包方法的流程示意图;
图6为本发明实施例基站侧数据包处理装置的结构示意图;
图7为本发明实施例终端侧数据包处理装置的结构示意图。
具体实施方式
本发明实施例中,所述方法包括:在基站侧,获取当前mbsfn子帧信息和rlc组包sn复位时间点;根据所述mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包;在终端侧,获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点;比较所述第一sn和所述第二sn,当所述第一sn和第二sn不连续时,根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包。
下面结合实施例对本发明再作进一步详细的说明。
本发明实施例提供的数据包处理方法,所述方法应用于基站侧,如图1所示,包括:
步骤101:获取当前mbsfn子帧信息和rlc组包sn复位时间点;
这里,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;
通常,基站pdu组包在mbsfn子帧内完成,所述mbsfn子帧可以理解为一个时间单位,每个mbsfn子帧有一个mbsfn子帧号;mcch修改周期、和/或msi周期为一个时间长度,多个mbsfn子帧组成一个mcch修改周期、和/或msi周期;因此一个周期内的最后一个mbsfn子帧为mcch修改周期点或msi周期点,最后一个mbsfn子帧可以根据子帧号来确定;如设定1024个mbsfn子帧为一个mcch修改周期、和/或msi周期,子帧号从1到1024,则子帧号为1024的mbsfn子帧为mcch修改周期点或msi周期点。可以在pdu组包的时,获取当前mbsfn子帧的信息。
步骤102:根据mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包;
这里,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;根据当前pdu组包的mbsfn子帧与mcch修改周期点、和/或msi周期点的关系,可以采用两种方法来避免sdu分段的产生。
如图2所示,第一种方法包括:
步骤201:判断所述mbsfn子帧是否为mcch修改周期、和/或msi周期;如果是,则表明sn会被复位为0,可能产生sn不连续的情况,执行步骤202;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
步骤202:判断上一次组pdu时,是否有上一次pdu组包剩余sdu分段组入时;如果有,则表明当前组包中会产生一个sn不连续的sdu分段,进行步骤203;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
步骤203:重新组包sdu分段所对应的整个sdu,从该sdu第一个字节开始重新组包到pdu中;
如此,避免在mcch修改周期点、和/或msi周期点sn不连续的sdu分 段的产生。
如图3所示,第二种方法包括:
步骤301:判断当前mbsfn子帧是否为mcch修改周期点、和/或msi周期点前一个配置的mbsfn子帧;如果是,则进行步骤302;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
步骤302:判断在当前pdu组包时,确定是否有sdu不能完全组入当前pdu中,需要进行分段;如果需要分段,则表明下一个mbsfn子帧组包中会产生不连续sn的sdu分段,执行步骤303;否则,按正常组pdu流程进行;
步骤303:放弃将所述当前sdu组入当前pdu;以确保只将完整的sdu组入当前pdu,或确保当前组入的sdu分段已经是最后一个分段,能和之前pdu中的sdu分段组成一个完整的sdu。
这里,在基站中,所述第一种方法和第二种方法可以只采用其中的一种,也可以同时采用两种。
本发明实施例提供的数据包处理方法,所述方法应用于终端侧,如图4所示,包括:
步骤401:获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点;
具体的,在每个配置给终端的mbsfn子帧,接收基站侧发来的rlc层pdu;获取当前接收的pdu对应的的sn、mbsfn子帧信息、和rlc组包sn复位时间点;其中,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;
步骤402:比较所述第一sn和所述第二sn,当所述第一sn和第二sn不连续时,根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包;
具体的,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;如图5所示,具体解包方法包括:
步骤501:判断当前接收的pdu的sn是否和上一个不连续,如果是,则 可能发生了空口丢包,或sn在所述mcch修改周期点、和/或msi周期点被复位,需要进行进一步判断,如此,执行步骤502;否则,按正常组pdu流程进行;
步骤502:判断当前接收的pdu的sn是否等于0,如果是,则表明所述当前pdu对应的sn可能在所述mcch修改周期点、和/或msi周期点被复位,需执行步骤503做进一步判断;否则,表明发生了空口丢包,前一个pdu和当前pdu中未合并的的sdu分段无法合并,因此,丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
步骤503:判断当前mbsfn子帧是否为mcch修改周期、和/或msi周期,如果是,则表明当前pdu对应的sn可能在所述mcch修改周期点、和/或msi周期点被复位,执行步骤504做进一步处理;否则,表明发生了空口丢包,因此,丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
步骤504:判断之前保存的sdu分段是否在上一个连续的、配置给该终端的mbsfn子帧被更新过,如此,可以确定保存的sdu分段和当前pdu之间没有丢失过数据;如果是,则执行步骤505;否则,表明保存的sdu分段和当前sdu分段并不连续,不能合并成完整的sdu,因此,丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
步骤505:将之前保存的sdu分段和当前接收的pdu中的第一个sdu分段合并出完整的sdu;如此,在mcch修改周期点或msi周期点这种场景中,sn虽然不连续,但是,终端侧之前保留的sdu分段和当前接收的sn等于0的pdu中的第一个sdu分段,可以合并出一个完整sdu。
在实际应用中,由于基站厂家和终端厂家的不同等原因,本发明实施例基站侧的技术方案可能不适于应用到所有基站,本发明实施例终端侧的技术方案可能不适于应用到所有终端;因此,可以考虑同时在基站侧和终端侧采用本发明实施例的技术方案,以保证提升本发明实施例所提供技术方案的效果。
本发明实施例提供的数据包处理装置,如图6所示,所述装置包括:第一 获取模块61、组包模块62;其中,
所述第一获取模块61,用于获取当前mbsfn子帧信息和rlc组包sn复位时间点;
这里,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;
通常,基站pdu组包在mbsfn子帧内完成,所述mbsfn子帧可以理解为一个时间单位,每个mbsfn子帧有一个mbsfn子帧号;mcch修改周期、和/或msi周期为一个时间长度,多个mbsfn子帧组成一个mcch修改周期、和/或msi周期;因此一个周期内的最后一个mbsfn子帧为mcch修改周期点或msi周期点,最后一个mbsfn子帧可以根据子帧号来确定;如设定1024个mbsfn子帧为一个mcch修改周期、和/或msi周期,子帧号从1到1024,则子帧号为1024的mbsfn子帧为mcch修改周期点或msi周期点。可以在pdu组包时,获取当前mbsfn子帧的信息;
所述组包模块62,用于根据mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu组包;
具体的,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;根据当前pdu组包的mbsfn子帧与mcch修改周期点、和/或msi周期点的关系,所述组包模块62可以采用两种方法进行组包:
所述组包模块62采用第一种方法组包,包括:
判断所述mbsfn子帧是否为mcch修改周期、和/或msi周期;如果是,则表明sn会被复位为0,可能产生sn不连续的情况,需进行下一步处理;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
判断上一次组pdu时,是否有上一次pdu组包剩余sdu分段组入时;如果有,则表明当前组包中会产生一个sn不连续的sdu分段,进行下一步的组包处理;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
重新组包sdu分段所对应的整个sdu,从该sdu第一个字节开始重新组 包到pdu中;
如此,避免在mcch修改周期点、和/或msi周期点sn不连续的sdu分段的产生。
所述组包模块62采用第二种方法组包,包括:
判断当前mbsfn子帧是否为mcch修改周期点、和/或msi周期点前一个配置的mbsfn子帧;如果是,则进行下一步的判断;否则,按正常组pdu流程进行,直至组包接送,并发送完成组包的pdu;
判断在当前pdu组包时,确定是否有sdu不能完全组入当前pdu中,需要进行分段;如果需要分段,则表明下一个mbsfn子帧组包中会产生不连续sn的sdu分段,进行下一步的处理;否则,按正常组pdu流程进行;
放弃将所述当前sdu组入当前pdu;以确保只将完整的sdu组入当前pdu,或确保当前组入的sdu分段已经是最后一个分段,能和之前pdu中的sdu分段组成一个完整的sdu;
在实际应用中,所述第一获取模块61、组包模块62,均可由位于基站中的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。
本发明实施例提供的数据包处理装置,如图7所示,所述装置包括:第二获取模块71、解包模块72;其中,
所述第二获取模块71,用于获取当前pdu对应的第一sn、前一个pdu对应的第二sn、当前mbsfn子帧、和rlc组包sn复位时间点;
具体的,在每个配置给终端的mbsfn子帧,接收基站侧发来的rlc层pdu;获取当前接收的pdu对应的的sn、mbsfn子帧信息、和rlc组包sn复位时间点;其中,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;
所述解包模块72,比较所述第一sn和所述第二sn,当所述第一sn和第二sn不连续时,根据所述第一sn、以及所述当前mbsfn子帧与所述sn复位时间点的关系,采用不同方式进行pdu解包;
具体的,所述rlc组包sn复位时间点包括:mcch修改周期、和/或msi周期;所述解包模块72采用不同方式进行pdu解包,包括:
判断当前接收的pdu的sn是否和上一个不连续,如果是,则可能发生了空口丢包,或sn在所述mcch修改周期点、和/或msi周期点被复位,需要进行进一步判断,如此,进行下一步判断;否则,按正常组pdu流程进行;
判断当前接收的pdu的sn是否等于0,如果是,则表明所述当前pdu对应的sn可能在所述mcch修改周期点、和/或msi周期点被复位,需进行下一步判断;否则,表明发生了空口丢包,前一个pdu和当前pdu中未合并的的sdu分段无法合并,因此,丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
判断当前mbsfn子帧是否为mcch修改周期、和/或msi周期,如果是,则表明当前pdu对应的sn可能在所述mcch修改周期点、和/或msi周期点被复位,需做进一步的判断;否则,表明发生了空口丢包,因此丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
判断之前保存的sdu分段是否在上一个连续的,配置给该终端的mbsfn子帧被更新过,如此,可以确定保存的sdu分段和当前pdu之间没有丢失过数据;如果是,则按照下一步的处理方法进行处理;否则,表明保存的sdu分段和当前sdu分段并不连续,不能合并成完整的sdu,因此,丢弃之前保存的sdu分段,同时也丢弃当前pdu中的第一个sdu分段;
将之前保存的sdu分段和当前接收的pdu中的第一个sdu分段合并出完整的sdu;如此,在mcch修改周期点或msi周期点这种场景中,sn虽然不连续,但是终端侧之前保留的sdu分段和当前接收的sn等于0的pdu中的第一个sdu分段,可以合并出一个完整sdu。
在实际应用中,由于基站厂家和终端厂家的不同等原因,本发明实施例基站侧的技术方案可能不适于应用到所有基站,本发明实施例终端侧的技术方案可能不适于应用到所有终端;因此,可以考虑同时在基站侧和终端侧采用本发明实施例的技术方案,以保证提升本发明实施例所提供技术方案的效果。
在实际应用中,所述第二获取模块71、解包模块72,均可由位于终端中的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。
以上所述,仅为本发明的佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。