Title: Kalua%20
1Kalua A DML for NETCONF
- bernd.linowski_at_nsn.com
- martin.storch_at_nsn.com
- mikko.lahdensivu_at_nsn.com
- mehmet.ersue_at_nsn.com
2Kalua Basics
- In the first place, Kalua is a DML for NETCONF
- supports the immediate needs of the NETCONF
protocol - provides modeling features for . . .
- the payload of NETCONF get-/edit(-config)
operations - NETCONF notifications
- uses precedent discussion in RFC 3535 as a
guidance - But Kalua also . . .
- addresses extensibility and broader applicability
- integrates data modeling and information modeling
features - aims to support also solutions for different
other IETF issues, e.g. in OPS and APPS areas
3Kalua Basics (II)
- XML based language
- Basic parsing / generation / editing support
available everywhere - No need to learn a new grammar
- Basic validation with Kalua XSD
- Kalua is XSD Mappable
- Reuses concepts from XSD
4Kalua Basics
Kalua Schema (XSD)
Metamodel Layer
validates
Kalua Model (XML)
Model Layer
generated from
KaluaModel Schemas (XSD)
Kalua Model Schemas (XSD)
validates
NETCONF Payload (XML)
Data Layer
5Kalua Features
- Build-ins based on XML Schema 1.1 Part 2
Datatypes - Simple-type Modeling
- Restrictions, Enums, Unions and possible
combinations - Data modeling
- Attributes, Structures, Sequences, Type-Defs,
- Essential object-oriented modeling
- Classes, Inheritance, Relationships,
- Modularity
- Model import, Multiple model release support
- Extensibility
- Typed annotations
6Complex Datatype Modeling
- Structures
- set of attributes
- may use attribute groups
- may have a key
- Sequences
- min max-length (unbounded)
- ordering relevance
- Type-Defs
- Makes a datatype available for reuse
ltstructuregt ltattribute namexgt lttypegtdoublelt
/typegt ltattribute/gt ltattribute
nameygt lttypegtdoublelt/typegt lt/attributegt lt/s
tructuregt
ltsequence minLength1
maxLengthunboundedgt lttypegtstringlt/typegt lt/sequ
encegt
lttypedef namePointgt ltstructuregt
lt/structuregt lt/typedefgt
7Modules
ltmodule nameSDHgt ltns-prefixgtsdhlt/ns-prefixgt
ltns-urigthttp//www.xyz.com/sdh lt/ns-urigt ltrelea
segtS7.0lt/releasegt ltimportgt ltns-prefixgttplt/ns-p
refixgt ltns-urigthttp//www.xyz.com/tp lt/ns-urigt
lt/importgt lt/modulegt
- Packages Kalua model elements
- Own namespace
- XML mapping support
- ns-uri
- ns-prefix
- May import other modules
8Module Releases
ltmodule nameSDHgt ltns-urigthttp//xyz.com/sdhlt/n
s-urigt ltns-prefixgtsdhlt/ns-prefixgt ltreleasegtS7.0lt
/releasegt lt/modulegt
- Identifies a particular release of a module
- Release is typically tied to NE release
- Applies to all model elements in the module
ltmodule nameSDHgt ltns-urigthttp//xyz.com/sdhlt/n
s-urigt ltns-prefixgtsdhlt/ns-prefixgt ltreleasegtS8.1lt
/releasegt lt/modulegt
ltimportgt ltns-urigthttp//xyz.com/sdhlt/ns-urigt ltns
-prefixgtsdhlt/ns-prefixgt ltreleasegtS8.1lt/releasegt lt
/importgt
9Attribute Groups
ltattribute-group nameFTP_Accessgt ltattribute
nameftpServerAddressgt lttypegtstringlt/typegt
ltattribute/gt ltattribute nameftpServerPortgt
lttypegtunsignedShortlt/typegt lt/attributegt
lt/attribute-groupgt
- Equivalent to attribute groups in XML Schema
- Bundles attributes
- Reused by
- Structures
- Classes
- other attribute groups
- Does not define a type
ltuse attribute-groupFTP_Accessgt
10Classes
- Blueprints for
- network elements or
- abstract entities
- Defines a type
- Has its own identity
- potentially independent life-cycle
- Endpoint of relationships
- May be abstract
- May use attribute groups
ltclass nameLocationgt lt/abstractgt ltattribute
namelocIdgt lttypegtstringlt/typegt lt/attribute
gt ltkeygt ltmembergtlocIdlt/typegt lt/keygt lt/classgt
11Class Inheritance
ltclass nameLocationgt lt!- see previous
slide --gt lt/classgt
- Establishes an is-a relationship
- Reuse of features from base class
- attributes
- keys
- relationships
- Avoid multiple-inheritance for the sake of
reduced complexity
ltclass nameGridLocationgt ltsuper-classgtLocati
on lt/super-classgt ltattribute namexgt ltatt
ribute nameygt lt/classgt
12Reference Relationships
- Connect a source and a target class
- Relate instances regardless of their context of
use - Specify the multiplicity of the relationship
(e.g. 11, 1n, nm) - May be read-only
- May specialize a base relationship
ltrelationship namelocatedAtgt ltkindgtltreferenc
e/gtlt/kindgt ltsourcegt ltclassgtManagedObjectlt/class
gt ltrolegtlocatedObjectlt/rolegt lt/sourcegt lttarget
gt ltclassgtLocationlt/classgt ltrolegtlocationlt/role
gt ltmaxCardinalitygt1lt/maxCardinalitygt lt/targetgt
lt/relationshipgt
13Calculated Relationships
- Explicit relationships derived from configuration
data - Read-only
- Avoids informally described relationships
- Condition determines related instances
- Dynamic (re-)evaluation whenever a relationship
is queried
ltrelationship nameConnectedTogt ltkindgt ltcon
ditiongt source/remoteLinkId
target/linkId and source/remoteTslot
target/tslot lt/conditiongt lt/kindgt ltsourc
egt ltclassgtPCM_TPlt/classgt ltrolegtlocalTPlt/rolegt
lt/sourcegt lttargetgt ltclassgtPCM_TPlt/classgt ltro
legtremoteTPlt/rolegt lt/targetgt lt/relationshipgt
14Typed Annotations
ltclass nameBroadbandRoutergt ... ltannotation
nameSMI_Refgt lte nameOIDgt1.3.6.1.4.1.999lt/e
gt lt/annotationgt ... lt/classgt
- Annotations
- enhance semantics of existing DML elements
- Address new modeling needs
- Annotation Types
- Force correct usage of model extensions
- Define annotation properties
ltannotation-type nameSMI_Refgt ltannotatable-t
ypegt class lt/annotatable-typegt ltannotation-pro
perty-type nameOIDgt ltpatterngt
0-9(\.0-9) lt/patterngt lt/annotation-prop
erty-typegt lt/annotation-typegt
15Thank you!
For more information please read NETCONF Data
Modeling Language Requirements http//tools.ietf.o
rg/html/draft-linowski-netconf-dml-requirements-01
Kalua - A Data Modeling Language for
NETCONF http//www.ietf.org/internet-drafts/draft-
ersue-netconf-kalua-dml-01.txt
16 17Kalua Example Partial Lock RPC
- ltkaluamodule name"NCPL" xmlnskalua"urnietfpa
ramsxmlnskalua1" - xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
ce" - xsischemaLocation"urnietfparamsxmlnskalua1
\Users\kalua\kalua.xsd" - xmlnsxsd"http//www.w3.org/2001/XMLSchema"gt
- ltpresentationgtNETCONF partial
locklt/presentationgt - ltdescriptiongtNETCONF partial lock
operationslt/descriptiongt - ltns-urigturnietfparamsxmlnsnetconfparti
al-lock1.0lt/ns-urigt - ltns-prefixgtncpllt/ns-prefixgt
- ltreleasegt1lt/releasegt
- ltorganizationgtIETFlt/organizationgt
- ltimportgt
- ltns-urigturnietfparamsxmlnsnetconf
base1.0lt/ns-urigt - ltns-prefixgtnclt/ns-prefixgt
- lt/importgt
- ltattribute-group name"lock_id_attribute"gt
- ltattribute name"lock_id"gt
- lttypegtkaluaunsignedIntlt/typegt
- lt/attributegt
- lt/attribute-groupgt
18Kalua Example Partial Lock RPC (II)
- ltattribute name"config_name"gt
- lttypegtncconfig_namelt/type
gt - lt/attributegt
- ltattribute name"select"gt
- ltsequencegt
- lttypegtkaluastringlt/
typegt - lt/sequencegt
- lt/attributegt
- lt/inputgt
- ltoutputgt
- ltusegt
- ltattribute-groupgtlock_id_a
ttributelt/attribute-groupgt - lt/usegt
- lt/outputgt
- lt/operationgt
- ltoperation name"partial_unlock"gt
- ltdescriptiongtThis operation defines
the element for partial-unlock RPC operation.
lt/descriptiongt - ltinputgt
- ltusegt
19DHCP Example
- ltkaluamodule name"DHCP" xmlnskalua"urnietfpa
ramsxmlnskalua1" xmlnsxsi"http//www.w3.org/
2001/XMLSchema-instance" xsischemaLocation"urni
etfparamsxmlnskalua1 - C\Users\kalua\kalua.xsd" xmlnsxsd"http//www.w3
.org/2001/XMLSchema"gt - ltpresentationgtDHCPlt/presentationgt
- ltdescriptiongtDHCP example, as in
http//tools.ietf.org/html/draft-presuhn-rcdml-03
appendix-Clt/descriptiongt - ltns-urigthttp//example.org/ns/dhcplt/ns-urigt
- ltns-prefixgtdhcplt/ns-prefixgt
- ltreleasegt1lt/releasegt
- ltorganizationgtNokia Siemens Networkslt/organizatio
ngt - ltimportgt
- ltns-urigturnietfparamsxmlnsnetmodbaselt/ns-u
rigt - ltns-prefixgtndllt/ns-prefixgt
- lt/importgt
- ltimportgt
- ltns-urigthttp//example.com/ns/intlt/ns-urigt
- ltns-prefixgtintlt/ns-prefixgt
- ltdescriptiongtinterfaceslt/descriptiongt
- lt/importgt
- ltclass name"dhcp"gt
- ltattribute name"default_lease_time"gt
20DHCP Example (II)
- ltrelationship name"subnets"gt
- ltkindgt
- ltcontainment/gt
- lt/kindgt
- ltsourcegt
- ltclassgtdhcplt/classgt
- ltrolegtparentlt/rolegt
- lt/sourcegt
- lttargetgt
- ltclassgtsubnetlt/classgt
- ltrolegtchildrenlt/rolegt
- lt/targetgt
- lt/relationshipgt
- lttypedef name"rangeType"gt
- ltstructuregt
- ltattribute name"dynamic_bootp"gt
- ltpresentationgtdynamic-bootplt/presentationgt
- lttypegtkaluabooleanlt/typegt
- ltdefaultValueLiteralgttruelt/defaultValueLiteral
gt
21DHCP Example (III)
- ltclass name"subnet"gt
- ltattribute name"network"gt
- lttypegtndlipAddresslt/typegt
- lt/attributegt
- ltattribute name"prefix_length"gt
- ltpresentationgtprefix-lengthlt/presentationgt
- lttypegtkaluaintlt/typegt
- lt/attributegt
- ltattribute name"range"gt
- ltoptional/gt
- lttypegtrangeTypelt/typegt
- lt/attributegt
- ltattribute name"max_lease_time"gt
- ltpresentationgtmax-lease-timelt/presentationgt
- lttypegtkaluaintlt/typegt
- lt/attributegt
22DHCP Example (IV)
- ltattribute name"leases"gt
- ltread-only/gt
- ltsequence elementName"lease"gt
- ltstructuregt
- ltattribute name"ip_address"gt
- ltpresentationgtip-addresslt/presentationgt
- lttypegtndlipAddresslt/typegt
- lt/attributegt
- ltattribute name"starts"gt
- lttypegtkaluadateTimelt/typegt
- lt/attributegt
- ltattribute name"ends"gt
- lttypegtkaluadateTimelt/typegt
- lt/attributegt
- ltattribute name"mac_address"gt
- ltpresentationgtmac-addresslt/presentationgt
- lttypegtndlnsapAddresslt/typegt
- lt/attributegt
- ltkey scope"local"gt
23DHCP Example (V)
- lttypedef name"rangeType"gt
- ltstructuregt
- ltattribute name"dynamic_bootp"gt
- ltpresentationgtdynamic-bootplt/presentationgt
- lttypegtkaluabooleanlt/typegt
- ltdefaultValueLiteralgttruelt/defaultValueLiteral
gt - lt/attributegt
- ltattribute name"low"gt
- ltmandatory/gt
- lttypegtndlipAddresslt/typegt
- lt/attributegt
- ltattribute name"high"gt
- ltmandatory/gt
- lttypegtndlipAddresslt/typegt
- lt/attributegt
- lt/structuregt
- lt/typedefgt
- ltrelationship name"dhcp_options_Rel"gt
- ltkindgt
24DHCP Example (VI)
- ltclass name"dhcp_options"gt
- ltpresentationgtdhcp-optionslt/presentationgt
- ltattribute name"router_list"gt
- ltpresentationgtrouter-listlt/presentationgt
- ltsequence elementName"router"gt
- lttypegtndlipAddresslt/typegt
- lt/sequencegt
- lt/attributegt
- ltattribute name"domain_list"gt
- ltpresentationgtdomain-listlt/presentationgt
- ltsequence elementName"domain"gt
- lttypegtndlipAddresslt/typegt
- lt/sequencegt
- lt/attributegt
- ltattribute name"custom"gt
- ltstructuregt
- ltattribute name"option"gtlttypegtkaluaintlt/type
gt - lt/attributegt
- ltattribute name"ip_address"gt
25DHCP Example (VII)
- ltrelationship name"filtered_interfaces"gt
- ltkindgt
- ltcalculatedgt
- ltconditiongtsource/interface_filter/
interface target/ifNamelt/conditiongt - lt/calculatedgt
- lt/kindgt
- ltsourcegt
- ltclassgtsubnetlt/classgt
- ltrolegtfiltering_subnetlt/rolegt
- ltmaxCardinalitygtunboundedlt/maxCardinalitygt
- lt/sourcegt
- lttargetgt
- ltclassgtintinterfacelt/classgt
- ltrolegtfiltered_interfacelt/rolegt
- ltmaxCardinalitygtunboundedlt/maxCardinalitygt
- lt/targetgt
- lt/relationshipgt
26DHCP Example (VIII)
- ltclass name"shared_network"gt
- ltattribute name"name"gt
- lttypegtkaluastringlt/typegt
- lt/attributegt
- ltkey scope"global"gt
- ltmembergtnamelt/membergt
- lt/keygt
- lt/classgt
- ltrelationship name"shared_network_subnets"gt
- ltkindgt
- ltcontainment/gt
- lt/kindgt
- ltsourcegt
- ltclassgtshared_networklt/classgt
- ltrolegtparentlt/rolegt
- lt/sourcegt
- lttargetgt
- ltclassgtsubnetlt/classgt
- ltrolegtchildrenlt/rolegt