Loading example-data/nfv.xml +36 −10 Viewed Changes for example-data/nfv.xml: 36 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -11,17 +11,14 @@ <name>Firewall VDU</name> <int-cpd> <id>inside</id> <ext-cpd>inside</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>management</id> <ext-cpd>management</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>outside</id> <ext-cpd>outside</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <virtual-compute-desc>asa-vcd</virtual-compute-desc> Loading Loading @@ -51,14 +48,26 @@ </sw-image-desc> <ext-cpd> <id>inside</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>inside</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>management</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>management</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>outside</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>outside</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <df> Loading Loading @@ -97,17 +106,14 @@ <name>Router VDU</name> <int-cpd> <id>left</id> <ext-cpd>left</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>management</id> <ext-cpd>management</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>right</id> <ext-cpd>right</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <virtual-compute-desc>csr-vcd</virtual-compute-desc> Loading Loading @@ -137,14 +143,26 @@ </sw-image-desc> <ext-cpd> <id>left</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>left</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>management</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>management</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>right</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>right</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <df> Loading Loading @@ -225,7 +243,9 @@ <id>fw2dpi</id> <version>1.0</version> <connectivity-type> <layer-protocol>Ethernet</layer-protocol> <layer-protocol> <protocol>Ethernet</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading @@ -239,7 +259,9 @@ <id>mgmt</id> <version>1.0</version> <connectivity-type> <layer-protocol>IPv4</layer-protocol> <layer-protocol> <protocol>IPv4</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading @@ -253,7 +275,9 @@ <id>r2fw</id> <version>1.0</version> <connectivity-type> <layer-protocol>Ethernet</layer-protocol> <layer-protocol> <protocol>Ethernet</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading Loading @@ -447,7 +471,9 @@ <id>r2fw</id> <version>1.0</version> <connectivity-type> <layer-protocol>IPv4</layer-protocol> <layer-protocol> <protocol>IPv4</protocol> </layer-protocol> </connectivity-type> <df> <id>r2fw</id> Loading src/yang/etsi-nfv-common.yang +268 −25 Viewed Changes for src/yang/etsi-nfv-common.yang: 268 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -6,13 +6,13 @@ submodule etsi-nfv-common { description "Common data types for ETSI data models."; revision 2018-06-19 { revision 2019-03-18 { description "Initial revision Common data structures to support VNFD and NSD according to: ETSI GS NFV-IFA 014 Ed251v244 ETSI GS NFV-IFA 011 Ed251v243"; ETSI GS NFV-IFA 014 Ed261v252 ETSI GS NFV-IFA 011 Ed261v254"; } /* Loading Loading @@ -253,14 +253,20 @@ submodule etsi-nfv-common { grouping connectivity-type { container connectivity-type { leaf layer-protocol { mandatory true; list layer-protocol { key "protocol"; leaf protocol { type identityref { base layer-protocol; } } description "Identifies the protocol this VL gives access to (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire)."; "Identifies the protocols that the VL uses (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers."; reference "GS NFV IFA011: Section 7.1.7.3, ConnectivityType information element."; Loading Loading @@ -370,30 +376,23 @@ submodule etsi-nfv-common { } } // The following grouping is Cpd information element as defined in // IFA014. IFA011 defines its own Cpd information element, which // is defined in etsi-nfv-vnf.yang file. Do not use this grouping // for inclusion in a Vnf. grouping cpd { description "The Cpd information element specifies the characteristics of connection points attached to NFs and NSs. This is an abstract class used as parent for the various Cpd classes. It has an attribute 'trunkMode' which enables the NFVO to identify whether the Cp instantiated from the Cpd is in trunk mode or not."; "A Cpd information element describes network connectivity to a compute resource or a VL."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; leaf id { type string; description "Identifier of this Cpd information element."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf layer-protocol { mandatory true; leaf-list layer-protocol { default Ethernet; type identityref { base layer-protocol; } Loading @@ -402,8 +401,9 @@ submodule etsi-nfv-common { corresponding to the CPD support for connectivity purposes (e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf role { type identityref { base cp-role; Loading @@ -415,8 +415,9 @@ submodule etsi-nfv-common { a tree flow pattern within the NS will have legal cpRoles of ROOT and LEAF."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf description { type string; description Loading @@ -424,8 +425,140 @@ submodule etsi-nfv-common { connection point (e.g. connection point for control plane traffic)."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } list protocol { key "associated-layer-protocol"; leaf associated-layer-protocol { type identityref { base layer-protocol; } description "One of the values of the attribute layerProtocol of the Cpd IE."; reference "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information element"; } list address-data { key "type"; leaf type { type identityref { base address-type; } description "Describes the type of the address to be assigned to the CP instantiated from the parent CPD. Value: • MAC address. • IP address. • Etc. The content type shall be aligned with the address type supported by the layerProtocol attribute of the parent CPD."; reference "GS NFV IFA011: Section 7.1.3.3 AddressData information element"; } container l2-address-data { when "../type='mac-address'"; leaf mac-address-assignment { type boolean; default true; description "Specify if the MAC address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. If it is set to False, it will be provided by an external entity, e.g. OSS/BSS."; reference "GS NFV IFA011: Section 7.1.3.5 L2AddressData information element"; } description "Provides the information on the MAC addresses to be assigned to the CP(s) instantiated from the parent CPD. Shall be present when the addressType is MAC address."; reference "GS NFV IFA011: Section 7.1.3.3 AddressData information element"; } container l3-address-data { when "../type='ip-address'"; leaf ip-address-assignment { type boolean; default "true"; description "Specify if the address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. "; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf floating-ip-activated { type boolean; default "true"; description "Specify if the floating IP scheme is activated on the CP or not."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf ip-address-type { type enumeration { enum "ipv4"; enum "ipv6"; } description "Define address type. The address type should be aligned with the address type supported by the layerProtocol attribute of the parent VnfExtCpd."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf number-of-ip-addresses { type uint32; description "Minimum number of IP addresses to be assigned based on this L3AddressData information element."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } } description "Provides information on the addresses to be assigned to the CP(s) instantiated from the CPD."; reference "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information element"; } description "Identifies the protocol layering information the CP uses for connectivity purposes and associated information. There shall be one cpProtocol for each layer protocol as indicated by the attribute layerProtocol. When a PnfExtCpd as defined in ETSI GS NFV-IFA 014 [i.8] is inherited from this Cpd, the cardinality is set to 0."; reference "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf trunk-mode { type boolean; description Loading @@ -436,7 +569,117 @@ submodule etsi-nfv-common { is not configured for the Cp i.e. It is equivalent to Boolean value 'false'."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf security-group-rule-id { type leafref { path "/nfv/vnfd/security-group-rule/id"; } description "Reference of the security group rules bound to this CPD."; reference "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } } grouping security-group-rule { list security-group-rule { key "id"; leaf id { type string; description "Identifier of this SecurityGroupRule information element."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf description { type string; description "Human readable description of the security group rule."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf direction { type enumeration { enum ingress; enum egress; } default "ingress"; description "The direction in which the security group rule is applied. Permitted values: INGRESS, EGRESS. Defaults to INGRESS."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf ether-type { type enumeration { enum ipv4; enum ipv6; } default "ipv4"; description "Indicates the protocol carried over the Ethernet layer. Permitted values: IPV4, IPV6. Defaults to IPV4."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf protocol { type enumeration { enum tcp; enum udp; enum icmp; } default "tcp"; description "Indicates the protocol carried over the IP layer. Permitted values: any protocol defined in the IANA protocol registry, e.g. TCP, UDP, ICMP, etc. Defaults to TCP."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf port-range-min { must ". <= ../port-range-max"; type uint16; default "0"; description "Indicates minimum port number in the range that is matched by the security group rule. Defaults to 0."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf port-range-max { must ". >= ../port-range-min"; type uint16; default "65535"; description "Indicates maximum port number in the range that is matched by the security group rule. Defaults to 65535."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } description "Defines security group rules to be used by the VNF."; reference "GS NFV IFA011: Section 7.1.2, VNFD information element."; } } } src/yang/etsi-nfv-ns.yang +23 −25 Viewed Changes for src/yang/etsi-nfv-ns.yang: 23 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -4,24 +4,21 @@ submodule etsi-nfv-ns { prefix nfv; } import etsi-nfv-common { prefix common; } include etsi-nfv-common; include etsi-nfv-vnf; include etsi-nfv-pnf; description "Models for NS according to ETSI GS NFV-IFA 014."; revision 2017-01-20 { revision 2019-03-18 { description "Initial revision Common data structure to support NSD according to: ETSI GS NFV-IFA 011 Ed251v243"; ETSI GS NFV-IFA 014 Ed261v252"; reference "ETSI GS NFV-IFA 011 Ed251v243"; "ETSI GS NFV-IFA 014 Ed261v252"; } grouping resource-handle { Loading Loading @@ -133,7 +130,7 @@ submodule etsi-nfv-ns { description "Identifier of this Cpd information element."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA014: Section 6.6.3.1 Cpd information element"; } leaf address-assignment { Loading Loading @@ -248,7 +245,7 @@ submodule etsi-nfv-ns { information element"; } uses common:connectivity-type; uses connectivity-type; list df { key "id"; Loading @@ -272,6 +269,7 @@ submodule etsi-nfv-ns { } container qos { presence "VL QoS parameters"; description "The QoS information element specifies quality of service parameters applicable to a VL."; Loading Loading @@ -364,7 +362,7 @@ submodule etsi-nfv-ns { "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc information element"; } uses common:security-parameters; uses security-parameters; } list vnffgd { Loading Loading @@ -485,7 +483,7 @@ submodule etsi-nfv-ns { } container ns { leaf nsd-id { must ". = deref(../../ns-profile-id)/../nsd-id" { must ". = deref(../../nested-ns-profile-id)/../nsd-id" { } type leafref { Loading Loading @@ -745,7 +743,7 @@ submodule etsi-nfv-ns { } leaf min-number-of-instances { mandatory true; default 1; type uint16; description "Minimum number of instances of the VNF based on this Loading @@ -756,7 +754,7 @@ submodule etsi-nfv-ns { } leaf max-number-of-instances { mandatory true; default 1; type uint16; description "Maximum number of instances of the VNF based on this Loading @@ -766,7 +764,7 @@ submodule etsi-nfv-ns { element"; } uses common:local-affinity-or-anti-affinity-rule; uses local-affinity-or-anti-affinity-rule; list affinity-or-anti-affinity-group { key "id"; Loading Loading @@ -932,7 +930,7 @@ submodule etsi-nfv-ns { information element"; } uses common:local-affinity-or-anti-affinity-rule; uses local-affinity-or-anti-affinity-rule; list affinity-or-anti-affinity-group { key "id"; Loading @@ -959,7 +957,7 @@ submodule etsi-nfv-ns { reference "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile information element"; uses common:link-bitrate-requirements; uses link-bitrate-requirements; } container min-bitrate-requirements { description Loading @@ -968,7 +966,7 @@ submodule etsi-nfv-ns { reference "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile information element"; uses common:link-bitrate-requirements; uses link-bitrate-requirements; } } Loading Loading @@ -1048,7 +1046,7 @@ submodule etsi-nfv-ns { leaf affinity-type { mandatory true; type common:affinity-type; type affinity-type; description "Specifies the type of relationship that the members of the group have: 'affinity' or 'anti-affinity.'"; Loading @@ -1059,7 +1057,7 @@ submodule etsi-nfv-ns { leaf affinity-scope { mandatory true; type common:affinity-scope; type affinity-scope; description "Specifies the scope of the affinity or anti-affinity relationship e.g. a NFVI node, an NFVI PoP, etc."; Loading Loading @@ -1123,7 +1121,7 @@ submodule etsi-nfv-ns { } leaf number-of-instances { mandatory true; default 1; type uint32; description "Specifies the number of VNF instances required for Loading Loading @@ -1156,7 +1154,7 @@ submodule etsi-nfv-ns { VirtualLinkToLevelMapping information element"; } uses common:link-bitrate-requirements; uses link-bitrate-requirements; } list ns-to-level-mapping { Loading @@ -1183,7 +1181,7 @@ submodule etsi-nfv-ns { } leaf number-of-instances { mandatory true; default 1; type uint32; description "Specifies the number of nested NS instances required Loading Loading @@ -1289,7 +1287,7 @@ submodule etsi-nfv-ns { } leaf min-number-of-instances { type uint16; mandatory true; default 1; description "Minimum number of nested NS instances based on the referenced NSD that is permitted to exist for this Loading @@ -1300,7 +1298,7 @@ submodule etsi-nfv-ns { } leaf max-number-of-instances { type uint16; mandatory true; default 1; description "Maximum number of nested NS instances based on the referenced NSD that is permitted to exist for this Loading Loading @@ -1484,7 +1482,7 @@ submodule etsi-nfv-ns { } } } uses common:security-parameters; uses security-parameters; } } } src/yang/etsi-nfv-pnf.yang +4 −3 Viewed Changes for src/yang/etsi-nfv-pnf.yang: 4 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -12,15 +12,15 @@ submodule etsi-nfv-pnf { description "Models for PNFD according to GS NFV-IFA 014."; revision 2018-06-25 { revision 2019-03-18 { description "Initial revision. Common data structure to support VNFD according to: ETSI GS NFV-IFA 014 Ed251v244"; ETSI GS NFV-IFA 014 Ed261v252"; reference "ETSI GS NFV-IFA 014 Ed251v244"; "ETSI GS NFV-IFA 014 Ed261v252"; } grouping pnfd { Loading Loading @@ -111,6 +111,7 @@ submodule etsi-nfv-pnf { reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; } uses security-group-rule; } } } src/yang/etsi-nfv-vnf.yang +186 −176 Viewed Changes for src/yang/etsi-nfv-vnf.yang: 186 added lines, 176 removed lines. Original line number Diff line number Diff line Loading @@ -16,15 +16,15 @@ submodule etsi-nfv-vnf { description "Models for VNFD according to GS NFV-IFA 011."; revision 2018-06-19 { revision 2019-03-18 { description "Initial revision. Common data structure to support VNFD according to: VNFD according to ETSI GS NFV-IFA 011 Ed251v243"; VNFD according to ETSI GS NFV-IFA 011 Ed261v254"; reference "ETSI GS NFV-IFA 011 Ed251v243"; "ETSI GS NFV-IFA 011 Ed261v254"; } grouping virtual-network-interface-requirements { Loading Loading @@ -54,7 +54,7 @@ submodule etsi-nfv-vnf { VirtualNetworkInterfaceRequirements information element"; } leaf support-mandatory { mandatory true; default "false"; type boolean; description "Indicates whether fulfilling the constraint is Loading Loading @@ -98,161 +98,6 @@ submodule etsi-nfv-vnf { } } // This grouping definition is for use within Vnfd as defined in // IFA011. A similar definition of Cpd exists in IFA014, but // that is for use with Sapd and Pnfd. Do not use this grouping // for that. grouping vnf-cpd { description "A Cpd information element describes network connectivity to a compute resource or a VL."; reference "GS NFC IFA011: Section 7.1.6.3 Cpd Information Element"; leaf id { type string; description "Identifier of this Cpd information element."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf layer-protocol { mandatory true; type identityref { base layer-protocol; } description "Identifies which protocol the CP uses for connectivity purposes (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf role { type identityref { base cp-role; } description "Identifies the role of the port in the context of the traffic flow patterns in the VNF or parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles of ROOT and LEAF."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf description { type string; description "Human readable description of the connection point"; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } container protocol { description "Identifies the protocol layering information the CP uses for connectivity purposes and associated information. There shall be one cpProtocol for each layer protocol as indicated by the attribute layerProtocol."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; leaf associated-layer-protocol { type identityref { base layer-protocol; } description "One of the values of the attribute layerProtocol of the Cpd IE."; reference "GS NFV IFA011: Section 7.1.6.8, CpProtocolData information element."; } list address-data { key "address-type"; leaf address-type { type identityref { base address-type; } description "Describes the type of the address to be assigned to the CP instantiated from the parent CPD. Value: • MAC address. • IP address. • … The content type shall be aligned with the address type supported by the layerProtocol attribute of the parent CPD."; reference "GS NFV IFA011: Section 7.1.3.3, AddressData information element."; } container l2-address-data { when "../address-type='mac-address'"; } container l3-address-data { when "../address-type='ip-address'"; leaf ip-address-assignment { type boolean; description "Specify if the address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. "; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf floating-ip-activated { type boolean; description "Specify if the floating IP scheme is activated on the CP or not."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf ip-address-type { type enumeration { enum "ipv4"; enum "ipv6"; } description "Define address type. The address type should be aligned with the address type supported by the layerProtocol attribute of the parent VnfExtCpd."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf number-of-ip-addresses { type uint32; description "Minimum number of IP addresses to be assigned based on this L3AddressData information element."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } } description "The AddressData information element supports providing information about the addressing scheme and parameters applicable to a CP."; reference "GS NFV IFA011: Section 7.1.3.3, AddressData information element."; } } leaf trunk-mode { type boolean; description "Information about whether the CP instantiated from this CPD is in Trunk mode (802.1Q or other)."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } } grouping vnfd { list vnfd { key "id"; Loading Loading @@ -435,8 +280,7 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; } uses vnf-cpd; uses cpd; } leaf virtual-compute-desc { type leafref { Loading Loading @@ -701,7 +545,7 @@ submodule etsi-nfv-vnf { range "0..max"; } units "Gb"; mandatory true; default 1; description "Amount of virtual memory in MB."; reference Loading Loading @@ -773,7 +617,7 @@ submodule etsi-nfv-vnf { type uint16 { range "1..max"; } mandatory true; default 1; description "Number of virtual CPUs."; reference Loading Loading @@ -820,7 +664,7 @@ submodule etsi-nfv-vnf { container virtual-cpu-pinning { presence "Set to specify CPU pinning."; leaf cpu-pinning-policy { mandatory true; default "dynamic"; type enumeration { enum "static"; enum "dynamic"; Loading Loading @@ -866,7 +710,7 @@ submodule etsi-nfv-vnf { enum "swap"; enum "ephemeral"; } mandatory true; default "root"; description "Type of virtualised storage resource (e.g. volume, object)."; Loading @@ -877,7 +721,7 @@ submodule etsi-nfv-vnf { leaf size-of-storage { type uint64; units "Gb"; mandatory true; default 0; description "Size of virtualised storage resource (e.g. size of volume, in Gb)"; Loading Loading @@ -955,8 +799,26 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.5 SwImageDesc information element."; } leaf checksum { container checksum { leaf algorithm { type string; description "Species the algorithm used to obtain the checksum value."; reference "GS NFV IFA011: Section 7.1.6.10 ChecksumData information element."; } leaf hash { type string; description "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers."; reference "GS NFV IFA011: Section 7.1.6.10 ChecksumData information element."; } description "The checksum of the software image file."; reference Loading @@ -964,7 +826,7 @@ submodule etsi-nfv-vnf { information element."; } leaf container-format { mandatory true; default "bare"; type enumeration { enum "aki" { description Loading Loading @@ -1004,7 +866,7 @@ submodule etsi-nfv-vnf { information element."; } leaf disk-format { mandatory true; default "qcow2"; type enumeration { enum "aki" { description Loading Loading @@ -1102,7 +964,7 @@ submodule etsi-nfv-vnf { information element."; } leaf image { mandatory true; default "."; type inet:uri; description "This is a reference to the actual software image. Loading Loading @@ -1169,6 +1031,7 @@ submodule etsi-nfv-vnf { information element."; } container qos { presence "VL QoS parameters"; description "QoS of the VL."; reference Loading Loading @@ -1246,6 +1109,8 @@ submodule etsi-nfv-vnf { } } uses security-group-rule; list ext-cpd { key "id"; min-elements 1; Loading Loading @@ -1274,12 +1139,14 @@ submodule etsi-nfv-vnf { } } leaf cpd { type leafref { path "deref(../vdu-id)/../int-cpd/id"; } } } } uses virtual-network-interface-requirements; uses vnf-cpd; uses cpd; } list df { Loading Loading @@ -1327,7 +1194,7 @@ submodule etsi-nfv-vnf { } leaf min-number-of-instances { type uint16; mandatory true; default 1; description "Minimum number of instances of the VNFC based on this VDU that is permitted to exist for this flavour."; Loading @@ -1337,7 +1204,7 @@ submodule etsi-nfv-vnf { } leaf max-number-of-instances { type uint16; mandatory true; default 1; must ". >= ../nfv:min-number-of-instances"; reference "GS NFV IFA011: Section 7.1.8.3, VduProfile information Loading Loading @@ -1498,7 +1365,7 @@ submodule etsi-nfv-vnf { must ". >= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:min-number-of-instances"; mandatory true; default 1; description "Number of instances of VNFC based on this VDU to deploy for this level."; Loading Loading @@ -1795,6 +1662,118 @@ submodule etsi-nfv-vnf { AffinityOrAntiAffinityGroup information element"; } } list indicator { key "id"; leaf id { type string; description "Unique identifier."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf name { type string; description "The human readable name of the VnfIndicator."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf indicator-value { type string; description "Defines the allowed values or value ranges of this indicator."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf source { type enumeration { enum vnf; enum em; enum both; } description "Describe the source of the indicator. The possible values are: • VNF. • EM. • Both. This tells the consumer where to send the subscription request."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } description "Declares the VNF indicators that are supported by this VNF (specific to this DF)."; reference "GS NFV IFA011: Section 7.1.8.2 VnfDf information element"; } list supported-vnf-interfaces { key "name"; leaf name { type enumeration { enum vnf-configuration; enum vnf-indicator; } description "Identifies an interface produced by the VNF. Valid values: - VNF_CONFIGURATION - VNF_INDICATOR"; reference "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails information element"; } leaf-list cpd-id { type leafref { path "../../../ext-cpd/id"; } description "References one or more CPDs from which to instantiate external CPs through which interface endpoints on the VNF side can be reached by the VNFM."; reference "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails information element"; } list interface-details { key "key"; leaf key { type string; } leaf value { type string; } } description "Indicates which interfaces the VNF produces and provides additional details on how to access the interface endpoints."; reference "GS NFV IFA011: Section 7.1.8.2 VnfDf information element"; } list monitoring-parameter { key "id"; Loading Loading @@ -2063,7 +2042,23 @@ submodule etsi-nfv-vnf { leaf-list extension { type string; description "'Extension' attributes of VnfInfo that are writeable."; "Additional VNF-specific attributes of VnfInfo that affect the lifecycle management of a VNF instance and that are writeable. For each VNF instance, these attributes are stored persistently by the VNFM and can be queried and modified through the VNFM. These attributes are intended to be consumed by the VNFM or by the lifecycle management scripts during the execution of VNF lifecycle management operations. Modifying these values has no direct effect on the VNF instance; however, modified values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance."; reference "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes information element"; Loading @@ -2071,7 +2066,22 @@ submodule etsi-nfv-vnf { leaf-list metadata { type string; description "'Metadata' attributes of VnfInfo that are writeable."; "Additional VNF-specific attributes of VnfInfo that are writeable and that provide metadata describing the VNF instance. For each VNF instance, these attributes are stored persistently by the VNFM and can be queried and modified through the VNFM. These attributes are intended to provide information to functional blocks external to the VNFM and will not be used by the VNFM or the VNF lifecycle management scripts when executing lifecycle management operations. Modifying these attributes has no effect on the VNF instance. It only affects the attribute values stored by the VNFM."; reference "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes information element"; Loading Loading
example-data/nfv.xml +36 −10 Viewed Changes for example-data/nfv.xml: 36 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -11,17 +11,14 @@ <name>Firewall VDU</name> <int-cpd> <id>inside</id> <ext-cpd>inside</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>management</id> <ext-cpd>management</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>outside</id> <ext-cpd>outside</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <virtual-compute-desc>asa-vcd</virtual-compute-desc> Loading Loading @@ -51,14 +48,26 @@ </sw-image-desc> <ext-cpd> <id>inside</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>inside</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>management</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>management</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>outside</id> <int-cpd> <vdu-id>firewall</vdu-id> <cpd>outside</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <df> Loading Loading @@ -97,17 +106,14 @@ <name>Router VDU</name> <int-cpd> <id>left</id> <ext-cpd>left</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>management</id> <ext-cpd>management</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <int-cpd> <id>right</id> <ext-cpd>right</ext-cpd> <layer-protocol>Ethernet</layer-protocol> </int-cpd> <virtual-compute-desc>csr-vcd</virtual-compute-desc> Loading Loading @@ -137,14 +143,26 @@ </sw-image-desc> <ext-cpd> <id>left</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>left</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>management</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>management</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <ext-cpd> <id>right</id> <int-cpd> <vdu-id>router</vdu-id> <cpd>right</cpd> </int-cpd> <layer-protocol>Ethernet</layer-protocol> </ext-cpd> <df> Loading Loading @@ -225,7 +243,9 @@ <id>fw2dpi</id> <version>1.0</version> <connectivity-type> <layer-protocol>Ethernet</layer-protocol> <layer-protocol> <protocol>Ethernet</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading @@ -239,7 +259,9 @@ <id>mgmt</id> <version>1.0</version> <connectivity-type> <layer-protocol>IPv4</layer-protocol> <layer-protocol> <protocol>IPv4</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading @@ -253,7 +275,9 @@ <id>r2fw</id> <version>1.0</version> <connectivity-type> <layer-protocol>Ethernet</layer-protocol> <layer-protocol> <protocol>Ethernet</protocol> </layer-protocol> </connectivity-type> <df> <id>normal</id> Loading Loading @@ -447,7 +471,9 @@ <id>r2fw</id> <version>1.0</version> <connectivity-type> <layer-protocol>IPv4</layer-protocol> <layer-protocol> <protocol>IPv4</protocol> </layer-protocol> </connectivity-type> <df> <id>r2fw</id> Loading
src/yang/etsi-nfv-common.yang +268 −25 Viewed Changes for src/yang/etsi-nfv-common.yang: 268 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -6,13 +6,13 @@ submodule etsi-nfv-common { description "Common data types for ETSI data models."; revision 2018-06-19 { revision 2019-03-18 { description "Initial revision Common data structures to support VNFD and NSD according to: ETSI GS NFV-IFA 014 Ed251v244 ETSI GS NFV-IFA 011 Ed251v243"; ETSI GS NFV-IFA 014 Ed261v252 ETSI GS NFV-IFA 011 Ed261v254"; } /* Loading Loading @@ -253,14 +253,20 @@ submodule etsi-nfv-common { grouping connectivity-type { container connectivity-type { leaf layer-protocol { mandatory true; list layer-protocol { key "protocol"; leaf protocol { type identityref { base layer-protocol; } } description "Identifies the protocol this VL gives access to (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire)."; "Identifies the protocols that the VL uses (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers."; reference "GS NFV IFA011: Section 7.1.7.3, ConnectivityType information element."; Loading Loading @@ -370,30 +376,23 @@ submodule etsi-nfv-common { } } // The following grouping is Cpd information element as defined in // IFA014. IFA011 defines its own Cpd information element, which // is defined in etsi-nfv-vnf.yang file. Do not use this grouping // for inclusion in a Vnf. grouping cpd { description "The Cpd information element specifies the characteristics of connection points attached to NFs and NSs. This is an abstract class used as parent for the various Cpd classes. It has an attribute 'trunkMode' which enables the NFVO to identify whether the Cp instantiated from the Cpd is in trunk mode or not."; "A Cpd information element describes network connectivity to a compute resource or a VL."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; leaf id { type string; description "Identifier of this Cpd information element."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf layer-protocol { mandatory true; leaf-list layer-protocol { default Ethernet; type identityref { base layer-protocol; } Loading @@ -402,8 +401,9 @@ submodule etsi-nfv-common { corresponding to the CPD support for connectivity purposes (e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf role { type identityref { base cp-role; Loading @@ -415,8 +415,9 @@ submodule etsi-nfv-common { a tree flow pattern within the NS will have legal cpRoles of ROOT and LEAF."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf description { type string; description Loading @@ -424,8 +425,140 @@ submodule etsi-nfv-common { connection point (e.g. connection point for control plane traffic)."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } list protocol { key "associated-layer-protocol"; leaf associated-layer-protocol { type identityref { base layer-protocol; } description "One of the values of the attribute layerProtocol of the Cpd IE."; reference "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information element"; } list address-data { key "type"; leaf type { type identityref { base address-type; } description "Describes the type of the address to be assigned to the CP instantiated from the parent CPD. Value: • MAC address. • IP address. • Etc. The content type shall be aligned with the address type supported by the layerProtocol attribute of the parent CPD."; reference "GS NFV IFA011: Section 7.1.3.3 AddressData information element"; } container l2-address-data { when "../type='mac-address'"; leaf mac-address-assignment { type boolean; default true; description "Specify if the MAC address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. If it is set to False, it will be provided by an external entity, e.g. OSS/BSS."; reference "GS NFV IFA011: Section 7.1.3.5 L2AddressData information element"; } description "Provides the information on the MAC addresses to be assigned to the CP(s) instantiated from the parent CPD. Shall be present when the addressType is MAC address."; reference "GS NFV IFA011: Section 7.1.3.3 AddressData information element"; } container l3-address-data { when "../type='ip-address'"; leaf ip-address-assignment { type boolean; default "true"; description "Specify if the address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. "; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf floating-ip-activated { type boolean; default "true"; description "Specify if the floating IP scheme is activated on the CP or not."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf ip-address-type { type enumeration { enum "ipv4"; enum "ipv6"; } description "Define address type. The address type should be aligned with the address type supported by the layerProtocol attribute of the parent VnfExtCpd."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf number-of-ip-addresses { type uint32; description "Minimum number of IP addresses to be assigned based on this L3AddressData information element."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } } description "Provides information on the addresses to be assigned to the CP(s) instantiated from the CPD."; reference "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information element"; } description "Identifies the protocol layering information the CP uses for connectivity purposes and associated information. There shall be one cpProtocol for each layer protocol as indicated by the attribute layerProtocol. When a PnfExtCpd as defined in ETSI GS NFV-IFA 014 [i.8] is inherited from this Cpd, the cardinality is set to 0."; reference "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf trunk-mode { type boolean; description Loading @@ -436,7 +569,117 @@ submodule etsi-nfv-common { is not configured for the Cp i.e. It is equivalent to Boolean value 'false'."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } leaf security-group-rule-id { type leafref { path "/nfv/vnfd/security-group-rule/id"; } description "Reference of the security group rules bound to this CPD."; reference "GS NFV IFA011: Section 7.1.6.3 Cpd information element"; } } grouping security-group-rule { list security-group-rule { key "id"; leaf id { type string; description "Identifier of this SecurityGroupRule information element."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf description { type string; description "Human readable description of the security group rule."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf direction { type enumeration { enum ingress; enum egress; } default "ingress"; description "The direction in which the security group rule is applied. Permitted values: INGRESS, EGRESS. Defaults to INGRESS."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf ether-type { type enumeration { enum ipv4; enum ipv6; } default "ipv4"; description "Indicates the protocol carried over the Ethernet layer. Permitted values: IPV4, IPV6. Defaults to IPV4."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf protocol { type enumeration { enum tcp; enum udp; enum icmp; } default "tcp"; description "Indicates the protocol carried over the IP layer. Permitted values: any protocol defined in the IANA protocol registry, e.g. TCP, UDP, ICMP, etc. Defaults to TCP."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf port-range-min { must ". <= ../port-range-max"; type uint16; default "0"; description "Indicates minimum port number in the range that is matched by the security group rule. Defaults to 0."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } leaf port-range-max { must ". >= ../port-range-min"; type uint16; default "65535"; description "Indicates maximum port number in the range that is matched by the security group rule. Defaults to 65535."; reference "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule information element."; } description "Defines security group rules to be used by the VNF."; reference "GS NFV IFA011: Section 7.1.2, VNFD information element."; } } }
src/yang/etsi-nfv-ns.yang +23 −25 Viewed Changes for src/yang/etsi-nfv-ns.yang: 23 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -4,24 +4,21 @@ submodule etsi-nfv-ns { prefix nfv; } import etsi-nfv-common { prefix common; } include etsi-nfv-common; include etsi-nfv-vnf; include etsi-nfv-pnf; description "Models for NS according to ETSI GS NFV-IFA 014."; revision 2017-01-20 { revision 2019-03-18 { description "Initial revision Common data structure to support NSD according to: ETSI GS NFV-IFA 011 Ed251v243"; ETSI GS NFV-IFA 014 Ed261v252"; reference "ETSI GS NFV-IFA 011 Ed251v243"; "ETSI GS NFV-IFA 014 Ed261v252"; } grouping resource-handle { Loading Loading @@ -133,7 +130,7 @@ submodule etsi-nfv-ns { description "Identifier of this Cpd information element."; reference "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; "GS NFV IFA014: Section 6.6.3.1 Cpd information element"; } leaf address-assignment { Loading Loading @@ -248,7 +245,7 @@ submodule etsi-nfv-ns { information element"; } uses common:connectivity-type; uses connectivity-type; list df { key "id"; Loading @@ -272,6 +269,7 @@ submodule etsi-nfv-ns { } container qos { presence "VL QoS parameters"; description "The QoS information element specifies quality of service parameters applicable to a VL."; Loading Loading @@ -364,7 +362,7 @@ submodule etsi-nfv-ns { "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc information element"; } uses common:security-parameters; uses security-parameters; } list vnffgd { Loading Loading @@ -485,7 +483,7 @@ submodule etsi-nfv-ns { } container ns { leaf nsd-id { must ". = deref(../../ns-profile-id)/../nsd-id" { must ". = deref(../../nested-ns-profile-id)/../nsd-id" { } type leafref { Loading Loading @@ -745,7 +743,7 @@ submodule etsi-nfv-ns { } leaf min-number-of-instances { mandatory true; default 1; type uint16; description "Minimum number of instances of the VNF based on this Loading @@ -756,7 +754,7 @@ submodule etsi-nfv-ns { } leaf max-number-of-instances { mandatory true; default 1; type uint16; description "Maximum number of instances of the VNF based on this Loading @@ -766,7 +764,7 @@ submodule etsi-nfv-ns { element"; } uses common:local-affinity-or-anti-affinity-rule; uses local-affinity-or-anti-affinity-rule; list affinity-or-anti-affinity-group { key "id"; Loading Loading @@ -932,7 +930,7 @@ submodule etsi-nfv-ns { information element"; } uses common:local-affinity-or-anti-affinity-rule; uses local-affinity-or-anti-affinity-rule; list affinity-or-anti-affinity-group { key "id"; Loading @@ -959,7 +957,7 @@ submodule etsi-nfv-ns { reference "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile information element"; uses common:link-bitrate-requirements; uses link-bitrate-requirements; } container min-bitrate-requirements { description Loading @@ -968,7 +966,7 @@ submodule etsi-nfv-ns { reference "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile information element"; uses common:link-bitrate-requirements; uses link-bitrate-requirements; } } Loading Loading @@ -1048,7 +1046,7 @@ submodule etsi-nfv-ns { leaf affinity-type { mandatory true; type common:affinity-type; type affinity-type; description "Specifies the type of relationship that the members of the group have: 'affinity' or 'anti-affinity.'"; Loading @@ -1059,7 +1057,7 @@ submodule etsi-nfv-ns { leaf affinity-scope { mandatory true; type common:affinity-scope; type affinity-scope; description "Specifies the scope of the affinity or anti-affinity relationship e.g. a NFVI node, an NFVI PoP, etc."; Loading Loading @@ -1123,7 +1121,7 @@ submodule etsi-nfv-ns { } leaf number-of-instances { mandatory true; default 1; type uint32; description "Specifies the number of VNF instances required for Loading Loading @@ -1156,7 +1154,7 @@ submodule etsi-nfv-ns { VirtualLinkToLevelMapping information element"; } uses common:link-bitrate-requirements; uses link-bitrate-requirements; } list ns-to-level-mapping { Loading @@ -1183,7 +1181,7 @@ submodule etsi-nfv-ns { } leaf number-of-instances { mandatory true; default 1; type uint32; description "Specifies the number of nested NS instances required Loading Loading @@ -1289,7 +1287,7 @@ submodule etsi-nfv-ns { } leaf min-number-of-instances { type uint16; mandatory true; default 1; description "Minimum number of nested NS instances based on the referenced NSD that is permitted to exist for this Loading @@ -1300,7 +1298,7 @@ submodule etsi-nfv-ns { } leaf max-number-of-instances { type uint16; mandatory true; default 1; description "Maximum number of nested NS instances based on the referenced NSD that is permitted to exist for this Loading Loading @@ -1484,7 +1482,7 @@ submodule etsi-nfv-ns { } } } uses common:security-parameters; uses security-parameters; } } }
src/yang/etsi-nfv-pnf.yang +4 −3 Viewed Changes for src/yang/etsi-nfv-pnf.yang: 4 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -12,15 +12,15 @@ submodule etsi-nfv-pnf { description "Models for PNFD according to GS NFV-IFA 014."; revision 2018-06-25 { revision 2019-03-18 { description "Initial revision. Common data structure to support VNFD according to: ETSI GS NFV-IFA 014 Ed251v244"; ETSI GS NFV-IFA 014 Ed261v252"; reference "ETSI GS NFV-IFA 014 Ed251v244"; "ETSI GS NFV-IFA 014 Ed261v252"; } grouping pnfd { Loading Loading @@ -111,6 +111,7 @@ submodule etsi-nfv-pnf { reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; } uses security-group-rule; } } }
src/yang/etsi-nfv-vnf.yang +186 −176 Viewed Changes for src/yang/etsi-nfv-vnf.yang: 186 added lines, 176 removed lines. Original line number Diff line number Diff line Loading @@ -16,15 +16,15 @@ submodule etsi-nfv-vnf { description "Models for VNFD according to GS NFV-IFA 011."; revision 2018-06-19 { revision 2019-03-18 { description "Initial revision. Common data structure to support VNFD according to: VNFD according to ETSI GS NFV-IFA 011 Ed251v243"; VNFD according to ETSI GS NFV-IFA 011 Ed261v254"; reference "ETSI GS NFV-IFA 011 Ed251v243"; "ETSI GS NFV-IFA 011 Ed261v254"; } grouping virtual-network-interface-requirements { Loading Loading @@ -54,7 +54,7 @@ submodule etsi-nfv-vnf { VirtualNetworkInterfaceRequirements information element"; } leaf support-mandatory { mandatory true; default "false"; type boolean; description "Indicates whether fulfilling the constraint is Loading Loading @@ -98,161 +98,6 @@ submodule etsi-nfv-vnf { } } // This grouping definition is for use within Vnfd as defined in // IFA011. A similar definition of Cpd exists in IFA014, but // that is for use with Sapd and Pnfd. Do not use this grouping // for that. grouping vnf-cpd { description "A Cpd information element describes network connectivity to a compute resource or a VL."; reference "GS NFC IFA011: Section 7.1.6.3 Cpd Information Element"; leaf id { type string; description "Identifier of this Cpd information element."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf layer-protocol { mandatory true; type identityref { base layer-protocol; } description "Identifies which protocol the CP uses for connectivity purposes (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf role { type identityref { base cp-role; } description "Identifies the role of the port in the context of the traffic flow patterns in the VNF or parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles of ROOT and LEAF."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } leaf description { type string; description "Human readable description of the connection point"; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } container protocol { description "Identifies the protocol layering information the CP uses for connectivity purposes and associated information. There shall be one cpProtocol for each layer protocol as indicated by the attribute layerProtocol."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; leaf associated-layer-protocol { type identityref { base layer-protocol; } description "One of the values of the attribute layerProtocol of the Cpd IE."; reference "GS NFV IFA011: Section 7.1.6.8, CpProtocolData information element."; } list address-data { key "address-type"; leaf address-type { type identityref { base address-type; } description "Describes the type of the address to be assigned to the CP instantiated from the parent CPD. Value: • MAC address. • IP address. • … The content type shall be aligned with the address type supported by the layerProtocol attribute of the parent CPD."; reference "GS NFV IFA011: Section 7.1.3.3, AddressData information element."; } container l2-address-data { when "../address-type='mac-address'"; } container l3-address-data { when "../address-type='ip-address'"; leaf ip-address-assignment { type boolean; description "Specify if the address assignment is the responsibility of management and orchestration function or not. If it is set to True, it is the management and orchestration function responsibility. "; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf floating-ip-activated { type boolean; description "Specify if the floating IP scheme is activated on the CP or not."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf ip-address-type { type enumeration { enum "ipv4"; enum "ipv6"; } description "Define address type. The address type should be aligned with the address type supported by the layerProtocol attribute of the parent VnfExtCpd."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } leaf number-of-ip-addresses { type uint32; description "Minimum number of IP addresses to be assigned based on this L3AddressData information element."; reference "GS NFV IFA011: Section 7.1.3.4, L3AddressData information element."; } } description "The AddressData information element supports providing information about the addressing scheme and parameters applicable to a CP."; reference "GS NFV IFA011: Section 7.1.3.3, AddressData information element."; } } leaf trunk-mode { type boolean; description "Information about whether the CP instantiated from this CPD is in Trunk mode (802.1Q or other)."; reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; } } grouping vnfd { list vnfd { key "id"; Loading Loading @@ -435,8 +280,7 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; } uses vnf-cpd; uses cpd; } leaf virtual-compute-desc { type leafref { Loading Loading @@ -701,7 +545,7 @@ submodule etsi-nfv-vnf { range "0..max"; } units "Gb"; mandatory true; default 1; description "Amount of virtual memory in MB."; reference Loading Loading @@ -773,7 +617,7 @@ submodule etsi-nfv-vnf { type uint16 { range "1..max"; } mandatory true; default 1; description "Number of virtual CPUs."; reference Loading Loading @@ -820,7 +664,7 @@ submodule etsi-nfv-vnf { container virtual-cpu-pinning { presence "Set to specify CPU pinning."; leaf cpu-pinning-policy { mandatory true; default "dynamic"; type enumeration { enum "static"; enum "dynamic"; Loading Loading @@ -866,7 +710,7 @@ submodule etsi-nfv-vnf { enum "swap"; enum "ephemeral"; } mandatory true; default "root"; description "Type of virtualised storage resource (e.g. volume, object)."; Loading @@ -877,7 +721,7 @@ submodule etsi-nfv-vnf { leaf size-of-storage { type uint64; units "Gb"; mandatory true; default 0; description "Size of virtualised storage resource (e.g. size of volume, in Gb)"; Loading Loading @@ -955,8 +799,26 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.5 SwImageDesc information element."; } leaf checksum { container checksum { leaf algorithm { type string; description "Species the algorithm used to obtain the checksum value."; reference "GS NFV IFA011: Section 7.1.6.10 ChecksumData information element."; } leaf hash { type string; description "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers."; reference "GS NFV IFA011: Section 7.1.6.10 ChecksumData information element."; } description "The checksum of the software image file."; reference Loading @@ -964,7 +826,7 @@ submodule etsi-nfv-vnf { information element."; } leaf container-format { mandatory true; default "bare"; type enumeration { enum "aki" { description Loading Loading @@ -1004,7 +866,7 @@ submodule etsi-nfv-vnf { information element."; } leaf disk-format { mandatory true; default "qcow2"; type enumeration { enum "aki" { description Loading Loading @@ -1102,7 +964,7 @@ submodule etsi-nfv-vnf { information element."; } leaf image { mandatory true; default "."; type inet:uri; description "This is a reference to the actual software image. Loading Loading @@ -1169,6 +1031,7 @@ submodule etsi-nfv-vnf { information element."; } container qos { presence "VL QoS parameters"; description "QoS of the VL."; reference Loading Loading @@ -1246,6 +1109,8 @@ submodule etsi-nfv-vnf { } } uses security-group-rule; list ext-cpd { key "id"; min-elements 1; Loading Loading @@ -1274,12 +1139,14 @@ submodule etsi-nfv-vnf { } } leaf cpd { type leafref { path "deref(../vdu-id)/../int-cpd/id"; } } } } uses virtual-network-interface-requirements; uses vnf-cpd; uses cpd; } list df { Loading Loading @@ -1327,7 +1194,7 @@ submodule etsi-nfv-vnf { } leaf min-number-of-instances { type uint16; mandatory true; default 1; description "Minimum number of instances of the VNFC based on this VDU that is permitted to exist for this flavour."; Loading @@ -1337,7 +1204,7 @@ submodule etsi-nfv-vnf { } leaf max-number-of-instances { type uint16; mandatory true; default 1; must ". >= ../nfv:min-number-of-instances"; reference "GS NFV IFA011: Section 7.1.8.3, VduProfile information Loading Loading @@ -1498,7 +1365,7 @@ submodule etsi-nfv-vnf { must ". >= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:min-number-of-instances"; mandatory true; default 1; description "Number of instances of VNFC based on this VDU to deploy for this level."; Loading Loading @@ -1795,6 +1662,118 @@ submodule etsi-nfv-vnf { AffinityOrAntiAffinityGroup information element"; } } list indicator { key "id"; leaf id { type string; description "Unique identifier."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf name { type string; description "The human readable name of the VnfIndicator."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf indicator-value { type string; description "Defines the allowed values or value ranges of this indicator."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } leaf source { type enumeration { enum vnf; enum em; enum both; } description "Describe the source of the indicator. The possible values are: • VNF. • EM. • Both. This tells the consumer where to send the subscription request."; reference "GS NFV IFA011: Section 7.1.11.2 VnfIndicator information element"; } description "Declares the VNF indicators that are supported by this VNF (specific to this DF)."; reference "GS NFV IFA011: Section 7.1.8.2 VnfDf information element"; } list supported-vnf-interfaces { key "name"; leaf name { type enumeration { enum vnf-configuration; enum vnf-indicator; } description "Identifies an interface produced by the VNF. Valid values: - VNF_CONFIGURATION - VNF_INDICATOR"; reference "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails information element"; } leaf-list cpd-id { type leafref { path "../../../ext-cpd/id"; } description "References one or more CPDs from which to instantiate external CPs through which interface endpoints on the VNF side can be reached by the VNFM."; reference "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails information element"; } list interface-details { key "key"; leaf key { type string; } leaf value { type string; } } description "Indicates which interfaces the VNF produces and provides additional details on how to access the interface endpoints."; reference "GS NFV IFA011: Section 7.1.8.2 VnfDf information element"; } list monitoring-parameter { key "id"; Loading Loading @@ -2063,7 +2042,23 @@ submodule etsi-nfv-vnf { leaf-list extension { type string; description "'Extension' attributes of VnfInfo that are writeable."; "Additional VNF-specific attributes of VnfInfo that affect the lifecycle management of a VNF instance and that are writeable. For each VNF instance, these attributes are stored persistently by the VNFM and can be queried and modified through the VNFM. These attributes are intended to be consumed by the VNFM or by the lifecycle management scripts during the execution of VNF lifecycle management operations. Modifying these values has no direct effect on the VNF instance; however, modified values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance."; reference "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes information element"; Loading @@ -2071,7 +2066,22 @@ submodule etsi-nfv-vnf { leaf-list metadata { type string; description "'Metadata' attributes of VnfInfo that are writeable."; "Additional VNF-specific attributes of VnfInfo that are writeable and that provide metadata describing the VNF instance. For each VNF instance, these attributes are stored persistently by the VNFM and can be queried and modified through the VNFM. These attributes are intended to provide information to functional blocks external to the VNFM and will not be used by the VNFM or the VNF lifecycle management scripts when executing lifecycle management operations. Modifying these attributes has no effect on the VNF instance. It only affects the attribute values stored by the VNFM."; reference "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes information element"; Loading