发明内容
本发明提供了一种ACK处理方法和基站,解决了使用TCP重发数据时误判丢包原因导致发送流量降低的问题。
一种ACK处理方法,采用混合自动重传请求(HARQ)重传机制,该方法包括:
在判断接收的ACK有效后,查询与所述ACK匹配的ACK控制块中存储该ACK的ACK重复次数,将ACK重复次数增加一次,所述ACK中携带需要重发的报文的序号;
如果ACK重复次数未达到预置的抑制门限,则丢弃所述ACK。
进一步的,上述ACK处理地方法还包括:
如果ACK重复次数达到预置的抵制门限,则向所述需要重发的报文的发送端转发所述ACK。
进一步的,在判断接收的ACK有效后,查询与所述ACK匹配的ACK控制块中存储该ACK的ACK重复次数的步骤之前,还包括:
设置ACK重复次数的抑制门限。
进一步的,在判断接收的ACK有效后,查询与所述ACK匹配的ACK控制块中存储的该ACK的ACK重复次数的步骤之前,还包括:
接收ACK,判断是否第一次接收到所述ACK;
如果不是第一次接收到所述ACK,则判断所述ACK是否包含请求释放位;
如果所述ACK中不包含请求释放位,则判断所述ACK中是否包含业务数据;
如果所述ACK不包含业务数据,则判断所述ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同;
如果所述ACK的序号与该ACK匹配的ACK控制块存储的序号相同,则认为所述ACK有效。
进一步的,所述接收ACK,判断是否第一次接收到所述ACK的步骤之后,还包括:
如果是第一次接收到所述ACK,则查询是否存在与该ACK匹配的ACK控制块;
在存在与该ACK匹配的ACK控制块时,将该ACK控制块存储ACK序号和ACK重复次数清零;或,
在不存在与该ACK匹配的ACK控制块时,为该ACK构造ACK控制块,该ACK控制块中保存ACK的序号,并将ACK重复次数置为0。
进一步的,所述判断所述ACK是否包含请求释放位的步骤之后,还包括:
如果所述ACK中包含请求释放位,查找与所述ACK匹配的ACK控制块,删除该控制块。
进一步的,所述判断所述ACK中是否包含业务数据的步骤之后,还包括:
如果所述ACK中包含业务数据,则向需要重发的报文的发送端转发所述ACK。
进一步的,所述判断所述ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同的步骤之后,还包括:
如果所述ACK的序号大于该ACK匹配的ACK控制块存储的序号,则用所述ACK的序号替换所述ACK控制块中存储的序号,且将所述ACK控制块中存储的ACK重复次数置为0;或,
如果所述ACK的序号小于该ACK匹配的ACK控制块存储的序号,则丢弃所述ACK。
本发明还提供了一种基站,该基站采用HARQ重传机制,所述基站包括:
查询模块,用于在判断接收的ACK有效后,查询与所述ACK匹配的ACK控制块中存储的ACK重复次数,所述ACK中携带需要重发的报文的序号;
请求处理模块,用于在ACK重复次数未达到预置的抑制门限时,则将ACK重复次数增加一次并丢弃所述ACK。
进一步的,所述请求处理模块,还用于在ACK重复次数达到预置的抵制门限时,向所述需要重发的报文的发送端转发所述ACK。
进一步的,上述基站还包括:
门限设置模块,用于设置ACK重复次数的抑制门限;
第一判断模块,用于接收ACK,判断是否第一次接收到所述ACK;
第二判断模块,用于在所述第一判断模块判断不是第一次接收到所述ACK时,判断所述ACK是否包含请求释放位;
第三判断模块,用于在所述第二判断模块判断所述ACK中不包含请求释放位时,判断所述ACK中是否包含业务数据;
第四判断模块,用于在所述第三判断模块判断所述ACK中不包含业务数据时,判断所述ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同;
结果分析模块,用于在所述ACK不包含业务数据时,认为所述ACK有效。
进一步的,所述请求处理模块,还用于在所述第一判断模块判断第一次接收到所述ACK时,查询是否存在与该ACK匹配的ACK控制块,并在存在与该ACK匹配的ACK控制块时,将该ACK控制块存储ACK序号和ACK重复次数清零,或在不存在与该ACK匹配的ACK控制块时,为该ACK构造ACK控制块,该ACK控制块中保存ACK的序号,并将ACK重复次数置为1;或,
在所述第二判断模块判断所述ACK中包含请求释放位时,查找与所述ACK匹配的ACK控制块,删除该控制块;或,
在所述第三判断模块判断所述ACK中包含业务数据时,向需要重发的报文的发送端转发所述ACK;或,
在所述第四判断模块判断ACK的序号大于该ACK匹配的ACK控制块存储的序号时,用所述ACK的序号替换所述ACK控制块中存储的序号,且将所述ACK控制块中存储的ACK重复次数置为0;或,在所述第四判断模块判断ACK的序号小于该ACK匹配的ACK控制块存储的序号时,丢弃所述ACK。
本发明的实施例提供了一种重发数据请求处理方法和基站,在采用混合HARQ重传机制的前提下,在基站接收到ACK时,首先判断ACK是否有效,并根据判断结果进行相应处理;在判断接收到的ACK有效时,查询与所述ACK匹配的ACK控制块中存储的接收该ACK的次数,与预置的抑制门限进行比较,在重复ACK次数未达到预置的抑制门限时,将重复ACK次数增加一次并丢弃所述ACK,在HARQ重传成功的时候向发送端屏蔽了报文的丢失,有效的减少了向发送端重复发送的ACK,避免发送端误判网络拥塞,解决了在带宽充裕的情况下发送流量降低的问题。
具体实施方式
使用TCP协议在传统的基站信号质量不好时传输报文,如果在无线网络链路TCP报文1号丢失,那么当第二第三包到达接收端后,接收端会重复产生对报文1号的ACK,重复ACK被传送到发送端,发送端发现报文丢失,重传报文1号,可靠传输得以保障,但同时发送端由于接收到了多次同样的ACK(ACK携带的序号均为1号),认为网络拥塞,将发送窗口减半。
也可以采用HARQ实现报文的重传,但若单纯采用HARQ,基站在发送了TCP报文2号和3号之后HARQ仍然没有收到对报文1号的确认,在无线网络物理层重传丢失的TCP报文1号。但在这之前报文2号和报文3号已经被送到接收端,接收端为每个先序到达的报文都产生一个请求报文1号的重复ACK发往发送端,发送端因此重传报文1号并将发送窗口减半,而此时接收端已经通过HARQ的重传得到了报文1号,再收到发送端重传的报文1号便认为是乱序报文,又产生重复的ACK,可能使TCP传输性能进一步恶化。
为了解决上述问题,本发明的实施例提供了一种ACK处理方法,本发明的实施例中,ACK具体为报文的ACK,使用本发明实施例提供的ACK处理方法完成报文重发的过程如图1所示,包括:
步骤101、在基站为各个已经建立的TCP连接维护一个TCP重复ACK控制块;
本发明实施例中,ACK具体为ACK,在ACK中携带需要重发的报文序号。
本步骤中,为各个已经建立的TCP连接构造一个TCP重复ACK控制块,TCP连接与ACK控制块通过报文收发端的IP及端口相匹配,在与TCP连接相匹配的ACK控制块中存储有该TCP连接上最后发送的ACK及该ACK重复次数。
ACK控制块中包括:
1、TCP连接的源IP(dwSrcIp),源端口(wSrcport),目的IP(dwDstIp),目的端口(wDstport);
2、最近的重复ACK序号和该ACK所重复的次数(即ACK重复次数):dwLatestAck;dwDulAckTimes;
3、两个标志位:abyFlag,用于指示是否启动该控制块;ucRcvAckFlag,用于说明是否在一个定时器时间内收到任何ACK,以及FIN报文丢失的断链检测。
多个ACK控制块构成ACK链表。
步骤102、设置ACK重复次数的抑制门限;
本步骤中,设置ACK重复次数的抑制门限,以保证在基站通过HARQ重传机制完成报文重传之前,请求重发该报文的ACK不会发送到该报文的发送端。
例如,将抑制门限设置为3次,HARQ的响应时长为15毫秒,这期间空口最多传递3包先序报文给接收端(每祯5毫秒),接收端最多产生3包重复的ACK报文,这个就可以保证在HARQ重传机制的响应时长内不会有ACK转发到发送端。
步骤103、基站判断是否第一次接收到ACK;
本步骤中,基站在接收到ACK时,首先检测接收到的ACK的包头,如果包头中包含SYN标志,则表明该报文对应的连接为新建立的TCP连接,基站是第一次接收到该ACK,根据该ACK的源、目的IP,源、目的端口查询抑制重复ACK链表,如果没有找到,则为这个新建立的连接创建新的ACK控制块,将该ACK控制块加入ACK链表。如果查找到则将该ACK控制块中存储的最新ACK序号和ACK重复次数清零。该报文正常发送。
如果不是第一次接收到该ACK,则进入步骤104。
步骤104、基站判断所述ACK是否包含请求释放位;
本发明实施例中,所述请求释放位具体为FIN。
本步骤中,如果报文中包含FIN位,则该TCP连接将被拆除,查找抑制重复ACK链表,将相关的重复ACK控制块释放掉。该报文正常发送。
如果报文中不包含FIN位,则进入步骤105。
步骤105、基站判断ACK中是否包含业务数据;
本发明实施例中,业务数据具体为TCP数据。
本步骤中,如果报文中包含TCP数据,报文正常发送;否则,进入步骤106。
步骤106、基站判断所述ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同;
本步骤中,基站根据ACK中的源IP,目的IP,源端口,目的端口,遍历重复ACK控制块链表查找相应的重复ACK控制块,检测ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同。
如果所述ACK的序号大于该ACK匹配的ACK控制块存储的序号,则用所述ACK的序号替换所述ACK控制块中存储的序号,且将所述ACK控制块中存储的ACK重复次数置为0;或,
如果所述ACK的序号小于该ACK匹配的ACK控制块存储的序号,则丢弃所述ACK。
在ACK的序号等于该ACK匹配的ACK控制块存储的序号时,确定重复接收到了这一ACK,认为该ACK有效,进入步骤107。
步骤107、判断ACK重复次数是否达到预置的抑制门限;
步骤108、如果ACK重复次数未达到预置的抑制门限,则将重复ACK次数增加一次并丢弃所述ACK;
本步骤中,修改控制块中存储的ACK重复次数,将接收到ACK的次数增加一次。
然后,将ACK重复次数与预置的抑制门限进行比较,以决定是否丢弃该ACK。
本发明实施例中,与HARQ配合完成报文的重发,此时,可以将重复ACK次数设置为3(以保证在HARQ作用的时间范围内不将ACK转发到发送端),在重复ACK次数小于3时丢弃该ACK。
可选的,当重复ACK次数大于3时也可以主动发送额外的两次该重复ACK报文(填补之前丢弃的报文)以使TCP快速重传更快被触发。
可选的,每次根据需要过滤的报文检索到重复ACK控制块的时候,将控制块中的收到ACK标志置1,如果定时器超时该标志为1则将该标志清0,如果定时器超时该标志为0则释放对应得重复ACK控制块。以此来防止FIN报文丢失,或者TCP异常断链造成的重复ACK控制块泄露。
步骤109、如果ACK重复次数达到预置的抵制门限,则向所述需要重发的报文的发送端转发所述ACK;
ACK重复次数大于等于3,说明HARQ重传失败,这时,ACK正常转发给发送端。
本发明的实施例还提供了一种基站,该基站的结构如图2所示,包括:
查询模块201,用于在判断接收的ACK有效后,查询与所述ACK匹配的ACK控制块中存储的ACK重复次数,所述ACK中携带需要重发的报文的序号;
请求处理模块202,用于在ACK重复次数未达到预置的抑制门限时,则将ACK重复次数增加一次并丢弃所述ACK。
进一步的,所述请求处理模块202,还用于在ACK重复次数达到预置的抵制门限时,向所述需要重发的报文的发送端转发所述ACK。
进一步的,上述基站如图3所示,还包括:
门限设置模块203,用于设置ACK重复次数的抑制门限;
第一判断模块204,用于接收ACK,判断是否第一次接收到所述ACK;
第二判断模块205,用于在所述第一判断模块判断不是第一次接收到所述ACK时,判断所述ACK是否包含请求释放位;
第三判断模块206,用于在所述第二判断模块判断所述ACK中不包含请求释放位时,判断所述ACK中是否包含业务数据;
第四判断模块207,用于在所述第三判断模块判断所述ACK中不包含业务数据时,判断所述ACK的序号与该ACK匹配的ACK控制块存储的序号是否相同;
结果分析模块208,用于在所述ACK不包含业务数据时,认为所述ACK有效。
进一步的,所述请求处理模块202,还用于在所述第一判断模块204判断第一次接收到所述ACK时,查询是否存在与该ACK匹配的ACK控制块,并在存在与该ACK匹配的ACK控制块时,将该ACK控制块存储ACK序号和ACK重复次数清零,或在不存在与该ACK匹配的ACK控制块时,为该ACK构造ACK控制块,该ACK控制块中保存ACK的序号,并将ACK重复次数置为0;或,
在所述第二判断模块205判断所述ACK中包含请求释放位时,查找与所述ACK匹配的ACK控制块,删除该控制块;或,
在所述第三判断模块206判断所述ACK中包含业务数据时,向需要重发的报文的发送端转发所述ACK;或,
在所述第四判断模块207判断ACK的序号大于该ACK匹配的ACK控制块存储的序号时,用所述ACK的序号替换所述ACK控制块中存储的序号,且将所述ACK控制块中存储的ACK重复次数数置为0;或,
在所述第四判断模块207判断ACK的序号小于该ACK匹配的ACK控制块存储的序号时,丢弃所述ACK。
上述基站,可以与本发明的实施例提供的一种ACK处理方法相结合,在采用混合HARQ重传机制的前提下,在基站接收到ACK时,首先判断ACK是否有效,并根据判断结果进行相应处理;在判断接收到的ACK有效时,查询与所述ACK匹配的ACK控制块中存储的接收该ACK的次数,与预置的抑制门限进行比较,在重复ACK次数未达到预置的抑制门限时,将重复ACK次数增加一次并丢弃所述ACK,在保证使用HARQ重传机制重新发送ACK对应的报文的同时,有效的减少了向发送端重复发送的ACK,避免发送端误判网络拥塞,解决了在带宽充裕的情况下发送流量降低的问题。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。