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

标签子系统

说明:翻译自学自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. 设备消失后,设备子系统会通知标签子系统指示哪个设备已消失,然后标签子系统销毁相应设备的标签池。应用了已消失设备中标签的所有应用程序都会收到通知,并释放已消失设备的所有应用标签。

特点

  • LabelResourceAdminService为管理员提供与标签资源池清单交互的服务。
  • LabelResourceService为应用程序提供服务,以应用,发布和查询标签。
  • 一个LabelResourceManager通过一个LabelResourceProviderService接口管理与多个Providers程序的接口,并通过一个LabelResourceService接口管理多个侦听器
  • LabelResourceProviders支持其自己的网络协议库或与网络接口的方式
  • 一个LabelResourceStore跟踪LabelResourcPool模型对象并生成LabelResourceEvent

用于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

  • deviceLabelResourcePoolDetected:表示已检测到设备标签资源池,并将标签上载到ONOS。
  • deviceLabelResourcePoolDestroyed:表明标签资源池已被破坏的信号。

北向API

LabelResourceAdminService

  • createDevicePool从开始标签到结束标签创建设备标签资源。
  • createGlobalPool创建全局标签资源池。
  • destroyDevicePool销毁设备标签资源池。
  • destroyGlobalPool销毁全局标签资源池。

LabelResourceService

  • applyFromDevicePool从设备资源池中应用标签。
  • applyFromGlobalPool从全局标签资源池中应用标签。
  • releaseToDevicePool将标签释放到设备池。
  • releaseToGlobalPool将标签发布到全局资源池。
  • isDevicePoolFull检查设备池是否已满。
  • isGlobalPoolFull检查全局资源池是否已满。
  • getFreeNumOfDevicePool获取设备标签资源池的未使用标签号。
  • getFreeNumOfGlobalPool获取全局标签资源池的未使用标签号。
  • getDeviceLabelResourcePool获取设备标签资源池。
  • getGlobalLabelResourcePool获取全局标签资源池。

标签管理CLI命令

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

  • label-apply通过特定的设备ID应用从设备池标签资源
  • global-label-apply从全局资源池中应用全局标签
  • label-pool-create通过特定设备ID创建标签资源池
  • global-label-pool-create创建全局标签资源池。
  • label-pool-destroy按特定设备ID销毁标签资源池
  • global-label-pool-destroy销毁全局标签资源池
  • global-label-pool获取全局标签资源池信息。
  • label-pool通过特定设备ID获取标签资源池信息
  • global-label-release将标签发布到全局标签资源池。
  • label-release释放标签ID以按特定设备ID标记资源池

隧道子系统

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

总览

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

隧道生产者与消费者模型

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

体系结构

工作流程:

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

特点

  • TunnelAdminService为管理员提供与隧道清单进行交互的服务。
  • TunnelService为消费者提供服务、借阅、归还、查询隧道服务。
  • 一个TunnelManager通过一个TunnelProviderService接口管理与多个提供程序的对接,并通过一个TunnelService接口管理多个侦听器。
  • TunnelProvider支持它们自己的网络协议库或与网络接口的方法。
  • 一个TunnelStore跟踪Tunnel模型对象并生成TunnelEvent

用于ONOS应用程序的编程API

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

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

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

南向API

  • setupTunnel在ONOS中为每个消费者应用程序请求设置一个隧道,以指示提供者在有或没有给定设备的情况下创建隧道。
  • releaseTunnel在ONOS中会根据每个消费者应用程序请求释放一个隧道,以指示提供程序删除有或没有给定设备的隧道。
  • updateTunnel在ONOS中会根据每个消费者应用程序请求更新隧道,以指示提供程序在有或没有给定设备的情况下更新隧道。
  • tunnelAdded生产者向ONOS发出已添加隧道的信号。
  • tunnelRemoved生产者向ONOS发出已删除隧道的信号。
  • tunnelUpdated生产者向ONOS发送信号,通知隧道已更改(例如,感测到隧道的更改)。

北向API

  • removeTunnel删除配置的隧道。
  • removeTunnel删除通向指定标签和从指定标签引出的预配置隧道。
  • removeTunnels删除通往指定连接点和从指定连接点出发的所有已配置隧道。
  • updateTunnel调用核心以根据指定的隧道参数更新隧道。
  • borrowTunnel借用特定的隧道。如果通道在存储中不可用,则返回“null”对象,并记录通道订阅。创建隧道后,ONOS会通知订阅的使用者。
  • borrowTunnel借由tunnelName特定的隧道。如果通道在商店中不可用,则返回“null”对象,并记录通道订阅。创建隧道后,ONOS会通知订阅的使用者。
  • borrowTunnel借用源和目的地之间的所有隧道。如果通道在存储中不可用,请返回一个空集合,并记录通道订阅。创建隧道后,ONOS会通知订阅的使用者。否则ONOS核心将返回所有隧道,并且消费者确定要使用哪个隧道。
  • borrowTunnel在源和目的地之间借用所有指定类型的隧道。如果通道在商店中不可用,请返回一个空集合,并记录通道订阅。创建隧道后,ONOS会通知订阅的使用者。否则ONOS核心将返回所有可用的隧道,并由消费者确定要使用哪个隧道。
  • returnTunnel返回要存储的特定隧道。
  • returnTunnel返回所有要存储的特定名称隧道。如果通道在商店中不可用,则返回“null”对象,并记录通道订阅。创建隧道后,ONOS会通知订阅的使用者。
  • returnTunnel返回要存储的源和目标之间的所有特定类型的隧道。
  • returnTunnel将源和目标之间的所有隧道返回到商店。
  • queryTunnel通过特定的隧道标识查询隧道。
  • queryTunnelSubscription按使用者查询所有隧道订阅记录。
  • queryTunnel查询所有指定类型的隧道。
  • queryTunnel查询源点和目的点之间的所有隧道。
  • queryAllTunnels查询所有隧道。
  • tunnelCount查询所有隧道。

隧道管理CLI命令

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

  • tunnel-create支持创建隧道。被生产者使用。
  • tunnel-update支持通过tunnel id更新隧道。被生产者使用。
  • tunnel-remove支持通过隧道标识符,源点,终点或隧道类型来删除隧道。被生产者使用。
  • tunnel-subscriptions通过消费者ID查询消费者的所有请求订单。被消费者使用。
  • tunnel通过隧道标识符,源点,终点等查询隧道。被消费者使用。
  • Tunnel-borrow通过隧道标识符,源点,终点,隧道类型或隧道名称借用隧道。被消费者使用。
  • Tunnel-return返回通过隧道标识符,源点,终点,隧道类型或隧道名称返回所有隧道。被消费者使用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342