从三个开源项目认识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 ...
随机推荐
- Suricata默认规则集相关
Suricata规则集 Suricata 基于规则检测和控制数据流量,所有规则的配置文件保存在rules目录内 .这些是已知和确认的活动僵尸网络和其C&C(command and contro ...
- Duplicate column name 'vocabulary'
创建一个视图: 报错:Duplicate column name 'vocabulary' 意思是视图select的列名重复了,取别名 改成这样就ok了
- 2017级C语言教学总结
一个学期下来,对于这门课教学还是感受挺多,多个教学平台辅助,确实和我前10年的教学方式区别很多,也辛苦很多. 一.课堂教学方面 1.课堂派预习作业 主要借助课堂派平台,每次课前发布预习作业.而预习作业 ...
- 大数据技术Hadoop笔试题
Hadoop有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.以下是由应届毕业生网小编J.L为您整理推荐的面试笔试题目和经验,欢迎参考阅读. 单项选择题 1. 下面哪个程序负责 H ...
- webapi 使用Autofac 开发经历
2018/4/6 号 早上五点..被手机震动吵醒. 之后直接打开电脑,打算再加强下我自己的webapi这套东西. 虽然三年的工作经验接触了N多框架和各种风格的开发方式,但是让我自己来搞一套实在不会搞, ...
- Python-函数-Day4
1.函数 1.1.集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 a = {1,2,3,4} b ={3,4,5,6} a {1, 2, 3, 4} type(a) <c ...
- C语言学习(一)
C语言易学难精,如果在平时的编程中,加入一些小技巧,可以提供程序运行的效率,何乐而不为呢? 本小白初学C语言准备记录自己的学C之路,经常贴一些自己觉得优化的小程序代码,希望大神们不吝 赐教. 宏定义下 ...
- unity A*寻路 (三)A*算法
这里我就不解释A*算法 如果你还不知道A*算法 网上有很多简单易懂的例子 我发几个我看过的链接 http://www.cnblogs.com/lipan/archive/2010/07/01/1769 ...
- tomca配置文件自动还原问题的解决 server.xml content.xml 等
当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为 ...
- kubernetes入门(06)kubernetes的核心概念(3)
一.API 对象 API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作.例如副本集Replica Set对应的A ...