In the OpenStack environment, Metadata and Userdata are populated automatically by the Heat template when SWe instances are launched through templates. If required, Metadata can be updated using nova APIs. The Metadata and the Userdata are provided in the standard JSON format (.json
file).
Format of Metadata
# JSON for the Mgt0 interface "IF0" : { "Port":"Mgt0", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "GWV6" :"<IP_Address>", "IPV6":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", }, # JSON for the Ha0 interface "IF1" : { "Port" : "Ha0", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", }, # JSON for the IP interface Pkt0.111 "IF2": { "Port" :"Pkt0", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "GWV6" :"<IP_Address>", "IPV6":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", "RNat":"true", "VlanId":"111" }, }, # Secondary IP for Pkt0.111 "AltIP2" : { "IFName":"IF2", "IP": "<IP_Address>", "FIPV4":"<IP_Address>" } # Another Secondary IP for Pkt0.111 "AltIP3" : { "IFName":"IF2", "IP": "<IP_Address>", "FIPV4":"<IP_Address>" } # JSON for the IP interface Pkt0.222 "IF3": { "Port":"Pkt0", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "GWV6" :"<IP_Address>", "IPV6":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", "RNat":"true", "VlanId":"222" }, # Secondary IP for Pkt0.222 "AltIP4" : { "IFName":"IF3", "IP": "<IP_Address>", "FIPV4":"<IP_Address>", }, # JSON for the IP interface Pkt1.333 "IF4": { "Port":"Pkt1", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "GWV6" :"<IP_Address>", "IPV6":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", "RNat":"true", "VlanId":"333" }, # Secondary IP for Pkt1.333 "AltIP5" : { "IFName":"IF4", "IP": "<IP_Address>", "FIPV4":"<IP_Address>" }, ClusterIp: "<RG_IP>"
If a port needs to be part of multiple VLANs, the IF
definition must be repeated for corresponding VLAN IDs as:
"IF3": { "GWV4": "<IP_Address>", "DHCP": "<Dhcp_flag>", "Port": "Pkt1", "VlanId": "<VLAN_ID_1>", "IPV4": "<IP_Address/Subnet_Prefix>" }, "IF4": { "GWV4": "<IP_Address>", "DHCP": "<Dhcp_flag>", "Port": "Pkt1", "VlanId": "<VLAN_ID_2>", "IPV4": "<IP_Address/Subnet_Prefix>" }, "IF5": { "GWV4": "<IP_Address>", "DHCP": "<Dhcp_flag>", "Port": "Pkt1", "VlanId": "<VLAN_ID_3>", "IPV4": "<IP_Address/Subnet_Prefix>" }
Example of Metadata
#Interface definition for Mgt0 port. "IF0" : { "Port":"Mgt0", "DHCP": "False", "GWV4":"10.0.0.1", "IPV4":"10.0.0.24/24", "GWV6" :"fd00:10:2b50:4000::1", "IPV6":"fd00:10:2b50:4000::1/64", "FIPV4":"10.14.52.108", }, # JSON for the Ha0 interface "IF1" : { "Port" : "Ha0", "DHCP": "False", "GWV4":"192.168.100.1", "IPV4":"192.168.100.24/24", }, # JSON for the IP interface Pkt0.2007 "IF2": { "Port" :"Pkt0", "DHCP": "False", "GWV6" :"fd00:10:6b21:2007::1", "IPV6":"fd00:10:6b21:2007::1001/64", "VlanId":"2007" }, # JSON for the IP interface Pkt1.2008 "IF3": { "Port" :"Pkt1", "DHCP": "False", "GWV6" :"fd00:10:6b21:2008::1", "IPV6":"fd00:10:6b21:2008::1001/64", "VlanId":"2008" }, }, # Secondary IP for Pkt0.2007 "AltIP2" : { "IFName":"IF2", "IP": "fd00:10:6b21:2007::1002", } # Another Secondary IP for Pkt0.2007 "AltIP3" : { "IFName":"IF2", "IP": "fd00:10:6b21:2007::1003", }, ClusterIp: "192.168.100.25"
IF
dictionary name is any name prefixed by IF
.Example : IF-ABC
, IFASD, IF_AS,
and so on.
The name for alternate IP address on a port can be constructed with port/vlan information.
Example: The second alternate IP address for pkt0's first VLAN IP interface can be named as PKT0_V01_ALT_IP_02.
The current maximum length of the name is 255 characters.
This section describes about the individual parameters of the metadata passed to the server
Interface Definition
"IF3": { "Port": "Pkt0", "DHCP": "False", "GWV4": "10.0.3.1", "IPV4": "10.0.3.187/24", "GWV6": "fd00:10:6b50:4350::6", "IPV6": "fd00:10:6b50:4350::69/64", "FIPV4": "54.32.21.12", "RNat": "true", "VlanId":"222" }
Following are the elements which constitutes an interface definition:
Parameters | Description |
---|---|
IFX | Interface definition name This element is the name of the dictionary which contains the information of the port. Here, "IF" is a key word, and it can be appended with any name/identifier. Example: IF_Pkt0, IFMgt0, IF-MediaPort, etc. Note: The name provided for Interface definition is used in Alternate IP definition. A link is formed between the two definitions based on the Interface definition name. |
DHCP | This flag is used to enable or disable the DHCP. If the DHCP is set to False, you need to provide fixed IPs for each ports. |
Port | Port Name One of – Mgt0, Ha0, Pkt0, Pkt1. This indicates the actual port to which the definition belongs to. |
IPV4 | Primary IP on the Private Port + Prefix - V4 Should be provided only in case of DHCP disabled on the port requires V4 address. Provide IP address and prefix. Format : 10.54.116.53/23 |
GWV4 | Gateway IP V4 Should be provided only in case of DHCP disabled on the port requires V4 address. Note : GWV4 and IPV4 are interdependent, both have to be provided in noDHCP V4 scenario. |
IPV6 | IP on the Private Port + Prefix - V6 Should be provided only in case of DHCP disabled on the port requires V6 address. Provide IP address and prefix. Format : fd00:10:6b50:4350::69/64 |
GWV6 | Gateway IP V Should be provided only in case of DHCP disabled on the port requires V6 address. Note : GWV6 and IPV6 are interdependent, both have to be provided in noDHCP V6 scenario. |
FIPV4 | Floating IP associated on the Port Provide when the Floating IP is associated ( in DHCP enabled and disabled scenario) with the port. |
RNat | Reverse NAT flag Values:
Default value - True |
VlanId | ID of the port VLAN. |
Alternate IP Definition
Alternate IP definition contains the information of additional IP addresses associated with the port. For each additional IP address added to the port, there has to be corresponding ALT IP definition. The maximum number of ALT IP (alternate IP address) that can be associated with a port is restricted to 14.
"AltIP3" : { "IFName":"IF2", "IP": "10.2.0.7", "FIPV4":"aaa.bbb.ccc.eee" }
Parameter | Description |
---|---|
AltIP3 | Alternate IP (ALT IP) definition name/identifier This is the name provided to the additional IP address associated with a port. This identifier does not have any restriction on naming. Following are some example for ALT IP identifier : Alt_Pkt0_AX, ALT_PKT0_01, signaling_Pkt0_05. |
IFName | Interface definition Name This field indicates the association between the ALT IP address and the interface definition. If the user changes the interface definition name (i.e IFX name), the user should simultaneously change the IFName value in this definition. Otherwise, the link between ALT IP and it's port is lost. |
IP | IPV4 or IPV6 address This field contains the additional IP address that needs to be associated with the port. It can contain either V4 or V6 address, based on what version the parent Interface dictionary contains. If, say, IF definition has V4 address, the ALT IP definition also should have only V4 address. Same logic goes for V6 addresses. In case of dual stack scenario, since, Interface dictionary has both V4 and V6 addresses, the ALT IP definition can also have V4 and V6 addresses. But both have to be defined in separate ALT dictionary, pointing to it's parent dictionary. |
FIPV4 | Floating IP on the Alternate IP If a floating IP is associated with the ALT (alternate/additional) IP, the value against this field must contain the floating IP. Note: The RNat flag which is defined in Interface dictionary, is an interface-wide entity. If the RNat flag is disabled ( value = False ) in interface dictionary, the FIP value provided in the ALT IP definition is not considered while populating the metaVariables for this port. |
The IP Addresses of the SBC Redundancy Group (RG). The SBC Redundancy Group (RG) consists of one or more SBC SWe instances. All the instances in a RG must have homogeneous resource allocation, configuration and personality. Each SBC SWe instance including standby maintains its own configuration DB, logs, events, and alarms.
ClusterIp: "<RG_IP>"
Parameter | Description |
---|---|
ClusterIp | The IP address of the SBC redundancy group. |
Format of Userdata
{ "CERole" : "CERole", "CEName" : "CEName", "SystemName" : "SystemName", "SbcPersonalityType" : "SbcPersonalityType", "EmsUsername" : "EmsUsername", "EmsPassword" : "EmsPassword", "EmsIP" : "EmsIP", "EmsDownloadConfig" : "EmsDownloadConfig", "ConfigDownloadName" : "ConfigDownloadName", "EmsPrivateNodeParameters" : { "cluster_id": "","vnfc_id":""} }
Example of Userdata
{ "CERole" : "ACTIVE", "CEName" : "vsbc1", "SystemName" : "vsbcsystem", "SbcPersonalityType" : "msbc", "EmsUsername" : "restuser", "EmsPassword" : "sonus123", "EmsIP" : [ "10.54.58.184", "10.54.58.185" ], "EmsDownloadConfig" : "True", "ConfigDownloadName" : "savedMSBCconfiguration", "EmsPrivateNodeParameters": { "cluster_id": "MSBC" , "vnfc_id": "Msbc1_N1" } }
Meta Variables
Interface related information (contents of Interface and ALT IP definition) provided in userdata and/or metadata is flattened down into key-value pairs, which would be used for CLI configuration.
A sample metavariable table for the 4:1 M-SBC is viewed through the following CLI command:
set addressContext default ipInterfaceGroup LIG1 ipInterface LIG1_V4 ipVarV4 IF2.IPV4 prefixVarV4 IF2.PrefixV4 vlanTagVar IF5.VlanId portName pkt0 state enabled mode inService set addressContext default ipInterfaceGroup LIG2 ipInterface LIG2_V4 ipVarV4 IF3.IPV4 prefixVarV4 IF3.PrefixV4 ipPublicVarV4 IF3.FIPV4 portName pkt1 state enabled mode inService set addressContext default zone ZONE_AS sipSigPort 3 ipInterfaceGroup LIG2 ipVarV4 IF3.IPV4 ipPublicVarV4 IF3.FIPV4 state enabled set system dsbc dsbcSigPort ipInterfaceGroup SVzIMSMediaIPv6 ipVarV6 PKT0_V02_ALT_IP_01.IP mode inService state enabled