draft-ietf-babel-yang-model-01.txt   draft-ietf-babel-yang-model-02.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: September 6, 2019 AT&T Expires: January 23, 2020 AT&T
March 5, 2019 July 22, 2019
YANG Data Model for Babel YANG Data Model for Babel
draft-ietf-babel-yang-model-01 draft-ietf-babel-yang-model-02
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", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
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 September 6, 2019. This Internet-Draft will expire on January 23, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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
skipping to change at page 2, line 16 skipping to change at page 2, line 16
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. Definitions and Acronyms . . . . . . . . . . . . . . . . 3 1.2. Definitions and Acronyms . . . . . . . . . . . . . . . . 3
1.3. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Tree Diagram Annotations . . . . . . . . . . . . . . . . 3
2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3 2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3
2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 2.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 33 2.4. Example . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2. YANG Module Name Registration . . . . . . . . . . . . . . 33 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31
4. Security Considerations . . . . . . . . . . . . . . . . . . . 33 3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 31
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 3.2. YANG Module Name Registration . . . . . . . . . . . . . . 31
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 4. Security Considerations . . . . . . . . . . . . . . . . . . . 31
6.1. Normative References . . . . . . . . . . . . . . . . . . 34 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31
6.2. Informative References . . . . . . . . . . . . . . . . . 34 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 31
Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 35 6.1. Normative References . . . . . . . . . . . . . . . . . . 32
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 6.2. Informative References . . . . . . . . . . . . . . . . . 32
Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 33
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33
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].
1.1. Note to RFC Editor 1.1. Note to RFC Editor
skipping to change at page 3, line 5 skipping to change at page 3, line 5
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-03-07 needs to get o Revision date in model, in the format 2019-07-22 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. Definitions and Acronyms 1.2. Definitions and Acronyms
o 1.3. Tree Diagram Annotations
1.3. Tree Diagram
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
This document defines a YANG 1.1 [RFC7950] data model for the This document defines a YANG 1.1 [RFC7950] data model for the
configuration and management of Babel. The YANG module is based on configuration and management of Babel. The YANG module is based on
the Babel Information Model [I-D.ietf-babel-information-model]. the Babel Information Model [I-D.ietf-babel-information-model].
2.1. Information Model 2.1. Information Model
There are a few things that should be noted between the Babel
Information Model and this data module. The information model
mandates the definition of some of the attributes, e.g. babel-
implementation-version or the babel-self-router-id. These attributes
are marked a read-only objects in the information module as well as
in this data module. However, there is no way in the data module to
mandate that a read-only attribute be present. It is up to the
implementation of this data module to make sure that the attributes
that are marked read-only and are mandatory are indeed present.
2.2. Tree Diagram
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
+--rw link-type* identityref +--ro link-properties* identityref
+--ro sequence-number? uint16 +--ro sequence-number? uint16
+--rw metric-comp-algorithms* identityref +--ro metric-comp-algorithms* identityref
+--rw security-supported* identityref +--ro security-supported* identityref
+--rw hmac-enable? boolean +--ro hmac-algorithms* identityref
+--rw hmac-algorithms* identityref +--ro dtls-cert-types* identityref
+--rw dtls-enable? boolean
+--rw dtls-cert-types* identityref
+--rw stats-enable? boolean +--rw stats-enable? boolean
+--rw constants +--rw constants
| ... | ...
+--rw interfaces* [reference] +--rw interfaces* [reference]
| ... | ...
+--rw hmac* [algorithm] +--rw hmac* [name]
| ... | ...
+--rw dtls* [name] +--rw dtls* [name]
... ...
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro routes* [prefix] +--ro routes* [prefix]
+--ro prefix inet:ip-prefix +--ro prefix inet:ip-prefix
+--ro router-id? binary +--ro router-id? binary
+--ro neighbor? leafref +--ro neighbor? leafref
+--ro (metric) +--ro received-metric? uint16
| ... +--ro calculated-metric? uint16
+--ro seqno? uint16 +--ro seqno? uint16
+--ro next-hop? inet:ip-address +--ro next-hop? inet:ip-address
+--ro feasible? boolean +--ro feasible? boolean
+--ro selected? boolean +--ro selected? boolean
The interfaces subtree describes attributes such as interface object The interfaces subtree describes attributes such as interface object
that is being referenced, the type of link as enumerated by Babel that is being referenced, the type of link as enumerated by Babel
Link Types, and whether the interface is enabled or not. Link Properties, and whether the interface is enabled or not.
The constants subtree describes the UDP port used for sending and The constants subtree describes the UDP port used for sending and
receiving Babel messages, and the multicast group used to send and receiving Babel messages, and the multicast group used to send and
receive announcements on IPv6. receive announcements on IPv6.
The routes subtree describes objects such as the prefix for which the The routes subtree describes objects such as the prefix for which the
route is advertised, a reference to the neighboring route, and next- route is advertised, a reference to the neighboring route, and next-
hop address. hop address.
Finally, for security two subtree are defined. The hmac subtree Finally, for security two subtree are defined to contain HMAC keys
which refers to parameters related to HMAC security mechanism. The and DTLS certificates. The hmac subtree contains keys used with the
boolean flag apply-all indicates whether HMAC mechanism is applicable HMAC security mechanism. The boolean flag babel-hmac-default-apply
for all interfaces or just for interfaces listed in the leaf-list indicates whether the set of HMAC keys is automatically applied to
'interfaces'. The dtls subtree refers to parameters related to DTLS new interfaces. The dtls subtree contains certificates used with
security mechanism. Similar to the HMAC mechanism, the boolean flag DTLS security mechanism. Similar to the HMAC mechanism, the boolean
apply-all indicates whether DTLS mechanism is applicable for all flag babel-dtls-default-apply indicates whether the set of DTLS
interfaces or just for interfaces listed in the leaf-list certificates is automatically applied to new interfaces.
'interfaces'.
2.2. YANG Module 2.3. YANG Module
This module augments A YANG Data Model for Interface Management This module augments A YANG Data Model for Interface Management
[RFC8343], YANG Routing Management [RFC8349], and imports definitions [RFC8343], YANG Routing Management [RFC8349], and imports definitions
from Common YANG Data Types [RFC6991]. from Common YANG Data Types [RFC6991].
module: ietf-babel <CODE BEGINS> file "ietf-babel@2019-07-22.yang"
augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol:
+--rw babel!
+--ro version? string
+--rw enable? boolean
+--ro router-id binary
+--rw link-type* identityref
+--ro sequence-number? uint16
+--rw metric-comp-algorithms* identityref
+--rw security-supported* identityref
+--rw hmac-enable? boolean
+--rw hmac-algorithms* identityref
+--rw dtls-enable? boolean
+--rw dtls-cert-types* identityref
+--rw stats-enable? boolean
+--rw constants
| +--rw udp-port? inet:port-number
| +--rw mcast-group? inet:ip-address
+--rw interfaces* [reference]
| +--rw reference if:interface-ref
| +--rw enable? boolean
| +--rw link-type? identityref
| +--rw metric-algorithm? identityref
| +--ro mcast-hello-seqno? uint16
| +--ro mcast-hello-interval? uint16
| +--rw update-interval? uint16
| +--rw packet-log-enable? boolean
| +--rw packet-log? inet:uri
| +--ro stats
| | +--ro sent-mcast-hello? yt:counter32
| | +--ro sent-mcast-update? yt:counter32
| | +--ro received-packets? yt:counter32
| | +---x reset
| | +---w input
| | | +---w reset-at? yt:date-and-time
| | +--ro output
| | +--ro reset-finished-at? yt:date-and-time
| +--rw neighbor-objects* [neighbor-address]
| +--rw neighbor-address inet:ip-address
| +--rw hello-mcast-history? string
| +--rw hello-ucast-history? string
| +--rw txcost? int32
| +--rw exp-mcast-hello-seqno? uint16
| +--rw exp-ucast-hello-seqno? uint16
| +--rw ucast-hello-seqno? uint16
| +--rw ucast-hello-interval? uint16
| +--rw rxcost? int32
| +--rw cost? int32
| +--ro stats
| +--ro sent-ucast-hello? yt:counter32
| +--ro sent-ucast-update? yt:counter32
| +--ro sent-ihu? yt:counter32
| +--ro received-hello? yt:counter32
| +--ro received-update? yt:counter32
| +--ro received-ihu? yt:counter32
| +---x reset
| +---w input
| | +---w reset-at? yt:date-and-time
| +--ro output
| +--ro reset-finished-at? yt:date-and-time
+--rw hmac* [algorithm]
| +--rw algorithm identityref
| +--rw verify boolean
| +--rw apply-all boolean
| +--rw interfaces* if:interface-ref
| +--rw hmac-keys* [name]
| +--rw name string
| +--rw use-sign boolean
| +--rw use-verify boolean
| +--rw value binary
| +---x test
| +---w input
| | +---w test-string binary
| +--ro output
| +--ro resulting-hash binary
+--rw dtls* [name]
+--rw name string
+--rw apply-all boolean
+--rw interfaces* if:interface-ref
+--rw cached-info? boolean
+--rw cert-prefer* identityref
+--rw certs* [name]
+--rw name string
+--rw value string
+--rw type identityref
+--rw private-key binary
+---x test
+---w input
| +---w test-string binary
+--ro output
+--ro resulting-hash binary
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro routes* [prefix]
+--ro prefix inet:ip-prefix
+--ro router-id? binary
+--ro neighbor? leafref
+--ro (metric)
| +--:(received-metric)
| | +--ro received-metric? uint16
| +--:(calculated-metric)
| +--ro calculated-metric? uint16
+--ro seqno? uint16
+--ro next-hop? inet:ip-address
+--ro feasible? boolean
+--ro selected? boolean
<CODE BEGINS> file "ietf-babel@2019-03-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 8, line 18 skipping to change at page 6, line 4
reference reference
"RFC 8349 - YANG Routing Management"; "RFC 8349 - YANG Routing Management";
} }
organization organization
"IETF Babel routing protocol Working Group"; "IETF Babel routing protocol Working Group";
contact contact
"WG Web: http://tools.ietf.org/wg/babel/ "WG Web: http://tools.ietf.org/wg/babel/
WG List: babel@ietf.org WG List: babel@ietf.org
Editor: Mahesh Jethanandani Editor: Mahesh Jethanandani
mjethanandani@gmail.com mjethanandani@gmail.com
Editor: Barbara Stark Editor: Barbara Stark
bs7652@att.com"; bs7652@att.com";
description description
"This YANG module defines a model for the Babel routing "This YANG module defines a model for the Babel routing
protocol. protocol.
Copyright (c) 2018 IETF Trust and the persons identified as Copyright (c) 2019 IETF Trust and the persons identified as
the document authors. All rights reserved. the document authors. 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 without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD to the license terms contained in, the Simplified BSD
License set forth in Section 4.c of the IETF Trust's Legal License set forth in Section 4.c of the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2019-03-07 { revision 2019-07-22 {
description description
"Initial version."; "Initial version.";
reference reference
"RFC XXX: Babel YANG Data Model."; "RFC XXX: Babel YANG Data Model.";
} }
/* /*
* Identities * Identities
*/ */
identity link-type { identity link-property {
description description
"Base identity from which all Babel Link Types are derived."; "Base identity from which all Babel Link Types are derived.";
} }
identity ethernet {
base "link-type";
description
"Ethernet link type for Babel Routing Protocol.";
}
identity other { identity other {
base "link-type"; base "link-property";
description description
"Other link type for Babel Routing Protocol."; "No link property information available.";
} }
identity tunnel { identity tunnel {
base "link-type"; base "link-property";
description
"Tunnel link type for Babel Routing Protocol.";
}
identity wireless {
base "link-type";
description
"Wireless link type for Babel Routing Protocol.";
}
identity moca {
base "link-type";
description
"Multimedia over Coax Alliance.";
}
identity g-hn-over-coax {
base "link-type";
description description
"G.hn over coax."; "A tunneled interface over unknown physical link.";
reference
"G.9960: Unified high-speed wireline-base home networking
transceivers.";
} }
identity g-hn-over-powerline { identity wired {
base "link-type"; base "link-property";
description description
"G.hn over powerline."; "A wired link with fixed physical properties.";
reference
"G.9960: Unified high-speed wireline-base home networking
transceivers.";
} }
identity home-plug {
base "link-type";
description
"HomePlug Power Alliance.";
reference identity wireless {
"IEEE 1901: HD-PC"; base "link-property";
}
identity ieee-802-15 {
base "link-type";
description description
"Wireless Personal Area Networks (WPAN)."; "Wireless link type for Babel Routing Protocol.";
reference
"IEEE 802.15: Wireless Personal Area Networks (WPAN).";
} }
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 k-out-of-j { identity k-out-of-j {
base "metric-comp-algorithms"; base "metric-comp-algorithms";
description description
skipping to change at page 11, line 52 skipping to change at page 9, line 4
} }
identity raw-public-key { identity raw-public-key {
base dtls-cert-types; base dtls-cert-types;
description description
"Raw Public Key type."; "Raw Public Key type.";
} }
/* /*
* Babel routing protocol identity. * Babel routing protocol identity.
*/
*/
identity babel { identity babel {
base "rt:control-plane-protocol"; base "rt:routing-protocol";
description description
"Babel routing protocol"; "Babel routing protocol";
} }
/* /*
* Features * Features
*/ */
/* /*
* Features supported * Features supported
skipping to change at page 12, line 29 skipping to change at page 9, line 30
/* /*
* Typedefs * Typedefs
*/ */
/* /*
* Groupings * Groupings
*/ */
grouping routes { grouping routes {
list routes { list routes {
key "prefix"; key "prefix";
config false;
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"Prefix (expressed in ip-address/prefix-length format) for "Prefix (expressed in ip-address/prefix-length format) for
which this route is advertised."; which this route is advertised.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6."; "RFC ZZZZ, Babel Information Model, Section 3.6.";
} }
skipping to change at page 13, line 4 skipping to change at page 10, line 6
advertised."; advertised.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6."; "RFC ZZZZ, Babel Information Model, Section 3.6.";
} }
leaf neighbor { leaf neighbor {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" + path "/rt:routing/rt:control-plane-protocols/" +
"rt:control-plane-protocol/babel/interfaces/" + "rt:control-plane-protocol/babel/interfaces/" +
"neighbor-objects/neighbor-address"; "neighbor-objects/neighbor-address";
} }
description description
"Reference to the babel-neighbors entry for the neighbor "Reference to the babel-neighbors entry for the neighbor
that advertised this route."; that advertised this route.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6."; "RFC ZZZZ, Babel Information Model, Section 3.6.";
} }
choice metric { leaf received-metric {
mandatory "true"; type uint16;
leaf received-metric { description
type uint16; "The metric with which this route was advertised by the
description
"The metric with which this route was advertised by the
neighbor, or maximum value (infinity) to indicate a the neighbor, or maximum value (infinity) to indicate a the
route was recently retracted and is temporarily route was recently retracted and is temporarily
unreachable. this metric will be 0 (zero) if the route unreachable. this metric will be 0 (zero) if the route
was not received from a neighbor but was generated was not received from a neighbor but was generated
through other means. Either babel-route-calculated-metric through other means. Either babel-route-calculated-metric
or babel-route-received-metric MUST be provided."; or babel-route-received-metric MUST be provided.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6, "RFC ZZZZ, Babel Information Model, Section 3.6,
draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, draft-ietf-babel-rfc6126bis, The Babel Routing Protocol,
Section 3.5.5."; Section 3.5.5.";
} }
leaf calculated-metric { leaf calculated-metric {
type uint16; type uint16;
description description
"A calculated metric for this route. How the metric is "A calculated metric for this route. How the metric is
calculated is implementation-specific. Maximum value calculated is implementation-specific. Maximum value
(infinity) indicates the route was recently retracted (infinity) indicates the route was recently retracted
and is temporarily unreachable. Either and is temporarily unreachable. Either
babel-route-calculated-metric or babel-route-calculated-metric or
babel-route-received-metric MUST be provided."; babel-route-received-metric MUST be provided.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.6,
draft-ietf-babel-rfc6126bis, The Babel Routing Protocol,
Section 3.5.5.";
}
description
"Either babel-route-calculated-metric or
babel-route-received-metric MUST be provided.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6, "RFC ZZZZ, Babel Information Model, Section 3.6,
draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, draft-ietf-babel-rfc6126bis, The Babel Routing Protocol,
Section 3.5.5."; Section 3.5.5.";
} }
leaf seqno { leaf seqno {
type uint16; type uint16;
description description
"The sequence number with which this route was advertised."; "The sequence number with which this route was advertised.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6."; "RFC ZZZZ, Babel Information Model, Section 3.6.";
} }
leaf next-hop { leaf next-hop {
type inet:ip-address; type inet:ip-address;
description description
"The next-hop address of this route. This will be empty if "The next-hop address of this route. This will be empty if
this route has no next-hop address."; this route has no next-hop address.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.6."; "RFC ZZZZ, Babel Information Model, Section 3.6.";
} }
leaf feasible { leaf feasible {
skipping to change at page 15, line 34 skipping to change at page 12, line 27
config false; config false;
description description
"The name and version of this implementation of the Babel "The name and version of this implementation of the Babel
protocol."; protocol.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf enable { leaf enable {
type boolean; type boolean;
default false; mandatory true;
description description
"When written, it configures whether the protocol should be "When written, it configures whether the protocol should be
enabled. A read from the <running> or <intended> datastore enabled. A read from the <running> or <intended> datastore
therefore indicates the configured administrative value of therefore indicates the configured administrative value of
whether the protocol is enabled or not. whether the protocol is enabled or not.
A read from the <operational> datastore indicates whether A read from the <operational> datastore indicates whether
the protocol is actually running or not, i.e. it indicates the protocol is actually running or not, i.e. it indicates
the operational state of the protocol."; the operational state of the protocol.";
reference reference
skipping to change at page 16, line 12 skipping to change at page 13, line 4
config false; config false;
mandatory "true"; mandatory "true";
description description
"Every Babel speaker is assigned a router-id, which is an "Every Babel speaker is assigned a router-id, which is an
arbitrary string of 8 octets that is assumed to be unique arbitrary string of 8 octets that is assumed to be unique
across the routing domain"; across the routing domain";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1, "RFC ZZZZ, Babel Information Model, Section 3.1,
rfc6126bis, The Babel Routing Protocol. Section 3."; rfc6126bis, The Babel Routing Protocol. Section 3.";
} }
leaf-list link-properties {
leaf-list link-type {
type identityref { type identityref {
base "link-type"; base link-property;
} }
config false;
min-elements 1;
description description
"Link types supported by this implementation of Babel."; "Lists the collections of link properties supported by this
instance of Babel. Valid enumeration values are defined
in the Babel Link Properties registry.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf sequence-number { leaf sequence-number {
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 { leaf-list metric-comp-algorithms {
type identityref { type identityref {
base "metric-comp-algorithms"; base "metric-comp-algorithms";
} }
config false;
min-elements 1;
description description
"List of cost compute algorithms supported by this "List of cost compute algorithms supported by this
implementation of Babel."; implementation of Babel.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf-list security-supported { leaf-list security-supported {
type identityref { type identityref {
base "security-supported"; base "security-supported";
} }
config false;
min-elements 1;
description description
"Babel security mechanism used by this implementation or "Babel security mechanism used by this implementation or
per interface."; per interface.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
}
leaf hmac-enable {
type boolean;
description
"Indicates whether the HMAC security mechanism is enabled
(true) or disabled (false).";
reference
"RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf-list hmac-algorithms { leaf-list hmac-algorithms {
type identityref { type identityref {
base hmac-algorithms; base hmac-algorithms;
} }
config false;
description description
"List of supported HMAC computation algorithms. Possible "List of supported HMAC computation algorithms. Possible
values include 'HMAC-SHA256', 'BLAKE2s'."; values include 'HMAC-SHA256', 'BLAKE2s'.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf dtls-enable {
type boolean;
description
"Indicates whether the DTLS security mechanism is enabled
(true) or disabled (false).";
reference
"RFC ZZZZ, Babel Information Model, Section 3.1.";
}
leaf-list dtls-cert-types { leaf-list dtls-cert-types {
type identityref { type identityref {
base dtls-cert-types; base dtls-cert-types;
} }
config false;
description description
"List of supported DTLS certificate types. Possible values "List of supported DTLS certificate types. Possible values
include 'X.509' and 'RawPublicKey'."; include 'X.509' and 'RawPublicKey'.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.1."; "RFC ZZZZ, Babel Information Model, Section 3.1.";
} }
leaf stats-enable { leaf stats-enable {
type boolean; type boolean;
description description
skipping to change at page 19, line 14 skipping to change at page 15, line 45
type boolean; type boolean;
default "true"; default "true";
description description
"If true, babel sends and receives messages on this "If true, babel sends and receives messages on this
interface. If false, babel messages received on this interface. If false, babel messages received on this
interface are ignored and none are sent."; interface are ignored and none are sent.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
leaf link-type { leaf link-properties {
type identityref { type identityref {
base link-type; base link-property;
} }
default "ethernet"; default "wired";
description description
"Indicates the type of link. Set of values of supported "Indicates the properties of the link. The value MUST be
link types where the following enumeration values MUST one of those listed in the babel-supported-link-
be supported when applicable: 'ethernet', 'wireless', properties parameter. Valid enumeration values are
'tunnel', and 'other'. Additional values MAY be identity-refs derived from properties identified in
supported."; Babel Link Properties registry.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
leaf metric-algorithm { leaf metric-algorithm {
type identityref { type identityref {
base metric-comp-algorithms; base metric-comp-algorithms;
} }
default "k-out-of-j"; default "k-out-of-j";
description description
skipping to change at page 20, line 16 skipping to change at page 16, line 47
description description
"The current multicast hello interval in use for hellos "The current multicast hello interval in use for hellos
sent on this interface."; sent on this interface.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
leaf update-interval { leaf update-interval {
type uint16; type uint16;
units centiseconds; units centiseconds;
config false;
description description
"The current update interval in use for this interface. "The current update interval in use for this interface.
Units are centiseconds."; Units are centiseconds.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
leaf hmac-enable {
type boolean;
description
"Indicates whether the HMAC security mechanism is enabled
(true) or disabled (false).";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf-list hmac-keys {
type leafref {
path "../../hmac/name";
}
description
"List of references to the babel-hmac entries that apply
to this interface. When an interface instance is created,
all babel-hmac-key-sets instances with
babel-hmac-default-apply 'true' will be included in this
list.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf hmac-algorithm {
type identityref {
base hmac-algorithms;
}
description
"The name of the HMAC algorithm used on this interface.
The value is one of the identities listed as part of
babel-hmac-algorithms at a global level.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf hmac-verify {
type boolean;
description
"A Boolean flag indicating whether HMAC hashes in
incoming Babel packets are required to be present and
are verified. If this parameter is 'true', incoming
packets are required to have a valid HMAC hash.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf dtls-enable {
type boolean;
description
"Indicates whether the DTLS security mechanism is enabled
(true) or disabled (false).";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf-list dtls-certs {
type leafref {
path "../../dtls/name";
}
description
"List of references to the babel-dtls-cert-sets entries
that apply to this interface. When an interface instance
is created, all babel-dtls instances with
babel-dtls-default-apply 'true' will be included in
this list.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf dtls-cached-info {
type boolean;
description
"Indicates whether the cached_info extension is included
in ClientHello and ServerHello packets. The extension
is included if the value is 'true'.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf-list dtls-cert-prefer {
type leafref {
path "../../dtls/certs/type";
}
ordered-by user;
description
"List of supported certificate types, in order of
preference. The values MUST be among those listed in the
babel-dtls-cert-types parameter. This list is used to
populate the server_certificate_type extension in a
Client Hello. Values that are present in at least one
instance in the babel-dtls-certs object of a referenced
babel-dtls instance and that have a non-empty
babel-cert-private-key will be used to populate the
client_certificate_type extension in a Client Hello.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.3.";
}
leaf packet-log-enable { leaf packet-log-enable {
type boolean; type boolean;
description description
"If true, logging of babel packets received on this "If true, logging of babel packets received on this
interface is enabled; if false, babel packets are not interface is enabled; if false, babel packets are not
logged."; logged.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
leaf packet-log { leaf packet-log {
type inet:uri; type inet:uri;
config false;
description description
"A reference or url link to a file that contains a "A reference or url link to a file that contains a
timestamped log of packets received and sent on timestamped log of packets received and sent on
babel-udp-port on this interface. The [libpcap] file babel-udp-port on this interface. The [libpcap] file
format with .pcap file extension SHOULD be supported for format with .pcap file extension SHOULD be supported for
packet log files. Logging is enabled / disabled by packet log files. Logging is enabled / disabled by
packet-log-enable."; packet-log-enable.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
skipping to change at page 21, line 50 skipping to change at page 20, line 36
} }
} }
description description
"Statistics collection object for this interface."; "Statistics collection object for this interface.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
list neighbor-objects { list neighbor-objects {
key "neighbor-address"; key "neighbor-address";
config false;
leaf neighbor-address { leaf neighbor-address {
type inet:ip-address; type inet:ip-address;
description description
"IPv4 or v6 address the neighbor sends packets from."; "IPv4 or v6 address the neighbor sends packets from.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.5."; "RFC ZZZZ, Babel Information Model, Section 3.5.";
} }
leaf hello-mcast-history { leaf hello-mcast-history {
skipping to change at page 26, line 17 skipping to change at page 25, line 4
} }
description description
"A set of Babel Neighbor Object."; "A set of Babel Neighbor Object.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.5."; "RFC ZZZZ, Babel Information Model, Section 3.5.";
} }
description description
"A set of Babel Interface objects."; "A set of Babel Interface objects.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.3."; "RFC ZZZZ, Babel Information Model, Section 3.3.";
} }
list hmac { list hmac {
key "algorithm"; key "name";
leaf algorithm {
type identityref {
base hmac-algorithms;
}
description
"The name of the HMAC algorithm this object instance uses.
The value MUST be the same as one of the enumerations
listed in the babel-hmac-algorithms parameter.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.8.";
}
leaf verify { leaf name {
type boolean; type string;
mandatory "true";
description description
"A Boolean flag indicating whether HMAC hashes in incoming "A string that uniquely identifies the hmac object.";
Babel packets are required to be present and are
verified. If this parameter is 'true', incoming packets
are required to have a valid HMAC hash.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.8.";
} }
leaf apply-all { leaf default-apply {
type boolean; type boolean;
mandatory "true";
description description
"A Boolean flag indicating whether this babel-hmac "A Boolean flag indicating whether this babel-hmac
instance is to be used for all interfaces. If 'true', instance is applied to all new interfaces, by default. If
this instance applies to all interfaces and the 'true', this instance is applied to new
babel-hmac-interfaces parameter is ignored. If babel-interfaces instances at the time they are created,
babel-hmac-apply-all is 'true', there MUST NOT be other by including it in the babel-interface-hmac-keys list.
instances of the babel-hmac object. If 'false', the If 'false', this instance is not applied to new
babel-hmac-interfaces parameter determines which babel-interfaces instances when they are created.";
interfaces this instance applies to.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.8.";
}
leaf-list interfaces {
type if:interface-ref;
min-elements "1";
description
"List of references to the babel-interfaces entries this
babel-hmac entry applies to. This parameter is ignored
if babel-hmac-apply-all is 'true'. An interface MUST NOT
be listed in multiple instances of the babel-hmac
object.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.8."; "RFC ZZZZ, Babel Information Model, Section 3.8.";
} }
list hmac-keys { list keys {
key "name"; key "name";
min-elements "1"; min-elements "1";
leaf name { leaf name {
type string; type string;
mandatory "true"; mandatory "true";
description description
"A unique name for this HMAC key that can be used to "A unique name for this HMAC key that can be used to
identify the key in this object instance, since the key identify the key in this object instance, since the key
value is not allowed to be read. This value can only be value is not allowed to be read. This value can only be
skipping to change at page 28, line 29 skipping to change at page 26, line 30
"RFC ZZZZ, Babel Information Model, Section 3.9."; "RFC ZZZZ, Babel Information Model, Section 3.9.";
} }
leaf value { leaf value {
type binary; type binary;
mandatory "true"; mandatory "true";
description description
"The value of the HMAC key. An implementation MUST NOT "The value of the HMAC key. An implementation MUST NOT
allow this parameter to be read. This can be done by allow this parameter to be read. This can be done by
always providing an empty string, or through always providing an empty string, or through
permissions, or other means. This value can only be permissions, or other means. This value MUST be
provided when this instance is created, and is not provided when this instance is created, and is not
subsequently writable."; subsequently writable.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.9."; "RFC ZZZZ, Babel Information Model, Section 3.9.";
} }
action test { action test {
input { input {
leaf test-string { leaf test-string {
type binary; type binary;
skipping to change at page 29, line 38 skipping to change at page 27, line 40
list dtls { list dtls {
key "name"; key "name";
leaf name { leaf name {
type string; type string;
description description
"TODO: This attribute does not exist in the model, but is "TODO: This attribute does not exist in the model, but is
needed for this model to work."; needed for this model to work.";
} }
leaf apply-all { leaf default-apply {
type boolean; type boolean;
mandatory "true"; mandatory "true";
description description
"A Boolean flag indicating whether this babel-dtls "A Boolean flag indicating whether this babel-dtls
instance is to be used for all interfaces. If 'true', instance is applied to all new interfaces, by default. If
this instance applies to all interfaces and the 'true', this instance is applied to new babel-interfaces
babel-dtls-interfaces parameter is ignored. If instances at the time they are created, by including it
babel-dtls-apply-all is 'true', there MUST NOT be other in the babel-interface-dtls-certs list. If 'false',
instances of the babel-dtls object. If 'false', the this instance is not applied to new babel-interfaces
babel-dtls-interfaces parameter determines which instances when they are created.";
interfaces this instance applies to.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.10.";
}
leaf-list interfaces {
type if:interface-ref;
min-elements "1";
description
"List of references to the babel-interfaces entries this
babel-dtls entry applies to. This parameter is ignored
if babel-dtls-apply-all is 'true'. An interface MUST NOT
be listed in multiple instances of the babel-dtls object.
If this list is empty, then it applies to all
interfaces.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.10.";
}
leaf cached-info {
type boolean;
description
"Indicates whether the cached_info extension is included
in ClientHello and ServerHello packets. The extension
is included if the value is 'true'.";
reference
"RFC ZZZZ, Babel Information Model, Section 3.10.";
}
leaf-list cert-prefer {
type identityref {
base dtls-cert-types;
}
ordered-by user;
description
"List of supported certificate types, in order of
preference. The values MUST be among those listed in
the babel-dtls-cert-types parameter. This list is used
to populate the server_certificate_type extension in
a Client Hello. Values that are present in at least one
instance in the babel-dtls-certs object with a non-empty
babel-cert-private-key will be used bto populate the
client_certificate_type extension in a Client Hello.";
reference reference
"RFC ZZZZ, Babel Information Model, Section 3.10."; "RFC ZZZZ, Babel Information Model, Section 3.10.";
} }
list certs { list certs {
key "name"; key "name";
min-elements "1"; min-elements "1";
leaf name { leaf name {
type string; type string;
description description
"A unique name that identifies the cert in the list."; "A unique name that identifies the cert in the list.";
} }
leaf value { leaf value {
type string; type string;
mandatory "true"; mandatory "true";
description description
skipping to change at page 33, line 15 skipping to change at page 30, line 23
is Babel."; is Babel.";
} }
description description
"Babel specific route attributes."; "Babel specific route attributes.";
uses routes; uses routes;
} }
} }
<CODE ENDS> <CODE ENDS>
2.4. Example
The following snippet demonstrates how this data module can be
configured. In this example, the routing protocol being configured
is Babel, and statistics gathering is enabled.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<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>
<stats-enable>true</stats-enable>
</babel>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
3. IANA Considerations 3. IANA Considerations
This document registers one URIs and one YANG module. This document registers one URIs and one YANG module.
3.1. URI Registrations 3.1. URI Registrations
URI: urn:ietf:params:xml:ns:yang:ietf-babel URI: urn:ietf:params:xml:ns:yang:ietf-babel
3.2. YANG Module Name Registration 3.2. YANG Module Name Registration
skipping to change at page 34, line 11 skipping to change at page 32, line 4
network environments. Write operations (e.g., <edit-config>) to network environments. Write operations (e.g., <edit-config>) to
these data nodes without proper protection can have a negative effect these data nodes without proper protection can have a negative effect
on network operations. on network operations.
These are the subtrees and data nodes and their sensitivity/ These are the subtrees and data nodes and their sensitivity/
vulnerability: vulnerability:
5. Acknowledgements 5. Acknowledgements
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-07 (work in Protocol", draft-ietf-babel-rfc6126bis-11 (work in
progress), November 2018. progress), June 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>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
skipping to change at page 34, line 49 skipping to change at page 32, line 41
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018, DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>. <https://www.rfc-editor.org/info/rfc8349>.
6.2. Informative References 6.2. Informative References
[I-D.ietf-babel-information-model] [I-D.ietf-babel-information-model]
Stark, B. and M. Jethanandani, "Babel Information Model", Stark, B. and M. Jethanandani, "Babel Information Model",
draft-ietf-babel-information-model-05 (work in progress), draft-ietf-babel-information-model-06 (work in progress),
March 2019. July 2019.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
 End of changes. 81 change blocks. 
365 lines changed or deleted 264 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/