OVS流表table之间的跳转
OVS流表table之间的跳转
前言
今天在帮学弟解决问题的时候,遇到一个table0、table1之间的微妙小插曲,引起了注意,后来查了一下资料发现原因了。
问题描述
wpq@wpq:~$ sudo ovs-ofctl dump-flows -O OpenFlow13 s1
OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=275.673s, table=0, n_packets=22, n_bytes=2156, priority=1000,ip,nw_src=10.0.0.2,nw_dst=10.0.0.1 actions=output:1
cookie=0x0, duration=285.517s, table=0, n_packets=16, n_bytes=672, priority=1000,arp actions=FLOOD
cookie=0x0, duration=53.643s, table=1, n_packets=0, n_bytes=0, priority=1000,ip,nw_src=10.0.0.1,nw_dst=10.0.0.2 actions=output:2
如上输出所示,位于table1的流表的n_packet始终无法上涨,说明流表始终没有被匹配到。
问题解决
还是自己太年轻,把最基本的openflow协议都给忘了,流表之间的跳转是要action的
OVS流表分析
上述链接中有句话引到
流表间的跳转并没有用标准OpenFlow规范中的指令GOTO_TABLE,而是使用了Nicira(开发OVS的公司)的扩展动作resubmit
所以可以用两种方法
1、resubmit
wpq@wpq:~$ sudo ovs-ofctl -O OpenFlow13 add-flow s1 "table=0,priority=0,idle_timeout=0,actions=resubmit(,1)"
wpq@wpq:~$ sudo ovs-ofctl dump-flows -O OpenFlow13 s1
OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=2.370s, table=0, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,1)
cookie=0x0, duration=1139.038s, table=0, n_packets=23, n_bytes=2254, priority=1000,ip,nw_src=10.0.0.2,nw_dst=10.0.0.1 actions=output:1
cookie=0x0, duration=1148.882s, table=0, n_packets=16, n_bytes=672, priority=1000,arp actions=FLOOD
cookie=0x0, duration=917.008s, table=1, n_packets=0, n_bytes=0, priority=1000,ip,nw_src=10.0.0.1,nw_dst=10.0.0.2 actions=output:2
2、goto_table
wpq@wpq:~$ sudo ovs-ofctl -O OpenFlow13 add-flow s1 "table=0,priority=0,idle_timeout=0,actions=goto_table=1"
wpq@wpq:~$ sudo ovs-ofctl dump-flows -O OpenFlow13 s1
OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=6.110s, table=0, n_packets=0, n_bytes=0, priority=0 actions=goto_table:1
cookie=0x0, duration=101.774s, table=0, n_packets=0, n_bytes=0, priority=1000,ip,nw_src=10.0.0.2,nw_dst=10.0.0.1 actions=output:1
cookie=0x0, duration=94.002s, table=0, n_packets=0, n_bytes=0, priority=1000,arp actions=FLOOD
cookie=0x0, duration=1745.115s, table=1, n_packets=4, n_bytes=392, priority=1000,ip,nw_src=10.0.0.1,nw_dst=10.0.0.2 actions=output:2
OVS流表table之间的跳转的更多相关文章
- OVS 流表offload
原文链接:https://www.dazhuanlan.com/2019/12/31/5e0af1858dada/ 最近开始调研网卡的OVS流表offload功能,所以目前查看一下OVS这块是怎么做的 ...
- OVS 内核KEY值提取及匹配流表代码分析
原文链接:http://ry0117.com/2016/12/24/OVS内核KEY值提取及匹配流表代码分析/ 当开启OVS后,创建datapath类型为system的网桥并他添加相关接口,OVS网桥 ...
- Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- ovs源码阅读--流表查询原理
背景 在ovs交换机中,报文的处理流程可以划分为一下三个步骤:协议解析,表项查找和动作执行,其中最耗时的步骤在于表项查找,往往一个流表中有数目巨大的表项,如何根据数据报文的信息快速的查找到对应的流表项 ...
- OVS中arp响应的流表的实现
总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的 ...
- OVS 精确删除流表
OVS 精确删除流表 前言 今天看了sdnlab小姐姐的mininet教程之后,看到有一个下流表的操作,优先级没能下成功,然后回来实验一下,这个问题是解决了,不过遇到了一个小问题,ovs如何精确删除流 ...
- Openvswitch原理与代码分析(6):用户态流表flow table的操作
当内核无法查找到流表项的时候,则会通过upcall来调用用户态ovs-vswtichd中的flow table. 会调用ofproto-dpif-upcall.c中的udpif_upcall_hand ...
- Openvswitch原理与代码分析(5): 内核中的流表flow table操作
当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行acti ...
- [ovs] 编写openflow流表的文档指引
首先,openflow流表都是使用ovs-ofctl命令进行添加的. 1. 看 ovs-ofctl 的man手册 man ovs-ofctl 或者,这个地方也有:http://www.openvswi ...
随机推荐
- 关于Vue的nextTick的一点小理解
官方文档表示:为了在数据变化之后等待Vue完成更新DOM,可以在数据变化之后立即执行Vue.$nextTick(callback),这样回调函数就可以在数据变化之后立即执行. 这段话的意思是: 例如: ...
- css3自定义滚动条背景透明
.editor{ overflow:hidden; height:640px; padding:0 45px; border: 0 none; outline: none; } .editor::-w ...
- 洛谷P1208
#include <iostream>#include <algorithm>#include <cstdio>using namespace std; struc ...
- C#演化过程--各个版本新增加特性
- Docker实战(二)之操作Docker容器
容器是Docker的另外一个核心概念.简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统系统(包括内核,应 ...
- 在Window下编译LibGeotiff(含Libtiff)
核心提示:1.GeoTiff简介 GeoTiff是包含地理信息的一种Tiff格式的文件. 1.GeoTiff简介 GeoTiff是包含地理信息的一种Tiff格式的文件.Libgeotiff就是一个操作 ...
- Python2.7-sqlite3
sqlite3模块,SQLite 是用 C 写的轻量级的数据库,sqlite3 模块提供了对数据库的接口,要使用必须首先创建一个 Connection 对象,代表连接至数据库,然后才能继续操作,操作数 ...
- JAVA框架Struts2(二)
一:Struts2执行流程: 1)编写页面,点击超链接,请求提交到服务器端. 2)请求先经过Struts2核心过滤器(StrutsprepareAndexectuterfilter). 3)过滤器的功 ...
- Android 截取屏幕图片并保存
Android市场上有很多屏幕截图软件,把当前屏幕截取出来并保存,这一节我们就来看看屏幕截图的具体实现. 操作步骤: 1.创建一片屏幕大小的缓冲区,用于存放屏幕大小的图片 Bitmap bitmap ...
- [FQ]Tor + Chrome + PAC 尝试 FQ
记录一次比较成功的FQ经历 1.从Tor官网下载最新的Tor browser,速度较慢可以从文末给出的链接中下载. 2.安装Tor browser. 3. Tor网络设置 3.1 那个描述与你的情况最 ...