域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
作者:楊雨
“MTU的值設(shè)置多少合適呢?現(xiàn)在最佳實(shí)踐是設(shè)置到9000。”
“其實(shí)OpenFlow只是一個(gè)概念,從這幾年SDN的發(fā)展來(lái)看,它并沒(méi)有成為一個(gè)事實(shí)的標(biāo)準(zhǔn)。”
“大規(guī)模云平臺(tái)對(duì)SDN的要求,第一是網(wǎng)絡(luò)基礎(chǔ)架構(gòu)要可擴(kuò)展,第二是控制器可擴(kuò)展,第三是數(shù)據(jù)平面無(wú)集中式單點(diǎn),第四是跨集群的擴(kuò)展網(wǎng)絡(luò)。”
“在基礎(chǔ)架構(gòu)上,如果用Tungsten Fabric,只要是用于生產(chǎn)環(huán)境的話,選擇IP CLOS架構(gòu)就行,沒(méi)必要再去折騰Fabric等二層架構(gòu)。”
“Tungsten Fabric的本質(zhì)是基于MPLS VPN的SDN。”
“跨集群的互聯(lián),或者叫多云互聯(lián),主要有兩種模式:基于控制器之間的互聯(lián),基于Cloud Gateway之間的互聯(lián)。”
本文整理自TF中文社區(qū)技術(shù)代表?xiàng)钣暝赥F中文社區(qū)“2020第一次Meetup”上的演講,分享Tungsten Fabric對(duì)大規(guī)模云平臺(tái)的支持。本文已經(jīng)主辦方和演講者審閱授權(quán)發(fā)布。
在TF中文社區(qū)1月7日的“2020第一次Meetup”活動(dòng)上,來(lái)自Tungsten Fabric技術(shù)研發(fā)和一線使用者、關(guān)注多云互聯(lián)的從業(yè)者、開(kāi)源SDN的愛(ài)好者們互相切磋、支招,現(xiàn)場(chǎng)氣氛熱烈,精彩內(nèi)容不斷。Tungsten Fabric在中國(guó)的廣泛應(yīng)用正在越來(lái)越真切地走來(lái)。
本次演講及TF中文社區(qū)“2020第一次Meetup”活動(dòng)資料,請(qǐng)?jiān)?ldquo;TF中文社區(qū)”公眾號(hào)后臺(tái)點(diǎn)擊“會(huì)議活動(dòng)-Meetup”領(lǐng)取。
今天的分享偏技術(shù)一些,首先我們來(lái)看SDN的本質(zhì),然后從Tungsten Fabric架構(gòu)上解析為什么比OVS更好,為什么能支撐更大的場(chǎng)景。
先來(lái)看云對(duì)網(wǎng)絡(luò)的要求。首先是租戶隔離,IaaS就是多租戶,對(duì)于地址重用的要求,以VLAN的傳統(tǒng)方式也是可以實(shí)現(xiàn)的。另外,傳統(tǒng)VXLAN的協(xié)議或OVS的協(xié)議,只提供二層隔離的能力,沒(méi)有三層隔離的能力,只要你的機(jī)器綁到外網(wǎng)IP,或者綁到公共的路由層面上,三層是可以互通的,所以說(shuō)在租戶隔離的層面,也有三層隔離的需求。
其次,云需要網(wǎng)絡(luò)支持虛擬機(jī)跨機(jī)柜的遷移。VXLAN的話還要跨數(shù)據(jù)中心大二層,不是說(shuō)不可以實(shí)現(xiàn),但除了網(wǎng)絡(luò)要求,還有存儲(chǔ)的要求,比較難。虛擬機(jī)跨機(jī)柜的遷移,最難的是什么?傳統(tǒng)網(wǎng)絡(luò)架構(gòu),就是接入-匯聚-核心,路由器以下都是二層架構(gòu),機(jī)器可以在不同機(jī)架上遷移,但一個(gè)數(shù)據(jù)中心,云足夠大的時(shí)候,二層基礎(chǔ)網(wǎng)絡(luò)是支撐不了整個(gè)云的,不同機(jī)架在不同三層里面,這時(shí)虛擬機(jī)做遷移就要要求IP地址不能變。
另外,還有網(wǎng)絡(luò)功能和服務(wù)的要求。在云上面都是共享的資源池,如果以負(fù)載均衡為例,將一個(gè)性能強(qiáng)大的硬件負(fù)載均衡虛擬化給多個(gè)租戶使用,還是切換成小的負(fù)載均衡虛擬機(jī)實(shí)例給不同租戶使用?這里就提出網(wǎng)絡(luò)虛擬化和網(wǎng)絡(luò)功能虛擬化的需求,來(lái)支撐IaaS的運(yùn)行。
網(wǎng)絡(luò)虛擬化,主要應(yīng)用的是Overlay的技術(shù),是SDN用到的其中一個(gè)技術(shù),用的比較多、比較標(biāo)準(zhǔn)的技術(shù),包括VXLAN、GRE、STT、GENEVE,以及Tungsten Fabric用到的MPLSoverUDP和MPLSoverGRE,主要的方式,是把二層的幀在vTEP上進(jìn)行三層封裝,通過(guò)VXLAN隧道傳輸?shù)綄?duì)端。
這樣做的好處是,增加了租戶的數(shù)量,傳統(tǒng)VLAN是4096,如果VXLAN就是2的24次方;其次底層傳輸基于IP網(wǎng)絡(luò),擴(kuò)展性遠(yuǎn)大于二層網(wǎng)絡(luò),使得網(wǎng)絡(luò)能擴(kuò)展,虛擬機(jī)在不同物理網(wǎng)段上遷移。但同樣也帶來(lái)一些工作,如何讓兩邊的設(shè)備建立通信?第一建立VXLAN隧道,這是SDN控制器要做的事,第二是交換兩邊的MAC地址信息。
TF中文社區(qū)3月Meetup活動(dòng),將聚焦Tungsten Fabric與K8s的集成,由重量級(jí)嘉賓分享Tungsten Fabric與K8s的部署和實(shí)踐,詳細(xì)演示操作過(guò)程,并解答關(guān)于Tungsten Fabric和K8s的一切問(wèn)題。關(guān)注“TF中文社區(qū)”公眾號(hào),后臺(tái)點(diǎn)擊“會(huì)議活動(dòng)-Meetup”領(lǐng)取。
有兩個(gè)VM,在兩個(gè)不同的主機(jī)上,就是通過(guò)Overlay來(lái)解決二層通信問(wèn)題的。比如ESX1要和ESX2通信,ping的時(shí)候首先發(fā)ARP請(qǐng)求,那對(duì)應(yīng)的MAC地址是多少?對(duì)于VXLAN來(lái)說(shuō)就要有一張轉(zhuǎn)發(fā)表,MAC2需要通過(guò)VTEP2的IP,去做一個(gè)封包,再傳輸?shù)絍TEP2,解封裝后,再傳輸?shù)较鄳?yīng)的機(jī)器里去。怎么建立這個(gè)轉(zhuǎn)發(fā)表?就是SDN需要去做的事情。
一種是自學(xué)習(xí),只要VM1發(fā)了一個(gè)ARP請(qǐng)求,到達(dá)vTEP網(wǎng)關(guān),它就會(huì)去洪泛請(qǐng)求,廣播到和它建立隧道的vTEP節(jié)點(diǎn)上去,看誰(shuí)反饋ARP reply,就知道對(duì)端的IP地址,可以建立一個(gè)轉(zhuǎn)發(fā)表。但這樣會(huì)有很多消耗,ARP地址也有老化的過(guò)程,一旦老化,就需要重新去學(xué),直觀體驗(yàn)是ping包時(shí)間會(huì)很長(zhǎng)。如果是大規(guī)模的網(wǎng)絡(luò),頻繁洪泛,會(huì)對(duì)網(wǎng)絡(luò)可靠性帶來(lái)很大的挑戰(zhàn)。
SDN大部分情況下是和云管平臺(tái)做結(jié)合,知道在這個(gè)虛擬化服務(wù)器上,有哪些虛擬機(jī),提前把MAC地址表或轉(zhuǎn)發(fā)表下發(fā)到vTEP設(shè)備上,這就是SDN控制平面要做的事情。
在Open vSwitch這個(gè)方案里面,就是通過(guò)數(shù)據(jù)庫(kù)和RabbitMQ,去下發(fā)一個(gè)OVSDB的命令,建立相應(yīng)的流表,讓虛擬機(jī)知道要往哪兒走。Tungsten Fabric也有相應(yīng)的機(jī)制,后面會(huì)介紹。
數(shù)據(jù)平面的作用,就是根據(jù)轉(zhuǎn)發(fā)表,對(duì)二層的幀進(jìn)行轉(zhuǎn)發(fā),另外進(jìn)行封包和解包。這里提一下MTU,這是這個(gè)二層的值,幀的transfer unit,為什么要設(shè)置很大?首先VXLAN協(xié)議會(huì)增加一些Hdr,UTP的Hdr,VXLAN的Hdr,封包的時(shí)候如果不做處理的話會(huì)超過(guò)1500,網(wǎng)卡會(huì)不發(fā)這個(gè)幀。早期做OpenStack經(jīng)常會(huì)遇到trouble shooting的MTU問(wèn)題,后來(lái)解決方案是通過(guò)DHCP的Agenter,設(shè)置了一個(gè)參數(shù),如果網(wǎng)卡MTU是1500,就默認(rèn)為14XX,自動(dòng)降低,這樣虛擬機(jī)的數(shù)據(jù)幀才能通過(guò)二層網(wǎng)卡。那么MTU的值設(shè)置多少合適呢?現(xiàn)在最佳實(shí)踐是設(shè)置到9000。在vTEP這一塊就是封包和轉(zhuǎn)發(fā),根據(jù)實(shí)際測(cè)試,如果增加MTU值,對(duì)吞吐量有很大的提高。
剛才說(shuō)了SDN做的事情,控制下發(fā)轉(zhuǎn)發(fā)表和傳輸,接下來(lái)說(shuō)一下SDN的分類。按流派來(lái)區(qū)分,SDN可分為軟件和硬件,區(qū)別就是vTEP是在vRouter上,還是在交換機(jī)的硬件轉(zhuǎn)發(fā)上,看解封包在哪里。硬件一般都是私有協(xié)議,像Cisco用的就是OPFlex。軟件也有很多不同的項(xiàng)目,其中Tungsten Fabric是最產(chǎn)品化的一個(gè)。
按照控制器分類,有集中式和分布式。集中式的控制器有OpenFlow、OVSDB,以及Tungsten Fabric使用XMPP(一個(gè)聊天的協(xié)議)。我們可以把Neutron的Open vSwitch理解為OVSDB協(xié)議,Neutron是通過(guò)RabbitMQ把信令下發(fā)到具體的計(jì)算節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)的OVS Agent通過(guò)OVSDB的命令,把相應(yīng)的流表增加到OVSDB交換機(jī)。
分布式的控制器,比如EVPN-VXLAN,就是使用了MP-BGP。
大家覺(jué)得哪種形式的控制器會(huì)更好一點(diǎn)呢?目前用OpenDaylight的項(xiàng)目有哪些?華為,華三等都在用,其控制器的SDN架構(gòu)就是參照OpenFlow來(lái)做的。有些廠商自己有研發(fā)能力,基于自身的硬件設(shè)備,可以開(kāi)發(fā)一個(gè)比較完善的產(chǎn)品。但在開(kāi)源社區(qū),很少看到一個(gè)成功的OpenDaylight項(xiàng)目,只是提供了一個(gè)框架和一些組件,不能很快基于開(kāi)源項(xiàng)目run起來(lái)。其實(shí)OpenFlow只是一個(gè)概念,從這幾年SDN的發(fā)展來(lái)看,它并沒(méi)有成為一個(gè)事實(shí)的標(biāo)準(zhǔn)。
反而是OVSDB起來(lái)了,應(yīng)用在Neutron軟件的控制,還有交換機(jī)的控制上。比如Tungsten Fabric早期的BMS實(shí)現(xiàn),虛擬機(jī)要和裸機(jī)通信,裸機(jī)通過(guò)VLAN TAG,上到TOR交換機(jī),再通過(guò)VLAN到VXLAN的轉(zhuǎn)換,到達(dá)虛擬網(wǎng)絡(luò)。其中VLAN到VXLAN的轉(zhuǎn)換,就是通過(guò)OVSDB協(xié)議下發(fā)的。你的交換機(jī),理論上只要支持OVSDB協(xié)議,就可以做BMS場(chǎng)景。
我自己更傾向于這種分布式的控制器。因?yàn)榧惺降挠肋h(yuǎn)會(huì)有瓶頸,無(wú)論是軟件瓶頸,還是性能瓶頸。而EVPN-VXLAN的核心協(xié)議是MP-BGP,BGP的擴(kuò)展性有多大?看看現(xiàn)在Internet骨干網(wǎng),跑的就是BGP協(xié)議。
MP-BGP的協(xié)議,通過(guò)控制器下發(fā)流表信息,再通過(guò)BGP協(xié)議去交互,使用的時(shí)候只要針對(duì)你的相應(yīng)架構(gòu),去做相應(yīng)BGP協(xié)議的擴(kuò)展性設(shè)計(jì)就可以。
針對(duì)Tungsten Fabric來(lái)說(shuō),其實(shí)是集中式和分布式兩種流派的融合,既用到集中式的架構(gòu),在對(duì)外的連接上,又采用了分布式控制器的技術(shù)。
總結(jié)大規(guī)模云平臺(tái)對(duì)SDN的要求,第一是網(wǎng)絡(luò)基礎(chǔ)架構(gòu)要可擴(kuò)展。如果采用二層架構(gòu),瓶頸就是在基礎(chǔ)架構(gòu)上,受限于交換機(jī)的端口數(shù),二層交換機(jī)采用生成樹(shù)協(xié)議,對(duì)于大規(guī)模網(wǎng)絡(luò)平臺(tái),如果運(yùn)維水平較差,接出一個(gè)環(huán)路出來(lái),就很危險(xiǎn)。
第二,控制器是可擴(kuò)展的。無(wú)論集中式還是分布式,在架構(gòu)上一定是可擴(kuò)展的,至于能支持多大的量,就是代碼實(shí)現(xiàn)的問(wèn)題了。
第三,數(shù)據(jù)平面無(wú)集中式單點(diǎn)。談到SDN的實(shí)際應(yīng)用,運(yùn)維是一個(gè)比較大的挑戰(zhàn),無(wú)論是做開(kāi)發(fā)還是做運(yùn)維出身的人,最重要的是理解虛擬機(jī)之間,虛擬機(jī)到外網(wǎng)之間,數(shù)據(jù)流量是怎樣的?應(yīng)該通過(guò)什么命令去看這些流量,去trouble shooting,就像以前傳統(tǒng)網(wǎng)絡(luò)運(yùn)維怎么去抓包一樣。對(duì)于擴(kuò)展性來(lái)說(shuō),要實(shí)現(xiàn)傳統(tǒng)網(wǎng)絡(luò)的SNAT、floating IP等,每個(gè)項(xiàng)目都有不同的實(shí)現(xiàn)方式,實(shí)現(xiàn)過(guò)程中沒(méi)有單點(diǎn)的話,在架構(gòu)上就是可以擴(kuò)展的。
第四,跨集群的擴(kuò)展網(wǎng)絡(luò)。架構(gòu)上無(wú)論怎樣擴(kuò)展,總是有極限的,對(duì)于一個(gè)單集群來(lái)說(shuō),總會(huì)到達(dá)一個(gè)瓶頸。如果要建一個(gè)更大的集群,可以橫向擴(kuò)展多個(gè)集群出來(lái),形成一個(gè)大的資源池。那么面臨的問(wèn)題是,網(wǎng)絡(luò)是否需要互通。如果部署一個(gè)高可用業(yè)務(wù),跨集群的情況如何做互通,主流的一些高可用組件,需要跨兩個(gè)集群二層互通,都需要SDN去支持這樣的需求。
在基礎(chǔ)架構(gòu)上,如果用Tungsten Fabric,只要是用于生產(chǎn)環(huán)境的話,選擇IP CLOS架構(gòu)就行,沒(méi)必要再去折騰Fabric等二層架構(gòu)。IP CLOS可以帶來(lái)足夠的擴(kuò)展性和高性能,包括沒(méi)有供應(yīng)商鎖定,建完以后基本不需要再動(dòng)。
Leaf就是架頂式交換機(jī),下面是子網(wǎng),不同機(jī)架用不同子網(wǎng),上層通過(guò)三層網(wǎng)關(guān)路由做通信,最主要的就是Leaf Spine之間三層怎么交互。瞻博網(wǎng)絡(luò)有個(gè)文檔介紹IP CLOS的白皮書(shū),對(duì)OSPF、ISIS、BGP進(jìn)行了控制平面上的對(duì)比,最佳建議是用eBGP來(lái)做交互。
Tungsten Fabric的本質(zhì)是基于MPLS VPN的SDN。原來(lái)的VPN是解決多個(gè)site之間的互聯(lián),控制平面是BGP協(xié)議。到了數(shù)據(jù)中心里面,云之間的互聯(lián),一個(gè)物理機(jī)可以看做一個(gè)site,不同物理機(jī)之間借助VPN建立不同的隧道來(lái)打通,這就是Tungsten Fabric的本質(zhì)。不同之處在于控制平面,Tungsten Fabric用的是集中式的控制器并通過(guò)XMPP協(xié)議控制vRouter的路由表。
簡(jiǎn)單看一下Tungsten Fabric的功能架構(gòu),在多云支持上,包括VMware、OpenStack容器、BMS;網(wǎng)絡(luò)功能上,二層網(wǎng)絡(luò)、三層網(wǎng)絡(luò)、DHCP、DNS、QoS、防火墻、LB等都是支持的。
在部署的時(shí)候,控制器主要分為兩種節(jié)點(diǎn),一種是Analytics Cluster分析節(jié)點(diǎn),主要做流的可視化。另外一種Controller節(jié)點(diǎn)用來(lái)控制網(wǎng)絡(luò),分為Configuration和Control Node,前者提供API,對(duì)接Neutron等云管平臺(tái),API通過(guò)創(chuàng)建一個(gè)pod,在Configuration上記錄數(shù)據(jù)庫(kù),轉(zhuǎn)換成相應(yīng)的IF-MAP,控制器通過(guò)XMPP命令在vRouter上創(chuàng)建相應(yīng)的接口,再把接口信息傳給不同的vRouter或外部網(wǎng)關(guān)及硬件設(shè)備,控制器核心協(xié)議是BGP協(xié)議。
控制器在整個(gè)Tungsten Fabric里就是一個(gè)router reflector,把所有的二層接口、MAC接口信息,三層路由信息全部存在這里,分發(fā)到不同的vRouter上面。對(duì)于云內(nèi)的vRouter,用XMPP推送,對(duì)于云外的Gateway等,通過(guò)BGP推送。
其中,NETCONF協(xié)議不是用來(lái)推送路由信息的,主要用于和網(wǎng)絡(luò)硬件設(shè)備的一些配置下發(fā)。比如Tungsten Fabric中增加一個(gè)BMS服務(wù)器接入到Tungsten Fabric管理的虛擬網(wǎng)絡(luò),Tungsten Fabric中的Device Manager會(huì)通過(guò)NETCONF將VLAN接口的配置和下發(fā)到TOR交換機(jī),通過(guò)NETCONF建立接口。然后Tungsten Fabric控制器再通過(guò)OVSDB協(xié)議或EVPN-VXLAN協(xié)議去配置相應(yīng)的VLAN-VXLAN的橋接網(wǎng)關(guān)。如果需要把虛擬網(wǎng)絡(luò)擴(kuò)展到Gateway,NETCONF也會(huì)幫助創(chuàng)建相應(yīng)的Routing instance配置。路由層面的交換信息,還是通過(guò)BGP來(lái)實(shí)現(xiàn)。
TF中文社區(qū)3月Meetup活動(dòng),將聚焦Tungsten Fabric與K8s的集成,由重量級(jí)嘉賓分享Tungsten Fabric與K8s的部署和實(shí)踐,詳細(xì)演示操作過(guò)程,并解答關(guān)于Tungsten Fabric和K8s的一切問(wèn)題。關(guān)注“TF中文社區(qū)”公眾號(hào),后臺(tái)點(diǎn)擊“會(huì)議活動(dòng)-Meetup”領(lǐng)取。
Tungsten Fabric用到的數(shù)據(jù)庫(kù),都是最近8年才有的,比如分布式數(shù)據(jù)庫(kù)的Cassandra、Zoo Keeper、RabbitMQ,在架構(gòu)上是高可用、可擴(kuò)展的,具體能擴(kuò)展到多大的量,還是要看代碼實(shí)現(xiàn)。反過(guò)來(lái)看Neutron,本質(zhì)就是一個(gè)數(shù)據(jù)庫(kù),記錄了所有的信息,把所有的流表下發(fā)下去。
Tungsten Fabric的數(shù)據(jù)平面主要是通過(guò)vRouter來(lái)做轉(zhuǎn)發(fā),vRouter agent在user namespace的進(jìn)程,安排控制器基于XMPP連接拿到一些信息,再下發(fā)到kernel的轉(zhuǎn)發(fā)平面。這里提供了二層隔離和三層隔離的功能,如果說(shuō)同一個(gè)網(wǎng)絡(luò)的虛擬機(jī),接在同一個(gè)vRouter下面,雙方的通信就在這里完成。不同租戶的網(wǎng)絡(luò)虛擬機(jī),接了不同的VRF、Routing instance,也是不能通信的。
vRouter內(nèi)置了很多網(wǎng)絡(luò)功能,比如DNS。Tungsten Fabric的DNS會(huì)根據(jù)主機(jī)的DNS配置來(lái)解析,如果遇到問(wèn)題,可以檢查一下主機(jī)的DNS有沒(méi)有問(wèn)題。DHCP應(yīng)答也在這里,Neutron就不一樣,專門(mén)有一個(gè)DHCP agent跑在一個(gè)節(jié)點(diǎn)上,OVS在大規(guī)模情況下,如果接了超過(guò)1500個(gè)接口,基本上就會(huì)出現(xiàn)丟包,并且經(jīng)常出問(wèn)題。
Security Group在OVS的實(shí)現(xiàn)是通過(guò)和linux bridge關(guān)聯(lián)的iptables實(shí)現(xiàn)的,而在vRouter就是通過(guò)內(nèi)置的ACL功能實(shí)現(xiàn)。Network Policy就是一個(gè)分布式的防火墻。Floating IP也是在vRouter做了一個(gè)NAT出去。
這里多談一下Link-Local,它的場(chǎng)景是什么?作為一個(gè)云服務(wù)商,要向客戶提供NTP服務(wù)、ATP、YUM源、等公共服務(wù)。怎么讓虛擬機(jī)在虛擬網(wǎng)絡(luò)內(nèi)訪問(wèn)到一個(gè)公共服務(wù)呢?一種方式是把這些網(wǎng)絡(luò)的路由打通,因?yàn)樾枰粋€(gè)VTEP出口,通過(guò)cloud gateway把公共路由導(dǎo)進(jìn)去,這樣帶來(lái)一個(gè)問(wèn)題,所有ATP流量、下載流量都要通過(guò)cloud gateway,流量會(huì)跟大。Tungsten Fabric提供一個(gè)Link-Local的模式,就是一個(gè)169.254的地址,在網(wǎng)絡(luò)標(biāo)準(zhǔn)里只有一跳。在OpenStack虛擬機(jī)或AWS虛擬機(jī)里面,metadata服務(wù)就是通過(guò)169.254提供的。本機(jī)沒(méi)有這個(gè)路由,到網(wǎng)關(guān)上對(duì)地址做一層NAT,本機(jī)的NAT就會(huì)訪問(wèn)到配置的Link-Local映射,繼而訪問(wèn)到內(nèi)部的服務(wù)。
在沒(méi)有增強(qiáng)的前提下,實(shí)測(cè)Neutron的OVS VXLAN的性能(只做MTU的優(yōu)化),最多達(dá)到兩個(gè)千兆的性能。而vRouter在不做任何優(yōu)化的前提下,能達(dá)到七、八千兆的性能。當(dāng)然也可以利用DPDK、Smart NIC來(lái)做優(yōu)化,或者利用SR-IOV的透?jìng)鞴δ堋?/p>
再來(lái)看看Tungsten Fabric的Packet交互。無(wú)論是同網(wǎng)段還是不同網(wǎng)段,虛擬機(jī)之間的交互,都是在vRouter層面轉(zhuǎn)發(fā)的,不會(huì)經(jīng)過(guò)一個(gè)集中式的gateway。所以在虛擬機(jī)之間的數(shù)據(jù)交互層面,是沒(méi)有單點(diǎn)的。
另外一個(gè)比較重要的場(chǎng)景是SNAT。在OpenStack里面,如果虛擬機(jī)接了一個(gè)vRouter,可以通過(guò)vRouter的SNAT功能去訪問(wèn)external的網(wǎng)段。Tungsten Fabric本身其實(shí)不提供SNAT,但也實(shí)現(xiàn)了SNAT功能,通過(guò)NS router(跑在計(jì)算節(jié)點(diǎn)的一個(gè)IP tables)做一個(gè)SNAT的轉(zhuǎn)發(fā),如果虛擬機(jī)要訪問(wèn)一個(gè)非本網(wǎng)關(guān)的網(wǎng)絡(luò),先到gateway,轉(zhuǎn)發(fā)后,再通過(guò)vRouter連接external的網(wǎng)絡(luò)。這里NS router的創(chuàng)建,需要OpenStack nova的scheduler來(lái)配合。
對(duì)于每一個(gè)網(wǎng)絡(luò),都會(huì)有一個(gè)router去做轉(zhuǎn)發(fā),如果量太大,瓶頸可能就在NS router這里,但不會(huì)影響其它的網(wǎng)絡(luò)。
只要不在云內(nèi),都可以叫外網(wǎng),要出外網(wǎng)有兩種方式:第一種是Floating IP,在vRouter做了一個(gè)NAT,把NAT后的IP通過(guò)MPLS over GRE的隧道,發(fā)布到Cloud Gateway的某個(gè)VRF里面,和外網(wǎng)通信。
第二種外部互聯(lián)的場(chǎng)景,假如要提供一個(gè)云服務(wù),可以針對(duì)不同的運(yùn)營(yíng)商做不同的flouting IP,如果做L3 VPN或L2 VPN的專線接入服務(wù),可以通過(guò)cloud gateway接入到不同的MPLS網(wǎng)絡(luò),再把虛擬網(wǎng)絡(luò)路由到相應(yīng)的VRF,整個(gè)就都連通了。這也是Tungsten Fabric強(qiáng)大的地方,MPLS VPN是和傳統(tǒng)的網(wǎng)絡(luò)天然互聯(lián)互通的。
跨集群的互聯(lián),或者叫多云互聯(lián),主要有兩種模式。
第一種是基于控制器之間的互聯(lián),把VPN、網(wǎng)絡(luò)和接口的信息,通過(guò)控制器之間建立EBGP連接來(lái)傳輸,這種方案叫Federation。
兩邊的vRouter只要三層可達(dá)就可以,比如一邊的B1要訪問(wèn)另一邊的B3,兩邊是不同的控制器和VPN,MPLS VPN有個(gè)route target,一邊export一邊import,路由表看到另一邊的路由,進(jìn)行路由信息交互,從而建立二層或者三層連接。Federation的方案是在控制器層面實(shí)現(xiàn)的,比較適合于同一個(gè)地域,同一個(gè)數(shù)據(jù)中心,有比較近的連接的情況。
第二種模式是通過(guò)cloud gateway之間的互聯(lián),把網(wǎng)絡(luò)的不同VRF,在cloud gateway之間建立EBGP鄰居,手動(dòng)配置去import或export不同的RT,實(shí)現(xiàn)跨云的連接。需要注意的是,兩邊是不同的集群,IP地址管理不一樣的,分配地址的時(shí)候,要避免IP地址的重疊。
最后,和Neutron OVS進(jìn)行對(duì)標(biāo)的話,Tungsten Fabric可以說(shuō)是完勝的。
基礎(chǔ)網(wǎng)絡(luò)方面,Tungsten Fabric可以擴(kuò)展,Neutron OVS目前只能用二層網(wǎng)絡(luò),無(wú)論集中式還是分布式,floating IP下沉到計(jì)算節(jié)點(diǎn)這一層,目前的組件里都沒(méi)有成熟的BGP方案,能夠把floating IP發(fā)布到邊界網(wǎng)關(guān),OVS DVR和邊界網(wǎng)關(guān)只能通過(guò)二層連接。
對(duì)比架構(gòu)方面,Tungsten Fabric是可擴(kuò)展的,3個(gè)節(jié)點(diǎn)性能不夠,可以擴(kuò)展到5個(gè)節(jié)點(diǎn)。Neutron OVS雖然是一個(gè)高可用架構(gòu),通過(guò)MySQL集群實(shí)現(xiàn)數(shù)據(jù)庫(kù)高可用,通過(guò)K8s實(shí)現(xiàn)API高可用,但計(jì)算邏輯不是分布式的,嚴(yán)重依賴RabbitMQ。如果使用DVR模式,每個(gè)計(jì)算節(jié)點(diǎn)要部署四個(gè)agent,帶來(lái)更多的topic,對(duì)RabbitMQ的性能是很大的挑戰(zhàn),只要出現(xiàn)一個(gè)RabbitMQ宕機(jī)或網(wǎng)絡(luò)抖動(dòng),會(huì)馬上執(zhí)行集群恢復(fù)機(jī)制,導(dǎo)致RabbitMQ很快死掉。
另外,在轉(zhuǎn)發(fā)平面上,Open vSwitch的性能沒(méi)有vRouter好;Tungsten Fabric的網(wǎng)絡(luò)功能更豐富,而Neutron的Octavia等原生LBaaS組件也有待成熟;多云互聯(lián)方面Tungsten Fabric基于MPLS VPN;和網(wǎng)絡(luò)設(shè)備的交互方面,Neutron只有ironic的networking generic switc driver,Tungsten Fabric支持BGP、NETCONF、EVPN-VXLAN等,基于標(biāo)準(zhǔn)的協(xié)議,涵蓋了瞻博網(wǎng)絡(luò)、思科、華為、銳捷等廠商的設(shè)備。
今天就先分享到這里。謝謝大家!
本次演講及TF中文社區(qū)“2020第一次Meetup”活動(dòng)資料,請(qǐng)?jiān)?ldquo;TF中文社區(qū)”公眾號(hào)后臺(tái)點(diǎn)擊“會(huì)議活動(dòng)-Meetup”領(lǐng)取。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!