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

目录

一、实验

1.环境

[2.Linux 部署 OVS 集群(控制端)](#2.Linux 部署 OVS 集群(控制端))

3.控制端对接服务端OVS网元

4.服务端OVS添加流表

5.服务端删除OVS

二、问题

[1. ODL如何查找已安装插件](#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

bash 复制代码
ovs-vsctl show

ovs_server01

ovs_server02

(4)打印OVS的汇总信息

ovs_server01

bash 复制代码
ovs-appctl fdb/show ovs01

ovs_server02

bash 复制代码
ovs-appctl fdb/show ovs02

2.Linux 部署 OVS 集群(控制端)

(1)查阅OpenDaylight

bash 复制代码
1)下载
https://docs.opendaylight.org/en/latest/downloads.html

2)按照说明
https://docs.opendaylight.org/en/latest/getting-started-guide/installing_opendaylight.html

(2)创建目录

bash 复制代码
mkdir /opt/java

(3)jre解压

bash 复制代码
 cp server-jre-8u301-linux-x64.tar.gz  /opt/java
 cd /opt/java
 tar -zxvf server-jre-8u301-linux-x64.tar.gz

(4)修改环境变量

bash 复制代码
vim /etc/profile
......
 export JAVA_HOME=/opt/java/jdk1.8.0_301
 export JRE_HOME=/opt/java/jdk1.8.0_301
 export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext
 export PATH=$PATH:$JRE_HOME/bin

(5)更新环境变量

bash 复制代码
source  /etc/profile

(6)odl解压

bash 复制代码
unzip karaf-0.7.3.zip

(7)关闭防⽕墙

bash 复制代码
systemctl  stop firewalld.service 
systemctl  disable  firewalld.service

(8)开启ODL服务

bash 复制代码
/root/karaf-0.7.3/bin/karaf

(9)按照特性功能插件

bash 复制代码
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)访问

bash 复制代码
http://192.168.204.63:8181/index.html#/login

(11)登录

bash 复制代码
账户: admin
密码: admin

进入系统

3.控制端对接服务端OVS网元

(1)服务端添加云交换机

ovs_server01

bash 复制代码
ovs-vsctl add-br  ovs11
ovs-vsctl show

ovs_server02

bash 复制代码
ovs-vsctl add-br  ovs12
ovs-vsctl show

(2)服务端云交换机添加控制器

ovs_server01

bash 复制代码
ovs-vsctl  set-controller  ovs11 tcp:192.168.204.63:6633
ovs-vsctl show

ovs_server02

bash 复制代码
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

bash 复制代码
ovs-vsctl  add-port ovs11 ens36
ovs-vsctl show

ovs_server02

bash 复制代码
ovs-vsctl  add-port ovs12 ens36
ovs-vsctl show

(6)ODL查看

Nodes节点连接变为2

Topology拓扑信息变为连接状态

(7) 查看OVS流表节点

ovs_server01

bash 复制代码
 ovs-ofctl show ovs11 -O OpenFlow13

ovs_server02

bash 复制代码
ovs-ofctl show ovs12 -O OpenFlow13

(8) 查看OVS流表信息

ovs_server01

bash 复制代码
ovs-ofctl dump-flows  ovs11  -O  OpenFlow13

ovs_server02

bash 复制代码
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

bash 复制代码
ovs-vsctl add-port  ovs11 if11 -- set interface if11  type=internal
ovs-vsctl show

ovs_server02

bash 复制代码
ovs-vsctl add-port  ovs12 if12 -- set interface if12 type=internal
ovs-vsctl show

(9)ODL查看

Nodes节点连接变为3

(10) 查看OVS流表节点

ovs_server01

bash 复制代码
 ovs-ofctl show ovs11 -O OpenFlow13

ovs_server02

bash 复制代码
 ovs-ofctl show ovs12 -O OpenFlow13

(11)cloudserver01云主机修改网卡

进入

已关闭

修改网卡为if11

开机(选择命令行模式)

进入系统

(12)cloudserver02云主机修改网卡

进入

已关闭

修改网卡为if12

开机(选择命令行模式)

进入系统

(13)云主机修改网卡

cloudserver01

bash 复制代码
sudo ifconfig eth0 172.16.1.1 netmask 255.255.255.0

cloudserver02

bash 复制代码
sudo ifconfig eth0 172.16.1.2 netmask 255.255.255.0

(14)测试网络

云主机1 ping 云主机2 ,目前不通

4.服务端OVS添加流表

(1) 查看OVS流表节点

ovs_server01

bash 复制代码
 ovs-ofctl show ovs11 -O OpenFlow13

ovs_server02的云主机需要从2口进,1口出

bash 复制代码
 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

bash 复制代码
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

bash 复制代码
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

bash 复制代码
ovs-ofctl dump-flows  ovs11  -O  OpenFlow13

ovs_server02

bash 复制代码
ovs-ofctl dump-flows  ovs12  -O  OpenFlow13

(4) 测试网络

云主机1 ping 云主机2 ,目前已通

5.服务端删除OVS

(1) 云主机关机

cloudserver01

cloudserver02

(2)云主机切换原网卡

cloudserver01

cloudserver02

(3)服务端删除云交换机

ovs_server01

bash 复制代码
ovs-vsctl del-br ovs11
ovs-vsctl show

ovs_server02

bash 复制代码
ovs-vsctl del-br ovs12
ovs-vsctl show

(4)查看ODL

目前为空

二、问题

1. ODL如何查找已安装插件

(1)开启

bash 复制代码
/root/karaf-0.7.3/bin/karaf

(2)查询

bash 复制代码
feature:list -i

2.查看流表显示不全

(1)报错

添加2条流表后显示不全

(2)原因分析

ODL未开启。

(3)解决方法

开启ODL:

bash 复制代码
/root/karaf-0.7.3/bin/karaf

显示成功:

3.如何删除OVS流表

(1)删除

ovs_server01

bash 复制代码
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

bash 复制代码
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
相关推荐
朱包林7 小时前
Python基础
linux·开发语言·ide·python·visualstudio·github·visual studio
biubiubiu07067 小时前
Linux / Ubuntu systemd 服务使用说明
linux·运维·ubuntu
玄微云8 小时前
2026年通用软件难适配,垂直店务系统反而更省心
大数据·云计算·软件需求
MaximusCoder8 小时前
等保测评命令——Anolis Linux
linux·运维·服务器·网络·经验分享·安全·php
线束线缆组件品替网8 小时前
Adam Tech NPC-6-007-BU网线组件详解
服务器·网络·数码相机·智能路由器·电脑·51单片机·电视盒子
zhojiew8 小时前
为agent实现渐进式Skills能力的思考和实践
linux·python·算法
Striver-Diligent8 小时前
您的解决方案准确吗?一种用于增强通信网络可靠性的、面向故障的性能预测方法
网络·深度学习·机器学习·网络性能估计·数字孪生网络·网络预测
相思难忘成疾9 小时前
《RHEL9虚拟机部署及SSH远程登录实践手册》
linux·运维·ssh·虚拟机
cg_ssh9 小时前
Vue3中样式变量的使用
linux·运维·服务器
cheems95279 小时前
[网络原理]http协议理论基础以及wireshark抓包分析(二)
网络·http·wireshark