云计算: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是…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...