一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多链路通信方法及相关装置与流程

2021-10-29 21:49:00 来源:中国专利 TAG:通信 链路 装置 方法 相关


1.本技术涉及通信技术领域,尤其涉及一种多链路通信方法及相关装置。


背景技术:

2.随着无线技术的发展,多链路设备(multi-link device,mld)可以支持多链路通信,例如同时在2.4ghz、5ghz以及60ghz频段上进行通信,即使在天线数受限的情况下,多链路设备也可以在不同的频段上进行切换,从而选择最佳的频段,保证其通信质量。随着越来越多的应用流量由无线网络承载,高速率是无线保真(wreless-fidelity,wifi)系统的演进目标。为了提升多链路设备中的站点的峰值速率,多链路聚合通信已经成为下一代无线局域网(wireless local area networks,wlan)技术的特性。
3.多链路聚合通信涉及多条链路之间的协调工作,数据发送端的同一业务标识符(traffic identifier,tid)的多个媒体接入控制协议数据单元(mac protocol data unit,mpdu)可以通过多条链路进行传输,以增大该tid数据包的传输速率。数据接收端根据每个mpdu帧头携带的序列号(sequence number,sn)对多条链路上接收的相同tid的数据包按照sn进行排序。协议要求mac层必须按照顺序将完整的msdu(mac service data unit,mac层服务数据单元)往上层递交。
4.现有技术中,通过记分板机制实现对发送端发送的mpdu的接收情况进行确认。但是,目前多链路聚合下,使用现有的记分板机制,对传输的mpdu的接收情况进行确认,会存在以下问题:
5.如果发送端通过一条链路(link)发送块确认请求(block acknowledgement requirement,bar)时,在bar中设置了一个起始序列号(starting sequence number,ssn)值,但其他链路上有小于该ssn值的待传mpdu,会导致接收端移动记分板的起始序列号(示意为:winstart),从而导致之后发送端发送的小于该ssn值的mpdus即便是被接收端正确接收,也会被接收端丢弃。


技术实现要素:

6.为解决上述技术问题,本技术实施例提供一种多链路聚合传输方法和设备,芯片系统,计算机可读存储介质和计算机程序产品。
7.本技术实施例第一方面,提供一种多链路聚合传输方法,应用于多链路聚合传输的接收端,包括:
8.接收端在与发送端之间的多条链路上接收数据帧和bar帧中的至少一种;所述多条链路包括第一链路;
9.所述接收端在所述第一链路上接收块确认请求bar帧,所述bar帧中携带所述第一链路对应的ssn_1;
10.所述接收端根据所述多条链路中至少两条链路对应的ssn,调整当前的记分板窗口起始序列号winstart值;其中,所述多条链路中至少两条链路对应的ssn,包括所述第一
链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn;
11.所述接收端根据调整后的winstart,对所述多链路上接收的数据帧进行处理。
12.本技术实施例第二方面,提供一种多链路设备,其作为多链路聚合传输的接收端,包括:
13.收发器,用于在与发送端之间的多条链路上接收数据帧和bar帧中的至少一种;所述多条链路包括第一链路;
14.所述收发器,用于在所述第一链路上接收块确认请求bar帧,所述bar帧中携带所述第一链路对应的ssn_1;
15.处理器,用于根据所述多条链路中至少两条链路对应的ssn,调整当前的记分板窗口起始序列号winstart值;其中,所述多条链路中至少两条链路对应的ssn,包括所述第一链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn;
16.所述处理器,还用于根据调整后的winstart,对所述多链路上接收的数据帧进行处理。
17.本技术实施例第三方面,提供一种多链路聚合传输方法,应用于多链路聚合传输的接收端,包括:
18.接收端在与发送端之间的多条链路上接收数据帧;所述多条链路包括第一链路;
19.所述接收端在所述第一链路上接收块确认请求bar帧;
20.所述接收端解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号;
21.所述接收端对所述多链路上接收的数据帧进行处理。
22.本技术实施例第四方面,提供一种多链路设备,其作为多链路聚合传输的接收端,包括:
23.收发器,用于在与发送端之间的多条链路上接收数据帧;所述多条链路包括第一链路;
24.所述收发器,还用于在所述第一链路上接收块确认请求bar帧;
25.处理器,用于解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号;
26.所述处理器,还用于对所述多链路上接收的数据帧进行处理。
27.本技术实施例第五方面,提供一种芯片系统,包括至少一个处理器和接口;其中,
28.所述接口,用于输入来自与发送端之间的多条链路上的数据帧;所述多条链路包括第一链路;
29.所述接口,还用于输入在所述第一链路上接收到的块确认请求bar帧,所述bar帧中携带所述第一链路对应的ssn_1;
30.处理器,用于根据所述多条链路中至少两条链路对应的ssn,调整当前的记分板窗口起始序列号winstart值;其中,所述多条链路中至少两条链路对应的ssn,包括所述第一链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn;
31.所述处理器,还用于根据调整后的winstart,对所述多链路上接收的数据帧进行
处理。
32.本技术实施例第六方面,提供一种芯片系统,包括至少一个处理器和接口;其中,
33.所述接口,用于输入在与发送端之间的多条链路上接收到的数据帧;所述多条链路包括第一链路;
34.所述接口,还用于输入在所述第一链路上接收到的块确认请求bar帧;
35.所述处理器,用于解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号;
36.所述处理器,还用于对所述多链路上接收的数据帧进行处理。
37.本技术实施例第一至第六方面任一方面的第一种实现方式中,所述根据所述第一链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn,调整当前的记分板窗口起始序列号winstart值,包括:
38.调整所述winstart为ssn最小值;其中,ssn最小值为所述第一链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn中最小的ssn。
39.其中,所述根据调整后的winstart,对所述多链路上接收的数据帧进行处理,包括:
40.接收到某链路发送的数据帧,所述数据帧的序列号sn满足winend<sn<winstart 2^11,调整所述winstart为winstart=sn-winsize 1;
41.将所述多条链路对应的ssn中,小于调整后的winstart的ssn,更新为与所述调整后的winstart相同。换句话说,凡是小于调整后的winstart的各链路对应的ssn,都更新为调整之后的winstart。
42.本技术实施例第一至第六方面任一方面的第二种实现方式中,根据各链路对应的ssn,调整当前的记分板窗口起始序列号winstart值,包括:
43.调整所述winstart为winstart最大值;
44.其中,winstart最大值为接收所述bar之前的winstart与接收所述bar后的winstart中最大的winstart;其中,接收所述bar后的winstart为ssn最小值;所述ssn最小值为所述第一链路对应的ssn_1的ssn_1和本地存储的其他链路对应的ssn中最小的ssn。
45.其中,所述根据调整后的winstart,对所述多链路上接收的数据帧进行处理,包括:
46.接收到某条链路发送的数据帧,所述数据帧的序列号sn满足winend<sn<winstart 2^11,调整所述winstart为winstart=sn-winsize 1。
47.本技术实施例第一至第六方面任一方面的第一种或第二种实现方式中,所述ssn_1为所述第一链路下一个上被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号。
48.本技术实施例第七方面,提供一种多链路聚合传输方法,应用于多链路聚合传输的发送端,包括:
49.发送端在与接收端之间的多条链路上发送数据帧;所述多条链路包括第一链路;
50.所述发送端在所述第一链路上发送块确认请求bar帧;所述bar帧中携带有与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路上下一个被发送的数据帧的
序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号。
51.本技术实施例第八方面,提供一种多链路设备,其作为多链路聚合传输的发送端,包括:
52.收发器,用于在与接收端之间的多条链路上发送数据帧;所述多条链路包括第一链路;
53.所述收发器,还用于在所述第一链路上发送块确认请求bar帧;
54.所述处理器,用于解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路上下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被所述发送端被丢弃的数据帧的序列号。
55.本技术第八方面,提供一种芯片系统,包括:至少一个处理器和接口;
56.所述接口,用于输出在与接收端之间的多条链路上发送的数据帧;所述多条链路包括第一链路;
57.所述接口,还用于输出在所述第一链路上发送的块确认请求bar帧;
58.所述处理器,用于在所述bar帧中携带与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路上下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被丢弃的数据帧的序列号。
59.本技术实施例第九方面,提供了一种第一多链路通信装置,该第一多链路通信装置被配置为实现上述第一方面或第三方面中接收端执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的模块。
60.本技术实施例第十方面,提供了一种第二多链路通信装置,该第二多链路设备被配置为实现上述第七方面发送端所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的模块。
61.本技术实施例第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述第一方面或第三方面或第七方面的任一方面所述的方法。
62.本技术实施例第十二方面,提供一种计算机可读存储介质,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使得如前述第一方面或第三方面或第七方面的任一方面所述的方法被实现。
63.本技术实施例第十三方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行上述第一方面或第三方面或第七方面的方法。
64.本技术实施例第十四方面,提供另一种芯片,该芯片可以为第一多链路设备或第二多链路设备内的芯片,该芯片包括:输入接口、输出接口和处理电路,输入接口、输出接口与电路之间通过内部连接通路相连,处理电路用于执行上述第一方面或第三方面或第七方面的方法。
65.本技术实施例第十五方面,提供另一种芯片,包括:输入接口、输出接口、处理器,可选的,还包括存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述第一方面或第三方面或第七方面的方法。
66.本技术实施例第十六方面,提供一种装置,用于实现上述任一方面的方法。
附图说明
67.为了更清楚地说明本技术实施例或背景技术中的技术方案,下面将对本技术实施例或背景技术中所需要使用的附图进行说明。
68.图1是本技术实施例提供的一种通信系统的架构示意图;
69.图2是本技术实施例提供的一种多链路设备之间传输的示意图;
70.图3a是本技术实施例提供的一种多链路设备的结构示意图;
71.图3b是本技术实施例提供的一种多链路通信装置的结构示意图;
72.图3c是本技术实施例提供的一种多链路通信装置的结构示意图;
73.图4是本技术实施例提供的一种芯片系统的结构示意图;
74.图5是一种bar帧的示意图;
75.图6是一种bar帧的又一示意图;
76.图7是一种ba帧的示意图;
77.图8是一种ba帧的又一示意图;
78.图9是一种多链路聚合传输示意图;
79.图10是一种多链路聚合传输架构图;
80.图11是一种被更改的bar帧的示意图;
81.图12是又一种被更改的bar帧的示意图;
82.图13是本技术实施例提供的一种多链路聚合传输的流程示意图;
83.图14是本技术实施例提供的又一多链路聚合传输的流程示意图;
84.图15是本技术实施例提出的又一多链路聚合传输的流程示意图;
85.图16是一种多链路聚合传输的流程示意图;
86.图17是本技术实施例提供的又一多链路聚合传输的流程示意图;
87.图18是本技术实施例提出的又一多链路聚合传输的流程示意图;
88.图19是本技术实施例提供的又一多链路聚合传输的流程示意图。
具体实施方式
89.下面结合本技术实施例中的附图对本技术实施例进行描述。
90.图1是本技术实施例提供的一种通信系统的架构示意图。该通信系统包括接入点设备和站点设备。通信系统中可以包含一个或多个接入点(access point,ap),图1中只示意了1个。该通信系统中还包括一个或多个站点(station,sta),例如图1中示意的sta1~sta6。其中,sta2与ap之间存在多条链路,sta2为多链路设备;sta4和sta5之间也存在多条链路,sta4和sta5也为多链路设备。本技术实施例中的多链路设备可以为站点设备,也可为接入点设备。
91.图1所示的架构也可以扩展至基站(base station,bs)和终端设备(user equipment,ue)的应用场景。其中,ap可以为移动用户进入有线网络的接入点,主要部署于家庭、大楼内部以及园区内部,典型覆盖半径为几十米至上百米,当然,也可以部署于户外。
92.ap相当于一个连接有线网和无线网的桥梁,主要作用是将各个无线网络客户端连
接到一起,然后将无线网络接入以太网。具体的,ap可以是带有wifi芯片的终端设备或者网络设备。ap可以为支持802.11be及未来的802.11标准制式的设备。ap也可以为支持802.11ax、802.11ac、802.11n、802.11g、802.11b及802.11a等多种无线局域网(wireless local area networks,wlan)制式的设备。sta可以为无线通讯芯片、无线传感器或无线通信终端。例如支持wifi通讯功能的移动电话、支持wifi通讯功能的平板电脑、支持wifi通讯功能的机顶盒、支持wifi通讯功能的智能电视、支持wifi通讯功能的智能可穿戴设备、支持wifi通讯功能的车载通信设备和支持wifi通讯功能的计算机。可选地,sta可以支持802.11be及未来的802.11标准制式的设备。sta也可以支持802.11ax、802.11ac、802.11n、802.11g、802.11b及802.11a等多种wlan制式。
93.虽然本技术实施例主要以部署ieee 802.11的网络为例进行说明,本领域技术人员容易理解,本技术涉及的各个方面可以扩展到采用各种标准或协议的其它网络,例如,bluetooth(蓝牙),高性能无线lan(high performance radio lan,hiperlan)(一种与ieee 802.11标准类似的无线标准,主要在欧洲使用)以及广域网(wan)、无线局域网(wireless local area network,wlan)、个人区域网(personal area network,pan)或其它现在已知或以后发展起来的网络。因此,无论使用的覆盖范围和无线接入协议如何,本技术提供的各种方面可以适用于任何合适的无线网络。
94.如图2所示,图2是本技术实施例提供的一种多链路设备之间的关联关系示意图。图2中所示的多链路设备包括第一多链路设备和第二多链路设备,第一多链路设备或第二多链路设备可以分别包括至少一个多链路逻辑实体,一个多链路逻辑实体可以包括一个或多个站点,每个站点分别工作在不同的链路上。其中,第一多链路设备中的sta1和sta2属于一个多链路逻辑实体,第一多链路设备中的stan属于另一个多链路逻辑实体。第二多链路设备中的sta1和sta2属于一个多链路逻辑实体,第二多链路设备中的stan属于另一个多链路逻辑实体。如果第一多链路设备需要与第二多链路设备进行通信,则需要第一多链路设备中的每个站点与第二多链路设备中对应的站点进行关联。
95.如图2所示,第一多链路设备中的sta1与第二多链路设备中的sta1相关联,工作在聚合链路1(简称链路1)上。第一多链路设备中的sta2与第二多链路设备中的sta2相关联,工作在聚合链路2(简称链路2)上。第一多链路设备中的stan与第二多链路设备中的stan相关联,工作在聚合链路n(链路n)上。使得第一多链路设备中每个站点可以在各自链路上与第二多链路设备中对应的站点建立连接,实现两个多链路设备之间的多链路通信。
96.本技术实施例中的所涉及的多链路设备,其可以包括硬件结构、软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能可以以硬件结构、软件模块、或者硬件结构加软件模块的方式来实现。
97.图3a为本技术实施例提供的一种多链路设备200的结构示意图。如图3a所示,该多链路设备200可包括:处理器201、收发器205,可选的还包括存储器202。
98.所述收发器205可以称为收发单元、收发机、或收发电路等,用于实现收发功能。收发器205可以包括接收器和发送器,接收器可以称为接收机或接收电路等,用于实现接收功能;发送器可以称为发送机或发送电路等,用于实现发送功能。
99.存储器202中可存储计算机程序或软件代码或指令204,该计算机程序或软件代码或指令204还可称为固件。处理器201可通过运行其中的计算机程序或软件代码或指令203,
或通过调用存储器202中存储的计算机程序或软件代码或指令204,对mac层和phy层进行控制,以实现本技术下述各实施例。其中,处理器201可以为中央处理器(central processing unit,cpu),存储器202例如可以为只读存储器(read-only memory,rom),或为随机存取存储器(random access memory,ram)。
100.本技术中描述的处理器201和收发器205可实现在集成电路(integrated circuit,ic)、模拟ic、射频集成电路rfic、混合信号ic、专用集成电路(application specific integrated circuit,asic)、印刷电路板(printed circuit board,pcb)、电子设备等上。
101.上述多链路设备200还可以包括天线206,该多链路设备200所包括的各模块仅为示例说明,本技术不对此进行限制。
102.请参见图3b,图3b是本技术实施例提供的一种第一多链路通信装置的结构示意图,该第一多链路通信装置可以用于实现本技术实施例中涉及第一多链路设备的任意方法和功能,第一多链路通信装置可以包括处理模块301、发送模块302。可选的,发送模块302对应第一多链路设备包括的一个基带电路和一个射频电路。该第一多链路通信装置作为多链路聚合传输的发送端,其中,各个模块的详细描述如下。
103.在一个实施例中:
104.发送模块302,用于在与第二多链路设备之间的多条链路上发送数据帧;所述多条链路包括第一链路;
105.所述发送模块302,还用于在所述第一链路上发送块确认请求bar帧;
106.所述处理模块301,用于解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被所述第一多链路设备丢弃的数据帧的序列号。
107.其中,数据帧和bar帧包括的元素或字段的内容以及功能可参考后续方法实施例的描述,此处不再赘述。
108.请参见图3c,图3c是本技术实施例提供的一种第二多链路通信装置的结构示意图,该第二多链路通信装置可以用于实现本技术任意实施例中涉及第二多链路设备的任意方法和功能,第二多链路通信装置可以包括接收模块401以及处理模块402。其中,第二多链路通信装置作为多链路聚合传输的接收端,各个模块的详细描述如下。
109.一种实现方式中,
110.接收模块401,用于在与发送端之间的多条链路上接收数据帧;所述多条链路包括第一链路;
111.所述接收模块401,还用于在所述第一链路上接收块确认请求bar帧;
112.处理模块402,用于解析所述bar帧中携带的与第一链路对应的起始序列号ssn_1;其中所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号;
113.所述处理模块402,还用于对所述多链路上接收的数据帧进行处理。
114.另一种实现方式中,
115.接收模块401,用于在与发送端之间的多条链路上接收数据帧和bar帧中的至少一种;所述多条链路包括第一链路;
116.接收模块401,用于在所述第一链路上接收块确认请求bar帧,所述bar帧中携带所述第一链路对应的ssn_1;
117.处理模块402,用于根据所述多条链路中至少两条链路对应的ssn,调整当前的记分板窗口起始序列号winstart值;其中,所述多条链路中至少两条链路对应的ssn,包括所述第一链路对应的ssn_1以及所述接收端本地存储的其他链路对应的ssn;
118.应理解,本技术所说的各链路对应的ssn,是指的各条链路各自的ssn,各条链路各自的ssn的值可以相同,也可以各不相同;多链路通信装置可以对各条链路的ssn进行统一设置,也可以分别进行设置,本技术不做限定。
119.可选的,第二多链路通信装置还包括存储器或者缓存,用于存储多条链路各自的ssn;
120.所述处理器402,还用于根据调整后的winstart,对所述多链路上接收的数据帧进行处理。
121.上述两种方式中的数据帧和bar帧包括的元素或字段的内容以及功能可参考后续方法实施例的描述,此处不再赘述。
122.需要说明的是,各个模块的实现还可以对应本技术方法实施例的相应描述,执行上述实施例中第二多链路设备所执行的方法和功能。
123.本技术实施例还提供了一种处理器,用于与存储器耦合,用于执行本技术实施例中任一实施例中涉及第一多链路设备或第二多链路设备的任意方法和功能。
124.本技术实施例还提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行本技术各实施例中任一实施例中涉及第一多链路设备或第二多链路设备的任意方法和功能。
125.本技术实施例还提供了一种装置,用于执行上述本技术实施例中任一实施例中涉及第一多链路设备或第二多链路设备的任意方法和功能。
126.本技术实施例还提供一种无线通信系统,该系统包括本技术任一实施例中涉及的至少一个第一多链路设备和至少一个第二多链路设备。
127.如前所述,以上实施例描述中的多链路设备可以是接入点或者站点,但本技术中描述的多链路设备的范围并不限于此,而且多链路设备的结构可以不受图3a~图3c的限制。多链路设备可以是独立的设备或者可以是较大设备的一部分。例如所述多链路设备的实现形式可以是:
128.(1)独立的集成电路ic,或芯片,或,芯片系统或子系统;(2)具有一个或多个ic的集合,可选的,该ic集合也可以包括用于存储数据,指令的存储部件;(3)可嵌入在其他设备内的模块;(4)接收机、智能终端、无线设备、手持机、移动单元、车载设备、云设备、人工智能设备等等;(5)其他等等。
129.对于多链路设备的实现形式是芯片或芯片系统的情况,可参见图4所示的芯片的结构示意图。图4所示的芯片包括处理器501和接口502。其中,处理器501的数量可以是一个或多个,接口502的数量可以是多个。可选的,该芯片或芯片系统可以包括存储器503。
130.本技术实施例并且不限制权利要求书的保护范围和适用性。本领域技术人员可以在不脱离本技术实施例范围的情况下对本技术涉及的元件的功能和部署进行适应性更改,或酌情省略、替代或添加各种过程或组件。
131.为便于理解,下面先对本文涉及的相关技术方案或技术术语进行简单的介绍。
132.1、确认机制
133.对于mpdu是否被正确接收,通常是通过确认机制进行确认的,通常有如下三种确认方式:
134.基于ack的确认方式:发送端发送一个mpdu,同时将服务质量(quality of service,qos)字段中的确认策略子字段设置为正常接收,接收端如果正确接收到该mpdu,则向发送端返回一个ack消息表示其正确接收到该mpdu。
135.基于正常确认的块确认方式:发送端发送一个聚合(aggregation mpdu,a-mpdu),同时将qos字段中的确认策略子字段设置为正常块确认,接收端分别解析其中的每个mpdu,根据每个mpdu是否接收成功,返回一个块确认(block acknowledgement,ba)帧。ba帧中会携带一个bitmap来指示对应的mpdu或者msdu是否接收成功。如果某个mpdu或者msdu接收成功,则将相应bit置1,否则置0。
136.本技术后续的实施例中,将qos字段中的确认策略子字段设置为正常块确认的mpdu简称为qos数据帧或者数据帧(图中用data表示)。
137.基于请求的块确认(block acknowledgement request,bar):发送端可以发送一个或者a-mpdus,同时将qos字段中的确认策略子字段设置为请求块确认。只有当发送端发送一个bar帧后,接收端才根据之前各个mpdu或者msdu的接收情况,返回一个ba帧。
138.2、bar帧
139.bar帧的格式如图5所示,其包括:帧控制,时长,接收地址,发送地址,bar控制,起始序列控制,帧校验序列等字段;其中,bar控制字段包括:bar确认策略,多tid,压缩点阵图,组播重传模式,tid/tid数目和保留(b5~b11)等子字段,各主要子字段的含义如下:
140.bar确认策略:该指示位在延迟块确认时使用。对于一个延时块确认会话,如果该指示位置0,表示接收端收到bar帧后,在短帧间间隔(short interframe space,sifs)后回一个ack;当该指示位置1时,表示接收端收到bar帧后不需要回ack。
141.压缩点阵图:如果被设置1,则表示该bar要求接收端回一个带压缩点阵图的ba。
142.tid/tid数目:如果多tid指示位没有被置1,则该字段承载该块确认会话的tid。如果多tid指示位被置1,则该字段承载多tid bar帧中的tid数目。
143.起始序列控制字段:该字段用其中的12bits(b4~b15)来携带起始序列号(starting sequence number,ssn)。
144.多tid:该指示位用于指示该bar是基本bar帧还是多tid bar帧,对于多tidbar帧,其帧格式如图6所示。
145.对于多tid bar帧,每个tid都有一个每tid信息和起始序列控制字段。每tid信息字段包含tid值,紧跟这个字段的是对应于该tid的序列控制字段。
146.3、ba帧
147.ba的帧格式如图7所示。其包括:帧控制,时长,接收地址,发送地址,ba控制,起始序列控制,帧校验序列等字段;其中,ba控制包括ba确认策略,多tid,压缩点阵图,组播重传模式,tid/tid数目和保留(b5~b11)等子字段,各主要子字段的含义如下:
148.ba确认策略:该指示位在延迟块确认时使用。对于一个延时块确认回话,如果该指示位置0,表示接收端收到ba帧后,在sifs后回一个ack;当指示位置1时,接收端收到bar帧
后不需要回ack。
149.压缩点阵图:如果被设置1,则表示该ba帧包含一个压缩的或8个八位元的块确认点阵图。如果设置为0,则ba帧包含非压缩的或者128个八位元的块确认点阵图。
150.tid/tid数目:如果多tid指示位没有被置1,则该字段承载该块确认会话的tid。如果多tid指示位被置1,则该字段承载多tid ba帧中的tid数目。
151.起始序列控制字段:该字段用其中的12bits来携带起始序列号ssn。
152.块确认点阵图:块确认点阵图可以是非压缩ba情况下的128个八位元,也可以是在压缩ba情况下的8个八位元。点阵图最多可标示64个msdu的接收状态。在非压缩点阵图的情况下,每个msdu由一个16位bits来表示,各个bit代表msdu分片(如果有的话)。在压缩点阵图的情况下每个msdu使用单个bit来表示,这种情况下不支持对每个分片接收状态的表示。
153.多tid:该指示位用于指示该ba是基本ba帧还是多tid ba帧,对于多tid ba帧,其帧格式如图8所示。
154.对于多tid ba帧,每个tid都有一个每tid信息字段、起始序列控制字段、ba点阵图字段。每tid信息字段包含tid值,紧跟这个字段的是对应于该tid的序列控制字段和ba点阵图。
155.4、块确认会话的建立过程
156.对于某个tid数据,如果想使用块确认机制,是通过交换建立块确认(add block acknowledgement,addba)请求(request)/响应(response)帧来建立的。
157.具体的,块确认会话的初始化由发起端发送一个“addba请求”帧开始。响应端发送一个ack作为对正确收到的“addba请求”帧的回应。在进一步的处理后,响应端发送一个“addba响应”帧,如果发起端正确接收到此帧,则回应一个ack。如果没有收到期望的ack,则发起端与响应端将会重传“addba请求”“addba响应”。如果会话建立不成功,其会被发起端的无操作超时检测到。
158.其中,“addba请求”与“addba响应”帧携带以下主要信息:
159.块确认策略:该字段指示该会话是立即块确认还是延迟块确认会话。
160.tid:该字段给出了该会话所用的通信类别。
161.缓冲区大小:该字段指示响应端用来对帧进行重排序的帧缓冲区数目。如果这个值由发起端设置,则是期望值,响应端设置的值才是真实值。发起端在要求一个块确认之前,没有收到响应的mpdu数目不能超过此值。
162.块确认超时值:该字段给出了在此会话中没有帧交换时,块确认会话在多久后终止。
163.起始序列号:发起端发送的第一个数据帧的序列号。
164.5、记分板机制以及窗口起始序列号(winstart)移动机制
165.对于块确认,接收端会维护一个记分板数据结构,以记录哪些mpdu已经被正确接收到。当接收端需要回ba时,会将记分板转换成一个点阵图(bitmap),ba帧中会进一步指示bitmap中的第一个比特所对应的序列号,随后的比特则对应后续的序列号。目前协议中,mac服务数据单元(mac service data unit,msdu)的序列号是一个12bits,记分板表示一个大小为4096的序列号空间(sequence number space)的一个窗口。记分板窗口由窗口起始序列号(winstart),窗口终止序列号(winend)以及窗口长度(winsize)定义。
166.多链路聚合通信涉及多个链路之间的协调工作。数据发送端(如图2所示第一多链路设备)的同一tid的mpdus可以分别通过多条链路:链路1,链路2,链路3,链路n进行传输,以增大该tid数据的传输速率。数据接收端(例如第二多链路设备)根据每个mpdu帧头携带的序列号(sn)对多条链路上接收的相同tid的数据包按照sn进行排序。协议要求mac层必须按照顺序将mpdus往上层递交。
167.但是,本技术的发明人发现,在多链路聚合下bar的发送会存在如下问题:如果一条link在发送bar时设置了一个ssn值,根据现有的winstart移动规则,接收端会移动winstart,但其他link有小于该ssn的待传mpdu,接下来即使这些mpdus被发送且被正确接收也会被接收端丢弃。
168.举例来说,如图9所示:
169.发送端分别在链路1和链路2上发送a-mpdu1和a-mpdu2,其中a-mpdu1所包含的mpdus对应的sn为1~31;a-mpdu2所包含的mpdus对应的sn为32~59。接收端分别在链路1和链路2上反馈ba给发送端,并指示哪些mpdus被成功接收哪些mpdus未被成功接收。假设链路2上发送的ba未被发送端成功接收,其接下来在链路2上发送一个bar帧请求接收端回ba,并将bar帧中的ssn设置为32。接收端收到bar帧后会将winstart移动到32,但这会导致a-mpdu1中未被正确接收的mpdus在接下来的重传过程中,即使被接收端成功接收也会因为其sn小于winstart而被丢弃。
170.为了解决上述多链路聚合场景下的技术问题,存在如下三种现有技术:
171.现有技术一:针对多链路聚合场景下的每条链路,单独使用记分板机制。
172.具体的,如图10所示的多链路聚合架构中,接收端除了设置有一个全局重排缓冲区(global reorder buffer),每条链路还有一个本地记分板或者本地重排缓冲区(local reorder buffer)。为了避免mpdus在本地缓冲区等待过长时间,需要引入一个新的bar帧,称为本地bar(local bar,l-bar),其帧格式如图11所示:
173.与图5所示的bar帧不同之处在于,将保留比特(reserved bit)b5用来指示是否携带本链路传输的mpdu的sn点阵图指示信息,其用于指示在本link上传输的mpdus所对应的sn范围,并且第一个bit对应的sn用起始序列号字段进行指示。
174.接收端接收到该l-bar帧之后,根据其携带的本链路传输的mpdu的sn点阵图指示信息来判断如何移动本链路对应的记分板窗口的起始序列号(winstart)。
175.现有技术一提供的技术方案,需要修改现有的bar帧,并为每条链路增加一个本链路传输的mpdu的sn点阵图指示信息,信令开销巨大。
176.现有技术二:约束发送端发送的mpdu的sn。
177.具体的,参见图12,与图5所示的bar帧结构不同之处在于,图12的bar帧结构中,利用保留比特(reserved bit)b5指示接收端是否需要根据该bar帧来移动记分板窗口的起始序列号(winstart),该b5对应的字段可以称为“是否移动指示”。
178.当发送端想要接收端根据bar帧来移动记分板窗口的起始序列号(winstart)时,发送端必须保证其发送的mpdu的sn大于bar帧中携带的ssn,也即,mpdu的sn小于bar帧中携带的ssn将不能被发送。
179.现有技术二提供的技术方案,同样需要修改现有的bar帧,并且需要发送端的多条链路之间能够互相交互,以判断什么情况下可以让接收端移动记分板窗口的起始序列号
(winstart),需要让接收端移动winstart时,将“是否移动指示”置为1。这无疑增加了发送端的复杂度;并且,在非共址(non-colocation)场景下,各条链路之间的交互,会增加延时。
180.现有技术三:约束发送端发送的mpdu的ssn。
181.现有技术三中,发送端在某条链路上发送bar时,需要保证其他链路上没有比该bar中携带的ssn更低的待传mpdu。
182.现有技术三的技术方案,同样需要发送端的聚合链路之间能够交互,这无疑增加了发送端的复杂度;并且,在non-colocation场景下,各条链路之间的交互,会增加延时。。
183.本技术针对上述技术问题,以及上述三种现有技术存在的缺陷,针对多链路聚合传输,提供了一种记分板窗口起始序列号(winstart)的移动规则。
184.本技术提供的一种记分板窗口起始序列号(winstart)的移动规则,作用于接收端,综合参考多条链路各自的ssn以决策是否移动winstart。
185.应理解,本技术所说的多条链路对应的ssn,是指的多条链路各自的ssn,各条链路各自的ssn的值可以相同,也可以部分不同,也可以是各不相同;发送端可以对各条链路的ssn进行统一设置,也可以分别进行设置,本技术不做限定。
186.还应理解,本技术在接收端综合考虑多条链路各自的ssn,包括如下几种情况;
187.一是在接收到某条链路上发送的bar之后,将该bar中携带的ssn,和接收端本地维护或存储的其他链路的ssn进行综合考虑;
188.二是在某一个时间点,接收端对其本地维护或存储的多条链路的ssn进行综合考虑;
189.三是在接收到多条链路同时发送的多个bar之后,将该多个bar中携带的与多条链路分别对应的ssn进行综合考虑。
190.应理解,本技术实施例涉及的多条链路,是指的发送端和接收端之间的多条链路;接收端在综合考虑多条链路各自的ssn决策是否移动winstart时,可以考虑该多条链路中的全部链路各自的ssn,也可以考虑该多条链路中的至少两条链路对应的ssn。
191.一种实现中,为了兼顾多条链路上发送的mpdu,在接收端接收到某条链路发送的bar帧时,接收端对winstart进行调整的时候,不仅只考虑该bar帧携带的ssn,还需要跟其他链路发送的bar携带的ssn进行比较,取其中最小的值,以便将winstart的值调整为多条链路发送的bar的对应的ssn的最小值,从而不会出现发送的mpdu的sn小于winstart的情况。应理解,其他链路发送的bar携带的ssn已经在接收端本地存储,因此不需要发送端多条链路之间进行交互。
192.另外,在接收端接收到某条链路发送的mpdu时,如果某条链路发送的数据帧对应的sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,则调整winstart,以便winend等于该sn,如果本地存储的各链路对应的ssn中,有小于调整后的winstart的ssn,则将本地存储的小于winstart的ssn更新为winstart。
193.发送端可以不改变现有bar帧的ssn的设置规则,也不需要发送端多链路之间需要交互,接收端根据多条链路的接收情况来调整winstart。该方法不需要更改现有的bar帧,也不强制要求发送端多链路之间能够进行交互,这尤其适用于non-collocated多链路聚合场景。
194.举例来讲,本技术针对多链路聚合传输,提供的新的记分板窗口起始序列号
(winstart)的移动规则如下:
195.winstart移动规则一
196.每条link的ssn都初始化为ssn_0,其携带在addba request/response帧中;
197.当接收到一个bar帧,则将winstart移动到min(ssn_1,ssn_2,

,ssn_n),其中ssn_i为聚合链路i上的ssn值;
198.当接收到一个qos数据帧时,有以下3种情况:
199.如果数据帧的sn落在当前的记分板窗口内,即winstart<=sn<=winend,则记分板在sn表示的偏移量处置1;
200.如果数据帧的sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,则记分板右移以适应sn,即,将记分板窗口起始序列号设置为winstart=sn-winsize 1。如果ssn_i小于winstart,则更新ssn_i为winstart,其中i=1,

,n;
201.如果数据帧的sn超出窗口外一半序列空间以上,即winstart 2^11<=sn<=winstart,则不对记分板做任何改变。
202.另一种实现中,为了兼顾多条链路上发送的mpdu,在接收端接收到某条链路发送的bar帧时,将该bar帧携带的ssn值与其他链路对应的ssn的值中的最小值,记为winstart_x;然后与接收该bar帧前本地存储的winstart_y进行比较,取两者中最大值作为当前的winstart对记分板窗口进行调整;然后利用调整后的记分板窗口对各链路接收到的数据帧进行处理。
203.接收端可以自适应的调整winstart,这样做的目的,是为了兼顾多条链路发送的mpdu,该方法不需要多条链路之间进行交互,同时也不需要更改现有的bar帧,最大程度的节约信令开销并兼顾多条链路的传输。
204.举例来讲,本技术针对多链路聚合传输,提供的新的记分板窗口起始序列号(winstart)的移动规则如下:
205.winstart移动规则二:
206.每条link的ssn都初始化为ssn_0,其携带在addba request/response帧中;
207.当接收端在某条链路(link i)上接收到一个bar帧,将该bar帧中携带的ssn_i和接收端本地存储的其他链路的ssn,取最小值,记为winstart_x,即,将min(ssn_1,ssn_2,

,ssn_n)记为winstart_x,收到bar帧前的winstart记为winstart_y,则将winstart移动到max(winstart_x,winstart_y);
208.当接收端接收到一个qos数据帧时,有以下3种情况:
209.如果数据帧的sn落在当前的记分板窗口内,即winstart<=sn<=winend,则记分板在sn表示的偏移量处置1;
210.如果数据帧的sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,则记分板右移以适应sn,且将记分板当前窗口起始序列号winstart设置为winstart=sn-winsize 1;
211.如果数据帧的sn超出窗口外一半序列空间以上,即winstart 2^11<=sn<=winstart,则不对记分板做任何改变。
212.基于上述发送端发送bar的规则和接收端执行winstart移动规则,本技术在图1所
示的网络系统以及图2-图4所示的多链路设备的结构中,实现本技术提供的多链路聚合传输的方法如图13所示,包括:
213.步骤100,发送端在多条链路上向接收端发送数据帧(mpdus);其中,不同链路上发送的数据帧,其对应的ssn可以相同,也可以不同;
214.步骤101,接收端在多条链路上接收所述数据帧;
215.步骤102,发送端在所述第一链路上发送块确认请求bar帧;所述bar帧中携带有与第一链路对应的起始序列号ssn_1;
216.一种可选的实现方式中,所述ssn_1为所述第一链路下一个被发送的数据帧的序列号,或者所述ssn_1大于所述第一链路上被发送端丢弃的数据帧的序列号;
217.步骤103,接收端在所述第一链路上接收块确认请求bar帧;
218.步骤104,接收端根据多条链路各自的ssn,调整当前的记分板窗口起始序列号winstart值;
219.步骤105,接收端根据调整后的winstart,对所述多链路上接收的数据帧进行处理。
220.需要说明的是,以上流程仅为举例,各条链路发送数据帧和bar帧的先后顺序本技术不做限制,接收端接收数据帧和bar帧的时间顺序本技术也不做限制。
221.其中,发送端可以是如图1所示的ap,相应的,接收端为sta2;或者发送端为sta2,接收端为ap;或者发送端为sta4,接收端为sta5;或者发送端为sta5,接收端为sta4。或者发送端是如图2第一多链路设备,接收端为第二多链路设备;多条链路分别为链路1,链路2,链路3

链路n。
222.上述发送端执行的步骤100和步骤102,可以通过如图3a所示的多链路设备200的收发器205执行,或者通过如图3b所示的第一多链路通信装置中的发送模块302执行;还可以通过如图4所示的芯片系统中的接口302执行。
223.上述接收端执行的步骤101和103,可以通过如图3a所示的多链路设备200的收发器205执行,步骤104可以通过处理器201执行。上述接收端执行的步骤101和103,还可以通过如图3b所示的第二多链路通信装置的接收模块401执行,步骤104和步骤105可以通过处理模块402执行。步骤101和103还可以通过如图4所示的芯片系统中的接口302执行,步骤104和步骤105还可以通过处理器301执行。
224.其中,在接收端还存储各条链路对应的ssn和记分板窗口参数等,例如winstart,winsize,可选的还可以存储winend,可以通过如图3a所示的存储器202,或图4所示的存储器303实现,具体的形式不限于表格等等。
225.实施例一
226.本实施例一将描述本技术实现如图13所示的链路聚合传输技术方案中,记分板窗口起始序列号(winstart)的移动规则一。
227.如图14所示,以发送端通过两条聚合链路向接收端发送mpdus为例进行说明。mpdus的确认策略字段都设置为基于请求的块确认策略,并且不存在某个mpdu的sn落在winend<sn<winstart 2^11的情况。
228.在这种场景下,在接收端执行winstart的移动过程如下:
229.在初始时刻t0,将ssn_1和ssn_2都初始化为ssn_0,其中ssn_0为发送端发送的
addba请求和接收端向发送端发送addba响应帧中携带的起始序列号,ssn_1和ssn_2分别为聚合链路1和聚合链路2上收到的bar帧中所携带的ssn值。接收端将winstart设置为min(ssn_1,ssn_2)=min(0,0)=0。
230.在时刻t1,接收端在聚合链路1上收到一个bar帧,其携带的ssn_1为20,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(20,0)=0;
231.在时刻t2,接收端在聚合链路2上收到一个bar帧,其携带的ssn_2为30,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(20,30)=20;
232.在时刻t3,接收端在聚合链路1上收到一个bar帧,其携带的ssn_1为25,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(25,30)=25;
233.在时刻t4,接收端在聚合链路1上收到一个bar帧,其携带的ssn_1为28,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(28,30)=28;
234.在时刻t5,接收端在聚合链路2上收到一个bar帧,其携带的ssn_2为40,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(28,40)=28;
235.在时刻t6,接收端在聚合链路1上收到一个bar帧,其携带的ssn_1为45,然后接收端将winstart设置为min(ssn_1,ssn_2)=min(45,40)=40;
236.以此类推。
237.本实施例一为了兼顾多条链路上发送的mpdu,在接收端接收到某条链路发送的bar帧时,接收端对winstart进行调整的时候,不仅只考虑该bar帧携带的ssn,还需要跟其他链路发送的bar携带的ssn进行比较,取其中最小的值,以便将winstart的值调整为多条链路发送的bar的对应的ssn的最小值,从而不会出现发送的mpdu的序列号小于winstart而导致接收端即使正确接收也会被丢弃的情况出现。
238.实施例二
239.实施例二中,将描述本技术实现如图13所示的链路聚合传输技术方案中,记分板窗口起始序列号(winstart)的移动规则一,以及在该winstart移动规则一基础上,对多条链路上发送的mpdu的处理方式。
240.如图15所示,仍然以发送端的多链路设备通过两条链路link1和link2向接收端发送mpdus,且记分板窗口为winstart=4,winsize=100,winend=103为例。
241.首先addba请求/响应帧中ssn设置为4,ssn_1和ssn_2都初始化为4,假设link1和link2上都只采用块确认策略且之前发送端没有发送过bar帧,而且没有发送过sn大于103的mpdu(图中示意为data)。
242.t0时刻,发送端在link1上向接收端发送的mpdu,其sn为103,满足winstart<sn=winend=103,因此在序列号空间(sequence number space)中,在该sn对应的偏移量(即序列号为103)处,将对应的比特置1,表示sn=103对应的mpdu被成功接收。
243.t1时刻,发送端在link2上发送bar帧,其中携带的ssn=6;接收端将winstart调整为两条链路对应的ssn的最小值,即winstart=min(ssn_1,ssn_2)=min(4,6)=4。将ssn_1=4,ssn_2=6,winstart=4,winend=103存储在接收端本地。
244.t2时刻,发送端在link1上重传sn=4的mpdu,满足winstart=sn<winend,因此,在该sn对应的偏移量(即序列号为4)处,将对应的比特置1,表示sn=4对应的mpdu被成功接收。将ssn_1=4,ssn_2=6,winstart=4,winend=103存储在接收端本地。
245.相比较而言,相同场景下,如果利用现有技术提供的记分板的起始序列号(winstart)的移动规则,如图16所示,在t1时刻,发送端在link2上发送bar帧,其中携带的ssn=6;接收端将winstart调整为该bar对应的ssn,即winstart=ssn_2=6。
246.在t2时刻,发送端在link1上发送sn=4的mpdu,由于sn=4<winstart,即使该sn对应的mpdu被接收端成功接收,也会被接收端丢弃或者删除。
247.比较图15本技术提供的多链路传输方案和图16现有技术提供的多链路传输方案可知,利用本技术实施例提供的记分板窗口起始序列号(winstart)的移动规则一,sn=4对应的mpdu被接收端成功接收但不会被丢弃或者删除,并且该记分板窗口起始序列号(winstart)的移动规则,并不要求发送端在发送bar帧时需要确保其他链路上没有待传的mpdu的序列号小于该bar帧中的ssn,更不需要修改现有的bar帧,因此,在保持原有的bar帧的结构上,极大程度节约了指示开销,并实现对多条链路的mpdu的正确接收。
248.图15仅为举例,应用本技术提供的记分板窗口起始序列号(winstart)的移动规则,还可以解决诸如图9所示的问题,例如,发送端在link2上发送的bar携带的ssn_2=32时,在link1上发送的a-mpdu1中的sn为1~31的mpdus,假设对应的ssn_1=1,此时在接收端,将winstart调整为两者中的最小值,即winstart=mini(ssn_1,ssn_2)=mini(1,32)=1,因此接下来在link1上重传a-mpdu1中出错的mpdu时不会被接收端丢弃或删除。
249.实施本实施例二,接收端在接收到的bar帧时,会根据该bar帧携带的ssn和本地维护或存储的各链路的ssn中的最小值,对winstart进行调整;从而避免对其他链路上待发送的mpdu(该mpdu的sn小于bar帧携带的ssn)进行误操作。
250.实施例三
251.本实施例三将举例描述应用本技术提供的记分板窗口起始序列号(winstart)的移动规则一的多链路传输技术方案。
252.如图17所示,假设记分板尺寸winsize=100,addba请求/响应帧中ssn设置为0,接收端本地存储的ssn_1和ssn_2都初始化为0,假设链路1和链路2上都只采用块确认策略且之前发送端没有发送过bar帧,而且没有发送过sn大于99的数据帧。
253.t0时刻,发送端在链路1上发送了一个sn=103的数据帧,由于其落在了记分板窗口之外但位于序列号空间范围内的一半,所以接收端会将winstart移动到4。由于ssn_1=0,ssn_2=0,ssn_1<winstart,ssn_2<winstart,则在接收端本地,更新ssn_1和ssn_2为winstart,即ssn_1=4,ssn_2=4。
254.t1时刻,发送端在链路2上发送了一个ssn=6的bar帧,则接收端本地将ssn_2更新为ssn_2=6,并将winstart移动到min(ssn_1,ssn_2)=min(4,6)=4。
255.t2时刻,发送端在链路2上发送了一个sn=98的数据帧,由于其落在了记分板窗口之内,接收端在序列号空间中,将其对应的偏移量(98)置为1,表示正确接收且不被删除或丢弃,接收端不移动winstart。
256.t3时刻,发送端在链路1上发送了一个ssn=10的bar帧,接收端在本地将ssn_1更新为ssn_1=10,并将winstart移动到min(ssn_1,ssn_2)=min(10,6)=6。
257.t4时刻,发送端在链路1上发送了一个sn=107的数据帧,由于其落在了记分板窗口之外但位于序列号空间范围内的一半,所以接收端会将winstart移动到winend-winsize 1=107-100 1=8,以便能正确接收sn=107的数据帧,并将其在序列号空间中对应的偏移
量置为1。由于ssn_1=10,ssn_2=6,ssn_1>winstart,ssn_2<winstart,则接收端在本地,将ssn_2更新为winstart,即ssn_2=winstart=8;ssn_1=10保持不变。
258.应理解,将sn=107对应的偏移量置1和调整winstart的操作,不分时间先后顺序。
259.实施本实施例三,接收端在接收到的bar帧时,会根据该bar帧携带的ssn和本地维护或存储的各链路ssn中的最小值,对winstart进行调整;接收到某条链路发送的数据帧时,也可以根据数据帧对应的sn,对winstart进行调整,并且适应性的调整本地存储的ssn的值。实施本实施例三,可以保证多条链路发送的数据帧都被正确接收并不会被误删除,提升了数据传输的效率。
260.实施例四
261.实施例四中,将描述本技术实现如图13所示的链路聚合传输技术方案中,记分板窗口起始序列号(winstart)的移动规则二,以及在该winstart移动规则二基础上,对多条链路上发送的mpdu的处理方式。
262.详见图18,仍然以发送端的多链路设备通过两条链路link1和link2向接收端发送mpdus,且记分板窗口为winstart=4,winsize=100,winend=103为例。
263.首先addba请求/响应帧中ssn设置为0,ssn_1和ssn_2都初始化为0,假设link1和link2上都只采用块确认策略且之前发送端没有发送过bar帧,而且没有发送过sn大于99的mpdu(图18中示意为data)。
264.t0时刻,发送端在link1上向接收端发送的mpdu,其sn为103,满足数据帧的sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,则记分板右移以适应sn,且将记分板当前窗口起始序列号设置为winstart=sn-winsize 1=103-100 1=4,同时在序列号空间(sequence number space)中,在该sn对应的偏移量(即序列号为103)处,将对应的比特置1,表示sn=103对应的mpdu被成功接收。
265.与实施例二应用移动规则一不同,本实施例四中,应用移动规则二,此时,接收端本地存储的ssn_1和ssn_2不进行更新,仍然为ssn_1=0,ssn_2=0。
266.t1时刻,发送端在link2上发送bar帧,其中携带的ssn=6;接收端记两条链路对应的ssn的最小值为winstart_x,即winstart_x=min(ssn_1,ssn_2)=min(0,6)=0。接收端将接收bar帧前的winstart_y(即t0时刻的winstart)与winstart_x比较,取其中最大值作为当前的winstart,即winstart=max{winstart_x,winstart_y}=max{0,4}=4;
267.接收端将ssn_1=0,ssn_2=6,winstart=4存储在本地。
268.t2时刻,发送端在link1上发送sn=4的mpdu,满足winstart=sn<winend,因此,在该sn对应的偏移量(即序列号为4)处,将对应的比特置1,表示sn=4对应的mpdu被成功接收。
269.此时,接收端本地存储的仍然是ssn_1=0,ssn_2=6,winstart=4。
270.t3时刻,发送端在link1上发送bar,其中携带的ssn=10;接收端记两条链路对应的ssn的最小值为winstart_x,即winstart_x=min(ssn_1,ssn_2)=min(10,6)=6。接收端将接收bar帧前的winstart_y(即t2时刻的winstart)与winstart_x比较,取其中最大值作为当前的winstart,即winstart=max{winstart_x,winstart_y}=max{6,4}=6;
271.接收端将ssn_1=10,ssn_2=6,winstart=6存储在本地。
272.t4时刻,发送端在link 2上发送sn=107的mpdu,其满足sn落在当前的记分板窗口
外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,记分板右移以适应sn,且将记分板当前窗口起始序列号设置为winstart=sn-winsize 1=107-100 1=8;此时,sn=107落在调整后的记分板窗口中,将其对应的比特置1。
273.接收端将ssn_1=10,ssn_2=6,winstart=8存储在本地。
274.相比较而言,相同场景下,如果利用现有技术提供的记分板的起始序列号(winstart)的移动规则,如图16所示,在t1时刻,发送端在link2上发送bar帧,其中携带的ssn=6;接收端将winstart调整为该bar对应的ssn,即winstart=ssn_2=6。
275.在t2时刻,发送端在link1上发送sn=4的mpdu,由于sn=4<winstart,因此,该sn对应的mpdu即便是被接收端成功接收,也会被接收端丢弃或者删除。
276.在t3时刻,发送端在link1上发送bar,其中携带的ssn=10;接收端将winstart调整为调整为该bar对应的ssn,即winstart=ssn_1=10,对应的,winend=109。
277.在t4时刻,发送端在link 2上发送sn=107的mpdu,其满足sn落在当前的记分板窗口内,即winstart<sn<winend,将其对应的比特置1。
278.比较图18本技术提供的多链路传输方案和图16现有技术提供的多链路传输方案可知,利用本技术实施例提供的记分板窗口起始序列号(winstart)的移动规则,sn=4对应的mpdu被接收端成功接收但不会被丢弃或者删除,并且该记分板窗口起始序列号(winstart)的移动规则,并不要求发送端在发送bar帧时需要确保其他链路上没有待传的mpdu的序列号小于该bar帧中的ssn,更不需要修改现有的bar帧,因此,在保持原有的bar帧的结构上,极大程度节约了指示开销,并实现对多条链路的mpdu的正确接收。
279.图18仅为举例,应用本技术提供的记分板窗口起始序列号(winstart)的移动规则二,还可以解决诸如图9所示的问题,例如,发送端在link2上发送的bar携带的ssn_2=32时,在link1上发送的a-mpdu1中的sn为1~31的mpdus,假设对应的ssn_1=1,此时在接收端,将winstart调整为两者中的最小值,即winstart=mini(ssn_1,ssn_2)=mini(1,32)=1,因此接下来在link1上重传a-mpdu1中出错的mpdu时不会被接收端丢弃或删除。
280.实施本实施例四,接收端在接收到的bar帧时,会根据该bar帧携带的ssn和本地维护或存储的ssn中的最小值,以及接收bar帧之前的winstart,对winstart进行调整;接收到某条链路发送的数据帧时,也可以根据数据帧对应的sn,对winstart进行调整;从而避免对其他链路上待发送的mpdu(该mpdu的ssn小于bar帧携带的ssn)进行误操作。
281.实施例五
282.本实施例五将举例描述应用本技术提供的记分板窗口起始序列号(winstart)的移动规则二的多链路传输技术方案。
283.首先addba请求/响应帧中ssn设置为0,ssn_1和ssn_2都初始化为0,假设link1和link2上都只采用块确认策略且之前发送端没有发送过bar帧,而且没有发送过sn大于99的mpdu(图19中示意为data)。
284.t0时刻,发送端在link1上向接收端发送的mpdu,其sn为103,满足数据帧的sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,则记分板右移以适应sn,且将记分板当前窗口起始序列号设置为winstart=sn-winsize 1=103-100 1=4,同时在序列号空间(sequence number space)中,在该sn对应的偏移量(即序列号为103)处,将对应的比特置1,表示sn=103对应的mpdu被成功接收。
285.与实施例三应用移动规则一不同,本实施例五中,应用移动规则二,此时,接收端本地存储的ssn_1和ssn_2不进行更新,仍然为ssn_1=0,ssn_2=0。
286.t1时刻,发送端在link2上发送bar帧,其中携带的ssn=6;接收端记两条链路对应的ssn的最小值为winstart_x,即winstart_x=min(ssn_1,ssn_2)=min(0,6)=0。接收端将接收bar帧前的winstart_y(即t0时刻的winstart)与winstart_x比较,取其中最大值作为当前的winstart,即winstart=max{winstart_x,winstart_y}=max{0,4}=4;
287.接收端将ssn_1=0,ssn_2=6,winstart=4存储在本地。
288.t2时刻,发送端在link1上发送sn=98的mpdu,满足winstart=sn<winend,因此,在该sn对应的偏移量(即序列号为98)处,将对应的比特置1,表示sn=98对应的mpdu被成功接收。
289.此时,接收端本地存储的仍然是ssn_1=0,ssn_2=6,winstart=4。
290.t3时刻,发送端在link1上发送bar,其中携带的ssn=10;接收端记两条链路对应的ssn的最小值为winstart_x,即winstart_x=min(ssn_1,ssn_2)=min(10,6)=6。接收端将接收bar帧前的winstart_y(即t2时刻的winstart)与winstart_x比较,取其中最大值作为当前的winstart,即winstart=max{winstart_x,winstart_y}=max{6,4}=6;
291.接收端将ssn_1=10,ssn_2=6,winstart=6存储在本地。
292.t4时刻,发送端在link 2上发送sn=107的mpdu,其满足sn落在当前的记分板窗口外,但位于序列窗口空间范围的一半内,即winend<sn<winstart 2^11,记分板右移以适应sn,且将记分板当前窗口起始序列号设置为winstart=sn-winsize 1=107-100 1=8;此时,sn=107落在调整后的记分板窗口中,将其对应的比特置1。
293.接收端将ssn_1=10,ssn_2=6,winstart=8存储在本地。
294.实施本实施例五,接收端在接收到的bar帧时,会根据该bar帧携带的ssn和本地维护或存储的ssn中的最小值,以及接收bar帧之前的winstart,对winstart进行调整;接收到某条链路发送的数据帧时,也可以根据数据帧对应的sn,对winstart进行调整。实施本实施例五,可以保证多条链路发送的数据帧都被正确接收并不会被误删除,提升了数据传输的效率。
295.应理解,上述如图13所示的方法实施例,以及实施例一~实施例五,在多链路聚合下,接收端可能同时收到多个帧,可以是数据帧(mpdu),也可以是bar帧,还可以同时包括数据帧和bar帧,这时候接收端可以按照任意顺序一个一个处理。
296.综上所述,上述如图13所示的方法实施例,以及实施例一~实施例五,均不需要在bar帧中针对每条链路增加一个本链路传输的mpdu的sn点阵图指示信息,节约了信令开销;与现有技术二和现有技术三相比,不需要对发送端发送的bar帧中的ssn设置进行限制,不需要发送端多链路之间进行交互。
297.可选的,在上述实施例的基础上,本技术实施例还提出一种bar发送规则,不要求多链路之间进行交互,也不对现有的bar帧进行修改,而是在发送端在某条链路上发送bar时,将其携带的ssn设置为该链路上即将发送的mac协议数据单元(mac protocol data unit,mpdu)的序列号,或者大于该链路发送的mpdu但被发送端删除或丢弃的mpdu的序列号。
298.简言之,本技术实施例针对发送端发送bar规则如下:
299.每条聚合链路上发送的bar中携带的ssn可以设置为该link上下一个要被发送的mpdu的序列号或者一个大于被丢弃mpdu的序列号的一个值。
300.如此,通过发送bar来冲刷重排缓冲区,将超时重传的msdu所代表的空洞给冲刷掉,这样后继的完整msdu才不至于被无谓地挂起来以等待序列变得完整。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
301.以上所述的具体实施方式,对本技术的目的、技术方案和有益效果进行了进一步详细说明。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜