主要还是参考的这篇文章https://blog.csdn.net/rocson001/article/details/73163041

但是有些流表操作是网上查了没有给出,比如更新流表,只能-h查看ovs命令行帮助界面。我在此做一个总结

流规则管理

基本字段包括: 已经生效的时间: duration_sec 
所属表项:table_id

优先级:priority

处理的数据包数:n_packets

hard_timeout: 硬定时器,从插入表格中开始算起

idle_timeout:软定时器,表示从最后一次匹配成功后,超过此时间后,流规则将被自动删除(设为0的时候表示该流规则将被永不过期 )

条件字段包括:

输入端口号:in_port

源/目的mac地址:dl_src/dl_dst

源/目的ip地址:nw_src/nw_dst

数据包类型:dl_type

网络层协议类型:nw_proto

metadata =

reg1 =

常见操作如下:

  • output:port: 输出数据包到指定的端口。port 是指端口的 OpenFlow 端口编号
  • mod_vlan_vid: 修改数据包中的 VLAN tag
  • strip_vlan: 移除数据包中的 VLAN tag
  • mod_dl_src/ mod_dl_dest: 修改源或者目标的 MAC 地址信息
  • mod_nw_src/mod_nw_dst: 修改源或者目标的 IPv4 地址信息
  • resubmit:port: 替换流表的 in_port 字段,并重新进行匹配
  • load:value−>dst[start..end]: 写数据到指定的字段

需要注意的是,底层的字段未给出确定值时,上层的字段不允许给定确定值。底层为确定值时,上层可以使用通配符

动作字段包括正常转发normal,定向到某交换机端口output:port,丢弃drop,更改源/目的mac地址mod_dl_src/mod_dl_dst,

一条流规则可以有多个动作,按照先后顺序依次完成

ovs条件匹配

ovs流表条件匹配是进行删除,修改的基础。需要根据匹配条件定位到相应的流表规则后才能进行后续的修改

记住,priority不能作为一个匹配选项!!!

一般来说,匹配条件有下面这些

匹配vlan tag,范围为0-4095

ovs-ofctl add-flow br0 priority=25,in_port=1,dl_vlan=233,actions=mod_vlan_vid:100,output:2

匹配源/目的MAC

ovs-ofctl add-flow br0 in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:01,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,dl_dst=00:00:00:00:00:01/00:00:00:00:00:01,actions=mod_vlan_vid:100,output:2

匹配以太网类型,范围为0-65535

ovs-ofctl add-flow br0 in_port=1,dl_type=0x0806,actions=mod_vlan_vid:100,output:2

匹配源/目的IP 
条件:指定dl_type=0x0800,或者ip/tcp

ovs-ofctl add-flow br0 ip,in_port=1,nw_src=10.10.0.0/16,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.20.0.0/16,actions=mod_vlan_vid:100,output:2

匹配协议号,范围为0-255

ovs-ofctl add-flow br0 ip,in_port=1,nw_proto=1,actions=mod_vlan_vid:100,output:2

匹配tcp/udp,源/目的端口,范围为0-65535

ovs-ofctl add-flow br0 tcp,tcp_src=179/0xfff0,actions=mod_vlan_vid:100,output:2

匹配tcp flags 
tcp flags=fin,syn,rst,psh,ack,urg,ece,cwr,ns

ovs-ofctl add-flow br0 tcp,tcp_flags=ack,actions=mod_vlan_vid:100,output:2

匹配icmp code,范围为0-255

ovs-ofctl add-flow br0 icmp,icmp_code=2,actions=mod_vlan_vid:100,output:2

匹配vlan TCI 
TCI低12位为vlan id,高3位为priority,例如tci=0xf123则vlan_id为0x123和vlan_pcp=7

ovs-ofctl add-flow br0 in_port=1,vlan_tci=0xf123,actions=mod_vlan_vid:100,output:2

匹配tunnel id,源/目的IP

ovs-ofctl add-flow br0 in_port=1,tun_id=0x7/0xf,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,tun_src=192.168.1.0/255.255.255.0,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,tun_dst=192.168.1.0/255.255.255.0,actions=mod_vlan_vid:100,output:2

ovs修改流表

ovs修改流表的过程是,根据匹配到的条件,修改actions字段的内容

ovs-ofctl add-flow br0 priority=25,in_port=1,dl_vlan=233,actions=mod_vlan_vid:100,output:2

将上面这条流表的actions修改为"drop"的指令为

ovs-ofctl mod-flows  br0 "in_port=1,dl_vlan=233,actions=drop"

记住,匹配条件不要带priority!!

给网口设置VLAN_ID

ovs-vsctl set port port1 tag=2

OpenvSwitch命令总结相关推荐

  1. Open vSwitch系列实验(一):Open vSwitch使用案例扩展实验

    一.实验目的 通过python脚本调用OpenvSwitch命令: 学习Mininet基于python脚本创建拓扑的实现: 进一步深度使用"ovs-vsctl"命令直接控制Open ...

  2. OVS-vsctl的帮助文件的中文版

    本文是为了在使用OpenvSwitch命令的时候,方便查阅(本人英文不好).... Open vSwitch 命令 init                        如果尚未初始化,则初始化数据 ...

  3. openvswitch常用命令之ovs-ofctl、ovs-appctl

    1. 查看ovs的ofport端口号 # ovs-ofctl show ns-vswitch OFPT_FEATURES_REPLY (xid=0x2): dpid:0000820552ee2c4e ...

  4. Openvswitch原理与代码分析(3): openvswitch内核模块的加载

    上一节我们讲了ovs-vswitchd,其中虚拟网桥初始化的时候,对调用内核模块来添加虚拟网卡. 我们从openvswitch内核模块的加载过程,来看这个过程. 在datapath/datapath. ...

  5. 玩转OpenVswitch 简介

    一.OVS简介 Openvswitch是一个优秀的开源软件交换机,支持主流的交换机功能,比如二层交换.网络隔离.QoS.流量监控等,而其最大的特点就是支持openflow,openflow定义了灵活的 ...

  6. 玩转OpenVswitch:简介

    一.OVS简介 Openvswitch是一个优秀的开源软件交换机,支持主流的交换机功能,比如二层交换.网络隔离.QoS.流量监控等,而其最大的特点就是支持openflow,openflow定义了灵活的 ...

  7. 从Openvswitch代码看网络包的旅程

    我们知道,Openvwitch可以创建虚拟交换机,而网络包可以通过虚拟交换机进行转发,并通过流表进行处理,具体的过程如何呢? 一.内核模块Openvswitch.ko的加载 OVS是内核态和用户态配合 ...

  8. Docker网络通信openvswitch(来自龙果学院学习资料 + 自己实验结果)

    1. 拓扑如下: 为了更方便的管理Docker网络,我们这一讲使用openvswitch网桥的方式来对容器网络进行管理,实现容器启动后能够互通.Open vSwitch是一个高质量的.多层虚拟交换机. ...

  9. OpenStack网络模块核心OpenvSwitch的全面解读

    一.OpenStack网络 1.1 什么是SDN软件定义网络 软件定义网络(Software Defined Network)就是在虚拟化的背景下,为了满足虚拟化环境下虚拟机对网络的需求,逐步发展起来 ...

最新文章

  1. 吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究
  2. ext.js组件的基本操作
  3. 由哥倫比亞預防醫學中心想到的
  4. 拦截retrofit数据请求返回的信息来判断程序错误点
  5. 2021-2027全球与中国MSMS探针卡市场现状及未来发展趋势
  6. 微信公众号 | 适合程序员的公众号排版
  7. BoundsChecker教程
  8. 一个关于数学归纳法的悖论问题
  9. 26款 网络会议/视频会议开源软件
  10. Linux TOP CPU %wa 值的理解
  11. 安卓java模拟器跳过付费,不用花钱买android手机,电脑端Android模拟器安装使用教程...
  12. 关于印发促进智慧城市健康发展的指导意见的通知
  13. 如何制作动态图片gif
  14. 一连上网就弹出广告窗,记录删除一些顽固文件
  15. 计算机网络的利与弊,网络的利与弊辩论会总结.doc
  16. 产业分析:线上线下融合会展
  17. reactrouter4路由钩子_React-Router4.x中文文档
  18. 通过按位与和按位或操作
  19. 计算机控制篮球,【精品课程设计】计算机控制技术弱电课程之篮球比赛计时计分器doc.doc...
  20. 【渝粤题库】陕西师范大学200551 英语语音

热门文章

  1. The Elements of C# Style -Naming
  2. Stream流与Lambda表达式(四) 自定义收集器
  3. LeetCode-17-Letter Combinations of a Phone Number
  4. beego + nginx 实现反向代理统一认证
  5. bootstrap checkbox
  6. 【转载】x86和x64
  7. SQL Server 2012 数据库镜像配置完整篇
  8. JavaScript代码检验工具——JS Lint工具安装指南
  9. IE自动在后台运行,不知道是什么病毒?
  10. lua sleep函数实现