掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及互联网技术领域,尤其涉及网络运维管理领域,具体涉及一种配置信息订阅方法及装置。

背景技术

软件定义网络(software defined network,SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式。SDN采用网络配置协议(network configuration protocol,NETCONF)对网络进行配置。在进行网络配置时,存在多个客户端同时对网络中的节点设备(以下简称“节点”)进行业务配置管理。例如,对于基础的资源类配置,如接口(interface)下的配置,多个客户端均会修改其配置。

在NETCONF协议架构下,节点之间、节点与节点实例、节点实例之间往往存在关联。在一个客户端修改某个节点或节点实例的配置后,其它的客户端需要能够实时订阅到该客户端的配置改变信息以及关联配置。例如,在网元管理系统(element management system,EMS)修改配置后,软件定义网络控制器(software defined network controller,SDNcontroller)需要能够实时订阅到EMS的配置改变信息以及关联配置。同样地,EMS也可以订阅软件定义网络控制器的配置改变信息以及关联配置。

然而,现有的订阅方法中,客户端只能整体订阅网络中所有节点实例的配置信息,然后从中提取需要的节点实例的配置信息,客户端会获得很多不关注的节点实例的配置信息。因此,订阅的效率较低。

发明内容

本申请提供一种配置信息订阅方法及装置,以提高网络设备的配置信息的订阅效率。

第一方面,提供了一种配置信息订阅方法,包括:客户端获取订阅请求消息,所述订阅请求消息包括第一指示信息和第二指示信息,所述第一指示信息用于指示所订阅的第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的第二配置信息;以及所述客户端向服务端发送所述订阅请求消息。在该方面中,客户端可以在订阅第一配置信息的同时,关联订阅第二配置信息,提高了配置信息的订阅效率。

在一个实现中,所述方法还包括:所述客户端接收所述服务端发送的第一订阅通告消息,所述第一订阅通告消息包括所述第一配置信息和所述第二配置信息。

在又一个实现中,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息。在该实现中,第一节点的YANG模型中可关联第二节点,则客户端在订阅第一节点的实例的配置信息时,可同时订阅与第一节点关联的第二节点的实例的配置信息,提高了订阅效率。

在又一个实现中,所述第一节点的实例的配置信息为所述第一节点的实例的配置发生改变后所获取的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增的所述第一节点的实例或删除所述第一节点的实例。在该实现中,关联订阅的场景为第一节点的实例的配置发生改变,例如,第一节点的实例的属性值发生改变,新增的第一节点的实例或删除第一节点的实例,则客户端可在订阅第一节点的实例的配置信息时,可同时订阅与第一节点关联的第二节点的实例的配置信息,提高了订阅效率。

在又一个实现中,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增的所述第二节点的实例或删除所述第二节点的实例。在该实现中,关联订阅的场景为第二节点的实例满足第一约束条件,例如第二节点的实例的模型存在require-instance为false,且在第二节点的实例的配置发生改变后,则客户端可在订阅第一节点的实例的配置信息时,可同时订阅与第一节点关联的第二节点的实例的配置信息,提高了订阅效率。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述leaf-ref-sub字段用于指示所述第二配置信息的目标字段信息,则所述订阅通告消息包括所述第二配置信息中的目标字段;和/或所述leaf-ref-sub字段用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。在该实现中,可在订阅请求消息中包括第二配置信息的目标字段信息、或指示订阅目标节点实例的第二配置信息,可针对性地进行配置信息的订阅。

在又一个实现中,所述方法还包括:接收所述服务端发送的订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,所述客户端接收所述服务端发送的第一订阅通告消息之前,所述方法还包括:所述客户端接收所述服务端发送的第二订阅通告消息,所述第二订阅通告消息包括初始的第一配置信息和初始的第二配置信息。本申请实施例提及的初始的第一配置信息为服务端接收到客户端的订阅请求消息后根据第一指示信息获取的第一配置信息。本申请实施例提及的初始的第二配置信息为服务端收到客户端的订阅请求消息后根据第二指示信息获取的第二配置信息。

第二方面,提供了一种配置信息订阅方法,包括:服务端生成第一订阅通告消息,所述第一订阅通告消息包括第一配置信息和第二配置信息,所述第二配置信息与所述第一配置信息关联;以及所述服务端向所述客户端发送所述第一订阅通告消息。在该方面中,服务端向客户端发送第一订阅通告消息,从而使得客户端可以在获得了订阅的第一配置信息的同时,还获得了关联订阅的第二配置信息,提高了配置信息的订阅效率。

在一个实现中,所述方法还包括:所述服务端接收来自所述客户端的所述订阅请求消息,所述订阅请求消息包括所述第一指示信息和所述第二指示信息,所述第一指示信息用于指示所订阅的所述第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的所述第二配置信息。

在又一个实现中,所述服务端生成第一订阅通告消息之前,所述方法还包括:所述服务端获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第一节点的实例的配置信息为第一节点的实例的配置发生改变后获取的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增所述第一节点的实例或删除所述第一节点的实例。

在又一个实现中,所述服务端生成第一订阅通告消息之前,所述方法还包括:所述服务端获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增所述第二节点的实例或删除所述第二节点的实例。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述leaf-ref-sub字段用于指示所述第二配置信息的目标字段信息,则所述订阅通告消息包括所述第二配置信息中的目标字段;和/或所述leaf-ref-sub字段用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。

在又一个实现中,所述服务端收到所述客户端的订阅请求消息之后,所述方法还包括:所述服务端向所述客户端发送订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,所述订阅通告消息还包括初始的第一配置信息和初始的第二配置信息。

第三方面,提供了一种配置信息订阅装置,包括:获取单元,用于获取订阅请求消息,所述订阅请求消息包括第一指示信息和第二指示信息,所述第一指示信息用于指示所订阅的第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的第二配置信息;以及收发单元,用于向服务端发送所述订阅请求消息。

在一个实现中,所述收发单元还用于接收所述服务端发送的第一订阅通告消息,所述第一订阅通告消息包括所述第一配置信息和所述第二配置信息。

在又一个实现中,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息。

在又一个实现中,所述第一节点的实例的配置信息为所述第一节点的实例的配置发生改变后所获取的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增的所述第一节点的实例或删除所述第一节点的实例。

在又一个实现中,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增的所述第二节点的实例或删除所述第二节点的实例。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述leaf-ref-sub字段用于指示所述第二配置信息的目标字段信息,则所述订阅通告消息包括所述第二配置信息中的目标字段;和/或所述leaf-ref-sub字段用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。

在又一个实现中,所述收发单元还用于接收所述服务端发送的订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,所述收发单元接收来自所述服务端的第一订阅通告消息之前,所述收发单元还用于:接收所述服务端发送的第二订阅通告消息,所述第二订阅通告消息还包括初始的第一配置信息和初始的第二配置信息。

第四方面,提供了一种配置信息订阅装置,包括:生成单元,用于生成第一订阅通告消息,所述第一订阅通告消息包括第一配置信息和第二配置信息,所述第二配置信息和所述第一配置信息关联;以及收发单元,用于向所述客户端发送所述第一订阅通告消息。

在一个实现中,所述收发单元还用于接收来自所述客户端的所述订阅请求消息,所述订阅请求消息包括所述第一指示信息和所述第二指示信息,所述第一指示信息用于指示所订阅的所述第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的所述第二配置信息。

在又一个实现中,所述装置还包括:第一获取单元,用于获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第一节点的实例的配置信息为第一节点的实例的配置发生改变后获取的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增所述第一节点的实例或删除所述第一节点的实例。

在又一个实现中,所述装置还包括:第二获取单元,用于获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增所述第二节点的实例或删除所述第二节点的实例。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述leaf-ref-sub字段用于指示所述第二配置信息的目标字段信息,则所述订阅通告消息包括所述第二配置信息中的目标字段;和/或所述leaf-ref-sub字段用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。

在又一个实现中,所述收发单元还用于向所述客户端发送订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,所述生成单元还用于生成第二订阅通告消息,所述第二订阅通告消息包括初始的第一配置信息和初始的第二配置信息。

第五方面,提供了一种配置信息订阅装置,包括:处理器和通信接口,所述处理器用于执行上述第一方面或第一方面的任一个实现提供的方法。

第六方面,提供了一种配置信息订阅装置,包括:处理器和通信接口,所述处理器用于执行上述第二方面或第二方面的任一个实现提供的方法。

第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第八方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第九方面,提供了一种网络运维管理系统,包括上述第三方面或第四方面提供的配置信息订阅装置,和第五方面或第六方面提供的配置信息订阅装置。

附图说明

图1为NETCONF的架构示意图;

图2为具体示例的一种网络运维管理系统的架构示意图;

图3为本申请实施例提供的一种配置信息订阅方法的流程示意图;

图4为本申请实施例提供的一种配置信息订阅装置的结构示意图;

图5为本申请实施例提供的又一种配置信息订阅装置的结构示意图;

图6为本申请实施例提供的又一种配置信息订阅装置的结构示意图。

具体实施方式

下面对本申请实施例可能涉及的几个概念进行描述:

NETCONF提供一套管理网络设备的机制,用户可以使用这套机制增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。通过NETCONF协议,网络设备可以提供规范的应用程序编程接口(application programming interface,API),应用程序可以直接使用这些API,向网络设备发送和获取配置。NETCONF基于扩展标记语言(extensiblemarkup language,XML),因而所有NETCONF的配置数据和协议消息均用XML表示。XML语言可以表达复杂的、具有内在逻辑关系的、模型化的管理对象,如端口、协议、业务以及它们之间的关系等,提高了操作效率,适合大型且复杂的设备管理。

YANG和NETCONF相伴而生,YANG是一种数据模型语言(data modling language),用来描述NETCONF相关的网络配置和网络状态的数据模型。YANG本身不是数据模型,而是定义数据模型的语言,使用YANG语言建立的模型简称YANG模型。

NETCONF和YANG的目标是以可编程的方式实现网络配置的自动化,从而简化和加快网络设备和服务的部署,为网络运营商和企业用户节约成本。

如图1所示,为NETCONF的架构示意图,NETCONF采用客户端(client)/服务端(server)的架构。客户端和服务端之间由面向连接的传输协议建立会话。服务端是要配置的网络设备,除了硬件之外,NETCONF引擎是和客户端建立会话的软件模块,当然,服务端上面还会运行自身设备的软件系统。配置数据由NETCONF引擎维护并传递给服务端的软件系统,最终应用到硬件的芯片。

客户端在服务端中订阅配置信息。配置数据是指由用户以某种方式配置到服务端上的数据。而配置数据本身又可以存在于多个数据库中,例如,库用于保存当前已经生效的配置;用于保存可以提交为生效的数据;以及用于保存启动时的配置数据。当系统中节点或节点实例发生配置改变时,服务端生成订阅通告消息,并将订阅通告消息转换为客户端能够识别的格式后,发送至客户端。配置数据的语法结构是用YANG语言定义的数据模型来描述的,包括数据类型和数据结构。

hello消息

仅用于会话刚刚建立时服务端和客户端之间进行能力交换。

服务端和客户端需要在会话建立后互相发送消息,并在消息中携带自身支持的能力,以及支持的NETCONF协议的版本号,服务端和客户端根据自身和对方的能力信息协商使用的NETCONF版本。一般来说,服务端和客户端双方互发且协商版本成功后,认为NETCONF会话建立成功。

NETCONF协议中定义了消息层,其中包含远程过程调用(remote procedure call,RPC)消息、远程过程调用回复(rpc-reply)消息和异步通知(notification)。

1、RPC消息包括rpc和rpc-reply。是由客户端发起的发送到服务端的消息,用于客户端请求服务端执行某项具体的操作。

包含一个强制属性”message-id”,这个id是一个单调递增的正整数,同一会话内不能重复。该id用于的配对。

是由服务端发送给客户端的rpc响应。服务端不能主动发起,仅能在收到之后回复,且必须携带与收到的rpc相同的message-id。

定义了两种默认的元素分别是表示rpc执行成功,而表示rpc执行失败。

2、notfification表示通知的含义。NETCONF的通知采用的是订阅发布机制,服务端仅会向发送过订阅请求的客户端发送通知。

一般地,客户端和服务端经过如下的步骤来完成配置信息的获取和改变:

·客户端和服务端建立面向连接的传输协议的会话;

·通过hello消息协商彼此支持的能力。例如都支持的NETCONF的最高级版本,从而避免解析时的歧义;

·客户端向服务端发送订阅请求();

·服务端接收订阅请求并解析请求;

·通过YANG数据模型的定义来验证RPC请求的合法性;

·执行RPC的请求;

·执行结果作为响应消息()返回给客户端;

·客户端接收并解析响应消息。

由此可见,用户能够以任何编程语言实现远端网络设备的定制化配置的需求,所做的无非是与服务端建立会话连接,封装发送请求消息,接收解析消息。重要的是,用户可以通过这种简单的交互模式,实现自己的业务逻辑,比如,可根据网络的负载和设备的状态,应用不同的配置。这也许就是可编程的自动化配置的内涵,也是NETCONF和YANG设计的目标。

图2为具体示例的一种网络运维管理系统的架构示意图,EMS和SDN控制器均可作为客户端。EMS可以向网元(network element,NE)订阅SDN控制器对节点或节点实例的配置信息;SDN控制器也可以向NE订阅EMS对节点或节点实例的配置信息,并将配置信息保存到控制器数据库中。客户端和服务端之间均是基于NETCONF协议,且使用YANG描述订阅请求消息、订阅响应消息和订阅通告消息。

本申请实施例提供一种配置信息订阅方案,客户端可以在订阅第一配置信息的同时,关联订阅第二配置信息,提高了配置信息的订阅效率。

如图3所示,为本申请实施例提供的一种配置信息订阅方法的流程示意图,该方法可以包括以下步骤:

S101、客户端获取订阅请求消息。

该订阅请求消息可以是用户发出的,也可以是客户端内部生成的。该客户端例如可以是图2中所示的EMS和SDN控制器等。客户端获取订阅请求消息,该订阅请求消息包括第一指示信息和第二指示信息,第一指示信息用于指示所订阅的第一配置信息,第二指示信息用于指示所订阅的与第一配置信息关联的第二配置信息。即客户端在订阅第一配置信息的同时,还请求订阅与第一配置信息关联的第二配置信息。具体地,该订阅请求消息可以是采用XML语言描述的。

在一个实现中,在第一节点的YANG模型中描述了第一节点关联第二节点,则第一配置信息可以包括第一节点的实例的配置信息,第二配置信息包括与第一节点关联的第二节点的实例的配置信息。

进一步地,该订阅请求消息还包括第二配置信息的目标字段信息,即客户端可以请求订阅第二配置信息的全部或部分字段;或者该订阅请求消息用于指示订阅目标节点实例的第二配置信息,即第二节点可以包括一个或多个节点实例,客户端可以请求订阅第二节点的一个或多个目标节点实例的第二配置信息。该订阅请求消息用于指示订阅目标节点实例的第二配置信息,以及还可以包括目标节点实例的第二配置信息的目标字段信息,及客户端可以请求订阅第二节点的一个或多个目标节点实例的第二配置信息中的目标字段。

S102、客户端向服务端发送订阅请求消息。

相应地,服务端接收该订阅请求消息。

客户端和服务端之间由面向连接的传输协议建立了会话,且客户端和服务端通过hello消息协商了彼此支持的能力。因此,客户端可以基于该传输协议向服务端发送上述订阅请求消息。服务端接收该订阅请求消息,并解析客户端订阅第一配置信息和第二配置信息。

具体地,若第一节点的YANG模型中描述了第二节点为leafref类型,则该订阅请求消息中包括leaf-ref-sub字段,以订阅与第一节点关联的第二节点的实例的配置信息。服务端可以根据第一节点的YANG模型的描述和订阅请求消息中的leaf-ref-sub字段,确定客户端订阅第一配置信息和第二配置信息。

S103、服务端向客户端发送订阅响应消息,该订阅响应消息用于指示订阅成功或失败。

相应地,客户端接收该订阅响应消息。

在一个实现中,该订阅响应消息还可以携带初始的第一配置信息和初始的第二配置信息。初始的第一配置信息是相对发生变更的第一配置信息而言,初始的第二配置信息实现相对发生变更的第二配置信息而言,是指在服务端接收到订阅请求时,获取到的第一配置信息/第二配置信息。

客户端接收到该初始的第一配置信息和初始的第二配置信息,以及在后续接收到变更后的第一配置信息和/或变更后的第二配置信息时,可以分析出具体发生变更的信息内容。

S104、服务端获取第一配置信息和第二配置信息。

该步骤为可选的步骤。图中以虚线表示。服务端在第一配置信息发生变更,获取发生变更的第一配置信息以及未发生变更的第二配置信息;或者第二配置信息发生变更,获取未发生变更的第一配置信息以及发生变更的第二配置信息;或者第一配置信息和第二配置信息发生变更时,获取发生变更的第一配置信息和发生变更的第二配置信息。

如上所述,第一配置信息可以包括第一节点的实例的配置信息,第二配置信息包括与第一节点关联的第二节点的实例的配置信息。

在一个实现中,上述第一节点的实例的配置信息为第一节点的实例的配置发生改变后所获取的配置信息,第一节点的实例的配置发生改变包括:第一节点的实例的属性值发生改变,新增的第一节点的实例或删除第一节点的实例。也就是说,在第一节点的实例的配置发生改变后,服务端获取第一节点的实例的配置信息,以及与第一节点关联的第二节点的实例的配置信息。

在又一个实现中,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增的所述第二节点的实例或删除所述第二节点的实例。也就是说,在第二节点的实例满足第一约束条件且第二节点的实例的配置发生改变后,服务端获取第一节点的实例的配置信息,以及与第一节点关联的第二节点的实例的配置信息。

S105、服务端生成第一订阅通告消息。

服务端在获取上述第一配置信息和第二配置信息后,生成第一订阅通告消息。该第一订阅通告消息满足传输协议格式要求。例如,该第一订阅通告消息可以是采用XML语言描述的。其中,该第一订阅通告消息包括第一配置信息和第二配置信息,第一配置信息为根据客户端的订阅请求消息包括的第一指示信息获取的配置信息,第二配置信息为根据客户端的订阅请求消息包括的第二指示信息获取的配置信息。

可选地,在S104之前,服务端还可根据获取的初始的第一配置信息和初始的第二配置信息,生成第二订阅通告消息,该第二订阅通告消息还可以携带初始的第一配置信息和初始的第二配置信息。初始的第一配置信息和初始的第二配置信息的内容可参见S103的相应内容。若上述订阅响应消息携带了初始的第一配置信息/第二配置信息,则该第二订阅通告消息可以被省略。

S106、服务端向客户端发送第一订阅通告消息。

相应地,客户端接收该第一订阅通告消息。服务端可以基于上述传输协议向客户端发送上述第一订阅通告消息。客户端接收该第一订阅通告消息,并获取该第一订阅通告消息中包括的第一配置信息和第二配置信息,从而可以在获取第一配置信息的同时,获取了与第一配置信息关联的第二配置信息。

根据本申请实施例提供的一种配置信息订阅方法,客户端可以在订阅第一配置信息的同时,关联订阅第二配置信息,提高了配置信息的订阅效率。

在一个实现中,上述第一节点的实例的配置信息为第一节点的实例的配置发生改变后所获取的配置信息,第一节点的实例的配置发生改变包括:第一节点的实例的属性值发生改变,新增的第一节点的实例或删除第一节点的实例。下面将结合示例进行详细描述:

上述第一节点和第二节点是指YANG描述的模型。以原有节点(第一节点)为接入控制列表(access control list,ACL)的YANG模型,关联节点(第二节点)为接口(interfaces)的YANG模型为例描述如何订阅关联节点的配置信息。

其中,原有节点——ACL的YANG模型如下:

该ACL的YANG模型对ACL的参数进行了定义,其中包括接口的定义(+--rwinterface*[interface-id]{interface-attachment}?+--rw interface-id if:interface-ref)。其中,interface-id是节点标识,if:interface-ref是一种类型定义,这个类型定义实际是leafref。leafref是一种YANG数据类型,表示当前节点实际引用或指向数据树中的另一节点实例,leafref数据类型形成关联配置。

关联节点——ACL下的接口的YANG模型如下:

该接口的YANG模型对接口的各参数进行了定义。

下面描述在ACL的实例的配置发生改变时,如何关联订阅接口的实例的配置信息:

首先,客户端向服务端发送订阅请求消息。该订阅请求消息具体可以是YANG-PUSH订阅。YANG-PUSH是一种数据集(datastore)改变的订阅机制。客户端修改节点配置,将配置存储在数据集中。订阅请求消息中携带有过滤类型以及所要求得到的过滤结果信息。其中,过滤类型包括XML路径语言(xpath)过滤和子树(subtree)过滤。两种过滤类型只是描述方式不同,可以得到相同的过滤结果信息。

具体地,如下所示为进行关联订阅的描述语言,其中,关联订阅的描述语言是leaf-ref-sub,因此,该描述语言具体是指带leaf-ref-sub的YANG-PUSH订阅:

//rpc是指客户端向服务端发起订阅请求,message-id是客户端和服务端识别同一订阅请求消息和订阅响应消息的标识。

上述关联订阅的描述语言中描述了通过establis-subscription(粗体部分)订阅了ACL模型(ietf-access-control-list)中的子树(subtree-filter):acls/attachment-points/interface。

该描述语言还描述了在该订阅请求消息中通过leaf-ref-sub指定关联订阅接口模型的实例的配置信息。进一步地,还可以通过携带域(fields)指定选择具体的字段(例如名称(name)和类型(type)),即过滤结果信息:acl:interface-id leaf-ref-sub="/if:interfaces/if:interface?fields(name,type)"。从上述ACL的YANG模型可以得知该interface-id为leafref类型。因此,客户端在interface-id字段后携带leaf-ref-sub即可指定关联订阅该关联节点的配置信息。

进一步地,还可以通过xpath谓词指定具体的关联节点实例,例如订阅接口的实例名称为“Ethernet1/0/0”的描述语言为:leaf-ref-sub="/if:interfaces/if:interface[if:name='Ethernet1/0/0'。

然后,服务端在接收到客户端发送的订阅请求消息时,保存YANG-PUSH原有节点(ACL模型)订阅请求(xmlns:acl="urn:ietf:params:xml:ns:yang:ietf-access-control-list"),并且保存其关联订阅请求(acl:interface-id leaf-ref-sub="/if:interfaces/if:interface?fields(name,type))。

当任一操作导致原有节点的实例的配置发生改变时,如原有订阅节点的实例的属性值发生改变,或原有节点的实例有增加或减少等,服务端按照notification格式,向客户端上报原有节点的配置信息,同时上报关联节点的实例的配置信息。若leaf-ref-sub订阅中只选择了部分字段,则可以只上报关联节点的实例的配置信息中与该部分字段对应的信息。若leaf-ref-sub订阅通过xpath谓词限定了目标实例,则可以上报该关联节点的目标实例的配置信息。其中,上述任一操作可导致原有节点的配置发生改变,该操作可以来自于其他客户端,也可以是服务端与其它网元进行交互而产生的配置改变。

进一步地,若多个模型间存在连续的leafref关系,则该leafref链上的任意顺序节点均可以进行关联订阅。如节点Aleafref节点B,节点B leafref节点C,则订阅节点A时可以关联订阅节点B或节点C,也可以同时订阅节点B和节点C。同时订阅多个类leafref链上的节点可以通过xpath的语法进行实现,如指定leaf-ref-sub=’/if:interfaces/if:interface|/another-module:sample-node-Cs/another-module:sample-nodeC’。

在又一个实现中,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增的所述第二节点的实例或删除所述第二节点的实例。下面将结合具体示例进行详细描述:

在本实施例中,第二节点的实例满足第一约束条件可以是例如所请求关联订阅的节点实例的模型存在require-instance为false。其中,所请求关联订阅的节点实例的模型存在require-instance为false可以包括以下场景:在test-config/interfaces/interface下新建一个实例关联到某不存在的接口Eth-Trunk2;在test-config/interfaces/interface下新建一个实例关联到已存在的接口Eth-Trunk2时,但后续有客户端操作将Eth-Trunk2删除;在test-config/interfaces/interface下新建一个实例关联到已存在的接口Eth-Trunk2时,但后续有客户端操作修改Eth-Trunk2的属性。当然,以上场景仅为示例,本申请实施例对此不作限制。

下面以一个具体的示例对请求关联订阅的节点实例的模型存在require-instance为false时如何进行关联订阅进行描述:

原有节点(example)的YANG模型如下:

在该原有节点的模型中描述了leafref的节点interface的实例的模型存在require-instance为false。

具体的关联订阅流程如下:

首先,客户端向服务端发送订阅请求消息,该订阅请求消息具体可以是YANG-PUSH订阅。该订阅请求消息指定过滤类型为xpath或subtree。

具体地,如下所示为进行节点实例关联订阅的描述语言,其中,关联订阅的描述语言是leaf-ref-sub,因此,该描述语言具体是指带leaf-ref-sub的YANG-PUSH订阅:

上述关联订阅的描述语言中描述了通过establish-subscription(粗体部分)订阅了exmaple模型中的子树(subtree-filter):example:test-config/example:interfaces/example:interface。

该描述语言还描述了在该订阅请求消息中通过leaf-ref-sub指定关联订阅接口模型的配置信息。进一步地,还可以通过携带域(fields)指定选择具体的字段(例如名称(name)和类型(type)),即过滤结果信息:example:interface leaf-ref-sub="/if:interfaces/if:interface?fields(name,type)"。从上述example的YANG模型可以得知该interface-id为leafref类型,且该interface的实例的模型存在require-instance为false的约束。因此,客户端在interface-id字段后携带leaf-ref-sub即可指定关联订阅该关联节点的配置信息。

进一步地,还可以通过xpath谓词指定具体的关联节点实例,例如订阅接口的实例名称为“Eth-Trunk2”的描述语言为:leaf-ref-sub="/if:interfaces/if:interface[if:name='Eth-Trunk2']。

然后,服务端在接收到客户端发送的订阅请求时,保存YANG-PUSH原有节点(example模型)订阅请求,并且保存其关联订阅请求。

当任一操作导致关联节点的实例发生改变时,如关联节点的实例的属性值发生改变,或者实例有增加或减少等,服务端向客户端上报该原有节点的实例的配置信息,以及该关联节点的实例的配置信息。

具体地,在一个示例中,在test-config/interfaces/interface下新建一个实例关联到某不存在的接口Eth-Trunk2时,当后续有客户端操作将Eth-Trunk2创建出来时,由于此前有关联订阅到example:interface leaf-ref-sub="/if:interfaces/if:interface?fields(name,type)",因此会将Eth-Trunk2的name和type,连同test-config/interfaces/interface的所有信息都上报至客户端。

在又一个示例中,在test-config/interfaces/interface下新建一个实例关联到已存在的接口Eth-Trunk2时,当后续有客户端操作将Eth-Trunk2删除时,由于此前有关联订阅到example:interface leaf-ref-sub="/if:interfaces/if:interface?fields(name,type)",因此会将Eth-Trunk2的name和type,连同test-config/interfaces/interface的所有信息都上报至客户端。

在又一个示例中,在test-config/interfaces/interface下新建一个实例关联到已存在的接口Eth-Trunk2时,当后续有客户端操作修改Eth-Trunk2的属性时(例如,修改属性的描述),由于此前有关联订阅到example:interface leaf-ref-sub="/if:interfaces/if:interface?fields(name,type)",因此会将Eth-Trunk2的name和type,连同test-config/interfaces/interface的所有信息都上报至客户端。

基于上述配置信息订阅方法的同一构思,如图4所示,本申请实施例还提供了一种配置信息订阅装置1000,该订阅装置1000包括:获取单元11和收发单元12;其中:

获取单元11,用于获取订阅请求消息,所述订阅请求消息包括第一指示信息和第二指示信息,所述第一指示信息用于指示所订阅的第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的第二配置信息;以及收发单元12,用于向服务端发送所述订阅请求消息。

在一个实现中,所述收发单元12还用于接收所述服务端发送的第一订阅通告消息,所述第一订阅通告消息包括所述第一配置信息和所述第二配置信息。

在又一个实现中,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息。

在又一个实现中,所述第一节点的实例的配置信息为所述第一节点的实例的配置发生改变后所获取的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增的所述第一节点的实例或删除所述第一节点的实例。

在又一个实现中,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增的所述第二节点的实例或删除所述第二节点的实例。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述leaf-ref-sub字段还用于指示所述第二配置信息的目标字段信息,则所述订阅通告消息包括所述第二配置信息中的目标字段;和/或所述leaf-ref-sub字段用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。

在又一个实现中,所述收发单元12还用于接收所述服务端发送的订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,收发单元12还用于接收服务端发送的第二订阅通告消息,所述第二订阅通告消息包括初始的第一配置信息和初始的第二配置信息。

有关上述获取单元11和收发单元12的具体实现可参考图3所示方法实施例中客户端的相关描述。

根据本申请实施例提供的一种配置信息订阅装置,该订阅装置可以在订阅第一配置信息的同时,关联订阅第二配置信息,提高了配置信息的订阅效率。

基于上述配置信息订阅方法的同一构思,如图5所示,本申请实施例还提供了一种配置信息订阅装置2000,该订阅装置2000包括:生成单元21和收发单元22,还可包括第一获取单元23、第二获取单元24(图中以虚线表示);其中:

生成单元21,用于生成第一订阅通告消息,所述第一订阅通告消息包括第一配置信息和第二配置信息,所述第一配置信息为根据客户端的订阅请求消息包括的第一指示信息获取的配置信息,所述第二配置信息为根据所述客户端的所述订阅请求消息包括的第二指示信息获取的配置信息;以及收发单元22,用于向所述客户端发送所述第一订阅通告消息。

在一个实现中,所述收发单元22还用于接收来自所述客户端的所述订阅请求消息,所述订阅请求消息包括所述第一指示信息和所述第二指示信息,所述第一指示信息用于指示所订阅的所述第一配置信息,所述第二指示信息用于指示所订阅的与所述第一配置信息关联的所述第二配置信息。

在又一个实现中,所述第一获取单元23,用于获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第一节点的实例的配置信息为第一节点的实例的配置发生改变后获取的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述第一节点的实例的配置发生改变包括:所述第一节点的实例的属性值发生改变,新增所述第一节点的实例或删除所述第一节点的实例。

在又一个实现中,所述第二获取单元24,用于获取所述第一配置信息和所述第二配置信息,所述第一配置信息包括所述第一节点的实例的配置信息,所述第二配置信息包括与所述第一节点关联的第二节点的实例的配置信息,所述与所述第一节点关联的第二节点的实例的配置信息为所述第二节点的实例满足第一约束条件且所述第二节点的实例的配置发生改变后所获取的配置信息,所述第二节点的实例的配置发生改变包括:所述第二节点的实例的属性值发生改变,新增所述第二节点的实例或删除所述第二节点的实例。

在又一个实现中,若所述第一节点的YANG模型中描述了第二节点为leafref类型,则所述订阅请求消息中包括leaf-ref-sub字段,以订阅与所述第一节点关联的第二节点的实例的配置信息;所述订阅请求消息还包括所述第二配置信息的目标字段信息,则所述第一订阅通告消息包括所述第二配置信息中的目标字段;和/或所述订阅请求消息用于指示订阅目标节点实例的第二配置信息,则所述第一订阅通告消息包括所述目标节点实例的第二配置信息。

在又一个实现中,所述收发单元22还用于向所述客户端发送订阅响应消息,所述订阅响应消息用于指示订阅成功或失败。

在又一个实现中,所述订阅响应消息还包括初始的第一配置信息和初始的第二配置信息。

在又一个实现中,生成单元21用于生成第二订阅通告消息,所述第二订阅通告消息还包括初始的第一配置信息和初始的第二配置信息。收发单元22还用于在发送了所述订阅响应消息之后,向客户端发送所述第二订阅通告消息。

有关上述生成单元21、收发单元22、第一获取单元23和第二获取单元24的具体实现可参考图3所示方法实施例中服务端的相关描述。

根据本申请实施例提供的一种配置信息订阅装置,该订阅装置向客户端发送第一订阅通告消息,从而使得客户端可以在获得了订阅的第一配置信息的同时,还获得了关联订阅的第二配置信息,提高了配置信息的订阅效率。

本申请实施例还提供一种配置信息订阅装置,图6为本申请实施例提供的一种配置信息订阅装置的结构示意图。该配置信息订阅装置3000包括通信接口31和处理器32。通信接口41用于收发消息。处理器32用于执行图3中客户端或服务端所执行的方法步骤。

通信接口31的数量可以为一个或多个。通信接口31可以包括无线接口和/或有线接口。例如,无线接口可以包括无线局域网(wireless local area network,WLAN)接口,蓝牙接口,蜂窝网络接口或其任意组合。有线接口可以包括以太网接口、异步传输模式接口、光纤通道接口或其任意组合。以太网接口可以为电接口或光接口。通信接口31并不一定包括(尽管通常包括)以太网接口。

处理器32的数量可以为一个或多个。处理器32包括中央处理器,网络处理器,图形处理器(graphics processing unit,GPU),专用集成电路,可编程逻辑器件或其任意组合。上述PLD可以是复杂可编程逻辑器件,现场可编程门阵列,通用阵列逻辑或其任意组合。

该配置信息订阅装置3000还可包括存储器,用于存储处理器所执行的程序指令。存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(random-accessmemory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。

根据本申请实施例提供的一种配置信息订阅装置,该订阅装置可以在订阅第一配置信息的同时,关联订阅第二配置信息,提高了配置信息的订阅效率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。

相关技术
  • 配置信息订阅方法及装置
  • 资源订阅方法、资源订阅装置和资源订阅系統
技术分类

06120113031716