Page 423 - 《软件学报》2025年第8期
P. 423
3846 软件学报 2025 年第 36 卷第 8 期
编程交换机中. 在数据平面的实现中包含了在第 4 节中所涉及的全部 DDoS 攻击检测与防御模块, 基于 P4 语言
和 Tofino 交换机架构实现的 DDoS 攻击检测与防御机制被抽象成多个匹配-动作表的流水线模式, 其中 DDoS 攻
击检测机制部署于可编程交换机入口流水线, 包括地址频率统计及状态保存模块、熵值计算模块、攻击状态判定
模块; DDoS 攻击防御机制部署于可编程交换机的出口流水线, 包括数据包类别判定模块和受攻击 IP 地址存储模
块, 通过将检测与防御分开部署可有效地实现资源物理隔离, 降低资源冲突. 在控制平面的实现中, 使用 Python 语
言实现了该 DDoS 攻击检测与防御机制的控制功能. 控制平面的主要功能包括向数据平面中的查找表中预先配置
熵值计算中所需要的表项, 同时通过 API 查询数据平面中对应寄存器获取数据平面状态. 当 DDoS 攻击检测与防
御机制启动时, 需要先将 P4 代码部署于可编程交换机的数据平面, 然后运行控制面 Python 代码完成数据面表项
配置, 之后, 交换机中部署的 DDoS 攻击检测与防御机制将会自动检测通过交换机的所有流量中是否存在 DDoS
攻击.
入口流水线 逆解析器 解析器 出口流水线
计数值及检测结果
计数值及检测结果
桥接数据包
DDoS 攻击
DDoS 攻击检测
原头部 防御流程
...
原数据包
源目地址当前 源目地址安全状态
桥接包头 DDoS 检测结果 原数据
观察窗口计数值 观察窗口计数值
图 14 利用桥接数据包实现出入口流水线信息传递
本文的测试工作中, 在实验室使用 Intel-Tofino 可编程交换机搭建了如图 15 所示的实验网络. 该实验网络中
多台用户主机产生的流量将会通过一台 Tofino 可编程交换机流向另一侧的目的主机. 实验中所使用的背景流量
来自 BOUN DDoS 数据集, 使用 tcpreplay 对该流量记录进行修改与重放, 含有 TCP-SYN 洪泛攻击、UDP 洪泛攻
击、DNS 反射放大攻击、ICMP 洪泛攻击的流量将会穿过可编程交换机到达被攻击者. 在固定参数的设定上, 观
察窗口大小设置为 10 000, 熵差的固定阈值 T S 设定为 512, 连续窗口数量 a 设定为 3, DDoS 防御机制中计数值差
T D 设定为 300.
变化量的阈值
DDoS
DDoS 攻击者 Internet
可编程交换机
Controller.py
Ddos_detection.p4
合法用户
被攻击者
图 15 原型系统
5.2 实验数据
实验中使用 BOUN DDoS 数据集 [13] 对本文中所提出的 DDoS 攻击检测机制进行检验. 这一数据集包含两组
以 csv 格式记录的网络流量, 两组网络流量数据中分别发生了 TCP-SYN 洪泛攻击和 UDP 洪泛攻击. 在每一组数

