由于虛擬機的快速發(fā)展,更新?lián)Q代的速度也在加快速度。慢慢的虛擬機越來越多,規(guī)模越來越大??梢杂密妶F來形容。
云計算(嚴(yán)格說是IaaS)的核心訴求就是向用戶提供虛擬機。為了盡可能地提高CPU、內(nèi)存的利用率,一臺物理
服務(wù)器中往往支撐著數(shù)十臺甚至上百臺虛擬機。接入是虛擬機聯(lián)網(wǎng)的第一跳,接入做不好,什么大二層這些說法都是白扯。于是,虛擬機的接入成為了云網(wǎng)絡(luò)變革中的頭等大事。
1)VEB
傳統(tǒng)接入網(wǎng)絡(luò)中,一臺
主機通過一塊物理網(wǎng)卡加上一條網(wǎng)線連接到接入交換機的一個物理端口上(不考慮網(wǎng)卡綁定)??墒敲鎸嫶蟮奶摂M機軍團,傳統(tǒng)的接入網(wǎng)絡(luò)可傻了眼。物理服務(wù)器上的那幾塊網(wǎng)卡可哪夠這些虛擬機分啊,另外網(wǎng)絡(luò)的布線,交換機的端口密度也都難以滿足大規(guī)模的虛擬機接入。
硬件的資源矛盾難以調(diào)和,那么解決這一問題自然而然的思路就是將接入網(wǎng)絡(luò)的位置下移,延伸到物理服務(wù)器中。這種思路自虛擬化誕生的那一天起就有了,做法就是在HyperVisor中加一個軟交換模塊VEB(Virtual Ethernet Bridge),通過虛擬端口關(guān)聯(lián)虛擬機,用于虛擬機的接入和本地交換,通過一塊物理網(wǎng)卡上聯(lián)物理交換機(不考慮網(wǎng)卡綁定),如果通信目標(biāo)不在本地就交給上游的物理交換機。上游的交換機也全然意識不到它是個軟件交換機,一切都跟傳統(tǒng)以太網(wǎng)沒什么兩樣。
VEB在技術(shù)上沒什么難點,商用如VMware的VDS和Cisco的Nexus 1000V,開源如Linux Bridge和Open vSwitch,產(chǎn)品已經(jīng)十分成熟。如果單純從功能實現(xiàn)的角度來看,軟件交換機的功能可以比物理交換機更為強大,升級起來也靈活的多,比如VxLAN這種延伸到服務(wù)器中的端到端隧道就能夠很好地與VEB配合著做接入??墒怯捎谲浖粨Q機畢竟是通過CPU和通用內(nèi)存來做交換的邏輯,其性能自然與基于ASIC的物理交換機有著巨大的差距。當(dāng)然,這個差距可以通過多分配CPU和內(nèi)存來填補,但是這就意味著服務(wù)器中能夠給虛擬機分配的資源變少了,屬于典型的丟了西瓜,撿了芝麻的做法。
解決這一問題,可以將服務(wù)器網(wǎng)卡進行改造,以具備接入交換機的功能,不過這種思路實現(xiàn)起來難度極大——把ASIC芯片、TCAM和總線資源都要集成在小小的網(wǎng)卡中,想一想都覺得頭疼。因此,這種思路并沒有得到廣泛的研究與應(yīng)用。不過,其衍生技術(shù)——虛擬化網(wǎng)卡,卻得到了一定程度的發(fā)展,虛擬化網(wǎng)卡直接為虛擬機提供虛擬化的總線通道,而旁路調(diào)了VEB,模擬了傳統(tǒng)接入網(wǎng)絡(luò)中網(wǎng)線的角色,其代表技術(shù)為SR-IOV。
另外一種思路是VEB只保留接入端口和一些簡化的轉(zhuǎn)發(fā)功能,復(fù)雜的接入策略則轉(zhuǎn)移給上游物理交換機。除了能夠提升性能,這種思路還有另外一個非技術(shù)方面的驅(qū)動因素——網(wǎng)絡(luò)復(fù)雜的功能分離到了服務(wù)器外面,使得服務(wù)器團隊和網(wǎng)絡(luò)團隊的管理邊界變得十分明確,避免了很多不必要的麻煩事兒。其代表技術(shù)為Cisco陣營的VN-TAG和非Cisco陣營的VEPA。
2)VN-TAG
VN-TAG是Cisco的私有標(biāo)準(zhǔn),利用一個全新的標(biāo)簽實現(xiàn)了完整的數(shù)據(jù)中心接入方案,主要包括VN-Link技術(shù)和FEX技術(shù)。VN-Link部署在服務(wù)器的交換組件上,負(fù)責(zé)虛擬機的接入,而FEX部署在接入層的物理交換機上,負(fù)責(zé)虛擬機間的互通。兩者配合在一起實現(xiàn)了虛擬機的實時感知和分布式接入,接入配置和策略的集中式分發(fā)保證了虛擬機的無縫遷移。
老規(guī)矩,幀格式先行。VN-TAG將6個字節(jié)的新字段插入到VLAN的前面,這些字節(jié)只在VN-TAG設(shè)備中出現(xiàn),現(xiàn)有的協(xié)議(包括VLAN的使用)不會受到任何的影響。其中,DVIF_ID/SVIF_ID是目的/源虛擬機被分配的唯一標(biāo)識,各有12位,通過Port Profile的配置與虛擬機接入端口進行一對一的通道綁定,VN-TAG物理交換機將根據(jù)這個標(biāo)識來識別虛擬機,實現(xiàn)網(wǎng)絡(luò)接口虛擬化。其他的標(biāo)志位用于FEX系統(tǒng)中,D位標(biāo)識報文的走向,P位標(biāo)識報文是否需要復(fù)制,L位標(biāo)識源主機和目的主機是否連接在同一臺物理交換機上,R位作為保留。
通信流程概括如下:服務(wù)器中的交換組件不進行MAC尋址,它接受源虛擬機的流量,封裝好VN-TAG(標(biāo)記SVI_ID),然后直接交給上游的物理交換機,上游的交換機完成SVI_ID對源MAC地址、VLAN和入端口的學(xué)習(xí),根據(jù)目的MAC地址標(biāo)記DVI_ID,然后轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,目標(biāo)服務(wù)器根據(jù)DVI_ID進行通道轉(zhuǎn)發(fā),剝掉VN-TAG后轉(zhuǎn)發(fā)給目標(biāo)虛擬機。借用《騰云——
云計算和大數(shù)據(jù)時代網(wǎng)絡(luò)技術(shù)揭秘》中的一張圖來表達上述過程,同時對該書作者表示感謝。
圖中,Port Extender向下為VN-Link技術(shù),向上為FEX技術(shù)。VN-Link由支持VN-TAG的網(wǎng)卡實現(xiàn),如Cisco UCS刀片服務(wù)器中集成的Palo,該網(wǎng)卡只負(fù)責(zé)VN-TAG的封裝/解封裝,不做任何策略相關(guān)的工作。FEX技術(shù)由Cisco的N2K/N5K組合實現(xiàn),支持以級聯(lián)方式組網(wǎng),其中N5K負(fù)責(zé)尋址轉(zhuǎn)發(fā)和策略的制定,N2K則作為N5K的遠端板卡部署在ToR實現(xiàn)分布式接入,N5K通過VIC協(xié)議分發(fā)給N2K,實現(xiàn)分布式轉(zhuǎn)發(fā)。以作者目前的理解,VN-TAG體系將數(shù)據(jù)中心的接入網(wǎng)絡(luò)虛擬成了一個大的接入交換機,由VN-Link充當(dāng)網(wǎng)線,由N2K充當(dāng)分布式線卡,N5K充當(dāng)主控板,處于任何物理位置的虛擬機都好像連接在這個大的接入交換機上。高帶寬、無阻塞和低時延的優(yōu)良特性使得N2K/N5K間網(wǎng)絡(luò)連接能夠與單機內(nèi)總線相當(dāng),保證了分布式接入的性能。在N5K上可以基于虛擬機對應(yīng)的SVI_ID/DVI_ID制定ACL,QoS和流控等高級接入策略,支持網(wǎng)絡(luò)策略隨虛擬機任意的漂移。
VN-TAG是Cisco的野心之作,其產(chǎn)品線已然非常完善,其目標(biāo)直指統(tǒng)一整個數(shù)據(jù)中心的接入網(wǎng)絡(luò)。不過由于VN-TAG是Cisco私有標(biāo)準(zhǔn),而且新的字段必然要新的芯片來支持,所以其它的廠家沒有一個能玩得轉(zhuǎn)。雖然Cisco貴為數(shù)通領(lǐng)域的江湖老大,但是估計也不愿意做孤家寡人,于是按照著VN-TAG的思路,Cisco提了802.1Br的開放標(biāo)準(zhǔn)(其前身為802.1Qbh)給IEEE,平復(fù)了一眾小弟們的情緒。
當(dāng)然了,也不是所有人都對老大言聽計從。作為網(wǎng)絡(luò)界的帶頭大哥,Cisco的想法自然是把網(wǎng)絡(luò)延伸到服務(wù)器當(dāng)中去,于是搞了塊新的芯片支持VN-TAG,“順便”集成在了UCS刀片服務(wù)器中,想用VN-TAG的話,OK,先買我的刀片。HP作為服務(wù)器界的龍頭,對Cisco這種行為不爽的很,靠著網(wǎng)絡(luò)虛擬化就想用UCS做掉我的服務(wù)器?作為回應(yīng),HP振臂一呼扯開VEPA的大旗,和Cisco叫上了板。
3)VEPA
VEPA(Virtual Ethernet Port Aggregator,802.1Qbg)是HP提出的虛擬機接入方案,設(shè)計目標(biāo)就是盡量避免服務(wù)器上的大幅度改動。前面提到,無論是VN-TAG還是VEPA,都是為了解決VEB消耗大量服務(wù)器資源的問題。HP沒辦法搞定芯片來支持新字段,那么做不了加法就只好在原有的基礎(chǔ)上動腦筋。VEPA對以太網(wǎng)幀格式?jīng)]有任何的修改,而是通過對以太網(wǎng)轉(zhuǎn)發(fā)規(guī)則的巧妙修改,同樣卸載了服務(wù)器的負(fù)擔(dān)。
802.1Qbg中,服務(wù)器中的VEPA組件間與虛擬機間運行VDP(Virtual Station Interface Discovery Protocol)協(xié)議,以識別虛擬機接入位置,同時支持對虛擬機遷移的感知。標(biāo)準(zhǔn)VEPA中,服務(wù)器的VEPA組件在虛擬機端口接收到的流量,不做任何處理,一律扔給上游的VEPA物理交換機。上游交換機正常做自學(xué)習(xí),其改動之處在于VEPA修改了STP以允許入端口泛洪/轉(zhuǎn)發(fā),如果發(fā)現(xiàn)目的MAC地址在同一臺服務(wù)器中,就再交給該服務(wù)器的VEPA組件,VEPA組件對于從上游交換機收到的流量進行MAC尋址轉(zhuǎn)發(fā),完成虛擬機間的通信。這個過程如下圖所示,本地流量被強行繞彎通過上游交換機,俗稱harpin,十分粗暴卻簡單有效。
VEPA的優(yōu)勢在于不需要對芯片做改動,交換機和服務(wù)器網(wǎng)卡的軟件和驅(qū)動升級后就能支持VEPA了。但是,簡單也往往意味著功能較弱。由于不帶任何新的標(biāo)簽,所有流量都混在一起,上游VEPA交換機上的控制策略就很難做了。
在數(shù)通網(wǎng)絡(luò)里,想要標(biāo)識流量,肯定是要使用特定的字段來做的。HP沒法另起爐灶,只能用已有的協(xié)議字段。VLAN是不行的,因為往往要用它來區(qū)分業(yè)務(wù),于是HP看中了QinQ(802.1ad),在標(biāo)準(zhǔn)VEPA的基礎(chǔ)上使用QinQ的S-TAG來標(biāo)識虛擬機流量,形成了增強型VEPA(802.1Qbg Multi- Channel)。有人可能要問了,虛擬機MAC地址不是唯一的嗎,用來做策略不行嗎?行,但是很麻煩,而且做不了分組策略。
在Multi- Channel中,一些S-TAG的流量可以在本地直接進行轉(zhuǎn)發(fā),而不用hairpin。另外對于廣播/組播流量的處理,VEPA也做了一定的完善,允許在合理的位置進行復(fù)制,而VN-TAG只允許在N2K上進行復(fù)制。這兩點也算是一個對標(biāo)準(zhǔn)VEPA的完善吧。
拋開一些細(xì)節(jié)不談,Multi- Channel與VN-TAG沒有本質(zhì)上的區(qū)別,服務(wù)器為上行流量打標(biāo)記,上游交換機做尋址、定策略,下行流量服務(wù)器上做通道轉(zhuǎn)發(fā)。相比于VN-TAG使用FEX作為分布式接入技術(shù),Multi- Channel因為用了QinQ,使得其接入的規(guī)模受到了一定的限制——S-TAG無法在傳統(tǒng)的以太網(wǎng)設(shè)備上透傳,只能在第一跳VEPA交換機終結(jié)。
不過這并不影響VEPA在虛擬機接入的市場上與VN-TAG分庭抗禮,畢竟市場這么大,大家誰也不好一口吃掉誰。另外,OpenStack+SDN+VxLAN這幾年的興起也向虛擬機接入市場注入了新的勢力,不過隧道的封裝終歸也還是要OffLoad到物理交換機上的,服務(wù)器里的接入還得是VN-TAG和VEPA的二人轉(zhuǎn)。
這就是小編今天的分享。