透過 ONOS 來控制 bmv2 switch:設定

10 月 27, 2017

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

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

透過 P4 Runtime,控制器可以在連上裝置之後寫入由 P4 定義好的 pipeline 的資訊,因此我們也需要先跟 ONOS 說明我們將使用的 pipeline 是什麼。

此外,由於 P4 Runtime 沒有實作 Port 資訊查詢的 API(需透過 gNMI),因此會需要跟 ONOS 說明該裝置有的 Port

而在連線之前,我們也假設 ONOS 中已經備妥相關的 driver 以及 pipeconf。

這邊將透過下圖來說明其步驟:

Screen Shot 2017-10-25 at 11.41.04 PM

  1. 啟動相關的模組以及應用程式,如 GeneralDeviceProvider、PipeconfService、bmv2  driver 等
  2. 準備好 pipeconf,將其上傳於 ONOS 當中(可先寫好放在 ONOS 裡,或是透過撰寫外部 oar 的方式)
  3. 上傳 ONOS network config
  4. 此時 GeneradDeviceProvider 會收到裝置的資訊,透過 driver 中的 handshaker 與裝置進行連線。
  5. 連線完畢之後 GeneralDeviceProvider 會依據設定,把 pipeline config 下載到裝置當中。

這邊提供一個用於 ONOS 連線至一台 bmv2 的範例設定檔案供大家參考:

{
    "devices": {
        "device:bmv2:1": {
            "generalprovider": {
                "p4runtime": {
                    "ip": "192.168.1.1",
                    "deviceKeyId": "p4runtime:device:bmv2:1",
                    "port": 50051,
                    "deviceId": 1
                }
            },
            "piPipeconf": {
                "piPipeconfId": "my-pipeconf"
            },
            "ports": {
                "1": {
                    "name": "eth1",
                    "speed": 10000,
                    "enabled": true,
                    "number": 1,
                    "removed": false,
                    "type": "copper"
                },
                "2": {
                    "name": "eth2",
                    "speed": 10000,
                    "enabled": true,
                    "number": 2,
                    "removed": false,
                    "type": "copper"
                }
            },
            "basic": {
                "driver": "bmv2"
            }
        }
    }
}

在〈透過 ONOS 來控制 bmv2 switch:設定〉中有 2 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料