12. References
12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>. [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, DOI 10.17487/RFC4861, September 2007, <https://www.rfc-editor.org/info/rfc4861>. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <https://www.rfc-editor.org/info/rfc5246>. [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>. [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>. [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>. [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>. [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing Management", RFC 8022, DOI 10.17487/RFC8022, November 2016, <https://www.rfc-editor.org/info/rfc8022>. [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>. [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>. [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>. [RFC8343] Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, <https://www.rfc-editor.org/info/rfc8343>. [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", RFC 8344, DOI 10.17487/RFC8344, March 2018, <https://www.rfc-editor.org/info/rfc8344>.
[W3C.REC-xml-20081126] Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <https://www.w3.org/TR/2008/REC-xml-20081126>.12.2. Informative References
[RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", RFC 7224, DOI 10.17487/RFC7224, May 2014, <https://www.rfc-editor.org/info/rfc7224>. [RFC7895] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Module Library", RFC 7895, DOI 10.17487/RFC7895, June 2016, <https://www.rfc-editor.org/info/rfc7895>. [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", RFC 7951, DOI 10.17487/RFC7951, August 2016, <https://www.rfc-editor.org/info/rfc7951>. [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>. [YANG-Guidelines] Bierman, A., "Guidelines for Authors and Reviewers of YANG Data Model Documents", Work in Progress, draft-ietf-netmod-rfc6087bis-20, March 2018.
Appendix A. The Complete Schema Tree
This appendix presents the complete tree of the core routing data model. See [RFC8340] for an explanation of the symbols used. The data type of every leaf node is shown near the right end of the corresponding line. module: ietf-routing +--rw routing | +--rw router-id? yang:dotted-quad | +--ro interfaces | | +--ro interface* if:interface-ref | +--rw control-plane-protocols | | +--rw control-plane-protocol* [type name] | | +--rw type identityref | | +--rw name string | | +--rw description? string | | +--rw static-routes | | +--rw v4ur:ipv4 | | | +--rw v4ur:route* [destination-prefix] | | | +--rw v4ur:destination-prefix | | | | inet:ipv4-prefix | | | +--rw v4ur:description? string | | | +--rw v4ur:next-hop | | | +--rw (v4ur:next-hop-options) | | | +--:(v4ur:simple-next-hop) | | | | +--rw v4ur:outgoing-interface? | | | | | if:interface-ref | | | | +--rw v4ur:next-hop-address? | | | | inet:ipv4-address | | | +--:(v4ur:special-next-hop) | | | | +--rw v4ur:special-next-hop? | | | | enumeration | | | +--:(v4ur:next-hop-list) | | | +--rw v4ur:next-hop-list | | | +--rw v4ur:next-hop* [index] | | | +--rw v4ur:index | | | | string | | | +--rw v4ur:outgoing-interface? | | | | if:interface-ref | | | +--rw v4ur:next-hop-address? | | | inet:ipv4-address | | +--rw v6ur:ipv6 | | +--rw v6ur:route* [destination-prefix] | | +--rw v6ur:destination-prefix | | | inet:ipv6-prefix | | +--rw v6ur:description? string
| | +--rw v6ur:next-hop | | +--rw (v6ur:next-hop-options) | | +--:(v6ur:simple-next-hop) | | | +--rw v6ur:outgoing-interface? | | | | if:interface-ref | | | +--rw v6ur:next-hop-address? | | | inet:ipv6-address | | +--:(v6ur:special-next-hop) | | | +--rw v6ur:special-next-hop? | | | enumeration | | +--:(v6ur:next-hop-list) | | +--rw v6ur:next-hop-list | | +--rw v6ur:next-hop* [index] | | +--rw v6ur:index | | | string | | +--rw v6ur:outgoing-interface? | | | if:interface-ref | | +--rw v6ur:next-hop-address? | | inet:ipv6-address | +--rw ribs | +--rw rib* [name] | +--rw name string | +--rw address-family identityref | +--ro default-rib? boolean {multiple-ribs}? | +--ro routes | | +--ro route* | | +--ro route-preference? route-preference | | +--ro next-hop | | | +--ro (next-hop-options) | | | +--:(simple-next-hop) | | | | +--ro outgoing-interface? | | | | | if:interface-ref | | | | +--ro v4ur:next-hop-address? | | | | | inet:ipv4-address | | | | +--ro v6ur:next-hop-address? | | | | inet:ipv6-address | | | +--:(special-next-hop) | | | | +--ro special-next-hop? enumeration | | | +--:(next-hop-list) | | | +--ro next-hop-list | | | +--ro next-hop* | | | +--ro outgoing-interface? | | | | if:interface-ref | | | +--ro v4ur:address? | | | | inet:ipv4-address | | | +--ro v6ur:address? | | | inet:ipv6-address
| | +--ro source-protocol identityref | | +--ro active? empty | | +--ro last-updated? yang:date-and-time | | +--ro v4ur:destination-prefix? inet:ipv4-prefix | | +--ro v6ur:destination-prefix? inet:ipv6-prefix | +---x active-route | | +---w input | | | +---w v4ur:destination-address? inet:ipv4-address | | | +---w v6ur:destination-address? inet:ipv6-address | | +--ro output | | +--ro route | | +--ro next-hop | | | +--ro (next-hop-options) | | | +--:(simple-next-hop) | | | | +--ro outgoing-interface? | | | | | if:interface-ref | | | | +--ro v4ur:next-hop-address? | | | | | inet:ipv4-address | | | | +--ro v6ur:next-hop-address? | | | | inet:ipv6-address | | | +--:(special-next-hop) | | | | +--ro special-next-hop? | | | | enumeration | | | +--:(next-hop-list) | | | +--ro next-hop-list | | | +--ro next-hop* | | | +--ro outgoing-interface? | | | | if:interface-ref | | | +--ro v4ur:next-hop-address? | | | | inet:ipv4-address | | | +--ro v6ur:next-hop-address? | | | inet:ipv6-address | | +--ro source-protocol identityref | | +--ro active? empty | | +--ro last-updated? | | | yang:date-and-time | | +--ro v4ur:destination-prefix? | | | inet:ipv4-prefix | | +--ro v6ur:destination-prefix? | | inet:ipv6-prefix | +--rw description? string o--ro routing-state o--ro router-id? yang:dotted-quad o--ro interfaces | o--ro interface* if:interface-state-ref
o--ro control-plane-protocols | o--ro control-plane-protocol* [type name] | o--ro type identityref | o--ro name string o--ro ribs o--ro rib* [name] o--ro name string o--ro address-family identityref o--ro default-rib? boolean {multiple-ribs}? o--ro routes | o--ro route* | o--ro route-preference? route-preference | o--ro next-hop | | o--ro (next-hop-options) | | o--:(simple-next-hop) | | | o--ro outgoing-interface? | | | | if:interface-ref | | | o--ro v4ur:next-hop-address? | | | | inet:ipv4-address | | | o--ro v6ur:next-hop-address? | | | inet:ipv6-address | | o--:(special-next-hop) | | | o--ro special-next-hop? enumeration | | o--:(next-hop-list) | | o--ro next-hop-list | | o--ro next-hop* | | o--ro outgoing-interface? | | | if:interface-ref | | o--ro v4ur:address? | | | inet:ipv4-address | | o--ro v6ur:address? | | inet:ipv6-address | o--ro source-protocol identityref | o--ro active? empty | o--ro last-updated? yang:date-and-time | o--ro v4ur:destination-prefix? inet:ipv4-prefix | o--ro v6ur:destination-prefix? inet:ipv6-prefix o---x active-route o---w input | o---w v4ur:destination-address? inet:ipv4-address | o---w v6ur:destination-address? inet:ipv6-address o--ro output
o--ro route o--ro next-hop | o--ro (next-hop-options) | o--:(simple-next-hop) | | o--ro outgoing-interface? | | | if:interface-ref | | o--ro v4ur:next-hop-address? | | | inet:ipv4-address | | o--ro v6ur:next-hop-address? | | inet:ipv6-address | o--:(special-next-hop) | | o--ro special-next-hop? | | enumeration | o--:(next-hop-list) | o--ro next-hop-list | o--ro next-hop* | o--ro outgoing-interface? | | if:interface-ref | o--ro v4ur:next-hop-address? | | inet:ipv4-address | o--ro v6ur:next-hop-address? | inet:ipv6-address o--ro source-protocol identityref o--ro active? empty o--ro last-updated? | yang:date-and-time o--ro v4ur:destination-prefix? | inet:ipv4-prefix o--ro v6ur:destination-prefix? inet:ipv6-prefix module: ietf-ipv6-unicast-routing augment /if:interfaces/if:interface/ip:ipv6: +--rw ipv6-router-advertisements +--rw send-advertisements? boolean +--rw max-rtr-adv-interval? uint16 +--rw min-rtr-adv-interval? uint16 +--rw managed-flag? boolean +--rw other-config-flag? boolean +--rw link-mtu? uint32 +--rw reachable-time? uint32 +--rw retrans-timer? uint32 +--rw cur-hop-limit? uint8 +--rw default-lifetime? uint16 +--rw prefix-list +--rw prefix* [prefix-spec] +--rw prefix-spec inet:ipv6-prefix
+--rw (control-adv-prefixes)? +--:(no-advertise) | +--rw no-advertise? empty +--:(advertise) +--rw valid-lifetime? uint32 +--rw on-link-flag? boolean +--rw preferred-lifetime? uint32 +--rw autonomous-flag? boolean augment /if:interfaces-state/if:interface/ip:ipv6: o--ro ipv6-router-advertisements o--ro send-advertisements? boolean o--ro max-rtr-adv-interval? uint16 o--ro min-rtr-adv-interval? uint16 o--ro managed-flag? boolean o--ro other-config-flag? boolean o--ro link-mtu? uint32 o--ro reachable-time? uint32 o--ro retrans-timer? uint32 o--ro cur-hop-limit? uint8 o--ro default-lifetime? uint16 o--ro prefix-list o--ro prefix* [prefix-spec] o--ro prefix-spec inet:ipv6-prefix o--ro valid-lifetime? uint32 o--ro on-link-flag? boolean o--ro preferred-lifetime? uint32 o--ro autonomous-flag? booleanAppendix B. Minimum Implementation
Some parts and options of the core routing model, such as user-defined RIBs, are intended only for advanced routers. This appendix gives basic non-normative guidelines for implementing a bare minimum of available functions. Such an implementation may be used for hosts or very simple routers. A minimum implementation does not support the "multiple-ribs" feature. This means that a single system-controlled RIB is available for each supported address family -- IPv4, IPv6, or both. These RIBs are also the default RIBs. No user-controlled RIBs are allowed. In addition to the mandatory instance of the "direct" pseudo-protocol, a minimum implementation should support configuring instance(s) of the "static" pseudo-protocol. For hosts that are never intended to act as routers, the ability to turn on sending IPv6 Router Advertisements (Section 5.4) should be removed.
Platforms with severely constrained resources may use deviations for restricting the data model, e.g., limiting the number of "static" control-plane protocol instances.Appendix C. Example: Adding a New Control-Plane Protocol
This appendix demonstrates how the core routing data model can be extended to support a new control-plane protocol. The YANG module "example-rip" shown below is intended as an illustration rather than a real definition of a data model for the Routing Information Protocol (RIP). For the sake of brevity, this module does not obey all the guidelines specified in [YANG-Guidelines]. See also Section 5.3.2. module example-rip { yang-version "1.1"; namespace "http://example.com/rip"; prefix "rip"; import ietf-interfaces { prefix "if"; } import ietf-routing { prefix "rt"; } identity rip { base rt:routing-protocol; description "Identity for the Routing Information Protocol (RIP)."; } typedef rip-metric { type uint8 { range "0..16"; } }
grouping route-content { description "This grouping defines RIP-specific route attributes."; leaf metric { type rip-metric; } leaf tag { type uint16; default "0"; description "This leaf may be used to carry additional information, e.g., an autonomous system (AS) number."; } } augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { when "derived-from-or-self(rt:source-protocol, 'rip:rip')" { description "This augment is only valid for a route whose source protocol is RIP."; } description "RIP-specific route attributes."; uses route-content; } augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" + "rt:output/rt:route" { description "RIP-specific route attributes in the output of an 'active-route' RPC."; uses route-content; } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol" { when "derived-from-or-self(rt:type,'rip:rip')" { description "This augment is only valid for a routing protocol instance of type 'rip'."; } container rip { presence "RIP configuration"; description "RIP instance configuration."; container interfaces {
description "Per-interface RIP configuration."; list interface { key "name"; description "RIP is enabled on interfaces that have an entry in this list, unless 'enabled' is set to 'false' for that entry."; leaf name { type if:interface-ref; } leaf enabled { type boolean; default "true"; } leaf metric { type rip-metric; default "1"; } } } leaf update-interval { type uint8 { range "10..60"; } units "seconds"; default "30"; description "Time interval between periodic updates."; } } } }
Appendix D. Data Tree Example
This section contains an example of an instance data tree from the operational state, in JSON encoding [RFC7951]. (This example includes "iana-if-type", which is defined in [RFC7224].) The data conforms to a data model that is defined by the following YANG library specification [RFC7895]: { "ietf-yang-library:modules-state": { "module-set-id": "c2e1f54169aa7f36e1a6e8d0865d441d3600f9c4", "module": [ { "name": "ietf-routing", "revision": "2018-03-13", "feature": [ "multiple-ribs", "router-id" ], "namespace": "urn:ietf:params:xml:ns:yang:ietf-routing", "conformance-type": "implement" }, { "name": "ietf-ipv4-unicast-routing", "revision": "2018-03-13", "namespace": "urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing", "conformance-type": "implement" }, { "name": "ietf-ipv6-unicast-routing", "revision": "2018-03-13", "namespace": "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing", "conformance-type": "implement", "submodule": [ { "name": "ietf-ipv6-router-advertisements", "revision": "2018-03-13" } ] }, { "name": "ietf-interfaces", "revision": "2018-02-20", "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces", "conformance-type": "implement"
}, { "name": "ietf-inet-types", "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "revision": "2013-07-15", "conformance-type": "import" }, { "name": "ietf-yang-types", "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types", "revision": "2013-07-15", "conformance-type": "import" }, { "name": "iana-if-type", "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type", "revision": "2014-05-08", "conformance-type": "implement" }, { "name": "ietf-ip", "revision": "2018-02-22", "namespace": "urn:ietf:params:xml:ns:yang:ietf-ip", "conformance-type": "implement" } ] } }
A simple network setup as shown in Figure 2 is assumed: router "A" uses static default routes with the "ISP" router as the next hop. IPv6 Router Advertisements are configured only on the "eth1" interface and disabled on the upstream "eth0" interface. +-----------------+ | | | Router ISP | | | +--------+--------+ |2001:db8:0:1::2 |192.0.2.2 | | |2001:db8:0:1::1 eth0|192.0.2.1 +--------+--------+ | | | Router A | | | +--------+--------+ eth1|198.51.100.1 |2001:db8:0:2::1 | Figure 2: Example of Network Configuration The instance data tree could then be as follows: { "ietf-interfaces:interfaces": { "interface": [ { "name": "eth0", "type": "iana-if-type:ethernetCsmacd", "description": "Uplink to ISP.", "phys-address": "00:0C:42:E5:B1:E9", "oper-status": "up", "statistics": { "discontinuity-time": "2015-10-24T17:11:27+02:00" }, "ietf-ip:ipv4": { "forwarding": true, "mtu": 1500, "address": [ { "ip": "192.0.2.1", "prefix-length": 24
} ] }, "ietf-ip:ipv6": { "forwarding": true, "mtu": 1500, "address": [ { "ip": "2001:0db8:0:1::1", "prefix-length": 64 } ], "autoconf": { "create-global-addresses": false }, "ietf-ipv6-unicast-routing:ipv6-router-advertisements": { "send-advertisements": false } } }, { "name": "eth1", "type": "iana-if-type:ethernetCsmacd", "description": "Interface to the internal network.", "phys-address": "00:0C:42:E5:B1:EA", "oper-status": "up", "statistics": { "discontinuity-time": "2015-10-24T17:11:29+02:00" }, "ietf-ip:ipv4": { "forwarding": true, "mtu": 1500, "address": [ { "ip": "198.51.100.1", "prefix-length": 24 } ] }, "ietf-ip:ipv6": { "forwarding": true, "mtu": 1500, "address": [ { "ip": "2001:0db8:0:2::1", "prefix-length": 64 } ],
"autoconf": { "create-global-addresses": false }, "ietf-ipv6-unicast-routing:ipv6-router-advertisements": { "send-advertisements": true, "prefix-list": { "prefix": [ { "prefix-spec": "2001:db8:0:2::/64" } ] } } } } ] }, "ietf-routing:routing": { "router-id": "192.0.2.1", "control-plane-protocols": { "control-plane-protocol": [ { "type": "ietf-routing:static", "name": "st0", "description": "Static routing is used for the internal network.", "static-routes": { "ietf-ipv4-unicast-routing:ipv4": { "route": [ { "destination-prefix": "0.0.0.0/0", "next-hop": { "next-hop-address": "192.0.2.2" } } ] }, "ietf-ipv6-unicast-routing:ipv6": { "route": [ { "destination-prefix": "::/0", "next-hop": { "next-hop-address": "2001:db8:0:1::2" } } ] }
} } ] }, "ribs": { "rib": [ { "name": "ipv4-master", "address-family": "ietf-ipv4-unicast-routing:ipv4-unicast", "default-rib": true, "routes": { "route": [ { "ietf-ipv4-unicast-routing:destination-prefix": "192.0.2.1/24", "next-hop": { "outgoing-interface": "eth0" }, "route-preference": 0, "source-protocol": "ietf-routing:direct", "last-updated": "2015-10-24T17:11:27+02:00" }, { "ietf-ipv4-unicast-routing:destination-prefix": "198.51.100.0/24", "next-hop": { "outgoing-interface": "eth1" }, "source-protocol": "ietf-routing:direct", "route-preference": 0, "last-updated": "2015-10-24T17:11:27+02:00" }, { "ietf-ipv4-unicast-routing:destination-prefix": "0.0.0.0/0", "source-protocol": "ietf-routing:static", "route-preference": 5, "next-hop": { "ietf-ipv4-unicast-routing:next-hop-address": "192.0.2.2" }, "last-updated": "2015-10-24T18:02:45+02:00" } ] } }, {
"name": "ipv6-master", "address-family": "ietf-ipv6-unicast-routing:ipv6-unicast", "default-rib": true, "routes": { "route": [ { "ietf-ipv6-unicast-routing:destination-prefix": "2001:db8:0:1::/64", "next-hop": { "outgoing-interface": "eth0" }, "source-protocol": "ietf-routing:direct", "route-preference": 0, "last-updated": "2015-10-24T17:11:27+02:00" }, { "ietf-ipv6-unicast-routing:destination-prefix": "2001:db8:0:2::/64", "next-hop": { "outgoing-interface": "eth1" }, "source-protocol": "ietf-routing:direct", "route-preference": 0, "last-updated": "2015-10-24T17:11:27+02:00" }, { "ietf-ipv6-unicast-routing:destination-prefix": "::/0", "next-hop": { "ietf-ipv6-unicast-routing:next-hop-address": "2001:db8:0:1::2" }, "source-protocol": "ietf-routing:static", "route-preference": 5, "last-updated": "2015-10-24T18:02:45+02:00" } ] } } ] } } }
Appendix E. NETCONF Get Data Reply Example
This section gives an example of an XML [W3C.REC-xml-20081126] reply to the NETCONF <get-data> request for <operational> for a device that implements the example data models above. <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101"> <data> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing" xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"> <router-id or:origin="or:intended">192.0.2.1</router-id> <control-plane-protocols or:origin="or:intended"> <control-plane-protocol> <type>ietf-routing:static</type> <name>static-routing-protocol</name> <static-routes> <ietf-ipv4-unicast-routing:ipv4> <route> <destination-prefix>0.0.0.0/0</destination-prefix> <next-hop> <next-hop-address>192.0.2.2</next-hop-address> </next-hop> </route> </ietf-ipv4-unicast-routing:ipv4> <ietf-ipv6-unicast-routing:ipv6> <route> <destination-prefix>::/0</destination-prefix> <next-hop> <next-hop-address>2001:db8:0:1::2</next-hop-address> </next-hop> </route> </ietf-ipv6-unicast-routing:ipv6> </static-routes> </control-plane-protocol> </control-plane-protocols> <ribs> <rib or:origin="or:intended"> <name>ipv4-master</name> <address-family> ietf-ipv4-unicast-routing:ipv4-unicast </address-family> <default-rib>true</default-rib> <routes>
<route> <ietf-ipv4-unicast-routing:destination-prefix> 192.0.2.1/24 </ietf-ipv4-unicast-routing:destination-prefix> <next-hop> <outgoing-interface>eth0</outgoing-interface> </next-hop> <route-preference>0</route-preference> <source-protocol>ietf-routing:direct</source-protocol> <last-updated>2015-10-24T17:11:27+02:00</last-updated> </route> <route> <ietf-ipv4-unicast-routing:destination-prefix> 198.51.100.0/24 </ietf-ipv4-unicast-routing:destination-prefix> <next-hop> <outgoing-interface>eth1</outgoing-interface> </next-hop> <route-preference>0</route-preference> <source-protocol>ietf-routing:direct</source-protocol> <last-updated>2015-10-24T17:11:27+02:00</last-updated> </route> <route> <ietf-ipv4-unicast-routing:destination-prefix>0.0.0.0/0 </ietf-ipv4-unicast-routing:destination-prefix> <next-hop> <ietf-ipv4-unicast-routing:next-hop-address>192.0.2.2 </ietf-ipv4-unicast-routing:next-hop-address> </next-hop> <route-preference>5</route-preference> <source-protocol>ietf-routing:static</source-protocol> <last-updated>2015-10-24T18:02:45+02:00</last-updated> </route> </routes> </rib> <rib or:origin="or:intended"> <name>ipv6-master</name> <address-family> ietf-ipv6-unicast-routing:ipv6-unicast </address-family> <default-rib>true</default-rib> <routes> <route> <ietf-ipv6-unicast-routing:destination-prefix> 2001:db8:0:1::/64 </ietf-ipv6-unicast-routing:destination-prefix> <next-hop> <outgoing-interface>eth0</outgoing-interface>
</next-hop> <route-preference>0</route-preference> <source-protocol>ietf-routing:direct</source-protocol> <last-updated>2015-10-24T17:11:27+02:00</last-updated> </route> <route> <ietf-ipv6-unicast-routing:destination-prefix> 2001:db8:0:2::/64 </ietf-ipv6-unicast-routing:destination-prefix> <next-hop> <outgoing-interface>eth1</outgoing-interface> </next-hop> <route-preference>0</route-preference> <source-protocol>ietf-routing:direct</source-protocol> <last-updated>2015-10-24T17:11:27+02:00</last-updated> </route> <route> <ietf-ipv6-unicast-routing:destination-prefix>::/0 </ietf-ipv6-unicast-routing:destination-prefix> <next-hop> <ietf-ipv6-unicast-routing:next-hop-address> 2001:db8:0:1::2 </ietf-ipv6-unicast-routing:next-hop-address> </next-hop> <route-preference>5</route-preference> <source-protocol>ietf-routing:static</source-protocol> <last-updated>2015-10-24T18:02:45+02:00</last-updated> </route> </routes> </rib> </ribs> </routing> </data> </rpc-reply>
Acknowledgments
The authors wish to thank Nitin Bahadur, Martin Bjorklund, Dean Bogdanovic, Joe Clarke, Francis Dupont, Jeff Haas, Joel Halpern, Wes Hardaker, Jia He, Sriganesh Kini, Suresh Krishnan, David Lamparter, Xiang Li, Stephane Litkowski, Andrew McGregor, Jan Medved, Thomas Morin, Tom Petch, Bruno Rijsman, Juergen Schoenwaelder, Phil Shafer, Dave Thaler, Vladimir Vassilev, Rob Wilton, Yi Yang, Derek Man-Kit Yeung, and Jeffrey Zhang for their helpful comments and suggestions.Authors' Addresses
Ladislav Lhotka CZ.NIC Email: lhotka@nic.cz Acee Lindem Cisco Systems Email: acee@cisco.com Yingzhen Qu Huawei 2330 Central Expressway Santa Clara, CA 95050 United States of America Email: yingzhen.qu@huawei.com