POF技术分享(一):基本原理

前言:

POF协议(Protocol Oblivious Forwarding)是由华为主提出的一项SDN南向协议,其很大程度上弥补了OpenFlow协议的不足,为SDN南向接口的制定提供了新思路。本文先对POF的基本概况和其基本原理进行分析,为后续进一步分析POF做基础。

一 Protocol Oblivious Forwarding

我们知道,目前SDN中南向协议OpenFlow是主流协议,并且ONF不断为其推出新的版本,以此适应更多应用场景和满足对南向接口更为广泛的迫切需求。匹配域从v1.0的12元组已经扩展到v1.3的40个匹配字段左右,action等也有所增加,但是依然存在一些不足:

  • 匹配域和action的操作对象依然主要分布在数据包L2-L4层,SDN数据层对于包头更高层的操作是无能为力的,例如基于OpenFlow的在数据层面进行DPI实验与应用则捉襟见肘;
  • 即使L2-L4层字段,也并非包含L2-L4的所有协议字段,如接入会话相关协议字段(PPPoE协议)等。
  • 对于自定义的网络协议,更是难以通过在控制器上做开发,并通过OpenFlow南向协议下发到交换机中进行支持。
  • action的操作也是具有局限性的,如对于字段添加也是局限在个别制定好的字段(如VLAN、MPLS等),不能做到任意修改与添加。

由此可见,OpenFlow在匹配域与action操作上粒度不够细,扩展性不足。POF保留了OpenFlow这种基于流的处理逻辑,但也做了相应改进,将匹配域和action的操作对象转化为{类型、偏移量、偏移长度},这样就可以完成任意数据包在任意位置处且任意长度的字段的匹配或action执行,以此实现交换机的协议无感知能力,即交换机对数据包的操作与协议无关。这样,南向协议的可扩展性和操作粒度大大增加,SDN的应用场景也得到拓展。

二 POF原理

POF仍然保留OpenFlow基于多级流表的处理逻辑,主要将匹配域和action操作对象针对{类型、偏移量、偏移长度},{类型、偏移量、偏移长度}是POF原理的基础,对于理解POF的核心理念很有必要:

  • 类型:操作字段类型。POF的操作对象可以是数据包本身,也可是元数据。POF对于元数据的定义进行拓展,作用也相应增大,且与数据包相同生命周期。
  • 偏移量:操作字段相对分组处理指针(Packet process pointer)的位置的偏移量,即指定了操作字段的起始位置。
  • 偏移长度:指定操作字段的长度。

通过以上三个参数,基本就可以明白POF是基于什么进行匹配和action操作。

此外,POF的指令集Instruction也是协议无关的,即基于{类型、偏移量、偏移长度}完成,可以完成OpenFlow不能完成action,如POF中AddField可以在指定位置增添任意新字段。POF指令基本覆盖数学中“与、或、非”和“增、删、改”等基本逻辑,所以操作粒度和范围比较广泛。

下面以Instruction为Goto_Table进行示例:

左为跳转前,右为跳转后。由图可见,Goto_Table指定了跳转表的id,分组处理指针偏移的位置14byte处,待跳转表的匹配域个数位1、匹配域{0,64,64}(即匹配字段类型为0,表示匹配数据包,且匹配字段为相对于当前分组处理指针64bit处,长度为64bit的字段;当然,如若匹配域个数不为1,则此处匹配域三元组个数相应则为为多个)。

上图主要简单示意POF这种基于偏移量和偏移长度操作的思想,相应还有很多其他机制,保证POF的效率和可用性,此处没有一一列举,在研读源码时会理解。

后记

POF这种基于偏移量和偏移长度的流操作思想,确实值得学习和实践。POF官网发布了相应POF交换机和控制器,可以基于此进行学习。以上简单对其原理进行分析,POF交换机体现出POF的思想,后续文章基于POF交换机进行源码分析。

作者简介:

晏思宇,2014/09-至今,北京邮电大学信息与通信工程学院未来网络理论与应用实验室(FNL实验室)攻读硕士研究生。个人博客www.yansy.xyz


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/15594.html
分享到:
相关文章
条评论

登录后才可以评论

晏思宇 发表于16-01-12
3