本申请要求申请日为2012年2月7日,申请号为201210026596.3,发明名称为一种数据传输方法和装置的在先申请的优先权,该在先申请的全部内容均已在本申请中体现。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的组件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
本发明实施例提供了一种数据发送方法,如图1所示,包括:
步骤S 101:将媒体接入控制协议数据单元(MPDU)封装为组媒体接入控制协议数据单元(G-MPDU)的子帧,包括:在所述MPDU之前设置定界符,所述定界符由定界符标识和所述MPDU的长度校验信息组成;
步骤S102:将一个或者多个所述子帧封装为G-MPDU;
步骤S103:发送所述G-MPDU。
其中,所述定界符中的长度校验信息由所述MPDU去掉帧校验序列FCS后的剩余长度得出。MPDU包括帧头、帧体和FCS部分,因此,所述剩余长度也是所述MPDU的帧头长度和帧体长度之和。
较佳地,在将MPDU封装为G-MPDU的子帧时,如果不是最后一个子帧,还在所述MPDU之后设置填充位,以使得所述子帧的长度是2字节的整数倍,使得解析处理更简单。
较佳地,本发明实施例设计以2个字节承载定界符,其中:以1个字节承载定界符标识,以另一个字节承载长度校验信息,从而只需设计0个或者1个字节的填充位,节约了开销,提高了处理效率。
参见图2,该图示出了采用本发明上述方法封装的G-MPDU结构,G-MPDU由一系列G-MPDU子帧组成。
参见图3,该图示出了采用本发明上述方法封装的G-MPDU的子帧结构,其中:G-MPDU子帧包括G-MPDU定界符(后续描述中简称定界符)、MPDU和可能的填充字节。除了最后一个G-MPDU子帧,每个G-MPDU子帧需要增加0个或者1个填充字节,使每个G-MPDU子帧的长度是2字节的整数倍。
参见图4,该图示出了采用本发明上述方法封装的G-MPDU的定界符的格式,由定界符标识和长度校验信息(CRC)组成。其中:定界符标识为一固定值,例如0x46。CRC由MPDU去掉FCS的剩余长度得出。
下面将详述如何计算CRC:
首先,需要获取MPDU去掉FCS的剩余长度,即帧头和帧体的长度之和,如图5所示,包括步骤:
步骤S501:解析所述MPDU的帧头,得到帧类型信息;
本发明实施例中所述帧类型信息包括帧类型和子类型。
其中,帧类型包括管理控制和数据。所述子类型用于对帧类型做进一步细化。具体可参见表1。
1.有效的类型和子类型的组合
将上述各种子类型的管理控制帧,划分为有序列号管理控制帧和无序列号管理控制帧,其中:
有序列号管理控制帧包括:BCF帧、CSI_MIMO帧、BFM_MIMO帧、CQI_FB帧。
无序列号管理控制帧包括:随机接入请求帧、随机接入响应帧、终端基本能力协商请求帧、终端基本能力协商响应帧、动态业务建立请求帧、动态业务建立响应帧、动态业务修改请求帧、动态业务修改响应帧、动态业务删除请求帧、动态业务删除响应帧、独立资源请求帧、ACK帧、GroupAckReq帧、GroupAck帧、退出网络帧、信道切换通知帧、休眠请求帧、休眠响应帧和下行业务指示帧。
根据从帧头中解析出的帧类型和子类型与上述预设的类型表相匹配,即可知晓MPDU的类型。
在其他实施例中,帧类型信息也可采用其他划分方式,本发明在此不做限制。
步骤S502:根据所述帧类型信息确定出对应的帧头长度;
根据所述帧类型信息,即可定位出对应类型的帧的帧头格式。
本发明实施例中设计2种帧头:
第一种如图6所示,长度为6个字节,包括16bit的帧控制字段、4bit的分片号字段、12bit的序号字段、3bit的预留位、1bit的分片指示字段、12bit的长度字段。其中:
帧控制字段如图7所示,包含下列字段:2bit的协议版本、1bit的帧类型字段、5bit的子类型字段、4bit的流标识(FID)字段、1bit的重传指示字段和3bit的预留字段。
另一种长度为2个字节,仅包括如图7所示的16bit的帧控制字段。
对于帧类型为数据的,使用6个字节的帧头格式。
对于帧类型为管理控制的,如果是有序列号管理控制帧,则使用6个字节的帧头格式;如果是无序列号管理控制帧,则使用2个字节的帧头格式。
在其他实施例中,也可设计其他结构的帧头,皆可适用上述方法,由帧类型信息确定出对应的帧头长度。
步骤S503:根据所述帧类型信息判断确定对应的帧体长度获取策略,获取帧体长度;
本发明根据不同类型的帧结构特点,设计相应的帧结构获取策略,具体如下:
当所述MPDU是帧类型为数据的帧,或者是有序列号管理控制帧时,帧头中设置有长度字段,用于承载帧体长度指示信息,因此,通过解析帧头,从中获取帧体长度指示信息,得到帧体长度;
当所述MPDU是无序列号管理控制帧时,如果长度固定,则根据帧类型和子类型即可直接确定出对应的帧体长度;
当所述MPDU是无序列号管理控制帧时,如果长度不固定,则解析帧体,则需计算帧体长度,其中:
计算方法1:当帧体中携带变长信息块总长度的指示信息时,解析出所述变长信息块总长度的指示信息,得到帧体中变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
计算方法2:当帧体中携带变长信息块的数量信息时,解析出所述信息块的数量信息,根据所述信息块的数量信息与所述信息块的单位长度,计算出所述变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
步骤S504:根据所述MPDU的帧头长度和帧体长度计算所述剩余长度。
下面以待封装的MPDU为GroupAck帧为例说明长度不固定的无序列号管理控制帧如何获取MPDU去掉FCS后的剩余长度。
步骤S801:解析出MPDU的帧头中的帧类型和子类型,据以确定所述MPDU为GroupAck帧;
步骤S802:确定出GroupAck对应的帧头长度为2bit;
GroupAck为无序列号管理控制帧,使用2bit的帧头。
步骤S803:确定出GroupAck对应的帧体中具有长度字段,用于承载所有FID信息块的总长度;
GroupAck的帧格式如图9所示;
步骤S804:解析GroupAck的帧体中的长度字段,得到GroupAck中所有FID信息块的总长度;
步骤S805:计算帧体中的预留字段、管理控制帧确认位、长度字段和FID信息块的总长度之和,得到GroupAck的帧体长度;
步骤S806:计算GroupAck的帧头长度和帧体长度之和,得到GroupAck去掉FCS的剩余长度。
下面再以待封装的MPDU为独立资源请求帧为例说明长度不固定的无序列号管理控制帧如何获取MPDU去掉帧校验序列FCS后的剩余长度。
步骤S1001:解析出MPDU的帧头中的帧类型和子类型,据以确定所述MPDU为独立资源请求帧;
步骤S1002:确定独立资源请求帧对应的帧头长度为2bit;
独立资源请求帧为无序列号管理控制帧,使用2bit的帧头。
步骤S1003:确定出独立资源请求帧对应的帧体中不具有用于承载帧体长度的字段,但是存在FID个数字段;
独立资源请求帧的帧格式如图11所示;
步骤S1004:解析独立资源请求帧的帧体中的FID个数字段;
独立资源请求帧之所以长度可变是由于FID信息块的个数可变,因此,可根据FID个数与FID信息块的单位长度计算动态可变的FID信息块的总长度,再与定长信息块的总长度求和即可;
步骤S1005:根据FID信息块的个数与FID信息块的单位长度计算出FID信息块的总长度;
步骤S1006:计算帧体中的站点标识(STAID)字段、业务流(FID)个数字段和FID信息块的总长度之和,得到独立资源请求帧的帧体长度;
步骤S1007:计算独立资源请求帧的帧头长度和帧体长度之和,得到独立资源请求帧去掉FCS的剩余长度。
获取到MPDU去掉FCS后的剩余长度后,可采用8位CRC校验。CRC可采用如下标准多项式产生:
G(x)=x8+x2+x+1
寄存器初始状态为0xFF,运算结束后将寄存器状态取反作为CRC校验序列输出。CRC校验比特按照从高阶到低阶的字节顺序进行发送。
由上述内容可见,本发明实施例中的定界符标识设计简洁,长度信息是从MPDU中获取的,并不在定界符中设置长度字段显性表示,节约了开销。
参见图12,该图示出了本发明实施例一种数据接收方法,用于接收采用上述方法发送来的G-MPDU,包括:
步骤S1201:接收并解析G-MPDU;
其中,所述G-MPDU包括一个或者多个子帧,每个子帧中封装有定界符和MPDU;所述定界符由定界符标识和所述MPDU的长度校验信息组成;
步骤S1202:设置待匹配的比特位初始位置n=1;
即,从第1个比特位开始,逐比特匹配定界符标识;
步骤S1203:将第n个比特匹配定界符标识,如果匹配正确,则执行步骤S1204;否则,执行步骤S1205;
步骤S1205:设置n=n+1,返回步骤S1203;
步骤S1204:根据定界符标识定位出当前子帧中的MPDU,执行步骤S1206;
步骤S1206:根据定界符中的长度校验信息对所述MPDU做长度校验,如果校验成功,则执行步骤S1207;如果校验失败,则返回步骤S1205;
步骤S1207:认为定界符识别正确,开始解析。
定界符识别正确后,以所述定界符为首个定界符,根据G-MPDU中当前子帧中的MPDU的总长度(帧头长度、帧体长度和FCS长度之和),即可确定出下一个子帧的位置,以此类推,可以定位出后续各子帧的位置。因此,对于一个G-MPDU,在首次确定定界符识别正确后,即可根据长度的对应关系,依次定位出各子帧的位置,无需对每一个子帧都通过定界符匹配来定位。
在执行步骤S1205时,是通过对所述MPDU去掉FCS后的剩余长度进行校验,将校验结果与定界符中的长度校验信息比较,如果相同,则认为校验成功;如果不相同,则认为校验失败。获取所述剩余长度的过程同G-MPDU封装过程中计算长度校验信息CRC时获取剩余长度的方法。
较佳地,在将MPDU封装为G-MPDU的子帧时,如果不是最后一个子帧,还在所述MPDU之后设置填充位,以使得所述子帧的长度是2字节的整数倍,相应地,对于接收端而言,将很好的降低解析难度,提高解析速度。较佳地,设计以2个字节承载定界符,其中:以1个字节承载定界符标识,以另一个字节承载长度校验信息,从而只需设计0个或者1个字节的填充位,节约了开销,提高了整体的数据传输处理的效率。
采用本发明数据传输方法,接收端在匹配到定界符标识后,还进一步对MPDU长度校验,以验证定界符标识是否识别正确,从而有效降低误判断率,提高了数据接收的正确率。在业务传输信道传输的所有MPDU都使用G-MPDU方式传输,将使得数据传输更加高效和可靠。
为实现上述数据发送方法,本发明实施例还提供了一种数据发送装置,如图13所示,包括:
封装模块1301,用于将媒体接入控制协议数据单元MPDU封装为组媒体接入控制协议数据单元G-MPDU的子帧,包括:在所述MPDU之前设置定界符,所述定界符由定界符标识和所述MPDU的长度校验信息组成;以及将一个或者多个所述子帧封装为G-MPDU;
发送模块1302,用于发送所述G-MPDU。
较佳地,还包括:
第一处理模块1303,与所述封装模块1301相连,用于根据所述MPDU去掉帧校验序列FCS后的剩余长度计算所述长度校验信息。
较佳地,还包括:
解析模块1304,用于解析所述MPDU的帧头,得到帧类型信息;
第二处理模块1305,与所述解析模块1304相连,用于根据所述帧类型信息确定出对应的帧头长度;
第三处理模块1306,与所述解析模块1304相连,用于根据所述帧类型信息确定对应的帧体长度获取策略,获取帧体长度;
第四处理模块1307,与所述第一处理模块1303、第二处理模块1305和第三处理模块1306均相连,计算所述MPDU的帧头长度和帧体长度之和,得到所述剩余长度。
其中,
所述帧类型信息包括帧类型和子类型;
帧类型包括数据和管理控制;子类型用于对帧类型进一步划分;
所述各种子类型的管理控制帧,又划分为有序列号管理控制帧和无序列号管理控制帧。
较佳地,所述第二处理模块1305,根据所述帧类型信息确定所述MPDU是帧类型为数据的帧,或者是有序列号管理控制帧时,确定出对应的帧头长度为第一长度;以及根据所述帧类型信息确定所述MPDU是无序列号管理控制帧时,确定出对应的帧头长度为第二长度。
较佳地,所述第一长度为6bit;所述第二长度为2bit。
较佳地,所述第三处理模块1306,根据所述帧类型信息确定所述MPDU是帧类型为数据的帧,或者是有序列号管理控制帧时,解析帧头,从中获取帧体长度指示信息,得到帧体长度;所述第三处理模块1306,根据所述帧类型信息确定所述MPDU是无序列号管理控制帧时,如果长度固定,则根据帧类型和子类型确定出对应的帧体长度;如果长度不固定,则解析帧体,计算帧体长度。
较佳地,所述第三处理模块1306,根据所述帧类型信息确定所述MPDU是长度不固定的无序列号管理控制帧,且帧体中携带变长信息块总长度的指示信息时,解析出所述变长信息块总长度的指示信息,得到帧体中变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
较佳地,所述第三处理模块1306,根据所述帧类型信息确定所述MPDU是长度不固定的无序列号管理控制帧,且当帧体中携带变长信息块的数量信息时,解析出所述信息块的数量信息,根据所述信息块的数量信息与所述信息块的单位长度,计算出所述变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
较佳地,所述封装模块1301,在将MPDU封装为G-MPDU的子帧时,如果不是最后一个子帧,还在所述MPDU之后设置填充位,以使得所述子帧的长度是2字节的整数倍。
较佳地,所述封装模块1301,以2个字节承载定界符,其中:以1个字节承载定界符标识,以另一个字节承载长度校验信息;以0个或者1个字节承载所述填充位。
为了实现上述数据接收方法,本发明实施例还提供一种数据接收装置,如图14所示,包括:
接收解析模块1401,用于接收并解析组媒体接入控制协议数据单元G-MPDU;所述G-MPDU包括一个或者多个子帧,每个子帧中包括定界符和MPDU;所述定界符由定界符标识和所述MPDU的长度校验信息组成;
判断模块1402,与所述接收解析模块1401相连,用于逐比特匹配定界符标识,当与定界符标识匹配正确时,停止匹配,发送定位控制指令;当接收到匹配控制指令后,继续将下一比特与定界符标识匹配;
第一处理模块1403,与所述判断模块1402和所述接收解析模块1401均相连,用于接收到所述定位控制指令后,根据当前匹配到的定界符标识定位出当前子帧中的MPDU;
第二处理模块1404,与所述接收解析模块1401、所述判断模块1402和第一处理模块1403均相连,用于根据定界符中的长度校验信息对所述MPDU做长度校验,如果校验成功,则认为定界符识别正确,开始解析;如果校验失败,则认为定界符识别错误,发送所述匹配控制指令。
较佳地,所述第二处理模块1404,对所述MPDU去掉帧校验序列FCS后的剩余长度进行校验,将校验结果与定界符中的长度校验信息比较,如果相同,则认为校验成功;如果不相同,则认为校验失败。
较佳地,还包括:
解析模块1405,用于解析所述MPDU的帧头,得到帧类型信息;
第三处理模块1406,与所述解析模块1405相连,用于根据所述帧类型信息确定出对应的帧头长度;
第四处理模块1407,与所述解析模块1405相连,用于根据所述帧类型信息确定对应的帧体长度获取策略,获取帧体长度;
第五处理模块1408,与所述第二处理模块1404、第三处理模块1406和第四处理模块1407均相连,计算所述MPDU的帧头长度和帧体长度之和,得到所述剩余长度。
其中,所述解析模块1405,与所述接收解析模块1401和所述第一处理模块1403均相连,根据所述第一处理模块1403的匹配结果,对所述接收解析模块1401解析的数据处理(图中未示出此连接关系)。
较佳地,所述帧类型信息包括帧类型和子类型;
帧类型包括数据和管理控制;子类型用于对帧类型进一步划分;
所述各种子类型的管理控制帧,又划分为有序列号管理控制帧和无序列号管理控制帧。
较佳地,所述第三处理模块1406,根据所述帧类型信息确定所述MPDU是帧类型为数据的帧,或者是有序列号管理控制帧时,确定出对应的帧头长度为第一长度;以及根据所述帧类型信息确定所述MPDU是无序列号管理控制帧时,确定出对应的帧头长度为第二长度。
较佳地,所述第一长度为6bit;所述第二长度为2bit。
较佳地,所述第四处理模块1407,根据所述帧类型信息确定所述MPDU是帧类型为数据的帧,或者是有序列号管理控制帧时,解析帧头,从中获取帧体长度指示信息,得到帧体长度;所述第四处理模块1407,根据所述帧类型信息确定所述MPDU是无序列号管理控制帧时,如果长度固定,则根据帧类型和子类型确定出对应的帧体长度;如果长度不固定,则解析帧体,计算帧体长度。
较佳地,所述第四处理模块1407,根据所述帧类型信息确定所述MPDU是长度不固定的无序列号管理控制帧,且帧体中携带变长信息块总长度的指示信息时,解析出所述变长信息块总长度的指示信息,得到帧体中变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
较佳地,所述第四处理模块1407,根据所述帧类型信息确定所述MPDU是长度不固定的无序列号管理控制帧,且当帧体中携带变长信息块的数量信息时,解析出所述信息块的数量信息,根据所述信息块的数量信息与所述信息块的单位长度,计算出所述变长信息块的总长度,再与所述MPDU的帧体中定长信息块的总长度求和,计算出所述MPDU的帧体长度。
较佳地,G-MPDU中除了最后一个子帧,其余子帧中还包括填充位,以使得所述子帧的长度是2字节的整数倍。
较佳地,所述定界符以2个字节承载,其中:以1个字节承载定界符标识,以另一个字节承载长度校验信息;所述填充位以0个或者1个字节承载。
根据所述公开的实施例,可以使得本领域技术人员能够实现或者使用本发明。对于本领域技术人员来说,这些实施例的各种修改是显而易见的,并且这里定义的总体原理也可以在不脱离本发明的范围和主旨的基础上应用于其他实施例。以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。