龔珊珊
摘要:基于NetFPGA硬件平臺設計的可編程虛擬化路由器,為提高其可編程性和靈活性將控制平面與數據平面進行分離,導致二個平面難以正常進行數據傳輸。通過對控制平面的接口進行設置,對OpenVZ虛擬路由實例中Zebra路由協議軟件計算出來的路由表進行提取,并下發給底層NetFPGA來完成交互。本文就如何將路由表提取出來進行了研究,提出了對Zebra路由協議軟件進行二次開發,增加路由表定時更新輸出的功能解決方案。該方案基于Zebra面向對象設計思想,復用其通用接口,設計相應數據結構和函數,增加線程來處理通過Rip、Ospf或Bgp計算得到的路由表。
關鍵詞:NetFPGA 控制平面 數據平面 Zebra
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2014)08-0043-02
1 前言
隨著互聯網規模日益的擴大,用戶的增長,應用和業務的多樣化,使得TCP/IP網絡體系結構在可擴展性、移動性、安全可控性方面存在巨大的挑戰[1],為應對這些挑戰,科研人員提出了未來網絡這一概念。未來網絡[2]旨在設計全新的網絡體系結構和新的網絡協議滿足當前復雜網絡。然而未來網絡新的體系結構、協議、算法等在實際應用之前需要進行大量的理論分析與仿真實驗,更需要在試驗網絡中進行評估與驗證。
作為連接網絡的核心設備,路由器必須要滿足未來網絡需求。然而考慮到傳統路由器封閉性以及網絡試驗對正常業務產生一定影響,導致在部署、實現和驗證的體系結構、算法和協議會非常困難,嚴重制約了互聯網體系結構的研究發展和創新。
為了解決這些問題,研究人員提出了一種新型的路由器—可編程虛擬化路由器[3]。它將可編程性和虛擬化都融合于路由器中,既解決了由于封閉性對新型業務的影響,也滿足了在多種業務的并行運行。可編程虛擬化路由器采用分層思想[4](如圖1):控制平面和數據平面。控制平面負責路由器的虛擬化以及路由協議的運行和維護,得到路由表、ARP表和端口表;數據平面負責路由信息的查找與轉發。將控制引擎與數據平面分離導致二者不能正常交互,需要對控制平面與數據平面進行接口設置,并將VR(虛擬路由器)中路由表下發給轉發模塊。本文基于NetFPGA硬件平臺對路由表提取技術進行了研究。
2 控制平面的虛擬化研究與實現
科研人員把虛擬化技術主要分為:全虛擬化、半虛擬化、系統級虛擬化。全虛擬化技術最大的特點是無需任何修改客戶操作系統就可以直接在虛擬化平臺上運行;半虛擬化技術最大優點是需要改變客戶操作系統內核;系統級虛擬化采用共享操作系統內核手段,是基于操作系統本身之上實現的服務器的虛擬化。綜合比較,采用系統級虛擬化具有其他虛擬技術所沒有的高性能、高效率和高密度特性。其代表技術有:SWsoft公司的開源OpenVZ項目。
在Centos6.0操作系統中安裝OpenVZ內核、OpenVZ用戶管理工具(vzctl和vzquato)并重新啟動OpenVZ。下載需要安裝的模板(centos)到vz/template/cache目錄下,并用vzctl指令創建4個VE分別表示為:VR1、VR2 … VRn(VR表示為虛擬路由器),每個VR中創建4個虛擬網絡接口(對應NetFPGA的4個物理端口),然后下載Zebra軟件包,安裝源碼包,修改配置文件并配置接口IP。
3 虛擬路由器路由表的下發與更新研究與實現
Zebra系統體系結構圖如2所示。
整個系統主要分為三大部分:Zebra交互模塊、路由協議模塊和VTY顯示配置模塊。Zebra模塊負責與路由協議進行交互,將路由協議計算得到的路由表存儲在Rib結構體中;Zebra模塊與Linux內核交互,將進入到Linux中的數據包傳送到路由協議模塊。路由協議模塊負責路由協議計算,主要有三種路由協議RIP、OSPF和BGP并包含IPv6版本。VTY模塊主要方便用戶進行路由協議配置,起人機交互的作用。
通過對Zebra模塊的分析,可以將模塊分為兩個部分:模塊交互部分、路由表管理部分。
模塊交互部分負責與協議模塊進行交互,獲取通過路由協議計算的到得路由表,并交由路由表管理模塊進行管理。
(1)路由表的提取。首先,在../zebra目錄下創建Gtroutertable.h、Gtroutertable.c兩個文件,負責路由提取的功能,在Gtroutertable.c中編寫獲取路由表函數void *Get(…)。在zebra模塊主線程中創建一個新的子線程,當獲取到了路由表的時候,執行該子線程,調用獲取路由表函數,從而提取出所需的路由表。
其次,重新修改Makefile文件,執行make指令進行重新編譯。
(2)路由表的更新。當鏈路發生變化后,通過RIP或OSPF計算出來的路由表也發生了變化,但由于直接從zebra模塊中提取的路由表變化時間較長,不能滿足實時性更新。Zebra中主要包含3種定時器,分別為:update_time、timeout_time、garbage_time。通過在zebra主線程上設置定時器update_time,當路由表發生變化后,立即調用Get(…)獲取路由表函數。從而達到定時更新提取出的路由表的目的。
4 實驗驗證與分析
該實驗基于NetFPGA硬件設計的可編程路由器如下:在每個VR中安裝zebra路由協議軟件,開啟zebra守護進程,運行Rip路由協議。得到的路由表信息分別是圖3、圖4所示。
其中C代表是connect,R代表是運行RIP路由協議。
二者對比,明顯發現隨著鏈路發生變化,所提取的路由表也隨著發生了變化,并且和鏈路變化一致,說明路由表提取是有效的,并是實時更新的。
5 結語
本文針對基于NetFPGA硬件的可編程虛擬化路由器由于采用控制與轉發分離,而導致無法正常交互問題,做了一些分析研究,通過對路由協議軟件的研究與分析,通過對zebra路由協議軟件進行二次開發,添加了路由提取功能和定時更新功能,通過實驗驗證分析,提取的路由表隨著路由信息的改變而更新,并恢復了控制平面與數據平面的正常交互。
參考文獻
[1]Xie Gao-Gang, Zhang Yu-Jun,Li Zhen-Yu,et al.A survey on future Internet architecture[J].Chinese Journal of Computers, 2012,35(6):1109-1119(in Chinese).
[2]Paul S,Pan Jianli,Jain R.Architectures for the future networks and the next generation Internet:a survey[C].Computer Communications.2011.34(1):2-42.
[3]Feldmann Anja.Internet clean-slate design:what and why?[C]ACM SIGCOMM Computer Communication Review.2007.37(3):59-64.
[4]楊懋,劉中金,李勇,曾烈光,金德鵬,蘇厲.基于可編程硬件的虛擬路由器控制平面.清華大學學報(自然科學版)[J].2012,52(5):586-591.
摘要:基于NetFPGA硬件平臺設計的可編程虛擬化路由器,為提高其可編程性和靈活性將控制平面與數據平面進行分離,導致二個平面難以正常進行數據傳輸。通過對控制平面的接口進行設置,對OpenVZ虛擬路由實例中Zebra路由協議軟件計算出來的路由表進行提取,并下發給底層NetFPGA來完成交互。本文就如何將路由表提取出來進行了研究,提出了對Zebra路由協議軟件進行二次開發,增加路由表定時更新輸出的功能解決方案。該方案基于Zebra面向對象設計思想,復用其通用接口,設計相應數據結構和函數,增加線程來處理通過Rip、Ospf或Bgp計算得到的路由表。
關鍵詞:NetFPGA 控制平面 數據平面 Zebra
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2014)08-0043-02
1 前言
隨著互聯網規模日益的擴大,用戶的增長,應用和業務的多樣化,使得TCP/IP網絡體系結構在可擴展性、移動性、安全可控性方面存在巨大的挑戰[1],為應對這些挑戰,科研人員提出了未來網絡這一概念。未來網絡[2]旨在設計全新的網絡體系結構和新的網絡協議滿足當前復雜網絡。然而未來網絡新的體系結構、協議、算法等在實際應用之前需要進行大量的理論分析與仿真實驗,更需要在試驗網絡中進行評估與驗證。
作為連接網絡的核心設備,路由器必須要滿足未來網絡需求。然而考慮到傳統路由器封閉性以及網絡試驗對正常業務產生一定影響,導致在部署、實現和驗證的體系結構、算法和協議會非常困難,嚴重制約了互聯網體系結構的研究發展和創新。
為了解決這些問題,研究人員提出了一種新型的路由器—可編程虛擬化路由器[3]。它將可編程性和虛擬化都融合于路由器中,既解決了由于封閉性對新型業務的影響,也滿足了在多種業務的并行運行。可編程虛擬化路由器采用分層思想[4](如圖1):控制平面和數據平面。控制平面負責路由器的虛擬化以及路由協議的運行和維護,得到路由表、ARP表和端口表;數據平面負責路由信息的查找與轉發。將控制引擎與數據平面分離導致二者不能正常交互,需要對控制平面與數據平面進行接口設置,并將VR(虛擬路由器)中路由表下發給轉發模塊。本文基于NetFPGA硬件平臺對路由表提取技術進行了研究。
2 控制平面的虛擬化研究與實現
科研人員把虛擬化技術主要分為:全虛擬化、半虛擬化、系統級虛擬化。全虛擬化技術最大的特點是無需任何修改客戶操作系統就可以直接在虛擬化平臺上運行;半虛擬化技術最大優點是需要改變客戶操作系統內核;系統級虛擬化采用共享操作系統內核手段,是基于操作系統本身之上實現的服務器的虛擬化。綜合比較,采用系統級虛擬化具有其他虛擬技術所沒有的高性能、高效率和高密度特性。其代表技術有:SWsoft公司的開源OpenVZ項目。
在Centos6.0操作系統中安裝OpenVZ內核、OpenVZ用戶管理工具(vzctl和vzquato)并重新啟動OpenVZ。下載需要安裝的模板(centos)到vz/template/cache目錄下,并用vzctl指令創建4個VE分別表示為:VR1、VR2 … VRn(VR表示為虛擬路由器),每個VR中創建4個虛擬網絡接口(對應NetFPGA的4個物理端口),然后下載Zebra軟件包,安裝源碼包,修改配置文件并配置接口IP。
3 虛擬路由器路由表的下發與更新研究與實現
Zebra系統體系結構圖如2所示。
整個系統主要分為三大部分:Zebra交互模塊、路由協議模塊和VTY顯示配置模塊。Zebra模塊負責與路由協議進行交互,將路由協議計算得到的路由表存儲在Rib結構體中;Zebra模塊與Linux內核交互,將進入到Linux中的數據包傳送到路由協議模塊。路由協議模塊負責路由協議計算,主要有三種路由協議RIP、OSPF和BGP并包含IPv6版本。VTY模塊主要方便用戶進行路由協議配置,起人機交互的作用。
通過對Zebra模塊的分析,可以將模塊分為兩個部分:模塊交互部分、路由表管理部分。
模塊交互部分負責與協議模塊進行交互,獲取通過路由協議計算的到得路由表,并交由路由表管理模塊進行管理。
(1)路由表的提取。首先,在../zebra目錄下創建Gtroutertable.h、Gtroutertable.c兩個文件,負責路由提取的功能,在Gtroutertable.c中編寫獲取路由表函數void *Get(…)。在zebra模塊主線程中創建一個新的子線程,當獲取到了路由表的時候,執行該子線程,調用獲取路由表函數,從而提取出所需的路由表。
其次,重新修改Makefile文件,執行make指令進行重新編譯。
(2)路由表的更新。當鏈路發生變化后,通過RIP或OSPF計算出來的路由表也發生了變化,但由于直接從zebra模塊中提取的路由表變化時間較長,不能滿足實時性更新。Zebra中主要包含3種定時器,分別為:update_time、timeout_time、garbage_time。通過在zebra主線程上設置定時器update_time,當路由表發生變化后,立即調用Get(…)獲取路由表函數。從而達到定時更新提取出的路由表的目的。
4 實驗驗證與分析
該實驗基于NetFPGA硬件設計的可編程路由器如下:在每個VR中安裝zebra路由協議軟件,開啟zebra守護進程,運行Rip路由協議。得到的路由表信息分別是圖3、圖4所示。
其中C代表是connect,R代表是運行RIP路由協議。
二者對比,明顯發現隨著鏈路發生變化,所提取的路由表也隨著發生了變化,并且和鏈路變化一致,說明路由表提取是有效的,并是實時更新的。
5 結語
本文針對基于NetFPGA硬件的可編程虛擬化路由器由于采用控制與轉發分離,而導致無法正常交互問題,做了一些分析研究,通過對路由協議軟件的研究與分析,通過對zebra路由協議軟件進行二次開發,添加了路由提取功能和定時更新功能,通過實驗驗證分析,提取的路由表隨著路由信息的改變而更新,并恢復了控制平面與數據平面的正常交互。
參考文獻
[1]Xie Gao-Gang, Zhang Yu-Jun,Li Zhen-Yu,et al.A survey on future Internet architecture[J].Chinese Journal of Computers, 2012,35(6):1109-1119(in Chinese).
[2]Paul S,Pan Jianli,Jain R.Architectures for the future networks and the next generation Internet:a survey[C].Computer Communications.2011.34(1):2-42.
[3]Feldmann Anja.Internet clean-slate design:what and why?[C]ACM SIGCOMM Computer Communication Review.2007.37(3):59-64.
[4]楊懋,劉中金,李勇,曾烈光,金德鵬,蘇厲.基于可編程硬件的虛擬路由器控制平面.清華大學學報(自然科學版)[J].2012,52(5):586-591.
摘要:基于NetFPGA硬件平臺設計的可編程虛擬化路由器,為提高其可編程性和靈活性將控制平面與數據平面進行分離,導致二個平面難以正常進行數據傳輸。通過對控制平面的接口進行設置,對OpenVZ虛擬路由實例中Zebra路由協議軟件計算出來的路由表進行提取,并下發給底層NetFPGA來完成交互。本文就如何將路由表提取出來進行了研究,提出了對Zebra路由協議軟件進行二次開發,增加路由表定時更新輸出的功能解決方案。該方案基于Zebra面向對象設計思想,復用其通用接口,設計相應數據結構和函數,增加線程來處理通過Rip、Ospf或Bgp計算得到的路由表。
關鍵詞:NetFPGA 控制平面 數據平面 Zebra
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2014)08-0043-02
1 前言
隨著互聯網規模日益的擴大,用戶的增長,應用和業務的多樣化,使得TCP/IP網絡體系結構在可擴展性、移動性、安全可控性方面存在巨大的挑戰[1],為應對這些挑戰,科研人員提出了未來網絡這一概念。未來網絡[2]旨在設計全新的網絡體系結構和新的網絡協議滿足當前復雜網絡。然而未來網絡新的體系結構、協議、算法等在實際應用之前需要進行大量的理論分析與仿真實驗,更需要在試驗網絡中進行評估與驗證。
作為連接網絡的核心設備,路由器必須要滿足未來網絡需求。然而考慮到傳統路由器封閉性以及網絡試驗對正常業務產生一定影響,導致在部署、實現和驗證的體系結構、算法和協議會非常困難,嚴重制約了互聯網體系結構的研究發展和創新。
為了解決這些問題,研究人員提出了一種新型的路由器—可編程虛擬化路由器[3]。它將可編程性和虛擬化都融合于路由器中,既解決了由于封閉性對新型業務的影響,也滿足了在多種業務的并行運行。可編程虛擬化路由器采用分層思想[4](如圖1):控制平面和數據平面。控制平面負責路由器的虛擬化以及路由協議的運行和維護,得到路由表、ARP表和端口表;數據平面負責路由信息的查找與轉發。將控制引擎與數據平面分離導致二者不能正常交互,需要對控制平面與數據平面進行接口設置,并將VR(虛擬路由器)中路由表下發給轉發模塊。本文基于NetFPGA硬件平臺對路由表提取技術進行了研究。
2 控制平面的虛擬化研究與實現
科研人員把虛擬化技術主要分為:全虛擬化、半虛擬化、系統級虛擬化。全虛擬化技術最大的特點是無需任何修改客戶操作系統就可以直接在虛擬化平臺上運行;半虛擬化技術最大優點是需要改變客戶操作系統內核;系統級虛擬化采用共享操作系統內核手段,是基于操作系統本身之上實現的服務器的虛擬化。綜合比較,采用系統級虛擬化具有其他虛擬技術所沒有的高性能、高效率和高密度特性。其代表技術有:SWsoft公司的開源OpenVZ項目。
在Centos6.0操作系統中安裝OpenVZ內核、OpenVZ用戶管理工具(vzctl和vzquato)并重新啟動OpenVZ。下載需要安裝的模板(centos)到vz/template/cache目錄下,并用vzctl指令創建4個VE分別表示為:VR1、VR2 … VRn(VR表示為虛擬路由器),每個VR中創建4個虛擬網絡接口(對應NetFPGA的4個物理端口),然后下載Zebra軟件包,安裝源碼包,修改配置文件并配置接口IP。
3 虛擬路由器路由表的下發與更新研究與實現
Zebra系統體系結構圖如2所示。
整個系統主要分為三大部分:Zebra交互模塊、路由協議模塊和VTY顯示配置模塊。Zebra模塊負責與路由協議進行交互,將路由協議計算得到的路由表存儲在Rib結構體中;Zebra模塊與Linux內核交互,將進入到Linux中的數據包傳送到路由協議模塊。路由協議模塊負責路由協議計算,主要有三種路由協議RIP、OSPF和BGP并包含IPv6版本。VTY模塊主要方便用戶進行路由協議配置,起人機交互的作用。
通過對Zebra模塊的分析,可以將模塊分為兩個部分:模塊交互部分、路由表管理部分。
模塊交互部分負責與協議模塊進行交互,獲取通過路由協議計算的到得路由表,并交由路由表管理模塊進行管理。
(1)路由表的提取。首先,在../zebra目錄下創建Gtroutertable.h、Gtroutertable.c兩個文件,負責路由提取的功能,在Gtroutertable.c中編寫獲取路由表函數void *Get(…)。在zebra模塊主線程中創建一個新的子線程,當獲取到了路由表的時候,執行該子線程,調用獲取路由表函數,從而提取出所需的路由表。
其次,重新修改Makefile文件,執行make指令進行重新編譯。
(2)路由表的更新。當鏈路發生變化后,通過RIP或OSPF計算出來的路由表也發生了變化,但由于直接從zebra模塊中提取的路由表變化時間較長,不能滿足實時性更新。Zebra中主要包含3種定時器,分別為:update_time、timeout_time、garbage_time。通過在zebra主線程上設置定時器update_time,當路由表發生變化后,立即調用Get(…)獲取路由表函數。從而達到定時更新提取出的路由表的目的。
4 實驗驗證與分析
該實驗基于NetFPGA硬件設計的可編程路由器如下:在每個VR中安裝zebra路由協議軟件,開啟zebra守護進程,運行Rip路由協議。得到的路由表信息分別是圖3、圖4所示。
其中C代表是connect,R代表是運行RIP路由協議。
二者對比,明顯發現隨著鏈路發生變化,所提取的路由表也隨著發生了變化,并且和鏈路變化一致,說明路由表提取是有效的,并是實時更新的。
5 結語
本文針對基于NetFPGA硬件的可編程虛擬化路由器由于采用控制與轉發分離,而導致無法正常交互問題,做了一些分析研究,通過對路由協議軟件的研究與分析,通過對zebra路由協議軟件進行二次開發,添加了路由提取功能和定時更新功能,通過實驗驗證分析,提取的路由表隨著路由信息的改變而更新,并恢復了控制平面與數據平面的正常交互。
參考文獻
[1]Xie Gao-Gang, Zhang Yu-Jun,Li Zhen-Yu,et al.A survey on future Internet architecture[J].Chinese Journal of Computers, 2012,35(6):1109-1119(in Chinese).
[2]Paul S,Pan Jianli,Jain R.Architectures for the future networks and the next generation Internet:a survey[C].Computer Communications.2011.34(1):2-42.
[3]Feldmann Anja.Internet clean-slate design:what and why?[C]ACM SIGCOMM Computer Communication Review.2007.37(3):59-64.
[4]楊懋,劉中金,李勇,曾烈光,金德鵬,蘇厲.基于可編程硬件的虛擬路由器控制平面.清華大學學報(自然科學版)[J].2012,52(5):586-591.