非对称路由 - 原因和影响?

网络工程 路由 ipv4
2021-07-03 18:13:18

碰巧我遇到了在他们的网络中拥有我定义为“非对称路由”的客户。简单地说,他们在同一个 IP 子网上两个网关客户端被配置为指向一个网关(即 172.16.1.1),但还有另一个设备(即 172.16.1.2)连接并路由到某处。大多数情况下,当有 2 种不同类型的 WAN 连接时,我见过这种设置:1 个 Internet 连接和 1 个企业 MPLS 连接。

我个人并不被上述那种网络设计所吸引:每个子网必须有一个且只有一个网关。从我的角度来看,上述情况可能会给客户端带来一些问题,因为他们将数据包发送到默认网关 (172.16.1.1),然后这些数据包被转发出另一个路由器 (172.16.1.2) 并在收到回复时到,他们只是通过 172.16.1.2 到达客户端。客户端会或应该期望回复数据包来自 172.16.1.1,还是我错了?

我很高兴收到您对此问题的意见和技术观点。

4个回答

我建议您研究第一跳冗余协议,如 HSRP 或 VRRP。

实际上,拥有两个网关可以是一个非常好的网络设计,因为如果一个路由器出现故障,另一个路由器可以在某种程度上无缝地接管。但是,如您所知,如果您必须对子网上的每个客户端进行手动重新配置,则进行这种转换并不容易。

像 HSRP(或 VRRP,如果您有非 Cisco 设备)之类的协议允许您在子网上拥有两个(或更多)路由器(或 L3 交换机)共享一个 IP 地址。您的第一个路由器的地址为 .2,第二个路由器的地址为 .3,“虚拟 IP 地址”为 0.1,两台路由器都通过配置知道这些地址。当主路由器出现故障时,辅助路由器能够检测到并接管虚拟 IP 地址,这意味着您的客户端只需将 .1 配置为他们的网关,您就可以开始使用了。

在路由设计方面,这在很大程度上取决于当前的设置。两个网关有可能通向同一个 Internet 边缘,在这种情况下,您可能没有问题。非对称路由可能很糟糕,主要是因为您冒着以错误顺序传送数据包的风险,但同样,这在很大程度上取决于您所谈论的拓扑。

我刚才所说的内容中隐含了很多设计原则。我建议您研究这两种协议,并确定哪种最适合您的环境。如果您使用 Cisco 设备,HSRP 是一种广泛使用且易于理解的解决此问题的方法。

整个互联网都是建立在非对称路由上的,所以很常见。客户端对他们接收数据包的接口和数据包的来源感兴趣,而不是哪个路由器在该接口上将它传递给他们。

但是,当涉及跟踪状态的设备(尤其是防火墙)和 NAT 时,非对称路由可能会出现问题,但据我所知,在您的示例中并非如此。

网络客户端根据 4 个值的组合识别流量:

  • 源地址
  • 源端口
  • 目的地地址
  • 目的端口

对于每个不同的连接,上面的 4 个值形成不同的组合,用于将回复数据包匹配到正确的流。如您所见,网关或下一跳地址未包含在列表中,因此客户端不会关心数据包是否通过其用于发送数据包的同一网关返回。因此,网络客户端一旦可以从远程端接收流量,就不会关心非对称路由。实际上,TCP/IP 最初是为了支持非对称路由而设计的。

但是,如果我们专注于网络中间设备,一旦您使用任何需要查看连接中的所有数据包以提供给定功能的设备/技术,就不能容忍非对称路由。例如:NAT、状态防火墙或一些 WAN 优化器。在这种情况下,非对称路由会导致无法提供预期的功能,或者更糟糕的是,数据包被丢弃从而无法进行通信。

我同意我之前的答案,但我必须补充一点:如果对任何网关或仅通过 2 个网关中的一个传递的任何跃点进行任何过滤,则可能会出现问题!(通过两个网关传递的跃点,例如源计算机、目标计算机和任何“两个网关路径共有的”跃点,与以下场景无关)

例如,如果 A 通过网关 1 向 B 发送数据包,并且数据包通过网关 2 返回,那么如果网关 2 正在执行过滤,则很有可能会丢弃回复数据包(因为该网关没有看到发起连接的数据包,因此它没有) t 期望回复,因此如果回复包的目标/端口通常被过滤,它将被过滤。)

(当然还有很多类似的场景)