初識OpenFlow協(xié)議
OpenFlow是一種交換技術(shù),剛開始它是2008年斯坦福大學(xué)的一個研究項目,但現(xiàn)在它已經(jīng)引起了網(wǎng)絡(luò)設(shè)備供應(yīng)商和大型交換網(wǎng)絡(luò)管理員的廣泛關(guān)注。使用OpenFlow協(xié)議建立軟件定義網(wǎng)絡(luò),可以將網(wǎng)絡(luò)作為一個整體而不是無數(shù)的獨立設(shè)備進行管理。
傳統(tǒng)交換機使用生成樹協(xié)議或其他一些新標(biāo)準(zhǔn)(如多鏈路透明互連,TRILL)來確定數(shù)據(jù)包轉(zhuǎn)發(fā)路徑。而OpenFlow將轉(zhuǎn)發(fā)決策從各個交換機轉(zhuǎn)移到控制器上,這一般是服務(wù)器或工作站。
管理應(yīng)用程序執(zhí)行控制器,負(fù)責(zé)與所有網(wǎng)絡(luò)交換機進行交互,配置數(shù)據(jù)轉(zhuǎn)發(fā)路徑,從而提高帶寬利用率。這個應(yīng)用程序與云管理軟件進行交互,保證有足夠的帶寬支持負(fù)載的創(chuàng)建和變化。
OpenFlow協(xié)議操作
OpenFlow標(biāo)準(zhǔn)定義了控制器與交換機之間的交互協(xié)議,以及一組交換機操作。這個控制器—交換機協(xié)議運行在安全傳輸層協(xié)議(TLS)或無保護TCP連接之上??刂破飨蚪粨Q機發(fā)送指令,控制數(shù)據(jù)包的轉(zhuǎn)發(fā)方式,以及配置參數(shù),如VLAN優(yōu)先級。交換機會在鏈路中斷或出現(xiàn)未指定轉(zhuǎn)發(fā)指令的數(shù)據(jù)包時,發(fā)送消息通知控制器。
轉(zhuǎn)發(fā)指令基于流,這個流由所有數(shù)據(jù)包共享的通用特性組成。定義流需要指定許多參數(shù),其中可能包括:數(shù)據(jù)包到達的交換機端口、來源以太網(wǎng)端口、來源IP端口、VLAN標(biāo)簽、目標(biāo)以太網(wǎng)或IP端口及許多其他數(shù)據(jù)包特性??刂破鲿诮粨Q機上設(shè)置一組參數(shù),用于定義各個流,以及匹配流的數(shù)據(jù)包處理方式。
每一個交換機都維護著許多路由表,而每一個表又包含多個路由記錄。每一條路由記錄包含一個匹配域,它定義了流、計數(shù)器和指令集。匹配域中記錄的項目可能包含一個與到達數(shù)據(jù)包相對應(yīng)的比較參數(shù)值,或者一個表示流的參數(shù)集中不存在此記錄的指示值。
路由表的編號從0開始,到達的數(shù)據(jù)包對表0的記錄進行比較。如果匹配,路由計數(shù)會增加,然后執(zhí)行指定的指令集。如果到達的數(shù)據(jù)包不匹配任何路由表記錄,那么必須創(chuàng)建一個新流。有的交換機可能直接丟棄未定義的流,但是大多數(shù)情況下,數(shù)據(jù)包都會轉(zhuǎn)發(fā)到控制器上。然后,控制器為該數(shù)據(jù)包定義一個新流,并且創(chuàng)建一個或多個路由表記錄。然后,它會將記錄發(fā)送到交換機上,并增加路由表。最后,數(shù)據(jù)包會被送回交換機,使用新創(chuàng)建的路由記錄進行處理。
路由表指令會修改每一個數(shù)據(jù)包所設(shè)置的操作。一開始,數(shù)據(jù)包會使用空操作集進行處理。這些操作可能要求數(shù)據(jù)包通過指定的端口進行轉(zhuǎn)發(fā),或者需要修改數(shù)據(jù)包TTL、VLAN、MPLS標(biāo)簽或數(shù)據(jù)包QoS。
第一個路由表的指令可能會對數(shù)據(jù)包執(zhí)行操作,或者增加一些將來執(zhí)行的操作。這些指令會將數(shù)據(jù)包與其他路由表記錄進行比較,控制數(shù)據(jù)包的后續(xù)處理。后續(xù)路由表的記錄的指令可能會進一步增加操作,刪除或修改之前添加的操作,或者執(zhí)行其他一些操作。
在將數(shù)據(jù)包發(fā)送到下一路由表之前,指令也可能會給數(shù)據(jù)包增加一個元素數(shù)據(jù)值。這個值就成為額外參數(shù),它會與下一個路由表的記錄的元數(shù)據(jù)值進行匹配。數(shù)據(jù)包會逐個表地進行處理,直到所有指令都處理完,并且數(shù)據(jù)包成功轉(zhuǎn)發(fā)。
指令可能會指定一個組標(biāo)識符。組是一種為數(shù)據(jù)包指定在多個流中執(zhí)行相同操作集的高效方法。組操作定義在交換機的組表記錄。每一個記錄都包括標(biāo)識符值、組類型、計數(shù)器和操作集。組類型規(guī)定是否所有操作集都會執(zhí)行,這很適合用于實現(xiàn)廣播或多播,或者規(guī)定只執(zhí)行某些特定的操作集。#p#
OpenFlow協(xié)議消息傳送
協(xié)議由三種消息組成:控制器-交換機消息、異步消息和對稱消息。
控制器-交換機消息由控制器發(fā)送,可以:
指定、修改或刪除流定義
請求交換機功能信息
查詢交換機信息,如計數(shù)器
在新流創(chuàng)建之后,將數(shù)據(jù)包發(fā)送回交換機
異步消息由交換機發(fā)送,可以:
向控制器發(fā)送與現(xiàn)有流不匹配的數(shù)據(jù)包
在流的存活參數(shù)時間已到或靜止計時器過期時,通知控制器流已經(jīng)刪除
通知控制器端口狀態(tài)變化或交換機出現(xiàn)錯誤
對稱消息可以由交換機或控制器雙方發(fā)出,可用于:
在控制器和交換機之間啟動時發(fā)送握手消息
發(fā)送回波消息,測試控制器與交換機之間的連接延遲,確定控制器與交換機的連接是否仍然有效
發(fā)送試驗消息,作為將來OpenFlow技術(shù)的擴展方法
OpenFlow協(xié)議發(fā)展:前景看好
2011年,開放網(wǎng)絡(luò)基金會成立,旨在推廣OpenFlow和實現(xiàn)標(biāo)準(zhǔn)化。其成員包括思科、Facebook、谷歌、惠普、IBM和Juniper。當(dāng)前版本的OpenFlow標(biāo)準(zhǔn)(1.1.0)包含了許多可選特性,可以支持進一步的試驗,并且1.2版標(biāo)準(zhǔn)也正在制定中。
雖然思科仍未發(fā)布支持OpenFlow的交換機,但是其他交換機供應(yīng)商已經(jīng)在現(xiàn)有產(chǎn)品中實現(xiàn)了OpenFlow,如IBM與NEC的合作和惠普,他們將繼續(xù)推進開發(fā)這些產(chǎn)品。隨著供應(yīng)商和網(wǎng)絡(luò)運營商對這項技術(shù)進一步熟悉,OpenFlow必將會對網(wǎng)絡(luò)的管理和運營產(chǎn)生重大影響。
【編輯推薦】