You are on page 1of 27

LOGO

拟态交换机工程技术要点 2
裁决与调度技术

宋帅康
拟态交换机项目团队
汇报提纲

一、交换机拟态裁决系统

二、交换机反馈调度系统

Thursday, November 9, 2023 2


1 交换机拟态裁决系统

Thursday, November 9, 2023 3


交换机的拟态界

管理配置
 拟态界的设置
CLI SNMP … Web

 传统交换机的功能结构分为数据转发平面、 行
协议控制平面和管理配置平面。 协议控制 体
 拟态交换机将传统交换机功能结构中的管理 VLAN OSPF …
配置平面和协议控制平面抽象为执行体。
 拟态交换机的拟态界包含管理配置平面和协
数据转发
议控制平面。
查找 转发
接口卡 接口卡
FIB 表 处理

Thursday, November 9, 2023 4


裁决通道设计

 消息通道的分类
异 Get Kernel 交
 拟态交换机的异构执行体与交换芯片间共建有 4 条消 构 换
息通道,分别用于不同事务。
执 芯
行 Set kernel 片
 Get/Set Host 通道用于管理配置平面对配置文件的访

问。
 Get/Set Kernel 通道用于管理配置平面、协议控制平面 Get Host 配
与交换芯片的交互。 置
 裁决模块就建设在这些消息通道中,控制执行体与系 文
统底层的所有交互。
Set Host 件

Thursday, November 9, 2023 5


裁决通道设计

Get Request
Get Get
Channel Channel
 裁决

的模位置 [kernel/ [kernel/
host] host]
Get Reply

 交换机的拟态裁决模块参与构建了执



行体与输出代理模块通信的通道。

代输



体行
 拟态裁决模块对执行体发出的 Set 请



求进行裁决,其他消息透传。 Set Request Set Request Set Request
Set Set
Channel Channel
[kernel/ [kernel/
host] host]
Set Reply

Thursday, November 9, 2023 6


裁决通道设计

4 N
bytes bytes  裁决的内容

 执行体产生的所有交互请求被归一化为统一的
iCmd Msg 消息格式。
 消息被封装为一个定长命令字 + 不定长消息内
enum iCmd{ 容组成的结构体。
……  结构体被封装入 UDP 报文进行发送。
DRV_CMD_SET_PORTSPEED,
DRV_CMD_GET_PORTSPEED,  不同的消息通道使用不同的 UDP 端口号进行
DRV_CMD_SET_VLAN_PVID, 区分。
DRV_CMD_GET_VLAN_MEMBER,
……
};

Thursday, November 9, 2023 7


裁决的总体流程
体行
接收执
消息
 裁决流程

消
体息子流程:

接收执
消息队列 Y 超时裁决子
为空? 流程  接收执行体消息,维护会话,压入消息队列
 消息分组与转储子流程:
N
 消息分组,消息再封装,压入消息缓存区
消息分组与
转储  裁决子流程:
 筛选消息缓存区中大小为 3 的分组
消息缓存  超时裁决子流程:
N 中有某一
分组大小  筛选消息缓存区中超时未满的分组,通过分
达到 3
组大小确定裁决结果
Y

裁决子流程

Thursday, November 9, 2023 8


裁决的总体流程
消息
体 接收
行 执  裁决流程

 拟态裁决

块要的裁决流程如下:

消息队列
 Step1 :网络收发包模块获取到某一执行体发出的
Set 消息;
消息分组与转储  Step2 :将该消息压入消息队列;
 Step3 :需处理模块从消息队列中读出一个消息,
并将其置入相应的消息缓存区;
 Step4 :裁决模块轮询消息缓存中各存储单元的大
消息缓存 小,产生裁决结果。

分组未超时,分组大小为
分组超时,但分组大小为 3
分组超时,但分组大小不足 22,裁决成功
,裁决失败

Thursday, November 9, 2023 9


接收执行体消息

 会话保持功能

 监听各事件相应的 UDP 端口,直接接收执


NOS1 NOS2 NOS3
行体信息。
 执行体与裁决模块间的通信采用请求 - 确认
Set
Set Rep
Req Set
Set Rep
Req Set
Set Rep
Req
机制,使用短链接方式,故裁决在暂存执行
体 Socket ,以保证回复报文的正确发送。

struct sockaddr_in{
裁决
块 模
……
in_port_t sin_port;
struct in_addr sin_addr;
…… Set Rep
Req
};

Thursday, November 9, 2023 10


接收执行体消息

NOS1 NOS2 NOS3

 Socket 暂存功能 iCmd:a Sock:sock_a iCmd:a Sock:sock_a iCmd:a Sock:sock_a

iCmd:b Sock:sock_b iCmd:b Sock:sock_b iCmd:b Sock:sock_b


 裁决模块用以存放执行体 Socket 的数据结构
… …
为一个 map 型数组,数组大小为执行体个 iCmd:c Sock:sock_c


数, map 中保存 iCmd 与 Socket 的对应关 iCmd:c Sock:sock_c iCmd:c Sock:sock_c

系。 iCmd:d Sock:sock_d

Thursday, November 9, 2023 11


接收执行体消息
 消息的再封装

原始数据结
构 4 N
bytes Bytes

iCmd Msg

Msg
4 iCmd{ 16 4 4 4 N
封装后数据结
构 enum
bytes…… bytes bytes bytes bytes Bytes
DRV_CMD_SET_PORTSPEED,
uiNosId stRecvTime uiLen uiPort iCmd Msg
DRV_CMD_GET_PORTSPEED,
标注该消息的 标注收到该消
DRV_CMD_SET_VLAN_PVID, 标注该消息的
体行执 ID 息的时间
DRV_CMD_GET_VLAN_MEMBER, Set 类型
……
};
Thursday, November 9, 2023 12
消息分类与转储
开始

 消息分类转储功能
消息队 Y 超时裁决
列为空? 子流程
KEY VALUE
N
MsgGroup 取

消息,
解析 iCmd
time_t CacheMap
iCmd
保存该 map KEY VALUE 该 iCmd 已
创建并插入
创建的时间 经创建 ?
保存该消息的 <string> set<int>
命令字
uiPort



体行保存执 保存该指令消息的 插入
指令消息,如 来源,如 NOS1 、
保存该消息的
create vlan 1 NOS2 、 NOS3
set 类型
最大存储单
元大小 >=3

消息缓存区数据结

构 GroupMap
裁决子流

结束
Thursday, November 9, 2023 13
裁决子流程
开始

 裁决步骤 遍历
MsgGroup

 Step1 :遍历当前 GroupMap 中的所有 MsgGroup ;


N set 大
 Step2 :找出各 MsgGroup 中的 CacheMap 中大小超过 3 的集合; 小
>=3?
 Step3 :提取出裁决成功消息,包含 iCmd 、 uiPort 、 String ; Y
提取裁决成功
 Step4 :将消息下发给底层,并获取回复,转发给各执行体; 消息

 Step5 :将裁决成功消息告知调度模块;
消息下发,给
 Step6 :从 CacheMap 中删除已处理的消息。 NOS 回复

资源释放

结束

Thursday, November 9, 2023 14


超时裁决子流程
开始

 超时裁决步骤 遍历 MsgGroup

 Step1 :遍历当前 GroupMap 中的所有 MsgGroup ; N MsgGroup


超时?
 Step2 :找出各超时的 MsgGroup ;
Y
 Step3 :遍历该 MsgGroup 中的 CacheMap ; 遍历 CacheMap
 Step4 :若 CacheMap 中有大小超过 2 的集合,则裁决成功,反之,
裁决失败; Set 大小
>=2 ?
 Step5 :将裁决成功或失败的消息告知调度模块; N
Y
 Step6 :从 CacheMap 中删除已处理的消息。
裁决成功 裁决失败

结束

Thursday, November 9, 2023 15


超时时间窗口

 按消息类型独立设置超时时间

 交换机裁决模块可为不同的 iCmd 创建不同的裁决时间窗口。


 裁决模块也可根据 iCmd 对消息进行特殊处理,如丢弃、透传等。

iCmd = A 3s
iCmd = B 5s
iCmd = C 30s

… …

Thursday, November 9, 2023 16


可输出的裁决结果

JUDGE_ALL_SUCCESS

 多样化裁决结果 SUCC_WITH_TIMEOUT

SUCC_WITH_TIMEOUT_TWO_STAGE
 交换机裁决模块可根据是否存在超时、 CacheMap
下的元素个数、集合中的元素个数等信息,综合 SUCC_WITH_TIMEOUT_MANY_STAGE
推断出当前系统的裁决错误类型。 FAIL_WITH_TIMEOUT
 裁决模块可输出 7 种裁决结果类型。
FAIL_WITH_TIMEOUT_TWO_STAGE

FAIL_WITH_TIMEOUT_MANY_STAGE

Thursday, November 9, 2023 17


多维度裁决
类别 项目
管理进程状态

协议进程状态

状行态裁决
执 关键进程运

状态
本地配置管理器状态

防火墙状态
 交换机裁决模块中集成了执行体运行状态
CPU 利用率
的裁决功能。 内存利用率
 涵盖系统配置、资源利用、访问痕迹等方 TCP Socket 连接数
关键系统资源
面。 运行进程数

 采用纵向裁决或横向比对方法进行裁决。 用户及用户组信息

计划任务个数

PATH 下二进制文件数目

关键可执行文件的校验值
关键路径
件文
用户目录下文件数目

开机启动文件校验值

用户登录日志信息
敏感日志信息
历史命令信息
Thursday, November 9, 2023 18
2 交换机反馈调度系统

Thursday, November 9, 2023 19


调度模块架构

KVM1 KVM2 KVM3


 基于 C/S 架

的裁决
块模
Docker1 Docker2 Docker3

NOS1 NOS2 NOS3  为实现调度模块对各执行体的启停控制,裁决


模块采用了 C/S 架构设计。
SHD Client SHD Client SHD Client
 调度服务器模块负责发起调度指令。
 调度客户端模块响应调度指令,从而完成对相
应执行体的启停。
Schadule Server

Thursday, November 9, 2023 20


执行体清洗动作

体停止
行执 删除停止的容器

 对于执行体停止,调度模块将发送指令直接停止该容器。

从镜像中拉起容器
体激活
行执

 Step1 :删除所有被停止的容器;
初始化虚拟网络拓扑
 Step2 :从最新的镜像中拉起新容器;
 Step3 :创建执行体运行所需的网卡、配置网桥与流表;
 Step4 :拉起执行体中的初始化脚本,拉起执行体程序。
初始化程序
体 拉起
行 执

Thursday, November 9, 2023 21


执行体调度策略

 随机调度与可信值调度
调度策略 应用场景
 调度模块集成了两种执行体调度策略,分
别为随机调度和基于可信值的调度策略。 随机调度 整机启动时
 随机调度策略在系统整机启动时应用,基
可信值静态配置 执行体清洗时
于执行体可信值的调度策略在进行执行体 基于执行体可信值
清洗时使用。 的调度策略
可信值动态调整 执行体清洗时
 执行体的可信值可根据裁决结果动态修
正,也可手动配置。

Thursday, November 9, 2023 22


与拟态组件的联动

 与裁决





理模的通信

 调度模块将在发生执行体调度事件时通告拟态裁决模块和
输入代理模块当前的线上执行体组合。
 调度模块与裁决模块采用加密的 TCP 通信。
 调度模块与输入代理模块采用加密的以太网帧进行通信。
加密帧中包含有线上执行体 ID ,输入代理通过协议号识别
该报文。

Thursday, November 9, 2023 23


N-1 模注入的识别逻辑

 裁决

的模信息通告
序号 项目 说明

 拟态交换机的 N-1 模故障的发现依赖于本次裁


1 错误消息类型 即 UDP 报文中的 enState ,枚举形式
决模块的裁决结果和历史裁决记录。
 拟态交换机的裁决模块在每次进行裁决动作时 标识执行体裁决失败原因,包含配置裁决和执行体
2 错误产生原因
将产生包含三项信息的矢量结果。 状态裁决,枚举形式
 裁决模块将其中的“错误产生原因”和“错误
3 错误执行体 标识本次裁决失败的执行体,使用 bitmap 表示
执行体”两项信息封装入结构体,发送给调度
模块。

Thursday, November 9, 2023 24


N-1 模注入的识别逻辑

NOS1 NOS2 NOS3


NOS4
 基于错误信息的识别方法

 调度模块为每种错误产生原因保存最新的一次记 拟态裁决
录。
 调度模块每接收到一次裁决失败信息,便将此次
1 2 3
4
裁决失败信息与内存中保存的同种“错误产生原
Code :
因”的最新的记录相比较,若两次记录中的“错 0x2
误执行体”信息中,所表示的裁决正确的执行体
裁决结果缓存区
一致,即认为发生了 N-1 模故障。
1 2
Code:0x1 Code:0x2 Code:0x3 … Code:0x6 Code:0x7

Thursday, November 9, 2023 25


N 模注入的识别逻辑

NOS1 NOS2 NOS3


NOS4

 结合定时调度的识别方法
拟态裁决

 N 模注入攻击的识别需结合定时调度机制。
 定时调度触发后,某一受控执行体被清洗,系统 1 2 3
4
退化为 N-1 模注入场景。 Code :
0x0

裁决结果缓存区
1 2
Code:0x1 Code:0x2 Code:0x3 … Code:0x6 Code:0x7

Thursday, November 9, 2023 26


LOGO

谢 谢 大 家!

You might also like