IBN研究综述
- 一、IBN体系结构
- 1.1 体系结构:
- 1.2 闭环流程:
- 1.3 IBN的自动化程度(逐步向前演进):
- 二、IBN 的实现方式
- 2.1 意图获取:
- 2.1.1 YANG、NEMO
- 2.1.2 Frenetic、NetKAT、LAI
- 2.2 意图转译:
- 2.2.1 iNDIRA系统
- 2.2.2 基于模板的策略生成方法
- 2.2.3 P4 代码模板库的方法
- 2.2.4 基于案例学习的方法
- 2.2.5 OpenFlow 流表规则
- 2.3 对于策略的可执行性验证
- 2.4 策略下发与执行
- 2.5 实时反馈
- 2.5.1 网络的状态信息实时监控
- 2.5.2 网络策略转发行为的实时监控
- 三、IBN的应用
- 四、难点
- 五、评价
原文链接:软件学报jos.org.cn/jos/article/abstract/6088
随着互联网规模不断增大,网络管理和运维变得极其复杂,基于意图的网络可帮助实现网络自治。它并非一个新技术,而是一种理念,通过意图的概念为网络管理提供一个更高级的抽象。IBN是SDN(软件定义网络)的进化,目前 IBN大多在 SDN 环境下实现。
【目前技术尚不成熟,各环节间缺乏统一的接口
规范,目前尚无 IBN 的落地项目】
一、IBN体系结构
1.1 体系结构:
1.2 闭环流程:
- 意图获取-自然语言解析识别
- 意图转译-AI 智能策略选取技术
- 策略验证-网络自动化验证和形式化验证
- 意图下发与执行- OpenFlow协议、P4数据平面编程语言等技术
- 网络状态信息的实时反馈及优化-实时感知网络状态,分析意图是否成功实现
1.3 IBN的自动化程度(逐步向前演进):
a.) 全面自动化网络:能够实现绝大部分业务发放、网络部署和维护的自动化,并实现较全面地网络状态感知与局部地机器决策;
b.)自优化网络:能够实现深度地网络状态感知,自动网络控制,满足用户网络意图;
c.)部分自治网络:在特定的环境,不一定需要人参与决策,能够实现自主调整网络状态;
d.)全面自治网络:在不同网络环境、网络条件,网络均能自动适应、自主调整,满足用户的意图.
目前,用户意图实现的自动化程度与意图实现的场景成反比关系,也就是说一个意图要想完全自动化实现,那么它可能就只适用于一个特定的场景。
所以要权衡自动化程度和场景适配性。
二、IBN 的实现方式
2.1 意图获取:
用户输入方式:自然语言、语音输入、GUI,以及下面的各种特定语言。
虽然相比于使用自然语言描述意图,这些特定语言的抽象级别较低,但是在特定的环境下它们一样可以具有丰富的语义。在今后的研究中,可以采用由自然语言向 DSL转译的方法实现用户的意图。
2.1.1 YANG、NEMO
- 为提供一种通用的抽象的策略语法,方便用户描述自己的意图,OpenDayLight使用 YANG 数据建模语言为服务和数据建模,提供了开放的北向接口与一些与北向接口有关的组件。
- 同样的,华为在推出了一种基于意图的北向接口NEMO(Network Model)语言,使用了DSL(Domain Specific Language)的抽象网络模型以及结论性的操作模式。
2.1.2 Frenetic、NetKAT、LAI
以下 3 种语言都是基于 DSL 设计的,其中 Frenetic 和 NetKAT更偏向为一种编程语言,需要一定的专业知识,而“LAI”不要太多的专业知识就可以描述 ACL 意图。
- 为隐藏 SDN 中网络元素的各种底层细节,Frenetic语言是一种针对 SDN 北向接口的函数型编程语言,提供类似 SQL 的语法结构对 SDN 应用进行开发,它的重点在于使用高级别抽象的形式在描述报文的转发规则。
- NetKAT语言同样也是一种面向 SDN 的函数型编程语言,它提供简单的原语来描述下层交换机的转发行为以及网络结构,而它的严格数学证明也为网络的验证工作提供方便。
- 为生成并维护 ACL(Access Control List),“LAI”意图语言提供了
scope、modify、check
等几种原语描述用户对于内网 ACL 的意图需求。例如当需要在 ACL 上添加一条“A 可以连通 B”的意图,便可以使用以下语句来描述该意图。
scope A*,
B* allow A*,
B* control A->B check fix
2.2 意图转译:
意图转译就是将用户意图转化为相应的网络配置策略,目前主要用到的方法是nlp。在这一环节,需要对用户意图进行关键字提取、词法分析、语义挖掘等操作,从而获得用户期望的网络运行状态,并使用智能化的方法生成网络策略。以下是几种方法。
2.2.1 iNDIRA系统
iNDIRA系统利用nlp和本体论的方法,在 SDN 的控制平面和应用之间实现了意图转译模块。该模块将用户输入的自然语言处理为 RDF 图,并自动生成网络策略或配置命令。
以意图“I want to connect A to B with high
speed now.”为例,其具体实现过程为:
①使用自然语言处理、机器推理等方法,去掉无效信息(I、want、to ),提取关键信息(connect、A、B 等)
②利用处理得到的信息将意图映射为 RDF图(Resource Description Framework),并利用网络拓扑信息等将 RDF 图中的参数实例化
③编写程序对 RDF 图进行处理,生成网络策略或配置命令。
2.2.2 基于模板的策略生成方法
系统预先定义网络策略库,将不同类型的网络策略存储在策略库中。当用户意图输入时,即可使用自然语言处理的方法获取关键信息,并根据策略库映射为相应的网络策略。
2.2.3 P4 代码模板库的方法
将用户意图映射为 P4 代码。
2.2.4 基于案例学习的方法
通过用户意图的不断输入,系统将不断学习意图的特征,并生成相应的策略。由于该方法需要大量的数据支撑,所以该方法在初始阶段的效率可能不理想。
2.2.5 OpenFlow 流表规则
在 SDN 环境下设计一组封装好的意图接口,用户直接输入意图就可自动生成相应的 OpenFlow 流表规则,从而下发到实际网络.
2.3 对于策略的可执行性验证
得到网络策略后、下发策略前,需进行可执行性验证,主要考虑可用性、冲突、正确性这三个方面。
1. 可用性:维护一个网络状态信息的数据库,查看当前策略所需要的网络资源是否可用、是否足够。
2. 冲突验证:根据策略匹配域的相交关系以
及策略执行的动作给出几种策略的冲突关系: 冗余、覆盖 、泛化、相关、重叠。如果流规则冲突,则先保证优先级高的策略被实现。具体而言,在SDN 环境下,FlowChecker 将 OpenFlow 流表规则编码为二元决策图,在单一状态机内对网络行为建模,用基于二元决策图的符号模型检测及时序逻辑来识别流规则冲突引发的配置错误;VeriFlow通过对流表规则进行等价类划分以实时检查插入的流规则是否违反网络约束如访问控制规则、路由环路等。
3. 正确性: 验证策略下发到实际网络是否按照预期实现,主要采用形式化验证的方法(数模证明,方法主要有模型检查、定理证明、符号执行、SAT/SMT 求解器)。一般流程为:通过形式化建模语言(如 datalog、alloy),将策略建模为形式化模型,用求解器(如 Z3 求解器)判断策略是否可以正确实现。
例如,“FLOVER”系统使用 Yices2 作为求解器,将匹配域为{Src IP:5,Dst IP:6,Src Port:0~19,Dst Port:0~19}
,动作为{drop}
的 OpenFlow 流规则转化为如图 4 所示的 Yices2 输入形式,并把网络底层安全属性按照同样的方式进行建模,最后将流规则和安全属性的形式化描述带入到求解器中进行求解,求解器将自动分析它们的关系并返回验证结果。
2.4 策略下发与执行
首先将网络策略(如网络遥测任务)编译为相应的 P4 编程语言代码,之后对可编程交换机内部的转发逻辑进行编程配置,使用配置综合的方法生成设备的配置文件从而实现策略的下发与执行工作,从而使网络设备按照预期对数据进行处理。
例1: BGP 配置(仅支持BGP协议):用户表明对于流量的高级约束,并使用正则表达式和有限状态自动机表达流量的传输路径,之后利用系统的编译器将这些约束综合为相应路由器的 BGP 配置。
例2:网络配置(支持静态路由、OSPF、BGP 三种路由协议):将网络配置问题描述为分层次的 Datalog 问题,并使用 SMT 求解器对用户需求进行配置综合从而生成相应的配置文件。
例3:NetComplete(支持静态路由、OSPF、BGP 三种路由协议),求解速度要优于 Synet 并且更易于拓展到大型网络上。
2.5 实时反馈
2.5.1 网络的状态信息实时监控
在策略下发到实际网络后,需要对网络的状态信息进行实时监控,并进行适当的优化与调整,确保网络的转发行为符合用户意图,保证网络始终满足意图需求。网络状态监控主要使用 NetFlow 和SFlow。除此以外还有INT技术以及基于INT的优化。
(1)NetFlow 时间长,无法满足 IBN 对网络状态实时监控的需求
(2)SFlow 时间短,但准确性低,无法确保 IBN 可以正确满足用户意图。
(3)基于 P4 语言的技术——带内网络遥测(In-band Network Telemetry, INT)INT 允许数据包查询交换机内部状态,但只能监控一条指定链路上网络状态,无法实现整个网络域内的状态感知。
(4)INT-path,使用基于源路由的方法向网络域内发送 INT 数据包,获取所有交换机的状态,进而可以感知整个网络域内的网络状态,可为 IBN 提供实时、准确的网络状态感知。
2.5.2 网络策略转发行为的实时监控
探针 方法:通过向数据平面注入探针,根据探针的转发行为来判断数据平面是否按照相应的策略转发数据包,判断用户意图是否正确实现。
例1:Symnet 是一个基于符号执行的数据平面验证工具,通过向网络注入符号数据包来对网络进行建模,并静态地分析网络的行为是否满足用户的意图。
例2:Minesweeper 将稳定的网络状态编码为可满足约束形式,实现了对于数据平面的全覆盖验证。如果用户意图没有正确实现或者在网络运行期间被意外改变,应及时向上层反馈信息,根据当前的网络状态对用户意图进行重新转译、编排。
三、IBN的应用
特点:灵活、智能、自动化
应用:网络测量、网络业务编排、工业互联网领域(工厂的智能组网、实时监测工厂网络状态)、数据中心网络(在链路数量多、网络拓扑复杂的情况下实现智能管理和监测,快速修复网络故障)
四、难点
没有统一架构;意图分析、意图转译没有统一的实现方法,没有接口;策略的验证的全面性缺乏,需要集成,且方式各有优缺点(如形式化验证的状态空间爆炸);部署问题(有不兼容的协议、逐步部署的顺序等);跨域通信(全局网络信息难以获取);实时收集信息用以全局优化;网络安全问题
五、评价
这篇文章是我了解自动化网络部署的第一篇文章,正好找着一篇意图网络的综述,比较通俗易懂,但是在总结各个技术的时候又比较全面,很适合阅读。个人而言,这篇文章对我启发最大的是整个流程以及最后的研究展望,难点总结也十分到位,有一些我没有想到的IBN目前存在的问题也表述出来了。