| module l3vpn-svc-ext { |
| yang-version 1; |
| namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext"; |
| prefix "l3vpn-svc-ext"; |
| |
| import ietf-inet-types { prefix inet; } |
| import ietf-l3vpn-svc { prefix l3vpn; } |
| |
| revision 2016-07-30 { |
| description |
| "Eliminated warnings"; |
| } |
| |
| revision "2016-07-20" { |
| description "Initial revision of extended l3vpn yang model"; |
| } |
| |
| typedef short-as-number { |
| type inet:as-number { |
| range 0..65535; |
| } |
| } |
| |
| typedef route-distinguisher { |
| reference "https://tools.ietf.org/html/rfc4364#section-4.2"; |
| type union { |
| type rd-ipv4; |
| type rd-as; |
| type rd-as2; |
| } |
| } |
| |
| typedef rd-ipv4 { |
| type string { |
| /* IPv4 : 2B number */ |
| pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' |
| + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))' |
| + ':' |
| + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' |
| + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' |
| + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'; |
| } |
| } |
| |
| typedef rd-as { |
| type string { |
| /* 2B AS : 4B number */ |
| pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' |
| + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' |
| + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])' |
| + ':' |
| + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|' |
| + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|' |
| + '42949672[0-8][0-9]|429496729[0-5])'; |
| } |
| } |
| |
| typedef rd-as2 { |
| type string { |
| /* 4B AS : 2B number */ |
| pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' |
| + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|' |
| + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|' |
| + '42949672[0-8][0-9]|429496729[0-5])' |
| + ':' |
| + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' |
| + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' |
| + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'; |
| } |
| } |
| |
| identity tc-demanded-tunnel { |
| base l3vpn:transport-constraint; |
| description "on-demand tunnel."; |
| } |
| |
| grouping class-profile { |
| list qos-class { |
| key class-id; |
| leaf class-id { |
| type string; |
| description |
| "Identification of the |
| class of service. |
| This identifier is internal to |
| the administration."; |
| } |
| leaf rate-limit { |
| type uint8; |
| units percent; |
| description |
| "To be used if class must |
| be rate |
| limited. Expressed as |
| percentage of the svc-bw."; |
| } |
| leaf priority-level { |
| type uint8; |
| description |
| "Defines the level of the |
| class in |
| term of priority queueing. |
| The higher the level is the |
| higher |
| is the priority."; |
| } |
| leaf guaranteed-bw-percent { |
| type uint8; |
| units percent; |
| description |
| "To be used to define the |
| guaranteed |
| BW in percent of the svc-bw |
| available at the priority-level."; |
| } |
| description |
| "List of class of services."; |
| } |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:service/l3vpn:qos/l3vpn:qos-profile/l3vpn:qos-profile" { |
| case custom-unicom { |
| container inbound-classes { |
| uses class-profile; |
| } |
| container outbound-classes { |
| uses class-profile; |
| } |
| } |
| } |
| |
| grouping bearer-attachment-grouping { |
| container bearer-attachment { |
| leaf pe-name { |
| type string; |
| } |
| leaf pe-mgmt-ip { |
| type inet:ipv4-address; |
| } |
| description "attached PE"; |
| } |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer" { |
| uses bearer-attachment-grouping; |
| } |
| |
| grouping requested-type-grouping { |
| container requested-type-profile { |
| choice requested-type-choice { |
| case dot1q-case { |
| container dot1q { |
| leaf physical-if { |
| description "physical interface name."; |
| type string; |
| } |
| leaf vlan-id { |
| type uint16 { |
| range "1..4096"; |
| } |
| } |
| } |
| } |
| case physical-case { |
| container physical { |
| leaf physical-if { |
| description "physical interface name."; |
| type string; |
| } |
| } |
| } |
| } |
| leaf circuit-id { |
| description "circuit description for PE-CE port."; |
| type string; |
| } |
| } |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer/l3vpn:requested-type" { |
| uses requested-type-grouping; |
| } |
| |
| grouping bfd-grouping { |
| leaf bfd-enabled { |
| type boolean; |
| description |
| "BFD activation"; |
| } |
| choice holdtime { |
| case profile { |
| leaf profile-name { |
| type string; |
| description |
| "Service provider well |
| known profile."; |
| } |
| description |
| "Service provider well |
| known profile."; |
| } |
| case fixed { |
| leaf fixed-value { |
| type uint32; |
| units msec; |
| description |
| "Expected holdtime |
| expressed |
| in msec."; |
| } |
| } |
| case dynamic { |
| container dynamic-value { |
| leaf interval { |
| type uint16; |
| units msec; |
| default 500; |
| } |
| leaf multiplier { |
| type uint16; |
| default 3; |
| } |
| description |
| "interval * multiplier is |
| timeout value."; |
| } |
| } |
| } |
| } |
| |
| grouping bgp-profile { |
| leaf as-override { |
| type boolean; |
| default false; |
| } |
| container soo { |
| leaf soo-enabled { |
| type boolean; |
| } |
| leaf soo-value { |
| type string; |
| } |
| } |
| container password { |
| leaf password-enabled { |
| type boolean; |
| } |
| leaf password-value { |
| type string; |
| } |
| } |
| container bgp-timer { |
| leaf keep-alive { |
| type uint16; |
| default 60; |
| units "seconds"; |
| } |
| leaf hold-time { |
| type uint16; |
| default 180; |
| units "seconds"; |
| } |
| } |
| container bfd { |
| uses bfd-grouping; |
| } |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:routing-protocols/l3vpn:routing-protocol/l3vpn:bgp" { |
| uses bgp-profile; |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:vpn-services/l3vpn:vpn-svc/l3vpn:transport-constraints/l3vpn:unicast-transport-constraints/l3vpn:constraint/l3vpn:constraint-list" { |
| leaf constraint-opaque-value2 { |
| type string; |
| description |
| "Opaque value that can be used to |
| specify constraint parameters."; |
| } |
| } |
| |
| grouping route-ipv4-extended-community { |
| reference "http://tools.ietf.org/html/rfc4360"; |
| leaf global-administrator { |
| type inet:ipv4-address; |
| } |
| leaf local-administrator { |
| type uint16; |
| } |
| } |
| |
| grouping extended-community { |
| choice extended-community { |
| reference "http://tools.ietf.org/html/rfc4360#section-4"; |
| default route-target-extended-community-case; |
| case route-target-extended-community-case { |
| container route-target-extended-community { |
| leaf global-administrator { |
| type short-as-number; |
| } |
| leaf local-administrator { |
| type uint32; |
| } |
| } |
| } |
| case route-target-ipv4-case { |
| container route-target-ipv4 { |
| uses route-ipv4-extended-community; |
| } |
| } |
| case route-target-extended-community-case2 { |
| container route-target-extended-community2 { |
| leaf global-administrator { |
| type uint32; |
| } |
| leaf local-administrator { |
| type uint16; |
| } |
| } |
| } |
| } |
| } |
| |
| grouping rdrt-profile { |
| choice site-role { |
| case custom-case { |
| container custom { |
| list import-rt { |
| key imrt-id; |
| leaf imrt-id { |
| type string; |
| } |
| uses extended-community; |
| } |
| list export-rt { |
| key exrt-id; |
| leaf exrt-id { |
| type string; |
| } |
| uses extended-community; |
| } |
| leaf rd { |
| type route-distinguisher; |
| } |
| } |
| } |
| } |
| } |
| |
| augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:vpn-attachment" { |
| uses rdrt-profile; |
| } |
| } |