OpenFlow协议中如何提高交换机流表的匹配成功率
写在前面
这段时间一直在研究如何提高流表空间的利用率。一直没能想到好的idea。有一篇文献中比较了现有研究中提到的手段,在这里记录一下都有哪些类型的手段以及这些手段存在的不足。这些手段不仅局限于如何提高流表空间的利用率,更把范围拓展至如何提高交换机流表的匹配成功率。
背景
软件定义网络(Software Defined Network,SDN)作为一种新的架构,利用分层的思想将控制平面和数据平面分离,为网络的部署和配置提供了极大的灵活性和可扩展性。
然而当前的SDN网络只能对L2~L4层的信息进行识别,控制器在制定流表项的timeout值时,将所有的数据流同等对待,导致交换机中流表的匹配成功率只有不到20%,极大地增加了控制器的负担,降低了网络的整体性能。
解决手段
- 增加流表的容量
- 思路: 通过在交换机中增加缓存的方式,来存放因为hard_timeout时间到达而被删除的频繁匹配的流表项,以此来提高流表的匹配率。
- 不足: 本质上只是增加了流表的容量,这种方式显然不能跟上SDN发展的速度;同时流表项在缓存中的匹配速率相比TCAM,性能要差很多。
- 相关文献: 《Flow table management scheme applying an LRU caching algorithm》,ICTC,2014
- 控制器中增加一个缓存模块
- 思路: 通过增加的缓存模块来记录流表项的到期时间,将流表项被再次安装的时间和到期时间的差值作为流表项的更新依据。
- 不足: 这种方式对因为idle_timeout超时导致的流表频繁更新存在只增不减的弊端。
- 相关文献: 《Intelligent timeout master:dynamic timeout for SDN—based data centers》,IFIP/IEEE,2015
- 预测无用的流表项
- 思路: 通过预测的方式,提前将最近一段时间内不会被匹配的流表项删除,预留流表空间给即将到来的数据流。
- 不足: 这种方式不可避免的会出现误判的情况,可能导致有用的流表项被删除,而真正无用的方式却占据流表空间。但是如果能够完善预测的机制,这种方法仍然是一个理想的idea。
- 相关文献: 《FlowMaster:early eviction of dead flow on SDN switche》,the 15th International Conference on Distributed Computing and Networking,2014
《A dynamic timeout control algorithmin software defined networks》,IJFCC,2014
- 将流表的工作方式类比为排队系统
- 思路: 将流表模型化为状态依赖的排队模型,并借助排队论定量地分析了hard_timeout对流截断次数和阻塞概率的影响。
- 不足: 基于hard_timeout超时机制的模型,灵活性较差,对于网络中数据传输时间参差不齐的数据包,不能很好地满足传输需求。
- 相关文献: 《AHTM:achieving efficient flow table utilization in software defined networks》,the 2014 IEEE Global Communications Conference,2014
- 考虑控制器的处理能力
- 思路: 以上提到的方法都没有将控制器的处理能力作为动态修改timeout
值的制约因素。可以将控制器单位时问内能够处理的
packet-in请求数作为约束条件,以满足该条件的最小idle_timeout值作为最终结果,从而实现满足控制器处理能力情况
下,最大限度地提高流表匹配率的目的。 - 不足: 该过程假设所有数据流都具有相同分布参数,没有考虑不同数据流类型间的特征差异。
- 相关文献: 《Effective idle_timeout value for instant messaging in software defined network》,the 2015 IEEE International Conference on Communication Workshop,2015
- 思路: 以上提到的方法都没有将控制器的处理能力作为动态修改timeout
- SDN网络中增加数据流类型感知技术
- 这个技术不太理解,需要进一步阅读。
- 相关文献: 《SDN-based application—Aware networking on the example of YouTube video》,2013 Second European Workshop on Software Defined Networks,2013
《Application—Awareness in SDN》, the ACM SIGCOMM 2013 conference on SIGCOMM,2013
- 综合利用数据流类型信息和网络资源使用情况
- 思路:
在L2~L4层网络信息的基础上,增加数据流特征信息区分音频流、视频流和普通文本流等数据流类型,从而为不同流类型数据包的流数据包表项制定不同的timeout值,能够在满足控制器处理能力的情况下,最大限度地利用流表资源,从而提高流表的匹配率 - 不足: 仅仅将数据流分为三大类,没有将数据流进行更细的划分,从而对流表项的更新实现更细粒度的控制。
- 相关文献: 《Intelligent update method for flow table in switch through analyzing data flow characteristics》,IJCA,2016
- 思路:
总结
- 目前我看到的针对流表的更新问题相关的文献,主要是分成三种类型:
- 寻找流表的匹配规律,来动态的更新timeout值,从而提高流表的匹配率。
- 提前移除无效的流表项,无论是通过预测的方式还是数据包本身可以明确的判断这个流即将关闭连接。
- 综合利用数据流类型信息和网络资源使用情况来更新流表。
OpenFlow协议中如何提高交换机流表的匹配成功率的更多相关文章
- OVS中arp响应的流表的实现
总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的 ...
- ovs源码阅读--流表查询原理
背景 在ovs交换机中,报文的处理流程可以划分为一下三个步骤:协议解析,表项查找和动作执行,其中最耗时的步骤在于表项查找,往往一个流表中有数目巨大的表项,如何根据数据报文的信息快速的查找到对应的流表项 ...
- SDN学习之OpenFlow协议分析
学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...
- openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)
一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...
- SDN原理 OpenFlow协议 -2
本文由SDN原理视频而成:SDN原理 流表 FlowTable --- OpenFlow的核心 问题3 流表项 Flow Entry 单流表(OpenFlow 1.0版本) -> 多流表(Ope ...
- SDN学习之Mininet验证OpenFlow协议版本
最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...
- OpenFlow协议1.0及1.3版本分析
OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着十分重要的地位. OpenFlow协议发展到现在已经经过了1.0.1.3.1.4等版本.其中1.0和1.3版本使用的是最为广泛的. ...
- Openflow协议详解
http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平 ...
- SDN原理 OpenFlow协议 -4
通道 Channel 在前面的OpenFlow的内容中,我们提到了在交换层所采用的流表是控制层的Controller下发的,那么Controller是如何下发流表的呢?中间经过了哪些的流程和步骤?控制 ...
随机推荐
- 使用GUI工具高效构建你自己的Nuget包
写这篇文章的原因是我在学习构建nuget包的时候,发现了一个官方推荐的GUI工具,而官方的工具介绍文章已经过时,一些地方和现在最新版本的工具有些差异,所以特意利用假期最后一个下午写下来,希望能帮助更多 ...
- EF6+MVC5之Oracleo数据库的CodeFirst方式实现
http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.htm http://www.knowsky.com/887470.htm ...
- 小白初识 - 快速排序(QuickSort)
我个人觉得快速排序和归并排序有相似之处,都是用到了分治的思想,将大问题拆分成若干个小问题. 不同的地方是归并排序是先把大问题拆分好了之后再排序,而快速排序则是一边拆分,一边排序. 快速排序的原理就是, ...
- vue cli 3 +jquery
const webpack = require('webpack')module.exports = { // baseUrl type:{string} default:'/' // 将部署应用程序 ...
- 数据库sql优化总结之2-百万级数据库优化方案+案例分析
项目背景 有三张百万级数据表 知识点表(ex_subject_point)9,316条数据 试题表(ex_question_junior)2,159,519条数据 有45个字段 知识点试题关系表(ex ...
- We are writing to let you know we have removed your selling privileges
Hello, We are writing to let you know we have removed your selling privileges, canceled your listin ...
- Linux 发展史与vm安装linux centos 6.9
操作系统 是一个人与计算机硬件的中介. Linux操作系统 开源代码的.自由传播的类Unix操作系系统软件: 多用户.多任务.多线程.多CPU的操作系统. 服务器端.嵌入式开发.个人pc桌面,服务器领 ...
- 如何开发一个 PyCharm 插件
PyCharm 是很多 Python 开发者优先选择的 IDE,功能强大,跨平台,提供免费社区版,非常良心.如果你想自己给PyCharm添加一些功能怎么办呢?有两个办法: 通过提需求实现,到 JetB ...
- C# 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
在菜单 “项目”的最下面 工程属性 菜单,选择“生成”选项卡,将目标平台由“Amy CPU”或者“*64”改成“*86”.
- centos7环境下mysql安装
1.去官网下载合适的yum源安装包 https://dev.mysql.com/downloads/repo/yum/ 2.yum 本地安装 命令:yum localinstall mysql57-c ...