關於路由表和路由

IBM Cloud® 虛擬私有雲(VPC)會自動為該 VPC 產生一個預設路由表,用以管理該區域內的流量。 依預設,此路由表是空的。 您可以新增路由至預設路由表,或建立一個以上自訂路由表,然後新增路由。 例如,如果您想要特定子網路的特殊化遞送原則,則可以建立遞送表,並將它與一或多個子網路相關聯。 然而,若您想變更影響所有使用預設路由表子網的預設路由政策,則必須將路由新增至預設路由表。

預設遞送表的功能與其他遞送表相同,不同之處在於它是自動建立的,並且在您建立子網路而未指定遞送表時使用。

您可以在任何路由表中定義路由,以根據您想要的方式來調整資料流量。 每個子網路都分配有一個路由表,路由表負責管理子網路的流量。 您可以隨時變更子網路用來管理其輸出資料流量的遞送表。

此服務也容許將 Network Functions Virtualization (NFV) 用於進階網路服務,例如協力廠商遞送、防火牆、區域/廣域負載平衡、Web 應用程式防火牆等。 目前,IBM Cloud 服務也正在整合自訂路由表。

出口和入口遞送

  • 出口路徑用於控制源自子網內、並流向公共網際網路,或流向同一區域或不同區域中另一個 VM 的流量。

  • 入口路由可讓您自訂從 VPC 可用區域外部的流量來源( IBM Cloud Direct Link、IBM Cloud Transit Gateway、同一 VPC 中的另一個可用區域或公共網際網路)到 VPC 的傳入流量的路由。

    只有一個自訂遞送表可以與特定進入資料流量來源相關聯。 不過,您可以針對不同的流量來源使用不同的路由表。 例如,路由表 A 可能使用 Transit Gateway 及 VPC 區域,而路由表 B 則使用 Direct Link。

定義系統隱含遞送表

您無法將遞送表配置成使用系統隱含遞送表; 它會自動移入。 在與資料流量所處理的子網路相關聯的自訂遞送表中找不到相符路徑時,會使用系統隱含遞送表。 若未找到匹配項目,則該封包將被丟棄。

會維護每一個 VPC 的系統隱含遞送表。 VPC 可以在多個區域中存在,且 VPC 的系統隱含路由表在每個區域中都不同。 對於 Ingress 路由,系統隱含路由表僅包含 VPC 區域中每個網路介面的路由。

可以使用自訂遞送表預設路徑 (動作為 drop) 來避免此行為。

系統隱含遞送表包含:

  • VPC 中每一個子網路的 CIDR 路徑

  • 區域內子網路的路徑 (靜態維護)

  • 遞送至透過 BGP 學習之其他區域中的子網路

  • 透過 BGP 學習的動態路徑 (例如,Direct Link 及 Transit Gateway)

  • 網際網路資料流量的預設路徑 (當公用閘道或浮動 IP 與 VPC 相關聯時使用)

  • 遞送至標準基礎架構服務網路 CIDR (當服務閘道與 VPC 相關聯時使用),例如:

    10.0.0.0/1410.200.0.0/1410.198.0.0/1510.254.0.0/16 是標準基礎架構服務網路 CIDR。

決定路徑喜好設定

您可以指定路由優先權(0-4 ) 的 VPC 路由,用於決定當特定目的地存在多個路由時哪些路由具有較高的優先權。 現有路由和建立時沒有指定優先權值的新路由會自動設定為預設優先權(2 )。

路徑優先順序只會在相同的目的地上考量,且與任何動態學習的路徑類似。

設定路由優先順序範例

  • 如果您具有 /32 字首及優先順序為 1 的路徑,以及目的地為 /31 且優先順序為 0 的路徑,則會先使用 /32 (最長字首相符項)。 換句話說,只有在有多個路徑具有完全相同的字首時,優先順序才會重要。
  • 如果您有三個具有 0.0.0.0/0 的路徑 (預設路徑),則只會使用具有最高優先順序的路徑。 如果移除選取的路由 (例如,透過自動化),則會選取剩餘兩個路由中的最高優先順序。
  • 如果自訂路由表只有一條具有特定前綴的路由,則始終使用該路由,無論其優先順序為何。 最佳路由選擇針對每個特定前綴進行,並選擇具有最高優先權的路由。

當兩個路徑具有相同的目的地及優先順序 (延伸現行行為,其中 ECMP 用於具有相同目的地的兩個路徑) 時,會使用「相等成本多路徑 (ECMP)」遞送。 最多只容許遞送表中的兩個路徑具有相同的目的地及優先順序。 例如,如果自訂遞送表有三個路徑具有相同的目的地,一個路徑具有優先順序 1,另外兩個路徑具有優先順序 4 (ECMP),則會選取優先順序 1 的路徑,並忽略 ECMP 路徑 (無 ECMP)。 現在,如果具有相同目的地及優先順序的兩個路徑具有最高優先順序,則系統會選取這兩個路徑並執行 ECMP。 然後,如果刪除其中一個路徑,則會選取仍然存在的路徑,且不會執行 ECMP。

如需路徑優先順序限制,請參閱 限制和準則

廣告路線

過去,VPC 的根位址字首內的位址字首已通告給 Direct Link 及 Transit Gateway。 不過,您無法在 VPC 的根位址字首之外公告您的位址字首。 路線公告會新增此功能。 例如,圖 1 將所有區域中的路由 0.0.0.0/0 通告至區域特定的下一個躍點。

邊緣代理防火牆用例
廣告路由

有關更多信息,請參閱 建立路由表更新路由表

廣告路線考量

發布路由時請注意以下事項:

  • 您可以在指派給 VPC 的根位址前綴之外通告路由,這樣您就可以將您的外部網路或位於 VPC 外部的網路通告給Direct Link或者Transit Gateway。

  • 如果多個 Transit Gateway 或 Direct Link 連接到您的 VPC,您可以對各個中轉網關或 Direct Link 使用路由過濾Transit Gateway或者Direct Link連線來微調將哪些路由通告給哪些連線。

  • 如果向同一個目的前綴發布多個優先權不同的路由,則優先權較高(優先權值較小)的路由作為主路由,優先權較低(優先權值較高)的路由作為備份路由。

  • 如果您通告兩條不同的路由,例如 172.16.0.0/31 透過 10.1.1.0172.16.0.0/32 透過 10.1.2.0,路線有 /32 前綴始終優先於帶有前綴的路由 /31 字首。 這與「最長字首相符」規則集一致。 主機目標的較長前綴始終優於較窄的前綴。

  • 目前沒有機制標示來自 Transit Gateway 或 Direct Link的重複路徑。 這Transit Gateway根據首選,使用最具體的前綴和最短的 AS 路徑選擇最佳路徑。 否則,Transit Gateway選擇它首先收到的路由。 該路由可能不是VPC側最舊的路由,如果到達VPC側的路由可能會改變Transit Gateway均在內部刷新。

  • 從 VPN 閘道廣播的路由取決於 VPN 類型。 基於政策的 VPN 閘道不會動態發佈路由。 僅會傳播VPN政策中定義的CIDR前綴,且路由表必須設定為接受來自VPN閘道的路由。 基於路由的 VPN 閘道器透過 BGP 動態發佈路由。

    當從包含 VPN 連線功能的路由表中發佈路由時,請確保所選用的 VPN 閘道類型支援預期的路由傳播行為。

使用案例

下列使用案例說明不同的遞送實務。

使用案例 1: Edge Proxy 防火牆

邊緣代理防火牆用例
邊緣代理防火牆用例

邊緣代理防火牆出口路由表
目的地 動作 下一個躍點 位置
10.10.0.0/16 代理人 達拉斯 DC 1
10.11.0.0/16 代理人 達拉斯 DC 1
0.0.0.0/0 交付 10.10.1.5 達拉斯 DC 1

目標: Edge Proxy 防火牆

保護從用戶端定義的閘道、Proxy 或防火牆應用裝置後面流向公用網際網路的流量安全,同時也容許其他子網路上的資源流經 VPC 管理的公用閘道。

透過將 VPC 自訂路由與每個子網路出口路由結合使用,您可以建立一個表格來覆寫 VPC 網路內的系統隱式路由。 在此範例中,系統建立的預設表(所有子網路均在建立時分配)未變更。 也會建立透過邊緣 Proxy (NFV Proxy) 從子網路 10.10.1.0/24 引導資料流量的表格。

因為代理流的目的地是公共互聯網,並且通常遵循預設路由(0.0.0.0/0 ),首先需要使用自訂路由的Delegate功能來豁免流向內部可達私網的流量。 子網路中的資源 10.10.3.0/24 繼續使用連接到該子網路的公共網關。

雖然在此範例中,使用 Proxy 的實例與 Proxy 共用共用子網路,但您不需要這樣做。 透過自訂路由,您可以指定連接到不同子網路的執行個體的下一跳 IP。 透過這樣做,您可以水平擴展,而不必擔心邊緣服務的子網路大小。 例如,代理路由表可以附加到子網路 10.10.3.0/24 並將所有公共流量定向到 NFV 代理。

Edge Proxy 防火牆中使用的功能

此使用案例使用 Edge Proxy 防火牆的下列功能:

  • 10.10.0.510.10.1.5 介面上停用 IP 盜用檢查,以啟用來源位址保留。 此動作需要實例上提升的 IAM 許可權。
  • 出埠流程的公用閘道,具有未透過 NFV Proxy 導向的資源。
  • 連接至 10.10.0.5 介面的浮動 IP,以啟用直接指向 NFV Proxy 的入埠及出埠公用流程。
  • 將有狀態安全群組及網路存取控制清單 (ACL) 分別新增至實例介面及 VPC 子網路,以在 VPC 內提供其他隔離資源。

使用案例 2: 公用負載平衡器

公共負載平衡器用例
公共負載平衡器用例

公共負載平衡器 Web 出口路由表
目的地 動作 下一個躍點 位置
10.10.0.0/16 代理人 達拉斯 DC 1
10.11.0.0/16 代理人 達拉斯 DC 1
161.26.0.0/16 * 代理人 達拉斯 DC 1
166.8.0.0/14 * 代理人 達拉斯 DC 1
0.0.0.0/0 交付 10.10.1.5 達拉斯 DC 1

目標: 公用負載平衡器

託管使用客戶端定義的應用程式或網路負載平衡器的網路應用程式。

透過將 VPC 自訂路由與每個子網路出口路由結合使用,您可以建立一個表格來覆寫 VPC 網路的系統隱式路由,而無需更新每個執行個體上的路由資訊。 在此範例中,會保留從網際網路使用者到 Web 層的來源 IP。 Web 到應用程式和應用程式到資料庫層透過使用隱式 VPC 路由進行通信,並繼續使用公共網關進行互聯網出口。

VPC 及 IBM 服務網路內的內部/專用網路需要透過專用骨幹進行路由委派。 為了避免需要委派,可以將 Web 層伺服器連接至應用程式層子網路,並在 Web 實例上變更遞送,以使用應用程式子網路閘道作為內部 VPC 及雲端服務網路的下一個中繼站。

公用負載平衡器中使用的函數

此使用案例使用公用負載平衡器的下列功能:

  • 10.10.0.510.10.1.5 介面上停用 IP 盜用檢查,以啟用來源位址保留。 此動作需要實例上提升的 IAM 許可權。
  • 未透過 NFV Proxy 導向之資源的出埠流程公用閘道。
  • 連接至 10.10.0.5 介面以直接對 NFV 負載平衡器啟用入埠及出埠公用流程的浮動 IP。
  • 將有狀態安全群組及網路存取控制清單 (ACL) 分別新增至實例介面及 VPC 子網路,以在 VPC 內提供其他隔離資源。

使用案例 3:VPN

若要讓 VPN 閘道作為 VPC 遞送表中的下一個中繼站,則會在專用子網路中建立閘道。 此子網僅用於 VPN 閘道,當存在路由 0.0.0.0/0 且下一跳為 VPN 連線時,該子網會與具有不同路由表的 VPN 閘道子網相關聯。

例如:

  • 子網路 A 用來管理虛擬伺服器,並與預設遞送表相關聯。 有一個路徑 0.0.0.0/0,下一個中繼站是 VPN 連線。
  • 子網路 B 用來管理 VPN 閘道,並建立新的遞送表 (遞送表 B)。 它會將子網路 B 與遞送表 B 相關聯。 依預設,路由表 B 中不需要任何路由。

當有路由 0.0.0.0/0 且下一跳是 VPN 連線時,若要在子網路間建立連線,您可以新增下列委託路由:

destination CIDR==zone3 VPC prefix, action==delegate, location==zone1
destination CIDR==zone1 VPC prefix, action==delegate, location==zone3

限制和準則

下列限制及準則適用於 IBM Cloud Custom Routes for VPC。

一般限制

  • 目前,您無法對入口 (連接至資料流量來源) 及出口 (連接至子網路) 資料流量使用自訂遞送表。 此外,預設自訂遞送表無法與進入資料流量來源相關聯。
  • 目前,由於非對稱遞送,傳回資料流量可能失敗。 此問題會影響相依於 ECMP 靜態路徑的所有服務。 例如,假設您在 VPC A 中建立兩個 ECMP 路徑,目的地為 10.134.39.64/26,而下一個中繼站分別是 192.168.2.4192.168.2.5。 這些下一個中繼站是 NFV 裝置 IP 位址。 當您從 VPC 中的實例 A 發送流量時,封包會隨機路由到下一跳之一,並且由於另一側的 ECMP 雜湊演算法,無法保證回傳流量與轉送流量遵循相同的路徑。 這種現象稱為 非對稱遞送。 當發生非對稱路由時,問題不在於路由本身,而是即使安全群組規則允許此流量,安全群組也會丟棄該流量,因為安全群組只看到一條路徑中的流量。 一般來說,建議避免使用 ECMP 路由。
  • 在自訂路由中到達下一個躍點 IP 位址的能力不是用於正向資料流量的決定因素。 當使用具有相同字首 (但不同的下一個躍點 IP 位址) 的多個路徑時,這可能會導致問題,因為可能不會遞送無法到達的下一個躍點 IP 位址的資料流量。
  • IBM Cloud 虛擬私有雲(VPC)允許在您的VPC內部私有使用 RFC-1918 及IANA註冊的 IPv4 位址空間,惟IANA特殊用途位址範圍及分配給 IBM Cloud 服務的特定範圍除外。 在企業內以及 VPC 內與 IBM Cloud Transit Gateway 或 IBM Cloud Direct Link一起使用 IANA 登錄範圍時,您必須在每個區域中安裝自訂路徑。 如需相關資訊,請參閱 IANA 登錄 IP 指派的遞送考量
  • 如果存在到相同目的地的 2 個不同的通告路由,則適用以下限制:
    • 當兩條路由的下一跳位於同一區域時,優先權較高的路由(即優先權較小的路由)priority )作為主路徑,優先順序較低的路由(即較高的值)priority ) 用作備份路徑。 如果兩個路徑的優先順序相同,則會使用 ECMP 來平均遞送 2 個路徑的資料流量。
    • 當這兩個路徑的下一個中繼站位於不同區域時,Transit Gateway 或 Direct Link 路由器會選擇最佳路徑。 在此情況下,這是最舊的廣告路線。

路徑優先順序

如果存在多個具有相同目的地 CIDR/ 字首的路徑,則會使用具有最高優先順序值的路徑。 具有相同目的地 CIDR/ 字首及優先順序的路徑會使用 ECMP 遞送。

輸出路徑

對於出口自訂路徑,當您新增目的地路徑時,必須選取區域。 不過,下一個中繼站不必位於相同區域中。 對於入口自訂路徑,下一個中繼站必須位於相同的區域中。

相等成本多路徑 (ECMP)

隱含路由器會執行 ECMP 路由(即有多條目的地相同但下一跳位址不同的路由),但有以下限制:

  • 這僅適用於動作為 deliver 的路由。
  • 每個區域只允許兩個相同的目的地路徑,且每個必須具有不同的下一個中繼站位址。
  • 使用 ECMP 時,傳回路徑可能不會採用相同的路徑。
  • ECMP 只支援 IP 位址的下一個躍點類型。

進入路徑

  • 目前,公共入口路由(public internet 流量選擇)僅在主控台中可用。 即將提供 CLI 和 API。
  • 每個入口來源類型可以與每個 VPC 最多一個入口遞送表相關聯,然而,一個 VPC 可以具有多個入口遞送表,並且每個入口遞送表可以具有一個或多個相關聯的入口類型。
  • 來自特定流量來源的入口流量透過使用與該流量來源關聯的自訂路由表中的路由進行路由。
  • 與進入資料流量來源相關聯且具有動作 deliver 的自訂遞送表中的自訂路徑,必須具有新增路徑之可用性區域中 VPC 的其中一個位址字首所包含的下一個中繼站 IP。 此外,必須在 VPC 及路徑目標所在可用性區域中的虛擬伺服器介面上配置下一個中繼站 IP。
  • 來自特定流量來源的入口流量透過使用與該流量來源關聯的自訂路由表中的路由進行路由。 如果在自訂遞送表中找不到相符路徑,則會使用 VPC 系統遞送表繼續遞送。 您可以利用 drop 動作來避免使用自訂遞送表的預設路徑的這種行為。
  • 包含任何具有目的地 IP (FIP) 的自訂路徑的入口自訂遞送表,應該定義在與 FIP 相關聯的虛擬伺服器實例相同的區域中。
  • 當啟用公共網際網路 ( route_internet_ingress ) 來源類型時,綁定至IBM Cloud VPN閘道的浮動 IP 不能用作入口路由表中自訂路由的目標。

唯一字首長度

每個自訂路由表最多可使用 14 種不同的前綴長度。 您可以具有字首相同的多個路徑,但只能視為一個唯一字首。 例如,您可能有多個路徑具有 /28 字首。 此前綴長度視為一個唯一前綴。

VPN

  • 當您為基於路由的靜態 VPN 連線建立路由時,必須輸入下一躍點的 VPN 連線 ID。 VPN 閘道必須與遞送表相關聯的子網路位於相同的區域中。 不建議您將 VPN 閘道定義為區域中與遞送表相關聯的子網路不同的下一個中繼站。
  • 對於路由型VPN,請避免將私有IP位址用作VPN路由的下一跳。 如果 VPN 重新啟動或其 IP 變更,指向 IP 位址的路由可能會中斷,連線可能會失敗。 請始終將 VPN 連線名稱(ID)設定為下一跳,如此當 VPN 重新連線時,路由便能自動更新。
  • 只有在 VPN 連線作用中時,具有 VPN 連線作為下一個中繼站的路徑才會生效。 如果 VPN 連線已關閉,則在遞送查閱期間會跳過此路由。
  • 包含具有與 VPN 連線相關聯之下一個躍點的自訂路由的自訂遞送表,無法與進入資料流量來源相關聯。
  • 自訂路徑僅在路由型 VPN 上受支援。 如果您使用原則型 VPN,則 VPN 服務會在預設路由表中自動建立路由。