FBOSS 是 Facebook 用於控制和管理網路交換器的軟體堆疊。
FBOSS 由許多用戶空間應用程式、程式庫和實用程式組成。
FBOSS 的初始開源版本主要由代理守護程式組成,但我們也正在努力發布其他部分和功能。
FBOSS 的核心部分之一是代理守護進程,它在每個交換器上運行,並控制硬體轉送 ASIC。 Agent守護程式向硬體發送轉送訊息,並實現一些控制平面協議,例如ARP和NDP。此代理程式提供用於管理路由的 Thrift API,以允許外部路由控製程序將其路由資訊編程到硬體轉發表中。
代理程式的程式碼可以在 fboss/agent 找到
代理程式需要 JSON 設定檔來指定其連接埠和 VLAN 設定。一些範例設定檔可以在 fboss/agent/configs 下找到。這些文件並不是真正供人類使用的——在 Facebook,我們有工具可以為我們產生這些文件。
FBOSS 代理程式管理硬體 ASIC 中的轉發表,但需透過 Thrift API 獲知目前路由。
我們最初的開源版本尚不包含能夠與代理程式通訊的路由協定守護程式。我們在 Facebook 使用的路由協定守護程式對於我們的環境來說是相當特定的,並且可能對開源社群沒有那麼有用。對於 Facebook 以外的更一般用途,應該可以修改現有的開源路由工具來與 FBOSS 代理對話,但我們尚未實現這一點。同時,我們在 fboss/agent/tools 中包含了一個小範例 python 腳本,可以手動新增和刪除路由。
顯然,需要額外的工具和實用程式來與 FBOSS 代理程式互動、報告其狀態、產生設定檔和偵錯問題。
目前,我們還沒有準備好許多可供開源發布的工具,但我們希望在未來幾週內提供更多這些工具。同時,thrift編譯器可以自動產生python-remote腳本,以允許手動呼叫代理程式的各種thrift介面。
有關如何建立 FBOSS 的說明,請參閱 BUILD.md 文件。
FBOSS 專為滿足 Facebook 資料中心網路的需求而設計,但我們希望它也能對更廣泛的社群有用。但請注意,FBOSS 的初始版本可能需要修改和額外開發,以支援 Facebook 使用的功能以外的其他網路配置。在 FBOSS 更加成熟之前,它的主要興趣可能是網路軟體開發人員,而不是希望將其用作統包解決方案的網路管理員。
我們期待得到社群的回饋,並且希望 FBOSS 能夠成為其他希望對網路交換器進行程式設計的使用者的起點。
Facebook 正在進行 FBOSS 開發,我們計劃繼續發布更多元件、附加功能以及對現有工具的改進。
請參閱許可證。