You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »


The D-SBC SWe instances are launched on OpenStack with sample Heat templates provided by Sonus. The Life Cycle Agent (LCA) performs the following:

  • LCA is part of the qcow2 image and starts automatically when SWe instance is booted.
  • Orchestrates the initial configuration and activation of the D-SBC SWe instance.    
  • 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.

  • LCA validates the data before activating the SBC application. In the deployments where EMS is used, LCA registers with EMS and downloads the configuration data and installs it on the instance before bringing up the SBC application.

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",
        "GWV4":"<IP_Address>",
        "IPV4":"<IP_Address/Subnet_Prefix>",
        "GWV6" :"<IP_Address>",
        "IPV6":"<IP_Address/Subnet_Prefix>",
        "FIPV4":"<IP_Address>",
},
#  DHCP is implicit 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"
        "GWV4":"<IP_Address>",
        "IPV4":"<IP_Address/Subnet_Prefix>",
        "FIPV4":"<IP_Address>",
  },
  
# JSON for the IP interface Pkt0.111
"IF2":  {
        "Port" :"Pkt0"
        "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",
        "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",
        "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>",},

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>",
"Port": "Pkt1",
"VlanId": "<VLAN_ID_1>",
"IPV4": "<IP_Address/Subnet_Prefix>"
},

"IF4": {
"GWV4": "<IP_Address>",
"Port": "Pkt1",
"VlanId": "<VLAN_ID_2>",
"IPV4": "<IP_Address/Subnet_Prefix>"
},

"IF5": {
"GWV4": "<IP_Address>",
"Port": "Pkt1",
"VlanId": "<VLAN_ID_3>",
"IPV4": "<IP_Address/Subnet_Prefix>"
}


Example of Metadata

#Interface definition for Mgt0 port.
"IF0" : {
        "Port":"Mgt0",
        "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"
        "GWV4":"192.168.100.1",
        "IPV4":"192.168.100.24/24",
  },
  
# JSON for the IP interface Pkt0.2007
"IF2":  {
        "Port" :"Pkt0"
        "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"
        "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",
}    


  • Ensure the alternate IP definitions have the corresponding IF names.
  • 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 primary port (for standalone) and virtual port (for HA) 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",
        "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:

Interface Definition Parameters

 

ParametersDescription
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.

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:

  • True: To consider FIPV4 entity using value provided in the dictionary
  • False: To configure FIPV4 using SMM rules, and ignore the FIPV4 value provided here.

Default value - True

VlanIdID 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"
 }

Alternate IP Definition Parameters

 

ParameterDescription
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.

Format of Userdata for HA

If the CERole parameter is Active/Standby, it represents HA userdata format.

{
 "CERole" : "CERole",
 "CEName" : "CEName",
 "SystemName" : "SystemName",
 "SbcPersonalityType" : "SbcPersonalityType",
 "PeerCEName" : "PeerCEName",
 "PeerCEHa0IPv4Prefix" : "PeerCEHa0IPv4Prefix",
 "PeerCEHa0IPv4Address" : "PeerCEHa0IPv4Address",
 "PeerCEMgt0IPv4Prefix" : "PeerCEMgt0IPv4Prefix",
 "PeerCEMgt0IPv4Address" : "PeerCEMgt0IPv4Address",
 "EmsUsername" : "EmsUsername",
 "EmsPassword" : "EmsPassword",
 "EmsIP" : "EmsIP",
 "EmsDownloadConfig" : "EmsDownloadConfig",
 "EmsPrivateNodeParameters": { "cluster_id": "" , "vnfc_id": "" }
 }

Example of Userdata for HA

If the CERole parameter is Active/Standby, it represents HA userdata format.

{
 "CERole" : "ACTIVE",
 "CEName" : "vsbc1",
 "SystemName" : "vsbcSystem",
 "SbcPersonalityType" : "isbc",
 "PeerCEName" : "vsbc2",
 "PeerCEHa0IPv4Prefix" : "24",
 "PeerCEHa0IPv4Address" : "192.168.100.25",
 "PeerCEMgt0IPv4Prefix" : "24",
 "PeerCEMgt0IPv4Address" : "10.0.0.25",
 "EmsUsername" : "None",
 "EmsPassword" : "None",
 "EmsIP" : "",
 "EmsDownloadConfig" : "False",
 "EmsPrivateNodeParameters": { "cluster_id": "SBC_Cluster" , "vnfc_id": "SSBC_Config1" }
 }

Format of Userdata for Standalone

If the CERole parameter is missing, it represents standalone userdata format.

{
 "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.

{
 "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"}
}

OpenStack Userdata Parameter Description

ParameterLengthFormatDescription

CEName

64

vsbc1

Specifies the actual CE name of the SBC instance. For more information, see System and Instance Naming Convention.

CEName Requirements:

  • Must start with an alphabetic character.
  • Only contain alphabetic characters and/or numbers. No special characters.
  • Cannot exceed 64 characters in length

SystemName

26

vsbcSystem

Specifies the actual system name of the SBC instance. For more information, see System and Instance Naming Convention.

System Requirements:

  • Must start with an alphabetic character.
  • Only contain alphabetic characters and/or numbers. No special characters.
  • Cannot exceed 26 characters in length.

PeerCEName

64

vsbc2

Specifies the name of the peer SBC node. For more information, see System and Instance Naming Convention.

Peer CEName Requirements:

  • Must start with an alphabetic character.
  • Only contain alphabetic characters and/or numbers. No special characters.
  • Cannot exceed 64 characters in length.

PeerCEHa0IPv4Prefix

N/A

24

Specifies the IPv4 routing prefix of the HA port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

PeerCEHa0IPv4Address

N/A

10.1.0.3

Specifies the IPv4 address of the HA port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

PeerCEMgt0IPv4Prefix

N/A

24

Specifies the IPv4 routing prefix of the management port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

PeerCEMgt0IPv4Address

N/A

10.0.0.5

Specifies the IPv4 address of the management port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

PeerCEMgt0IPv6Prefix

N/A

60

Specifies the IPv6 routing prefix of the management port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

PeerCEMgt0IPv6Address

N/A

aaaa:bbbb:cccc:dddd::xx

Specifies the IPv6 address of the management port for the peer SBC node. This parameter is applicable only in case of instance is launched in HA mode.

SbcPersonalityType

N/A

isbc

Specifies the SBC personality type.
Allowed Value:

  • isbc
  • ssbc
  • msbc

EmsUsername

N/A

restuser

Specifies the REST log in credentials of EMS.
Default Value: restuser

EmsPassword

N/A

sonus123

Specifies the REST log in credentials of EMS.
Default Value: sonus123

EmsIP

N/A

For IPv4

  • Standalone EMS IP address as - "aaaa:bbbb:cccc:dddd"

  • Geographical Redundancy EMS IP address as:

    ["aaaa:bbbb:cccc:dddd","aaaa:bbbb:cccc:dddd"]

For IPv6

  • Standalone EMS IP address as - "aaaa:bbbb:cccc:dddd::xx"

  • Geographical Redundancy EMS IP address as:

    ["aaaa:bbbb:cccc:dddd::xx","aaaa:bbbb:cccc:dddd::yy"]

Specifies the EMS instance for IPv4 and IPv6 address.

EmsPrivateNodeParameters

64

N/A

Specifies the EMS private node parameters.
cluster_id - Unique to one specific cluster in a cloud environment which can contain one or more SBC instances.
vnfc_id - Unique ID specified for SBC instance

The cluster ID and vnfc ID both allows hyphen.

EmsDownloadConfig

N/A

True

Whether Configuration needs to be downloaded from EMS.Default value : True
Allowed Value:

  • True
  • False

CERole 

N/A

Active

Assigned role of SBC instance.

Allowed Value:

  • Active
  • Standby

ConfigDownloadName

64

savedMSBCconfiguration1

The SBC configuration name can contain only letters, numbers, dashes (-), apostrophes ('), underscores (_), colons (:) and spaces

 

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:

{
    "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 : 

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:

  • 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.