采用軟件定義聯(lián)網中的虛擬機和虛擬化容器的本地服務鏈接的制作方法
【專利說明】
【背景技術】
[0001]訪問計算機網絡已變成現今計算機使用的無所不在的部分。無論是在企業(yè)環(huán)境中訪問局域網(LAN)來訪問共享網絡資源還是經由LAN或其他接入點來訪問互聯(lián)網,用戶似乎總是登錄到經由計算機網絡而訪問的至少一個服務。此外,基于云的服務的快速擴充導致計算機網絡的甚至進一步使用,并且預測這些服務變得越來越普遍。
[0002]聯(lián)網通過各種類型的設備而便利化,包括路由器、交換機、網橋、網關和接入點。大的網絡基礎設施典型地包括使用電信級網絡元件,包括由例如Cisco Systems、JuniperNetworksnAlcatel Lucent、IBM、和Hewlett-Packard等公司制造的交換機和路由器。這樣的電信交換機是非常復雜的,其以非常高的帶寬操作并且提供先進路由功能性以及支持不同的服務質量(QoS)水平。商業(yè)和家庭用戶最常使用例如局域網(LAN)等私有網絡。采用基于硬件和/或軟件的防火墻和類似物,這對于許多商業(yè)網絡也是常見的。
[0003]近年來,看到計算機系統(tǒng)的虛擬化快速發(fā)展,特別在服務器部署和數據中心中。根據常規(guī)方法,服務器直接在例如CPU、RAM、存儲設備(例如,硬盤)、網絡控制器、I/O端口等物理硬件資源上運行操作系統(tǒng)的單個實例。根據使用虛擬機(VM)的一個虛擬化方法,采用物理硬件資源來支持虛擬資源的對應實例,使得多個VM可在服務器的物理硬件資源上運行,其中每個虛擬機包括它自己的CPU分配、存儲器分配、存儲設備、網絡控制器、I/O端口等。相同或不同操作系統(tǒng)的多個實例然后在多個VM上運行。此外,通過使用虛擬機管理器(VMM)或“管理程序”,在服務器運行時可以動態(tài)分配虛擬資源,從而能夠增加、關閉VM實例或使其改作他用而不需要關閉服務器。這提供更大的服務器利用靈活性和服務器處理資源的更好使用,尤其是對于多核處理器核/或多處理器服務器。
[0004]根據另一個虛擬化方法,使用基于容器的0S虛擬化,其采用虛擬化“容器”而不使用VMM或管理程序。代替在相應VM上托管操作系統(tǒng)的獨立實例,基于容器的0S虛擬化跨多個容器共享單個0S內核,其對于每個容器具有系統(tǒng)和軟件庫的獨立實例。如與VM —樣,還存在分配給每個容器的虛擬資源。
[0005]過去幾年還看到軟件定義聯(lián)網(SDN)和網絡功能虛擬化(NFV)的部署的快速發(fā)展。根據SDN,對于將業(yè)務轉發(fā)到選擇的目的地的底層系統(tǒng)(數據平面)將做出關于將業(yè)務發(fā)送到哪里的決定的系統(tǒng)(控制平面)解耦。可采用SDN概念來使得網絡虛擬化便利化,從而使服務提供商能夠經由軟件應用和API (應用編程接口)來管理他們的網絡服務的各種方面。根據NFV,通過將網絡功能虛擬化為軟件應用,網絡服務提供商可以在網絡配置方面獲得靈活性,從而實現明顯的益處,包括可用帶寬的優(yōu)化、成本節(jié)省和更快的新服務上市時間。
[0006]“服務鏈接(service chaining)”通常在SDN的上下文中使用來描述穿越網絡、由在各種物理計算節(jié)點處實現的一系列網絡服務元件處理的分組的流。如本文使用的,術語“本地服務鏈接(LSC)”用于描述穿越網絡(其在計算節(jié)點內部)、由在VM或虛擬化容器中實現的一系列網絡服務元件處理的分組的流。根據常規(guī)方法,LCS采用虛擬交換機(VS)或等同機構的使用以在VM之間交換分組。該交換機制需要計算資源并且不利地影響系統(tǒng)吞吐量。該問題在通過LSC處理大量業(yè)務時加劇,因為每個分組的處理可牽涉經由一個或多個VS的多個數據傳輸。
【附圖說明】
[0007]前述方面和本發(fā)明的伴隨優(yōu)勢中的許多通過參考下列詳細描述在結合附圖(其中類似的標號指代貫穿各種視圖的類似部件,除非另外規(guī)定)來看時變得更好理解同樣也變得更容易被認識:
圖1是圖示架構的示意圖,該架構包括對于計算平臺的虛擬機,配置成通過使用LSC來執(zhí)行分組處理操作;
圖la是圖示圖1的計算平臺的增強版本的示意圖,據此,分組數據直接從網絡接口傳輸到虛擬網絡接口控制器(vNIC)中的接收(Rx)緩沖器(buffer);
圖lb是圖示對于計算平臺的架構的示意圖,包括配置成通過使用LSC來執(zhí)行分組處理操作的虛擬化容器;
圖2是圖示由在計算平臺上執(zhí)行的軟件執(zhí)行來使LSC實現便利化的操作和邏輯的流程圖;
圖3是圖示圖1的架構的共享存儲器區(qū)域中的Rx FIFO隊列的另外的細節(jié)的示意圖;圖4是圖示用于使用LSC ID來實現LSC操作的圖1的架構的流表中包含的第一組示范性數據的圖;
圖4a是圖示用于使用流ID來實現LSC操作的圖1的架構的流表中包含的第二組示范性數據的圖;
圖4b是圖示用于對在預定義網絡端口接收的所有分組實現預定義LSC的圖1的架構的流表中包含的第三組示范性數據的圖;
圖5是包括虛擬機(經由該虛擬機可實現本文公開的實施例的方面)的第一示范性主機平臺硬件和軟件架構的示意圖;
圖6是包括實現基于容器的虛擬化的容器(由此可實現本文公開的實施例的方面)的第二示范性主機平臺硬件和軟件架構的示意圖。
【具體實施方式】
[0008]在本文描述用于采用在軟件定義聯(lián)網中的虛擬機或虛擬化容器來實現本地服務鏈接的方法、軟件和裝置的實施例。在下列描述中,闡述許多具體細節(jié)來提供對本文公開和圖示的實施例的全面理解。然而,相關領域內技術人員將認識到本發(fā)明可在沒有這些具體細節(jié)中的一個或多個的情況下實踐,或用其他方法、部件、材料等實踐。在其他實例中,未詳細示出或描述眾所周知的結構、材料或操作以避免使本發(fā)明的方面難以理解。
[0009]為了清楚起見,本文的圖中的個體部件也可通過它們在圖中的標記來參考,而不是通過特定標號。另外,指代特定類型部件(如與特定部件相對)的標號可用后跟“(typ)”(意思是“典型的”)的標號來示出。將理解這些部件的配置將是可存在但為了簡單或清楚起見而未在圖中示出的相似部件或未用獨立標號標記的另外的相似部件的代表。相反,“ (typ) ”不解釋為意指部件、元件等典型地用于它的公開功能、實現、目的等。
[0010]如本文使用的,術語“虛擬組件”、“虛擬網絡組件”、“網絡組件”或簡單地“組件”可能互換地使用。另外,為了本文的目的(包括權利要求),配置成實現網絡功能虛擬化或與軟件定義聯(lián)網有關的任何基于軟件的組件可更一般地稱為“虛擬組件”,其中理解虛擬網絡組件包括配置成實現網絡功能虛擬化和/或與軟件定義聯(lián)網有關的操作的任何網絡組件或虛擬化實體。因此,下列描述中的術語虛擬組件也包括所有NFV組件。
[0011]根據本文描述的實施例的方面,分組吞吐量通過創(chuàng)建“直通”機制而加速,該“直通”機制使分組能夠在虛擬網絡組件與相似SDN部件之間傳輸而不使用虛擬交換機。這部分地經由使用“本地服務鏈接(LSC)”而便利化,該“本地服務鏈接(LSC)”在本文用于描述穿越網絡(其在計算節(jié)點內部)的分組的流,這些分組在該計算節(jié)點下由在多個虛擬機或虛擬化容器中實現的一系列網絡服務元件(例如,虛擬網絡組件)處理。
[0012]通過示例并且沒有限制地,圖1示出對于配置成通過使用LSC來執(zhí)行分組處理操作的計算節(jié)點(例如,計算平臺(例如服務器))的架構100。架構100包括計算平臺102,其耦合于網絡接口 104,該網絡接口 104可在計算平臺上集成(例如,作為網絡接口控制器(NIC))或用別的方式操作地耦合于計算平臺(例如,作為在PCIe (高速外圍部件互連)擴充插槽中安裝的PCIe卡)。計算平臺102包括主機操作系統(tǒng)(0S)106,其在配置成托管多個應用(在應用存儲器空間108中運行)(其被描繪為在主機0S 106之上)的0S存儲器107中運行。這包括虛擬交換機109和配置成托管外虛擬機112 (如由標記為VM1、VM2和VM N的虛擬機描繪)的管理程序110。軟件部件進一步包括SDN控制器114。
[0013]網絡接口 104包括標記為Portl、Port2…Porti^ 網絡端口 116,其中與財目同或不同。每個網絡端口 116包括接收(Rx)緩沖器118和傳送(Tx)緩沖器120。如在本文的圖中使用的,描繪的Rx和Tx緩沖器以及Rx和Tx隊列也可代表同定位的Rx和Tx端口 ;為了減少雜亂,Rx和Tx端口未獨立示出,但本領域內技術人員將認識到每個Rx和Tx端口將包括一個或多個Rx和Tx緩沖器和/或隊列。
[0014]—般,網絡接口可包括在Rx和Tx端口中實現的相對小的Rx和Tx緩沖器,并且然后包括可在網絡接口(其跨多個Rx和Tx端口被共享)上的輸入/輸出(10)存儲器中實現的較大Rx和Tx緩沖器。在圖示的示例中,10存儲器的至少一部分是存儲器映射10 (麗10)122,其由主機0S 106的OS存儲器107中的NIC驅動器124配置。麗10 122配置成支持ΜΜΙ0 122中的存儲器緩沖器與計算平臺102上的系統(tǒng)存儲器中的緩沖器之間的直接存儲器訪問(DMA)數據傳輸,如在下文進一步詳細描述的。
[0015]虛擬交換機108是基于軟件的實體,其配置成在計算平臺102內部執(zhí)行SDN交換操作。在圖示的示例中,虛擬交換機108包括對于網絡接口 104上的每個物理Rx和Tx端口(例如,對于Portl-Porti^的每個)的虛擬Rx和Tx端口,和對于虛擬機VMV1-VM Λψ的每個的虛擬Rx和Tx端口。網絡接口側上的虛擬端口描繪為Rx虛擬端口 126和Tx虛擬端口127,而VM側上的虛擬端口描繪為Rx虛擬端口 128和Tx虛擬端口 129。如進一步示出的,Rx和Tx虛擬端口 126、127、128和129中的每個的一部分描繪為與系統(tǒng)存儲器地址空間的共享存儲器區(qū)域134 (也稱為共享地址空間)重疊。另外,Rx和Tx虛擬端口 130和132的組對進一步描繪為擴展到相應虛擬NIC (vNIC),如由vNICl、vNIC2和vNICA示出的,其中vNIC與相應虛擬機VM 1、VM 2和VM聯(lián)聯(lián)。
[0016]示出虛擬機VM 1、VM 2和VM Λψ的每個,其包括虛擬組件136和三個應用138(具有識別其上運行虛擬組件和應用的對應VM的記號)。例如,對于VM 1,虛擬組件標記為“組件1”并且應用標記為“應用1A”、“應用1B”和“應用1C”。一般,每個虛擬組件136可經由一個或多個應用138來實現,并且包括三個應用僅僅是為了說明目的。在計算平臺102的操作期間,虛擬組件136中的每個配置成執(zhí)行一個或多個分組處理服務。此外,這些分組處理服務采用如由與每個分組關聯(lián)的分組流的可適用LSC限定的鏈接方式實現。
[0017]經由連同分組140的處理描繪的操作和數據傳輸,并且進一步參考在圖2中示出的流程圖200,使用本地服務鏈接的鏈接分組處理服務的概念進一步在圖1中圖示。分組140描繪為IP (互聯(lián)網協(xié)議)分組,并且IP分組的該示范性使用意指分組采用IP尋址,其部分地用于確定分組140在網絡中被轉發(fā)到哪里以及由計算平臺102內部處理。如在流程圖200的框202中示出的,過程以在網絡接口 102的Portl處從網絡接收分組140開始。一般,分組數據作為數據位流在網絡的鏈路上傳輸。例如,對于以太網網絡,分組數據作為以太網幀的流傳輸。在Portl處,執(zhí)行可適用的物理層(PHY)操作來提取以太網分組,其封裝要由虛擬組件136處理的分組數據。提取的以太網分組在Portl的Rx緩沖器118中緩沖。
[0018]接著,在框204中,從以太網分組提取IP分組??蛇x地,如能適用的話,可提取層4或更高