文档章节

Open vSwitch(OvS)源代码分析之简介

SDN_LAB
 SDN_LAB
发布于 2014/10/30 14:01
字数 1624
阅读 187
收藏 1
点赞 0
评论 1

云计算是现在IT行业比较流行的,但真正什么是云计算业界也没有个什么统一的定义(很多公司都是根据自己的利益狭隘的定义云计算),更别说什么标准 规范了。所以现在就有很多人说云计算只不过是个幌子,是个嘘头,没点实用的,嘴上说说而已,虽然我也不太清楚什么叫做云计算,云计算的定义究竟是什么,但 我根据我公司现在做的云计算产品来说,对于云计算服务还是懂些的。我觉得那并不是什么幌子、嘘头,但如果说这云计算技术还不太成熟,我倒还勉强认可的。若 把云计算比作一个人的话,我个人觉得现在它正是二十岁的样子,到三十多岁就算是比较成熟了,所以大概就能想象的到云计算现在的境况了。下面就来简介下实现 云计算的一些技术,我对云计算并没有什么研究,也没能达到从全局的角度来分析云计算技术,更别说从一些更高的位置来分析问题,我所能介绍的仅仅是我一个小 程序员在工作中所遇到的一些和云计算有关的技术,日积月累,希望终有一天能成为云计算“砖家”。

云计算是个全世界的话题,所以也有全世界的能人异士来为实现这个云计算而奋斗。我现阶段遇到的有关云计算的技术就是Open vSwitch、OpenStack技术和docker技术。那就先从Open vSwitch开始介绍起,我会用一系列blog来分析Open vSwitch的相关数据结构和工作流程,以及各个重要模块的分析。所有的介绍都是基于源码的分析,希望对初学着有点用。

Open vSwitch,根据其名就可以知道这是一个开放的虚拟交换机(open virtual switch);它是实现网络虚拟化SDN的基础,它是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准。设计这个Open vSwitch的目的是为了解决物理交换机存在的一些局限性:Open vSwitch较物理交换机而言有着更低的成本和更高的工作效率;一个虚拟交换机可以有几十个端口来连接虚拟机,而Open vSwitch本身占用的资源也非常小;可以根据自己的选择灵活的配置,可以对数据包进行接收分析处理;同时还支持标准的管理接口和协议,如 NetFlow、sFlow、SPAN、RSPAN等。

Open vSwtich模块介绍

当前最新代码包主要包括以下模块和特性:

  • ovs-vswitchd :主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;

  • ovsdb-server :轻量级数据库服务器,提供ovs-vswitchd获取配置信息;

  • ovs-brcompatd :让ovs-vswitch替换Linux bridge,包括获取bridge ioctls的Linux内核模块;

  • ovs-dpctl: 用来配置switch内核模块;

  • 一些Scripts and specs: 辅助OvS安装在Citrix XenServer上,作为默认switch;

  • ovs-vsctl :查询和更新ovs-vswitchd的配置;

  • ovs-appctl :发送命令消息,运行相关daemon;

  • ovsdbmonitor: GUI工具,可以远程获取OvS数据库和OpenFlow的流表。

  • ovs-openflowd:一个简单的OpenFlow交换机;

  • ovs-controller:一个简单的OpenFlow控制器;

  • ovs-ofctl :查询和控制OpenFlow交换机和控制器;

  • ovs-pki :OpenFlow交换机创建和管理公钥框架;

  • ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;

上面是网上提到的一些Open vSwitch的主要模块。其实Open vSwitch中最主要的还是datapath目录下的一些文件。有端口模块vport等,还有关键的逻辑处理模块datapath等,以及flow等流 表模块,最后的还有action动作响应模块,通道模块等等。

Open vSwtich工作流程

一般的数据包在linux网络协议栈中的流向为黑色箭头流向:从网卡上接受到数据包后层层往上分析,最后离开内核态,把数据传送到用户态。当然也有些数据包只是在内核网络协议栈中操作,然后再从某个网卡发出去。

但当其中有openVswitch时,数据包的流向就不一样了。首先是创建一个网桥:ovs-vsctl add-br br0;然后是绑定某个网卡:绑定网卡:ovs-vsctl add-port br0 eth0;这里默认为绑定了eth0网卡。数据包的流向是从网卡eth0上然后到openVswitch的端口vport上进入openVswitch 中,然后根据key值进行流表的匹配。如果匹配成功,则根据流表中对应的action找到其对应的操作方法,完成相应的动作(这个动作有可能是把一个请求 变成应答,也有可能是直接丢弃,也可以自己设计自己的action);如果匹配不成功,则执行默认的动作,有可能是放回内核网络协议栈中去处理(在创建网 桥时就会相应的创建一个端口连接内核协议栈的)。

其大概工作流程就是这样了,在工作中一般在这几个地方来修改内核代码以达到自己的目的:第一个是在datapath.c中的 ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)函数内添加相应的代码来达到自己的目的,因为对于每个数据包来说这个函数都是必经之地;第二个就是自己去设计自己的流表了;第三个和第二个是相 关联的,就是根据流表来设计自己的action,完成自己想要的功能。

想要了解更多,请关注http://www.sdnlab.com

更多资讯加入SDNLAB官方微信:


© 著作权归作者所有

共有 人打赏支持
SDN_LAB
粉丝 24
博文 186
码字总数 268737
作品 0
南京
加载中

评论(1)

lhbpping
lhbpping
good
SDN 技术指南(四):Open vSwitch

摘要 Open vSwitch 安装 Open vSwitch 命令行 Open vSwitch 运行原理 Open vSwitch 性能监控 前言 由之前发布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源...

RiboseYim
2017/10/16
0
0
Open vSwitch 简介

概述 Open vSwitch 是一个高质量的、多层虚拟交换机,使用开源 Apache 2.0 许可协议,由 Nicira Networks 开发,主要实现代码为可移植的 C 代码。 它的目的是让大规模网络自动化可以通过编程...

90xa
2015/10/08
452
0
openVswitch(OVS)源代码分析之简介

云计算是现在IT行业比较流行的,但真正什么是云计算业界也没有个什么统一的定义(很多公司都是根据自己的利益狭隘的定义云计算),更别说什么标准规范了。所以现在就有很多人说云计算只不过是...

huwei0512
2017/03/10
0
0
如何启用Open vSwitch的日志功能以便调试和排障

Open vSwitch(OVS)是Linux平台上最流行的开源的虚拟交换机。由于当今的数据中心日益依赖于软件定义网络(SDN)架构,OVS被作为数据中心的SDN部署中的事实标准上的网络元素而得到飞速应用。 ...

酱醋茶丶
2015/09/14
121
0
Neutron中Linux Bridge与Open vSwitch优劣势对比

目前说到虚拟交换机,通常会想到使用Open vSwitch做虚拟交换机,因为支持Open vSwitch的个人和企业都想要有一个开放的模式把他们的服务集成进OpenStack。 Open vSwitch社区做了大量的工作,希...

技术小能手
07/09
0
0
OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)

上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态。 控制节点 ifconfig 显示控制节点上有三个网桥 br...

CloudMAN
2016/12/21
117
0
Neutron中Linux bridge与Open vSwitch两种plugin优劣势对比

目前说到虚拟交换机,通常会想到使用Open vSwitch做虚拟交换机,因为支持Open vSwitch的个人和企业都想要有一个开放的模式把他们的服务集成进OpenStack。 Open vSwitch社区做了大量的工作,希...

OpenInfra
04/27
0
0
ubuntu下Open vSwitch安装

ubuntu下Open vSwitch安装 有关Open vSwitch的安装,网上有各种的教程资料,但一些已经过时,按照网上的教程,花费了大量时间,都没能安装成功。于是,通过查阅官方安装教程以及综合网上的各...

墨痕hz
06/29
0
0
深入理解openstack网络架构(1)

原文地址: https://blogs.oracle.com/ronen/entry/divingintoopenstacknetworkarchitecture 前言 openstack网络功能强大同时也相对更复杂。本系列文章通过Oracle OpenStack TechPreview介绍...

halcyonbaby
2014/11/26
0
0
硬件SDN交换机--Lantern SDN

Lantern是盛科推出的业界首款基于硬件的SDN开源项目,基于开放性的硬件SDN交换机,集成了Linux Debian 7.2 OS系统,Open vSwitch(OVS)与芯片SDK,和适配层作为一个开源的整体解决方案。用户...

AidenZhang
2013/11/21
2.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

TensorFlow,从一个 Android Demo 开始

TensorFlow Android Demo 项目地址 Machine Learning 既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下? 如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考...

孟飞阳
7分钟前
0
0
Confluence 6 安装一个语言组件

Confluence 捆绑了一系列的语言包。这些语言包在 'Language Configuration' 界面中的语言选项中。在 Confluence 的管理员控制台,你可以选择 Choosing a Default Language 和为用户设置(Edi...

honeymose
8分钟前
0
0
JVM学习笔记二:内存结构规范

1、JVM基本结构图 2、java堆(Heap) 3、方法区(Method Area) 4、程序计数器 5、JAVA栈图解 局部变量表:八大基本类型,还可以存储引用类型

刘祖鹏
12分钟前
0
0
mui集成微信H5支付(返回白屏问题已经解决)

一.项目需求 因为公司人员缺少,没有专门开发安卓和ios的人员,为了项目尽早上线采用了混合APP开发的方式,我选择了MUI混合开发框架,项目中需要在用户购买VIP会员的时候进行支付,所以需要在项目...

银装素裹
16分钟前
0
0
TensorFlow gpu 版 安装

win10 + Python3.6 下载cuda https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=81&target_type=exelocal 下载cudnn,复制链接地址,使用迅......

阿豪boy
35分钟前
0
0
SpringBoot集成Redis--配置自定义的RedisCacheManager

配置自定义的RedisCacheManager--1自定义键生成规则 默认的键生成器 当不指定缓存的key时,SpringBoot会使用SimpleKeyGenerator生成key。 SimpleKeyGenerator SimpleKey 查看源码可以发现,它...

karma123
35分钟前
0
0
防火墙未来的发展趋势在哪里?

导读 防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网。当下互联网时代,无论是大小企业,大部分都会部署有防火墙的设备,但这些防火墙往往并不...

问题终结者
38分钟前
0
0
MongoDB 副本集 成员节点 RECOVERING 状态处理

这两天遇到好几个MongoDB集群故障,其中一种就是节点长期处于 RECOVERING 状态,并且不能主动追上 primary 节点,需要手动干预。 首先 rs.status()查看实例状态,发现有的节点处于 RECOVERI...

xxj123gogo
44分钟前
0
0
建造者/构造者模式

在建造者模式中, 有如下4个角色: ● Product产品类 通常是实现了模板方法模式, 也就是有模板方法和基本方法, 这个参考第10章的模板方 法模式。 例子中的BenzModel和BMWModel就属于产品类...

kim_o
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部