更新源环回和下一跳自身

网络工程 思科 路由 BGP 杜松
2022-03-04 07:20:34

我有一个与 BGP 配置有关的问题。如果我使用update-source loopbackornext-hop-self命令,它们会修改数据包中的源 IP 地址吗?

假设 R1 具有与 R2 的 eBGP 会话以及与 R3 和 R4 的 iBGP 会话。R1 使用该命令update-source loopback并将数据包发送到 R3。现在,数据包的源 IP 地址已更改。R3 通过其他对等点将数据包转发到其目的地。现在,当数据包来自目的地时,由于命令的原因,它不会具有正确的源地址update-source loopback那么,BGP 会处理这种情况吗?

命令也一样next-hop-selfR2 可以在将数据包发送到 R3 或 R4 时使用此命令,然后它们可以发送给它们的对等方。

有人可以澄清我的疑问吗?

2个回答

这两个命令是出于完全不同的原因,它们不会修改数据包上的地址。update-source命令将尝试使用与直接连接地址不同的地址形成邻居关系,同时该next-hop-self命令告诉邻居在邻居不知道如何到达广播路由器时将数据包发送到哪里。

如果您使用 eBGP 和update-source命令,您必须了解一些事情。eBGP 对等体必须具有到update-source命令中接口的路由才能形成邻居。这将涉及为 eBGP 邻居使用不同的路由协议或静态路由,以便能够到达update-source命令中的接口。这就是为什么它通常只用于 iBGP。此外,对于 eBGP,您必须使用该ebgp multihop命令,否则它将不起作用。该命令用于建立 BGP 邻居连接。

next-hop-self命令与数据包上的地址无关。该命令只是告诉邻居它应该使用该命令将数据包发送到目的地的路由器。它用于邻居路由器不知道如何到达广播路由器但具有next-hop-self命令的路由器知道的情况。该命令用于通告路由方向。

这里首先要了解的是

  1. 更新源环回和
  2. 下一跳自我

是用于BGP建立/BGP路由学习的命令。我们基本上使用 TCP 3 路握手机制来帮助在两个路由器之间建立 BGP 会话。

例如,如果我们有以下设置 R1 - R2 - R3。(尝试在 R1 和 R3 之间建立 BGP 会话)

我们将 R1、R2 和 R3 的环回分别定义为 1.1.1.1、2.2.2.2 和 3.3.3.3。所有这 3 个环回将通过 R1 和 R2 以及 R2 和 R3 之间的 OSPF 会话为所有三个路由器所知。现在,由于我们想在 R1 和 R3 之间建立 BGP 会话,我们将在每个路由器上执行以下操作

在 R1 上

  1. 将邻居定义为 3.3.3.3
  2. 将更新源环回作为 1.1.1.1

在 R3 上

  1. 将邻居定义为 1.1.1.1
  2. 将更新源环回作为 3.3.3。

通过执行上述 TCP 3 方式握手启动。可由 R1 或 R3 启动。所以让我们假设 R1 启动 TCP,然后,

  1. R1 向 R2 发送源地址为 1.1.1.1 的 SYN 消息,并进一步转发给 R3。
  2. R3 接收到 SYN 并从 SYN 消息中发回以 Destination 作为源地址的 SYN-ACK。这被发送到 R2 和进一步的 R1。

  3. R1 向 R3 发送 ACK 并建立 BGP。

所以我希望这能澄清更新源环回的疑问。

当我们在两个 e-BGP 会话之间学习到路由时,下一跳自身就会发挥作用。请参阅此以获取更多信息。

http://www.getnetworking.net/bgp/bgp-next-hop-self