华为侧的 AS_PATH 正则过滤
华为 VRP 用 ip as-path-filter 定义 AS 路径正则,再通过 filter-policy as-path-filter 号 import/export 或在 route-policy 中用 if-match as-path-filter 号 引用。正则元字符语义与 Cisco 一致(^ 起始、$ 结束、_ 分隔边界、.* 任意、[ ] 字符集),但定义与引用语法不同,跨厂商运维时不要把两边的命令混着写。
基本信息
| 定义 | ip as-path-filter <号> permit|deny <正则> |
|---|---|
| 引用方式一 | filter-policy as-path-filter <号> import/export |
| 引用方式二 | route-policy 中 if-match as-path-filter <号>,更灵活 |
| 查看 | display ip as-path-filter <号> |
| 正则语义 | ^ 行首、$ 行尾、_ 分隔边界、.* 任意、[ ] 字符集 |
| 常见错误 | 漏写 $ 或 _,匹配到额外号段而不自知 |
典型使用场景
- 入向净化:拒绝携带私用 ASN 的路径
- 起源核对:只接受来自指定起源 AS 的路由
- 策略组合:在 route-policy 中与团体、前缀条件同时匹配,构造多条件策略
- 跨厂商迁移:从 Cisco 配置翻译过来时逐个核对正则与引用点
- 割接验证:用 display 命令核对过滤前后的路由数量变化
- 故障复现:把线上正则拿到实验环境逐条验证匹配结果
定义与引用
定义与引用
ip as-path-filter 10 permit ^65002$ # 只匹配起源 AS 65002
ip as-path-filter 10 permit ^65002 65003 # 对端为 65002、起源为 65003
!
bgp 65001
ipv4-family unicast
peer 10.0.0.2 as-number 65002
peer 10.0.0.2 enable
filter-policy as-path-filter 10 import # 在地址族内引用
!
display ip as-path-filter 10 # 查看已定义的正则
display bgp routing-table # 核对过滤后的路由正则元字符速查
| 符号 | 含义 | 示例 |
|---|---|---|
| ^ | 匹配 AS_PATH 起始 | ^65002 表示起源侧为 65002 |
| $ | 匹配 AS_PATH 结束 | ^65002$ 表示路径只含 65002 |
| _ | 匹配分隔边界 | _65002_ 匹配任意位置 |
| . | 匹配任意单个字符 | .* 表示任意长度 |
| [ ] | 字符集 | [0-9] 匹配一位数字 |
漏写锚点是最高频的错误:AS_PATH 是空格分隔的串,没有 ^ 和 $ 时正则会匹配到子串——例如 65002 可能匹配到 165002 这类号段,过滤结果与预期不符。
filter-policy 与 route-policy 的引用点不同:前者直接指定 import/export,后者的最终结果还受 route-policy 中其他语句的顺序与 permit/deny 影响。改了正则却没生效时,先确认改的是不是真正被引用的那一份。