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

Routeflow方案:

可以看到,控制邏輯位于控制器,分離數據平面與控制平面。這樣一來,硬件架構就可以進一步簡化。
#p#
系統組成:
架構圖:

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