文章

透過 ONOS 來控制 bmv2 witch:Pipeconf 開發流程

如果需要透過 P4 來定義自己的 Pipeline,並透過 ONOS 去控制的話,則會需要製作一個 pipeconf (pipeline config) 來讓 ONOS 知道要傳送什麼樣的 pipeline 到裝置上,以及該如何去操作裝置上的 table。

閱讀全文〈透過 ONOS 來控制 bmv2 witch:Pipeconf 開發流程〉

ONF 於 Layer123 的 demo 影片釋出

ONF 於今年荷蘭的 Layer123 大會上展示透過 P4 Runtime 控制四台 Wedge100-BF32x/65x P4 交換機,而在交換機中使用的 Pipeline 是由 Google 提供的 tor.p4,透過一個針對 tor.p4 pipeline 所開發的 App 以及數個 ONOS core App 來展示基本的 ECMP 封包傳輸。

影片中由詳細的架構介紹以及運作流程,並附上實際的操作畫面。

影片如下:

簡介 P4 PI 函式庫

在安裝 bmv2 之前,若需要讓 bmv2 能夠支援 P4Runtime 協議,則必須要先下載 PI 函式庫以及安裝它。

PI 函式庫的 Repo:https://github.com/p4lang/PI/

在 Repo 最上方的簡介是寫 P4Runtime – a control plane framework and tools for the P4 programming language

但是它其實包含了幾個部分:

  • P4Runtime protobuf 定義
  • P4Runtime gRPC server 實作
  • P4Runtime 前端(frontend)
  • PI library

而這些元件的關係如下圖:

PI

一個裝置如果要支援 P4Runtime 的話,就必須要有 P4Runtime 相關的 server 實作,這一個 server 僅是依據定義好的 protobuf 檔案去實作相關的 RPC 的函式,而在 server 接收到相關的呼叫之後,會把資訊傳給 P4Runtime frontend,這一層負責將 P4Runtime 轉換成 PI 函式庫所使用的資料結構,並呼叫特定的 PI 函式(如 pi_table_entry_add),且在這一層也會儲存一些資訊,例如已新增的 Table Entry 或是 Group 等等。

在 PI 這一個 Repo 中已經定義好 server 以及前端處理的部份,所以裝置僅需依據 PI 所提供的介面去實作相關的函式即可。

需要實作的函式可以在這邊找到:https://github.com/p4lang/PI/blob/f5799c11d5b9684e8e1a8412dbe80b50d17c18da/include/PI/target/pi_imp.h

透過 ONOS 來控制 bmv2 switch:設定

P4 Runtime 文章中有提到,P4 Runtime 主要是在裝置上面開啟一個 gRPC server 並且讓 SDN 控制器連上該裝置。

因此 ONOS 在連上 P4 裝置之前必須要先進行設定,告訴 ONOS 該裝置的 IP 位址以及 gRPC 埠口。

閱讀全文〈透過 ONOS 來控制 bmv2 switch:設定〉

透過 ONOS 來控制 bmv2 switch:簡介

其實 ONOS 早在 1.6 版開始就有支援 bmv2,但是卻是實驗性質的,且當時的 bmv2 使用的是 Thrift API(目前也還有支援),而 P4 API Working Group 將使用新版的 API P4 Runtime 取代,因此 ONOS 也將原本針對舊版 bmv2 的支援捨棄,改支援新版的 bmv2(由 1.11 開始部分支援)。

閱讀全文〈透過 ONOS 來控制 bmv2 switch:簡介〉

P4Runtime & P4 Info 簡介

P4 Runtime 是一套基於 Protobuf 以及 gRPC 框架上的協定,透過 P4 Runtime,SDN 控制器或是使用者可以控制支援 P4 的裝置。

P4 Runtime 目前是由 P4 API Workgroup 所制定,這一個 Group 裡面主要的人員是來自於 Barefoot,也有其他公司參與。

目前 P4 Runtime 還在開發階段,但大多數需要的功能都已經被支援,例如操作 Table Entry 或 Action profile、查詢 Counter 等等。 閱讀全文〈P4Runtime & P4 Info 簡介〉

ONF P4 Brigade meeting 影片釋出

ONF P4 Brigade 今日(10/25)舉辦了 Brigade Meeting,其中討論了未來幾個主要的 Use case 規劃

第一個是 Fabric.p4,住要是希望能夠將 P4 運用在 CORD fabric 中

另一個是 INT,是目前 Barefoot 已有的計畫,而 ONF 希望能夠結合 INT 與 ONOS 去蒐集網路資訊,並運用於 A-CORD 中。

影片如下: