从三个开源项目认识OpenFlow交换机 - OVS
|
在SDN/NFV的网络革新技术浪潮的引领下,催生了诸多数据面开源方案的诞生。业界知名度较高的有OVS(Open vSwitch)、FD.io (Fast Data I/O)、ODP(Open Data Plane)。 然而,在现有的虚拟交换机中,OVS作为主流的开源方案,是目前大多数虚拟化环境和OpenStack部署中的网络基础,可以在很多SDN/NFV场景下进行灵活部署。 什么是OVS? Open vSwitch是由Nicira公司使用C和Python语言开发实现的遵循开源Apache2.0许可的产品级质量的多层虚拟交换机,目的是让大规模网络通过可编程实现自动化扩展。 它既可以作为一个软件交换机运行在虚拟化层,也可以作为交换芯片的控制栈实现,支持多种标准管理接口和协议(NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。
OVS项目的开源发展历史: OVS项目早在2009年,就已孵化诞生,于2012年7月30日发布第一个开源版本V1.7.0,经过这几年的不断发展壮大,到目前为止,OVS开源版本已经更新到V2.6.0。图2简单展示了其开源版本的更新历程。
随着其社区生态圈日趋丰富,OVS已经被移植到多种虚拟化平台(XenServer6.0、Xen 、KVM、Proxmox VE、VirtualBox)和交换芯片组。 同时被集成到许多虚拟化管理系统(OpenStack、openQRM、OpenNebula、oVirt)。 此外,内核datapath已经被纳入Linux内核作为发行版的一部分,像知名的Linux操作系统Ubuntu、Debian、Fedora也都提供了datapath的安装包。 OVS同样也支持FreeBSD和NetBSD,更有DPDK( Data Plane Development Kit )助力加速OVS,帮助改善其转发性能。 OVS的组成结构: OVS的构成非常简单,每个部件负责各自的职责,图3描述了其基础架构组成。
简单了解完OVS本身,接下来我们通过两个子项目,再进行深入认识: 子项目1:OpenFlow伙伴协议——OF-CONFIG 为了对控制器做更好的支持而诞生。因OVS中的OVSDB协议无法很好的服务于交换机的配置管理,所以就促成了OVS需要支持OF-CONFIG协议的需求,从而有了OVS旗下的OF-CONFIG开源子项目。 首先简单认识一下,什么是OF-CONFIG? 基于NETCONF协议实现,依赖于NETCONF的操作和传输标准,旨在对OpenFlow交换机实现远程管理。 其次,OF-CONFIG能够帮我们完成哪些方面的工作?
最后,看一下OVS是如何在现有的基础架构上支持OF-CONFIG?
图4显示了OF-CONFIG对接OVS的架构实现,OF-CONFIG server作为一个系统守护进程,和OVSDB server之间通过OVSDB IDL(Interface Definition Language)建立连接。 然后OF-CONFIG server等待来自NETCONF agent的会话连接请求,一个NETCONF会话连接请求对应一个NETCONF agent。NETCONF agent在启动的时候和OF-CONFIG server建立连接, 并和OF-CONFIG client完成会话建立的握手。OF-CONFIG server和OF-CONFIG client之间通过D-BUS或UNIX socket方式的进行内部通信。 子项目2:开放虚拟网络OVN 为更好的服务于云计算环境而诞生。由于 Openstack Neutron 的实现架构存在一些性能问题,比如 neutron-server 要与非常多的 agent 之间通信, 存在RPC(Remote Procedure Call Protocol)性能瓶颈,还有 neutron 里用到非常多的 namespace,namespace 资源有限且系统开销比较大,这里也存在性能瓶颈。 从长远来看,OVS 社区觉得Neutron 应该让一个其它的项目来做虚拟网络的控制平面,Neutron 只需要提供 API 的处理, 于是 OVS 社区于2015年1月推出了 OVN(Open Virtual Network),用来给OVS引入一个轻量级的控制平面,致力于提高基于OVS的OpenStack网络方案的扩展性和易用性。 首先,看看OVN的实现架构:
其次,了解OVN组成结构: 图5描述了OVN的总体实现架构,结合表3的描述,我们可以简单了解OVN的每个组件的基本功能实现。
OVN 对运行平台没有额外要求,只要能够运行 OVS,就可以运行 OVN,所以 OVN 可以和 Linux,Docker,DPDK 还有 Hyper-V 兼容,从 OVS 升级到 OVN 也是非常容易的。 最后,了解一下引入OVN是如何简化OVS在OpenStack中的集成。 OpenvSwitch OVN项目将租户的概念引入了OVS,正式向neutron方向发展,提供对L2/L3网络虚拟化的支持。引入OVN架构,通过替代OVS agent、L3 agent和DHCP agent, 从而简化Open vSwitch在Neutron的集成。OVS集成OpenStack在没有OVN和有OVN支持的两种情况下的架构实现如下图所示:
通过以上三个开源项目的简单介绍,我们可以认识到,OVS作为一款优秀的开源Openflow交换机,在不断提供丰富功能特性的同时, 也注重和控制器及云管平台的对接支持,从而利用丰富的开源社区生态来组建实现灵活多样的SDN/NFV应用场景。 |
从三个开源项目认识OpenFlow交换机 - OVS的更多相关文章
- SDN开源项目以及组织机构
SDN开源项目以及组织机构 以上内容均摘自网络 如有侵权,请转告笔者,立即删除 两大组织 ONF (Open Networking Foundation) Google.Facebook.Micros ...
- Android开源项目分包方式学习(eoe、oschina、github)
总感觉Android中关于分包的文章很少,或者几乎可以说没有.但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展. 因为没有相关的文章,所以这 ...
- Equinox开源项目CQRS架构分析
CQRS架构下Equinox开源项目分析 一.DDD分层架构介绍 本篇分析CQRS架构下的Equinox开源项目.该项目在github上star占有2.4k.便决定分析Equinox项目来学习下CQR ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- 学习Coding-iOS开源项目日志(三)
继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...
- GitHub上不错的Android开源项目(三)
收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...
- 转__Android开源项目(三 完结篇)
http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale/1 截至目前,在GitHub“最受 ...
- GitHub上最火的74个Android开源项目(三)
此前,推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“GitHub上最火的40个Android开源项目(一).(二)中,我们也相继盘点了40个GitHub上最受欢迎的A ...
- 开源项目MultiChoiceAdapter详解(三)——MulitChoiceNormalArrayAdapter的使用
MulitChoiceNormalArrayAdapter是我自己定义的一个类,其实就是实现了MulitChoiceArrayAdapter,为什么做这个简单的实现类呢,因为这样我们在不用Action ...
随机推荐
- 工作流Activiti5.13学习笔记(一)
了解工作流 1.工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某 ...
- spring学习笔记二 注解及AOP
本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...
- alpha-咸鱼冲刺day9-紫仪
总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 大概差不多了.不过提交似乎又出了问题正在修改ing 四,问题困难 页面整合啥的凑合一下.因为后面跟着学长速成的PH ...
- 201621123050 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- cpp常用函数总结
//sprintf sprintf(temp_str_result, "%lf", temp_double); result = temp_str_result; (*begin) ...
- HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享
[数据恢复故障描述] 客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...
- python 面向对象之继承与派生
一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...
- 从一个事件绑定说起 - DOM
事件绑定的方式 给 DOM 元素绑定事件分为两大类:在 html 中直接绑定 和 在 JavaScript 中绑定. Bind in HTML 在 HTML 中绑定事件叫做内联绑定事件,HTML 的元 ...
- Docker学习笔记 - Docker部署nginx网站
一.制作 nginx 镜像 1.下载配置文件 mkdir /opt/nginx_docker && cd /opt/nginx_docker mkdir nginx && ...
- j2ee基础(1)servlet的生命周期
Servlet的生命周期 Servlet 生命周期规定了 Servlet 如何被加载.实例化.初始化. 处理客户端请求,以及何时结束服务. 该生命周期可以通过 javax.servlet.Servle ...