ovs学习总结

本文深入探讨了Open vSwitch(OVS)的核心概念及其在实际应用中的操作流程。介绍了OVS开发目的、官方定位及设计目标,详细解析了数据包在OVS中的具体流向,包括网桥、数据路径(datapath)、流表(flowtable)和端口(port)等关键组件的作用与工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PS:主要用来记录自己觉得写得好的文章方便学习

好用网站:H3C,红黑联盟

常备命令

https://blog.youkuaiyun.com/rocson001/article/details/73163041

ovs-appctl:

ovsdb-client:

ovsdb-tool:

ovs-docker:

ovs-dpctl:

ovs-dpctl-top:

ovs-ofctl:

ovs-pki:

ovs-testcontroller:

ovs-vsctl:
 

搜索资料的时候发现了这个网址,真的很适合入门了解相关基础,以下摘抄了一些概念:

https://www.2cto.com/net/201707/655718.html

OVS开发目的:用于生产环境,支持跨物理服务器分布式管理、扩展编程、大规模网络自动化和标准化接口,实现了和大多数商业闭源交换机功能类似的软件交换机。

官方定位:做一个产品级质量的多层虚拟交换机,通过支持可编程扩展来实现大规模的网络自动化。设计目标是方便管理和配置虚拟机网络,检测多物理主机在动态虚拟环境中的流量情况。针对这一目标,OVS具备很强的灵活性。可以在管理程序中作为软件switch运行,也可以直接部署到硬件设备上作为控制层。

包到ovs的具体流向:

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

Bridge:即网桥,在Openvswitch中每个虚拟交换机(vswitch)都可以认为是一个网桥,因为Openvswitch在底层的通信是借助了网桥模块来实现的,同时我们通过brctl也能查看到ovs所创建的网桥设备。

datapath为 ovs内核模块,负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并执行匹配到的动作。

一个datapath可以对应多个vport,一个vport类似物理交换机的端口概念。一个datapth关联一个flow table,一个flow table包含多个条目,每个条目包括两个内容:一个match/key和一个action

Flowtable:即数据流表,根据之前对OpenFlow的介绍,我们已经了解了Openvswitch中利用openflow协议在实现虚拟交换机,而数据流表就是提供给Bridge/Datapath做数据操作的指令。

Port:即端口,这里的端口是指虚拟交换机逻辑上的接口,我们可以通过ovs-vsctl命令查看各个网桥(即虚拟交换机)上的接入的端口。

详解:

https://www.jianshu.com/p/bf112793d658

ovs实践:

https://www.ibm.com/developerworks/cn/cloud/library/1401_zhaoyi_openswitch/

### Open vSwitch (OVS) 安装指南 #### 1. 使用APT安装Open vSwitch 在基于Debian的系统(如Ubuntu)上,可以通过APT包管理器轻松安装Open vSwitch。以下是具体操作: ```bash sudo apt update sudo apt install -y openvswitch-switch openvswitch-common openvswitch-doc ``` `openvswitch-switch` 是核心组件,提供虚拟交换机功能[^1]。 `openvswitch-common` 提供通用组件和库文件,作为其他相关软件包的依赖项[^1]。 `openvswitch-doc` 则包含了官方文档,适合需要深入学习的用户。 --- #### 2. 手动编译并安装Open vSwitch 如果希望从源码安装最新版本的OVS,可以按照以下步骤操作: ##### 下载源码 可以从GitHub仓库或其他官方渠道获取源码: ```bash git clone https://github.com/openvswitch/ovs.git cd ovs ``` 或者直接下载压缩包: ```bash wget http://openvswitch.org/releases/openvswitch-<version>.tar.gz tar zxvf openvswitch-<version>.tar.gz cd openvswitch-<version> ``` ##### 准备环境 确保已安装必要的开发工具和依赖项: ```bash sudo apt install build-essential libssl-dev python3-pip python3-setuptools autoconf automake bzip2 gcc make pkg-config unzip zlib1g-dev ``` ##### 编译与安装 执行以下命令完成编译和安装过程: ```bash ./boot.sh ./configure --prefix=/usr/local make sudo make install ``` 最后,配置环境变量以便全局访问OVS工具: ```bash export PATH=$PATH:/usr/local/share/openvswitch/scripts/ source /etc/profile ``` 以上步骤适用于大多数Linux发行版[^5]。 --- #### 3. 初始化数据库和服务 安装完成后,需初始化OVS数据库并启动服务: 创建运行目录: ```bash sudo mkdir -p /usr/local/var/run/openvswitch ``` 生成初始数据库文件: ```bash sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema ``` 启动 `ovsdb-server` 和 `ovs-vswitchd`: ```bash sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ --private-key=db:Open_vSwitch,SSL,private_key \ --certificate=db:Open_vSwitch,SSL,certificate \ --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ --pidfile --detach --log-file & sudo ovs-vswitchd --pidfile --detach --log-file ``` 注意:某些情况下可能会遇到警告信息(如“Resource temporarily unavailable”),这通常是无害的,可忽略[^3]。 --- #### 4. 验证安装 验证OVS是否正常工作: ```bash ovs-vsctl show ``` 此命令会显示当前OVS的桥接、端口和其他配置信息。 --- #### 5. Docker环境中使用OVS 在Docker场景下,可能需要额外启用特定隧道协议支持(如Geneve或STT)。确保内核版本满足需求(Geneve最低支持3.18[^4]),并通过加载相应模块来激活功能: ```bash lsmod | grep geneve ``` 如果没有加载,则手动加载: ```bash sudo modprobe geneve ``` --- ### 总结 通过APT安装是最简单的方式,而从源码构建则允许更灵活地定制功能。无论哪种方法,都需要正确初始化数据库和服务才能正常使用OVS---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值