Heterogeneous Flow Table Distribution in Software-Defined Networks笔记
来源:互联网 发布:dll编程pdf 编辑:程序博客网 时间:2024/05/22 03:12
一、几个概念
homogeneous flow table:同构流表(策略)
一个入口交换机应该执行相同的策略(ACL)——>由于TCAM容量限制,入口交换机的策略可以分配到由此导出的每条路径上——>为确保每条路径上的流都能匹配到规则,应该在每条路径上存贮相同的规则集(palette),这些被分割的相同的规则集就是同构流表。
总结:流的需求一样——>所有流经过的路径规则集都一样heterogeneous flow table:异构流表(策略)
每条路径上可以存贮不同的规则集,即一块策略分割出的不同规则集(可以有重叠部分),那么这条路径只能经过特定(只能匹配到被分割的规则集)的流——>但是规则集变少了。
总结:流的需求可以不一样——>不同流经过的不同路径的规则集可以不同TCAMs:TCAMs是指交换机中一组小的TCAM片,可以存贮一个子表。——>①将子表的预定大小与TCAM片的容量绑定,即一个TCAM片相当于一个子表②一个TCAM(交换机)可以放多个子表
二、Rule partition and allocation
palette模型——>
一句话:将原始规则表分割成均等的C个子表,(其中图中最短路径的长度是C的上界)然后使用彩虹路径方法将子表放入交换机中,保证每条路径上都要有所有的子表。
- 分割:CBD算法,最小化最大子表,以使子表的规则数最少
- 分配:贪心算法,首选占有最多路径的节点用颜色c进行染色,直到每条路径都染上了颜色c,然后进行下一次迭代。但是一个交换机只放入一个子表。
本篇论文的模型——>
1、Rule partition 规则分割
将策略分割成预定数量的、规则不相交的子表。这里的意思就是对规则集进行分类。新概念:子表——>same sub-table(相同子表,下面有解释)。
- 和Palette的分割算法比较:
- 不同: 这里的预定数量自定义,不是最短路径的节点数
- 相似:对于有依赖关系的规则,也采用CBD算法分割
- same sub-table(相同子表):这里子表中的规则属性满足下面三个条件就放在一起(分类标准)——>
- Policy:规则都服从子策略p。首先相同的规则集S
p ,有|Sp |个规则(|Sp |>|sub-table|),z是预定的子表大小——>则表示有Sp /z个子表 - Dependency:最好将有依赖关系的规则放入同一个子表,以节约规则空间
- Popularity:受欢迎度。
①对于子策略P,衡量标准是会有多少流匹配到P;②对于交换机,衡量标准是会有多少流经过交换机;③合理的情况是高欢迎度的交换机存贮高欢迎度的子策略
- Policy:规则都服从子策略p。首先相同的规则集S
- 可以将不相交的、但是欢迎度相似的规则放在一起,在一个子表中。
- 默认规则即转发规则,优先级最低。
具体伪代码——>
——>得到的这些子表可以看成是一种颜色。这里的子表数大于一条路径中交换机个数。数如何将子表放入一条路径的交换机中呢(一个交换机可以放多个子表)?即如何染色呢?
2、Rule allocation 规则分配
——>首先,我们补充下染色问题。
(0) coloring Algorithm 染色问题
图的染色问题是图论中的一个经典难题,是著名的 NP-完全问题之一。内容包括点染色、边染色、全染色、组合地图的面染色等。
我们主要介绍顶点染色。给定图G = (V, E),设顶点集V(G) = { v
本篇论文应用的就是顶点染色的Welsh-powell 染色算法。
1)贪心染色法
思想是首先用第一种颜色对图中尽可能多的顶点染色,然后用第二种颜色对余下的顶点中尽可能多的顶点进行染色,以此类推,直到把所有的顶点都染色完毕,而且使图中任意两个顶点的染色都不同。
优缺点:贪心算法染色最重要的一个优点是简单、方便、有效,在求解最小色数的近似解时不失为一种好的算法。但是它的缺点是该算法不能从问题的全局考虑作出最佳选择,只能从问题当前的状态考虑作出当前看似最佳的选择,而且一旦该算
法作出选择则不能更改。
2)Welsh-powell 染色算法(穷举法)
步骤:
- 将图 G 中的顶点按度数从大到小(即递减的次序)进行排列(相同度数的顶点排序可以随意)。
- 把第一个顶点染上第一种颜色,紧接着按步骤( 1)中排列的次序对与第一个顶点不相邻的顶点染上同一种颜色,即第一种颜色。
- 用剩下的颜色继续对步骤( 1)已排序顶点中尚未染色的顶点及与其不相邻 的顶点染色,直到图中所有的顶点都被染色。
例:
- 图中各顶点按度数大小排列,排列的结果是 C、A、B、F、G、H、D、E。
- 第一种颜色:CAG,第二种颜色:BHDE,第三种颜色:F,即x(G) = 3。
优缺点:Welch-powell 染色算法跟贪心染色算法一样是一种较为简单、方便、有效的方法。但是跟贪心算法比较,Welch-powell 算法可以得出最优解,但是在这里有一个疑问:当顶点度数排列唯一时,这个算法得出的解是最优解,但如果顶点度数的排列不唯一时,染色的方法不固定,这个算法的解会不会是整体最优解是不确定的。
染色问题中每个顶点都是相互平等。但是规则分配中因为还有交换机TCAM组的约束,子表(顶点)不是平等的。染色问题不能直接运用到规则分配中。需要先构造染色模型。
——>路径P分为以下两种情况讨论:
(1)路径中没有共享交换机
这是最简单的情况,路径中没有共享的交换机。我们首先分析网路拓扑中只有一条路径。
对于一条路径P
几个概念:
- t
i :路径Pi 上需要存放的ti 个子表。 - α-clique:α表示策略中所有的子表数。represented clique,这里称为路径P
i 的团体,代表一条路径Pi 可能有的总子表,用于构造染色问题,代表染色问题的所有颜色。 - auxiliary nodes,辅助节点:α − t
i 的节点,用做染色问题的约束节点。 - L
i 应是一个整数。若计算后不是整数,则在路径Pi 随机取一个交换机节点放入⌈Li ⌉子表(向上取整),剩下的节点放入⌊Li ⌋子表。
如上图,加入这么多实线的意思就是抽象成染色问题的约束条件:一条路径(团体C)中的相邻节点不能染同样的颜色,即在一条路径中一个颜色(子表)只能放一个。加入辅助节点,这里等同于规定了颜色的数量。
上图完成对一条路径的染色问题构造Clique construction (α, pi)。
(2)路径中有共享交换机
上升到一般性问题。假设网络拓扑中有两条路径P
问题的步骤:
- 对每条路径分别构造染色问题(Clique)
- 将构造好的所有路径进行整合
- 最后依次染色
——>我们下面对步骤一个个分析:
1)Clique construction (α, pi)
如上面路径无共享交换机问题的分析,首先计算出每条路径P
伪代码如下:
2)Integration (H, Ci)
——>两条路径有共享交换做为关节点,如何整合呢?
即在共享交换机中的找到各个路径中最小的L
如图中Pi的Li为3,Pj的Lj为2,最小的L就为2,则整合后的共享节点为2。
伪代码如下:
3)Refinement
——>最后如何染色是问题的重点
概念:
- invalid color:无效颜色。有效颜色还未染完,但是由于相邻的约束条件,不能在该节点染色。该颜色j>α。
- valid color:有效颜色。该颜色j在α其中,j<α。
对共享节点进行染色会出现α个颜色中颜色k不能染,只能染上无效颜色。为什么未染色的共享节点不能染颜色k?
——>首先,k是两条路径中的相同颜色(子表)。其次,因为在C’中k已经被染色了。由于两条路径在染色问题模型中相邻,在C中就不能在染了,否则在C’中重复。
步骤:
- 先使用Welsh-Powell染色法把能染的有效颜色颜色先染上。
- 对未染色的共享节点染上无效颜色。
- 最后解决无效颜色问题,增加节点用有效颜色代替。
例:
- 四条路径有共享交换机
- 对每条路径构造染色问题
- 先染上有效染色,在对未染色的节点染上无效颜色
- 最后通过增加节点消除路径相邻,来消除无效颜色
——>问题:染色问题只说染颜色没有说可以先染哪种颜色?以更好的解决无效颜色问题
三、实验结果
(1)Rule partition
实验条件:假定50个交换机,每个交换机能存贮5个子表(TCAM),每个子表能存贮30个规则,每个规则6位。规则依赖、网络拓扑(路径)、流都是随机产生。
基准方法:参考Palette模型。分割时不管共享交换机,每条路径都必须放入所有的子表(策略)
1)随路径的增加
- 一条路径中的子表数
- 总子表数(需要TCAM的数量)
结论:
- 基准方法随路径增加子表数增加,因为每条路径都要复制放入相应的子表;
- 本篇论文的方法子表数不怎么增加。因为,路径增加,但是交换机不增加。随着路径的增加,许多交换机都成为共享交换机,则其实路径不需要增加子表。
- 优势的原因是几条路径中只需一种子表,因为有共享交换机
(2)Rule replications
随着通配符规则的增加:
需要复制的规则数:
- 本篇方法规则复制少的原因:把有依赖的一组规则放在同一个子表,只有当子表规则数太多时分割
- 基线算法复制多的原因:直接分割,并且每条路径都要放置所有的 规则
(3)Rule allocation
这里的基线方法:参考Palette分配规则的q-greedy algorithm(q-贪心算法)。即依次将子表放入共享程度最大的交换机中。并且每条路径都要存储所有的子表。
衡量标准:平衡因子,1 − D/T
- D:交换机存贮的最大子表数与另一个交换存贮的最小子表数之差
- T:交换机能存贮的子表数
- 越高说明子表数越平均
4种检测:
- 随着最短路径的增加
- 随着TCAM的增大(交换机能存放的子表数增大)
- 随着流的增多
- 随着交换机数量的增加
1)随着最短路径的增加
- 总子表的变化
- 平衡因子的变化
结论:
- q-贪心法随着路径增加,共享交换机增多,所以总子表数减少。平衡因子接近于0的原因:不是均衡分配子表。而是贪心的。
- 本篇算法在交换机中均衡分配子表,路径的增加不带来规则的变化,总子表数基本不变。
2)随着TCAM的增大(交换机能存放的子表数增大)
- 总子表的变化
- 平衡因子的变化
结论:
- 贪心法总子表减少的原因: tcam增大,共享交换机可以存贮更多的规则
- 本篇方法不变的原因:有很高的平衡因子,均匀分配在各个交换机 中
3)随着流的增多
- 总子表数的变化
- 平衡因子的变化
结论:
- q-贪心法在每条路径存储了所有的子表,所以流增加时比较稳定。
- 本篇算法流增加时需要新的子表对应,所以总子表数增加。
4)随着交换机数量的增加
- 总子表数的变化
- 平衡因子的变化
结论:
- q-贪心法总子表增加。因为交换机增加,路径不变,则共享交换机减少,路径缺少共享交换机子表需要其他交换机复制子表。
- 本篇方法保持稳定。总的子表数不随交换机数量的变化而变化。
四、引用:
- Toupin, L., et al. “Heterogeneous Flow Table Distribution in Software-defined Networks.” IEEE Transactions on Emerging Topics in Computing 4.2(2016):252-261.
- 梁政. “图染色问题应用研究.” (2017).
- Heterogeneous Flow Table Distribution in Software-Defined Networks笔记
- Palette: Distributing Tables in Software-Defined Networks笔记
- 《SDN: Software Defined Networks》笔记--数据中心
- PaperReading: SDNRacer: Detecting Concurrency Violations in Software-Defined Networks
- 《SDN: Software Defined Networks》笔记2--Openflow, 虚拟交换机
- 《SDN: Software Defined Networks》笔记--SDN控制器,网络可编程
- Rule-Caching Algorithms for Software-Defined Networks(论文笔记)
- Software-Defined Networks and OpenFlow
- Software-Defined Networks and OpenFlow
- Optimizing Rule Placement in Software-Defined Networks for Energy-aware Routing
- QoS Over Heterogeneous Networks
- SDN- O'Reilly.SDN.Software.Defined.Networks.Aug.2013
- Heterogeneous Storages in HDFS
- 【论文笔记】Embedding of Embedding (EOE) : Joint Embedding for Coupled Heterogeneous Networks
- 论文笔记:《maxout networks》和《networks in networks》
- Segment Routing: Impact on Software Defined Networks 段路由对SDN的影响
- 《SDN: Software Defined Networks》读书笔记1--控制层与数据层分离
- CUDA - Heterogeneous Parallel Processing 笔记
- I/O之内核buffer-“buffer cache”
- Spring自动组件扫描
- OpenJDK 8 编译
- C++入门(一)
- “抢30”游戏
- Heterogeneous Flow Table Distribution in Software-Defined Networks笔记
- CentOS7使用yum安装nginx php php-fpm mariadb phpmyadmin
- Android Studio地图开发之根据地点查找、定位(百度地图API)
- Arduino IDE for Visual Studio
- Android Studio 快捷键
- JavaScript中的DOM节点操作
- AndroidStudio修改包名和项目名称
- HTML5 5 表单
- HashTable/HashMap/ConcurrentHashMap