意图网络-意图获取和转译
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}
IntentParserOntologyChecker 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三元组:
Subject | Predicate | Object |
---|---|---|
Project1 | hasService | Connect |
Connect | hasArguments | LBL, 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!
意图转译:
- 使用自然语言处理、机器推理等方法处理意图,去掉无效信息(I,want,to等),提取关键信息(transfer,Brookhaven,CERN,nolimit,start now,stop 2017-02-20->12.00.00等)
- 利用处理得到的信息将意图映射为 RDF(resource description framework)图(如图 (a)所示),并利用网络拓扑信息等将 RDF 图中的参数实例化:
- 站点Brookhaven和Cern被翻译成网络URN地址。
- 带宽nolimit被翻译成允许的值。
- start和stop时间被翻译成正确的日期、时间和时区。
- 编写程序对 RDF 图进行处理,生成网络策略或配置命令。然后调用NSI/OpenNSA(网络交换机API库)执行。
An Automatic Policy Refinement Mechanism for Policy-Driven Grid Service Systems(2005)
作者提出了基于模板的策略生成方法,系统预先定义网络策略库,将不同类型的网络策略存储在策略库中。当用户意图输入时,即可使用自然语言处理的方法获取关键信息,并根据策略库映射为相应的网络策略。
结构:高级抽象策略 → 基 于 策 略 优 化 模 板 ∗ 策 略 细 化 引 擎 \xrightarrow[基于策略优化模板*]{策略细化引擎} 策略细化引擎基于策略优化模板∗低级具体策略 /可执行策略
策略优化机制——基于配方/模板(recipe-based)的机制
- 在设计时定义配方/模板(recipe),包含在不同条件下所有可能的细化方案——网络策略库。
- 在运行时环境下,策略细化引擎根据实时条件自动生成特定的细化策略。
配方/模板——一步一步(step)细化
由三部分组成:
- RecipeID:标识配方
- AbstractPolicyID:标识要细化的抽象策略
- PlanStep:抽象策略可能的细化方案的步骤
在每个PlanStep中,都有一个策略集(PolicySet)和一个条件(Condition)。当满足条件时,将选择相关的策略集。循环PlanStep,直至细化到最终的可执行策略。