雙向轉送偵測 (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 是固定長度的 Hello 通訊協定,連線的每個端點會透過轉送路徑定期傳輸封包。

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

雙向轉送偵測 (BFD) 限制

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

建立 BFD 工作階段

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

雙向轉送偵測 (BFD) 會將快速故障偵測通知傳送至本機路由器上的 BGP,以啟動路由表重新計算程序,有助於大幅縮短整體網路聚合時間。

下圖顯示一個簡單的網路,其中有兩個路由器執行 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 開始,第一次拍動時會增加至 1。第一次發生 BFD 擺動後,每次再發生 BFD 擺動,處罰就會加倍。 當懲罰超過門檻值 4 時,BFD 會抑制 BGP 的通知。如果在這段期間沒有發生擺動,每 10 分鐘就會減少一半的處罰。

當懲罰值低於 4 的重複使用門檻時,BFD 會再次啟用 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 毫秒會收到對等互連路由器的控制封包。如果雲端路由器在 5000 毫秒內未收到控制封包,偵測計時器就會到期,並宣告 BFD 工作階段已停止運作。

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

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

  • 為避免 BFD 乘數不符,請將內部部署和 Cloud Router 設定為相同的 BFD 設定。
  • 為避免 BFD 和 BGP 擺動,請在每個方向設定的 BFD 最短逾時時間不低於 5000 毫秒。

安全重新啟動和雙向轉送偵測 (BFD)

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

如果同時啟用 BGP 安全重新啟動和 BFD,Cloud Router 重新啟動時會嘗試關閉 BFD,方法是將 AdminDown 訊息傳送至內部部署路由器。發生這種情況時,地端部署端的 BGP 工作階段會保持運作,地端部署路由器則會進入安全重新啟動模式。內部部署路由器處於安全重新啟動模式時,Cloud Router 可以重新啟動,而不會影響資料層流量。

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

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

由於 BFD 可能會發生失敗的模糊情況,不同供應商會以不同方式處理這個特定情境,並提供設定來變更預設行為。建議您查看路由器供應商的文件,並設定內部部署路由器,確保搭配 BGP 正常重新啟動時,控制平面相依 BFD 對等互連介面發生 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 和對等路由器上設定相同的乘數值。

後續步驟