Openflow 1.0 规范于2009年发布后被芯片厂商当成新生事物来看待,芯片厂商并没有立即开发面向Openflow的全新芯片。因为Openflow太超前的理论和现实存在巨大的鸿沟:Openflow 和传统的交换机芯片架构存在根本性差异,厂商如果100%遵从该规范的话,单从技术上来看难度就很大。此外打造一颗全新的产品在芯片行业是极大的资金和时间付出。而且就算两三年后造了出来,有没有客户为其买单也是疑问。仔细掂量之后,主流交换机芯片厂商对Openflow 并不感冒,处于观望状态。
ONF 在这种情况下成立了专门的工作组,思考如何以最低的代价开发出支持Openflow的交换芯片,即使是“缩水版”的Openflow芯片也行。在这样的前提下,ONF最终提出了TTP/NDM方案。
NDM(可协商的数据转发模型)其实是一个框架,允许厂商基于实际的应用需求和现有的芯片架构来定义不同的转发模型。TTP是NDM的一个具体模型。
虽然按TTP方案实现的是“缩水版”的Openflow芯片,但实际上大部分的场景并不会把Openflow的全部匹配域都用上,流表级数也不会有大几十级,缩水版的芯片基本可以满足这些场景。如下图所示,“ * ”代表没有用到的匹配域:
由于实现Openflow功能芯片是基于已有的芯片,推出速度会很快,成本和普通交换机相当,交换芯片厂商就很乐意了。下图就是某芯片厂商利用其已有芯片的实现多级流表的一个示例:
交换芯片大厂博通(Broadcom)按照TTP 实现Openflow功能的方案就是OF-DPA(Openflow Data Plane Abstraction)。它是一个应用软件组件。实现了 Openflow与Broadcom SDK间适配层的功能。OF-DPA在博通交换芯片上扩展性的支持了Openflow 1.3协议。博通遵循TTP方案将其传统的ASIC架构映射到Openflow的流水线(Pipeline),即由OF-DPA做了一个转换(映射)来实现Openflow功能。
OF-DPA目前有三个版本:
OF-DPA 1.0
OF-DPA 2.0
OF-DPA 3.0
博通官方尚未正式发布 OF-DPA 3.0,但是ONF社区的子项目如Atrium/Trellis/CORD 等已经用上它的Beta版本即EA (Early Access) 版本:
OF-DPA软件包目前分为两块:
接下来以一台Accton/Edgecore的全新、未安装系统的交换机作为实验平台,演示安装OF-DPA的步骤 : 先安装ONL , 再安装OF-DPA
P4 是由提出Openflow 的同一批创新者们(Nick McKeown等)提出的。他们认为P4是Openflow的继承者,可以真正实现无与伦比的灵活性。
P4起初只能被Barefoot 的Tofino芯片支持,但随着可移植交换架构PSA (Portable Switch Architecture)的提出,从理论上讲其它厂商的芯片也能够提供“缩水版”的P4功能。
PSA之于P4就相当于TTP/NDM之于Openflow 。
OF-DPA学习资料:
https://wiki.opencord.org/display/CORD/Hardware+Switch+Installation+Guide
https://github.com/Broadcom-Switch/of-dpa
http://broadcom-switch.github.io/of-dpa/doc/html/index.html
OF-DPA 2.0 规范文档 :https://docs.broadcom.com/docs/12378911