BRAS CU Controller.
Version: 2019-12-08
module huawei-bras-cu-controller { yang-version 1; namespace "urn:huawei:yang:huawei-bras-cu-controller"; prefix bras-cu-controller; import huawei-ifm { prefix ifm; } import ietf-inet-types { prefix inet; } import huawei-network-instance { prefix ni; } import huawei-extension { prefix ext; } import ietf-yang-types { prefix yang; } import huawei-pub-type { prefix pub-type; } import huawei-l3vpn { prefix l3vpn; } import huawei-devm-vnf { prefix devm-vnf; } organization "Huawei Technologies Co., Ltd."; contact "Huawei Industrial Base Bantian, Longgang Shenzhen 518129 People's Republic of China Website: http://www.huawei.com Email: support@huawei.com"; description "BRAS CU Controller."; revision "2019-12-08" { description "Initial revision."; reference "Huawei private."; } ext:task-name "bras-control"; typedef present-status-type { type enumeration { enum "unpresent" { value 0; description "Unpresent."; } enum "present" { value 1; description "Present."; } } description "The type of persent status."; } typedef registered-status-type { type enumeration { enum "unregistered" { value 0; description "Unregistered."; } enum "registered" { value 1; description "Registered."; } } description "The type of registered status type."; } typedef board-type { type enumeration { enum "LPU" { value 0; description "LPU."; } } description "The type of board type."; } typedef deploy-status-type { type enumeration { enum "undeployed" { value 0; description "Undeployed."; } enum "deployed" { value 1; description "Deployed."; } } description "The type of deploy status."; } typedef other-profile-type { type enumeration { enum "warm-standby" { value 2; description "Warm standby."; } enum "load-balance" { value 3; description "Load balance."; } enum "cold-standby" { value 4; description "Cold standby."; } enum "warm-standby-loadbalance" { value 5; description "Warm standby loadbalance."; } } description "The type of profile type."; } typedef ip-assigned-mode-type { type enumeration { enum "by-backup-profile" { value 0; description "By backup profile."; } enum "by-up" { value 1; description "By up."; } } description "The type of ip assigned mode."; } typedef up-interface-type { type enumeration { enum "master" { value 1; description "Master interface."; } enum "slave" { value 2; description "Slave interface."; } } description "The type of up interface."; } typedef up-state-type { type enumeration { enum "init" { value 0; description "Init."; } enum "master" { value 1; description "Master."; } enum "slave" { value 2; description "Slave."; } } description "The type of up state."; } typedef hot-backup-mode-type { type enumeration { enum "master-slave" { value 0; description "Master slave."; } enum "load-balance-by-mac" { value 1; description "Load balance by mac."; } } description "The type of backup mode."; } typedef access-type { type enumeration { enum "layer2-subscriber" { value 1; description "Layer2 subscriber access."; } enum "layer3-subscriber" { value 2; description "Layer3 subscriber access."; } enum "layer2-leaseline" { value 3; description "Layer2 leaseline access."; } enum "layer3-leaseline" { value 4; description "Layer3 leaseline access."; } } description "Interface access type."; } typedef hot-backup-mac-type { type enumeration { enum "even-mac" { value 1; description "Even mac."; } enum "odd-mac" { value 2; description "Odd mac."; } } description "The type of mac."; } typedef hash-arithmetic-type { type enumeration { enum "crc16" { value 1; description "The crc16 hash-arithmetic."; } enum "crc32" { value 2; description "The crc32 hash-arithmetic."; } } description "The hash-arithmetic."; } typedef south-config-status-type { type enumeration { enum "completed" { value 0; description "Completed."; } enum "being-delivered" { value 1; description "Being delivered."; } enum "tunnel-abnormal" { value 2; description "Tunnel abnormal."; } } description "The type of south configuration status."; } typedef up-ip-mode-type { type enumeration { enum "odd-even" { value 1; description "Odd even mode."; } } description "The mode of up ip."; } typedef upmng-instance-type { type enumeration { enum "dynamic" { value 0; description "Dynamic UPMNG instance."; } enum "static" { value 1; description "Static UPMNG instance."; } } description "The type of UPMNG instance."; } typedef load-balance-type { type enumeration { enum "by-session" { value 0; description "By session."; } enum "by-interface" { value 1; description "By interface."; } } description "The type of load balance."; } container bras-cu-controller { description "BRAS CU controller."; container vm-capacity { description "Configure the maximum number of vUPs or ULPUs for a VM on the vBRAS-CP."; leaf ulpus-num { type uint32 { range "1..64"; } default "32"; description "Maximum number of ULPUs that can be created for a UPACC VM."; } leaf dynamic-instance-vups-num { type uint32 { range "1..32"; } default "8"; description "Maximum number of vUPs that can be created for a dynamic UPMNG instance."; } leaf static-instance-vups-num { type uint32 { range "1..50"; } config false; description "Maximum number of vUPs that can be created for a static UPMNG instance."; } leaf max-vups-num { type uint32 { range "1..100"; } config false; description "Maximum number of vUPs that can be managed by a UPMNG VM."; } } // container vm-capacity container global-attribute { description "Configure the global attribute of bras cu controller."; leaf up-base-id { ext:operation-exclude "update" { when "count(../../resource-ups/resource-up) > 0 or count(../../up-backup-groups/up-backup-group/up-id) > 0 or count(../../static-upmng-instances/static-upmng-instance/up-id) > 0"; description "The vBRAS-UP base ID cannot be changed when vBRAS-UP IDs exist on the current device."; } type uint32 { range "1024 | 2048 | 3072 | 4096"; } default "1024"; description "Base ID of a vBRAS-UP device."; } } // container global-attribute container up-backup-groups { description "List of UP backup group."; list up-backup-group { key "name"; description "Configure UP backup group."; leaf name { type string { length "1..15"; } description "Specifies the name of UP backup group."; } leaf-list up-id { type uint32 { range "1024..2023 | 2048..3047 | 3072..4071 | 4096..5095"; } must "../up-id <= (../../../global-attribute/up-base-id + 999) and ../up-id >= ../../../global-attribute/up-base-id"; must "not(../../../static-upmng-instances/static-upmng-instance[up-id = current()])"; must "count(../../up-backup-group[up-id = current()]) = 1"; description "Configure the ID of a UP on the CP. The vBRAS-UP backup group and static instance cannot contain the same member UP ID."; } } // list up-backup-group } // container up-backup-groups container cusp-down-hold { description "Configure a delayed master/backup status switching time for a control channel fault on the vBRAS-CP."; leaf hold-time { type uint32 { range "0..1800"; } units "s"; default "10"; description "Delayed master/backup status switching time for a control channel fault."; } } // container cusp-down-hold container wait-to-restore { description "Configure a delay for vBRAS-UP switchback after a CUSP tunnel fault, network-side fault, or VXLAN tunnel fault is rectified in vBRAS-UP hot backup scenarios."; leaf restore-time { type uint32 { range "300..3600"; } units "s"; default "300"; description "Restore time value."; } } // container wait-to-restore container static-upmng-instances { description "List of static UPMNG instances."; list static-upmng-instance { key "name"; max-elements 32; description "Configure a static UPMNG instance."; leaf name { type string { length "1..15"; pattern '([a-zA-Z])([a-zA-Z0-9._-]{0,14})'; } description "Specifies the name of the static UPMNG instance."; } leaf deploy-weight { type uint8 { range "50 | 100"; } default "50"; description "Specifies the deploy weight of this instance."; } leaf-list up-id { type uint32 { range "1024..2023 | 2048..3047 | 3072..4071 | 4096..5095"; } must "../up-id <= (../../../global-attribute/up-base-id + 999) and ../up-id >= ../../../global-attribute/up-base-id"; must "not(../../../up-backup-groups/up-backup-group[up-id = current()])"; must "count(../../static-upmng-instance[up-id = current()]) = 1"; description "Configure UP ID. The vBRAS-UP backup group and static instance cannot contain the same member UP ID."; } leaf-list up-backup-group { ext:operation-exclude "delete" { when "../../../up-backup-groups/up-backup-groups[name = current()]/up-id = ../../../resource-ups/resource-up/up-id"; description "If a resource UP has been created for a UP ID of a UP backup group, the UP backup group cannot be deleted from the corresponding static UPMNG instance."; } type leafref { path "../../../up-backup-groups/up-backup-group/name"; } must "count(../../static-upmng-instance[up-backup-group = current()]) = 1"; description "Configure UP backup groups."; } } // list static-upmng-instance } // container static-upmng-instances container resource-ups { description "List of resource UP."; list resource-up { key "up-id"; unique "cp-channel/vxlan-connection/vni"; unique "cp-channel/vxlan-connection/source-ip-address cp-channel/vxlan-connection/destination-ip-address cp-channel/vxlan-connection/vpn-instance-name"; description "Configure resource UP."; leaf up-id { type uint32 { range "1024..2023 | 2048..3047 | 3072..4071 | 4096..5095"; } must "../up-id <= (../../../global-attribute/up-base-id + 999) and ../up-id >= ../../../global-attribute/up-base-id"; description "UP ID."; } leaf-list remote-interface-name { type pub-type:if-name; description "Configure remote UP interface name. If a remote interface is created or deleted in the UPID, a four-dimensional interface with the UPID specified will be created or deleted accordingly. The interface type must be 100GE, 25GE, 400GE, Eth-Trunk, GigabitEthernet, PW-VE, or Virtual-Ethernet. The interface can be configured as a master interface only."; } container resource-up-description { description "Configure UP description."; leaf up-description { type string { length "1..246"; } description "Specify UP description."; } } // container resource-up-description container brief { config false; description "UP brief state."; leaf sysname { type string { length "1..248"; } description "UP sysname."; } leaf netconf-agent-ip { type inet:ipv4-address-no-zone; description "UP netconf agent ip."; } } // container brief container remote-up-boards { description "List of remote UP boards."; list remote-up-board { key "board-id"; description "Configure remote UP board."; leaf board-id { type uint32 { range "0..35"; } description "Board ID."; } } // list remote-up-board } // container remote-up-boards container cp-channel { description "Configure CP channel."; container netconf-connection { presence "Enable the NETCONF client."; description "Enable/disable a NETCONF connection policy between the vBRAS-CP and vBRAS-UP."; container bind-policy { description "Configure a NETCONF connection policy."; leaf name { type string { length "1..63"; } description "Policy name, referring netconf-client connection."; } } // container bind-policy } // container netconf-connection container cusp-connection { description "Configure a CUSP connection."; leaf agent-name { type string { length "1..31"; } description "Agent name, referring cusp-controller connection."; } } // container cusp-connection container vxlan-connection { must "./source-ip-address != ./destination-ip-address"; presence "Configure a VXLAN channel between the vBRAS-CP and vBRAS-UP."; description "Enable/disable vxlan connection."; leaf vni { type uint32 { range "1..16777215"; } mandatory true; description "VNI bound to the vBRAS-CP and vBRAS-UP."; } leaf source-ip-address { type inet:ipv4-address-no-zone; mandatory true; description "Source IP address of the protocol tunnel between the vBRAS-CP and vBRAS-UP."; } leaf destination-ip-address { type inet:ipv4-address-no-zone; mandatory true; description "Destination IP address of the protocol tunnel between the vBRAS-CP and vBRAS-UP."; } leaf vpn-instance-name { type leafref { path "/ni:network-instance/ni:instances/ni:instance/ni:name"; } must "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast'] or ../vpn-instance-name = '_public_'"; default "_public_"; description "Name of the VPN instance bound to the protocol tunnel between the vBRAS-CP and vBRAS-UP."; } } // container vxlan-connection } // container cp-channel container cp-to-up { presence "CP Config configuration."; description "Enable/disable CP Config."; container cu-agent { presence "Enable the UP mode."; description "Enable/disable the UP mode."; container cusp-agent { description "Configure a CUSP agent."; leaf agent-name { type leafref { path "../../../up-cusp-agents/up-cusp-agent/agent-name"; } description "Agent name, referring CUSP connection from the UP network element."; } } // container cusp-agent container vxlan-channel { must "not(./source-ip-address = ./destination-ip-address)"; presence "Vxlan channel configuration."; description "Enable/disable CP channel configuration."; leaf vni { type uint32 { range "1..16777215"; } mandatory true; description "VNI bound to the vBRAS-CP and vBRAS-UP."; } leaf source-ip-address { type inet:ipv4-address-no-zone; mandatory true; description "Source IP address."; } leaf-list destination-ip-address { type inet:ipv4-address-no-zone; min-elements 1; max-elements 2; description "Configure destination IP address."; } leaf vpn-instance-name { type string { length "1..31"; } default "_public_"; description "Name of the VPN instance from the UP network element."; } } // container vxlan-channel } // container cu-agent container up-cusp-agents { description "List of the CUSP agent attributes."; list up-cusp-agent { key "agent-name"; max-elements 1; description "Configure a CUSP agent."; leaf agent-name { type string { length "1..31"; } description "The name of CUSP agent."; } leaf transport-address { type inet:ipv4-address-no-zone; must "not(../transport-address='0.0.0.0')"; description "Connect address."; } leaf transport-vpn-name { when "../transport-address"; type string { length "1..31"; } description "Name of VPN instance."; } leaf echo-interval { type uint8 { range "0 | 2..60"; } units "s"; default "30"; description "Configure echo interval."; } leaf keychain-name { ext:case-sensitivity "lower-only"; type string { length "1..47"; pattern '([^A-Z]{1,47})'; } description "The name of keychain authentication."; } leaf ssl-policy-name { ext:case-sensitivity "lower-only"; type string { length "1..23"; pattern '([^A-Z]{1,23})'; } description "The name of SSL policy."; } leaf timeout-count { type uint8 { range "4..10"; } default "5"; description "Counts to define time out."; } leaf congest-duration { type uint8 { range "1..10"; } units "min"; default "5"; description "Congest Duration time."; } leaf tcp-mss { type uint16 { range "1..8192"; } units "Byte"; default "1400"; description "Tcp mss."; } container bfd { presence "Bidirectional forwarding detection."; description "Enable/disable bidirectional forwarding detection."; leaf multiplier { type uint32 { range "3..50"; } mandatory true; description "Specify the detect multiplier."; } leaf min-tx-interval { type uint32 { range "50..1000"; } units "ms"; mandatory true; description "Set minimum transmit interval."; } leaf min-rx-interval { type uint32 { range "50..1000"; } units "ms"; mandatory true; description "Set minimum receive interval."; } leaf tos-exp { type uint32 { range "0..7"; } mandatory true; description "Set TOS or EXP field."; } } // container bfd container connections { description "List of the connection infomation."; list connection { key "controller-ip"; description "Configure a connection."; leaf controller-ip { type inet:ipv4-address-no-zone; description "IP address of controller."; } } // list connection } // container connections } // list up-cusp-agent } // container up-cusp-agents } // container cp-to-up container cp-nqa-detect { presence "Bind a NQA instance to the VXLAN tunnel to detect VXLAN tunnel faults."; description "Enable/disable CP NQA dectct to the VXLAN tunnel."; leaf count { type uint32 { range "0..4294967295"; } default "3"; description "Number of sent Echo Request messages."; } choice detect-time-type { default "minute-level"; description "Detect time type."; case minute-level { description "Minute level."; leaf minute-interval { type uint32 { range "1..10000"; } units "min"; default "1"; description "Time elapses before a next Echo Request message is sent."; } leaf minute-timeout { type uint32 { range "1..65535"; } units "min"; default "1"; description "Timeout period of waiting for an Echo Reply message."; } } // case minute-level case second-level { description "Second level."; leaf second-interval { type uint32 { range "60..10000"; } units "s"; default "60"; description "Time elapses before a next Echo Request message is sent."; } leaf second-timeout { type uint32 { range "60..65535"; } units "s"; default "60"; description "Timeout period of waiting for an Echo Reply message."; } } // case second-level } // choice detect-time-type leaf destination-port { type uint32 { range "1..65535"; } mandatory true; description "Destination port number."; } leaf resume-threshold { type uint8 { range "0..95|100"; } units "%"; must "../resume-threshold = 100 or ../alarm-threshold >= ../resume-threshold + 5"; default "5"; description "Resume threshold value of Plr."; } leaf alarm-threshold { type uint8 { range "0..100"; } units "%"; must "../resume-threshold = 100 or ../alarm-threshold >= ../resume-threshold + 5"; default "10"; description "Alarm threshold value of Plr."; } } // container cp-nqa-detect container up-block { description "Configure vBRAS-UP blocked by the vBRAS-CP."; leaf block-enable { type empty; description "Specified vBRAS-UP blocked by the vBRAS-CP."; } } // container up-block container south-conflicts { config false; description "List of south conflict configuration."; list south-conflict { key "index"; description "Statistics of Configure command index."; leaf index { type uint32 { range "0..99"; } description "Index of configuration command."; } leaf command { type string { length "1..2047"; } description "Conflict command."; } leaf reason { type string { length "1..127"; } description "Conflict reason."; } leaf time { type yang:date-and-time; description "Conflict time."; } leaf view { type string { length "1..179"; } description "Conflict View."; } } // list south-conflict } // container south-conflicts container south-config-status { config false; description "Operational state of the south configuration."; leaf status { type south-config-status-type; description "The south configuration status."; } } // container south-config-status } // list resource-up } // container resource-ups container hot-profiles { description "List of hot backup policy profiles."; list hot-profile { key "name"; description "Configure a hot backup policy profile."; leaf name { type string { length "1..32"; } must "not(../../../other-profiles/other-profile[name = current()])"; description "Profile name."; } container backup-basic { description "Configure the basic attributes for a hot standby policy profile."; leaf ipv4-assigned-mode { type ip-assigned-mode-type; default "by-backup-profile"; description "IPv4 address allocation mode."; } leaf ipv6-assigned-mode { type ip-assigned-mode-type; default "by-backup-profile"; description "IPv6 address allocation mode."; } leaf nas-logic-port { type pub-type:if-name; description "Name of an NAS logical interface. This interface can only be delivered as a GE or Eth-Trunk main interface."; } leaf up-ip-mode { type up-ip-mode-type; description "Configure up ip mode."; } leaf fail-recovery-enable { type boolean; default "true"; description "Enable/disable recovery from failure switch."; } leaf sub-interface-switch-enable { type boolean; must "../sub-interface-switch-enable = 'false' or (../sub-interface-switch-enable = 'true' and count(../../backup-groups/backup-group) <= 1)"; default "false"; description "Enable/disable hot standby sub-interface."; } leaf delay-time { type uint32 { range "1..10800"; } units "s"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../backup-groups/backup-group/master-interface]/ifm:type='Virtual-Ethernet'"; description "Delay time number."; } leaf backup-mode { type hot-backup-mode-type; default "master-slave"; description "UP backup mode."; } leaf virtual-router-id { type uint8 { range "128..255"; } must "../virtual-router-id mod 2 = 0"; description "Hot backup virtual router identifier."; } container load-balance { when "../backup-mode = 'load-balance-by-mac'"; description "Configure load balance."; container hash-arithmetic { description "Configure hash arithmetic."; leaf arithmetic-type { type hash-arithmetic-type; description "The hash arithmetic type."; } leaf mac-offset { when "../arithmetic-type"; type uint8 { range "1..5"; } description "Set the offset of mac mode."; } } // container hash-arithmetic container remark-macs { when "../hash-arithmetic/arithmetic-type"; description "List of MAC addresses."; list remark-mac { key "address"; description "Configure a specified MAC address as an odd or even MAC address."; leaf address { type pub-type:mac-address; description "Mac address. The MAC address must be a unicast address and cannot be all 0s, 0000-0000-0001, or 0000-0000-0002."; } leaf mac-type { type hot-backup-mac-type; mandatory true; description "Mac type."; } } // list remark-mac } // container remark-macs container by-mac-extend { description "Configure load balance by mac extend."; leaf pppoe-by-option105 { type boolean; default "false"; description "Enable/disable PPPoE load balancing by MAC address+Option 105."; } leaf ipoe-by-vlan { type boolean; default "false"; description "Enable/disable IPoE load balancing by MAC address+VLAN."; } } // container by-mac-extend } // container load-balance } // container backup-basic container backup-groups { description "List of hot backup groups."; list backup-group { must "./master-interface != ./slave-interface"; must "../../backup-basic/virtual-router-id"; must "(../../backup-basic/sub-interface-switch-enable = 'true' and count(../backup-group) <= 1) or not(../../backup-basic/sub-interface-switch-enable = 'true')"; key "master-interface slave-interface"; description "Configure one vBRAS-UP's interface and another vBRAS-UP's interface as a hot backup group on a vBRAS-CP. If the backup groups bound to a backup policy template share a remote four-dimensional interface pool, a bound remote four-dimensional interface cannot be used by other backup groups, regardless of the type of the backup policy template. The UPIDs of the interfaces configured for the backup groups bound to a backup policy template must be bound to the same UP backup group. The primary backup interface and secondary backup interface in a backup group must have dufferebt UPIDs. In the same policy template, if the backup groups are bound to sub-interfaces, the primary backup interfaces of the backup groups must have the same UPID, and the secondary backup interfaces of the backup groups must have the same UPID."; leaf master-interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Virtual-Ethernet'"; must "(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class='sub-interface' and ../../../backup-basic/sub-interface-switch-enable = 'true') or not(../../../backup-basic/sub-interface-switch-enable = 'true')"; description "Name of an interface on the master vBRAS-UP."; } leaf slave-interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "not(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../backup-group/master-interface]/ifm:type != /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type) and not(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../backup-group/master-interface]/ifm:class != /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class)"; description "Name of an interface on the backup vBRAS-UP."; } } // list backup-group } // container backup-groups container up-status { config false; description "Up statistics."; container master-vup { description "Master vBRAS-UP statistics."; leaf up-id { type uint32; description "UP ID."; } leaf state { type up-state-type; description "UP state."; } leaf interface { type pub-type:if-name; description "UP interface name."; } leaf track-odd-mac-state { type up-state-type; description "Track odd MAC state."; } leaf track-even-mac-state { type up-state-type; description "Track even MAC state."; } leaf track-odd-interface { type pub-type:if-name; description "Odd interface name."; } leaf track-even-interface { type pub-type:if-name; description "Even interface name."; } } // container master-vup container slave-vup { description "Slave vBRAS-UP statistics."; leaf up-id { type uint32; description "UP ID."; } leaf state { type up-state-type; description "UP state."; } leaf interface { type pub-type:if-name; description "UP interface name."; } leaf track-odd-mac-state { type up-state-type; description "Track odd MAC state."; } leaf track-even-mac-state { type up-state-type; description "Track even MAC state."; } leaf track-odd-interface { type pub-type:if-name; description "Odd interface name."; } leaf track-even-interface { type pub-type:if-name; description "Even interface name."; } } // container slave-vup } // container up-status } // list hot-profile } // container hot-profiles container other-profiles { description "List of other backup policy profiles."; list other-profile { key "name"; description "Configure a other backup policy profiles."; leaf name { type string { length "1..32"; } must "not(../../../hot-profiles/hot-profile[name = current()])"; description "Profile name."; } leaf standby-type { ext:operation-exclude "update"; type other-profile-type; mandatory true; description "Other standby policy type."; } container backup-basic { when "../standby-type='warm-standby' or ../standby-type='warm-standby-loadbalance'"; description "Configure the basic attributes for a other standby policy profile."; leaf nas-logic-port { type pub-type:if-name; description "Name of an NAS logical interface. This interface can only be delivered as a GE or Eth-Trunk main interface."; } leaf ipv4-assigned-mode { when "../../standby-type='warm-standby'"; type ip-assigned-mode-type; default "by-backup-profile"; description "IPv4 address allocation mode."; } leaf ipv6-assigned-mode { when "../../standby-type='warm-standby'"; type ip-assigned-mode-type; default "by-backup-profile"; description "IPv6 address allocation mode."; } leaf sub-interface-enable { when "../../standby-type='warm-standby'"; type empty; description "Enable warm standby sub-interface."; } leaf load-balance-mode { when "../../standby-type='warm-standby-loadbalance'"; type load-balance-type; default "by-interface"; description "Configure a load balancing mode."; } leaf virtual-mac-number { when "../../standby-type='warm-standby-loadbalance'"; type uint8 { range "4..24"; } default "6"; description "Number of virtual MAC addresses allocated to each interface in an N+1 warm backup group."; } leaf preempt-time { when "../../standby-type='warm-standby-loadbalance'"; type uint32 { range "1..120"; } units "min"; default "30"; description "Switchback delay."; } } // container backup-basic container master-profile-interfaces { description "List of master interfaces."; list master-profile-interface { must "(../../slave-profile-interfaces/slave-profile-interface/name and ../../standby-type='warm-standby' and ../../backup-basic/nas-logic-port) or ../../standby-type='load-balance' or (../../slave-profile-interfaces/slave-profile-interface/name and ../../standby-type='cold-standby') or (../../standby-type='warm-standby-loadbalance' and ../../backup-basic/nas-logic-port)"; key "name"; unique "virtual-router-id"; description "Configure a master interface. If the backup groups bound to a backup policy template share a remote four-dimensional interface pool, a bound remote four-dimensional interface cannot be used by other backup groups, regardless of the type of the backup policy template. The UPIDs of the interfaces configured for the backup groups bound to a backup policy template must be bound to the same UP backup group. The primary backup interface and secondary backup interface in a backup group must have dufferebt UPIDs."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "not(../../../slave-profile-interfaces/slave-profile-interface[name = current()])"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Eth-Trunk' or (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Virtual-Ethernet' and (../../../standby-type='load-balance' or ../../../standby-type='warm-standby-loadbalance' or ../../../backup-basic/sub-interface-enable)) or (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='PW-VE' and ../../../standby-type = 'load-balance')"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class='main-interface'"; description "Name of an interface."; } leaf virtual-router-id { when "../../../standby-type='warm-standby'"; type uint8 { range "1..255"; } mandatory true; description "Virtual router ID."; } container interface-status { config false; description "Interface state."; leaf status { type string { length "1..64"; } description "Interface status."; } } // container interface-status } // list master-profile-interface } // container master-profile-interfaces container slave-profile-interfaces { when "../standby-type != 'load-balance' and ../standby-type != 'warm-standby-loadbalance'"; description "List of slave interface."; list slave-profile-interface { key "name"; max-elements 1; description "Configure a slave interface. If the backup groups bound to a backup policy template share a remote four-dimensional interface pool, a bound remote four-dimensional interface cannot be used by other backup groups, regardless of the type of the backup policy template. The UPIDs of the interfaces configured for the backup groups bound to a backup policy template must be bound to the same UP backup group. The primary backup interface and secondary backup interface in a backup group must have dufferebt UPIDs."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "not(../../../master-profile-interfaces/master-profile-interface[name = current()])"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Eth-Trunk' or (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Virtual-Ethernet' and ../../../backup-basic/sub-interface-enable)"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class='main-interface'"; description "Name of an interface."; } container interface-status { config false; description "Interface state."; leaf status { type string { length "1..64"; } description "Interface status."; } } // container interface-status } // list slave-profile-interface } // container slave-profile-interfaces container profile-status { config false; description "Profile state."; leaf in-switch { type boolean; description "Whether the backup group is being switched over."; } } // container profile-status container sub-interface-mappings { config false; description "List of sub interface mapping state."; list sub-interface-mapping { key "master-interface"; description "Sub interface mapping state."; leaf master-interface { type pub-type:if-name; description "Name of a master interface."; } leaf slave-interface { type pub-type:if-name; description "Name of a slave interface."; } leaf master-status { type string { length "1..64"; } description "Master interface status."; } leaf slave-status { type string { length "1..64"; } description "Slave interface status."; } } // list sub-interface-mapping } // container sub-interface-mappings } // list other-profile } // container other-profiles container upmng-instances { config false; description "List of UPMNG instances."; list upmng-instance { key "name"; description "Statistics of UPMNG instance."; leaf name { type string { length "1..15"; } description "The name of UPMNG instance."; } leaf instance-id { type uint32 { range "1..65535"; } description "Index assigned to the instance."; } leaf instance-type { ext:support-filter "true"; type upmng-instance-type; description "The type of UPMNG instance."; } leaf deploy-weight { type uint8 { range "50 | 100"; } description "The deploy weight of this instance."; } leaf available-up-num { type uint32 { range "0..65535"; } description "The number of new UPs that can be added in this instance."; } leaf current-up-num { type uint32 { range "0..65535"; } description "The number of UPs in this instance currently."; } leaf-list upmng-slot { type string { length "1..15"; } description "Statistics of UPMNG VM deployed by this instance."; } leaf-list up-id { type uint32 { range "1024..5095"; } description "Statistics of UP ID."; } } // list upmng-instance } // container upmng-instances container up-statistics { config false; description "UP statistics."; leaf total-up-number { type uint32 { range "0..1024"; } description "Total UP number."; } } // container up-statistics container resource-upmngs { config false; description "List of the vUPs managed by UPMNG VMs."; list resource-upmng { key "upmng-slot up-id"; description "Statistics of vUP managed by a specified UPMNG VM."; leaf upmng-slot { type string { length "1..15"; } description "Slot ID of a specified UPMNG VM."; } leaf up-id { type uint32 { range "1024..5095"; } description "ID of a vBRAS-UP on the vBRAS-CP."; } leaf agent-name { type string { length "1..49"; } description "Name of a vBRAS-UP on the vBRAS-CP."; } leaf agent-ip { type inet:ipv4-address-no-zone; description "IP address of a vBRAS-UP on the vBRAS-CP."; } } // list resource-upmng } // container resource-upmngs container resource-upaccs { config false; description "List of the ULPUs managed by UPACC VM."; list resource-upacc { key "upacc-slot up-id up-slot"; description "Statistics of ULPU managed by a specified UPACC VM."; leaf upacc-slot { type string { length "1..15"; } description "Slot ID of a UPACC VM on the vBRAS-CP."; } leaf up-id { type uint32 { range "1024..5095"; } description "ID of a vBRAS-UP on the vBRAS-CP."; } leaf up-slot { type uint32 { range "0..4294967295"; } description "Slot ID of a specified vBRAS-UP."; } } // list resource-upacc } // container resource-upaccs container resource-upboards { config false; description "List of brief board information and ULPU deployment status of vBRAS-UP statistics."; list resource-upboard { key "board-position"; description "Brief board information and ULPU deployment status of a vBRAS-UP statistics."; leaf board-position { type string { length "1..15"; } description "The board number of vBRAS-UP."; } leaf present-status { type present-status-type; description "Online state of a board on the vBRAS-UP."; } leaf registered-status { type registered-status-type; description "Registered state of a board on the vBRAS-UP."; } leaf board-type { type board-type; description "The board type of vBRAS-UP."; } leaf deploy-status { type deploy-status-type; description "ULPU deployment status."; } } // list resource-upboard } // container resource-upboards container resource-vpns { config false; description "List of resource VPN statistics."; list resource-vpn { key "up-id identifier"; description "Resource VPN statistics."; leaf up-id { type uint32 { range "1024..5095"; } description "ID of a vBRAS-UP on the vBRAS-CP."; } leaf identifier { type string { length "1..31"; } description "VPN instance ID used to match the vBRAS-UP and vBRAS-CP."; } leaf cp-vpn-name { type string { length "1..31"; } description "Name of a vBRAS-CP-side VPN in a CU separation scenario."; } leaf up-vpn-name { type string { length "1..31"; } description "Name of a vBRAS-UP-side VPN instance in a CU separation scenario."; } leaf status { type string { length "1..9"; } description "VPN instance Status to match the vBRAS-UP and vBRAS-CP."; } } // list resource-vpn } // container resource-vpns container up-abilitys { config false; description "List of UP interface backup ability statistics."; list up-ability { key "interface-name"; description "UP interface backup ability statistics."; leaf interface-name { type pub-type:if-name; description "Interface name."; } leaf access-type { type access-type; description "Access type."; } leaf support-backup { type boolean; description "Supporting backup or not."; } leaf standby-type { type enumeration { enum "hot-standby" { value 0; description "Hot standby."; } enum "warm-standby" { value 1; description "Warm standby."; } enum "load-balance" { value 2; description "Load balance."; } enum "cold-standby" { value 3; description "Cold standby."; } enum "warm-loadbalance" { value 4; description "Warm loadbalance."; } } description "Backup policy type."; } leaf profile-name { type string { length "1..32"; } description "Profile name."; } } // list up-ability } // container up-abilitys container cp-version { config false; description "Statistics of CU interface version information on the CP side."; leaf interface-version { type string { length "1..7"; } description "CU Interface Version."; } leaf management-interface-version-first { type string { length "1..7"; } description "CU Management Interface Version 1."; } leaf management-interface-version-second { type string { length "1..7"; } description "CU Management Interface Version 2."; } leaf management-interface-version-third { type string { length "1..7"; } description "CU Management Interface Version 3."; } container connected-up-versions { description "List of the connected UP version statistics."; list connected-up-version { key "up-id"; description "The connected UP version statistics."; leaf up-id { type uint32 { range "1024..5095"; } description "UP ID."; } leaf up-version { type string { length "1..7"; } description "UP Version Information."; } leaf negotiation-result { type string { length "1..15"; } description "Negotiation Results."; } } // list connected-up-version } // container connected-up-versions } // container cp-version container ipv4-address-manage { description "Configure the Bras IPv4 address management about cu-controller."; container up-authorization-groups { description "List of UP authorization groups."; list up-authorization-group { key "name"; max-elements 1024; description "Configure an UP authorization group."; leaf name { type string { length "1..32"; pattern '[a-zA-Z0-9._-]{1,32}'; } must "../name != '-' and ../name != '--'"; description "Specify the UP authorization group name."; } container ups { description "List of UP IDs bound to the UP authorization group."; list up { key "up-id"; description "Configure the ID of the UP bound to the UP authorization group."; leaf up-id { type uint32 { range "1024..2023 | 2048..3047 | 3072..4071 | 4096..5095"; } must "(../up-id<=(/bras-cu-controller:bras-cu-controller/bras-cu-controller:global-attribute/bras-cu-controller:up-base-id + 999) and ../up-id>=/bras-cu-controller:bras-cu-controller/bras-cu-controller:global-attribute/bras-cu-controller:up-base-id)"; description "Specify the ID of the UP bound to the UP authorization group."; } } // list up } // container ups } // list up-authorization-group } // container up-authorization-groups } // container ipv4-address-manage } // container bras-cu-controller rpc reset-south-conflict-by-up { description "Reset south conflict configuration by up."; input { leaf up-id { type leafref { path "/bras-cu-controller:bras-cu-controller/bras-cu-controller:resource-ups/bras-cu-controller:resource-up/bras-cu-controller:up-id"; } mandatory true; description "UP ID."; } } } // rpc reset-south-conflict-by-up rpc reset-south-conflict-all-up { description "Reset south conflict configuration for all up."; } // rpc reset-south-conflict-all-up } // module huawei-bras-cu-controller
© 2023 YumaWorks, Inc. All rights reserved.