启动 Junos XML 协议会话
每个 Junos XML 协议会话都以握手开始,其中 Junos XML 协议服务器和客户端应用程序指定它们使用的 XML 版本和 Junos XML 管理协议的版本。每一方都会解析另一方发出的版本信息,并使用这些信息来确定它们是否可以成功通信。具体来说,客户端应用会发出 <?xml?>
PI 和打开 <junoscript>
标记。以下部分介绍如何启动 Junos XML 协议会话:
发出 <?xml?> PI
客户端应用从发出 <?xml?>
PI 开始。
在以下示例中(以及客户端应用程序发出的标记元素本文档中的所有示例中),使用粗体字体突出显示文本中讨论的标记序列部分。
<?xml version="version" encoding="encoding"?>
属性如下所示。有关当前版本的 Junos XML 管理协议中可接受的属性列表,请参阅 验证软件兼容性。
版本 — 客户端应用程序发出的标记元素使用其符合的 XML 版本
编码 — 客户端应用程序使用并可以理解的标准化字符集
在以下示例中的客户端应用 <?xml?>
PI 中, version="1.0"
属性指示应用程序发出符合 XML 1.0 规范的标记元素。属性 encoding="us-ascii"
表示客户端应用程序使用的是美国国家标准协会 (ANSI) 标准化的 7 位 ASCII 字符集。有关 ANSI 标准的更多信息,请参阅 http://www.ansi.org/ 。
<?xml version="1.0" encoding="us-ascii"?>
如果应用程序在发出打开<junoscript>
标记之前未能发出 <?xml?>
PI,Junos XML 协议服务器会发出一条错误消息,并立即关闭会话和连接。
发出打开<junoscript>标记
然后,客户端应用程序会发出其打开 <junoscript>
标记,其语法如下:
<junoscript version="version" hostname="hostname" junos:key="key" release="release-code">
属性如下所示。有关当前版本的 Junos XML 管理协议中可接受的属性列表,请参阅 验证软件兼容性。
version |
(必填)指定客户端应用程序使用的 Junos XML 管理协议的版本。 |
hostname |
(可选)命名运行客户端应用程序的计算机。仅在诊断问题时才会使用这些信息。Junos XML 协议不支持建立可信主机关系或以其他方式根据客户端主机名更改 Junos XML 协议服务器行为。 |
junos:key |
(可选)请求 Junos XML 协议服务器指示子配置元素是否是其父元素的标识符。唯一可接受的值是“key”。有关更多信息,请参阅 使用 Junos XML 协议请求配置元素的标识符指示器。 |
release |
(可选)标识设计了客户端应用程序的 Junos OS 版本(并按暗示,为 Junos XML API)。此属性的值表示,客户端应用程序可与支持该版本的 Junos XML API 的 Junos XML 协议服务器成功互操作。换句话说,它表示客户端应用程序会从该 API 发出请求标记元素,并知道如何解析该 API 中的响应标记元素。如果应用程序不包含此属性,Junos XML 协议服务器会发出其支持的 Junos XML API 中的标记元素。 对于属性的值 |
在以下示例中的客户端应用程序的打开 <junoscript>
标记中 version="1.0"
,属性指示其使用的是 Junos XML 协议 1.0 版。属性 hostname="client1"
指示客户端应用正在运行名为 client1 的机器上。属性 release="20.4R1"
表示交换机、路由器或安全设备正在运行 Junos OS 20.4 版的初始版本。
<junoscript version="1.0" hostname="client1" release="20.4R1">
如果应用程序在发出打开<junoscript>
标记之前未发出 <?xml?>
PI,Junos XML 协议服务器将发出类似以下内容的错误消息,并立即关闭会话和连接:
<rpc-reply> <xnm:error xmlns="http://xml.juniper.net/xnm/1.1/xnm" \ xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"> <message> communication error while exchanging credentials </message> </xnm:error> </rpc-reply> <!-- session end at YYYY-MM-DD hh:mm:ss TZ --> </junoscript>
有关该标记的更多信息 <xnm:error>
,请参阅 在 Junos XML 协议会话中处理错误或警告。
解析 Junos XML 协议服务器的 <?xml?> PI
Junos XML 协议会话开始时,Junos XML 协议服务器将 <?xml?>
发出 PI 和打开 <junoscript>
标记。
PI 的 <?xml?>
语法如下所示:
<?xml version="version" encoding="encoding"?>
属性如下所示。有关当前版本的 Junos XML 管理协议中可接受的属性列表,请参阅 验证软件兼容性。
version | Junos XML 协议服务器发出的标记元素使用的 XML 版本 |
encoding | Junos XML 协议服务器使用并可以理解的标准化字符集 |
在以下示例中的 Junos XML 协议服务器 <?xml?>
PI 中 version="1.0"
,属性指示服务器发出符合 XML 1.0 规范的标记元素。属性 encoding="us-ascii"
表示服务器正在使用由 ANSI 标准化的 7 位 ASCII 字符集。有关 ANSI 标准的更多信息,请参阅 http://www.ansi.org/ 。
<?xml version="1.0" encoding="us-ascii"?>
解析 Junos XML 协议服务器的开放<junoscript>标记
发出 <?xml?>
PI 后,服务器随后发出其打开 <junoscript>
标记,该标记的形式如下(该标记仅显示为多行,以便于清晰阅读):
<junoscript xmlns="namespace-URL" xmlns:junos="namespace-URL" \ schemaLocation="namespace-URL" os="JUNOS" \ release="release-code" hostname="hostname" version="version">
属性如下所示:
hostname | 运行 Junos XML 协议服务器的设备名称。 |
os | 运行 Junos XML 协议服务器的设备的操作系统。值始终为 JUNOS。 |
release | Junos XML 协议服务器派生的 Junos OS 版本的标识符,该标识符旨在理解。它可能正在使用运行 Junos XML 协议服务器的设备上。属性的值 |
schemaLocation | 用于 Junos OS 配置层次结构的 XML 模式语言表示的 XML 命名空间。 |
version | Junos XML 协议服务器使用的 Junos XML 管理协议版本。 |
xmlns | 由 |
xmlns:junos | 由名称上具有前缀的标记元素括起来 |
在以下 Junos XML 协议服务器的开放 <junoscript>
标记示例中, version
属性表示服务器正在使用 Junos XML 协议 1.0 版,属性 hostname
表示路由器的名称是大设备。 os
和 release
属性表示设备正在运行 Junos OS 20.4 版 的初始版本。属性 xmlns
指示 Junos XML 标记元素的默认命名空间为 http://xml.juniper.net/xnm/1.1/xnm
。属性 xmlns:junos
指示具有前缀的标记元素的 junos:
命名空间为 http://xml.juniper.net/junos/20.4R1/junos
。该标记显示在多行上,只是为了清晰易读。
<junoscript xmlns="http://xml.juniper.net/xnm/1.1/xnm"\ xmlns:junos="http://xml.juniper.net/junos/20.4R1/junos" \ schemaLocation="http://xml.juniper.net/junos/20.4R1/junos" os="JUNOS" \ release="20.4R1.8" hostname="big-device" version="1.0">
验证软件兼容性
<?xml?>
通过交换和<junoscript>
元素,客户端应用程序和 Junos XML 协议服务器可以确定它们是否正在运行 Junos XML 协议会话期间使用的不同软件版本。不同版本有时不兼容,根据 Junos XML 协议约定,运行更高版本软件的一方将决定如何处理任何不兼容性。为了获得完全自动化的性能,可在客户端应用程序中包括一些代码,用于确定其软件版本是否晚于 Junos XML 协议服务器的版本。决定当应用程序的版本更新时,以下哪个选项适合,并实施相应的响应:
忽略 Junos 版本中的差异,并且不改变客户端应用程序的行为以适应 Junos XML 协议服务器。Junos 版本的不同不一定会使服务器和客户端不兼容,因此这通常是一种有效的方法。
将标准行为修改为与 Junos XML 协议服务器兼容。例如,如果客户端应用正在运行更高版本的 Junos OS,则它可以选择仅发出标记元素,这些标记元素表示 Junos XML 协议服务器版本的 Junos OS 中可用的软件功能。
结束 Junos XML 协议会话并终止连接。如果您决定不切实际地适应 Junos XML 协议服务器的软件版本,则这样做是适当的。有关说明,请参阅 结束 Junos XML 协议会话和关闭连接。
表 1 指定了在 Junos XML 管理协议 1.0 版中执行 Junos XML 协议会话初始化期间用于传达版本信息的 PI 或打开标记和属性。
软件和版本 |
PI 或标记 |
属性 |
---|---|---|
XML 1.0 |
|
|
ANSI 标准化 7 位 ASCII 字符集 |
|
|
Junos XML 协议 1.0 |
|
|
Junos OS 版本 |
|
|