可自動(dòng)化部署的虛擬路由器構(gòu)建方法
【專利摘要】本發(fā)明提供一種可自動(dòng)化部署的虛擬路由器構(gòu)建方法,包括如下步驟:步驟S1,在虛擬路由器中編寫命令行封裝模塊,并將封裝的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中,實(shí)現(xiàn)虛擬路由器的自啟功能;步驟S2,編寫文件讀取模塊,讀取讀文件參數(shù)所指的文件中的相關(guān)變量的值;讀文件參數(shù)所指的文件中的相關(guān)變量包括:自動(dòng)部署變量,其值為真或假;路由協(xié)議變量,其值為一個(gè)指定的動(dòng)態(tài)路由協(xié)議;步驟S3,編寫虛擬網(wǎng)絡(luò)配置嗅探模塊,實(shí)現(xiàn)虛擬路由器網(wǎng)卡ip地址獲取的功能;步驟S4,編寫動(dòng)態(tài)路由協(xié)議仿真模塊,基于步驟S2和S3,實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議的自動(dòng)化配置。步驟S5,編寫增量配置模塊。本發(fā)明使用戶可以靈活方便的進(jìn)行虛擬網(wǎng)絡(luò)管理。
【專利說明】
可自動(dòng)化部署的虛擬路由器構(gòu)建方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種計(jì)算機(jī)網(wǎng)絡(luò)和云計(jì)算領(lǐng)域,具體地說是一種基于云計(jì)算的一種可自動(dòng)化部署的,可實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議的虛擬路由器。
【背景技術(shù)】
[0002]虛擬網(wǎng)絡(luò)是一種包含至少部分是虛擬網(wǎng)絡(luò)鏈接的計(jì)算機(jī)網(wǎng)絡(luò)。虛擬網(wǎng)絡(luò)鏈接是在兩個(gè)計(jì)算設(shè)備間不包含物理連接,而是通過網(wǎng)絡(luò)虛擬化來實(shí)現(xiàn)。常見的虛擬網(wǎng)絡(luò)形式為基于協(xié)議的虛擬網(wǎng)絡(luò),如VALN、VPN和VPLS等和基于虛擬設(shè)備如在hypervisor內(nèi)部的網(wǎng)絡(luò)連接虛擬機(jī)的虛擬網(wǎng)絡(luò)。
[0003]云計(jì)算數(shù)據(jù)中心虛擬網(wǎng)絡(luò)包含軟件和硬件層次的虛擬化。硬件層次的網(wǎng)絡(luò)虛擬化需要特定設(shè)備的支持,因此增加一定的硬件成本但性能可能會(huì)好些。軟件層次的網(wǎng)絡(luò)虛擬化比較靈活,結(jié)合虛擬交換機(jī)和虛擬路由器可以構(gòu)建滿足各種需求的路由網(wǎng)絡(luò)。但是,目前的虛擬路由器無法實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議,只能通過靜態(tài)路由的配置實(shí)現(xiàn)轉(zhuǎn)發(fā)的功能,比較消耗時(shí)間以及人力。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種可自動(dòng)化部署的虛擬路由器構(gòu)建方法,可以方便的在云數(shù)據(jù)中心網(wǎng)絡(luò)通過軟件創(chuàng)建虛擬路由器,實(shí)現(xiàn)虛擬網(wǎng)絡(luò)中不同網(wǎng)段的路由作用;本發(fā)明可以實(shí)現(xiàn)虛擬路由器自動(dòng)靈活地部署,大量節(jié)約人力、時(shí)間,使用戶可以靈活方便的進(jìn)行虛擬網(wǎng)絡(luò)管理,實(shí)現(xiàn)不同的網(wǎng)絡(luò)需求。本發(fā)明采用的技術(shù)方案是:
一種可自動(dòng)化部署的虛擬路由器構(gòu)建方法,包括如下步驟:
步驟SI,在虛擬路由器中編寫命令行封裝模塊,并將封裝的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中,實(shí)現(xiàn)虛擬路由器的自啟功能;步驟Si中,具體包括:
首先創(chuàng)建conf ig子命令,conf ig子命令包括讀文件參數(shù),讀文件參數(shù)后的內(nèi)容為所需讀取的文件;
接著設(shè)置config子命令的默認(rèn)執(zhí)行函數(shù),然后將config子命令即封裝好的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中;
步驟S2,編寫文件讀取模塊,讀取讀文件參數(shù)所指的文件中的相關(guān)變量的值;讀文件參數(shù)所指的文件中的相關(guān)變量包括:
自動(dòng)部署變量,其值為真或假;
路由協(xié)議變量,其值為一個(gè)指定的動(dòng)態(tài)路由協(xié)議;
步驟S3,編寫虛擬網(wǎng)絡(luò)配置嗅探模塊,實(shí)現(xiàn)虛擬路由器網(wǎng)卡ip地址獲取的功能;
步驟S4,編寫動(dòng)態(tài)路由協(xié)議仿真模塊,基于步驟S2和S3,實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議的自動(dòng)化配置。
[0005]進(jìn)一步地,步驟S2中,所述讀取讀文件參數(shù)所指的文件中的相關(guān)變量的值具體包括:
通過文件讀取模塊將讀文件參數(shù)所指的文件內(nèi)容存儲(chǔ)到python的一個(gè)字典對(duì)象中,該字典對(duì)象有兩個(gè)鍵Auto和Protocol,分別作為自動(dòng)部署變量和路由協(xié)議變量;解析得到它們各自的值。
[0006]進(jìn)一步地,步驟S3具體包括:虛擬網(wǎng)絡(luò)配置嗅探模塊利用Iinux網(wǎng)絡(luò)配置庫pyr0Ute2中的網(wǎng)絡(luò)配置模塊IPRoute;首先獲取虛擬路由器各網(wǎng)卡的名稱,再調(diào)用網(wǎng)絡(luò)配置模塊IPRoute的get_addr方法返回各網(wǎng)卡的ip地址信息。
[0007]進(jìn)一步地,步驟S4具體包括:首先根據(jù)文件讀取模塊中獲得的自動(dòng)部署變量的值判斷是否進(jìn)入動(dòng)態(tài)路由協(xié)議仿真模塊,若自動(dòng)部署變量值為真進(jìn)入該動(dòng)態(tài)路由協(xié)議仿真模塊并根據(jù)路由協(xié)議變量的值判斷所要配置的動(dòng)態(tài)路由協(xié)議類型,再調(diào)用虛擬網(wǎng)絡(luò)配置嗅探模塊獲取虛擬路由器的網(wǎng)卡ip地址,根據(jù)獲取的ip地址完成虛擬路由器自身網(wǎng)絡(luò)的配置,最后啟動(dòng)對(duì)應(yīng)的動(dòng)態(tài)路由協(xié)議。
[0008]進(jìn)一步地,所述的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,還包括:
步驟S5,編寫增量配置模塊,實(shí)現(xiàn)遠(yuǎn)程終端通過ur I控制虛擬路由器配置的功能;包括: 若文件讀取模塊獲得的自動(dòng)部署變量的值為假則進(jìn)入增量配置模塊;
增量配置模塊采用的是python的輕便web框架Bottle應(yīng)用來實(shí)現(xiàn);首先Bottle應(yīng)用有一個(gè)url路由器,創(chuàng)建url路由器將url請(qǐng)求地址綁定到回調(diào)函數(shù)上,回調(diào)函數(shù)實(shí)現(xiàn)了獲取url中的目的地址、下一跳地址和對(duì)應(yīng)虛擬路由器網(wǎng)卡這些變量值并在虛擬路由器上添加或刪除靜態(tài)路由的功能;
接著調(diào)用Bottle應(yīng)用的run函數(shù)啟動(dòng)http監(jiān)聽服務(wù),設(shè)置監(jiān)聽服務(wù)在相應(yīng)的ip地址和端口號(hào)上運(yùn)行;
最后在遠(yuǎn)程終端上將目的地址、下一跳地址和對(duì)應(yīng)虛擬路由器網(wǎng)卡的靜態(tài)路由添加或刪除成功。
[0009]本發(fā)明的優(yōu)點(diǎn)在于:
I)本發(fā)明構(gòu)建的虛擬路由器可以實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議,如OSPF協(xié)議和RIP協(xié)議。
[0010]2)本發(fā)明可以實(shí)現(xiàn)虛擬路由器自動(dòng)靈活地部署,大量節(jié)約人力、時(shí)間,使用戶可以靈活方便的進(jìn)行虛擬網(wǎng)絡(luò)管理,實(shí)現(xiàn)不同的網(wǎng)絡(luò)需求。
[0011 ] 3)本發(fā)明可以通過url實(shí)現(xiàn)對(duì)虛擬路由器的控制。
【附圖說明】
[0012]圖1為本發(fā)明的流程圖。
[0013]圖2為本發(fā)明的各模塊工作流程圖。
[0014]圖3為本發(fā)明的實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)鋱D。
【具體實(shí)施方式】
[0015]下面結(jié)合具體附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。
[0016]如圖1、圖2所示,本發(fā)明提出的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,包括如下具體步驟:
步驟SI,在虛擬路由器中編寫命令行封裝模塊,并將封裝的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中,實(shí)現(xiàn)虛擬路由器的自啟功能;
在本實(shí)施例中,命令行封裝模塊調(diào)用了 python(—種計(jì)算機(jī)程序設(shè)計(jì)語言)的命令行解析工具argparse,首先創(chuàng)建ArgumentParser的一個(gè)對(duì)象,調(diào)用該對(duì)象的add_subparsers方法創(chuàng)建子命令config,它包括讀文件參數(shù)“-c”,讀文件參數(shù)“-c”為后的內(nèi)容為所需讀取的文件,如config -C /examples/meta, json,(本例中需要讀取的文件是json格式的文件),再調(diào)用set_defaults函數(shù)設(shè)置config子命令的默認(rèn)執(zhí)行函數(shù),然后將config子命令即封裝好的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中,由于本發(fā)明中虛擬路由器的操作系統(tǒng)為ubuntu serverl2.04,所以需將封裝好的命令行添加到/etc/rc.local中。虛擬路由器啟動(dòng)時(shí)會(huì)自動(dòng)執(zhí)行封裝好的命令行,并進(jìn)一步解析執(zhí)行config子命令的默認(rèn)執(zhí)行函數(shù);
步驟S2,編寫文件讀取模塊,用于讀取讀文件參數(shù)“-c”所指的文件中的相關(guān)變量的值;在本實(shí)施例中,文件讀取模塊利用了python的json庫。對(duì)于讀文件參數(shù)“-c”所指的文件中的字段首先利用decode函數(shù)解碼json數(shù)據(jù)返回python字段的數(shù)據(jù)類型,再用json.loads函數(shù)把json格式字符串解碼轉(zhuǎn)換成python對(duì)象。如json文件中的內(nèi)容為{"Auto〃: 〃true〃,"Protocol": 〃0SPF〃},通過文件讀取模塊將文件內(nèi)容存儲(chǔ)到python的一個(gè)字典對(duì)象中,該字典對(duì)象有兩個(gè)鍵Auto和Protocol,分別作為自動(dòng)部署變量和路由協(xié)議變量;解析得到它們的值分別為true (或fal se )和OSPF(—種動(dòng)態(tài)路由協(xié)議)。步驟一中的conf ig子命令的默認(rèn)執(zhí)行函數(shù)首先就會(huì)調(diào)用文件讀取模塊將參數(shù)“-c”后的文件中的內(nèi)容存儲(chǔ)到字典對(duì)象中;
步驟S3,編寫虛擬網(wǎng)絡(luò)配置嗅探模塊,實(shí)現(xiàn)虛擬路由器網(wǎng)卡ip地址獲取的功能;
在本實(shí)施例中,虛擬網(wǎng)絡(luò)配置嗅探模塊利用了Iinux網(wǎng)絡(luò)配置庫pyroute2中的網(wǎng)絡(luò)配置模塊IPRoute;首先獲取虛擬路由器各網(wǎng)卡的名稱,再調(diào)用網(wǎng)絡(luò)配置模塊IPRoute的get_addr方法返回各網(wǎng)卡的ip地址信息。對(duì)于網(wǎng)卡名稱的獲取方法,由于在虛擬路由器的/sys/class/net目錄下有以網(wǎng)卡的名稱命名的文件夾,利用python的os.1istdir函數(shù)返回/sys/class/net目錄下的所有文件夾名稱就能獲得網(wǎng)卡名稱;
步驟S4,編寫動(dòng)態(tài)路由協(xié)議仿真模塊,基于步驟S2和S3,實(shí)現(xiàn)RIP、OSPF等動(dòng)態(tài)路由協(xié)議的自動(dòng)化配置;
在本實(shí)施例中,首先根據(jù)文件讀取模塊中獲得的自動(dòng)部署變量(即“Auto”)的值判斷是否進(jìn)入動(dòng)態(tài)路由協(xié)議仿真模塊,若自動(dòng)部署變量Auto值為真(true)進(jìn)入該動(dòng)態(tài)路由協(xié)議仿真模塊并根據(jù)路由協(xié)議變量Protocol的值判斷所要配置的動(dòng)態(tài)路由協(xié)議類型,再調(diào)用虛擬網(wǎng)絡(luò)配置嗅探模塊獲取虛擬路由器的網(wǎng)卡ip地址,根據(jù)獲取的ip地址完成虛擬路由器自身網(wǎng)絡(luò)的配置,最后啟動(dòng)對(duì)應(yīng)的動(dòng)態(tài)路由協(xié)議,完成虛擬路由器自學(xué)習(xí)的功能。
[0017]步驟S5,編寫增量配置模塊,實(shí)現(xiàn)遠(yuǎn)程終端通過url(統(tǒng)一資源定位符)控制虛擬路由器配置的功能。
[0018]在本實(shí)施例中,若文件讀取模塊中獲得的自動(dòng)部署變量Auto的值為false則進(jìn)入增量配置模塊。該增量配置模塊采用的是python的輕便web框架Bottle來實(shí)現(xiàn)的,該框架可開啟http服務(wù)進(jìn)行監(jiān)聽,可接受外部的url請(qǐng)求。首先Bottle應(yīng)用會(huì)有一個(gè)url路由器,它將url請(qǐng)求地址綁定到回調(diào)函數(shù)上,比如要實(shí)現(xiàn)添加一條路由的功能,則創(chuàng)建url路由器Oroute(,/add_ip_route/<des_ip>/<next_ip>/<interface>,),并綁定回調(diào)函數(shù)Add_ip_route,Add_ip_route函數(shù)則實(shí)現(xiàn)了獲取url中目的地址<des_ip>、下一跳地址<next_ip>和虛擬路由器網(wǎng)卡〈interface〉變量值并添加路由的功能。接著調(diào)用Bottle應(yīng)用的run函數(shù)啟動(dòng)http監(jiān)聽服務(wù),設(shè)置監(jiān)聽服務(wù)在相應(yīng)的ip地址和端口號(hào)上運(yùn)行;最后就可以在遠(yuǎn)程終端的命令行窗口輸入cur I http: //ip: port/add_ip_route/<des_ip>/<next_ip>/<interface〉即可將目的地址為<des_ip>,下一跳地址為<next_ip>,經(jīng)過〈interface〉網(wǎng)卡的靜態(tài)路由添加成功。
[0019]本發(fā)明的效果可以通過以下實(shí)驗(yàn)以及圖3進(jìn)一步說明:
如圖3的網(wǎng)絡(luò)拓?fù)渲衦outer 1、router2和router3均為虛擬路由器,vml、vm2和vm3為啟動(dòng)的虛擬通信終端,1161:1、116七2、116七3、116七4、116七5和116七6為創(chuàng)建的虛擬子網(wǎng),只需在云平臺(tái)上完成上述虛擬網(wǎng)絡(luò)以及相關(guān)虛擬機(jī)和虛擬路由器的創(chuàng)建,虛擬路由器間便可自動(dòng)配置動(dòng)態(tài)路由協(xié)議。經(jīng)過驗(yàn)證,vml、vm2和vm3可通過虛擬路由器相互通信。
【主權(quán)項(xiàng)】
1.一種可自動(dòng)化部署的虛擬路由器構(gòu)建方法,其特征在于,包括如下步驟: 步驟SI,在虛擬路由器中編寫命令行封裝模塊,并將封裝的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中,實(shí)現(xiàn)虛擬路由器的自啟功能;步驟Si中,具體包括: 首先創(chuàng)建conf ig子命令,conf ig子命令包括讀文件參數(shù),讀文件參數(shù)后的內(nèi)容為所需讀取的文件; 接著設(shè)置config子命令的默認(rèn)執(zhí)行函數(shù),然后將config子命令即封裝好的命令行添加到虛擬路由器開機(jī)啟動(dòng)程序中; 步驟S2,編寫文件讀取模塊,讀取讀文件參數(shù)所指的文件中的相關(guān)變量的值;讀文件參數(shù)所指的文件中的相關(guān)變量包括: 自動(dòng)部署變量,其值為真或假; 路由協(xié)議變量,其值為一個(gè)指定的動(dòng)態(tài)路由協(xié)議; 步驟S3,編寫虛擬網(wǎng)絡(luò)配置嗅探模塊,實(shí)現(xiàn)虛擬路由器網(wǎng)卡ip地址獲取的功能; 步驟S4,編寫動(dòng)態(tài)路由協(xié)議仿真模塊,基于步驟S2和S3,實(shí)現(xiàn)動(dòng)態(tài)路由協(xié)議的自動(dòng)化配置。2.如權(quán)利要求1所述的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,其特征在于: 步驟S2中,所述讀取讀文件參數(shù)所指的文件中的相關(guān)變量的值具體包括: 通過文件讀取模塊將讀文件參數(shù)所指的文件內(nèi)容存儲(chǔ)到python的一個(gè)字典對(duì)象中,該字典對(duì)象有兩個(gè)鍵Auto和Protocol,分別作為自動(dòng)部署變量和路由協(xié)議變量;解析得到它們各自的值。3.如權(quán)利要求1所述的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,其特征在于: 步驟S3具體包括:虛擬網(wǎng)絡(luò)配置嗅探模塊利用Iinux網(wǎng)絡(luò)配置庫pyroute2中的網(wǎng)絡(luò)配置模塊IPRoute;首先獲取虛擬路由器各網(wǎng)卡的名稱,再調(diào)用網(wǎng)絡(luò)配置模塊IPRoute的get_addr方法返回各網(wǎng)卡的ip地址信息。4.如權(quán)利要求1所述的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,其特征在于: 步驟S4具體包括:首先根據(jù)文件讀取模塊中獲得的自動(dòng)部署變量的值判斷是否進(jìn)入動(dòng)態(tài)路由協(xié)議仿真模塊,若自動(dòng)部署變量值為真進(jìn)入該動(dòng)態(tài)路由協(xié)議仿真模塊并根據(jù)路由協(xié)議變量的值判斷所要配置的動(dòng)態(tài)路由協(xié)議類型,再調(diào)用虛擬網(wǎng)絡(luò)配置嗅探模塊獲取虛擬路由器的網(wǎng)卡ip地址,根據(jù)獲取的ip地址完成虛擬路由器自身網(wǎng)絡(luò)的配置,最后啟動(dòng)對(duì)應(yīng)的動(dòng)態(tài)路由協(xié)議。5.如權(quán)利要求1所述的可自動(dòng)化部署的虛擬路由器構(gòu)建方法,其特征在于: 還包括: 步驟S5,編寫增量配置模塊,實(shí)現(xiàn)遠(yuǎn)程終端通過ur I控制虛擬路由器配置的功能;包括: 若文件讀取模塊獲得的自動(dòng)部署變量的值為假則進(jìn)入增量配置模塊; 增量配置模塊采用的是python的輕便web框架Bottle應(yīng)用來實(shí)現(xiàn);首先Bottle應(yīng)用有一個(gè)url路由器,創(chuàng)建url路由器將url請(qǐng)求地址綁定到回調(diào)函數(shù)上,回調(diào)函數(shù)實(shí)現(xiàn)了獲取url中的目的地址、下一跳地址和對(duì)應(yīng)虛擬路由器網(wǎng)卡這些變量值并在虛擬路由器上添加或刪除靜態(tài)路由的功能; 接著調(diào)用Bottle應(yīng)用的run函數(shù)啟動(dòng)http監(jiān)聽服務(wù),設(shè)置監(jiān)聽服務(wù)在相應(yīng)的ip地址和端口號(hào)上運(yùn)行; 最后在遠(yuǎn)程終端上將目的地址、下一跳地址和對(duì)應(yīng)虛擬路由器網(wǎng)卡的靜態(tài)路由添加或刪除成功。
【文檔編號(hào)】H04L12/24GK105827464SQ201610323983
【公開日】2016年8月3日
【申請(qǐng)日】2016年5月16日
【發(fā)明人】鄭文輝, 王凱, 王曉鋒, 李劍鋒, 劉淵
【申請(qǐng)人】江南大學(xué)