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 ...
随机推荐
- Netty入门(六)Decoder(解码器)
Netty 提供了丰富的解码器抽象基类,主要分为两类: 解码字节到消息(ByteToMessageDecoder 和 ReplayingDecoder) 解码消息到消息(MessageToMessag ...
- 前后端交互之封装Ajax+SpringMVC源码分析
为什么需要封装呢?因为用的多,我想将其封装成函数,当我想用它时,只需将那个函数对应的js文件引入即可,而不要重复写很多相同代码,利于开发效率的提高. 无论是$.ajax或$.post.$.get等,在 ...
- mybatis的一对一,一对多查询,延迟加载,缓存介绍
一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...
- Android 混淆打包
有些时候我们希望我们自己的apk包不能被别人反编译而获取自己的源代码.这就需要我们通过Android提供的混淆打包技术来完成. 一.没有引用外部包的情况: 这种情况下代码混淆的方式相对简单: 1)只需 ...
- 微信小程序开发 [03] 事件、数据绑定和传递
1.事件绑定 在微信小程序中,事件的绑定依附于组件,当事件触发时,就会执行事件对应的处理函数. 我们回到前几章中的例子,将index页面调整为首页(app.json中调整pages数组元素的顺序),此 ...
- 简单叨叨bootstrap按钮无限层级下拉菜单的实现
0.写在前面的话 最近看书都懈怠了,又正值新项目,虽说并不是忙得不可开交,好吧我老实交待,我就是偷懒了其实,博客也没更.言归正传,对于前端的不熟悉现在确实是个让我头疼的事情,以至于一些功能要在网络上漫 ...
- CAN-bus接口控制实验
CAN-bus接口控制实验 2016-04-12 20:38:41来源: eefocus 关键字:CAN bus 接口控制 收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn 一.实 ...
- 使用Novell.Directory.Ldap.NETStandard在.NET Core中验证AD域账号
Novell.Directory.Ldap.NETStandard是一个在.NET Core中,既支持Windows平台,又支持Linux平台,进行Windows AD域操作的Nuget包. 首先我们 ...
- 20155207 EXP7 EXP8 EXP9 实验补交
20155207 EXP7 EXP8 EXP9 实验补交 20155207 EXP7 网络欺诈技术防范 20155207 EXP8 Web基础 20155207 <网络对抗> Exp9 W ...
- 20155313 杨瀚 《网络对抗技术》实验八 Web基础
20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...