三种写法含义不同
用 AS_PATH 正则核对起源是最常用的过滤手段,但三种写法范围完全不同:^65002$ 表示路径中只有 65002(该 AS 本地起源),^65002_ 表示以 65002 开头(从该 AS 或其下游方向进入),_65002_ 表示路径任意位置包含 65002。写错写法会得到与预期相差很远的过滤结果。
基本信息
| ^65002$ | 路径仅含 65002,即该 AS 本地起源 |
|---|---|
| ^65002_ | 以 65002 开头,即从该 AS 或其传播链方向进入 |
| _65002_ | 路径任意位置包含 65002 |
| 查看命令 | show ip bgp regexp <正则> |
| 使用前提 | AS_PATH 是空格分隔串,锚点决定匹配边界 |
| 注意差异 | 联盟与 4 字节 ASN 的显示格式会影响核对结果 |
典型使用场景
- 起源核对:只接受由指定 AS 起源的路由
- 客户路由识别:从客户 AS 或其下游进入的路由用 ^65002_ 匹配
- 路径分析:用 _65002_ 统计某 AS 在现网中的出现情况
- 割接验证:用正则统计数量验证过滤前后的变化
- 跨厂商核对:核对前统一 ASN 显示格式,避免误判
过滤与查看
过滤与查看
ip as-path access-list 50 permit ^65002$ # 只允许 65002 本地起源
!
show ip bgp regexp ^65002$ # 起源为 65002 的路由
show ip bgp regexp _65002_ # 路径中含 65002 的路由
show ip bgp regexp ^65002_ # 从 65002 方向进入的路由三种写法的差别
| 写法 | 匹配范围 | 典型用途 |
|---|---|---|
| ^65002$ | 路径只含 65002 | 该 AS 本地起源的路由 |
| ^65002_ | 以 65002 开头且后面还有其他 AS | 从该 AS 或其下游方向进入 |
| _65002_ | 任意位置包含 65002 | 统计与路径分析 |
| .* | 任意路径 | 兜底放行 |
最常见的期望落差是「用 ^65002$ 期待收到客户路由」:客户通告的路径更长,永远匹配不上,应改用 _65002_ 或按实际路径构造模式。
核对前统一 ASN 显示格式:联盟与 4 字节 ASN 在部分平台显示为不同写法,格式不一致时正则匹配结果会与预期偏离,先在两端确认显示口径。