CN116185947A - 一种yang模型文件的管理方法、装置及系统 - Google Patents
一种yang模型文件的管理方法、装置及系统 Download PDFInfo
- Publication number
- CN116185947A CN116185947A CN202111433828.2A CN202111433828A CN116185947A CN 116185947 A CN116185947 A CN 116185947A CN 202111433828 A CN202111433828 A CN 202111433828A CN 116185947 A CN116185947 A CN 116185947A
- Authority
- CN
- China
- Prior art keywords
- statement
- variable
- yang model
- model file
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提出一种YANG模型文件的管理方法、装置及系统,该方法包括:获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;获取第一变量对应的第一变量值;根据第一变量值和第一语句生成第二YANG模型语句,第二YANG模型语句为服务端或者客户端可运行的YANG模型语句。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种YANG模型的管理方法、装置及系统。
背景技术
随着网络规模逐渐变得庞大而且复杂,网络设备越来越多。为了能够对网络设备进行管理,网络配置协议(network configuration protocol,NETCONF)作为一种可编程的、对网络设备进行配置和管理的协议应运而生。此外,为了解决配置和管理实践中遇到的问题和不足,YANG建模语言被广泛应用起来。
YANG是互联网工程任务组(internet engineering task force,IETF)标准组织定义的一种将网络配置管理数据模型化描述的语言,以支持NETCONF客户端和服务端之间数据的完整描述,通过YANG模型来描述NETCONF客户端和服务端之间交互的配置数据、状态数据、远程过程调用(remote procedure call,RPC)和通知(Notification)。
由于授权或者许可证(license,LCS)存在动态性,例如:不同的LCS支持的特性规格不同。因此,定义YANG模型时为特性规格设置一个固定的数值范围,例如:定义VPN最大实例数的数量为1024。而在实际运行中,网络设备实际的性能规格能力与YANG模型的定义不匹配,造成客户端请求服务端下发配置失败。
发明内容
本申请提出一种YANG模型文件的管理方法、装置及系统,由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过支持表达变量的YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
第一方面,本申请提出一种YANG模型文件的管理方法,包括:服务端获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;服务端获取第一变量对应的第一变量值;服务端根据第一变量值和第一语句生成第二语句,第二语句为服务端可运行的YANG模型语句。
具体的,一种可能的应用场景中,服务端在初始化阶段(例如服务端上电或者服务端开启服务),服务端获取第一YANG模型文件。
在另一种可能的应用场景中,服务端在初始化阶段结束后,当需要使用第一YANG模型文件时,服务端获取第一YANG模型文件。服务端需要使用第一YANG模型文件的场景包括但不限于:服务端需要使用YANG模型文件校验消息(message)是否超限,即服务端判断该消息或者该消息中携带的字段是否超过YANG模型文件的限制。又例如:服务端需要使用YANG模型文件校验数据(data)是否超限,即服务端判断某个数据是否超过YANG模型文件的限制。
本申请实施例提出一种YANG模型文件的管理方法,首先获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;其次获取第一变量对应的第一变量值;再次,根据第一变量值和第一语句生成第二YANG模型语句,第二YANG模型语句为服务端或者客户端可运行的YANG模型语句。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
在一种可能的实现方式中,服务端根据第一变量值和第一语句生成第二语句,包括:服务端根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为服务端可运行的YANG模型文件。
服务端获取第一变量对应的第一变量值后,服务端根据第一变量值对第一YANG模型进行实例化处理,生成第二YANG模型文件。具体的,服务端根据第一变量值对第一YANG模型文件进行更新,更新后的第一YANG模型文件称为第二YANG模型。第二YANG模型文件中包括第二语句,第二语句为更新后的第一语句,第二语句包括第一变量值。
本申请实施例中,服务端可以根据第一变量值和第一语句生成第二YANG模型文件,第二YANG模型文件为服务端或者客户端可运行的YANG模型文件。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
在一种可能的实现方式中,第一语句包括一个或多个子语句。当第一语句包括一个或多个子语句时,存在多种实现方式:(1)、子语句中包括多个变量,例如子语句A包括第一变量、第二变量和第三变量。第一语句包括一个子语句(例如子语句A),则第一语句包括多个变量。或者,第一语句包括多个子语句,则第一语句包括多个变量;(2)、子语句中包括一个变量,例如子语句A包括第一变量。第一语句包括一个子语句(例如子语句A),则第一语句包括一个变量。或者,第一语句包括多个子语句(例如第一语句包括子语句A和子语句B),由于不同的子语句包括不同的变量,因此第一语句包括多个变量。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
该第一语句中的子语句为拓展字段组。需要说明的是,本申请实施例中的拓展字段组语句可以是包括变量的语句,也可以是不包括变量的语句,此处不作限制。对于包括了拓展字段组的YANG模型文件,该YANG模型文件中预先定义了一组可复用的YANG模型语句集合,该YANG模型语句集合包括拓展字段组语句,拓展字段组语句是该YANG模型文件的拓展语句。当服务端或者客户端发现YANG模型文件中的其它语句需要应用该拓展字段组语句时,服务端或客户端对该拓展字段组语句进行实例化并应用该拓展字段组语句,具体如下:YANG模型解析时发现需要应用该拓展字段组语句的其它语句(例如是第三语句),然后将拓展字段组语句展开(或者嵌入)至对应的第三语句中,该拓展字段组语句作为该第三语句的子语句存在。
对于YANG模型文件中存在YANG模型语句作为子语句重复出现在不同的YANG模型语句的场景时,通过定义并应用拓展字段组语句,可以有效减少重复的YANG模型语句的定义。仅需要定义一个拓展字段组语句,并将该拓展字段组语句作为子语句在不同的YANG模型语句下复用。该拓展字段组语句可以采用YANG标准所规定的模板(template)语句。由于拓展字段组语句的定义,沿用了现有YANG标准语法,因此可以兼容现有的YANG解析器和其它的YANG工具,不影响现有的YANG解析器和其它YANG工具的运行。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:子语句为“max-elements${ext:max-vpn-instances}”,其中,第一变量为“${ext:max-vpn-instances}”,即最大实例数“max-vpn-instances”支持变量表达;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数。例如:子语句为“min-elements${ext:min-vpn-instances}”,其中,第一变量为“${ext:min-vpn-instances}”,即最小实例数“min-vpn-instances”支持变量表达;
或者,子语句为范围range语句,第一变量指示范围。该范围可以是整型范围、小数范围或者其它范围,本申请实施例对此不作限制。子语句为范围range语句时,子语句可以包括多个变量。例如:子语句为“range 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:子语句为“range${ext:min-num}..${ext:max-num}”,该子语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即范围range“min-num”和“max-num”支持变量表达;
或者,子语句为长度length语句,第一变量指示长度。该长度可以是字符串长度、二进制数长度或者其它长度,本申请实施例对此不作限制。类似的,子语句为长度length语句时,子语句可以包括多个变量。例如:子语句为“length 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:子语句为“range${ext:min-num}..${ext:max-num}”,该子语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即长度length“min-num”和“max-num”支持变量表达。
或者,子语句为默认值default语句,第一变量指示默认值。例如:子语句为“default${ext:default-val}”,则第一变量为“${ext:default-val}”。可以理解的,子语句为默认值default语句时,该子语句可以包括一个或多个变量,该变量为默认值,即默认值default支持变量表达。
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。需要说明的是,本申请实施例中的数据之间约束语句还可以是其它语句,则该数据之间约束语句包括的变量指示其它数据之间约束语句对应的约束条件。示例性的,子语句为“when${ext:ipv6-enable}”,则第一变量为“${ext:ipv6-enable}”。又例如:子语句为“must“mtu>${ext:default-mtu}””,则第一变量为““mtu>${ext:default-mtu}””。一种可能的实现方式为:在XML路径语言(xpath)表达式中嵌入变量表达。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,第一语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:第一语句为“max-elements${ext:max-vpn-instances}”,其中,第一变量为“${ext:max-vpn-instances}”,即最大实例数“max-vpn-instances”支持变量表达;
或者,第一语句为最小实例数min-elements语句,第一变量指示最小实例数。例如:第一语句为“min-elements${ext:min-vpn-instances}”,其中,第一变量为“${ext:min-vpn-instances}”,即最小实例数“min-vpn-instances”支持变量表达;
或者,第一语句为范围range语句,第一变量指示范围。该范围可以是整型范围、小数范围或者其它范围,本申请实施例对此不作限制。第一语句为范围range语句时,第一语句可以包括多个变量。例如:第一语句为“range 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即范围range“min-num”和“max-num”支持变量表达;
或者,第一语句为长度length语句,第一变量指示长度。该长度可以是字符串长度、二进制数长度或者其它长度,本申请实施例对此不作限制。类似的,第一语句为长度length语句时,第一语句可以包括多个变量。例如:第一语句为“length 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即长度length“min-num”和“max-num”支持变量表达。
或者,第一语句为默认值default语句,第一变量指示默认值。例如:第一语句为“default${ext:default-val}”,则第一变量为“${ext:default-val}”。可以理解的,第一语句为默认值default语句时,该第一语句可以包括一个或多个变量,该变量为默认值,即默认值default支持变量表达。
或者,第一语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。需要说明的是,本申请实施例中的数据之间约束语句还可以是其它语句,则该数据之间约束语句包括的变量指示其它数据之间约束语句对应的约束条件。示例性的,第一语句为“when${ext:ipv6-enable}”,则第一变量为“${ext:ipv6-enable}”。又例如:第一语句为“must“mtu>${ext:default-mtu}””,则第一变量为““mtu>${ext:default-mtu}””。一种可能的实现方式为:在XML路径语言(xpath)表达式中嵌入变量表达。
在一种可能的实现方式中,还包括:服务端接收来自客户端的第一请求消息;服务端根据第一请求消息获取第一变量对应的第一变量值;服务端向客户端发送第一响应消息,第一响应消息包括第一变量值。
客户端获取第一YANG模型文件后,客户端向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值。
一种可能的实现方式中,第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。
在另一种可能的实现方式中,第一请求消息用于请求第一变量所对应的变量值。
可选的,第一请求消息可以是请求评论(request for comments,RFC)消息,也可以是其它消息,本申请实施例对此不作限制。
在一种可能的应用场景中,当客户端上线后,客户端获取该第一YANG模型文件。客户端发现该第一YANG模型文件中包括变量(即第一变量),则客户端向服务端发送第一请求消息。
在另一种可能的应用场景中,客户端运行包括变量值的YANG模型文件(例如本申请实施例中的第二YANG模型文件)。当客户端发现该YANG模型文件中变量值对应的变量被更新时,客户端向服务端发送第一请求消息,以请求获取该变量对应的新变量值。例如:计时器或者计数器提示到达该YANG模型文件的更新时刻,或者,接收来自其他设备(例如其它服务端或者客户端)的更新指令后,又或者,客户端的软件版本发生更新,又或者,客户端的硬件发生更新,又或者,用户应用了新的LCS,则客户端向服务端发送第一请求消息。
当服务端收到来自客户端的第一请求消息后,服务端根据第一请求消息获取第一变量对应的变量值。然后服务端向客户端发送第一响应消息,该第一响应消息中包括第一变量和第一变量值。
在另一种可能的实现方式中,当第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。则第一响应消息中包括该所有YANG模型文件包括的变量以及对应的变量值。
在一种可能的实现方式中,还包括:服务端接收来自客户端的第二请求消息,第二请求消息包括第二变量值;服务端根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。
示例性的,服务端接收来自客户端的第二请求消息,该第二请求消息包括第二变量值。服务端需要获取YANG模型文件校验该第二请求消息是否超限,具体的,服务端根据第二变量值对应的第一变量,获取YANG模型文件(即第一YANG模型文件)。然后,服务端对该第一YANG模型文件实例化,得到第二YANG模型文件,第二YANG模型文件中第一变量已经实例化为第一变量值。然后,服务端使用第二YANG模型文件,校验第二请求消息,即获取第二YANG模型文件的第一变量值和第二请求消息中的第二变量值的关系,第一变量值与第二变量值的关系称为校验结果。
又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值(该第二变量值包括但不限于:第二请求消息包括的实例数、第二请求消息包括的整型数、第二请求消息包括的字符串长度,或者第二请求消息包括的第一字段),确定需要使用YANG模型文件进行校验或者判断是否超限。则服务端获取第二YANG模型文件,第二YANG模型文件中包括上述内容对应的第一变量值。然后,服务端使用第二YANG模型文件对第二请求消息进行校验或者判断是否超限。例如:第二请求消息包括的字符串长度作为第二变量值。服务端接收第二请求消息后,根据该第二变量值和第二YANG模型文件中对应的第一变量值,获得关于第二变量值的校验结果。当第二请求消息包括的字符串长度(即第二变量值)超过第一变量值时,则该校验结果为超限。又例如:第二请求消息包括的第一字段的字符串长度作为第二变量值。服务端接收第二请求消息后,根据该第二变量值和第二YANG模型文件中对应的第一变量值,获得关于第二变量值的校验结果。当第一字段的字符串长度(即第二变量值)超过第一变量值时,则该校验结果为超限。
在一种可能的实现方式中,还包括:服务端接收来自客户端的第二请求消息;服务端根据第二YANG模型文件判断第二请求消息是否超限,其中,当第二请求消息包括的实例数大于第二YANG模型文件中规定的最大实例数时,服务端判断第二请求消息包括的实例数超限,
或者,当第二请求消息包括的实例数小于第二YANG模型文件中规定的最小实例数时,服务端判断第二请求消息包括的实例数超限,
或者,当第二请求消息包括的整型数不满足第二YANG模型文件中规定的整型范围内时,服务端判断第二请求消息包括的整型数超限,
或者,当第二请求消息包括的字符串长度不满足第二YANG模型文件中规定的字符串长度范围时,服务端判断第二请求消息包括的字符串长度超限,
或者,当第二请求消息包括的第一字段的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断第二请求消息包括的第一字段超限。
本申请实施例中的“超限”指的是超过YANG模型文件或者YANG模型语句的限制。例如:服务端接收来自客户端的第二请求消息后,确定该第二请求消息(或者第二请求消息中的第二变量值)是否超过YANG模型文件的限制。进一步的,超限的第二请求消息在客户端和/或服务端中无法正常运行,或者,超限的第二请求消息在客户端和/或服务端中运行时报错。该限制由多种因素确定,包括但不限于:服务端运行的许可证(license,LCS),或者,服务端的软件版本,或者服务端的硬件参数,或者,客户端的软件版本,或者客户端的硬件参数,或者,YANG模型文件的约束等。
示例性的,当第二请求消息包括的实例数(即第二变量值)大于第二YANG模型文件中规定的最大实例数时,服务端判断第二请求消息包括的实例数超限。例如:当第二请求消息包括的实例数为1500,而第二YANG模型文件中规定的最大实例数为1000时,服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。
又例如:当服务端已有的实例数加上第二请求消息包括的实例数(即第二变量值)之和大于第二YANG模型文件中规定的最大实例数时,服务端判断第二请求消息包括的实例数超限。以服务端已创建的实例数是999为例,当第二请求消息包括的实例数为2,则服务端一共需要创建的实例数为1001,包括已创建的实例数999和待创建的实例数2。由于服务端中第二YANG模型文件中规定的最大实例数为1000,因此服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。服务端拒绝该第二请求消息。
或者,当第二请求消息包括的实例数(即第二变量值)小于第二YANG模型文件中规定的最小实例数时,服务端判断第二请求消息包括的实例数超限。例如:当第二请求消息包括的实例数为5,而第二YANG模型文件中规定的最小实例数为10时,服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。
又例如:当服务端已有的实例数加上第二请求消息包括的实例数之和小于第二YANG模型文件中规定的最小实例数时,服务端判断第二请求消息包括的实例数超限。以服务端已创建的实例数是5为例,当第二请求消息包括的实例数为2,则服务端一共需要创建的实例数为7,包括已创建的实例数5和待创建的实例数2。由于服务端中第二YANG模型文件中规定的最大实例数为10,因此服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。服务端拒绝该第二请求消息。
或者,当第二请求消息包括的整型数不满足第二YANG模型文件中规定的整型范围内时,服务端判断第二请求消息包括的整型数超限。例如:当第二请求消息包括的整型数为100000(即第二变量值为100000),而第二YANG模型文件中整型范围为0~65535时,服务端判断第二请求消息包括的整型数超限。该第二请求消息的校验结果为超限。
或者,当第二请求消息包括的字符串长度不满足第二YANG模型文件中规定的字符串长度范围时,服务端判断第二请求消息包括的字符串长度超限。例如:当第二请求消息包括的字符串长度为20比特(bit)(即第二变量值为20比特),而第二YANG模型文件中规定的字符串长度范围为15比特时,服务端判断第二请求消息包括的字符串长度超限。该第二请求消息的校验结果为超限。
或者,当第二请求消息包括的第一字段的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断第二请求消息包括的第一字段超限。具体的:服务端根据第二请求消息包括的第一字段进行配置,当得到的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断第二请求消息包括的第一字段超限。
在一种可能的实现方式中,服务端获取第一YANG模型文件,包括:服务端接收来自客户端的第二请求消息;服务端根据第二请求消息获取第一YANG模型文件。
第二请求包括第二变量值,方法还包括:
服务端根据第二YANG模型文件的第一变量值获得第二变量值和第一变量值的关系。
在又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值,确定需要使用YANG模型文件进行校验或者判断是否超限。则服务端获取第一YANG模型文件,第一YANG模型文件中包括上述内容对应的第一变量。然后,服务端对第一YANG模型文件进行实例化,生成第二YANG模型文件。服务端使用第二YANG模型文件对第二请求消息进行校验或者判断是否超限。
在又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值,确定需要使用YANG模型语句进行校验或者判断是否超限。然后,服务端获取第一语句,该第一语句包括上述内容对应的第一变量。服务端获取第一语句后,获取第一变量对应的第一变量值,并根据第一变量值和第一语句生成第二语句,该第二语句为服务端可运行的YANG模型语句。服务端使用第二语句对第二请求消息进行校验或者判断是否超限。
在一种可能的实现方式中,还包括:当第一变量对应的第一变量值被更新时,服务端获取第一变量对应的第一变量值更新后的数值;服务端向客户端发送更新后的数值。
具体的,当第一变量对应的第一变量值被更新时,服务端获取第一变量对应的第四变量值。
一种可能的实现方式中,第一变量值对应第一许可证(license,LCS),当服务端应用第二LCS时,服务端获取第二LCS对应的第四变量值。第一LCS与第二LCS可以是不一致的,也可以是一致的。当第一LCS与第二LCS一致时,该第二LCS为更新后的第一LCS,即服务端中该第一LCS发生更新后,服务端应用更新后的第一LCS,该更新后的第一LCS为第二LCS。
可以理解的是,第一变量值与第四变量值可以一致,也可以不一致。换言之,服务端感知第一变量对应的第一变量值刷新时,无论刷新后的第一变量值(即第四变量值)与刷新前的第一变量值是否被更新,服务端均会获取该第四变量值。
另一种可能的实现方式中,第一变量值由其它服务端或者客户端触发变化时,服务端获取第一变量对应的第四变量值。
示例性的,一种可能的场景如下:服务端运行一段时间后,当用户购买了新的LCS或者服务端激活了新的LCS(该新的LCS与第一变量值对应的LCS不同,该新的LCS称为第二LCS),由于LCS的变化可能导致第一变量的变量值被更新,而变量值被更新需要服务端重新更新YANG模型文件。因此,服务端获取该第二LCS中第一变量对应的第四变量值。
在一种可能的实现方式中,服务端获取第一变量对应的第一变量值,包括:服务端根据第一变量的标识,获取第一变量对应的第一变量值。
具体的,当第一变量的标识指向实例节点时,服务端根据实例节点获取第一变量对应的第一变量值;当第一变量的标识为指向服务端的软件资源或者硬件资源,服务端根据服务端的软件资源或者硬件资源获取第一变量对应的第一变量值;当第一变量的标识为指向预设值,服务端根据预设值获取第一变量对应的第一变量值。
第二方面,本申请提出一种YANG模型文件的管理方法,包括:客户端获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;客户端获取第一变量对应的第一变量值;客户端根据第一变量值和第一语句生成第二语句,第二语句为客户端可运行的YANG模型语句。
具体的,客户端首先获取客户端所支持的YANG模型文件。例如:客户端获取YANG模型文件列表,该YANG模型文件列表中包括一个或多个YANG模型文件。可选的,客户端可以在本地获取该YANG模型文件列表,客户端也可以从服务端获取该YANG模型文件列表。
客户端需要使用第一YANG模型文件的场景包括但不限于:客户端需要使用YANG模型文件校验消息(message)是否超限,即客户端判断该消息或者该消息中携带的字段是否超过YANG模型文件的限制。又例如:客户端需要使用YANG模型文件校验输入数据(data)是否超限,即客户端判断某个输入数据是否超过YANG模型文件的限制。
本申请实施例中的“超限”指的是超过YANG模型文件或者YANG模型语句的限制。例如:客户端接收输入数据后,确定该输入数据(该输入数据作为第三变量值)是否超过YANG模型文件的限制。进一步的,超限的输入数据在客户端和/或服务端中无法正常运行,或者,超限的输入数据在客户端和/或服务端中运行时报错。该限制由多种因素确定,包括但不限于:服务端运行的许可证(license,LCS),或者,服务端的软件版本,或者服务端的硬件参数,或者,客户端的软件版本,或者客户端的硬件参数,或者,YANG模型文件的约束等。
本申请实施例提出一种YANG模型文件的管理方法,首先获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;其次获取第一变量对应的第一变量值;再次,根据第一变量值和第一语句生成第二语句,第二语句为服务端或者客户端可运行的YANG模型语句。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,客户端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
在一种可能的实现方式中,客户端根据第一变量值和第一语句生成第二语句,包括:客户端根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为客户端可运行的YANG模型文件。
客户端获取第一变量对应的第一变量值后,客户端根据第一变量值对第一YANG模型进行实例化处理,生成第二YANG模型文件。具体的,客户端根据第一变量值对第一YANG模型文件进行更新,更新后的第一YANG模型文件称为第二YANG模型。第二YANG模型文件中包括第二语句,第二语句为更新后的第一语句,第二语句包括第一变量值。
本申请实施例中,客户端可以根据第一变量值和第一语句生成第二YANG模型文件,第二YANG模型文件为客户端或者客户端可运行的YANG模型文件。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,客户端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
在一种可能的实现方式中,第一语句包括一个或多个子语句。当第一语句包括一个或多个子语句时,存在多种实现方式:(1)、子语句中包括多个变量,例如子语句A包括第一变量、第二变量和第三变量。第一语句包括一个子语句(例如子语句A),则第一语句包括多个变量。或者,第一语句包括多个子语句,则第一语句包括多个变量;(2)、子语句中包括一个变量,例如子语句A包括第一变量。第一语句包括一个子语句(例如子语句A),则第一语句包括一个变量。或者,第一语句包括多个子语句(例如第一语句包括子语句A和子语句B),由于不同的子语句包括不同的变量,因此第一语句包括多个变量。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。该第一语句中的子语句为拓展字段组。需要说明的是,本申请实施例中的拓展字段组语句可以是包括变量的语句,也可以是不包括变量的语句,此处不作限制。对于包括了拓展字段组的YANG模型文件,该YANG模型文件中预先定义了一组可复用的YANG模型语句集合,该YANG模型语句集合包括拓展字段组语句,拓展字段组语句是该YANG模型文件的拓展语句。当服务端或者客户端发现YANG模型文件中的其它语句需要应用该拓展字段组语句时,服务端或客户端对该拓展字段组语句进行实例化并应用该拓展字段组语句,具体如下:YANG模型解析时发现需要应用该拓展字段组语句的其它语句(例如是第三语句),然后将拓展字段组语句展开(或者嵌入)至对应的第三语句中,该拓展字段组语句作为该第三语句的子语句存在。
对于YANG模型文件中存在YANG模型语句作为子语句重复出现在不同的YANG模型语句的场景时,通过定义并应用拓展字段组语句,可以有效减少重复的YANG模型语句的定义。仅需要定义一个拓展字段组语句,并将该拓展字段组语句作为子语句在不同的YANG模型语句下复用。该拓展字段组语句可以采用YANG标准所规定的模板(template)语句。由于拓展字段组语句的定义,沿用了现有YANG标准语法,因此可以兼容现有的YANG解析器和其它的YANG工具,不影响现有的YANG解析器和其它YANG工具的运行。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:子语句为“max-elements${ext:max-vpn-instances}”,其中,第一变量为“${ext:max-vpn-instances}”,即最大实例数“max-vpn-instances”支持变量表达;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数。例如:子语句为“min-elements${ext:min-vpn-instances}”,其中,第一变量为“${ext:min-vpn-instances}”,即最小实例数“min-vpn-instances”支持变量表达;
或者,子语句为范围range语句,第一变量指示范围。该范围可以是整型范围、小数范围或者其它范围,本申请实施例对此不作限制。子语句为范围range语句时,子语句可以包括多个变量。例如:子语句为“range 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:子语句为“range${ext:min-num}..${ext:max-num}”,该子语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即范围range“min-num”和“max-num”支持变量表达;
或者,子语句为长度length语句,第一变量指示长度。该长度可以是字符串长度、二进制数长度或者其它长度,本申请实施例对此不作限制。类似的,子语句为长度length语句时,子语句可以包括多个变量。例如:子语句为“length 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:子语句为“range${ext:min-num}..${ext:max-num}”,该子语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即长度length“min-num”和“max-num”支持变量表达。
或者,子语句为默认值default语句,第一变量指示默认值。例如:子语句为“default${ext:default-val}”,则第一变量为“${ext:default-val}”。可以理解的,子语句为默认值default语句时,该子语句可以包括一个或多个变量,该变量为默认值,即默认值default支持变量表达。
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。需要说明的是,本申请实施例中的数据之间约束语句还可以是其它语句,则该数据之间约束语句包括的变量指示其它数据之间约束语句对应的约束条件。示例性的,子语句为“when${ext:ipv6-enable}”,则第一变量为“${ext:ipv6-enable}”。又例如:子语句为“must“mtu>${ext:default-mtu}””,则第一变量为““mtu>${ext:default-mtu}””。一种可能的实现方式为:在XML路径语言(xpath)表达式中嵌入变量表达。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,第一语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:第一语句为“max-elements${ext:max-vpn-instances}”,其中,第一变量为“${ext:max-vpn-instances}”,即最大实例数“max-vpn-instances”支持变量表达;
或者,第一语句为最小实例数min-elements语句,第一变量指示最小实例数。例如:第一语句为“min-elements${ext:min-vpn-instances}”,其中,第一变量为“${ext:min-vpn-instances}”,即最小实例数“min-vpn-instances”支持变量表达;
或者,第一语句为范围range语句,第一变量指示范围。该范围可以是整型范围、小数范围或者其它范围,本申请实施例对此不作限制。第一语句为范围range语句时,第一语句可以包括多个变量。例如:第一语句为“range 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即范围range“min-num”和“max-num”支持变量表达;
或者,第一语句为长度length语句,第一变量指示长度。该长度可以是字符串长度、二进制数长度或者其它长度,本申请实施例对此不作限制。类似的,第一语句为长度length语句时,第一语句可以包括多个变量。例如:第一语句为“length 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即长度length“min-num”和“max-num”支持变量表达。
或者,第一语句为默认值default语句,第一变量指示默认值。例如:第一语句为“default${ext:default-val}”,则第一变量为“${ext:default-val}”。可以理解的,第一语句为默认值default语句时,该第一语句可以包括一个或多个变量,该变量为默认值,即默认值default支持变量表达。
或者,第一语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。需要说明的是,本申请实施例中的数据之间约束语句还可以是其它语句,则该数据之间约束语句包括的变量指示其它数据之间约束语句对应的约束条件。示例性的,第一语句为“when${ext:ipv6-enable}”,则第一变量为“${ext:ipv6-enable}”。又例如:第一语句为“must“mtu>${ext:default-mtu}””,则第一变量为““mtu>${ext:default-mtu}””。一种可能的实现方式为:在XML路径语言(xpath)表达式中嵌入变量表达。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或约束语句。
在一种可能的实现方式中,客户端获取第一变量对应的第一变量值,包括:客户端向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值;客户端接收来自服务端的第一响应消息,第一响应消息包括第一变量和第一变量值。
客户端获取第一YANG模型文件后,客户端向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值。
一种可能的实现方式中,第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。
在另一种可能的实现方式中,第一请求消息用于请求第一变量所对应的变量值。
可选的,第一请求消息可以是请求评论(request for comments,RFC)消息,也可以是其它消息,本申请实施例对此不作限制。
在一种可能的应用场景中,当客户端上线后,客户端获取该第一YANG模型文件。客户端发现该第一YANG模型文件中包括变量(即第一变量),则客户端向服务端发送第一请求消息。
在另一种可能的应用场景中,客户端运行包括变量值的YANG模型文件(例如本申请实施例中的第二YANG模型文件)。当客户端发现该YANG模型文件中变量值对应的变量被更新时,客户端向服务端发送第一请求消息,以请求获取该变量对应的新变量值。例如:计时器或者计数器提示到达该YANG模型文件的更新时刻,或者,接收来自其他设备(例如其它服务端或者客户端)的更新指令后,又或者,客户端的软件版本发生更新,又或者,客户端的硬件发生更新,又或者,用户应用了新的LCS,则客户端向服务端发送第一请求消息。
当服务端收到来自客户端的第一请求消息后,服务端根据第一请求消息获取第一变量对应的变量值。然后服务端向客户端发送第一响应消息,该第一响应消息中包括第一变量和第一变量值。
在另一种可能的实现方式中,当第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。则第一响应消息中包括该所有YANG模型文件包括的变量以及对应的变量值。
在一种可能的实现方式中,还包括:客户端接收输入数据,输入数据包括第三变量值;客户端根据第二YANG模型文件中的第一变量值和第三变量值获得校验结果。
具体的,客户端接收输入数据,该输入数据包括第三变量值。客户端需要获取YANG模型文件校验该输入数据是否超限,即根据YANG模型文件(或者YANG模型语句)获取该输入数据(即第三变量值)的校验结果。
一种可能的实现中,客户端根据第三变量值对应的第一变量,获取对应的YANG模型文件(即第一YANG模型文件)。然后,客户端对该第一YANG模型文件实例化,得到第二YANG模型文件,第二YANG模型文件中第一变量已经实例化为第一变量值。第二YANG模型文件为客户端和/或服务端可运行的YANG模型文件。
在又一种可能的实现中,客户端根据第三变量值对应的第一变量,获取对应的YANG模型语句(即第一语句)。然后,客户端对该第一语句实例化,得到第二语句,第二语句中第一变量已经实例化为第一变量值。第二语句为客户端和/或服务端可运行的YANG模型语句。
在一种可能的实现方式中,还包括:当第一变量对应的第一变量值发生变化时,客户端接收来自服务端的第二变量值;客户端根据更新后的数值更新第一语句,生成第三YANG模型文件。
具体的,当客户端收到来自服务端的第四变量值后,客户端根据该第四变量值更新第一YANG模型文件中的第一语句,更新后的YANG模型文件称为第三YANG模型文件,该第三YANG模型文件中包括更新后的第一语句,该更新后的第一语句包括第四变量值。
下面对更新第一语句进行说明,以第一语句是“List network-instance{
max-elements${ext:max-vpn-instances};
}”为例。首先,服务端根据该第一语句中的第一变量“${ext:max-vpn-instances}”获取更新后的第一变量值(即第四变量值)“2000”。其次,服务端将该第四变量值发送至客户端。由根据该第四变量值“2000”更新第一语句,生成更新后的第一语句。更新后的第一语句为“List network-instance{
max-elements 2000;
}”,其中,更新后的第一语句包括第四变量值。
在另一种可能的实现方式中,当第一YANG模型文件包括拓展字段组语句时,例如:第一YANG模型文件中的第一语句包括的一个或多个子语句(拓展字段组语句又称为子语句)。客户端首先在第一语句中展开拓展字段组语句(即展开子语句)。当客户端接收来自服务端的第四变量值后,客户端根据该第四变量值和第一语句(第一语句包括拓展字段组语句)生成更新后的第一语句。最后,客户端将更新后的第一语句替换第一YANG模型文件中的第一语句,新生成的YANG模型文件称为第三YANG模型文件。
在一种可能的实现方式中,客户端获取第一变量对应的第一变量值,包括:客户端根据第一变量的标识,获取第一变量对应的第一变量值。
具体的,第一变量的标识指向实例节点时,客户端根据该实例节点获取第一变量对应的第一变量值。例如:第一YANG模型的第一语句如下“ext:variable max-vpn-instances{
ext:ref“/spec:specs/spec:spec[name=“max-vpn-instances”]/value”;
}”,其中,第一变量为“ext:variable max-vpn-instances”,该第一变量指向规格表中的名为“max-vpn-instances”的规格项的值(即“name=“max-vpn-instances”),该规格项的值即第一变量对应的第一变量值。当该规格表中的该规格项的值被更新时,第一变量对应的第一变量值被更新,变化后的第一变量值称为第四变量值。规格表是一种YANG模型,具体的可以通过netconf协议或者restconf协议实现,本申请实施例对此不作限制。
可以理解的是,本申请实施例中第一变量的标识还可以指向其它位置,则客户端通过其它方式获取第一变量对应的第一变量值,本申请实施例对此不作限制。例如:客户端可以向服务端发送请求,以获取第一变量对应的第一变量值;又例如:客户端接收服务端的主动通知,该通知中包括第一变量对应的第一变量值;又例如:当变量指向其它YANG模型文件(或者节点)时,客户端从其它YANG模型文件(或者节点)获取该第一变量对应的第一变量值。此外,本申请实施例中第一变量的标识,也可以称为第一变量的定义,此处不作限制。
第三方面,本申请实施例提出一种通信装置,通信装置应用于服务端,包括:
收发模块,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发模块,还用于获取第一变量对应的第一变量值;
处理模块,用于根据第一变量值和第一语句生成第二语句,第二语句为服务端可运行的YANG模型语句。
在一种可能的实现方式中,处理模块,具体用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为服务端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,
收发模块,还用于接收来自客户端的第一请求消息;
收发模块,还用于第一请求消息获取第一变量对应的第一变量值;
收发模块,还用于向客户端发送第一响应消息,第一响应消息包括第一变量值。
在一种可能的实现方式中,收发模块,还用于接收来自客户端的第二请求消息,第二请求消息包括第二变量值;
收发模块,还用于根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。
在一种可能的实现方式中,收发模块,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
收发模块,还用于根据第二请求消息获取第一YANG模型文件。
在一种可能的实现方式中,收发模块,还用于当第一变量对应的第一变量值被更新时,获取第一变量对应的第一变量值更新后的数值;
收发模块,还用于向客户端发送更新后的数值。
在一种可能的实现方式中,收发模块,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
第四方面,本申请实施例提出一种通信装置,通信装置应用于客户端,通信装置包括:
收发模块,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发模块,还用于获取第一变量对应的第一变量值;
处理模块,用于根据第一变量值和第一语句生成第二语句,第二语句为客户端可运行的YANG模型语句。
在一种可能的实现方式中,处理模块,还用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为客户端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,收发模块,还用于向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值;
收发模块,还用于接收来自服务端的第一响应消息,第一响应消息包括第一变量和第一变量值。
在一种可能的实现方式中,收发模块,还用于接收输入数据,输入数据包括第三变量值;
处理模块,还用于根据第二YANG模型文件中的第一变量值和第三变量值获得校验结果。
在一种可能的实现方式中,收发模块,还用于当第一变量对应的第一变量值发生变化时,接收来自服务端的第二变量值;
处理模块,还用于根据更新后的数值更新第一语句,生成第三YANG模型文件。
在一种可能的实现方式中,收发模块,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
第五方面,本申请实施例提出一种通信装置,通信装置应用于服务端,包括:
收发器,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发器,还用于获取第一变量对应的第一变量值;
处理器,用于根据第一变量值和第一语句生成第二语句,第二语句为服务端可运行的YANG模型语句。
在一种可能的实现方式中,处理器,具体用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为服务端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,
收发器,还用于接收来自客户端的第一请求消息;
收发器,还用于第一请求消息获取第一变量对应的第一变量值;
收发器,还用于向客户端发送第一响应消息,第一响应消息包括第一变量值。
在一种可能的实现方式中,收发器,还用于接收来自客户端的第二请求消息,第二请求消息包括第二变量值;
收发器,还用于根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。
在一种可能的实现方式中,收发器,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
收发器,还用于根据第二请求消息获取第一YANG模型文件。
在一种可能的实现方式中,收发器,还用于当第一变量对应的第一变量值被更新时,获取第一变量对应的第一变量值更新后的数值;
收发器,还用于向客户端发送更新后的数值。
在一种可能的实现方式中,收发器,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
第六方面,本申请实施例提出一种通信装置,通信装置应用于客户端,通信装置包括:
收发器,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发器,还用于获取第一变量对应的第一变量值;
处理器,用于根据第一变量值和第一语句生成第二语句,第二语句为客户端可运行的YANG模型语句。
在一种可能的实现方式中,处理器,还用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为客户端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,收发器,还用于向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值;
收发器,还用于接收来自服务端的第一响应消息,第一响应消息包括第一变量和第一变量值。
在一种可能的实现方式中,收发器,还用于接收输入数据,输入数据包括第三变量值;
处理器,还用于根据第二YANG模型文件中的第一变量值和第三变量值获得校验结果。
在一种可能的实现方式中,收发器,还用于当第一变量对应的第一变量值发生变化时,接收来自服务端的第二变量值;
处理器,还用于根据更新后的数值更新第一语句,生成第三YANG模型文件。
在一种可能的实现方式中,收发器,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
第七方面,本申请实施提供了一种计算系统,包括:服务端和客户端。
其中,服务端执行前述第一方面的方法;
客户端执行前述第二方面的方法。
第八方面,本申请实施例提供了一种存储一个或多个计算机执行指令的计算机可读存储介质,当该计算机执行指令被处理器执行时,该处理器执行如前述第一方面中任意一种可能的实现方式,和/或前述第二方面任意一种可能的实现方式。
第九方面,本申请实施例提供一种存储一个或多个计算机执行指令的计算机程序产品(或称计算机程序),当该计算机执行指令被该处理器执行时,该处理器执行前述第一方面任意一种可能的实现方式,和/或前述第二方面任意一种可能的实现方式。
第十方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持计算机设备实现上述方面中所涉及的功能。在一种可能的设计中,该芯片系统还包括存储器,该存储器,用于保存计算机设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
第十一方面,本申请实施例提供了一种芯片系统,该芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以进行第一方面的方法。
其中,芯片系统中的通信接口可以为输入/输出接口、管脚或电路等。
附图说明
图1为本申请实施例提出的一种应用场景示意图;
图2为本申请实施例中一种YANG模型文件的管理方法的实施例示意图;
图3为本申请实施例中一种YANG模型文件的管理方法的实施例示意图;
图4为本申请实施例中通信装置的硬件结构示意图;
图5为本申请实施例中通信装置的一种实施例示意图;
图6为本申请实施例提出的一种通信装置示意图。
具体实施方式
本申请实施例进行描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的描述在适当情况下可以互换,以便使实施例能够以除了在本申请图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行顺序,只要能达到相同或者相类似的技术效果即可。本申请中所出现的单元的划分,是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个单元可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的单元或子单元可以是也可以不是物理上的分离,可以是也可以不是物理单元,或者可以分布到多个电路单元中,可以根据实际的需要选择其中的部分或全部单元来实现本申请方案的目的。
首先,介绍本申请实施例涉及的一些概念。
1、YANG。
YANG是一种语言,是用来建立数据模型的语言。建模语言之前就存在,YANG作为新一代的语言,定位为另一个下一代(Yet Another Next Generation)。
YANG用于为网络配置管理协议(例如网络配置协议(network configurationprotocol,Netconf),RESTCONF)使用的配置数据、状态数据、远程过程调用和通知进行模型化。通过YANG描述数据结构、数据完整性约束、数据操作,形成了一个个YANG模型文件(或者叫YANG模型、YANG文件)。
其次,介绍本方案的一些应用场景。请参阅图1,图1为本申请实施例提出的一种应用场景示意图。图1示意的应用场景中包括一个或多个服务端(server)和一个或多个客户端(client)。以网络配置协议(network configuration protocol,Netconf)为例进行说明,Netconf协议是基于可扩展标记语言(extensible markup language,XML)的网络配置和管理协议,使用简单的基于远程过程调用(remote procedure call,RPC)机制实现客户端(client)和服务端(server)之间通信。其中,客户端可以是脚本或者网管上运行的一个应用程序,服务端可以是一个典型的网络设备。
客户端的主要作用包括:利用Netconf协议对网络设备进行系统管理;向服务端发送请求,查询或修改一个或多个具体的参数值;接收服务端主动发送的告警和事件,以获知被管理设备的当前状态。
服务端的主要作用包括:维护被管理设备的信息数据并响应客户端的请求;收到客户端的请求后会进行数据解析,然后给客户端返回响应;当设备发生故障或其他事件时,服务端主动将设备的告警和事件通知给客户端,向客户端报告设备的当前状态变化。
需要说明的是,上述Netconf协议中客户端相当于软件定义网络(softwaredefine network,SDN)场景中的控制器,上述Netconf协议中服务端相当于SDN场景中的网络设备。本申请统一采用客户端和服务端的称谓进行描述。另外,除了SDN场景外,本申请也可以在基于上述Netconf协议的其他网络场景中应用,具体此处不做限定。
本申请实施例中的服务端,可以是路由器、交换机、虚拟网络功能(VirtualizedNetwork Function,VNF)或者VNF的管理系统等实现Netconf协议中定义为服务端的装置。其中,VNF的管理系统包括VNF管理器(VNF Manager,VNFM)和NFV协调器(NFVOrchestrator,NFVO)。
本申请实施例中提及的客户端可以是为路由器、交换机、服务端或控制器等实现Netconf协议中定义为客户端的装置。作为客户端的装置和作为服务端端的装置均支持实现配置功能的协议。
需要说明的是,图1示意的应用场景还可以适用其它协议,包括但不限于:RESTCONF协议。
此外,本申请实施例还可以适用于面向未来的其他通信技术。本申请描述的网络架构以及业务场景是为了更加清楚的说明本申请的技术方案,并不构成对本申请提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
如图1中的一个客户端,是一台路由器。上述路由器有条件的支持一些特定功能特性和特性规格,例如,需要进行用户购买授权或许可(license,LCS),上述路由器才可以支持。许可可以是文件或序列号的形式。许可通常由加密码组成。
由于授权或者许可(license,LCS)存在动态性,例如:不同的LCS支持的特性规格不同,LCS5表示上述路由器提供的VPN最大实例数的规格为5,LCS100标识上述路由器提供的VPN最大实例数的规格为100。因此,定义YANG模型时往往使用设备支持的最大的范围定义YANG模型,例如:定义YANG模型的VPN最大实例数数量为65535。服务端使用YANG模型文件校验所下发配置的数据是否符合YANG模型的描述,而在实际运行中,网络设备支持的特性规格不同,可能出现服务端的YANG模型中VPN最大实例数的数量与客户端的YANG模型的VPN最大实例数的数量定义不匹配,造成客户端请求服务端下发配置失败。
本申请实施例提出一种YANG模型文件的管理方法,首先获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;其次获取第一变量对应的第一变量值;再次,根据第一变量值生成第二YANG模型文件,第二YANG模型文件为服务端或者客户端可运行的YANG模型文件。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。
下面介绍本申请实施例的方法部分,首先,从服务端的角度描述本申请实施例。请参阅图2,图2为本申请实施例中一种YANG模型文件的管理方法的实施例示意图。本申请实施例提出的一种YANG模型文件的管理方法,包括:
201、服务端获取第一YANG模型文件。
步骤201中,服务端获取第一YANG模型文件,第一YANG模型文件中包括含有第一变量的第一语句。可以理解的是,第一YANG模型文件中还可以包括多个语句,该多个语句中可以包括一个或多个变量。第一语句中还可以包括多个变量,例如第一语句包括第二变量、第三变量等。
下面对第一语句进行说明。根据第一语句与第一变量的关系,本申请实施例中的第一语句存在两种实现方式:(A)、第一语句包括第一变量;(B)、第一语句包括一个或多个子语句。当第一语句包括一个或多个子语句时,存在多种实现方式:(1)、子语句中包括多个变量,例如子语句A包括第一变量、第二变量和第三变量。第一语句包括一个子语句(例如子语句A),则第一语句包括多个变量。或者,第一语句包括多个子语句,则第一语句包括多个变量;(2)、子语句中包括一个变量,例如子语句A包括第一变量。第一语句包括一个子语句(例如子语句A),则第一语句包括一个变量。或者,第一语句包括多个子语句(例如第一语句包括子语句A和子语句B),由于不同的子语句包括不同的变量,因此第一语句包括多个变量。
一种可能的实现方式中,第一变量使用“${variable-name}”的方式表达。
示例性的,以第一变量为“max-vpn-instances”为例,
则(A)实现方式中第一语句为“ext:variable max-vpn-instances{
ext:ref“/spec:specs/spec:spec[name=“max-vpn-instances”]/value”;
}”;
(B)实现方式中,第一语句为“ext:template vpn-instance-num{
max-elements${ext:max-vpn-instances};
····
}”,其中,“max-elements${ext:max-vpn-instances}”为第一语句中的子语句,“${ext:max-vpn-instances}”为该子语句中的第一变量。该子语句可以是任意一种合法的YANG语句。针对(B)实现方式,拓展字段组语句中的一种实现方式为该第一语句,该第一语句中的子语句为拓展字段组。
需要说明的是,本申请实施例中的拓展字段组语句可以是包括变量的语句,也可以是不包括变量的语句,此处不作限制。对于包括了拓展字段组的YANG模型文件,该YANG模型文件中预先定义了一组可复用的YANG模型语句集合,该YANG模型语句集合包括拓展字段组语句,拓展字段组语句是该YANG模型文件的拓展语句。当服务端或者客户端发现YANG模型文件中的其它语句需要应用该拓展字段组语句时,服务端或客户端对该拓展字段组语句进行实例化并应用该拓展字段组语句,具体如下:YANG模型解析时发现需要应用该拓展字段组语句的其它语句(例如是第三语句),然后将拓展字段组语句展开(或者嵌入)至对应的第三语句中,该拓展字段组语句作为该第三语句的子语句存在。
对于YANG模型文件中存在YANG模型语句作为子语句重复出现在不同的YANG模型语句的场景时,通过定义并应用拓展字段组语句,可以有效减少重复的YANG模型语句的定义。仅需要定义一个拓展字段组语句,并将该拓展字段组语句作为子语句在不同的YANG模型语句下复用。该拓展字段组语句可以采用YANG标准所规定的模板(template)语句。由于拓展字段组语句的定义,沿用了现有YANG标准语法,因此可以兼容现有的YANG解析器和其它的YANG工具,不影响现有的YANG解析器和其它YANG工具的运行。
下面对上述(A)实现方式与(B)实现方式进行举例说明。
(A)、第一语句包括第一变量。第一语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:第一语句为“max-elements${ext:max-vpn-instances}”,其中,第一变量为“${ext:max-vpn-instances}”,即最大实例数“max-vpn-instances”支持变量表达;
或者,第一语句为最小实例数min-elements语句,第一变量指示最小实例数。例如:第一语句为“min-elements${ext:min-vpn-instances}”,其中,第一变量为“${ext:min-vpn-instances}”,即最小实例数“min-vpn-instances”支持变量表达;
或者,第一语句为范围range语句,第一变量指示范围。该范围可以是整型范围、小数范围或者其它范围,本申请实施例对此不作限制。第一语句为范围range语句时,第一语句可以包括多个变量。例如:第一语句为“range 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即范围range“min-num”和“max-num”支持变量表达;
或者,第一语句为长度length语句,第一变量指示长度。该长度可以是字符串长度、二进制数长度或者其它长度,本申请实施例对此不作限制。类似的,第一语句为长度length语句时,第一语句可以包括多个变量。例如:第一语句为“length 1..${ext:max-num}”,第一变量为“${ext:max-num}”。又例如:第一语句为“range${ext:min-num}..${ext:max-num}”,该第一语句包括第一变量和第二变量,第一变量为“${ext:min-num}”,第二变量为“${ext:max-num}”,即长度length“min-num”和“max-num”支持变量表达;
或者,第一语句为默认值default语句,第一变量指示默认值。例如:第一语句为“default${ext:default-val}”,则第一变量为“${ext:default-val}”。可以理解的,第一语句为默认值default语句时,该第一语句可以包括一个或多个变量,该变量为默认值,即默认值default支持变量表达;
或者,第一语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。需要说明的是,本申请实施例中的数据之间约束语句还可以是其它语句,则该数据之间约束语句包括的变量指示其它数据之间约束语句对应的约束条件。示例性的,第一语句为“when${ext:ipv6-enable}”,则第一变量为“${ext:ipv6-enable}”。又例如:第一语句为“must“mtu>${ext:default-mtu}””,则第一变量为““mtu>${ext:default-mtu}””。一种可能的实现方式为:在XML路径语言(xpath)表达式中嵌入变量表达。
(B)、第一语句包括一个或多个子语句,该一个或多个子语句包括第一变量。
该子语句也可以称为拓展字段组语句,一种可能的实现方式为:该子语句为YANG模型文件的模板(template)语句。当YANG模型文件中的某个语句需要应用该子语句的变量时,该子语句展开(或者嵌入)至该某个语句中,使得该某个语句支持变量表达。
子语句为最大实例数max-elements语句,第一变量指示最大实例数。例如:第一语句为“ext:template vpn-instance-num{
max-elements${ext:max-vpn-instances};
····}”,该第一语句的子语句为“max-elements${ext:max-vpn-instances};”,第一变量为“${ext:max-vpn-instances}”;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。可以理解的是,本申请实施例中不对数据之间约束语句进行限定,该数据之间约束语句还可以是其它语句。
需要说明的是,当第一YANG模型文件包括拓展字段组语句时,例如:第一YANG模型文件中的第一语句为拓展字段组语句,第一语句包括一个或多个子语句,该一个或多个子语句包括第一变量。则服务端对第一YANG模型文件进行实例化的过程中,需要应用上述拓展字段组语句,该拓展字段组语句可以预先配置于相关节点(例如类list)中。可选的,当相关节点中的该拓展字段组语句存在其它定义时,服务端对第一YANG模型文件进行实例化的过程中,以相关节点中该拓展字段组语句的定义为准。
示例性的,该拓展字段组语句以“Apply{template_name}”方式实现,“{template_name}”为该拓展字段组语句的名称。
相关节点中配置的该拓展字段组语句,例如:“list network-instance{
ext:apply vpn-instance-num;
…}”。
一种可能的应用场景中,服务端在初始化阶段(例如服务端上电或者服务端开启服务),服务端获取第一YANG模型文件。
在另一种可能的应用场景中,服务端在初始化阶段结束后,当需要使用第一YANG模型文件时,服务端获取第一YANG模型文件。服务端需要使用第一YANG模型文件的场景包括但不限于:服务端需要使用YANG模型文件校验消息(message)是否超限,即服务端判断该消息或者该消息中携带的字段是否超过YANG模型文件的限制。又例如:服务端需要使用YANG模型文件校验数据(data)是否超限,即服务端判断某个数据是否超过YANG模型文件的限制。
本申请实施例中的“超限”指的是超过YANG模型文件或者YANG模型语句的限制。例如:服务端接收来自客户端的第二请求消息后,确定该第二请求消息(或者第二请求消息中的第二变量值)是否超过YANG模型文件的限制。进一步的,超限的第二请求消息在客户端和/或服务端中无法正常运行,或者,超限的第二请求消息在客户端和/或服务端中运行时报错。该限制由多种因素确定,包括但不限于:服务端运行的许可证(license,LCS),或者,服务端的软件版本,或者服务端的硬件参数,或者,客户端的软件版本,或者客户端的硬件参数,或者,YANG模型文件的约束等。
202、服务端获取第一变量对应的第一变量值。
步骤202中,服务端获取第一YANG模型文件后,服务端发现第一YANG模型的第一语句中包括第一变量,则服务端获取第一变量对应的第一变量值。
示例性的,服务端上线后,可以对当前服务端中部分或者全部的YANG模型文件(该YANG模型文件包括变量)进行初始化,即获取当前服务端中部分或者全部的YANG模型文件,例如:获取第一YANG模型文件。当第一YANG模型文件中包括第一语句,且第一语句中包括第一变量时(即第一语句不是拓展字段组语句),则服务端获取第一变量对应的第一变量值。当第一YANG模型文件中包括的第一语句为拓展字段组语句,则服务端获取第一变量对应的第一变量值后,对第一语句进行实例化(即获取第一变量对应的第一变量值后,生成第二语句,第二语句包括第一变量值)。下面具体介绍服务端如何获取第一变量对应的第一变量值。
具体的,服务端根据第一变量的标识,获取第一变量对应的第一变量值。
一种可能的实现方式中,第一变量的标识指向实例节点时,服务端根据该实例节点获取第一变量对应的第一变量值。例如:第一YANG模型的第一语句如下“ext:variablemax-vpn-instances{
ext:ref“/spec:specs/spec:spec[name=“max-vpn-instances”]/value”;
}”,其中,第一变量为“ext:variable max-vpn-instances”,该第一变量指向规格表中的名为“max-vpn-instances”的规格项的值(即“name=“max-vpn-instances”),该规格项的值即第一变量对应的第一变量值。当该规格表中的该规格项的值发生变化时,第一变量对应的第一变量值发生变化(例如被更新),本申请实施例中为了便于描述,将更新后的第一变量值称为更新后的数值(或者第四变量值)。规格表是一种YANG模型,具体的可以通过netconf协议或者restconf协议实现,本申请实施例对此不作限制。
在另一种可能的实现方式中,第一变量的标识指向服务端的软件资源或者硬件资源,服务端根据该服务端的软件资源或者硬件资源获取第一变量对应的变量值。例如:以第一变量是VPN最大实例数为例,当服务端的软件资源定义当前的VPN最大实例数为1000,则服务端根据该软件资源获取第一变量对应的第一变量值为1000。又例如:以第一变量是最大实例数为例,当服务端的硬件资源限制当前最大实例数为1500时,若第一变量指向服务端的硬件资源,则服务端根据该硬件资源获取第一变量对应的第一变量值为1500。
在另一种可能的实现方式中,第一变量的标识为指向预设值,服务端根据该预设值获取第一变量对应的第一变量值。
在另一种可能的实现方式中,第一变量的标识还可以指向其它模型(该其它模型与第一YANG模型文件不同),则服务端通过其它模型获取第一变量对应的第一变量值。
可以理解的是,本申请实施例中第一变量的标识还可以指向其它位置,则服务端通过其它方式获取第一变量对应的第一变量值,本申请实施例对此不作限制。此外,本申请实施例中第一变量的标识,也可以称为第一变量的定义,此处不作限制。
上述步骤以服务端获取第一变量的第一变量值为例进行说明,可以理解的是,当第一YANG模型文件中包括多个变量时,服务端获取多个变量对应的多个变量值的方法与上述步骤类似,此处不作赘述。
203、服务端根据第一变量值生成第二YANG模型文件。
步骤203中,服务端获取第一变量对应的第一变量值后,服务端根据第一变量值对第一YANG模型进行实例化处理,生成第二YANG模型文件。具体的,服务端根据第一变量值对第一YANG模型文件进行更新,更新后的第一YANG模型文件称为第二YANG模型。第二YANG模型文件中包括第二语句,第二语句为更新后的第一语句,第二语句包括第一变量值。
示例性的,服务端接收来自客户端的第二请求消息,该第二请求消息包括第二变量值。服务端需要获取YANG模型文件校验该第二请求消息是否超限,具体的,服务端根据第二变量值对应的第一变量,获取YANG模型文件(即第一YANG模型文件)。然后,服务端对该第一YANG模型文件实例化,得到第二YANG模型文件,第二YANG模型文件中第一变量已经实例化为第一变量值。然后,服务端使用第二YANG模型文件,校验第二请求消息,即获取第二YANG模型文件的第一变量值和第二请求消息中的第二变量值的关系,第一变量值与第二变量值的关系称为校验结果。
又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值(该第二变量值包括但不限于:第二请求消息包括的实例数、第二请求消息包括的整型数、第二请求消息包括的字符串长度,或者第二请求消息包括的第一字段),确定需要使用YANG模型文件进行校验或者判断是否超限。则服务端获取第二YANG模型文件,第二YANG模型文件中包括上述内容对应的第一变量值。然后,服务端使用第二YANG模型文件对第二请求消息进行校验或者判断是否超限。例如:第二请求消息包括的字符串长度作为第二变量值。服务端接收第二请求消息后,根据该第二变量值和第二YANG模型文件中对应的第一变量值,获得关于第二变量值的校验结果。当第二请求消息包括的字符串长度(即第二变量值)超过第一变量值时,则该校验结果为超限。又例如:第二请求消息包括的第一字段的字符串长度作为第二变量值。服务端接收第二请求消息后,根据该第二变量值和第二YANG模型文件中对应的第一变量值,获得关于第二变量值的校验结果。当第一字段的字符串长度(即第二变量值)超过第一变量值时,则该校验结果为超限。
在又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值,确定需要使用YANG模型文件进行校验或者判断是否超限。则服务端获取第一YANG模型文件,第一YANG模型文件中包括上述内容对应的第一变量。然后,服务端对第一YANG模型文件进行实例化,生成第二YANG模型文件。服务端使用第二YANG模型文件对第二请求消息进行校验或者判断是否超限。
在又一种示例中,服务端接收来自客户端的第二请求消息后,服务端根据第二请求消息中包括的第二变量值,确定需要使用YANG模型语句进行校验或者判断是否超限。然后,服务端获取第一语句,该第一语句包括上述内容对应的第一变量。服务端获取第一语句后,获取第一变量对应的第一变量值,并根据第一变量值和第一语句生成第二语句,该第二语句为服务端可运行的YANG模型语句。服务端使用第二语句对第二请求消息进行校验或者判断是否超限。
下面对更新第二语句的过程进行说明,以第一语句是“List network-instance{
max-elements${ext:max-vpn-instances};
}”为例。首先,服务端根据该第一语句中的第一变量“${ext:max-vpn-instances}”获取对应的第一变量值“1000”。其次,服务端根据该第一变量值“1000”更新第一语句,生成第二语句。第二语句为“List network-instance{
max-elements 1000;
}”,其中,第二语句为更新后的第一语句,第二语句包括第一变量值。
在另一种可能的实现方式中,当第一YANG模型文件包括拓展字段组语句时,例如:第一YANG模型文件中的第一语句包括的一个或多个子语句(拓展字段组语句又称为子语句)。服务端首先在第一语句中展开拓展字段组语句(即展开子语句)。然后,当服务端发现该拓展字段组语句(即子语句)包括第一变量时,服务端获取该第一变量对应的第一变量值。获取第一变量值后,服务端根据第一变量值和第一语句(第一语句包括拓展字段组语句)生成第二语句。最后,服务端将第二语句替换第一YANG模型文件中的第一语句,新生成的YANG模型文件称为第二YANG模型文件。
当服务端根据第一变量值生成第二YANG模型文件后,该第二YANG模型文件具有多种用途。下面进行举例说明:
一种可能的实现方式中,服务端接收来自客户端的第二请求消息,该第二请求消息中包括第二变量值;服务端根据第二YANG模型文件判断第二请求消息是否超限,具体的,服务端根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。当服务端判断第二请求消息(第二变量值)超限,即服务端判断第二变量值超过第二YANG模型文件的限制,则服务端确认该校验结果为超限。进一步的,服务端确认第二请求消息请求失败。
示例性的,当第二请求消息包括的实例数(即第二变量值)大于第二YANG模型文件中规定的最大实例数时,服务端判断第二请求消息包括的实例数超限。例如:当第二请求消息包括的实例数为1500,而第二YANG模型文件中规定的最大实例数为1000时,服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。
又例如:当服务端已有的实例数加上第二请求消息包括的实例数(即第二变量值)之和大于第二YANG模型文件中规定的最大实例数时,服务端判断第二请求消息包括的实例数超限。以服务端已创建的实例数是999为例,当第二请求消息包括的实例数为2,则服务端一共需要创建的实例数为1001,包括已创建的实例数999和待创建的实例数2。由于服务端中第二YANG模型文件中规定的最大实例数为1000,因此服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。服务端拒绝该第二请求消息。
或者,当第二请求消息包括的实例数(即第二变量值)小于第二YANG模型文件中规定的最小实例数时,服务端判断第二请求消息包括的实例数超限。例如:当第二请求消息包括的实例数为5,而第二YANG模型文件中规定的最小实例数为10时,服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。
又例如:当服务端已有的实例数加上第二请求消息包括的实例数之和小于第二YANG模型文件中规定的最小实例数时,服务端判断第二请求消息包括的实例数超限。以服务端已创建的实例数是5为例,当第二请求消息包括的实例数为2,则服务端一共需要创建的实例数为7,包括已创建的实例数5和待创建的实例数2。由于服务端中第二YANG模型文件中规定的最大实例数为10,因此服务端判断第二请求消息包括的实例数超限。该第二请求消息的校验结果为超限。服务端拒绝该第二请求消息。
或者,当第二请求消息包括的整型数不满足第二YANG模型文件中规定的整型范围内时,服务端判断第二请求消息包括的整型数超限。例如:当第二请求消息包括的整型数为100000(即第二变量值为100000),而第二YANG模型文件中整型范围为0~65535时,服务端判断第二请求消息包括的整型数超限。该第二请求消息的校验结果为超限。
或者,当第二请求消息包括的字符串长度不满足第二YANG模型文件中规定的字符串长度范围时,服务端判断第二请求消息包括的字符串长度超限。例如:当第二请求消息包括的字符串长度为20比特(bit)(即第二变量值为20比特),而第二YANG模型文件中规定的字符串长度范围为15比特时,服务端判断第二请求消息包括的字符串长度超限。该第二请求消息的校验结果为超限。
或者,当第二请求消息包括的第一字段的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断第二请求消息包括的第一字段超限。具体的:服务端根据第二请求消息包括的第一字段进行配置,当得到的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断第二请求消息包括的第一字段超限。
204、当第一变量对应的第一变量值被更新时,服务端获取第一变量对应的第四变量值。
步骤204-207为可选步骤,具体的,当第一变量对应的第一变量值被更新时,服务端获取第一变量对应的第四变量值。
一种可能的实现方式中,第一变量值对应第一许可证(license,LCS),当服务端应用第二LCS时,服务端获取第二LCS对应的第四变量值。第一LCS与第二LCS可以是不一致的,也可以是一致的。当第一LCS与第二LCS一致时,该第二LCS为更新后的第一LCS,即服务端中该第一LCS发生更新后,服务端应用更新后的第一LCS,该更新后的第一LCS为第二LCS。
可以理解的是,第一变量值与第四变量值可以一致,也可以不一致。换言之,服务端感知第一变量对应的第一变量值刷新时,无论刷新后的第一变量值(即第四变量值)与刷新前的第一变量值是否被更新,服务端均会获取该第四变量值。
另一种可能的实现方式中,第一变量值由其它服务端或者客户端触发变化时,服务端获取第一变量对应的第四变量值。
示例性的,一种可能的场景如下:服务端运行一段时间后,当用户购买了新的LCS或者服务端激活了新的LCS(该新的LCS与第一变量值对应的LCS不同,该新的LCS称为第二LCS),由于LCS的变化可能导致第一变量的变量值被更新,而变量值被更新需要服务端重新更新YANG模型文件。因此,服务端获取该第二LCS中第一变量对应的第四变量值。
步骤204之后,分别执行步骤205和步骤206,可以理解的是步骤205与步骤206的执行顺序不作限制。
205、服务端根据第四变量值生成第三YANG模型文件。
步骤205中,服务端获取第四变量值后,根据第四变量值更新第一YANG模型文件中的第一语句,生成新的YANG模型文件,本申请实施例中该新的YANG模型文件称为第三YAGN模型文件。
具体的生成第三YANG模型文件的流程,与前述步骤203类似,此处不作赘述。
当服务端生成新的YANG模型文件后(即生成第三YANG模型文件后),服务端使用该第三YANG模型文件替代原有的第二YANG模型文件,下面进行举例说明:
一种可能的实现方式中,服务端接收来自客户端的第二请求消息;
服务端根据第三YANG模型文件判断第二请求消息是否超限。具体判断方法与前述步骤203中服务端根据第二YANG模型文件判断第二请求消息是否超限一致,此处不作赘述。
206、服务端向客户端发送第四变量值。
步骤206中,当服务端获取第四变量值后,服务端可以向客户端发送该第四变量值。
一种可能的实现方式中,服务端通过通知(notification)的方式向客户端发送该第四变量值。示例性的,当第一变量(以“${ext:max-vpn-instances}”为例)的第一变量值由1000变更为1200,即第四变量值为1200时,服务端触发通知。该通知的具体形式如下:“<notification>
<variable-changed>
<variable>max-vpn-instances</variable>
<value>1200</value>
</variable-changed>
</notification>”。该通知中包括第四变量值。
在另一种可能的实现方式中,当服务端应用其它协议时,服务端可以通过其它方式向客户端发送该第四变量值。该其它协议,包括但不限于:超文本传输协议(hypertexttransfer protocol,HTTP)、restconf协议等。
207、客户端根据第四变量值生成第三YANG模型文件。
步骤207中,当客户端收到来自服务端的第四变量值后,客户端根据该第四变量值更新第一YANG模型文件中的第一语句,更新后的YANG模型文件称为第三YANG模型文件,该第三YANG模型文件中包括更新后的第一语句,该更新后的第一语句包括第四变量值。
下面对更新第一语句进行说明,以第一语句是“List network-instance{
max-elements${ext:max-vpn-instances};
}”为例。首先,服务端根据该第一语句中的第一变量“${ext:max-vpn-instances}”获取更新后的第一变量值(即第四变量值)“2000”。其次,服务端将该第四变量值发送至客户端。由根据该第四变量值“2000”更新第一语句,生成更新后的第一语句。更新后的第一语句为“List network-instance{
max-elements 2000;
}”,其中,更新后的第一语句包括第四变量值。
在另一种可能的实现方式中,当第一YANG模型文件包括拓展字段组语句时,例如:第一YANG模型文件中的第一语句包括的一个或多个子语句(拓展字段组语句又称为子语句)。客户端首先在第一语句中展开拓展字段组语句(即展开子语句)。当客户端接收来自服务端的第四变量值后,客户端根据该第四变量值和第一语句(第一语句包括拓展字段组语句)生成更新后的第一语句。最后,客户端将更新后的第一语句替换第一YANG模型文件中的第一语句,新生成的YANG模型文件称为第三YANG模型文件。
本申请实施例提出一种YANG模型文件的管理方法,首先获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;其次获取第一变量对应的第一变量值;再次,根据第一变量值生成第二YANG模型文件,第二YANG模型文件为服务端或者客户端可运行的YANG模型文件。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,服务端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。此外,当第一变量对应的第一变量值被更新时,服务端可以及时通知客户端变化后的第一变量值,使得客户端可以及时更新YANG模型文件,保证服务端与客户端所使用的YANG模型文件的一致性。
其次,在前述实施例的基础上从客户端的角度描述本申请实施例。请参阅图3,图3为本申请实施例中一种YANG模型文件的管理方法的实施例示意图。本申请实施例提出的一种YANG模型文件的管理方法,包括:
301、客户端获取第一YANG模型文件。
步骤301中,客户端首先获取客户端所支持的YANG模型文件。例如:客户端获取YANG模型文件列表,该YANG模型文件列表中包括一个或多个YANG模型文件。可选的,客户端可以在本地获取该YANG模型文件列表,客户端也可以从服务端获取该YANG模型文件列表。
客户端需要使用第一YANG模型文件的场景包括但不限于:客户端需要使用YANG模型文件校验消息(message)是否超限,即客户端判断该消息或者该消息中携带的字段是否超过YANG模型文件的限制。又例如:客户端需要使用YANG模型文件校验输入数据(data)是否超限,即客户端判断某个输入数据是否超过YANG模型文件的限制。
本申请实施例中的“超限”指的是超过YANG模型文件或者YANG模型语句的限制。例如:客户端接收输入数据后,确定该输入数据(该输入数据作为第三变量值)是否超过YANG模型文件的限制。进一步的,超限的输入数据在客户端和/或服务端中无法正常运行,或者,超限的输入数据在客户端和/或服务端中运行时报错。该限制由多种因素确定,包括但不限于:服务端运行的许可证(license,LCS),或者,服务端的软件版本,或者服务端的硬件参数,或者,客户端的软件版本,或者客户端的硬件参数,或者,YANG模型文件的约束等。
当客户端获取的YANG模型文件中包括第一变量时,进入步骤302。该YANG模型文件即第一YANG模型文件。关于第一YANG模型文件的描述请参见前述步骤201,此处不作赘述。
302、客户端向服务端发送第一请求消息。
步骤302中,客户端获取第一YANG模型文件后,客户端向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值。
一种可能的实现方式中,第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。例如:第一请求消息为:“<rpc>
<get-variable/>
</rpc>”。
在另一种可能的实现方式中,第一请求消息用于请求第一变量所对应的变量值。示例性的,以第一变量是“max-vpn-instances”为例,则第一请求消息为:“<rpc>
<get-variable>
<variable>max-vpn-instances</variable>
</get-variable>
</rpc>”。
可选的,第一请求消息可以是请求评论(request for comments,RFC)消息,也可以是其它消息,本申请实施例对此不作限制。
在一种可能的应用场景中,当客户端上线后,客户端获取该第一YANG模型文件。客户端发现该第一YANG模型文件中包括变量(即第一变量),则客户端向服务端发送第一请求消息。
在另一种可能的应用场景中,客户端运行包括变量值的YANG模型文件(例如本申请实施例中的第二YANG模型文件)。当客户端发现该YANG模型文件中变量值对应的变量被更新时,客户端向服务端发送第一请求消息,以请求获取该变量对应的新变量值。例如:计时器或者计数器提示到达该YANG模型文件的更新时刻,或者,接收来自其他设备(例如其它服务端或者客户端)的更新指令后,又或者,客户端的软件版本发生更新,又或者,客户端的硬件发生更新,又或者,用户应用了新的LCS,则客户端向服务端发送第一请求消息。
303、服务端向客户端发送第一响应消息,第一响应消息包括第一变量和第一变量值。
步骤303中,当服务端收到来自客户端的第一请求消息后,服务端根据第一请求消息获取第一变量对应的变量值。然后服务端向客户端发送第一响应消息,该第一响应消息中包括第一变量和第一变量值。
示例性的,第一响应消息为:“<rpc-reply>
<variable>
<name>max-vpn-instances</name>
<value>1000</value>
</variable>
</rpc-reply>”。
在另一种可能的实现方式中,当第一请求消息用于请求服务端发送YANG模型文件列表中所有YANG模型文件包括的变量对应的变量值。则第一响应消息中包括该所有YANG模型文件包括的变量以及对应的变量值。例如:第一响应消息为“<rpc-reply>
<variable>
<name>max-vpn-instances</name>
<value>1000</value>
</variable>
…
</rpc-reply>”。
在另一种可能的实现方式中,客户端在本地获取第一变量对应的变量值,则步骤301后执行步骤303,不执行步骤302。具体的,客户端根据第一变量的标识,获取第一变量对应的第一变量值。
一种可能的实现方式中,第一变量的标识指向实例节点时,客户端根据该实例节点获取第一变量对应的第一变量值。例如:第一YANG模型的第一语句如下“ext:variablemax-vpn-instances{
ext:ref“/spec:specs/spec:spec[name=“max-vpn-instances”]/value”;
}”,其中,第一变量为“ext:variable max-vpn-instances”,该第一变量指向规格表中的名为“max-vpn-instances”的规格项的值(即“name=“max-vpn-instances”),该规格项的值即第一变量对应的第一变量值。当该规格表中的该规格项的值被更新时,第一变量对应的第一变量值被更新,变化后的第一变量值称为第四变量值。规格表是一种YANG模型,具体的可以通过netconf协议或者restconf协议实现,本申请实施例对此不作限制。
可以理解的是,本申请实施例中第一变量的标识还可以指向其它位置,则客户端通过其它方式获取第一变量对应的第一变量值,本申请实施例对此不作限制。例如:客户端可以向服务端发送请求,以获取第一变量对应的第一变量值;又例如:客户端接收服务端的主动通知,该通知中包括第一变量对应的第一变量值;又例如:当变量指向其它YANG模型文件(或者节点)时,客户端从其它YANG模型文件(或者节点)获取该第一变量对应的第一变量值。此外,本申请实施例中第一变量的标识,也可以称为第一变量的定义,此处不作限制。
可以理解的是,上述第一响应消息中可以仅包括第一变量值。即第一响应消息不包括第一变量。客户端接收第一响应消息后,根据该第一响应消息(或者第一响应消息中携带的标识信息)确定该第一响应消息中包括的第一变量值所对应的变量(即第一变量)。
上述步骤以客户端获取第一变量的第一变量值为例进行说明,可以理解的是,当第一YANG模型文件中包括多个变量时,客户端获取多个变量对应的多个变量值的方法与上述步骤类似,此处不作赘述。
304、客户端根据第一变量值生成第二YANG模型文件。
步骤304中,当客户端获取第一变量值后,客户端根据第一变量值生成第二YANG模型文件,具体的生成第二YANG模型文件的流程与前述步骤203类似,此处不作赘述。
当客户端根据第一变量值生成第二YANG模型文件后,该第二YANG模型文件具有多种用途。下面进行举例说明:
一种可能的应用场景中,客户端接收输入数据,该输入数据包括第三变量值。客户端需要获取YANG模型文件校验该输入数据是否超限,即根据YANG模型文件(或者YANG模型语句)获取该输入数据的校验结果。
一种可能的实现中,客户端根据第三变量值对应的第一变量,获取对应的YANG模型文件(即第一YANG模型文件)。然后,客户端对该第一YANG模型文件实例化,得到第二YANG模型文件,第二YANG模型文件中第一变量已经实例化为第一变量值。第二YANG模型文件为客户端和/或服务端可运行的YANG模型文件。
在又一种可能的实现中,客户端根据第三变量值对应的第一变量,获取对应的YANG模型语句(即第一语句)。然后,客户端对该第一语句实例化,得到第二语句,第二语句中第一变量已经实例化为第一变量值。第二语句为客户端和/或服务端可运行的YANG模型语句。
示例性的,当客户端根据输入数据创建的实例数(输入数据创建的实例数作为第三变量值)大于第二YANG模型文件中规定的最大实例数时,客户端判断输入数据(第三变量值)超限。例如:当客户端根据输入数据创建的实例数为1500,即第三变量值为1500,而第二YANG模型文件中规定的最大实例数为1000时,客户端判断输入数据超限。即输入数据(第三变量值)的校验结果为超限。
又例如:当客户端已有的实例数加上输入数据创建的实例数(输入数据创建的实例数作为第三变量值)之和大于第二YANG模型文件中规定的最大实例数时,客户端判断输入数据超限。以客户端已创建的实例数是999为例,当输入数据创建的实例数为2(第三变量值为2),则客户端一共需要创建的实例数为1001,包括已创建的实例数999和待创建的实例数2。由于客户端中第二YANG模型文件中规定的最大实例数为1000,因此客户端判断输入数据超限。即输入数据(第三变量值)的校验结果为超限。客户端拒绝该输入数据。
或者,当客户端根据输入数据创建的实例数小于第二YANG模型文件中规定的最小实例数时,客户端判断输入数据超限。例如:当客户端根据输入数据创建的实例数为5,而第二YANG模型文件中规定的最小实例数为10时,客户端判断输入数据包括的实例数超限。即输入数据(第三变量值)的校验结果为超限。
又例如:当客户端已有的实例数加上输入数据创建的实例数之和小于第二YANG模型文件中规定的最小实例数时,客户端判断输入数据超限。以客户端已创建的实例数是5为例,当输入数据创建的实例数为2,则客户端一共需要创建的实例数为7,包括已创建的实例数5和待创建的实例数2。由于客户端中第二YANG模型文件中规定的最小实例数为10,因此客户端判断输入数据超限。客户端拒绝该输入数据。即输入数据(第三变量值)的校验结果为超限。
或者,当输入数据的整型数(该整型数作为第三变量值)不满足第二YANG模型文件中规定的整型范围内时,服务端判断输入数据包括的整型数超限。例如:当输入数据的整型数为100000(即第三变量值为100000),而第二YANG模型文件中整型范围为0~65535时,客户端判断输入数据的整型数超限。即输入数据(第三变量值)的校验结果为超限。
或者,当输入数据的字符串长度不满足第二YANG模型文件中规定的字符串长度范围时,服务端判断输入数据的字符串长度超限。例如:当输入数据的字符串长度为20比特(bit)(即第三变量值为20比特),而第二YANG模型文件中规定的字符串长度范围为15比特时,服务端判断输入数据的字符串长度超限。即输入数据(第三变量值)的校验结果为超限。
或者,当输入数据的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,服务端判断输入数据超限。具体的:客户度根据输入数据进行配置,当得到的配置结果不符合第二YANG模型文件中规定的约束when语句或者约束must语句时,客户端判断输入数据超限。
305、当第一变量对应的第一变量值被更新时,客户端接收来自服务端的第四变量值。
步骤305-步骤306为可选步骤。具体的,步骤305与前述步骤204和步骤206类似,此处不作赘述。
306、客户端根据第四变量值生成第三YANG模型文件。
步骤306与前述步骤207一致,此处不作赘述。
本申请实施例提出一种YANG模型文件的管理方法,首先获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;其次获取第一变量对应的第一变量值;再次,根据第一变量值生成第二YANG模型文件,第二YANG模型文件为服务端或者客户端可运行的YANG模型文件。由于YANG模型文件中包括第一变量,通过第一变量表示一个参数的动态取值范围,因此YANG模型文件可以表达一个或多个参数的动态取值范围。通过上述YANG模型文件,客户端可以根据上述参数的实际取值范围动态取值,解决了YANG模型文件中定义的参数取值范围与实际运行环境不匹配的问题,提升了客户端请求服务端并配置下发配置的成功率。此外,当第一变量对应的第一变量值被更新时,服务端可以及时通知客户端变化后的第一变量值,使得客户端可以及时更新YANG模型文件,保证服务端与客户端所使用的YANG模型文件的一致性。
上述主要以方法的角度对本申请实施例提供的方案进行了介绍。可以理解的是,网络装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图4为本申请实施例中的通信装置的硬件结构一个示意图。如图4所示,该通信装置可以包括:
该通信装置包括至少一个处理器401,通信线路407,存储器403以及至少一个通信接口404。
处理器401可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务端IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路407可包括一通路,在上述组件之间传送信息。
通信接口404,使用任何收发器一类的装置,用于与其他装置或通信网络通信,如以太网等。
存储器403可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储装置,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储装置,存储器可以是独立存在,通过通信线路407与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器403用于存储执行本申请方案的计算机执行指令,并由处理器401来控制执行。处理器401用于执行存储器403中存储的计算机执行指令,从而实现本申请上述实施例提供的YANG模型文件的管理方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,通信装置可以包括多个处理器,例如图4中的处理器401和处理器402。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个装置、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,通信装置还可以包括输出装置405和输入装置406。输出装置405和处理器401通信,可以以多种方式来显示信息。输入装置406和处理器401通信,可以以多种方式接收用户的输入。例如,输入装置406可以是鼠标、触摸屏装置或传感装置等。
当该通信装置为终端设备时,该通信装置中,处理器402可以包括一个或多个处理单元,例如:处理器402可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signalprocessor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是通信装置400的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器402中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器402中的存储器为高速缓冲存储器。该存储器可以保存处理器402刚用过或循环使用的指令或数据。如果处理器402需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器402的等待时间,因而提高了系统的效率。
在一些实施例中,处理器402可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I1C)接口,集成电路内置音频(inter-integrated circuitsound,I1S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对通信装置400的结构限定。在本申请另一些实施例中,通信装置400也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块可以通过USB接口接收有线充电器的充电输入。
电源管理模块用于连接电池,充电管理模块与处理器402。电源管理模块接收电池和/或充电管理模块的输入,为处理器402,内部存储器,外部存储器,显示屏,摄像头,和无线通信模块等供电。
通信装置400的无线通信功能可以通过天线1,天线2,移动通信模块,无线通信模块,调制解调处理器以及基带处理器等实现。
在一些可行的实施方式中,通信装置400可以使用无线通信功能和其他设备通信。
天线1和天线2用于发射和接收电磁波信号。通信装置400中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块可以提供应用在通信装置400上的包括1G/3G/4G/5G等无线通信的解决方案。移动通信模块可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块还可以对经调制解调处理器调制后的信号放大,经天线2转为电磁波辐射出去。在一些实施例中,移动通信模块的至少部分功能模块可以被设置于处理器402中。在一些实施例中,移动通信模块的至少部分功能模块可以与处理器402的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器,受话器等)输出声音信号,或通过显示屏显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器402,与移动通信模块或其他功能模块设置在同一个器件中。
通信装置400通过GPU,显示屏,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器402可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展通信装置400的存储能力。外部存储卡通过外部存储器接口与处理器402通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器402通过运行存储在内部存储器的指令,从而执行通信装置400的各种功能应用以及数据处理。内部存储器可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储通信装置400使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
上述的通信装置可以是一个通用装置或者是一个专用装置。在具体实现中,通信装置可以是台式机、便携式电脑、网络服务端、无线终端装置、嵌入式装置或有图4中类似结构的装置。本申请实施例不限定通信装置的类型。该通信装置,既可以是云端的服务端,也可以是终端设备,此处不作限制。
可以理解的是,本申请实施例示意的结构并不构成对通信装置400的具体限定。在本申请另一些实施例中,通信装置400可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请实施例可以根据上述方法示例对通信装置(包括服务端和客户端)进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
下面对本申请中的通信装置进行详细描述,请参阅图5,图5为本申请实施例中通信装置的一种实施例示意图。
一种可能的实现方式中,通信装置500应用于服务端,通信装置500包括:
收发模块501,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发模块501,还用于获取第一变量对应的第一变量值;
处理模块502,用于根据第一变量值和第一语句生成第二语句,第二语句为服务端可运行的YANG模型语句。
在一种可能的实现方式中,处理模块502,具体用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为服务端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,
收发模块501,还用于接收来自客户端的第一请求消息;
收发模块501,还用于第一请求消息获取第一变量对应的第一变量值;
收发模块501,还用于向客户端发送第一响应消息,第一响应消息包括第一变量值。
在一种可能的实现方式中,收发模块501,还用于接收来自客户端的第二请求消息,第二请求消息包括第二变量值;
收发模块501,还用于根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。
在一种可能的实现方式中,收发模块501,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
收发模块501,还用于根据第二请求消息获取第一YANG模型文件。
在一种可能的实现方式中,收发模块501,还用于当第一变量对应的第一变量值被更新时,获取第一变量对应的第一变量值更新后的数值;
收发模块501,还用于向客户端发送更新后的数值。
在一种可能的实现方式中,收发模块501,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
在另一种可能的实现方式中,通信装置500应用于客户端,通信装置500包括:
收发模块501,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发模块501,还用于获取第一变量对应的第一变量值;
处理模块502,用于根据第一变量值和第一语句生成第二语句,第二语句为客户端可运行的YANG模型语句。
在一种可能的实现方式中,处理模块502,还用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为客户端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,收发模块501,还用于向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值;
收发模块501,还用于接收来自服务端的第一响应消息,第一响应消息包括第一变量和第一变量值。
在一种可能的实现方式中,收发模块501,还用于接收输入数据,输入数据包括第三变量值;
处理模块502,还用于根据第二YANG模型文件中的第一变量值和第三变量值获得校验结果。
在一种可能的实现方式中,收发模块501,还用于当第一变量对应的第一变量值发生变化时,接收来自服务端的第二变量值;
处理模块502,还用于根据更新后的数值更新第一语句,生成第三YANG模型文件。
在一种可能的实现方式中,收发模块501,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
本申请实施例还提供了一种通信装置,请参阅图6,图6为本申请实施例提出的一种通信装置示意图。通信装置包括处理器601和收发器602;该处理器601,用于执行上述任一方法实施例的YANG模型文件的管理方法。
一种可能的实现方式中,通信装置600应用于服务端,通信装置600包括:
收发器602,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发器602,还用于获取第一变量对应的第一变量值;
处理器601,用于根据第一变量值和第一语句生成第二语句,第二语句为服务端可运行的YANG模型语句。
在一种可能的实现方式中,处理器601,具体用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为服务端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,
收发器602,还用于接收来自客户端的第一请求消息;
收发器602,还用于第一请求消息获取第一变量对应的第一变量值;
收发器602,还用于向客户端发送第一响应消息,第一响应消息包括第一变量值。
在一种可能的实现方式中,收发器602,还用于接收来自客户端的第二请求消息,第二请求消息包括第二变量值;
收发器602,还用于根据第二YANG模型文件中的第一变量值和第二变量值获得校验结果。
在一种可能的实现方式中,收发器602,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
收发器602,还用于根据第二请求消息获取第一YANG模型文件。
在一种可能的实现方式中,收发器602,还用于当第一变量对应的第一变量值被更新时,获取第一变量对应的第一变量值更新后的数值;
收发器602,还用于向客户端发送更新后的数值。
在一种可能的实现方式中,收发器602,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
在另一种可能的实现方式中,通信装置600应用于客户端,通信装置600包括:
收发器602,用于获取第一YANG模型文件,第一YANG模型文件包括含有第一变量的第一语句;
收发器602,还用于获取第一变量对应的第一变量值;
处理器601,用于根据第一变量值和第一语句生成第二语句,第二语句为客户端可运行的YANG模型语句。
在一种可能的实现方式中,处理器601,还用于根据第一变量值和第一语句,生成第二YANG模型文件,第二YANG模型文件包括第二语句,第二YANG模型文件为客户端可运行的YANG模型文件。
在一种可能的实现方式中,第一语句包括一个或多个子语句。
在一种可能的实现方式中,第一YANG模型文件还包括第三语句,第三语句中复用一个或多个子语句。
在一种可能的实现方式中,子语句为最大实例数max-elements语句,第一变量指示最大实例数;
或者,子语句为最小实例数min-elements语句,第一变量指示最小实例数;
或者,子语句为范围range语句,第一变量指示范围;
或者,子语句为长度length语句,第一变量指示长度;
或者,子语句为默认值default语句,第一变量指示默认值;
或者,子语句为数据之间约束语句,数据之间约束语句包括:约束when语句或者约束must语句,第一变量指示数据之间约束语句对应的约束条件。
在一种可能的实现方式中,一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
在一种可能的实现方式中,收发器602,还用于向服务端发送第一请求消息,第一请求消息用于请求获取第一变量对应的变量值;
收发器602,还用于接收来自服务端的第一响应消息,第一响应消息包括第一变量和第一变量值。
在一种可能的实现方式中,收发器602,还用于接收输入数据,输入数据包括第三变量值;
处理器601,还用于根据第二YANG模型文件中的第一变量值和第三变量值获得校验结果。
在一种可能的实现方式中,收发器602,还用于当第一变量对应的第一变量值发生变化时,接收来自服务端的第二变量值;
处理器601,还用于根据更新后的数值更新第一语句,生成第三YANG模型文件。
在一种可能的实现方式中,收发器602,还用于根据第一变量的标识,获取第一变量对应的第一变量值。
本申请实施例还提供的一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如前述方法实施例所示任一项实现方式。
本申请实施例还提供一种芯片系统,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得芯片执行如前述方法实施例所示任一项实现方式。
本申请实施例还提供一种芯片系统,包括处理器,处理器用于调用并运行计算机程序,使得芯片执行如前述方法实施例所示任一项实现方式。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备执行本申请各个实施例的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、网络装置、计算设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、网络装置、计算设备或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的网络装置、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的一个或多个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。
总之,以上仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (33)
1.一种YANG模型文件的管理方法,其特征在于,包括:
服务端获取第一YANG模型文件,所述第一YANG模型文件包括含有第一变量的第一语句;
所述服务端获取所述第一变量对应的第一变量值;
所述服务端根据所述第一变量值和所述第一语句生成第二语句,所述第二语句为所述服务端可运行的YANG模型语句。
2.根据权利要求1所述的方法,其特征在于,所述服务端根据所述第一变量值和所述第一语句生成所述第二语句,包括:
所述服务端根据所述第一变量值和所述第一语句,生成第二YANG模型文件,所述第二YANG模型文件包括所述第二语句,所述第二YANG模型文件为所述服务端可运行的YANG模型文件。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述第一语句包括一个或多个子语句。
4.根据权利要求3所述的方法,其特征在于,所述一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或约束语句。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
所述服务端接收来自客户端的第一请求消息;
所述服务端根据所述第一请求消息获取所述第一变量对应的所述第一变量值;
所述服务端向所述客户端发送第一响应消息,所述第一响应消息包括所述第一变量值。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
所述服务端接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
所述服务端根据所述第二YANG模型文件中的所述第一变量值和所述第二变量值获得校验结果。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述服务端获取所述第一YANG模型文件,包括:
所述服务端接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
所述服务端根据所述第二请求消息获取所述第一YANG模型文件。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述服务端获取所述第一变量对应的所述第一变量值,包括:
所述服务端根据所述第一变量的标识,获取所述第一变量对应的所述第一变量值。
9.一种YANG模型文件的管理方法,其特征在于,包括:
客户端获取第一YANG模型文件,所述第一YANG模型文件包括含有第一变量的第一语句;
所述客户端获取所述第一变量对应的第一变量值;
所述客户端根据所述第一变量值和所述第一语句生成第二语句,所述第二语句为所述客户端可运行的YANG模型语句。
10.根据权利要求9所述的方法,其特征在于,所述客户端根据所述第一变量值和所述第一语句生成所述第二语句,包括:
所述客户端根据所述第一变量值和所述第一语句,生成第二YANG模型文件,所述第二YANG模型文件包括所述第二语句,所述第二YANG模型文件为所述客户端可运行的YANG模型文件。
11.根据权利要求9-10任一项所述的方法,其特征在于,所述第一语句包括一个或多个子语句。
12.根据权利要求11所述的方法,其特征在于,所述一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或约束语句。
13.根据权利要求9-12中任一项所述的方法,其特征在于,所述客户端获取所述第一变量对应的所述第一变量值,包括:
所述客户端向服务端发送第一请求消息,所述第一请求消息用于请求获取所述第一变量对应的变量值;
所述客户端接收来自所述服务端的第一响应消息,所述第一响应消息包括所述第一变量和所述第一变量值。
14.根据权利要求9-13中任一项所述的方法,其特征在于,所述方法还包括:
所述客户端接收输入数据,所述输入数据包括第三变量值;
所述客户端根据所述第二YANG模型文件中的所述第一变量值和所述第三变量值获得校验结果。
15.根据权利要求9-14中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一变量对应的所述第一变量值发生变化时,所述客户端接收来自所述服务端的第二变量值;
所述客户端根据所述更新后的数值更新所述第一语句,生成第三YANG模型文件。
16.一种通信装置,其特征在于,所述通信装置应用于服务端,包括:
收发模块,用于获取第一YANG模型文件,所述第一YANG模型文件包括含有第一变量的第一语句;
所述收发模块,还用于获取所述第一变量对应的第一变量值;
处理模块,用于根据所述第一变量值和所述第一语句生成第二语句,所述第二语句为所述服务端可运行的YANG模型语句。
17.根据权利要求16所述的通信装置,其特征在于,
所述处理模块,具体用于根据所述第一变量值和所述第一语句,生成第二YANG模型文件,所述第二YANG模型文件包括所述第二语句,所述第二YANG模型文件为所述服务端可运行的YANG模型文件。
18.根据权利要求16-17中任一项所述的通信装置,其特征在于,所述第一语句包括一个或多个子语句。
19.根据权利要求18所述的通信装置,其特征在于,所述一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
20.根据权利要求16-19中任一项所述的通信装置,其特征在于,
所述收发模块,还用于接收来自客户端的第一请求消息;
所述收发模块,还用于所述第一请求消息获取所述第一变量对应的所述第一变量值;
所述收发模块,还用于向所述客户端发送第一响应消息,所述第一响应消息包括所述第一变量值。
21.根据权利要求16-20中任一项所述的通信装置,其特征在于,
所述收发模块,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
所述收发模块,还用于根据所述第二YANG模型文件中的所述第一变量值和所述第二变量值获得校验结果。
22.根据权利要求16-20中任一项所述的通信装置,其特征在于,
所述收发模块,还用于接收来自客户端的第二请求消息,所述第二请求消息包括第二变量值;
所述收发模块,还用于根据所述第二请求消息获取所述第一YANG模型文件。
23.根据权利要求16-22中任一项所述的通信装置,其特征在于,
所述收发模块,还用于根据所述第一变量的标识,获取所述第一变量对应的所述第一变量值。
24.一种通信装置,其特征在于,所述通信装置应用于客户端,包括:
收发模块,用于获取第一YANG模型文件,所述第一YANG模型文件包括含有第一变量的第一语句;
所述收发模块,还用于获取所述第一变量对应的第一变量值;
处理模块,用于根据所述第一变量值和所述第一语句生成第二语句,所述第二语句为所述客户端可运行的YANG模型语句。
25.根据权利要求24所述的通信装置,其特征在于,
所述处理模块,还用于根据所述第一变量值和所述第一语句,生成第二YANG模型文件,所述第二YANG模型文件包括所述第二语句,所述第二YANG模型文件为所述客户端可运行的YANG模型文件。
26.根据权利要求24-25任一项所述的通信装置,其特征在于,所述第一语句包括一个或多个子语句。
27.根据权利要求26所述的通信装置,其特征在于,所述一个或多个子语句的语句类型包括以下一种或多种:最大实例数max-elements语句、最小实例数min-elements、范围range语句、长度length语句、默认值default语句或数据之间约束语句。
28.根据权利要求24-27中任一项所述的通信装置,其特征在于,
所述收发模块,还用于向服务端发送第一请求消息,所述第一请求消息用于请求获取所述第一变量对应的变量值;
所述收发模块,还用于接收来自所述服务端的第一响应消息,所述第一响应消息包括所述第一变量和所述第一变量值。
29.根据权利要求24-28中任一项所述的通信装置,其特征在于,
所述收发模块,还用于接收输入数据,所述输入数据包括第三变量值;
所述处理模块,还用于根据所述第二YANG模型文件中的所述第一变量值和所述第三变量值获得校验结果。
30.根据权利要求24-29中任一项所述的通信装置,其特征在于,所述方法还包括:
所述收发模块,还用于当所述第一变量对应的所述第一变量值发生变化时,接收来自所述服务端的第二变量值;
所述处理模块,还用于根据所述更新后的数值更新所述第一语句,生成第三YANG模型文件。
31.一种系统,其特征在于,所述系统包括服务端和客户端,所述服务端用于执行如权利要求1-8中任一项所述的方法,所述客户端用于执行如权利要求9-15中任一项所述的方法。
32.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-15中任一所述的方法。
33.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时,实现如权利要求权利要求1-15中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433828.2A CN116185947A (zh) | 2021-11-29 | 2021-11-29 | 一种yang模型文件的管理方法、装置及系统 |
PCT/CN2022/131314 WO2023093544A1 (zh) | 2021-11-29 | 2022-11-11 | 一种yang模型文件的管理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433828.2A CN116185947A (zh) | 2021-11-29 | 2021-11-29 | 一种yang模型文件的管理方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185947A true CN116185947A (zh) | 2023-05-30 |
Family
ID=86449517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111433828.2A Pending CN116185947A (zh) | 2021-11-29 | 2021-11-29 | 一种yang模型文件的管理方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116185947A (zh) |
WO (1) | WO2023093544A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9900209B2 (en) * | 2015-09-14 | 2018-02-20 | Cisco Technology, Inc. | Techniques for YANG model version control validation |
CN107302443B (zh) * | 2016-04-15 | 2020-10-16 | 华为技术有限公司 | 基于网络配置协议的设备配置方法及装置 |
CN111327446B (zh) * | 2018-12-17 | 2022-02-25 | 北京华为数字技术有限公司 | 配置数据处理方法、软件定义网络设备、系统及存储介质 |
CN113285816B (zh) * | 2020-02-19 | 2022-10-28 | 华为技术有限公司 | 一种基于键值配置的控制请求发送方法、装置和系统 |
-
2021
- 2021-11-29 CN CN202111433828.2A patent/CN116185947A/zh active Pending
-
2022
- 2022-11-11 WO PCT/CN2022/131314 patent/WO2023093544A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023093544A1 (zh) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100807651B1 (ko) | 컴포넌트 기반의 무선 애플리케이션을 생성하여 통신하는시스템 및 방법 | |
US8631414B2 (en) | Distributed resource management in a portable computing device | |
EP3672314B1 (en) | Network management method, device and system | |
US8296774B2 (en) | Service-based endpoint discovery for client-side load balancing | |
KR20140014273A (ko) | 휴대용 컴퓨팅 디바이스의 스위치 패브릭들 내에서 그리고 스위치 패브릭들에 걸쳐 마스터-슬레이브 쌍들을 동적으로 생성하고 서비스하는 방법 및 시스템 | |
CN109587272B (zh) | 一种微服务的优化方法、装置和电子设备 | |
CN108279882B (zh) | 框架生成方法、装置、设备及计算机可读介质 | |
WO2023029961A1 (zh) | 任务执行方法、系统、电子设备及计算机存储介质 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN107092507A (zh) | 应用程序的换肤方法、装置及系统 | |
CN117194068A (zh) | 一种跨进程数据传输方法、系统、设备及存储介质 | |
CN116185947A (zh) | 一种yang模型文件的管理方法、装置及系统 | |
CN115361285B (zh) | 实现离在线业务混合部署的方法、装置、设备及介质 | |
CN114884956B (zh) | 多集群架构的实现方法、装置及多集群架构系统 | |
CN115811481A (zh) | 一种交互服务测试方法、装置、计算机设备及存储介质 | |
WO2016095377A1 (zh) | 一种瘦客户端的图像显示方法、装置及电子设备 | |
CN114051029B (zh) | 授权方法、授权装置、电子设备和存储介质 | |
CN115442913A (zh) | 协议接入方法、通信方法、开发设备、网关及存储介质 | |
CN116847312A (zh) | 数据处理方法、装置、通信系统、电子设备及存储介质 | |
CN115373865A (zh) | 一种并发线程管理方法、装置、电子设备和存储介质 | |
Kelényi et al. | Supporting energy-efficient mobile application development with model-driven code generation | |
US9021157B2 (en) | Reliable socket transfer based on initializing and re-initializing a communication link and retaining a connected state | |
WO2023246756A1 (zh) | 算力服务方法、装置、终端及核心网设备 | |
CN110198266B (zh) | 实时数据流处理方法及系统 | |
CN115514574A (zh) | 一种应用程序联网行为控制方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |