CN117221014B - 一种网络节点操作系统配置数据内生安全防护方法 - Google Patents

一种网络节点操作系统配置数据内生安全防护方法 Download PDF

Info

Publication number
CN117221014B
CN117221014B CN202311481291.6A CN202311481291A CN117221014B CN 117221014 B CN117221014 B CN 117221014B CN 202311481291 A CN202311481291 A CN 202311481291A CN 117221014 B CN117221014 B CN 117221014B
Authority
CN
China
Prior art keywords
data
module
target
configuration data
saved
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.)
Active
Application number
CN202311481291.6A
Other languages
English (en)
Other versions
CN117221014A (zh
Inventor
王培磊
张汝云
邹涛
李顺斌
黄培龙
骆汉光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311481291.6A priority Critical patent/CN117221014B/zh
Publication of CN117221014A publication Critical patent/CN117221014A/zh
Application granted granted Critical
Publication of CN117221014B publication Critical patent/CN117221014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书公开了一种网络节点操作系统配置数据内生安全防护方法,在数据备份模块接收到网络消息流时,将目标配置数据备份在数据备份模块,分发模块将接收到的网络消息流分别发送给各动态异构冗余执行体,各动态异构冗余执行体存储目标配置数据,同步模块可分别读取各动态异构冗余执行体存储的目标配置数据,并由裁决模块进行一致性裁决,同步模块基于裁决结果进行执行体的上下线调度,下线存在数据紊乱的目标执行体,并上线候选执行体,候选执行体从数据备份模块中获取目标配置数据。通过将目标配置数据备份到数据备份模块,对目标数据进行动态防护,实现了针对已知和未知威胁的防护能力,增强了网络节点操作系统配置数据的内生安全的性能。

Description

一种网络节点操作系统配置数据内生安全防护方法
技术领域
本说明书涉及网络通信技术领域,尤其涉及一种网络节点操作系统配置数据内生安全防护方法。
背景技术
近些年,搭载着云开发网络软件(Software for Open Networking in theCloud,SONiC)系统的白盒交换机正广泛应用于数据中心等场景,SONiC系统采用远程字典服务(Remote Dictionary Server,redis)数据库作为消息的集散中心,通过redis数据库保持用户输入的配置信息,再通知到各个业务容器。
但是,redis数据库本身并非是完全安全可信的,redis数据库中的数据可能会被篡改从而出现数据紊乱,如远程代码/命令执行(Remote Code/Command Execute,REC)漏洞,导致交换机功能出现异常。
基于此,本说明书提供一种网络节点操作系统配置数据内生安全防护方法。
发明内容
本说明书提供一种网络节点操作系统配置数据内生安全防护方法,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种网络节点操作系统配置数据内生安全防护方法,所述方法应用于目标单元,所述目标单元预先部署在白盒交换机的网络节点操作系统中;
所述目标单元包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块、至少三个动态异构冗余执行体,以及待上线的候选执行体;
所述方法包括:
当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块;
当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块;
当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块;
当所述动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据;
当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块;
当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块;
当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中;
当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线得个动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
本说明书提供了一种网络节点操作系统配置数据内生安全防护装置,所述装置应用于目标单元,所述目标单元预先部署在白盒交换机的网络节点操作系统中;
所述目标单元包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块、至少三个动态异构冗余执行体,以及待上线的候选执行体;
所述装置包括:
命令行输入模块,用于当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块;
数据备份模块,用于当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块;
分发模块,用于当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块;
目标配置数据存储模块,用于当所述动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据;
同步模块,用于当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块;
裁决模块,用于当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块;
上下线调度模块,用于当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中;
配置数据生效模块,用于当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线得个动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述网络节点操作系统配置数据内生安全防护方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述网络节点操作系统配置数据内生安全防护方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
本说明书提供的网络节点操作系统配置数据内生安全防护方法中,在数据备份模块接收到网络消息流时,将目标配置数据备份在数据备份模块,分发模块将接收到的网络消息流分别发送给各动态异构冗余执行体,各动态异构冗余执行体存储目标配置数据,同步模块可分别读取各动态异构冗余执行体存储的目标配置数据,并由裁决模块进行一致性裁决,同步模块基于裁决结果进行执行体的上下线调度,下线存在数据紊乱的目标执行体,并上线候选执行体,候选执行体从数据备份模块中获取目标配置数据。通过将目标配置数据动态冗余备份到数据备份模块,对目标数据进行动态防护,实现了针对已知和未知威胁的防护能力,增强了网络节点操作系统配置数据的内生安全的性能。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种执行网络节点操作系统配置数据内生安全防护方法的系统的示意图;
图2为本说明书中一种网络节点操作系统配置数据内生安全防护方法的流程示意图;
图3为本说明书中一种网络节点操作系统配置数据内生安全防护方法的流程示意图;
图4为本说明书中一种网络节点操作系统配置数据内生安全防护方法的示意图;
图5为本说明书提供的一种网络节点操作系统配置数据内生安全防护装置的示意图;
图6为本说明书提供的对应于图2的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
另外,需要说明的是,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
需要说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
在本说明书中,白盒交换机的网络节点操作系统的整体架构示意图如图1所示。本说明书以网络节点操作系统为SONiC系统为例,对具体的技术方案进行阐述。搭载有SONiC系统的白盒交换机中部署有目标单元,其中,目标单元具体包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块和至少三个动态异构冗余执行体(图2为三个动态异构冗余执行体,分别为Redis(v.7.0.12)数据库、Redis(v.5.0.4)数据库以及KeyDB数据库),另外,目标单元中还包括待上线的候选执行体(DrongflyDB数据库),该候选执行体与所述至少三个动态异构冗余执行体异构。
如图1所示的,命令行输入模块、同步模块、裁决模块和分发模块部署在同一个扩展容器当中,在这四个模块以进程的形式相互独立运行。三个已上线的动态异构冗余执行体和一个未上线的候选执行体也均以容器的形式运行在SONiC系统上。数据备份模块由于其高可信度的要求,以独立的进程进行运行。
预先部署命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块的方式可以包括以下两种部署方式:
方式一、预先将指定的源代码集成到白盒交换机开放网络操作系统的源码中,编译集成后的所述源码得到镜像容器,将所述镜像容器安装到所述白盒交换机,并在所述白盒交换机上电启动后,在运行白盒交换机的网络节点操作系统(SONiC系统)中运行所述镜像容器对应的扩展容器,所述扩展容器中部署有命令行输入模块、同步模块、裁决模块和分发模块。其中,指定的源代码是用于部署命令行输入模块、同步模块、裁决模块和分发模块的源代码,至于指定的源代码是自动生成的还是人工配置的,本说明书不做限定。
方式二、预先将开发完成的扩展容器发布为镜像容器,并在所述白盒交换机上电启动后,将所述镜像容器加载到所述白盒交换机的网络节点操作系统中;其中,所述扩展容器中部署有命令行输入模块、同步模块、裁决模块和分发模块。
其中,上述方式一中在SONiC系统当中运行扩展容器主要有以下三个步骤:
步骤1、在rules目录当中增加扩展容器的mk文件,mk文件用于声明扩展容器的源码路径等makefile变量信息。
步骤2、在src目录下增加扩展容器的源码,该源码目录跟步骤1当中声明的源码路径相一致。
步骤3、在docker目录下增加扩展容器的Dockerfile文件和supervisord文件,其中,supervisord文件用于管理扩展容器当中的各个进程,即命令行输入模块、同步模块、裁决模块和分发模块分别对应的进程;Dokcerfile文件用于构建扩展容器,包括步骤2当中源码的编译等。
另外,本说明书实施例中,部署数据备份模块时,可以采用独立的进程使得数据备份模块独立运行在SONiC系统当中。当然,对于安全性要求更高的情景,数据备份模块可以运行在外置的FPGA子卡或其他服务器上,当数据备份模块需要与其他进程(动态异构冗余执行体、命令行输入模块等)进行交互时,可以通过加密传输的方式保证数据传输链路的安全性。
图2为本说明书提供的一种网络节点操作系统配置数据内生安全防护方法的流程示意图。
S100:当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块。
本说明书实施例中,将ACL配置数据作为需要进行防护的目标配置数据。在SONiC当中,ACL的配置可以通过直接写入系统原生redis的4号数据库即可生效,无需其他的管理操作。但对于管理起来比较复杂的数据,例如bgp配置,则需要增加bgpmgr-orchagent的管理模块,该bgpmgr-orchagent的管理模块可以参考SONiC原生代码当中swss模块里的对应子模块实现。因而。在本说明书实施例中,以管理起来相对简洁(同样意味着被攻击和篡改的风险更大)的ACL配置数据作为需要进行防护的目标配置数据为例,对具体的技术方案进行阐述。
命令行输入模块是基于SONiC系统的源码进行的扩展,本说明书实施例针对白盒交换机ACL功能,扩展原生的ACL命令,将用户配置的ACL配置数据进行安全加固。
实际在使用时,往往采用直接往SONiC的redis服务器的4号数据库写ACL命令的方式配置。本说明书实施例采用patch文件的方式,扩展源码的main.py文件,对ACL实现扩展。
实际上,通过不同的patch文件可以实现不同的命令行输入模块。同理,分发模块、裁决模块以及冗余执行体等也可以同步跟命令行输入模块进行代码版本配套。基于此,可以实现不同网络节点操作系统功能配置数据的加固。
例如用户A只需要针对ACL配置数据进行加固,则基于本方案,只需要向用户A提供ACL相关的代码包;用户B需要针对ACL、VLAN等多个配置数据进行加固,则需要向用户B提供融合了ACL、VLAN相关的代码包。
具体的,在所述main.py中,源码在3361行左右是对ACL TABLE的添加命令的封装,在上述代码的后面增加对ACL RULE命令的封装,首先通过如下代码对命令进行描述:
@add.command()
@click.argument("rule_name", metavar="<rule_name>")
@click.option("-p", "--priority")
以上代码用于描述ACL RULE命令的参数,其中第三行的“-p”即为需要在命令行当中设置优先级参数。实际使用时,ACL RULE的命令如下:
“sudo config acl add rule DATAACL1:RULE_1 -p 9999 -a FORWARD SRC_IP10.0.0.2/32”(DATAACL1为acl表名,RULE_1为规则名,使用冒号:连接,-p为PRIORITY,-a为PACKET_ACTION)。
完成上述的命令描述后,则继续开发命令具体执行参数,本说明书实施例中命令执行参数只完成下述两件工作:
1、将命令行输入的参数封装成一个字符串,该字符串即为封装后的网络消息流;
2、将字符串(网络消息流)通过socket接口发送给分发模块。
所述字符串的封装代码如下:
message = f'HMSET ACL_RULE|{rule_name.replace(":", "|")}'
if priority:
message = f'{message} PRIORITY {priority}'
if action:
message = f'{message} PACKET_ACTION {action}'
此处使用了python中的格式化字符串技术,最终形成的待发送字符串为“HMSETACL_RULE|DATAACL1:RULE_1 PRIORITY 9999 PACKET_ACTION FORWARD SRC_IP 10.0.0.2/32”。
所述将字符串(网络消息流)通过socket接口发送给分发模块,具体代码如下:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((‘127.0.0.1’, 6666))
client_socket.send(message.encode())
即通过本地TCP的6666端口,命令行输入模块将网络消息流分别发送给分发模块和数据备份模块。所述分发模块和数据备份模块当中分别运行一个TCP服务器来接收消息,绑定的端口对应的端口号分别为6666和6667。
S102:当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块。
本说明书实施例当中,数据备份模块采用客户端-服务器的C-S架构,数据备份模块本身作为服务器,与数据备份模块交互的裁决模块和分发模块作为客户端。
本说明书实施例中,数据备份模块采用C语言实现,仅包含两个C语言源文件,一是memory_db.c,另一个是data_backup_server.c。源文件memory_db.c实现一个轻量化的内存数据库,提供db_open、db_close、db_store、db_get等接口,并编译成一个库文件;源文件data_backup_server.c链接memory_db.c编译生成的库,生成可执行程序作为数据备份模块的主进程,所述主进程当中接收来自客户端的交互请求,然后调用db_open等接口读取或更新数据。
例如,主进程当中的TCP服务器接收到“HMSET ACL_RULE|DATAACL1:RULE_1PRIORITY 9999 PACKET_ACTION FORWARD SRC_IP 10.0.0.2/32”的数据,则通过db_open创建一个名为“ACL”的数据库,而后将键设置为“ACL_RULE|DATAACL1:RULE_1”,将值设置为“PRIORITY 9999 PACKET_ACTION FORWARD SRC_IP 10.0.0.2/32”,对数据进行保存。
S104:当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块。
分发模块完成三项工作,其一作为TCP服务器,时刻监听来自前述的命令行输入模块发来的消息。
当分发模块接收到消息后,需要调用各个动态异构执行体的接口,对数据进行下发。本说明书实施例当中动态异构执行体分别为不同版本的redis、dragonflydb和keydb,其中redis数据库的交互接口采用hiredis来实现。dragonflydb和keydb也有相应的现有类型的交互接口。
实际上,所述dragonflydb和keydb都兼容hiredis接口,均可通过hiredis来实现数据交互。
最后是分发模块向同步模块发送分发成功消息,此时分发模块作为TCP的客户端,向同步模块的主进程当中的TCP服务器转发来自命令行输入模块发来的消息,告知同步模块有新的配置命令下发,触发同步逻辑。
S106:当所述各动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据。
具体的,分发模块调用hiredis接口,可以跟各个动态异构冗余执行体进行直接通信。本实施例当中的动态异构冗余执行体为redis等数据库,不同的动态异构冗余执行体相对应的数据库的版本不同。可以是不同版本的redis、dragonflydb和keydb。各动态异构冗余执行体存储目标配置数据时,采用键-值的形式进行存储。
S108:当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块。
数据同步工作的目的,是不断从多个动态异构冗余执行体当中获取数据进行比较,并写回到网络节点操作系统当中。为了同步方便,同步模块当中保存了所有的需要进行安全加固的键,通过C语言的链表进行实现(只保存键,不保存值)。
例如,基于上述的命令行操作,同步模块会将“ACL_RULE|DATAACL1:RULE_1”键保存到链表中;如果用户又新设置了RULE2,则同步模块会将“ACL_RULE|DATAACL1:RULE_2”也添加到链表中。
当同步模块又接收到来自分发模块的“ACL_RULE|DATAACL1:RULE_1”键相关的消息,则触发事件性同步逻辑,此时同步模块分别从多个异构执行体当中读取目标配置数据,也即前述键对应的值,并将目标配置数据交由裁决模块进行一致性裁决。
除了事件触发的同步动作外,同步模块还进行事件周期性触发的同步动作。具体的,本说明书实施例设定同步周期为5min,到达同步周期后,同步模块从键链表当中依次获取键信息,而后分别从多个动态异构冗余执行体当中基于键信息读取目标配置数据。
S110:当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块。
在本说明书中,裁决模块基于从各动态异构冗余执行体处提取的目标配置数据进行一致性裁决时,所采用的裁决方法可以是现有的任一类型的裁决方法,本说明书对此不做限定。
一般的,裁决过程采用少数服从多数的方案,如果各动态异构冗余执行体存储的目标配置数据中,存在某一个动态异构冗余执行体存储的目标配置数据,与其他几个动态异构冗余执行体存储的目标配置数据不同,则说明该动态异构冗余执行体存储的目标配置数据可能存在数据紊乱的问题。裁决结果可以表征哪个动态异构冗余执行体存储的目标配置数据与其他大多数动态异构冗余执行体存储的目标配置数据不一致。
例如,同样的数据键,从动态异构冗余执行体A和动态异构冗余B当中获取的值为“value1”、从动态异构冗余执行体C当中获取的值为“value2”,那么则判定动态异构冗余执行体C与其余动态异构冗余执行体存储的目标配置数据不一致,对动态异构冗余执行体C进行下线操作。如果三个动态异构冗余执行体当中获取到的数据相互之间均不一致,那么将三个动态异构冗余执行体都下线。
以上方法可能导致动态异构冗余执行体的频繁上下线,因而不一定适用于大多数的需要裁决的场景,但本方案由于数据备份模块有较强的安全性,且执行体相对简单,因而对于裁决的性能要求不高,故而采用如上方案。
S112:当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中。
在本说明书实施例中,信任新上线的执行体,本质上是信任本申请当中的数据备份模块,从而信任基于数据备份模块当中的目标配置数据完成初始化的新上线的执行体。
对于执行体的上线和下线操作,由于本说明书实施例当中的执行体为redis等数据库服务器,可以直接通过shutdown命令使数据库下线。同时,可以基于所述的数据备份模块生成一个rdb文件,基于rdb文件的格式,同步模块可以从数据备份模块当中获取目标配置数据后生成rdb文件,所述rdb文件的格式可以通过redis相关资料获取。而后,通过rdb文件即可完成redis数据库的上线初始化。其他keydb等执行体的上线和下线操作,与redis执行体类似。
在本说明书一个可选的实施例中,由于新上线的异构冗余执行体(候选执行体)中的目标配置数据的来源是数据备份模块,并且,数据备份模块中的目标配置数据的安全性高、可靠性强,因此,新上线的异构冗余执行体所存储的目标配置数据一般是可信的,因此,对新上线的异构冗余执行体设置上线保护期,在上线保护期内,该新上线的异构冗余执行体所存储的目标配置数据为可信的,如果在新上线的异构冗余执行体处于上线保护期内重新基于多个动态异构冗余执行体分别存储的目标配置数据进行一致性裁决时,出现了裁决结果表征处于上线保护期内的异构冗余执行体所存储的目标配置数据与其他异构冗余执行体存储的目标配置数据不一致的问题,则认为其他异构冗余执行体存储的目标配置数据出现数据紊乱,此时,相信处于上线保护期内的异构冗余执行体所存储的目标配置数据是可靠准确的,而非基于少数服从多数的方案。
具体的,在所述上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中之后,针对每个未下线的动态异构冗余执行体,判断该未下线的动态异构冗余执行体存储的目标配置数据,与处于上线保护期的所述候选执行体中存储的目标配置数据是否一致;其中,该未下线的动态异构冗余执行体不处于上线保护期。
若否,则对该未下线的动态异构冗余执行体进行下线。
若是,则不进行任何操作。
另外,对于处于非上线保护期的且裁决结果跟其他执行体不一致的执行体同样进行下线操作。
S114:当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线得个动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
完成裁决后,从网络节点操作系统当中读取所述键对应配置的运行状态,若与裁决结果不一致,则将所述裁决结果重新写到网络节点操作系统当中,使配置生效。
所述的使配置生效的过程,本说明书实施例当中可以直接调用网络节点操作系统的原生redis数据库写入接口,向4号数据库写入ACL配置信息,配置即可生效;所述读取运行状态通过调用网络节点操作系统的原生redis数据库读取接口即可实现。
具体的,本说明书实施例当中同步模块也保存一个键空间,该键空间是交换机原生操作系统redis数据库当中键空间的一个子集,仅仅是将所述命令行输入模块当中获取的需要进行防护加固的配置命令相关的键进行保存。
本说明书实施例当中,同步动作是一个键、一个键依次进行的,当完成一个键-值数据的异构执行体之间的同步动作后,同步模块从原生交换机网络操作系统的数据库获取到数据(或者通过show命令等获取到原生交换机的状态),并将获取到的数据与同步后的数据进行比较,若数据不一致,则同步模块通过写数据库命令或者相关的交换机配置命令,将防护加固的配置命令相关的数据同步到交换机原生网络操作系统当中,并使得数据生效。
具体的,如果是交换机原生操作系统当中的ACL配置与异构执行体当中保存的不一致,可以直接通过写数据库操作完成;如果是交换机原生操作系统当中的vlan配置与异构执行体当中保存的不一致,则需要调用vlan config接口进行vlan配置的刷新。其他的命令则与以上两种情况类似。
本说明提供的网络节点操作系统配置数据内生安全防护方法中,在数据备份模块接收到网络消息流时,将目标配置数据备份在数据备份模块,分发模块将接收到的网络消息流分别发送给各动态异构冗余执行体,各动态异构冗余执行体存储目标配置数据,同步模块可分别读取各动态异构冗余执行体存储的目标配置数据,并由裁决模块进行一致性裁决,同步模块基于裁决结果进行执行体的上下线调度,下线存在数据紊乱的目标执行体,并上线候选执行体,候选执行体从数据备份模块中获取目标配置数据。
通过将目标配置数据备份到数据备份模块,对目标数据进行动态防护,实现了针对已知和未知威胁的防护能力,增强了网络节点操作系统配置数据的内生安全的性能。
在本说明书一个或多个实施例中S104中的,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块,可具体通过下述步骤实现,如图3所示:
S200:通过所述数据备份模块新建和/或打开指定标识对应的数据库,所述指定标识对应的数据库包括散列链描述符表、索引内存、索引内存标识、数据内存、数据内存标识。
本说明书实施例基于面向对象的编程理念,通过实例化一个DB结构体来实现指定标识对应的数据库的创建,所述DB结构体的定义如下:
typedef struct {
char *name;
int *hashlist_describer_table;
UINT8 *idxmem;
UINT8 *datmem;
int idxmem_cursor;
int datmem_cursor;
UINT8 hashtable_size;
} DB;
针对各项的具体描述如下:
项1、name作为数据库的标识,用于标识已创建的数据库。
项2、hashlist_describer_table为散列链描述符表,该表每一个表项为一个int类型的数值,该数值描述了每一条散列链表的首个表项在索引内存(即idxmem)中的位置。
项3、idxmem为索引内存,其中保存了多个索引信息,所述索引信息的结构体定义由后文所述。
项4、datmem为数据内存,其中保存了数据的值信息。
项5、idxmem_cursor为索引内存标识,本说明书实施例中该项的数值始终对应idxmem当中已使用部分内存的末尾位置。
项6、datmem_cursor为数据内存标识,本说明书实施例中该项的数值始终对应datmem当中已使用部分内存的末尾位置。
项7、hashtable_size为数据库哈希链的数量,即散列链描述符表hashlist_describer_table的大小。
所述idxmem当中保存的索引信息通过以下结构体定义:
typedef struct {
int next_idxmsg_describer;
int data_len;
int data_position;
int key_len;
char key[0];
} STRUCT_idxmsg;
各项的具体描述如下:
项1、next_idxmsg_describer记录当前索引信息所在散列链表当中下一项在idxmem当中的位置;
项2、data_len记录当前索引信息对应的数据值在datmem当中的长度;
项3、data_positon记录当前索引信息对应的数据值在datmem当中的位置;
项4、key_len记录当前索引信息对应的数据键的长度;
项5、key记录当前索引信息对应的数据键的内容。
具体的,参考图4。图4所示示例是保存了三对键-值形式的数据后的数据库状态,保存的数据分别为{“Alpha”, “a”}、{“Beta”, “bb”}、{“Gamma”, “ccc”}。
图4所示示例当中,hashtable_size的值为3,即最多三条散列链,但实际hashlist_describer_table当中只有两个有效描述符,第三个描述符值为-1,说明第三条散列链为空。表hashlist_describer_table的描述符,代表了对应散列链表第一个表项在idxmem当中的位置,例如0号散列链表(对应的键的哈希值均为0)的描述符值为25,含义为该散列链表第一个表项的位置是25,即“Gamma”键对应的索引信息;同时,0号散列链表上有两个表项,第一个表项当中第一个元素(STRUCT_idxmsg结构体当中的next_idxmsg_describer项)的值为0,代表当前0号散列链表的下一个表项在idxmem当中的位置为0,即“Alpha”键对应的索引信息。索引信息当中的第三个元素(STRUCT_idxmsg结构体当中的data_position项)含义为键对应的值在datmem当中的位置,例如“Gamma”键对应的索引信息当中data_position项的值为5,即“Gamma”键对应的值“ccc”在datmem当中的位置为5。
S202:从所述网络消息流中解析得到目标配置数据,将所述目标配置数据作为待保存数据,并确定所述待保存数据的键,确定所述待保存数据的键的哈希值。
本说明书实施例通过以下三行代码完成哈希值计算:
for (i = 1; (c = *key++) != 0; i++)
hval += c * i;
return(hval % db->hashtable_size);
为针对字符串常用的一种哈希方法。根据上述方法,图3所示的示例当中,键“Alpha”和“Gamma”的哈希值为0,键“Beta”的哈希值为1。
S204:根据所述待保存数据的键的哈希值,查找所述指定标识对应的数据库的散列链描述符表,得到所述待保存数据的键对应的散列链描述符,并根据所述待保存数据的键对应的散列链描述符,确定所述待保存数据的键对应的目标散列链;所述目标散列链包括多项已保存数据的索引信息。
S206:根据所述索引信息,判断所述指定标识对应的数据库中是否存在所述待保存数据的键。若是,执行步骤S208,否则执行步骤S210。
第一步:根据所述待保存数据的键对应的散列链描述符,定位所述目标散列链的首项在所述索引内存的位置;其中,所述目标散列链包括多项已保存数据的索引信息,所述索引信息包括所述目标散列链中每项已保存数据的下一项已保存数据在所述索引内存的位置、所述每项已保存数据的值的长度、所述每项已保存数据的值在所述数据内存当中的位置、所述每项已保存数据的键的长度,以及所述每项已保存数据的键的内容。
首先,依然通过计算出来的待保存数据的键的哈希值,从待保存数据的键对应的散列链描述符表中获取待保存数据的键对应的散列链描述符。
仍以图4所示的示例,如果要获取“Alpha”键的数据,那么首先计算字符串“Alpha”的哈希值,按照本说明书实施例前述的哈希算法,该值计算后为0。
通过哈希值获取散列链描述符可以直接通过C语言取指针指向内存的数值操作来获取,具体的示例代码如下:
int hashlist_describer = *(db->hashlist_describer_table + hashval);
通过上述代码,即可获得“Alpha”键对应的散列链描述符。
进一步的,本说明书实施例中,索引内存idxmem实际上是一个压缩集合数据结构,集合当中的项即为索引信息,通过结构体STRUCT_idxmsg来定义。该结构体当中包含了所述的所在散列链的下一项在索引内存的位置(next_idxmsg_describer)、已保存数据的值的长度(data_len)、已保存数据的值在数据内存当中的位置(data_position)、已保存数据的键的长度(key_len)、已保存数据的键的内容(key)。
在DB结构体当中,idxmem是定义成UINT8 *类型(即C语言的char类型),当涉及到处理idxmem当中的具体索引信息时,可以将指针强制类型转换成STRUCT_idxmsg *类型,此时通过key[0]项可以直接访问键内容,且key[0]不占STRUCT_idxmsg的sizeof大小。此方案借鉴了以太网通信协议栈的开发方式,STRUCT_idxmsg结构体相当于索引信息的头,如此可以以极高的效率处理索引信息。
仍以图4所示的示例,获取到散列链描述符hashlist_describer的值为44后,说明对应散列链的第一项在idxmem当中的位置是44,由此可以拿到该散列链当中的第一个索引信息:
STRUCT_idxmsg *idxmsg = (STRUCT_idxmsg *)(db->idxmem + hashlist_describer);
通过上述代码,idxmsg当中即为获取到的散列链当中的第一个索引信息。
第二步:遍历所述目标散列链包含的每项已保存数据的索引信息,针对所述目标散列链中的每项已保存数据的索引信息,将该项已保存数据的索引信息中该项已保存数据的键的内容,与所述待保存数据的键的内容进行比对。
遍历的过程代码如下所示:
while (idxmsg->next_idxmsg_describer >=0) {
if (strcmp(idxmsg->key ,key) == 0)
return (idxmsg);
idxmsg = (STRUCT_idxmsg *)(db->idxmem + next_idxmsg_describer);
}
如果查到已保存的键的内容与待保存的键的内容一致,则返回idxmsg指针,该指针指向的STRUCT_idxmsg结构体当中保存了“Alpha”键对应的索引信息。
如果待保存的键不存在,则上述步骤返回一个空指针。
第三步:若所述目标散列链包含的各项已保存数据的索引信息中存在与所述待保存数据的键的内容一致的已保存数据的键,则所述指定标识对应的数据库中存在待保存数据的键。
第四步:若所述目标散列链包含的各项已保存数据的索引信息中均不存在与所述待保存数据的键的内容一致的已保存数据的键,则所述指定标识对应的数据库中不存在待保存数据的键。
S208:执行数据更新动作,所述数据更新动作至少包括删除所述索引内存中原数据的索引信息、所述数据内存的数据信息,以及更新散列链描述符表。
如果指定标识对应的数据库中存在待保存数据的键,相当于,指定标识对应的数据库中存在与待保存数据的键相对应的值,该值可能与待保存数据的值相同也可能不同。由于制定表示对应的数据库中所存储的数据均为数据备份模块需要进行备份的数据,为了保证数据的真实性和可靠性,在此步骤中,需要将原本在指定标识对应的数据库中,与待保存数据的键相对应的值(并非是待保存数据的值)进行删除,并在删除之后,再将待保存数据的值存储指定标识对应的数据库,以实现将目标数据(待保存数据)存入指定标识对应的数据库中。
一种可选的数据更新动作如下:
第一步:将所述指定标识对应的数据库中,与所述待保存数据的键相同的已保存数据的键所对应的已保存数据作为待删除数据。
第二步:获取所述待删除数据的索引信息,确定所述待删除数据的索引信息在所述目标散列链中的位置,并根据所述待删除数据的索引信息在所述目标散列链中的位置,判断所述待删除数据的索引信息是否位于所述目标散列链的首项。
本说明书实施例当中,删除动作通过调用_db_del静态函数实现,如前所述,该函数相当于DB对象的一个成员函数,其定义如下:
static int _db_del(DB *, const STRUCT_idxmsg *, int);
其中传入的第二个参数,实际上是获取到的待删除数据的索引信息,待删除数据的索引信息的获取方式与前述S204和S206类似,此处不再赘述。
第三步:当所述待删除数据的索引信息位于所述目标散列链的首项时,将所述目标散列链中所述待删除数据的索引信息的下一项已保存数据的索引信息更新到所述散列链描述符表中。
上述步骤通过如下代码实现:
*(db->hashlist_describer_table + hashval) = del_key_idxmsg->next_idxmsg_describer;
由此,可以完成哈希链描述符表中描述符的更新。
第四步:当所述待删除数据的索引信息位于所述目标散列链的非首项时,将待删除数据的索引信息从所述目标散列链中移除。
所述删除步骤采用一个while循环来实现,通过循环实现散列链上各个元素的遍历,目的是找到待删除键对应的索引信息所属的散列链的上一项散列信息,如此可以将上一项的next_idxmsg_describer赋值为当前待删除的索引信息的next_idxmsg_describer,即可实现移除操作。
第五步:遍历所述散列链描述符表,将所述散列链描述符表中的描述符信息更新为删除数据后新的描述符信息。
散列链描述符表需要针对键的删除进行相应的数据更新,本说明书实施例采用的方法是,将每一个描述符的值跟待删除键在idxmem当中的位置进行比较,当前者小于后者,则数值不变,反之则前者减去待删除键对应的索引信息的长度。
具体的,如图3所示的示例。当前散列链描述符表当中有两个有效值,分别为44和22,假设此时要删除键“Alpha”,键“Alpha”对应的索引信息的长度为22,int del_key_idxmsg_size = sizeof(STRUCT_idxmsg) + strlen(del_key_idxmsg->key) + 1;)键“Alpha”在idxmem中的位置是0,那么,由于44和22都大于0,此时都需要减去22,即完成操作后散列链描述符表当中的数值为[22, 0, -1]。
第六步:遍历各个散列链表,将散列链表当中的每一个表项的下一项在索引内存的位置信息更新为删除数据后新的位置信息。
该步骤为更新各个idxmsg->next_idxmsg_describer信息,过程与前述第五步类似,不再赘述。
第七步:分别定位索引内存和数据内存的删除起始节点和删除终止节点。
以上步骤只是更新了idxmem当中各个索引信息的数值,并未真正删除索引信息和数据信息。
通过如下代码实现:
int idxmem_delete_start = del_key_idxmsg - db->idxmem;
int idxmem_delete_end = idxmem_delete_start + del_key_idxmsg_size;
int datmem_delete_start = del_key_idxmsg->data_position;
int datmem_delete_end = del_key_idxmsg->data_position + del_key_idxmsg->data_len;
由此,可以定位到idxmem和datmem当中需要删除部分的起点和终点。
第八步:创建临时内存缓冲区,所述临时内存缓冲区用于分别保存索引内存和数据内存当中的原始数据,基于所述删除起始节点和删除终止节点,分别将删除了对应片段后的数据写回到所述数据库的索引内存和数据内存当中。
以上操作通过memncpy函数实现,拷贝过程通过业界常用的方法即可实现,不再赘述。
通过以上步骤可以看出,本申请方案对应的数据备份过程,通过引入散列链描述符表、索引内存、数据内存、索引信息、索引内存标识、数据内存标识等元素,参考了linux内存管理的GDT、IDT等方法,也参考了以太网协议栈实现方法,利用C语言强大的指针处理功能,辅以面向对象的编程思想,十分高效地实现了一个针对非关系型键-值数据的备份过程。整个备份子步骤易维护、易移植、数据备份过程可追溯,为数据备份模块在不同平台上部署运行提供了十分强大的灵活性。
S210:执行数据添加动作;其中,所述数据添加动作包括更新散列链描述符表、索引内存中索引信息的添加和数据内存中待保存的数据的值内容的添加。
如果指定标识对应的数据库中不存在待保存数据的键,则需要将待保存数据的键以及待保存数据的值存入指定标识对应的数据库,才能够实现将目标数据(待保存数据)以键-值的形式存储在指定标识对应的数据库。因此,在此步骤中,执行数据添加动作。
一种可选的数据添加动作如下:
第一步:根据所述待保存数据的键对应的散列链描述符,确定所述待保存数据的键对应的目标散列链的首项在所述索引内存中的目标位置。
通过如下代码实现通过索引内存标识定位到索引内存的末尾位置:
STRUCT_idxmsg idxmsg = (STRUCT_idxmsg *)(db->idxmem + db->idxmem_cursor);
其中,idxmem_cursor为一个状态变量,即当前数据库的idxmem内存当中有效数据的末尾位置。本说明书实施例虽然是以C语言开发,但借鉴了面向对象的编程理念。DB结构体的实例即为一个对象;该对象当中的idxmem_cursor等可以视为对象的成员变量;与DB结构体相关的静态函数_db_hash、_db_add、_db_del等可视为成员函数。
进一步的,可以通过C语言取指针运算实现根据所述待保存数据的键对应的散列链描述符,确定所述待保存数据的键对应的散列链的首项在所述索引内存中的目标位置,即*(db->hashlist_describer_table + hashval)。
第二步:创建指定索引信息散列链表项,将所述指定索引信息散列链表项插入到所述目标散列链的首项之前。
在此步骤中,新创建的指定索引信息散列链表项在插入到目标散列链中后,该指定索引信息散列链表项在目标散列链中的位置为首项,目标散列链中原本的首项设置为新首项的下一项,其他项以此类推。
通过如下代码实现信息更新:
idxmsg->next_idxmsg_describer = *(db->hashlist_describer_table +hashval);
*(db->hashlist_describer_table + hashval) = db->idxmem_cursor =new_idxmem_cursor;
上述两行代码中第一行实现了将原链表首项设置为新首项的下一项;第二行实现了,同步将idxmem_cursor变量的值也一起完成更新。
第三步:根据所述数据内存标识,获取所述待保存数据的值在所述数据内存中的位置。
第四步:将所述待保存数据的值的长度、所述待保存数据的值在所述数据内存中的位置、所述待保存数据的键的长度、所述待保存数据的键的内容更新到所述指定索引信息散列链表项中。
以上步骤可以通过如下代码实现:
idxmsg->datalen = strlen(data) + 1;
idxmsg->data_position = db->datmem_cursor
idxmsg->keylen = strlen(key) + 1;
strcpy(idxmsg->key, key);
本说明书实施例当中,datmem_cursor即为数据内存的标识,其含义为当前datmem当中有效数据的末尾位置。
第五步:根据所述索引内存标识,定位所述索引内存的末尾位置,并在所述索引内存的末尾位置写入所述待保存数据的值,并更新所述数据内存标识的值。
以上步骤可以通过如下代码实现:
char *datawrite = (db->datmem + idxmsg->data_position);
strcpy(datawrite, data);
db->datmem_cursor = db->datmem_cursor + strlen(data) + 1;
另外,在执行上述第三、四、五步,涉及到字符串长度时,均要额外加1,原因是需要额外的一个字符空间来保存’\0’字符。
以上为本说明书的一个或多个实施例提供的网络节点操作系统配置数据内生安全防护方法,基于同样的思路,本说明书还提供了相应的网络节点操作系统配置数据内生安全防护装置,如图5所示。
图5为本说明书提供的一种网络节点操作系统配置数据内生安全防护装置示意图,所述装置应用于目标单元,所述目标单元预先部署在白盒交换机的网络节点操作系统中;
所述目标单元包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块、至少三个动态异构冗余执行体,以及待上线的候选执行体;
所述装置包括:
命令行输入模块300,用于当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块;
数据备份模块302,用于当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块;
分发模块304,用于当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块;
目标配置数据存储模块306,用于当所述动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据;
同步模块308,用于当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块;
裁决模块310,用于当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块;
上下线调度模块312,用于当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中;
配置数据生效模块314,用于当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线得个动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1所示的网络节点操作系统配置数据内生安全防护方法。
本说明书还提供了图6所示的电子设备的示意结构图。如图6所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图2所示的网络节点操作系统配置数据内生安全防护方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (10)

1.一种网络节点操作系统配置数据内生安全防护方法,其特征在于,所述方法应用于目标单元,所述目标单元预先部署在白盒交换机的网络节点操作系统中;
所述目标单元包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块、至少三个动态异构冗余执行体,以及待上线的候选执行体;
所述方法包括:
当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块;
当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块;
当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块;
当所述各动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据;
当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块;
当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块;
当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定存在数据紊乱的目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中;
当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线的各动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
2.如权利要求1所述的方法,其特征在于,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块,具体包括:
通过所述数据备份模块新建和/或打开指定标识对应的数据库,所述指定标识对应的数据库包括散列链描述符表、索引内存、索引内存标识、数据内存、数据内存标识;
从所述网络消息流中解析得到目标配置数据,将所述目标配置数据作为待保存数据,并确定所述待保存数据的键;
确定所述待保存数据的键的哈希值;
根据所述待保存数据的键的哈希值,查找所述指定标识对应的数据库的散列链描述符表,得到所述待保存数据的键对应的散列链描述符,并根据所述待保存数据的键对应的散列链描述符,确定所述待保存数据的键对应的目标散列链;所述目标散列链包括多项已保存数据的索引信息;
根据所述索引信息,判断所述指定标识对应的数据库中是否存在所述待保存数据的键;
如果所述指定标识对应的数据库中不存在待保存数据的键,则执行数据添加动作;其中,所述数据添加动作包括更新所述散列链描述符表、更新所述索引内存中索引信息和在所述数据内存添加所述待保存的数据的值;
如果所述指定标识对应的数据库中存在待保存数据的键,则执行数据更新动作,所述数据更新动作至少包括删除所述索引内存中原数据的索引信息、删除所述数据内存的数据信息,以及更新所述散列链描述符表。
3.如权利要求2所述的方法,其特征在于,根据所述索引信息,判断所述指定标识对应的数据库中是否存在所述待保存数据,具体包括:
根据所述待保存数据的键对应的散列链描述符,定位所述目标散列链的首项在所述索引内存的位置;其中,所述目标散列链包括多项已保存数据的索引信息,所述索引信息包括所述目标散列链中每项已保存数据的下一项已保存数据在所述索引内存的位置、所述每项已保存数据的值的长度、所述每项已保存数据的值在所述数据内存当中的位置、所述每项已保存数据的键的长度,以及所述每项已保存数据的键的内容;
遍历所述目标散列链包含的每项已保存数据的索引信息,针对所述目标散列链中的每项已保存数据的索引信息,将该项已保存数据的索引信息中该项已保存数据的键的内容,与所述待保存数据的键的内容进行比对;
若所述目标散列链包含的各项已保存数据的索引信息中存在与所述待保存数据的键的内容一致的已保存数据的键,则所述指定标识对应的数据库中存在待保存数据的键;
若所述目标散列链包含的各项已保存数据的索引信息中均不存在与所述待保存数据的键的内容一致的已保存数据的键,则所述指定标识对应的数据库中不存在待保存数据的键。
4.如权利要求2所述的方法,其特征在于,所述执行数据添加动作,具体包括:
根据所述待保存数据的键对应的散列链描述符,确定所述待保存数据的键对应的目标散列链的首项在所述索引内存中的目标位置;
创建指定索引信息散列链表项,将所述指定索引信息散列链表项插入到所述目标散列链的首项之前;
根据所述数据内存标识,获取所述待保存数据的值在所述数据内存中的位置;
将所述待保存数据的值的长度、所述待保存数据的值在所述数据内存中的位置、所述待保存数据的键的长度、所述待保存数据的键的内容更新到所述指定索引信息散列链表项中;
根据所述索引内存标识,定位所述索引内存的末尾位置,并在所述索引内存的末尾位置写入所述待保存数据的值,并更新所述数据内存标识的值。
5.如权利要求2所述的方法,其特征在于,所述执行数据更新动作,具体包括:
将所述指定标识对应的数据库中,与所述待保存数据的键相同的已保存数据的键所对应的已保存数据作为待删除数据;
获取所述待删除数据的索引信息,确定所述待删除数据的索引信息在所述目标散列链中的位置,并根据所述待删除数据的索引信息在所述目标散列链中的位置,判断所述待删除数据的索引信息是否位于所述目标散列链的首项;
当所述待删除数据的索引信息位于所述目标散列链的首项时,将所述目标散列链中所述待删除数据的索引信息的下一项已保存数据的索引信息更新到所述散列链描述符表中;
当所述待删除数据的索引信息位于所述目标散列链的非首项时,将待删除数据的索引信息从所述目标散列链中移除;
遍历所述散列链描述符表,将所述散列链描述符表中的描述符信息更新为删除数据后新的描述符信息;
遍历各个散列链表,将散列链表当中的每一个表项的下一项在索引内存的位置信息更新为删除数据后新的位置信息;
分别定位索引内存和数据内存的删除起始节点和删除终止节点;
创建临时内存缓冲区,所述临时内存缓冲区用于分别保存索引内存和数据内存当中的原始数据,基于所述删除起始节点和删除终止节点,分别将删除了对应片段后的数据写回到所述数据库的索引内存和数据内存当中。
6.如权利要求1所述的方法,其特征在于,预先部署命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块,具体包括:
预先将指定的源代码集成到白盒交换机开放网络操作系统的源码中,编译集成后的所述源码得到镜像容器,将所述镜像容器安装到所述白盒交换机,并在所述白盒交换机上电启动后,在运行白盒交换机的网络节点操作系统中运行所述镜像容器对应的扩展容器,所述扩展容器中部署有命令行输入模块、同步模块、裁决模块和分发模块;
或者,
预先将开发完成的扩展容器发布为镜像容器,并在所述白盒交换机上电启动后,将所述镜像容器加载到所述白盒交换机的网络节点操作系统中;其中,所述扩展容器中部署有命令行输入模块、同步模块、裁决模块和分发模块。
7.如权利要求1所述的方法,其特征在于,所述候选执行体被预先设置上线保护期;
在所述上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中之后,所述方法还包括:
针对每个未下线的动态异构冗余执行体,判断该未下线的动态异构冗余执行体存储的目标配置数据,与处于上线保护期的所述候选执行体中存储的目标配置数据是否一致;其中,该未下线的动态异构冗余执行体不处于上线保护期;
若否,则对该未下线的动态异构冗余执行体进行下线。
8.一种网络节点操作系统配置数据内生安全防护装置,其特征在于,所述装置应用于目标单元,所述目标单元预先部署在白盒交换机的网络节点操作系统中;
所述目标单元包括命令行输入模块、分发模块、裁决模块、同步模块、数据备份模块、至少三个动态异构冗余执行体,以及待上线的候选执行体;
所述装置包括:
命令行输入模块,用于当所述命令行输入模块接收到用户输入的配置命令,将所述配置命令封装成网络消息流,并由所述命令行输入模块将所述网络消息流分别发送给所述分发模块和所述数据备份模块;
数据备份模块,用于当所述数据备份模块接收到所述网络消息流时,由所述数据备份模块从所述网络消息流中解析得到目标配置数据,并将所述目标配置数据存储在所述数据备份模块;
分发模块,用于当所述分发模块接收到所述网络消息流时,由所述分发模块将所述网络消息流分别发送给各动态异构冗余执行体,并在分发成功时生成分发成功消息,将所述分发成功消息发送给所述同步模块;
目标配置数据存储模块,用于当所述动态异构冗余执行体接收到所述网络消息流时,将从所述网络消息流中解析得到的目标配置数据,并存储所述目标配置数据;
同步模块,用于当所述同步模块接收到所述分发成功消息时,所述同步模块分别读取所述各动态异构冗余执行体中存储的目标配置数据,并将所述各动态异构冗余执行体分别存储的目标配置数据发送给所述裁决模块;
裁决模块,用于当所述裁决模块接收所述各动态异构冗余执行体分别存储的目标配置数据时,所述裁决模块根据所述各动态异构冗余执行体分别存储的目标配置数据进行一致性裁决,确定裁决结果,并将所述裁决结果返回给所述同步模块;
上下线调度模块,用于当所述同步模块接收到所述裁决结果时,根据所述裁决结果,从所述各动态异构冗余执行体中确定存在数据紊乱的目标执行体,并对所述目标执行体进行下线清洗,并上线所述待上线的候选执行体,由上线后的所述候选执行体从所述数据备份模块中读取所述网络消息流,以便上线后的所述候选执行体将从所述网络消息流中解析的目标配置数据存储在上线后的所述候选执行体中;
配置数据生效模块,用于当所述候选执行体存储所述目标配置数据时,由所述同步模块将处于上线的各动态异构冗余执行体中存储的所述目标配置数据同步到所述网络节点操作系统,以使所述目标配置数据生效。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
CN202311481291.6A 2023-11-08 2023-11-08 一种网络节点操作系统配置数据内生安全防护方法 Active CN117221014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311481291.6A CN117221014B (zh) 2023-11-08 2023-11-08 一种网络节点操作系统配置数据内生安全防护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311481291.6A CN117221014B (zh) 2023-11-08 2023-11-08 一种网络节点操作系统配置数据内生安全防护方法

Publications (2)

Publication Number Publication Date
CN117221014A CN117221014A (zh) 2023-12-12
CN117221014B true CN117221014B (zh) 2024-01-26

Family

ID=89049674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311481291.6A Active CN117221014B (zh) 2023-11-08 2023-11-08 一种网络节点操作系统配置数据内生安全防护方法

Country Status (1)

Country Link
CN (1) CN117221014B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111800385A (zh) * 2020-06-04 2020-10-20 河南信大网御科技有限公司 分布式裁决方法、分布式裁决系统及拟态构造架构
CN112019557A (zh) * 2020-09-02 2020-12-01 北京天融信网络安全技术有限公司 一种数据处理方法及装置
CN113285917A (zh) * 2021-04-07 2021-08-20 中国人民解放军战略支援部队信息工程大学 工业网络内生安全边界防护方法、设备及架构
CN113282661A (zh) * 2021-05-31 2021-08-20 河南信大网御科技有限公司 异构执行体可信配置同步方法及系统
CN115408371A (zh) * 2022-10-31 2022-11-29 之江实验室 一种redis数据库动态冗余部署方法和装置
CN116436936A (zh) * 2023-06-14 2023-07-14 之江实验室 一种数据存储系统、方法、存储介质及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015195643A1 (en) * 2014-06-16 2015-12-23 Coldlight Solutions, Llc An architecture and methodology for performing autonomous analytics over multiple actual and virtual devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111800385A (zh) * 2020-06-04 2020-10-20 河南信大网御科技有限公司 分布式裁决方法、分布式裁决系统及拟态构造架构
CN112019557A (zh) * 2020-09-02 2020-12-01 北京天融信网络安全技术有限公司 一种数据处理方法及装置
CN113285917A (zh) * 2021-04-07 2021-08-20 中国人民解放军战略支援部队信息工程大学 工业网络内生安全边界防护方法、设备及架构
CN113282661A (zh) * 2021-05-31 2021-08-20 河南信大网御科技有限公司 异构执行体可信配置同步方法及系统
CN115408371A (zh) * 2022-10-31 2022-11-29 之江实验室 一种redis数据库动态冗余部署方法和装置
CN116436936A (zh) * 2023-06-14 2023-07-14 之江实验室 一种数据存储系统、方法、存储介质及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于增强学习的自适应动态防御机制;顾泽宇;小型微型计算机系统;全文 *

Also Published As

Publication number Publication date
CN117221014A (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
CN107562513B (zh) 一种基于java的智能合约生命周期的管理方法
US9900374B2 (en) Application bundle management across mixed file system types
US9292278B2 (en) Providing high availability for state-aware applications
FR2872605A1 (fr) Procede de gestion d'un processus logiciel, procede et systeme de redistribution ou de continuite de fonctionnement dans une architecture multi-ordinateurs
US10824641B1 (en) Deterministic query-based replication
US11099837B2 (en) Providing build avoidance without requiring local source code
US9454382B2 (en) Verification of UML state machines
CN117221014B (zh) 一种网络节点操作系统配置数据内生安全防护方法
CN114020840A (zh) 一种数据处理方法、装置、服务器、存储介质及产品
CN112035466B (zh) 一种区块链查询外置索引开发框架
CN111427863B (zh) 一种基于领域模型的数据迁移方法、装置及设备
CN116150273A (zh) 数据处理方法、装置、计算机设备及存储介质
CN116048886A (zh) 一种进行区块链节点主备切换的方法和装置
US7305554B2 (en) Dynamic acquisition of state during security system reconfiguration
CN116010992A (zh) 一种数据处理方法、装置、可读存储介质及电子设备
CN108153799B (zh) 数据库访问控制方法、装置和数据库系统
EP3881515B1 (fr) Système de supervision formelle de communications
CN112835865A (zh) 一种应用热部署系统、方法及装置
Klaudel Compositional high-level Petri net semantics of a parallel programming language with procedures
CN111930441A (zh) 一种基于consul的配置文件管理系统及方法
CN114816579B (zh) 一种基于工业互联网平台的SaaS化工业APP接入方法
CN116432185B (zh) 一种异常检测方法、装置、可读存储介质及电子设备
US11514017B2 (en) Systems and methods for provisioning a new secondary IdentityIQ instance to an existing IdentityIQ instance
US11520781B2 (en) Efficient bulk loading multiple rows or partitions for a single target table
US20240127148A1 (en) Delta based task analysis for ci systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant