Events
Apr 29, 2 PM - Apr 30, 7 PM
Join the ultimate Windows Server virtual event April 29-30 for deep-dive technical sessions and live Q&A with Microsoft engineers.
Sign up nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
This article describes how to set up a Software Defined Networking (SDN) network controller in the System Center Virtual Machine Manager (VMM) fabric.
The SDN network controller is a scalable and highly available server role that enables you to automate network infrastructure configuration instead of performing manual network device configuration. Learn more.
VMM 2025 and 2022 provide dual stack support for SDN network controller.
For a great introduction, watch a video (~ five minutes) that provides an overview of network controller deployment.
Note
Note
• Plan for a Software Defined Network (SDN). Learn more.
• Plan for an SDN Network Controller Installation and deployment. Learn more.
To set up SDN in the VMM fabric, you need the following:
Here's what you need to do to set up an SDN network controller:
Configure hosts and physical network infrastructure: You need access to your physical network devices to configure VLANs, routing, and others. You also need Hyper-V hosts to host the SDN infrastructure and tenant VMs. Learn more.
Prepare a virtual hard disk: You can prepare a virtual hard disk for the network controller service template in VHD or VHDX format, as appropriate, for the service template generation you choose.
Download the service templates: Download the network controller service templates and import them to the VMM library.
Set up Active Directory security groups: You'll need an Active Directory security group for network controller management, and another security group for network controller clients. Each group will need at least one user account in it.
Set up a VMM library share. You can have an optional library file share for keeping diagnostic logs. This library share will be accessed by the network controller to store diagnostics information throughout its lifetime.
Set up a VMM host group: Set up a dedicated host group for all the SDN Hyper-V hosts.
Note
Hosts must be running applicable Windows Server with latest patches installed and have the Hyper-V role enabled.
Create the management logical network: Create a logical network to mirror management network connectivity for the VMM host, network controller hosts, and tenant VM hosts. If you want to allocate static IP addresses from a pool, create a pool on this logical network.
Create and deploy a management logical switch: You create the logical switch and deploy it on network controller hosts to provide connectivity to the management network for network controller VMs.
Set up a certificate: You need an SSL certificate for secure/HTTPS communication with the network controller.
Import the template: Import and customize the network controller service template.
Deploy the service: Deploy the network controller service using the service template. Then add it as a VMM service.
Download the SDN folder from the Microsoft SDN GitHub repository and copy the templates from VMM >Templates > NC to a local path on the VMM server.
Extract the contents to a folder on a local computer.
Refresh the library, you'll import the service templates, later.
Note
The custom resource files are used when setting up the network controller and other SDN components (software load balancer, RAS gateway).
The NC folder contains four service templates and five custom resource folders. These are summarized in the following table:
Name | Type | Details |
---|---|---|
Network Controller Production Generation 1 VM.xml | Template | Three-node network controller for Generation 1 VMs |
Network Controller Production Generation 2 VM.xml | Template | Three-node network controller for Generation 2 VMs |
Network Controller Standalone Generation 1 VM.xml | Template | Single-node network controller for Generation 1 VMs |
Network Controller Standalone Generation 2 VM.xml | Template | Single-node network controller for Generation 2 VMs |
NcSetup.cr | Custom resource file | A library resource containing scripts used to set up the network. |
ServerCertificate.cr | Custom resource file | Library resource containing the private key for the network controller in .pfx format. |
NcCertificate.cr | Custom resource file | Library resource containing the trusted root certificate (.CER) for the network controller. This is used for secure communications between the network controller and other subservices (For example, SLB MUXes). |
TrustedRootCertificate.cr | Custom resource file | Library resource containing the CA public key (.cer) imported as the trusted root certificate to validate the SSL certificate. |
EdgeDeployment.cr | Template | Used for installing SLB MUX roles and gateway roles (for example, VPN). |
Create security groups for network controller management and clients.
In Active Directory Users and Computers, create a security group for network controller management.
Create another security group for network controller clients.
You can create a management logical network in VMM to mirror your physical management network.
Use the following procedure to create management logical network:
Note
From VMM 2019 UR1,One Connected Network type is changed to Connected Network.
Note
From VMM 2019 UR1, you can create IP address pool using Create Logical Network wizard.
Note
You can create IP address pool using Create Logical Network wizard.
If you want to allocate static IP addresses to network controller VMs, create an IP address pool in the management logical network. If you're using DHCP, you can skip this step.
In the VMM console, right-click the management logical network and select Create IP Pool.
Provide a Name and optional description for the pool, and ensure that the management network is selected for the logical network.
In Network Site panel, select the subnet that this IP address pool will service.
In IP Address range panel, enter the starting and ending IP addresses.
To use an IP as REST IP, enter one of the IP addresses from the specified range in the IP addresses to be reserved for other uses box. In case you want to use the REST End Point, skip this step.
Specify the default gateway address and optionally configure DNS and WINS settings.
In the Summary page, review the settings and select Finish to complete the wizard.
You need to deploy a logical switch on the management logical network. The switch provides connectivity between the management logical network and the network controller VMs.
In the VMM console, select Fabric > Networking > Create Logical Switch. Review the Getting Started information and select Next.
Provide a Name and optional description. Select No Uplink Team. If you need teaming, select Embedded Team.
Note
Don't use Team.
For minimum bandwidth mode, choose the Weight option.
In Extensions, clear all the switch extensions. This is important. If you select any of the switch extensions at this stage, it could block the network controller onboarding later.
You can optionally add a virtual port profile and choose a port classification for host management.
Select an existing uplink port profile, or select Add > New Uplink Port Profile. Provide a Name and optional description. Use the defaults for load balancing algorithm and teaming mode. Select all the network sites in the management logical network.
Select New Network Adapter. This adds a host virtual network adapter (vNIC) to your logical switch and uplink port profile, so that when you add the logical switch to your hosts, the vNICs get added automatically.
Provide a Name for the vNIC. Verify that the management VM network is listed in Connectivity.
Select This network adapter will be used for host management > Inherit connection settings from the host adapter. This allows you to take the vNIC adapter settings from the adapter that already exists on the host. If you created a port classification and virtual port profile earlier, you can select it now.
In Summary, review the information and select Finish to complete the wizard.
You must deploy the management logical switch on all the hosts where you intend to deploy the NC. These hosts must be a part of VMM host group that you created earlier. Learn more.
You need an SSL certificate that will be used for secure/HTTPS communication with the network controller. You can use the following methods:
The following example creates a new self-signed certificate and must be run on the VMM server.
Note
Deployment | Syntax | Example |
---|---|---|
Multi-node | New-SelfSignedCertificate -KeyUsageProperty All -Provider "Microsoft Strong Cryptographic Provider" -FriendlyName "<YourNCComputerName>" -DnsName @("<NCRESTName>") |
New-SelfSignedCertificate -KeyUsageProperty All -Provider "Microsoft Strong Cryptographic Provider" -FriendlyName "MultiNodeNC" -DnsName @("NCCluster.Contoso.com") |
Single-node | New-SelfSignedCertificate -KeyUsageProperty All -Provider "Microsoft Strong Cryptographic Provider" -FriendlyName "<YourNCComputerName>" -DnsName @("<NCFQDN>") |
New-SelfSignedCertificate -KeyUsageProperty All -Provider "Microsoft Strong Cryptographic Provider" -FriendlyName "SingleNodeNC" -DnsName @("SingleNodeNC.Contoso.com") |
Export the certificate and its private key in .pfx format.
Open the Certificates snap-in (certlm.msc) and locate the certificate in Personal/Certificates.
Select the certificate > All Tasks > Export.
Select Yes, export the private key option, and select Next.
Choose Personal Information Exchange - PKCS #12 (.PFX) and accept the default to Include all certificates in the certification path if possible.
Assign the Users/Groups and a password for the certificate you're exporting; select Next.
On the File to export page, browse the location where you want to place the exported file, and give it a name.
Similarly, export the certificate in .CER format
Note
To export to .CER format, uncheck the Yes, export the private key option.
Copy the .PFX to the ServerCertificate.cr folder.
Copy the .CER file to the NCCertificate.cr folder.
When you're done, refresh these folders, and ensure that you've these certificates copied.
Request a CA-signed certificate. For a Windows-based enterprise CA, request certificates using the certificate request Wizard.
Ensure that the certificate includes the serverAuth EKU, specified by the OID 1.3.6.1.5.5.7.3.1. In addition, the certificate subject name must match the DNS name of the network controller.
Copy the .PFX to the ServerCertificate.cr folder.
Copy the .CER file to the NCCertificate.cr folder.
Copy the public key of the CA in .CER format to TrustedRootCertificate.cr.
Note
Ensure that the enterprise CA is configured for certificate auto enrollment.
If the Personal (My – cert:\localmachine\my) certificate store on the Hyper-V host has more than one X.509 certificate with Subject Name (CN) as the host Fully Qualified Domain Name (FQDN), ensure that the certificate that is used by SDN has an additional custom Enhanced Key Usage property with the OID 1.3.6.1.4.1.311.95.1.1.1. Otherwise, the communication between Network Controller and the host might not work.
Ensure that certificate issued by CA for south bound communication has an additional custom Enhanced Key Usage property with the OID 1.3.6.1.4.1.311.95.1.1.1.
Import the template and update the parameters for your environment.
Import the service template into the VMM library. For this example, we'll import the Generation 2 template.
Select Library > Import Template.
Browse to your service template folder, select the Network Controller Production Generation 2 VM.xml file.
Update the parameters for your environment as you import the service template. Review the details and then select Import.
Once done, ensure that the Job is complete.
You can customize the service template to meet any specific requirements related to your organization, such as product key, IP assignment, DHCP, MAC Spoofing, and High availability. You can also customize properties for objects such as host groups, host clusters, and service instances.
As an example, here are the steps to enter the product key, enable DHCP and high availability:
In the VMM library, select the service template, and open it in designer mode.
Double-click the computer tier to open the Windows Server Network Controller Properties page.
To specify a product key, select OS Configuration > Product Key, and specify the key shared by CCEP.
To enable high availability, select Hardware configuration > Availability, select the Make the Virtual machine highly available checkbox.
To enable dynamic IP configuration and use DHCP for network controller management, select network adapter on the designer, and change the IPV4 address type to Dynamic.
Note
Select the network controller service template > Configure Deployment. Enter a service name, and select a destination for the service instance. The destination must map to the dedicated host group containing hosts that will be managed by the network controller.
Configure the deployment settings as described in the table below.
It's normal for the virtual machine instances to be initially red. Select Refresh Preview to have the deployment service automatically find suitable hosts for the virtual machines to be created.
After you configure these settings, select Deploy Service to begin the service deployment job.
Note
Deployment times will vary depending on your hardware but are typically between 30 and 60 minutes. If you're not using a volume licensed VHD\VHDX, or if the VHD\VHDX doesn't supply the product key using an answer file, then the deployment stops at the Product Key page during network controller VM provisioning. You need to manually access the VM desktop and either skip or enter the product key.
If the network controller deployment fails, delete the failed service instance before you retry the network controller deployment. Select VMs and Services > All Hosts > Services, and delete the instance.
Setting | Requirement | Description |
---|---|---|
ClientSecurityGroup | Required | Name of the security group that you created, containing network controller client accounts. |
DiagnosticLogShare | Optional | File share location where the diagnostic logs will be periodically uploaded. If this isn't provided, the logs are stored locally on each node. |
DiagnosticLogShareUsername | Optional | Full username (including domain name) for an account that has access permissions to the diagnostic log share. In the format: [domain]\[username]. |
DiagnosticLogSharePassword | Optional | The password for the account specified in the DiagnosticLogShareUsername parameter. |
LocalAdmin | Required | Select a Run As account in your environment, which will be used as the local administrator on the network controller virtual machines. Note: While creating Run As accounts, uncheck the validate domain credentials option if you're creating a local account. Username must be .\Administrator (create it if it doesn't exist). |
Management | Required | Select the management logical network you created earlier. |
MgmtDomainAccount | Required | Select a Run As account in your environment, which will be used to prepare the network controller. This user must be a member of the management security group, specified below, which has privileges to manage the network controller. |
MgmtDomainAccountName | Required | This must be the full username (including domain name) of the Run As account mapped to MgmtDomainAccount. The domain username will be added to the Administrators group during deployment. |
MgmtDomainAccountPassword | Required | Password for the management Run As account mapped to MgmtDomainAccount. |
MgmtDomainFQDN | Required | FQDN for the Active directory domain that the network controller virtual machines will join. |
MgmtSecurityGroup | Required | Name of the security group you created previously containing network controller management accounts. |
RestEndPoint | Required | Enter the RESTName you used when preparing the certificates. This parameter isn't used for standalone templates. If the nodes are in the same subnet, you must provide the REST IP address. If the nodes are in different subnets, provide the REST DNS name. |
ServerCertificatePassword | Required | Password to import the certificate into the machine store. |
Note
Windows Server 2019 onwards, the Network Controller machines must be provided permission to register and modify the SPN in the Active Directory. For more information, see Kerberos with Service Principal Name.
After the network controller service is successfully deployed, the next step is to add it to VMM as a network service.
In Fabric, right-click Networking > Network Service, and select Add Network Service.
The Add Network Service Wizard starts. Specify a name and optional description.
Select Microsoft for the manufacturer and for model select Microsoft network controller.
In Credentials, provide the Run As account you want to use to configure the network service. This must be the same account that you included in the network controller clients group.
For the Connection String:
serverurl=https://NCCluster.contoso.com;servicename=NC_VMM_RTM
In Review Certificates, a connection is made to the network controller virtual machine to retrieve the certificate. Verify that the certificate shown is the one you expect. Ensure that you select These certificates have been reviewed and can be imported to the trusted certificate store box.
On the next screen, select Scan Provider to connect to your service and list the properties and their status. This is also a good test of whether the service was created correctly, and that you’re using the right connect string to connect to it. Examine the results, and check that isNetworkController = true. When it completes successfully, select Next.
Configure the host group that your network controller will manage.
Select Finish to complete the wizard. When the service has been added to VMM, it will appear in the Network Services list in the VMM console. If the network service isn't added, check Jobs in the VMM console to troubleshoot.
You can optionally validate the network controller deployment. To do this:
In Settings, verify that One Connected Network is selected, since all HNV Provider networks need to have routing and connectivity between all hosts in that network. Ensure that you check Allow new VM networks created on this logical network to use network virtualization. In addition, check Managed by the network controller.
Note
From VMM 2019 UR1,One Connected Network type is changed to Connected Network.
In Settings, verify that Connected Network is selected, since all HNV Provider networks need to have routing and connectivity between all hosts in that network. Ensure that you check Allow new VM networks created on this logical network to use network virtualization. In addition, check Managed by the network controller.
Note
From VMM 2019 UR1, you can create IP address pool using Create Logical Network wizard.
Note
You can create IP address pool using Create Logical Network wizard.
The configure HNV logical network needs an IP address pool, even if DHCP is available on this network. If you've more than one subnet on the configure HNV network, create a pool for each subnet.
Note
To enable IPv6 support, add an IPv6 subnet and create an IPv6 address pool.
Note
In IP Address range, configure the starting and ending IP address. Don't use the first IP address of your available subnet. For example, if your available subnet is from .1 to .254, start your range at .2 or greater.
Next, configure the default gateway address. Select Insert next to the Default gateways box, enter the address, and use the default metric. Optionally configure DNS and WINS.
Review the summary information and select Finish to complete the wizard.
As part of network controller onboarding, the switch that you deployed on the hosts for the Management logical network connectivity was converted to an SDN switch. This switch can now be used to deploy a network controller managed network, including the HNV provider logical network. Ensure that you select the network site corresponding to the HNV provider logical network in the uplink port profile settings for the Management logical switch.
The HNV provider logical network is now accessible to all the hosts in the network controller managed host group.
Now, create two VM networks and IP pools for two tenants in your SDN infrastructure to test connectivity.
Note
Create a VM network for each tenant.
Create an IP address pool for each VM network.
Note
When you create a VM network, to enable IPv6 support, select IPv6 from the IP address protocol for the VM network dropdown menu. When you create a VM network, to enable dual stack support, select IPv4 and IPv6 from the IP address protocol for the VM network dropdown menu (applicable to 2022 and later).
When you create VM Subnets, to enable dual stack support, provide both IPv4 subnet and IPv6 subnet, separated by a semicolon (;). (applicable to 2022 and later)
Now, you can create tenant virtual machines connected to the tenant virtual network.
Note
IPv6 ICMP is applicable for 2019 UR2 and later.
Note
To enable dual stack support, for the VM networks, create two IP pools by selecting the two IP subnets from the dropdown menu.
Create a new VM and deploy the dual stack VM network to assign both IPv4 and IPv6 address to the virtual machine.
Use these steps to remove the network controller from the SDN fabric.
Events
Apr 29, 2 PM - Apr 30, 7 PM
Join the ultimate Windows Server virtual event April 29-30 for deep-dive technical sessions and live Q&A with Microsoft engineers.
Sign up nowTraining
Module
Implement and manage networking for Azure Virtual Desktop - Training
Implement and manage networking for Azure Virtual Desktop
Certification
Microsoft Certified: Azure Network Engineer Associate - Certifications
Demonstrate the design, implementation, and maintenance of Azure networking infrastructure, load balancing traffic, network routing, and more.