draft-ietf-babel-information-model-06.txt   draft-ietf-babel-information-model-07.txt 
Babel routing protocol B. Stark Babel routing protocol B. Stark
Internet-Draft AT&T Internet-Draft AT&T
Intended status: Informational M. Jethanandani Intended status: Informational M. Jethanandani
Expires: January 9, 2020 VMware Expires: January 21, 2020 VMware
July 8, 2019 July 20, 2019
Babel Information Model Babel Information Model
draft-ietf-babel-information-model-06 draft-ietf-babel-information-model-07
Abstract Abstract
This Babel Information Model can be used to create data models under This Babel Information Model can be used to create data models under
various data modeling regimes. It allows a Babel implementation (via various data modeling regimes. It allows a Babel implementation (via
a management protocol or interface) to report on its current state a management protocol or interface) to report on its current state
and may allow some limited configuration of protocol constants. and may allow some limited configuration of protocol constants.
Status of This Memo Status of This Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
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 January 9, 2020. This Internet-Draft will expire on January 21, 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 15 skipping to change at page 2, line 15
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Notation . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Notation . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. The Information Model . . . . . . . . . . . . . . . . . . . . 7 3. The Information Model . . . . . . . . . . . . . . . . . . . . 7
3.1. Definition of babel-information-obj . . . . . . . . . . . 7 3.1. Definition of babel-information-obj . . . . . . . . . . . 7
3.2. Definition of babel-constants-obj . . . . . . . . . . . . 9 3.2. Definition of babel-constants-obj . . . . . . . . . . . . 9
3.3. Definition of babel-interfaces-obj . . . . . . . . . . . 9 3.3. Definition of babel-interfaces-obj . . . . . . . . . . . 9
3.4. Definition of babel-if-stats-obj . . . . . . . . . . . . 11 3.4. Definition of babel-if-stats-obj . . . . . . . . . . . . 12
3.5. Definition of babel-neighbors-obj . . . . . . . . . . . . 12 3.5. Definition of babel-neighbors-obj . . . . . . . . . . . . 12
3.6. Definition of babel-nbr-stats-obj . . . . . . . . . . . . 13 3.6. Definition of babel-nbr-stats-obj . . . . . . . . . . . . 14
3.7. Definition of babel-routes-obj . . . . . . . . . . . . . 14 3.7. Definition of babel-routes-obj . . . . . . . . . . . . . 14
3.8. Definition of babel-hmac-obj . . . . . . . . . . . . . . 15 3.8. Definition of babel-hmac-key-sets-obj . . . . . . . . . . 16
3.9. Definition of babel-hmac-keys-obj . . . . . . . . . . . . 16 3.9. Definition of babel-hmac-keys-obj . . . . . . . . . . . . 16
3.10. Definition of babel-dtls-obj . . . . . . . . . . . . . . 16 3.10. Definition of babel-dtls-cert-sets-obj . . . . . . . . . 17
3.11. Definition of babel-dtls-certs-obj . . . . . . . . . . . 17 3.11. Definition of babel-dtls-certs-obj . . . . . . . . . . . 17
4. Extending the Information Model . . . . . . . . . . . . . . . 18 4. Extending the Information Model . . . . . . . . . . . . . . . 18
5. Security Considerations . . . . . . . . . . . . . . . . . . . 18 5. Security Considerations . . . . . . . . . . . . . . . . . . . 18
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.1. Normative References . . . . . . . . . . . . . . . . . . 20 8.1. Normative References . . . . . . . . . . . . . . . . . . 20
8.2. Informative References . . . . . . . . . . . . . . . . . 20 8.2. Informative References . . . . . . . . . . . . . . . . . 21
Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 21 Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 22
Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 24 Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 24
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28
1. Introduction 1. Introduction
Babel is a loop-avoiding distance-vector routing protocol defined in Babel is a loop-avoiding distance-vector routing protocol defined in
[I-D.ietf-babel-rfc6126bis]. [I-D.ietf-babel-hmac] defines a [I-D.ietf-babel-rfc6126bis]. [I-D.ietf-babel-hmac] defines a
security mechanism that allows Babel packets to be cryptographically security mechanism that allows Babel packets to be cryptographically
authenticated, and [I-D.ietf-babel-dtls] defines a security mechanism authenticated, and [I-D.ietf-babel-dtls] defines a security mechanism
that allows Babel packets to be encrypted. This document describes that allows Babel packets to be encrypted. This document describes
an information model for Babel (including implementations using one an information model for Babel (including implementations using one
of these security mechanisms) that can be used to create management of these security mechanisms) that can be used to create management
skipping to change at page 4, line 31 skipping to change at page 4, line 31
The Information Model is hierarchically structured as follows: The Information Model is hierarchically structured as follows:
+-- babel-information +-- babel-information
+-- babel-implementation-version +-- babel-implementation-version
+-- babel-enable +-- babel-enable
+-- router-id +-- router-id
+-- babel-supported-link-properties +-- babel-supported-link-properties
+-- self-seqno +-- self-seqno
+-- babel-metric-comp-algorithms +-- babel-metric-comp-algorithms
+-- babel-security-supported +-- babel-security-supported
+-- babel-hmac-enable
+-- babel-hmac-algorithms +-- babel-hmac-algorithms
+-- babel-dtls-enable
+-- babel-dtls-cert-types +-- babel-dtls-cert-types
+-- babel-stats-enable +-- babel-stats-enable
+-- babel-stats-reset +-- babel-stats-reset
+-- babel-constants +-- babel-constants
| +-- babel-udp-port | +-- babel-udp-port
| +-- babel-mcast-group | +-- babel-mcast-group
+-- babel-interfaces +-- babel-interfaces
| +-- babel-interface-reference | +-- babel-interface-reference
| +-- babel-interface-enable | +-- babel-interface-enable
| +-- babel-link-properties | +-- babel-link-properties
| +-- babel-interface-metric-algorithm | +-- babel-interface-metric-algorithm
| +-- babel-mcast-hello-seqno | +-- babel-mcast-hello-seqno
| +-- babel-mcast-hello-interval | +-- babel-mcast-hello-interval
| +-- babel-update-interval | +-- babel-update-interval
| +-- babel-interfaces-hmac-keys | +-- babel-hmac-enable
| +-- babel-if-hmac-key-sets
| +-- babel-hmac-algorithm | +-- babel-hmac-algorithm
| +-- babel-hmac-verify | +-- babel-hmac-verify
| +-- babel-interfaces-dtls-certs | +-- babel-dtls-enable
| +-- babel-if-dtls-cert-sets
| +-- babel-dtls-cached-info | +-- babel-dtls-cached-info
| +-- babel-dtls-cert-prefer | +-- babel-dtls-cert-prefer
| +-- babel-packet-log-enable | +-- babel-packet-log-enable
| +-- babel-packet-log | +-- babel-packet-log
| +-- babel-if-stats | +-- babel-if-stats
| | +-- babel-sent-mcast-hello | | +-- babel-sent-mcast-hello
| | +-- babel-sent-mcast-update | | +-- babel-sent-mcast-update
| | +-- babel-received-packets | | +-- babel-received-packets
| +-- babel-neighbors | +-- babel-neighbors
| | +-- babel-neighbor-address | | +-- babel-neighbor-address
skipping to change at page 5, line 40 skipping to change at page 5, line 40
| +-- babel-route-prefix | +-- babel-route-prefix
| +-- babel-route-prefix-length | +-- babel-route-prefix-length
| +-- babel-route-router-id | +-- babel-route-router-id
| +-- babel-route-neighbor | +-- babel-route-neighbor
| +-- babel-route-received-metric | +-- babel-route-received-metric
| +-- babel-route-calculated-metric | +-- babel-route-calculated-metric
| +-- babel-route-seqno | +-- babel-route-seqno
| +-- babel-route-next-hop | +-- babel-route-next-hop
| +-- babel-route-feasible | +-- babel-route-feasible
| +-- babel-route-selected | +-- babel-route-selected
+-- babel-hmac +-- babel-hmac-key-sets
| +-- babel-hmac-default-apply | +-- babel-hmac-default-apply
| +-- babel-hmac-keys
| | +-- babel-hmac-key-name | | +-- babel-hmac-key-name
| | +-- babel-hmac-key-use-sign | | +-- babel-hmac-key-use-sign
| | +-- babel-hmac-key-use-verify | | +-- babel-hmac-key-use-verify
| | +-- babel-hmac-key-value | | +-- babel-hmac-key-value
+-- babel-dtls +-- babel-dtls-cert-sets
| +-- babel-dtls-default-apply | +-- babel-dtls-default-apply
| +-- babel-dtls-certs
| | +-- babel-cert-name
| | +-- babel-cert-value | | +-- babel-cert-value
| | +-- babel-cert-type | | +-- babel-cert-type
| | +-- babel-cert-private-key | | +-- babel-cert-private-key
| | +-- babel-cert-test | | +-- babel-cert-test
Most parameters are read-only. Following is a descriptive list of Most parameters are read-only. Following is a descriptive list of
the parameters that are not required to be read-only: the parameters that are not required to be read-only:
o enable/disable Babel o enable/disable Babel
skipping to change at page 7, line 21 skipping to change at page 7, line 23
3.1. Definition of babel-information-obj 3.1. Definition of babel-information-obj
object { object {
string ro babel-implementation-version; string ro babel-implementation-version;
boolean rw babel-enable; boolean rw babel-enable;
binary ro babel-self-router-id; binary ro babel-self-router-id;
string ro babel-supported-link-properties<1..*>; string ro babel-supported-link-properties<1..*>;
[uint ro babel-self-seqno;] [uint ro babel-self-seqno;]
string ro babel-metric-comp-algorithms<1..*>; string ro babel-metric-comp-algorithms<1..*>;
string ro babel-security-supported<0..*>; string ro babel-security-supported<0..*>;
[boolean ro babel-hmac-enable;]
[string ro babel-hmac-algorithms<1..*>;] [string ro babel-hmac-algorithms<1..*>;]
[boolean ro babel-dtls-enable;]
[string ro babel-dtls-cert-types<1..*>;] [string ro babel-dtls-cert-types<1..*>;]
[boolean rw babel-stats-enable;] [boolean rw babel-stats-enable;]
[operation babel-stats-reset;] [operation babel-stats-reset;]
babel-constants-obj ro babel-constants; babel-constants-obj ro babel-constants;
babel-interfaces-obj ro babel-interfaces<0..*>; babel-interfaces-obj ro babel-interfaces<0..*>;
babel-routes-obj ro babel-routes<0..*>; babel-routes-obj ro babel-routes<0..*>;
[babel-hmac-obj rw babel-hmac<0..*>;] [babel-hmac-obj rw babel-hmac<0..*>;]
[babel-dtls-obj rw babel-dtls<0..*>;] [babel-dtls-obj rw babel-dtls<0..*>;]
} babel-information-obj; } babel-information-obj;
skipping to change at page 7, line 51 skipping to change at page 8, line 4
not (false). A read from the operational datastore indicates not (false). A read from the operational datastore indicates
whether the protocol is actually running (true) or not (i.e., it whether the protocol is actually running (true) or not (i.e., it
indicates the operational state of the protocol). A data model indicates the operational state of the protocol). A data model
that does not replicate parameters for running and operational that does not replicate parameters for running and operational
datastores can implement this as two separate parameters. An datastores can implement this as two separate parameters. An
implementation MAY choose to expose this parameter as read-only implementation MAY choose to expose this parameter as read-only
("ro"). ("ro").
babel-self-router-id: The router-id used by this instance of the babel-self-router-id: The router-id used by this instance of the
Babel protocol to identify itself. [I-D.ietf-babel-rfc6126bis] Babel protocol to identify itself. [I-D.ietf-babel-rfc6126bis]
describes this as an arbitrary string of 8 octets. describes this as an arbitrary string of 8 octets. The router-id
value MUST NOT consist of all zeroes or all ones.
babel-supported-link-properties: Lists the collections of link babel-supported-link-properties: Lists the collections of link
properties supported by this instance of Babel. Valid enumeration properties supported by this instance of Babel. Valid enumeration
values are defined in the Babel Link Properties registry (see values are defined in the Babel Link Properties registry (see
Section 6). Section 6).
babel-self-seqno: The current sequence number included in route babel-self-seqno: The current sequence number included in route
updates for routes originated by this node. This is a 16-bit updates for routes originated by this node. This is a 16-bit
unsigned integer. unsigned integer.
babel-metric-comp-algorithms: List of supported cost computation babel-metric-comp-algorithms: List of supported cost computation
algorithms. Possible values include "k-out-of-j", and "ETX". algorithms. Possible values include "k-out-of-j", and "ETX".
babel-security-supported: List of supported security mechanisms. babel-security-supported: List of supported security mechanisms.
Possible values include "HMAC" and "DTLS". Possible values include "HMAC" and "DTLS".
babel-hmac-enable: Indicates whether the HMAC security mechanism is
enabled (true) or disabled (false). An implementation MAY choose
to expose this parameter as read-only ("ro").
babel-hmac-algorithms: List of supported HMAC computation babel-hmac-algorithms: List of supported HMAC computation
algorithms. Possible values include "HMAC-SHA256", "BLAKE2s". algorithms. Possible values include "HMAC-SHA256", "BLAKE2s".
babel-dtls-enable: Indicates whether the DTLS security mechanism is
enabled (true) or disabled (false). An implementation MAY choose
to expose this parameter as read-only ("ro").
babel-dtls-cert-types: List of supported DTLS certificate types. babel-dtls-cert-types: List of supported DTLS certificate types.
Possible values include "X.509" and "RawPublicKey". Possible values include "X.509" and "RawPublicKey".
babel-stats-enable: Indicates whether statistics collection is babel-stats-enable: Indicates whether statistics collection is
enabled (true) or disabled (false) on all interfaces, including enabled (true) or disabled (false) on all interfaces, including
neighbor-specific statistics (babel-nbr-stats). neighbor-specific statistics (babel-nbr-stats).
babel-stats-reset: An operation that resets all babel-if-stats and babel-stats-reset: An operation that resets all babel-if-stats and
babel-nbr-stats parameters to zero. This operation has no input babel-nbr-stats parameters to zero. This operation has no input
or output parameters. or output parameters.
skipping to change at page 9, line 37 skipping to change at page 9, line 32
3.3. Definition of babel-interfaces-obj 3.3. Definition of babel-interfaces-obj
object { object {
reference ro babel-interface-reference; reference ro babel-interface-reference;
[boolean rw babel-interface-enable;] [boolean rw babel-interface-enable;]
string rw babel-link-properties; string rw babel-link-properties;
string ro babel-interface-metric-algorithm; string ro babel-interface-metric-algorithm;
[uint ro babel-mcast-hello-seqno;] [uint ro babel-mcast-hello-seqno;]
[uint ro babel-mcast-hello-interval;] [uint ro babel-mcast-hello-interval;]
[uint ro babel-update-interval;] [uint ro babel-update-interval;]
[reference rw babel-interface-hmac-keys<0..*>;] [boolean rw babel-hmac-enable;]
[reference rw babel-if-hmac-key-sets<0..*>;]
[string rw babel-hmac-algorithm;] [string rw babel-hmac-algorithm;]
[boolean rw babel-hmac-verify;] [boolean rw babel-hmac-verify;]
[reference rw babel-interface-dtls-certs<0..*>;] [boolean rw babel-dtls-enable;]
[reference rw babel-if-dtls-cert-sets<0..*>;]
[boolean rw babel-dtls-cached-info;] [boolean rw babel-dtls-cached-info;]
[string rw babel-dtls-cert-prefer<0..*>;] [string rw babel-dtls-cert-prefer<0..*>;]
[boolean rw babel-packet-log-enable;] [boolean rw babel-packet-log-enable;]
[reference ro babel-packet-log;] [reference ro babel-packet-log;]
[babel-if-stats-obj ro babel-if-stats;] [babel-if-stats-obj ro babel-if-stats;]
babel-neighbors-obj ro babel-neighbors<0..*>; babel-neighbors-obj ro babel-neighbors<0..*>;
} babel-interfaces-obj; } babel-interfaces-obj;
babel-interface-reference: Reference to an IPv6 interface object as babel-interface-reference: Reference to an IPv6 interface object as
defined by the data model (e.g., YANG [RFC7950], BBF [TR-181]). defined by the data model (e.g., YANG [RFC7950], BBF [TR-181]).
skipping to change at page 10, line 42 skipping to change at page 10, line 40
unsigned integer. unsigned integer.
babel-mcast-hello-interval: The current interval in use for babel-mcast-hello-interval: The current interval in use for
multicast Hellos sent on this interface. Units are centiseconds. multicast Hellos sent on this interface. Units are centiseconds.
This is a 16-bit unsigned integer. This is a 16-bit unsigned integer.
babel-update-interval: The current interval in use for all updates babel-update-interval: The current interval in use for all updates
(multicast and unicast) sent on this interface. Units are (multicast and unicast) sent on this interface. Units are
centiseconds. This is a 16-bit unsigned integer. centiseconds. This is a 16-bit unsigned integer.
babel-interface-hmac-keys: List of references to the babel-hmac babel-hmac-enable: Indicates whether the HMAC security mechanism is
enabled (true) or disabled (false). An implementation MAY choose
to expose this parameter as read-only ("ro").
babel-if-hmac-keys-sets: List of references to the babel-hmac
entries that apply to this interface. When an interface instance entries that apply to this interface. When an interface instance
is created, all babel-hmac instances with babel-hmac-default-apply is created, all babel-hmac-key-sets instances with babel-hmac-
"true" will be included in this list. An implementation MAY default-apply "true" will be included in this list. An
choose to expose this parameter as read-only ("ro"). implementation MAY choose to expose this parameter as read-only
("ro").
babel-hmac-algorithm The name of the HMAC algorithm used on this babel-hmac-algorithm The name of the HMAC algorithm used on this
interface. The value MUST be the same as one of the enumerations interface. The value MUST be the same as one of the enumerations
listed in the babel-hmac-algorithms parameter. An implementation listed in the babel-hmac-algorithms parameter. An implementation
MAY choose to expose this parameter as read-only ("ro"). MAY choose to expose this parameter as read-only ("ro").
babel-hmac-verify A Boolean flag indicating whether HMAC hashes in babel-hmac-verify A Boolean flag indicating whether HMAC hashes in
incoming Babel packets are required to be present and are incoming Babel packets are required to be present and are
verified. If this parameter is "true", incoming packets are verified. If this parameter is "true", incoming packets are
required to have a valid HMAC hash. An implementation MAY choose required to have a valid HMAC hash. An implementation MAY choose
to expose this parameter as read-only ("ro"). to expose this parameter as read-only ("ro").
babel-interface-dtls-certs: List of references to the babel-dtls babel-dtls-enable: Indicates whether the DTLS security mechanism is
entries that apply to this interface. When an interface instance enabled (true) or disabled (false). An implementation MAY choose
is created, all babel-dtls instances with babel-dtls-default-apply to expose this parameter as read-only ("ro").
"true" will be included in this list. An implementation MAY
choose to expose this parameter as read-only ("ro"). babel-if-dtls-cert-sets: List of references to the babel-dtls-cert-
sets entries that apply to this interface. When an interface
instance is created, all babel-dtls-cert-sets instances with
babel-dtls-default-apply "true" will be included in this list. An
implementation MAY choose to expose this parameter as read-only
("ro").
babel-dtls-cached-info: Indicates whether the cached_info extension babel-dtls-cached-info: Indicates whether the cached_info extension
is included in ClientHello and ServerHello packets. The extension is included in ClientHello and ServerHello packets. The extension
is included if the value is "true". An implementation MAY choose is included if the value is "true". An implementation MAY choose
to expose this parameter as read-only ("ro"). to expose this parameter as read-only ("ro").
babel-dtls-cert-prefer: List of supported certificate types, in babel-dtls-cert-prefer: List of supported certificate types, in
order of preference. The values MUST be among those listed in the order of preference. The values MUST be among those listed in the
babel-dtls-cert-types parameter. This list is used to populate babel-dtls-cert-types parameter. This list is used to populate
the server_certificate_type extension in a Client Hello. Values the server_certificate_type extension in a Client Hello. Values
skipping to change at page 15, line 36 skipping to change at page 16, line 5
be empty if this route has no next-hop address. be empty if this route has no next-hop address.
babel-route-feasible: A Boolean flag indicating whether this route babel-route-feasible: A Boolean flag indicating whether this route
is feasible, as defined in Section 3.5.1 of is feasible, as defined in Section 3.5.1 of
[I-D.ietf-babel-rfc6126bis]). [I-D.ietf-babel-rfc6126bis]).
babel-route-selected: A Boolean flag indicating whether this route babel-route-selected: A Boolean flag indicating whether this route
is selected (i.e., whether it is currently being used for is selected (i.e., whether it is currently being used for
forwarding and is being advertised). forwarding and is being advertised).
3.8. Definition of babel-hmac-obj 3.8. Definition of babel-hmac-key-sets-obj
object { object {
boolean rw babel-hmac-default-apply; boolean rw babel-hmac-default-apply;
babel-hmac-keys-obj rw babel-hmac-keys<0..*>; babel-hmac-keys-obj rw babel-hmac-keys<0..*>;
} babel-hmac-obj; } babel-hmac-obj;
babel-hmac-default-apply: A Boolean flag indicating whether this babel-hmac-default-apply: A Boolean flag indicating whether this
babel-hmac instance is applied to all interfaces, by default. If babel-hmac instance is applied to all new babel-interface
"true", this instance is applied to new babel-interfaces instances instances, by default. If "true", this instance is applied to new
at the time they are created, by including it in the babel- babel-interfaces instances at the time they are created, by
interface-hmac-keys list. If "false", this instance is not including it in the babel-interface-hmac-keys list. If "false",
applied to new babel-interfaces instances when they are created. this instance is not applied to new babel-interfaces instances
An implementation MAY choose to expose this parameter as read-only when they are created. An implementation MAY choose to expose
("ro"). this parameter as read-only ("ro").
babel-hmac-keys: A set of babel-hmac-keys-obj objects. babel-hmac-keys: A set of babel-hmac-keys-obj objects.
3.9. Definition of babel-hmac-keys-obj 3.9. Definition of babel-hmac-keys-obj
object { object {
string ro babel-hmac-key-name; string rw babel-hmac-key-name;
boolean rw babel-hmac-key-use-sign; boolean rw babel-hmac-key-use-sign;
boolean rw babel-hmac-key-use-verify; boolean rw babel-hmac-key-use-verify;
binary -- babel-hmac-key-value; binary -- babel-hmac-key-value;
[operation babel-hmac-key-test;] [operation babel-hmac-key-test;]
} babel-hmac-keys-obj; } babel-hmac-keys-obj;
babel-hmac-key-name: A unique name for this HMAC key that can be babel-hmac-key-name: A unique name for this HMAC key that can be
used to identify the key in this object instance, since the key used to identify the key in this object instance, since the key
value is not allowed to be read. This value can only be provided value is not allowed to be read. This value MUST NOT be empty and
when this instance is created, and is not subsequently writable. can only be provided when this instance is created (i.e., it is
not subsequently writable). The value MAY be auto-generated if
not explicitly supplied when the instance is created.
babel-key-use-sign: Indicates whether this key value is used to sign babel-key-use-sign: Indicates whether this key value is used to sign
sent Babel packets. Sent packets are signed using this key if the sent Babel packets. Sent packets are signed using this key if the
value is "true". If the value is "false", this key is not used to value is "true". If the value is "false", this key is not used to
sign sent Babel packets. An implementation MAY choose to expose sign sent Babel packets. An implementation MAY choose to expose
this parameter as read-only ("ro"). this parameter as read-only ("ro").
babel-key-use-verify: Indicates whether this key value is used to babel-key-use-verify: Indicates whether this key value is used to
verify incoming Babel packets. This key is used to verify verify incoming Babel packets. This key is used to verify
incoming packets if the value is "true". If the value is "false", incoming packets if the value is "true". If the value is "false",
no HMAC is computed from this key for comparing an incoming no HMAC is computed from this key for comparing an incoming
packet. An implementation MAY choose to expose this parameter as packet. An implementation MAY choose to expose this parameter as
read-only ("ro"). read-only ("ro").
babel-key-value: The value of the HMAC key. An implementation MUST babel-key-value: The value of the HMAC key. An implementation MUST
NOT allow this parameter to be read. This can be done by always NOT allow this parameter to be read. This can be done by always
providing an empty string, or through permissions, or other means. providing an empty string, or through permissions, or other means.
This value can only be provided when this instance is created, and This value MUST be provided when this instance is created, and is
is not subsequently writable. not subsequently writable.
babel-hmac-test: An operation that allows the HMAC key and hash babel-hmac-test: An operation that allows the HMAC key and hash
algorithm to be tested to see if they produce an expected outcome. algorithm to be tested to see if they produce an expected outcome.
Input to this operation is a binary string. The implementation is Input to this operation MUST be a non-empty binary string. The
expected to create a hash of this string using the babel-hmac-key- implementation is expected to create a hash of this string using
value and the babel-hmac-algorithm. The output of this operation the babel-hmac-key-value and the babel-hmac-algorithm. The output
is the resulting hash, as a binary string. of this operation is the resulting hash, as a binary string.
3.10. Definition of babel-dtls-cert-sets-obj
3.10. Definition of babel-dtls-obj
object { object {
boolean rw babel-dtls-default-apply; boolean rw babel-dtls-default-apply;
babel-dtls-certs-obj rw babel-dtls-certs<0..*>; babel-dtls-certs-obj rw babel-dtls-certs<0..*>;
} babel-dtls-obj; } babel-dtls-obj;
babel-dtls-default-apply: A Boolean flag indicating whether this babel-dtls-default-apply: A Boolean flag indicating whether this
babel-dtls instance is applied to all interfaces, by default. If babel-dtls instance is applied to all new babel-interface
"true", this instance is applied to new babel-interfaces instances instances, by default. If "true", this instance is applied to new
at the time they are created, by including it in the babel- babel-interfaces instances at the time they are created, by
interface-dtls-certs list. If "false", this instance is not including it in the babel-interface-dtls-certs list. If "false",
applied to new babel-interfaces instances when they are created. this instance is not applied to new babel-interfaces instances
An implementation MAY choose to expose this parameter as read-only when they are created. An implementation MAY choose to expose
("ro"). this parameter as read-only ("ro").
babel-dtls-certs: A set of babel-dtls-keys-obj objects. This babel-dtls-certs: A set of babel-dtls-keys-obj objects. This
contains both certificates for this implementation to present for contains both certificates for this implementation to present for
authentication, and to accept from others. Certificates with a authentication, and to accept from others. Certificates with a
non-empty babel-cert-private-key can be presented by this non-empty babel-cert-private-key can be presented by this
implementation for authentication. implementation for authentication.
3.11. Definition of babel-dtls-certs-obj 3.11. Definition of babel-dtls-certs-obj
object { object {
string ro babel-cert-name; string rw babel-cert-name;
string ro babel-cert-value; string rw babel-cert-value;
string ro babel-cert-type; string rw babel-cert-type;
binary -- babel-cert-private-key; binary -- babel-cert-private-key;
[operation babel-cert-test;] [operation babel-cert-test;]
} babel-dtls-certs-obj; } babel-dtls-certs-obj;
babel-cert-name: A unique name for this DTLS certificate that can be babel-cert-name: A unique name for this DTLS certificate that can be
used to identify the certificate in this object instance, since used to identify the certificate in this object instance, since
the value is too long to be useful for identification. This value the value is too long to be useful for identification. This value
can only be provided when this instance is created, and is not MUST NOT be empty and can only be provided when this instance is
subsequently writable. created (i.e., it is not subsequently writable). The value MAY be
auto-generated if not explicitly supplied when the instance is
created.
babel-cert-value: The DTLS certificate in PEM format [RFC7468]. babel-cert-value: The DTLS certificate in PEM format [RFC7468].
This value can only be provided when this instance is created, and This value MUST be provided when this instance is created, and is
is not subsequently writable. not subsequently writable.
babel-cert-type: The name of the certificate type of this object babel-cert-type: The name of the certificate type of this object
instance. The value MUST be the same as one of the enumerations instance. The value MUST be the same as one of the enumerations
listed in the babel-dtls-cert-types parameter. This value can listed in the babel-dtls-cert-types parameter. This value can
only be provided when this instance is created, and is not only be provided when this instance is created, and is not
subsequently writable. subsequently writable.
babel-cert-private-key: The value of the private key. If this is babel-cert-private-key: The value of the private key. If this is
non-empty, this certificate can be used by this implementation to non-empty, this certificate can be used by this implementation to
provide a certificate during DTLS handshaking. An implementation provide a certificate during DTLS handshaking. An implementation
MUST NOT allow this parameter to be read. This can be done by MUST NOT allow this parameter to be read. This can be done by
always providing an empty string, or through permissions, or other always providing an empty string, or through permissions, or other
means. This value can only be provided when this instance is means. This value can only be provided when this instance is
created, and is not subsequently writable. created, and is not subsequently writable.
babel-cert-test: An operation that allows a hash of the provided babel-cert-test: An operation that allows a hash of the provided
input string to be created using the certificate public key and input string to be created using the certificate public key and
the SHA-256 hash algorithm. Input to this operation is a binary the SHA-256 hash algorithm. Input to this operation MUST be a
string. The output of this operation is the resulting hash, as a non-empty binary string. The output of this operation is the
binary string. resulting hash, as a binary string.
4. Extending the Information Model 4. Extending the Information Model
Implementations MAY extend this information model with other Implementations MAY extend this information model with other
parameters or objects. For example, an implementation MAY choose to parameters or objects. For example, an implementation MAY choose to
expose Babel route filtering rules by adding a route filtering object expose Babel route filtering rules by adding a route filtering object
with parameters appropriate to how route filtering is done in that with parameters appropriate to how route filtering is done in that
implementation. The precise means used to extend the information implementation. The precise means used to extend the information
model would be specific to the data model the implementation uses to model would be specific to the data model the implementation uses to
expose this information. expose this information.
skipping to change at page 19, line 34 skipping to change at page 20, line 6
HYPHEN = %x2D ; "-" HYPHEN = %x2D ; "-"
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z [RFC5234] ALPHA = %x41-5A / %x61-7A ; A-Z / a-z [RFC5234]
DIGIT = %x30-39 ; 0-9 [RFC5234] DIGIT = %x30-39 ; 0-9 [RFC5234]
The allocation policy of this registry is Specification Required The allocation policy of this registry is Specification Required
[RFC8126]. [RFC8126].
The initial values in the "Babel Link Properties" registry are: The initial values in the "Babel Link Properties" registry are:
+----------+----------------------------------------+---------------+ +----------+----------------------------------------+---------------+
| Name | Describes Links with Properties | Reference | | Name | Links Properties | Reference |
+----------+----------------------------------------+---------------+ +----------+----------------------------------------+---------------+
| other | no link property information available | (this | | other | implementation-specific default | (this |
| | properties used | document) |
| tunnel | 2-out-of-3, split horizon, RTT | (this |
| | | document) | | | | document) |
| tunnel | a tunneled interface over unknown | (this | | wired | 2-out-of-3, split horizon, no RTT | (this |
| | physical link | document) |
| wired | | (this |
| | | document) | | | | document) |
| wireless | | (this | | wireless | ETX, no split horizon, no RTT | (this |
| | | document) | | | | document) |
| exp-* | Reserved for Experimental Use | (this | | exp-* | Reserved for Experimental Use | (this |
| | | document) | | | | document) |
+----------+----------------------------------------+---------------+ +----------+----------------------------------------+---------------+
The link properties listed are expected to include the metric
computation algorithm that will be used for the link and whether
split horizon optimization is used. If round trip time is used in
metric computation, this should also be noted (any link property that
does not mention RTT will be assumed not to use it).
7. Acknowledgements 7. Acknowledgements
Juliusz Chroboczek, Toke Hoeiland-Joergensen, David Schinazi, Acee Juliusz Chroboczek, Toke Hoeiland-Joergensen, David Schinazi, Acee
Lindem, and Carsten Bormann have been very helpful in refining this Lindem, and Carsten Bormann have been very helpful in refining this
information model. information model.
The language in the Notation section was mostly taken from [RFC8193]. The language in the Notation section was mostly taken from [RFC8193].
8. References 8. References
skipping to change at page 27, line 41 skipping to change at page 28, line 18
* changed direction of reference for HMAC and DTLS objects to be * changed direction of reference for HMAC and DTLS objects to be
from interface to these objects from interface to these objects
* provided DTLS certificate objects with a unique name * provided DTLS certificate objects with a unique name
* changed received and calculated metric descriptions to make * changed received and calculated metric descriptions to make
clear that it is ok to have both clear that it is ok to have both
* constrained interface reference to only IPv6 interfaces * constrained interface reference to only IPv6 interfaces
v07 2019-07-22:
* babel-dtls-enable and babel-hmac-enable moved to interfaces and
made rw
* renamed babel-dtls and babel-hmac to babel-dtls-cert-sets and
babel-hmac-key-sets and references to them from interfaces are
babel-if-dtls-cert-sets and babel-if-hmac-key-sets
* https://github.com/bhstark2/babel-information-model/issues/16
with nits
* https://github.com/bhstark2/babel-information-model/issues/14
addressing parameters not allowed to be empty/null
* https://github.com/bhstark2/babel-information-model/issues/18
on IANA link properties table
Authors' Addresses Authors' Addresses
Barbara Stark Barbara Stark
AT&T AT&T
Atlanta, GA Atlanta, GA
US US
Email: barbara.stark@att.com Email: barbara.stark@att.com
Mahesh Jethanandani Mahesh Jethanandani
VMware VMware
California California
US US
Email: mjethanandani@gmail.com Email: mjethanandani@gmail.com
 End of changes. 47 change blocks. 
82 lines changed or deleted 118 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/