摘要

  • 11 月 2 日的 draft-ietf-idr-fsv2-content-filter-00 为 FlowSpec v1 和 v2 提出固定包内容匹配组件。它是 IETF IDR 工作组草案,尚非 RFC。
  • 规则标明起点、偏移、内容字节和掩码。FSv2 中该组件必须标成必需;设备若无法实现,就不能在本地安装整条路由。
  • 若删掉字节条件却保留丢弃或限速动作,过滤范围会变宽。可信 BGP 邻居、规则授权、传播范围和资源上限仍由运营方决定。

少看几个字节,可能多拦一大片流量

FlowSpec 借 BGP 分发流量过滤规则。基础 IP 过滤条件主要看地址、端口等头部字段。IDR 工作组这份新草案允许规则再指定包内某段固定字节。已知攻击特征可以因此被更精细地识别;偏移或硬件能力一旦搞错,同一条规则也可能伤及本来不该碰的包。

设计并不神秘。OType 选择 IP 头、IP 载荷、UDP 载荷或 TCP 载荷的起点;Offset 再向后数;Content 和 Mask 决定哪些位必须相同。草案示例在 TCP 载荷起始位置寻找两个字节,并附带目的前缀。这是固定比特模式比较,不是理解应用内容的通用阅读器。

最有分量的条款针对“不支持”。编码允许的内容长度最高到 255 字节,但设备可按本地解析或过滤资源设更低上限。在 FSv2 里,这个内容匹配组件必须标为必需。若设备装不下,整条 FlowSpec 路由就不具备本地安装资格。它不能把这一项悄悄抹去,再拿剩余条件执行丢弃、转向或限速。原本只针对某个字节模式的动作,否则会套在更广的流量上。

偏移位置也会移动。IPv6 的“IP 载荷”从固定头之后开始,扩展头也算在里面;扩展头沿途变化,原来的偏移可能读到另一段内容。隧道外层又可能混淆计数起点。草案建议在适用时检查解封装后的内层 IP 包,或明确无歧义的起点。找不到 UDP、TCP 载荷的设备不能把它算作匹配。

草案把部署限定在可控过滤点,建议搭配更窄的头部条件、只接纳可信 BGP 邻居、限制传播与更新速率。ACL、UDF、TCAM 项数都有限。作者报告了 OpenBGPD、FRRouting 和可编程交换机测试,未给出生产采用或事故数量。现在清楚写出的规则是:设备执行不了精确条件,就没有资格执行一个更粗的替身。

原始资料