透過 ONOS 來控制 bmv2 switch:P4 模擬環境

10 月 29, 2017

在使用 bmv2 軟體模擬 switch 之前,除了 bmv2 之外,還需要安裝相關的套件,需要的東西如下:

  • 編譯工具以及函式庫
  • grpc
  • protobuf
  • p4runtime
  • bmv2
  • p4c

要裝的東西非常多,但是 ONOS 本身就提供了一個簡易的安裝腳本,透過該腳本可以很簡易的將上述套件安裝完成。

若已經設定好 ONOS 開發環境,則可以直接使用:

onos-setup-p4-dev

這一個指令(腳本)進行安裝。

若沒有設定 ONOS 開發環境,例如想要再其他虛擬機上面安裝 P4 開發/模擬環境的話,則是將 onos-setup-p4-dev 這一個腳本複製到目的地然後執行即可,onos-setup-p4-dev 的位置在:

$ONOS_ROOT/tools/dev/bin/onos-setup-p4-dev

要注意的是,由於一些套件限制,這一個腳本僅供於 Ubuntu 16.04 或是 Ubuntu 14.04 上執行。

onos-setup-p4-dev 會做以下幾件事情:

  1. 安裝編譯用的工具、函式庫等(autoconf/make, cpp, curl…)
  2. 針對 16.04 或 14.04 安裝需要的套件
  3. 在家目錄中產生 p4tools 資料夾,用來存放要下載的東西
  4. 安裝 protobuf, grpc, p4runtime/PI, bmv2 以及 p4c

由於目前 p4runtime/PI 還會不斷的更新(feature, bug fix),所以 onos-setup-p4-dev 也有可能會不定期更新,此時在執行一次此腳本,就會更新,腳本也會偵測是否已經有裝過要裝的東西,如果東西都有裝過的話,就會略過。

在〈透過 ONOS 來控制 bmv2 switch:P4 模擬環境〉中有 8 則留言

  1. 你好,關於這部分,onos-setup-p4-dev安裝完以後,我用 sudo -E mn –custom $BMV2_MN_PY –switch onosbmv2 –controller remote,ip=192.168.56.1,連接到最新拉取 的onos docker 版本。

    但是打開ONOS的web UI,發現沒有設備,但是如果用sudo -E mn –custom $BMV2_MN_PY –controller remote,ip=192.168.56.1 就可以發現正常連接的設備。

    請問這是為什麼?

      1. 这是回显:
        2017-12-19 09:41:05,798 | INFO | onos-of-worker-1 | OFChannelHandler | 190 – org.onosproject.onos-protocols-openflow-ctl – 1.13.0.SNAPSHOT | New switch connection from /172.17.0.1:47269
        2017-12-19 09:41:05,806 | INFO | onos-of-worker-1 | OFChannelHandler | 190 – org.onosproject.onos-protocols-openflow-ctl – 1.13.0.SNAPSHOT | Switch disconnected callback for sw:[/172.17.0.1:47269 DPID[?]]. Cleaning up …
        2017-12-19 09:41:05,809 | WARN | onos-of-worker-1 | OFChannelHandler | 190 – org.onosproject.onos-protocols-openflow-ctl – 1.13.0.SNAPSHOT | no dpid in channelHandler registered for disconnected switch [/172.17.0.1:47269 DPID[?]]

          1. onos> apps -a -s
            * 6 org.onosproject.drivers 1.13.0.SNAPSHOT Default Drivers
            * 10 org.onosproject.generaldeviceprovider 1.13.0.SNAPSHOT General Device Provider
            * 11 org.onosproject.protocols.grpc 1.13.0.SNAPSHOT gRPC Protocol Subsystem
            * 12 org.onosproject.protocols.p4runtime 1.13.0.SNAPSHOT P4Runtime Protocol Subsystem
            * 13 org.onosproject.p4runtime 1.13.0.SNAPSHOT P4Runtime Provider
            * 14 org.onosproject.drivers.p4runtime 1.13.0.SNAPSHOT P4Runtime Drivers
            * 20 org.onosproject.pipelines.basic 1.13.0.SNAPSHOT Basic Pipelines
            * 21 org.onosproject.drivers.bmv2 1.13.0.SNAPSHOT BMv2 Drivers
            * 24 org.onosproject.optical-model 1.13.0.SNAPSHOT Optical Network Model
            * 30 org.onosproject.openflow-base 1.13.0.SNAPSHOT OpenFlow Base Provider
            * 31 org.onosproject.lldpprovider 1.13.0.SNAPSHOT LLDP Link Provider
            * 32 org.onosproject.hostprovider 1.13.0.SNAPSHOT Host Location Provider
            * 37 org.onosproject.openflow 1.13.0.SNAPSHOT OpenFlow Provider Suite
            * 76 org.onosproject.p4tutorial.pipeconf 1.13.0.SNAPSHOT P4 Tutorial Pipeconf
            * 87 org.onosproject.fwd 1.13.0.SNAPSHOT Reactive Forwarding
            onos>

          2. 看起來沒有太大的問題,建議您嘗試一下以下指令
            sudo -E mn –custom $BMV2_MN_PY –switch onosbmv2,netcfgDelay=1 –controller remote,ip=192.168.56.1

            有時候 PI gRPC server 需要等大概 0.5 ~ 1 秒的時間啟動

  2. 还是web识别不了。
    以下是最新的回显:
    2017-12-23 00:45:37,252 | INFO | qtp50236769-208 | UiSharedTopologyModel | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | Registering topology session {UiTopoSession for user }
    2017-12-23 00:45:37,255 | WARN | qtp50236769-208 | Topo2OverlayCache | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | added overlay: UiTopo2Overlay{id=”traffic-2-overlay”, class=”Traffic2Overlay”}
    2017-12-23 00:45:37,255 | INFO | qtp50236769-208 | UiWebSocket | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | GUI client connected — user
    2017-12-23 00:45:37,411 | INFO | qtp50236769-224 | UiWebSocket | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | Session token authenticated
    2017-12-23 00:45:48,857 | INFO | qtp50236769-208 | UiWebSocket | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | Session token revoked
    2017-12-23 00:45:48,857 | INFO | qtp50236769-208 | UiSharedTopologyModel | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | Unregistering topology session {UiTopoSession for user }
    2017-12-23 00:45:48,857 | INFO | qtp50236769-208 | UiWebSocket | 159 – org.onosproject.onos-gui – 1.13.0.SNAPSHOT | GUI client disconnected [close-code=1006, message=null]

    1. 看起來 web client 端連線不知道為什麼斷了
      你可以試試看使用 devices 指令來查看是否有新的 bmv2 device 有連上

發佈留言

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

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