掌桥专利:专业的专利平台
掌桥专利
首页

一种OpenWrt路由器有线用户流量获取方法及系统

文献发布时间:2024-04-18 20:02:40


一种OpenWrt路由器有线用户流量获取方法及系统

技术领域

本发明涉及OpenWrt路由器管理技术领域,特别指一种OpenWrt路由器有线用户流量获取方法及系统。

背景技术

当前大部分OpenWrt路由器都是通过CWMP协议来获取用户信息,CWMP协议是基于数据模型来获取用户信息的,而CWMP协议的TR098与TR181数据模型只能获取用户IP、MAC等信息,无法获取有线用户流量,而有线用户流量又是比较重要的信息,缺失有线用户流量将影响OpenWrt路由器管理的可靠性。

因此,如何提供一种OpenWrt路由器有线用户流量获取方法及系统,实现获取OpenWrt路由器的有线用户流量,以提升OpenWrt路由器管理的可靠性,成为一个亟待解决的技术问题。

发明内容

本发明要解决的技术问题,在于提供一种OpenWrt路由器有线用户流量获取方法及系统,实现获取OpenWrt路由器的有线用户流量,以提升OpenWrt路由器管理的可靠性。

第一方面,本发明提供了一种OpenWrt路由器有线用户流量获取方法,包括如下步骤:

步骤S1、OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及加密方式的配置文件;

步骤S2、OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;

步骤S3、OpenWrt路由器监听所述云服务器连接成功通告,以获取云服务器的连接状态;

步骤S4、OpenWrt路由器基于所述连接状态,通过swconfig命令获取有线用户流量;

步骤S5、OpenWrt路由器将所述有线用户流量封装为JSON格式后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述有线用户流量。

进一步的,所述步骤S1还包括:

利用国密算法对所述配置文件进行加密后,存储至指定路径。

进一步的,所述步骤S2具体为:

OpenWrt路由器基于所述配置文件携带的云服务器地址、云服务器端口以及加密方式与云服务器建立连接,通过OpenWrt路由器ping云服务器以对连接进行校验;

OpenWrt路由器调用mosquitto库的mosquitto_lib_init函数初始化库,调用mosquitto库的mosquitto_new函数创建mosquitto对象,调用mosquitto库的mosquitto_message_callback_set函数创建Broker消息处理回调函数,调用mosquitto库的mosquitto_tls_set函数开启tls认证,调用mosquitto库的mosquitto_connect函数连接Broker,Broker连接成功后调用mosquitto库的mosquitto_loop_forever函数保持长连接,以启动MQTT进程,所述MQTT进程发布云服务器连接成功通告。

进一步的,所述步骤S3具体为:

OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段获取云服务器的连接状态;所述连接状态为连接成功或者连接失败。

进一步的,所述步骤S4中,所述有线用户流量包括接收流量以及发送流量。

第二方面,本发明提供了一种OpenWrt路由器有线用户流量获取系统,包括如下模块:

配置文件创建模块,用于OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及加密方式的配置文件;

MQTT进程启动模块,用于OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;

连接状态获取模块,用于OpenWrt路由器监听所述云服务器连接成功通告,以获取云服务器的连接状态;

有线用户流量获取模块,用于OpenWrt路由器基于所述连接状态,通过swconfig命令获取有线用户流量;

有线用户流量上传模块,用于OpenWrt路由器将所述有线用户流量封装为JSON格式后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述有线用户流量。

进一步的,所述配置文件创建模块还用于:

利用国密算法对所述配置文件进行加密后,存储至指定路径。

进一步的,所述MQTT进程启动模块具体用于:

OpenWrt路由器基于所述配置文件携带的云服务器地址、云服务器端口以及加密方式与云服务器建立连接,通过OpenWrt路由器ping云服务器以对连接进行校验;

OpenWrt路由器调用mosquitto库的mosquitto_lib_init函数初始化库,调用mosquitto库的mosquitto_new函数创建mosquitto对象,调用mosquitto库的mosquitto_message_callback_set函数创建Broker消息处理回调函数,调用mosquitto库的mosquitto_tls_set函数开启tls认证,调用mosquitto库的mosquitto_connect函数连接Broker,Broker连接成功后调用mosquitto库的mosquitto_loop_forever函数保持长连接,以启动MQTT进程,所述MQTT进程发布云服务器连接成功通告。

进一步的,所述连接状态获取模块具体用于:

OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段获取云服务器的连接状态;所述连接状态为连接成功或者连接失败。

进一步的,所述有线用户流量获取模块中,所述有线用户流量包括接收流量以及发送流量。

本发明的优点在于:

1、通过OpenWrt路由器创建包括云服务器地址、云服务器端口以及加密方式的配置文件,基于配置文件与云服务器建立连接,并启动MQTT进程,MQTT进程发布云服务器连接成功通告;OpenWrt路由器监听云服务器连接成功通告,以获取云服务器的连接状态,基于所述连接状态,通过swconfig命令获取包括接收流量以及发送流量的有线用户流量,将有线用户流量封装为JSON格式后,调用MQTT进程的ubus接口上传至云服务器进行展示;由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的有线用户流量,极大的提升了OpenWrt路由器管理的可靠性。

2、云服务器通过MQTT协议对OpenWrt路由器进行有线用户流量获取,代替传统的CWMP协议,由于MQTT协议的报文较小,减少了占用的报文空间,数据收发效率高,数据收发功耗低;MQTT协议可重构精简业务流程,进而减少不需要的功能和机制;MQTT协议为长连接协议,不仅减少交互信息,也无需维持STUN保活通道,并提供QoS机制,可以根据不同的使用场景来设定不同的消息质量等级,最终极大的降低了OpenWrt路由器管理的开销,极大的提升了OpenWrt路由器管理的可靠性以及灵活性。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种OpenWrt路由器有线用户流量获取方法的流程图。

图2是本发明一种OpenWrt路由器有线用户流量获取系统的结构示意图。

具体实施方式

本申请实施例中的技术方案,总体思路如下:通过swconfig命令获取包括接收流量以及发送流量的有线用户流量,由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的有线用户流量,以提升OpenWrt路由器管理的可靠性。

请参照图1至图2所示,本发明一种OpenWrt路由器有线用户流量获取方法的较佳实施例,包括如下步骤:

步骤S1、OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及加密方式的配置文件;

OpenWrt是基于Linux的嵌入式操作系统,是一个专门设计用于智能路由器和网络设备的操作系统,采用了模块化的设计理念,可以轻松地定制和扩展路由器的功能;OpenWrt的核心是一个裁剪后的Linux内核,通过添加软件包和插件来提供丰富的网络功能和应用是一款第三方路由器固件,它具有开放性,用户可以在路由器上安装需要的第三方软件,相比传统的路由器,OpenWRT提供了更强大、灵活和智能的功能;

步骤S2、OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;

所述MQTT进程是OpenWrt路由器与云服务器交互的主要通道,有线用户流量通过所述MQTT进程发送给云服务器;

MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输),是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅(Publish/Subsc ribe)模式的轻量级通讯协议,它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅消息协议;MQTT协议最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务;MQTT协议做为一种低开销、低带宽占用的即时通讯协议,在物联网、小型设备、移动应用等方面有广泛的应用;

步骤S3、OpenWrt路由器监听所述云服务器连接成功通告,以获取云服务器的连接状态;

步骤S4、OpenWrt路由器基于所述连接状态,通过swconfig命令获取有线用户流量;

步骤S5、OpenWrt路由器将所述有线用户流量封装为JSON格式后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述有线用户流量。

JSON格式的所述有线用户流量举例为:

{“ip”:”xxx”,”mac”:”xxx”,”type”:”wired”,”rx”:”xxx”,”tx”:”xxx”}

ip:有线用户分配到的ip;

mac:有线用户的mac;

type:表明当前用户为有线用户;

rx:接收的总流量;

tx:发送的总流量。

将上述有线用户流量上传至云服务器举例为:

ubus call mqtt data_notify'{"user":"sta_flow","id":"01","ts":xxx,"data":{xxx}}'

user:业务模块名称;

id:业务模块代号;

ts:当前时间戳;

data:要发送给云服务器的数据,JSON格式。

云服务器用于对OpenWrt路由器进行远程管理,云服务器提供用户访问的WEB前端,可以通过浏览器访问,云服务器与OpenWrt路由器可以通过多种协议进行交互,有CWMP、COAP、MQTT等,本发明基于MQTT协议获取有线用户流量。

所述步骤S1还包括:

利用国密算法对所述配置文件进行加密后,存储至指定路径。

所述步骤S2具体为:

OpenWrt路由器基于所述配置文件携带的云服务器地址、云服务器端口以及加密方式与云服务器建立连接,通过OpenWrt路由器ping云服务器以对连接进行校验;

OpenWrt路由器调用mosquitto库的mosquitto_lib_init函数初始化库,调用mosquitto库的mosquitto_new函数创建mosquitto对象,调用mosquitto库的mosquitto_message_callback_set函数创建Broker消息处理回调函数,调用mosquitto库的mosquitto_tls_set函数开启tls认证,调用mosquitto库的mosquitto_connect函数连接Broker,Broker连接成功后调用mosqutto库的mosquitto_loop_forever函数保持长连接,以启动MQTT进程,所述MQTT进程发布云服务器连接成功通告。

Broker消息处理回调函数负责触发CWMP向ACS主动发起请求;连接Broker后可互相订阅主题。

所述云服务器连接成功通告举例为:ubus-t 3send cloud_server'{"status":"connected"}'

所述步骤S3具体为:

OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段获取云服务器的连接状态;所述连接状态为连接成功或者连接失败,当所述status字段的取值为connected时,所述连接状态为连接成功。

g_cloud_connect_event为云服务器连接成功通告的处理函数。

接口:ubus_register_event_handler(g_ubus_ctx,&g_cloud_connec t_event,“cloud_server”)

所述步骤S4中,所述有线用户流量包括接收流量以及发送流量。

获取接收流量的命令:swconfig dev switch0 port x get mib|grep RxByte|awk'{print$3}'

获取发送流量的命令:swconfig dev switch0 port x get mib|grep TxByte|awk'{print$3}'

命令中的x为有线用户接口号。

本发明一种OpenWrt路由器有线用户流量获取系统的较佳实施例,包括如下模块:

配置文件创建模块,用于OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及加密方式的配置文件;

OpenWrt是基于Liux的嵌入式操作系统,是一个专门设计用于智能路由器和网络设备的操作系统,采用了模块化的设计理念,可以轻松地定制和扩展路由器的功能;OpenWrt的核心是一个裁剪后的Linux内核,通过添加软件包和插件来提供丰富的网络功能和应用是一款第三方路由器固件,它具有开放性,用户可以在路由器上安装需要的第三方软件,相比传统的路由器,OpenWRT提供了更强大、灵活和智能的功能;

MQTT进程启动模块,用于OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;

所述MQTT进程是OpenWrt路由器与云服务器交互的主要通道,有线用户流量通过所述MQTT进程发送给云服务器;

MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输),是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅(Publish/Subsc ribe)模式的轻量级通讯协议,它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅消息协议;MQTT协议最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务;MQTT协议做为一种低开销、低带宽占用的即时通讯协议,在物联网、小型设备、移动应用等方面有广泛的应用;

连接状态获取模块,用于OpenWrt路由器监听所述云服务器连接成功通告,以获取云服务器的连接状态;

有线用户流量获取模块,用于OpenWrt路由器基于所述连接状态,通过swconfig命令获取有线用户流量;

有线用户流量上传模块,用于OpenWrt路由器将所述有线用户流量封装为JSON格式后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述有线用户流量。

JSON格式的所述有线用户流量举例为:

{“ip”:”xxx”,”mac”:”xxx”,”type”:”wired”,”rx”:”xxx”,”tx”:”xxx”}

ip:有线用户分配到的ip;

mac:有线用户的mac;

type:表明当前用户为有线用户;

rx:接收的总流量;

tx:发送的总流量。

将上述有线用户流量上传至云服务器举例为:

ubuscallmqttdata_notify'{"user":"sta_flow","id":"01","ts":xxx,"data":{xxx}}'

user:业务模块名称;

id:业务模块代号;

ts:当前时间戳;

data:要发送给云服务器的数据,JSON格式。

云服务器用于对OpenWrt路由器进行远程管理,云服务器提供用户访问的WEB前端,可以通过浏览器访问,云服务器与OpenWrt路由器可以通过多种协议进行交互,有CWMP、COAP、MQTT等,本发明基于MQTT协议获取有线用户流量。

所述配置文件创建模块还用于:

利用国密算法对所述配置文件进行加密后,存储至指定路径。

所述MQTT进程启动模块具体用于:

OpenWrt路由器基于所述配置文件携带的云服务器地址、云服务器端口以及加密方式与云服务器建立连接,通过OpenWrt路由器ping云服务器以对连接进行校验;

OpenWrt路由器调用mosquitto库的mosquitto_lib_init函数初始化库,调用mosquitto库的mosquitto_new函数创建mosquitto对象,调用mosquitto库的mosquitto_message_callback_set函数创建Broker消息处理回调函数,调用mosquitto库的mosquitto_tls_set函数开启tls认证,调用mosquitto库的mosquitto_connect函数连接Broker,Broker连接成功后调用mosquitto库的mosquitto_loop_forever函数保持长连接,以启动MQTT进程,所述MQTT进程发布云服务器连接成功通告。

Broker消息处理回调函数负责触发CWMP向ACS主动发起请求;连接Broker后可互相订阅主题。

所述云服务器连接成功通告举例为:ubus-t 3send cloud_server'{"status":"connected"}'

所述连接状态获取模块具体用于:

OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段获取云服务器的连接状态;所述连接状态为连接成功或者连接失败,当所述status字段的取值为connected时,所述连接状态为连接成功。

g_cloud_connect_event为云服务器连接成功通告的处理函数。

接口:ubus_register_event_handler(g_ubus_ctx,&g_cloud_connec t_event,“cloud_server”)

所述有线用户流量获取模块中,所述有线用户流量包括接收流量以及发送流量。

获取接收流量的命令:swconfig dev switch0 port x get mib|grep RxByte|awk'{print$3}'

获取发送流量的命令:swconfig dev switch0 port x get mib|grep TxByte|awk'{print$3}'

命令中的x为有线用户接口号。

综上所述,本发明的优点在于:

1、通过OpenWrt路由器创建包括云服务器地址、云服务器端口以及加密方式的配置文件,基于配置文件与云服务器建立连接,并启动MQTT进程,MQTT进程发布云服务器连接成功通告;OpenWrt路由器监听云服务器连接成功通告,以获取云服务器的连接状态,基于所述连接状态,通过swconfig命令获取包括接收流量以及发送流量的有线用户流量,将有线用户流量封装为JSON格式后,调用MQTT进程的ubus接口上传至云服务器进行展示;由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的有线用户流量,极大的提升了OpenWrt路由器管理的可靠性。

2、云服务器通过MQTT协议对OpenWrt路由器进行有线用户流量获取,代替传统的CWMP协议,由于MQTT协议的报文较小,减少了占用的报文空间,数据收发效率高,数据收发功耗低;MQTT协议可重构精简业务流程,进而减少不需要的功能和机制;MQTT协议为长连接协议,不仅减少交互信息,也无需维持STUN保活通道,并提供QoS机制,可以根据不同的使用场景来设定不同的消息质量等级,最终极大的降低了OpenWrt路由器管理的开销,极大的提升了OpenWrt路由器管理的可靠性以及灵活性。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

技术分类

06120116587894