云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow
目录
一、实验
1.环境
2.Linux 部署 OVS 集群(控制端)
3.控制端对接服务端OVS网元
4.服务端OVS添加流表
5.服务端删除OVS
二、问题
1. ODL如何查找已安装插件
2.查看流表显示不全
3.如何删除OVS流表
一、实验
1.环境
(1) 主机
表1 宿主机
| 主机 | 架构 | 软件 | IP | 网卡 | 备注 |
| ovs_controller | 控制端 | karaf 0.7.3 | 192.168.204.63 | 1个NAT网卡 (204网段) | |
| ovs_server01 | 服务端 | OpenvSwitch v2.5.1 | 192.168.204.61 | 1个NAT网卡 (204网段), 1个仅主机网卡 (88网段) | 已部署 |
| ovs_server02 | 服务端 | OpenvSwitch v2.5.1 | 192.168.204.62 | 1个NAT网卡 (204网段), 1个仅主机网卡 (88网段) | 已部署 |
表2 目标云主机
| 云主机 | IP | 备注 |
| cloudserver01 | 172.16.1.1 | 宿主机ovs_server01 |
| cloudserver02 | 172.16.1.2 | 宿主机ovs_server02 |
(2) 查看IP
ovs_controller

ovs_server01

ovs_server02

(3)查看OVS
ovs-vsctl show
ovs_server01

ovs_server02

(4)打印OVS的汇总信息
ovs_server01
ovs-appctl fdb/show ovs01

ovs_server02
ovs-appctl fdb/show ovs02

2.Linux 部署 OVS 集群(控制端)
(1)查阅OpenDaylight
1)下载
https://docs.opendaylight.org/en/latest/downloads.html2)按照说明
https://docs.opendaylight.org/en/latest/getting-started-guide/installing_opendaylight.html
(2)创建目录
mkdir /opt/java

(3)jre解压
cp server-jre-8u301-linux-x64.tar.gz /opt/javacd /opt/javatar -zxvf server-jre-8u301-linux-x64.tar.gz

(4)修改环境变量
vim /etc/profile
……export JAVA_HOME=/opt/java/jdk1.8.0_301export JRE_HOME=/opt/java/jdk1.8.0_301export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/extexport PATH=$PATH:$JRE_HOME/bin
![]()

(5)更新环境变量
source /etc/profile
![]()
(6)odl解压
unzip karaf-0.7.3.zip

(7)关闭防⽕墙
systemctl stop firewalld.service
systemctl disable firewalld.service

(8)开启ODL服务
/root/karaf-0.7.3/bin/karaf

(9)按照特性功能插件
feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-mdsal-apidocs
feature:install odl-dluxapps-applications
feature:install odl-dluxapps-yangui
feature:install odl-restconf-all

(10)访问
http://192.168.204.63:8181/index.html#/login

(11)登录
账户: admin
密码: admin

进入系统

3.控制端对接服务端OVS网元
(1)服务端添加云交换机
ovs_server01
ovs-vsctl add-br ovs11
ovs-vsctl show

ovs_server02
ovs-vsctl add-br ovs12
ovs-vsctl show

(2)服务端云交换机添加控制器
ovs_server01
ovs-vsctl set-controller ovs11 tcp:192.168.204.63:6633
ovs-vsctl show

ovs_server02
ovs-vsctl set-controller ovs12 tcp:192.168.204.63:6633
ovs-vsctl show

(3)ODL查看
Nodes节点信息

Topology拓扑信息

(4)服务端查看网络信息
ovs_server01的仅主机网卡为ens36
ovs_server02的仅主机网卡为ens36

(5)服务端云交换机添加物理端⼝(仅主机网卡)
ovs_server01
ovs-vsctl add-port ovs11 ens36
ovs-vsctl show

ovs_server02
ovs-vsctl add-port ovs12 ens36
ovs-vsctl show

(6)ODL查看
Nodes节点连接变为2
Topology拓扑信息变为连接状态

(7) 查看OVS流表节点
ovs_server01
ovs-ofctl show ovs11 -O OpenFlow13


ovs_server02
ovs-ofctl show ovs12 -O OpenFlow13


(8) 查看OVS流表信息
ovs_server01
ovs-ofctl dump-flows ovs11 -O OpenFlow13

ovs_server02
ovs-ofctl dump-flows ovs12 -O OpenFlow13

(9)LLDP流量抓包
ovs_server01 的MAC地址为00:0c:29:50:7a:08,openflow流表为52232747528

ovs_server02的MAC地址为 00:0c:29:d5:c1:24 ,openflow流表为52241482020

(9)服务端云交换机添加接口
ovs_server01
ovs-vsctl add-port ovs11 if11 -- set interface if11 type=internal
ovs-vsctl show

ovs_server02
ovs-vsctl add-port ovs12 if12 -- set interface if12 type=internal
ovs-vsctl show

(9)ODL查看
Nodes节点连接变为3

(10) 查看OVS流表节点
ovs_server01
ovs-ofctl show ovs11 -O OpenFlow13

ovs_server02
ovs-ofctl show ovs12 -O OpenFlow13


(11)cloudserver01云主机修改网卡
进入

已关闭

修改网卡为if11

开机(选择命令行模式)

进入系统

(12)cloudserver02云主机修改网卡
进入

已关闭

修改网卡为if12

开机(选择命令行模式)

进入系统

(13)云主机修改网卡
cloudserver01
sudo ifconfig eth0 172.16.1.1 netmask 255.255.255.0
cloudserver02
sudo ifconfig eth0 172.16.1.2 netmask 255.255.255.0

(14)测试网络
云主机1 ping 云主机2 ,目前不通

4.服务端OVS添加流表
(1) 查看OVS流表节点
ovs_server01
ovs-ofctl show ovs11 -O OpenFlow13

ovs_server02的云主机需要从2口进,1口出
ovs-ofctl show ovs12 -O OpenFlow13

(2)流量分析
表3 流量分析
| 云主机cloudserver01 | 流向 | 云主机cloudserver01 |
| in_port=2,action=output:1 | → | in_port=1,action=output:2 |
| in_port=1,action=output:2 | ← | in_port=2,action=output:1 |
(3)服务端添加流表
ovs_server01
ovs-ofctl add-flow ovs11 -O Openflow13 in_port=1,action=output:2
ovs-ofctl add-flow ovs11 -O Openflow13 in_port=2,action=output:1

ovs_server02
ovs-ofctl add-flow ovs12 -O Openflow13 in_port=1,action=output:2
ovs-ofctl add-flow ovs12 -O Openflow13 in_port=2,action=output:1

(3) 查看OVS流表信息
ovs_server01
ovs-ofctl dump-flows ovs11 -O OpenFlow13

ovs_server02
ovs-ofctl dump-flows ovs12 -O OpenFlow13

(4) 测试网络
云主机1 ping 云主机2 ,目前已通

5.服务端删除OVS
(1) 云主机关机
cloudserver01
cloudserver02

(2)云主机切换原网卡
cloudserver01

cloudserver02

(3)服务端删除云交换机
ovs_server01
ovs-vsctl del-br ovs11
ovs-vsctl show

ovs_server02
ovs-vsctl del-br ovs12
ovs-vsctl show
(4)查看ODL
目前为空

二、问题
1. ODL如何查找已安装插件
(1)开启
/root/karaf-0.7.3/bin/karaf

(2)查询
feature:list -i




2.查看流表显示不全
(1)报错
添加2条流表后显示不全

(2)原因分析
ODL未开启。
(3)解决方法
开启ODL:
/root/karaf-0.7.3/bin/karaf

显示成功:

3.如何删除OVS流表
(1)删除
ovs_server01
ovs-ofctl del-flows ovs11 -O Openflow13 in_port=1,out_port=2
ovs-ofctl del-flows ovs11 -O Openflow13 in_port=2,out_port=1
![]()
ovs_server02
ovs-ofctl del-flows ovs12 -O Openflow13 in_port=1,out_port=2
ovs-ofctl del-flows ovs12 -O Openflow13 in_port=2,out_port=1

相关文章:
云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow
目录 一、实验 1.环境 2.Linux 部署 OVS 集群(控制端) 3.控制端对接服务端OVS网元 4.服务端OVS添加流表 5.服务端删除OVS 二、问题 1. ODL如何查找已安装插件 2.查看流表显示不全 3.如何删除OVS流表 一、实验 1.环境 (1) 主机 表1 宿主机 主…...
使用/api/put保存数据到OpenTSDB,报204错误
错误信息 HttpResponseProxy{HTTP/1.1 204 No Content [Content-Type: application/json; charsetUTF-8, Content-Length: 0]} 错误原因 在OpenTSDB中,使用/api/put保执行写入操作,得到204响应,表示已经成功写入数据库。...
Open3D kmeans聚类(马氏距离,Python版本)
文章目录 一、简介二、算法步骤三、代码实现四、实现效果参考资料一、简介 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类算法会先对原型进行初始…...
python抠图程序
import cv2 import numpy as np def color_threshold(image, lower, upper): hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv_image, lower, upper) result cv2.bitwise_and(image, image, maskmask) return result # 读取图片…...
Android13 CameraServer启动流程
代码入口 frameworks/av/camera/cameraserver 里面包含了四个文件 我们先来看看Android.bp的内容 package {// See: http://go/android-license-faq// A large-scale-change added default_applicable_licenses to import// all of the license_kinds from "frameworks_a…...
如何升级node.js版本
升级Node.js可以通过多种方式来完成,以下是四种常见的方法: 方法一:使用Node.js官方安装程序 访问Node.js的官方网站,下载对应你操作系统的最新版本安装程序。通常,你可以 https://nodejs.org/en/download 找到你需…...
Excel---一个工作簿中的多个sheet合并成一个PDF
0 Preface/Foreword 1 操作方法 1.1 方法一 文件》 导出 》创建PDF/XPS 》 选项 》发布内容 》“整个工作簿” 1.2 方法二 文件》 打印》 打印机选项中,选择一种PDF阅读器 》设置选项中,选择打印整个工作簿。...
结合文本的目标检测:Open-GroundingDino训练自己的数据集
1、简单介绍 Open-GroundingDino是GroundingDino的第三方实现训练流程的代码,因为官方GroundingDino没有提供训练代码,只提供了demo推理代码。 关于GroundingDino的介绍可以看论文:https://arxiv.org/pdf/2303.05499.pdf GroundingDino的G…...
分布式锁-redission锁的MutiLock原理
5.5 分布式锁-redission锁的MutiLock原理 为了提高redis的可用性,我们会搭建集群或者主从,现在以主从为例 此时我们去写命令,写在主机上, 主机会将数据同步给从机,但是假设在主机还没有来得及把数据写入到从机去的时…...
MySQL索引、B+树相关知识汇总
MySQL索引、B树相关知识汇总 一、有一个查询需求,MySQL中有两个表,一个表1000W数据,另一个表只有几千数据,要做一个关联查询,如何优化?1、为关联字段建立索引二、小表驱动大表 二、b树和b树的区别1、更高的…...
相机模型浅析
相机模型 文章目录 相机模型四个坐标系针孔相机模型世界坐标系到相机坐标系相机坐标系到图像坐标系图像坐标到像素坐标 四个坐标系 ①世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标…...
国芯科技(C*Core)双芯片汽车安全气囊解决方案
汽车安全气囊是20世纪汽车上的十大发明之一,是目前汽车的法定标准配置,成为汽车驾乘人员生命安全的保护神。随着人们对汽车安全性要求的进一步提高,已形成前排驾驶员气囊、前排副驾驶员气囊、前排侧气囊、后排侧气囊、膝部气囊、安全气帘等等…...
牛客周赛 Round 39(A,B,C,D,E,F,G)
比赛链接 官方题解(视频) B题是个贪心。CD用同余最短路,预处理的完全背包,多重背包都能做,比较典型。E是个诈骗,暴力就完事了。F是个线段树。G是个分类大讨论,出题人钦定的本年度最佳最粪 题目…...
解锁区块链技术的潜力:实现智能合约与DApps
在数字时代,区块链技术正迅速成为重塑多个行业的革命性力量。从金融服务到供应链管理,再到数字身份验证,区块链提供了一种去中心化、安全和透明的数据处理方式。在本文中,我们将深入探讨区块链技术,特别是智能合约和去…...
MAC OS关闭SIP(navicat 无法保存密码)
最近安装navicat(16.3.7)时,安装后无法保存密码,保存密码会报错如下: 因为用的破解版,一开始是打不开的,用自带的修复软件修复后就可以打开了,但是保存密码就会报错,按照网上的一些操作 1、卸载…...
阿里云服务器带宽价格全解析,附报价单
阿里云服务器公网带宽怎么收费?北京地域服务器按固定带宽计费一个月23元/M,按使用流量计费0.8元/GB,云服务器地域不同实际带宽价格也不同,阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表: 公网…...
Day36|贪心算法part05:435. 无重叠区间、763.划分字母区间、56. 合并区间
435. 无重叠区间 有了上题射气球的因子,这题也就有思路了,反正无脑排序就行了: 首先将所有区间按照end的大小从小到大排序;选取最早end为起始x_end遍历所有区间,如果该区间的start比end大(可重叠…...
棋牌室计时吧台计费收费灯控管理系统软件操作流程
棋牌室计时吧台计费收费灯控管理系统软件操作流程 一、前言 以下软件操作教程以,佳易王棋牌桌球计时计费管理系统软件灯控版V17.87为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 该计时计费软件可以是棋牌和桌球混合同时计时计费 …...
【实践篇】RabbitMQ实现队列延迟功能汇总
前言 记录下RabbitMQ实现延迟队列功能的所有实践内容。 前期准备,需要安装好docker、docker-compose的运行环境。 一、安装RabbitMQ 开启RabbitMQ的WEB管理功能。-CSDN博客 二、实现延迟队列的两种方式 RabbitMQ实现延迟队列的两种方式。-CSDN博客 三、实践文…...
EditPlus来啦(免费使用!)
hello,我是小索奇 今天推荐一款编辑器,是索奇学习JavaSE时入手滴,非常好用哈,小索奇还是通过老杜-杜老师入手滴,相信很多人也是通过老杜认识嘞,来寻找破解版或者准备入手这个间接使用的编辑器~ EditPlus是…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
react更新页面数据,操作页面,双向数据绑定
// 路由不是组件的直接跳转use client,useEffect,useRouter,需3个结合, use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...


