draft-ietf-babel-yang-model-04.txt   draft-ietf-babel-yang-model-05.txt 
Babel Working Group M. Jethanandani Babel Working Group M. Jethanandani
Internet-Draft VMware Internet-Draft VMware
Intended status: Standards Track B. Stark Intended status: Standards Track B. Stark
Expires: April 20, 2020 AT&T Expires: July 10, 2020 AT&T
October 18, 2019 January 7, 2020
YANG Data Model for Babel YANG Data Model for Babel
draft-ietf-babel-yang-model-04 draft-ietf-babel-yang-model-05
Abstract Abstract
This document defines a data model for the Babel routing protocol. This document defines a data model for the Babel routing protocol.
The data model is defined using the YANG data modeling language. The data model is defined using the YANG data modeling language.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 20, 2020. This Internet-Draft will expire on July 10, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Note to RFC Editor . . . . . . . . . . . . . . . . . . . 2 1.1. Note to RFC Editor . . . . . . . . . . . . . . . . . . . 2
1.2. Tree Diagram Annotations . . . . . . . . . . . . . . . . 3 1.2. Tree Diagram Annotations . . . . . . . . . . . . . . . . 3
2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3 2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3
2.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3
2.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 5 2.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 4
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 30 3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 29
3.2. YANG Module Name Registration . . . . . . . . . . . . . . 30 3.2. YANG Module Name Registration . . . . . . . . . . . . . . 29
4. Security Considerations . . . . . . . . . . . . . . . . . . . 30 4. Security Considerations . . . . . . . . . . . . . . . . . . . 29
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.1. Normative References . . . . . . . . . . . . . . . . . . 31 6.1. Normative References . . . . . . . . . . . . . . . . . . 30
6.2. Informative References . . . . . . . . . . . . . . . . . 32 6.2. Informative References . . . . . . . . . . . . . . . . . 31
Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 33 Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 32
A.1. Statistics Gathering Enabled . . . . . . . . . . . . . . 33 A.1. Statistics Gathering Enabled . . . . . . . . . . . . . . 32
A.2. Automatic Detection of Properties . . . . . . . . . . . . 34 A.2. Automatic Detection of Properties . . . . . . . . . . . . 34
A.3. Override Default Properties . . . . . . . . . . . . . . . 35 A.3. Override Default Properties . . . . . . . . . . . . . . . 35
A.4. Configuring other Properties . . . . . . . . . . . . . . 37 A.4. Configuring other Properties . . . . . . . . . . . . . . 36
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38
1. Introduction 1. Introduction
This document defines a data model for the Babel routing protocol This document defines a data model for the Babel routing protocol
[I-D.ietf-babel-rfc6126bis]. The data model is defined using YANG [I-D.ietf-babel-rfc6126bis]. The data model is defined using YANG
1.1 [RFC7950] data modeling language and is Network Management 1.1 [RFC7950] data modeling language and is Network Management
Datastore Architecture (NDMA) [RFC8342] compatible. It is based on Datastore Architecture (NDMA) [RFC8342] compatible. It is based on
the Babel Information Model [I-D.ietf-babel-information-model]. the Babel Information Model [I-D.ietf-babel-information-model].
skipping to change at page 3, line 8 skipping to change at page 3, line 8
Artwork in this document contains shorthand references to drafts in Artwork in this document contains shorthand references to drafts in
progress. Please apply the following replacements and remove this progress. Please apply the following replacements and remove this
note before publication. note before publication.
o "XXXX" --> the assigned RFC value for this draft both in this o "XXXX" --> the assigned RFC value for this draft both in this
draft and in the YANG models under the revision statement. draft and in the YANG models under the revision statement.
o "ZZZZ" --> the assigned RFC value for Babel Information Model o "ZZZZ" --> the assigned RFC value for Babel Information Model
[I-D.ietf-babel-information-model] [I-D.ietf-babel-information-model]
o Revision date in model, in the format 2019-10-18 needs to get o Revision date in model, in the format 2020-01-07 needs to get
updated with the date the draft gets approved. The date also updated with the date the draft gets approved. The date also
needs to get reflected on the line with <CODE BEGINS>. needs to get reflected on the line with <CODE BEGINS>.
1.2. Tree Diagram Annotations 1.2. Tree Diagram Annotations
For a reference to the annotations used in tree diagrams included in For a reference to the annotations used in tree diagrams included in
this draft, please see YANG Tree Diagrams [RFC8340]. this draft, please see YANG Tree Diagrams [RFC8340].
2. Babel Module 2. Babel Module
skipping to change at page 4, line 9 skipping to change at page 4, line 9
The following diagram illustrates a top level hierarchy of the model. The following diagram illustrates a top level hierarchy of the model.
In addition to information like the version number implemented by In addition to information like the version number implemented by
this device, the model contains subtrees on constants, interfaces, this device, the model contains subtrees on constants, interfaces,
routes and security. routes and security.
module: ietf-babel module: ietf-babel
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw babel! +--rw babel!
+--ro version? string +--ro version? string
+--rw enable boolean +--rw enable boolean
+--ro router-id? binary +--ro router-id? binary
+--ro seqno? uint16 +--ro seqno? uint16
+--ro metric-comp-algorithms* identityref +--rw stats-enable? boolean
+--ro security-supported* identityref
+--ro mac-algorithms* identityref
+--ro dtls-cert-types* identityref
+--rw stats-enable? boolean
+--rw constants +--rw constants
| ... | ...
+--rw interfaces* [reference] +--rw interfaces* [reference]
| ... | ...
+--rw mac* [name] +--rw mac* [name]
| ... | ...
+--rw dtls* [name] +--rw dtls* [name]
| ... | ...
+--ro routes* [prefix] +--ro routes* [prefix]
... ...
skipping to change at page 5, line 40 skipping to change at page 5, line 33
In addition to the modules used above, this module imports In addition to the modules used above, this module imports
definitions from Common YANG Data Types [RFC6991], and references definitions from Common YANG Data Types [RFC6991], and references
HMAC: Keyed-Hashing for Message Authentication [RFC2104], Using HMAC- HMAC: Keyed-Hashing for Message Authentication [RFC2104], Using HMAC-
SHA-256, HMAC-SHA-384, and HMAC-SHA-512 [RFC4868], Datagram Transport SHA-256, HMAC-SHA-384, and HMAC-SHA-512 [RFC4868], Datagram Transport
Layer Security Version 1.2 [RFC6347], The Blake2 Cryptographic Hash Layer Security Version 1.2 [RFC6347], The Blake2 Cryptographic Hash
and Message Authentication Code (MAC) [RFC7693], Babel Information and Message Authentication Code (MAC) [RFC7693], Babel Information
Model [I-D.ietf-babel-information-model], and The Babel Routing Model [I-D.ietf-babel-information-model], and The Babel Routing
Protocol [I-D.ietf-babel-rfc6126bis]. Protocol [I-D.ietf-babel-rfc6126bis].
<CODE BEGINS> file "ietf-babel@2019-10-18.yang" <CODE BEGINS> file "ietf-babel@2020-01-07.yang"
module ietf-babel { module ietf-babel {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-babel"; namespace "urn:ietf:params:xml:ns:yang:ietf-babel";
prefix babel; prefix babel;
import ietf-yang-types { import ietf-yang-types {
prefix yt; prefix yt;
reference reference
"RFC 6991: Common YANG Data Types."; "RFC 6991: Common YANG Data Types.";
skipping to change at page 6, line 41 skipping to change at page 6, line 35
description description
"This YANG module defines a model for the Babel routing "This YANG module defines a model for the Babel routing
protocol. protocol.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. they appear in all capitals, as shown here.
Copyright (c) 2019 IETF Trust and the persons identified as Copyright (c) 2020 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices."; for full legal notices.";
revision 2019-10-18 { revision 2020-01-07 {
description description
"Initial version."; "Initial version.";
reference reference
"RFC XXXX: Babel YANG Data Model."; "RFC XXXX: Babel YANG Data Model.";
} }
/* /*
* Features * Features
*/ */
feature two-out-of-three-supported { feature two-out-of-three-supported {
description description
"This implementation can support two-out-of-three metric "This implementation supports two-out-of-three metric
comp algorithm."; comp algorithm.";
} }
feature etx-supported { feature etx-supported {
description description
"This implementation can support Expected Transmission Count "This implementation supports Expected Transmission Count
(ETX) metric comp algorithm."; (ETX) metric comp algorithm.";
} }
feature mac-supported {
description
"This implementation supports MAC based security.";
}
feature dtls-supported {
description
"This implementation supports DTLS based security.";
}
feature hmac-sha256-supported {
description
"This implementation supports hmac-sha256 MAC algorithm.";
}
feature blake2s-supported {
description
"This implementation supports blake2 MAC algorithm.";
}
feature x-509-supported {
description
"This implementation supports x-509 certificate type.";
}
feature raw-public-key-supported {
description
"This implementation supports raw-public-key certificate type.";
}
/* /*
* Identities * Identities
*/ */
identity metric-comp-algorithms { identity metric-comp-algorithms {
description description
"Base identity from which all Babel metric comp algorithms "Base identity from which all Babel metric comp algorithms
are derived."; are derived.";
} }
identity two-out-of-three { identity two-out-of-three {
skipping to change at page 8, line 4 skipping to change at page 8, line 26
description description
"2-out-of-3 algorithm."; "2-out-of-3 algorithm.";
} }
identity etx { identity etx {
base "metric-comp-algorithms"; base "metric-comp-algorithms";
if-feature etx-supported; if-feature etx-supported;
description description
"Expected Transmission Count."; "Expected Transmission Count.";
} }
/*
* Babel security type identities
*/
identity security-supported {
description
"Base identity from which all Babel security types are
derived.";
}
identity mac {
base security-supported;
description
"Keyed MAC supported.";
}
identity dtls {
base security-supported;
description
"Datagram Transport Layer Security (DTLS) supported.";
reference
"RFC 6347, Datagram Transport Layer Security Version 1.2.";
}
/* /*
* Babel MAC algorithms identities. * Babel MAC algorithms identities.
*/ */
identity mac-algorithms { identity mac-algorithms {
description description
"Base identity for all Babel MAC algorithms."; "Base identity for all Babel MAC algorithms.";
} }
identity hmac-sha256 { identity hmac-sha256 {
base mac-algorithms; base mac-algorithms;
if-feature mac-supported;
if-feature hmac-sha256-supported;
description description
"HMAC-SHA256 algorithm supported."; "HMAC-SHA256 algorithm supported.";
reference reference
"RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
with IPsec."; with IPsec.";
} }
identity blake2s { identity blake2s {
base mac-algorithms; base mac-algorithms;
if-feature mac-supported;
if-feature blake2s-supported;
description description
"BLAKE2s algorithm supported."; "BLAKE2s algorithm supported.";
reference reference
"RFC 7693: The BLAKE2 Cryptographic Hash and Message "RFC 7693: The BLAKE2 Cryptographic Hash and Message
Authentication Code (MAC)."; Authentication Code (MAC).";
} }
/* /*
* Babel Cert Types * Babel Cert Types
*/ */
identity dtls-cert-types { identity dtls-cert-types {
description description
"Base identity for Babel DTLS certificate types."; "Base identity for Babel DTLS certificate types.";
} }
identity x-509 { identity x-509 {
base dtls-cert-types; base dtls-cert-types;
skipping to change at page 9, line 14 skipping to change at page 9, line 20
/* /*
* Babel Cert Types * Babel Cert Types
*/ */
identity dtls-cert-types { identity dtls-cert-types {
description description
"Base identity for Babel DTLS certificate types."; "Base identity for Babel DTLS certificate types.";
} }
identity x-509 { identity x-509 {
base dtls-cert-types; base dtls-cert-types;
if-feature dtls-supported;
if-feature x-509-supported;
description description
"X.509 certificate type."; "X.509 certificate type.";
} }
identity raw-public-key { identity raw-public-key {
base dtls-cert-types; base dtls-cert-types;
if-feature dtls-supported;
if-feature raw-public-key-supported;
description description
"Raw Public Key type."; "Raw Public Key type.";
} }
/* /*
* Babel routing protocol identity. * Babel routing protocol identity.
*/ */
identity babel { identity babel {
base "rt:routing-protocol"; base "rt:routing-protocol";
description description
skipping to change at page 13, line 30 skipping to change at page 13, line 39
leaf seqno { leaf seqno {
type uint16; type uint16;
config false; config false;
description description
"Sequence number included in route updates for routes "Sequence number included in route updates for routes
originated by this node."; originated by this node.";
reference reference
"RFC ZZZZ: Babel Information Model, Section 3.1."; "RFC ZZZZ: Babel Information Model, Section 3.1.";
} }
leaf-list metric-comp-algorithms {
type identityref {
base "metric-comp-algorithms";
}
config false;
min-elements 1;
description
"List of cost compute algorithms supported by this
implementation of Babel.";
reference
"RFC ZZZZ: Babel Information Model, Section 3.1.";
}
leaf-list security-supported {
type identityref {
base "security-supported";
}
config false;
min-elements 1;
description
"List of supported security mechanisms.";
reference
"RFC ZZZZ: Babel Information Model, Section 3.1.";
}
leaf-list mac-algorithms {
type identityref {
base mac-algorithms;
}
config false;
description
"List of supported MAC computation algorithms. Possible
values include 'HMAC-SHA256', 'BLAKE2s'.";
reference
"RFC ZZZZ: Babel Information Model, Section 3.1.";
}
leaf-list dtls-cert-types {
type identityref {
base dtls-cert-types;
}
config false;
description
"List of supported DTLS certificate types. Possible values
include 'X.509' and 'RawPublicKey'.";
reference
"RFC ZZZZ: Babel Information Model, Section 3.1.";
}
leaf stats-enable { leaf stats-enable {
type boolean; type boolean;
description description
"Indicates whether statistics collection is enabled (true) "Indicates whether statistics collection is enabled (true)
or disabled (false) on all interfaces."; or disabled (false) on all interfaces.";
} }
container constants { container constants {
description description
"Babel Constants object."; "Babel Constants object.";
skipping to change at page 31, line 44 skipping to change at page 30, line 44
Juliusz Chroboczek provided most of the example configurations for Juliusz Chroboczek provided most of the example configurations for
babel that are shown in the Appendix. babel that are shown in the Appendix.
6. References 6. References
6.1. Normative References 6.1. Normative References
[I-D.ietf-babel-rfc6126bis] [I-D.ietf-babel-rfc6126bis]
Chroboczek, J. and D. Schinazi, "The Babel Routing Chroboczek, J. and D. Schinazi, "The Babel Routing
Protocol", draft-ietf-babel-rfc6126bis-14 (work in Protocol", draft-ietf-babel-rfc6126bis-16 (work in
progress), August 2019. progress), December 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC4868] Kelly, S. and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA- [RFC4868] Kelly, S. and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA-
384, and HMAC-SHA-512 with IPsec", RFC 4868, 384, and HMAC-SHA-512 with IPsec", RFC 4868,
DOI 10.17487/RFC4868, May 2007, DOI 10.17487/RFC4868, May 2007,
<https://www.rfc-editor.org/info/rfc4868>. <https://www.rfc-editor.org/info/rfc4868>.
skipping to change at page 33, line 49 skipping to change at page 32, line 49
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
Appendix A. An Appendix Appendix A. An Appendix
This section is devoted to examples that demonstrate how Babel can be This section is devoted to examples that demonstrate how Babel can be
configured. configured.
A.1. Statistics Gathering Enabled A.1. Statistics Gathering Enabled
In this example, interface eth0 is being configured for routing In this example, interface eth0 is being configured for routing
protocol Babel, and statistics gathering is enabled. protocol Babel, and statistics gathering is enabled. For security,
HMAC-SHA256 is supported. Every sent Babel packets is signed with
the key value provided, and every received Babel packet is verified
with the same key value.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
<interface> <interface>
<name>eth0</name> <name>eth0</name>
<type>ianaift:ethernetCsmacd</type> <type>ianaift:ethernetCsmacd</type>
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
</interfaces> </interfaces>
<routing <routing
xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type <type
xmlns:babel="urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel xmlns:babel=
</type> "urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel
<name>name:babel</name> </type>
<babel <name>name:babel</name>
xmlns="urn:ietf:params:xml:ns:yang:ietf-babel"> <babel
<enable>true</enable> xmlns="urn:ietf:params:xml:ns:yang:ietf-babel">
<interfaces> <enable>true</enable>
<reference>eth0</reference> <stats-enable>true</stats-enable>
<metric-algorithm>two-out-of-three</metric-algorithm> <interfaces>
<split-horizon>true</split-horizon> <reference>eth0</reference>
</interfaces> <metric-algorithm>two-out-of-three</metric-algorithm>
<stats-enable>true</stats-enable> <split-horizon>true</split-horizon>
</babel> </interfaces>
</control-plane-protocol> <mac>
</control-plane-protocols> <name>hmac-sha256</name>
</routing> <keys>
</config> <name>hmac-sha256-keys</name>
<use-sign>true</use-sign>
<use-verify>true</use-verify>
<value>base64encodedvalue==</value>
<algorithm>hmac-sha256</algorithm>
</keys>
</mac>
</babel>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
A.2. Automatic Detection of Properties A.2. Automatic Detection of Properties
<!-- In this example, babeld is configured on two interfaces <!-- In this example, babeld is configured on two interfaces
interface eth0 interface eth0
interface wlan0 interface wlan0
This says to run Babel on interfaces eth0 and wlan0. Babeld will This says to run Babel on interfaces eth0 and wlan0. Babeld will
automatically detect that eth0 is wired and wlan0 is wireless, and automatically detect that eth0 is wired and wlan0 is wireless, and
will configure the right parameters automatically. will configure the right parameters automatically.
-->
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
<interface> <interface>
<name>eth0</name> <name>eth0</name>
<type>ianaift:ethernetCsmacd</type> <type>ianaift:ethernetCsmacd</type>
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
<interface> <interface>
<name>wlan0</name> <name>wlan0</name>
<type>ianaift:ieee80211</type> <type>ianaift:ieee80211</type>
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
</interfaces> </interfaces>
<routing <routing
xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type <type
xmlns:babel="urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel xmlns:babel=
</type> "urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel
<name>name:babel</name> </type>
<babel <name>name:babel</name>
xmlns="urn:ietf:params:xml:ns:yang:ietf-babel"> <babel
<enable>true</enable> xmlns="urn:ietf:params:xml:ns:yang:ietf-babel">
<interfaces> <enable>true</enable>
<reference>eth0</reference> <interfaces>
<enable>true</enable> <reference>eth0</reference>
<metric-algorithm>two-out-of-three</metric-algorithm> <enable>true</enable>
<split-horizon>true</split-horizon> <metric-algorithm>two-out-of-three</metric-algorithm>
</interfaces> <split-horizon>true</split-horizon>
<interfaces> </interfaces>
<reference>wlan0</reference> <interfaces>
<enable>true</enable> <reference>wlan0</reference>
<metric-algorithm>etx</metric-algorithm> <enable>true</enable>
<split-horizon>false</split-horizon> <metric-algorithm>etx</metric-algorithm>
</interfaces> <split-horizon>false</split-horizon>
</babel> </interfaces>
</control-plane-protocol> </babel>
</control-plane-protocols> </control-plane-protocol>
</routing> </control-plane-protocols>
</config> </routing>
</config>
A.3. Override Default Properties A.3. Override Default Properties
<!-- In this example, babeld is configured on three interfaces <!-- In this example, babeld is configured on three interfaces
interface eth0 interface eth0
interface eth1 type wireless interface eth1 type wireless
interface tun0 type tunnel interface tun0 type tunnel
Here, interface eth1 is an Ethernet bridged to a wireless radio, so
babeld's autodetection fails, and the interface type needs to be
configured manually. Tunnels are not detected automatically, so this
needs to be specified.
This is equivalent to the following: Here, interface eth1 is an Ethernet bridged to a wireless radio, so
babeld's autodetection fails, and the interface type needs to be
configured manually. Tunnels are not detected automatically, so this
needs to be specified.
interface eth0 metric-algorithm 2-out-of-3 split-horizon true This is equivalent to the following:
interface eth1 metric-algorithm etx split-horizon false
interface tun0 metric-algorithm 2-out-of-3 split-horizon true
<?xml version="1.0" encoding="UTF-8"?> interface eth0 metric-algorithm 2-out-of-3 split-horizon true
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> interface eth1 metric-algorithm etx split-horizon false
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" interface tun0 metric-algorithm 2-out-of-3 split-horizon true
xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> -->
<interface>
<name>eth0</name>
<type>ianaift:ethernetCsmacd</type>
<enabled>true</enabled>
</interface>
<interface>
<name>eth1</name>
<type>ianaift:ethernetCsmacd</type>
<enabled>true</enabled>
</interface>
<interface>
<name>tun0</name>
<type>ianaift:tunnel</type>
<enabled>true</enabled>
</interface>
</interfaces>
<routing
xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols>
<control-plane-protocol>
<type
xmlns:babel="urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel
</type>
<name>name:babel</name>
<babel
xmlns="urn:ietf:params:xml:ns:yang:ietf-babel">
<enable>true</enable>
<interfaces>
<reference>eth0</reference>
<enable>true</enable>
<metric-algorithm>two-out-of-three</metric-algorithm>
<split-horizon>true</split-horizon>
</interfaces> <?xml version="1.0" encoding="UTF-8"?>
<interfaces> <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<reference>eth1</reference> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
<enable>true</enable> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
<metric-algorithm>etx</metric-algorithm> <interface>
<split-horizon>false</split-horizon> <name>eth0</name>
</interfaces> <type>ianaift:ethernetCsmacd</type>
<interfaces> <enabled>true</enabled>
<reference>tun0</reference> </interface>
<enable>true</enable> <interface>
<metric-algorithm>two-out-of-three</metric-algorithm> <name>eth1</name>
<split-horizon>true</split-horizon> <type>ianaift:ethernetCsmacd</type>
</interfaces> <enabled>true</enabled>
</babel> </interface>
</control-plane-protocol> <interface>
</control-plane-protocols> <name>tun0</name>
</routing> <type>ianaift:tunnel</type>
</config> <enabled>true</enabled>
</interface>
</interfaces>
<routing
xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols>
<control-plane-protocol>
<type
xmlns:babel=
"urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel
</type>
<name>name:babel</name>
<babel
xmlns="urn:ietf:params:xml:ns:yang:ietf-babel">
<enable>true</enable>
<interfaces>
<reference>eth0</reference>
<enable>true</enable>
<metric-algorithm>two-out-of-three</metric-algorithm>
<split-horizon>true</split-horizon>
</interfaces>
<interfaces>
<reference>eth1</reference>
<enable>true</enable>
<metric-algorithm>etx</metric-algorithm>
<split-horizon>false</split-horizon>
</interfaces>
<interfaces>
<reference>tun0</reference>
<enable>true</enable>
<metric-algorithm>two-out-of-three</metric-algorithm>
<split-horizon>true</split-horizon>
</interfaces>
</babel>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
A.4. Configuring other Properties A.4. Configuring other Properties
<!-- In this example, two interfaces are configured for babeld <!-- In this example, two interfaces are configured for babeld
interface eth0 interface eth0
interface ppp0 hello-interval 30 update-interval 120 interface ppp0 hello-interval 30 update-interval 120
Here, ppp0 is a metered 3G link used for fallback connectivity. It runs Here, ppp0 is a metered 3G link used for fallback connectivity. It runs
with much higher than default time constants in order to avoid control with much higher than default time constants in order to avoid control
skipping to change at page 38, line 4 skipping to change at page 37, line 21
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
<interface> <interface>
<name>ppp0</name> <name>ppp0</name>
<type>ianaift:ppp</type> <type>ianaift:ppp</type>
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
</interfaces> </interfaces>
<routing <routing
xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type <type
xmlns:babel="urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel xmlns:babel=
"urn:ietf:params:xml:ns:yang:ietf-babel">babel:babel
</type> </type>
<name>name:babel</name> <name>name:babel</name>
<babel <babel
xmlns="urn:ietf:params:xml:ns:yang:ietf-babel"> xmlns="urn:ietf:params:xml:ns:yang:ietf-babel">
<enable>true</enable> <enable>true</enable>
<interfaces> <interfaces>
<reference>eth0</reference> <reference>eth0</reference>
<enable>true</enable> <enable>true</enable>
<metric-algorithm>two-out-of-three</metric-algorithm> <metric-algorithm>two-out-of-three</metric-algorithm>
<split-horizon>true</split-horizon> <split-horizon>true</split-horizon>
 End of changes. 38 change blocks. 
255 lines changed or deleted 239 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/