从 BGP 表路径中提取上游/下游 ASN

网络工程 ip BGP
2022-02-09 01:28:07

我想提取任何给定 ASN 的上游和下游 ASN,例如: https ://www.cidr-report.org/cgi-bin/as-report?as=AS4826&view=2.0

我最后的目标是生成类似于此的 ASN 路由图形: 在此处输入图像描述

但为了做到这一点,我需要一种从 BGP 表中提取此类数据的方法。我很难确定 AS 路径中的哪个 ASN 可以被视为上游和下游。让我们从 BGP 表中获取此条目

    [TIME] => 05/02/20 00:00:00
    [TYPE] => TABLE_DUMP_V2/IPV4_UNICAST
    [PREFIX] => 1.0.4.0/22
    [SEQUENCE] => 3
    [FROM] => 103.212.68.10 AS55720
    [ORIGINATED] => 04/30/20 06:15:43
    [ORIGIN] => IGP
    [ASPATH] => 55720 24218 4826 38803 56203
    [NEXT_HOP] => 103.212.68.10
    [UNKNOWN_ATTR(192, 16, 8)] => 02 02 00 02 01 95 00 c9
    [COMMUNITY] => 4826:1000 4826:5307 4826:7000 4826:53073 19996:19996
    [AGGREGATOR] => AS13335 162.158.84.1
    [LARGE_COMMUNITY] => 34872:10:104 34872:11:0 34872:100:49 34872:122:1
    [MULTI_EXIT_DISC] => 150

此 ASN 4826 右侧有 38803,左侧有 24218,此处为https://www.cidr-report.org/cgi-bin/as-report?as=AS4826&view=2.0和其他显示 ASN 上行/下行流的站点38803 被标记为下游,但为什么 24218 在 4826 之前没有被标记为上游?以及如何精确计算上游和下游?

谢谢

1个回答

您需要记住,AS 路径是相对于您从中采购的网络而言的。在您上面的示例中,仅仅因为 AS24218 位于 Vocus (AS4826) 的左侧,并不一定意味着它们是上游。所以为什么?这很大程度上取决于提供商如何为前缀选择最佳路径。通常,遵循纯粹基于成本的层次顺序。例如,类似于以下内容:

  • 客户前缀 > PNI/双边对等 > 多边对等 > 传输。

在您的示例中,AS56203 是 AS38803 的客户,然后是 Vocus 的客户。Vocus 将始终将此流量发送给其下游客户,因为他们可能能够为此流量计费。现在我们看到AS24218,这个AS可能是客户,甚至是Vocus的peer(实际上,看起来他们可能是MyIX上的peer),由于始发前缀是Vocus的客户,所以他们会宣传这个Peering to AS24218。

然而,这个 AS 路径的真正兴趣点实际上是在 AS55720 和 AS24218 之间。同样在这种情况下,AS24218 可能是 AS55720 的客户、同行甚至是中转提供商。

在您不熟悉供应商的领域,这真的很难说。不幸的是,据我所知,Hurricane Electric 并未公开披露他们是如何创建图表的。我猜他在构建他们的图表时考虑到,在某些时候,前缀将在 AS 路径中包含一个第 1 层提供商 ASN,并且从那里他们可以确定谁是直接中转 AS。

(请注意,Hurricane Electric 和 CIDR 报告都可能是错误的,他们的信息并不总是 100% 准确,因为他们的大部分信息都是以某种方式、形状或形式计算得出的猜测)