Scaling NAT address pools

BMC Network Automation allows scaling of Network Address Translation (NAT) pools in a network container by adding additional pools to the container using the same name for the pools, but specifying a unique link ID, thereby creating a chain of pools. A new pool can be added to a chain using the BMC Network Automation reprovision operation and acquired using the BMC Cloud Lifecycle Management reprovision or modify operations.

Specifying a NAT pool chain

The network container blueprint author can specify a NAT pool chain in a network container blueprint by defining address pool blueprints that are tagged with the same name, but use unique linkIds tags. An address pool blueprint with a linkId tag set to _0_ or an undefined linkId tag identifies the head pool in a chain. When you provisioning a new network container, you are only required to specify addressing overrides for the head pool. The trailing pools in a chain can remain unacquired. The trailing pools can be acquired at a later stage, whenever scaling of NAT pools is required.

The following example shows a sample addressPoolBlueprint schema implementation that specifies a NAT pool chain.

<addressPoolBlueprint>
    <condition>(-EXISTS- container.nicSegments[Access])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <name>Access Pool</name>
    <addressSpaceBlueprintName>Access_Space</addressSpaceBlueprintName>
    <natPoolName>External</natPoolName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <linkId>0</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>External_Space</addressSpaceBlueprintName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <linkId>1</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>External_Space</addressSpaceBlueprintName>
</addressPoolBlueprint>

This example defines a NAT pool chain for pool named External. The address pool blueprint with a linkId tag set to 0 identifies head pool in chain. The address pool blueprint with a linkId tag set to 1 identifies the trailing pool in the chain. Note that only trailing pools can have an unspecified default pool size. When you provision a new container using this sample network container blueprint, you are not required to specify overrides for the trailing pool. The trailing pool remains in unacquired state. Later, when scaling of the External pool is required, the trailing pool can be acquired using a modify operation where pool size is specified using overrides.

Scaling of NAT pools using a reprovision operation

This topic provides an overview of how to scale NAT pools using a reprovision operation.

See Reprovisioning network containers for more information about reprovisioning.

<revisionNum>0</revisionNum>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nicSegments[Access])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <name>Access Pool</name>
    <addressSpaceBlueprintName>Access_Space</addressSpaceBlueprintName>
    <natPoolName>External</natPoolName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <linkId>0</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>External_Space</addressSpaceBlueprintName>
</addressPoolBlueprint>

If the original network container blueprint used to provision a network container did not define a pool chain as shown above, and scaling of NAT pool is required, a new address pool blueprint can be added to the chain in a new revision of the network container blueprint. The network container can then be reprovisioned with the new revision of the network container blueprint. The example below shows a snippet from the new revision of the network container blueprint

<revisionNum>1</revisionNum>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nicSegments[Access])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <name>Access Pool</name>
    <addressSpaceBlueprintName>Access_Space</addressSpaceBlueprintName>
    <natPoolName>External</natPoolName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <linkId>0</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>External_Space</addressSpaceBlueprintName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <linkId>1</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>New_External_Space_1</addressSpaceBlueprintName>
</addressPoolBlueprint>
<addressPoolBlueprint>
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPoolSize>254</defaultPoolSize>
    <linkId>2</linkId>
    <name>External</name>
    <addressSpaceBlueprintName>New_External_Space_2</addressSpaceBlueprintName>
</addressPoolBlueprint>

<addressSpaceBlueprint xsi:type="provisioningAddressSpaceBlueprint"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPublicFlag>true</defaultPublicFlag>
    <description>Provisioning Address Space for External and for NATing to Front End</description>
    <name>New_External_Space_1</name>
</addressSpaceBlueprint>
<addressSpaceBlueprint xsi:type="provisioningAddressSpaceBlueprint"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <condition>(-EXISTS- container.nodes[VFW])</condition>
    <defaultPublicFlag>true</defaultPublicFlag>
    <description>Provisioning Address Space for External and for NATing to Front End</description>
    <name>New_External_Space_2</name>
</addressSpaceBlueprint>

During reprovisioning, overrides for the NAT pool with a linkId tag set to 1 and an addressSpaceBlueprintName tag set to New_External_Space_1 can be specified to scale the External_ NAT pool. Note that a new address space blueprint can be specified in the new revision of the network container blueprint, if the existing address space cannot accommodate a new pool (for example, New_External_Space_1). In addition, the addressing overrides for the NAT pool with a linkId tag set to 2 or an addressSpaceBlueprintName tag set to New_External_Space_2 need not be specified during reprovisioning. A container administrator can defer providing overrides for this NAT pool until further scaling is required. Moreover, BMC Cloud Lifecycle Management has to specify the linkId of the address pool when specifying addressing overrides.

Scaling of pod-level public pools

Pod-level address pools, such as a management pool, can be scaled by adding new pools using the BMC Network Automation Pod Details page for the desired pod.

Substitution parameter syntax

The following substitution parameters are available for chained pod or container address pools:

  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].broadcastAddress\}
  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].endAddress\}
  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].gatewayAddress\}
  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].networkAddress\}
  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].startAddress\}
  • $\{pod.addressPools\[<address-pool-name>#<link-id>\].subnetMask\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].broadcastAddress\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].endAddress\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].gatewayAddress\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].networkAddress\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].startAddress\}
  • $\{container.addressPools\[<address-pool-name>#<link-id>\].subnetMask\}

See Container substitution parameter syntax and Pod substitution parameter syntax for more information.

Was this page helpful? Yes No Submitting... Thank you

Comments