04 KVM虛擬化網(wǎng)絡(luò)概述4.1 Linux Bridge4.2 Open vSwitch
04 KVM虛擬化網(wǎng)絡(luò)概述
為了使虛擬機(jī)可以與外部進(jìn)行網(wǎng)絡(luò)通信,需要為虛擬機(jī)配置網(wǎng)絡(luò)環(huán)境。KVM虛擬化支持Linux Bridge、Open vSwitch網(wǎng)橋等多種類型的網(wǎng)橋。如圖1所示,數(shù)據(jù)傳輸路徑為“虛擬機(jī) -> 虛擬網(wǎng)卡設(shè)備 -> Linux Bridge或Open vSwitch網(wǎng)橋 -> 物理網(wǎng)卡”。創(chuàng)建網(wǎng)橋,除了為虛擬機(jī)配置虛擬網(wǎng)卡設(shè)備外,為主機(jī)創(chuàng)建網(wǎng)橋是連接虛擬化網(wǎng)絡(luò)的關(guān)鍵。
圖 1 虛擬網(wǎng)絡(luò)結(jié)構(gòu)圖
[圖片上傳失敗...(image-7ae0e8-1682752013373)]
虛擬交換機(jī),就是使用軟件實(shí)現(xiàn)的交換機(jī),具備硬件交換機(jī)的功能,但與硬件交換機(jī)相比減少了采購(gòu)成本,且軟件層面更具靈活性。虛擬交換機(jī)主要使用在云環(huán)境中,在虛擬機(jī)之間、虛擬機(jī)和外部網(wǎng)絡(luò)之間實(shí)現(xiàn)網(wǎng)絡(luò)的連通。
常用的虛擬交換機(jī)有多種,這里以主流的兩種作為范例。
4.1 Linux Bridge
Linux Bridge簡(jiǎn)稱網(wǎng)橋,工作在數(shù)據(jù)鏈路層,將多個(gè)局域網(wǎng)(LAN)連起來(lái),根據(jù)MAC地址(物理地址)來(lái)轉(zhuǎn)發(fā)幀,與二層硬件交換機(jī)功能相似,通常用于聯(lián)接數(shù)量不多、同一類型的網(wǎng)段。
Linux Bridge使用brctl命令創(chuàng)建/刪除網(wǎng)橋接口,使用ip或者ifconfig命令設(shè)置接口的MAC信息。Bridge設(shè)備網(wǎng)絡(luò)接口可以和Linux上其他設(shè)備網(wǎng)絡(luò)接口連接,從設(shè)備被虛擬化為端口port。Port的IP及MAC都不可用,且被設(shè)置為接受任何包,最終由Bridge設(shè)備來(lái)決定數(shù)據(jù)包的去向——接收到本機(jī)、轉(zhuǎn)發(fā)、丟棄、廣播。
Linux Bridge在L2數(shù)據(jù)鏈路層,通過(guò)學(xué)習(xí)和緩存在數(shù)據(jù)包中的源MAC地址以及物理層的端口,實(shí)現(xiàn)工作機(jī)制:
收到新數(shù)據(jù)包時(shí),記錄源MAC地址和輸入端口;
根據(jù)數(shù)據(jù)包中目的MAC地址查找本地緩存,查找到對(duì)應(yīng)的MAC地址記錄;
若發(fā)現(xiàn)記錄不在本地網(wǎng)絡(luò),則直接丟棄數(shù)據(jù)包;
若發(fā)現(xiàn)記錄存在對(duì)應(yīng)的端口,則將數(shù)據(jù)包直接從該端口轉(zhuǎn)發(fā)出去;
如果本地緩存中不存在任何記錄,則在本網(wǎng)段中進(jìn)行廣播。
4.2 Open vSwitch
Open vSwitch(OVS)是一種具有產(chǎn)品級(jí)質(zhì)量的多層虛擬交換機(jī),利用軟件的方式實(shí)現(xiàn)了硬件交換機(jī)的功能。跟硬件交換機(jī)相比,OVS具備眾多優(yōu)點(diǎn):
- 配置靈活
一臺(tái)普通的服務(wù)器可以配置出多臺(tái)虛擬交換機(jī)且端口數(shù)目可以靈活選擇,也可以通過(guò)可編程擴(kuò)展來(lái)實(shí)現(xiàn)大規(guī)模網(wǎng)絡(luò)自動(dòng)化配置、管理和維護(hù)。同時(shí),OVS支持現(xiàn)有標(biāo)準(zhǔn)管理接口和協(xié)議,如netFlow,sFlow,SPAN,RSPAN,LACP等。
- 成本更低
硬件交換機(jī)以昂貴成本才能達(dá)到的性能用OVS即可達(dá)到。
OVS是運(yùn)行在虛擬化平臺(tái)上的虛擬交換機(jī),為本臺(tái)物理機(jī)上的VM提供二層網(wǎng)絡(luò)接入,跟云計(jì)算中的物理交換機(jī)一樣工作在L2層。
OVS主要包括用戶態(tài)的轉(zhuǎn)發(fā)邏輯處理線程ovs-vswitchd、數(shù)據(jù)庫(kù)配置線程ovsdb-server和內(nèi)核態(tài)的datapath模塊。ovs-vswitchd線程是switch功能的實(shí)現(xiàn)核心,同時(shí)支持openflow,包含多個(gè)配置工具如ovs-dpctl等。ovsdb-server線程用于處理switch和flow table的配置。Datapath模塊根據(jù)flowtable規(guī)則,處理數(shù)據(jù)包轉(zhuǎn)發(fā)的任務(wù)。
[圖片上傳失敗...(image-fc1a77-1682752013373)]
OVS內(nèi)部框架圖(圖片來(lái)源:《An overview of Openvswitch implementation》)
與Linux Bridge相比,Open vSwitch具有多種特性:
- 網(wǎng)絡(luò)隔離
OVS原生支持VLAN功能本身就可以支持二層網(wǎng)絡(luò)隔離,同時(shí)能夠像配置物理交換機(jī)一樣把同一臺(tái)host上的眾多VM分配到不同VLAN中去。
- QoS(服務(wù)質(zhì)量)配置
可以按需配置每臺(tái)VM不同的網(wǎng)絡(luò)速率和網(wǎng)絡(luò)帶寬,以保證核心業(yè)務(wù)VM的網(wǎng)絡(luò)性能,通過(guò)OVS命令配置接口的QoS,可以實(shí)現(xiàn)物理交換機(jī)的traffic queuing和traffic shaping功能。
- 流量監(jiān)控
支持配置Netflow、sFlow的功能配置,實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)控和分析。
- 端口鏡像
OVS可以配置各種span(SPAN, RSPAN, ERSPAN),把端口的數(shù)據(jù)包鏡像復(fù)制到指定端口,再通過(guò)tcpdump抓包分析。
- 其他功能
支持多種tunnel協(xié)議,如vxlan、gre等;支持openflow協(xié)議、ovn,具備SDN數(shù)據(jù)處理能力;支持dpdk,ebpf等高級(jí)功能,可以優(yōu)化數(shù)據(jù)處理能力。
如果對(duì)Linux Bridge和OVS作比較,會(huì)發(fā)現(xiàn)兩者之間優(yōu)劣對(duì)比顯而易見(jiàn)。Linux Bridge 作為內(nèi)核實(shí)現(xiàn)的原生橋接功能具有轉(zhuǎn)發(fā)邏輯簡(jiǎn)單、轉(zhuǎn)發(fā)性能強(qiáng)、功能穩(wěn)定和可靠等特點(diǎn),但擴(kuò)展性較一般;OVS是伴隨著虛擬化平臺(tái)一起成長(zhǎng)的虛擬交換機(jī),經(jīng)過(guò)不斷的優(yōu)化,在性能上和Linux Bridge相差不大, 但其強(qiáng)大的可配置性和可擴(kuò)展性便于使其得到更好的應(yīng)用。
?? 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!
?? 收藏,你的青睞是我努力的方向!
?? 評(píng)論,你的意見(jiàn)是我進(jìn)步的財(cái)富!
[圖片上傳失敗...(image-e90441-1682752013373)]