欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ONOS意图框架

程序员文章站 2022-07-06 20:20:51
...

1 意图基本概念

Intent是用于描述应用需求的不可变模型对象,ONOS核心根据其改变网络行为。
在最低级别上,可以用以下方式描述意图,即意图的组成:
1、Network Resource:一组对象模型,例如链路,它们绑定到受意图影响的网络部分。
2、Constraints:应用于一组网络资源的权重,例如带宽,光频率和链路类型
3、Criteria:数据包头字段或描述流量切片的模式。 Intent的TrafficSelector会将标准作为实现Criterion接口的一组对象进行承载。(对应流表项的匹配项)
4、Instructions :应用于流量切片的操作,例如标头字段修改或通过特定端口输出。 Intent的TrafficTreatment会将指令作为一组实现指令接口的对象进行传递。(对应流表项的Action)

2 意图状态转换

ONOS意图框架

  • (1)橙色为过渡状态,处于该状态时间较短。
  • (2)蓝色为停车状态,处于该状态时间较长。
     应用通过IntentManager接口实现意图提交,意图会先进入编译阶段,然后到安装阶段最后到已安装阶段。
     编译阶段可能会失败,比如找不到符合要求的路径,这个时候意图进入失败阶段。当环境变化时,意图会重新进入编译阶段。
     安装阶段可能会失败,比如设备断开与控制器的连接,框架会重新编译意图。如果编译成功重新回到安装阶段,如果编译失败则进入失败阶段。
     已安装意图相关的网络资源发生变化时,意图会重新进入编译阶段。
     对于已安装或安装失败的意图,应用可以发起撤回请求,成功撤回后,意图会从存储中移除。
     意图重编译过程可以看成是一种重路由

3 意图相关源码

 意图批量处理相关的核心类IntentManager、IntentAccumulator、AbstractAccumulator
 意图重构流程

TopologyEvent
->ObjectiveTracker.TopologyChangeHandler
->IntentManager.InternalTopoChangeDelegate.triggerCompile
->IntentManager.buildAndSubmitBatches
->IntentManager.submit(intent)
->IntentStore.addPending(intentData)
->GossipIntentStore.addPending
->GossipIntentStore.pendingMap.put
->GossipIntentStore.InternalPendingListener
->IntentManager.InternalStoreDelegate.process
	->IntentManager.IntentAccumulator.add
->IntentMager. InternalStoreDelegate.notify
	->post(event)
	->if WITHDRAW and !skipReleaseResourcesOnWithdrawal
		->releaseResources

4 新增新类型意图基本流程

  • (1)添加新类型意图,将其添加到core/api/net/intent包内,需要在org.onosproject.store.serializers.KryoNamespace注册自己的意图,以实现序列化。
  • (2)实现一个新内部应用,在其内实现新Compiler,并向IntentManager注册。当新类型意图提交到IntentManager时候,其会根据意图类型调用相关的Compiler。
  • (3)在新内部应用内添加路径计算服务,新Compiler调用新路径计算服务,实现路径计算。(原有的路径计算方法在onos/utils/misc/src/main/java/org.onlab/graph内实现)
    ONOS意图框架
    ONOS意图框架
    ONOS意图框架
    ONOS意图框架
相关标签: SDN