AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 399240
Accepted
Andy Shinn
Andy Shinn
Asked: 2012-06-16 09:52:21 +0800 CST2012-06-16 09:52:21 +0800 CST 2012-06-16 09:52:21 +0800 CST

如何防止多个 eBGP 路由器的不对称路由?

  • 772

我有 2 个路由器向不同的提供商宣布 /22 子网(一个提供商连接到 2 个路由器中的每一个)。我已将 /22 分成两个 /23,以在每个路由器上宣布一个 /23 加上 /22(提供商将采用更具体的路由)。这允许我进行故障转移并保持 /23 内的流量进出同一提供商。

还有哪些其他方法可以让我仅通过两个路由器宣布 /22 并让来自路由器后面网络上服务器的数据包返回它们来自的同一路由器?

编辑:

我遇到的主要问题(最终用户和客户抱怨最多的问题)是最少跳路由有时不是“最佳”路由。就我而言,我知道提供商 B 可能对 X 国家有更好的延迟。但是当数据包从提供商 B 进来时,它们可能会从提供商 A 或提供商 B 出去。反之亦然。如果我从提供者 A 向 X 国家发送数据包,即使它可能有更多的返回跳数,数据包也可能来自提供者 B(对于这个国家可能有更高的延迟、数据包丢失等)

routing bgp quagga ip-routing
  • 3 3 个回答
  • 16424 Views

3 个回答

  • Voted
  1. Best Answer
    Mike Pennington
    2012-06-16T12:22:00+08:002012-06-16T12:22:00+08:00

    严格来说,当您向多个提供商宣布您的前缀时,您将失去对入站路由路径的完全控制,因为在下游为返回流量做出了独立的路由决策。此外,您的公告甚至可以在您发送后被下游提供商修改。

    例子

    这是可能发生的情况之一。假设您有 AS 777,它拥有 2.2.0.0/22。您拥有一家拥有路由器 A 的公司需要访问的服务...我们还假设 AS 100 与您之间的链接不佳(也许由于您无法修复的物理层问题,它会间歇性地破坏流量). 所以你自己想,“我会把我所有的公告都放在带有大量 ASN 的 AS100 之前,这样在我解决这个问题之前,没有人会喜欢 AS100 链接”。

    bgp不对称

    问题是您只能完全控制出站路由决策。您无法完全控制入站...所以让我们假设路由器 A 的管理员不知道您到 AS100 的链接是坏的。它们是 AS200 和 AS100 的双宿主,但 AS100 提供更便宜的传输,每 Mbps;因此,路由器 A 的工程师从 AS100 获取完整路由,仅使用 AS200 作为备份(仅从它们获取默认值)。

    作为 AS 777 的管理员,您可以强制通过 AS 200 到路由器 A 的流量,但从路由器 A 到 2.2.0.0/22 的流量仍将采用 AS 100(因为最佳路由是通过 AS 100,在路由器 A)。

    可能的解决方案

    通常不对称路径很重要,因为接收流量的负载平衡器或防火墙。一些可能的解决方案:

    • 对于在其他 ASN 中提供的服务,您可以将所有出站流量NAT发送到一个地址,该地址是指向特定 AS 的链接的本地地址(尽管这对服务提供商来说效果不佳)
    • 对于在您的 ASN 中提供的服务,您可以将所有入站流量NAT 源到一个地址,该地址是您的 BGP 对等路由器上子网的本地地址(尽管这对服务提供商来说效果不佳)
    • 您可以设置一个 DMZ 来接收来自所有不同 ASN 的流量,并为来自上游的流量提供一个入口/出口点。在某些情况下,您甚至可以同步 DMZ 设备上的状态表。(虽然这对服务提供商来说效果不佳)
    • 如果您愿意使用BGP Conditional Advertisement等功能,有时可以解决此类问题,但代价是不使用其他运营商将入站流量发送到 2.2.0.0/22。

    如果您提供有关服务和问题的性质的更多详细信息,我们可能会提供更具体的建议。

    • 8
  2. voretaq7
    2012-06-16T11:33:36+08:002012-06-16T11:33:36+08:00

    还有哪些其他方法可以让我仅通过两个路由器宣布 /22 并让来自路由器后面网络上服务器的数据包返回它们来自的同一路由器?

    你为什么要这个?或者更准确地说,您为什么要强制执行此行为(因为由于路由的魔力,通常会发生这种情况)?


    BGP 和构成现代互联网的分布式路由层次结构的全部意义在于,您的数据包将采用最佳可用路由到达目的地。如果一个数据包过来Route A但Route B由于某种原因是回复的更好选择那么为什么你不想通过最佳路由发送你的回复?

    我能看到的唯一原因是想让您的流量远离更昂贵的运营商(在这种情况下有更好的方法)。

    • 1
  3. rnxrx
    2012-06-16T12:40:40+08:002012-06-16T12:40:40+08:00

    在这里实现对称的方法实际上与其说是 BGP 的功能,不如说是 NAT 的功能。让我们假设您继续使用从两个路由器通告 /22 以及从每个路由器通告一个 /23 的方案。设置出站 NAT,使离开给定边界路由器的流量在该路由器的 /23 中获得源地址。为了实现入站流量的对称,您还需要源 NAT 将来自全局源的连接转换为分配给每个边界路由器的单独池。

    您将无法在服务器级别了解连接的实际来源,但可以通过 Netflow 或类似机制从路由器检索该信息。

    这里引入了很大程度的潜在复杂性,这也将转化(没有双关语意)到您为服务器放置默认网关的位置和方式。这可能需要具有适当策略的 BGP 通信路由器的中间层,以保持本地发起的流量沿正确的方向前进。但是,一般来说,当您从多个路由器通告具有相同指标的相同路由时,没有优雅的方法来确保对称路由 - 而且,老实说,超出对状态感知设备(如某些防火墙或负载平衡器)的特定要求,这只是不是大多数网络的典型设计目标。

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • 将路由永久添加到 Solaris 10

  • Quagga 套件中的 ./configure --disable-zebra 代表什么?

  • 使用特定接口进行出站连接(Ubuntu 9.04)

  • Linux TC/策略路由工具

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve