One document matched: draft-wang-i2rs-rib-data-model-00.txt
Network Working Group Lixing. Wang
Internet-Draft Huawei
Intended status: Standards Track Amit. Dass
Expires: June 11, 2015 Ericsson
December 08, 2014
Data model for RIB I2RS protocol
draft-wang-i2rs-rib-data-model-00
Abstract
Routing and routing functions in enterprise and carrier networks are
typically performed by network devices (routers and switches) using a
routing information base (RIB). Protocols and configuration
collectively push data into RIB and the RIB manager installs state
information into the hardware; for packet forwarding. This draft
specifies a data model for the RIB in order to define and enable a
standardized data model. Such a data model can be used to define an
interface to the RIB by using an entity that may even be external to
the network device. This interface can be used to support new use-
cases being defined by the IETF I2RS WG.
This document introduces a yang data for I2RS RIB that aligns with
the I2RS RIB use cases and I2RS RIB infomation model.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 11, 2015.
Wang & Dass Expires June 11, 2015 [Page 1]
Internet-Draft RIB I2RS DM December 2014
Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3
3. Yang Top-level description . . . . . . . . . . . . . . . . . 3
3.1. Capabilities . . . . . . . . . . . . . . . . . . . . . . 3
3.2. routing-instance-list . . . . . . . . . . . . . . . . . . 4
3.3. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 6
3.5. NextHops . . . . . . . . . . . . . . . . . . . . . . . . 9
4. Full Yang Top-level description . . . . . . . . . . . . . . . 11
5. RIB Yang description . . . . . . . . . . . . . . . . . . . . 33
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52
7. Security Considerations . . . . . . . . . . . . . . . . . . . 52
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.1. Informative References . . . . . . . . . . . . . . . . . 53
8.2. Normative References . . . . . . . . . . . . . . . . . . 53
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 53
1. Introduction
The Interface to the Routing System (I2RS) provides read and write
access to the information and state within the routing process that
exists inside the routing elements via protocol message exchange
between an I2RS Client and an I2RS Agent associated with the routing
system. The [I-D.ietf-i2rs-architecture] describes the basic
interaction procedures of this exchange activity. One of the
important functions of this messages exchange is to get the I2RS
client interact with one or more I2RS agents in order to collect
information from the network routing systems.
Protocols and configuration collectively push data into RIB and the
RIB manager installs state information into the hardware; for packet
Wang & Dass Expires June 11, 2015 [Page 2]
Internet-Draft RIB I2RS DM December 2014
forwarding. This draft specifies a standardized data model for the
RIB. Such a data model can be used to define an interface to the RIB
from an entity that may even be external to the network device. This
interface can be used to support new use-cases being defined by the
IETF I2RS WG.
2. Definitions and Acronyms
RIB: routing information base
Information Model: An abstract model of a conceptual domain,
independent of a specific implementation or data representation
NETCONF:The Network Configuration Protocol as defined in [RFC6536]
RESTCONF: The REST-like protocol that provides a programmatic
interface over HTTP for accesing the data defined in YANG, using
datastores defined in NETCONF Protocol [I-D.ietf-netconf-restconf] as
defined in RBNF: Routing Backus-Naur Form [RFC5511].
3. Yang Top-level description
3.1. Capabilities
RIB capability negotiation is very important because not all of the
hardware will be able to support all kinds of nexthops and there
should be a limitation on how many levels of lookup can be
practically performed. Therefore, a RIB data-model MUST specify a
way for an external entity to learn about the functional capabilities
of a network device.
At the same time, nexthop chains can be used to specify multiple
headers over a packet, before that particular packet is forwarded.
Not every network device will be able to support all kinds of nexthop
chains along with the arbitrary number of headers which are chained
together. The RIB data-model SHOULD provide a way to expose the
nexthop chaining capability supported by a given network device.
The high-level yang for the next-hop-capacity and the nexthop-tunnel-
encap-capacity :
Wang & Dass Expires June 11, 2015 [Page 3]
Internet-Draft RIB I2RS DM December 2014
+--rw nexthop-capacity
| +--rw support-tunnel? boolean
| +--rw support-chains? boolean
| +--rw support-list-of-list? boolean
| +--rw support-replication? boolean
| +--rw support-weighted? boolean
| +--rw support-protection? boolean
| +--rw lookup-limit? uint8
+--rw nexthop-tunnel-encap-capacity
| +--rw support-ipv4? boolean
| +--rw support-ipv6? boolean
| +--rw support-mpls? boolean
| +--rw support-gre? boolean
| +--rw support-vxlan? boolean
| +--rw support-nvgre? boolean
3.2. routing-instance-list
A routing instance, in the context of the RIB information model, is a
collection of RIBs, interfaces, and routing protocol parameters. A
routing instance creates a logical slice of the router and can allow
multiple different logical slices; across a set of routers; to
communicate with each other. And the routing protocol parameters
control the information available in the RIBs.
A routing instance MUST contain the following mandatory fields.
o INSTANCE_NAME: A routing instance is identified by its defined name
o rib-list: This is the list of RIBs associated with this routing
instance. Each routing instance can have multiple RIBs to represent
routes of different types.A route is essentially a match condition
and an action following that match. The match condition specifies
the kind of route (IPv4, MPLS, etc.) and the set of fields to match
on.
A routing instance MAY contain the following optional fields.
o interface-list: This represents the list of interfaces associated
with a particular routing instance.
o router-id: The router-id field identifies the network device in
various control plane interactions with other network devices.
Top level yang :
Wang & Dass Expires June 11, 2015 [Page 4]
Internet-Draft RIB I2RS DM December 2014
+--rw routing-instance-list* [instance-name]
+--rw instance-name string
+--rw interface-list* [name]
| +--rw name if:interface-ref
+--rw-id? Yang:dotted-quad
+--rw rib-list* [rib-name]
+--rw rib-name string
+--rw rib-family rib-family-def
+--rw enable-ip-rpf-check? Boolean
+--rw route-list* [route-index]
+--rw route-index unit 64
+--rw-type route-type-def
+--rw (rib-route-type)?
| +--:(ipv4)
| +--:(ipv6)
| +--:(mpls-route)
| +--:(mac-route)
| +--:(interface-route)
+--rw nexthop-list* [nexthop-list-index]
+--ro route-state? route-state-def
+--ro route-installed-state? route-installed-state-def
+--ro route-reason ? route-reason-def
+--rw route-preference uint32
+--rw local-only Boolean
+--rw address-family-route-attributes
3.3. Route
A route is essentially a match condition and an action following that
match. The match condition specifies the kind of route (IPv4, MPLS,
MAC.Interface) and the set of fields to match on.Each route MUST have
associated with an identified ROUTE_PREFERENCE attributes and
preferably it can have one or more optional route attributes,such as
the route-vendor-attributes.
Route must contains the following attributes: Installed (Indicates
whether the route got installed in the FIB) ; Active (Indicates
whether a route is fully resolved and is a candidate for selection) ;
Reason - E.g. Not authorized
A nexthop represents an object value resulting from a route lookup.
Nexthops can be Unicast, Tunnel nexthops , Replication lists,
Weighted lists , Protection lists , Nexthop chains , Indirect
nexthops, Special nexthops.
Top level yang :
Wang & Dass Expires June 11, 2015 [Page 5]
Internet-Draft RIB I2RS DM December 2014
+--rw route-list* [route-index]
+--rw route-index uint64
+--rw route-type route-type-def
+--rw (rib-route-type)?
| +--:(ipv4)
| +--:(ipv6)
| +--:(mpls-route)
| +--:(mac-route)
| +--:(interface-route)
+--rw nexthop-list* [nexthop-list-index]
| +--rw nexthop-list-index uint32
| +--rw (nexthop-list-type)?
| +--:(special-nexthop)
| | +--rw special-nexthop? special-nexthop-def
| +--:(normal-nexthop)
| +--rw (nexthop-member-or-list-of-list)?
| +--:(one-nexthop-list-member)
| +--:(nexthop-list-of-list)
+--ro route-state? route-state-def
+--ro route-installed-state? route-installed-state-def
+--ro route-reason? route-reason-def
+--rw route-preference uint32
+--rw local-only boolean
+--rw address-family-route-attributes
+--rw (route-type)?
+--:(ip-route-attributes)
+--:(mpls-route-attributes)
+--:(eThernet-route-attributes)
3.4. Notifications
Asynchronous notifications are sent by the RIB manager of a network
device to an external entity when some event triggers on the network
device. A RIB data-model MUST support sending 2 kind of asynchronous
notifications.
1. Route change notification:
o Installed (Indicates whether the route got installed in the FIB) ;
o Active (Indicates whether a route is fully resolved and is a
candidate for selection) ;
o Reason - E.g. Not authorized
2. Nexthop resolution status notification
Nexthops can be fully resolved nexthops or an unresolved nexthop.
Wang & Dass Expires June 11, 2015 [Page 6]
Internet-Draft RIB I2RS DM December 2014
A resolved nexthop has adequate level of information to send the
outgoing packet towards the destination by forwarding it on an
interface of a directly connected neighbor.
An unresolved nexthop is something that requires the RIB manager to
determine the final resolved nexthop. For example, in a case when a
nexthop could be an IP address. The RIB manager would resolve how to
reach that IP address, e.g. by checking if that particular IP is
address reachable by regular IP forwarding or by a MPLS tunnel or by
both. If the RIB manager cannot resolve the nexthop, then the
nexthop remains in an unresolved state and is NOT a suitable
candidate for installation in the FIB.
Top level yang :
notifications:
+---n nexthop-resolution-status-change
| +--ro nexthop-chain-identifier
| | +--ro (nexthop-identifier-type)?
| | +--:(nexthop-name)
| | | +--ro nexthop-name string
| | +--:(nexthop-id)
| | +--ro nexthop-id uint32
| +--ro nexthop* [nexthop-index]
| | +--ro nexthop-index uint32
| | +--ro (next-hop-options)?
| | +--:(nexthop-identifier-next-hop)
| | +--:(egress-interface-next-hop)
| | | +--ro outgoing-interface string
| | +--:(ipv4-address-next-hop)
| | | +--ro next-hop-ipv4-address inet:ipv4-address
| | | +--ro ipv4-rib-name? string
| | +--:(ipv6-address-next-hop)
| | | +--ro next-hop-ipv6-address inet:ipv6-address
| | | +--ro ipv6-rib-name? string
| | +--:(egress-interface-ipv4-next-hop)
| | | +--ro next-hop-egress-interface-ipv4-address
| | | +--ro outgoing-interface string
| | | +--ro next-hop-egress-ipv4-address inet:ipv4-address
| | +--:(egress-interface-ipv6-next-hop)
| | | +--ro next-hop-egress-interface-ipv6-address
| | | +--ro outgoing-interface string
| | | +--ro next-hop-egress-ipv6-address inet:ipv4-address
| | +--:(egress-interface-mac-next-hop)
| | | +--ro next-hop-egress-interface-mac-address
| | | +--ro outgoing-interface string
| | | +--ro ieee-mac-address uint32
| | +--:(logical-tunnel-next-hop)
Wang & Dass Expires June 11, 2015 [Page 7]
Internet-Draft RIB I2RS DM December 2014
| | | +--ro logical-tunnel
| | | +--ro tunnel-type tunnel-type-def
| | | +--ro tunnel-name string
| | +--:(tunnel-encap-next-hop)
| | +--ro tunnel-encap
| | +--ro (tunnel-type)?
| | | +--:(ipv4)
| | | +--:(ipv6)
| | | +--:(mpls)
| | | | +--ro (mpls-action-type)?
| | | +--:(gre)
| | | +--:(nvgre)
| | | +--ro (nvgre-type)?
| | | +--ro virtual-subnet-id uint32
| | | +--ro flow-id? uint16
| | +--ro (nexthop-second-encap-or-not)?
| | | +--:(nexthop-second-encap)
| | | +--ro nexthop-second-encap
| | | +--ro (nexthop-third-encap-or-not)?
| | | +--:(nexthop-third-encap)
| | | +--ro nexthop-third-encap
| | | +--ro (nexthop-forth-encap-or-not)?
| | | +--:(nexthop-forth-encap)
| | | +--ro nexthop-forth-encap
| | | +--ro (nexthop-fifth-encap-or-not)?
| | | +--:(nexthop-fifth-encap)
| | | +--ro nexthop-fifth-encap
| | +--ro outgoing-interface? string
| +--ro nexthop-state nexthop-state-def
+---n route-change
+--ro instance-name string
+--ro rib-name string
+--ro rib-family rib-family-def
+--ro route-index uint64
+--ro route-type route-type-def
+--ro (rib-route-type)?
| +--:(ipv4)
| | +--ro ipv4
| | +--ro ipv4-route-type ip-route-type-def
| | +--ro (ip-route-type)?
| | +--:(destination-ipv4-address)
| | | +--ro destination-ipv4-prefix inet:ipv4-prefix
| | +--:(source-ipv4-address)
| | | +--ro source-ipv4-prefix inet:ipv4-prefix
| | +--:(destination-source-ipv4-address)
| | +--ro destination-source-ipv4-address
| | +--ro destination-ipv4-prefix inet:ipv4-prefix
Wang & Dass Expires June 11, 2015 [Page 8]
Internet-Draft RIB I2RS DM December 2014
| | +--ro source-ipv4-prefix inet:ipv4-prefix
| +--:(ipv6)
| | +--ro ipv6
| | +--ro ipv6-route-type ip-route-type-def
| | +--ro (ip-route-type)?
| | +--:(destination-ipv6-address)
| | | +--ro destination-ipv6-prefix inet:ipv6-prefix
| | +--:(source-ipv6-address)
| | | +--ro source-ipv6-prefix inet:ipv6-prefix
| | +--:(destination-source-ipv6-address)
| | +--ro destination-source-ipv6-address
| | +--ro destination-ipv6-prefix inet:ipv6-prefix
| | +--ro source-ipv6-prefix inet:ipv6-prefix
| +--:(mpls-route)
| | +--ro mpls-label-in uint32
| | +--ro mpls-action mpls-action-def
| | +--ro mpls-label-out? uint32
| +--:(mac-route)
| | +--ro mac-address uint32
| +--:(interface-route)
| +--ro interface-identifier uint32
+--ro route-installed-state route-installed-state-def
+--ro route-state route-state-def
+--ro route-reason route-reason-def
3.5. NextHops
A nexthop represents an object resulting from a route lookup.
A nexthop can be Special nexthop or a normal nexthop.
1) special-next-hops -for performing some specific well-defined
functions, for example, discard, discard with error, or receive.
Top level yang :
+--:(special-next-hops)
+--rw special-nexthop? special-next-hop-def
2) normal next-hops
Normal nexthops can be a nexthop list member which include only one
nexthop or a list of list. One nexthop can be:
o IP address: A route lookup on this IP address is done to determine
the egress interface.
o egress-interface - pointing to an interface .
Wang & Dass Expires June 11, 2015 [Page 9]
Internet-Draft RIB I2RS DM December 2014
o logical-tunnel- pointing to a tunnel .
o tunnel-encap is used to specify multiple headers over a packet,
before a packet is forwarded. Using Nexthop chains can implement
chained headers, e.g. MPLS label over a GRE header.
o Indirect nexthops - pointing to a nexthop identifier .
Top level yang :
+--:(normal-nexthop)
+--rw (nexthop-member-or-list-of-list)?
+--:(one-nexthop-list-member)
| +--rw nexthop-list-member-index uint32
| +--rw (nexthop-chain-or-identifier)?
| | +--:(nexthop-chain)
| | | +--rw nexthop-chain
| | | +--rw nexthop-chain-identifier
| | | | +--rw (nexthop-identifier-type)?
| | | | +--:(nexthop-name)
| | | | | +--rw nexthop-name string
| | | | +--:(nexthop-id)
| | | | +--rw nexthop-id uint32
| | | +--rw nexthop* [nexthop-index]
| | | +--rw nexthop-index uint32
| | | +--rw (next-hop-options)?
| | | +--:(nexthop-identifier-next-hop)
| | | +--:(egress-interface-next-hop)
| | | | +--rw outgoing-interface string
| | | +--:(ipv4-address-next-hop)
| | | | +--rw next-hop-ipv4-address inet:ipv4-address
| | | | +--rw ipv4-rib-name? string
| | | +--:(ipv6-address-next-hop)
| | | | +--rw next-hop-ipv6-address inet:ipv6-address
| | | | +--rw ipv6-rib-name? string
| | | +--:(egress-interface-ipv4-next-hop)
| | | | +--rw next-hop-egress-interface-ipv4-address
| | | | +--rw outgoing-interface string
| | | | +--rw next-hop-egress-ipv4-address inet:ipv4-address
| | | +--:(egress-interface-ipv6-next-hop)
| | | | +--rw next-hop-egress-interface-ipv6-address
| | | | +--rw outgoing-interface string
| | | | +--rw next-hop-egress-ipv6-address inet:ipv4-address
| | | +--:(egress-interface-mac-next-hop)
| | | | +--rw next-hop-egress-interface-mac-address
| | | | +--rw outgoing-interface string
| | | | +--rw ieee-mac-address uint32
| | | +--:(logical-tunnel-next-hop)
Wang & Dass Expires June 11, 2015 [Page 10]
Internet-Draft RIB I2RS DM December 2014
| | | | +--rw logical-tunnel
| | | | +--rw tunnel-type tunnel-type-def
| | | | +--rw tunnel-name string
| | | +--:(tunnel-encap-next-hop)
| | | +--rw tunnel-encap
| | | +--rw (tunnel-type)?
| | | | +--:(ipv4)
| | | | +--:(ipv6)
| | | | +--:(mpls)
| | | | +--:(gre)
| | | | +--:(nvgre)
| | | +--rw (nexthop-second-encap-or-not)?
| | | | +--:(nexthop-second-encap)
| | | | +--rw nexthop-second-encap
| | | | +--rw (nexthop-third-encap-or-not)?
| | | | +--:(nexthop-third-encap)
| | | | +--rw (nexthop-forth-encap-or-not)?
| | | | +--:(nexthop-forth-encap)
| | | | +--rw nexthop-forth-encap
| | | | +--rw (nexthop-fifth-encap-or-not)?
| | | | +--:(nexthop-fifth-encap)
| | | | +--rw nexthop-fifth-encap
| | | +--rw outgoing-interface? string
| | +--:(nexthop-chain-identifier)
| +--rw nexthop-chain-identifier
| | +--rw (nexthop-identifier-type)?
| | +--:(nexthop-name)
| | | +--rw nexthop-name string
| | +--:(nexthop-id)
| | +--rw nexthop-id uint32
| +--ro nexthop-state nexthop-state-def
| +--rw priority? enumeration
| +--rw weight? uint8
+--:(nexthop-list-of-list)
+--rw nexthop-list-member* [nexthop-list-member-index]
+--rw nexthop-list-index? uint32
+--rw nexthop-list-member-index uint32
+--rw (nexthop-chain-or-identifier)?
| +--:(nexthop-chain)
... same with above
4. Full Yang Top-level description
Below is the full RIB Yang top-level description for the
configuration portion of I2RS configuration model. Additional
information on the structure of the information model is described
in[I-D.ietf-i2rs-rib-info-model].
Wang & Dass Expires June 11, 2015 [Page 11]
Internet-Draft RIB I2RS DM December 2014
module: i2rs-rib
+--rw nexthop-capacity
| +--rw support-tunnel? boolean
| +--rw support-chains? boolean
| +--rw support-list-of-list? boolean
| +--rw support-replication? boolean
| +--rw support-weighted? boolean
| +--rw support-protection? boolean
| +--rw lookup-limit? uint8
+--rw nexthop-tunnel-encap-capacity
| +--rw support-ipv4? boolean
| +--rw support-ipv6? boolean
| +--rw support-mpls? boolean
| +--rw support-gre? boolean
| +--rw support-vxlan? boolean
| +--rw support-nvgre? boolean
+--rw routing-instance-list* [instance-name]
+--rw instance-name string
+--rw interface-list* [name]
| +--rw name if:interface-ref
+--rw router-id? yang:dotted-quad
+--rw rib-list* [rib-name]
+--rw rib-name string
+--rw rib-family rib-family-def
+--rw enable-ip-rpf-check? boolean
+--rw route-list* [route-index]
+--rw route-index uint64
+--rw route-type route-type-def
+--rw (rib-route-type)?
| +--:(ipv4)
| | +--rw ipv4
| | +--rw ipv4-route-type ip-route-type-def
| | +--rw (ip-route-type)?
| | +--:(destination-ipv4-address)
| | | +--rw destination-ipv4-prefix inet:ipv4-prefix
| | +--:(source-ipv4-address)
| | | +--rw source-ipv4-prefix inet:ipv4-prefix
| | +--:(destination-source-ipv4-address)
| | +--rw destination-source-ipv4-address
| | +--rw destination-ipv4-prefix inet:ipv4-prefix
| | +--rw source-ipv4-prefix inet:ipv4-prefix
| +--:(ipv6)
| | +--rw ipv6
| | +--rw ipv6-route-type ip-route-type-def
| | +--rw (ip-route-type)?
| | +--:(destination-ipv6-address)
| | | +--rw destination-ipv6-prefix inet:ipv6-prefix
| | +--:(source-ipv6-address)
Wang & Dass Expires June 11, 2015 [Page 12]
Internet-Draft RIB I2RS DM December 2014
| | | +--rw source-ipv6-prefix inet:ipv6-prefix
| | +--:(destination-source-ipv6-address)
| | +--rw destination-source-ipv6-address
| | +--rw destination-ipv6-prefix inet:ipv6-prefix
| | +--rw source-ipv6-prefix inet:ipv6-prefix
| +--:(mpls-route)
| | +--rw mpls-label-in uint32
| | +--rw mpls-action mpls-action-def
| | +--rw mpls-label-out? uint32
| +--:(mac-route)
| | +--rw mac-address uint32
| +--:(interface-route)
| +--rw interface-identifier uint32
+--rw nexthop-list* [nexthop-list-index]
| +--rw nexthop-list-index uint32
| +--rw (nexthop-list-type)?
| +--:(special-nexthop)
| | +--rw special-nexthop? special-nexthop-def
| +--:(normal-nexthop)
| +--rw (nexthop-member-or-list-of-list)?
| +--:(one-nexthop-list-member)
| | +--rw nexthop-list-member-index uint32
| | +--rw (nexthop-chain-or-identifier)?
| | | +--:(nexthop-chain)
| | | | +--rw nexthop-chain
| | | | +--rw nexthop-chain-identifier
| | | | | +--rw (nexthop-identifier-type)?
| | | | | +--:(nexthop-name)
| | | | | | +--rw nexthop-name string
| | | | | +--:(nexthop-id)
| | | | | +--rw nexthop-id uint32
| | | | +--rw nexthop* [nexthop-index]
| | | | +--rw nexthop-index uint32
| | | | +--rw (next-hop-options)?
| | | | +--:(nexthop-identifier-next-hop)
| | | | | +--rw (nexthop-identifier-type)?
| | | | | +--:(nexthop-name)
| | | | | | +--rw nexthop-name string
| | | | | +--:(nexthop-id)
| | | | | +--rw nexthop-id uint32
| | | | +--:(egress-interface-next-hop)
| | | | | +--rw outgoing-interface string
| | | | +--:(ipv4-address-next-hop)
| | | | | +--rw next-hop-ipv4-address inet:ipv4-address
| | | | | +--rw ipv4-rib-name? string
| | | | +--:(ipv6-address-next-hop)
| | | | | +--rw next-hop-ipv6-address inet:ipv6-address
| | | | | +--rw ipv6-rib-name? string
Wang & Dass Expires June 11, 2015 [Page 13]
Internet-Draft RIB I2RS DM December 2014
| | | | +--:(egress-interface-ipv4-next-hop)
| | | | | +--rw next-hop-egress-interface-ipv4-address
| | | | | +--rw outgoing-interface string
| | | | | +--rw next-hop-egress-ipv4-address inet:ipv4-address
| | | | +--:(egress-interface-ipv6-next-hop)
| | | | | +--rw next-hop-egress-interface-ipv6-address
| | | | | +--rw outgoing-interface string
| | | | | +--rw next-hop-egress-ipv6-address inet:ipv4-address
| | | | +--:(egress-interface-mac-next-hop)
| | | | | +--rw next-hop-egress-interface-mac-address
| | | | | +--rw outgoing-interface string
| | | | | +--rw ieee-mac-address uint32
| | | | +--:(logical-tunnel-next-hop)
| | | | | +--rw logical-tunnel
| | | | | +--rw tunnel-type tunnel-type-def
| | | | | +--rw tunnel-name string
| | | | +--:(tunnel-encap-next-hop)
| | | | +--rw tunnel-encap
| | | | +--rw (tunnel-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--:(mpls)
| | | | | | +--rw (mpls-action-type)?
| | | | | | +--:(mpls-push)
| | | | | | | +--rw mpls-push boolean
| | | | | | | +--rw mpls-label uint32
| | | | | | | +--rw s-bit? boolean
| | | | | | | +--rw tos-value? uint8
| | | | | | | +--rw ttl-value? uint8
| | | | | | +--:(mpls-pop)
| | | | | | +--rw mpls-pop boolean
| | | | | | +--rw ttl-action? uint8
| | | | | +--:(gre)
| | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | +--rw gre-key? uint64
| | | | | +--:(nvgre)
Wang & Dass Expires June 11, 2015 [Page 14]
Internet-Draft RIB I2RS DM December 2014
| | | | | +--rw (nvgre-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--rw virtual-subnet-id uint32
| | | | | +--rw flow-id? uint16
| | | | +--rw (nexthop-second-encap-or-not)?
| | | | | +--:(nexthop-second-encap)
| | | | | +--rw nexthop-second-encap
| | | | | +--rw (tunnel-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--:(mpls)
| | | | | | | +--rw (mpls-action-type)?
| | | | | | | +--:(mpls-push)
| | | | | | | | +--rw mpls-push boolean
| | | | | | | | +--rw mpls-label uint32
| | | | | | | | +--rw s-bit? boolean
| | | | | | | | +--rw tos-value? uint8
| | | | | | | | +--rw ttl-value? uint8
| | | | | | | +--:(mpls-pop)
| | | | | | | +--rw mpls-pop boolean
| | | | | | | +--rw ttl-action? uint8
| | | | | | +--:(gre)
| | | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | | +--rw gre-key? uint64
Wang & Dass Expires June 11, 2015 [Page 15]
Internet-Draft RIB I2RS DM December 2014
| | | | | | +--:(nvgre)
| | | | | | +--rw (nvgre-type)?
| | | | | | | +--:(ipv4)
| | | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | | +--rw protocol uint8
| | | | | | | | +--rw ttl? uint8
| | | | | | | | +--rw dscp? uint8
| | | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--rw virtual-subnet-id uint32
| | | | | | +--rw flow-id? uint16
| | | | | +--rw (nexthop-third-encap-or-not)?
| | | | | +--:(nexthop-third-encap)
| | | | | +--rw nexthop-third-encap
| | | | | +--rw (tunnel-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--:(mpls)
| | | | | | | +--rw (mpls-action-type)?
| | | | | | | +--:(mpls-push)
| | | | | | | | +--rw mpls-push boolean
| | | | | | | | +--rw mpls-label uint32
| | | | | | | | +--rw s-bit? boolean
| | | | | | | | +--rw tos-value? uint8
| | | | | | | | +--rw ttl-value? uint8
| | | | | | | +--:(mpls-pop)
| | | | | | | +--rw mpls-pop boolean
| | | | | | | +--rw ttl-action? uint8
| | | | | | +--:(gre)
| | | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | | +--rw gre-protocol-type inet:ipv4-address
Wang & Dass Expires June 11, 2015 [Page 16]
Internet-Draft RIB I2RS DM December 2014
| | | | | | | +--rw gre-key? uint64
| | | | | | +--:(nvgre)
| | | | | | +--rw (nvgre-type)?
| | | | | | | +--:(ipv4)
| | | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | | +--rw protocol uint8
| | | | | | | | +--rw ttl? uint8
| | | | | | | | +--rw dscp? uint8
| | | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--rw virtual-subnet-id uint32
| | | | | | +--rw flow-id? uint16
| | | | | +--rw (nexthop-forth-encap-or-not)?
| | | | | +--:(nexthop-forth-encap)
| | | | | +--rw nexthop-forth-encap
| | | | | +--rw (tunnel-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--:(mpls)
| | | | | | | +--rw (mpls-action-type)?
| | | | | | | +--:(mpls-push)
| | | | | | | | +--rw mpls-push boolean
| | | | | | | | +--rw mpls-label uint32
| | | | | | | | +--rw s-bit? boolean
| | | | | | | | +--rw tos-value? uint8
| | | | | | | | +--rw ttl-value? uint8
| | | | | | | +--:(mpls-pop)
| | | | | | | +--rw mpls-pop boolean
| | | | | | | +--rw ttl-action? uint8
| | | | | | +--:(gre)
| | | | | | | +--rw gre-ip-destination inet:ipv4-address
Wang & Dass Expires June 11, 2015 [Page 17]
Internet-Draft RIB I2RS DM December 2014
| | | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | | +--rw gre-key? uint64
| | | | | | +--:(nvgre)
| | | | | | +--rw (nvgre-type)?
| | | | | | | +--:(ipv4)
| | | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | | +--rw protocol uint8
| | | | | | | | +--rw ttl? uint8
| | | | | | | | +--rw dscp? uint8
| | | | | | | +--:(ipv6)
| | | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | | +--rw next-header uint8
| | | | | | | +--rw traffic-class? uint8
| | | | | | | +--rw flow-label? uint16
| | | | | | | +--rw hop-limit? uint8
| | | | | | +--rw virtual-subnet-id uint32
| | | | | | +--rw flow-id? uint16
| | | | | +--rw (nexthop-fifth-encap-or-not)?
| | | | | +--:(nexthop-fifth-encap)
| | | | | +--rw nexthop-fifth-encap
| | | | | +--rw (tunnel-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--:(mpls)
| | | | | | +--rw (mpls-action-type)?
| | | | | | +--:(mpls-push)
| | | | | | | +--rw mpls-push boolean
| | | | | | | +--rw mpls-label uint32
| | | | | | | +--rw s-bit? boolean
| | | | | | | +--rw tos-value? uint8
| | | | | | | +--rw ttl-value? uint8
| | | | | | +--:(mpls-pop)
| | | | | | +--rw mpls-pop boolean
| | | | | | +--rw ttl-action? uint8
| | | | | +--:(gre)
Wang & Dass Expires June 11, 2015 [Page 18]
Internet-Draft RIB I2RS DM December 2014
| | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | +--rw gre-key? uint64
| | | | | +--:(nvgre)
| | | | | +--rw (nvgre-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--rw virtual-subnet-id uint32
| | | | | +--rw flow-id? uint16
| | | | +--rw outgoing-interface? string
| | | +--:(nexthop-chain-identifier)
| | | +--rw (nexthop-identifier-type)?
| | | +--:(nexthop-name)
| | | | +--rw nexthop-name string
| | | +--:(nexthop-id)
| | | +--rw nexthop-id uint32
| | +--ro nexthop-state nexthop-state-def
| | +--rw priority? enumeration
| | +--rw weight? uint8
| +--:(nexthop-list-of-list)
| +--rw nexthop-list-member* [nexthop-list-member-index]
| +--rw nexthop-list-index? uint32
| +--rw nexthop-list-member-index uint32
| +--rw (nexthop-chain-or-identifier)?
| | +--:(nexthop-chain)
| | | +--rw nexthop-chain
| | | +--rw nexthop-chain-identifier
| | | | +--rw (nexthop-identifier-type)?
| | | | +--:(nexthop-name)
| | | | | +--rw nexthop-name string
| | | | +--:(nexthop-id)
| | | | +--rw nexthop-id uint32
| | | +--rw nexthop* [nexthop-index]
| | | +--rw nexthop-index uint32
| | | +--rw (next-hop-options)?
| | | +--:(nexthop-identifier-next-hop)
| | | | +--rw (nexthop-identifier-type)?
Wang & Dass Expires June 11, 2015 [Page 19]
Internet-Draft RIB I2RS DM December 2014
| | | | +--:(nexthop-name)
| | | | | +--rw nexthop-name string
| | | | +--:(nexthop-id)
| | | | +--rw nexthop-id uint32
| | | +--:(egress-interface-next-hop)
| | | | +--rw outgoing-interface string
| | | +--:(ipv4-address-next-hop)
| | | | +--rw next-hop-ipv4-address inet:ipv4-address
| | | | +--rw ipv4-rib-name? string
| | | +--:(ipv6-address-next-hop)
| | | | +--rw next-hop-ipv6-address inet:ipv6-address
| | | | +--rw ipv6-rib-name? string
| | | +--:(egress-interface-ipv4-next-hop)
| | | | +--rw next-hop-egress-interface-ipv4-address
| | | | +--rw outgoing-interface string
| | | | +--rw next-hop-egress-ipv4-address inet:ipv4-address
| | | +--:(egress-interface-ipv6-next-hop)
| | | | +--rw next-hop-egress-interface-ipv6-address
| | | | +--rw outgoing-interface string
| | | | +--rw next-hop-egress-ipv6-address inet:ipv4-address
| | | +--:(egress-interface-mac-next-hop)
| | | | +--rw next-hop-egress-interface-mac-address
| | | | +--rw outgoing-interface string
| | | | +--rw ieee-mac-address uint32
| | | +--:(logical-tunnel-next-hop)
| | | | +--rw logical-tunnel
| | | | +--rw tunnel-type tunnel-type-def
| | | | +--rw tunnel-name string
| | | +--:(tunnel-encap-next-hop)
| | | +--rw tunnel-encap
| | | +--rw (tunnel-type)?
| | | | +--:(ipv4)
| | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | +--rw protocol uint8
| | | | | +--rw ttl? uint8
| | | | | +--rw dscp? uint8
| | | | +--:(ipv6)
| | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | +--rw next-header uint8
| | | | | +--rw traffic-class? uint8
| | | | | +--rw flow-label? uint16
| | | | | +--rw hop-limit? uint8
| | | | +--:(mpls)
| | | | | +--rw (mpls-action-type)?
| | | | | +--:(mpls-push)
| | | | | | +--rw mpls-push boolean
Wang & Dass Expires June 11, 2015 [Page 20]
Internet-Draft RIB I2RS DM December 2014
| | | | | | +--rw mpls-label uint32
| | | | | | +--rw s-bit? boolean
| | | | | | +--rw tos-value? uint8
| | | | | | +--rw ttl-value? uint8
| | | | | +--:(mpls-pop)
| | | | | +--rw mpls-pop boolean
| | | | | +--rw ttl-action? uint8
| | | | +--:(gre)
| | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | +--rw gre-key? uint64
| | | | +--:(nvgre)
| | | | +--rw (nvgre-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | +--rw next-header uint8
| | | | | +--rw traffic-class? uint8
| | | | | +--rw flow-label? uint16
| | | | | +--rw hop-limit? uint8
| | | | +--rw virtual-subnet-id uint32
| | | | +--rw flow-id? uint16
| | | +--rw (nexthop-second-encap-or-not)?
| | | | +--:(nexthop-second-encap)
| | | | +--rw nexthop-second-encap
| | | | +--rw (tunnel-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--:(mpls)
| | | | | | +--rw (mpls-action-type)?
| | | | | | +--:(mpls-push)
Wang & Dass Expires June 11, 2015 [Page 21]
Internet-Draft RIB I2RS DM December 2014
| | | | | | | +--rw mpls-push boolean
| | | | | | | +--rw mpls-label uint32
| | | | | | | +--rw s-bit? boolean
| | | | | | | +--rw tos-value? uint8
| | | | | | | +--rw ttl-value? uint8
| | | | | | +--:(mpls-pop)
| | | | | | +--rw mpls-pop boolean
| | | | | | +--rw ttl-action? uint8
| | | | | +--:(gre)
| | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | +--rw gre-key? uint64
| | | | | +--:(nvgre)
| | | | | +--rw (nvgre-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--rw virtual-subnet-id uint32
| | | | | +--rw flow-id? uint16
| | | | +--rw (nexthop-third-encap-or-not)?
| | | | +--:(nexthop-third-encap)
| | | | +--rw nexthop-third-encap
| | | | +--rw (tunnel-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--:(mpls)
| | | | | | +--rw (mpls-action-type)?
Wang & Dass Expires June 11, 2015 [Page 22]
Internet-Draft RIB I2RS DM December 2014
| | | | | | +--:(mpls-push)
| | | | | | | +--rw mpls-push boolean
| | | | | | | +--rw mpls-label uint32
| | | | | | | +--rw s-bit? boolean
| | | | | | | +--rw tos-value? uint8
| | | | | | | +--rw ttl-value? uint8
| | | | | | +--:(mpls-pop)
| | | | | | +--rw mpls-pop boolean
| | | | | | +--rw ttl-action? uint8
| | | | | +--:(gre)
| | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | +--rw gre-key? uint64
| | | | | +--:(nvgre)
| | | | | +--rw (nvgre-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--rw virtual-subnet-id uint32
| | | | | +--rw flow-id? uint16
| | | | +--rw (nexthop-forth-encap-or-not)?
| | | | +--:(nexthop-forth-encap)
| | | | +--rw nexthop-forth-encap
| | | | +--rw (tunnel-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--:(mpls)
Wang & Dass Expires June 11, 2015 [Page 23]
Internet-Draft RIB I2RS DM December 2014
| | | | | | +--rw (mpls-action-type)?
| | | | | | +--:(mpls-push)
| | | | | | | +--rw mpls-push boolean
| | | | | | | +--rw mpls-label uint32
| | | | | | | +--rw s-bit? boolean
| | | | | | | +--rw tos-value? uint8
| | | | | | | +--rw ttl-value? uint8
| | | | | | +--:(mpls-pop)
| | | | | | +--rw mpls-pop boolean
| | | | | | +--rw ttl-action? uint8
| | | | | +--:(gre)
| | | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | | +--rw gre-key? uint64
| | | | | +--:(nvgre)
| | | | | +--rw (nvgre-type)?
| | | | | | +--:(ipv4)
| | | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | | +--rw protocol uint8
| | | | | | | +--rw ttl? uint8
| | | | | | | +--rw dscp? uint8
| | | | | | +--:(ipv6)
| | | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | | +--rw next-header uint8
| | | | | | +--rw traffic-class? uint8
| | | | | | +--rw flow-label? uint16
| | | | | | +--rw hop-limit? uint8
| | | | | +--rw virtual-subnet-id uint32
| | | | | +--rw flow-id? uint16
| | | | +--rw (nexthop-fifth-encap-or-not)?
| | | | +--:(nexthop-fifth-encap)
| | | | +--rw nexthop-fifth-encap
| | | | +--rw (tunnel-type)?
| | | | +--:(ipv4)
| | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | +--rw protocol uint8
| | | | | +--rw ttl? uint8
| | | | | +--rw dscp? uint8
| | | | +--:(ipv6)
| | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | +--rw next-header uint8
| | | | | +--rw traffic-class? uint8
| | | | | +--rw flow-label? uint16
| | | | | +--rw hop-limit? uint8
Wang & Dass Expires June 11, 2015 [Page 24]
Internet-Draft RIB I2RS DM December 2014
| | | | +--:(mpls)
| | | | | +--rw (mpls-action-type)?
| | | | | +--:(mpls-push)
| | | | | | +--rw mpls-push boolean
| | | | | | +--rw mpls-label uint32
| | | | | | +--rw s-bit? boolean
| | | | | | +--rw tos-value? uint8
| | | | | | +--rw ttl-value? uint8
| | | | | +--:(mpls-pop)
| | | | | +--rw mpls-pop boolean
| | | | | +--rw ttl-action? uint8
| | | | +--:(gre)
| | | | | +--rw gre-ip-destination inet:ipv4-address
| | | | | +--rw gre-protocol-type inet:ipv4-address
| | | | | +--rw gre-key? uint64
| | | | +--:(nvgre)
| | | | +--rw (nvgre-type)?
| | | | | +--:(ipv4)
| | | | | | +--rw source-ipv4-address inet:ipv4-address
| | | | | | +--rw destination-ipv4-address inet:ipv4-address
| | | | | | +--rw protocol uint8
| | | | | | +--rw ttl? uint8
| | | | | | +--rw dscp? uint8
| | | | | +--:(ipv6)
| | | | | +--rw source-ipv6-address inet:ipv6-address
| | | | | +--rw destination-ipv6-address inet:ipv6-address
| | | | | +--rw next-header uint8
| | | | | +--rw traffic-class? uint8
| | | | | +--rw flow-label? uint16
| | | | | +--rw hop-limit? uint8
| | | | +--rw virtual-subnet-id uint32
| | | | +--rw flow-id? uint16
| | | +--rw outgoing-interface? string
| | +--:(nexthop-chain-identifier)
| | +--rw (nexthop-identifier-type)?
| | +--:(nexthop-name)
| | | +--rw nexthop-name string
| | +--:(nexthop-id)
| | +--rw nexthop-id uint32
| +--ro nexthop-state nexthop-state-def
| +--rw priority? enumeration
| +--rw weight? uint8
+--ro route-state? route-state-def
+--ro route-installed-state? route-installed-state-def
+--ro route-reason? route-reason-def
+--rw route-preference uint32
+--rw local-only boolean
+--rw address-family-route-attributes
Wang & Dass Expires June 11, 2015 [Page 25]
Internet-Draft RIB I2RS DM December 2014
+--rw (route-type)?
+--:(ip-route-attributes)
+--:(mpls-route-attributes)
+--:(eThernet-route-attributes)
notifications:
+---n nexthop-resolution-status-change
| +--ro nexthop-chain-identifier
| | +--ro (nexthop-identifier-type)?
| | +--:(nexthop-name)
| | | +--ro nexthop-name string
| | +--:(nexthop-id)
| | +--ro nexthop-id uint32
| +--ro nexthop* [nexthop-index]
| | +--ro nexthop-index uint32
| | +--ro (next-hop-options)?
| | +--:(nexthop-identifier-next-hop)
| | | +--ro (nexthop-identifier-type)?
| | | +--:(nexthop-name)
| | | | +--ro nexthop-name string
| | | +--:(nexthop-id)
| | | +--ro nexthop-id uint32
| | +--:(egress-interface-next-hop)
| | | +--ro outgoing-interface string
| | +--:(ipv4-address-next-hop)
| | | +--ro next-hop-ipv4-address inet:ipv4-address
| | | +--ro ipv4-rib-name? string
| | +--:(ipv6-address-next-hop)
| | | +--ro next-hop-ipv6-address inet:ipv6-address
| | | +--ro ipv6-rib-name? string
| | +--:(egress-interface-ipv4-next-hop)
| | | +--ro next-hop-egress-interface-ipv4-address
| | | +--ro outgoing-interface string
| | | +--ro next-hop-egress-ipv4-address inet:ipv4-address
| | +--:(egress-interface-ipv6-next-hop)
| | | +--ro next-hop-egress-interface-ipv6-address
| | | +--ro outgoing-interface string
| | | +--ro next-hop-egress-ipv6-address inet:ipv4-address
| | +--:(egress-interface-mac-next-hop)
| | | +--ro next-hop-egress-interface-mac-address
| | | +--ro outgoing-interface string
| | | +--ro ieee-mac-address uint32
| | +--:(logical-tunnel-next-hop)
| | | +--ro logical-tunnel
| | | +--ro tunnel-type tunnel-type-def
| | | +--ro tunnel-name string
| | +--:(tunnel-encap-next-hop)
| | +--ro tunnel-encap
| | +--ro (tunnel-type)?
Wang & Dass Expires June 11, 2015 [Page 26]
Internet-Draft RIB I2RS DM December 2014
| | | +--:(ipv4)
| | | | +--ro source-ipv4-address inet:ipv4-address
| | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | +--ro protocol uint8
| | | | +--ro ttl? uint8
| | | | +--ro dscp? uint8
| | | +--:(ipv6)
| | | | +--ro source-ipv6-address inet:ipv6-address
| | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | +--ro next-header uint8
| | | | +--ro traffic-class? uint8
| | | | +--ro flow-label? uint16
| | | | +--ro hop-limit? uint8
| | | +--:(mpls)
| | | | +--ro (mpls-action-type)?
| | | | +--:(mpls-push)
| | | | | +--ro mpls-push boolean
| | | | | +--ro mpls-label uint32
| | | | | +--ro s-bit? boolean
| | | | | +--ro tos-value? uint8
| | | | | +--ro ttl-value? uint8
| | | | +--:(mpls-pop)
| | | | +--ro mpls-pop boolean
| | | | +--ro ttl-action? uint8
| | | +--:(gre)
| | | | +--ro gre-ip-destination inet:ipv4-address
| | | | +--ro gre-protocol-type inet:ipv4-address
| | | | +--ro gre-key? uint64
| | | +--:(nvgre)
| | | +--ro (nvgre-type)?
| | | | +--:(ipv4)
| | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | +--ro protocol uint8
| | | | | +--ro ttl? uint8
| | | | | +--ro dscp? uint8
| | | | +--:(ipv6)
| | | | +--ro source-ipv6-address inet:ipv6-address
| | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | +--ro next-header uint8
| | | | +--ro traffic-class? uint8
| | | | +--ro flow-label? uint16
| | | | +--ro hop-limit? uint8
| | | +--ro virtual-subnet-id uint32
| | | +--ro flow-id? uint16
| | +--ro (nexthop-second-encap-or-not)?
| | | +--:(nexthop-second-encap)
| | | +--ro nexthop-second-encap
Wang & Dass Expires June 11, 2015 [Page 27]
Internet-Draft RIB I2RS DM December 2014
| | | +--ro (tunnel-type)?
| | | | +--:(ipv4)
| | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | +--ro protocol uint8
| | | | | +--ro ttl? uint8
| | | | | +--ro dscp? uint8
| | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--:(mpls)
| | | | | +--ro (mpls-action-type)?
| | | | | +--:(mpls-push)
| | | | | | +--ro mpls-push boolean
| | | | | | +--ro mpls-label uint32
| | | | | | +--ro s-bit? boolean
| | | | | | +--ro tos-value? uint8
| | | | | | +--ro ttl-value? uint8
| | | | | +--:(mpls-pop)
| | | | | +--ro mpls-pop boolean
| | | | | +--ro ttl-action? uint8
| | | | +--:(gre)
| | | | | +--ro gre-ip-destination inet:ipv4-address
| | | | | +--ro gre-protocol-type inet:ipv4-address
| | | | | +--ro gre-key? uint64
| | | | +--:(nvgre)
| | | | +--ro (nvgre-type)?
| | | | | +--:(ipv4)
| | | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | | +--ro protocol uint8
| | | | | | +--ro ttl? uint8
| | | | | | +--ro dscp? uint8
| | | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--ro virtual-subnet-id uint32
| | | | +--ro flow-id? uint16
| | | +--ro (nexthop-third-encap-or-not)?
| | | +--:(nexthop-third-encap)
Wang & Dass Expires June 11, 2015 [Page 28]
Internet-Draft RIB I2RS DM December 2014
| | | +--ro nexthop-third-encap
| | | +--ro (tunnel-type)?
| | | | +--:(ipv4)
| | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | +--ro protocol uint8
| | | | | +--ro ttl? uint8
| | | | | +--ro dscp? uint8
| | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--:(mpls)
| | | | | +--ro (mpls-action-type)?
| | | | | +--:(mpls-push)
| | | | | | +--ro mpls-push boolean
| | | | | | +--ro mpls-label uint32
| | | | | | +--ro s-bit? boolean
| | | | | | +--ro tos-value? uint8
| | | | | | +--ro ttl-value? uint8
| | | | | +--:(mpls-pop)
| | | | | +--ro mpls-pop boolean
| | | | | +--ro ttl-action? uint8
| | | | +--:(gre)
| | | | | +--ro gre-ip-destination inet:ipv4-address
| | | | | +--ro gre-protocol-type inet:ipv4-address
| | | | | +--ro gre-key? uint64
| | | | +--:(nvgre)
| | | | +--ro (nvgre-type)?
| | | | | +--:(ipv4)
| | | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | | +--ro protocol uint8
| | | | | | +--ro ttl? uint8
| | | | | | +--ro dscp? uint8
| | | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--ro virtual-subnet-id uint32
| | | | +--ro flow-id? uint16
| | | +--ro (nexthop-forth-encap-or-not)?
Wang & Dass Expires June 11, 2015 [Page 29]
Internet-Draft RIB I2RS DM December 2014
| | | +--:(nexthop-forth-encap)
| | | +--ro nexthop-forth-encap
| | | +--ro (tunnel-type)?
| | | | +--:(ipv4)
| | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | +--ro protocol uint8
| | | | | +--ro ttl? uint8
| | | | | +--ro dscp? uint8
| | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--:(mpls)
| | | | | +--ro (mpls-action-type)?
| | | | | +--:(mpls-push)
| | | | | | +--ro mpls-push boolean
| | | | | | +--ro mpls-label uint32
| | | | | | +--ro s-bit? boolean
| | | | | | +--ro tos-value? uint8
| | | | | | +--ro ttl-value? uint8
| | | | | +--:(mpls-pop)
| | | | | +--ro mpls-pop boolean
| | | | | +--ro ttl-action? uint8
| | | | +--:(gre)
| | | | | +--ro gre-ip-destination inet:ipv4-address
| | | | | +--ro gre-protocol-type inet:ipv4-address
| | | | | +--ro gre-key? uint64
| | | | +--:(nvgre)
| | | | +--ro (nvgre-type)?
| | | | | +--:(ipv4)
| | | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | | +--ro protocol uint8
| | | | | | +--ro ttl? uint8
| | | | | | +--ro dscp? uint8
| | | | | +--:(ipv6)
| | | | | +--ro source-ipv6-address inet:ipv6-address
| | | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | | +--ro next-header uint8
| | | | | +--ro traffic-class? uint8
| | | | | +--ro flow-label? uint16
| | | | | +--ro hop-limit? uint8
| | | | +--ro virtual-subnet-id uint32
| | | | +--ro flow-id? uint16
Wang & Dass Expires June 11, 2015 [Page 30]
Internet-Draft RIB I2RS DM December 2014
| | | +--ro (nexthop-fifth-encap-or-not)?
| | | +--:(nexthop-fifth-encap)
| | | +--ro nexthop-fifth-encap
| | | +--ro (tunnel-type)?
| | | +--:(ipv4)
| | | | +--ro source-ipv4-address inet:ipv4-address
| | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | +--ro protocol uint8
| | | | +--ro ttl? uint8
| | | | +--ro dscp? uint8
| | | +--:(ipv6)
| | | | +--ro source-ipv6-address inet:ipv6-address
| | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | +--ro next-header uint8
| | | | +--ro traffic-class? uint8
| | | | +--ro flow-label? uint16
| | | | +--ro hop-limit? uint8
| | | +--:(mpls)
| | | | +--ro (mpls-action-type)?
| | | | +--:(mpls-push)
| | | | | +--ro mpls-push boolean
| | | | | +--ro mpls-label uint32
| | | | | +--ro s-bit? boolean
| | | | | +--ro tos-value? uint8
| | | | | +--ro ttl-value? uint8
| | | | +--:(mpls-pop)
| | | | +--ro mpls-pop boolean
| | | | +--ro ttl-action? uint8
| | | +--:(gre)
| | | | +--ro gre-ip-destination inet:ipv4-address
| | | | +--ro gre-protocol-type inet:ipv4-address
| | | | +--ro gre-key? uint64
| | | +--:(nvgre)
| | | +--ro (nvgre-type)?
| | | | +--:(ipv4)
| | | | | +--ro source-ipv4-address inet:ipv4-address
| | | | | +--ro destination-ipv4-address inet:ipv4-address
| | | | | +--ro protocol uint8
| | | | | +--ro ttl? uint8
| | | | | +--ro dscp? uint8
| | | | +--:(ipv6)
| | | | +--ro source-ipv6-address inet:ipv6-address
| | | | +--ro destination-ipv6-address inet:ipv6-address
| | | | +--ro next-header uint8
| | | | +--ro traffic-class? uint8
| | | | +--ro flow-label? uint16
| | | | +--ro hop-limit? uint8
| | | +--ro virtual-subnet-id uint32
Wang & Dass Expires June 11, 2015 [Page 31]
Internet-Draft RIB I2RS DM December 2014
| | | +--ro flow-id? uint16
| | +--ro outgoing-interface? string
| +--ro nexthop-state nexthop-state-def
+---n route-change
+--ro instance-name string
+--ro rib-name string
+--ro rib-family rib-family-def
+--ro route-index uint64
+--ro route-type route-type-def
+--ro (rib-route-type)?
| +--:(ipv4)
| | +--ro ipv4
| | +--ro ipv4-route-type ip-route-type-def
| | +--ro (ip-route-type)?
| | +--:(destination-ipv4-address)
| | | +--ro destination-ipv4-prefix inet:ipv4-prefix
| | +--:(source-ipv4-address)
| | | +--ro source-ipv4-prefix inet:ipv4-prefix
| | +--:(destination-source-ipv4-address)
| | +--ro destination-source-ipv4-address
| | +--ro destination-ipv4-prefix inet:ipv4-prefix
| | +--ro source-ipv4-prefix inet:ipv4-prefix
| +--:(ipv6)
| | +--ro ipv6
| | +--ro ipv6-route-type ip-route-type-def
| | +--ro (ip-route-type)?
| | +--:(destination-ipv6-address)
| | | +--ro destination-ipv6-prefix inet:ipv6-prefix
| | +--:(source-ipv6-address)
| | | +--ro source-ipv6-prefix inet:ipv6-prefix
| | +--:(destination-source-ipv6-address)
| | +--ro destination-source-ipv6-address
| | +--ro destination-ipv6-prefix inet:ipv6-prefix
| | +--ro source-ipv6-prefix inet:ipv6-prefix
| +--:(mpls-route)
| | +--ro mpls-label-in uint32
| | +--ro mpls-action mpls-action-def
| | +--ro mpls-label-out? uint32
| +--:(mac-route)
| | +--ro mac-address uint32
| +--:(interface-route)
| +--ro interface-identifier uint32
+--ro route-installed-state route-installed-state-def
+--ro route-state route-state-def
+--ro route-reason route-reason-def
Wang & Dass Expires June 11, 2015 [Page 32]
Internet-Draft RIB I2RS DM December 2014
5. RIB Yang description
//<code begins> file "i2rs isis@2014-08-31.yang"
module i2rs-rib {
namespace "urn:huawei:params:xml:ns:yang:rt:i2rs:rib";
// replace with iana namespace when assigned
prefix "i2rs-rib";
import ietf-inet-types {
prefix inet;
//rfc6991
}
import ietf-interfaces {
prefix "if";
}
import ietf-routing {
prefix "rt";
}
organization
"Huawei technologies co., ltd. ";
contact
"email: wanglixing@huawei.com
email: shares@ndzh.com";
description
"
terms and acronyms
isis (isis):intermediate system to intermediate system
ip (ip): internet protocol
ipv4 (ipv4):internet protocol version 4
ipv6 (ipv6): internet protocol version 6
metric(metric): multi exit discriminator
igp (igp): interior gateway protocol
mtu (mtu) maximum transmission uint
";
Wang & Dass Expires June 11, 2015 [Page 33]
Internet-Draft RIB I2RS DM December 2014
revision "2014-08-22" {
description "initial revision";
reference "draft-ietf-i2rs-rib-info-model-03";
}
container nexthop-capacity{
leaf support-tunnel{
type boolean;
}
leaf support-chains{
type boolean;
}
leaf support-list-of-list{
type boolean;
}
leaf support-replication{
type boolean;
}
leaf support-weighted{
type boolean;
}
leaf support-protection{
type boolean;
}
leaf lookup-limit{
type uint8;
}
}
container nexthop-tunnel-encap-capacity{
leaf support-ipv4{
type boolean;
}
leaf support-ipv6{
type boolean;
}
leaf support-mpls{
type boolean;
}
leaf support-gre{
type boolean;
}
leaf support-vxlan{
type boolean;
}
leaf support-nvgre{
Wang & Dass Expires June 11, 2015 [Page 34]
Internet-Draft RIB I2RS DM December 2014
type boolean;
}
}
list routing-instance-list{
description
"configuration of a 'i2rs' pseudo-protocol instance
consists of a list of routes.";
key "instance-name";
leaf instance-name {
description
"A routing instance is identified by its name,
INSTANCE_name. This MUST be unique across all routing instances
in a given network device.";
type string ;
mandatory true;
}
list interface-list {
description
"This represents the list of interfaces associated
with this routing instance. The interface list helps constrain
the boundaries of packet forwarding. Packets coming on these
interfaces are directly associated with the given routing
instance. The interface list contains a list of identifiers, with
each identifier uniquely identifying an interface.";
key "name";
leaf name {
type if:interface-ref;
description
"A reference to The name of a configured network layer interface.";
}
}
uses rt:router-id ;
list rib-list {
description
"This is the list of RIBs associated with this routing
instance. Each routing instance can have multiple RIBs to
represent routes of different types.";
key "rib-name";
leaf rib-name {
description
"A reference to The name of a rib.";
type string;
mandatory true;
}
leaf rib-family {
type rib-family-def;
mandatory true;
Wang & Dass Expires June 11, 2015 [Page 35]
Internet-Draft RIB I2RS DM December 2014
}
leaf enable-ip-rpf-check {
description
"Each RIB can be optionally associated with a ENABLE_IP_RPF_CHECK
attribute that enables Reverse path forwarding (RPF) checks on all IP
routes in that RIB. Reverse path forwarding (RPF) check is used to
prevent spoofing and limit malicious traffic.";
type boolean;
}
list route-list{
key "route-index";
uses route;
}
}
}
grouping route-prefix{
description
"The common attributes usesd for all routes";
leaf route-index {
type uint64 ;
mandatory true;
}
leaf route-type {
type route-type-def ;
mandatory true;
}
choice rib-route-type {
case ipv4 {
description
"Match on destination IP address in the IPv4 header";
container ipv4{
leaf ipv4-route-type {
type ip-route-type-def ;
mandatory true;
}
choice ip-route-type {
case destination-ipv4-address {
leaf destination-ipv4-prefix {
type inet:ipv4-prefix;
mandatory true;
}
}
case source-ipv4-address {
leaf source-ipv4-prefix {
Wang & Dass Expires June 11, 2015 [Page 36]
Internet-Draft RIB I2RS DM December 2014
type inet:ipv4-prefix;
mandatory true;
}
}
case destination-source-ipv4-address {
container destination-source-ipv4-address {
leaf destination-ipv4-prefix {
type inet:ipv4-prefix;
mandatory true;
}
leaf source-ipv4-prefix {
type inet:ipv4-prefix;
mandatory true;
}
}
}
}
}
}
case ipv6 {
description
"Match on destination IP address in the IPv6 header";
container ipv6{
leaf ipv6-route-type {
type ip-route-type-def ;
mandatory true;
}
choice ip-route-type {
case destination-ipv6-address {
leaf destination-ipv6-prefix {
type inet:ipv6-prefix;
mandatory true;
}
}
case source-ipv6-address {
leaf source-ipv6-prefix {
type inet:ipv6-prefix;
mandatory true;
}
}
case destination-source-ipv6-address {
container destination-source-ipv6-address {
leaf destination-ipv6-prefix {
type inet:ipv6-prefix;
mandatory true;
}
leaf source-ipv6-prefix {
type inet:ipv6-prefix;
Wang & Dass Expires June 11, 2015 [Page 37]
Internet-Draft RIB I2RS DM December 2014
mandatory true;
}
}
}
}
}
}
case mpls-route {
description
"Match on a MPLS label at the top of the MPLS label stack";
leaf mpls-label-in {
type uint32 ;
mandatory true;
}
leaf mpls-action {
type mpls-action-def ;
mandatory true;
}
leaf mpls-label-out {
type uint32 ;
}
}
case mac-route {
description
"Match on MAC destination addresses in the ethernet header";
leaf mac-address {
type uint32 ;
mandatory true;
}
}
case interface-route {
description
"Match on incoming interface of the packet";
leaf interface-identifier {
type uint32 ;
mandatory true;
}
}
}
}
grouping route
{
description
"The common attributes usesd for all routes";
uses route-prefix;
list nexthop-list{
Wang & Dass Expires June 11, 2015 [Page 38]
Internet-Draft RIB I2RS DM December 2014
description
"One can create a replication list for replication traffic to multiple
destinations. The destinations, in turn, could be complex nexthops
in themselves - at a level supported by the network device. Point to
multipoint and broadcast are examples that involve replication";
key "nexthop-list-index";
uses nexthop-list;
}
leaf route-state {
type route-state-def ;
config false;
}
leaf route-installed-state {
type route-installed-state-def ;
config false;
}
leaf route-reason {
type route-reason-def ;
config false;
}
uses route-attributes;
uses route-vendor-attributes;
}
grouping nexthop-list{
leaf nexthop-list-index{
type uint32;
}
choice nexthop-list-type{
case special-nexthop {
leaf special-nexthop{
type special-nexthop-def;
}
}
case normal-nexthop {
choice nexthop-member-or-list-of-list{
case one-nexthop-list-member {
uses nexthop-list-member;
}
case nexthop-list-of-list {
list nexthop-list-member{
key "nexthop-list-member-index";
leaf nexthop-list-index{
description
"Lists of lists is a complex construct. One example of usage of such
a construct is to replicate traffic to multiple destinations, with
high availability. In other words, for each destination you have a
primary and backup nexthop (replication list) to ensure there is no
Wang & Dass Expires June 11, 2015 [Page 39]
Internet-Draft RIB I2RS DM December 2014
traffic drop in case of a failure. So the outer list is a protection
list and the inner lists are replication lists of primary/backup";
type uint32;
}
uses nexthop-list-member;
}
}
}
}
}
}
grouping nexthop-chain{
container nexthop-chain-identifier {
uses nexthop-identifier;
}
list nexthop{
key "nexthop-index";
uses nexthop;
}
}
grouping nexthop-list-member{
leaf nexthop-list-member-index {
type uint32 ;
mandatory true;
}
choice nexthop-chain-or-identifier{
case nexthop-chain {
container nexthop-chain {
description
"only one nexthop.";
uses nexthop-chain;
}
}
case nexthop-chain-identifier {
description
"A nexthop chain identifier.";
uses nexthop-identifier;
}
}
leaf nexthop-state {
description
"Nexthop resolution status (resolved/unresolved) notification.";
type nexthop-state-def;
mandatory true;
config false;
Wang & Dass Expires June 11, 2015 [Page 40]
Internet-Draft RIB I2RS DM December 2014
}
uses rt:next-hop-classifiers;
}
grouping nexthop-identifier{
choice nexthop-identifier-type{
case nexthop-name {
leaf nexthop-name{
type string;
mandatory true;
}
}
case nexthop-id {
leaf nexthop-id{
type uint32;
mandatory true;
}
}
}
}
grouping route-vendor-attributes{
}
grouping logical-tunnel{
leaf tunnel-type {
type tunnel-type-def ;
mandatory true;
}
leaf tunnel-name {
type string ;
mandatory true;
}
}
grouping ipv4-header{
leaf source-ipv4-address {
type inet:ipv4-address;
mandatory true;
}
leaf destination-ipv4-address {
type inet:ipv4-address;
Wang & Dass Expires June 11, 2015 [Page 41]
Internet-Draft RIB I2RS DM December 2014
mandatory true;
}
leaf protocol {
type uint8;
mandatory true;
}
leaf ttl {
type uint8;
}
leaf dscp {
type uint8;
}
}
grouping ipv6-header{
leaf source-ipv6-address {
type inet:ipv6-address;
mandatory true;
}
leaf destination-ipv6-address {
type inet:ipv6-address;
mandatory true;
}
leaf next-header {
type uint8;
mandatory true;
}
leaf traffic-class {
type uint8;
}
leaf flow-label {
type uint16;
}
leaf hop-limit {
type uint8;
}
}
grouping nvgre-header{
choice nvgre-type {
description
"vxlan-header.";
case ipv4 {
uses ipv4-header;
Wang & Dass Expires June 11, 2015 [Page 42]
Internet-Draft RIB I2RS DM December 2014
}
case ipv6 {
uses ipv6-header;
}
}
leaf virtual-subnet-id {
type uint32;
mandatory true;
}
leaf flow-id {
type uint16;
}
}
grouping vxlan-header{
choice vxlan-type {
description
"vxlan-header.";
case ipv4 {
uses ipv4-header;
}
case ipv6 {
uses ipv6-header;
}
}
leaf vxlan-identifier {
type uint32;
}
}
grouping gre-header{
leaf gre-ip-destination {
type inet:ipv4-address;
mandatory true;
}
leaf gre-protocol-type {
type inet:ipv4-address;
mandatory true;
}
leaf gre-key {
type uint64;
}
}
grouping mpls-header{
Wang & Dass Expires June 11, 2015 [Page 43]
Internet-Draft RIB I2RS DM December 2014
choice mpls-action-type {
description
"mpls-header.";
case mpls-push {
leaf mpls-push {
type boolean;
mandatory true;
}
leaf mpls-label {
type uint32;
mandatory true;
}
leaf s-bit {
type boolean;
}
leaf tos-value {
type uint8;
}
leaf ttl-value {
type uint8;
}
}
case mpls-pop {
leaf mpls-pop {
type boolean;
mandatory true;
}
leaf ttl-action {
type uint8;
}
}
}
}
grouping tunnel-encap{
choice tunnel-type {
description
"options for next-hops.";
case ipv4 {
uses ipv4-header;
}
case ipv6 {
uses ipv6-header;
}
case mpls {
uses mpls-header;
Wang & Dass Expires June 11, 2015 [Page 44]
Internet-Draft RIB I2RS DM December 2014
}
case gre {
uses gre-header;
}
case nvgre {
uses nvgre-header;
}
}
}
grouping nexthop {
description
"One Nexthop content for routes.";
leaf nexthop-index {
type uint32;
mandatory true;
}
choice next-hop-options {
case nexthop-identifier-next-hop{
uses nexthop-identifier;
}
case egress-interface-next-hop {
description
"simple next-hop is specified as an outgoing interface,
next-hop address or both.
address-family-specific modules are expected to provide
'next-hop-address' leaf via augmentation.";
leaf outgoing-interface {
type string;
mandatory true;
description
"name of The outgoing interface.";
}
}
case ipv4-address-next-hop {
leaf next-hop-ipv4-address {
type inet:ipv4-address;
mandatory true;
description
"Ipv4 address of The next-hop.";
}
leaf ipv4-rib-name {
type string;
description
Wang & Dass Expires June 11, 2015 [Page 45]
Internet-Draft RIB I2RS DM December 2014
"A nexthop pointing to a rib indicates that The route
lookup needs to continue in The specified rib. This is a way to
perform chained lookups.";
}
}
case ipv6-address-next-hop {
leaf next-hop-ipv6-address {
type inet:ipv6-address;
mandatory true;
description
"Ipv6 address of The next-hop.";
}
leaf ipv6-rib-name {
type string;
description
"A nexthop pointing to a rib indicates that The route
lookup needs to continue in The specified rib. This is a way to
perform chained lookups.";
}
}
case egress-interface-ipv4-next-hop {
container next-hop-egress-interface-ipv4-address{
leaf outgoing-interface {
type string;
mandatory true;
description "name of The outgoing interface.";
}
leaf next-hop-egress-ipv4-address {
type inet:ipv4-address;
mandatory true;
description
"Ipv4 address of The next-hop.";
}
description
"egress-interface and ip address: This can be usesd in cases e.g.
where The ip address is a link-local address..";
}
}
case egress-interface-ipv6-next-hop {
container next-hop-egress-interface-ipv6-address{
leaf outgoing-interface {
type string;
mandatory true;
description "name of The outgoing interface.";
}
leaf next-hop-egress-ipv6-address {
type inet:ipv4-address;
mandatory true;
Wang & Dass Expires June 11, 2015 [Page 46]
Internet-Draft RIB I2RS DM December 2014
description
"Ipv4 address of The next-hop.";
}
description
"egress-interface and ip address: This can be usesd in cases e.g.
where The ip address is a link-local address..";
}
}
case egress-interface-mac-next-hop {
container next-hop-egress-interface-mac-address{
leaf outgoing-interface {
type string;
mandatory true;
description "name of The outgoing interface.";
}
leaf ieee-mac-address {
type uint32;
mandatory true;
description "name of The mac-address.";
}
description
"egress-interface and ip address: This can be usesd in cases e.g.
where The ip address is a link-local address..";
}
}
case logical-tunnel-next-hop {
container logical-tunnel {
uses logical-tunnel;
description
"This can be a mpls lsp or a gre tunnel (or oThers
as defined in This document), that is represented by a unique
identifier (e.g. name).";
}
}
case tunnel-encap-next-hop {
container tunnel-encap {
uses tunnel-encap;
choice nexthop-second-encap-or-not{
case nexthop-second-encap{
container nexthop-second-encap{
description
"the two encapsulating nexthop.One example is a Pseudowire - which is MPLS over
some transport (MPLS or GRE for instance). Another example is VxLAN
over IP. ";
uses tunnel-encap;
choice nexthop-third-encap-or-not{
Wang & Dass Expires June 11, 2015 [Page 47]
Internet-Draft RIB I2RS DM December 2014
case nexthop-third-encap {
container nexthop-third-encap{
description
"the three encapsulating nexthop.One exampl is Option A -L3VPN OVER MPLS tunnel and MPLS over TE tunnel";
uses tunnel-encap;
choice nexthop-forth-encap-or-not{
case nexthop-forth-encap {
container nexthop-forth-encap{
description
"the four encapsulating nexthop.One exampl is Option C - which L3VPN OVER BGP-LSP and over MPLS tunnel
, and MPLS over TE tunnel.";
uses tunnel-encap;
choice nexthop-fifth-encap-or-not{
case nexthop-fifth-encap {
container nexthop-fifth-encap{
description
"the five encapsulating nexthop.One exampl is Option C - which L3VPN OVER BGP-LSP and over MPLS tunnel
, and MPLS over TE tunnel, the innest TE tunnel is FRR";
uses tunnel-encap;
}
}
}
}
}
}
}
}
}
}
}
}
leaf outgoing-interface {
type string;
}
description
"This can be an encap representing an ip tunnel or
mpls tunnel or oThers as defined in This document. an optional
egress interface can be specified to indicate which interface to
send The packet out on. The egress interface is usesful when The
network device contains eThernet interfaces and one needs to
perform address resolution for The ip packet.";
}
}
}
}
grouping route-attributes{
Wang & Dass Expires June 11, 2015 [Page 48]
Internet-Draft RIB I2RS DM December 2014
leaf route-preference {
description
"ROUTE_PREFERENCE: This is a numerical value that allows for
comparing routes from different protocols. Static configuration
is also considered a protocol for the purpose of this field. It
is also known as administrative-distance. The lower the value,
the higher the preference.";
type uint32 ;
mandatory true;
}
leaf local-only {
type boolean ;
mandatory true;
}
container address-family-route-attributes{
choice route-type {
case ip-route-attributes {
}
case mpls-route-attributes {
}
case eThernet-route-attributes {
}
}
}
}
typedef mpls-action-def {
type enumeration {
enum "push";
enum "pop";
enum "swap";
}
}
typedef special-nextho-def {
type enumeration {
enum "discard";
enum "discard-with-error";
enum "receive";
enum "cos-value";
}
}
typedef ip-route-type-def {
type enumeration {
enum "src";
Wang & Dass Expires June 11, 2015 [Page 49]
Internet-Draft RIB I2RS DM December 2014
enum "dest";
enum "dest-src";
}
}
typedef rib-family-def {
type enumeration {
enum "ipv4-rib-family";
enum "ipv6-rib-family";
enum "mpls-rib-family";
enum "ieee-mac-rib-family";
}
}
typedef route-type-def {
type enumeration {
enum "ipv4";
enum "ipv6";
enum "mpls";
enum "ieee-mac";
enum "interface";
}
}
typedef tunnel-type-def {
type enumeration {
enum "ipv4";
enum "ipv6";
enum "mpls";
enum "gre";
enum "vxlan";
enum "nvgre";
}
}
typedef special-nexthop-def {
type enumeration {
enum "discard";
enum "discard-with-error";
enum "receive";
enum "cos-value";
}
}
typedef route-state-def {
type enumeration {
enum "active";
enum "inactive";
Wang & Dass Expires June 11, 2015 [Page 50]
Internet-Draft RIB I2RS DM December 2014
}
}
typedef nexthop-state-def {
type enumeration {
enum "resolved";
enum "unresolved";
}
}
typedef route-installed-state-def {
type enumeration {
enum "Installed";
enum "uninstalled";
}
}
typedef route-reason-def {
type enumeration {
enum "low preference";
enum "unresolved nexthop";
enum "higher metric";
}
}
notification nexthop-resolution-status-change {
description
"Nexthop resolution status (resolved/unresolved) notification.";
uses nexthop-chain;
leaf nexthop-state {
description
"Nexthop resolution status (resolved/unresolved) notification.";
type nexthop-state-def;
mandatory true;
}
}
notification route-change {
description
"Route change notification.";
leaf instance-name {
description
"A routing instance is identified by its name,
INSTANCE_name. This MUST be unique across all routing instances
Wang & Dass Expires June 11, 2015 [Page 51]
Internet-Draft RIB I2RS DM December 2014
in a given network device.";
type string ;
mandatory true;
}
leaf rib-name {
description
"A reference to The name of a rib.";
type string;
mandatory true;
}
leaf rib-family {
type rib-family-def;
mandatory true;
}
uses route-prefix;
leaf route-installed-state {
description
"Indicates whether the route got installed in the FIB.";
type route-installed-state-def;
mandatory true;
}
leaf route-state {
description
"Indicates whether a route is fully resolved and
is a candidate for selection.";
type route-state-def;
mandatory true;
}
leaf route-reason {
description
"Need to be added.";
type route-reason-def;
mandatory true;
}
}
}
// </code ends>
6. IANA Considerations
This draft includes no request to IANA.
7. Security Considerations
This document introduces no new security threat and SHOULD follow the
security requirements as stated in [I-D.ietf-i2rs-architecture].
Wang & Dass Expires June 11, 2015 [Page 52]
Internet-Draft RIB I2RS DM December 2014
8. References
8.1. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
Used to Form Encoding Rules in Various Routing Protocol
Specifications", RFC 5511, April 2009.
8.2. Normative References
[I-D.ietf-i2rs-architecture]
Atlas, A., Halpern, J., Hares, S., Ward, D., and T.
Nadeau, "An Architecture for the Interface to the Routing
System", draft-ietf-i2rs-architecture-06 (work in
progress), December 2014.
[I-D.ietf-i2rs-rib-info-model]
Bahadur, N., Folkes, R., Kini, S., and J. Medved, "Routing
Information Base Info Model", draft-ietf-i2rs-rib-info-
model-04 (work in progress), December 2014.
[I-D.ietf-netconf-restconf]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", draft-ietf-netconf-restconf-03 (work in
progress), October 2014.
Authors' Addresses
Lixing Wang
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: wanglixing@huawei.com
Amit Dass
Ericsson
Torshamnsgatan 48.
Stockholm 16480
Sweden
Email: amit.dass@ericsson.com
Wang & Dass Expires June 11, 2015 [Page 53]
| PAFTECH AB 2003-2026 | 2026-04-24 08:41:21 |