1©2015 Tail-f Systems all rights reservedFebruary 13, 2015
ConfD Technical Introduction
2©2015 Tail-f Systems all rights reservedFebruary 13, 2015
What is ConfD?
ConfD provides a data-model driven management plane framework which provides a
variety of standards-based northbound management interfaces for use in building
network elements:
Physical Network Devices
Virtual Network Devices
(VNF in NFV)
Network Appliances
etc.
3©2015 Tail-f Systems all rights reservedFebruary 13, 2015
How is ConfD different?
SNMP agent
CLI engine
NETCONF server
…
Protocol Focused Agents
Stove-pipe
Feature-lag
Just the protocol layer
Data-model driven
Any protocol
ConfD
All protocols
No feature lag
Core engine
4©2015 Tail-f Systems all rights reservedFebruary 13, 2015
ConfD Overview
Network
Element
NETCONF SNMP REST CLI Web
Database Data Provider API
Managed Object API
Management Agent API
OSS/BSS
MO MOMO
ConfD Core Engine
MO
External
DatabaseOperational
Data
MO
5©2015 Tail-f Systems all rights reservedFebruary 13, 2015
ConfD Overview
Network
Element
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
OSS/BSS
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
Management Agent API
Auto-rendered management interfaces and data schema
YANG
Data Models
6©2015 Tail-f Systems all rights reservedFebruary 13, 2015
True Model-Driven
• Information models (UML, SID, …)
• Important for communication between domain experts
• Needs “mapping” to data-models
• Data Models
• Concrete
• Means something in reality
• Tail-f story
• Core-engine driven by data-models
• No stubs!
• Translators to information models, UML, SID, …
• You can execute with the data-model only
• CLI
• WebUI
• Database
• …
• YANG – RFC 6020
• IETF greybeards
• Concrete, precise, semantically rich
• Clarity – “anyone” can read
• Precision – self documenting
• Modular data models
• Extensible language
• Code generation
7©2015 Tail-f Systems all rights reservedFebruary 13, 2015
YANG Example
module sys {
namespace "urn:sys";
prefix sys;
import tailf-common {
prefix tailf;
}
typedef interface-name {
type string {
length "min .. 30";
pattern "[A-Za-z][^/:.]*";
}
}
8©2015 Tail-f Systems all rights reservedFebruary 13, 2015
YANG Example (cont.)
container sys {
container numbers {
leaf odd {
type int32;
default 1;
must "(. mod 2) = 1" {
error-message "can only be an odd number";
tailf:dependency ".";
}
} }
list ifc {
key name;
max-elements 1024;
leaf name {
type interface-name;
}
leaf enabled {
type boolean;
default true;
}
9©2015 Tail-f Systems all rights reservedFebruary 13, 2015
YANG Example (cont.)
list labels {
key string;
max-elements 16;
description
"A label is an alphanumeric string assigned to an
interface. Each interface can have many labels. The
purpose here is simply to show a must validation that
requires the labels to be unique for all interfaces.”;
leaf string {
type string {
length "1..31";
pattern "[a-zA-Z][a-zA-Z0-9_-]*";
}
must "not(/sys:sys/sys:ifc[name = current()])" {
error-message
"A label can not be the same as an interface name";
tailf:dependency "/sys/ifc/name";
}
must "count(/sys/ifc/labels[string = current()]) = 1" {
error-message "All labels must be unique";
tailf:dependency ".";
}
10©2015 Tail-f Systems all rights reservedFebruary 13, 2015
ConfD Overview
ConfD
NETCONF SNMP REST CLI Web
ConfD Core Engine
CDB
Database
Transaction Management
Session Management / Authentication
Role-based Access Control
Audit Trailing
Redundancy / Replication
Validation (syntactic and semantic)
Rollback Management
Upgrades and Downgrades
Data Provider API CDB API
Management Agent API
Operational
Data
Counters
Alarms
StatisticsMO
External
Database Operational
Data
MO
Validation
API
Authentication
API
Radius
PAM
TACACS
Others
Operational Data
Operational
Data API
App AppApp
11©2015 Tail-f Systems all rights reservedFebruary 13, 2015
ConfD Overview
API lib
App
IPC (via TCP Sockets)
Application Blades
Management Blade
= Unix/Linux process
NETCONF
ConfD
SNMP REST CLI WEB
API lib
App
API lib
App
API lib
App
API libraries available for: C, Erlang, Java, and Python (limited coverage)
12©2015 Tail-f Systems all rights reservedFebruary 13, 2015
High Availability
NETCONF
Management Blade
ConfD
Configuration
Datastore
SNMP
REST
CLI
Web
“Standby”
NETCONF
Management Blade
ConfD
Configuration
Datastore
SNMP
REST
CLI
Web
Data Replication
“Active”
Application
Blade
13©2015 Tail-f Systems all rights reservedFebruary 13, 2015
Integrated Database (CDB)
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
• Hierarchical database
• ACID test compliant
• Atomicity, consistency, isolation, durability
• Fast, lightweight, fault-tolerant
• Compact binary XML format
• Memory resident with journal in persistent storage
• Schema automatically derived from YANG
• Supports 1:N data replication
• Supports automatic schema version
up/downgrades
• CDB can hold some or all data
• Configuration data and/or Operational data
• External database can be used in addition to or instead of
• Automatic loading of initial data
• Applications read data, then subscribe to relevant
configuration changes
• Subscription notifications with priority level
ordering
• Multiple datastores per NETCONF standards
• Startup, running, candidate, operational
14©2015 Tail-f Systems all rights reservedFebruary 13, 2015
NETCONF Interface
• IETF RFC 4741/6241
• Full implementation
• All mandatory and all optional capabilities
• RFC 4742/6242 NETCONF over SSH
• Streams XML over SSH
• Separates operational data
from configuration
• Distributed transactions
• RFC 5277 NETCONF notifications
• Support included for various IETF standardized
YANG data models
<get-config>
<edit-config>
<delete-config>
<lock>
<unlock>
<get>
<close-session>
<kill-session>
<commit>
<discard-changes>
:writeable-running
:candidate
:confirmed-commit
:rollback-on-error
:validate
:startup
:URL
:XPath
NETCONF
OPERATIONS
NETCONF
CAPABILITIES
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
15©2015 Tail-f Systems all rights reservedFebruary 13, 2015
SNMP Agent
• SNMP machine interface
• Any combination of v1, v2c, v3
• Supports all operations
• Send SNMP notifications (traps)
• MIBs implemented by ConfD include:
• RFC-3411 (SNMP-FRAMEWORK-MIB)
• RFC-3414 (USM)
• RFC-3415 (VACM)
• RFC-3418 (SNMPv2-MIB)
• MIB to YANG translator
• YANG to MIB translator
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
16©2015 Tail-f Systems all rights reservedFebruary 13, 2015
Command Line Interface (CLI)
• Auto rendering of three CLI styles:
• Cisco – XR style
• Cisco – legacy IOS style
• Juniper – JUNOS style
• Rich editing with tab-completion for
commands,
static elements and dynamic instances
• History, hints, help
• Extensible with custom/external
commands, wizards
• Typically runs over SSH
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
17©2015 Tail-f Systems all rights reservedFebruary 13, 2015
Web
• JSON RPC API
• Access data
• Run transactions and rollbacks
• Do validation
• Execute actions
• Access data model schema information
• Customer choice of toolsets and
frameworks
• Preserve existing Web content
• Example of how to implement an auto-
rendered Web UI provided
• Supports HTTP and HTTPS
18©2015 Tail-f Systems all rights reservedFebruary 13, 2015
REST
• Relies on verbs of transport layer:
• HTTP 1.1
• GET : get resources
• Selectors : shallow, deep
• PUT : replace existing resource
• POST : create resource
• DELETE : delete resource
• PATCH (RFC5789) : modify existing resource
• HEAD, OPTIONS
• Stateless, client-server
• Hyperlinked, just like the web
• XML or JSON as data containers
• Links to available data-stores and operations
NETCONF SNMP REST CLI Web
CDB
Database
Data Provider API
CDB API
Management Agent API
App AppApp
ConfD Core Engine
App
External
DatabaseOperational
Data
App
$curl –u admin:admin –s http://localhost:8008/api
• /api/running
• /api/candidate
• /api/operations
• /api/operational
• /api/rollback
19©2015 Tail-f Systems all rights reservedFebruary 13, 2015
Why ConfD
Make your customer happy
Make your device
• Manageable
• Programmable
• Standards -compliant
Save time
• Render management interfaces
• Model-driven
• Iterative development
• NETCONF, CLI, SNMP, REST, Web
• Transactions and rollbacks
• Validations
• Configuration and monitoring
• No feature lag
• Core components
• Embedded database
• Domain-specific functions
• Rich APIs
• Well-tested, 70+ customers
20©2015 Tail-f Systems all rights reservedFebruary 13, 2015
21©2015 Tail-f Systems all rights reservedFebruary 13, 2015
Data ProviderAPI
A transaction can be viewed as a conceptual state machine
• Phases of a transaction correspond to states
• API transaction callback function invocations are state transitions
Start
Read
Prepare
Write
Validate
Abort Commit
init()
commit()
prepare()
write_start()
trans_lock()trans_unlock()
finish()
abort()
finish()
finish()
get_next()
get_elem()
finish()
finish()
set_elem()
create()
remove()
get_next()
get_elem()

Module 1: ConfD Technical Introduction

  • 1.
    1©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 ConfD Technical Introduction
  • 2.
    2©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 What is ConfD? ConfD provides a data-model driven management plane framework which provides a variety of standards-based northbound management interfaces for use in building network elements: Physical Network Devices Virtual Network Devices (VNF in NFV) Network Appliances etc.
  • 3.
    3©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 How is ConfD different? SNMP agent CLI engine NETCONF server … Protocol Focused Agents Stove-pipe Feature-lag Just the protocol layer Data-model driven Any protocol ConfD All protocols No feature lag Core engine
  • 4.
    4©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 ConfD Overview Network Element NETCONF SNMP REST CLI Web Database Data Provider API Managed Object API Management Agent API OSS/BSS MO MOMO ConfD Core Engine MO External DatabaseOperational Data MO
  • 5.
    5©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 ConfD Overview Network Element NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API OSS/BSS App AppApp ConfD Core Engine App External DatabaseOperational Data App Management Agent API Auto-rendered management interfaces and data schema YANG Data Models
  • 6.
    6©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 True Model-Driven • Information models (UML, SID, …) • Important for communication between domain experts • Needs “mapping” to data-models • Data Models • Concrete • Means something in reality • Tail-f story • Core-engine driven by data-models • No stubs! • Translators to information models, UML, SID, … • You can execute with the data-model only • CLI • WebUI • Database • … • YANG – RFC 6020 • IETF greybeards • Concrete, precise, semantically rich • Clarity – “anyone” can read • Precision – self documenting • Modular data models • Extensible language • Code generation
  • 7.
    7©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 YANG Example module sys { namespace "urn:sys"; prefix sys; import tailf-common { prefix tailf; } typedef interface-name { type string { length "min .. 30"; pattern "[A-Za-z][^/:.]*"; } }
  • 8.
    8©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 YANG Example (cont.) container sys { container numbers { leaf odd { type int32; default 1; must "(. mod 2) = 1" { error-message "can only be an odd number"; tailf:dependency "."; } } } list ifc { key name; max-elements 1024; leaf name { type interface-name; } leaf enabled { type boolean; default true; }
  • 9.
    9©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 YANG Example (cont.) list labels { key string; max-elements 16; description "A label is an alphanumeric string assigned to an interface. Each interface can have many labels. The purpose here is simply to show a must validation that requires the labels to be unique for all interfaces.”; leaf string { type string { length "1..31"; pattern "[a-zA-Z][a-zA-Z0-9_-]*"; } must "not(/sys:sys/sys:ifc[name = current()])" { error-message "A label can not be the same as an interface name"; tailf:dependency "/sys/ifc/name"; } must "count(/sys/ifc/labels[string = current()]) = 1" { error-message "All labels must be unique"; tailf:dependency "."; }
  • 10.
    10©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 ConfD Overview ConfD NETCONF SNMP REST CLI Web ConfD Core Engine CDB Database Transaction Management Session Management / Authentication Role-based Access Control Audit Trailing Redundancy / Replication Validation (syntactic and semantic) Rollback Management Upgrades and Downgrades Data Provider API CDB API Management Agent API Operational Data Counters Alarms StatisticsMO External Database Operational Data MO Validation API Authentication API Radius PAM TACACS Others Operational Data Operational Data API App AppApp
  • 11.
    11©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 ConfD Overview API lib App IPC (via TCP Sockets) Application Blades Management Blade = Unix/Linux process NETCONF ConfD SNMP REST CLI WEB API lib App API lib App API lib App API libraries available for: C, Erlang, Java, and Python (limited coverage)
  • 12.
    12©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 High Availability NETCONF Management Blade ConfD Configuration Datastore SNMP REST CLI Web “Standby” NETCONF Management Blade ConfD Configuration Datastore SNMP REST CLI Web Data Replication “Active” Application Blade
  • 13.
    13©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 Integrated Database (CDB) NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API App AppApp ConfD Core Engine App External DatabaseOperational Data App • Hierarchical database • ACID test compliant • Atomicity, consistency, isolation, durability • Fast, lightweight, fault-tolerant • Compact binary XML format • Memory resident with journal in persistent storage • Schema automatically derived from YANG • Supports 1:N data replication • Supports automatic schema version up/downgrades • CDB can hold some or all data • Configuration data and/or Operational data • External database can be used in addition to or instead of • Automatic loading of initial data • Applications read data, then subscribe to relevant configuration changes • Subscription notifications with priority level ordering • Multiple datastores per NETCONF standards • Startup, running, candidate, operational
  • 14.
    14©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 NETCONF Interface • IETF RFC 4741/6241 • Full implementation • All mandatory and all optional capabilities • RFC 4742/6242 NETCONF over SSH • Streams XML over SSH • Separates operational data from configuration • Distributed transactions • RFC 5277 NETCONF notifications • Support included for various IETF standardized YANG data models <get-config> <edit-config> <delete-config> <lock> <unlock> <get> <close-session> <kill-session> <commit> <discard-changes> :writeable-running :candidate :confirmed-commit :rollback-on-error :validate :startup :URL :XPath NETCONF OPERATIONS NETCONF CAPABILITIES NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API App AppApp ConfD Core Engine App External DatabaseOperational Data App
  • 15.
    15©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 SNMP Agent • SNMP machine interface • Any combination of v1, v2c, v3 • Supports all operations • Send SNMP notifications (traps) • MIBs implemented by ConfD include: • RFC-3411 (SNMP-FRAMEWORK-MIB) • RFC-3414 (USM) • RFC-3415 (VACM) • RFC-3418 (SNMPv2-MIB) • MIB to YANG translator • YANG to MIB translator NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API App AppApp ConfD Core Engine App External DatabaseOperational Data App
  • 16.
    16©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 Command Line Interface (CLI) • Auto rendering of three CLI styles: • Cisco – XR style • Cisco – legacy IOS style • Juniper – JUNOS style • Rich editing with tab-completion for commands, static elements and dynamic instances • History, hints, help • Extensible with custom/external commands, wizards • Typically runs over SSH NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API App AppApp ConfD Core Engine App External DatabaseOperational Data App
  • 17.
    17©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 Web • JSON RPC API • Access data • Run transactions and rollbacks • Do validation • Execute actions • Access data model schema information • Customer choice of toolsets and frameworks • Preserve existing Web content • Example of how to implement an auto- rendered Web UI provided • Supports HTTP and HTTPS
  • 18.
    18©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 REST • Relies on verbs of transport layer: • HTTP 1.1 • GET : get resources • Selectors : shallow, deep • PUT : replace existing resource • POST : create resource • DELETE : delete resource • PATCH (RFC5789) : modify existing resource • HEAD, OPTIONS • Stateless, client-server • Hyperlinked, just like the web • XML or JSON as data containers • Links to available data-stores and operations NETCONF SNMP REST CLI Web CDB Database Data Provider API CDB API Management Agent API App AppApp ConfD Core Engine App External DatabaseOperational Data App $curl –u admin:admin –s http://localhost:8008/api • /api/running • /api/candidate • /api/operations • /api/operational • /api/rollback
  • 19.
    19©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 Why ConfD Make your customer happy Make your device • Manageable • Programmable • Standards -compliant Save time • Render management interfaces • Model-driven • Iterative development • NETCONF, CLI, SNMP, REST, Web • Transactions and rollbacks • Validations • Configuration and monitoring • No feature lag • Core components • Embedded database • Domain-specific functions • Rich APIs • Well-tested, 70+ customers
  • 20.
    20©2015 Tail-f Systemsall rights reservedFebruary 13, 2015
  • 21.
    21©2015 Tail-f Systemsall rights reservedFebruary 13, 2015 Data ProviderAPI A transaction can be viewed as a conceptual state machine • Phases of a transaction correspond to states • API transaction callback function invocations are state transitions Start Read Prepare Write Validate Abort Commit init() commit() prepare() write_start() trans_lock()trans_unlock() finish() abort() finish() finish() get_next() get_elem() finish() finish() set_elem() create() remove() get_next() get_elem()

Editor's Notes

  • #21 The closing slide may be used with no text or with a short phrase and company web address.