floodlight官方文檔(十二):controller module詳解----Packet Streamer

Introduction

packetstreamer是一種包流服務,它可以選擇性地將任何交換機和控制器之間交換的開放流包流傳輸給觀察者。它由兩個功能接口組成:(1)一個基於REST的接口,用於定義感興趣的OpenFlow消息的特性,稱爲過濾器;(2)一個基於節儉的接口,用於流式處理過濾後的包。

REST API

過濾器是通過對REST API的POST請求來定義的:“http://controller>:8080/wm/core/packettrace/json”。輸入數據是定義我們感興趣的OpenFlow消息特性的參數。例如,floodlight帶有基於MAC的濾波器。下面是篩選器的格式。
在這裏插入圖片描述
where,
在這裏插入圖片描述
REST API返回sessionid,它可以用於從流式節儉服務器接收數據包。返回數據採用JSON格式,
在這裏插入圖片描述
下面是在python中創建流式會話1000秒和終止會話的函數的示例。
在這裏插入圖片描述
在這裏插入圖片描述

Thrift-Based Streaming Service 基於節儉的接口

包流服務由基於節儉的流服務器代理。節儉接口如下所示。完整的節儉界面可以在src/main/thrift/packetstreamer.thrift找到。
在這裏插入圖片描述
floodlight生成腳本生成用於節約服務的Java和Python庫。通過將語言選項添加到構建腳本setup.sh中,可以輕鬆添加其他語言支持。
REST API部分描述流式會話的創建。一旦創建了sessionid,就可以使用thrift接口getpackets(sessionid)接收給定會話的ofpackets。TerminateSession(sessionid)可用於終止實時會話。

A python example is below
在這裏插入圖片描述

Example Client

當前版本的floodlight附帶了一個基於MAC的包流示例。前幾節列出了一些客戶機代碼。
完整的python客戶機示例。這說明了RESTAPI和Thrift客戶端的用法,可以在net.flowlightcontroller.packetstreamer的泛光燈源中找到。
確保在客戶機上安裝節儉,並在示例中爲packetstreamer的gen py和節儉python目錄提供正確的路徑。

How to Extend to Service

分組流服務可以擴展到基於MAC的流示例之外。net/flowlightcontroller/core/web/packettraceresource.java定義了REST接口。通過在filterParameters類中添加字段,可以擴展匹配字段。匹配邏輯在net/flowlightcontroller/core/ofmessagefiltermanager.java中實現,通過在getmatchedfilters()方法中添加匹配邏輯可以很容易地擴展。如果彈出更多用例,插件框架可以替換當前的實現。

Packet Format

基於MAC的流示例讓floodlight控制器執行數據包格式化。包格式在net/flowlightcontroller/core/ofmessagefiltermanager.java中完成。在某些應用中,原始數據包可能更有用。格式可以作爲會話屬性的一部分添加到包跟蹤篩選器。基於會話屬性,可以調用相應的格式化程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章