云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow

2024-04-13 06:20

本文主要是介绍云计算: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

cloudserver02172.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:1in_port=1,action=output:2
in_port=1,action=output:2in_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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899357

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page