Page 410 - 《软件学报》2025年第8期
P. 410
武文浩 等: 可编程数据平面 DDoS 检测与防御机制 3833
部署难的问题, 本文提出了一系列关键技术以应对上述关键挑战.
● 针对可编程交换机对逐包处理模式的限制, 本文采用了一种逐包累加的方法, 通过原始的单次计算转换成
单个时间窗口的数据包熵值增量的累加.
● 针对可编程交换机计算能力受限的挑战, 本文提出了一种基于查找转发的计算方法, 将计算结果以表格的
形式预先存储在可编程交换机上, 最后通过操作数的查表获得计算结果.
● 针对可编程交换机中流水线资源限制问题, 本文提出了一种多组 Sketch 轮换的新型数据结构, 能够在有限
的流水线阶段中实现对网络中多个观察窗口的状态保存.
本文基于 Intel Tofino 可编程交换机实现了上述 DDoS 检测与防御机制, 并通过 BOUN DDoS 数据集 [13] 进行
了实验验证. 实验结果表明, 与已有工作 Euclid 相比, 观察窗口级攻击检测中的准确率平均提升了 17.75%, 在数据
包级攻击流量过滤中的准确率平均提升了 3.7%.
本文第 1 节介绍本文相关技术背景, 包括 P4 语言、可编程交换机和 Sketch 数据结构. 第 2 节介绍可编程数
据平面应用于 DDoS 攻击检测的相关工作. 第 3 节介绍本文所实现的 DDoS 攻击检测与防御机制的基本原理与设
计. 第 4 节介绍基于可编程交换机的 DDoS 攻击检测与防御的实现机制. 第 5 节通过对比实验来验证所提模型的
有效性. 第 6 节总结全文.
1 背景知识
本文基于可编程交换机设计了一种 DDoS 攻击检测与防御机制. 下面将对相关的概念和基本知识予以介绍,
包括 P4 语言与可编程交换机和 Count-Min Sketch 数据结构.
1.1 P4 语言与可编程交换机
P4 语言是一种协议无关的数据平面编程语言 [9] . 与原有的 SDN 和 OpenFlow [14] 等网络技术相比, P4 语言和协
议无关的交换机架构使得网络管理人员能够实现对数据包的自定义转发和处理. 图 1 展示了使用 P4 程序实现数
据平面可编程的过程. 用户首先需要基于特定的交换机架构编写 P4 程序, 这一部分中主要包括一组基于有限状态
机的解析器以及基于匹配-动作流水线的控制流程. P4 编译器执行的工作主要分为两部分, 首先其将 P4 代码转化
为可编程交换机硬件中可以识别的二进制配置文件; 同时, 编译器会根据用户在数据面中所定义的控制逻辑, 为控
制面生成可用的 API. 可编程交换机在运行 P4 程序时, 可以通过控制面程序对交换机中的匹配-动作表, 计数器,
寄存器等结构进行配置, 从而实现控制面与数据面的交互.
用户提供部分 可编程网络
控制面程序 控制平面
编译器及交换机架构
P4 API
P4 编译器
数据平面
二进制 可编程
P4 程序 交换机架构
配置文件 交换机
图 1 使用 P4 进行数据平面编程
在数据平面编程中所涉及的交换机架构是 P4 语言的编程模型, 其作为 P4 源代码与可编程设备之间的中间
层, 为开发者提供了 P4 语言运行流程的逻辑视图. 交换机架构中将会为开发者提供 P4 基本操作以外的附加功能,

