OFDPA软件概述

来源:互联网 发布:mac上能玩哪些网络游戏 编辑:程序博客网 时间:2024/06/04 00:44

OFDPA软件概述

OF-DPA(openflow data plane abstraction)是一个应用软件组件。实现了 openflow与broadcom SDK间适配层的功能。OF-DPA在broadcom交换芯片上扩展性的支持了openflow 1.3协议。

figure1

如上图,用户应用程序通过北向api从openflow 控制器获取服务。控制器的北向api可以使应用程序控制一个或多个openflow交换机。控制器与每一个openflow交换机保持一个通道交互openflow协议信息。在交换机上,openflow 代理维护其通道的结束,处理收到的openflow协议信息并响应本地事件发送openflow消息。OF-DPA通过向代理提供OF-DPA API,在此结构中起着关键作用。该api根据openflow结构(如流表、组表、端口)代表代理的硬件表。由于OF-DPA将所有与硬件匹配的表的状态都维护到openflow,代理会将openflow消息相对简单且无状态的转换为OF-DPA API调用。OF-DPA应用程序写数据(如路由、lsp)到OF-DPA抽象交换机中。

OF-DPA软件结构

OF-DPA的各种组件的框图

API Layer:

提供北向OF-DPA API。用户应用程序可以通过进程间通信或者直接调用的形式调用OF-DPA库。OF-DPA没有用户接口,对OF-DPA所有的的控制都是通过北向api的调用。所有API调用都是同步的,并且在将更改提交给硬件后,控制将返回给调用者。

OF-DB层:

OF-DPA database层。OFDB是针对流表、组表、port表的一个软件数据库。OFDB可以提供api去操作这些表。OFDB API被OF-DPA以下这些层引用:1)API层:系统OFDB存储的管理者;API层通过调用OFDB API对OFDB中存储的各种表增删修改操作; 2)mapping层:OFDB存储系统状态信息如port link状态等。Mapping层从硬件层接收port状态更新通过调用OFDB API去更新OFDB中的port table;3)datapath层:datapath层通过调用OFDB API来遍历流表,并执行管理动作如老化。

Datapath层:

实现定期唤醒任务并遍历流表以执行老化操作。探测到老化流时候,发送事件通知客户端应用。

Mapping/driver Layer层:

提供系统映射和驱动功能。
驱动、OFDB、datapath层的初始化在这里完成。检索系统特定信息如table size、vlans等功能在这里实现。
驱动程序在博通SDK上提供了一个抽象层。这些功能被用来向硬件写程序和查询硬件信息。驱动程序层定义了OF-DPA在移植到其他平台时所需的接口。

Platform layer层:

提供平台特定的初始化结构和功能。这些函数在系统启动时被引用。

Operational Modes操作模式

两种操作模式:
1) 进程间调用模式:OF-DPA在交换机上运行一个独立的进程。用户程序通过RPC引用OF-DPA APIs。同一时间只能有一个客户端应用使用OF-DPA接口。
2) 单进程模式:用户应用程序与OF-DPA静态链接。一个单一的linux调用包含用户应用程序、OF-DPA层和broadcom SDK。
进程之间的通信的开销导致这两种模式之间的性能差异。使用单一过程模式实现的应用程序调用能够以比使用进程间模式更高的速率调用OF-DPA API。进程间模式对于实验OF-DPA软件非常有用。

初始化概述

1)  SDK:SDK使用默认配置初始化芯片;2)  Platform:从platform特定结构中读取platform id,description、物理端口映射信息;3)  Driver:初始化硬件;4)  分配OFDB中使用的流表、组表、port表;5)  Datapath:创建socket去发送datapath层的事件通知。RPC服务器在系统初始化完成后启动,监听来自客户应用的RPC消息。

稳态描述

稳定状态下,仅有一勺部分线程在后台运行。如sdk技术、收包、datapath线程周期性的运行。其他所有的线程只在API调用中触发。

SDK配置和设置

OF-DPA软件建立在BCM API和数据结构上。
原创粉丝点击