发明内容
本发明提供一种无线局域网中AC与AP通信的方法及系统,用以解决AC与AP网络环境中,存在NAT设备或防火墙,导致AC无法直接访问AP的非CAPWAP服务的问题。
为实现上述目的,本发明的主要目的在于提供一种无线局域网中AC与AP通信的方法,应用在AP端与AC端之间部署有NAT设备或者防火墙的系统中,具体包括:
AC的任一客户端模块通过AC代理模块,发起AC代理访问请求,AC代理模块接收到所述AC代理访问请求后,创建一个AC代理实例;
所述AC代理实例通过AC的CAPWAP协议交互模块向AP发送AC-AP代理访问请求;
AP的CAPWAP协议交互模块接收到所述AC-AP代理访问请求时,将其转发给AP代理模块;
AP代理模块根据接收到所述AC-AP代理访问请求,创建AP代理实例;
所述AP代理实例创建成功后,通过AP的CAPWAP协议交互模块,发送AC-AP代理访问请求响应消息给AC;
AC的CAPWAP协议交互模块将收到的AP返回的AC-AP代理访问请求响应消息发送给AC代理模块,所述AC代理模块根据AC-AP代理访问请求响应消息内容,向所述客户端模块反馈所述AC代理访问请求的响应结果;
进一步地,所述AC代理模块接收到所述AC代理访问请求,创建一个AC代理实例,具体包括:
创建AC代理服务连接;
创建AC-AP代理服务连接;
创建AC代理实例任务;和/或
所述AP代理模块根据接收到所述AC-AP代理访问请求,创建AP代理实例,具体包括:
创建访问AP上服务端模块的AP代理连接;
创建与AC上AC代理模块通信的AC-AP代理连接;
创建AP代理实例任务。
进一步地,所述AC代理实例通过AC的CAPWAP协议交互模块向AP发送AC-AP代理访问请求,具体包括:
AC代理实例根据从AC上的AP列表中查找到的AP信息,发送AC-AP代理访问请求给AC的CAPWAP协议交互模块;
AC的CAPWAP协议交互模块将接收到的AC-AP代理访问请求发送给指定的AP;
AC代理实例任务等待AP的CAPWAP协议交互模块返回AC-AP代理访问请求响应消息。
进一步地,所述AC代理模块根据AC-AP代理访问请求响应消息内容,向所述客户端模块反馈所述AC代理访问请求的响应结果,具体包括:
如果所述AC代理访问请求基于非TCP协议,所述AC代理实例则向所述客户端模块直接返回AC-AP代理服务连接的地址和AC代理实例ID;所述客户端模块向AC代理模块请求地址和端口,所述客户端模块与返回的AC代理模块本地地址建立AC代理连接;
如果所述AC代理访问请求基于TCP协议,所述AC代理实例等待AP代理模块向AC-AP代理服务连接建立AC-AP代理连接后,再向所述客户端模块返回AC-AP代理服务连接的地址和AC代理实例ID;所述客户端模块向AC代理模块请求地址和端口,所述客户端模块与返回的AC代理模块本地地址建立AC代理连接。
进一步地,所述方法还包括如下步骤:
AP代理实例在AP代理连接与AC-AP代理连接之间转发业务数据;AC代理实例在AC-AP代理连接与AC代理连接之间转发数据。
本发明的另一目的还在于提供无线局域网中AC与AP通信的系统,包括AC和AP,所述AC包含客户端模块、AC代理模块和CAPWAP协议交互模块,所述AP包含CAPWAP协议交互模块、AP代理模块和服务端模块。
所述客户端模块,用于通过AC代理模块提供的接口,发起AC代理访问请求;
所述AC代理模块,用于接收所述客户端模块发起的AC代理访问请求,创建AC代理实例;并用于根据AC-AP代理访问请求响应消息内容,向所述客户端模块反馈所述AC代理访问请求的响应结果;
所述AC的CAPWAP协议交互模块,用于接收AC代理实例发送的AC-AP代理访问请求,并发送给AP的CAPWAP协议交互模块;并用于接收来自AP的CAPWAP协议交互模块发送的AC-AP代理访问请求响应消息;
所述AP的CAPWAP协议交互模块,用于接收AC的CAPWAP协议交互模块发送的AC-AP代理访问请求并发送给AP代理模块;
所述AP代理模块,用于接收来自AP的CAPWAP协议交互模块发送的AC-AP代理访问请求,创建AP代理实例;并用于在所述AP代理实例创建成功后,通过AP的CAPWAP协议交互模块,发送AC-AP代理访问请求响应消息给AC;
所述服务端模块,用于为AC的客户端提供访问服务。
进一步地,所述AC代理模块,具体用于:
创建AC代理服务连接;
创建AC-AP代理服务连接;
创建AC代理实例任务。
进一步地,所述AC代理模块接收到AC-AP代理访问请求响应消息后,所述AC代理模块创建的AC代理实例任务,具体用于:
如果所述AC代理访问请求基于非TCP协议,则向所述客户端模块直接返回AC-AP代理服务连接的地址和AC代理实例ID;
如果所述AC代理访问请求基于TCP协议,等待AP代理模块向AC-AP代理服务连接建立AC-AP代理连接后,再向所述客户端模块返回AC-AP代理服务连接的地址和AC代理实例ID;
所述客户端模块,还用于向AC代理模块请求地址和端口,所述客户端模块与返回的AC代理模块本地地址建立AC代理连接。
进一步地,所述AP代理模块,具体用于:
创建访问AP上服务端模块的AP代理连接;
创建与AC上AC代理模块通信的AC-AP代理连接;
创建AP代理实例任务。
进一步地,所述AC-AP代理访问请求内容包括:AC代理实例ID、请求服务的协议及端口、AC-AP代理服务连接的地址端口信息;
所述AC-AP代理访问请求响应内容包括:AC代理实例ID、AP代理实例ID、请求服务的协议及端口,代理访问请求响应消息显示结果。
本发明的有益效果是,实现了AC上的客户端可以直接访问AP上的服务,这些服务可以是TELNET、SSH等维护和管理AP的服务,也可以是与业务相关的服务。对存在于NAT设备或防火墙之后的AP,大大简化了维护工作。
具体实施方式
为使本发明的技术方案更加清楚明白,现结合附图对本发明做进一步详细说明:
如图2所示,本发明实施例提供了一种无线局域网中AC与AP通信的方法,该方法的具体操作流程为:
S201,AC的任一客户端模块通过AC代理模块,发起AC代理访问请求;AC代理模块接收到所述AC代理访问请求后,创建一个AC代理实例。
本步骤中,AC上的任一客户端模块自动/用户手动通过AC代理模块提供的接口,发起AC代理访问请求,AC代理访问请求的消息内容通常包括AP标识、请求服务的协议(如TCP、UDP等)、请求服务的端口等。
AC代理模块接收到AC代理访问请求,根据AC代理访问请求提供的AP标识,从AC上的AP列表中查找该AP标识,如果查找到该AP标识对应的AP,判断AC与AP之间是否存在NAT设备或防火墙。如果不存在NAT设备或防火墙,则直接返回AP的IP地址和端口。AC代理访问请求响应的内容包括AP标识、请求服务的地址端口信息、代理实例ID。如果AC代理模块判断出AC与AP之间存在NAT设备或防火墙,则AC代理模块创建一个AC代理实例,同时绑定AC的本地地址和公网地址,并等待AC代理访问请求响应消息。其中,AC代理实例的创建具体包括:
创建AC代理服务连接;
创建AC-AP代理服务连接;
创建AC代理实例任务,用于将从AC代理连接接收的客户端模块的数据,发送给AC-AP代理连接;并将从AC-AP代理连接接收的来自服务端模块的数据,发送给AC代理连接。
S202,所述AC代理实例通过AC的CAPWAP协议交互模块向AP发送AC-AP代理访问请求。
AC代理实例通过AC的CAPWAP协议交互模块向AP发送AC-AP代理访问请求,并等待对应的响应消息。后续AC代理实例根据AP返回的响应消息返回AC代理访问请求响应消息给客户端模块。其中,AC-AP代理访问请求的消息内容包括AC代理实例ID、请求服务的协议、端口信息、AC-AP代理连接的地址端口信息等。本步骤的具体处理流程为:
AC代理实例任务根据从AC上的AP列表中查找到的AP信息,发送代理访问请求给AC的CAPWAP协议交互模块;AC的CAPWAP协议交互模块根据接收到的代理访问请求,组装成CAPWAP协议报文,通过CAPWAP协议,发送AC-AP代理访问请求给指定的AP。
在本步骤中,AC代理实例任务等待AP返回AC-AP代理访问请求响应消息,如果返回的请求响应消息显示为失败,则返回给客户端模块AC代理访问请求失败响应;如果返回的请求响应消息显示为成功,则返回给客户端模块AC代理成功响应,AC代理服务请求响应消息的内容包括AP标识、AC代理服务地址、AC代理服务端口、AC代理实例ID。
其中,如果代理访问请求的协议为非TCP协议,则直接返回AC-AP代理服务连接的地址和AC代理实例ID给客户端模块;如果代理访问请求的协议为TCP协议,则AC代理实例等待AP代理模块向AC-AP代理服务连接建立AC-AP代理连接后,再返回AC-AP代理服务连接的地址和AC代理实例ID给客户端模块。
例如:
AC的地址为1.1.1.1,AP的标识为MAC地址0001.0002.0003,创建的AC代理连接地址为127.0.0.1,10000,AC-AP代理连接地址为1.1.1.1,10000,AC代理实例的ID为1000,返回内容:0001.0002.0003、127.0.0.1,10000、1000给请求者。
客户端模块根据AC代理服务请求响应消息返回的AC代理模块的本地地址和端口,创建AC代理连接。
S203,AP的CAPWAP协议交互模块接收到AC-AP代理访问请求时,将其转发给AP代理模块。
S204,AP代理模块根据接收到AC-AP代理访问请求,创建AP代理实例。
AP代理实例的创建包含:
创建访问AP上服务端模块的AP代理连接,如为TCP协议的代理,则建立向服务端模块的TCP连接;
创建与AC的AC代理模块通信的AC-AP代理连接,如为TCP协议的代理,则建立TCP连接;
创建AP代理实例任务,用于将从AP代理连接接收服务端模块的数据,发送给AC-AP代理连接;并将从AC-AP代理连接接收的来自客户端模块的数据,发送给AP代理连接。
S205,AP代理实例创建成功后,通过AP的CAPWAP协议交互模块,发送AC-AP代理访问请求响应消息给AC。其中,AC-AP代理访问请求响应消息的内容包括AC代理实例ID、AP代理实例ID、请求的协议、请求的端口、代理访问请求响应消息显示结果等。
S206,AC的CAPWAP协议交互模块将收到的AP返回的AC-AP代理访问请求响应消息发送给所述AC代理模块,所述AC代理模块根据AC-AP代理访问请求响应消息内容,向所述客户端模块反馈所述AC代理访问请求的响应结果。
本步骤的具体实现,在步骤S202已进行阐述,此处不再赘述。
如图3所示,为本发明实施例AC与AP通信的数据交互流程图。代理连接建立好后,AP代理实例在AP代理连接与AC-AP代理连接之间转发业务数据;AC代理实例在AC-AP代理连接与AC代理连接之间转发数据。
通过上述方法,AC上的客户端可以直接访问AP上的服务,这些服务可以是TELNET、SSH等维护和管理AP的服务,也可以是与业务相关的服务。对存在于NAT设备或防火墙之后的AP,大大简化了维护工作。
如图4所示,为本发明实施例提供的一种无线局域网中AC与AP通信的系统示意图。该系统包括AC和AP,其中AC包含至少一个客户端模块101、AC代理模块102、CAPWAP协议交互模块103;AP包含CAPWAP协议交互模块203、AP代理模块202、至少一个服务端模块201,
在AC访问AP之前,AC的AC代理模块102、CAPWAP协议交互模块103和AP的AP代理模块202和CAPWAP协议交互模块203需要先初始化,其初始化顺序为:
首先,初始化/启动CAPWAP协议交互模块103和203;
其次,初始化/启动代理模块102和202;
再次,初始化/启动客户端模块101/服务端模块201;
最后,AP通过CAPWAP协议,在AC上上线,AC将该AP的信息加入到AC上的AP列表中。如果AP没有在AC上上线,则AC不能够通过本系统直接访问AP。
客户端模块101,用于通过AC代理模块102提供的接口,发起AC代理访问请求。AC上某一个客户端模块101需要访问AP上的某一服务端模块201,通过自动/用户手动通过AC代理模块102提供的接口,发起AC代理访问请求,AC代理访问请求消息的内容包括:AP标识、请求服务的协议(TCP、UDP等)、请求服务的端口。
例如访问AP0001.002.003的TELNET服务,AP使用其MAC地址作为标识,其请求消息包括:0001.0002.0003、TCP、23。
AC代理模块102,用于接收客户端模块101发起的AC代理访问请求,创建AC代理实例;并用于根据AC-AP代理访问请求响应消息内容,向所述客户端模块101反馈所述AC代理访问请求的响应结果。
AC代理模块102,在接收到AC代理访问请求,根据AC代理访问请求提供的AP标识,从AC上的AP列表中查找该AP标识,如果查找到该AP标识对应的AP,判断AC与AP之间是否存在NAT设备或防火墙。如果不存在NAT设备或防火墙,则直接返回AP的IP地址和端口。AC代理访问请求响应消息内容包括AP标识、请求服务的地址端口信息、代理实例ID等。
例如:
AP的MAC地址为0001.0002.0003,IP地址为1.2.3.4,直接返回AP的地址的AP代理访问请求响应消息内容包括:0001.0002.0003、1.2.3.4、23、0,代理实例ID为0表示没有创建AC代理实例。
如果AC代理模块102判断出AC与AP之间存在NAT设备或防火墙,则AC代理模块102创建一个AC代理实例,同时绑定AC的本地地址和公网地址,并等待AC代理访问请求响应消息。其中,AC代理实例具体包含:
创建AC代理服务连接;
创建AC-AP代理服务连接;
创建AC代理实例任务。
AC代理模块102创建的AC代理实例通过AC的CAPWAP协议交互模块103向AP发送AC-AP代理访问请求,并等待对应的响应消息,然后根据AP返回的响应消息返回AC代理访问请求响应消息给客户端模块101。其中,AC-AP代理访问请求消息的内容包括AC代理实例ID、请求服务的协议、端口信息,AC-AP代理连接的地址端口信息。
AC代理实例任务根据从AC上的AP列表中查找到的AP信息,发送代理访问请求给AC的CAPWAP协议交互模块103。
AC代理实例任务等待AP返回AC-AP代理访问请求响应消息,如果返回的请求响应消息显示为失败,则返回给客户端模块101AC代理访问请求失败响应。如果返回的请求响应消息显示为成功,则返回给客户端模块101AC代理成功响应,AC代理服务请求响应消息的内容包括AP标识、AC代理服务地址、AC代理服务端口、AC代理实例ID。其中,如果代理访问请求的协议为非TCP协议,则直接返回AC-AP代理连接的地址和AC代理实例ID给客户端模块101;如果代理访问请求的协议为TCP协议,则AC代理实例等待AP代理模块202向AC-AP代理服务连接建立AC-AP代理连接后,再返回AC-AP代理连接的地址和AC代理实例ID给客户端模块101。
例如:
AC的地址为1.1.1.1,AP的MAC地址为0001.0002.0003,创建的AC代理连接地址为:127.0.0.1,10000:,AC-AP代理连接地址为1.1.1.1,10000,AC代理实例的ID为1000,返回内容0001.0002.0003、127.0.0.1,10000、1000给请求者。
客户端模块101根据AC代理服务请求响应消息返回的AC代理模块102的本地地址和端口,创建AC代理连接。
AC的CAPWAP协议交互模块103,根据接收到的代理访问请求,组装成CAPWAP协议报文,通过CAPWAP协议,发送AC-AP代理访问请求给指定的AP。
AP的CAPWAP协议交互模块203,用于接收AC-AP代理访问请求,将其转发给AP代理模块202。
AP代理模块202,用于根据接收到AC-AP代理访问请求,创建AP代理实例。AP代理实例具体包含:
创建访问服务端模块的AP代理连接,如为TCP协议的代理,则建立向服务端模块201的TCP连接;
创建与AC上的AC代理模块102通信的AC-AP代理连接,如为TCP协议的代理,则建立TCP连接;
创建AP代理实例任务。
AP代理实例创建成功后,通过AP的CAPWAP协议交互模块203,发送AC-AP代理访问请求响应消息给AC,其中,AC-AP代理访问请求响应消息的内容为:AC代理实例ID,AP代理实例ID,请求的协议,请求的端口,代理访问请求响应消息显示结果。
代理连接建立好后,AP代理实例在AP代理连接与AC-AP代理连接之间转发业务数据;AC代理实例在AC-AP代理连接与AC代理连接之间转发数据。
本发明实施例实现了AC上的客户端可以直接访问AP上的服务,对存在于NAT设备或防火墙之后的AP,大大简化了维护工作。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。因此本发明的保护范围应以所述权利要求的保护范围为准。