自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenFlow和SDN

網(wǎng)絡
云計算的發(fā)展,是以虛擬化技術為基礎的。云計算服務商以按需分配為原則,為客戶提供具有高可用性、高擴展性的計算、存儲和網(wǎng)絡等IT資源。虛擬化技術將各種物理資源抽象為邏輯上的資源,隱藏了各種物理上的限制,為在更細粒度上對其進行管理和應用提供了可能性。

從網(wǎng)絡虛擬化說起

近些年,計算的虛擬化技術(主要指x86平臺的虛擬化)取得了長足的發(fā)展;相比較而言,盡管存儲和網(wǎng)絡的虛擬化也得到了諸多發(fā)展,但是還有很多問題亟需解決,在云計算環(huán)境中尤其如此。

OpenFlow和SDN盡管不是專門為網(wǎng)絡虛擬化而生,但是它們帶來的標準化和靈活性卻給網(wǎng)絡虛擬化的發(fā)展帶來無限可能。筆者希望通過本文對OpenFlow/SDN做一個初步介紹,以期幫助大家能夠進一步深入了解和學習OpenFlow/SDN。限于筆者能力有限,文中難免紕漏錯誤之處,歡迎批評和指正。

起源與發(fā)展

OpenFlow起源于斯坦福大學的Clean Slate項目組 [1] 。CleanSlate項目的最終目的是要重新發(fā)明英特網(wǎng),旨在改變設計已略顯不合時宜,且難以進化發(fā)展的現(xiàn)有網(wǎng)絡基礎架構。在2006年,斯坦福的學生 Martin Casado領導了一個關于網(wǎng)絡安全與管理的項目Ethane[2],該項目試圖通過一個集中式的控制器,讓網(wǎng)絡管理員可以方便地定義基于網(wǎng)絡流的安全控制策略,并將這些安全策略應用到各種網(wǎng)絡設備中,從而實現(xiàn)對整個網(wǎng)絡通訊的安全控制。受此項目(及Ethane的前續(xù)項目Sane[3])啟發(fā),Martin和他的導師Nick McKeown教授(時任Clean Slate項目的Faculty Director)發(fā)現(xiàn),如果將Ethane的設計更一般化,將傳統(tǒng)網(wǎng)絡設備的數(shù)據(jù)轉發(fā)(data plane)和路由控制(control plane)兩個功能模塊相分離,通過集中式的控制器(Controller)以標準化的接口對各種網(wǎng)絡設備進行管理和配置,那么這將為網(wǎng)絡資源的設計、管理和使用提供更多的可能性,從而更容易推動網(wǎng)絡的革新與發(fā)展。于是,他們便提出了OpenFlow的概念,并且Nick McKeown等人于2008年在ACM SIGCOMM發(fā)表了題為OpenFlow: Enabling Innovation in Campus Networks[4]的論文,首次詳細地介紹了OpenFlow的概念。該篇論文除了闡述OpenFlow的工作原理外,還列舉了OpenFlow幾大應用場景,包括:1)校園網(wǎng)絡中對實驗性通訊協(xié)議的支持(如其標題所示);2) 網(wǎng)絡管理和訪問控制;3)網(wǎng)絡隔離和VLAN;4)基于WiFi的移動網(wǎng)絡;5)非IP網(wǎng)絡;6)基于網(wǎng)絡包的處理。當然,目前關于OpenFlow的研究已經(jīng)遠遠超出了這些領域。

基于OpenFlow為網(wǎng)絡帶來的可編程的特性,Nick和他的團隊(包括加州大學伯克利分校的Scott Shenker教授)進一步提出了SDN(Software Defined Network, 目前國內多直譯為“軟件定義網(wǎng)絡”)的概念--其實,SDN的概念據(jù)說最早是由KateGreene于2009年在TechnologyReview網(wǎng)站上評選年度十大前沿技術時提出[5]。如果將網(wǎng)絡中所有的網(wǎng)絡設備視為被管理的資源,那么參考操作系統(tǒng)的原理,可以抽象出一個網(wǎng)絡操作系統(tǒng)(Network OS)的概念—這個網(wǎng)絡操作系統(tǒng)一方面抽象了底層網(wǎng)絡設備的具體細節(jié),同時還為上層應用提供了統(tǒng)一的管理視圖和編程接口。這樣,基于網(wǎng)絡操作系統(tǒng)這個平臺,用戶可以開發(fā)各種應用程序,通過軟件來定義邏輯上的網(wǎng)絡拓撲,以滿足對網(wǎng)絡資源的不同需求,而無需關心底層網(wǎng)絡的物理拓撲結構。關于SDN的概念和原理,可以參考開放網(wǎng)絡基金會(Open NetworkingFoundation)于今年4月份發(fā)表的SDN白皮書Software Defined Networking:The New Norm forNetworks [6] 。

從上面的描述中,可以看出 OpenFlow/SDN的原理其實并不復雜,從嚴格意義上講也很難算是具有革命性的創(chuàng)新。然而OpenFlow/SDN卻引來了業(yè)界越來越多的關注,成為近年來名副其實的熱門技術。目前,包括HP、IBM、Cisco、NEC以及國內的華為和中興等傳統(tǒng)網(wǎng)絡設備制造商都已紛紛加入到OpenFlow的陣營,同時有一些支持OpenFlow的網(wǎng)絡硬件設備已經(jīng)面世。2011年,開放網(wǎng)絡基金會(Open Networking Foundation)在Nick等人的推動下成立,專門負責OpenFlow標準和規(guī)范的維護和發(fā)展;同年,第一屆開放網(wǎng)絡峰會 (OpenNetworking Summit)召開,為OpenFlow和SDN在學術界和工業(yè)界都做了很好的介紹和推廣。今年年初召開的第二屆峰會上,來自Google的Urs Hölzle在以OpenFlow@Google[7]為題的Keynote演講中宣布Google已經(jīng)在其全球各地的數(shù)據(jù)中心骨干網(wǎng)絡中大規(guī)模地使用 OpenFlow/SDN,從而證明了OpenFlow不再僅僅是停留在學術界的一個研究模型,而是已經(jīng)完全具備了可以在產(chǎn)品環(huán)境中應用的技術成熟度。最近,F(xiàn)acebook也宣布其數(shù)據(jù)中心中使用了OpenFlow/SDN的技術。

OpenFlow標準和規(guī)范

自2010年初發(fā)布第一個版本(v1.0)以來,OpenFlow規(guī)范已經(jīng)經(jīng)歷了1.1、1.2以及最近剛發(fā)布的1.3等版本。同時,今年年初 OpenFlow管理和配置協(xié)議也發(fā)布了第一個版本(OF-CONFIG 1.0 & 1.1)。下圖[8] 列出了OF和OF-CONFIG規(guī)范各個版本的發(fā)展歷程及變化,從圖中可以看到目前使用和支持最多的仍然是1.0和1.1版本。

 

在這里,我們將詳細介紹一下OpenFlow Switch的最新規(guī)范(即OF-1.3)[9]。下圖選自Nick等人的論文OpenFlow:EnablingInnovation in Campus Networks [4] 。這張圖常被用來說明OpenFlow的原理和基本架構。其實,這張圖還很好地表明了OpenFlow Switch規(guī)范所定義的范圍—從圖上可以看出,OpenFlow Switch規(guī)范主要定義了Switch的功能模塊以及其與Controller之間的通信信道等方面。

 

OF規(guī)范主要分為如下四大部分,

1. OpenFlow的端口(Port)

OpenFlow規(guī)范將Switch上的端口分為3種類別:

a) 物理端口,即設備上物理可見的端口;

b) 邏輯端口,在物理端口基礎上由Switch設備抽象出來的邏輯端口,如為tunnel或者聚合等功能而實現(xiàn)的邏輯端口;

c) OpenFlow定義的端口。OpenFlow目前總共定義了ALL、CONTROLLER、TABLE、IN_PORT、ANY、LOCAL、 NORMAL和FLOOD等8種端口,其中后3種為非必需的端口,只在混合型的OpenFlow Switch(OpenFlow-hybrid Switch,即同時支持傳統(tǒng)網(wǎng)絡協(xié)議棧和OpenFlow協(xié)議的Switch設備,相對于OpenFlow-only Switch而言)中存在。

2. OpenFlow的FlowTable(國內有直譯為“流表”的)

OpenFlow通過用戶定義的或者預設的規(guī)則來匹配和處理網(wǎng)絡包。一條OpenFlow的規(guī)則由匹配域(Match Fields)、優(yōu)先級(Priority)、處理指令(Instructions)和統(tǒng)計數(shù)據(jù)(如Counters)等字段組成,如下圖所示。

 

在一條規(guī)則中,可以根據(jù)網(wǎng)絡包在L2、L3或者L4等網(wǎng)絡報文頭的任意字段進行匹配,比如以太網(wǎng)幀的源MAC地址,IP包的協(xié)議類型和IP地址,或者 TCP/UDP的端口號等。目前OpenFlow的規(guī)范中還規(guī)定了Switch設備廠商可以選擇性地支持通配符進行匹配。據(jù)說,OpenFlow在未來還計劃支持對整個數(shù)據(jù)包的任意字段進行匹配。

所有OpenFlow的規(guī)則都被組織在不同的FlowTable中,在同一個 FlowTable中按規(guī)則的優(yōu)先級進行先后匹配。一個OpenFlow的Switch可以包含一個或者多個FlowTable,從0依次編號排列。 OpenFlow規(guī)范中定義了流水線式的處理流程,如下圖所示。當數(shù)據(jù)包進入Switch后,必須從FlowTable 0開始依次匹配;FlowTable可以按次序從小到大越級跳轉,但不能從某一FlowTable向前跳轉至編號更小的FlowTable。當數(shù)據(jù)包成功匹配一條規(guī)則后,將首先更新該規(guī)則對應的統(tǒng)計數(shù)據(jù)(如成功匹配數(shù)據(jù)包總數(shù)目和總字節(jié)數(shù)等),然后根據(jù)規(guī)則中的指令進行相應操作--比如跳轉至后續(xù)某一 FlowTable繼續(xù)處理,修改或者立即執(zhí)行該數(shù)據(jù)包對應的Action Set等。當數(shù)據(jù)包已經(jīng)處于最后一個FlowTable時,其對應的Action Set中的所有Action將被執(zhí)行,包括轉發(fā)至某一端口,修改數(shù)據(jù)包某一字段,丟棄數(shù)據(jù)包等。OpenFlow規(guī)范中對目前所支持的 Instructions和Actions進行了完整詳細的說明和定義。

 

另外,OpenFlow規(guī)范中還定義了很多其他功能和行為,比如OpenFlow對于QoS的支持(即MeterTable和Meter Bands的定義等),對于GroupTable的定義,以及規(guī)則的超時處理等。

3. OpenFlow的通信通道

這一節(jié)中,OpenFlow規(guī)范定義了一個OpenFlow Switch如何與Controller建立連接、通訊以及相關消息類型等。

OpenFlow規(guī)范中定義了三種消息類型:

a) Controller/Switch消息,是指由Controller發(fā)起、Switch接收并處理的消息,主要包括Features、 Configuration、Modify-State、Read-State、Packet-out、Barrier和Role-Request等消息。這些消息主要由Controller用來對Switch進行狀態(tài)查詢和修改配置等操作。

b) 異步(Asynchronous)消息,是由Switch發(fā)送給Controller、用來通知Switch上發(fā)生的某些異步事件的消息,主要包括 Packet-in、Flow-Removed、Port-status和Error等。例如,當某一條規(guī)則因為超時而被刪除時,Switch將自動發(fā)送一條Flow-Removed消息通知Controller,以方便Controller作出相應的操作,如重新設置相關規(guī)則等。

c) 對稱(Symmetric)消息,顧名思義,這些都是雙向對稱的消息,主要用來建立連接、檢測對方是否在線等,包括Hello、Echo和Experimenter三種消息。

下圖展示了OpenFlow和Switch之間一次典型的消息交換過程,出于安全和高可用性等方面的考慮,OpenFlow的規(guī)范還規(guī)定了如何為Controller和Switch之間的信道加密、如何建立多連接等(主連接和輔助連接)。

 

4. OpenFlow協(xié)議及相關數(shù)據(jù)結構

在OpenFlow規(guī)范的最后一部分,主要詳細定義了各種OpenFlow消息的數(shù)據(jù)結構,包括OpenFlow消息的消息頭等。這里就不一一贅述,如需了解可以參考OpenFlow源代碼[10]中openflow.h頭文件中關于各種數(shù)據(jù)結構的定義。

OpenFlow的應用

隨著OpenFlow/SDN概念的發(fā)展和推廣,其研究和應用領域也得到了不斷拓展。目前,關于OpenFlow/SDN的研究領域主要包括網(wǎng)絡虛擬化、安全和訪問控制、負載均衡、聚合網(wǎng)絡和綠色節(jié)能等方面。另外,還有關于OpenFlow和傳統(tǒng)網(wǎng)絡設備交互和整合等方面的研究。

下面將舉幾個典型的研究案例來展示OpenFlow的應用。

1. 網(wǎng)絡虛擬化 – FlowVisor[11]

網(wǎng)絡虛擬化的本質是要能夠抽象底層網(wǎng)絡的物理拓撲,能夠在邏輯上對網(wǎng)絡資源進行分片或者整合,從而滿足各種應用對于網(wǎng)絡的不同需求。為了達到網(wǎng)絡分片的目的,F(xiàn)lowVisor實現(xiàn)了一種特殊的OpenFlow Controller,可以看作其他不同用戶或應用的Controllers與網(wǎng)絡設備之間的一層代理。因此,不同用戶或應用可以使用自己的 Controllers來定義不同的網(wǎng)絡拓撲,同時FlowVisor又可以保證這些Controllers之間能夠互相隔離而互不影響。下圖展示了使用 FlowVisor可以在同一個物理網(wǎng)絡上定義出不同的邏輯拓撲。FlowVisor不僅是一個典型的OpenFlow應用案例,同時還是一個很好的研究平臺,目前已經(jīng)有很多研究和應用都是基于FlowVisor做的。

 

2. 負載均衡 – Aster*x[12]

傳統(tǒng)的負載均衡方案一般需要在服務器集群的入口處,通過一個gateway或者router來監(jiān)測、統(tǒng)計服務器工作負載,并據(jù)此動態(tài)分配用戶請求到負載相對較輕的服務器上。既然網(wǎng)絡中所有的網(wǎng)絡設備都可以通過OpenFlow進行集中式的控制和管理,同時應用服務器的負載可以及時地反饋到OpenFlowController那里,那么OpenFlow就非常適合做負載均衡的工作。Aster*x通過Host Manager和Net Manager來分別監(jiān)測服務器和網(wǎng)絡的工作負載,然后將這些信息反饋給FlowManager,這樣Flow Manager就可以根據(jù)這些實時的負載信息,重新定義網(wǎng)絡設備上的OpenFlow規(guī)則,從而將用戶請求(即網(wǎng)絡包)按照服務器的能力進行調整和分發(fā)。

 

3. 綠色節(jié)能的網(wǎng)絡服務 – ElasticTree[13]

在數(shù)據(jù)中心和云計算環(huán)境中,如何降低運營成本是一個重要的研究課題。能夠根據(jù)工作負荷按需分配、動態(tài)規(guī)劃資源,不僅可以提高資源的利用率,還可以達到節(jié)能環(huán)保的目的。ElasticTree創(chuàng)新性地使用OpenFlow,在不影響性能的前提下,根據(jù)網(wǎng)絡負載動態(tài)規(guī)劃路由,從而可以在網(wǎng)絡負載不高的情況下選擇性地關閉或者掛起部分網(wǎng)絡設備,使其進入節(jié)電模式達到節(jié)能環(huán)保、降低運營成本的目的。

結語

沒有任何一項技術可以解決所有問題,我們相信OpenFlow/SDN也不會是解決現(xiàn)有所有網(wǎng)絡問題的“萬金油”。但是,我們相信OpenFlow/SDN的確給網(wǎng)絡變革和創(chuàng)新帶了許多機遇—既然網(wǎng)絡問題已經(jīng)變得可以通過編程來解決的時候,技術宅們該出手了,拯救網(wǎng)絡世界的時候到了!

參考資料

[1]斯坦福大學Clean Slate項目網(wǎng)站, http://cleanslate.stanford.edu/

[2] Ethane項目首頁,http://yuba.stanford.edu/ethane/

[3] Sane項目首頁,http://yuba.stanford.edu/sane/

[4] OpenFlow: EnablingInnovation in Campus Networks, www.openflow.org/documents/openflow-wp-latest.pdf

[5] TechnologyReview網(wǎng)站關于2009年十大前沿技術的評選, http://www.technologyreview.com/article/412194/tr10-software-defined-networking/

[6] Software DefinedNetworking: The New Norm for Networks, https://www.opennetworking.org/images/stories/downloads/white-papers/wp-sdn-newnorm.pdf

[7] Open Networking Summit2012日程安排,http://opennetsummit.org/speakers.html

[8] SDN Standards: What andWhatnot, http://opennetsummit.org/talks/ONS2012/pitt-tue-standards.pdf

[9] OpenFlow SwitchSpecification v1.3.0, https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.0.pdf

[10] OpenFlow v1.0.0源代碼, http://openflowswitch.org/downloads/openflow-1.0.0.tar.gz

[11] FlowVisor: A Network Virtualization Layer,

http://www.openflow.org/downloads/technicalreports/openflow-tr-2009-1-flowvisor.pdf

[12]Aster*x:Load-Balancing as a Network Primitive,

http://www.stanford.edu/~nikhilh/pubs/handigol-acld10.pdf

[13] ElasticTree: Saving Energy in Data Center Networks,

http://static.usenix.org/event/nsdi10/tech/full_papers/heller.pdf

責任編輯:張存 來源: EMC中國研究院
相關推薦

2013-08-28 09:26:01

2013-08-29 09:13:10

2015-08-04 14:22:43

虛擬化OpenFlowSDN

2012-10-24 09:40:00

2015-08-10 10:20:09

虛擬化OpenFlowSDN

2013-12-10 09:13:19

FreneticPyreticOpenFlow

2012-08-03 09:42:47

OpenFlowSDN網(wǎng)絡虛擬化

2015-10-29 10:27:19

SDNOpenFlow

2013-10-10 09:29:35

OpenFlowSDN

2012-11-23 11:31:54

SDNOpenFlow

2011-10-21 14:28:19

BGPSDNIPv6

2015-04-28 13:35:22

SDNOpenFlowOpenStack

2013-02-19 09:28:59

SDNOpenFlow交換機

2018-06-27 07:43:08

2012-11-26 09:49:37

SDNOpenFlowVLAN

2011-10-20 11:18:59

OpenFlowSDN

2015-09-02 10:33:11

OpenFlowSDN

2012-10-22 11:14:05

SDNOpenFlow網(wǎng)絡管理

2020-04-08 10:02:40

SDNOpenFlowOpenDayligh

2014-01-07 09:38:34

OpenFlowSDN測試
點贊
收藏

51CTO技術棧公眾號