收 Internet 全表后的次优路径问题

2022-05-12 09:15:00 +08:00
 nbsn
紧接之前的帖子 /t/781573 ( bgp peering 可以收全球 internet 路由表的资源),目的就是为了做精细的目的地访问分流。

在 Vultr 收了全表,用 bird 做的 bgp daemon ,做了三网过滤,策略是按照 ip 地址的始发 ASN 做动态过滤:

filter bgp_in_filter {
if source != RTS_BGP then reject; #Deny Non-BGP Route

# ChinaNet #其他三网的过滤也是一样
if bgp_path.last ~ ct_asn then {
bgp_community = -empty-;
bgp_community.add((1,1));
accept;
}


filter bgp_out_filter {
if source != RTS_BGP then reject; #Deny Non-BGP Route

if bgp_path.last ~ ct_asn || bgp_path.last ~ cu_asn || bgp_path.last ~ cm_asn || bgp_path.last ~ noisp_asn || bgp_path.last ~ zero_asn then {
accept;
}
reject;
}

ASN 信息来源于 IPIP https://whois.ipip.net/countries/CN ,定期手动更新 ASN 。

经过半年多的运行,对于完全始发于特定 ASN 的 IP 地址,以上策略完全工作正常。

目前的次优路径问题是,对于完全始发 ASN 的 IP 地址,如果被宣告于多个 ASN ,则无法实现精准 ASN 过滤。
在我的边界路由器上,国内 ASN 的目的 IP 地址是走的过滤后的明细地址,非国内地址走的是默认路由。如果 IP 地址不在国内 ASN 的范围内,就会出现次优路径了。

比如:114.114.114.114 这个 DNS 的地址,从地址库查询属于 AS174: https://tools.ipip.net/as.php
在我目前的访问策略下,AS174 的 114.114.114.114 就要走默认路由的次优路径,尽管国内三大运营商 AS 均可查询到地址通告:
AS174 已标注 114.114.112.0/21 COGENT-174 - Cogent Communications, US
AS56046 已标注 114.114.112.0/22 CMNET-Jiangsu-AP - China Mobile Communications Corporation, CN
AS4134 已标注 114.114.112.0/21 CHINANET-BACKBONE - No.31,Jin-rong Street, CN
AS4837 已标注 114.114.112.0/21 CHINA169-Backbone - CHINA UNICOM China169 Backbone, CN


我的问题是,是否有通过 BGP AS-PATH 过滤的方法解决这个问题?

或者是不收全表了,直接用 https://asn.bgp.space/ 静态库写入 bird ,再发送给边界路由器。

或者有好的解决方案?不胜赐教~~
2058 次点击
所在节点    宽带症候群
6 条回复
conupefox
2022-05-12 12:31:14 +08:00
可以先刨掉非 CN ASN 始发的路由。反正非 CN 的都是走默认路由

另外,我想指定怎么判断某个 ASN 属于 CT 、CU 、CM 还是 CERNET ?
dndx
2022-05-12 12:38:50 +08:00
静态路由表足够了,国内的 IP space 变化没有这么频繁,不需要通过 BGP 的方式实时接收。
nbsn
2022-05-12 21:21:36 +08:00
@conupefox #1 https://tools.ipip.net/as.php 这里看 ASN 属于哪个运营商,里面有名字
alamak76
2022-05-13 09:45:48 +08:00
有没有支援 IP2Location ASN ?

https://lite.ip2location.com/database-asn
conupefox
2022-05-13 12:18:30 +08:00
@nbsn

就是只有一个个手动看?没有自动化的方法吗
nbsn
2022-05-13 13:58:20 +08:00
@conupefox #5 可以写个 shell 脚本自动生成

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX