Netconf Working Group                                     Weijing Chen 
Internet Draft                                             Keith Allen 
Expiration Date: December 2003                                SBC Labs 
                                                                       
                                                             June 2003 
 
 
 
                    XML Network Management Interface 
                   draft-weijing-netconf-interface-00 
    
Status of this Memo 
    
   This document is an Internet-Draft and is in full conformance with 
   all provisions of Section 10 of [RFC2026]. 
    
   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups. Note that 
   other groups may also distribute working documents as Internet-
   Drafts. 
    
   Internet-Drafts are draft documents valid for a maximum of six 
   months and may be updated, replaced, or obsoleted by other documents 
   at any time. It is inappropriate to use Internet-Drafts as reference 
   material or to cite them other than as "work in progress." 
    
   The list of current Internet-Drafts can be accessed at 
   http://www.ietf.org/ietf/1id-abstracts.txt. 
    
   The list of Internet-Draft Shadow Directories can be accessed at 
   http://www.ietf.org/shadow.html. 
    
Abstract 
    
   This document describes XML network management interface between 
   network managed system and network managing system.  The XML network 
   management interface is intended for use in diverse network 
   environment where transport and data model requirements vary 
   greatly.  It is unlikely that a single transport and data model 
   specification will meet the needs of all anticipated service 
   operators.  Therefore, the XML network management interface is 
   partitioned into the layered components. 
    
 
Table of Contents 
 
   1.   Introduction.................................................2 
   2.   Protocol Operations..........................................3 
   2.1.   Operation Descriptions......................................4 
   2.1.1.  Perform Operation........................................4 
   2.1.2.  Abort Operation..........................................9 
 
 
Chen and Allen           Expire December 2003                 [Page 1] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   2.1.3.  Notification............................................10 
   2.2.   Operations XML Schema......................................11 
   2.3.   Capabilities XML Schema....................................14 
   3.   Protocol Transport Binding..................................17 
   3.1.   Abstract Binding WSDL......................................17 
   3.2.   SOAP/HTTP Binding WSDL.....................................18 
   3.3.   BEEP WSDL Binding..........................................20 
   3.4.   SSH WSDL Binding...........................................20 
   4.   A Data Model Schema.........................................20 
   5.   Security Consideration......................................22 
   6.   References..................................................22 
   7.   Authors' Addresses..........................................23 
    
 
1.   Introduction 
 
   This document describes XML network management interface between 
   network managed system and network managing system.  The XML network 
   management interface is intended for use in diverse network 
   environment where transport and data model requirements vary 
   greatly.  It is unlikely that a single transport and data model 
   specification will meet the needs of all anticipated service 
   operators.  Therefore, the XML network management interface is 
   partitioned into the following layered components. 
    
    
   +---------------------------------------------+ 
   |  Data Model XML Schema:                     | 
   |    Standard                                 | 
   |    CLI                +---------------------+ 
   |    Proprietary        |  Capabilities       | 
   |                       |  XML Schema         | 
   +-----------------------+---------------------+ 
   |  Protocol Operations: Operation XML Schema  | 
   |    <perform-request/perform-response>       | 
   |    <abort-request/abort-response>           | 
   |    <notif/notif-confirm>                    | 
   +---------------------------------------------+ 
   |  Protocol Transport: Abstract WSDL          | 
   |                                             | 
   +---------------------------------------------+ 
   |  Protocol Transport: Concrete WSDL          | 
   |    BEEP, SOAP/HTTP, SSH                     | 
   +---------------------------------------------+ 
    
    
   The protocol transport is divided into two components: abstract WSDL 
   and concrete WSDL.  WSDL (Web Service Description Language) is a 
   formal specification language for XML-based Web service.  Abstract 
 
 
Chen and Allen           Expire December 2003                 [Page 2] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   WSDL describes the message interaction such as request and response.  
   Concrete WSDL describes the actual transport protocols mapping.  
    
   The protocol operations are specified in XML schema, which describes 
   the operations message construct and is referred by transport WDSL. 
    
   The capabilities of optional function are described in capabilities 
   XML schema.  It allows peers to exchange the actually functionality 
   implemented in other end. 
    
   The management data models are described in XML schema too. 
    
   The dividing of interface allows the formal verification of 
   interface message against interface specification using available 
   general purpose XML toolkits as the following: 
    
    
              Protocol     Data 
              Operation    Model                    XML 
              Schema       Schema                   Instance 
                 \           /                      Dataset 
                  \         /                        /    \ 
                   \       /                        /      \ 
                +---+-----+--+               +-----+--+     \ 
   Interface    | XML Schema |    w/ XPath   | XPath  |      \ 
   ------------>| Validator  |-----+-------->| Parser |--->Application 
   Message      +-----+------+     |         +-------++ 
                      |            |                 | 
                      |            |     w/o XPath   | 
                      |            +-----------------+---->Application 
                      |                              |          | 
       Error <--------+------------------------------+----------+ 
    
    
   The interface XML message is validated against the protocol 
   operation XML schema and specific data model XML schema using 
   general purpose XML schema validator.  If systems supports XPath and 
   the interface XML message contains XPath element, the validated XML 
   message is parsed and validated against live XML instances dataset 
   in the systems using XPath parser.  Thereafter the processed XML 
   message is passed onto the management application for further 
   processing. 
    
    
2.   Protocol Operations 
   The protocol operations consist of three basic operations:  perform, 
   abort, and notification.  Each operation has request and response 
   message correlated through unique message id. 
    
 
 
Chen and Allen           Expire December 2003                 [Page 3] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
2.1. Operation Descriptions 
    
2.1.1.    Perform Operation 
   <perform-request messageId="message id" 
                    operation="get/create/modify/delete" 
                    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> 
    
   Perform operation is the primary interaction message between the 
   managed system and managing system. The managing system (e.g. NMS) 
   sends a perform-request message to the managed system and receives a 
   perform-response message from the managed system. 
    
   A perform-request message has a unique message id, operation 
   attribute, and transaction attribute.  The transaction attribute 
   describes the transaction features as one of the followings: stop on 
   error, continue on error, or rollback-on-error. 
    
   The operation attribute describes the actual operation request as 
   one of the following operations: get, create, modify, or delete.  
   The further description of each operation is depended on the data 
   model.  Recommendation is that one attribute named "action" in the 
   targeted element should specify the finer-grain action (attribute-
   as-action).  The protocol operation XML schema has defined four 
   corresponding "action" attribute types: GetType, CreateType, 
   ModifyType, and DeleteType.  The data model XML schema could further 
   extend or restrict the permitted value of these types through 
   attribute type definition mechanism.  For get operation, the 
   "action" attribute value in a data model should be type of GetType.  
   For create operation, the "action" attribute value in a data model 
   should be type of CreateType.  For modify operation, the "action" 
   attribute value in a data model should type of ModifyType.  For 
   delete operation, the "action" attribute value in a data model 
   should be type of DeleteType. 
    
 
 
Chen and Allen           Expire December 2003                 [Page 4] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   A perform-response message with message id is correlated back to 
   originated perform-request message.   Again, attribute-as-operation 
   is recommended for the perform-response message construct.  The 
   "action" attribute value must be the type of NOPType XML attribute 
   type, which should be the default value in the data model schema. 
    
   The attribute-as-action makes operation behaviors belonging in the 
   data model, not in the protocol operation layer.  It is an object-
   oriented approach.  The object reference is identified by XML 
   element tree or XPath (if supported) in the message but the 
   operation behaviors that may be performed on that object are 
   determined by the objectÆs definition (i.e. data model XML schema). 
    
   The child element of perform-request and perform-response message is 
   defined as <xsd:any/> in the operation XML schema.  The <any> 
   element enables the data model designers to create interface message 
   containing elements beyond what was specified by the operation XML 
   schema.  It empowers the model designers with the ability to define 
   what data models make sense to them.  The validation of the whole 
   interface message could be done by a general-purpose XML validator 
   with operation XML schema and data model XML schema. 
    
   The following example retrieves a XML snippet of configuration data.  
   The operation XML schema is defined in the namespace 
   "http://www.ietf.org/mops".  The data model XML schema is defined in 
   the namespace "http://example.com/schema".  The attribute "action" 
   is closely associated with targeted element and specified by data 
   model instead of operation model, which makes interface flexible and 
   extensible. 
   <perform-request messageId="09233523-567b" 
                    operation="get" 
                    transaction="continue-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:example="http://example.com/schema"> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface action="get-all"> 
             <address/> 
             <adminStatus>"up"</adminStaus> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/schema"> 
     <error> 
 
 
Chen and Allen           Expire December 2003                 [Page 5] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface name="Ethernet1/5"> 
             <address>"192.116.67.5"</address> 
             <adminStatus>"up"</adminStatus> 
           </example:interface> 
           <example:interface name="Ethernet2/2"> 
             <address>"135.104.57.3"</address> 
             <adminStatus>"up"</adminStatus> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </perform-response> 
    
   The following example retrieves the whole running configuration, 
   which could be loaded back to device later to restore the device 
   configuration.  Note that the attribute "action" has a value of 
   "get-readwrite", which instruct the device not to retrieve the read-
   only element(s) since they are not configurable. 
   <perform-request messageId="09233523-567b" 
                    operation="get" 
                    transaction="continue-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:example="http://example.com/schema"> 
     <example:running-config action="get-readwrite" name="active"> 
     </example:running-config> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/schema"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:running-config name="active"> 
       configuration data goes hereà 
     </example:running-config> 
   </perform-response> 
    
   The following example retrieves a XML snippet of device performance 
   information. 
   <perform-request messageId="09233523-567b" 
                    operation="get" 
                    xmlns="http://www.ietf.org/mops" 
 
 
Chen and Allen           Expire December 2003                 [Page 6] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
                    xmlns:example="http://example.com/schema"> 
     <example:running-config name="active"> 
       <example:interface action="get-readonly" name="Ethernet0/1"> 
         <example:statistics/>  
       </example:interface> 
     </example:running-config> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/schema"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:running-config name="active"> 
       <example:interface name="Ethernet0/1"> 
         <example:statistics> 
           <inPackets>9456823</inPackets> 
           <inOctets>1228484566</inOctets> 
           <inErrors>4326</inErrors> 
           <outPackets>4821050</outPackets> 
           <outOctets>634712154</outOctets> 
           <outErrors>2096</outErrors> 
         <example:statistics>  
       </example:interface> 
     </example:running-config> 
   </perform-response> 
    
   The following example only modifies the "hello-interval". 
   <perform-request messageId="09233523-567b" 
                    operation="modify" 
                    transaction="continue-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:example="http://example.com/schema"> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface action="modify-replace" 
                              name="Ethernet1/5"> 
             <hello-interval>10</hello-interval> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/schema"> 
 
 
Chen and Allen           Expire December 2003                 [Page 7] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface name="Ethernet1/5"> 
             <hello-interval>10</hello-interval> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </perform-response> 
    
   The following example creates the opsf area 0 with specified 
   interface and "hello-interval". 
   <perform-request messageId="09233523-567b" 
                    operation="create" 
                    transaction="rollback-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:example="http://example.com/schema"> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area action="create-all" name="area 0"> 
           <example:interface name="Ethernet1/5"> 
             <hello-interval>10</hello-interval> 
           </example:interface> 
         </example:area> 
        </example:ospf> 
     </example:running-config> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/schema"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface name="Ethernet1/5"> 
             <hello-interval>10</hello-interval> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </perform-response> 
 
 
Chen and Allen           Expire December 2003                 [Page 8] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
    
   The following example modifies the configuration through non-XML 
   content (i.e. plain text).  Note that the attribute "action" has a 
   value of "cli", which is specific to this data model 
   "http://example.com/cli".  
   <perform-request messageId="09233523-567b" 
                    operation="modify" 
                    transaction="stop-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:example="http://example.com/cli"> 
     <example:cli xmlns="http://example.com/cli" action="modify-cli"> 
       enable 
       config terminal 
       ip vrf v7:yellow-s 
       rd 64000:10004 
       route-target export 64000:5003 
       route-target import 64000:5002 
       maximum routes 500 80 
     </example:cli> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:example="http://example.com/cli"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <example:cli xmlns="http://example.com/cli"> 
     </example:cli> 
   </perform-response> 
    
    
2.1.2.    Abort Operation 
    
   <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> 
    
 
 
Chen and Allen           Expire December 2003                 [Page 9] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   Abort operation pre-maturely terminates a previous issues perform-
   request message identified by the message id.  For abort operation 
   to be effective, abort-request message should be sent through 
   separate transport channel from perform-request message.  Otherwise 
   abort-request message may be queued behind the intended perform-
   request message in the same channel. 
    
   The following example aborts a previous perform-request message and 
   receives a failure response. 
   <abort-request messageId="09233523-567b" 
                  xmlns="http://www.ietf.org/mops"/> 
    
   <abort-response messageId="09233523-567b"> 
                   xmlns="http://www.ietf.org/mops"/> 
     <error> 
       <protocol-error code="operationFailure"/> 
       <application-error code="noError"/> 
     </error> 
   </abort-response> 
    
    
2.1.3.    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> 
    
   Notification operation provides a mechanism for managed system 
   sending asynchronous notification to managing system.  Ideally, the 
   transport channel for notification message should be separated from 
   normal interface message, i.e. perform-request and perform-response. 
    
   The following example shows a managed system sending a XML-based 
   syslog alarm to managing system.  The managing system sends a 
   confirmation back to managed system. 
   <notif messageId="09233523-567b" 
          xmlns="http://www.ietf.org/mops" 
          xmlns:example="http://example.com/schema" 
 
 
Chen and Allen           Expire December 2003                [Page 10] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
          xmlns:syslog="http://www.ietf.org/mops/syslog"> 
     <example:running-config name="active"> 
       <example:ospf name="process 1"> 
         <example:area name="area 0"> 
           <example:interface name="Ethernet1/5"> 
             <example:notification> 
               <syslog:log> 
                 <syslog:date>Sep 26, 2002</syslog:date> 
                 <syslog:time>16:32:02.848</syslog:time> 
                 <syslog:facility>OSPF</syslog:facility> 
                 <syslog:subfacility>config</syslog:subfacility> 
                 <syslog:severity>5</syslog:severity> 
                 <syslog:description> 
                   hello interval changed 
                 </syslog:description> 
               </syslog:log> 
             </example:notification> 
           </example:interface> 
         </example:area> 
       </example:ospf> 
     </example:running-config> 
   </notif> 
    
   <notif-confirm messageId="09233523-567b" 
                  xmlns="http://www.ietf.org/mops" 
                  xmlns:example="http://example.com/schema"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
   </notif-confirm> 
    
    
2.2. Operations XML Schema 
   The formal specification of interface protocol operations is defined 
   in XML schema, which describes the operations message construct. 
    
   <?xml version="1.0"?> 
   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               targetNamespace="http://www.ietf.org/mops" 
               xmlns="http://www.ietf.org/mops" 
               elementFormDefault="qualified"> 
    
     <xsd:simpleType name="NOPType"> 
       <xsd:restriction base="xsd:string"> 
         <xsd:enumeration value="no-op"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="GetType"> 
       <xsd:restriction base="xsd:string"> 
 
 
Chen and Allen           Expire December 2003                [Page 11] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
         <xsd:enumeration value="get-all"/> 
         <xsd:enumeration value="get-readonly"/> 
         <xsd:enumeration value="get-readwrite"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="CreateType"> 
       <xsd:restriction base="xsd:string"> 
         <xsd:enumeration value="create-all"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="ModifyType"> 
       <xsd:restriction base="xsd:string"> 
         <xsd:enumeration value="modify-replace"/> 
         <xsd:enumeration value="modify-merge"/> 
         <xsd:enumeration value="modify-copy"/> 
         <xsd:enumeration value="modify-validate"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="DeleteType"> 
       <xsd:restriction base="xsd:string"> 
         <xsd:enumeration value="delete-all"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
    
     <xsd:simpleType name="ActionType"> 
       <xsd:union memberTypes="NOPType 
                               GetType 
                               CreateType 
                               ModifyType 
                               DeleteType"/> 
     </xsd:simpleType> 
    
     <xsd:simpleType name="ProtocolErrorCode"> 
       <xsd:restriction base="xsd:string> 
         <xsd:enumeration value="noError"/> 
         <xsd:enumeration value="xmlValidationFailure"/> 
         <xsd:enumeration value="operationFailure"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="ApplicationErrorCode"> 
       <xsd:restriction base="xsd:string> 
         <xsd:enumeration value="noError"/> 
         <xsd:enumeration value="xmlValidationFailure"/> 
         <xsd:enumeration value="xpathParseFailure"/> 
         <xsd:enumeration value="badArguments"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:complexType name="ProtocolError"> 
       <xsd:sequence> 
         <xsd:any minOccurs="0"/> 
 
 
Chen and Allen           Expire December 2003                [Page 12] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
       </xsd:sequence> 
       <xsd:attribute name="code" type="ProtocolErrorCode"/> 
     </xsd:complexType> 
     <xsd:complexType name="ApplicationError"> 
       <xsd:sequence> 
         <xsd:any minOccurs="0"/> 
       </xsd:sequence> 
       <xsd:attribute name="code" type="ApplicationErrorCode"/> 
     </xsd:complexType> 
     <xsd:complexType name="Error"> 
       <xsd:sequence> 
         <xsd:element name="protocol-error" type="ProtocolError"/> 
         <xsd:element name="application-error" 
                      type="ApplicationError"/> 
       </xsd:sequence> 
     </xsd:complexType> 
    
     <xsd:element name="perform-request"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:any minOccurs="0"/> 
         </xsd:sequence> 
         <xsd:attribute name="messageId" type="xsd:string" 
                        use="required"/> 
         <xsd:attribute name="operation" use="required"> 
           <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
               <xsd:enumeration value="get"/> 
               <xsd:enumeration value="create"/> 
               <xsd:enumeration value="modify"/> 
               <xsd:enumeration value="delete"/> 
             </xsd:restriction> 
           </xsd:simpleType> 
         </xsd:attribute> 
         <xsd:attribute name="transaction" use="required"> 
           <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
               <xsd:enumeration value="stop-on-error"/> 
               <xsd:enumeration value="continue-on-error"/> 
               <xsd:enumeration value="rollback-on-error"/> 
             </xsd:restriction> 
           </xsd:simpleType> 
         </xsd:attribute> 
       </xsd:complexType> 
     </xsd:element> 
     <xsd:element name="perform-response"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:element name="error" type="Error"/> 
           <xsd:any minOccurs="0"/> 
 
 
Chen and Allen           Expire December 2003                [Page 13] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
         </xsd:sequence> 
         <xsd:attribute name="messageId" type="xsd:string"  
                        use="required"/> 
       </xsd:complexType> 
     </xsd:element> 
    
      <xsd:element name="abort-request"> 
       <xsd:complexType> 
         <xsd:attribute name="messageId" type="xsd:string"                         
                        use="required"/> 
       </xsd:complexType> 
     </xsd:element> 
     <xsd:element name="abort-response"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:element name="error" type="Error"/> 
           <xsd:any minOccurs="0"/> 
         </xsd:sequence> 
         <xsd:attribute name="messageId" type="xsd:string"  
                        use="required"/> 
       </xsd:complexType> 
     </xsd:element> 
    
     <xsd:element name="notif"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:any minOccurs="0"/> 
         </xsd:sequence> 
         <xsd:attribute name="messageId" type="xsd:string"  
                        use="required"/> 
       </xsd:complexType> 
     </xsd:element> 
     <xsd:element name="notif-confirm"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:element name="error" type="Error"/> 
           <xsd:any minOccurs="0"/> 
         </xsd:sequence> 
         <xsd:attribute name="messageId" type="xsd:string"  
                        use="required"/> 
       </xsd:complexType> 
     </xsd:element> 
    
   </xsd:schema> 
    
    
2.3. Capabilities XML Schema 
   The capabilities of optional function are described in capabilities 
   XML schema.  It allows peers to exchange the actually functionality 
   implemented in other end, ala a poor manÆs Web Service framework.  
 
 
Chen and Allen           Expire December 2003                [Page 14] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   The capabilities XML schema must be supported by the end systems.  
   It is really a standardized data model schema. 
    
   <?xml version="1.0"?> 
   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:mops="http://www.ietf.org/mops" 
               targetNamespace="http://www.ietf.org/mops/capabilities" 
               xmlns="http://www.ietf.org/mops/capabilities" 
               elementFormDefault="qualified"> 
    
     <xsd:simpleType name="Transaction"> 
       <xsd:list> 
         <xsd:simpleType> 
           <xsd:restriction base="xsd:string"> 
             <xsd:enumeration value="stop-on-error"/>  
             <xsd:enumeration value="continue-on-error"/> 
             <xsd:enumeration value="rollback-on-error"/> 
           </xsd:restriction> 
         </xsd:simpleType> 
       </xsd:list> 
     </xsd:simpleType> 
     <xsd:simpleType name="Notification"> 
       <xsd:list> 
         <xsd:simpleType> 
           <xsd:restriction base="xsd:string"> 
             <xsd:enumeration value="notif"/>  
             <xsd:enumeration value="notif-confirm"/> 
           </xsd:restriction> 
         </xsd:simpleType> 
       </xsd:list> 
     </xsd:simpleType> 
     <xsd:simpleType name="ModelSchema"> 
       <xsd:list itemType="xsd:anyURI"/> 
     </xsd:simpleType> 
    
     <xsd:simpleType name="GetReadType"> 
       <xsd:union memberTypes="mops:NOPType"> 
         <xsd:simpleType> 
           <xsd:restriction base="mops:GetType"> 
             <xsd:enumeration value="get-all"/> 
             <xsd:enumeration value="get-readonly"/> 
           </xsd:restriction> 
         </xsd:simpleType> 
       </xsd:union> 
     </xsd:simpleType> 
    
     <xsd:element name="capabilities"> 
       <xsd:complexType> 
         <xsd:all> 
           <xsd:element name="transaction"> 
 
 
Chen and Allen           Expire December 2003                [Page 15] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
             <xsd:complexType> 
               <xsd:extension base="Transaction"> 
                 <xsd:attribute name="action" type="GetReadType" 
                                use="optional" default="no-op"/> 
               </xsd:extension> 
             </xsd:complexType> 
           </xsd:element> 
           <xsd:element name="notification"> 
             <xsd:complexType> 
               <xsd:extension base="Notification"> 
                 <xsd:attribute name="action" type="GetReadType" 
                                use="optional" default="no-op"/> 
               </xsd:extension> 
             </xsd:complexType> 
           </xsd:element> 
           <xsd:element name="modelschema"> 
             <xsd:complexType> 
               <xsd:extension base="ModelSchema"> 
                 <xsd:attribute name="action" type="GetReadType"  
                                use="optional" default="no-op"/> 
               </xsd:extension> 
             </xsd:complexType> 
           </xsd:element> 
         </xsd:all> 
         <xsd:attribute name="action" type="GetReadType" 
                        use="optional" default="no-op"/> 
       </xsd:complexType> 
     </xsd:element> 
    
   </xsd:schema> 
    
   The following example shows a pair of peer systems exchanging the 
   capabilities through the interface protocol operations.  It is 
   expected that this exchange would be the very first interface 
   interaction once the end systems start up. 
   <perform-request messageId="09233523-567b" 
                    operation="get" 
                    transaction="continue-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:cap="http://www.ietf.org/mops/capabilities"/> 
     <cap:capabilities action="get-all"> 
     </cap:capabilities> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     
   xmlns:cap="http://www.ietf.org/mops/capabilities"/> 
     <error> 
       <protocol-error code="noError"/> 
 
 
Chen and Allen           Expire December 2003                [Page 16] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
       <application-error code="noError"/> 
     </error> 
     <cap:capabilities action="no-op"> 
       <cap:transaction> 
         stop-on-error continue-on-error 
       </cap:transaction> 
       <cap:notification>notif</cap:notification"> 
       <cap:modelschema>http://example.com/schema</cap:modelschema> 
     </cap:capabilities> 
   </perform-response> 
    
    
3.   Protocol Transport Binding 
   XML network management interface protocol operations can be layered 
   over multiple transport protocols. 
    
3.1. Abstract Binding WSDL 
   Abstract binding WSDL describes the message interaction such as 
   request and response.   However, it does not specific any concrete 
   transport protocol binding. 
    
   <?xml verion="1.0"?> 
   <wsdl:definitions name="mopsAbsBinding" 
                
   targetNamespace="http://www.ietf.org/mops/absbinding.wsdl" 
                xmlns="http://www.ietf.org/mops/absbinding.wsdl" 
                xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" 
                xmlns:mops="http://www.ietf.org/mops"> 
     <wsdl:message name="perform-request"> 
       <wsdl:part name="request" element="mops:perform-request"/> 
     </wsdl:message> 
     <wsdl:message name="perform-response"> 
       <wsdl:part name="response" element="mops:perform-response"/> 
     </wsdl:message> 
     <wsdl:message name="abort-request"> 
       <wsdl:part name="request" element="mops:abort-request"/> 
     </wsdl:message> 
     <wsdl:message name="abort-response"> 
       <wsdl:part name="response" element="mops:abort-response"/> 
     </wsdl:message> 
     <wsdl:message name="notif"> 
       <wsdl:part name="notification" element="mops:notif"/> 
     </wsdl:message> 
     <wsdl:message name="notif-confirm"> 
       <wsdl:part name="confirmation" element="mops:notif-confirm"/> 
     </wsdl:message> 
    
     <wsdl:portType name="PerformOperation"> 
       <wsdl:operation name="perform-operation"> 
         <wsdl:input message="perform-request"/> 
 
 
Chen and Allen           Expire December 2003                [Page 17] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
         <wsdl:output message="perform-response"/> 
       </wsdl:operation> 
     </wsdl:portType> 
     <wsdl:portType name="AbortOperation"> 
       <wsdl:operation name="abort-operation"> 
         <wsdl:input message="abort-request"/> 
         <wsdl:output message="abort-response"/> 
       </wsdl:operation> 
     </wsdl:portType> 
     <wsdl:portType name="NotificationUnconfirm"> 
       <wsdl:operation name="notification-unconfirm"> 
         <wsdl:output message="notif"/> 
       </wsdl:operation> 
     </wsdl:portType> 
     <wsdl:portType name="NotificationConfirm"> 
       <wsdl:operation name="notification-confirm"> 
         <wsdl:output message="notif"/> 
         <wdsl:input message="notif-confirm"/> 
       </wsdl:operation> 
     </wsdl:portType> 
    
   </definitions> 
    
    
3.2. SOAP/HTTP Binding WSDL 
   SOAP/HTTP binding WSDL describes the SOAP over HTTP transport 
   protocols binding.  
    
   <?xml verion="1.0"?> 
   <wsdl:definitions name="mopsSOAPBinding" 
                
   targetNamespace="http://www.ietf.org/mops/soapbinding.wsdl" 
                xmlns="http://www.ietf.org/mops/soapbinding.wsdl" 
                xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" 
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap" 
                xmlns:mops="http://www.ietf.org/mops" 
                xmlns:absbinding= 
                  "http://www.ietf.org/mops/absbinding.wsdl"> 
     <wsdl:import namespace="http://www.ietf.org/mops/abscore.wsdl" 
             location="http://www.ietf.org/mops/abscore.wsdl"> 
    
     <wsdl:binding name="PerformOperationSoapBinding" 
                   type="absbinding:PerformOperation"> 
         <soap:binding style="document" 
                   transport="http://schemas.xmlsoap.org/soap/http"> 
         <wsdl:operation name="PerformOperationSoap"> 
           <soap:operation  
                 soapAction="http://www.ietf.org/mops/PerformOperation" 
                 style="document"/> 
           <wsdl:input> 
 
 
Chen and Allen           Expire December 2003                [Page 18] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
             <soap:body use="literal"/> 
           </wsdl:input> 
           <wsdl:output> 
             <soap:body use="literal"/> 
           </wsdl:output> 
         </wsdl:operation> 
       </soap:binding> 
     </wsdl:binding> 
     
     <wsdl:binding name="AbortOperationSoapBinding" 
                   type="absbinding:AbortOperation"> 
       <soap:binding style="document"  
                     transport="http://schemas.xmlsoap.org/soap/http"> 
         <wsdl:operation name="AbortOperationSoap"> 
           <soap:operation  
                 soapAction="http://www.ietf.org/mops/AbortOperation" 
                 style="document"/> 
           <wsdl:input> 
             <soap:body use="literal"/> 
           </wsdl:input> 
           <wsdl:output> 
             <soap:body use="literal"/> 
           </wsdl:output> 
         </wsdl:operation> 
       </soap:binding> 
     </wsdl:binding> 
    
     <wsdl:binding name="NotificationUnconfirmSoapBinding" 
                   type="absbinding:NotificationUnconfirm"> 
       <soap:binding style="document"  
                     transport="http://schemas.xmlsoap.org/soap/http"> 
         <wsdl:operation name="NotificationUnconfirmSoap"> 
           <soap:operation  
                 soapAction= 
                   "http://www.ietf.org/mops/NotificationUnconfirm" 
                 style="document"/> 
           <wsdl:output> 
             <soap:body use="literal"/> 
           </wsdl:output> 
         </wsdl:operation> 
       </soap:binding> 
     </wsdl:binding> 
    
     <wsdl:binding name="NotificationConfirmSoapBinding" 
                   type="absbinding:NotificationConfirm"> 
       <soap:binding style="document"  
                     transport="http://schemas.xmlsoap.org/soap/http"> 
         <wsdl:operation name="NotificationConfirmSoap"> 
           <soap:operation  
                 soapAction= 
 
 
Chen and Allen           Expire December 2003                [Page 19] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
                   "http://www.ietf.org/mops/NotificationConfirm" 
                 style="document"/> 
           <wsdl:output> 
             <soap:body use="literal"/> 
           </wsdl:output> 
           <wsdl:input> 
             <soap:body use="literal"/> 
           </wsdl:input> 
         </wsdl:operation> 
       </soap:binding> 
     </wsdl:binding> 
    
   </wsdl:definitions> 
    
    
3.3. BEEP WSDL Binding 
   TBD. 
    
    
3.4. SSH WSDL Binding 
   TBD. 
    
    
4.   A Data Model Schema 
   This is a sample operating and data model schema.  It demonstrates 
   that how a particular operating and data model can be fit into the 
   overall interface framework. 
    
   <?xml version="1.0"?> 
   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               targetNamespace="http://www.ietf.org/mops/model" 
               xmlns="http://www.ietf.org/mops/model" 
               xmlns:mops="http://www.ietf.org/mops" 
               elementFormDefault="qualified"> 
    
     <xsd:simpleType name="ModifyRunningType"> 
       <xsd:restriction base="mops:ModifyType"> 
         <xsd:enumeration value="modify-replace"/> 
         <xsd:enumeration value="modify-merge"/> 
         <xsd:enumeration value="modify-copy"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="ActionRunningType"> 
       <xsd:union memberTypes="mops:NOPType 
                               mops:GetType 
                               mops:CreateType 
                               ModifyRunningType 
                               Mops:DeleteType"/> 
     </xsd:simpleType> 
    
 
 
Chen and Allen           Expire December 2003                [Page 20] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
     <xsd:simpleType name="ModifyCandidateType"> 
       <xsd:restriction base="mops:ModifyType"> 
         <xsd:enumeration value="modify-replace"/> 
         <xsd:enumeration value="modify-merge"/> 
         <xsd:enumeration value="modify-validate"/> 
       </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="ActionCandidateType"> 
       <xsd:union memberTypes="mops:NOPType 
                               mops:GetType 
                               mops:CreateType 
                               ModifyCandidateType 
                               Mops:DeleteType"/> 
     </xsd:simpleType> 
    
     <xsd:element name="candidate"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:any/> 
         </xsd:sequence> 
         <xsd:attribute name="action" type="ActionCandidateType" 
                        use="optional" default="no-op"/> 
       </xsd:complexType> 
     </xsd:element> 
     <xsd:element name="running"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:any/> 
         </xsd:sequence> 
         <xsd:attribute name="action" type="ActionRunningType" 
                        use="optional" default="no-op"/> 
         <xsd:attribute name="copy-from" 
                        type="xsd:string" 
                        use="optional" default="candidate"/> 
       </xsd:complexType> 
     </xsd:element> 
     <xsd:element name="startup"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:any/> 
         </xsd:sequence> 
         <xsd:attribute name="action" type="ActionRunningType" 
                        use="optional" default="no-op"/> 
       </xsd:complexType> 
     </xsd:element> 
    
   </xsd:schema> 
    
    
 
 
Chen and Allen           Expire December 2003                [Page 21] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
   The following example copies the candidate configuration to running 
   configuration. 
   <perform-request messageId="09233523-567b" 
                    operation="modify" 
                    transaction="rollback-on-error" 
                    xmlns="http://www.ietf.org/mops" 
                    xmlns:model="http://www.ietf.org/mops/model"> 
     <model:running action="modify-copy" copy-from="candidate"> 
     </model:running> 
   </perform-request> 
    
   <perform-response messageId="09233523-567b" 
                     xmlns="http://www.ietf.org/mops" 
                     xmlns:model="http://www.ietf.org/mops/model"> 
     <error> 
       <protocol-error code="noError"/> 
       <application-error code="noError"/> 
     </error> 
     <model:running> 
       copied configuration data goes hereà 
     </model:running> 
   </perform-response> 
    
    
5.   Security Consideration 
    
   Security concern of network management interface is very sensitive 
   by its nature. 
    
   The interface protocol operations do not explicitly address the 
   security.  It relies on the underline protocol transport and upper 
   layer data model to provide proper security protection. 
    
    
6.   References 
    
   [RFC2119] "Key words for use in RFCs to Indicate Requirement 
   Levels", Bradner, S., March 1997. 
    
   [XML1.0] "Extensible Markup Language (XML) 1.0 (Second Edition)", 
   W3C REC-xml-20001006, October 2000.  
    
   [XML Schema-1] "XML Schema Part 1: Structures", W3C REC-xmlschema-1-
   20010502, May 2001. 
    
   [XML Schema-2] "XML Schema Part 2: Datatypes", W3C REC-xmlschema-2-
   20010502, May 2001. 
    
   [WSDL1.1] "Web Services Description Language (WSDL) 1.1", W3C NOTE-
   wsdl-20010315, March 2001. 
 
 
Chen and Allen           Expire December 2003                [Page 22] 
Internet Draft    draft-weijing-netconf-interface-00         June 2003 
 
 
    
   [XPath1.0] "XML Path Language (XPath) Version 1.0", W3C REC-xpath-
   19991116, November 1999. 
    
    
7.   Authors' Addresses 
    
   Weijing Chen 
   SBC Labs 
   9505 Arboretum Blvd. 
   Austin, Texas 78759 
   Phone: +1 512 372 5710 
   Email: wchen@labs.sbc.com 
    
   Keith Allen 
   SBC Labs 
   9505 Arboretum Blvd. 
   Austin, Texas 78759 
   Phone: +1 512 372 5741 
   Email: kallen@labs.sbc.com 
    
 
 
 
Chen and Allen           Expire December 2003                [Page 23] ë¹É�<������!�����7� vÍ���•����h�������Trend���������@�0Á²Î´‹<È@�0PEgµ‹<È�7���@�“�@œúWEþ7�������@�’�@œúWEþ�²�����0���'���draft-weijing-netconf-interface-00.txt���”�����¶7�����‘�����7���'���draft-weijing-netconf-interface-00.txt���7������.txt����·������±N®çKòfÁøó _µ K