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

Frenetic和Pyretic如何簡(jiǎn)化OpenFlow SDN編程

網(wǎng)絡(luò)
OpenFlow SDN環(huán)境是將網(wǎng)絡(luò)的控制面板解耦,將它轉(zhuǎn)移到一個(gè)中央SDN控制器上,它能為網(wǎng)絡(luò)上的所有設(shè)備作出數(shù)據(jù)包轉(zhuǎn)發(fā)決策。研究人員為此開(kāi)發(fā)了一些網(wǎng)絡(luò)編程語(yǔ)言,如Frenetic和Pyretic,以簡(jiǎn)化OpenFlow SDN編程。

 網(wǎng)絡(luò)配置非常復(fù)雜,所以很容易出錯(cuò)。SDN和OpenFlow協(xié)議通過(guò)使用一種統(tǒng)一語(yǔ)言來(lái)替換各個(gè)供應(yīng)商的私有配置語(yǔ)法,以簡(jiǎn)化網(wǎng)絡(luò)配置任務(wù)。

在一個(gè)OpenFlow SDN環(huán)境中,工程師不再需要用生成樹(shù)等協(xié)議去管理各個(gè)設(shè)備,而是將網(wǎng)絡(luò)的控制面板解耦,將它轉(zhuǎn)移到一個(gè)中央SDN控制器上。然后,這個(gè)控制器能夠?yàn)榫W(wǎng)絡(luò)上的所有設(shè)備作出數(shù)據(jù)包轉(zhuǎn)發(fā)決策。

但是,OpenFlow接口也非常復(fù)雜,所以研究人員開(kāi)發(fā)了一些網(wǎng)絡(luò)編程語(yǔ)言,如Frenetic和Pyretic,它們可以簡(jiǎn)化OpenFlow SDN編程。

OpenFlow SDN背后的復(fù)雜過(guò)程

雖然OpenFlow控制器使管理員不需要再逐個(gè)配置和管理數(shù)量龐大的設(shè)備,但是這個(gè)系統(tǒng)所使用的路由選擇決策過(guò)程仍然非常復(fù)雜。

在一個(gè)基于控制器的SDN環(huán)境中,如果有一個(gè)數(shù)據(jù)包的來(lái)源和目標(biāo)從未見(jiàn)過(guò),當(dāng)它到達(dá)一個(gè)網(wǎng)絡(luò)設(shè)備時(shí),這個(gè)設(shè)備就會(huì)把數(shù)據(jù)包發(fā)送到控制器上。這個(gè)控制器負(fù)責(zé)決定如何轉(zhuǎn)發(fā)這個(gè)數(shù)據(jù)包。然后,它會(huì)在設(shè)備上配置轉(zhuǎn)發(fā)規(guī)則,有相同來(lái)源和目標(biāo)的后續(xù)數(shù)據(jù)包就可以根據(jù)這個(gè)規(guī)則轉(zhuǎn)發(fā)。

來(lái)源與目標(biāo)信息對(duì)就稱為流(Flow)。控制器會(huì)為每一個(gè)流創(chuàng)建一條轉(zhuǎn)發(fā)規(guī)則,然后在每一個(gè)設(shè)備上為路徑配置這一條規(guī)則。轉(zhuǎn)發(fā)規(guī)則可能基于各種因素,如流量負(fù)載、安全性或延遲要求。

流規(guī)則可能指定一個(gè)來(lái)源和目標(biāo)信息對(duì),也可能包含一些通配符地址。每一個(gè)設(shè)備都會(huì)保存一組按優(yōu)先級(jí)排列的流規(guī)則。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)設(shè)備時(shí),它會(huì)對(duì)比流規(guī)則列表,然后根據(jù)最高優(yōu)先級(jí)的規(guī)則進(jìn)行轉(zhuǎn)發(fā)。

通配符規(guī)則一定要小心定義,避免那些本應(yīng)該發(fā)送到控制器上單獨(dú)處理的數(shù)據(jù)包被通配符規(guī)則提前轉(zhuǎn)發(fā)出去。如果一個(gè)流基于多個(gè)條件轉(zhuǎn)發(fā)數(shù)據(jù)包,那么必須有一條規(guī)則包含所有的條件。否則,這個(gè)流將會(huì)基于列表中第一條規(guī)則來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包,而后續(xù)規(guī)則將會(huì)被忽略。這些都是需要簡(jiǎn)化的復(fù)雜因素。

網(wǎng)絡(luò)編程語(yǔ)言可以簡(jiǎn)化OpenFlow

Frenetic和Pyretic是普林斯頓和康奈爾大學(xué)教師和學(xué)生正在研究的編程語(yǔ)言。這兩種語(yǔ)言都是高級(jí)語(yǔ)言,它們的目標(biāo)是隱藏SDN編程的復(fù)雜性和減少出錯(cuò)概率。這兩個(gè)語(yǔ)言的研發(fā)都在Frenetic Project的整體框架中進(jìn)行。

Frenetic包含了基于Ocaml編程語(yǔ)言的編程語(yǔ)法和運(yùn)行時(shí)刻。它主要設(shè)計(jì)用來(lái)操作開(kāi)源NOX控制器的。Pyretic基于Python,可以操作POX控制器。

這兩種語(yǔ)言將數(shù)量龐大的OpenFlow命令替換為少數(shù)高級(jí)命令,從而可以加快網(wǎng)絡(luò)策略的開(kāi)發(fā)。此外,它們也能夠簡(jiǎn)化策略的創(chuàng)建過(guò)程。

使用底層OpenFlow命令指定多個(gè)交換機(jī)操作是有難度且容易出錯(cuò)的。每一個(gè)操作的語(yǔ)句必須按順序發(fā)出,才能保證命令按正確順序執(zhí)行。例如,配置一個(gè)交換機(jī)同時(shí)轉(zhuǎn)發(fā)數(shù)據(jù)包并進(jìn)行計(jì)數(shù),需要將OpenFlow命令組合到一系列命令中。寫(xiě)入一個(gè)策略模塊,由它配置一個(gè)設(shè)備基于當(dāng)前鏈路負(fù)載、數(shù)據(jù)包優(yōu)先級(jí)和安全來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包,同時(shí)完成數(shù)據(jù)包計(jì)數(shù),這是一個(gè)非常有難度的任務(wù)。

通過(guò)使用語(yǔ)言接口,程序員就可以為每一個(gè)操作或條件指定一個(gè)策略。然后,他們可以使用Frenetic或Pyretic將每一個(gè)策略組件寫(xiě)為一個(gè)獨(dú)立模塊。這些語(yǔ)言的運(yùn)行時(shí)刻可以通過(guò)組合策略來(lái)創(chuàng)建OpenFlow命令,實(shí)現(xiàn)所有的條件并將它們按正確順序排列。這樣就可以防止執(zhí)行一個(gè)策略的命令時(shí)與其它策略的命令發(fā)生沖突。

此外,語(yǔ)言和運(yùn)行時(shí)刻也可以避免出現(xiàn)一些常見(jiàn)編程錯(cuò)誤,如無(wú)法處理可能出現(xiàn)的競(jìng)爭(zhēng)條件。在新數(shù)據(jù)包流的第一個(gè)數(shù)據(jù)包出現(xiàn)時(shí),就經(jīng)常發(fā)生這種情況。在控制器將新規(guī)則下發(fā)到這個(gè)設(shè)備之前,第二個(gè)數(shù)據(jù)包可能已經(jīng)到達(dá)了路徑中的下一個(gè)設(shè)備。

第二個(gè)數(shù)據(jù)包可能也會(huì)被發(fā)送到控制器上,從而產(chǎn)生不必要的計(jì)算時(shí)間,或者由于所部署的通配符規(guī)則而出現(xiàn)錯(cuò)誤轉(zhuǎn)發(fā)。運(yùn)行時(shí)有一些規(guī)則可以防止出現(xiàn)這個(gè)情況。此外,運(yùn)行時(shí)還可以在策略更新期間消除設(shè)備之間的不一致性。它們可以保證所有的數(shù)據(jù)包全部都按舊策略或新策略進(jìn)行轉(zhuǎn)發(fā)。

Frenetic和Pyretic采用了不同的方法

Frenetic和Pyretic采用了不同的策略模塊解析方法。Frenetic提供了一個(gè)并行模型。在程序員看來(lái),進(jìn)入控制器的每一個(gè)數(shù)據(jù)包都由一個(gè)對(duì)應(yīng)的策略模塊處理,也就是說(shuō)模塊是并行執(zhí)行的。支持多個(gè)條件的策略看起來(lái)也是并行執(zhí)行的,如基于鏈路轉(zhuǎn)發(fā)同時(shí)計(jì)算數(shù)據(jù)包數(shù)量。

Pyretic也支持并行執(zhí)行,但是它也支持順序執(zhí)行。例如,Pyretic程序員可以規(guī)定一個(gè)訪問(wèn)控制模塊在負(fù)載均衡模塊之前執(zhí)行。此外,程序員也可以讓策略隨時(shí)間推移而變化。

監(jiān)控網(wǎng)絡(luò)狀態(tài)是一個(gè)重要功能。控制器必須快速知道各個(gè)鏈路的負(fù)載或鏈路出現(xiàn)的問(wèn)題。這些語(yǔ)言包含了一些命令,運(yùn)行時(shí)可以通過(guò)解析這些命令來(lái)創(chuàng)建一組OpenFlow命令,檢測(cè)網(wǎng)絡(luò)事件、記錄計(jì)數(shù)和組合統(tǒng)計(jì)信息,從而提供關(guān)于網(wǎng)絡(luò)運(yùn)行狀況的總體視圖。

Frenetic和Pyretic繼續(xù)向前發(fā)展

這兩個(gè)語(yǔ)言的研發(fā)工作仍在繼續(xù)。Pyretic團(tuán)隊(duì)增加了一些特性,如支持服務(wù)質(zhì)量,正在開(kāi)發(fā)RADIUS和DHCP服務(wù)器等應(yīng)用。其他研究人員也開(kāi)始關(guān)注它們。佐治亞理工學(xué)院的教師與學(xué)生還使用Pyretic重新實(shí)現(xiàn)了它的Resonance控制器。所有工作在一天內(nèi)就完成了,完成的代碼行數(shù)減少了六倍。Frenetic團(tuán)隊(duì)正在改進(jìn)其編譯器的效率,同時(shí)也在驗(yàn)證所生成代碼的正確性。

在研究機(jī)構(gòu)推出這些語(yǔ)言并應(yīng)用到商業(yè)領(lǐng)域之后,它們將會(huì)大大加快SDN的應(yīng)用速度。

責(zé)任編輯:林琳 來(lái)源: TechTarget中國(guó)
相關(guān)推薦

2013-06-07 09:59:27

SDN虛擬化OpenDlow

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

2012-08-03 09:42:47

OpenFlowSDN網(wǎng)絡(luò)虛擬化

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

2018-06-27 07:43:08

2013-02-19 09:28:59

SDNOpenFlow交換機(jī)

2015-09-24 15:19:27

2015-04-28 13:35:22

SDNOpenFlowOpenStack

2013-11-08 07:55:39

2011-10-20 11:18:59

OpenFlowSDN

2012-11-26 09:49:37

SDNOpenFlowVLAN

2009-09-07 22:29:04

LINQ組合查詢

2015-09-02 10:33:11

OpenFlowSDN
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)