文章

Barefoot 於 ONS 2017 上展出 P4 實體 Switch

Barefoot 於今年 ONS 上展出了一系列 P4 實體 Switch,其中包含了:

  • Wedge 100BF-65X
  • Wedge 100BF-32X
  • WNC(型號未知,可能是 OSW1800 或是 OSW6500)

這兩台皆使用 Barefoot 所研發的 Tofino 晶片,透過 p4c-tofino 編譯器,將 P4-14 & P4-16 編譯成 Tofino 可使用的格式。

這兩台的規格皆是 100Gbps,可透過 breakout 的方式將速度調整成 50/40/25/10/1 Gbps。

應用方面,今年攤位所展示的內容包含了 Switch.p4 以及 INT。

Switch.p4 整合了傳統資料中心所需要的 L2/L3, VxLAN, QoS……等,在透過先定義的 Switch API 跟 Network OS 互動。

目前他們 Network OS 採用 Snaproute 的解決方案,透過 Snaproute 所提供的 API 與網路管理者或是網路自動化工具(NetDevOps)互動。

2017-04-05 上午11.49.54

此外,儘管 P4 spec 並未定義 P4 switch 該如何去與控制層溝通,但未來的 P4 Switch 還是會兼容目前 bmv2 所使用的 Thrift API。

INT 的部份則是展示了針對各個 switch 蒐集 Queue 狀態,並顯示在螢幕上。

其他硬體細節可以參考 Phil 這篇整理:

blog.pichuang.com.tw/Barefoot-Networks-Tofino/

將 P4-14 快速轉換至 P4-16 方法

目前 P4 團隊主要著重於 P4-16,然而 P4-16 目前只有釋出 pre-release 版而已,未來是否會有更改還不確定。

因此多數人所撰寫的 P4 程式都是基於 P4-14 標準,但是若有一天 P4-16 正是釋出之後,就需要將之前所寫的 P4-14 程式都轉換成 P4-16 的規格。

官方目前所釋出的 P4-16 編譯器就提供了快速轉換的功能,主要的原理是透過將 P4-14 先編譯成 HLIR,在將 HLIR 在反向轉換成 P4-16。

轉換方法:

首先需要先安裝 p4c(https://github.com/p4lang/p4c/),依據官方所提供的安裝教學,很快的就可以安裝起來。

補充一下,在編譯完(make check -j4)之後,可以在執行 sudo make install 讓他安裝到可執行路徑上。

安裝完編譯器之後,即可使用 p4c-bm2-ss 轉換。

p4c-bm2-ss --p4v 14 --pp [輸出檔案] [輸入的檔案]

輸入的檔案請使用最主要的檔案,包含 control 以及 table 等,他會自動去找尋有 include 的檔案加以編譯。

輸出僅會有一個檔案,裡面包含了所有從 P4-14 檔案轉換後的內容(Header~Control Blocks)

轉換好的檔案一樣可以直接使用 p4c-bm2-ss 編譯成 bmv2 simple-switch 這個模擬器去執行。

P4-16(1.2) 規格釋出

其實 P416 這一個規格早在今年 6 月就開始規劃,一直到今天(12/22)官方才對外公開 pre-release 版本。

目前文件還只是 pre-release (draft) 版,可能會有需要修改的地方,不過近期我們會整理有關 P414 以及 P416 的比較,以及針對 P416 的一些 Spec 整理。

若需要取得 P416 規格,可以到 P4 官方取得:http://p4.org/spec/

第一次 P4 Meetup

第一次 P4 台灣社群 Meetup 預計將會在 9 月底與 SDNDS.TW 以及 ONOS Ambassador 一同合辦

預計會與大家分享的內容如下:

  1. P4 語言簡介
  2. 如何貢獻到 P4 中

詳細時間會另外公布,請多加留意本網站。

第一個原生支援 P4 的晶片 – Tofino

來源:
https://www.barefootnetworks.com/technology/#tofino

簡介:

SDN 廠商 Barefoot 今年研發了一款名為 Tofino 的晶片,並原生支援 p4 語言

Barefoot 除了晶片以外還針對該晶片開發了一款名為 Capilano 的 IDE,透過這一套 IDE 可以方便為 P4 Switch 進行除錯。

Tofino 最大的特點除了可以透過 p4 進行開發以外,他還提供了相當高的處理速度,官方宣稱他可以到達 6.5 Tbps 的速度,也就是 65 個 100GE 或是 260 個 25GE。

而 Capilano 則是提供了模擬環境、除錯工具、編譯工具等。

此外,透過 Capilano 以及 Tofino 所提供的 APIs/SDK 便可以開發出與 Tofino 連結的應用程式,舉例來說,希望能夠在 Switch 上面開發出能夠接收 Controller 訊息的 Agent,在透過該 Agent 與 Tofino 聯繫,則可以透過此開發工具去製作出需要的應用程式。

應用:

官方提出的應用案例如下:

  1. 快速設計與驗證新的網路協定
  2. 移除不必要的網路協定,簡化網路
  3. 將封包處理流程透明化
  4. 將複雜的網路設備都整合到交換器中
  5. 直接將分散式的網路應用放至於實體網路中

更加詳細的內容可以參考本投影片:

https://www.barefootnetworks.com/media/white_papers/Barefoot-Worlds-Fastest-Most-Programmable-Networks.pdf

其他相關新聞: