This article originally appeared in 2017 on IBM developerWorks, which is being sunset. Although 2020 brings a long awaited shift in focus to NSX-T, the instructions in this article are still relevant for NSX-V implementations.
IBM® and VMware® announced a new partnership in 2016 that culminated in the release of VMware vCenter Server on IBM Cloud, an automated standardized deployment of a complete VMware virtualization environment in the IBM Cloud, including VMware vSphere, VMware NSX, and optionally VMware vSAN technologies. Since the announcement, IBM and VMware continued to enhance offerings with new features and services. IBM Cloud’s vCenter Server offering is the fastest way to deploy a fully operational VMware virtualization environment in the IBM Cloud.
“This tutorial is for anyone who is interested in migrating data, creating firewall rules, building a topology, and more.”
Connecting to the public cloud
Your VMware vCenter Server (VCS) instance in the IBM Cloud is initially deployed with minimal public network access for the IBM software components and any services that require such access for usage reporting, such as Zerto Virtual Replication.
Many IBM Cloud services are available to your VMware workloads over your private network, including file storage, block storage, object storage, load balancing, email delivery, and digital transcoding.
However, many other IBM Cloud services, such as Cloudant®, IBM Cloud Functions (formerly OpenWhisk), API Connect™, and Weather Company® Data, can be reached only over the public network.
In this tutorial, we show you how to securely connect your private multi-site VCS instances to IBM Cloud public services. This tutorial assumes the most complex case of setting up public connectivity for a multi–site workload. For single–site deployments, or for deployments that use VLAN instead of VXLAN, some of the steps will not be necessary. After completing this tutorial, you will know how to easily and securely connect your private VMware workloads to public IBM Cloud services.
The IBM Cloud: Migrate your workload while preserving your security
This tutorial is based on IBM Code’s fictional Acme Freight company and its transformation story. View the full journey (and while you’re at it, grab the sample code) to see how Acme Freight implemented the network topology. See how they were able to migrate their workload between data centers, allowing external access from the workload to their IBM Cloud services—all while preserving the security of their workload that is running in their private IBM Cloud virtualized network.
Acme Freight’s VMware application uses several IBM Cloud services to implement their weather–based routing recommendation engine. Their recommendation engine is implemented by using IBM Cloud Functions (formerly OpenWhisk) programming service, which allows for rapid innovation and development at a very low cost. They subscribe to IBM Cloud Weather Company Data (now deprecated) for weather forecasts and alerts. They use IBM Cloud’s API Connect service for additional security, governance, and analytics for their APIs. All of these components allow Acme Freight to monetize and rate limit their service as they expand their business. Figure 1 is an example of API Connect’s monitoring interface for Acme Freight.
Figure 1. API Connect monitoring interface

Figure 2 shows the topology for Acme Freight’s application that is running on VMware vCenter Server on IBM Cloud.
Figure 2. Acme Freight network topology

The following numbered steps show you how we built up this topology from Figure 2. Note that the application might migrate between the two data centers, therefore we will configure each data center to have a local egress point to the public network.
Network topology: Building your internal network
① Cross–vCenter NSX
VMware NSX is VMware’s network function virtualization (NFV) technology. NSX is not just about network virtualization, but also provides significant security benefits through its micro–segmentation firewalling capabilities. NSX also offers the flexibility of plugging many third–party network functions into the NSX network flows.
Many companies are adopting NSX in their own data centers because of the flexibility and security that NSX provides. Even if you are not using NSX in your own data center, you should use it when deploying VMware in the cloud. Using NSX in the cloud will give you much more flexibility and control over the networks and addressing in your environment, and will position you to take advantage of the other benefits of NSX down the road.
If you have deployed a multi–site VMware vCenter Server topology, your vCenter servers are linked together but your NSX managers are not yet linked. In this step, we will associate the NSX managers across your instances, which will allow us to create logical networks (VXLANs) that stretch across your sites. This simplifies the communications between your workloads and enables your workloads to migrate seamlessly between sites, as in the case of Acme Freight. For more information about cross–vCenter NSX design and architecture, refer to VMware’s NSX cross–vCenter design guide.
This step requires you to choose a site to serve as the primary NSX manager and delete the NSX controllers on all other connected sites. For consistency and simplicity, we recommend that you choose your primary VCC instance as the primary NSX manager. You should perform this step before you create any logical switches at any of your secondary sites:
- Use the vSphere Web Client to log in to vCenter.
- Before configuring cross–vCenter NSX, ensure that all sites have unique segment ID ranges for their logical switches. Each logical network is assigned a segment ID, much like a VLAN has an ID.
- Determine the segment ID ranges that you will configure at each site for local switches and for the universal switches. Your choice determines how many switches can be created at each site, and how many universal networks can be created. In the case of Acme Freight, we chose the following:
- Primary site: 6000–6499
- Secondary site: 6500–6999
- Universal: 7000-7999
- Navigate to Networking & Security > Installation. Select the Logical Network Preparation tab, then select the Segment ID pane.
- Select the IP address of the NSX manager that will serve as your primary manager.
- Click Edit and adjust the segment ID pool to your desired range.
- Repeat steps c and d for each of your secondary NSX managers. We will configure the universal segment IDs in a later step.
- Navigate to Networking & Security > Installation and select the Management tab.
- Select the IP address of the NSX Manager that will serve as your primary manager.
- Click Actions > Assign Primary Role, and click Yes when prompted.
- In the NSX Controller nodes table, locate the three NSX controllers that are managed by the NSX Manager that will serve as your secondary manager. For each controller:
- Select the controller.
- Click the red X icon to delete it.
- Wait for the deletion to complete before proceeding.
- Refresh the screen if you are unable to click the delete button.
- Log in to the IBM Cloud for VMware Solutions portion of the IBM Cloud catalog.
- Click Deployed Instances and select your secondary instance. Make note of the NSX Manager IP address, HTTP user name, and HTTP password.
- Return to the vSphere Web Client NSX installation page.
- Select the Primary NSX Manager.
- Select Actions > Add Secondary NSX Manager.
- Enter the IP address, HTTP user name, and HTTP password that you noted in step 8.
Once completed, one NSX manager will be listed as Primary and the other as Secondary. You should see six rows in the NSX Controller nodes table, but only three unique IP addresses, since the three controllers are now shared between the primary and secondary sites. It will take a few minutes for your controllers to go into a connected state; if this does not happen, select the Secondary Manager and click Actions > Update Controller State. Figure 3 shows the result.
Figure 3. NSX managers and controllers

Repeat steps 5 through 12 for any additional secondary instances you want to include in your universal transport zone.
② NSX Universal Transport Zone
In this step, we set up a universal transport zone, allowing your sites to share NSX logical switches and routers.
- In the vSphere Web Client, navigate to Networking & Security > Installation and select the Logical Network Preparation tab.
- Ensure the Primary NSX Manager is selected in the drop–down list, click the Segment ID pane, and click Edit.
- Choose a Universal Segment ID pool independent of your local segment IDs. In Acme Freight’s case, we chose the range 7000–7999 for our segment IDs, as shown in Figure 4.
Figure 4. Segment IDs

- Select the Transport Zones pane.
- Click the green plus icon to add a transport zone. Select Mark this object for Universal Synchronization so that it is created as a universal transport zone. Select your cluster to connect it to the transport zone. In Acme Freight’s case, we named it
UniversalTransportZone.
Figure 5. Universal transport zone

- Select your Secondary NSX manager from the drop–down list. Select the UniversalTransportZone, then select Action > Connect Cluster to connect your secondary vCenter to this transport zone.
- Select the cluster and click OK.
- Repeat steps 6–7 for any additional Secondary NSX managers in your environment.
In this step, we create the logical switches that serve as the virtual networks for our solution. You can think of each logical switch as the virtual equivalent of a physical VLAN. The traffic for these switches is encapsulated in VXLAN packets if it is routed between hosts.
You will need to plan for your own networking needs, including both the number of logical switches and the subnets in use by them. In Acme Freight’s case, we created the following logical switches:
- Universal Web-Tier
This network hosts the web servers for Acme Freight. Its subnet is 172.16.10.0/24.
- Universal App-Tier
This network hosts the application servers for Acme Freight. Its subnet is 172.16.20.0/24.
- Universal Primary-Transit
This network is a transit network that routes traffic to the public network for the primary site. Its subnet is 172.16.100.0/27.
- Universal Secondary-Transit
This network is a transit network that routes traffic to the public network for the secondary site. Its subnet is 172.16.200.0/27.
In a later step, we will create a logical router to route traffic between these networks.
Create each logical switch with the following steps:
- In the vSphere Web Client, navigate to Networking & Security > Logical Switches.
- Ensure the Primary NSX manager is selected in the drop–down list.
- Click the green plus icon to create a logical switch.
- Name your switch.
- For the Transport Zone, click Change and select your universal transport zone.
- Ensure Unicast is selected, as shown in Figure 6.
- Click OK.
Figure 6. Logical switch

In the previous step, we created several logical (or virtual) networks. You could begin deploying virtual machines on these networks right away, but these virtual machines will only be able to communicate with other virtual machines on the same network. To route traffic between virtual networks, we need to deploy a logical router.
VMware NSX provides logical (or distributed) routers (DLRs) for single–site configurations, and universal logical routers (UDLRs) to route traffic on universal logical switches like the ones we created previously. In this step, we deploy a universal logical router with local egress. We will deploy a single UDLR with a pair of router appliances located in each site.
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges.
- Ensure the Primary NSX manager is selected in the drop–down list.
- Click the green plus icon.
- The first panel is shown in Figure 7:
- Choose an Install Type of Universal Logical (Distributed) Router.
- Select Enable Local Egress.
- Name your router.
- Enable High Availability. We will deploy two appliances to ensure that traffic continues to be routed even if one appliance is lost due to host failure.
Figure 7. UDLR name and description

- On the second panel, select a user name and password for the appliance administration.
- On the third panel, click the green plus icon to configure the deployment of a UDLR appliance. Configure a total of two appliances to a suitable location in your primary site, as shown in Figure 8. We will deploy the appliances for the secondary site in a later step.
Figure 8. UDLR deployment configuration

- In the fourth panel, configure the interfaces for your logical router.
- Even if you did not enable High Availability, you must assign an HA interface. This interface is used for the appliances to detect each other’s availability. You can use the primary transit network for your HA interface.
- Configure one interface for each of your logical switches, including the secondary transit network. This allows the primary site to route public network traffic for the secondary site even if the secondary site’s public link fails. Ensure that your subnet configuration matches the network architecture you planned earlier for each logical switch. The transit networks should be uplink interfaces; all other networks should be internal interfaces.
- We will later deploy a gateway device on the transit networks, so our UDLR should not be assigned a gateway address (by convention the first address) on the transit networks. However, the UDLR will serve as the gateway for all other logical switches. The addresses we assigned for Acme Freight’s case, shown in Figure 9, are as follows:
- Universal Web-Tier
internal interface, 172.16.10.1/24
- Universal App-Tier
internal interface, 172.16.20.1/24
- Universal Primary-Transit
uplink interface, 172.16.100.2/27
- Universal Secondary-Transit
uplink interface, 172.16.200.2/27
Figure 9. UDLR interfaces

- In the fifth panel, configure the default gateway for this UDLR appliance. Specify the gateway address for the primary transit network; we will later deploy a gateway appliance at this address. Figure 10 shows this as configured for Acme Freight.
Figure 10. UDLR default gateway

- Complete the creation of the UDLR and its primary appliances.
- If you deployed your appliances to the same cluster, resource pool, and datastore, you should configure a DRS affinity rule to ensure the appliances run on separate hosts.
Now let’s deploy the UDLR’s appliances at your secondary site. For each secondary site, perform the following steps:
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges.
- Select the secondary NSX manager in the drop–down list.
- Select your UDLR in the list.
- In the Manage tab, select the Settings pane and choose Configuration.
- Click the green plus icon to configure a new UDLR appliance and choose an appropriate location for it
- In the HA Configuration panel, click Change to configure HA. Select Enable and choose your secondary transit network as the HA interface.
- Click the green plus icon to configure your second UDLR appliance, and choose an appropriate location for it.
- If you deployed your appliances to the same cluster, resource pool, and datastore, you should configure a DRS affinity rule to ensure the appliances run on separate hosts.
Network topology: Building your external network
In this step, we will deploy NSX Edge Services Gateway (ESG) devices that will serve as gateways between your logical networks and the public network. We will configure them to NAT outbound traffic from your workload to the public network. VMware designates this outbound NAT as source NAT (SNAT). Depending on your needs, you could also configure inbound NAT to your workload from the public network, which is termed destination NAT (DNAT). We will deploy a separate highly available ESG pair in each site, since each site has its own primary networking.
First, we must order public subnets from the IBM Cloud for use with your ESGs:
- Log in to the IBM Cloud portal.
- First, ensure that you know the public VLANs for your vSphere hosts. Follow these steps:
- Navigate to Devices > Device List.
- Identify one of your vSphere hosts on your primary site and select it.
- In the Network section, under the Public heading, note the site and VLAN. For example, wdc04.fcf03a.1165.
- Repeat steps 2a through 2c for each of your secondary sites.
- Navigate to Network > IP Management > Subnets.
- Select Order IP Addresses.
- Choose a Portable Public subnet
- Select four portable public IP addresses and click Continue.
- Select the VLAN you identified earlier for your primary site.
- Fill out the RFC 2050 information and place your order.
- Repeat steps 4–8 for each of your secondary sites.
You should find that there is already a CIDR–28 public portable subnet on these VLANs, which is used by the IBM Cloud management component to communicate with the IBM Cloud portal. In the IBM Cloud portal, navigate to Network > IP Management > Subnets, and review the details for the CIDR–30 subnets you ordered. You should add a note to these subnets to indicate their purpose; for example, “Workload NAT.” Click to view the details for each subnet. Note the gateway address and the address that is available for your use. We will use the latter address for the NSX ESG. You should add a note to this address to indicate its purpose; for example, “NSX ESG public IP.”
Now we will deploy your ESGs by using the addresses you ordered:
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges.
- Select your Primary NSX manager in the drop–down list.
- Click the green plus icon to deploy a new NSX ESG.
- In the first panel, select Edge Services Gateway, name your ESG, and select Enable High Availability, as shown in Figure 11.
Figure 11. NSX ESG name and description

- On the second panel, select a user name and password for the appliance administration.
- On the third panel, click the green plus icon to configure the deployment of a gateway appliance. Configure a total of two appliances to a suitable location in your primary site, as shown in Figure 12.
Figure 12. Configure NSX ESG deplyment

- In the fourth panel, configure the interfaces for your gateway, as shown in Figure 13.
- The uplink interface should be your public network. From the distributed portgroup list, select the SDDC-DPortGroup-External distributed portgroup. Configure the IP address that you ordered from IBM Cloud with the subnet prefix of 30.
- The internal interface should be your primary transit network. Configure the gateway address you identified for your primary transit network. In the case of Acme Freight, this is 172.16.100.1/27.
Figure 13. ESG interfaces

- In the fifth panel, configure the default gateway for this appliance. Specify the gateway address for the subnet you ordered from IBM Cloud earlier. Figure 14 shows this as configured for Acme Freight.
Figure 14. ESG default gateway

- In the sixth panel, configure your default firewall policy and set the HA interface to the internal interface.
- Complete the creation of the ESG.
- If you deployed your appliances to the same cluster, resource pool, and datastore, you should configure a DRS affinity rule to ensure the appliances run on separate hosts.
- Repeat these steps for each of your secondary sites to deploy an NSX ESG pair in those sites, on the appropriate transit network, and using the subnet you ordered for that site.
In this step, we will enable OSPF dynamic routing between the ESGs and the UDLR. This will allow the UDLR to dynamically discover the gateway routes available in each site and thus identify the closest active gateway based on the site in which your workload is running.
First, we will configure each UDLR appliance to recognize the locale that it is running in. Since we enabled local egress on the UDLR, the locale ID will be used by the UDLR to filter the routes that it configures on your hypervisors. This configuration will allow it to configure preferred routes that differ at each site:
- In the vSphere Web Client, navigate to Networking & Security > NSX Managers.
- Double–click the NSX manager for your primary site and select the Summary tab.
- Copy the ID field, as shown in Figure 15.
Figure 15. NSX Manager ID

- Navigate to Networking & Security > NSX Edges and select the Primary NSX manager from the drop-down list.
- Double-click your UDLR.
- Select the Manage tab and the Routing pane, then select Global configuration.
- Click Edit next to Routing Configuration and enter the router ID.
- Click Publish Changes to commit the changes.
Figure 16. Publish locale ID changes

- Repeat these steps for each of your secondary NSX managers and the UDLR appliances that are associated with them, taking care to select the correct NSX manager in steps 2 and 4.
Now we need to enable OSPF for each of your UDLR appliances:
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges and select the Primary NSX manager from the drop–down list.
- Double–click your UDLR and select the Manage tab.
- In the Routing pane, select the Global Configuration option.
- Click Edit next to the Dynamic Routing Configuration and ensure that the primary transit network is selected for the Router ID, as shown in Figure 17.
Figure 17. UDLR router ID

- Commit your changes by clicking Publish Changes.
- In the Routing pane, select the OSPF option.
- Configure the OSPF settings.
- Click Edit to configure settings.
- Mark it Enabled.
- Enter an unused address in the primary transit network for the protocol address. The UDLR will send and receive OSPF traffic on this address.
- The forwarding address is the address that the UDLR uses for sending and receiving routed traffic. Enter the UDLR’s existing address on the primary transit network.
Figure 18. UDLR OSPF settings for Acme Freight

- Create an Area Definition, as shown in Figure 19
Figure 19. UDLR OSPF area

- Map the area to the primary transit interface, as shown in Figure 20.
Figure 20. UDLR interface mapping for OSPF

- Click Publish Changes to commit the changes that you made to the OSPF configuration.
- Repeat these steps for each of your secondary sites to configure OSPF for the UDLR appliances in those sites. Be sure to select the appropriate secondary NSX manager in step 1 and the appropriate secondary network and addresses in steps 4, 7, and 9.
Lastly, we need to enable OSPF for the NSX ESGs so that they can communicate with the UDLR.
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges and select the Primary NSX manager from the drop–down list.
- Double–click your NSX ESG and select the Manage tab.
- In the Routing pane, select the Global Configuration option.
- Click Edit next to the Dynamic Routing Configuration and ensure that the primary uplink network is selected for the Router ID, as shown in Figure 21.
Figure 21. NSX ESG router ID

- Commit your changes by clicking Publish Changes.
- In the Routing pane, select the Enable OSPF option, as shown in Figure 22.
Figure 22. NSX ESG OSPF settings

- Create an Area Definition, as shown in Figure 23, that matches your UDLR area definition.
Figure 23. NSX ESG OSPF area

- Map the area to the primary transit interface, as shown in Figure 24.
Figure 24. NSX ESG interface mapping for OSPF

- Click Publish Changes to commit the changes that you made to the OSPF configuration.
- Repeat these steps for each of your secondary sites to configure OSPF for the ESGs in those sites. Be sure to select the appropriate secondary NSX manager in step 1 and the appropriate secondary network in steps 4 and 9.
③ Firewall and NAT configuration
Finally, we will configure the NSX edge gateways, which we deployed in step 5, to allow outbound connections from your applications by using address translation.
- In the vSphere Web Client, navigate to Networking & Security > NSX Edges.
- Ensure that the Primary NSX manager is selected in the drop–down list and double–click the NSX ESG that you created for public connectivity at your primary site.
- In the Manage tab, select the Firewall panel.
- Click the green plus icon to create a new firewall rule to permit outbound traffic, as shown in Figure 25.
- The source IP address will likely include your application’s original address (firewall rules are applied before NAT rules). You can use various constructs to select the source address, including cluster, logical switch, vApp, virtual machine, and IP address specification.
- You can limit the destination address and services if needed.
Figure 25. Firewall rule

- Publish your changes.
- In the Manage tab, select the NAT panel.
- Click the green plus icon and select Add SNAT Rule to create a new rule for translating private IP addresses to a public IP address, as shown in Figure 26.
- The Original Source IP address will be the range of addresses that are assigned to virtual machines on the virtualized network, 172.16.0.0/16.
- The Translated Source IP address is from the uplink interface of the ESG.
Figure 26. SNAT rule

- Publish your changes.
- Repeat steps 2–8 for each of your Secondary NSX managers and ESGs. Be sure to specify the Translated Source IP from the uplink interfaces on the ESGs of the secondary sites.
Summary
In this tutorial, we set up a cross–vCenter NSX, created universal logical switches that allow your workloads and communications to traverse your sites over virtual networks. We also set up a universal logical router to route traffic between these networks, and created gateways at each location that allow for outbound traffic to connect to the public network. All of these steps allow you to extend your VMware applications to use public IBM Cloud services, such as Watson Personality Insights or the Watson IoT Platform.
Since we are using NAT for the outbound connections, your workloads will experience a momentary loss of connection if you perform a live migration between sites. This connection loss is caused by the connection source IP address (as seen by the outside network), which will change as you move from site to site. But your workload will be able to immediately re–establish connection.
This tutorial only scratches the surface of what is possible with VMware NSX in the IBM Cloud. We created firewall rules for an NSX Edge, but you can create firewall rules that are applied to all traffic, including intra–switch traffic. Depending on your requirements, you might also need to consider alternative topologies. If you require inbound connections to your application, you’ll also need to consider the NAT configuration (including single versus double NAT), and the potential need for a cross–site load balancer. VMware’s NSX cross–vCenter design guide describes various recommended topologies and the design considerations for each of them.
Enjoy your new-found virtual networking powers and the powerful array of IBM Cloud services right at your fingertips!
Acknowledgements
The authors, Scott Moonen and Kurtis Martin, are grateful to Daniel De Araujo and Frank Chodacki for setting up the multi-site test environment and providing NSX architectural guidance.