一种报文处理方法和装置的制造方法_2

文档序号:9582404阅读:来源:国知局
本AP的缓存队列中是否存在下行消息,如果是,通过与AC建立的长连接不轮询的HTTP连接向AC发送查询报文;否则,丢弃该报文,不进行处理。
[0048]当该AP组中的各AP的缓存队列全为空时,该AC不向中间AP发送提醒消息。
[0049]由于AP组中的各AP的缓存队列全为空时,不向中间AP发送提醒消息,因此,中间AP在一定时间内可能接收不到提醒消息。当中间AP在第一预设时间到时,且未接收到该AC发送的提醒消息时,向该AP组中其他AP发送空的提醒消息,以保护中间AP。
[0050]该AP组中中间AP之外的任一 AP在第二预设时间到时,未接收到中间AP发送的提醒消息,向AC发送自身是否切换为中间AP的请求报文。
[0051]该AC在接收到任一 AP发送的自身是否切换为中间AP的请求报文时,确定该AP组中当前的中间AP是否在线,如果是,通知该AP不进行中间AP的切换;否则,通知该AP切换为该AP组的中间AP。
[0052]该AP接收到切换为中间AP的通知时,自身切换为中间AP,在第一预设时间到时,未接收到AC发送的提醒消息,向该AP组中其他AP发送空的提醒消息。
[0053]该AP接收到AC发送的不切换为中间AP的通知时,继续等待接收提醒消息,若再次等待第二预设时间,还未接收到提醒消息时,再次向AC发送自身是否切换为中间AP的请求报文。
[0054]步骤102,该AC接收到任一 AP发送的查询报文时,将该AP的缓存队列中的下行消息发送给该AP。
[0055]本步骤具体实现时,具体如下:
[0056]该AC接收到任一 AP发送的查询报文时,若该AP的缓存队列中存在不止一条下行消息,在将其中一条下行消息发送给该AP时,携带缓存队列中还存在下行消息的标识,使该AP再次向本AC发送查询报文,直到发送该缓存队列中最后一条下行消息时,不再携带还存在下行消息的标识。
[0057]下面结合附图,详细说明AP如何实现报文处理的。
[0058]参见图2,图2为本申请具体实施例中AP进行报文处理方法流程示意图。具体步骤为:
[0059]步骤201,AP作为AP组中的中间AP,在接收到AC发送的提醒消息时,将该提醒消息发送给该AP组中的其他AP ;并当根据该提醒消息确定自身对应的缓存队列不为空时,向所述AC发送查询报文,并接收AC发送的下行消息。
[0060]AC会为每个AP分配缓存队列,因此,AP根据提醒消息确定自身对应的缓存队列是否为空,即确定AC为自身分配的缓存队列中是否存在下行消息。
[0061]中间AP将提醒消息发送给该AP组中其他AP时,以组播的形式发送给与其在同一局域网中的其他AP ;
[0062]中间AP通过与该AC建立的长连接长轮询的HTTP连接接收该AC发送的提醒消息。
[0063]步骤202,该AP作为该AP组中的中间AP之外的AP,在接收到中间AP发送的提醒消息,且根据该提醒消息确定自身对应的缓存队列不为空时,向所述AC发送查询报文,并接收AC发送的下行消息。
[0064]步骤201和步骤202的执行不存在先后顺序的关系,是处于不同角色的AP的处理流程。
[0065]AP组中的每一个AP通过与该AC建立的长连接不轮询的HTTP连接发送查询报文,并接收下行消息。
[0066]当该AP接收到AC发送的下行消息中,携带缓存队列中还存在下行消息的标识时,再次向该AC发送查询报文,直到接收到的下行消息中不携带缓存队列中还存在下行消息的标识时,不再向该AC发送查询报文。
[0067]在具体实现时,可以在该提醒消息中携带上缓存队列不为空的AP标识来实现,也可以使用在提醒消息中携带状态位图来通知各AP谁的缓存队列中存在下行消息,谁的缓存队列为空。
[0068]如果使用状态位图来通知各AP,则需要AC先将各AP的状态在状态位图中的位置通过中间AP通知各AP。也可以根据AP的标识与各AP约定一个在位图中对应的位置。
[0069]该AC向该AP组中的中间AP发送提醒消息时,在该提醒消息中携带状态位图,在该状态位图中各AP的状态的位置上标识该AP的缓存队列是否为空,如缓存队列为空用1标识,缓存队列不为空用0标识。
[0070]AP组中的各AP,包括中间AP在接收到该提醒消息时,根据自身在状态位图中的位置获知自身的缓存队列是否为空,当自身的缓存队列不为空时,向AC发送查询报文;当自身的缓存队列为空时,直接丢弃该提醒报文,不向AC发送查询报文。
[0071]由于AC在确定该AP组中所有AP的缓存队列都为空时,不向中间AP发送提醒消息,因此,中间AP可能长时间接收不到提醒消息。
[0072]中间AP在第一预设时间到时,且未接收到该AC发送的提醒消息时,向该AP组中其他AP发送空的提醒消息,以保护自身在该AP组中作为中间AP的角色。
[0073]当中间AP故障,或中间AP与其他AP之间的链路故障时,作为AP组中的中间AP之外的AP,不能接收到中间AP发送的提醒消息。
[0074]作为AP组中的中间AP之外的AP在第二预设时间到时,且未接收到中间AP发送的提醒消息时,向该AC发送自身是否切换为中间AP的请求报文,当接收到该AC确定中间AP不在线而通知该AP切换为中间AP时,切换为中间AP,进行提醒消息的收发;当接收到AC确定中间AP在线而通知该AP不切换为中间AP时,继续等待提醒消息的接收。
[0075]通过本申请提供的技术方案,AC和AP间的互联网消息数最小值为:上行消息数*AP总数+下行消息数*AP总数+下行消息数*AP组总数,即每个提醒消息都涵盖了 AP组内所有AP的提醒,这样就减少了(N-1)次查询消息;AC和AP间的互联网消息数最大值为:(上行消息数+2*下行消息数)*AP总数,即每个提醒消息都只包含一个AP的提醒,这样等价于每个AP发送一次查询。
[0076]而现有实现,即在AC和每个AP之间建立两条HTTP连接的实现方式时,AC和AP之间的互联网消息数为:(上行消息数+2*下行消息数)*AP总数。
[0077]由于,不可能每次AC在发提醒消息时,都只有一个AP的缓存队列不为空,因此,本申请的具体实现方式与现有实现方式相比,本申请大大减少了 AC和AP间的互联网消息数。
[0078]并且AC只与中间AP建立长连接长轮询的HTTP连接,因此,AC维护的HTTP连接数也大大减少。
[0079]下面结合附图,详细说明AC与AP的交互过程。参见图3,图3为本申请CAPWAPover HTTP网络组网示意图。
[0080]图3中以AC上配置两个AP组,分别为AP组1和AP组2,其中,AP组1中包括AP1、AP2和AP3,AP1、AP2和AP3为同一局域网中的AP ;AP组2中包括AP4和AP5,AP4和AP5为同一局域网中的AP,AP组1中的AP和AP组2中的AP不为同一局域网中的AP。
[0081 ] 下面以AP组1中的AP与AC通信为例。AC与AP1、AP2和AP3分别建立一条长连接不轮询的HTTP连接。
[0082]AC为每个AP分配一个缓存队列,用于缓存下行消息,缓存队列与AP —一对应;当以位图列表形式显示各AP对应的缓存队列的提醒状态时,确定每一个AP的提醒位图中的位置,用1个比特位来表示每个AP的提醒状态的位置以及提醒状态;并且将各AP在位图中的位置通知给各AP,在具体通知时,可以如下文的提醒消息一样处理,先将该通知发送给中间AP,再由中间AP以组播的形式发送给其他AP,使各AP获知自身在位图中的位置。
[0083]在具体实现时,还可以按AP标识为各AP排列在位图中的位置,使各AP自动获得在位图中的位置,即AP和AC约定了 AP在位图中的位置。
[0084]AP组1中有三个AP,则使用3个比特位表示,并且用1表示该AP的缓存队列中存在下行消息,用0表示该AP的缓存队列中不存在下行消息,即为空。
[0085]当第一个比特位用于对API标识,第二个比特位用于对AP2标识,第三个比特位用于对AP3标识,如001,则表示API和AP2的缓存队列中不存在下行消息,即都为空;AP3的缓存队列中存在下行消息。
[0086]AC与该AP组中第一个上线的AP建立长连接长轮询的HTTP连接,第一个上线的AP作为该AP组的中间AP,即用来中转消息的AP。
[0087]当AP组1中存在缓存队列不为空的AP时,AC通过与API建立的长连接长轮询HTTP连接发送提醒消息,并在该提醒消息中携带各AP的提醒状态,即携带位图标识各AP的缓存队列中是否缓存下行消息,如携带的位图为001。
[0088]当API接收到该提醒消息时,在该AP组内组播该提醒消息,即在本地局域网中组播该提醒消息。
[0089]接收到该提醒消息的各AP,包括AP 1、AP2和AP3,根据本地存储的自身在位图中的位置,根据该位置上的比特位的值确定本AP的缓存队列中是否存在下行消息;当对应比特位上的值为1时,确定缓存中存在下行消息;当对应比特位上的值为0时,确定缓存中不存在下行消息。
[0090]由于位图为001,因此,只有AP3对应的缓存队列中存在下行消息。API和AP2不做任何处理;AP3通过与AC建立的长连接不轮询的HTTP连接发送请求缓存查询报文,AC利用该缓存请求报文将缓存队列中的消息
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1