虛擬路由方案雜談錄之OpenContrail,Vyatta,RouteFlow
前言——關(guān)于虛擬路由
SDN,抑或是OpenFlow,能否為路由市場開辟一個新的時代?以O(shè)penvSwitch為代表的開源軟件交換機,已經(jīng)推動SDN界發(fā)展了一段路程,但是,開源的、基于軟件的路由器或路由方案卻顯得很少。為此,本文介紹了三種比較成體系的虛擬路由方案,并對其中一款做一個架構(gòu)簡述。本文所介紹的虛擬路由方案主要是:OpenContrail,Vyatta,RouteFlow。
OpenContrail
OpenContrail包含OpenContrail控制器和OpenContrail虛擬路由。
OpenContrail控制器是一個邏輯上集中但是物理上分布的SDN控制器,為虛擬網(wǎng)絡(luò)提供管理,控制和分析功能。
OpenContrail vRouter是一個分布式的路由服務(wù),運行在虛擬服務(wù)器的hypervisor上,將網(wǎng)絡(luò)從一個數(shù)據(jù)中心的網(wǎng)絡(luò)的物理路由器和交換機擴展成一個虛擬的基于虛擬服務(wù)器主機之間通訊的overlay網(wǎng)絡(luò)。
在OpenContrail中,虛擬路由器和hypervisor緊密結(jié)合,借助MPLS over GRE/UDP或VXLAN實現(xiàn)Overlay網(wǎng)絡(luò)。penContrail的跨數(shù)據(jù)中心虛擬化是借助MPLS L3 VPN或者EVPN實現(xiàn)的,這種技術(shù)比較成熟可靠。OpenContrail虛擬路由器從概念上和現(xiàn)在vSwitch非常接近,但是它提供路由以及更高層的服務(wù)(使用vRouter替代vSwitch)。
OpenContrail架構(gòu):
可以看到其中包含的分布式的控制器和vRouter。OpenContrail提供了完善的東西南北向接口。北向接口提供的REST接口能被供應(yīng)商使用,或是集成至OpenStack之類的系統(tǒng)(ONOS也提供了類似功能的北向接口);南向接口主要是用于虛擬或物理網(wǎng)絡(luò)環(huán)境的通訊;東西向接口可以與其他控制器通訊。在OpenContrail中使用了多種協(xié)議,如BGP、XMPP、Netconf等,在圖中可以看到它們的用途。
實際上,控制器包含三個組件,可以部署在不同物理節(jié)點上的組件:配置節(jié)點、控制節(jié)點和分析節(jié)點。
配置節(jié)點:作為中介,在上層應(yīng)用和下層基礎(chǔ)間提供轉(zhuǎn)換,即利用底層基礎(chǔ)實現(xiàn)上層應(yīng)用的功能。
控制節(jié)點:主要負責網(wǎng)絡(luò)的信息同步,確保環(huán)境中的信息一致。
分析節(jié)點:提供的功能有點類似于統(tǒng)計分析,把收集回來的系統(tǒng)數(shù)據(jù)進行分析并進行展示。關(guān)于虛擬路由功能:
虛擬路由器是一個用戶空間進程,在Linux中運行,是一個本地的,輕量控制平面。并且每個虛擬路由器都會連接至少兩個控制節(jié)點,提供了路由的冗余。
虛擬路由器主要依靠XMPP接受來自控制節(jié)點上的配置狀態(tài),并實現(xiàn)這些配置狀態(tài),同時兼顧事件和日志等匯報工作。
關(guān)于XMPP:
XMPP基于XML,原叫Jabber,OpenContrail系統(tǒng)使用XMPP作為一個計算節(jié)點和控制節(jié)點之間的通用信息總線。
RouteFlow:
RouteFlow是由巴西CPQD公司開發(fā)的一套虛擬IP路由服務(wù)。目前的網(wǎng)絡(luò)設(shè)備大多是專有軟件運行在專有硬件上,價格高昂,難以被編程,一定程度上限制了創(chuàng)新。RouteFlow的開發(fā)動機就是在開源路由工具的基礎(chǔ)上,結(jié)合開放api,在商用硬件上實現(xiàn)一個性能良好的,可定制的開放路由方案。
與傳統(tǒng)的路由架構(gòu)比較:
現(xiàn)有方案:

Routeflow方案:

可以看到,控制邏輯位于控制器,分離數(shù)據(jù)平面與控制平面。這樣一來,硬件架構(gòu)就可以進一步簡化。
#p#
系統(tǒng)組成:
架構(gòu)圖:

一套完整的Routeflow包含以下幾個主要組件:RF-Controller,RF-Server,RF-Slave
系統(tǒng)的關(guān)鍵特性:
1.分離的數(shù)據(jù)平面與控制平面
2.松耦合的架構(gòu)
3.不變的路由協(xié)議堆棧
4.容易擴展為多控制器
5.支持多種虛擬化技術(shù)
6.支持多種交換機
RF-Controller:
這是一個基于Openflow控制器的應(yīng)用,為Openflow API扮演一個proxy的角色,同時與Openflow datapath相互作用,與RF-Server協(xié)同工作,接收flow相關(guān)的命令并通過OVS為VM傳送數(shù)據(jù)。
RF-Server:
它作為Routeflow的核心,它負責的工作主要有管理VM,配置虛擬環(huán)境(virtual environment),接收來自RF-Controller的事件(如packet-in),使VM與Openflow交換機關(guān)聯(lián)起來決定VM的數(shù)據(jù)包的傳輸,請求在Openflow交換機中安裝或修改一個flow。
RF-Slave:
它作為daemon在基于Linux的VM中運行,還負責把VM注冊到RF-server并配置VM,通過Linux netlink事件監(jiān)聽ARP與IP表的更新,把路由更新(routing updates)轉(zhuǎn)換為flow規(guī)則,把ARP entry轉(zhuǎn)換為flow規(guī)則,它還可以發(fā)送flow updates至RF-Server。
它主要配置接口,啟用、關(guān)閉路由引擎,執(zhí)行對接口配置和ARP或路由表的清理。
Routeflow所依賴的一些軟件:
Quagga:
Quagga是由一個日本開發(fā)團隊編寫的一個以GNU版權(quán)方式發(fā)布的軟件。該項目自1996年運作至今。
借助Quagga可以實現(xiàn)一臺功能完備的路由器。Quagga能夠同時支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP-4和 BGP-4+等諸多TCP/IP協(xié)議。Quagga的特性主要有:模塊化設(shè)計:它使用了模塊化的架構(gòu),一種協(xié)議對應(yīng)一個模塊。
運行速度快:基于模塊化的架構(gòu),速度很快。
可靠性高:可以在工作期間進行故障診斷和修復。
支持Ipv6:Quagga不僅支持Ipv4,還支持Ipv6。
容易上手:Quagga的配置方式和Cisco的IOS幾乎完全相同。
#p#
MongoDB:
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
特點:高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。
主要功能特性有:
面向集合存儲在Routeflow中提供基本的路由功能。
無模式
動態(tài)查詢
支持索引
支持復制和故障恢復
使用BSON格式儲存數(shù)據(jù)
能自動處理碎片,以支持云計算層次的擴展性
支持Python,Java等多種語言的綁定
在Routeflow中主要為RF-Serve儲存數(shù)據(jù)。
Vyatta:
Vyatta公司在2002年提供了開源版本的虛擬路由,后來博科收購了Vyatta虛擬路由,后來更是推出了Vyatta控制器,野心不小,目的是能控制所有博科的硬件設(shè)備和符合ODL標準的相關(guān)硬件。目前Vyatta的相關(guān)資料并不多,但是博科提供了Vyatta 5400的60天免費試用。
但是,出現(xiàn)了一個社區(qū)版fork,叫VyOS。VyOS支持的平臺從KVM、XEN、VMware、Hyper-V到VirtualBox。支持IPv4和IPv6 BGP,OSPFv2及OSPFv3(尚不完全),RIP等。
結(jié)語:
目前市面上可供選擇的虛擬路由方案并不多,只有像Juniper收購的OpenContrail,Brocade的Vyatta。所屬Juniper的OpenContrail,的確在整體上都是非常給力的,但是Juniper似乎沒有好好地維護開源版的文檔及軟件源,部署有相當大的困難。
Brocade的Vyatta只有60天的試用,始終不是最好的研究對象,但生產(chǎn)環(huán)境可以考慮下。也可以考慮使用下由社區(qū)主導的VyOS。只剩CPQD的RouteFlow比較適合研究,但是要應(yīng)用到生產(chǎn)環(huán)境就得花點功夫,文檔并不多。
在如今的虛擬路由市場,競爭并不健康,在傳統(tǒng)網(wǎng)絡(luò)硬件供應(yīng)商的割據(jù)下,并不利于學術(shù)研究。本文在介紹其他兩種方案的同時對Routeflow的架構(gòu)做了大體的介紹,希望本文能對各位研究者有所幫助。