雙向轉送偵測 (BFD) 簡介

本頁說明 Cloud Router 的 雙向轉送偵測 (BFD)

BFD (RFC 5880RFC 5881) 是多數商業路由器支援的轉送路徑中斷偵測通訊協定。有了 Cloud Router 專用的 BFD,您可以在 BGP 工作階段中啟用 BFD 功能,以便偵測轉送路徑中斷事件,例如連結關閉事件。這項功能可讓混合式網路更具彈性。

當您使用專屬互連網路或合作夥伴互連網路,從內部部署網路與 Google Cloud 建立對等連線時,可以啟用 BFD,快速偵測連結故障,並將流量容錯移轉至具有備份 BGP 工作階段的替代連結。如此一來,BFD 便可提供高可用性的網路連線路徑,快速回應連結錯誤。

BFD 優勢

以預設設定設定的 BFD 可在 5 秒內偵測到失敗,而以 BGP 為基礎的失敗偵測則需要 60 秒。在 Cloud Router 上導入 BFD 後,端對端偵測時間可縮短至 5 秒。

BFD 是固定長度的問候協定,其中連線的每個端點會定期透過轉送路徑傳送封包。

BFD 是一種以 UDP 為基礎的偵測通訊協定,可提供低負擔的方法,用於偵測兩個相鄰路由器之間轉送路徑中的失敗情形。包括檢測介面、資料連結和轉送平面中的失敗情形。您可以在路由通訊協定層級啟用 BFD。

BFD 限制

您只能在專屬互連網路或合作夥伴互連網路中,為 VLAN 連結設定的 BGP 工作階段中啟用 BFD。BFD 不適用於為 HA VPN 通道或路由器設備 (Network Connectivity Center 的一部分) 設定的 BGP 工作階段。

BFD 工作階段建立

如要建立 BFD 工作階段,請在兩個 BGP 對等點上設定 BFD:Cloud Router 和執行 BFD 的內部部署路由器。在路由器上為 BGP 路由通訊協定啟用 BFD 後,系統會建立 BFD 工作階段、協商 BFD 計時器,並且 BFD 對等點會開始在協商間隔內彼此傳送 BFD 控制封包。

BFD 會將快速故障偵測通知傳送至本機路由器,以啟動重新計算路由表的程序,進而大幅縮短整體網路收斂時間。

下圖顯示簡單的網路,其中有兩個路由器執行 BGP 和 BFD。這些數字代表 BFD 工作階段建立程序:

  1. 已設定 BGP 相鄰節點。
  2. BGP 會向本機 BFD 程序傳送要求,以便與 BGP 對等點/相鄰路由器啟動 BFD 相鄰工作階段。
  3. 已建立 BGP 鄰居路由器的 BFD 鄰居工作階段。
建立 BFD 工作階段。
BFD 工作階段建立 (按一下即可放大)

失敗事件期間的 BFD

下圖顯示網路發生故障時的情況。

在 BFD 僅控制模式中,Cloud Router 和貴機構內部路由器會定期互相傳送 BFD 控制封包。如果其他路由器未收到在 Cloud Router 的 bfd multiplier 設定中所設定資料列中的控制封包數量,系統會宣告工作階段已關閉。接著,會發生以下情況:

  1. Google Cloud 和地端部署路由器之間的連結發生故障。
  2. 與 BGP 鄰居路由器的 BFD 鄰居工作階段已關閉。
  3. BFD 會通知本機 BGP 程序,指出 BFD 鄰居無法再連線。
  4. 本機 BGP 程序會拆除 BGP 鄰居關係。

如果有其他路徑可用,路由器會立即開始在該路徑上進行收斂。

發生失敗事件時的 BFD。
失敗事件期間的 BFD (按一下即可放大)

BFD 減緩

Cloud Router 會在內部實作 BFD 減緩功能,以抑制 BFD 工作階段頻繁翻轉對 BGP 造成的負面影響。BFD 減緩功能會使用預設參數,使用者無法修改這些參數。

BFD 減緩功能會使用懲罰系統。處罰值從 0 開始,並在第一個 flap 增加到 1。第一次發生 flap 後,每次發生另一次 BFD flap,懲罰就會加倍。當懲罰值超過 4 的門檻值時,BFD 會抑制傳送至 BGP 的通知。如果在這段期間內沒有發生振翅,罰分會每 10 分鐘減少一半。

BFD 會在懲罰值低於重複使用門檻 4 後,再次向 BGP 啟用通知。

BFD 通知至 BGP 的最大抑制間隔為 1 小時。這可確保 BFD 會話中斷通知不會永久減弱。

BFD 非同步模式

Cloud Router 支援非同步作業模式,其中涉及的系統會定期將 BFD 控制封包傳送給彼此。如果另一個系統未收到所設定的列中封包數量,則會宣告工作階段已關閉。

不支援 BFD 作業的隨需模式。對於封包模式,BFD 支援僅控制模式;不支援回應模式。

在非同步模式中,如果使用控制封包模式,BFD 會在控制層執行,並可能增加一些額外負載和 CPU 處理時間。

根據預設,Cloud Router BGP 工作階段會停用 BFD。如要使用 BFD,您必須啟用

在下列失敗情境中,路由器的設定如下:

  • Cloud Router 的 BFD 最小接收傳送間隔設為 1000 毫秒 (ms)。
  • 對等互連路由器的 BFD 最小接收傳送間隔設為 1000 毫秒。
  • BFD RFC 5880 通訊協定會協商同意的傳輸間隔,以傳送方傳輸間隔和接收方接收間隔中較高者為準。因此,由於設定相同,雙方同意的傳輸間隔為 1000 毫秒。
  • Cloud Router 的偵測時間計算方式是將對等路由器的傳送間隔乘以對等路由器的 BFD 調節係數值。在這種情況下,偵測時間為 1000 毫秒 * 5 = 5000 毫秒。
  • 對等路由器上的偵測時間計算方式為 Cloud Router 同意的傳送間隔乘以 Cloud Router 的 BFD 乘數值。在這種情況下,偵測時間為 1000 毫秒 * 5 = 5000 毫秒。

Cloud Router 會與對等互連路由器協商,並預期每隔 1000 毫秒就從對等互連路由器接收控制封包。如果 Cloud Router 在 5000 毫秒內未收到控制封包,偵測計時器就會逾時,並宣告 BFD 工作階段為關閉狀態。

不含回音封包的 BFD。
不含回音封包的 BFD (按一下即可放大)

設定 BFD 時,建議您採用下列做法:

  • 為避免 BFD 乘數不相符,請將內部部署路由器和雲端路由器設定為相同的 BFD 設定。
  • 為避免 BFD 和 BGP 搖擺,請將每個方向的 BFD 最小逾時時間設為至少 5000 毫秒。

安全重新啟動和 BFD

為盡量降低 Cloud Router 軟體維護事件對流量的影響,建議您啟用 BGP 安全重新啟動功能。

如果同時啟用 BGP 安全重新啟動和 BFD,Cloud Router 重新啟動時,會嘗試傳送 AdminDown 訊息至內部部署路由器,以關閉 BFD。在這種情況下,BGP 工作階段會繼續在內部部署端運作,而內部部署路由器會進入安全重新啟動模式。當內部部署路由器處於安全重新啟動模式時,Cloud Router 可以重新啟動,而不會影響資料層流量。

同樣地,如果內部部署路由器在控制層重新啟動前傳送 AdminDown 訊息,Cloud Router 就會進入安全重新啟動模式。當 Cloud Router 處於安全重新啟動模式時,內部部署路由器就能重新啟動,而不會影響資料層流量。

Cloud Router 與對等互連路由器建立 BFD 時,會將控制層獨立位元設為 0,表示其 BFD 實作會依賴控制層。如果發生介面故障,對等路由器可能無法區分是由控管層故障或資料層故障所造成的 BFD 故障。舉例來說,介面故障可能會導致內部部署路由器進入安全重新啟動模式,並不必要地延遲受影響連結的流量切換。

由於 BFD 失敗可能會造成模糊不清的情況,因此不同供應商會以不同的方式處理這種情況,並提供設定選項來變更預設行為。建議您查看路由器供應商的文獻,並設定內部部署路由器,確保當 BFD 介面故障事件搭配使用 BGP 平順重新啟動功能時,會觸發依賴控制平面的 BFD 同端節點,以便立即進行故障移轉。

BFD 設定和計時器

本節說明可在 Cloud Router 上設定的 BFD 設定。

雙向轉送偵測 (BFD) 工作階段初始化模式

說明 此 BGP 對等點適用的 BFD 工作階段初始化模式。
gcloud 指令 --bfd-session-initialization-mode
API 欄位 bgpPeers[].bfd.sessionInitializationMode
預設設定 Disabled

有三種 BFD 模式設定:ActivePassiveDisabled。如果您未設定這個模式,系統會預設為 Disabled,並使用非回音模式 (僅限控制封包)。

  • Disabled (預設值):系統會為此 BGP 對等互連停用 BFD。
  • Passive:Cloud Router 會等待對等互連路由器為此 BGP 對等點啟動 BFD 工作階段。
  • Active:Cloud Router 會為此 BGP 對等點啟動 BFD 工作階段。

您必須將連線至少一側的路由器 (Cloud Router 或對等路由器) 設為 Active。在兩部 Cloud Router 之間設定 BGP 工作階段時,請將其中一個路由器的 BFD 工作階段初始化模式設為 Active

如果兩端都設為 Active,兩端會傳送初始控制封包來協商參數,最終建立工作階段。

如果您將 BFD 工作階段初始化模式設為 Disabled,可以選擇設定其餘的 BFD 設定。重新啟用 BFD 後,這些設定即會生效。

BFD 傳輸間隔下限 (送至對等點的 BFD 封包)

說明 傳送至 BGP 對等互連的 BFD 控制封包間的最小間隔。
gcloud 指令 --bfd-min-transmit-interval
API 欄位 bgpPeers[].bfd.minTransmitInterval
預設設定

1000 毫秒。您可以指定 1000 毫秒至 30000 毫秒之間的設定。

BFD RFC 5880 通訊協定會將 Cloud Router 的傳送間隔和對等端的接收間隔中較大的值,設為已同意的傳送間隔。因此,即使您的內部部署裝置只支援低於 1000 毫秒的接收間隔,BGP 工作階段仍可支援 BFD。

BFD 接收間隔下限 (從對等點收到的 BFD 封包)

說明 從 BGP 對等點收到的雙向轉送偵測 (BFD) 控制封包間的最小間隔。
gcloud 指令 --bfd-min-receive-interval
API 欄位 bgpPeers[].bfd.minReceiveInterval
預設設定

1000 毫秒。您可以指定 1000 毫秒至 30000 毫秒的設定。

BFD RFC 5880 通訊協定會將對等互連路由器的傳送間隔設為對等互連路由器的傳送間隔和 Cloud Router 的接收間隔中較大的值。因此,即使您的內部部署裝置只支援低於 1000 毫秒的傳輸間隔,BGP 工作階段仍可支援 BFD。

BFD 乘數

說明 在雙向轉送偵測 (BFD) 宣告對等互連無法使用之前,必須連續錯過的雙向轉送偵測 (BFD) 控制封包數。這個調節係數用於計算接收端的偵測時間,如下所示:

偵測時間 = 約定的傳輸間隔 * BFD 乘數

gcloud 指令 --bfd-multiplier
API 欄位 bgpPeers[].bfd.multiplier
預設設定

5 個封包。您可以指定 5 個至 16 個封包的設定。

如要讓兩個方向的偵測時間相同,請在 Cloud Router 和對等路由器上設定相同的乘數值。

後續步驟