idnits 2.17.1 draft-ietf-babel-information-model-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack a Security Considerations section. ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) == There are 1 instance of lines with multicast IPv4 addresses in the document. If these are generic example addresses, they should be changed to use the 233.252.0.x range defined in RFC 5771 == There are 1 instance of lines with non-RFC3849-compliant IPv6 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 154 has weird spacing: '...nts-obj babe...' == Line 155 has weird spacing: '...ces-obj babel...' == Line 186 has weird spacing: '...address babe...' == Line 187 has weird spacing: '...address babe...' == Line 211 has weird spacing: '...ors-obj babel...' == (1 more instance...) -- The document date (January 2, 2018) is 2300 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- -- Obsolete informational reference (is this intentional?): RFC 7298 (Obsoleted by RFC 8967) Summary: 2 errors (**), 0 flaws (~~), 9 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Babel routing protocol B. Stark 3 Internet-Draft AT&T 4 Intended status: Informational January 2, 2018 5 Expires: July 6, 2018 7 Babel Information Model 8 draft-ietf-babel-information-model-01 10 Abstract 12 This Babel Information Model can be used to create data models under 13 various data modeling regimes (e.g., YANG). It allows a Babel 14 implementation (via a management protocol such as netconf) to report 15 on its current state and may allow some limited configuration of 16 protocol constants. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at https://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on July 6, 2018. 35 Copyright Notice 37 Copyright (c) 2018 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (https://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 54 1.2. Notation . . . . . . . . . . . . . . . . . . . . . . . . 3 55 2. The Information Model . . . . . . . . . . . . . . . . . . . . 4 56 2.1. Definition of babel-information . . . . . . . . . . . . . 4 57 2.2. Definition of babel-constants . . . . . . . . . . . . . . 4 58 2.3. Definition of babel-interfaces . . . . . . . . . . . . . 5 59 2.4. Definition of babel-neighbors . . . . . . . . . . . . . . 6 60 2.5. Definition of babel-security . . . . . . . . . . . . . . 6 61 2.6. Definition of babel-trust . . . . . . . . . . . . . . . . 7 62 2.7. Definition of babel-sources . . . . . . . . . . . . . . . 7 63 2.8. Definition of babel-routes . . . . . . . . . . . . . . . 7 64 3. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 65 4. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 66 4.1. Normative References . . . . . . . . . . . . . . . . . . 9 67 4.2. Informative References . . . . . . . . . . . . . . . . . 9 68 Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 10 69 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 71 1. Introduction 73 Babel is a loop-avoiding distance-vector routing protocol defined in 74 RFC 6126bis [RFC6126bis]. Babel Hashed Message Authentication Code 75 (HMAC) Cryptographic Authentication, defined in RFC 7298 [RFC7298], 76 describes a cryptographic authentication mechanism for the Babel 77 routing protocol. This document describes an information model for 78 Babel (including HMAC) that can be used to created management 79 protocol data models (such as a netconf [RFC6241] YANG data model). 80 Other Babel extensions may be included in this document when they 81 become working group drafts. 83 Due to the simplicity of the Babel protocol and the fact that it is 84 designed to be used in non-professionally administered environments 85 (such as home networks), most of the information model is focused on 86 reporting status of the Babel protocol, and very little of that is 87 considered mandatory to implement (conditional on a management 88 protocol with Babel support being implemented). Some parameters may 89 be configurable; however, it is up to the Babel implementation 90 whether to allow any of these to be configured within its 91 implementation. Where the implementation does not allow 92 configuration of these parameters, it may still choose to expose them 93 as read-only. 95 1.1. Requirements Language 97 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 98 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 99 document are to be interpreted as described in RFC 2119 [RFC2119]. 101 1.2. Notation 103 This document uses a programming language-like notation to define the 104 properties of the objects of the information model. An optional 105 property is enclosed by square brackets, [ ], and a list property is 106 indicated by two numbers in angle brackets, , where m indicates 107 the minimal number of values, and n is the maximum. The symbol * for 108 n means no upper bound. 110 The object definitions use base types that are defined as follows: 112 base64 An opaque array of bytes. 114 boolean A type representing a boolean value. 116 counter A non-negative integer that monotonically increases. 117 Counters may have discontinuities and they are not 118 expected to persist across restarts. 120 credentials An opaque type representing credentials needed by a 121 cryptographic mechanism to secure communication. Data 122 models must expand this opaque type as needed and 123 required by the security protocols utilized. 125 datetime A type representing a date and time using the Gregorian 126 calendar. The datetime format MUST conform to RFC 3339 127 [RFC3339]. 129 int A type representing signed or unsigned integer numbers. 130 This information model does not define a precision nor 131 does it make a distinction between signed and unsigned 132 number ranges. This type is also used to represent 133 enumerations. 135 ip-address A type representing an IP address. This type supports 136 both IPv4 and IPv6 addresses. 138 string A type representing a human-readable string consisting of 139 a (possibly restricted) subset of Unicode and ISO/IEC 140 10646 [ISO.10646] characters. 142 uri A type representing a Uniform Resource Identifier as 143 defined in STD 66 [RFC3986]. 145 2. The Information Model 147 2.1. Definition of babel-information 149 object { 150 string babel-implementation-version; 151 base64 babel-self-router-id; 152 [int babel-self-seqno;] 153 string babel-cost-comp-algorithms<1..*>; 154 babel-constants-obj babel-constants; 155 babel-interfaces-obj babel-interfaces<0..*>; 156 babel-sources-obj babel-sources<0..*>; 157 babel-routes-obj babel-routes<0..*>; 158 }babel-information-obj; 160 babel-version: the version of this implementation of the Babel 161 protocol 163 babel-self-router-id: the router-id used by this instance of the 164 Babel protocol to identify itself; RFC 6126bis [RFC6126bis] 165 describes this as an arbitrary string of 8 octets 167 babel-self-seqno: the current sequence number included in route 168 updates for routes originated by this node 170 babel-cost-comp-algorithm: a set of names of supported cost 171 computation algorithms; possible values include "k-out-of-j", 172 "ETX" 174 babel-constants: a babel-constants object 176 babel-interfaces: a set of babel-interface objects 178 babel-sources: a set of babel-source objects 180 babel-routes: a set of babel-route objects 182 2.2. Definition of babel-constants 184 object { 185 int babel-udp-port; 186 [ip-address babel-multicast-group-ipv6;] 187 [ip-address babel-multicast-group-ipv4;] 188 }babel-constants-obj; 190 babel-udp-port: UDP port for sending and listening for Babel 191 messages; default is 6696; MAY be configurable 193 babel-multicast-group-ipv6: multicast group for sending and 194 listening to multicast announcements on IPv6; default is 195 ff02:0:0:0:0:0:1:6; MAY be configurable 197 babel-multicast-group-ipv4: multicast group for sending and 198 listening to multicast announcements on IPv4; default is 199 224.0.0.111; MAY be configurable 201 2.3. Definition of babel-interfaces 203 object { 204 uri babel-interface-reference; 205 [int babel-interface-seqno;] 206 [int babel-interface-hello-interval;] 207 [int babel-interface-update-interval;] 208 boolean babel-request-trigger-ack; 209 boolean babel-lossy-link; 210 [int babel-external-cost;] 211 babel-neighbors-obj babel-neighbors<1..*>; 212 [babel-security-obj babel-security<1..*>;] 213 }babel-interfaces-obj; 215 babel-interface-reference: reference to an interface object as 216 defined by the data model 218 babel-interface-seqno: the current sequence number in use for this 219 interface 221 babel-interface-hello-interval: the current hello interval in use 222 for this interface 224 babel-interface-update-interval: the current update interval in 225 use for this interface 227 babel-request-trigger-ack: requests acknowledgement of triggered 228 updates (if number of neighbors less than babel-ack-limit); MAY be 229 configurable 231 babel-lossy-link: indicates (if true) that the link of this 232 interface is considered lossy; MAY be configurable 234 babel-external-cost: external input to cost of link of this 235 interface (need to determine how to express this);MUST be 236 configurable if implemented 238 2.4. Definition of babel-neighbors 240 object { 241 ip-address babel-neighbor-address; 242 string babel-hello-history; 243 int babel-txcost; 244 int babel-hello-seqno; 245 int babel-neighbor-ihu-interval; 246 [int babel-rxcost] 247 }babel-neighbors-obj; 249 babel-neighbor-address: (IPv4 or v6) address the neighbor sends 250 messages from 252 babel-hello-history: the Hello history (do we want a human 253 readable format?) 255 babel-txcost: transmission cost value from the last IHU packet 256 received from this neighbor, or meximum value (infinity) to 257 indicates the IHU hold timer for this neighbor has expired 259 babel-hello-seqno: expected Hello sequence number 261 babel-neighbor-ihu-interval: current IHU interval for this 262 neighbor 264 babel-router-id: router-id of the neighbor 266 babel-rxcost: reception cost calculated for this neighbor 268 2.5. Definition of babel-security 270 object { 271 string babel-security-supported; 272 string babel-security-enabled-protocol; 273 credentials babel-security-self-cred; 274 babel-trust-obj babel-trust<1..*>; 275 }babel-security-obj; 277 babel-security-supported: list of supported security mechanisms 279 babel-security-enabled-protocol: the currently enabled security 280 protocol; empty if none is enabled 282 babel-security-self-cred: the credentials this router presents to 283 participate in the enabled security protocol 284 babel-trust-obj: a set of babel-trust objects that identify the 285 credentials of a router whose babel messages are trusted 287 2.6. Definition of babel-trust 289 object { 290 credentials babel-trust-cred; 291 }babel-trust-obj; 293 babel-trust-cred: the credentials of a router whose babel messages 294 can be trusted 296 2.7. Definition of babel-sources 298 object { 299 ip-address babel-source-prefix; 300 int babel-source-prefix-length; 301 base64 babel-source-router-id; 302 int babel-source-seqno; 303 int babel-source-metric; 304 [int babel-source-garbage-collection-time;] 305 }babel-sources-obj; 307 babel-source-prefix: Prefix this entry applies to 309 babel-source-prefix-length: Length of the source prefix 311 babel-source-router-id: router-id of the router originating this 312 prefix 314 babel-source-seqno: last sequence number used by this source 316 babel-source-metric: this source's feasibility distance 318 babel-source-garbage-collection-time: garbage-collection timer for 319 this source 321 2.8. Definition of babel-routes 322 object { 323 ip-address babel-route-prefix; 324 int babel-route-prefix-length; 325 base64 babel-route-router-id; 326 base64 babel-route-neighbor; 327 int babel-route-metric; 328 int babel-route-seqno; 329 ip-address babel-route-next-hop; 330 boolean babel-route-selected; 331 }babel-routes-obj; 333 babel-route-prefix: Prefix (expressed in IP address format) for 334 which this route is advertised 336 babel-route-prefix-length: Length of the prefix for which this 337 route is advertised 339 babel-route-router-id: router-id of the source router for which 340 this route is advertised 342 babel-route-neighbor: neighbor that advertised this route (a 343 router-id) 345 babel-route-metric: the metric with which this route was 346 advertised by the neighbor, or maximum value (infinity) to 347 indicate a recently retracted route 349 babel-route-seqno: the sequence number with which this route was 350 advertised 352 babel-route-next-hop: the next-hop address of this route 354 babel-route-selected: a boolean flag indicating whether this route 355 is selected, i.e., whether it is currently being used for 356 forwarding and is being advertised 358 3. Acknowledgements 360 Juliusz Chroboczek review has been very helpful in refining this 361 information model. 363 The language in the Notation section was mostly taken from RFC 8193 364 [RFC8193]. 366 4. References 368 4.1. Normative References 370 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 371 Requirement Levels", BCP 14, RFC 2119, 372 DOI 10.17487/RFC2119, March 1997, 373 . 375 [RFC6126bis] 376 Chroboczek, J., "The Babel Routing Protocol", Work in 377 Progress, draft-ietf-babel-rfc6126bis, October 2017. 379 4.2. Informative References 381 [ISO.10646] 382 International Organization for Standardization, 383 "Information Technology - Universal Multiple-Octet Coded 384 Character Set (UCS)", ISO Standard 10646:2014, 2014. 386 [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: 387 Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, 388 . 390 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 391 Resource Identifier (URI): Generic Syntax", STD 66, 392 RFC 3986, DOI 10.17487/RFC3986, January 2005, 393 . 395 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 396 and A. Bierman, Ed., "Network Configuration Protocol 397 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 398 . 400 [RFC7298] Ovsienko, D., "Babel Hashed Message Authentication Code 401 (HMAC) Cryptographic Authentication", RFC 7298, 402 DOI 10.17487/RFC7298, July 2014, 403 . 405 [RFC8193] Burbridge, T., Eardley, P., Bagnulo, M., and J. 406 Schoenwaelder, "Information Model for Large-Scale 407 Measurement Platforms (LMAPs)", RFC 8193, 408 DOI 10.17487/RFC8193, August 2017, 409 . 411 Appendix A. Open Issues 413 This draft must be reviewed against draft-ietf-babel-rfc6126bis. 415 Following are some issues where a conscious decision may be useful: 417 Closed by defining base64 type and using it for all router IDs: 418 "babel-self-router-id: Should this be an opaque 64-bit value 419 instead of int?" 421 babel-interfaces-obj: "This needs further discussion, I fear some 422 of these are implementation details." 424 Would it be useful to define some parameters for reporting 425 statistics or logs? [Yes, but these need to be proposed.] 427 Would it be useful to define some parameters specifically for 428 security anomalies? [Yes, but these need to be proposed.] 430 I created a basic security model. It's useful for single (or no) 431 active security mechanism; but not multiple active. OK? 433 Do we need a registry for the supported security mechanisms? 435 Author's Address 437 Barbara Stark 438 AT&T 439 Atlanta, GA 440 US 442 Email: barbara.stark@att.com