云计算:OVS 集群 使用VXLAN 流表

news/2024/12/22 18:04:39/

目录

一、实验

1.环境

2. OVS 集群 使用VXLAN 流表(单租户)

3. OVS 集群 使用VXLAN 流表(多租户)

二、问题

1.如何添加VXLAN接⼝

2.virsh修改云主机MAC报错


一、实验

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-ofctl show ovs01 -O OpenFlow13

ovs_server02

ovs-ofctl show ovs02 -O OpenFlow13

(5) 查看OVS流表信息

ovs_server01

ovs-ofctl dump-flows  ovs01  -O  OpenFlow13

ovs_server02

ovs-ofctl dump-flows  ovs02  -O  OpenFlow13

2. OVS 集群 使用VXLAN 流表(单租户)

(1)服务端删除云交换机端口

ovs_server01

ovs-vsctl del-port vxlan0
ovs-vsctl show

ovs_server02

ovs-vsctl del-port ovs02 vxlan0
ovs-vsctl show

(2)添加端口与VXLAN接⼝

ovs_server01

ovs-vsctl add-port ovs01 vtep -- set interface vtep type=vxlan option:remote_ip=192.168.204.62 option:key=flow ofport_request=10 ovs-vsctl show

ovs_server02

ovs-vsctl add-port ovs02 vtep -- set interface vtep type=vxlan option:remote_ip=192.168.204.61 option:key=flow ofport_request=10ovs-vsctl show

(3)查看接口

ovs_server01

ovs-ofctl show ovs01

ovs_server02

ovs-ofctl show ovs02

(4)查看接口列表

ovs-vsctl -- --columns=name,ofport list Interface

ovs_server01

ovs_server02

(5)添加控制端

ovs_server01

ovs-vsctl  set-controller  ovs01 tcp:192.168.204.63:6633

ovs_server02

ovs-vsctl  set-controller  ovs02 tcp:192.168.204.63:6633

(6)查看ODL

Nodes节点信息Topology拓扑信息(VXLAN-TRUNK没有连接线)

(7)查看控制端下发的OVS默认流表

ovs_server01

ovs-ofctl dump-flows  ovs01  -O  OpenFlow13

ovs_server02

ovs-ofctl dump-flows  ovs02  -O  OpenFlow13

(8)流量抓包

ovs_server01 抓取ens33网卡,发送端口随机,接收端口都为4789

tcpdump -i ens33 | grep -i vxlan

(9)流量写入本地

ovs_server01 

tcpdump -i ens33 -w vxlan-vni0.pcap

云主机01 ping 云主机02

ovs_server01 结束抓包

(10)流向分析

表3 流向分析

云主机cloudserver01流向云主机cloudserver01
in_port=1,action=output:10 → in_port=10,action=output:1
in_port=10,action=output:1   ← in_port=1,action=output:10

(11)查看下载的流量包

过滤vxlan

所有VNI 都被打上标签0

3. OVS 集群 使用VXLAN 流表(多租户)

(1)初始化流表

ovs_server01 

ovs-ofctl  del-flows ovs01 -O Openflow13

ovs_server02

ovs-ofctl  del-flows ovs02 -O Openflow13

(2)查看流表

ovs_server01 

ovs-ofctl dump-flows ovs01 -O openflow13

ovs_server02

 ovs-ofctl dump-flows ovs02 -O openflow13

(3)查看MAC

ovs_server01 

ovs-appctl fdb/show ovs01

ovs_server02

ovs-appctl fdb/show ovs02

(4)关闭云主机

cloudserver01

cloudserver02

 (5)查看MAC

cloudserver01

cloudserver02

(6)查看云主机

virsh list --all

ovs_server01 

ovs_server02

(7)ovs_server01 修改云主机MAC

virsh edit cloudserver01:/interface

修改前:

修改后:

00:00:00:00:aa:01

(8)ovs_server02修改云主机MAC

virsh edit cloudserver02:/interface

修改前:

修改后:

00:00:00:00:aa:02

(9)再次查看云主机MAC

cloudserver01已更新

cloudserver02已更新

(10)启动云主机

cloudserver01

cloudserver02

(11)修改云主机网卡

cloudserver01

cloudserver02

(12)网络测试

云主机01 ping 云主机02,目前不通

(13)构建⾃定义多租户VXLAN流表

ovs_server01

 sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=0,in_port=1,actions=set_field:10001->tun_id,resubmit(,1)"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=0,actions=resubmit(,1)"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=1,tun_id=10001,dl_dst=00:00:00:00:aa:01,actions=output:1"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=1,tun_id=10001,dl_dst=00:00:00:00:aa:02,actions=output:10"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=1,tun_id=10001,arp,nw_dst=172.16.1.1,actions=output:1"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=1,tun_id=10001,arp,nw_dst=172.16.1.2,actions=output:10"sudo ovs-ofctl -O OpenFlow13 add-flow ovs01 "table=1,priority=100,actions=drop"

ovs_server02

sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=0,in_port=1,actions=set_field:10001->tun_id,resubmit(,1)"sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=0,actions=resubmit(,1)"sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=1,tun_id=10001,dl_dst=00:00:00:00:aa:02,actions=output:1"
sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=1,tun_id=10001,dl_dst=00:00:00:00:aa:01,actions=output:10"sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=1,tun_id=10001,arp,nw_dst=172.16.1.2,actions=output:1"sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=1,tun_id=10001,arp,nw_dst=172.16.1.1,actions=output:10"sudo ovs-ofctl -O OpenFlow13 add-flow ovs02 "table=1,priority=100,actions=drop"

(14) 查看流表

ovs_server01 

ovs-ofctl dump-flows ovs01 -O openflow13

ovs_server02

 ovs-ofctl dump-flows ovs02 -O openflow13

(15)网络测试

云主机01 ping 云主机02,目前已通

(16)流量抓包下入本地

ovs_server01

tcpdump -i ens33 -w vxlan-vni10001.pcap

云主机01 ping 云主机02

抓包结束

(17)流量分析

过滤vxlan

VNI为10001

其他LLDP的VNI为0

(18)流量抓包在线获取

tcpdump -i ens33 | grep -i vxlan

云主机01 ping 云主机02

抓包结束(1口的流量VNI为10001,其他LLDP的VNI为0)

二、问题

1.如何添加VXLAN接⼝

(1)ovs_server01 添加
 key=flow表示隧道的VNI是通过流表来指定;ofport_request=10 表示端⼝号码设置为10

ovs-vsctl add-port ovs01 vtep -- set interface vtep type=vxlan option:remote_ip=192.168.204.62 option:key=flow ofport_request=10 ovs-vsctl show

(2)ovs_server02 添加

 key=flow表示隧道的VNI是通过流表来指定;ofport_request=10 表示端⼝号码设置为10

ovs-vsctl add-port ovs02 vtep -- set interface vtep type=vxlan option:remote_ip=192.168.204.61 option:key=flow ofport_request=10ovs-vsctl show

2.virsh修改云主机MAC报错

(1)报错

错误:(domain_definition):71: attributes construct error<mac address=''00:00:00:00:aa:01'/>
---------------------^
失败的。 Try again? [y,n,i,f,?]:

(2)原因分析

配置错误,MAC地址前多了1个单引号。

(3)解决方法

修改配置。

输入重新配置

修改前:

修改后:


http://www.ppmy.cn/news/1424433.html

相关文章

vue3滚动条重置

由于单页面应用的原理&#xff0c;使用vue搭建的项目在路由切换时并不会刷新整个页面。因此在有滚动条的页面会存在滚动条不能自动重置的问题。在最近的项目中就遇到了这种问题&#xff0c;因此记录一下。 1.切换路由&#xff1a; <el-main> <!--<router-view…

Linux下GPU虚拟化

在新Linux内核中体验GPU虚拟化 从内核4.10&#xff0c; 支持 virtual gpu 的代码开始汇入主线程。这部分代码主要由两部分组成&#xff1a; 首先&#xff0c; mediated 设备框架&#xff08;mdev&#xff09;&#xff0c;基本上&#xff0c;这部分代码使得内核驱动开始用vfio框…

【数据结构】树与二叉树、树与森林部分习题与算法设计例题

目录 【数据结构】树与二叉树部分习题与算法设计例题一、单选题二、算法设计题判断二叉树是否为完全二叉树求二叉树的最小深度 以及 二叉树树高 树与二叉树知识点文章: 【数据结构】树与二叉树&#xff08;递归法先序、中序、后序、层次遍历二叉树、二叉树的建立以及求树高的方…

做一个后台项目的架构

后台架构的11个维度 架构1&#xff1a;团队协助基础工具链的选型和培训架构2&#xff1a;搭建微服务开发基础设施架构3&#xff1a;选择合适的RPC框架架构4&#xff1a;选择和搭建高可用的注册中心架构5&#xff1a;选择和搭建高可用的配置中心架构6&#xff1a;选择和搭建高性…

QT系列教程(4) Qt 信号和槽

信号和槽 当我们需要一个界面通知另一个界面时&#xff0c;可以采用信号和槽机制。通过链接信号和槽&#xff0c;当一个界面发送信号时&#xff0c;链接该信号的槽会被响应&#xff0c;从而达到消息传递的目的。 所以我们先创建一个Qapplication Widgets 应用。Creator会为我们…

MapReduce——数据切片与MapTask并行度决定机制

MapReduce——数据切片与MapTask并行度决定机制 MapReduce 数据切片和 Map 任务的并行度决定机制是 MapReduce 框架中两个重要的概念&#xff0c;它们直接影响作业的执行效率和性能。 1.数据切片&#xff08;Data Splits&#xff09; 数据切片是指将输入数据拆分成更小的块或片…

14 Php学习:表单

表单 PHP 表单是用于收集用户输入的工具&#xff0c;通常用于网站开发。PHP 可以与 HTML 表单一起使用&#xff0c;用于处理用户提交的数据。通过 PHP 表单&#xff0c;您可以创建各种类型的表单&#xff0c;包括文本输入框、复选框、下拉菜单等&#xff0c;以便用户可以填写和…

智慧城市标准化白皮书(2022版)发布

2022年7月25日&#xff0c;国家智慧城市标准化总体组2022年度全体会议召开期间&#xff0c;《智慧城市标准化白皮书&#xff08;2022版&#xff09;》正式发布。 城市作为一个复杂巨系统&#xff0c;是多元主体融合及多元活动集聚的复杂综合体。城市的运行发展关联 到发展、治…