OpenFlow协议中如何提高交换机流表的匹配成功率

Posted multhree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
  • 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
  • 将流表的工作方式类比为排队系统
    • 思路: 将流表模型化为状态依赖的排队模型,并借助排队论定量地分析了hard_timeout对流截断次数和阻塞概率的影响。
    • 不足: 基于hard_timeout超时机制的模型,灵活性较差,对于网络中数据传输时间参差不齐的数据包,不能很好地满足传输需求。
    • 相关文献: 《AHTM:achieving efficient flow table utilization in software defined networks》,the 2014 IEEE Global Communications Conference,2014
  • 综合利用数据流类型信息和网络资源使用情况
    • 思路:
      在L2~L4层网络信息的基础上,增加数据流特征信息区分音频流、视频流和普通文本流等数据流类型,从而为不同流类型数据包的流数据包表项制定不同的timeout值,能够在满足控制器处理能力的情况下,最大限度地利用流表资源,从而提高流表的匹配率
    • 不足: 仅仅将数据流分为三大类,没有将数据流进行更细的划分,从而对流表项的更新实现更细粒度的控制。
    • 相关文献: 《Intelligent update method for flow table in switch through analyzing data flow characteristics》,IJCA,2016

总结

  • 目前我看到的针对流表的更新问题相关的文献,主要是分成两种类型:
    • 寻找流表的匹配规律,来动态的更新timeout值,从而提高流表的匹配率。
    • 提前移除无效的流表项,无论是通过预测的方式还是数据包本身可以明确的判断这个流即将关闭连接。
    • 综合利用数据流类型信息和网络资源使用情况来更新流表。

以上是关于OpenFlow协议中如何提高交换机流表的匹配成功率的主要内容,如果未能解决你的问题,请参考以下文章

关于OpenFlow协议

OpenFlow协议(OVS)

SDN第三次作业

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

ovs 删除openflow流表

3.2 OpenFlow 概述