open-vswitch流表查找分析.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

OpenvSwitch流表查找分析

流表查找过程是OpenvSwitch核心中的核心。在此之前,庾志辉写过关于对OpenvSwitch(下文简称OVS)源代码分析的系列博客(链接如下:/yuzhihui_no1/article/details,时间是2014年9月25日,sdnlab前几个月时间也对这个OVS源代码分析系列进行了转载(链接如下:/3206.html)。文中的分析对于研究OVS的人来说有很大的帮助,减少了许多阅读代码的弯路,在这里对他表示感谢。有一点不足的是,由于庾志辉当时分析的应该是OVS2.0(或者2.1)的代码,之后OVS对其自身查表的过程进行了改进,因此当前OVS版本(2.4)中描述的查表算法与庾志辉当时分析的流表查找过程已经有了一些区别。为此,本文对新改进的OpenFlow流表查找算法进行分析,供大家参考、交流。在庾志辉博客中已经提到的内容就不在此赘述,主要讲一些区别(即OVS流表查找改进的地方)以及个人的一些理解。

文中的分析主要参考来源于两篇论文以及OVS2.4源码,如下:

[1]N.Shelly,E.Jackson,T.Koponen,N.McKeown,andJ.Rajahalme.FlowCachingforHighEntropyPacketFields.InProc.ofHotSDN,2014.

[2]PfaffB,PettitJ,KoponenT,etal.ThedesignandimplementationofOpenvSwitch[C]//12thUSENIXSymposiumonNetworkedSystemsDesignandImplementation.2015.(NSDI2015BestPaperAward)

[3]OpenvSwitchversion2.4./releases/openvswitch-2.4.0.tar.gz

背景

在一个网络交换设备中,报文的处理流程可简化为以下三个步骤:协议解析,表项查找,动作执行(包含转发、对报文的修改等动作),如图1所示。由于表项的数目可能很大,匹配的形式包括最长前缀匹配、精确匹配、范围匹配,设计高效的查表算法一直是网络研究人员追求的目标。表项查找设计涉及到两个方面:表项数据结构的组织和查表算法的执行。

图1报文处理流程

OVS是部署在服务器内部,用于实现虚拟机之间交换的OpenFlow软件交换机。软件交换机通常运行在通用处理器(CPU)之上,因此其查表时间相比于用ASIC、TCAM、NP等硬件实现更慢。与传统的路由器、交换机不同,OpenFlow的匹配域包含了L2-L4等匹配域。由于匹配域增多,为了防止表项产生组合爆炸问题,OpenFlow规范中指出,其转发过程采用多级流水线查表设计。这样一来,OVS高效查表的难度和挑战进一步加大,其查表设计就显得尤为重要,直接影响软件转发的性能。

本文将从表项查找的两个方面,表项数据结构的组织(MegaflowCache+MicroflowCache)和查表算法(元组空间搜索),对OVS的流表查找过程进行详细分析。

OpenFlow流Cache的设计改进过程

一直以来,流Cache是提高查表性能的有效手段,已经被广泛应用于报文查表加速。它将数据平面的转发路径分为快速路径(即流Cache)和慢速路径,利用流量局部特性,使得大部分报文命中快速路径中的表项,从而提高转发性能。OVS也采用了流Cache设计思路。

OpenFlow流Cache的组织架构改进经历了三个阶段。

在早期OVS的版本中,为缓解多级流表查表慢的问题,OVS在内核态采用MicroflowCache方法。MicroflowCache是基于Hash的精确匹配查表(O(1)),表项缓存了多级查表的结果,维护的是每条链接粒度的状态。MicroflowCache减少了报文进用户态查多级表的次数。一条流的首报文进入用户态查表后,后续的报文都会命中内核中的MicroflowCache,加快了查表速度。但是对于大量短流的网络环境来说,MicroflowCache命中率很低,导致大部分报文仍然需要到用户态进行多级流表查找,因此转发性能提升有限。

而后,为了解决MircoflowCache存在的问题,OVS采用MircoflowCache代替了MegaflowCache。与MircoflowCache的精确Hash查表不同,MegaflowCache支持带通配的查表,所以可减少报文至用户空间查表的次数。庾志辉的博客中当时分析的就是关于megaflow的数据结构和查表流程,相关内容不在此赘述,请看

文档评论(0)

sis36 + 关注
实名认证
文档贡献者

大数据工程师持证人

本人从事所爱好的软件研发职业,所选文档部分是选自于网络,之所以选这些文档是因为我很欣赏你的思维和才华,特此给我们大家以分享和学习的机会。如果你感觉侵犯了你的利益,请和我联系,我会尽快的删除!谢谢!

领域认证该用户于2024年03月25日上传了大数据工程师

1亿VIP精品文档

相关文档