傳輸控制協議,網間協議(TCP/IP)體系結構面臨挑戰,未來互聯網研究成為熱點。未來互聯網體系結構、協議、算法與實現技術在部署之前需要大量的理論分析與仿真實驗,更需要在試驗網絡系統中進行評估與驗證。由于路由器的封閉性與正常業務對試驗的影響,在現有的互聯網上實現、驗證和部署新體系結構、新協議與新算法非常困難,這嚴重制約了互聯網體系結構的發展和創新。例如,TRIL系統從設計實現到部署花費了6年時間。
為了解決該問題,研究者提出了網絡虛擬化的思想:在一個實際的物理網絡上構建多個獨立且互不干擾的虛擬網絡平面(slice),不同的虛擬網絡平面可以采用不同的體系結構與協議棧,每個slice為網絡創新研究提供真實有效的并行實驗平臺。多個虛擬網絡可以分別處理不同類型的業務流量,并根據業務的特性提供功能擴展服務,從而滿足物聯網、云計算等新興應用和技術對未來互聯網的需求。
與每個單獨搭建的物理網絡不同,虛擬網絡構建更快捷與方便,在不影響現有互聯網正常運行條件下滿足網絡新應用和新技術研究的評估與部署等需求,并將這些網絡創新思想更快速地部署到實際網絡中。
為了滿足實驗評估與部署需要,作為互聯網核心設備的路由器必須具備以下特性:
(1)虛擬化與隔離性
虛擬路由器是在一臺物理路由器設備上可同時運行多個獨立虛擬的邏輯路由器。設備管理者為每個獨立的虛擬路由器單獨分配帶寬、處理器和緩存等資源,并實現相互隔離的配置管理。
(2)靈活的可擴展可編程機制
虛擬路由器要求開放性和靈活性,即提供各種層次的編程接口,以支持IP或非IP等多種網絡體系結構和協議的改進和創新。
(3)高效數據包處理能力
虛擬路由器需要承載多個邏輯路由器的業務,其多個路由表(或流表)存儲與數據包查詢等面臨著巨大的性能挑戰。同時,可編程性要求大量的數據包處理流程由軟件模塊來實現,這也對虛擬路由器的高效數據包處理帶來更多困難。
本文討論了當前可編程虛擬化路由器結構,分析了虛擬化、可編程以及高效數據包處理等關鍵技術,并介紹一種支持未來網絡創新的可編程虛擬化路由器平臺——PEARL。
1 可編程虛擬化路由器結構
傳統路由器是由硬件設備層、操作系統層和路由管理層等3個邏輯層次所構成,如圖1所示。可編程虛擬化路由器是在操作系統層中引入虛擬化技術,從而在同一硬件設備層上構建多個虛擬的路由管理層,從而實現多個并行的虛擬路由器。可編程虛擬化路由器不僅面臨傳統路由器的性能挑戰,而且存在如何折衷考慮高效數據包處理與靈活可擴展可編程等需求。此外,虛擬化技術的引入還帶來了如何實現路由器虛擬化和虛擬路由器之間的相互隔離等新問題。
路由器結構研究的核心問題是如何折衷考慮高效數據包處理與靈活可擴展可編程。由于互聯網飛速發展帶來網絡鏈路速率不斷提升,對于傳統路由器,設備制造商和研究人員主要關注其高效數據包處理能力。當前互聯網的骨干鏈路帶寬已達40Gb/s,而且還在不斷提升,這要求路由器必須具備處理高速鏈路數據的能力。因此,設備制造商一直致力于研制高性能核心路由器。例如Cisco公司的CRSl高端路由器的最大吞吐量可達92Tb/s。但是,在傳統路由器結構研究的發展過程中,研究者對高性能和高速度的極致追求(例如傳統路由器采用專用硬件實現數據包處理),將降低其靈活性和可擴展性。為了克服上述問題,虛擬路由器采用數據平面與控制平面相分離的結構,在兼顧高效數據包處理的同時,增強其靈活可擴展可編程能力。


近年來,除了研究高效數據包處理,許多研究者開始關注路由器的可擴展與可編程性等問題。例如,Morris等人提出了的基于模塊的軟件路由器——Crick。Click是一個基于軟件實現的路由器結構,其核心思想是將組成路由器的各個部分模塊化,用戶可通過組合配置這些功能模塊,對路由器進行自定義擴展。CHck采用了數據平面與控制平面相分離的結構,在控制平面上采用XORPt~等通用路由管理組件,因此具有良好的靈活性和通用性。
隨著CPU處理能力的不斷提高,路由器的高效數據包處理與靈活可擴展可編程性之間的沖突獲得了一定緩解,但是可編程虛擬化路由器仍然面臨如何實現支持虛擬化等新問題。當前虛擬化技術主要應用于通用計算機系統中,可支持跨操作系統及異構平臺的多種應用。但是,通用計算機系統的虛擬化技術主要執行計算和調度任務,而路由器的虛擬化技術要求執行數據包查找與轉發任務。特別是,在數據平面與控制平面相分離的路由器結構中,控制平面的虛擬化實現可采用當前通用計算機系統的虛擬化技術,而數據平面的虛擬化實現則需要新的虛擬化技術。國內外在可編程路由器的虛擬化技術方面尚處于起步狀態,主要研究如何有效實現數據平面的虛擬化支持,以及多個虛擬數據平面之間如何相互隔離等。
2 相關技術研究進展
2.1虛擬化技術
可編程虛擬化路由器的控制平面虛擬化可采用通用計算機系統的虛擬化技術。當前通用計算機系統的虛擬化技術按照虛擬層次不同可分為3類:全虛擬化、半虛擬化和操作系統級虛擬化。
(1)全虛擬化
全虛擬化又稱本地虛擬化技術,其典型代表是VMware和KVMtm。該技術在操作系統和底層硬件之間采用一個中間層Hypeisor,使得底層硬件可被上層操作系統共享訪問。當客戶操作系統執行某項特權指令時,中間層將接管該段代碼,并執行對應的操作。由于在全虛擬化技術中,客戶操作系統不能對底層硬件進行任何直接控制,而必須通過中間層進行代理,導致輸入輸出(I/0)性能會受到一定影響。
(2)半虛擬化
半虛擬化技術又稱準虛擬化技術,其典型代表是Xent71和UML。該技術也采用中間層來隔離底層硬件和操作系統。不同的是,該技術通過修改操作系統代碼,讓客戶操作系統本身知道其運行在一個虛擬化平臺上。該技術能夠顯著提升虛擬化技術的I/O性能。但是,由于半虛擬化技術需要對操作系統代碼進行修改,其實現非常復雜,且較難應用在非開源的商業操作系統上。
(3)操作系統級虛擬化
操作系統級虛擬化相對與前兩種虛擬化技術最大的不同是其輕量化特點,其典型代表是0penVZtgj、Linux-VServe、LXCs”。該技術利用操作系統所提供的一些機制(如Linux中命名空間),將一組進程放人到“容器”中,與主操作系統的進程隔離開來,并采用這些機制限制該組進程的CPU和內存占用率,從而實現虛擬化技術中資源隔離與分配。該虛擬化技術只能運行在特定的操作系統上(例如Linux),且所有虛擬機共享一個內核。因此,該技術的優點是虛擬化開銷非常小(但是不能運行多個異構的操作系統),非常適合虛擬化路由器這樣功能單一且性能需求較高專用設備。
2.2可編程設計
Click采用XORP可實現一個功能靈活的軟件路由器。圖2給出了利用Click和XORP構建的軟件路由器功能模塊圖。在圖2中,XORP主要完成路由計算、路由表維護和路由管理等功能,而Click主要完成數據平面的協議棧處理、數據包查找與轉發等功能。
Handley等人認為,現有商業路由器具有封閉性,導致新路由協議研究缺乏一個可靠測試平臺,從而提出了XORP。XORP是旨在提供一個開放的、可擴展的路由器軟件平臺,方便研究者部署和實現新路由協議。XORP采用多進程機制,通過轉發引擎抽象層將數據包交換、路由計算和轉發引擎等隔離出來,不僅增強了魯棒性,而且保證了其開放性。
與XORP類似,Quagga也是一個功能靈活的路由器軟件平臺。Quagga具有路由收斂更快、兼容性更好、更加輕量化等優點,已經被工業界和教育研究機構廣泛采納,并獲得大量實際應用驗證。例如,vvatta公司的商用路由器采用了Quagga作為其路由管理軟件系統。
與XORP和Qugga等不同,Click是一個針對路由器數據平面的模塊化可編程平臺。Click的目的是為了在數據平面上實現靈活的功能配置和模塊的可重用性。不過,通過調節和配置Linux內核也可實現Crick的相同功能和效果。
2.3數據包轉發加速方法
隨著通用計算機和普通網卡性能的不斷提升,可編程性軟件路由器在數據包轉發效率上也獲得了提升。近年來,研究者對通用平臺下的數據包轉發性能進行了不斷優化工作。例如,內核版本的Click路由器采用輪詢方式讀取數據包,在普通網卡上獲得很高的小包轉發性能。該方法的優點是采用通用網卡實現數據包轉發,可擴展性強、靈活方便。Dobrescu等通過充分挖掘單個物理網絡設備的吞吐量潛力,利用集群技術提出了高性能軟件路由器RouteBricks,從而有效提升軟件路由器的整體性能。Huang等人提出了路由表壓縮算法,從而以更低的存儲空間開銷實現基于軟件的高性能路由查找,適合可編程軟件路由器的性能需求。Han等人利用通用GPU提出了高速軟件路由器——PacketShader,可實現高速路由查找,實現了高效數據包查找與轉發。
3 可編程虛擬化路由器實例
(1)vRouter
Egi等人提出了典型的虛擬路由器架構——vRouter。vRouter是一種基于通用計算機平臺的純軟件虛擬路由器。vRouter利用普通網卡的硬件多隊列特性,提供不同數據平面的數據隔離;采用Xen虛擬技術,提供不同的控制平面隔離性;利用內核態Click的輪詢技術提高數據包轉發吞吐量。Keller等人采用Linux-VServer虛擬技術和Click搭建了一個改進的虛擬路由器平臺,克服了vRouter的內核態Click只能使用一個配置文件等問題。該虛擬路由器平臺可使用多個Click配置,確保不同的虛擬路由器的自定義數據平面。vRouter及其改進研究在虛擬化和可編程性上表現優良,但是由于采用純軟件的實現方式,其性能及可擴展性較差。
(2]CAFE和SwitchBlade
與純軟件虛擬路由器不同,Anwer等人采用NetFPGA硬件實現了多個虛擬路由器的數據平面,每個數據平面采用相同結構,實現數據包查找與轉發等功能。Lu等人提出了一種可配置的數據轉發引擎CAFE。CAFE采用不同API配置底層硬件,實現不同的數據平面,從而避免了底層硬件的重新設計。Anwer等人提出了一種虛擬路由器的模塊化的流水架構SwitchBlade,支持硬件可編程行,從而在確保底層硬件的高速轉發性能前提下,支持新路由協議的快速原型實現與部署。基于專用硬件的虛擬路由器要求在保證其高性能的同時,支持底層數據平面的可擴展性。上述這些研究只關注硬件數據平面的可編程性,未解決好虛擬路由器結構在性能和可編程行之間折衷問題。
(3)OpenFlow
斯坦福大學提出了一種新型數據包交換設備——OpenFlow,其采用數據平面與控制平面完全分離的結構,采用十元組規則(即MAC地址對、IP對、端口對等)作為數據平面的數據包轉發規則,從而實現不同于傳統IP協議的數據包轉發策略。OpenFlow較好地體現了可編程性,但是OpenFlow實質上是一個跨層次交換設備,無法作為支持路由交換的虛擬化可編程路由器。
4 可編程虛擬化路由器平臺
為了折衷兼顧性能和靈活可編程性,本文提出了一個支持未來網絡創新的可編程虛擬化路由器平臺——PEARL。PEARL采用通用計算機和專用數據包處理卡相結合的方式來構建可編程虛擬化路由器。專用數據包處理卡內嵌TCAM和SRAM存儲器,可實現線速路由查找和轉發等功能,而通用計算機采用高性能多核處理器作為路由管理,利用操作系統級虛擬機LXC實現對控制平面虛擬化的支持。因此,PEARL不僅實現虛擬化、靈活可編程,而且兼具良好的數據包轉發性能。
(1)虛擬化及隔離性
在軟件層面,PERAL采用的操作系統級虛擬機LXC通過Linux內核所提供的一些特性,給每個虛擬路由器提供了獨立的“容器”,在實現共享CPU和內存資源的基礎上,確保資源分配的可配置性和虛擬機間的相互隔離。在硬件層面,專用硬件數據包處理卡執行上層軟件對于各個虛擬路由器數據平面的配置,實現數據通路的資源分配與隔離。軟硬件之間則通過多個獨立的I/O通道來實現不同虛擬路由器間的數據互不干擾。該軟硬件相結合的實現方式可實現路由器虛擬化所要求的高度隔離性。
(2)配置和可編程的靈活性
PEARL的靈活性體現在兩個方面:配置靈活性和可編程靈活性。在配置方面,PEARL提供了兩種虛擬路由器實例,即高優先級和低優先級虛擬路由器實例。每個高優先級實例獨自享有一個高性能I/O通道,并且在底層數據包處理卡上擁有獨立三態內容尋址存儲器(TCAM)空間,從而加快查表速度。高優先級實例適合需要處理大流量和復雜操作等網絡應用。低優先級路由器共享一個I/O通道,并且沒有專門TCAM硬件用于查找加速,適用于小流量的網路應用,例如新路由協議實驗平臺。PEARL通過提供上述配置的靈活性,從而滿足實際應用的不同需求。在可編程方面,PEARL支持用戶采用插件方式,直接嵌入其代碼在數據包處理的守護進程中,或采用著名的SocketAPI來處理數據包。由于未采用系統調用,前種方式的性能比后種方式較高;后種方式支持某些Demo程序(例如OpenFlow)不做任何修改就可以運行在PEARL上,具備更好的通用性。
(3)高效數據包查找與轉發
在PEARL中,專用數據包處理卡采用高速PCIE總線接口,因而具有極高的數據吞吐能力,而其內嵌的TCAM和SRAM芯片實現了高速復雜查找等功能。在PERAL中,路由查找和虛擬機區分查找是計算型操作,可能成為系統“瓶頸”,因而在專用數據包處理卡上實現,從而極大提升了PERAL的處理能力。此外,由于操作系統級虛擬機LXC具有輕量化特點,極大降低了虛擬化所帶來的PERAL系統開銷。實驗結果證明,對于64B的數據包,PEARL可實現4Gb/s的線速轉發速率。
5 結束語
可編程虛擬化路由器是未來互聯網研究的熱點。虛擬路由器面臨性能、虛擬化和可編程等技術挑戰。在虛擬路由器中,多個虛擬路由器實例需要運行在一個物理路由器上,對數據包轉發性能提出了更高的性能需求。例如,多個虛擬路由器實例維護多個獨立的路由表,導致虛擬路由器的存儲空間開銷高。同時,多個虛擬路由器實例如何相互隔離、互不干擾地獨立運行也是熱點問題。此外,虛擬路由器要求提供用戶更多自定義空間,面臨如何確保靈活性的問題。本文介紹的PEARL采用軟硬件結合方式,可實現高性能、虛擬化和可編程的軟件路由器。
致謝:
李忠誠研究員對本文寫作給予了指導,在此表示衷心感謝!