Page 413 - 《软件学报》2025年第8期
P. 413
3836 软件学报 2025 年第 36 卷第 8 期
并未设计完整的 DDoS 攻击检测与防御流程. 文献 [11] 中提出的 Euclid 基于可编程数据平面, 使用地址熵的方式
实现了 DDoS 攻击检测, 在记录当前观察窗口的流量信息的同时保存了安全状态下窗口的流量信息, 从而用于
DDoS 受害者的识别及 DDoS 数据包过滤, Euclid 使用过多的计算与存储资源, 仍无法满足可编程交换机的硬件资
源限制. 为了保存安全窗口的流量信息, Euclid 中使用了不符合可编程交换机流水线要求的计算流程. 如图 4 所示,
Euclid 使用多组 Sketch 进行流量信息的记录, 其窗口变化时计算流程为读取当前窗口 Sketch_curr 的记录值并记
录在上一窗口 Sketch_last 中, 之后处理当前进入的数据包, 在处理完成后将更新后的流量信息写入当前窗口
Sketch_curr 中. 在这一流程中两个不同的流水线阶段均访问了同一组数据结构, 这使得该机制无法在真实可编程
交换机上运行.
表 1 基于可编程数据面的检测方法对比
DDoS攻击检测方法 是否P4实现 数据面是否部署完整的检测与防御机制 是否满足硬件资源限制
P4DDoS [33] 是 (软件模拟环境) 否 否
文献[34] 是 (软件模拟环境) 否 否
Euclid [11] 是 (软件模拟环境) 是 否
本文机制 是 (真实交换机环境) 是 是
流水线阶段 1 流水线阶段 2 流水线阶段 3
读取 Sketch_curr 并 将更新后的记录值
记录在 Sketch_last 中 处理当前数据包 写入 Sketch_curr 中
读取 Sketch_curr 写入 Sketch_curr X
写入 Sketch_curr
当前窗口 Sketch_curr
相同数据结构只能被一个阶段直接访问, 编译失败
上一窗口 Sketch_last
图 4 Euclid 部分运行流程
针对现有工作的不足, 本文提出了一种完全部署于可编程数据平面的 DDoS 攻击检测与防御机制, 使用地址
熵的方式实现有效的 DDoS 攻击检测与防护. 与原有工作相比, 本文机制在检测效果上有明显的提升并能够完全
部署于真实可编程交换机硬件上.
3 DDoS 攻击检测与防御方法
本节首先介绍 DDoS 攻击下的流量特征模式. 然后, 以此为基础提出了基于 IP 地址熵差的窗口级 DDoS 攻击
检测方法, 以有效地解决异常流量占比相对较小时的误检率高的问题. 最后, 设计了基于源目地址计数值差的攻击
数据包过滤机制, 以有效地实现 DDoS 攻击防御.
3.1 DDoS 攻击下的流量与 IP 地址变化特征
DDoS 攻击中, 攻击发起者通过大规模的僵尸网络向一个目标主机发动攻击, 利用大量的数据占用目标主机
的网络与系统资源, 从而使得被攻击者无法为正常用户提供服务 [35] . 正常流量与 DDoS 攻击流量在行为上的差异
会导致网络中流量统计特性的变化 [36] .
图 5(a) 展示了在未受到攻击时, 合法用户中的正常流量经过可编程交换机与外部网络进行通信. 这一情况下,

