• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Vmware的路由器主控單元功能虛擬化

    2016-10-10 11:41:25黎文偉
    光通信研究 2016年2期
    關鍵詞:網(wǎng)卡路由器虛擬化

    黎文偉,吉 萌,戴 非

    (1.武漢郵電科學研究院,武漢 430074; 2.武漢烽火網(wǎng)絡有限責任公司,武漢 430074;3.江西師范大學,南昌 330022)

    基于Vmware的路由器主控單元功能虛擬化

    黎文偉1,2,吉 萌1,2,戴 非3

    (1.武漢郵電科學研究院,武漢 430074; 2.武漢烽火網(wǎng)絡有限責任公司,武漢 430074;3.江西師范大學,南昌 330022)

    虛擬化是在通用服務器平臺上實現(xiàn)路由器主控單元功能的主要方法之一,虛擬化的實現(xiàn)首先要解決路由器代碼的移植?;趚86服務器和通用操作系統(tǒng)的純軟件虛擬化開發(fā),可以利用英特爾在處理器和虛擬化領域的技術(shù)積累,獲得在網(wǎng)絡功能虛擬化領域的競爭優(yōu)勢。高端路由器主控單元的基礎是收發(fā)數(shù)據(jù)包及相應的處理功能,移植的重點在于網(wǎng)卡驅(qū)動。文章分析了如何實現(xiàn)高端路由器主控單元代碼運行在虛擬化平臺上,并就調(diào)試程序過程中可能出現(xiàn)的技術(shù)問題做了深入的探討。

    路由器;虛擬化;網(wǎng)絡功能虛擬化;軟件定義網(wǎng)絡

    0 引 言

    通信技術(shù)的發(fā)展和工業(yè)4.0時代的到來,讓物聯(lián)網(wǎng)、云計算從概念變?yōu)楝F(xiàn)實。電信運營商不斷地進行硬件升級來滿足數(shù)據(jù)流量的增長,成本高且部署網(wǎng)絡設備周期長。而NFV(網(wǎng)絡功能虛擬化)不僅降低了運營商的硬件采購成本,使組網(wǎng)更靈活,而且與SDN(軟件定義網(wǎng)絡)、云計算等前沿技術(shù)密切相關。其中基于x86架構(gòu)的虛擬化技術(shù)是實現(xiàn)NFV的重要途徑[1]。虛擬化技術(shù)的實現(xiàn)面臨的挑戰(zhàn)是路由器代碼在虛擬環(huán)境下的移植。使用虛擬化技術(shù)后,要兼顧處理器高性能和通用性的矛盾,而解決該問題,可以在集成和軟件層面做優(yōu)化。

    1 技術(shù)簡介

    1.1技術(shù)背景

    純軟件虛擬化技術(shù)出現(xiàn)較早,之后還進一步出現(xiàn)了處理器級虛擬化和I/O(輸入/輸出)級虛擬化。純軟件虛擬化的主要問題是效率和隔離性。為了解決這個問題,市場上出現(xiàn)了OS(操作系統(tǒng))虛擬化和完全虛擬化方法,但不管何種方法,都因為Hypervisor(虛擬機監(jiān)視器)的參與而降低了處理器性能。目前Intel開發(fā)的VT-d(直接I/O訪問的虛擬化技術(shù)),不僅成功解決了上述問題,還在I/O設備中增加了虛擬化性能[2-3]。Intel在處理器和I/O級的虛擬化工作,緩解了純軟件虛擬化所固有的效率和隔離性問題,為純軟件虛擬化應用提供了支撐。

    Intel至強系列芯片廣泛應用于服務器等領域。至強系列處理器的多核架構(gòu)提高了虛擬化多任務環(huán)境的程序執(zhí)行效率。路由器硬件組成包括主控卡、線卡和多核卡等,其中主控卡主要實現(xiàn)協(xié)議包的處理,轉(zhuǎn)發(fā)主要由線卡完成。主控要實現(xiàn)一些基本的協(xié)議功能,例如BGP(邊界網(wǎng)關協(xié)議)、OSPF(開放式最短路徑優(yōu)先)和RIP(路由信息協(xié)議)等。路由器主控功能虛擬化,可以為SDN和云計算等前沿網(wǎng)絡技術(shù)的實現(xiàn)做支撐。

    1.2技術(shù)框架

    本文采用純軟件虛擬化方案,其虛擬化技術(shù)的實現(xiàn)不依賴于硬件,可以先在普通計算機上實現(xiàn)虛擬化,再拷入服務器板卡[4],整體技術(shù)框架如圖1所示。

    圖1 路由器主控卡虛擬化實現(xiàn)方案

    服務器板卡背板接口接收到其他線卡或者網(wǎng)絡設備的報文后,VxWorks虛擬機判斷該報文是協(xié)議包還是普通數(shù)據(jù)包,如果是協(xié)議包,則上傳到CPU(中央處理器)進行協(xié)議棧處理,比如路由信息計算等,再交由相應端口進行轉(zhuǎn)發(fā);如果是普通數(shù)據(jù)包,則直接轉(zhuǎn)發(fā)給外接交換機。虛擬主控卡要保證透明傳輸和高效率。外接交換機可以為普通交換機,利用其線速轉(zhuǎn)發(fā)效率來彌補主控轉(zhuǎn)發(fā)性能的不足;也可以為Openflow交換機,利用Windows系統(tǒng)內(nèi)的java控制器來控制Openflow交換機流表的產(chǎn)生與轉(zhuǎn)發(fā),進而應用到SDN和云計算等嵌入式領域中。因而,路由器主控功能的虛擬化主要在于收發(fā)包功能的實現(xiàn),至于上層協(xié)議棧和Openflow交互信息的控制方面,可以根據(jù)邏輯需要來配置和修改。而收發(fā)包功能主要涉及到虛擬網(wǎng)卡驅(qū)動的編譯以及與協(xié)議棧和集成代碼的聯(lián)調(diào)問題。

    本文采用tornado for Pentium的x86環(huán)境替代高端路由器編譯環(huán)境tornado for ppc。該軟件自帶ln97xEnd.c,在tornado中編譯boot,然后在Vmware中啟動,即建立了基本的開發(fā)環(huán)境。

    2 高端路由器主控虛擬化設計

    2.1BSP(板級支持包)配置與空鏡像加載

    VxWorks鏡像在BSP中的啟動順序為:romInit()-romStart()-sysInit()-usrInit()-usrRoot()。高端路由器主控卡的驅(qū)動代碼主要在網(wǎng)卡加載時,即usrconfig.c文件中的usrRoot()函數(shù)執(zhí)行過程中會出現(xiàn)問題,因此在編譯lnPci網(wǎng)卡驅(qū)動前,要對BSP文件做修改,例如 argetconfigpcPentium下的config.h和sysLn97xEnd.c文件,用來設置FTP(文件傳輸協(xié)議)下載的IP(網(wǎng)際協(xié)議)地址和指定網(wǎng)卡驅(qū)動程序,包含PC_CONSOLE。在tornado里編譯一個空鏡像VxWorks image,運行在Vmware中,ping通VxWorks系統(tǒng)后,再進行網(wǎng)卡功能移植。

    2.2對應網(wǎng)絡模塊的修改

    路由器的代碼一般基于嵌入式系統(tǒng)生成,通常使用專用CPU(如power pc),目標文件生成一般在該環(huán)境下進行;與驅(qū)動和網(wǎng)絡相關的libnet.a、libdrv.a需要在Pentium環(huán)境下重新編譯。與調(diào)試相關的libwdb.a也需要修改。分析ppc和Pentium 的tornado目錄自帶文件,可以看到targeth和targetsrcdrv下有很多文件不同,這會影響驅(qū)動設備end device的加載。移植過程中必須盡量使用路由器內(nèi)的文件,例如muxlib.c、ipproto.c、end.h和netbuflib.c等。

    2.3虛擬網(wǎng)卡編譯過程

    VxWorks網(wǎng)絡框架如圖2所示。END(增強型網(wǎng)絡驅(qū)動)包括BSP和驅(qū)動部分。

    圖2 VxWorks網(wǎng)絡框架

    系統(tǒng)啟動后,任務tUsrRoot()初始化網(wǎng)絡,函數(shù)調(diào)用關系為usrRoot()調(diào)用usrNetInit(),在usr-NetInit()中調(diào)用sockLibAdd(),sockLibAdd()調(diào)用bsdSockLibInit(),usrNetInit()也調(diào)用muxDev-Load()和ipAttach()。函數(shù)muxDevLoad()中,通過參數(shù)initstring兩次調(diào)用ln97xEndLoad()函數(shù),第一次返回設備名稱,避免重復加載,第二次裝載網(wǎng)卡參數(shù),初始化ln97xDevice和end_object結(jié)構(gòu)體。

    應用程序通過MUX接口實現(xiàn)與驅(qū)動層接口函數(shù)的信息交互,在VxWorks虛擬機里可觀察MUX接口是否被正確創(chuàng)建。在shell中輸入muxShow命令,可以查看創(chuàng)建的MUX接口信息,包括設備名lnPci、設備unit號、END_OBJ參數(shù)值和網(wǎng)卡描述信息等,驗證底層網(wǎng)卡驅(qū)動是否被正確加載。虛擬網(wǎng)卡通過muxBind()函數(shù)綁定TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)棧[5],確認虛擬網(wǎng)卡Attached上TCP/IP后,程序進入?yún)f(xié)議驅(qū)動程序?qū)?。該層實現(xiàn)socket接口的協(xié)議初始化。

    在協(xié)議驅(qū)動程序?qū)?,主要實現(xiàn)相關協(xié)議棧的函數(shù)調(diào)用和初始化工作。當協(xié)議層通過接口隊列調(diào)用驅(qū)動層的函數(shù)來啟動輸出時,驅(qū)動接口層產(chǎn)生硬件中斷,并且產(chǎn)生協(xié)議隊列送協(xié)議層處理,這時協(xié)議層產(chǎn)生軟件中斷,與協(xié)議層有關的協(xié)議如TCP、UDP(用戶數(shù)據(jù)報協(xié)議)、IP、ICMP(Internet控制報文協(xié)議)和IGMP(Internet組管理協(xié)議)等做進一步封裝,并通過socket隊列傳送給socket層,進而實現(xiàn)系統(tǒng)調(diào)用。協(xié)議棧初始化功能由函數(shù)usrNetProtoInit()實現(xiàn),該函數(shù)由tornado組件自帶,但有些tornado for Pentium版本中并不會帶有函數(shù)usr-NetProtoInit()里所有函數(shù)的初始化代碼,這時可將tornado for PPC下的協(xié)議棧代碼移植進該版本,實現(xiàn)網(wǎng)絡協(xié)議棧的正常初始化。

    協(xié)議棧初始化函數(shù)移植完畢后,輸入ifAddrSet命令設置網(wǎng)卡IP地址,可用ifShow命令觀察網(wǎng)卡地址信息以及收發(fā)包情況。在VxWorks虛擬機中設置網(wǎng)卡帶外IP地址,如果能ping通VxWorks系統(tǒng),證明網(wǎng)卡驅(qū)動程序已正常加載,然后調(diào)試socket接口,設置一個簡單的服務器和客戶端通信socket函數(shù),實現(xiàn)虛擬網(wǎng)卡收發(fā)包功能。虛擬化調(diào)試平臺即搭建完成。

    2.4可能出現(xiàn)的問題和解決辦法

    路由器主控代碼移植到虛擬環(huán)境下運行時,因tornado環(huán)境的不同,可能缺少在虛擬化環(huán)境下運行時所需的相關參數(shù)初始化工作,進而會經(jīng)常出現(xiàn)“PageFault”錯誤。具體原因是指針返回錯誤,例如結(jié)構(gòu)體指針返回空值,導致該指針訪問成員時出錯。解決辦法是理順函數(shù)調(diào)用順序,避免錯調(diào)或者漏調(diào)的情況。例如ln97xEnd.c中的ln97xEndLoad函數(shù),該函數(shù)實現(xiàn)驅(qū)動和設備參數(shù)的初始化,會調(diào)用END_OBJ_INIT和END_MIB_INIT函數(shù),這兩個函數(shù)實現(xiàn)end.h中end_bject結(jié)構(gòu)體初始化和mib-II結(jié)構(gòu)體初始化,如果錯調(diào),那么在muxlib.c的muxdevload函數(shù)調(diào)用pNew→pFuncTable→ioctl時會出現(xiàn)PageFault錯誤。

    在ipproto.c中調(diào)用ipAttach函數(shù)時,也可能出現(xiàn)PageFault,原因是一些函數(shù)沒有被調(diào)用,例如mbinit等。在ipAttach函數(shù)中,會調(diào)用muxbind綁定TCP/IP到lnPci設備上。網(wǎng)卡設備Attached之后,說明muxbind綁定生效,此時可以設置網(wǎng)卡IP地址,調(diào)用socket接口。這時有可能出現(xiàn)無法成功設置IP地址的情況,原因是一些協(xié)議棧函數(shù)沒有被初始化,可移植網(wǎng)絡協(xié)議棧usrNetProtoInit()中的相關函數(shù),在相關BSP文件中做修改。

    Tornado版本不同且缺少某些組件時,網(wǎng)絡初始化順序也會不同。為了支持上層協(xié)議棧,移植時不能缺少原組件的功能。END增加了if模塊,實現(xiàn)MUX功能,也可以根據(jù)驅(qū)動開發(fā)需要,繞過MUX,實現(xiàn)上層應用程序與驅(qū)動接口直接通信。同時需注意處理器的大小端模式,PPC(一種精簡指令集架構(gòu))的處理器是大端模式,x86架構(gòu)的Pentium處理器是小端模式。

    3 高端路由器主控虛擬化的實現(xiàn)與評測

    3.1主控虛擬化實現(xiàn)

    在驅(qū)動和socket接口調(diào)試通過后,需要調(diào)試軟件和集成代碼。軟件代碼主要指OSPF、RIP、BGP等協(xié)議棧,集成代碼是為實現(xiàn)一些新的平臺功能而增加的部分代碼,此外還有網(wǎng)管代碼,主要實現(xiàn)命令行控制功能。

    為了提高純軟件虛擬化的運行效率,可以通過修改軟件和集成代碼來優(yōu)化虛擬主控的性能。在實際應用中,路由器主控虛擬化常與Openflow交換機結(jié)合來實現(xiàn)SDN,并實現(xiàn)與Openflow客戶端流表等信息進行交互。

    高端路由器虛擬主控卡在VxWorks虛擬機中的啟動過程如圖3所示。

    圖3 高端路由器虛擬主控卡啟動過程

    在圖3中,虛擬主控可以在監(jiān)控態(tài)進行版本升級,否則將在文件系統(tǒng)中尋找和加載主控代碼鏡像,最后在大程序中運行,此時是特權(quán)態(tài),可以設置帶外IP地址。

    調(diào)試路由器協(xié)議棧代碼,用服務器的背板接口連接普通交換機或者Openflow交換機、思博倫儀表及普通電腦,在儀表中設置二層和三層報文進行流量發(fā)包測試。在VxWorks虛擬機中設置帶外口,連接Secure CRT軟件,輸入相關命令行,觀察MAC表和路由表的建立信息、協(xié)議包的接收和轉(zhuǎn)發(fā)情況。此時,高端路由器主控虛擬化的基本工作已實現(xiàn),后續(xù)如需添加新的協(xié)議與功能,可以進一步修改軟件和集成代碼以適應新的虛擬化需求。

    3.2主控虛擬化評測

    高端路由器主控虛擬化的評測主要針對主控轉(zhuǎn)發(fā)數(shù)據(jù)包性能和路由協(xié)議功能的實現(xiàn)。虛擬主控可以與外接普通交換機或者Openflow交換機進行通信,通過思博倫儀表進行二層和三層包打流測試來測評其數(shù)據(jù)包的轉(zhuǎn)發(fā)性能。

    虛擬主控主要功能是完成協(xié)議包的處理,包括OSPF、RIP、BGP等協(xié)議包。圖4所示為服務器虛擬主控多區(qū)域OSPF測試拓撲。

    圖4 服務器虛擬主控多區(qū)域OSPF測試拓撲

    圖中服務器虛擬主控、路由器1和路由器2的OSPF主要配置命令分別如下:

    其中,router ospf命令用于啟動和配置IPv4的OSPF協(xié)議,數(shù)字1為默認進程號,network命令用于宣告參與OSPF協(xié)議的路由接口,area 0代表OSPF路由接口的主干區(qū)域,設置其他區(qū)域并將其連接到主干區(qū)域,例如area 1。在服務器的虛擬主控環(huán)境下,配置完上述命令后,可以在該虛擬主控環(huán)境下輸入命令show ip ospf neighbor,查看此時虛擬主控建立的ospf鄰居信息。

    其他協(xié)議包的測試也可以借鑒常規(guī)路由器主控卡功能的測試步驟。測試完成后,將數(shù)據(jù)與常規(guī)路由器主控測試結(jié)果進行對比,以對虛擬主控功能進行改進。

    4 結(jié)束語

    基于Vmware平臺下的x86虛擬化開發(fā),可以有效利用服務器硬件資源,包括高性能至強系列Intel處理器等,減少網(wǎng)絡設備開發(fā)周期和運營商網(wǎng)絡設施運維成本。而高端路由器虛擬主控是虛擬路由器的核心組成部分,對主控單元實現(xiàn)虛擬化,可以更靈活地實現(xiàn)主流路由協(xié)議包的處理和轉(zhuǎn)發(fā),為SDN和云計算技術(shù)的開發(fā)與應用提供新的技術(shù)支撐。

    [1]Wright G R,Stevens W R.TCP/IP IIIustrated Volume2:The Implementation[M].北京:機械工業(yè)出版社,2010.

    [2]董耀祖,周正偉.基于X86架構(gòu)的系統(tǒng)虛擬機技術(shù)與應用[J].計算機工程,2006,32(13):71-73.

    [3]徐惠民.基于VxWorks的嵌入式系統(tǒng)及實驗[M].北京:北京郵電大學出版社,2006.

    [4]Kurose James F,Ross Keith W.Computer Networking:A Top-Down Appproach[M].Fourth Edition.北京:機械工業(yè)出版社,2008.

    [5]楊洪波.高性能網(wǎng)絡虛擬化技術(shù)研究[D].上海:上海交通大學,2012.

    The Router’s Main Control unit Function Virtualization Based on Vmware

    LI Wen-wei1,2,JI Meng1,2,DAI Fei3
    (1.Wuhan Research Institute of Post and Telecommunications,Wuhan 430074,China;2.Wuhan FiberHome Networks Co.,Ltd.,Wuhan 430074,China; 3.Jiangxi Normal University,Nanchang 330022,China)

    The virtualization of the Router’s Main Control unit function based on the x86platform can provide support for several technologies including virtualization,Software Defined Network(SDN)and cloud computing for further applications.Traditional router code is developed on private network processor.In order to achieve traditional function of a router in a virtualized environment,we recompile the virtual network interface card’s board support package,drive and protocol stacks based on traditional router code.This method realizes the router’s code mirror running normally in Vmware virtual machines based on normal Windows platform.The feasibility is also verified by the sending and receiving packet test.Compared with the traditional method of programmable router virtualization,this method utilizes a pure software virtualization technology and it is based on VxWorks router protocol stack,which shows much better versatility and flexibility.

    router;virtualization;NFV;SDN

    TN393

    A

    1005-8788(2016)02-0011-04

    10.13756/j.gtxyj.2016.02.004

    2015-08-29

    黎文偉(1985-),男,湖北大悟人。碩士研究生,主要研究方向為通信與信息系統(tǒng)。

    猜你喜歡
    網(wǎng)卡路由器虛擬化
    在DDS 中間件上實現(xiàn)雙冗余網(wǎng)卡切換的方法
    買千兆路由器看接口參數(shù)
    科教新報(2022年24期)2022-07-08 02:54:21
    基于OpenStack虛擬化網(wǎng)絡管理平臺的設計與實現(xiàn)
    電子制作(2019年10期)2019-06-17 11:45:10
    Server 2016網(wǎng)卡組合模式
    對基于Docker的虛擬化技術(shù)的幾點探討
    電子制作(2018年14期)2018-08-21 01:38:20
    虛擬化技術(shù)在計算機技術(shù)創(chuàng)造中的應用
    電子測試(2017年11期)2017-12-15 08:57:56
    你所不知道的WIFI路由器使用方法?
    存儲虛擬化還有優(yōu)勢嗎?
    挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
    無線路由器輻射可忽略
    中方县| 崇阳县| 镶黄旗| 自治县| 锦屏县| 马边| 晋江市| 祁东县| 巴马| 龙州县| 房产| 望城县| 房山区| 土默特左旗| 清丰县| 泰宁县| 龙口市| 澄城县| 天气| 南汇区| 南和县| 清新县| 惠来县| 左云县| 延边| 河池市| 富源县| 余干县| 青海省| 宁武县| 阿城市| 金堂县| 广东省| 阜康市| 南阳市| 藁城市| 邹平县| 清流县| 镇平县| 阳城县| 新巴尔虎右旗|