首先,openflow流表都是使用ovs-ofctl命令进行添加的。

1.

看 ovs-ofctl 的man手册

man ovs-ofctl

或者,这个地方也有:http://www.openvswitch.org/support/dist-docs/ovs-ofctl.8.html

主要就是用,这几个命令:

dump-flows 、add-flow 、del-flows

等。

另外,有关actions的命令也在这个手册里。

2.

有关how to match见如下的man手册

man ovs-fields

或这个:http://www.openvswitch.org/support/dist-docs/ovs-fields.7.html

该手册,文档层次清晰,可以方便的速查。按照逻辑分了如下几个段落,非常清晰:

TUNNEL / METADATA / CONNECTION TRACKING / REGISTER / L2 / L3 / L4

3.

举个栗子:

[root@host100 ~]# ovs-ofctl dump-ports-desc br200-
OFPST_PORT_DESC reply (xid=0x2):
(tap200-): addr:b2:8a::::
config:
state:
current: 10MB-FD COPPER
speed: Mbps now, Mbps max
(vxlan101): addr:1a:b7::d6::
config:
state:
speed: Mbps now, Mbps max
(vxlan102): addr::3e:e2:aa:c3:7c
config:
state:
speed: Mbps now, Mbps max
LOCAL(br200-): addr:a6:::b5::
config:
state:
speed: Mbps now, Mbps max
[root@host100 ~]# ovs-ofctl add-flow br200- 'in_port=2,ip_dst=10.200.0.10 actions=output:4'
[root@host100 ~]# ovs-ofctl dump-flows br200-
cookie=0x0, duration=.771s, table=, n_packets=, n_bytes=, in_port="tap200-1" actions=output:vxlan102
cookie=0x0, duration=.306s, table=, n_packets=, n_bytes=, priority= actions=NORMAL

又举了一个栗子

ovs-ofctl add-flow br200- 'cookie=0x01,table=0,ip_dst=10.200.0.2 actions=move:NXM_NX_TUN_ID[0..23]->NXM_NX_REG0[0..23],resubmit(,1)'
ovs-ofctl add-flow br200- 'cookie=0x02,table=1 actions=move:NXM_NX_REG0[0..23]->NXM_OF_ETH_SRC[24..47],output:vxlan101'

举一个NAT的栗子

# DROUTE up
ovs-ofctl -O openflow13 add-flow br220- 'cookie=0x11,table=0,ip,tcp,ip_dst=10.200.0.2,eth_dst=00:01:02:02:21:01/00:00:00:ff:ff:ff actions=mod_dl_dst:00:01:02:02:21:01,ct(zone=10,table=1)'
ovs-ofctl -O openflow13 add-flow br220- 'cookie=0x12,table=1,ip,tcp,ip_dst=10.200.0.2,eth_dst=00:01:02:02:21:01,ct_state=+new actions=ct(zone=10,nat(dst=10.200.0.11:80),commit),output:tap221-1'
ovs-ofctl -O openflow13 add-flow br220- 'cookie=0x13,table=1,ip,tcp,ip_dst=10.200.0.2,eth_dst=00:01:02:02:21:01,ct_state=+trk+est actions=ct(zone=10,nat),output:tap221-1'
# DROUTE down
ovs-ofctl -O openflow13 add-flow br220- 'cookie=0x14,table=0,in_port=tap221-1,ip,tcp,actions=ct(zone=10,table=1,nat)'
ovs-ofctl -O openflow13 add-flow br220- 'cookie=0x15,table=1,in_port=tap221-1,ct_zone=10,ct_state=+trk+est,ip_src=10.200.0.2,actions=mod_dl_src:00:00:00:ff:00:10,output:vxlan101'

举一个ARP代答的栗子(别人写的,我目前还没看懂)

 cookie=0x15608eadfa234623, duration=.586s, table=, n_packets=, n_bytes=, priority=,arp,metadata=0xc400000001,arp_tpa=10.0.0.57,arp_op= actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],set_field:fa::3e:::c4->eth_src,set_field:->arp_op,set_field:10.0.0.57->arp_spa,set_field:fa::3e:::c4->arp_sha,IN_PORT
cookie=0x15608eadfa234693, duration=.078s, table=, n_packets=, n_bytes=, priority=,arp,metadata=0xc400000001,arp_tpa=10.0.0.59,arp_op= actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],set_field:fa::3e:8a:d4:->eth_src,set_field:->arp_op,set_field:10.0.0.59->arp_spa,set_field:fa::3e:8a:d4:->arp_sha,IN_PORT
cookie=0x15608eadfa22ed3f, duration=.364s, table=, n_packets=, n_bytes=, priority= actions=set_field:0x19->reg8,goto_table:

[ovs] 编写openflow流表的文档指引的更多相关文章

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

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

  2. OVS 精确删除流表

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

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

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

  4. 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  5. arclistsg独立单表模型文档列表

    arclistsg独立单表模型文档列表 (DedeCMS > 5.3) 名称:arclistsg 功能:类似arclist标签,获取指定单表模型(例如:分类信息),指定栏目,指定排序及呈现样式的 ...

  6. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  7. 数据库表结构文档查看器 基于netcore

    前言 日常开发业务代码,新接手一块不熟悉的业务时需要频繁的查看对应业务的数据库表设计文档.相比于直接翻看业务代码,有必要提供一个数据库表结构文档查看器来解决这些繁琐的问题. CML.SqlDoc CM ...

  8. HTML文档流和脱离文档流

    文档流:也就是我们通常看到的由左到右.由上而下的元素排列形式,在网页中每个元素都是默认按照这个顺序进行排序和显示的. 脱离文档流:元素脱离文档流之后,将不再在文档流中占据空间,而是处于浮动状态(可以理 ...

  9. 读取数据库信息并生成表设计文档Word版本

    1.参考C#代码 using Help.DBAccessLayer.Business; using Help.DBAccessLayer.Model.SqlGenerator; using Newto ...

随机推荐

  1. Ubuntu18.04下的模拟神器RetroArch

    安装 直接通过apt安装 sudo add-apt-repository ppa:libretro/stable sudo apt update sudo apt install retroarch ...

  2. 积木式编程——自制app点灯

    技术:51单片机.串口.蓝牙.积木式编程   概述 这里简单入门了积木式编程,做了个简易APP用来开灯关灯,当然你可以继续添加内容,可以做智能家居.遥控汽车和环境监控等等. 详细 代码下载:http: ...

  3. oracle 在已有表新增列内批量加数据

    创建每列随机值的语句 create table TEST_ZHAA01A_03 as select rownum as id, to_char(sysdate + rownum/24/3600, 'y ...

  4. maven仓库中心mirrors配置多个下载中心(执行最快的镜像)

    E:\Program FilesApache Software Foundationapache-maven-3.5.4-binconf\settings.xmlmaven仓库中心mirrors配置多 ...

  5. php生成毫秒时间戳的例子

    php时间函数time()生成当前时间的秒数,但是在一些情况下我们需要获取当前服务器时间和GMT(格林威治时间)1970年1月0时0分0秒的毫秒数,与Java中的currentTimeMilis()函 ...

  6. DB2修改自增主键起始值

    ALTER TABLE DB2INSTL.BT_AUDIT_COUNTY_DIFF_HISTORY_PX ALTER COLUMN ID RESTART WITH 18239

  7. sshpass 实现shell脚本直接加载密登录服务器

    主要命令:sshpass 这个命不是系统自带的,需要安装: # which sshpass/usr/bin/sshpass[root@666 tools]# rpm -qf /usr/bin/sshp ...

  8. 记录php中一种骚操作

    $options = array( 'config' => array( 'aaa' => 111, 'bbb' => 222, ), 'headers' => array( ...

  9. Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析

    Spark On Yarn的优势 每个Spark executor作为一个YARN容器(container)运行.Spark可以使得多个Tasks在同一个容器(container)里面运行 1. Sp ...

  10. 通过T-SQL语句实现数据库加解密功能

    CREATE TABLE [dbo].[Users] ( [U_nbr] NVARCHAR(20) NOT NULL PRIMARY KEY, [Pwd] nvarchar(MAX) ) --加密 D ...