我试图找到最优雅的方法来为从客户收到的路由实现RTBH过滤器。
过滤器应该:
- 只接受来自前缀列表的客户自己的前缀
- 只接受 /32 前缀
- 只有黑洞社区的前缀
- 将下一跳设置为 RTBH 下一跳 (192.0.2.1)
首先,我查看了瞻博网络的“在路由策略条款中配置匹配条件”文档。
首先,我考虑将 aprefix-list-filter
仅匹配来自客户前缀列表的路由和 aroute-filter
以将接受的前缀限制为 /32,如下所示:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
但后来我在文档中偶然发现了这个信息:
如果您配置的策略包含路由过滤器、前缀列表和源地址过滤器的某种组合,则会根据逻辑 OR 运算或最长路由匹配查找对它们进行评估。
据我了解(我发现它有点不清楚),如果我使用prefix-list-filter
,route-filter
和/或source-address-filter
在同一个术语中,它将使用它们之间的最长匹配 OR 进行评估,这使得这种方法无法使用。
我想出的是以下过滤器。该hostroutes-only
术语将所有短于 /32 的前缀转移到下一个策略。之后,prefixes
如果 /32 在客户的范围内,则该术语匹配,匹配他的 as-path 并设置了 blackhole 社区:
term hostroutes-only {
from {
route-filter 0.0.0.0/0 prefix-length-range /0-/31;
}
then next policy;
}
term prefixes {
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
}
then {
next-hop 192.0.2.1;
accept;
}
}
那么,这是处理这个问题的最优雅的方法吗?还有其他解决方案吗?