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:意图渲染器意图不涉及直接指定路由或交换信息。相反,意图仅描述用户的需求。
意图语句:
规定性语句(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在控制平面上渲染,而其他人在数据平面上执行渲染。
本体可以帮助标准化多个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三元组:
SubjectPredicateObjectProject1hasServiceConnectConnecthasArgumentsLBL, ANLIntent 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)转译成可执行的特定网络命令首先是意图获取,采用交互式对话:
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库)执行。作者提出了基于模板的策略生成方法,系统预先定义网络策略库,将不同类型的网络策略存储在策略库中。当用户意图输入时,即可使用自然语言处理的方法获取关键信息,并根据策略库映射为相应的网络策略。
结构:高级抽象策略 → 基 于 策 略 优 化 模 板 ∗ 策 略 细 化 引 擎 \xrightarrow[基于策略优化模板*]{策略细化引擎} 策略细化引擎 基于策略优化模板∗低级具体策略 /可执行策略
由三部分组成:
RecipeID:标识配方AbstractPolicyID:标识要细化的抽象策略PlanStep:抽象策略可能的细化方案的步骤 在每个PlanStep中,都有一个策略集(PolicySet)和一个条件(Condition)。当满足条件时,将选择相关的策略集。循环PlanStep,直至细化到最终的可执行策略。