写在前面

这段时间一直在研究如何提高流表空间的利用率。一直没能想到好的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
  • 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协议中如何提高交换机流表的匹配成功率的更多相关文章

  1. OVS中arp响应的流表的实现

    总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的 ...

  2. ovs源码阅读--流表查询原理

    背景 在ovs交换机中,报文的处理流程可以划分为一下三个步骤:协议解析,表项查找和动作执行,其中最耗时的步骤在于表项查找,往往一个流表中有数目巨大的表项,如何根据数据报文的信息快速的查找到对应的流表项 ...

  3. SDN学习之OpenFlow协议分析

    学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...

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

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

  5. SDN原理 OpenFlow协议 -2

    本文由SDN原理视频而成:SDN原理 流表 FlowTable --- OpenFlow的核心 问题3 流表项 Flow Entry 单流表(OpenFlow 1.0版本) -> 多流表(Ope ...

  6. SDN学习之Mininet验证OpenFlow协议版本

    最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...

  7. OpenFlow协议1.0及1.3版本分析

    OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着十分重要的地位. OpenFlow协议发展到现在已经经过了1.0.1.3.1.4等版本.其中1.0和1.3版本使用的是最为广泛的. ...

  8. Openflow协议详解

    http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平 ...

  9. SDN原理 OpenFlow协议 -4

    通道 Channel 在前面的OpenFlow的内容中,我们提到了在交换层所采用的流表是控制层的Controller下发的,那么Controller是如何下发流表的呢?中间经过了哪些的流程和步骤?控制 ...

随机推荐

  1. Openwrt之移动硬盘ext3/ext4格式化工具

    在给openwrt挂载移动硬盘的时候,最好是ext3/ext4方式,但在windows下苦于无法找到合适的工具进行格式化. 踅摸了半天,终于找到了它:MiniTool Partion  Wizard ...

  2. Python数据可视化的10种技能

    今天我来给你讲讲Python的可视化技术. 如果你想要用Python进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解.其中最直观的就是采用数据可视化技术,这样,数据 ...

  3. Elasticsearch.Net 异常:[match] query doesn't support multiple fields, found [field] and [query]

    用Elasticsearch.Net检索数据,报异常: )); ElasticLowLevelClient client = new ElasticLowLevelClient(settings); ...

  4. python正则表达式re之compile函数解析

    re正则表达式模块还包括一些有用的操作正则表达式的函数.下面主要介绍compile函数. 定义: compile(pattern[,flags] ) 根据包含正则表达式的字符串创建模式对象. 通过py ...

  5. 原生开发小程序 和 wepy 、 mpvue 对比

    1.三者的开发文档以及介绍: 原生开发小程序文档:点此进入 wepy 开发文档:点此进入 mpvue 开发文档:点此进入 2.三者的简单对比: 以下用一张图来简单概括三者的区别: 小程序支持的是 WX ...

  6. [图算法] 1003. Emergency (25)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  7. 浅析GCC下C++多重继承 & 虚拟继承的对象内存布局

    继承是C++作为OOD程序设计语言的三大特征(封装,继承,多态)之一,单一非多态继承是比较好理解的,本文主要讲解GCC环境下的多重继承和虚拟继承的对象内存布局. 一.多重继承 先看几个类的定义: 01 ...

  8. ZOJ 2060 A-Fibonacci Again

    https://vjudge.net/contest/67836#problem/A There are another kind of Fibonacci numbers: F(0) = 7, F( ...

  9. LR监控tomcat服务器

    采用编写VuGen脚本访问Tomcat的Status页面的方式获取性能数据(利用了关联和lr_user_data_point函数),本质上还是使用tomcat自带的监控页面,只是将监控结果加到LR的a ...

  10. 新浪 ip 地址库

    API地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php 帮助 1 2 3 4 5 6 7 8 function get_location($i ...