仅使用 IPv6 时如何选择 BGP 路由器 ID?

网络工程 ipv6 bgp
2021-07-04 15:29:34

通常,在使用 BGP 时,您可以从分配的公共 IP 地址之一中选择(或您的设备选择四个)路由器 ID。

现在,让我们承认您运行 IPv6。由于路由器 ID 仍然是 32 位数字,因此无法从环回地址复制。

草案杜邦-杜兰德IDR-IPv6的BGP-路由器ID-01带来了一个答案的开始,建议使用具有本地分配的部分后缀的AS号。但这仅适用于 16 位 AS 编号。

那么,如何为您的设备选择 RID?随机?如果是这样,如果发生冲突(BGP 会话的两端使用相同的 RID),设备将如何反应?

PS:这个问题也与OSPF有关,但是你只需要设计一个一致的RID分配方案。这是您在使用 BGP 与其他 AS 对等时无法做到的。

4个回答

在这个答案上给我涂上不确定的颜色......

正如您所提到的,路由器 ID 只需要在 OSPF 空间内是唯一的。

在 BGP 中,我的理解是,它们仅用于检测已存在的新对等会话正在创建的会话……我想解决方案是拆除旧会话。

如果对等会话来自不同的传输地址,那么即使呈现的路由器 ID 相同,它们也会被视为不同的会话,因为它们来自不同的传输地址(您的场景中的 IPv6 地址)。

所以......我想答案是为OSPF(大概是v3)选择你的路由器ID,如果你的路由器ID最终复制了另一个(第三方)对等点的路由器ID,它可能不是世界末日与外部 AS 对等体一起使用

BGP-4 的自治系统范围唯一 BGP 标识符回答了您的问题。自 2011 年以来,基本上 BGP 标识符只需要在您的 AS 中是唯一的。

假设您真的根本没有运行 v4,甚至没有环回,那么我建议的方法是简单地为每个路由器分配一个序列号并使用它,根本不需要对其进行分段,并且您可能有一个现有的可能有效的库存编号(尽管考虑在 RMA 的情况下它可能如何工作)。

最值得注意的是,这使得 IS-IS 比手动填充 IPv4 地址更好用。

如果您(出于某种奇怪的原因)有一个只有某些设备是 IPv6 的网络,您可能想要抵消手动编号,这样它们就不会与真正的 IPv4 地址混淆。使用 240/8 是一个想法(我建议不要使用 255/8 甚至 254/8,以帮助避免在凌晨 3 点被分页的疲倦的操作人员想知道为什么将路由器 ID 设置为广播地址)。

我的建议是调整您的 AS 编号,将其视为 32 位 AS(如果还没有) - 将高 8 位归零并OR使用0xE0000000(使其看起来像多播空间)。为简单起见,我将使用十六进制(不是真的,这样更容易看到边界)

例如,如果您的 AS 编号是 717232 (0x000AF1B0),您最初会得到 0xE00AF1B0,并且您可以为 AS 中的每个 BGP 扬声器增加最上面的八位字节 0xE00AF1B0、0xE10AF1B0 等。

转换为十进制?简单,将十六进制拆分并分解出您最喜欢的程序员计算器:E0.A.F1.B0 -> 224.10.241.176、E1.A.F1.B0 -> 225.10.241.176 等等。

当然,您可以设计无数种方法来处理这种情况,关键是要主动避免重复。在 BGP 中,您必须确保邻居没有相同的路由器 ID,但是,您可以将具有相同 ID 的两个独立路由器与第三个对等,请记住路由器 ID 用作最佳路径选择的决胜局。