Add_workflow_for_techpubs | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
The D-SBC SWe instances are launched on OpenStack with sample Heat templates provided by Sonus. The Life Cycle Agent (LCA) performs the following:
Once the SWe instance boots up, Cloud-init retrieves Metadata and Userdata information associated with this instance from the config-drive and provides it to the LCA.
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
|
Panel | ||||
---|---|---|---|---|
In this section:
|
In OpenStack environment, Metadata and Userdata is populated automatically by the Heat template when SBC SWe cloud instances are launched through templates. If required, Metadata can be updated using nova APIs. The Metadata and the Userdata are provided in the JSON format .
Code Block |
---|
# Mgt0 interface
"IF0" : {
"Port":"Mgt0",
"DHCP": "<Dhcp_flag>",
"GWV4":" |
Code Block |
# JSON for the Mgt0 interface "IF0" : { "Port":"Mgt0", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "GWV6" :"<IP_Address>", "IPV6":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", }, # DHCP is # implicitHa0 when IP address(es) and gateway fields field value is empty. Floating IP and reverseNAT is optional. If DHCP is used, value of the IPAddr and Gw should be "". # JSON for the Ha0 interface "IF1" : { "Port" : "Ha0"interface "IF1" : { "Port" : "Ha0", "DHCP": "<Dhcp_flag>", "GWV4":"<IP_Address>", "IPV4":"<IP_Address/Subnet_Prefix>", "FIPV4":"<IP_Address>", }, # JSONIP for the IP interface 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:
Code Block |
---|
"IF3": { "GWV4": "<IP_Address>", "PortDHCP": "Pkt1<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>" } |
Pagebreak
Code Block | ||
---|---|---|
| ||
#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" |
Note |
---|
Example :
Example: The second alternate IP address for pkt0's first VLAN IP interface can be named as
|
This section describes about the individual parameters of the metadata passed to the server:
Code Block |
---|
"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 The elements which constitutes an interface definition:
Caption | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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 IP for each ports. | ||
Port | Port Name One of – Mgt0, Ha0, Pkt0, Pkt1. This indicates | 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 - V4v4 Should be provided only in case of DHCP disabled on the port requires V4 address. Provide IP address and prefix. Format Example: 10.54.116.53/23 | ||
GWV4 | Gateway IP V4v4 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 - V6v6 Should be provided only in case of DHCP disabled on the port requires V6 v6 address. Provide IP address and prefix. Format Example : fd00:10:6b50:4350::69/64 | ||
GWV6 | Gateway IP Vv6 Should be provided only in case of DHCP disabled on the port requires V6 v6 address. Note : GWV6 and IPV6 are interdependent, both have to be provided in noDHCP V6 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 contains the information of an 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.
...
Caption | ||||||
---|---|---|---|---|---|---|
| ||||||
|
Parameter | Description |
---|---|
AltIP3 | Alternate IP (ALT IP) definition name/identifier . Alternate IP address associated with a port. This identifier does not have any restriction on naming. Example for ALT IP 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 Indicates the association between the ALT IP address and the interface definition. When the user changes the interface definition name (i.e IFX name), the user shouldmust 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 additionalIP 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 User can type v4 or v6 address, based on what version the parent interface dictionary contains. When IF definition has v4/v6 address, the ALT IP definition also must have only v4/v6 address. 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 Interfaceinterface 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. |
Format of Userdata for HA
If the CERole parameter is Active/Standby, it represents HA userdata format.
The parameter ClusterIp
is used for Redundancy Group (RG) formation during startup. You must pass HA0
IP of one of the nodes of RG as ClusterIp parameter.
Code Block |
---|
ClusterIp: "<RG_IP>" |
Caption | ||||||
---|---|---|---|---|---|---|
| ||||||
|
Parameter | Description |
---|---|
ClusterIp | ClusterIP is used for Redundancy Group (RG) formation on startup. |
Code Block | ||
---|---|---|
{
"CERole" : "CERole",
" | ||
Code Block | ||
| ||
{ "CERole" : "CERole", "CEName" : "CEName", "SystemName" : "SystemName", "SbcPersonalityType" : "SbcPersonalityType", "PeerCENameEmsUsername" : "PeerCENameEmsUsername", "PeerCEHa0IPv4PrefixEmsPassword" : "PeerCEHa0IPv4PrefixEmsPassword", "PeerCEHa0IPv4AddressEmsIP" : "PeerCEHa0IPv4AddressEmsIP", "PeerCEMgt0IPv4PrefixEmsDownloadConfig" : "PeerCEMgt0IPv4PrefixEmsDownloadConfig", "PeerCEMgt0IPv4AddressConfigDownloadName" : "PeerCEMgt0IPv4AddressConfigDownloadName", "EmsUsername" : "EmsUsername", "EmsPassword" : "EmsPassword", "EmsIP" : "EmsIP", "EmsDownloadConfig" : "EmsDownloadConfig", "EmsPrivateNodeParameters"EmsPrivateNodeParameters" : { "cluster_id": "" , "vnfc_id": "" } } |
Note |
---|
Example of Userdata for HA
If the CERole parameter is Active/Standby, it represents HA userdata format.
The Userdata JSON is present under the write_file directory |
Code Block | ||
---|---|---|
{
"CERole" | ||
Code Block | ||
| ||
{ "CERole" : "ACTIVE", "CEName" : "vsbc1", "SystemName" : "vsbcSystemvsbcsystem", "SbcPersonalityType" : "isbcmsbc", "PeerCEName" : "vsbc2", "PeerCEHa0IPv4Prefix"EmsUsername" : "24restuser", "PeerCEHa0IPv4AddressEmsPassword" : "192.168.100.25", "PeerCEMgt0IPv4Prefix" : "24", "PeerCEMgt0IPv4Address" : "10.0.0.25", "EmsUsername" : "None", "EmsPassword" : "Nonesonus123", "EmsIP" : [ "10.54.58.184", "10.54.58.185" ], "EmsDownloadConfig" : "True", "False"ConfigDownloadName" : "savedMSBCconfiguration", "EmsPrivateNodeParameters": { "cluster_id": "SBC_ClusterMSBC" , "vnfc_id": "SSBCMsbc1_Config1N1" } } |
Format of Userdata for Standalone
If the CERole parameter is missing, it represents standalone userdata format.
Code Block |
---|
{
"CEName" : "CEName",
"SystemName" : "SystemName",
"SbcPersonalityType" : "SbcPersonalityType",
"EmsUsername" : "EmsUsername",
"EmsPassword" : "EmsPassword",
"EmsIP" : "EmsIP",
"EmsDownloadConfig" : "EmsDownloadConfig",
"ConfigDownloadName" : "ConfigDownloadName",
"EmsPrivateNodeParameters" : { "cluster_id": "","vnfc_id":""}
} |
Example of Userdata for Standalone
If the CERole parameter is missing, it represents standalone userdata format.
Code Block |
---|
{
"CEName" : "vsbc1",
"SystemName" : "vsbcSystem",
"SbcPersonalityType" : "isbc",
"EmsUsername" : "restuser",
"EmsPassword" : "sonus1",
"EmsIP" : "10.54.58.23",
"EmsDownloadConfig" : "True",
"ConfigDownloadName" : "savedMSBCconfiguration1",
"EmsPrivateNodeParameters" : { "cluster_id": "Cluster_SSBC","vnfc_id":"SSBC_Config1"}
} |
Div | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The Heat templates launch two SWe instance for a HA pair (one for active and one for standby). For a HA pair, SBC requires a unique shared "system-id" (for active and standby), this is passed as the user-data. It also requires the "cluster-id" and the EMS IP address as the user-data for any SBC SWe instance booted. The cluster-id
is unique to one specific cluster in a cloud environment which can contain one or more SBC SWe instances. The Heat template indicates the role of the SBC (standalone or HA pair) in the user-data when any SBC SWe instance is booted.
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.
MetaVariable dictionary is populated in the file /opt/sonus/instanceMetaVar.json and the corresponding XML file is injected into the CDB, is located at /opt/sonus/sbx/lca/sonusMetaVariables.xml
If the interface dictionary is not provided in userdata/metadata, it would be assumed that all the interface are created from subnets which have DHCP enabled. The following is populated in /opt/sonus/instanceMetaVar.json:
Code Block |
---|
{
"IF3.Port": "Pkt1",
"IF2.Port": "Pkt0",
"IF1.Port": "Ha0",
"IF0.Port": "Mgt0"
} |
The IP address is obtained from DHCP query for respective interface. The IP address, Gateway address, Subnet prefix is directly populated in the /opt/sonus/sbx/lca/sonusMetaVariables.xml file.
The metaVariables can be viewed from the CLI command as shown below :
Code Block |
---|
admin@msbcHA01> show table system metaVariable
NAME VALUE
--------------------------------------------------
IF0.GWV6 FD00:10:6B50:43A0::1
IF0.IPV6 FD00:10:6B50:43A0::F9
IF0.Port Mgt0
IF1.GWV4 10.10.11.1
IF1.IPV4 10.10.11.57
IF1.Port Ha0
IF2.GWV6 FD00:10:6B50:4D74::1
IF2.IPV6 FD00:10:6B50:4D74::F9
IF2.Port Pkt0
IF3.GWV6 FD00:10:6B50:4D70::1
IF3.IPV6 FD00:10:6B50:4D70::31
IF3.Port Pkt0
IF4.GWV4 10.54.226.129
IF4.IPV4 10.54.226.178
IF4.Port Pkt1
IF5.GWV4 10.54.226.193
IF5.IPV4 10.54.226.242
IF5.Port Pkt1
IF2.VlanId 313
IF3.VlanId 309
IF4.VlanId 311
IF5.VlanId 312
IF0.PrefixV6 60
IF1.PrefixV4 24
IF2.PrefixV6 64
IF3.PrefixV6 64
IF4.PrefixV4 26
IF5.PrefixV4 26
PKT0_V01_ALT_IP_01.IP FD00:10:6B50:4D74::FA
PKT0_V02_ALT_IP_01.IP FD00:10:6B50:4D70::32
PKT1_V01_ALT_IP_01.IP 10.54.226.179
PKT1_V02_ALT_IP_01.IP 10.54.226.243
PKT0_V01_ALT_IP_01.IFName IF2
PKT0_V02_ALT_IP_01.IFName IF3
PKT1_V01_ALT_IP_01.IFName IF4
PKT1_V02_ALT_IP_01.IFName IF5
LOGICAL_MGMT_IP.IPV6 fd00:10:6b50:43a0::a6
LOGICAL_MGMT_IP.IFName IF0
|
These metaVariables are used to make configurations, a sample of it is as shown below:
Caption | ||||
---|---|---|---|---|
| ||||
|
Parameter | Length | Example | Description |
---|---|---|---|
CERole | N/A | Active | Assigned role of SBC instance. Allowed Value:
|
CEName | 64 | vsbc1 | Specifies the actual CE name of the SBC instance. For more information, see System and Instance Naming Conventions. CEName Requirements:
|
SystemName | 26 | vsbcSystem | Specifies the actual system name of the SBC instance. For more information, see System and Instance Naming Conventions. System Requirements:
|
SbcPersonalityType | N/A | ssbc | Specifies the SBC personality type.
|
EmsUsername | N/A | restuser | Specifies the REST log in credentials of EMS. |
EmsPassword | N/A | sonus123 | Specifies the REST log in credentials of EMS. |
EmsIP | N/A | For IPv4
For IPv6
| Specifies the EMS instance for IPv4 and IPv6 address. |
EmsPrivateNodeParameters | 64 | N/A | Specifies the EMS private node parameters. The cluster ID and vnfc ID both allows hyphen. |
EmsDownloadConfig | N/A | True | Whether Configuration needs to be downloaded from EMS. Default value: True
|
ConfigDownloadName | 64 | savedMSBCconfiguration1 | The SBC configuration name can contain only letters, numbers, dashes (-), apostrophes ('), underscores (_), colons (:) and spaces |
Interface related information (contents of Interface and ALT IP definition) provided in userdata and/or metadata is flattened down into key-value pairs, which is used for CLI configuration.
A sample metavariable table for the 4:1 M-SBC is viewed through the following CLI command:
Caption | ||||
---|---|---|---|---|
| ||||
Code Block |
---|
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 SRRIMSMediaIPv6 ipVarV6 |
...
PKT0_V02_ALT_IP_01.IP mode inService state enabled |
...
Pagebreak |
---|