• 沒有找到結果。

軟體定義網路技術於網路之簡介

2.1 PHANTOM Omni 力回饋裝置簡介

2.3.1 軟體定義網路技術於網路之簡介

SDN 分離傳統網路設備的 Data Plane 和 Control Plane 兩個功能模組,通過集 中式的控制器 (Controller) 以標準化的介面對各種網路設備進行管理和配置,文

構中廣泛的部署,並在學術及產業界造成一股新興網路研究之潮流。有鑑於 OpenFlow 在數據流分析與分類的優勢。

OpenWrt 嵌入式作業系統

OpenWrt[19]是一個模組化的嵌入式 Open-Source Linu,並擁有完整的網路支 援方案,當前多被用於工業用嵌入式控制系統、小型機器人、感測器網路、智慧 家居、VoIP 系統、無線與有線網路閘道器等。系統提供了一個可添加軟體包的可 寫的檔案系統可讓使用者可以自由的選擇應用程式和配置,而不必受裝置提供商 的限制。OpenWrt 支援 ARM、X86、PowerPC、MIPS 等系統架構並且可以使用 一些適合某方面應用的軟體包來客製化裝置。對於開發者來說,OpenWrt 提供完 整的開發工具鏈(toolchain)、核心(linux kernel)、軟體套件(packages) ,再到根檔 案系統(rootfs),用戶只需簡單的一個 make 命令即可方便快速地定制一個具有特 定功能的嵌入式 Linux 系統。開發者不必麻煩的構建整個韌體就能得到想要的應 用程式,OPKG 包含超過 3500 個軟體套件,也預設使用 LuCI 作為 web 互動介面 便於使用者控制。

OpenFlow 協定

OpenFlow[20]是一個由史丹佛大學所開發的開放協定,發展源自於為了測詴 與觀察自訂的實驗性網路協議在校園網路上的行為,文獻[21]中提到現存的網路 架構已經逐漸缺乏創新與僵化,原因是大多的網路設備與網路協議都是 installed base 的,任一台 switch/router 在生產階段就已經注定好它在網路架構中該做的行 為。有鑑於此,他們提出了 OpenFlow 的想法,第一項目標就是將原本僵化網路 架構的傳統 switch 改為更具彈性的 OpenFlow Switch,如下圖 6 所示。

...

Secure Channel

sw

hw

Flow

table

OpenFlow Switch

controller

OpenFlow Protocol

可以讓網管人員自行定義與設計 OpenFlow Switch 的網路行為。OpenFlow Switch 主 要 是 透 過 控 制 器 (Controller) 來 控 制 網 路 行 為 , 並 透 過 OpenFlow Protocol 和 Secure Channel 與 OpenFlow Switch 溝通處理如圖 7 所示。OpenFlow Switch 的封包傳遞是以 Flow Table 的方式呈現,可以利用新增或刪除 Flow Table 的欄位來管理整個網路。

圖 7、OpenFlow Switch 架構圖 OpenFlow Switch 包含三個主要部份:

 Flow Table:包含各欄位的 flow entries,用來告知 switch 如何去處 理每一個 flow。

 Secure Channel:為 switch 和 controller 之間的溝通管道,用來下達 命令或傳送封包。

 OpenFlow Protocol:提供一個標準讓 switch 和 controller 之間互相 作溝通。

Secure Channel

Group Table

Flow Table

Flow Table Pipeline

Controller

OpenFlow Switch OpenFlow

Protocol

而在 Flow Table 中,主要有三個部分,其中包含:

 Match fields:定義每一個 flow entry,如何與封包進行比對。

 Counters:紀錄符合該 entry 的封包訊息。

 Instructions:定義了針對該 entry 的封包,所應採取的動作。

目前所探討的 SDN 架構中最為重要的就是 Controller,它可說是 SDN 的核心,

所以在 Controller 的選擇部分也變得相對重要。文獻[22]中分析了目前主流的五種 Controller:

Ryu

是一個 component-base 的 Controller,提供了 well-defined API 讓開發者更容 易開發網路管理與控制應用,這種 component-base 的設計模式能幫助使用者達到 特定的需求,開發者可以快速的修改現存的 component 或是再創建其他 component 來確保底下的網路會照著應用程式所指定的行為運作。而目前 Ryu 可支援到 OpenFlow1.4。

POX

以 Python-based 的 Controller,應用於 SDN debugging、網路虛擬化、控制器 設計和程式化模組上。其底層模組由 C++實現,上層應用可以用 C++或 python

OpenFlow witch 進行溝通,且可用於軟體定義網路的基礎研究,比如 SDN 測詴、

網路虛擬化、控制器設計…等等。

FloodLight

由數個模組所組成,各個模組透過 Java API 或是 REST API 提供服務給其他 模組或是邏輯控制程式,可以在 Linux、 Mac 和 Window 作業系統上執行。其特 色有: (1)提供模組載入系統,使得擴建與提升更為容易(2)支援範圍廣泛的實體與 虛 擬 OpenFlow Switch(3) 能 處 理 OpenFlow 或 非 OpenFlow 的 網 路 (4) 支 援 OpenStack 雲端運算平台。

Trema

用來開發 OpenFlow controller 的開方式架構,提供開發者一個測詴 controller 的平台,Trema 的設計精神在於他的容易撰寫特性與效能,使用 Ruby 作為 scripting language 來增加生產力;使用 C 作為 compile language 來提升效能。

OpenDaylight

是一個 Open source 計畫,此計畫的目標是創造出一個涵蓋所有 SDN 的主要 元件的編碼。提供了具網路程式能力的開發平台,利用 OpenDaylight 來監控網路 與 OpenStack 密 不 可 分 。 OpenDaylight 軟 體 是 由 不 同 元 件 所 組 成 , 例 如

fully-pluggable controller、interface 和其他應用程式。

Open vSwitch

Open vSwitch,簡稱 OVS 是一個虛擬交換軟體,主要用於虛擬機器 VM 環境,

作為一個虛擬交換機,支援 Xen/XenMaster、KVM 和 VirtualBox 多種虛擬化技術。

在機器的虛擬化環境中,一個虛擬交換機(vswitch)主要有兩個作用,一個為傳遞 虛擬機器 VM 之間的流量,以及實現 VM 和外界網路之通訊。在網路中,交換機 和橋都是一個概念,OVS 實現了一個虛擬機的乙太交換機也就是乙太網路橋接器 的功能。

Open vSwitch user space包含幾個組成部分:主要目的是實現了switch、flow table、和幾個工具來管理交換機和數據庫。Open vSwitch服務會啟動三個程序:

 ovs-vswitchd,這是整個 switch 執行的核心。

 ovsdb-server,負責操縱 switch 的 configuration 和 flow。

 ovs-brcompatd,使 vswitch 保持與傳統網路 bridge 的兼容性。

Open vSwitch user space 服務程序如圖 8 所示:

圖 8、Open vSwitch user space 服務程序

使 用 者 可 以 透 過 ovs-vsctl 管 理 Open vSwitch , ovs-appctl 也 可 以 管 理

ovs-vswitchd本身,它會發送一些內部命令給ovs-vswitchd管理程序去更改一些配 置。sFlow是一種協議,能進行封包的取樣和監測,而OpenFlow則是用來管理交 換機、Bridge、或其他裝置上的flow table的一種協定。Open vSwitch都支援

OpenFlow與sFlow。利用ovs-ofctl,我們可以藉由OpenFlow連接到交換機,就能 在遠端對wSwitch做一些監控和管理。然而,更重要的是,Open vSwitch也可以透 過遠端遙控進行監控,因此本計畫將在嵌入式系統中通過Open vSwitch來實現軟 體定義網路。在Kernel space中,flow被表示為struct sw_flow,datapath被表示為 struct datapath,而flow上被指定的動作則被表示為sw_flow_actions,並加上我們

OpenFlow

ovs-vswitchd ovsdb-server

ovs-dpctl ovs-appctl ovs-vsctll

ovs-ofctl

Openvswitch kernel module sFlow Trend

Remote

kernel space

command config

Save changes (Unix socket)

Apply changes netlink upcall(netlink) sFlow

提到的struct vport。這些結構在Open vSwitch kernel module 是相當重要的,其結 構如圖9所示。struct sk_buff是一個指標指向control block,而每一個struct sw_flow 都會相連到一個struct sk_buff,當一個封包進入Open vSwitch模組後,會先存在 datapath的flow table 裡面,讓所需要的flow找到時,便會執行其對應的action指令。

圖 9、Open vSwitch Kernel Module

struct datapath

stuct sk_buff stuct sk_buff

stuct

相關文件