Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SDN 技术指南(四):Open vSwitch

SDN 技术指南(四):Open vSwitch

原创
作者头像
RiboseYim
发布于 2018-01-13 01:35:20
发布于 2018-01-13 01:35:20
2.8K00
代码可运行
举报
文章被收录于专栏:睿哥杂货铺睿哥杂货铺
运行总次数:0
代码可运行
  • Open vSwitch 安装
  • Open vSwitch 命令行
  • Open vSwitch 运行原理
  • Open vSwitch 性能监控
前言

由之前发布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源虚拟交换机。

Open Source Virtual Switch:Community-Based, Open Source,. Full-Featured Network Operating System.

一、Open vSwitch 安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 第一步:Getting the Code
git clone https://git.openswitch.net/openswitch/ops-build

# 第一步:选择编译模式

# 模式一:To a supported white box switch ( 例如 VMware vSwitch、vDS、Nexus 1000V)
make configure genericx86-64

# 模式二:OVA (可以直接导入虚拟机,例如 Oracle Virtual box )
make configure appliance

# 第三步:打包
make

二、Open vSwitch 命令行

2.1 核心概念

  • Bridge :网桥,对应一个以太网交换机(Switch),一个主机中可以创建一个或者多个 Bridge 设备。
  • Port :Port 与物理交换机的端口概念类似, 每个 Port 都属于一个特定的 Bridge 。端口类型:Normal、Internal、Patch、Tunnel。
  • Interface:接口,对应网卡,即可以是 ovs 生成的虚拟网卡,也可能是挂载在 ovs 的物理网卡。在通常情况下,Port 和 Interface 是一对一的关系, 只有在配置 Port 为 bond 模式后,Port 和 Interface 是一对多的关系。
2.2 基本操作

  • ovs-vsctl : 查询和更新 ovs-vswitchd 的配置;
  • ovs-appctl :发送命令消息,运行相关 daemon;
  • ovsdbmonitor : GUI工具,可以远程获取 OVS 数据库和 OpenFlow 的流表。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建一个新的交换机
$ ovs-vsctl add-br ovs-switch
# 创建一个端口 设置端口
# 如果在创建端口的时候没有指定 OpenFlow 端口编号,会自动生成一个
$ ovs-vsctl add-port ovs-switch p0 -- set Interface p0 ofport_request=100
# 设置接口类型
$ ovs-vsctl set Interface p0 type=internal
$ ethtool -i p0
# 查看交换机的端口信息
$ ovs-ofctl show ovs-switch
# 查看 datapath 的信息
$ ovs-dpctl show

三、Open vSwitch 运行原理

3.1 Open vSwitch 内部结构

Open vSwitch 内部分为用户态和内核态。用户层(态)为守护程序实现了交换机和流表,是 Open vSwitch 的核心,提供了一些组件去管理交换机,实现数据库,对内核进行直接管理。主要包含三个守护进程:

  • ovs-vswitched : 主要模块,守护进程,包括一个 Linux 内核模块。
  • ovsdb-server : 数据库服务,保存相关配置信息
  • ovs-brcompatd

数据流(flow) 通过 Open vSwitch 转发的流程。每收到一个包之后,OVS Kernel Module 将检查它是否能能命中内核模块的缓存(flow cache) ,如果命中缓存则交由 kernel 处理;如果不能命中缓存则先发送到用户空间(ovs-vswitchd process )进行转发决策 ——— 基于一系列已经安装配置的规则库(OpenFlow rulues);如果没有命中任何一条规则,则将包发送给 OpenFlow 控制器处理。一旦做出转发决策,这个包和转发动作将传回 OVS Kernel Module 缓存起来。这条 flow 接下来的包就将命中缓存并直接由 kernel 转发处理。

  • openvswitch_mod.ko 是内核态(kernel)的主要模块 完成数据包的查找、转发、修改等操作,一条 flow 的后续数据包到达 OVS 后将直接交由内核态,使用 openvswitch_mod.ko 中的处理函数对数据包进行处理。

OVS Flow Processing

OVS包含一个Linux内核

3.2 Open vSwitch 的协议支持情况

  • GRE-tunneled mirrors: 远程监控
  • LACP、VLAN、IGMP、LLDP、BFD、STP、RSTP、QoS、HFSC
  • Complete IPv6 (Internet Protocol version 6) support
  • Support for multiple tunneling protocols, including GRE、VXLAN 、STT、IPsec
  • Multi-table forwarding pipeline with a flow-caching engine
3.3 Open vSwitch 的 OpenFlow 支持情况

  • ovs-openflowd:一个简单的 OpenFlow 交换机;
  • ovs-controller:一个简单的 OpenFlow 控制器;
  • ovs-ofctl 查询和控制 OpenFlow 交换机和控制器;
  • ovs-pki :OpenFlow 交换机创建和管理公钥框架;
  • ovs-tcpundump:tcpdump 的补丁,解析 OpenFlow 的消息;

Open vSwitch support for OpenFlow 1.1 and beyond is a work in progress.>>> OpenFlow Support in Open vSwitch

四、Open vSwitch 性能监控

“If you can’t measure it, you can’t improve it” —— Lord Kelvin

4.1 sFlow 监控示例

  • 启动分析器 sFlow Analyzer (以 sFlow-RT 为例)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd sflow-rt
$ ./start.sh
bash-3.2$ ./start.sh
信息: Listening, sFlow port 6343
信息: Listening, HTTP port 8008
信息: app/ovs/scripts/status.js started
警告: app/ovs/scripts/status.js app/ovs/scripts/status.js
信息: app/ovs/scripts/status.js stopped
$ ps -ef | grep 6343
  501 30565 30431   0  2:45下午 ttys002    0:03.90 /usr/bin/java -Xms200M -Xmx200M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Dsflow.port=6343 -Dhttp.port=8008 -jar ./lib/sflowrt.jar

  • Connect Normal Switch to sFlow Analyzer
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 指定 analyzer
switch(root)# sflow collector 10.0.0.1
// 数据包采样: 1-in-4096
// 常规参考值:[100 Mb/s: 1 in 500]、[1 Bb/s: 1 in 1000]、[10 Gb/s: 1 in 2000]
switch(root)# sflow sampling 4096
// 轮询计数器 polling counters every 20 seconds
switch(root)# sflow polling 20
switch(root)# sflow enable

  • Connect Open vSwitch to sFlow Analyzer
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// e.g. connect Open vSwitch to sFlow analyzer
ovs-vsctl — –id=@sflow create sflow agent=eth0 \target=\”10.0.0.1:6343\” sampling=1000 polling=20 \
— set bridge br0 sflow=@sflow

4.2 Connect Open vSwitch to OpenFlow controller

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// e.g. connect Open vSwitch to OpenFlow controller
ovs-vsctl set-controller br0 tcp:10.0.0.1:6633

4.3 Traffic analytics : sFlow vs NetFlow

  • sFlow does not use flow cache, so realtime charts more accurately reflect traffic trend
  • NetFlow spikes caused by flow cache active-timeout for long running connections

应用案例

专题合辑:Network Engineering

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SDN 技术指南(二):OpenFlow
OpenFlow 最早由斯坦福大学提出,目前知识产权由开放网络基金会(Open Networking Foundation,ONF)持有。
RiboseYim
2018/01/13
2.5K0
【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
        在过去十几年中,虚拟化已经改变了应用、数据、服务的实现部署方式。服务器的虚拟化给数据中心网络带来了根本性的变化。在传统的数据中心网络架构基础上,出现了一个新的、位于物理服务器内的接入层。这个新的接入层包含的设备是运行在x86服务器中的vSwitch,而这些vSwitch连接着一个服务器内的多个workload(包括容器和虚机)。
江中散人_Jun
2022/07/12
5.5K0
【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
研究Open vSwitch
概念 现在云计算大行其道,以kvm和docker为代表,极大地利用了机器的硬件资源,模拟了操作系统,而在海量虚拟机场景下,传统的硬件交换机越来越难以满足需求了。为了更加高效地利用网络,SDN应运而生。而SDN如何落地很大程度上取决于如何用软件交换机替代传统的交换机。 从名称来看,openvswitch就是一个用软件实现的虚拟交换机。一个物理交换机基本支持flows, VLANs, trunking, QoS, port aggregation, firewalling, 还有一些具备3层交换的功能,而虚拟环
jeremyxu
2018/05/10
4K0
ovs-vsctl emer-reset一个需要慎用的命令
在重置OVS时,会用到以下命令 1、ovs-vsctl emer-reset 2、ovs-vsctl init 3、rm -rf /etc/openvswitch/* 但这个ovs-vsctl emer-reset命令会触发一个BUG,导致无法恢复流表信息,甚至引起网络回环。 这个BUG在ocata版本中出现,到现在的queens版本也还有,但在之前的mitaka版本却没有。 下面来看下示例
孙杰
2019/10/29
1.3K0
OVS 总体架构、源码结构及数据流程全面解析
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍。 OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产
Linux云计算网络
2018/01/11
5.8K0
OVS 总体架构、源码结构及数据流程全面解析
Ryu和OpenStack集成
OpenStack作为当前和可预见时间内最为热门的云计算技术(没有之一),业已获得广泛的企业市场应用和众多IT巨头的支持,更是以近日(7月17日)一位最具重量级的新成员——Google,签约加入Ope
SDNLAB
2018/04/03
2.3K0
Ryu和OpenStack集成
Open vSwitch源码阅读笔记(下)
引言 本文主要对OpenvSwitch(基于2.3.90版本)重点模块的源码实现流程做了简要的阅读记录,Open vSwitch源码阅读笔记(上)已提供,此篇是对上篇的追述及补充,适合阅读OpenvS
SDNLAB
2018/03/30
1.5K0
Open vSwitch源码阅读笔记(下)
【SDN】防DDoS攻击应用开发
Xiongan-桃子
2023/06/10
7910
【SDN】防DDoS攻击应用开发
第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
云计算是一种按需分配、按使用量收费的使用模式,提供了一个可配置的资源共享池,用户可以通过网络访问,获取存储空间、网络带宽、服务器、应用软件等等服务。
红目香薰
2022/11/29
8740
第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
SDN 技术指南(一):架构概览
软件定义网络(Software-defined networking,SDN),一种新的网络架构。SDN 提出的控制与转发平面分离、网络状态集中控制、支持软件编程等理念并不是什么新鲜事,但是长久以来一直没有非常突破性的进展。
RiboseYim
2018/01/13
6.3K0
OVS 总体架构、源码结构及数据流程全面解析
阅读本文大概 4.7 分钟 在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍。 OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转。OVS 基于 SDN 的思想,将整个核心架构分为控制面和数据面,数据面负责数据的交换工作,控制面实现交换策略,指导数据面工作。 从整体上看,OVS 可以划分为三大块,管理面、数据面和控制面。 数据面就是以用户态的 ovs-vswitchd
企鹅号小编
2018/01/30
1.5K0
OVS 总体架构、源码结构及数据流程全面解析
【每日播报】如何升级Mininet的Open vSwitch版本
因为Mininet的方便且易用,以及实验条件及真实设备的不足,它已经被越来越多的SDN学习者使用。但在Mininet使用中,安装使用的内置Open vSwitch版本都比较低,使用者无法进行发布的新版本的使用及验证。因此,本文主要是将更新升级Mininet内置的Open vSwitch版本升级,通过重新下载安装Open vSwitch并进行配置,获取并使用Open vSwitch较高版本。 1 环境准备 主要使用ubuntu-13.10 64位操作系统,Mininet版本为2.1.0,内部已使用的Open
SDNLAB
2018/04/04
2K0
【每日播报】如何升级Mininet的Open vSwitch版本
KVM+OpenvSwitch虚拟交换机
为了使虚拟机与外部进行网络通信,需要为虚拟机配置网络环境。KVM虚拟化支持Linux网桥、Open vSwitch网桥等多种类型的网桥。如图所示,数据传输路径为"虚拟机 -> 虚拟网卡设备 -> Linux网桥或Open vSwitch网桥 -> 物理网卡"。
Kevin song
2023/12/12
1.8K0
KVM+OpenvSwitch虚拟交换机
OVSDB介绍及在OpenDaylight中的调用
前言 OVS是一种开源的软件交换机,可安装于通用的虚拟服务器环境中,在虚拟环境中单个、多个物理机上的不同虚拟主机都需要通过OVS实现数据交换。 OVS包含三个重要的组件:ovsdb-server、
SDNLAB
2018/03/29
5.1K1
OVSDB介绍及在OpenDaylight中的调用
从CNI到OVN
诸如calico flannel等CNI实现,通过牺牲一些功能让网络复杂度得以大幅度降低是我极其推崇的,在云原生时代应用不再关心基础设施的场景下是一个明智之举,给网络调错带来了极大方便。
sealyun
2019/07/25
1.5K0
基于sFlow流量监控的DDOS防御和队列调整
编者按:最近涉及的一个实验,需要获取链路接口的实时信息,比如带宽、流量统计等。起初打算从OpenFlow协议中的计数器入手,OpenFlow交换机对每一个流维护一个计数器,控制器可以从这些计数器上查询每条链路的实时流量信息。随着网络规模增大,流量增加,对计数器管理会变得越来越消耗系统资源,如Floodlight FAQ所提到对控制器而言这样的监控很难准确的,所以否定了在控制器上实现流量监控的想法,转而考虑通过第三方平台监控每条链路的实时流量信息。sFlow可以提供周期性的网络接口统计采样和数据包采样,能够提
SDNLAB
2018/04/03
2.7K0
基于sFlow流量监控的DDOS防御和队列调整
SDN 作业提示器(持续更新)
SDN解放了手工操作,减少了配置错误,易于统一快速部署 SDN具有广阔的发展前景和巨大的研究价值.
红目香薰
2022/11/29
5450
SDN 作业提示器(持续更新)
从 Bridge 到 OVS,探索虚拟交换机
Linux Bridge 和物理网络一样,虚拟网络要通信,必须借助一些交换设备来转发数据。因此,对于网络虚拟化来说,交换设备的虚拟化是很关键的一环。 上文「网络虚拟化」已经大致介绍了 Linux 内核为了满足网络虚拟化的要求,实现了一套虚拟交换设备——Bridge。本文重点介绍下 Bridge 的加强版——Open vSwitch(OVS),并从 Bridge 过渡到 OVS 的缘由讲起,让大家有个全面的认识。 借助 Linux Bridge 功能,同主机或跨主机的虚拟机之间能够轻松实现通信,也能够让虚拟机
Linux云计算网络
2018/01/11
3.4K0
从 Bridge 到 OVS,探索虚拟交换机
基于Linux Network Namespace的Mininet架构分析
Mininet作为一个轻量级的SDN仿真工具,在其系统实现架构中充分利用了Linux命名空间内核技术,其中Linux Network Namespace机制更是Mininet软件架构的基石,对网络资源
SDNLAB
2018/04/03
2K0
基于Linux Network Namespace的Mininet架构分析
云计算与虚拟化硬核技术内幕 (15) —— 《国富论》中的秘密
在上期《云计算与虚拟化硬核技术内幕 (14) —— 不忘初心,删繁就简》中,我们介绍了Linux网桥,也遗留了一些问题:
用户8289326
2022/09/08
6520
云计算与虚拟化硬核技术内幕 (15) —— 《国富论》中的秘密
相关推荐
SDN 技术指南(二):OpenFlow
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验