Routing

如何防止多個 eBGP 路由器的不對稱路由?

  • June 17, 2012

我有 2 台路由器向不同的提供商宣布 /22 子網(一個提供商連接到 2 台路由器中的每台)。我已將 /22 分成兩個 /23 以在每個路由器上宣布一個 /23 加上 /22(提供商將採用更具體的路由)。這允許我進行故障轉移並保持 /23 內部的流量進出同一個提供程序。

還有哪些其他方法可以讓我只用兩個路由器宣布 /22 並讓來自路由器後面網路上的伺服器的數據包返回它們來自的同一路由器?

編輯:

我遇到的最終使用者和客戶抱怨最多的主要問題是,最少跳數路由有時不是“最佳”路由。就我而言,我知道提供商 B 可能對 X 國家有更好的延遲。但是當數據包從提供商 B 進來時,它們可能會從提供商 A 或提供商 B 出去。反過來也是如此。如果我從提供商 A 向 X 國家發送一個數據包,即使它可能有更多的躍點返回,數據包也可能會從提供商 B 進來(到這個國家可能有更高的延遲、封包遺失等)

嚴格來說,當您向多個提供商宣布您的前綴時,您會失去對入站路由路徑的完全控制,因為下游會做出獨立的路由決策以將流量返回給您。此外,您的公告甚至可以在您發送後被下游提供商修改。

例子

這是可能發生的事情的一個例子。假設您擁有 AS 777,它擁有 2.2.0.0/22。您有路由器 A 的公司需要訪問的服務……我們還假設 AS 100 沒有與您的良好連結(可能由於您無法修復的物理層問題而間歇性地破壞流量)。所以你對自己想,“我只會在我的所有公告前加上大量的 ASN,這樣在我解決這個問題之前,沒有人會更喜歡 AS100 連結”

bgp不對稱

問題是您只能完全控制您的出站路由決策。您沒有完全控制入站…所以假設路由器 A 的管理員不知道您與 AS100 的連結是壞的。它們是雙宿主到 AS200 和 AS100,但 AS100 提供更便宜的傳輸,每 Mbps;因此Router A的工程師從AS100取全路由,只用AS200做備份(只取預設)。

作為 AS 777 的管理員,您可以強制通過 AS 200 到路由器 A 的流量,但從路由器 A 到 2.2.0.0/22 的流量仍將使用 AS 100(因為最佳路由是通過路由器 A 的 AS 100)。

可能的解決方案

通常不對稱路徑很重要,因為負載均衡器或防火牆正在接收流量。一些可能的解決方案:

  • 對於其他 ASN 中提供的服務,您可以將所有出站流量通過NAT 源發送到指向特定 AS 的連結的本地地址(但這對服務提供商來說並不適用)
  • 對於您的 ASN 中提供的服務,您可以將所有入站流量的NAT 源發送到相關 BGP 對等路由器上子網的本地地址(但這對服務提供商來說效果不佳)
  • 您可以設置一個 DMZ 來接收來自所有不同 ASN 的流量,並為來自上游的流量提供一個入口/出口點。在某些情況下,您甚至可以同步 DMZ 設備上的狀態表。(但這對服務提供商來說效果不佳)
  • 如果您願意使用諸如BGP Conditional Advertisement之類的功能,您有時可以以不使用其他運營商來處理到 2.2.0.0/22 的入站流量為代價來解決這類問題。

如果您提供有關服務性質和問題的更多詳細資訊,我們或許能夠提供更具體的建議。

引用自:https://serverfault.com/questions/399240