SCVMM 2016 SDN Express


Microsoft announced the release of VMM SDN Express for System Center Virtual Machines Manager 2016 to simplify their Software-Defined Networking (SDNv2) deployment infrastructure.

You can read about this announcement here:

In short, VMM SDN Express is basically a VMM PowerShell script and parameter file that help you to deploy a production-ready Software-Defined Networking on top of Windows Server 2016 Datacenter Edition and SCVMM 2016, and without you having to move through multiple wizards or having to wait for a long time.

The VMM SDN Express script can be downloaded from Github, including the required VMM templates, documentation and example of two parameter files. There you will find the following:

VMM SDN Express script

In the rest of this blog post, I will walk you through the Fabric configuration deployment and share with you the lessons learned, so you can deploy VMM SDN Express successfully in your environment.

Infrastructure Overview

We have the following servers already deployed in the environment:

  • Domain controller, DNS server, and DHCP Server.
  • System Center Virtual Machine Manager 2016 with Update Rollup 2.
  • 4 Hyper-V nested hosts running Windows Server 2016 Datacenter Edition.
  • Routing and Remote Access Service (RRAS).
  • Remote Site (workgroup machine).


We have also prepared Windows Server 2016 Datacenter image (Server Core or Full Server) as Generation 2 VM that VMM SDN Express will use as a prerequisite to deploying the SDN stack, more on that later.

Planned Logical Networks for Management and SDN Topology

Additional logical networks need to be created and provisioned during the SDN deployment for the gateway, and SLB usage. You need to work closely with your network administrator to obtain the correct IP prefixes, VLAN IDs, and gateway IP addresses for these networks.

In this example, we will use the following logical networks:

4 Hyper-V hosts deployed and are managed by SCVMM 2016

To plan your Software Defined Network Infrastructure correctly, please review the following guide by Microsoft.

VMM SDN Prepare Deployment

As mentioned earlier, we have 4 Hyper-V hosts deployed and are managed by SCVMM 2016 as shown in the following screenshot.

SDN complete set

Please also make sure to copy Windows Server 2016 Datacenter image (VHDX) to the VMM Library\VHDs folder.

Windows Server 2016 Datacenter image (VHDX) in the VMM Library VHDs folder

In the following steps and before we run the VMM SDN Express deployment, we will update the Fabricconfig.psd1 file to match our environment.

Open Fabricconfig.psd1 with Windows PowerShell ISE and update the “VM Creation variables” section as the following:

  • Specify the VHDX file name that you imported to VMM library.
  • Specify the UNC path of the VMM library share and that your admin account has write access to it. In this example “\\VMMEXPRESS.SDN.LAB\MSSCVMMLibrary”
  • Specify Windows Server 2016 Datacenter product key
  • Specify the Generation of the VM image to be used (Gen2).
  • Specify the deployment type. In this example, we will use “Production” deployment.
  • Specify if you want the SDN infrastructure VMs to be deployed as highly available (clustered VMs).
  • Specify if you want static or dynamic IP address.
  • Specify the host group name in VMM where the Network Controller will manage all the Hyper-V hosts. In this example, we used the default host group in VMM named “All Hosts”.

Open Fabricconfig.psd1 with Windows PowerShell ISE

  • If you want VMM express to deploy the Logical switch and Management Network for you, then make sure to set the IsLogicalSwitchDeployed = $false and IsManagementVMNetworkExisting = $false

VMM express deploy the Logical switch and Management Network

  • The below set of Parameters is needed to create the Management Logical Network and other Logical Networks that are managed by Network Controller.
    • Specify the IP address for the HNV Provider and the Transit logical networks. Please refer to the “Planned Logical Networks for Management and SDN Topology” section at the beginning of this article.

Planned Logical Networks for Management and SDN Topology

  • Specify the IP address for the Public and Private logical networks that will be assigned to the Software Load Balancer (SLB) Manager.

Specify the IP address for the Public and Private logical networks

  • Specify the IP address for the Management and the GRE VM logical networks. Specify the IP address for Management GRE VM logical networks
  • The following set of parameters are needed for importing the service templates into VMM (NC, GW and SLB), then configuring and deploying the service templates for you.The parameters below are self-explanatory. You need to make sure to create a domain user account and two security groups in the active directory before you go ahead with the deployment. The RestName must be unique and should not exist in the environment. Basically, the RestName is very important when you deploy a “Production” SDN with 3-Nodes. Because Network Controller is the cornerstone of SDN management, it is critical for Network Controller deployments to offer high availability and the ability for you to easily scale up or down Network Controller nodes with your datacenter needs. The NC service URL name will point to the 3-Nodes Network Controller on the backend. VMM parameters set

Please note that the “Management Domain User” account used for the NC deployment (i.e. SDN\Charbel) must be member of the “Client Security Group Name” and the “Management Security Group Name” in Active Directory or the deployment will fail later on.

  • Finally, you need to specify what you want to deploy. In this example, we are deploying the full SDN Stack (Network Controller, Software Load Balancer, and Gateway).

full SDN Stack Network Controller Software Load Balancer and Gateway

VMM SDN Express Deployment

The current VMMExpress.ps1 script has a small bug, if the folder named “scripts” does not exist before you launch the deployment, the script will fail. So please add the following command on line 50 as shown in below screenshot:

You need also to remove the backslash “\” before the word “scripts” at line 49.

VMMExpress.ps1 script

This command will create a folder called “scripts” on the volume where the Express deployment script is located.

As a side note: If you are evaluating the SDN deployment using Nested Virtualization, you might need to update the .XML service template for NC, GW and SLB by decreasing the amount of memory to 2GB instead of 4-8GB.

.XML service template for NC GW and SLB

We are ready now to deploy SDN Express.

Open an elevated PowerShell console and run the VMM Express deployment by specifying the ConfigurationDataFile as shown in below screenshot and press Enter.

VMM Express deployment

The SDN Express deployment will start, you can switch now to VMM Jobs view and see the deployment steps in details:

SDN Express deployment

At this point, the script will create all the needed logical networks in VMM and import the service templates one at a time and create the services for you as shown in the next screenshot.

logical networks in VMM service

Here is the logical networks overview after the deployment.

logical networks overview after the SDN deployment

The Network Controller is added as new Network Service in VMM. The connection string “serverurl=https://NCEXPRESS.SDN.LAB;servicename=NC” is the RestName that we specified in the fabric config file for highly available NC deployment with 3 nodes.

Network Controller as new Network Service in VMM

The entire VMM SDN Express deployment will take around 2 to 3 hours depending on your machine speed.

Once the deployment is completed, you will have 9 VMs deployed and configured as shown in the next screenshot (3-Nodes NC, 3-Nodes GW and 3-Nodes SLB).

3 Nodes NC 3 Nodes GW and 3 Nodes SLB


Now as the entire SDN stack is deployed and on-boarded, you can go ahead and deploy tenant workloads and check if everything is good with Networking perspective.

To help you evaluate SDNv2, we have published a series of blog posts that covers how to manage a Software-Defined Networking deployment using System Center Virtual Machines Manage 2016 which was deployed using VMM SDN Express covered in this article.

How to Deploy and Manage Software-Defined Networking using SCVMM 2016 – Part I

How to Deploy and Manage Software-Defined Networking using SCVMM 2016 – Part II

How to Deploy and Manage Software-Defined Networking using SCVMM 2016 – Part III

I encourage you to deploy and evaluate SDNv2 stack in Windows Server 2016 managed by SCVMM 2016 and share your feedback in the comment section below.

I hope this post has been informative to you and I would to thank you for reading!

Back to blog