看看有趣的ONOS Ⅶ:流规则、应用子系统

流规则子系统

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

介绍

流规则子系统负责管理系统中的流规则并将其安装在网络中的设备中。

该子系统实现了分布式权威流表的语义,其中流规则的主副本位于控制器中,并将其下推到设备中。这意味着流规则子系统永远不会尝试从网络中发现信息,也不会尝试解决设备上已经存在的流。如果ONOS根据其权威流表在设备上检测到不应存在的流,则该流将被删除。

流规则子系统实现的通用模型也适用于组子系统和度量标准子系统。

管理流程

流通过FlowRuleService API安装到流规则子系统中。系统中的流以下列状态之一存在:

  • PENDING_ADD — 这表明流规则子系统已从应用程序接收到安装流规则的请求,但是子系统尚未在设备上观察到该流。在内部,请求被转发到所讨论设备的主节点,该节点将使用适当的FlowRuleProvider将流安装到设备。
  • ADDED — 一旦流规则子系统观察到设备上的流,它将转换到此状态。FlowRuleProvider负责将有关观察到的流的信息报告给流规则子系统。
  • PENDING_REMOVE — 流规则子系统已从应用程序收到删除流的请求,但尚未收到确认已从设备中删除流的确认。将指示FlowRuleProvider从设备中删除流。
  • REMOVED — 流规则子系统已从FlowRuleProvider接收到已从设备中删除流的确认,并且该流将很快从商店中删除。
  • FAILED — 设备指示流规则安装失败。

流规则子系统支持批量安装相互依赖的流。这是使用FlowRuleOperations对象完成的,该对象包含FlowRuleOperation的阶段列表。语义是在流规则系统可以在后续阶段开始工作之前,必须完全完成每个阶段中的操作。此功能的一个示例用法是,当您要在头流规则之前安装路径的尾部,以防止在建立路径时产生流量黑洞。

数据平面协调

流规则提供者负责收集有关网络中安装的流的统计信息,并将这些统计信息报告给流规则子系统。流规则子系统使用这些报告来确保其对权威状态的想法仍然存在于网络上的设备上。

例如,OpenFlowRuleProvider使用OpenFlow的FLOW_STATS_REQUEST消息定期查询设备上的流。当设备以FLOW_STATS_REPLIES进行响应时,提供程序将使用FlowRuleProviderService的pushFlowMetrics()方法将此信息发送到流规则子系统。如果流规则子系统可以将这些流度量标准与其存储中的流进行匹配,它将更新这些流的统计信息。如果发现数据平面上没有多余的数据流,它将从数据平面中删除这些数据流。如果检测到数据平面中缺少流,它将尝试重新安装它。


应用子系统

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

总览

应用子系统的目的是简化集群中所有ONOS实例之间的软件交付和管理。子系统使用ONOS最终一致的映射和节点间通信机制在整个ONOS群集中完全复制应用程序清单。要将OSGi捆绑软件作为一组安装和点燃,子系统依赖于底层的Apache Karaf功能机制。

现在,ONOS提供的所有内置样本和测试应用程序都是使用此机制交付的,并且作为标准ONOS发行版的一部分已预先安装(尽管未激活)。这包括任何提供程序,例如OpenFlow提供程序。这样,所有可选软件组件都可以安装到ONOS或从ONOS撤回,而无需重建,甚至无需重新配置ONOS本身。

应用包

可以将应用程序打包到一个.oar(ONOS Application aRchive)文件中,以便将软件轻松交付给正在运行的ONOS集群。.oar文件是一个ZIP文件,其中包含所有工件,例如功能定义或OSGi捆绑包,否则它们在Maven Central上可能不可用。下面介绍.oar文件的结构:

  • app.xml — 应用程序描述符
  • m2/<groupId>/<artifactId>/<version>/<featuresRepo>
  • m2/<groupId>/<artifactId>/<version>/<artifact>
  • ...

可以很容易地使用onos-maven-plugin生成应用程序包文件。pom.xml文件需要在其构建部分中包含onos-maven-plugin,如果pom.xml定义了onos.app.name属性,或者如果模块基本目录包含app.xml文件,则插件将构建该应用程序.oar文件,此文件将在Maven安装阶段安装到M2存储库中。请参见下面的Maven示例。

应用定义

通过在捆绑软件的pom.xml文件中指定以下属性,可以轻松生成单个捆绑软件应用程序:

  • onos.app.name — 应用程序名称,应以反向DNS表示法指定,例如org.onosproject.fwd
  • onos.app.origin — 发起实体或公司的名称,例如ON.Lab
  • onos.app.requires — 此应用程序所需的应用程序的逗号分隔列表

可以使用模块基础目录中的app.xml文件定义多捆绑应用程序,或需要引入其他工件或自定义功能依赖项的应用程序。app.xml的文件指定以下属性:

  • name — 应用程序名称,以反向DNS表示法指定
  • version — 应用程序版本
  • origin — 发起申请的公司或组织
  • description — 应用程序的简短描述
  • features — 组成应用程序的Apache Karaf功能列表
  • featuresRepo — 应用程序功能定义工件的可选URL
  • apps — 该应用程序所需的应用程序的逗号分隔列表
  • artifact — 列出应用程序包中将包含的构件

以下是应用程序app.xml文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<app name="org.onosproject.sample" origin="ON.Lab" version="${project.version}"
     featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
     features="sample-app">
    <description>${project.description}</description>
    <artifact>mvn:...</artifact>
</app>

app.xml文件可以包含Maven属性,例如{project.groupId}{project.artifactId}{project.version}{project.description},这将导致从Maven pom.xml文件。强烈建议使用它们,以减少所需的维护量。

ONOS代码库在apps源代码树下包含这两种方法的示例。

CLI命令

管理员可以使用以下控制台命令与应用程序清单进行交互:

  • apps — 列出所有已安装的应用程序
  • app install <mvn-url> ... — 通过从指定的URL下载来安装应用程序
  • app activate <app-name> ... — 激活所有指定的应用程序
  • app deactivate <app-name> ... — 停用所有指定的应用程序
  • app uninstall <app-name> ... — 卸载所有指定的应用程序

REST API和Shell实用程序

编排系统和工具可以使用REST API直接与应用程序子系统交互,也可以使用onos-app的shell实用程序,该实用程序使用REST API并具有以下用法:

  • onos-app install <app.xml or app.zip> ... — 通过上传指定的app.xml或应用程序包文件来安装应用程序
  • onos-app install! <app.xml or app.zip> ... — 通过上载指定的 *app.xml * 或应用程序包文件来安装和激活应用 程序
  • onos-app reinstall <app-name> <app.xml or app.zip> ... — 通过上传指定的app.xml 或应用程序包文件来重新安装应用 程序
  • onos-app reinstall! <app-name> <app.xml or app.zip> ... — 通过上传指定的app.xml 或应用程序包文件来重新安装并激活应用 程序
  • onos-app activate <app-name> ... — 激活指定的应用程序
  • onos-app deactivate <app-name> ... — 停用指定的应用程序
  • onos-app uninstall <app-name> ... — 卸载指定的应用程序

Maven的例子

以下代码段显示了所需的onos-maven-plugin配置。ONOS内置和示例应用程序模块从ONOS根pom继承此配置,但是外部应用程序需要在其POM层次结构中包括此配置,或者它们需要从ONOS根POM继承:

<plugins>
    ...
    <plugin>
        <groupId>org.onosproject</groupId>
        <artifactId>onos-maven-plugin</artifactId>
        <version>1.4-SNAPSHOT</version>
        <executions>
            <execution>
                <id>app</id>
                <phase>package</phase>
                <goals>
                    <goal>app</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    ...
</plugins>

请注意,该插件会将.oar文件标记为安装工件,从而在调用Maven 安装部署目标时将其安装或部署到Maven存储库中。

内置的样品和测试应用

下表描述了所有内置驱动程序,提供程序以及各种示例和测试应用程序的清单:

  • org.onosproject.drivers — 内置设备驱动程序
  • org.onosproject.openflow — OpenFlow协议南向提供者
  • org.onosproject.bgprouter — BGP路由器应用程序,功能
  • org.onosproject.config — 网络配置应用程序
  • org.onosproject.demo — 流吞吐量测试应用程序
  • org.onosproject.election — 主选举测试应用程序
  • org.onosproject.fwd — 使用流子系统的反应式转发应用程序
  • org.onosproject.intentperf — 目的性能测试应用程序
  • org.onosproject.metrics — 性能指标集合
  • org.onosproject.mobility — 主机移动性应用
  • org.onosproject.null — 空南向提供程序进行测试
  • org.onosproject.optical — 数据包/光学用例应用程序
  • org.onosproject.proxyarp — 代理ARP / NDP应用程序
  • org.onosproject.sdnip — SDN / IP用例应用程序
  • ...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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