夏興
OpenFlow 全稱是 OpenFlow Switch Specification,其字面意思就是 OpenFlow 交換機(jī)規(guī)則。在 SDN 網(wǎng)絡(luò)架構(gòu)中,其基礎(chǔ)設(shè)施層的交換機(jī)主要完成數(shù)據(jù)轉(zhuǎn)發(fā)的功能,而 OpenFlow 技術(shù)就是為實(shí)現(xiàn)這一功能的 OpenFlow 交換機(jī)設(shè)置結(jié)構(gòu)和功能規(guī)則,同時(shí)它也定義規(guī)范了控制平面控制器對(duì)交換機(jī)進(jìn)行控制管理的 OpenFlow 協(xié)議。根據(jù)它的功能可以看出其技術(shù)核心包括了 OpenFlow 交換機(jī)、OpenFlow 控制器以及 OpenFlow 協(xié)議,另外通過控制器下發(fā)的流表信息也是核心技術(shù)之一。
一、OpenFlow交換機(jī)和控制器
1.1 OpenFlow交換機(jī)
OpenFlow 網(wǎng)絡(luò)的核心就是 OpenFlow 交換機(jī),它是一個(gè)二層交換機(jī),主要功能是完成數(shù)據(jù)轉(zhuǎn)發(fā)處理:根據(jù)網(wǎng)絡(luò)要求將數(shù)據(jù)層的數(shù)據(jù)信息轉(zhuǎn)發(fā)到相應(yīng)數(shù)據(jù)網(wǎng)絡(luò)端口。其實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)主要依賴于 OpenFlow 控制器所下發(fā)的流表,即就是 OpenFlow 控制器控制交換機(jī)實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā),這一方式的優(yōu)勢(shì)就在于 OpenFlow 交換機(jī)不需要存儲(chǔ)、記憶和學(xué)習(xí)過程,提高了數(shù)據(jù)轉(zhuǎn)發(fā)的準(zhǔn)確性和效率。而控制器下發(fā)的流表信息是在響應(yīng)網(wǎng)絡(luò)狀態(tài)、拓?fù)渥兓约皯?yīng)用需求時(shí),自行下發(fā)或通過手動(dòng)下發(fā)生成,生成的流表信息需要經(jīng)過SDN 控制數(shù)據(jù)平面接口發(fā)送給交換機(jī)為其提供轉(zhuǎn)發(fā)機(jī)制。
OpenFlow 交換機(jī)處理數(shù)據(jù)包的過程如圖 1.1.1 所示,當(dāng)數(shù)據(jù)包從端口傳輸被OpenFlow 交換機(jī)上接收后,交換機(jī)首先對(duì)接收到的數(shù)據(jù)包包頭進(jìn)行分析,根據(jù)分析結(jié)果按照流表的優(yōu)先級(jí)高低順序從已有流表中依次進(jìn)行匹配,如果匹配到流表,則使用契合程度最高的一個(gè)流表,實(shí)施與之對(duì)應(yīng)的操作,完成數(shù)據(jù)包的轉(zhuǎn)發(fā)傳輸,然后將數(shù)據(jù)信息更新到計(jì)算機(jī)上。如果沒有匹配到與之對(duì)應(yīng)的流表,就將數(shù)據(jù)包通過安全通道發(fā)送給控制器,由控制器管理數(shù)據(jù)包并做進(jìn)一步處理。
OpenFlow 交換機(jī)是當(dāng)前在應(yīng)用范圍和應(yīng)用空間等方面最為普遍的 Open vSwitch 軟件交換機(jī),通過開源的 Open vSwitch 交換機(jī)和控制器構(gòu)建實(shí)驗(yàn)場(chǎng)景和拓?fù)?。在單個(gè)物理機(jī)中,如果想使得網(wǎng)絡(luò)數(shù)據(jù)實(shí)現(xiàn)隔離,只需要通過對(duì)網(wǎng)絡(luò)劃分不同的 VLAN 空間,使得網(wǎng)絡(luò)的不同 VLAN 隔離完成物理機(jī)網(wǎng)絡(luò)隔離。而當(dāng)安裝多個(gè)虛擬機(jī)在一個(gè)物理機(jī)中時(shí),物理機(jī)上各個(gè)虛擬機(jī)之間的網(wǎng)絡(luò)隔離就不能通過劃分 VLAN 的方式實(shí)現(xiàn),Open vSwitch 交換機(jī)作為虛擬網(wǎng)絡(luò)的核心部件之一,可以通過交換機(jī)連接虛擬機(jī),在交換機(jī)上完成網(wǎng)絡(luò)隔離的操作過程。Open vSwitch 交換機(jī)作為一款開源的軟件定義網(wǎng)絡(luò)交換機(jī),是唯一支持OpenFlow 協(xié)議的交換機(jī),同時(shí)它也支持 802.1q 協(xié)議。
1.2 OpenFlow控制器
OpenFlow控制器是SDN的中央處理單元,也是 SDN 中的兩大重要元素之一,被稱作網(wǎng)絡(luò)設(shè)備的“上帝”??刂破髡莆站W(wǎng)絡(luò)中所有設(shè)備的信息,主要完成對(duì)設(shè)備工作的指揮控制,其功能有:網(wǎng)絡(luò)拓?fù)涞墓芾砜刂?、?shù)據(jù)鏈路的發(fā)現(xiàn)應(yīng)用以及流表的下發(fā)交付,而且可以通過北向接口(NBI)給應(yīng)用平面的應(yīng)用程序?qū)崿F(xiàn)其對(duì)網(wǎng)絡(luò)的調(diào)用功能。相比于傳統(tǒng)網(wǎng)絡(luò)設(shè)備,OpenFlow控制器最大優(yōu)勢(shì)在于可以通過對(duì)軟件進(jìn)行編程的方式實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)涞仍O(shè)計(jì),并且對(duì)網(wǎng)絡(luò)資源,例如局域網(wǎng),廣域網(wǎng)等,以及應(yīng)用程序的開發(fā)調(diào)用等都可以在控制器進(jìn)行配置管理,使網(wǎng)絡(luò)管理變得簡(jiǎn)單方便。由此可以發(fā)現(xiàn),在 OpenFlow技術(shù)和 SDN 網(wǎng)絡(luò)中,OpenFlow控制器具有極其重要的作用。
隨著 OpenFlow 技術(shù)和 SDN 網(wǎng)絡(luò)的發(fā)展進(jìn)步,OpenFlow 控制器也在日益創(chuàng)新,不斷推出一系列適合網(wǎng)絡(luò)需求的不同種類的控制器,而當(dāng)前最為常見的控制器有 NOX、POX、OpenDaylight、Floodlight、Ryu、ONOS 等,表 1.2.1 將對(duì)以上幾種控制器做簡(jiǎn)要介紹。
二、OpenFlow 協(xié)議
在 OpenFlow 技術(shù)中,OpenFlow 控制器和 OpenFlow 交換機(jī)之間是以怎樣的方式進(jìn)行通信? ?OpenFlow 協(xié)議就是用于規(guī)定這一方式。實(shí)際上,OpenFlow 協(xié)議就是 OpenFlow 控制器發(fā)送給OpenFlow交換機(jī)的一組信息和 OpenFlow 交換機(jī)回復(fù) OpenFlow 控制器發(fā)送的信息一起組成的。其主要功能是將交換機(jī)和控制器的信息發(fā)送到控制器上,控制器根據(jù) OpenFlow 協(xié)議信息完成對(duì)交換機(jī)的控制管理,并通過編程的方式處理數(shù)據(jù)信息,如修改、刪除以及下發(fā)流表,對(duì)通過交換機(jī)的不同用戶流進(jìn)行流量控制。
OpenFlow 協(xié)議自 2009 年 OpenFlow 技術(shù)產(chǎn)生以來(lái),也經(jīng)過了一系列的發(fā)展完善,至今以有 v1.1、v1.2、v1.3、v1.3.1 和 v1.3.2 五個(gè)版本標(biāo)準(zhǔn),其具體發(fā)布時(shí)間如圖 2.1 所示。
三、安全通道與流表
3.1 安全通道
OpenFlow 技術(shù)使用集中控制的方式完成對(duì)網(wǎng)絡(luò)的管理,在網(wǎng)絡(luò)中,控制器對(duì)交換機(jī)進(jìn)行的配置操作等功能都需要根據(jù) OpenFlow 協(xié)議信息以下發(fā)流表的方式實(shí)現(xiàn),而在這一過程中,控制器和交換機(jī)之間數(shù)據(jù)傳輸?shù)陌踩詷O為重要。而安全通道就是用于保證控制器和交換機(jī)之間傳輸安全。OpenFlow 技術(shù)規(guī)定,數(shù)據(jù)傳輸?shù)陌踩ǖ佬枰褂脗鬏攲訁f(xié)議技術(shù)保障其安全完整,達(dá)到網(wǎng)絡(luò)數(shù)據(jù)的通信加密要求,實(shí)現(xiàn)安全傳輸。安全通道在系統(tǒng)中所處位置如圖 3.1 所示。
3.2 流表
OpenFlow 技術(shù)中,實(shí)現(xiàn)交換機(jī)數(shù)據(jù)轉(zhuǎn)發(fā)交換,需要控制器對(duì)其下發(fā)流表,交換機(jī)根據(jù)流表信息實(shí)現(xiàn)相應(yīng)操作處理。傳統(tǒng)網(wǎng)絡(luò)中,數(shù)據(jù)轉(zhuǎn)發(fā)需要交換機(jī)的二層 MAC 地址轉(zhuǎn)發(fā)表或者路由器的三層 IP 地址路由表,而 OpenFlow 技術(shù)提供 OpenFlow 交換機(jī)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制的流表也需要二層 MAC 地址,其與傳統(tǒng)交換機(jī)二層 MAC 地址的區(qū)別在于它具有更為全面的信息,包含著網(wǎng)絡(luò)架構(gòu)三個(gè)層次所有的網(wǎng)絡(luò)配置信息,這一優(yōu)勢(shì)使得 OpenFlow 交換機(jī)可以使用所有的更加完善全面的規(guī)則進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。
網(wǎng)絡(luò)在不斷進(jìn)步和創(chuàng)新,同樣 OpenFlow 技術(shù)也在不斷發(fā)展,而隨著OpenFlow 的發(fā)展,OpenFlow 流表也暴露出了其不足之處,而為了解決這些問題,OpenFlow 流表也在被優(yōu)化完善,至今出現(xiàn)了以下不同版本的 OpenFlow 流表項(xiàng)與其結(jié)構(gòu),如圖 3.2 所示。
由圖 3.2可以對(duì) OpenFlow v1.3 交換機(jī)流表項(xiàng)結(jié)構(gòu)有大體了解,OpenFlow v1.3 流表項(xiàng)在以往版本流表項(xiàng)的基礎(chǔ)上,多出了優(yōu)先級(jí)、超時(shí)定時(shí)器以及 Cookie(存儲(chǔ)在用戶本地終端上的數(shù)據(jù))三部分。
OpenFlow v1.3 交換機(jī)的流表匹配流程,如圖 3.3 報(bào)文從表0開始匹配,若在表n匹配到流表則執(zhí)行更新計(jì)數(shù)器指令,若沒有匹配到流表,則將報(bào)文數(shù)據(jù)信息儲(chǔ)存到 Table-Miss 項(xiàng)中,執(zhí)行后續(xù)操作。
四、結(jié)論
OpenFlow 技術(shù)解決了在無(wú)法修改網(wǎng)絡(luò)設(shè)備的情況下完成對(duì)網(wǎng)絡(luò)架構(gòu)和協(xié)議的創(chuàng)新。在此前提下,提出能否將網(wǎng)絡(luò)的控制層和數(shù)據(jù)轉(zhuǎn)發(fā)層分離出來(lái),然后只需要通過控制平面,對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行編程處理,而通過編程設(shè)計(jì)可以在不改變網(wǎng)絡(luò)設(shè)備的基礎(chǔ)上,針對(duì)不同問題和發(fā)展要求,實(shí)現(xiàn)可編程化,最終實(shí)現(xiàn)在控制層改變網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和協(xié)議。OpenFlow 技術(shù)的提出和發(fā)展,推動(dòng)了另一個(gè)新型技術(shù)--軟件定義網(wǎng)絡(luò)(SDN)的產(chǎn)生發(fā)展。