OpenvSwitch完全使用手册
OpenvSwitch完全使用手册(一)-总览Overview
本文主要参考Overview of functionality and components以及Frequently Asked Questions以及结合自己的理解。
1 什么是OpenvSwitch
OpenvSwitch,简称OVS是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。
在这种某一台机器的虚拟化的环境中,一个虚拟交换机(vswitch)主要有两个作用:传递虚拟机VM之间的流量,以及实现VM和外界网络的通信。
整个OVS代码用C写的。目前有以下功能:
- Standard 802.1Q VLAN model with trunk and access ports
- NIC bonding with or without LACP on upstream switch
- NetFlow, sFlow(R), and mirroring for increased visibility
- QoS (Quality of Service) configuration, plus policing
- GRE, GRE over IPSEC, VXLAN, and LISP tunneling
- 802.1ag connectivity fault management
- OpenFlow 1.0 plus numerous extensions
- Transactional configuration database with C and Python bindings
- High-performance forwarding using a Linux kernel module
2 OpenvSwitch的组成
- ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-based switching。
- ovsdb-server:轻量级的数据库服务,主要保存了整个OVS的配置信息,包括接口啊,交换内容,VLAN啊等等。ovs-vswitchd会根据数据库中的配置信息工作。
- ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。
- ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。
- ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上。
- ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息。
- ovs-controller:一个简单的OpenFlow控制器
- ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容。
3 OpenvSwitch和其他vswitch
这里其他的vswitch,包括VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V。
VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V这种虚拟交换机提供的是一个集中式的控制方式,。而OVS则是一个独立的vswitch,他运行在每个实现虚拟化的物理机器上,并提供远程管理。OVS提供了两种在虚拟化环境中远程管理的协议:一个是OpenFlow,通过流表来管理交换机的行为,一个是OVSDB management protocol,用来暴露sietch的port状态。
(二)-概念及工作流程1
1 vswitch、Bridge、Datapath
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!
要了解,OVS如何工作,首先需要知道桥的概念。
网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。
1.1 网桥的工作原理
网桥处理包遵循以下几条规则:
- 在一个接口上接收到的包不会再往那个接口上发送此包。
- 每个接收到的包都要学习其源MAC地址。
- 如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。
- 如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。
- 如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。
注意,网桥是以混杂模式工作
的。关于网桥更多,请查阅相关资料。
2 OVS中的bridge
上面,说到,一个桥就是一个交换机。在OVS中,
ovs-vsctl add-br brname(br-int)root@Compute2:~# ifconfigbr-int Link encap:Ethernet HWaddr 1a:09:56:ea:0b:49 inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:1584 errors:0 dropped:0 overruns:0 frame:0TX packets:6 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:316502 (316.5 KB) TX bytes:468 (468.0 B)
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是brname,之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,我还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。
ovs-vsctl add-port brname port
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口brname,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。
ip address add 192.168.1.1/24 dev brname
最后,我们来看看一个br的具体信息:
root@Compute2:~# ovs-vsctl show
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
Bridge "br0"Port "eth0"Interface "eth0"Port "br0"Interface "br0"type: internal
ovs_version: "1.4.0+build0"
首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。
OpenvSwitch完全使用手册(二)-概念及工作流程2
这一部分我以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。
前面已经说到,OVS主要是用来在虚拟化环境中。虚拟机之间一个虚拟机和外网之间的通信所用,如下是一个典型的结构图:
那么,通常情况下的工作流程如下:
- 1 VM实例instance产生一个数据包并发送至实例内的虚拟网络接口VNIC,图中就是instance中的eth0.
- 2 这个数据包会传送到物理节点上的VNIC接口,如图就是vnet接口。
- 3 数据包从vnet NIC出来,到达桥(虚拟交换机)br100上.
- 4 数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理节点上的eth0.
- 5 数据包从eth0出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
本文链接地址: http://blog.wachang.net/2013/03/openvswitch-fullbook-2-workflow-2/
OpenvSwitch完全使用手册相关推荐
- OpenvSwitch readme faq
[原文] http://blog.csdn.net/majieyue/article/details/7888400 1 什么是OpenvSwitch OpenvSwitch,简称OVS是一个虚拟交换 ...
- 【neutron】OpenStack Neutron -- 学习资料
OpenStack Neutron -- 学习资料 学习什么 neutron代码的整体架构,消息通知.rpc如何实现,RESTful API如何实现 neutron的部署,常见问题的定位方法 neut ...
- Open vSwitch概述
转自https://blog.csdn.net/lizheng2300/article/details/54582310 Open vSwitch概述 Open vSwitch(下面简称OVS)是一个 ...
- Openvswitch手册(4): Mirror
Openvswitch手册(4): Mirror 这一节我们来分析Mirror Mirror就是配置一个bridge,将某些包发给指定的mirrored ports 对于包的选择: select_al ...
- Openvswitch手册(5): VLAN and Bonding
我们这一节来看Port 一般来说一个Port就是一个Interface,当然也有一个Port对应多个Interface的情况,成为Bond VLAN Configuration Port的一个重要的方 ...
- 利用OpenVSwitch构建多主机Docker网络
本文讲的是利用OpenVSwitch构建多主机Docker网络,[编者的话]当你在一台主机上成功运行Docker容器后,信心满满地打算将其扩展到多台主机时,却发现前面的尝试只相当于写了个Hello W ...
- 分布式训练使用手册-paddle 数据并行
分布式训练使用手册¶ 分布式训练基本思想¶ 分布式深度学习训练通常分为两种并行化方法:数据并行,模型并行,参考下图: 在模型并行方式下,模型的层和参数将被分布在多个节点上,模型在一个mini-batc ...
- 正则语法完全正则表达式手册_语法格式重点
20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...
- CUDA C++编程手册(总论)
CUDA C++编程手册(总论) CUDA C++ Programming Guide The programming guide to the CUDA model and interface. C ...
最新文章
- raver php,为PhpStorm添加Laravel 代码智能提示功能
- xamarin.android蓝牙,在Android上连接Xamarin的配对蓝牙设备
- ROS:ubuntuKylin17.04-Ros使用OrbSLAM2
- SQLSERVER数据仓库的构建与分析
- ajax后台怎么取mapp,后台管理实现
- 全国80几所重点大学ftp资源库(经常逛逛可能有惊喜哦)很难收集的,知道其他的友友可以留言完善...
- Ansible 之 用户管理
- 常用webserver 比较
- 北京地区能收到的FM广播电台频率表(基于手机)
- 【JS】中文繁简转换
- 深入理解TTL 与 CMOS 电路
- Essay写作具体内容怎么了解?
- C++ + win32 + STL 写的QQ连连看外挂
- 方正飞鸿:工作流在OA系统中的重要性
- 需求调研中要注意的三点
- 关于appium踩坑 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error(已解决)
- 高斯混合模型的matlab实现
- Windows系统C语言代码一览
- 【论文】Oriented R-CNN for Object Detection
- Cookies和Session的介绍