OpenvSwitch完全使用手册

article/2025/9/22 0:02:35

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/


http://chatgpt.dhexx.cn/article/JoMdomtS.shtml

相关文章

iOS远程真机之wdaproxy使用指南

基于 WebDriverAgent 的 iOS 远程控制 WebDriverAgent 安装使用完全指南 一、命令行启动wdaproxy 在浏览器打开http://localhost:8100 问题:WDA未启动 WDA安装依赖报错:

openxxx

环境规划 主机名内网ip外网ip网卡模式角色yfm20172.16.10.190192.168.199.122NAT、LANOpenxxxx-Serveryfm22172.16.10.191LAN内网机器1yfm21192.168.199.121NATOpenxxxx-Clientwindows192.168.0.106WIFIOpenxxxx-Client 软件版本 Linux 安装:openxxxx-2.4.10.tar…

windows 下vscode+platformio开发stm32f103c8t6最小系统

最近想要写个更新航模接收机固件的小项目,移植opentx项目的部分代码到我的最小系统板上。不经意间发现vscode上也可以开发stm32了,于是,一个填坑行动开始了!!! 先写怎么才能编译调试吧! 环境&a…

Open vSwitch详解

1. Open vSwitch简介 Open vSwitch(简称OVS)是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准。它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议。总的来说,它被设计为支持分布在多个物理服务器。OVS适用于VM环境中提…

英伟达Nvidia TX1 TX2 串口通信方法

Nvidia TX1 TX2 串口通信方法 英伟达TX2串口串口硬件板子串口描述硬件连接方式测试工具及方法c通信代码 英伟达TX2串口 使用英伟达嵌入式板进行 串口通信 。 串口硬件 串口位置为下图中红色方框位置,标示UARTQ20和J17。 板子串口描述 串口共6个引脚&#xff0…

Open vSwitch

1 OpenVSwitch 1.1 简介 OpenvSwitch简称OVS,是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口…

TX12 + ExpressLRS 915MHz RC控制链路配置及问题汇总

TX12 ExpressLRS 915MHz RC控制链路配置及问题汇总 1. 硬件配置1.1 TX12遥控器1.2 发射/接受机 2. 问题汇总2.1 ELRS接收机无法点亮(第一次)2.2 ELRS接收机无法点亮(第二次)2.3 触发EdgeTX固件更新2.4 elrsV2.lua脚本执行失败2.5 ELRS发射机和接收机如何对频2.6 ELRS接收机LED…

DIY基于树莓派的OpenTX航模遥控器(一)

【前言】 在正式讨论OpenTX遥控器之前,先罗列一下自己以往DIY遥控器的经历,正是通过这些不断摸索逐步积累了DIY的经验,以及大部分的驱动代码。基于对Python的热爱,所有制作都是基于Python编程的,虽然对于实时运行系统…

stm32f429 pcb 原理图工程文件 OPENTX遥控器可用

stm32f429 pcb 原理图工程文件 OPENTX遥控器可用。拍下只发stm32f429 pcb工程文件。id664624938682&

基于opentx开源软件,DIY属于自己的uav遥控器

硬件方面:开关,自稳按钮,方向控制遥感,油门遥感,一键降落按钮, 1.根据开源源码找到引脚对应功能,以及实际各模块,按钮等,进行原理图的绘制,出个初板 2…

EdgeTX/OpenTX逻辑开关教程

目录 一、介绍 二、Taranis遥控的逻辑开关屏幕示例 三、Companion软件中的逻辑开关界面 四、开关功能 一、介绍 如果是T-Pro也可先学习本文的逻辑开关原理,这样在进行双击解锁/长按上锁的设置就得心应手了。 ⼿动激活开关标记为 SA 到 SH。在本文示例中SF 是两…

OpenTX学习笔记

一 OpenTX 开源的无线电遥控系统 二 文件夹结构 1 FIRMWARE 您可以将模块或无线广播设备的固件放在此文件夹中。此文件夹中的文件不会自动应用。 2 IMAGES 2.2:BMP重命名为图像(IMAGES),以保持Taranis和Horus之间的一致性。您可以将模型和其…

ping通说明什么

ping是icmp ping通说明 网络层,链路层没问题

虚拟机可以ping通主机,主机无法ping通虚拟机的解决方法

虚拟机可以ping通主机,主机无法ping通虚拟机的解决方法 关闭虚拟机防火墙 关闭防火墙后就可以ping通了 如何还无法ping通,将虚拟机重新启动后再尝试。 再次要ping 虚拟机的时候又ping不通了,搞了好久终于发现,只要将网络连接…

Ubuntu无法ping通百度

1 问题 ubuntu在使用ping baidu.com命令时出现未知的服务或名称 2 解决 修改/etc/network/interfaces文件 修改完成之后保存退出 重启网卡 /etc/init.d/networking restart

VirtualBox主机与虚拟机互相ping通的方法

一般情况下,按照VirtualBox默认的配置,主机可以ping通虚拟机,但虚拟机不能ping通主机。需要两端都能ping通的话,需要按照以下配置: 1、连接方法选择“仅主机(Host-Only)网络”。 2、在高级部分,控制芯片不…

为什么 A 能 ping 通 B,B 却不能 ping 通 A ?

有开发小哥咨询了一个问题,记录一下处理过程分享给有需要的朋友。 问题如下: A、B 两台开发服务器连接交换机,并且 A、B 两台服务器的 IP 地址设置为同一个网段,却发现 A 能 ping 通 B ,B 却不能 ping 通 A 。 如图&am…

网络何时能ping通?什么情况下不能ping通?

1. 在同一网段内 假设电脑A、B均在192.168.0.X的网络内,两台电脑不需要额外的设置,就可以互相ping通。如果ping不通,可能的原因是: 目标主机的防火墙没关闭目标主机有电脑管家/360等防护软件 2. 在不同网段 如上图,…

主机与虚拟机ping通

主机与虚拟机ping通,之前上课按老师的配置一步一步来,都忘带了脑子,这次自己也可以实现配置自由了。 1.第一步,查看主机ip,cmd->ipconfig 2.设置虚拟机,同一网段 子网ip:我设置为192.168.172.0 子网掩码…

能ping通,TCP就一定能连通吗?

平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会执行ping命令。 一般对于状况良好的网络来说,你能看到它对应的loss丢包率为0%,也就是所谓的能ping通。如果看到丢包率100%,也就…