发明内容
本发明实施例提供一种组播重传中的确认代表选择方法及装置,用于解决选择ACK-leader不精确的问题。
本发明实施例第一方面提供一种组播重传中的确认代表选择方法,包括:
组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧,并将确认代表ACK-leader集合清空;
所述组播发起设备接收所述待选组播成员设备返回的包含用于标识是否接收到突发数据帧的位图的块确认B-ACK帧;
所述组播发起设备根据所述B-ACK帧、以及根据所述B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中。
结合第一方面,在第一方面的第一种可能的实施方式中,所述组播发起设备根据所述B-ACK帧、以及根据所述B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,包括:
所述组播发起设备根据由所述B-ACK帧中包含的位图中获取的误包个数和所述发送窗口大小,计算获取第一误包率pBitmap;
所述组播发起设备根据所述物理层链路质量参数,获取第二误包率pLQ;
所述组播发起设备根据所述发送窗口大小Nburst,采用公式pw=ωp(Nburst)·pBitmap+(1-ωp(Nburst))·pLQ对所述第一误包率和所述第二误包率进行加权平均计算,获取所述误包率pw;
其中,ωp(Nburst)是Nburst的单调递增函数,且取值范围为[0,1]。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中,包括:
所述组播发起设备将所述误包率高于预设门限值的对应待选组播成员设备作为目标ACK-leader加入到所述ACK-leader集合中。
结合第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中之后,还包括:
所述组播发起设备计算所述ACK-leader之间的相关性,并根据所述相关性更新所述ACK-leader集合。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述组播发起设备已知所述组播成员设备的地理位置信息;相应地,
所述组播发起设备计算所述ACK-leader之间的相关性,根据所述相关性更新所述ACK-leader集合,包括:
采用公式RD(dij)=e-adij计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的第一相关性RD(dij),其中dij为所述组播成员设备i和组播成员设备j之间的距离,a为环境参数;
在计算出的所有所述RD(dij)中选出最大值Max(RD(dij)),并获取归一化后的第一相关性R′D(dij)=RD(dij)/Max(RD(dij));
根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))=b′
i(t)·b
j(t)/L计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中,b
i为组播成员设备i的位图矢量,b
j为组播成员设备j的位图矢量,b′
i为b
i的转置,L为b
i和b
j的矢量长度;
在计算出的所有所述中选出最大值并获取归一化后的相关运算值
根据存储的前K次所述组播成员设备i和组播成员设备j之间的归一化后的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的平均相关运算值
其中所述K值根据所述发送窗口大小N
burst确定;
采用公式 计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性cij;
其中,ωR(Nburst)是Nburst的单调递增函数,且取值范围为[0,1];
将所述相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
结合第一方面的第三种可能的实施方式,在第一方面的第五种可能的实施方式中,所述组播发起设备未知所述组播成员设备的地理位置信息;相应地,
所述组播发起设备计算所述ACK-leader之间的相关性,根据所述相关性更新所述ACK-leader集合,包括:
根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中b
i(t)为第t次接收到的组播成员设备i发送的所述B-ACK中的位图的矢量;
根据存储的前K次所述组播成员设备i和组播成员设备j之间的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij(t),其中所述K值根据所述发送窗口大小N
burst确定;
将所述相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
结合第一方面至第一方面的第五种可能的实施方式中任一项,在第一方面的第六种可能的实现方式中,所述组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧之前,还包括:
所述组播发起设备按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
结合第一方面的第六种可能的实施方式,在第一方面的第七种可能的实施方式中,所述组播发起设备向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧,包括:
所述组播发起设备向所有组播成员设备发送BAR帧;或者,
所述组播发起设备向初选组播成员设备发送BAR帧,其中,所述初选组播成员是在所述所有组播成员设备中删除不符合初选条件的组播成员设备后的组播成员设备。
结合第一方面的第七种可能的实施方式,在第一方面的第八种可能的实施方式中,在所述所有组播成员设备中删除不符合初选条件的组播成员设备后的组播成员设备,包括:
在所述所有组播成员设备中删除误包率值低于预设门限的组播成员设备;或者,
在所述所有组播成员设备中删除接收信号强度指示RSSI高于预设门限的组播成员设备。
结合第一方面至第一方面的第八种可能的实施方式中任一项,在第一方面的第九种可能的实现方式中,所述组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则将所述计时器置0。
结合第一方面,在第一方面的第十种可能的实现方式中,该方法还包括:所述组播发起设备若判断计时器当前的计时时间小于等于平均信道变化时间,则向原ACK-leader集合中的所有组播成员设备发送BAR帧;
所述组播发起设备在判断满足发送下一次突发数据帧的条件时,按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
结合第一方面至第一方面的第十种可能的实施方式中任一项,在第一方面的第十一种可能的实现方式中,所述组播发起设备根据所述ACK-leader的误包率的变化速率动态改变所述平均信道变化时间。
本发明实施例第二方面提供一种组播重传中的确认代表选择装置,包括:
发送模块,用于若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧,并将确认代表ACK-leader集合清空;
接收模块,用于接收所述待选组播成员设备返回的包含用于标识是否接收到突发数据帧的位图的块确认B-ACK帧;
获取模块,用于根据所述B-ACK帧、以及根据所述B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中。
结合第二方面,在第二方面的第一种可能的实施方式中,所述获取模块,具体用于根据由所述B-ACK帧中包含的位图中获取的误包个数和所述发送窗口大小,计算获取第一误包率pBitmap;
根据所述物理层链路质量参数,获取第二误包率pLQ;
根据所述发送窗口大小Nburst,采用公式pw=ωp(Nburst)·pBitmap+(1-ωp(Nburst))·pLQ对所述第一误包率和所述第二误包率进行加权平均计算,获取所述误包率pw;
其中,ωp(Nburst)是Nburst的单调递增函数,且取值范围为[0,1]。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述获取模块,具体用于将所述误包率高于预设门限值的对应待选组播成员设备作为目标ACK-leader加入到所述ACK-leader集合中。
结合第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述装置还包括:更新模块,用于计算所述ACK-leader之间的相关性,并根据所述相关性更新所述ACK-leader集合。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述更新模块,具体用于在已知所述组播成员设备的地理位置信息时,采用公式RD(dij)=e-adij计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的第一相关性RD(dij),其中dij为所述组播成员设备i和组播成员设备j之间的距离,a为环境参数;
在计算出的所有所述R
D(d
ij)中选出最大值Max(R
D(d
ij)),并获取归一化后的第一相关性R'
D(d
ij)=R
D(d
ij)/Max(R
D(d
ij));根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))=b′
i(t)·b
j(t)/L计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中,b
i为组播成员设备i的位图矢量,b
j为组播成员设备j的位图矢量,b′
i为b
i的转置,L为b
i和b
j的矢量长度;
在计算出的所有所述
中选出最大值
并获取归一化后的相关运算值
根据存储的前K次所述组播成员设备i和组播成员设备j之间的归一化后的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的平均相关运算值
其中所述K值根据所述发送窗口大小N
burst确定;
采用公式 计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性cij;
其中,ωR(Nburst)是Nburst的单调递增函数,且取值范围为[0,1];
将所述相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
结合第二方面的第三种可能的实施方式,在第二方面的第五种可能的实施方式中,所述更新模块,具体用于在未知所述组播成员设备的地理位置信息时,根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中b
i(t)为第t次接收到的组播成员设备i发送的所述B-ACK中的位图的矢量;
根据存储的前K次所述组播成员设备i和组播成员设备j之间的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij(t),其中所述K值根据所述发送窗口大小N
burst确定;
将所述相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
结合第二方面,在第二方面的第六种可能的实施方式中,所述发送模块,还用于若判断计时器当前的计时时间小于等于平均信道变化时间,则向原ACK-leader集合中的所有组播成员设备发送BAR帧;
在判断满足发送下一次突发数据帧的条件时,按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
本发明实施例中,可以根据每隔一定时间获取的B-ACK帧来计算误包率,而不像现有技术中仅依靠组播发起设备的已知信息简单估算,大大提高了计算出的误包率的精确度,进而提高了根据误包率设置门限来选择ACK-leader的准确性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的组播重传中的确认代表选择方法实施例一的流程示意图,如图1所示,该方法包括:
S101、组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送BAR帧,并将ACK-leader集合清空。
具体地,组播发起设备要设立一个计时器,根据计时器的计时时间进行判断,当计时器上的当前计时时间大于平均信道变化时间T0,则向所有组播成员设备中的待选组播成员设备发送BAR。其中,平均信道变化时间是指组播发起设备与各组播成员设备之间信道发生显著变化的时间的平均值。
另外,上述组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则将上述计时器置0,重新开始计时。
S102、组播发起设备接收上述待选组播成员设备返回的包含用于标识是否接收到突发数据帧的位图的B-ACK帧。
组播发起设备向待选组播成员设备发送BAR帧之后,接收到该BAR帧的待选组播成员设备会设置位图,该位图用于标识突发数据帧的接收状况,如果成功接收突发数据帧,则将位图的相应位设置为1,否则,将位图的相应位设置为0。然后将该位图包含在B-ACK帧内,返回给组播发起设备。假设组播发起设备发送了包含5个数据帧的突发数据帧,一个组播成员设备B-ACK帧内的位图矢量表示为(1,0,1,1,0),表明该组播成员设备成功接收了其中3个数据帧。
S103、组播发起设备根据上述B-ACK帧、以及根据该B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将上述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中,以使在后续组播过程中仅向ACK-leader集合中的组播成员设备请求B-ACK帧。
其中,物理层链路质量参数是组播发起设备在接收到B-ACK帧后,由该组播发起设备的物理层获得的。该物理层链路质量参数可以是RSSI或LQI。发送窗口大小为突发数据帧的个数,等于位图的比特长度,可以根据B-ACK中包含的位图获得。该发送窗口大小相当于统计PER的样本数量。
本实施例中,组播发起设备在计时器当前计时时间大于平均信道变化时间时,向所有组播成员设备中的待选组播成员设备发送BAR帧,并将ACK-leader集合清空,然后接收待选组播成员设备返回的包含位图的B-ACK帧,根据该B-ACK帧、以及根据该B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,将误包率满足预设条件的待选组播成员设备作为ACK-leader。采用本实施例中的方法,可以根据每隔一定时间获取的B-ACK帧来计算误包率,而不像现有技术中仅依靠组播发起设备的已知信息简单估算,大大提高了计算出的误包率的精确度,进而提高了选择ACK-leader的准确性。
进一步地,上述组播发起设备根据上述B-ACK帧、以及根据该B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的PER,具体为:
1)组播发起设备根据由上述B-ACK帧中包含的位图中获取的误包个数N和上述发送窗口大小Nburst,计算获取第一误包率pBitmap;具体地,pBitmap=N/Nburst。
2)组播发起设备根据上述物理层链路质量参数,获取第二误包率pLQ;
3)组播发起设备根据所述发送窗口大小Nburst,采用公式pw=ωp(Nburst)·pBitmap+(1-ωp(Nburst))·pLQ对所述第一误包率和所述第二误包率进行加权平均计算,获取所述误包率pw,其中ωp(Nburst)是Nburst的单调递增函数,且取值范围为[0,1],ωp是自适应权重系数,可根据Nburst进行自适应调整。
需要说明的是,组播发起设备将PER满足预设条件的待选组播成员设备作为ACK-leader加入到上述ACK-leader集合中,具体为,组播发起设备将PER高于预设门限的对应待选组播成员设备作为目标ACK-leader加入到上述ACK-leader集合中。具体地,该预设门限可以根据具体的应用场景需求来进行设定;该门限也可以是参数化、分级的,其中参数化是指该门限可以是QoS参数(例如时延、误包率等)的函数,分级是指该门限可以按业务的优先级进行分级,例如语音业务和数据业务就可以采用不同等级的门限;该门限还可以按照某种准则确定,例如按照组播QoS要求确定。
进一步地,上述将误包率满足预设条件的待选组播成员设备作为ACK-leader加入到上述ACK-leader集合中之后,组播发起设备会计算上述ACK-leader之间的相关性,并根据该相关性更新上述ACK-leader集合。通过相关性的计算将上述ACK-leader集合中相关性高的组播成员设备替换,以进一步使得所选ACK-leader之间冗余度较小。
针对于相关性的计算一般有两种情况,一种情况下是组播发起设备已知组播成员设备的地理位置信息,这种情况下组播发起设备会计算上述ACK-leader之间的相关性,并根据该相关性更新上述ACK-leader集合,具体算法如下:
(1)采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的第一相关性R
D(d
ij),其中d
ij为所述组播成员设备i和组播成员设备j之间的距离,a为环境参数。
(2)在计算出的所有RD(dij)中选出最大值Max(RD(dij)),并获取归一化后的第一相关性RD′(dij)=RD(dij)/Max(RD(dij))。
(3)根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))=b′
i(t)·b
j(t)/L计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中,b
i为组播成员设备i的位图矢量,b
j为组播成员设备j的位图矢量,b′
i为b
i的转置,L为b
i和b
j的矢量长度。
(4)在计算出的所有
中选出最大值
并获取归一化后的相关运算值
(5)根据存储的前K次所述组播成员设备i和组播成员设备j之间的归一化后的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的平均相关运算值
其中所述K值根据所述发送窗口大小N
burst确定。
(6)采用公式 计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性cij,其中,ωR(Nburst)是Nburst的单调递增函数,且取值范围为[0,1]。
(7)将相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,即将组播成员设备i和组播成员设备j中误包率小的那一个组播成员设备从ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
另一种情况下是组播发起设备未知组播成员设备的地理位置信息,即不知道组播成员设备的地理位置信息,这种情况下组播发起设备会计算上述ACK-leader之间的相关性,并根据该相关性更新上述ACK-leader集合,组播发起设备具体可以采用以下算法:
(1)根据第t次接收到的上述B-ACK中的位图的矢量b(t),采用公式
b
j(t))计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中b
i(t)为第t次接收到的组播成员设备i发送的所述B-ACK中的位图的矢量。
(2)根据存储的前K次所述组播成员设备i和组播成员设备j之间的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij(t),其中所述K值根据所述发送窗口大小N
burst确定。
(3)将所述相关性cij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率pw最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
更进一步地,上述组播发起设备若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送BAR帧之前,该组播发起设备按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。在后续过程中,组播成员设备会根据该突发数据帧的接收情况设置位图。其中,该发送窗口的大小可以是组播发起设备根据信道的状态、组播成员设备的接收缓存等因素,通过某种算法确定的。
在具体实现过程中,上述组播发起设备向所有组播成员设备中的待选组播成员设备发送BAR帧,具体可以是向所有组播成员设备发送BAR帧;也可以是向初选组播成员设备发送BAR帧,其中,该初选组播成员是在上述所有组播成员设备中删除不符合初选条件的组播成员设备后的组播成员设备。具体地,可以是在上述所有组播成员设备中删除PER值低于预设门限的组播成员设备,也可以是在所有组播成员设备中删除RSSI高于预设门限的组播成员设备。其中,用于初选的PER值可以不采用前述误包率的计算方法,利用物理层参数估算出PER值即可。采用该初选过程可以预先删除掉一些PER值过低和/或RSSI值过高的组播成员设备,以缩小待选组播成员设备的范围。
更进一步地,上述组播发起设备若判断计时器当前的计时时间小于等于平均信道变化时间,则向原ACK-leader集合中的所有组播成员设备发送BAR帧;其中原ACK-leader集合中包含上一次循环中所选择的作为ACK-leader的组播成员设备。然后,组播发起设备在判断满足发送下一次突发数据帧的条件时,按照组播地址将发送窗口内的突发数据帧发送给组播成员设备;其中发送下一次突发数据帧的条件可以是有足够的信道接入时间允许发送突发数据帧,具体地,该突发数据帧的发送时间小于剩余的信道接入时间。
另外,上述组播发起设备可以根据上述ACK-leader的误包率的变化速率动态改变上述平均信道变化时间T0,例如,假设误包率的变化速率门限值为γp,将误包率的变化速率超过该γp的ACK-leader进行统计,当统计到超过该γp的ACK-leader个数超过一定数量是,则改变上述平均信道变化时间T0,即重新计算新的平均信道变化时间T0。需要说明的是,该平均信道变化时间T0还可以根据网络场景、网络设备移动速度等因素,以经验的方式预先设定。
本实施例中,可以根据每隔一定时间获取的位图来计算误包率,而不像现有技术中仅依靠组播发起设备的已知信息简单估算,大大提高了计算出的误包率的精确度,进而提高了选择ACK-leader的准确性。进一步地,还计算ACK-leader之间的相关性,对已选的ACK-leader进行再次选择,并将相关性高的ACK-leader进行替换,可以减少ACK-leader之间的冗余度,且计算相关性时利用了位图中的信息,比单纯基于地理位置信息能更好的消除ACK-leader的冗余度。另外,本发明实施例的实现,无需IEEE802.11aa标准作任何修改,且适用于其他不采用IEEE802.11aa的通信系统,组播发起设备只需按照相应系统的标准,与组播成员设备进行上述BAR和B-ACK的交互即可,并进一步本发明实施例提供的方法。
图2为本发明提供的组播重传中的确认代表选择方法实施例二的流程示意图,如图2所示,前述方法的整个流程为:
S201、组播发起设备与所有组播成员设备通过握手达成组播协议,开始本次组播。
S202、组播发起设备按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
S203、组播发起设备判断计时器当前的计时时间Tm是否大于平均信道变化时间T0,若大于,则执行步骤S204,若不大于,则执行步骤S209。
S204、组播发起设备向待选组播成员设备发送BAR帧,并将计时器置0,将ACK-leader集合清空。
S205、组播发起设备接收上述接收到BAR帧的待选组播成员设备返回的包含位图的B-ACK帧。
S206、组播发起设备根据该B-ACK帧、以及根据该B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将组播成员设备按照误包率的大小从大到小进行排序。
S207、组播发起设备将误包率高于预设门限的待选组播成员设备作为ACK-leader加入到上述ACK-leader集合中。
S208、组播发起设备计算上述ACK-leader之间的相关性,并根据该相关性更新上述ACK-leader集合,具体地,组播发起设备在知道各组播成员设备的位置信息和不知道各组播成员设备的位置信息时所采用的算法不同。
S209、组播发起设备向原ACK-leader集合中的所有组播成员设备发送BAR帧。
S210、组播发起设备根据上述接收到的位图,将重传帧和数据帧组成下一次突发数据帧。
S211、组播发起设备判断是否满足发送下一次突发数据帧的条件,若满足,则执行S202,进入下次循环,若不满足,则执行S212。
S212、组播发起设备结束本次组播,保留计时器的当前计时时间。
采用表1的仿真参数,分别采用本发明实施例提供的方法和现有技术的方法进行仿真。
表1仿真参数表
图3为本发明提供的组播重传中的确认代表选择方法实施例三的仿真结果示意图,图4为本发明提供的组播重传中的确认代表选择方法实施例四的仿真结果示意图,采用表1的参数进行仿真,获取到如图3、图4所示的仿真结果,图3表示误帧覆盖率与发送窗口大小的关系,图4表示ACK-leader的个数与发送窗口大小的关系。其中,标有“○”的曲线为采用现有根据物理层参数简单估计误包率的方法选择ACK-leader的仿真结果;标有“*”的曲线为采用现有固定系数加权估计法选择ACK-leader的仿真结果;标有“△”的曲线为采用本发明实施例提供的方法选择ACK-leader的仿真结果。
参照图3、图4可以明显看出,采用本发明实施例提供的方法,相比于现有的两种方法,在设置相同门限值的情况下,以更少的ACK-leader,取得了更高的误帧覆盖率。且可以看出自适应改变权重系数是正确和必要的。
图5为本发明提供的组播重传中的确认代表选择装置实施例一的结构示意图,如图5所示,该装置包括:发送模块501、接收模块502、获取模块503,其中:
发送模块501,用于若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧,并将确认代表ACK-leader集合清空;接收模块502,用于接收所述待选组播成员设备返回的包含用于标识是否接收到突发数据帧的位图的块确认B-ACK帧;获取模块503,用于根据所述B-ACK帧、以及根据所述B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中。
上述各模块用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
上述获取模块503,具体用于根据由所述B-ACK帧中包含的位图中获取的误包个数和所述发送窗口大小,计算获取第一误包率pBitmap;根据所述物理层链路质量参数,获取第二误包率pLQ;根据所述发送窗口大小Nburst,采用公式pw=ωp(Nburst)·pBitmap+(1-ωp(Nburst))·pLQ对所述第一误包率和所述第二误包率进行加权平均计算,获取所述误包率pw;其中,ωp(Nburst)是Nburst的单调递增函数,且取值范围为[0,1]。
上述获取模块503,具体用于将所述误包率高于预设门限值的对应待选组播成员设备作为目标ACK-leader加入到所述ACK-leader集合中。
图6为本发明提供的组播重传中的确认代表选择装置实施例二的结构示意图,如图6所示,在图5的基础上,该装置还包括:更新模块504。
该更新模块504,具体用于在已知所述组播成员设备的地理位置信息时,采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的第一相关性R
D(d
ij),其中d
ij为所述组播成员设备i和组播成员设备j之间的距离,a为环境参数;在计算出的所有所述R
D(d
ij)中选出最大值Max(R
D(d
ij)),并获取归一化后的第一相关性R
D′(d
ij)=R
D(d
ij)/Max(R
D(d
ij));根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))=b′
i(t)·b
j(t)/L计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中,b
i为组播成员设备i的位图矢量,b
j为组播成员设备j的位图矢量,b′
i为b
i的转置,L为b
i和b
j的矢量长度;在计算出的所有所述
中选出最大值
并获取归一化后的相关运算值
根据存储的前K次所述组播成员设备i和组播成员设备j之间的归一化后的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的平均相关运算值
其中所述K值根据所述发送窗口大小N
burst确定;采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij;其中,ω
R(N
burst)是N
burst的单调递增函数,且取值范围为[0,1];将所述相关性c
ij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率p
w最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
更新模块504,具体用于在未知所述组播成员设备的地理位置信息时,根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中b
i(t)为第t次接收到的组播成员设备i发送的所述B-ACK中的位图的矢量;根据存储的前K次所述组播成员设备i和组播成员设备j之间的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij(t),其中所述K值根据所述发送窗口大小N
burst确定;将所述相关性c
ij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率p
w最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
进一步地,上述发送模块501,还用于按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
发送模块501,具体用于向所有组播成员设备发送BAR帧;或者,向初选组播成员设备发送BAR帧,其中,所述初选组播成员是在所述所有组播成员设备中删除不符合初选条件的组播成员设备后的组播成员设备。具体的,该发送模块501,在所述所有组播成员设备中删除误包率值低于预设门限的组播成员设备;或者,在所述所有组播成员设备中删除RSSI高于预设门限的组播成员设备。
更进一步地,发送模块501,还用于若判断获知计时器当前的计时时间大于平均信道变化时间,则将所述计时器置0。
发送模块501,还用于若判断计时器当前的计时时间小于等于平均信道变化时间,则向原ACK-leader集合中的所有组播成员设备发送BAR帧;在判断满足发送下一次突发数据帧的条件时,按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
另外,更新模块504,还用于根据所述ACK-leader的误包率的变化速率动态改变所述平均信道变化时间。
上述各模块用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
本发明实施例还提供另一组播重传中的确认代表选择装置,包括:发送器、接收器和处理器,其中:
发送器,用于若判断获知计时器当前的计时时间大于平均信道变化时间,则向所有组播成员设备中的待选组播成员设备发送块确认请求BAR帧,并将确认代表ACK-leader集合清空;接收器,用于接收所述待选组播成员设备返回的包含用于标识是否接收到突发数据帧的位图的块确认B-ACK帧;处理器,用于根据所述B-ACK帧、以及根据所述B-ACK帧获取的物理层链路质量参数和发送窗口大小,获取各待选组播成员设备的误包率,并将所述误包率满足预设条件的待选组播成员设备作为ACK-leader加入到所述ACK-leader集合中。
进一步地,处理器,具体用于根据由所述B-ACK帧中包含的位图中获取的误包个数和所述发送窗口大小,计算获取第一误包率pBitmap;根据所述物理层链路质量参数,获取第二误包率pLQ;根据所述发送窗口大小Nburst,采用公式pw=ωp(Nburst)·pBitmap+(1-ωp(Nburst))·pLQ对所述第一误包率和所述第二误包率进行加权平均计算,获取所述误包率pw;其中,ωp(Nburst)是Nburst的单调递增函数,且取值范围为[0,1]。
处理器,具体用于将所述误包率高于预设门限值的对应待选组播成员设备作为目标ACK-leader加入到所述ACK-leader集合中。
更进一步地,处理器,还用于计算所述ACK-leader之间的相关性,并根据所述相关性更新所述ACK-leader集合。具体实现过程中,处理器,具体用于在已知所述组播成员设备的地理位置信息时,采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的第一相关性R
D(d
ij),其中d
ij为所述组播成员设备i和组播成员设备j之间的距离,a为环境参数;在计算出的所有所述R
D(d
ij)中选出最大值Max(R
D(d
ij)),并获取归一化后的第一相关性R
D′(d
ij)=R
D(d
ij)/Max(R
D(d
ij));根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))=b′
i(t)·b
j(t)/L计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中,b
i为组播成员设备i的位图矢量,b
j为组播成员设备j的位图矢量,b′
i为b
i的转置,L为b
i和b
j的矢量长度;在计算出的所有所述
中选出最大值
并获取归一化后的相关运算值
根据存储的前K次所述组播成员设备i和组播成员设备j之间的归一化后的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的平均相关运算值
其中所述K值根据所述发送窗口大小N
burst确定;采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij;其中,ω
R(N
burst)是N
burst的单调递增函数,且取值范围为[0,1];将所述相关性c
ij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率p
w最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
处理器,具体用于在未知所述组播成员设备的地理位置信息时,根据第t次接收到的所述B-ACK中的位图的矢量b(t),采用公式
b
j(t))计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关运算值
其中b
i(t)为第t次接收到的组播成员设备i发送的所述B-ACK中的位图的矢量;根据存储的前K次所述组播成员设备i和组播成员设备j之间的相关运算值
...、
采用公式
计算所述ACK-leader集合中组播成员设备i和组播成员设备j之间的相关性c
ij(t),其中所述K值根据所述发送窗口大小N
burst确定;将所述相关性c
ij高于预设门限的对应组播成员设备中所述误包率最小的组播成员设备从所述ACK-leader集合中删除,并从所述ACK-leader集合外选择所述误包率p
w最大的组播成员设备添加到所述ACK-leader集合中,以获取更新后的ACK-leader集合。
上述发送器,还用于按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。具体地,该发送器,向所有组播成员设备发送BAR帧;或者,向初选组播成员设备发送BAR帧,其中,所述初选组播成员是在所述所有组播成员设备中删除不符合初选条件的组播成员设备后的组播成员设备。
该发送器,具体用于在所述所有组播成员设备中删除误包率值低于预设门限的组播成员设备;或者,在所述所有组播成员设备中删除RSSI高于预设门限的组播成员设备。
该发送器,还用于若判断获知计时器当前的计时时间大于平均信道变化时间,则将所述计时器置0。
另外,发送器,用于若判断计时器当前的计时时间小于等于平均信道变化时间,则向原ACK-leader集合中的所有组播成员设备发送BAR帧;在判断满足发送下一次突发数据帧的条件时,按照组播地址将发送窗口内的突发数据帧发送给组播成员设备。
上述处理器,还用于根据所述ACK-leader的误包率的变化速率动态改变所述平均信道变化时间。
该装置用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。