OVS 精确删除流表

前言

今天看了sdnlab小姐姐的mininet教程之后,看到有一个下流表的操作,优先级没能下成功,然后回来实验一下,这个问题是解决了,不过遇到了一个小问题,ovs如何精确删除流表

OVS精确删除流表

查找了若干文献、文档均无果

  • 问题描述

以下是我的流表

OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=50.313s, table=0, n_packets=55, n_bytes=3878, priority=0 actions=CONTROLLER:65535
cookie=0x0, duration=2.921s, table=0, n_packets=0, n_bytes=0, priority=100,in_port=1 actions=drop
cookie=0x0, duration=42.320s, table=0, n_packets=167, n_bytes=10020, priority=65535,dl_dst=01:80:c2:00:00:0e,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x0, duration=2746.808s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=3,dl_dst=de:34:d2:d3:1b:1e actions=output:2
cookie=0x0, duration=2746.809s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=2,dl_dst=72:11:da:8b:c8:6e actions=output:3
cookie=0x0, duration=2746.814s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=3,dl_dst=66:6b:6d:d1:97:cc actions=output:1
cookie=0x0, duration=2746.820s, table=0, n_packets=28, n_bytes=2128, priority=1,in_port=2,dl_dst=66:6b:6d:d1:97:cc actions=output:1
cookie=0x0, duration=47.854s, table=0, n_packets=3, n_bytes=182, priority=1,in_port=1,dl_dst=72:11:da:8b:c8:6e actions=output:3
cookie=0x0, duration=47.865s, table=0, n_packets=3, n_bytes=182, priority=1,in_port=1,dl_dst=de:34:d2:d3:1b:1e actions=output:2

目的是为了删除上面的第二条流表

cookie=0x0, duration=2.921s, table=0, n_packets=0, n_bytes=0, priority=100,in_port=1 actions=drop

试了各种,优先级匹配,动作匹配均发现这不是其关键字,无法做到,稍稍得到OVS命令行的缺陷无法精确删除流表(希望大家打脸)~~ 想了想堂堂一个OVS不支持精确删除流表,我以前做的那些控制器删除流表的实验是怎么实现的,其本质不是也是调用底层吗?以前ODL是根据table-id,flow-id,我通过命令行查看的流表其中并无flow-id该关键字。

后来还是向控制器求助了,查看了RYU的官方RestFul接口,其删除流表可以用到优先级以及对应的匹配域得到

# delete flow entry strictly matching wildcards and priority
# POST /stats/flowentry/delete_strict

于是我就用POSTMAN搞了

然后就删除了

OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=62.799s, table=0, n_packets=55, n_bytes=3878, priority=0 actions=CONTROLLER:65535
cookie=0x0, duration=54.806s, table=0, n_packets=169, n_bytes=10140, priority=65535,dl_dst=01:80:c2:00:00:0e,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x0, duration=2759.294s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=3,dl_dst=de:34:d2:d3:1b:1e actions=output:2
cookie=0x0, duration=2759.295s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=2,dl_dst=72:11:da:8b:c8:6e actions=output:3
cookie=0x0, duration=2759.300s, table=0, n_packets=20, n_bytes=1400, priority=1,in_port=3,dl_dst=66:6b:6d:d1:97:cc actions=output:1
cookie=0x0, duration=2759.306s, table=0, n_packets=28, n_bytes=2128, priority=1,in_port=2,dl_dst=66:6b:6d:d1:97:cc actions=output:1
cookie=0x0, duration=60.340s, table=0, n_packets=3, n_bytes=182, priority=1,in_port=1,dl_dst=72:11:da:8b:c8:6e actions=output:3
cookie=0x0, duration=60.351s, table=0, n_packets=3, n_bytes=182, priority=1,in_port=1,dl_dst=de:34:d2:d3:1b:1e actions=output:2

结论

与其说是结论,我觉得更适合说是我的猜想,OVS依旧也是向上层提供相应的OpenFlow的接口,供与控制器交互,我们使用命令行去对OVS进行操纵,其实本身也有利用一些OVS的接口,只是我们命令行的接口封装得并不是那么全面,所有有些操作还是得通过控制器层面去进行,命令行可以作为一种辅助的工具。

OVS 精确删除流表的更多相关文章

  1. [ovs] 编写openflow流表的文档指引

    首先,openflow流表都是使用ovs-ofctl命令进行添加的. 1. 看 ovs-ofctl 的man手册 man ovs-ofctl 或者,这个地方也有:http://www.openvswi ...

  2. ovs 删除流表 指定 actions 中字段

    例: ovs-ofctl del-flows br-int in_port=100,out_group=100 -O openflow13 ovs-ofctl del-flows br-int in_ ...

  3. ovs源码阅读--流表查询原理

    背景 在ovs交换机中,报文的处理流程可以划分为一下三个步骤:协议解析,表项查找和动作执行,其中最耗时的步骤在于表项查找,往往一个流表中有数目巨大的表项,如何根据数据报文的信息快速的查找到对应的流表项 ...

  4. openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)

    一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...

  5. openvswitch 流表操作

    流表组成 每条流表规则由一些列字段组成,可以分为**基础字段.匹配字段和动作字段**三部分. 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之 ...

  6. Open vSwitch流表应用实战

    本文参考:Open vSwitch流表应用实战 一个通过改变流表下发而实现的互相通信实验. 实验目的: 掌握Open vSwitch下发流表操作: 掌握添加.删除流表命令以及设备通信的原理. 原理:. ...

  7. Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  8. OVS 流表offload

    原文链接:https://www.dazhuanlan.com/2019/12/31/5e0af1858dada/ 最近开始调研网卡的OVS流表offload功能,所以目前查看一下OVS这块是怎么做的 ...

  9. OVS中arp响应的流表的实现

    总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的 ...

随机推荐

  1. 关于Java集合类库中的几种常用队列

    Java中几种常用的队列 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞 ...

  2. Python基础5

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  3. 关于Maven配置的一些标签含义(后续逐渐补充)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  4. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  5. 常见的CSS属性和值CascadingStyleSheets

    字体文本背景位置边框列表其他 CSS中修饰字体的属性 属    性 描    述 属  性  值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科 ...

  6. POJ 1904 King's Quest(SCC的巧妙应用,思维题!!!,经典题)

    King's Quest Time Limit: 15000MS   Memory Limit: 65536K Total Submissions: 10305   Accepted: 3798 Ca ...

  7. jqgrid 获取远端数据失败时,弹出错误提示

    有时,我们给jqgrid绑定的远端数据获取失败,此时,需要把错误信息反馈给用户展示,如何实现? 可通过jqgrid的 loadError 来处理错误数据的返回.详细如下: $("#jqGri ...

  8. pv,uv的意义

    PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标. 高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这里 ...

  9. STS-使用前准备

    sts 的基础框架拿的eclipse的,你可以理解为eclipse + spring插件的高级升华版.在使用上可以很大限度的参考eclipse的操作. 首先,调整字体. 中文很麻烦的,因为编码问题.习 ...

  10. Python实现随机读取文本N行数据

    工作中需要判断某个文本中的URL是否能正常访问,并且随机获取其中N行能正常访问的URL数据,我的思路是:读取文本每一行数据,用urlopen访问,将返回状态码为200的URL保存到一个列表,获得列表长 ...