本發明涉及網絡技術領域,特別是涉及一種基于openvswitch的流量鏡像方法。
背景技術:
目前,以虛擬化技術為基礎的云計算的廣泛應用,提高了服務器CPU和網絡資源的利用率,但是對于虛擬機的流量的監控以及網絡故障的診斷也提出了新的要求。浪潮云海OS·服務器虛擬化系統InCloud Sphere是面向IT云化設計和開發的虛擬化平臺,具備領先的安全性和穩定性,是云數據中心的虛擬化基石,但是目前還無法針對InCloud Sphere系統實現流量鏡像,由于無法獲得流經虛擬交換機的流量的鏡像即流量鏡像,進而無法針對流量鏡像實現對流量的監控,并且當網絡出現故障時,無法完成網絡故障的分析。
技術實現要素:
本發明的目的是提供一種基于openvswitch的流量鏡像方法,以實現獲取虛擬機、虛擬交換機上行鏈路以及端口組的流量鏡像,有效監控網絡流量。
為解決上述技術問題,本發明提供一種基于openvswitch的流量鏡像方法,應用于虛擬化系統InCloud Sphere,包括:
虛擬交換機利用開發虛擬交換標準openvswitch將流經所述虛擬交換機的流量進行復制得到流量鏡像,將所述流量鏡像通過通用路由分裝GRE通道轉發至遠程主機;
遠程主機接收所述流量鏡像,對所述流量鏡像進行解析和存儲;
其中,所述流經所述虛擬交換機的流量包括來自虛擬機的流量、來自虛擬交換機上行鏈路的流量或者來自虛擬交換機端口組的流量。
優選的,所述虛擬交換機包括標準虛擬交換機或者分布式虛擬交換機。
優選的,所述虛擬機上有多個端口組,每個端口組包括若干個端口,每個端口上通過虛擬機網卡對應連接一個虛擬機。
優選的,所述遠程主機接收所述流量鏡像之后,還包括:
遠程主機對所述流量鏡像進行監控;
當出現網絡故障時,遠程主機依據所述流量鏡像分析網絡流量,對網絡故障進行分析。
優選的,所述方法還包括:
虛擬交換機將所述流量鏡像轉發至目的端口;
目的端口將所述流量鏡像傳輸至與所述目的端口相連的虛擬機;
與所述目的端口相連的虛擬機接收所述流量鏡像,對所述流量鏡像進行解析和存儲。
優選的,與所述目的端口相連的虛擬機接收所述流量鏡像之后,還包括:
與所述目的端口相連的虛擬機對所述流量鏡像進行監控;
當出現網絡故障時,與所述目的端口相連的虛擬機依據所述流量鏡像分析網絡流量,對網絡故障進行分析。
優選的,所述方法還包括:
所述虛擬交換機對所述流量鏡像進行命名。
優選的,所述虛擬交換機對所述流量鏡像進行命名,包括:
創建所述流量鏡像的名稱,判斷所述名稱與之前創建的流量鏡像的名稱是否重名,若是,刪除所述流量鏡像,若否,保留所述流量鏡像。
本發明所提供的一種基于openvswitch的流量鏡像方法,應用于虛擬化系統InCloud Sphere,虛擬交換機利用開發虛擬交換標準openvswitch將流經所述虛擬交換機的流量進行復制得到流量鏡像,將所述流量鏡像通過通用路由分裝GRE通道轉發至遠程主機;遠程主機接收所述流量鏡像,對所述流量鏡像進行解析和存儲;所述流經所述虛擬交換機的流量包括來自虛擬機的流量、來自虛擬交換機上行鏈路的流量或者來自虛擬交換機端口組的流量。可見,利用開發虛擬交換標準openvswitch的對流量鏡像的支持,來完成流量鏡像的實現,得到的流量鏡像就是網絡流量,且獲取和存儲流量鏡像,有效的完成了對虛擬機、虛擬交換機的上行鏈路以及端口組流量的監控,通過流量的鏡像來完成網絡流量監控,所以該方法實現獲取虛擬機、虛擬交換機上行鏈路以及端口組的流量鏡像,有效監控網絡流量。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明所提供的一種基于openvswitch的流量鏡像方法的流程圖;
圖2為標準虛擬交換機上流量鏡像的網絡拓撲示意圖;
圖3為分布式虛擬交換機上流量鏡像的網絡拓撲示意圖。
具體實施方式
本發明的核心是提供一種基于openvswitch的流量鏡像方法,以實現獲取虛擬機、虛擬交換機上行鏈路以及端口組的流量鏡像,有效監控網絡流量。
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
請參考圖1,圖1為本發明所提供的一種基于openvswitch的流量鏡像方法的流程圖,該方法應用于虛擬化系統InCloud Sphere,該方法包括:
S11:虛擬交換機利用開發虛擬交換標準openvswitch將流經虛擬交換機的流量進行復制得到流量鏡像,將流量鏡像通過通用路由分裝GRE通道轉發至遠程主機;
S12:遠程主機接收流量鏡像,對流量鏡像進行解析和存儲;
其中,流經虛擬交換機的流量包括來自虛擬機的流量、來自虛擬交換機上行鏈路的流量或者來自虛擬交換機端口組的流量。
可見,利用開發虛擬交換標準openvswitch的對流量鏡像的支持,來完成流量鏡像的實現,得到的流量鏡像就是網絡流量,且獲取和存儲流量鏡像,有效的完成了對虛擬機、虛擬交換機的上行鏈路以及端口組流量的監控,通過流量的鏡像來完成網絡流量監控,所以該方法實現獲取虛擬機、虛擬交換機上行鏈路以及端口組的流量鏡像,有效監控網絡流量。
基于上述方法,具體的,虛擬交換機包括標準虛擬交換機或者分布式虛擬交換機。更詳細的,虛擬交換機為openvswitch虛擬交換機。
其中,虛擬交換機上有多個端口組,每個端口組包括若干個端口,每個端口上通過虛擬機網卡對應連接一個虛擬機。即虛擬交換機上有多個端口,每個端口連接有一個虛擬機。
進一步的,遠程主機接收流量鏡像之后,遠程主機對流量鏡像進行監控;當出現網絡故障時,遠程主機依據流量鏡像分析網絡流量,對網絡故障進行分析。
進一步的,所述方法還包括:
S21:虛擬交換機將流量鏡像轉發至目的端口;
其中,目的端口位于虛擬交換機上,是虛擬交換機上多個端口中的一個。
S22:目的端口將流量鏡像傳輸至與目的端口相連的虛擬機;
S23:與目的端口相連的虛擬機接收流量鏡像,對流量鏡像進行解析和存儲。
具體的,與目的端口相連的虛擬機接收流量鏡像之后,與目的端口相連的虛擬機對流量鏡像進行監控;當出現網絡故障時,與目的端口相連的虛擬機依據流量鏡像分析網絡流量,對網絡故障進行分析。
虛擬交換機將流量鏡像轉發給虛擬交換機上的目的端口,目的端口將流量鏡像傳輸給與目的端口相連的虛擬機。對于目的端口,流量鏡像要轉發到哪個虛擬機上,那這個要獲得轉發流量的虛擬機與虛擬交換機相連的端口就是目的端口,端口位于虛擬交換機上。目的端口可以是預先設定的,目的端口對應的虛擬機為要獲取流量鏡像的虛擬機,哪個虛擬機要得到流量鏡像,就將這個虛擬機對應的端口設置為目的端口。當然也可以隨機選擇虛擬機,將流量鏡像轉發至任意一個端口,轉發到這端口對應的虛擬機。流經虛擬交換機的流量為來自虛擬機的流量時,這個提供流量來源的虛擬機和與目的端口連接的虛擬機是兩個不同的虛擬機,即虛擬交換機上獲取流量的端口和轉發流量鏡像的端口是不同的兩個端口。
流經虛擬交換機的流量包括來自虛擬機的流量、來自虛擬交換機上行鏈路的流量或者來自虛擬交換機端口組的流量。虛擬交換機是將來自一個虛擬機、虛擬交換機上行鏈路或者端口組的流量進行鏡像后,將流量鏡像通過轉發給另一個虛擬機,由另一個虛擬機接收流量鏡像。
進一步的,上述方法還包括以下步驟:
S31:虛擬交換機對所述流量鏡像進行命名。
其中,步驟S31的過程具體為:創建流量鏡像的名稱,判斷所述名稱與之前創建的流量鏡像的名稱是否重名,若是,刪除所述流量鏡像,若否,保留所述流量鏡像。即若在此主機上存在相同名稱的鏡像,則鏡像創建不成功,如果不存在,那么創建鏡像成功。
該方法還能通過鏡像虛擬機/上行鏈路或者端口組的流量至其他虛擬機或者遠程的物理主機,來進行網絡監控,并且在網絡出現故障的時候,通過網絡流量分析,來進行網絡故障的定位。
具體的,該方法用于虛擬化系統Incloud Sphere,Incloud Sphere負責完成底層物理資源的虛擬融合、按需分配與高效管理,可以顯著提高資源交付的敏捷性和靈活性,提升資源的使用效率,為上層業務提供不間斷地資源保障與可伸縮的資源供給。
虛擬交換機為openvswitch虛擬交換機,含有openvswitch模塊,能夠鏡像來自虛擬機和端口組的流量至其他虛擬機,以對網絡故障進行分析或者提供對網絡流量進行監控。虛擬交換機與物理交換機之間通過物理網卡所連接,物理網卡綁定到虛擬交換機上所對應的端口。要鏡像虛擬機虛擬網卡上的流量時,此虛擬網卡連接在虛擬交換機上所對應的端口,或者虛擬交換機所關聯的物理網卡所對應的上行鏈路端口。即要鏡像虛擬機虛擬網卡上的流量時,流量鏡像至某一虛擬機的虛擬網卡上,此虛擬網卡連接在虛擬交換機上所對應的端口。
虛擬交換機上有多個端口組,每個端口組包含若干個端口。端口組分為標準端口組和分布式端口組,可以指定端口的vlan以及帶寬限制等策略。鏡像端口組的流量時,按照端口組所屬的vlan來確定要鏡像具體哪個端口組的流量。
本方法可以鏡像來自虛擬機、上行鏈路和端口組的流量,可將流量鏡像至虛擬機或者配有ip的遠程目標主機,還通過在創建鏡像時進行同名鏡像的邏輯判斷來解決了openvswitch對于同名鏡像創建無法刪除的問題。具體的,可以鏡像流量至目標端口,也可以鏡像流量至遠程主機。
其中,鏡像流量至遠程物理主機時,將來自虛擬機、虛擬交換機上行鏈路或者端口組的流量通過創建的GRE隧道來完成流量至遠程主機的鏡像,在遠程主機上完成對流量的存儲和監控。
其中,鏡像流量至目標端口時,虛擬機連接在標準虛擬交換機或者分布式虛擬交換機上,通過鏡像虛擬交換機上端口的流量來實現對虛擬機、虛擬交換機上行鏈路以及端口組流量的鏡像,針對虛擬交換機端口的流量鏡像是通過將流經端口的流量進行復制,轉發給虛擬交換機上的其他端口,此端口稱為目的端口,并在與目的端口連接的虛擬機上進行流量的解析和存儲。針對虛擬機和上行鏈路的流量鏡像包括進入和流出虛擬機和上行鏈路的流量。針對端口組流量的鏡像是通過對vlan內的流量的鏡像來實現的,一個端口組對應一個vlan,將端口組內的流量復制至目的端口,并由連接在目的端口上的虛擬機來對流量進行解析和存儲。
另外,基于openvswitch的流量鏡像的實現支持多個流量鏡像的創建,而當創建的鏡像名稱重名時,鏡像將無法刪除,因此本發明在進行創建鏡像時,首先進行鏡像名稱是否重名的邏輯判斷,如果創建的流量鏡像與之前創建的流量鏡像重名,那么鏡像將不被創建。可以將鏡像創建的類型分為四類,類型一在標準虛擬交換機上鏡像虛擬機或者上行鏈路的流量至其他虛擬機/遠程主機;類型二:在標準虛擬交換機上鏡像端口組的流量至其他虛擬機/遠程主機;類型三:在分布式虛擬交換機上鏡像虛擬機或者上行鏈路的流量至其他虛擬機/遠程主機;類型四:在分布式虛擬交換機上鏡像端口組的流量至其他虛擬機/遠程主機。
本發明利用openvswitch的對流量鏡像的支持,來完成流量鏡像的實現,有效的完成了對虛擬機、虛擬交換機的上行鏈路以及端口組流量的監控,并可通過流量鏡像來完成對網絡故障的分析。
圖2提供了標準虛擬交換機Standardvswitch上流量鏡像的網絡拓撲示意圖,在主機Server上新建一個標準交換機Standardvswitch,圖中虛擬機Vmi通過虛擬網卡連接在標準交換機上,對應在標準交換機上的端口假設為Vmi-port,端口組PortGroup-0的vlan為0,端口組PortGroup-20的vlan為20,端口組PortGroup-30的vlan為30,端口組PortGroup-40的vlan為40,物理網卡eth0添加到標準交換機上,對應的端口為eth0,此端口作為標準交換機的上行鏈路口,在標準交換機上分別進行鏡像的實現過程如下:
(1)鏡像虛擬機Vm1、Vm2的出端口流量以及Vm5、上行鏈路的出入端口流量至虛擬機Vm6,基于openvswitch的代碼實現如下:
ovs-vsctl----id=@Vm1-port get port Vm1-port----id=@Vm2-port get port Vm2-port----id=@Vm5-port get port Vm5-port----id=@Vm6-port get port Vm6-port----id=@eth0get port eth0----id=@mirror0create mirror name=mirror0select-src-port=@Vm1-port,@Vm2-port,@Vm5-port,@eth0select-dst-port=@Vm5-port,@eth0output_port=@Vm6-port--set bridge Standardvswitch mirrors=@mirror0
(2)鏡像端口組PortGroup-20以及PortGroup-30的流量至虛擬機Vm8,基于openvswitch的代碼實現如下:
ovs-vsctl----id=@Vm8-port get port Vm8-port----id=@mirror1create mirror name=mirror1select-all=true select-vlan=20,30output-port=@Vm8-port--set bridge Standardvswitch mirrors=@mirror1
(3)鏡像端口組PortGroup-20以及PortGroup-30的流量至遠程的主機100.22.3.3,基于openvswitch的代碼實現如下:
ovs-vsctl add-port Standardvswitch greport--set interface greport type=gre options:remote_ip=100.22.3.3----id=@greport get port greport----id=@mirror2create mirror name=mirror2select-vlan=20,30select-all=true output-port=@greport--set bridge Standardvswitch mirrors=@mirror2
圖3提供了分布式虛擬交換機Distributedvswitch上流量鏡像的網絡拓撲示意圖,新建一個分布式交換機Distributedvswitch,并關聯主機ServerA和ServerB,關聯主機時,分布式交換機會在所關聯的主機上創建名為Distributedvswitch虛擬交換機,ServerA和ServerB的物理網卡eth0連接至分布式交換機上,由圖中可知在Vm-Ai為ServerA上的虛擬機,Vm-Bi為ServerB上的虛擬機,虛擬機連接到分布式交換機上對應的端口為Vm-Ai-port和Vm-Bi-port分布式端口組DistrubutedPortGroup-0、DistrubutedPortGroup-20、DistrubutedPortGroup-30的vlan分別為0、20、30,本發明在分布式虛擬交換機上所實現的鏡像只支持在同一主機下進行,所以在分布式虛擬交換機上進行鏡像的創建時要先選擇主機,在分布式虛擬交換機上分別進行鏡像的實現過程如下:
(1)鏡像主機ServerA上的虛擬機Vm-A1、Vm-A2以及上行鏈路的出入端口流量至虛擬機Vm-A5,基于openvswitch的代碼實現如下:
ovs-vsctl----id=@Vm-A1-port get port Vm-A1-port----id=@Vm-A2-port get port Vm-A2-port----id=@Vm-A5-port get port Vm-A5-port----id=@eth0get port eth0----id=@mirror4create mirror name=mirror4select-src-port=@Vm-A1-port,@Vm-A2-port,@eth0select-dst-port=@Vm-A1-port,@Vm-A2-port,@eth0output_port=@Vm-A5-port--set bridge Distributedvswitch mirrors=@mirror4
(2)鏡像主機ServerB上的端口組DistrubutedPortGroup-20以及DistrubutedPortGroup-30的流量至主機B上的虛擬機Vm-B3,基于openvswitch的代碼實現如下:
ovs-vsctl----id=@Vm-B3-port get port Vm-B3-port----id=@mirror4create mirror name=mirror4select-all=true select-vlan=20,30output-port=@Vm-B3-port--set bridge Standardvswitch mirrors=@mirror4
(3)鏡像主機ServerB上的端口組PortGroup-20以及PortGroup-30的流量至遠程的主機100.22.3.5,基于openvswitch的代碼實現如下:
ovs-vsctl add-port Distributedvswitch greport1--set interface greport1type=gre options:remote_ip=100.22.3.5----id=@greport1get port greport1----id=@mirror5create mirror name=mirror5select-vlan=20,30select-all=true output-port=@greport1--set bridge Distributedvswitch mirrors=@mirror5
在鏡像端口組的流量至遠程主機時,如果流量要從其中鏡像的端口組上出去,那么此端口組將不能作為鏡像源,否則會造成環路,如在圖2和圖3的網絡拓撲中,鏡像流量會從端口組vlan為0的端口組上出去,所以此端口組將不能被鏡像。
以上本發明所提供的一種基于openvswitch的流量鏡像方法,應用于虛擬化系統InCloud Sphere,虛擬交換機利用開發虛擬交換標準openvswitch將流經虛擬交換機的流量進行復制得到流量鏡像,將流量鏡像通過通用路由分裝GRE通道轉發至遠程主機;遠程主機接收流量鏡像,對流量鏡像進行解析和存儲;流經虛擬交換機的流量包括來自虛擬機的流量、來自虛擬交換機上行鏈路的流量或者來自虛擬交換機端口組的流量;并且,虛擬交換機將流量鏡像轉發至目的端口;目的端口將流量鏡像傳輸至與目的端口相連的虛擬機;與目的端口相連的虛擬機接收流量鏡像,對流量鏡像進行解析和存儲。可見,利用開發虛擬交換標準openvswitch的對流量鏡像的支持,來完成流量鏡像的實現,得到的流量鏡像就是網絡流量,且獲取和存儲流量鏡像,有效的完成了對虛擬機、虛擬交換機的上行鏈路以及端口組流量的監控,通過流量的鏡像來完成網絡流量監控,所以該方法實現獲取虛擬機、虛擬交換機上行鏈路以及端口組的流量鏡像,有效監控網絡流量。
以上對本發明所提供的一種基于openvswitch的流量鏡像方法,進行了詳細介紹。本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護范圍內。