看看有趣的ONOS Ⅵ:标签、隧道子系统

2020-05-31  本文已影响0人  SmartSloth

标签子系统

说明:翻译自学自https://wiki.onosproject.org/display/ONOS/Label+Subsystem

总览

标签子系统旨在支持基于MPLS的应用程序。作为系统资源,标签在ONOS中进行管理,应用程序可以通过北向API调用获取或释放标签资源。标签被构造为资源池,并保存在ONOS存储中。标签池是一种容器。池中的标签定义为连续数字。根据应用程序的类型及其特定要求,提供了两种标签池。第一个,设备标签池,由装置本身提供当设备被连接到网络。另一个是global-label-pool,是手动创建的。用户应用程序可以通过名为“”的虚拟设备标识将全局标签池作为特殊的设备标签池。global_resource_pool_device_id”。

设备标签池和全局标签池可以共存于具有不同标签范围的ONOS存储中。因此,当运营商开始在其网络中部署ONOS时,应仔细计划每个池中的标签范围。

提供了两组相应的API,以在ONOS中的这两种类型的池上运行。CLI命令也已实现以访问标签存储。

下图显示了标签子系统的体系结构。

标签子系统的体系结构

工作流程:

  1. 设备连接到网络后,它将池信息(pool information)上载到Store中。
  2. 应用程序可以通过北向API来应用或释放标签。
  3. 应用程序侦听标签子系统事件,而标签子系统侦听设备子系统事件。
  4. 设备消失后,设备子系统会通知标签子系统指示哪个设备已消失,然后标签子系统销毁相应设备的标签池。应用了已消失设备中标签的所有应用程序都会收到通知,并释放已消失设备的所有应用标签。

特点

用于ONOS应用程序的编程API

标签在ONOS中作为公共系统资源提供。独立的应用程序通过调用ONOS北向API使用标签资源。

同时,ONOS为设备驱动程序提供了南向标签API,以与ONOS进行通信。

有两种方法可以创建设备的初始标签资源池,即设备上载和管理员计划。首先,设备驱动程序可以调用南向API即deviceLabelResourcePoolDetected,以将其本地标签上传到ONOS。另一种方法是在部署ONOS时计划标签。在为每个设备计划标签范围之后,网络管理应用程序将调用北向API即createDevicePool为设备创建标签池。管理员策划的标签将覆盖设备中所有报告的标签。全局标签始终由管理应用程序通过调用createGlobalPool创建。

创建标签池后,客户应用程序可以通过调用ONOS的北向API使用标签资源。应用程序调用getDeviceLabelResourcePool来获取设备标签资源池,或调用getGlobalLabelResourcePool来获取全局标签资源池,然后调用applyFromDevicePoolapplyFromGlobalPool以从设备标签池或全局标签池中获取标签。在需要标签之前,应用程序有机会在ONOS中检查标签资源的状态。例如,调用isDevicePoolFull来检查池中是否有可用的标签,或者调用getFreeNumOfDevicePool来获取池中当前未使用的标签。使用标签后,应用程序应通过调用releaseToDevicePool*releaseToGlobalPool*将标签返回到ONOS标签池。

以下列出了ONOS中可用的当前API。

南向API

LabelResourceProviderService

北向API

LabelResourceAdminService

LabelResourceService

标签管理CLI命令

除了API,ONOS还提供CLI命令以用于标签使用和管理目的。管理员可以使用CLI命令与标签资源池的清单进行交互。当前ONOS支持以下CLI命令:


隧道子系统

说明:翻译自https://wiki.onosproject.org/display/ONOS/Tunnel+Subsystem

总览

隧道是ONOS中的一种系统资源。隧道子系统旨在支持应用程序的隧道设置。该子系统是基于生产者和消费者(PC)模型的处理方法构造的。PC模型区分两种类型的应用程序:隧道生产者和隧道使用者。隧道生产者是能够创建,更新和删除隧道的应用程序。隧道子系统负责在ONOS存储中存储和管理隧道。隧道使用者是可以从ONOS存储借用隧道并将隧道返回到ONOS存储的应用程序。消费者可以通过ONOS与生产者进行通信以创建隧道。

隧道生产者与消费者模型

下图描述了隧道子系统的体系结构。

体系结构

工作流程:

  1. 隧道首先由隧道生产者创建,然后隧道消费者可以从隧道存储中借用隧道。
  2. 当隧道内的消费者请求是不可用,则TunnelManager调用的方法TunnelProvider告知一下消费者与隧道的属性,要求生产商。生产者创建隧道后,该隧道将存储在ONOS的TunnelStore中。最终,TunnelStore将通知消费者该隧道可用,并且消费者可以再次开始借用。

特点

用于ONOS应用程序的编程API

隧道由ONOS作为一种系统资源进行管理。作为隧道使用方的客户应用程序可能需要通过北向API从发出ONOS隧道调用。隧道由生产者应用程序通过南向API创建,并存储在ONOS内部。当前的北向API支持能够删除和更新未来的特定隧道应用程序(通常为admin)。

首先,应用程序应注册隧道事件以通知新的隧道创建。应用程序开始通过调用borrowTunnel从ONOS请求隧道。如果两个或多个应用程序需要同一条隧道,则ONOS将根据FIFO顺序为应用程序服务,直到该隧道的带宽不再满足要求为止,然后将拒绝未服务的请求。在获取隧道或出于管理目的之前,应用程序可以通过隧道的ID、类型、源/目标点等查询隧道资源的可用性。类似地,应用程序可能需要具有不同参数的隧道。如果所需的隧道在资源池中不可用,则ONOS将通过调用南向API来请求生产者应用程序创建它来生成这种类型的隧道。应用程序完成对隧道的使用后,应通过调用北向API即returnTunnel将它们返回到ONOS资源池。

以下列出了ONOS中可用的当前API。

南向API

北向API

隧道管理CLI命令

管理员可以使用以下控制台命令与隧道资源清单进行交互:

上一篇下一篇

猜你喜欢

热点阅读