OpenvSwitch系列之九 Group表

Open vSwitch系列之一 Open vSwitch诞生
Open vSwitch系列之二 安装指定版本ovs
Open vSwitch系列之三 ovs-vsctl命令使用
Open vSwitch系列之四 ovs-ofctl命令使用
Open vSwitch系列之五 网桥特性功能配置
Open vSwitch系列之六 vlan隔离
Open vSwitch系列之七 meter表限速
Open vSwitch系列之八 vxlan隧道
Open vSwitch系列之九 Group表
Open vSwitch系列之十 调用北向接口下发流表
OpenvSwitch系列之十一 ovs-dpdk
简介
组表是openflow1.1之后引入的一个高级功能,可以解决在特定场景下需要很多流表才能完成的动作。
组表的能力
1. 节省流表空间
组表的能力就可以存储多个动作,当匹配到一个合适的动作后可以执行多个动作,优化了流表一个匹配+一个动作的工作模式。
2. 数据包复制
组表可以将进入的流量复制成多份,并对每一份单独处理。特定场合下如流量分析,可以一边将流量正常转发,一边将流量导入到某一个分析机中。
3. 容错能力-备用端口/路径
组表有识别up端口和down端口的能力,可以在up的端口down掉之后将选择一个新的up端口转发流量。
例如:如果一个数据包应该在端口1离开交换机,但是这个端口down掉了,你想要将数据包通过端口2发送出去。如果用流表的话,当端口1down掉,需要找到所有含有“发往端口1”的流表项,全部修改成端口2,这个操作是很复杂的。这个时候,需要定义一个“1st live” group来表示这种容错行为,然后将所有的流表项的规则指向该组表。只要端口1正常,group会把所有的数据包发往端口1,如果端口1 down掉,将所有数据包发往端口2,流表没有任何变化。
4. 负载分流
组表可以选择动作中的某一个动作执行,在负载的场景下就可以通过转发到不同的端口实现后端流量负载。
组表结构
组表的结构图如下

一个组表包含多个组条目。组条目的能力是让openflow能够实现额外的转发能力。
| Group Identifier | Group Type | Counters | Action Buckets|

Group Identifier:一个32bit无符号的整形,用来表示组表在交换机中的身份
Group Type: 确定组的类型
Counters: 当数据包被组处理时跟新数值
Action Buckets: 一个动作桶的有序列表,每一个桶包含多个动作可以去执行。动作桶中的动作是无重复的结合。
组表可以包含0个或多个动作桶,除了 indirect 类型的桶只能有一个动作。一个组表没有动作桶默认是丢弃数据。
一个桶的典型使用是包含一个可以修改数据包的动作和一个将数据转发到另一个端口的动作。动作桶也可以包含一个动作,这个动作可以调用另一个组的,前提是交换机支持这种组表调用链。一个没有动作桶的组表是合法的,一个动作桶没有转发动作或别的动作,会默认丢弃掉匹配的数据包。
组表的类型:
all: 执行组表中所有的动作。这种类型通常被用在组播或者广播转发。数据包非常高效的复制给每一个桶。每一个数据都被组表中的动作桶执行。如果一个动作是直接将数据包转发到进入的端口,这个包的复制会被放弃。如果控制器中写入了转发到进端口的流表,组表必须包含一个转发动作为OFPT_IN_PORT的保留动作。
select: 执行组表中的一个动作桶。数据包被组表中一个单个的桶处理,具体是哪一个动作通取决于交换机的选择算法。所有关于选择算法的配置和状态都是独立于OpenFlow协议之外的。
indirect: 执行组表中的一个定义的动作桶。这种组表只支持一个动作桶。允许多个流表条目或者组表指向这个id,支持更快,更高校的聚合。这种组类型是所有组类型中最高效的方式。
fast failover: 执行第一个活动的桶。每个动作桶和特殊的端口或组表有关系,可以控制动作桶的存活。动作桶有序的定义在组表中,第一个和活动的端口有关系的桶会被选择。这种类型可以修改交换机的流表而不需要控制器下发流表。如果没有动作桶是活动的,数据包会被丢弃。
类型验证
all
- 用mininet新建一个拓扑,一个交换机,下面挂4个主机
mn --topo single,4

- 删除所有流表然后下发组表,引用组表
ovs-ofctl del-flows s1
ovs-ofctl add-group s1 group_id=1,type=all,bucket=output:2,bucket=output:3,bucket=output:4 -O openflow11
ovs-ofctl add-flow s1 in_port=1,action=group:1 -O openflow11



- 验证类型为all的功能
type=all,组表将选择动作桶里所有的的动作。首先打开h4,打开wireshark,抓取网卡上的数据。

在h1上ping h2,流量会经过交换机,被流表匹配到,然后交给组表。组表会将ping的数据包复制多份,发给每一个动作去处理。流量会从2、3、4这三个端口都转发出去,所以在h4上能够看到icmp的数据包。

select
仍然使用上面的的拓扑,一个交换机连接4个主机。
ovs-ofctl add-group s1 group_id=2,type=select,bucket=output:2,bucket=output:3,bucket=output:4 -O openflow11
ovs-ofctl add-flow s1 in_port=1,action=group:1 -O openflow11

type=select,组表在动作桶中随机选择一个动作去执行,可以看到下在h2、h3、h4中监听的tcpdump中h4有流量捕获。在h1中ping 10.0.0.2,最后流量通过组表的select转发到h4上。

fast failover
通过fast failover这个名字就能发现该类型是一个快速恢复的类型。具体来说就是当转发的端口down掉之后组表能够感知到并且切换到另一个up的端口。
由于构建场景比较复杂,还没有实现该功能的演示。
ovs-ofctl add-group s1 group_id=0,type=ff,bucket=weight:0,watch_port:2,watch_group:0,actions=output:2,bucket=weight:0,watch_port:3,watch_group:0,actions=output:3 -O openflow11


具体可以参加该使用案例:http://voip.netlab.uky.edu/grw2018ky/handout/Khayam_FFO_Clemson.pdf
OpenvSwitch系列之九 Group表的更多相关文章
- OpenvSwitch系列之七 meter表限速
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十九】
<Web 前端开发精华文章推荐>2013年第七期(总第十九期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- 学习ASP.NET Core Razor 编程系列十九——分页
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 单元测试系列之九:Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- OpenvSwitch系列之八 vxlan隧道
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- solr与.net系列课程(九)solr5.1的配置
solr与.net系列课程(九)solr5.1的配置 最近一些园友来咨询solr5.1的配置方式,然后我就去官网下载了个最新版本的solr,发现solr5.0以后solr的下载包里的内容发生的变化,移 ...
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(九) Policy Injection Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(九) Policy Injection Application Block 代理对象(Proxy Object) ...
- information_schema系列六(索引,表空间,权限,约束相关表)
information_schema系列六(索引,表空间,权限,约束相关表) 1: STATISTICS 这个表提供的是关于表的索引信息: INFORMATION_SCHEMA Name SHOW ...
随机推荐
- TypeScript学习小结:基础使用
TypeScript学习小结:基础使用 某册子买了两年多了,到最近才开始学习TypeScript,拖延症的严重症状了:不过我还是深信人做一件事是需要一个契机的. 学完之后整体感受是:TypeScrip ...
- decltype关键词
简述 decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type"的缩写,译 ...
- Python 潮流周刊#27:应该如何处理程序的错误?
你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.本周刊开源,欢迎投稿.另有电报频道作为副刊,补充发布更加丰富的资讯. 产品推荐 Walles.AI 是一款适用于所 ...
- iptables中limit 和 limit-burst 说明
Limit match 这个匹配操作必须由-m limit明确指定才能使用.有了他的帮助,就能对指定的规则的日志数量加以限制,以免你被信息的洪流淹没哦.比如,你能事先设定一个限定值,当符合条件的 ...
- HarmonyOS 开发入门(二)
HarmonyOS 开发入门(二) 日常逼逼叨 在HarmonyOS 开发入门(一)中我们描述了 HarmonyOS 开发的语言ArKTs以及Ts简单的入门级语法操作,接下来我们进入第二部分Harmo ...
- 地图选择器datav怎么使用?
DataV 是一款基于阿里云的数据可视化产品,它提供了丰富的组件和功能,其中包括地图选择器.下面是一个详细的介绍: 1. 了解 DataV: - DataV 是一款强大的数据可视化工具,能够帮助用户将 ...
- nordic的nrf52系列32M速率的SPI-SPIM3
简介:在nordic的nrf52系列中的nrf52833和nrf52840的SPIM3都是支持最大32M的spi速率,其余的只有8M,当在需要刷屏,或者一些需要高速32M-SPI时,这是一个很好的使用 ...
- 搭建一个简易的IPv6网络测试环境
背景 近期一个项目要求产品在IPv6网络环境部署,在此之前所有的项目网络环境都是IPv4,为了验证产品网络适配能力,需要搭建一套IPv6的网络测试环境,网上搜了很多教程,也在某东找了很多路由器,对于如 ...
- Codeforces #475 div2
题目链接:http://codeforces.com/contest/964 A题 答案n/2+1: B题 讨论三种情况 c>b c==b c<b C题 数论,逆元+快速幂,但是我一直卡在 ...
- 华企盾DSC防泄密客户端安装卡住
解决方法: 1.安装了杀毒或者同行软件,退出后安装不行的话卸载掉 2.注册表编辑被管理员禁用,导致客户端安装时一直卡住,启用注册表编辑(后续2021.6.21后发布的版本可直接安装) 由于安装了卡巴斯 ...