XDP 在内核态处理 DNS 查询,可在用户态服务前完成限速与协议扩展,避免无效包消耗 CPU 周期。本文展示如何在 XDP 层实现 DNS Cookies 与 EDNS(0) Padding,覆盖入向与出向报文的完整增强链路。
XDP 限速与 DNS Cookies 机制
前序工作已在 XDP 层实现查询限速,在报文刚到达时丢弃或回复 TC 位,省去用户态解析开销。DNS Cookies 按 RFC 7873 与 RFC 9018 定义,作为 OPT 选项提供轻量事务安全。客户端首次查询携带 64 位随机 Client Cookie,服务端按固定配方生成 Server Cookie 回复;后续请求若带有效 Server Cookie,服务端可按策略豁免限速并允许大响应。BIND 9.16、Knot DNS 2.9.0、NSD 4.3.7 已遵循新配方。原文未给出具体部署性能数据。
EDNS(0) Padding 与双向包处理
DNS Cookies 虽涉及出向报文,但作者认为在扩展 BPF 处理出向逻辑仅在完整 BPF 实现收益明确时才合理。为演示完整双向特性,文中以 EDNS(0) Padding 为例:在 XDP 程序中按用户请求为响应报文填充 Padding 选项,使答案长度对齐,减少侧信道泄露。该实现完全在 BPF 原生层完成,覆盖入向解析与出向构造,验证了“全功能 DNS 增强”在 XDP/TC 层的可行性。原文未给出具体填充算法细节。
对运维与网络工程师而言,XDP 让 DNS 抗 DDoS 与协议扩展下沉至内核早期处理点,无需修改用户态权威服务器即可获得限速豁免、响应填充等能力,降低 CPU 压力并缩小攻击面,适合高吞吐递归或权威节点部署。
原文: APNIC Blog(2022-02-15)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog