碰巧我遇到了客户,这些客户的网络中有我定义为“非对称路由”的客户。简而言之,它们在同一IP子网中有两个网关。客户端被配置为指向一个网关(即172.16.1.1),但是有另一台设备(即172.16.1.2)连接并路由到某个地方。通常,当有两种不同类型的WAN连接时,我会看到这种设置:1个Internet连接和1个企业MPLS连接。每个子网必须只有一个网关。从我的角度来看,上述情况可能会给客户端带来一些问题,因为客户端向其默认网关(172.16.1.1)发送数据包,然后将这些数据包转发出另一台路由器(172.16.1.2),并在它们得到答复时转发出去。到,他们只需通过172.16.1.2。即可到达客户。客户希望或应该期望答复数据包来自172.16.1.1,或者我在这里错了?

我很高兴收到您对此问题的看法和技术见解。

评论

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。

#1 楼

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

实际上,拥有两个网关可能是一个很好的网络设计,因为如果一台路由器发生故障,另一台路由器可以无缝地接管。但是,您知道,如果必须手动重新配置子网中的每个客户端,则进行此转换并不容易。

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

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

我刚才所说的很多设计原则。我建议您研究两种协议,并确定最适合您的环境的协议。如果您使用的是Cisco设备,则HSRP是解决此问题的一种广泛使用且广为人知的方法。

评论


并且不要忘记还有GLBP,它也可以做HSRP / VRRP一样的事情(还可以),但是允许两个网关实际对流量进行负载平衡。有时,调试变得有些困难,因为某些客户端可能在R1上,而其他客户端可能在R2上

–knotseh
2013年6月25日21:24

@mierdin,非对称路由与数据包重排序无关...重排序通常是相同前缀的多路径路由的结果...

–迈克·彭宁顿
2013年6月26日19:23在

#2 楼

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

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

评论


当您运行某种反向路径转发时,这也可能是一个问题。否则它不是一个大问题

–融洽
2013年6月25日21:21

为什么会有问题呢?该路由存在并且与接口匹配,因此即使是严格的RPF也不会在这里触发。

– Teun Vink♦
13年6月25日在21:33

如果路由器有两个外部接口,并且数据包以一种方式出局(遵循IGP)然后又返回另一种,则它将丢弃该数据包。除非成本相等,否则传入的数据包将无法通过严格的RPF检查

–融洽
2013年6月26日9:39

#3 楼

网络客户端基于以下四个值的组合来识别流量:


源地址
源端口
目标地址
目标端口

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

但是,如果我们专注于网络中间设备,那么当您使用任何需要查看连接中的所有数据包以提供给定功能的设备/技术时,就不能容忍非对称路由。例如:NAT,状态防火墙或某些WAN优化器。在这种情况下,非对称路由会导致未提供预期的功能,甚至最坏的情况是,数据包将丢失,无法进行通信。

#4 楼

我同意前面的答案,但是我必须添加一些内容:如果在任何网关上或在仅通过2个网关中的1个通过的任何跃点上进行了任何过滤,则可能会出现问题! (通过两个网关(例如源计算机,目标计算机和任何“两个网关路径共有”的跃点)传递的跃点与以下情况无关)

例如,如果A通过网关1向B发送数据包,然后通过网关2返回数据包,那么如果网关2进行过滤,很有可能丢弃应答数据包(因为网关没有看到发起连接的数据包,因此它不希望应答,因此,如果通常对回复数据包的目标/端口进行过滤,则将对其进行过滤。)

(当然,有许多类似的情况)

#5 楼

不对称路由会引起麻烦的其他两个方面是:
1。 MTU发现-如果两个路径中的最小MTU不同,则端点MTU路径发现可能会导致两个MTU中的最大,这又将导致最大大小的数据包丢失。例如,如果一条路径通过VPN隧道,而另一条路径未通过,则VPN隧道的MTU较小。 ping可以正常工作,但是传输大文件将始终失败。
2。如果两条路径中的一条断开但另一条没有断开,则连接故障排除将更加困难。好的旧的“ traceroute”将完全无济于事,因为它将无法检测到反向路径的中间点,除非从连接的两面进行,这需要带外管理通道。