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

漫談:軟件定義網(wǎng)絡(luò)的千型百態(tài)

網(wǎng)絡(luò)
晚上好,很高興認(rèn)識大家,我來自Canonical,做OpenStack的,之前在IBM干了三年也是做OpenStack的,主要做網(wǎng)絡(luò),做純技術(shù)的。所以我就做一些純技術(shù)方面的分享吧,漫談一下SDN網(wǎng)絡(luò),拋個磚引個玉,說些觀點(diǎn),給出鏈接,然后大家提問,大家一起溝通探討認(rèn)識一下。

晚上好,很高興認(rèn)識大家,我來自Canonical,做OpenStack的,之前在IBM干了三年也是做OpenStack的,主要做網(wǎng)絡(luò),做純技術(shù)的。

所以我就做一些純技術(shù)方面的分享吧,漫談一下SDN網(wǎng)絡(luò),拋個磚引個玉,說些觀點(diǎn),給出鏈接,然后大家提問,大家一起溝通探討認(rèn)識一下。

[[147487]]

IaaS就是為用戶提供隔離的操作系統(tǒng)資源,對外可以以虛機(jī)、容器、VPC等外在形式表現(xiàn)出來。

OpenStack最初就是一個開源的IaaS平臺(當(dāng)然現(xiàn)在在Heat上又掛了一些PaaS的東西,我們暫且不表)。

操作系統(tǒng)資源主要由計(jì)算、存儲、網(wǎng)絡(luò)三大資源組成,所以Neutron的職責(zé)應(yīng)該是為用戶提供隔離的網(wǎng)絡(luò)服務(wù),也即NaaS(Network as a Service)。

所以從這個大的視圖上講,無論是OpenStack還是Neutron的重點(diǎn)應(yīng)該是提供放之萬物而皆準(zhǔn)的權(quán)威的北向API,同時(shí)像Linux內(nèi)核一樣提供插件結(jié)構(gòu)讓這領(lǐng)域的不同廠商的不同技術(shù)都可以通過寫驅(qū)動的形式進(jìn)來玩。

對于網(wǎng)絡(luò)來說:

二三層一般叫網(wǎng)絡(luò)拓?fù)?,四到七層叫網(wǎng)絡(luò)服務(wù)(即網(wǎng)絡(luò)應(yīng)用,如防火墻,負(fù)載均衡,入侵檢測系統(tǒng),入侵防護(hù),深度包檢測,數(shù)據(jù)緩存,廣域網(wǎng)加速等)。

網(wǎng)絡(luò)拓?fù)淇梢杂蓛煞N技術(shù)實(shí)現(xiàn),一是Overlay技術(shù),一是新興的OpenFlow流技術(shù)。實(shí)現(xiàn)上二者在控制平面/轉(zhuǎn)發(fā)平面所做的事情的思想是一樣的。我們以O(shè)verlay舉例來控制平面與轉(zhuǎn)發(fā)平面的實(shí)現(xiàn)思想。

轉(zhuǎn)發(fā)平面,NaaS是為每一個用戶提供用戶隔離的網(wǎng)絡(luò)服務(wù),一般使用標(biāo)簽來隔離,如傳統(tǒng)的vlan,但它需要修改物理交換機(jī),部署麻煩。于是,后來一般使用overlay技術(shù),如gre, vxlan,nvgre, Geneve, stt,mpls over udp/gre等,同樣使用標(biāo)簽segmention id來隔離用戶網(wǎng)絡(luò)流量,即通過自定義二層幀,通過UDP或QUIC或TCP Fast Open或IP或者別的什么上層協(xié)議傳送到遠(yuǎn)端,再由遠(yuǎn)端解析這個自定義幀。這個幀是自定義的,所以格式就五花八門,于是,市場上就出現(xiàn)了眾多的SDN產(chǎn)品,但其技術(shù)本質(zhì)都是差不多的。于是,有人就想統(tǒng)一這個幀的格式,于是就有了Geneve。overlay的本質(zhì)有兩個頭,一個是外部管理網(wǎng)段的頭,一個是內(nèi)部租戶網(wǎng)段的頭,這樣天然為IPv4實(shí)現(xiàn)了NAT之類的網(wǎng)絡(luò)地址轉(zhuǎn)換。

Overlay網(wǎng)絡(luò)可以分為兩層,一是物理網(wǎng)絡(luò),一是構(gòu)建在物理層上的虛擬overlay網(wǎng)絡(luò)。

物理網(wǎng)絡(luò)不需要和用戶信息關(guān)聯(lián),它只是負(fù)責(zé)提供一個IP矩陣實(shí)現(xiàn)所有物理設(shè)備之間的單播IP可達(dá)性,并提供segmention id功能實(shí)現(xiàn)租戶隔離。而虛擬overlay網(wǎng)絡(luò)則會包含租戶的信息,即類似于VPN為每一個租戶都生成自己的路由信息,也叫轉(zhuǎn)發(fā)路由實(shí)例(VRF),例如在MPLS主干網(wǎng)上的流量在IP地址前都會添加一個全局唯一的路由標(biāo)志符(Route Distinguisher, RD)形成唯一的VPN-IPv4地址來識別不同租戶的流量。PE路由器不應(yīng)該交換全網(wǎng)所有租戶的路由,所以通過手工設(shè)定路由目標(biāo)(Route Targe, RT)來設(shè)置從CE路由器向PE路由器導(dǎo)入導(dǎo)出哪些路由。只有所帶RT標(biāo)記與VRF表中任意一個Import RT相符的路由才會被導(dǎo)入到VRF表中。RT使得PE路由器只包含和其直接相連的VPN的路由,而不是全網(wǎng)所有VPN的路由,從而節(jié)省了PE路由器的資源,提高了網(wǎng)絡(luò)拓展性。

控制平面,那么導(dǎo)入導(dǎo)出哪些路由完全可以由上層控制平面通過規(guī)則來設(shè)定,這種通過路由方式將虛機(jī)流量導(dǎo)流到底層IP隧道矩陣的做法天然將廣播隔離在了一個節(jié)點(diǎn)上,可以省略像Neutron DRV ARP responser特性。也可以天然地讓計(jì)算節(jié)點(diǎn)也具備三層功能隨意設(shè)置局域隔離的網(wǎng)關(guān)(fan, opencontrail都是這么干的)。這層還要做地址學(xué)習(xí)功能。

對于openflow來說,控制平面應(yīng)該集中全局的VM, PORT, CONTROL, SWITCH的映射拓?fù)潢P(guān)系,這樣便可以計(jì)算給不同CONTROL上的不同SWITCH上的不同的PORT上的VM下發(fā)合適的流表(dragonflow就是這么干的)。還可以在邊緣出口路由器處運(yùn)行Quagga等動態(tài)路由協(xié)議通過BGP或iBGP收集到動態(tài)路由結(jié)合ARP路由通過一些規(guī)則轉(zhuǎn)換成流表,如下列是RouteFlow的轉(zhuǎn)換規(guī)則:

Route =IP + MASK [Rede]+IP[Gateway]+Interface
ARP= IP[Host]+MAC[Host]+Interface

路由表轉(zhuǎn)換成流表:

Match: DST_MAC + DST_IP + SUBNET_MASK
Actions:
Re-Write [SRC_MAC (Interface)], Re-Write [DST_MAC (Nexthop)]
Forward [Port-out(Interface)]

在數(shù)據(jù)轉(zhuǎn)發(fā)平面方面的性能方面,可以采用用戶態(tài)協(xié)議棧,通過DPDK在用戶態(tài)直接操作硬件網(wǎng)卡,并且構(gòu)建用戶態(tài)socket供上層調(diào)用。還可以引入Linux 4.x switchdev避免二層交換時(shí)引發(fā)CPU中斷從而為SR-IOV網(wǎng)卡提供交換加速功能。

所有SDN產(chǎn)品的大致思想都脫離不了上面的點(diǎn)?,F(xiàn)在對照它,我們可以發(fā)現(xiàn)Neutron有很多不足之處:

理想網(wǎng)絡(luò)我感覺一是無限可伸縮同時(shí)適合大小規(guī)模部署的網(wǎng)絡(luò)拓?fù)洌梢栽谝粋€局域網(wǎng)的多個跨三層的OpenStack云之間互聯(lián),可以互聯(lián)跨廣域網(wǎng)的多個OpenStack云。我感覺第二點(diǎn)應(yīng)該是在網(wǎng)絡(luò)拓?fù)渲系暮玫木W(wǎng)絡(luò)服務(wù)。第三點(diǎn)應(yīng)該是性能,每個網(wǎng)絡(luò)節(jié)點(diǎn)都應(yīng)該同時(shí)具備至少第三層功能,干凈利索地解決東西南北流量問題。

先說nova-network, 它的multi-host功能可以讓每一個計(jì)算節(jié)點(diǎn)同時(shí)具備網(wǎng)絡(luò)三層功能,我們知道,一個子網(wǎng)是不能出現(xiàn)相同IP的網(wǎng)關(guān)的,而多個計(jì)算節(jié)點(diǎn)是可能出現(xiàn)相同子網(wǎng)的虛機(jī)的。所以對于multi-host而言對于同一個子網(wǎng)每一個計(jì)算節(jié)點(diǎn)上網(wǎng)關(guān)的IP都是不一樣的,這樣簡化了設(shè)計(jì),但是問題是浪費(fèi)了IP地址。

Neutron的DVR可以干同樣的事情,每一個計(jì)算節(jié)點(diǎn)上相同子網(wǎng)的網(wǎng)關(guān)都是相同的,但是通過流表來確保這個網(wǎng)關(guān)局部隔離。缺點(diǎn)是這種設(shè)計(jì)實(shí)現(xiàn)復(fù)雜度較高。

kubernetes則是事先假設(shè)每一個計(jì)算節(jié)點(diǎn)使用不重復(fù)的子網(wǎng),這樣也就避免了計(jì)算節(jié)點(diǎn)上出現(xiàn)相同子網(wǎng)網(wǎng)關(guān)的問題,簡化了設(shè)計(jì)。

Neutron為二層提供了ML2插件來支持不同廠商的二層設(shè)備,在三層沒有提供插件只提供了一個L3-agent來支持三層設(shè)備,在四到七層提供了高級服務(wù)框架來支持不同的網(wǎng)絡(luò)服務(wù)。其缺點(diǎn)有:

北向API層做得太爛,如ACL,如QoS,如VPN等高級服務(wù)的API始終做不好或者因?yàn)橛写倘兜拇a評審機(jī)制而發(fā)展滯后。

分得層數(shù)太多,尤其是將二層和三層分開了,這樣不利于讓所有節(jié)點(diǎn)同時(shí)具備三層功能。特別對于一些不分層的新興網(wǎng)絡(luò)技術(shù)如SDN是不適合的。二層和三層插件應(yīng)該合并適應(yīng)于SDN技術(shù)。

三層沒有插件,只有一個l3-agent。應(yīng)該有插件結(jié)構(gòu),支持不同廠商的三層設(shè)備,特別是一些支持ACL的三層設(shè)備,支持跨廣域網(wǎng)的三層支持如MPLS VPN等.

四到七層的服務(wù)鏈功能做得不好,同時(shí),它的API只適合傳統(tǒng)的基本iptables服務(wù)鏈插入模型,不適合SDN基于流表的服務(wù)模型。

SDN的本質(zhì)是數(shù)據(jù)轉(zhuǎn)發(fā)平面與集中控制平面相分離,數(shù)據(jù)轉(zhuǎn)發(fā)這塊主要是基于新興的openflow流以及基于overlay隧道技術(shù),但其技術(shù)本質(zhì)也是一樣的。overlay會對二層數(shù)據(jù)幀進(jìn)行自定義,我們可以隨心所欲地改寫,添加兩個包頭,一個是內(nèi)部包頭對應(yīng)虛機(jī)網(wǎng)段,一個是外部包頭對應(yīng)管理網(wǎng)段,天然進(jìn)行內(nèi)外網(wǎng)的網(wǎng)絡(luò)地址轉(zhuǎn)換。overlay層只負(fù)責(zé)通過隧道進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),另外,其隧道最好是支持segmention id的有利于租戶間的隔離??刂破矫媸紫纫羌械?,它會記錄網(wǎng)絡(luò)和租戶間的對應(yīng)關(guān)系,通過提供一些規(guī)則容易通過上面控制底層的流量轉(zhuǎn)發(fā),如虛機(jī)出來的流量如何進(jìn)入隧道,如果是經(jīng)過路由那可以通過路由將廣播只限制在一臺物理機(jī)上,也可以像VPN一樣針對每個用戶建立路由轉(zhuǎn)發(fā)實(shí)例,也可以像DVR一樣直接響應(yīng)需機(jī)的ARP請求和地址學(xué)習(xí)等。

Ubuntu Fan網(wǎng)絡(luò)的思想和上述一致,問題在于fan網(wǎng)絡(luò)是flat的即隧道里還不支持segmention id 來隔離租戶網(wǎng)絡(luò),另外Fan也沒有控制平面不能做規(guī)則設(shè)置。

opencontrail是我認(rèn)識的最好的SDN,它忠實(shí)實(shí)現(xiàn)了上述思想,juniper的工程師們非常理解電信網(wǎng)絡(luò),在電信世界,現(xiàn)在4G的每一個基站和其他基站都是兩兩互連的,也就是說基站和openstack里的計(jì)算節(jié)點(diǎn)一樣是需要3層功能的。fan實(shí)現(xiàn)的是IPIP隧道,opencontrail實(shí)現(xiàn)是mpls over udp/gre隧道可以天然地互聯(lián)廣域網(wǎng)的多個數(shù)據(jù)中心。另外,opencontrail的服務(wù)鏈功能做得非常完善,如深度包檢測(DPI),入侵檢測(IDP),入侵防護(hù)(IPS),廣域網(wǎng)優(yōu)化和負(fù)載均衡等。

Midonet也非常不錯,雖然每個計(jì)算節(jié)點(diǎn)不具備3層功能,但它支持VTEP和MPLS L2 Gateway功能,這樣同一tenant的不同子網(wǎng)間的東西向流量并不需要經(jīng)過Provider Router(Neutron DVR解決的是相同子網(wǎng)的東西向流量不繞道l3-agent的情況), 只有跨tenant的東西向流量和南北流量才需要經(jīng)過Provder Router。它和沒有DVR的neutron的拓?fù)淇雌饋碜钕?,但是它比l3-agent做得更好也支持BGP與ECMP支持等。另外,neutron是MQ+DB實(shí)現(xiàn)的,大量應(yīng)用了消息,這可能成為性能瓶頸;而Midonet主要基于分布式數(shù)據(jù)庫技術(shù)。采用分布式數(shù)據(jù)庫NSDB來作集中的控制平面存儲port, node, mac等映射關(guān)系。這種搞法和基于openflow流表的SDN實(shí)現(xiàn)產(chǎn)品看起來更眼熟,如routeflow等。

Neutron的dragonflow也正在朝這方面努力, 它基于openflow流表同時(shí)支持網(wǎng)絡(luò)二三層,每個虛機(jī)出來的流量經(jīng)過qvb接口進(jìn)入br-int網(wǎng)橋后都會將seg_id設(shè)置到流規(guī)則里的metadata里,顯然,不同的子網(wǎng)就會有不同的seg_id, 再結(jié)合destination ip就可以判斷是L2還是L3流量。它和neutron的思想更近,可以代替DVR,比DVR的實(shí)現(xiàn)要簡單,復(fù)雜度要低,更重要的是,它消除了影響neutron性能的veth和namespace這些東西??傊?,它非常好,我也非??春谩5珕栴}是它目前還不成熟,目前,DragonFlow僅支持中心化的SNAT與DNAT,還不支持在計(jì)算節(jié)點(diǎn)上做SNAT與DNAT。

還有一個就是openvswitch的OVN項(xiàng)目,設(shè)想地都非常好,問題是現(xiàn)在只是1.0版本,太多的特性沒有實(shí)現(xiàn)。它將支持提供對L2/L3網(wǎng)絡(luò)虛擬化的支持(logical switches, distributed logical l3 processing, software and hardware gateway, in-kernel based security groups, and L2/L3/L4 ACLs, tunnel-based[VXLAN, NVGRE, Geneve, STT, IPSec])。

責(zé)任編輯:何妍 來源: 云頭條
相關(guān)推薦

2010-06-07 14:14:37

IPv6網(wǎng)絡(luò)應(yīng)用

2011-07-27 10:11:08

JuniperDellCisco

2021-12-29 20:37:20

計(jì)算

2024-03-11 08:57:02

國產(chǎn)數(shù)據(jù)庫證券

2018-09-18 09:45:45

比特幣虛擬貨幣區(qū)塊鏈

2019-10-24 09:30:40

GitHub代碼開發(fā)者

2020-04-15 22:15:33

機(jī)器人物聯(lián)網(wǎng)病毒

2018-08-06 11:21:11

相機(jī)

2012-12-21 12:37:24

2023-06-14 15:56:15

2023-09-21 15:12:34

算力AI集群

2015-07-17 13:45:42

SDNIT

2013-08-27 09:17:15

軟件定義網(wǎng)絡(luò)SDN網(wǎng)絡(luò)可見性

2017-11-09 10:28:45

軟件定義網(wǎng)絡(luò)

2015-06-11 13:43:31

軟件定義網(wǎng)絡(luò)

2015-01-16 17:32:29

軟件定義網(wǎng)絡(luò)SDN

2013-02-20 14:31:10

軟件定義網(wǎng)絡(luò)SDN網(wǎng)絡(luò)革命
點(diǎn)贊
收藏

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