1
Weijing [email protected]
Keith [email protected]
XML Network ManagementInterface
(draft-weijing-netconf-interface-01.txt)
NETCONF InterimSept 8-10, 2003
2
Operating and Data Model XML Schema:Standard
CLIProprietary
Interface Components:
Protocol Operations: Message XML Schema
<get-request/get-response>,<perform-request/perform-response>,
<abort-request/abort-response>,<notif/notif-confirm>
Capabilities XML Schema
Protocol Transport:SOAP, WDSL, HTTP, BEEP, SSH
Operating XML Schema
More general purpose
More specific
3
Processing Flow:
XML Schema Validato
r
XPath Parser
Protocol Message
Protocol Message
XML Schema
Operating/Data Model
XML Schema
Device Infoset
XML Document
Application
w/ XPath
w/o XPath
Error Condition
XSL Process
or
Web-based Application
XSL Template
Note: In additional to structured document (text), XML provides rich set of tools to easy application and presentation development.
4
XML Schemas
Operations.XSDType:Action (nop/create/delete…)Category (all/config/state)
Element:get-request anyget-response anyperform-request anyperform-response anyabort-requestabort-response anynotif anynotif-confirm any
Capabilities.XSDElement:capabilities notification yes,no model-schema URLs notif-schema URLs
Operating.XSDElement:device candidate-config source locked-by any startup-config source locked-by any running-config source locked-by any named-config source content
5
Protocol Operations: get
<get-request messageId="message id" category="all/config/state" subordinate="all/direct"/> ... any</get-request>
<get-response messageId="message id"> <error> <protocol-error code=""> ... any </protocol-error> <application-error code=""> ... any </application-error> </error> ... any</get-response>
6
Protocol Operations: get config
<get-request messageId= "105" category="config" subordinate="all/direct" xmlns=operating.xsd/> <device> <running/startup/candidate xmlns=example.xsd> any </running/startup/candidate> </device></get-request>
<rpc message-id="105"> <get-config> <source> <running/startup/candidate> </source> <config xmlns=example.xsd> any </config> <format>text/xml</format> </get-config></rpc>
7
Protocol Operations: get state
<get-request messageId= "105" category="state/all" subordinate="all/direct" xmlns=operating.xsd/> <device> <running/startup/candidate xmlns=example.xsd> any </running/startup/candidate> </device></get-request>
<rpc message-id="105"> <get-state> <state xmlns=example.xsd> any </state> <format>text/xml</format> </get-state></rpc>
8
Protocol Operations: perform
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/> ... any</perform-request>
<perform-response messageId="message id"> <error> <protocol-error code=""> ... any </protocol-error> <application-error code=""> ... any </application-error> </error> ... any</perform-response>
9
Protocol Operations: perform (edit config)
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <running/startup/candidate xmlns=example.xsd> any </running/startup/candidate> </device></perform-request>
<rpc message-id="107"> <edit-config> <target> <running/startup/candidate> </target> <test-option> <test-then-set/set> </test-option> <error-option> <stop-on-error/ignore-error> <config xmlns=example.xsd any </config> </edit-config></rpc>
10
Protocol Operations: abort
<abort-request messageId="message id of targeted request"/>
<abort-response messageId="message id of targeted request"> <error> <protocol-error code=""> ... any </protocol-error> <application-error code=""> ... any </application-error> </error> ... any</abort-response>
<rpc-abort message-id="102">
<rpc-abort-reply message-id="102">
11
Protocol Operations: notification
<notif messageId="message id"> ... any</notif>
<notif-confirm messageId="message id"> <error> <protocol-error code=""> ... any </protocol-error> <application-error code=""> ... any </application-error> </error> ... any</notif-confirm>
<rpc message-id="122"> <open-notifications> <format>rfc3195</format> <matching>match-expression</matching> </open-notifications></rpc>
<rpc message-id="123"> <close-notifications/></rpc>
12
Protocol Operations: copy config
<rpc message-id="108"> <copy-config> <source> <running/> </source> <target><url>ftp://example.com/configs/testbed-dec10.txt</url> </target> <format>text</format> </copy-config></rpc>
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <named-config action="copy"name="ftp://example.com/configs/testbed-dec10.txt"> <source> running </source> </named-config> </device></perform-request>
13
Protocol Operations: delete config
<rpc message-id="108"> <delete-config> <target> <startup/> </target> </delete-config></rpc>
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <startup action="delete"> </startup> </device></perform-request>
14
Protocol Operations: lock, unlock
<rpc message-id="120"> <lock> <target> <running/> </target> </lock></rpc>
<rpc message-id="121"> <unlock> <target> <running/> </target> </unlock></rpc>
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <running action="lock/unlock"> </running> </device></perform-request>
15
Protocol Operations: commit, discard-change
<rpc message-id="113"> <commit/></rpc>
<rpc message-id="113"> <discard-change/></rpc>
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <candidate action="commit/discard-change"> </candidate> </device></perform-request>
16
Protocol Operations: validate
<rpc message-id="118"> <validate> <candidate/> </validate></rpc>
<perform-request messageId="message id" transaction="stop-on-error/ continue-on-error/ rollback-on-error"/ xmlns=operating.xsd> <device> <candidate action="validate"> </candidate> </device></perform-request>
17
Protocol Operations: rpc vs. request/response
<rpc> <get-config> <edit-config> <copy-config> <delete-config> <get-state> <kill-session>
<lock>, <unlock> <commit>, <discard-change> <validate>
<rpc-reply>
<rpc-abort>
<rpc-abort-reply>
<rpc-error>
<rpc-progress>
<get-request category="config"><perform-request><perform-request> <xxx-config action=copy><perform-request> <xxx-config action=delete><get-request category="state">no kill-session
<perform-request> <xxx-config action=lock, unlock><perform-request> <xxx-config action=commit, discard-change><perform-request> <xxx-config action=validate>
<get-response>, <perform-response><abort-request><abort-response><error> code in the response
no progress
18
This draft vs. WG I-D
• General vs. specific– No assumption about the device except it must be IP-capable. – Vs. Route-like device
• Explicit vs. implicit– Option is explicitly stated by XML schema.
• Operating.XSD
– Vs. option is implicitly inferred from URL.• <capabilities>
<capability>http://ietf.org/xmlconf/1.0/base</capability> <capability>http://ietf.org/xmlconf/1.0/base#lock</capability> <capability>http:/example.net/router/2.3/core#cool-feature</capability> </capabilities>
• Formal vs. informal– Protocol message can be validated by XML schema.– Vs. whether a device supports an option cannot be checked by XML schema.
It must be checked by upper layer application through capabilities URL inferring.