^ (caret symbol), 445
$ (dollar sign), 445
// search operator (XPath), 437
!= operator, 455
3GPP (3rd Generation Partnership Project), 267
AAA (Authorization, Authentication and Accounting), RADIUS, 46
ABORT phase (network-wide transactions), 421
aborted transactions (NETCONF configurations), reasons for, 409
accounting, FCAPS model, 3
ACID tests, 79
input/output parameters, 113
allocate_vlan() method, service logic, 396
Amazon EC2 (Elastic Compute Cloud), 17
ancestor:: axes (XPath), 437
anchor symbols, 445
Andreessen, Mark, 23
ANX (Advanced NETCONF Explorer), 328–329
anydata type, model design, 442–443
anyxml type, model design, 442
APIs (Application Programming Interfaces), 85
applying to complex environments, 19
contract languages, YANG as, 61
data model-driven management, 70
REST APIs and YANG Catalog, 355–356
YANG as native (primary) language, 373
pyangbind, 373
YANG Catalog
application development
metadata
integrating from Yang Catalog, 355–358
retrieving from Yang Catalog, 355–358
NETCONF
parsers
pyang tool
RESTCONF servers, 372
YANG as native (primary) language, 373
pyangbind, 373
YANG Catalog
keyword metadata searches, 357–358
architectures (telemetry), 236–238
assurance, services, 5
asynchronous notifications, NETCONF, 82
AudioZone YANG module, 142–146
augment statements, 142–146, 442
automation, 61
CLI and automation (networking trends), 7–9
DevOPS, networking trends, 11–13
hardware commoditization and disaggregation (networking trends), 7–9
reduced deployment times (networking trends), 6–7
services, 4
axes (XPath), 437
backward compatibility, modules, 434, 437, 457
native modules, 460
rules versus relevancy, 457–459
base (identities), 107
BBF (Broadband Forum), 265
BGP-LS (BGP Link State) distribution, 15
Bierman, Andy, YANG model design, 460–462
bits type, model design, grouping features, 437
blank configurations
invalid blank configurations, 447
BookZone example. See also Store Connect service example
AudioZone YANG module, 142–146
bookzone-example module, 144–145
configuration/operational data, separating, 117–122
containers, 98
identifiers, case-sensitivity, 104
leafs
leafrefs, 103
mandatory values, 98
true values, 98
schemas, representing data in, 97–98
tables, representing data in, 97
YANG modules, first example of, 99–100
boolean types, model design, 440
bottleneck modules, 349
:candidate datastores, 152
capabilities, NETCONF, 81–82, 153
CapabilityRequest operations (gNMI), 215–216
CapEx (Capital Expenditures), 16–17
caret symbol (^), 445
case-sensitivity (identifiers), 104
categorizing data, BookZone example, 106–112
CBOR (Concise Binary Object Representation), 76
choice constraints, 449
Claise, Benoit
CLI and automation, 6
Python, 12
SNMP, 32
CLI (Command-Line Interface), 24–25
automation and CLI (networking trends), 7–9
data-model driven management, CLI scripts, 19–20
limitations of, 25
show commands, 8
VRF, examples of, 25
clients, NETCONF, 159, 160, 161–162
cloning repositories (modules), 283
close-session messages, NETCONF, 189
clouds
elastic clouds
Amazon EC2, 17
managing
service management, 18
system-level management, 17–18
collections, RESTCONF, 202
collectors (telemetry), 237
CoMI (CoAP Management Interface), 84
commit messages, NETCONF, 189
COMMIT phase (network-wide transactions), 421, 422
commit-dry-run, service management, 407–409
commits, service management, 407–409
commoditization (hardware), 9–11
common mistakes/problems, 443
constraints
expression performance, 456–457
mixing up constraints, 454–456
invalid blank configurations, 447
missing ranges, 444
strings
overusing strings, 444
unclear optional leafs, 443
compact mode (Protobufs), 242–243
conditional telemetry, 236
ConfD, testing modules, 340–347
config_e_routers() method, service logic, 396
config_i_routers() method, service logic, 397–398
config_monitoring() method, service logic, 398
configuration datastores, NETCONF, 80
configurations
blank configurations, model design, 435–436
configuration/operational data, separating, 117–122
FCAPS model, 3
NETCONF configurations
aborted transactions, reasons for, 409
listing device capabilities, 400–403
replying to hello messages, 403–404
verifying operation, 400
preconfiguration, 149
publisher configurations and NSO, 406–407
RESTCONF configurations, creating/updating, 201–202
DELETE operations, 206
POST operations, 202–203, 210–211
YANG-PATCH operations, 207–210
SNMP, monitoring versus configuration, 57–58
transient configurations, model design, 442
configured subscriptions (telemetry), 246
CONFIRM phase (network-wide transactions), 422–424
choice constraints, 449
common mistakes/problems
mixing up constraints, 454–456
deref function (), 124
mandatory true constraints, 122–123
max-element constraints, 449
min-elements constraints, 449
must statements, 123–124, 126–127
unique constraints, 449
controllers, management architecture, 69–70
coordination (industry), YANG development, 270–274
copy-config messages, NETCONF, 189
create() method, service logic, 395
CRUDX operations, 82
crypto key pairs, NETCONF configurations, 398–400
curl command, RESTCONF, 194, 207–208, 213
current() function, 126–127, 454
customer experience, services, 4
dark deviations, 441
data model-driven management, 59
advantages of, 19
APIs, 70
applying to complex environments, 19
datastores (server architectures), 77–78, 80
gNMI, protocol comparison table, 78
NETCONF, protocol comparison table, 78
orchestrators, 71
data model-driven telemetry, 86, 231, 325
collectors, 237
conditional telemetry, 236
dial-in/dial-out modes, 241–243
encodings (protocol binding/serialization), 238
events
monitoring versus, 239
NETCONF event notifications, 243–244
YANG event notifications, 245–247
feedback loops, 236
hardware-based telemetry versus, 21–22
mapping data models, 22
monitoring events versus, 239
OpenConfig telemetry
OpenConfig streaming telemetry, 248–249
YANG Push and Friends versus, 247–248
publishers, 237
routers
destination groups, 241
sensor groups, 241
subscriptions, 241
sensor paths, 238
SNMP
data model-driven telemetry versus, 21–22
transitioning to telemetry, 232–235
streaming telemetry, 238 248–249
subscriptions
configured subscriptions, 246
creating, 241
dynamic subscriptions, 246–247
IETF YANG subscriptions, 244–245
on-change subscriptions, 239–241
periodic subscriptions, 239–241
requests, 238
YANG Push and Friends, 244–245, 247–248
data models, 48
information models versus, 39–41, 64
managing networks with different data models, 41–48
UML, 40
data nodes, 130
data tree paths, 450
datastores (server architectures), 77–78
:candidate datastores, 152
NETCONF, 80
:operational datastores, 153–154
pub/sub services, 244
:running datastores, 152
:startup datastores, 152
default and mandatory data, 126–127
default origins (NMDA), 190
default statements, 122–123, 441, 443
DELETE operations, creating/updating RESTCONF configurations, 206
delete-config messages, NETCONF, 189
delivering services, 4
dependencies, YANG modules, 260–262
deployments, reduced deployment times (networking trends), 6–7
deref() function, 124, 453–454, 455
dereferences, 129
derived-from() function, 128
designing modules, 336
testing modules
yanglit tool, 347
destination groups (routers/telemetry), 241
dark deviations, 441
light deviations, 441
model design, 441
device synchronization, 413–417
DevOPS
dial-in/dial-out modes (telemetry), 241–243
directories (modules), 283
disaggregation of software from hardware, 9–11
disconnected multikey leafrefs, 451–454
DMTF (Distributed Management Task Force), 266
documentation, OpenDaylight MD-SAL, 264
dollar sign ($), 445
double slash (//) search operator, 437
downloading pyang tool, 284
DSL (Domain-Specific Languages), 66
EANTC (European Advanced Networking Test Center), interoperability testing, 273
edit-config messages, NETCONF, 176–181
edit-data operations, NMDA, 189, 190
elastic clouds
Amazon EC2, 17
empty leafs, 116
empty types, model design, 440
encodings (protocol binding/serialization), 74
CBOR, 76
Protobufs, 76
telemetry and, 238
XML, 75
enumeration, model design, 437–438
error-message statements, 127
ETSI (European Telecommunication Standards Institute), YANG development, 267
events
NETCONF, 243
event notifications, 243
stream notifications, 244
subscription notifications, 243, 244
telemetry monitoring versus events, 239
YANG event notifications, subscribing to, 245–247
Expect scripts, CLI (Command-Line Interface), 8–9
expenditures
expressions (XPath)
quadratic complexity, 456
extractable/non-extractable metadata, 289
FCAPS model, 3
accounting, 3
automation, 4
benefits of, 3
configurations, 3
faults, 3
performance, 3
FCAPS+E (Energy Management), 4
FD.io, 267
feature statements, 441
feedback loops
telemetry as, 236
finding modules, 283
grep command, 288
flow records, NetFlow and IPFIX
example of flow records, 35–36
Forces (FORwarding and Control Element Separation), 15
get messages, NETCONF, 181–184
get_interface() method, service logic, 397
GetBulk operations, SNMP (Simple Network Management Protocol), 232, 233
get-config messages, NETCONF, 174–176
get-data operations, NMDA (Network Management Datastore Architecture), 189–190
GetNext operation, SNMP (Simple Network Management Protocol), 232, 233
GetRequest operations (gNMI), 216–219
get-schema messages, NETCONF, 189
gNMI (gRPC Network Management Interface), 19, 83–84, 214, 225, 270
CapabilityRequest operations, 215–216
GetRequest operations, 216–219
Protobufs, 76
protocol comparison table, 78
SetRequest operations, 219–224
SubscribeRequest operations, telemetry, 224–225
Google Protobufs. See Protobufs
Goyang, 85
grep command (UNIX), 288
grouping
data, 119
nodes, 130
hardware
data-model driven telemetry versus, 21–22
HATEOAS (Hypermedia As The Engine Of Application State), 191, 195
hello messages
listing device capabilities, 400–403
module-set-id attributes, 403
replying to hello messages, 403–404
identifiers
case-sensitivity, 104
choosing, 435
base, 107
kind-of relations, 438
model design, 438
object-oriented identities, 438
IEEE (Institute of Electrical and Electronics Engineers), 266
IESG (Internet Engineering Steering Group), MIB modules (writable), 33
IETF (Internet Engineering Steering Group), 430
key data model-driven RFCs, 256–257
YANG development
ietf-routing YANG module, 260
key data model-driven RFCs, 256–257
models, 260
module and submodule RFCs, 257–259
modules and submodules extracted from IETF drafts, 259–260
YANG Push and Friends, 246, 247–248
YANG subscriptions and telemetry, 244–245
ietf-interfaces.yang module, 150–151, 152
ietf-routing YANG module, 260
ietf-routing@2018–03–13.yang module, 283–284
if-feature statements, model design, 437–438
ifIndex, defined, 41
impact analysis, 349
implement conformance type, NETCONF hello messages, 403–404
import conformance type, NETCONF hello messages, 403–404
industry coordination, YANG development, 270–272
inequality operator (!=), 455
information models, 48
UML information models, turning into data models, 64
input/output parameters, actions, 113
installing
pyang tool, 284
YANG Suite tool (YANG Catalog), 299
intended origins (NMDA), 190
intent-based networking, networking trends, 22–23
interoperability testing, YANG development, 272–274
invalid blank configurations, 447
IP SLA, performance monitoring/reporting, 8
IPFIX (IP Flow Information Export)
isbn mandatory value (BookZone example), 98, 99
ITU-T (ITU Telecommunication) Standardization Sector, YANG development, 267
JSON (JavaScript Object Notation), 75–76
services, delivery, 4
key data model-driven RFCs, IETF and YANG development, 256–257
key statements, mulitple keys in, 119
key title statements, 98
keys
crypto key pairs, NETCONF configurations, 398–400
keys, 439
model design, choosing keys, 439–440
natural keys, 439
UUID, 439
keyword metadata searches in YANG Catalog, 357–358
kill-session messages, NETCONF, 189
kind-of relations (identities), 438
language native (primary), YANG as
pyangbind, 373
languages
leaf-list, 145
require instance false statements, 436–437
leafs
empty leafs, 116
mandatory leafs, 447
mandatory values, 98
optional leafs, 443
true values, 98
type statements, 98
unclear optional leafs, 443
learned origins (NMDA), 190
light deviations, 441
lists, 98
key statements, mulitple keys in, 119
leaf-list, 145
leafref, 103
NETCONF device capabilities, 400–403
ordered-by users lists, 439
lock messages, NETCONF, 189
logic (services), 394
allocate_vlan() method, 396
config_e_routers() method, 396
config_i_routers() method, 397–398
config_monitoring() method, 398
create() method, 395
get_interface() method, 397
template variables, 396
loops (feedback)
telemetry as, 236
managing
clouds
service management, 18
system-level management, 17–18
services
aborted transactions, reasons for, 409
commit, 409
restoring services, 412
management architecture
operators, 70
orchestrators, 70
RBAC, 70
YANG modules, 70
mandatory leafs, 447
mandatory true constraints, 122–123
mandatory true statements, 443
mandatory values, 98, 123–124, 126–127
mapping
YANG objects from MIB modules, 68–69
YANG-to-RESTCONF mapping, 75–76
max-element constraints, 449
MEF Forum, YANG development, 265, 266
messages
close-session messages, 189
commit messages, 189
copy-config messages, 189
delete-config messages, 189
get-schema messages, 189
kill-session messages, 189
lock messages, 189
overview of, 171
partial-lock messages, 189
validate messages, 189
metadata
extractable/non-extractable metadata, 289
non-extractable/extractable metadata, 289
searching for modules by, by metadata, 288–290
YANG Catalog
MIB modules
SNMP, 30
writable MIB modules, 33
YANG objects, mapping from MIB modules, 68–69
min-elements constraints, 449
missing ranges, 444
mistakes/problems, 443
constraints
expression performance, 456–457
mixing up constraints, 454–456
invalid blank configurations, 447
missing ranges, 444
overusing strings, 444
strings, bad string patterns, 445–446
unclear optional leafs, 443
model-driven telemetry, 86, 231
models
augment statements, 442
bits type, grouping features, 437
boolean types, 440
choosing YAG identifiers, 435
deviation statements, 441
empty types, 440
identities, 438
if-feature statements, 437–438
publishing modules, 434
transient configurations, 442
XPath, 437
modularity, 146
multiple models, implementing for specific functionality, 274–275
YANG models, 61
service YANG models, 70
updating, 260
modularity in YANG models, 146
module
backward compatibility, 434, 437, 457
native modules, 460
rules versus relevancy, 457–459
BookZone example, first example of, 99–100
bottleneck modules, 349
choosing, 283
complexity of, 284
designing, 336
deviation statements, 441
directories, 283
finding, 283
grep command, 288
ietf-routing@2018–03–13.yang module, 283–284
impact analysis, 349
metadata
integrating from Yang Catalog, 355–358
retrieving metadata from Yang Catalog, 355–358
namespace strings, 433
prefix strings, 434
publishing, 434
pyang tool
downloading/installing, 284
printing modules in output formats, 285–287
viewing modules in tree output, 285–287, 305–310, 312–314
repositories
cloning, 283
creating with YANG Suite tool (YANG Catalog), 301
revision statements, 101
semantic versioning, 460
submodules, 440
testing
yanglit tool, 347
viewing details via YANG Catalog, 291–294
YANG
models, network element YANG modules, 69
namespace statements, 100
YANG Catalog
viewing module details, 291–294
YANG Suite tool, 294–298, 301–302
ietf-routing YANG module, 260
module and submodule RFCs, 257–259
module sets, 301
modules and submodules extracted from IETF drafts, 259–260
service delivery YANG modules, 70
module-set-id attributes, NETCONF hello messages, 403
monitoring
SNMP, monitoring versus configuration, 57–58
telemetry, events versus monitoring, 239
mulitple keys in key statements, 119
multiple models, implementing for specific functionality, 274–275
namespace statements
YANG modules, 100
namespace strings, 433
device naming conventions, 385
native modules, backward compatibility, 460
natural keys, 439
NCS. See NSO
asynchronous notifications, 82
client/server interaction, 77–78
configuration datastores, 80
device configuration
aborted transactions, reasons for, 409
listing device capabilities, 400–403
replying to hello messages, 403–404
verifying operation, 400
device synchronization, 413–417
event notifications, 243
event notifications, 243
stream notifications, 244
subscription notifications, 243, 244
hello messages
listing device capabilities, 400–403
module-set-id attributes, 403
replying to hello messages, 403–404
interoperability testing, 273
close-session messages, 189
commit messages, 189
copy-config messages, 189
delete-config messages, 189
get-schema messages, 189
kill-session messages, 189
lock messages, 189
overview of, 171
partial-lock messages, 189
validate messages, 189
netconf-console, 317
determining support for devices, 303–310
displaying operational data, 315–317
gathering configured routing data, 310–312
passing modules to pyang tree view, 312–314
network-wide transactions
ABORT phase, 421
point of no return, 422
:notification capabilities, 186
pre-provisioning, 149
preconfiguration, 149
protocol comparison table, 78
:rollback-on-error capability, 302–322
SDN, 15
security, 82
subsystems, 161
transactions, 78
three-phase transactions, 81–82
attributes, 163
processing instructions, 166
tags, 162
YANG and, 5
YANG Suite tool (YANG Catalog), 299–302
netconf subsystem, 161
netconf-console, 317
configured routing data, gathering, 310–312
operational data, displaying, 315–317
pyang tree view, passing modules to, 312–314
static routes, adding, 314–315
support for devices, determining, 303–310
network diagram, Store Connect service example, 385
network element YANG modules, 69
network management
transitioning from network operators to operations engineers, 60–61
network managers, NETCONF, 159–160
networking trends
data-model driven management, 18–20
data-model driven telemetry, 20–22
elastic clouds (networking trends), 16–18
hardware commoditization and disaggregation, 9–11
intent-based networking, 22–23
“software is eating the world,” 23–24
NFV (Network Function Virtualization), 5
cloud management, 18
Nilsen-Nygaard, Einar, 331–334
NMDA (Network Management Datastore Architecture), 152–154, 171
edit-data operations, 189, 190
origins, 190
NMS (Network Management Systems)
data model-driven management, 70–71
data models, 48
information models, 48
non-extractable/extractable metadata, 289
not() function, 128
:notification capabilities, NETCONF, 186
notifications
event notifications, 113, 116–117, 243–244
SNMP, 232
YANG, event notifications, 245–247
NSO (Network Services Orchestrator), 330, 405
aborted transactions, reasons for, 409
commits, 409
device synchronization, 413–417
hello messages, device synchronization, 413–417
network-wide transactions
ABORT phase, 421
point of no return, 422
publisher configurations, 406–407
restoring services, 412
object-oriented identities, 438
on-change subscriptions (telemetry), 239–241
OOB (Out-Of-Band) changes, NETCONF configurations, 404–405, 409
Open ROADM MSA, 267
open source projects, YANG development, 267–268
Open Source Sysrepo project, 267
OpenConfig
OpenConfig Consortium, 214
streaming telemetry, 86
telemetry
OpenConfig streaming telemetry, 248–249
YANG Push and Friends versus, 247–248
OpenDaylight Project, The, 14
OpenDaylight MD-SAL documentation, 264
OpenFlow, 14
:operational datastore, 153–154
operational state, services, 409–410
operational telemetry, 231, 232
operations
CRUDX operations, 82
separating configuration/operational data, 117–122
operators, management architecture, 70
OpEx (Operating Expenditures), 16–17, 24
optional leafs, 443
orchestrators
data model-driven management, 71
management architecture, 70
ordered-by user lists, 439
origins, NMDA (Network Management Datastore Architecture), 190
output nodes, 130
overusing strings, 444
OVSDB (Open vSwitch Database) management protocol, 14
parsers, building with
partial-lock messages, NETCONF, 189
PATCH operations, creating/updating RESTCONF configurations, 205–206
PCEP (Path Computation Element Communication), 14
performance
FCAPS model, 3
IP SLA, 8
SNMP, 30
periodic subscriptions (telemetry), 239–241
perl-regex, 445
ping operations, 184
point of no return (transactions), 422
POST operations, creating/updating RESTCONF configurations, 202–203, 210–211
pre-provisioning, 149
preceeding-sibling:: axes (XPath), 437
preconfigurations, 149
predictates, 129
prefix strings, 434
prefixes, namespace statements, 100–101
PREPARE phase (network-wide transactions), 417–421
primary language, YANG as, 373
pyangbind, 373
printing modules in output formats, pyang tool, 285–287
problems/mistakes, 443
constraints
expression performance, 456–457
mixing up constraints, 454–456
invalid blank configurations, 447
missing ranges, 444
overusing strings, 444
strings, bad string patterns, 445–446
unclear optional leafs, 443
Protobufs, 76
protocols
binding. See encodings
gNMI, protocol comparison table, 78
NETCONF, protocol comparison table, 78
RESTCONF, protocol comparison table, 78
provisioning, 149
pub/sub services, 244
publishers (telemetry), 237
publishing modules, 434
PUT operations, creating/updating RESTCONF configurations, 203–204
pyang tool
backward compatibility, 459–460
downloading/installing, 284
printing modules in output formats, 285–287
tree output, viewing modules in, 285–287, 305–310, 312–314
Netconf-console, 317
configured routing data, gathering, 310–312
operational data, displaying, 315–317
pyang tree view, passing modules to, 312–314
static routes, adding, 314–315
support for devices, determining, 303–310
pyang tool
YANG Catalog, retrieving metadata, 357
python-regex, 445
quadratic complexity (expressions), 456
RADIUS (Remote Authentication Dial-In User Service), 46, 48
ranges (missing), 444
RBAC (Role-Based Access Control), 70
reduced deployment times (networking trends), 6–7
regex patterns, 445
repositories (modules)
cloning, 283
creating, YANG Suite tool (YANG Catalog), 301
require instance false statements, 390, 436–437
REST APIs and YANG Catalog, 355–356
calls
as transactions, 83
validation, 83
collections, 202
configurations, creating/updating, 201–202
DELETE operations, 206
POST operations, 202–203, 210–211
YANG-PATCH operations, 207–210
curl command, 194, 207–208, 213
data-model driven management, 63–64
operations, CRUDX operations, 82
protocol comparison table, 78
resources, reading/navigating, 194–201
YANG-to-RESTCONF mapping, 75–76
restoring services, 412
revision statements, 101, 109–112, 116–117
RFCs (Remote Function Calls)
key data model-driven RFCs, 256–257
RFC 3444, 64
RFC 3535, 56–58, 65, 90–91, 159, 222
RFC 5277, 243–244, 245–246, 247
RFC 6020, 63
RFC 6242, 159
RFC 6244, 65
RFC 6643, 69
RFC 7047, 14
RFC 7049, 76
RFC 7252, 84
RFC 7650, 63
RFC 8259, 75
RFC 8340, 103
RFC 8341, 70
RFC 8343, 152
RFC 8407, 430
YANG module and submodule RFCs, 257–259
ROADM, Open ROADM MSA and YANG development, 267
:rollback-on-error capability, NETCONF, 302–322
routers, telemetry
destination groups, 241
sensor groups, 241
subscriptions, 241
RPCs (Remote Procedure Calls), 113–116
NETCONF, 160, 166–169, 184–185
ping operations, 184
setup-interface operations, 184
YANG Suite tool (YANG Catalog), 294–298
:running datastore, 152
schemas, 63
defined, 63
get-schema messages, NETCONF, 189
instance data and, 97
tree paths, 450
XSD, 75
scripts, YANG Suite tool (YANG Catalog), 294–298
SDN (Software-Defined Networking), 4–5, 15
BGP-LS distribution, 15
as control plane separation paradigm, 15
Forces, 15
NETCONF/YANG, 15
OpenFlow, 14
PCEP, 14
SDOs, YANG development, 267–268
search API, YANG Catalog, 357–358
searching
// search operator (XPath), 437
modules
grep command, 288
YANG Catalog, YANG Search feature, 288–290
YANG Catalog, keyword metadata searches, 357–358
security
NETCONF, 82
self-describing mode (Protobufs), 242–243
semantic versioning, 460
sensor groups (routers/telemetry), 241
sensor paths, telemetry architectures, 238
serialization. See encodings
servers
architectures (datastores), 77–78
:candidate datastore, 152
:operational datastore, 153–154
:running datastore, 152
:startup datastore, 152
NETCONF, 80
pub/sub services, 244
RESTCONF servers, 193–194, 372
service delivery YANG modules, 70
service YANG models, 70
services
assurance, 5
automation, 4
bottom-up device templates, service development, 392–394
cloud management, 18
customer experience, 4
delivery, 4
deploying, reduced deployment times (networking trends), 7
device synchronization, 413–417
logic, 394
allocate_vlan() method, 396
config_e_routers() method, 396
config_i_routers() method, 397–398
config_monitoring() method, 398
create() method, 395
get_interface() method, 397
template variables, 396
managing
aborted transactions, reasons for, 409
commits, 409
restoring services, 412
network-wide transactions
ABORT phase, 421
point of no return, 422
NSO, 330
pub/sub services, 244
Store Connect service example, 385
bottom-up device templates, 392–394
device naming conventions, 385
network diagram, 385
networking staff tasks, 386
top-down service development, 386–392
top-down service development, 386–392
SetRequest operations (gNMI), 219–224
setup-interface operations, 184
SFC (Service Function Chaining), 4–5
sftp subsystems, 161
sharing module metadata, 347–349
show commands
CLI, 8
show interface command, 44
SNMP (Simple Network Management Protocol), 27, 32, 158–159
basic model, 28
correlating with syslog messages, 45
interface table, 233
monitoring versus configuration, 57–58
notifications, 232
performance, 30
requirements for, 30
SNMPsec, 27
SNMPv2c, 27
SNMPv2p, 27
SNMPv2u, 27
telemetry
data-model driven telemetry versus SNMP, 21–22
uses of, 29
software
Andreessen, Mark, 23
BGP-LS distribution, 15
as control plane separation paradigm, 15
Forces, 15
NETCONF/YANG, 15
OpenFlow, 14
PCEP, 14
“software is eating the world” (networking trends), 23–24
splitting functionality, 146
SSH (Secure Shell)
subsystems, sftp, 161
:startup datastore, 152
status deprecated statements, 458–459
status obsolete statements, 458–459
Store Connect service example, 385. See also BookZone example
device naming conventions, 385
device synchronization, 413–417
network diagram, 385
networking staff tasks, 386
network-wide transactions
ABORT phase, 421
point of no return, 422
service development
bottom-up device templates, 392–394
service management
aborted transactions, reasons for, 409
commits, 409
restoring services, 412
stream notifications (NETCONF), 244
streaming telemetry, 238, 248–249
overusing strings, 444
subclassing, 107
submodules, 440
submodules extracted from IETF drafts, 259–260
SubscribeRequest operations (gNMI), telemetry, 224–225
subscription notifications (NETCONF), 243, 244
subscriptions (telemetry)
configured subscriptions, 246
creating, 241
dynamic subscriptions, 246–247
IETF YANG subscriptions, 244–245
on-change subscriptions, 239–241
periodic subscriptions, 239–241
requests, 238
subsystems
NETCONF, 161
SSH, sftp, 161
synchronization (devices), 413–417
“syntactic sugar,” 454
synthetic keys, 439
basic model, 38
defined, 38
limitations of, 39
messages, correlating SNMP with, 45
Sysrepo, YANG development, 267
system origins (NMDA), 190
tables
categorizing data, 106
representing data in, 97
TACACS+ (Terminal Access Controller Access-Control System Plus), 47–48
collectors, 237
conditional telemetry, 236
data-model driven telemetry
defined, 21
hardware-based telemetry versus, 21–22
mapping data models, 22
dial-in/dial-out modes, 241–243
encodings (protocol binding/serialization), 238
events
monitoring versus, 239
NETCONF event notifications, 243–244
YANG event notifications, 245–247
feedback loops, 236
hardware-based telemetry versus data-model driven telemetry, 21–22
model-driven telemetry, 86, 231
monitoring, events versus, 239
OpenConfig telemetry
OpenConfig streaming telemetry, 86, 248–249
YANG Push and Friends versus, 247–248
operational telemetry, 231, 232
publishers, 237
routers
destination groups, 241
sensor groups, 241
subscriptions, 241
sensor paths, 238
SNMP, transitioning to telemetry, 232–235
streaming telemetry, 238, 248–249
SubscribeRequest operations (gNMI), 224–225
subscriptions
on-change subscriptions, 239–241
configured subscriptions, 246
creating, 241
dynamic subscriptions, 246–247
IETF YANG subscriptions, 244–245
periodic subscriptions, 239–241
requests, 238
YANG Push and Friends, 244–245, 247–248
templates
bottom-up device templates, service development, 392–394
services, variables, 396
testing
interoperability testing, 272–274
modules
yanglit tool, 347
title mandatory value (BookZone example), 98, 99
top-down service development, 386–392
transactions (NETCONF), 78
three-phase transactions, 81–82
transient configurations, model design, 442
tree diagrams, with XPath navigation, 124–125
tree output view
tree representations, 102–103, 150–151
true values, 98
type statements, 98
typedef, reusing groupings, 440
UDP (User Datagram Protocol), SNMP and, 233–234
UML (Unified Modeling Language), 40, 64
unclear optional leafs, 443
union YANG construct, type definitions, 105
unique constraints, 449
unique statements, 125–126, 456–457
unknown origins (NMDA), 190
updating YANG models, 260
URL (Uniform Resource Locators)
server URL finding in RESTCONF, 193–194
uses nodes, 130
UUID (Universally Unique Identifiers), 439
validation
RESTCONF calls, 83
validate messages, NETCONF, 189
YANGRE, 340
versioning, 146
virtualization
VNF, 5
VRF (Virtual Routing and Forwarding) and CLI, 25
W3C-regex, 445
Ward, David, 15
when statements, 127
writable MIB modules, 33
XML (Extensible Markup Language), 75
attributes, 163
processing instructions, 166
tags, 162
XSD, 75
// search operator, 437
axes, 437
common mistakes/problems
mixing up constraints, 454–456
current() function, 126–127, 454
data tree paths, 450
deref() function, 124, 453–454, 455
derived-from() function, 128
expressions
quadratic complexity, 456
inequality operator (!=), 455
model design, 437
not() function, 128
predictates, 129
schema tree paths, 450
XPath 1.0, 437
xRAN, 267
XSD (XML Schema Description), 75
YANG, 63
3GPP and YANG development, 267
as API contract language, 61
bases (identities), 107
basic model, 61
BBF and YANG development, 265
case nodes, 115
choice nodes, 115
mandatory true constraints, 122–123
must statements, 123–124, 126–127
3GPP and, 267
BBF and, 265
DMTF and, 266
ETSI and, 267
FD.io and, 267
IEEE and, 266
industry coordination, 270–272
interoperability testing, 272–274
ITU-T Standardization Sector, 267
Open ROADM MSA and, 267
OpenDaylight Project, The, 263–264
Sysrepo and, 267
xRAN and, 267
DMTF and YANG development, 266
ETSI and YANG development, 267
events
notifications, 113, 116–117, 245–247
FD.io and YANG development, 267
functions of, 62
grouping data, 119
identifiers, case-sensitivity, 104
bases, 107
IEEE and YANG development, 266
IETF and YANG development
ietf-routing YANG module, 260
key data model-driven RFCs, 256–257
models, 260
module and submodule RFCs, 257–259
modules and submodules extracted from IETF drafts, 259–260
industry coordination, 270–272
interoperability testing, 272–274
ITU-T and YANG development, 267
key title statements, 98
language native (primary), making, 373
leafrefs, 103
leafs, 98
empty leafs, 116
mandatory values, 98
true values, 98
type statements, 98
MEF Forum and YANG development, 265, 266
models, 61
modularity, 146
service YANG models, 70
updating, 260
ietf-routing YANG module, 260
module and submodule RFCs, 257–259
modules and submodules extracted from IETF drafts, 259–260
namespace statements, 100
network element YANG modules, 69
revision statements, 101
service delivery YANG modules, 70
must statements, 123–124, 126–127
notifications (event), 113, 116–117, 245–247
objects, mapping from MIB modules, 68–69
Open ROADM MSA and YANG development, 267
open source projects and YANG development, 267–268
OpenDaylight Project and Yang development, 263–264
operators requirements, 65
parsers, building with pyang tool, 359–361
RESTCONF, YANG-to-RESTCONF mapping, 75–76
revision statements, 109–112, 116–117
SDOs and YANG development, 267–268
subclassing, 107
Sysrepo and YANG development, 267
tree diagrams, with XPath navigation, 124–125
union YANG construct, 105
uses statements, 119
xRAN and YANG development, 267
YANG-PATCH operations (RESTCONF), 207–210
YANG Catalog, 272
finding modules, 287
impact analysis, 349
metadata
modules
impact analysis, 349
retrieving metadata from Yang Catalog, 355–358
viewing module details, 291–294
YANG Push and Friends, 244–245, 247–248
YANG Search feature (YANG Catalog)
extractable/non-extractable metadata, 289
searching modules by metadata, 288–290
YANG Suite tool (YANG Catalog), 294–298, 299, 302
distributions, 299
installing, 299
repositories (modules), creating, 301
YANG module sets, 301
yanglit tool, testing modules, 347
YANG-PATCH operations, creating/updating RESTCONF configurations, 207–210
YANGRE, YANG module validation, 340
YDK (YANG Development Kit), 85
goal of, 71
YANG as native (primary) language, 373–378
ydk-gen (YDK Generator), 377–378
Ygot (YANG go tool), 85
3.16.15.149