意图网络-意图获取和转译

iNDIRA:Enabling intent to configure scientific networks for high performance demands(2017)

iNDIRA使用自然语言本体工程来定义请求,构建语义RDF图来理解、交互和创建所需的网络服务,并将其转换为网络命令,重新配置资源、偏好和策略。然后,它与网络供应和传输工具进行接口,以允许将用户的意图呈现为可被这些工具识别的规范。目前使用的工具是NSI/OpenNSA(允许多域网络配置)和Globus(提供安全、可靠的文件传输服务)。

总体结构

在这里插入图片描述
转译步骤:Intent Language → O n t o l o g y C h e c k e r I n t e n t P a r s e r \xrightarrow[Ontology Checker]{Intent Parser} IntentParser OntologyChecker RDF graphs → I n t e n t R e n d e r e r \xrightarrow[]{Intent Renderer} IntentRenderer Network commands

组件:

  • Intent Parser:意图解析器
  • Ontology Checker:本体检查器
  • Intent Renderer:意图渲染器

1 意图的定义

意图不涉及直接指定路由或交换信息。相反,意图仅描述用户的需求。

意图语句:

  • 规定性语句(prescriptive):更低的级别,指定解决方案

例:Connect server A to B with a route across switch 22.
这样的情况不是好的意图,因为用户可能会收到一个回复说switch 22是不可用的。

  • 陈述性语句( declarative):更高的级别,说明问题或需要

描述式语句允许用户指定问题上下文、规则或约束以及所需的结果。这些细节使网络能够考虑服务于此意图的最佳可能解决方案。

在这里插入图片描述
iNDIRA用描述性(descriptive)语言而不是规定性(prescriptive)的形式来定义意图。借助本体工程,利用机器推理来理解用户的意图。这些意图(用高级语言指定)通过CLI输入,并使用本体转换为服务意图。本体允许将高级请求映射到具有规定性的网络需求,如ODL GBP或Openstack Congress等python APIs(这些可以很容易地与多个控制器交互以呈现意图)。例如,ODL NIC允许OpenFlow在控制平面上渲染,而其他人在数据平面上执行渲染。

2 意图本体 Intent ontology

本体可以帮助标准化多个tools和service之间的通信。本体表示服务及其参数之间的关系。iNDIRA使用RDF图来记录预期的服务和参数。

iNDIRA定义了一种本体模式,其本体的高级UML表示:

  • 意图可以由服务(Service)和条件(Condition) 组成,同时依赖于用户配置文件、拓扑信息和端点细节
  • 每种条件(Condition)包括最大带宽、起始时间、结束时间、特定vlan等。
    在这里插入图片描述

RDF图可以记录网络操作和条件的集合,将其安排为三元组:

  • 主题(Service或Condition)
  • 关系(hasArguments)
  • 对象(multiple parameters)

例如,考虑意图,“Project1 connect from LBL to ANL”,RDF三元组表示两种关系:

  • Project1 hasService Connect.
  • Connect hasArguments LBL, ANL.

RDF三元组:

SubjectPredicateObject
Project1hasServiceConnect
ConnecthasArgumentsLBL, ANL

Intent Parser(意图解析器)和Ontology Checker(本体检查器)具有如下功能:

  • 识别和替换关键字以识别网络特定的命令容易。如 ‘move’ to ‘transfer’,以识别网络特定的命令容易。包含类似上述单词的dictionary能够解析整个句子,从而将单词替换为可识别的服务
  • 去除无关单词,仅保留服务指令。如,在(a) I want to (b) move datasource1 from LBL to ANL.中,只有(b)被识别为一个传输服务,from和to被识别为端点,(a)作为无关项去除。
  • 向用户询问未定义的条件(Condition)。

Intent Renderer:意图渲染器 具有如下功能:

  • 综合带宽、时间、拓扑、节点信息,将服务(Service)和条件(Condition)转译成可执行的特定网络命令

3 示例

首先是意图获取,采用交互式对话

INDIRA>Hello and welcome! Tell me your project name?
Scientist>Project-transfer
INDIRA>Tell me what want the network to do? Hint ‘‘I want to [connect] [disconnect] [transfer] services
`Scientist>I want to transfer files from Brookhaven to CERN`
INDIRA>Ok, let me check if there paths have already been provisioned.
. . .
INDIRA>Oops! Seems they do not exist. Should I set these up for you.
Scientist>Yes
INDIRA>Ok. Do you have any bandwidth demands with this link? (Hint: you can say ‘‘nolimit’’).
`Scientist>nolimit`
INDIRA>Ok. How long do you want the link for. (Hint: Start now stop 2017-03-03->12.00.00)
`Scientist>start now stop 2017-02-20->12.00.00`
INDIRA>Thankyou. Im setting these up for you using NSI.
Constructing RDF graphs
Calling NSI
Success!

意图转译

  1. 使用自然语言处理、机器推理等方法处理意图,去掉无效信息(I,want,to等),提取关键信息(transfer,Brookhaven,CERN,nolimit,start now,stop 2017-02-20->12.00.00等)
  2. 利用处理得到的信息将意图映射为 RDF(resource description framework)图(如图 (a)所示),并利用网络拓扑信息等将 RDF 图中的参数实例化:
  • 站点Brookhaven和Cern被翻译成网络URN地址。
  • 带宽nolimit被翻译成允许的值。
  • start和stop时间被翻译成正确的日期、时间和时区。

在这里插入图片描述

  1. 编写程序对 RDF 图进行处理,生成网络策略或配置命令。然后调用NSI/OpenNSA(网络交换机API库)执行。

An Automatic Policy Refinement Mechanism for Policy-Driven Grid Service Systems(2005)

作者提出了基于模板的策略生成方法,系统预先定义网络策略库,将不同类型的网络策略存储在策略库中。当用户意图输入时,即可使用自然语言处理的方法获取关键信息,并根据策略库映射为相应的网络策略。

结构:高级抽象策略 → 基 于 策 略 优 化 模 板 ∗ 策 略 细 化 引 擎 \xrightarrow[基于策略优化模板*]{策略细化引擎} 低级具体策略 /可执行策略

策略优化机制——基于配方/模板(recipe-based)的机制

  1. 在设计时定义配方/模板(recipe),包含在不同条件下所有可能的细化方案——网络策略库。
  2. 在运行时环境下,策略细化引擎根据实时条件自动生成特定的细化策略。

配方/模板——一步一步(step)细化

在这里插入图片描述

由三部分组成:

  • RecipeID:标识配方
  • AbstractPolicyID:标识要细化的抽象策略
  • PlanStep:抽象策略可能的细化方案的步骤
    在每个PlanStep中,都有一个策略集(PolicySet)和一个条件(Condition)。当满足条件时,将选择相关的策略集。循环PlanStep,直至细化到最终的可执行策略。

P4I/O: Intent-Based Networking with P4(2019)

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 中,`v-model` 是一个语法糖,可以方便地实现表单元素和 Vue 实例中 data 属性的双向绑定。当使用 `v-model` 绑定一个表单元素时,实际上是通过监听 `input` 事件和更新元素的值来实现的。在模板中,我们可以这样使用 `v-model`: ```html <input v-model="message"> ``` 这个语法糖实际上等价于: ```html <input :value="message" @input="message = $event.target.value"> ``` 也就是说,`v-model` 会自动将表单元素的值绑定到 Vue 实例中的 `message` 属性上,并在表单元素的值发生改变时更新 `message` 属性的值。需要注意的是,`v-model` 只能应用于表单元素,比如 `input`、`textarea`、`select` 等。 如果需要在自定义组件中使用 `v-model`,可以使用 `model` 选项来指定绑定的属性和触发更新的事件。例如: ```js Vue.component('my-component', { model: { prop: 'checked', event: 'change' }, props: { checked: Boolean }, template: ` <input type="checkbox" :checked="checked" @change="$emit('change', $event.target.checked)"> ` }) ``` 在这个例子中,我们定义了一个名为 `my-component` 的组件,并通过 `model` 选项指定了 `v-model` 绑定的属性为 `checked`,触发更新的事件为 `change`。同时,我们还定义了一个 `checked` 属性,用于接收 `v-model` 绑定的值。在模板中,我们使用 `input` 元素来实现一个复选框,并通过 `:checked` 属性和 `@change` 事件来实现双向绑定。需要注意的是,在组件中使用 `v-model` 时,不需要使用 `{{}}` 来绑定属性,因为这已经由 `v-model` 处理好了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值