CN117978697A - 一种OpenWrt路由器用户实时速率获取方法及系统 - Google Patents
一种OpenWrt路由器用户实时速率获取方法及系统 Download PDFInfo
- Publication number
- CN117978697A CN117978697A CN202311792994.0A CN202311792994A CN117978697A CN 117978697 A CN117978697 A CN 117978697A CN 202311792994 A CN202311792994 A CN 202311792994A CN 117978697 A CN117978697 A CN 117978697A
- Authority
- CN
- China
- Prior art keywords
- cloud server
- time rate
- user real
- connection
- real
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 58
- 230000006870 function Effects 0.000 claims description 60
- 230000005540 biological transmission Effects 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013499 data model Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了OpenWrt路由器管理技术领域的一种OpenWrt路由器用户实时速率获取方法及系统,方法包括:步骤S10、OpenWrt路由器创建一配置文件;步骤S20、基于配置文件与云服务器建立连接,并启动MQTT进程,MQTT进程发布云服务器连接成功通告;步骤S30、OpenWrt路由器实时监听云服务器连接成功通告,以获取云服务器的连接状态;步骤S40、OpenWrt路由器基于连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;步骤S50、OpenWrt路由器将用户实时速率封装为JSON格式后,对用户实时速率进行加密和备份后,调用MQTT进程的ubus接口上传至云服务器,云服务器接收并展示用户实时速率。本发明的优点在于:极大的提升了OpenWrt路由器管理的可靠性。
Description
技术领域
本发明涉及OpenWrt路由器管理技术领域,特别指一种OpenWrt路由器用户实时速率获取方法及系统。
背景技术
当前大部分OpenWrt路由器都是通过CWMP协议来获取用户信息,CWMP协议是基于数据模型来获取用户信息的,而CWMP协议的TR098与TR181数据模型只能获取用户IP、MAC等信息,无法获取用户实时速率,而用户实时速率又是比较重要的信息,且传统上获取的用户信息在传输过程中存在被窃取或者篡改的风险,缺失用户实时速率以及用户信息传输过程中的安全风险,将直接影响OpenWrt路由器管理的可靠性。
因此,如何提供一种OpenWrt路由器用户实时速率获取方法及系统,实现提升OpenWrt路由器管理的可靠性,成为一个亟待解决的技术问题。
发明内容
本发明要解决的技术问题,在于提供一种OpenWrt路由器用户实时速率获取方法及系统,实现提升OpenWrt路由器管理的可靠性。
第一方面,本发明提供了一种OpenWrt路由器用户实时速率获取方法,包括如下步骤:
步骤S10、OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
步骤S20、OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
步骤S30、OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
步骤S40、OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
步骤S50、OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
进一步的,所述步骤S10中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
进一步的,所述步骤S20具体包括:
步骤S21、OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
步骤S22、OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
步骤S23、通过OpenWrt路由器ping云服务器以对连接进行校验;
步骤S24、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进程发布云服务器连接成功通告。
进一步的,所述步骤S30具体为:
OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数实时监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段,获取云服务器连接成功或者连接失败的连接状态,基于所述连接状态实时更新预设的状态标识。
进一步的,所述步骤S40具体为:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
所述步骤S50具体为:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
第二方面,本发明提供了一种OpenWrt路由器用户实时速率获取系统,包括如下模块:
配置文件创建模块,用于OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
云服务器连接模块,用于OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
连接状态获取模块,用于OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
用户实时速率获取模块,用于OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
用户实时速率上传模块,用于OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
进一步的,所述配置文件创建模块中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
进一步的,所述云服务器连接模块具体包括:
配置文件校验单元,用于OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
心跳连接单元,用于OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
连接校验单元,用于通过OpenWrt路由器ping云服务器以对连接进行校验;
MQTT进程启动单元,用于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字段,获取云服务器连接成功或者连接失败的连接状态,基于所述连接状态实时更新预设的状态标识。
进一步的,所述用户实时速率获取模块具体用于:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
所述用户实时速率上传模块具体用于:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
本发明的优点在于:
1、通过OpenWrt路由器创建包括云服务器地址、云服务器端口以及第一哈希值的配置文件,基于配置文件与云服务器建立连接并启动MQTT进程,MQTT进程发布云服务器连接成功通告;接着OpenWrt路由器实时监听云服务器连接成功通告,以获取云服务器的连接状态;接着基于连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;最后OpenWrt路由器将用户实时速率封装为JSON格式,对用户实时速率进行加密和备份后,调用MQTT进程的ubus接口上传至云服务器进行展示;由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的用户实时速率;通过DES加密算法对配置文件进行加密,通过国密算法对传输给云服务器的用户实时速率进行加密,避免用户实时速率在传输过程中被明文窃取;通过对用户实时速率进行哈希计算得到哈希值,利用随机生成的对称密钥对用户实时速率进行加密后备份至IPFS系统,将哈希值以及IPFS系统返回的索引地址绑定后上传至区块链,一方面可以避免哈希值被篡改,另一方面可通过哈希值校验用户实时速率是否完整、是否被篡改,前后采取五重安全措施(DES加密算法、国密算法、对称密钥、哈希值、区块链),极大的提升了数据安全性,最终极大的提升了OpenWrt路由器管理的可靠性。
2、云服务器通过MQTT协议对OpenWrt路由器进行用户实时速率获取,代替传统的CWMP协议,由于MQTT协议的报文较小,减少了占用的报文空间,数据收发效率高,数据收发功耗低;MQTT协议可重构精简业务流程,进而减少不需要的功能和机制;MQTT协议为长连接协议,不仅减少交互信息,也无需维持STUN保活通道,并提供QoS机制,可以根据不同的使用场景来设定不同的消息质量等级,最终极大的降低了OpenWrt路由器管理的开销,极大的提升了OpenWrt路由器管理的可靠性以及灵活性。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种OpenWrt路由器用户实时速率获取方法的流程图。
图2是本发明一种OpenWrt路由器用户实时速率获取系统的结构示意图。
具体实施方式
本申请实施例中的技术方案,总体思路如下:通过swconfig命令获取包括接收速率和发送速率的用户实时速率,由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的用户实时速率;通过DES加密算法对配置文件进行加密,通过国密算法对传输给云服务器的用户实时速率进行加密,通过对用户实时速率进行哈希计算得到哈希值,利用随机生成的对称密钥对用户实时速率进行加密后备份至IPFS系统,将哈希值以及IPFS系统返回的索引地址绑定后上传至区块链,前后采取五重安全措施以提升数据安全性,进而提升OpenWrt路由器管理的可靠性。
请参照图1至图2所示,本发明一种OpenWrt路由器用户实时速率获取方法的较佳实施例,包括如下步骤:
步骤S10、OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
OpenWrt是基于Linux的嵌入式操作系统,是一个专门设计用于智能路由器和网络设备的操作系统,采用了模块化的设计理念,可以轻松地定制和扩展路由器的功能;OpenWrt的核心是一个裁剪后的Linux内核,通过添加软件包和插件来提供丰富的网络功能和应用是一款第三方路由器固件,它具有开放性,用户可以在路由器上安装需要的第三方软件,相比传统的路由器,OpenWRT提供了更强大、灵活和智能的功能;
步骤S20、OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
所述MQTT进程是OpenWrt路由器与云服务器交互的主要通道,用户实时速率通过所述MQTT进程发送给云服务器;
MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输),是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅(Publish/Subsc ribe)模式的轻量级通讯协议,它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅消息协议;MQTT协议最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务;MQTT协议做为一种低开销、低带宽占用的即时通讯协议,在物联网、小型设备、移动应用等方面有广泛的应用;
步骤S30、OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
步骤S40、OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
步骤S50、OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
JSON格式的所述用户实时速率举例为:
{“ip”:”xxx”,”mac”:”xxx”,”type”:”xxx”,”down_speed”:”xxx”,”up_speed”:”xxx”}
ip:用户分配到的ip;
mac:用户的mac;
type:表明当前用户类型,wired为有线用户,wireless为无线用户;
down_speed:接收速率(实时下载速率);
up_speed:发送速率(实时上传速率)。
将所述用户实时速率上传至云服务器举例为:
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协议获取有线用户流量。
所述步骤S10中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
所述步骤S20具体包括:
步骤S21、OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
步骤S22、OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
步骤S23、通过OpenWrt路由器ping云服务器以对连接进行校验;
步骤S24、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"}'
所述步骤S30具体为:
OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数实时监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段,获取云服务器连接成功或者连接失败的连接状态,基于所述连接状态实时更新预设的状态标识。当所述status字段的取值为connected时,所述连接状态为连接成功。
g_cloud_connect_event为云服务器连接成功通告的处理函数。
接口:ubus_register_event_handler(g_ubus_ctx,&g_cloud_connect_event,“cloud_server”)
所述步骤S40具体为:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
获取接收流量的命令: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为有线用户接口号。
无线用户的步骤如下:
先使用命令iwpriv xxx show stalist(xxx为无线网卡名称,可以使用ifconfig命令查看);
再输入命令后,会在/tmp/stalist_result目录下生成当前无线用户信息,其中DownSpeed与UpSpeed是无线用户的接收速率/发送速率。
所述步骤S50具体为:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
通过DES加密算法对配置文件进行加密,避免配置文件被明文窃取,通过国密算法对传输给云服务器的用户实时速率进行加密,避免用户实时速率在传输过程中被明文窃取;通过对用户实时速率进行哈希计算得到哈希值,利用随机生成的对称密钥对用户实时速率进行加密后备份至IPFS系统,将哈希值以及IPFS系统返回的索引地址绑定后上传至区块链,一方面可以避免哈希值被篡改,另一方面可通过哈希值校验用户实时速率是否完整、是否被篡改,前后采取五重安全措施(DES加密算法、国密算法、对称密钥、哈希值、区块链),极大的提升了数据安全性。
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
本发明一种OpenWrt路由器用户实时速率获取系统的较佳实施例,包括如下模块:
配置文件创建模块,用于OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
OpenWrt是基于Linux的嵌入式操作系统,是一个专门设计用于智能路由器和网络设备的操作系统,采用了模块化的设计理念,可以轻松地定制和扩展路由器的功能;OpenWrt的核心是一个裁剪后的Linux内核,通过添加软件包和插件来提供丰富的网络功能和应用是一款第三方路由器固件,它具有开放性,用户可以在路由器上安装需要的第三方软件,相比传统的路由器,OpenWRT提供了更强大、灵活和智能的功能;
云服务器连接模块,用于OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
所述MQTT进程是OpenWrt路由器与云服务器交互的主要通道,用户实时速率通过所述MQTT进程发送给云服务器;
MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输),是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅消息协议;MQTT协议最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务;MQTT协议做为一种低开销、低带宽占用的即时通讯协议,在物联网、小型设备、移动应用等方面有广泛的应用;
连接状态获取模块,用于OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
用户实时速率获取模块,用于OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
用户实时速率上传模块,用于OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
JSON格式的所述用户实时速率举例为:
{“ip”:”xxx”,”mac”:”xxx”,”type”:”xxx”,”down_speed”:”xxx”,”up_speed”:”xxx”}
ip:用户分配到的ip;
mac:用户的mac;
type:表明当前用户类型,wired为有线用户,wireless为无线用户;
down_speed:接收速率(实时下载速率);
up_speed:发送速率(实时上传速率)。
将所述用户实时速率上传至云服务器举例为:
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协议获取有线用户流量。
所述配置文件创建模块中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
所述云服务器连接模块具体包括:
配置文件校验单元,用于OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
心跳连接单元,用于OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
连接校验单元,用于通过OpenWrt路由器ping云服务器以对连接进行校验;
MQTT进程启动单元,用于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_connect_event,“cloud_server”)
所述用户实时速率获取模块具体用于:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
获取接收流量的命令: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为有线用户接口号。
无线用户的步骤如下:
先使用命令iwpriv xxx show stalist(xxx为无线网卡名称,可以使用ifconfig命令查看);
再输入命令后,会在/tmp/stalist_result目录下生成当前无线用户信息,其中DownSpeed与UpSpeed是无线用户的接收速率/发送速率。
所述用户实时速率上传模块具体用于:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
通过DES加密算法对配置文件进行加密,避免配置文件被明文窃取,通过国密算法对传输给云服务器的用户实时速率进行加密,避免用户实时速率在传输过程中被明文窃取;通过对用户实时速率进行哈希计算得到哈希值,利用随机生成的对称密钥对用户实时速率进行加密后备份至IPFS系统,将哈希值以及IPFS系统返回的索引地址绑定后上传至区块链,一方面可以避免哈希值被篡改,另一方面可通过哈希值校验用户实时速率是否完整、是否被篡改,前后采取五重安全措施(DES加密算法、国密算法、对称密钥、哈希值、区块链),极大的提升了数据安全性。
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
综上所述,本发明的优点在于:
1、通过OpenWrt路由器创建包括云服务器地址、云服务器端口以及第一哈希值的配置文件,基于配置文件与云服务器建立连接并启动MQTT进程,MQTT进程发布云服务器连接成功通告;接着OpenWrt路由器实时监听云服务器连接成功通告,以获取云服务器的连接状态;接着基于连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;最后OpenWrt路由器将用户实时速率封装为JSON格式,对用户实时速率进行加密和备份后,调用MQTT进程的ubus接口上传至云服务器进行展示;由于swconfig命令是OpenWrt官方配置工具,可以用于配置、获取OpenWrt路由器的各种参数,进而实现获取OpenWrt路由器的用户实时速率;通过DES加密算法对配置文件进行加密,通过国密算法对传输给云服务器的用户实时速率进行加密,避免用户实时速率在传输过程中被明文窃取;通过对用户实时速率进行哈希计算得到哈希值,利用随机生成的对称密钥对用户实时速率进行加密后备份至IPFS系统,将哈希值以及IPFS系统返回的索引地址绑定后上传至区块链,一方面可以避免哈希值被篡改,另一方面可通过哈希值校验用户实时速率是否完整、是否被篡改,前后采取五重安全措施(DES加密算法、国密算法、对称密钥、哈希值、区块链),极大的提升了数据安全性,最终极大的提升了OpenWrt路由器管理的可靠性。
2、云服务器通过MQTT协议对OpenWrt路由器进行用户实时速率获取,代替传统的CWMP协议,由于MQTT协议的报文较小,减少了占用的报文空间,数据收发效率高,数据收发功耗低;MQTT协议可重构精简业务流程,进而减少不需要的功能和机制;MQTT协议为长连接协议,不仅减少交互信息,也无需维持STUN保活通道,并提供QoS机制,可以根据不同的使用场景来设定不同的消息质量等级,最终极大的降低了OpenWrt路由器管理的开销,极大的提升了OpenWrt路由器管理的可靠性以及灵活性。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (10)
1.一种OpenWrt路由器用户实时速率获取方法,其特征在于:包括如下步骤:
步骤S10、OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
步骤S20、OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
步骤S30、OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
步骤S40、OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
步骤S50、OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
2.如权利要求1所述的一种OpenWrt路由器用户实时速率获取方法,其特征在于:所述步骤S10中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
3.如权利要求1所述的一种OpenWrt路由器用户实时速率获取方法,其特征在于:所述步骤S20具体包括:
步骤S21、OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
步骤S22、OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
步骤S23、通过OpenWrt路由器ping云服务器以对连接进行校验;
步骤S24、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进程发布云服务器连接成功通告。
4.如权利要求1所述的一种OpenWrt路由器用户实时速率获取方法,其特征在于:所述步骤S30具体为:
OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数实时监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段,获取云服务器连接成功或者连接失败的连接状态,基于所述连接状态实时更新预设的状态标识。
5.如权利要求1所述的一种OpenWrt路由器用户实时速率获取方法,其特征在于:所述步骤S40具体为:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
所述步骤S50具体为:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
6.一种OpenWrt路由器用户实时速率获取系统,其特征在于:包括如下模块:
配置文件创建模块,用于OpenWrt路由器创建一至少包括云服务器地址、云服务器端口以及第一哈希值的配置文件,利用DES加密算法对所述配置文件加密后存储至FLASH中;
云服务器连接模块,用于OpenWrt路由器基于所述配置文件与云服务器建立连接,并启动MQTT进程,所述MQTT进程发布云服务器连接成功通告;
连接状态获取模块,用于OpenWrt路由器实时监听所述云服务器连接成功通告,以获取云服务器的连接状态;
用户实时速率获取模块,用于OpenWrt路由器基于所述连接状态,通过swconfig命令获取包括接收速率和发送速率的用户实时速率;
用户实时速率上传模块,用于OpenWrt路由器将所述用户实时速率封装为JSON格式后,对所述用户实时速率进行加密和备份后,调用所述MQTT进程的ubus接口上传至云服务器,云服务器接收并展示所述用户实时速率。
7.如权利要求6所述的一种OpenWrt路由器用户实时速率获取系统,其特征在于:所述配置文件创建模块中,所述第一哈希值为对云服务器地址以及云服务器端口进行哈希计算得到。
8.如权利要求6所述的一种OpenWrt路由器用户实时速率获取系统,其特征在于:所述云服务器连接模块具体包括:
配置文件校验单元,用于OpenWrt路由器从FLASH中读取所述配置文件,利用DES加密算法解密所述配置文件,解析所述配置文件得到云服务器地址、云服务器端口以及第一哈希值,基于所述第一哈希值对云服务器地址以及云服务器端口进行完整性校验;
心跳连接单元,用于OpenWrt路由器基于所述云服务器地址以及云服务器端口,向云服务器发送携带签名的连接请求;云服务器对接收的所述连接请求携带的签名进行验签后,与OpenWrt路由器建立心跳连接;
连接校验单元,用于通过OpenWrt路由器ping云服务器以对连接进行校验;
MQTT进程启动单元,用于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进程发布云服务器连接成功通告。
9.如权利要求6所述的一种OpenWrt路由器用户实时速率获取系统,其特征在于:所述连接状态获取模块具体用于:
OpenWrt路由器通过所述MQTT进程的ubus接口提供的c语言接口,调用ubus_register_event_handler函数实时监听所述云服务器连接成功通告,基于所述云服务器连接成功通告中的status字段,获取云服务器连接成功或者连接失败的连接状态,基于所述连接状态实时更新预设的状态标识。
10.如权利要求6所述的一种OpenWrt路由器用户实时速率获取系统,其特征在于:所述用户实时速率获取模块具体用于:
OpenWrt路由器基于所述连接状态,通过swconfig命令获取每一秒的接收流量以及发送流量,基于所述接收流量以及发送流量实时计算包括接收速率和发送速率的用户实时速率;
接收速率=(第n秒接收流量-第(n-1)秒接收流量)*8/1024;
发送速率=(第n秒发送流量-第(n-1)秒发送流量)*8/1024;
所述用户实时速率上传模块具体用于:
OpenWrt路由器将所述用户实时速率封装为JSON格式,通过国密算法对所述用户实时速率加密后,调用所述MQTT进程的ubus接口上传至云服务器;
OpenWrt路由器对所述用户实时速率进行哈希计算得到第二哈希值,随机生成一对称密钥,利用所述对称密钥对用户实时速率进行加密,并作为运行日志备份至IPFS系统,将所述第二哈希值以及IPFS系统返回的索引地址绑定后上传至区块链;
云服务器接收所述用户实时速率并结构化存储至数据库中,从所述数据库读取用户实时速率并利用国密算法解密后,通过显示屏实时显示所述用户实时速率,将所述用户实时速率推送给预先关联的管理终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311792994.0A CN117978697A (zh) | 2023-12-25 | 2023-12-25 | 一种OpenWrt路由器用户实时速率获取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311792994.0A CN117978697A (zh) | 2023-12-25 | 2023-12-25 | 一种OpenWrt路由器用户实时速率获取方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117978697A true CN117978697A (zh) | 2024-05-03 |
Family
ID=90853834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311792994.0A Pending CN117978697A (zh) | 2023-12-25 | 2023-12-25 | 一种OpenWrt路由器用户实时速率获取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117978697A (zh) |
-
2023
- 2023-12-25 CN CN202311792994.0A patent/CN117978697A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9788177B2 (en) | Method and apparatus of providing messaging service and callback feature to mobile stations | |
CN111083161A (zh) | 数据传输的处理方法及装置、物联网设备 | |
CN114338827B (zh) | 物联网协议适配网关、方法及可读存储介质 | |
CN109327493A (zh) | 一种基于云的远程医疗监控系统及监控方法 | |
CN111740942B (zh) | 一种登录/注册方法、装置、系统、电子设备及存储介质 | |
US20120036208A1 (en) | Polling-based secure network message notification system and method with performance enhancing features | |
CN112383881B (zh) | 一种信息上报方法、装置、设备及存储介质 | |
US7774423B2 (en) | Remote start system, remote start server and communication terminal | |
US20230283479A1 (en) | Data Transmission Method and Apparatus, Device, System, and Storage Medium | |
CN112087475B (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
CN115664989A (zh) | 一种云桌面的监控系统及方法 | |
CN112511892B (zh) | 屏幕共享方法、装置、服务器及存储介质 | |
CN109194416B (zh) | 信息传输方法、装置、计算机设备及存储介质 | |
CN109286665B (zh) | 实时移动游戏长链接处理方法及装置 | |
CN117978697A (zh) | 一种OpenWrt路由器用户实时速率获取方法及系统 | |
CN116055368A (zh) | 一种使用自定义协议进行通信的方法及装置 | |
US8612751B1 (en) | Method and apparatus for entitled data transfer over the public internet | |
WO2021082945A1 (zh) | 一种远程管理方法、系统、终端设备及服务器 | |
CN114979259A (zh) | 一种消息队列代理装置 | |
CN114679472A (zh) | 通信系统、方法、装置、存储介质及电子设备 | |
CN117880347A (zh) | 一种OpenWrt路由器有线用户流量获取方法及系统 | |
CN100375464C (zh) | 网络互连时各终端的数据通信方法 | |
CN115348309B (zh) | 通讯管理方法及装置 | |
CN102148704A (zh) | 一种加密型交换机通用网管接口的软件实现方法 | |
KR101527196B1 (ko) | 양방향 푸시 메시지 서비스 시스템 및 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |