diff options
author | Michal Cmarada <michal.cmarada@pantheon.tech> | 2018-05-04 16:13:09 +0200 |
---|---|---|
committer | Michal Cmarada <michal.cmarada@pantheon.tech> | 2018-05-09 14:36:21 +0200 |
commit | 8f9fe3ca424abc56d212a96af4ec5750a29e7673 (patch) | |
tree | c3472885ef0fb57452b88b4ea76f2935f81ca39f /routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang | |
parent | d5883157bff11ee89b95bc1abe7f62fca3509950 (diff) |
HC2VPP-253 - Bump routing models
This patch updates (for support of SRv6 and MPLS) routing models to:
- hc2vpp-ietf-routing@2018-03-13.yang
(RFC 8349, https://tools.ietf.org/html/rfc8349)
- hc2vpp-ietf-ipv4-unicast-routing@2018-03-13.yang (RFC 8349)
- hc2vpp-ietf-ipv6-unicast-routing@2018-03-13.yang (RFC 8349)
- hc2vpp-ietf-ipv6-router-advertisements@2018-03-13 (RFC 8349)
- hc2vpp-ietf-routing-types@2017-12-04
(RFC 8294 ,https://tools.ietf.org/html/rfc8294)
Due to odl bugs these models were changed,
see HC2VPP-298 for more details.
Significant changes in updated models:
- Routing instance was removed, we used vpp-routing-instance
as single instance before, which is no longer needed.
- Routing-protocol and Routing-protocols were refactored to
Control-plane-protocol/s. Control-protocol now uses type and name as key
- Route Key was changed from id to ipPrefix
- Next-hop and Next-Hop-list were refactored
See attached routing_postman_collection.json for updated data structures
and examples for both IPv4 and IPv6 routes.
For router advertisements see routing_advertisments_postman_collection.json
Another fixes in this patch:
- fixes in MPLS module due to Routing model updates
- fixes doc module due to changes in Routing model
Change-Id: I33704a50061aef97dfbd73a7701ff6fe5274d6f0
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
Diffstat (limited to 'routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang')
-rw-r--r-- | routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang | 848 |
1 files changed, 0 insertions, 848 deletions
diff --git a/routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang b/routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang deleted file mode 100644 index 9d955dfaf..000000000 --- a/routing/routing-api/src/main/yang/hc2vpp-ietf-ipv6-unicast-routing@2017-09-17.yang +++ /dev/null @@ -1,848 +0,0 @@ -module hc2vpp-ietf-ipv6-unicast-routing { - - namespace "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing"; - - prefix "v6ur"; - - import vpp-routing-table-lookup { - prefix "vpp-tl"; - } - - import hc2vpp-ietf-routing { - prefix "rt"; - revision-date 2014-05-24; - } - - import ietf-inet-types { - prefix "inet"; - } - - import ietf-interfaces { - prefix "if"; - } - - import ietf-ip { - prefix "ip"; - } - - //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model) - import vpp-routing { - prefix vpp-r; - } - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: <http://tools.ietf.org/wg/netmod/> - WG List: <mailto:netmod@ietf.org> - - WG Chair: Thomas Nadeau - <mailto:tnadeau@lucidvision.com> - - WG Chair: Juergen Schoenwaelder - <mailto:j.schoenwaelder@jacobs-university.de> - - Editor: Ladislav Lhotka - <mailto:lhotka@nic.cz>"; - - description - "This YANG module augments the 'ietf-routing' module with basic - configuration and operational state data for IPv6 unicast - routing. - - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Simplified BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see the - RFC itself for full legal notices."; - - revision 2017-09-17 { - description - "Table lookup support"; - } - - revision 2014-05-25 { - description - "Initial revision."; - reference - "RFC XXXX: A YANG Data Model for Routing Management"; - } - - /* Identities */ - - identity ipv6-unicast { - base rt:ipv6; - description - "This identity represents the IPv6 unicast address family."; - } - - /* Operational state data */ - - augment "/rt:routing-state/rt:routing-instance/rt:interfaces/" - + "rt:interface" { - description - "IPv6-specific parameters of router interfaces."; - container ipv6-router-advertisements { - description - "Parameters of IPv6 Router Advertisements."; - leaf send-advertisements { - type boolean; - description - "A flag indicating whether or not the router sends periodic - Router Advertisements and responds to Router - Solicitations."; - } - leaf max-rtr-adv-interval { - type uint16 { - range "4..1800"; - } - units "seconds"; - description - "The maximum time allowed between sending unsolicited - multicast Router Advertisements from the interface."; - } - leaf min-rtr-adv-interval { - type uint16 { - range "3..1350"; - } - units "seconds"; - description - "The minimum time allowed between sending unsolicited - multicast Router Advertisements from the interface."; - } - leaf managed-flag { - type boolean; - description - "The value that is placed in the 'Managed address - configuration' flag field in the Router Advertisement."; - } - leaf other-config-flag { - type boolean; - description - "The value that is placed in the 'Other configuration' flag - field in the Router Advertisement."; - } - leaf link-mtu { - type uint32; - description - "The value that is placed in MTU options sent by the - router. A value of zero indicates that no MTU options are - sent."; - } - leaf reachable-time { - type uint32 { - range "0..3600000"; - } - units "milliseconds"; - description - "The value that is placed in the Reachable Time field in - the Router Advertisement messages sent by the router. A - value of zero means unspecified (by this router)."; - } - leaf retrans-timer { - type uint32; - units "milliseconds"; - description - "The value that is placed in the Retrans Timer field in the - Router Advertisement messages sent by the router. A value - of zero means unspecified (by this router)."; - } - leaf cur-hop-limit { - type uint8; - description - "The value that is placed in the Cur Hop Limit field in the - Router Advertisement messages sent by the router. A value - of zero means unspecified (by this router)."; - } - leaf default-lifetime { - type uint16 { - range "0..9000"; - } - units "seconds"; - description - "The value that is placed in the Router Lifetime field of - Router Advertisements sent from the interface, in seconds. - A value of zero indicates that the router is not to be - used as a default router."; - } - container prefix-list { - description - "A list of prefixes that are placed in Prefix Information - options in Router Advertisement messages sent from the - interface. - - By default, these are all prefixes that the router - advertises via routing protocols as being on-link for the - interface from which the advertisement is sent."; - list prefix { - key "prefix-spec"; - description - "Advertised prefix entry and its parameters."; - leaf prefix-spec { - type inet:ipv6-prefix; - description - "IPv6 address prefix."; - } - leaf valid-lifetime { - type uint32; - units "seconds"; - description - "The value that is placed in the Valid Lifetime in the - Prefix Information option. The designated value of all - 1's (0xffffffff) represents infinity."; - } - leaf on-link-flag { - type boolean; - description - "The value that is placed in the on-link flag ('L-bit') - field in the Prefix Information option."; - } - leaf preferred-lifetime { - type uint32; - units "seconds"; - description - "The value that is placed in the Preferred Lifetime in - the Prefix Information option, in seconds. The - designated value of all 1's (0xffffffff) represents - infinity."; - } - leaf autonomous-flag { - type boolean; - description - "The value that is placed in the Autonomous Flag field - in the Prefix Information option."; - } - } - } - } - } - - augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { - when "../../rt:address-family = 'v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - description - "This leaf augments an IPv6 unicast route."; - leaf destination-prefix { - type inet:ipv6-prefix; - description - "IPv6 destination prefix."; - } - } - - augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" - + "rt:next-hop-options/rt:simple-next-hop" { - when "../../rt:address-family = 'v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - description - "This leaf augments the 'simple-next-hop' case of IPv6 unicast - routes."; - leaf next-hop { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - } - - augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" - + "rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/" - + "rt:next-hop" { - when "../../../../rt:address-family = 'v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - if-feature rt:multipath-routes; - description - "This leaf augments the 'next-hop-list' case of IPv6 unicast - routes."; - leaf address { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - } - - /* Configuration data */ - - augment - "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface" { - when "/if:interfaces/if:interface[if:name=current()/rt:name]/" - + "ip:ipv6/ip:enabled='true'" { - description - "This augment is only valid for router interfaces with - enabled IPv6."; - } - description - "Configuration of IPv6-specific parameters of router - interfaces."; - container ipv6-router-advertisements { - description - "Configuration of IPv6 Router Advertisements."; - leaf send-advertisements { - type boolean; - default "false"; - description - "A flag indicating whether or not the router sends periodic - Router Advertisements and responds to Router - Solicitations."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvSendAdvertisements."; - } - leaf max-rtr-adv-interval { - type uint16 { - range "4..1800"; - } - units "seconds"; - default "600"; - description - "The maximum time allowed between sending unsolicited - multicast Router Advertisements from the interface."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - MaxRtrAdvInterval."; - } - leaf min-rtr-adv-interval { - type uint16 { - range "3..1350"; - } - units "seconds"; - must ". <= 0.75 * ../max-rtr-adv-interval" { - description - "The value MUST NOT be greater than 75 % of - 'max-rtr-adv-interval'."; - } - description - "The minimum time allowed between sending unsolicited - multicast Router Advertisements from the interface. - - The default value to be used operationally if this leaf is - not configured is determined as follows: - - - if max-rtr-adv-interval >= 9 seconds, the default value - is 0.33 * max-rtr-adv-interval; - - - otherwise it is 0.75 * max-rtr-adv-interval."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - MinRtrAdvInterval."; - } - leaf managed-flag { - type boolean; - default "false"; - description - "The value to be placed in the 'Managed address - configuration' flag field in the Router Advertisement."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvManagedFlag."; - } - leaf other-config-flag { - type boolean; - default "false"; - description - "The value to be placed in the 'Other configuration' flag - field in the Router Advertisement."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvOtherConfigFlag."; - } - leaf link-mtu { - type uint32; - default "0"; - description - "The value to be placed in MTU options sent by the router. - A value of zero indicates that no MTU options are sent."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvLinkMTU."; - } - leaf reachable-time { - type uint32 { - range "0..3600000"; - } - units "milliseconds"; - default "0"; - description - "The value to be placed in the Reachable Time field in the - Router Advertisement messages sent by the router. A value - of zero means unspecified (by this router)."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvReachableTime."; - } - leaf retrans-timer { - type uint32; - units "milliseconds"; - default "0"; - description - "The value to be placed in the Retrans Timer field in the - Router Advertisement messages sent by the router. A value - of zero means unspecified (by this router)."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvRetransTimer."; - } - leaf cur-hop-limit { - type uint8; - description - "The value to be placed in the Cur Hop Limit field in the - Router Advertisement messages sent by the router. A value - of zero means unspecified (by this router). - - If this parameter is not configured, the device SHOULD use - the value specified in IANA Assigned Numbers that was in - effect at the time of implementation."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvCurHopLimit. - - IANA: IP Parameters, - http://www.iana.org/assignments/ip-parameters"; - } - leaf default-lifetime { - type uint16 { - range "0..9000"; - } - units "seconds"; - description - "The value to be placed in the Router Lifetime field of - Router Advertisements sent from the interface, in seconds. - It MUST be either zero or between max-rtr-adv-interval and - 9000 seconds. A value of zero indicates that the router is - not to be used as a default router. These limits may be - overridden by specific documents that describe how IPv6 - operates over different link layers. - - If this parameter is not configured, the device SHOULD use - a value of 3 * max-rtr-adv-interval."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvDefaultLifeTime."; - } - container prefix-list { - description - "Configuration of prefixes to be placed in Prefix - Information options in Router Advertisement messages sent - from the interface. - - Prefixes that are advertised by default but do not have - their entries in the child 'prefix' list are advertised - with the default values of all parameters. - - The link-local prefix SHOULD NOT be included in the list - of advertised prefixes."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - - AdvPrefixList."; - list prefix { - key "prefix-spec"; - description - "Configuration of an advertised prefix entry."; - leaf prefix-spec { - type inet:ipv6-prefix; - description - "IPv6 address prefix."; - } - choice control-adv-prefixes { - default "advertise"; - description - "The prefix either may be explicitly removed from the - set of advertised prefixes, or parameters with which - it is advertised may be specified (default case)."; - leaf no-advertise { - type empty; - description - "The prefix will not be advertised. - - This can be used for removing the prefix from the - default set of advertised prefixes."; - } - case advertise { - leaf valid-lifetime { - type uint32; - units "seconds"; - default "2592000"; - description - "The value to be placed in the Valid Lifetime in - the Prefix Information option. The designated - value of all 1's (0xffffffff) represents - infinity."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 - (IPv6) - AdvValidLifetime."; - } - leaf on-link-flag { - type boolean; - default "true"; - description - "The value to be placed in the on-link flag - ('L-bit') field in the Prefix Information - option."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 - (IPv6) - AdvOnLinkFlag."; - } - leaf preferred-lifetime { - type uint32; - units "seconds"; - must ". <= ../valid-lifetime" { - description - "This value MUST NOT be greater than - valid-lifetime."; - } - default "604800"; - description - "The value to be placed in the Preferred Lifetime - in the Prefix Information option. The designated - value of all 1's (0xffffffff) represents - infinity."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 - (IPv6) - AdvPreferredLifetime."; - } - leaf autonomous-flag { - type boolean; - default "true"; - description - "The value to be placed in the Autonomous Flag - field in the Prefix Information option."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 - (IPv6) - AdvAutonomousFlag."; - } - } - } - } - } - } - } - - //NOTE - added same augmentation for operational state - - augment "/rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/rt:static-routes" { - description - "This augment defines the configuration of the 'static' - pseudo-protocol with data specific to IPv6 unicast."; - container ipv6 { - description - "Configuration of a 'static' pseudo-protocol instance - consists of a list of routes."; - list route { - key "id"; - ordered-by "user"; - description - "A user-ordered list of static routes."; - leaf id { - type uint32 { - //WARNING - range changed from 1..max to be mappable on vpp table ids - range "0..max"; - } - description - "Unique numeric identifier of the route. - - This value is unrelated to system-assigned 'id' - parameters of routes in RIBs."; - } - leaf description { - type string; - description - "Textual description of the route."; - } - leaf destination-prefix { - type inet:ipv6-prefix; - mandatory "true"; - description - "IPv6 destination prefix."; - } - choice next-hop-options { - mandatory "true"; - description - "Options for expressing the next-hop in static routes."; - case special-next-hop { - //WARNING - changed, see ietf-routing.yang - uses rt:special-next-hop-grouping; - } - - // TODO - HONEYCOMB-398/HC2VPP-237 - case table-lookup { - container table-lookup-params { - uses vpp-tl:table-lookup-case-params; - } - } - - case simple-next-hop { - leaf next-hop { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved - leaf outgoing-interface { - type leafref { - path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/" - + "rt:name"; - } - description - "Name of the outgoing interface. - - Only interfaces configured for the ancestor routing - instance can be given."; - } - } - case next-hop-list { - if-feature rt:multipath-routes; - container next-hop-list { - description - "Configuration of multiple next-hops."; - list next-hop { - key "id"; - description - "An entry of a next-hop list."; - leaf id { - type uint32; - description - "Unique numeric identifier of the entry. - - This value is unrelated to system-assigned 'id' - parameters of next-hops in RIBs."; - } - leaf address { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved - leaf outgoing-interface { - type leafref { - path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/" - + "rt:name"; - } - description - "Name of the outgoing interface. - - Only interfaces configured for the ancestor - routing instance can be given."; - } - uses rt:next-hop-classifiers { - refine "priority" { - default "primary"; - } - refine "weight" { - default "0"; - } - } - } - } - } - } - - //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model) - container vpp-ipv6-route-state{ - uses vpp-r:vpp-route-attributes; - } - } - } - } - - augment "/rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/rt:static-routes" { - description - "This augment defines the configuration of the 'static' - pseudo-protocol with data specific to IPv6 unicast."; - container ipv6 { - description - "Configuration of a 'static' pseudo-protocol instance - consists of a list of routes."; - list route { - key "id"; - ordered-by "user"; - description - "A user-ordered list of static routes."; - leaf id { - type uint32 { - //WARNING - range changed from 1..max to be mappable on vpp table ids - range "0..max"; - } - description - "Unique numeric identifier of the route. - - This value is unrelated to system-assigned 'id' - parameters of routes in RIBs."; - } - leaf description { - type string; - description - "Textual description of the route."; - } - leaf destination-prefix { - type inet:ipv6-prefix; - mandatory "true"; - description - "IPv6 destination prefix."; - } - choice next-hop-options { - mandatory "true"; - description - "Options for expressing the next-hop in static routes."; - case special-next-hop { - //WARNING - changed, see ietf-routing.yang - uses rt:special-next-hop-grouping; - } - - // TODO - HONEYCOMB-398/HC2VPP-237 - case table-lookup { - container table-lookup-params { - uses vpp-tl:table-lookup-case-params; - } - } - - case simple-next-hop { - leaf next-hop { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved - leaf outgoing-interface { - type leafref { - path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/" - + "rt:name"; - } - description - "Name of the outgoing interface. - - Only interfaces configured for the ancestor routing - instance can be given."; - } - } - case next-hop-list { - if-feature rt:multipath-routes; - container next-hop-list { - description - "Configuration of multiple next-hops."; - list next-hop { - key "id"; - description - "An entry of a next-hop list."; - leaf id { - type uint32; - description - "Unique numeric identifier of the entry. - - This value is unrelated to system-assigned 'id' - parameters of next-hops in RIBs."; - } - leaf address { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved - leaf outgoing-interface { - type leafref { - path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/" - + "rt:name"; - } - description - "Name of the outgoing interface. - - Only interfaces configured for the ancestor - routing instance can be given."; - } - uses rt:next-hop-classifiers { - refine "priority" { - default "primary"; - } - refine "weight" { - default "0"; - } - } - } - } - } - } - - //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model) - container vpp-ipv6-route{ - uses vpp-r:vpp-route-attributes; - } - } - } - } - - /* RPC methods */ - - augment "/rt:active-route/rt:input/rt:destination-address" { - when "rt:address-family='v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - description - "This leaf augments the 'rt:destination-address' parameter of - the 'rt:active-route' operation."; - leaf address { - type inet:ipv6-address; - description - "IPv6 destination address."; - } - } - - augment "/rt:active-route/rt:output/rt:route" { - when "rt:address-family='v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - description - "This leaf augments the reply to the 'rt:active-route' - operation."; - leaf destination-prefix { - type inet:ipv6-prefix; - description - "IPv6 destination prefix."; - } - } - - augment "/rt:active-route/rt:output/rt:route/rt:next-hop-options/" - + "rt:simple-next-hop" { - when "rt:address-family='v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - description - "This leaf augments the 'simple-next-hop' case in the reply to - the 'rt:active-route' operation."; - leaf next-hop { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - } - - augment "/rt:active-route/rt:output/rt:route/rt:next-hop-options/" - + "rt:next-hop-list/rt:next-hop-list/rt:next-hop" { - when "../../rt:address-family='v6ur:ipv6-unicast'" { - description - "This augment is valid only for IPv6 unicast."; - } - if-feature rt:multipath-routes; - description - "This leaf augments the 'next-hop-list' case in the reply to - the 'rt:active-route' operation."; - leaf address { - type inet:ipv6-address; - description - "IPv6 address of the next-hop."; - } - } -}
\ No newline at end of file |