清除路由源验证 (ROA) 中子前缀的混淆

网络工程 路由 bgp
2021-08-02 21:45:34

根据 RIPE 的站点,如果出现以下情况,BGP 公告无效:

  • 前缀是从未经授权的 AS 中宣布的。
  • 该公告比在匹配前缀和 AS 的 ROA 中设置的最大长度所允许的更具体。

关于第二个条件,更“更具体”是什么意思?

假设我是 AS1,我得到了一个 block 10.1.0.0/16,并且我有一个有效的 ROA 前缀。现在,我给我的一个客户 AS11 子块10.1.2.0/24.假设 AS11 不会为其前缀生成 ROA。

现在,如果我宣布[AS1, AS11, 10.1.1.0/24]我的同行/提供者的路径(假设他们支持 ROV),验证会失败吗?10.1.2.0/24的子前缀10.1.0.0/16吗?决定一个前缀是否是另一个前缀的子前缀的规则是什么?

1个回答

关于第二个条件,更“更具体”是什么意思?

这意味着面具更长。较长的掩码比较短的掩码更具体。最长的 IPv4 掩码是/32,它是最具体的 IPv4 地址,因为它标识了一个一直到主机的地址。

10.1.2.0/24 是 10.1.0.0/24 的子前缀吗?

不。

决定一个前缀是否是另一个前缀的子前缀的规则是什么?

如果用最短的掩码屏蔽两个地址,您将发现它们是否共享一个公共网络。这是 IP 寻址(IPv4 和 IPv6)的基础。甚至主机也会这样做来确定目标地址是否与主机本身在同一网络中。主机需要知道它是否可以将流量直接发送到目的地(同一网络),或者是否必须将其发送到其配置的网关(不同网络)。

这个问题有一个很好的答案,解释了如何进行 IP 数学。Server Fault上还有一个答案,演示了检查两个地址以确定是否存在公共网络。

在你的情况下:

10.1.2.0      -> 00001010000000010000001000000000
255.255.255.0 -> 11111111111111111111111100000000
          AND -> ================================
      Network -> 00001010000000010000001000000000 = 10.1.2.0

10.1.0.0      -> 00001010000000010000000000000000
255.255.255.0 -> 11111111111111111111111100000000
          AND -> ================================
      Network -> 00001010000000010000000000000000 = 10.1.0.0

生成的两个网络地址不匹配:10.1.2.0<> 10.1.0.0


编辑:

你改变了问题,现在你有一个不同的问题,有不同的答案。

10.1.2.0/24 是 10.1.0.0/16 的子前缀吗?

是的。

在你的情况下:

10.1.2.0    -> 00001010000000010000001000000000
255.255.0.0 -> 11111111111111110000000000000000
        AND -> ================================
    Network -> 00001010000000010000000000000000 = 10.1.0.0

10.1.0.0    -> 00001010000000010000000000000000
255.255.0.0 -> 11111111111111110000000000000000
        AND -> ================================
    Network -> 00001010000000010000000000000000 = 10.1.0.0

生成的两个网络地址匹配:10.1.0.0= 10.1.0.0