A dual stack network allows you to assign multiple IP addresses. These multiple IP addresses can be assigned on different
subnets to a given interface within a VNF deployment using ESC.
ESC supports the following for dual stack:
-
Configuring the network and list of subnet
-
Configuring the network and list of subnet and ip address
-
Configuring the network and list of ip address ( no subnet)
-
Specifying the network and list of subnet/ip ( same subnet but different ip)
Note |
Currently, ESC supports dual stack only on OpenStack. ESC supports end-to-end IPv6 for OpenStack deployments.
|
A new container element named addresses is added to the Interface. This container holds a list of address elements. An address
element must have an address_id (key). The subnet and fixed-ip address fields are optional, but you must specify either one.
The container address is as follows:
container addresses {
list address {
key "address_id";
leaf address_id {
description "Id for the address in address list.";
type uint16;
mandatory true;
}
leaf subnet {
description "Subnet name or uuid for allocating IP to this port";
type types:escnetname;
}
leaf ip_address {
description "Static IP address for this specific subnet";
type types:escipaddr;
must "../../../../../scaling/max_active = 1"
{
error-message "Only single VM per group supported with multiple address option.";
}
}
}
}
Dual stack now supports KPI monitoring. A new child element address_id has been added to the metric_collector element. This
accepts a value which points to an address within the specified nicid to be used for KPI monitoring. That is, it allows one
of the addresses defined beneath an interface to be used for KPI monitoring.
…
<interface>
<nicid>1</nicid>
<network>demo-net</network>
<addresses>
<address>
<address_id>0</address_id>
<subnet>demo-subnet</subnet>
</address>
</addresses>
</interface>
<kpi_data>
<kpi>
<event_name>VM_ALIVE</event_name>
<metric_value>1</metric_value>
<metric_cond>GT</metric_cond>
<metric_type>UINT32</metric_type>
<metric_occurrences_true>5</metric_occurrences_true>
<metric_occurrences_false>5</metric_occurrences_false>
<metric_collector>
<type>ICMPPing</type>
<nicid>1</nicid>
<address_id>0</address_id>
<poll_frequency>10</poll_frequency>
<polling_unit>seconds</polling_unit>
<continuous_alarm>false</continuous_alarm>
</metric_collector>
</kpi>
</kpi_data>
...
Note |
The address_id under the metric_collector element must be the same as one of the address_id beneath the interface.
|
Dual stack interfaces can now be used in day-0 variable substitution. This means the ability to substitute the values from
the multiple addresses defined under a single interface. Day 0 configuration is defined in the datamodel under the config_data
tag.
In case of dual stack with multiple IP addresses, the variables are in the form NICID_<n>_<a>_<PROPERTY> where:
The list of possible day-0 substitution variables from dual stack is:
NICID_n_a_IP_ALLOCATION_TYPE
|
string containing FIXED | DHCP
|
ipv4 or ipv6
|
NICID_n_a_IP_ADDRESS
|
IP address
|
ipv4 or ipv6
|
NICID_n_a_GATEWAY
|
Gateway address
|
ipv4 or ipv6
|
NICID_n_a_CIDR_ADDRESS
|
CIDR prefix address
|
ipv4 or ipv6
|
NICID_n_a_CIDR_PREFIX
|
Integer with CIDR prefix-length
|
ipv4 or ipv6
|
NICID_n_a_NETMASK
|
If an ipv4 CIDR address and prefix are present, ESC will automatically calculate and populate the netmask variable. This is
not substituted in the case of an IPv6 address and should not be used.
|
ipv4 only
|
For information on day-0 confirguration for single IP address, see Day Zero Configuration.
The template file defined in the config_data with day-0 configurations is as follows:NICID_0_NETWORK_ID=${NICID_0_NETWORK_ID}
NICID_0_MAC_ADDRESS=${NICID_0_MAC_ADDRESS}
NICID_0_0_IP_ALLOCATION_TYPE=${NICID_0_0_IP_ALLOCATION_TYPE}
NICID_0_0_IP_ADDRESS=${NICID_0_0_IP_ADDRESS}
NICID_0_0_GATEWAY=${NICID_0_0_GATEWAY}
NICID_0_0_CIDR_ADDRESS=${NICID_0_0_CIDR_ADDRESS}
NICID_0_0_CIDR_PREFIX=${NICID_0_0_CIDR_PREFIX}
NICID_0_0_NETMASK=${NICID_0_0_NETMASK}
NICID_0_1_IP_ALLOCATION_TYPE=${NICID_0_1_IP_ALLOCATION_TYPE}
NICID_0_1_IP_ADDRESS=${NICID_0_1_IP_ADDRESS}
NICID_0_1_GATEWAY=${NICID_0_1_GATEWAY}
NICID_0_1_CIDR_ADDRESS=${NICID_0_1_CIDR_ADDRESS}
NICID_0_1_CIDR_PREFIX=${NICID_0_1_CIDR_PREFIX}
The datamodel is as follows:
<?xml version="1.0" encoding="ASCII"?>
<esc_datamodel xmlns="http://www.cisco.com/esc/esc">
<tenants>
<tenant>
<name>dep-tenant</name>
<deployments>
<deployment>
<name>cirros-dep</name>
<vm_group>
<name>Grp1</name>
<bootup_time>600</bootup_time>
<recovery_wait_time>30</recovery_wait_time>
<flavor>Automation-Cirros-Flavor</flavor>
<image>Automation-Cirros-Image</image>
<interfaces>
<interface>
<!-- No dual stack support on mgmt interface in ESC 4.1 -->
<nicid>0</nicid>
<network>my-network</network>
</interface>
<interface>
<nicid>1</nicid>
<network>ent-network1</network>
<addresses>
<address>
<!-- IPv4 Dynamic -->
<address_id>0</address_id>
<subnet>v4-subnet_A</subnet>
</address>
<address>
<!-- IPv6 Dynamic -->
<address_id>1</address_id>
<subnet>v6-subnet_B</subnet>
</address>
</addresses>
</interface>
<interface>
<nicid>2</nicid>
<network>ent-network2</network>
<addresses>
<address>
<!-- IPv4 Static -->
<address_id>0</address_id>
<subnet>v4-subnet_C</subnet>
<ip_address>172.16.87.8</ip_address>
</address>
<address>
<!-- IPv6 Static -->
<address_id>1</address_id>
<subnet>v6-subnet_D</subnet>
<ip_address>fd07::110</ip_address>
</address>
</addresses>
</interface>
<interface>
<nicid>3</nicid>
<network>ent-network3</network>
<addresses>
<address>
<!-- Only ip config - ipv6 but no subnet -->
<address_id>0</address_id>
<ip_address>fd07::110</ip_address>
</address>
<address>
<!-- Only ip config - ipv4 but no subnet -->
<address_id>1</address_id>
<ip_address>172.16.88.9</ip_address>
</address>
</addresses>
</interface>
<interface>
<nicid>4</nicid>
<network>ent-network4</network>
<addresses>
<address>
<!-- ipv4 same subnet as address_id 6 -->
<address_id>0</address_id> //
<subnet>v4-subnet_F</subnet>
<ip_address>172.16.86.10</ip_address>
</address>
<address>
<!-- ipv4 same subnet as id 5 -->
<address_id>1</address_id>
<subnet>v4-subnet_F</subnet>
<ip_address>172.16.86.11</ip_address>
</address>
</addresses>
</interface>
</interfaces>
<kpi_data>
...
After successful deployment using multiple IPs, ESC provides a list of addresses as notification, or opdata.
A list of multiple <address> elements under the parent <interface> element containing the following:
-
address_id—the address id specified in the input XML
-
subnet element—subnet name or uuid
-
ip_address element—the port's assigned IP on that subnet
-
prefix—the subnet CIDR prefix
-
gateway—the subnet gateway address
-
ESC Static IP support
Notification:
<vm_id>1834124d-b70b-41b9-9e53-fb55d7c901f0</vm_id>
<name>jenkins-gr_g1_0_e8bc9a81-4b9a-437a-807a-f1a9bbc2ea3e</name>
<generated_name>jenkins-gr_g1_0_e8bc9a81-4b9a-437a-807a-f1a9bbc2ea3e</generated_name>
<host_id>dc380f1721255e2a7ea15932c1a7abc681816642f75276c166b4fe50</host_id>
<hostname>my-server</hostname>
<interfaces>
<interface>
<nicid>0</nicid>
<type>virtual</type>
<vim_interface_name>jenkins-gr_g1_0_e8bc9a81-4b9a-437a-807a-f1a9bbc2ea3e</vim_interface_name>
<port_id>4d57d4a5-3150-455a-ad39-c32fffbb10b1</port_id>
<mac_address>fa:16:3e:d2:50:a5</mac_address>
<network>45638651-2e92-45fb-96ce-9efdd9ea343e</network>
<address>
<address_id>0<address_id>
<subnet>6ac36430-4f58-454b-9dc1-82f7a796e2ff</subnet>
<ip_address>172.16.0.22</ip_address>
<prefix>24</prefix>
<gateway>172.16.0.1</gateway>
</address>
<address>
<address_id>1<address_id>
<subnet>8dd9f501-19d4-4782-8335-9aa9fbd4dab9</subnet>
<ip_address>2002:dc7::4</ip_address>
<prefix>48</prefix>
<gateway>2002:dc7::1</gateway>
</address>
<address>
<address_id>2<address_id>
<subnet>a234501-19d4-4782-8335-9aa9fbd4caf6</subnet>
<ip_address>172.16.87.8</ip_address>
<prefix>20</prefix>
<gateway>172.16.87.1</gateway>
</address>
</interface>
Sample opdata:
<interfaces>
<interface>
<nicid>0</nicid>
<type>virtual</type>
<vim_interface_name>jenkins-gr_g1_0_e8bc9a81-4b9a-437a-807a-f1a9bbc2ea3e</vim_interface_name>
<port_id>4d57d4a5-3150-455a-ad39-c32fffbb10b1</port_id>
<mac_address>fa:16:3e:d2:50:a5</mac_address>
<network>45638651-2e92-45fb-96ce-9efdd9ea343e</network>
<address>
<address_id>0</address_id>
<subnet>6ac36430-4f58-454b-9dc1-82f7a796e2ff</subnet>
<ip_address>172.16.0.22</ip_address>
<prefix>24</prefix>
<gateway>172.16.0.1</gateway>
</address>
<address>
<address_id>1</address_id>
<subnet>8dd9f501-19d4-4782-8335-9aa9fbd4dab9</subnet>
<ip_address>2002:dc7::4</ip_address>
<prefix>48</prefix>
<gateway>2002:dc7::1</gateway>
</address>
</interface>
</interfaces>
You can also see that the day-0 substitution values are replaced in the output data. Sample output data with the values populated
in the day-0 configuration is as follows:
NICID_0_NETWORK_ID=45638651-2e92-45fb-96ce-9efdd9ea343e
NICID_0_MAC_ADDRESS=fa:16:3e:d2:50:a5
NICID_0_0_IP_ALLOCATION_TYPE=DHCP
NICID_0_0_IP_ADDRESS=172.16.0.22
NICID_0_0_GATEWAY=172.16.0.1
NICID_0_0_CIDR_ADDRESS=172.16.0.0
NICID_0_0_CIDR_PREFIX=24
NICID_0_0_NETMASK=255.255.255.0
NICID_0_1_IP_ALLOCATION_TYPE=DHCP
NICID_0_1_IP_ADDRESS=2002:dc7::4
NICID_0_1_GATEWAY=2002:dc7::1
NICID_0_1_CIDR_ADDRESS=2002:dc7::/48
NICID_0_1_CIDR_PREFIX=48
Dual Stack with Static IP Support
ESC supports dual stack with static IP support. As part of the initial configuration the user can provide the subnet and IP
to be configured.
Note |
ESC supports static IP only when the scaling is false or minimum /maximum =1.
|
When you create a VM with out-of-band network, and specify a list of subnets with static IP (the network has multiple subnets),
then ESC applies both subnet and the corresponding static IP.
In the example below, two subnets (ipv4 and ipv6 ) are added to a single interface.
<?xml version="1.0" encoding="ASCII"?>
<esc_datamodel xmlns="http://www.cisco.com/esc/esc">
<tenants>
<tenant>
<name>dep-tenant</name>
<deployments>
<deployment>
<name>cirros-dep</name>
<vm_group>
<name>Grp1</name>
<bootup_time>600</bootup_time>
<recovery_wait_time>30</recovery_wait_time>
<flavor>Automation-Cirros-Flavor</flavor>
<image>Automation-Cirros-Image</image>
<interfaces>
<interface>
<nicid>0</nicid>
<network>ent-network2</network>
<addresses>
<address>
<!-- IPv4 Static -->
<address_id>0</address_id>
<subnet>v4-subnet_C</subnet>
<ip_address>172.16.87.8</ip_address>
</address>
<address>
<!-- IPv6 Static -->
<address_id>1</address_id>
<subnet>v6-subnet_D</subnet>
<ip_address>fd07::110</ip_address>
</address>
</addresses>
</interface>
</interfaces>
<kpi_data>
For information on deploying VNFs, see Deploying Virtual Network Functions on OpenStack.