漫谈虚拟路由方案

前言——关于虚拟路由

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方案:

可以看到,控制逻辑位于控制器,分离数据平面与控制平面。这样一来,硬件架构就可以进一步简化。

系统组成:

架构图:

一套完整的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几乎完全相同。

在Routeflow中提供基本的路由功能。

软件官网:http://www.nongnu.org/quagga/

MongoDB

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

特点:高性能、易部署、易使用,存储数据非常方便。

主要功能特性有:

  • 面向集合存储
  • 无模式
  • 动态查询
  • 支持索引
  • 支持复制和故障恢复
  • 使用BSON格式储存数据
  • 能自动处理碎片,以支持云计算层次的扩展性
  • 支持Python,Java等多种语言的绑定

在Routeflow中主要为RF-Serve储存数据。

软件官网:https://www.mongodb.org/

Vyatta:

Vyatta公司在2002年提供了开源版本的虚拟路由,后来博科收购了Vyatta虚拟路由,后来更是推出了Vyatta控制器,野心不小,目的是能控制所有博科的硬件设备和符合ODL标准的相关硬件。目前Vyatta的相关资料并不多,但是博科提供了Vyatta 5400的60天免费试用。

试用链接:http://www1.brocade.com/forms/jsp/vyatta-download/index.jsp?src=WS&lsd=Banner&lst=BRCD&cn=SDN-GDG-14Q1-EVAL-WS-Vyatta-Download&gcn=&ggeo=

但是,出现了一个社区版fork,叫VyOS,可以参考官网:http://vyos.net/wiki/Main_Page

VyOS支持的平台从KVM、XEN、VMware、Hyper-V到VirtualBox。支持IPv4和IPv6 BGP,OSPFv2及OSPFv3(尚不完全),RIP等,关于详细的特性信息可以看这里:http://vyos.net/wiki/Feature_list

结语:

目前市面上可供选择的虚拟路由方案并不多,只有像Juniper收购的OpenContrail,Brocade的Vyatta。所属Juniper的OpenContrail,的确在整体上都是非常给力的,但是Juniper似乎没有好好地维护开源版的文档及软件源,部署有相当大的困难。

Brocade的Vyatta只有60天的试用,始终不是最好的研究对象,但生产环境可以考虑下。也可以考虑使用下由社区主导的VyOS。只剩CPQD的RouteFlow比较适合研究,但是要应用到生产环境就得花点功夫,文档并不多。

在如今的虚拟路由市场,竞争并不健康,在传统网络硬件供应商的割据下,并不利于学术研究。本文在介绍其他两种方案的同时对Routeflow的架构做了大体的介绍,希望本文能对各位研究者有所帮助。

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2015-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

突破封闭 Web 系统的技巧之旁敲侧击

我将上面讲的"需要认证后才能进入系统进行操作,但是当前没有认证凭证"的 web 系统统一称为"封闭的 Web 系统",本文认为阅读人员有一定的渗透测试经验,并将...

17700
来自专栏强仔仔

网上员工考试培训系统

计目的及任务 利用流行的JAVA语言框架SSH(Struts2+Spring+Hibernate)框架,实现网上员工考试培训系统的开发,旨在模拟完成一个功能完...

35790
来自专栏SDNLAB

漫谈DPI工具

01 聊聊DPI DPI即深度数据包检测,这种技术一般是针对应用层的流量进行检测和控制。当有流量经过时基于DPI的监控系统后,系统需要读取报文中OSI七层协议...

563130
来自专栏Timhbw博客

windows安装双系统教程

2016-04-2222:19:23 发表评论 1,001℃热度 下载windows系统 安装windows系统 目录 装双系统其实mac下更难,wind...

37350
来自专栏美团技术团队

大众点评账号业务高可用进阶之路

21330
来自专栏逸鹏说道

数据库高可用实战案例

原文链接:http://www.cnblogs.com/double-K/p/5803956.html 说到高可用,看官们会想到很多方案,也许是自亲身经历过系统...

37370
来自专栏腾讯移动品质中心TMQ的专栏

论Android适配踩到的坑

说起Android适配,恐怕是每一个Android开发/测试工程师心里的痛,且不论Android设备品牌众多、分辨率各异等痛点,单论Android版本的繁多也会...

38480
来自专栏移动端开发

iOS 即时通讯 + 仿微信聊天框架 + 源码

更新:2017年8月1日 实在是抱歉,git上的Demo这么久,有问题自己没有发现!肯定给大家造成过不方便,抱歉!git上Demo刚重新上传,要有需要的可以去...

1.2K50
来自专栏FreeBuf

数据安全分析思想探索

日志分析在入侵检测中的应用越来越广泛,合适的使用日志,使日志产生巨大的价值,本文旨在探讨如何让日志的价值在安全领域发挥作用。

24440
来自专栏腾讯NEXT学位

怎样让开源项目看起来“高大上”

38540

扫码关注云+社区

领取腾讯云代金券