Page 419 - 《软件学报》2025年第8期
P. 419
3842 软件学报 2025 年第 36 卷第 8 期
∑ n ∑ k i
′
S = mlog (m)− (xlog (x)−(x−1)log (x)) (6)
2 2 2
i=0 x=1
′
其中, S 为实际熵值的 m 倍, m 为一个观察窗口中数据包的数量. 当得到一个 IP 地址对应的计数值 x 后, 通过添加
新熵值与原有熵值之间的差以进行更新. 若交换机中所记录的当前熵值为 S ′ now , 则新熵值 S ′ next 的计算方式如公式
(7) 所示.
S ′ next = S ′ now −(xlog (x)−(x−1)log (x)) (7)
2
2
控制面程序
表项配置信息 (x, y)
y=(xlog 2 (x)−(x−1)log 2 (x))
表项 1 X=1 Y=0 查询
源地址计数值 X 源地址熵更新
结果Y
表项 2 X=2 Y=[log 2 (2)]
查询 目的地址
目的地址计数值 X 表项 3 X=3 Y=[3log 2 (3)−2log 2 (2)] 结果 Y 熵更新
图 9 基于查找转发 IP 地址熵计算
当一个新的数据包到达交换机时, 只需要根据观察窗口中源地址及目的地址现有的计数值计算熵值的更新量
y y , 与 IP 地址计数值 x 的对应关系如公式 (8) 所示.
y = xlog (x)−(x−1)log (x) (8)
2 2
在得到上述更新值后, 可编程交换机将依照公式 (7) 更新当前所存储的源目地址熵. 当一个观察窗口结束时,
可编程交换机中所存储的累计计算结果即为该观察窗口源目地址熵的计算结果, 可编程交换机在完成后续的判别
操作后将会重置熵值并开始下一轮计算, 这一过程如公式 (9) 所示.
S = mlog (m) (9)
′
2
使用以上的逐数据包累加的计算方法, 可以实现每次计算仅使用当前数据包的头部信息, 并且在一个观察窗
口结束时能够输出正确的熵值计算结果.
(2) 查找转发的复杂函数计算方法
针对可编程交换机中无法完成的复杂计算, 本文机制中采用表的方式, 利用控制面程序将所有可能出现的计
算结果预先配置在可编程交换机内. 该模块的工作原理如图 10 所示, 熵值的更新量会预先计算并近似为整数, 通
过控制面程序配置入可编程交换机的表中. 由于观察窗口的大小为 m, 表中只需要维护 m 条表项即可覆盖 IP 计数
值所有可能的取值. 完成计算和更新后, 该模块将会输出当前窗口中的源地址熵和目的地址熵.
连续 a 个窗口熵差超过阈值
其他情况 安全状态 DDoS 攻击 其他情况
连续 a 个窗口熵差低于阈值
图 10 攻击检测机制状态转换
4.2.3 DDoS 攻击状态判定模块
DDoS 攻击状态判定模块根据公式 (3) 的判别原理判断当前是否处于 DDoS 攻击状态. 该模块中维护如图 10

