Daniel's Tech Blog

Cloud Computing, Cloud Native & Kubernetes

Manage Windows Server 2016 TP3 Network Controller with System Center 2016 TP3 VMM

Actually in the Technical Preview 3 you can use either PowerShell or System Center 2016 VMM to manage a Network Controller instance. I had not the time yet to test the management capabilities provided by System Center 2016 Operations Manager.

You can manage your datacenter network with Network Controller by using management applications, such as System Center Virtual Machine Manager (SCVMM), and System Center Operations Manager (SCOM), because Network Controller allows you to configure, monitor, program, and troubleshoot the network infrastructure under its control.

-> https://technet.microsoft.com/en-us/library/dn859239.aspx

During my tests with VMM I have discovered that you can bring Logical Networks, Logical Subnets, IP Pools, VM Networks and Logical Switches under the Network Controller management via the VMM console.

Before you start connect the Network Controller instance with the VMM.

-> https://www.danielstechblog.io/connect-windows-server-2016-tp3-network-controller-with-system-center-2016-tp3-vmm/

When you create a new Logical Network you can decide if it will be under the management of the Network Controller instance or not. Furthermore you can specify if it is a public or private IP address network. Another important setting that should be set is “Allow new VM networks created on this logical network to use network virtualization”. Why? Because the intention behind Network Controller is Software Defined Networking.

ManagedbyNC01

After you have created the Logical Network you can create an IP Pool and the IP Pool will be automatically under the management of the Network Controller instance, because of the inheritance through the parent object. The same applies to a VM Network and its associated IP Pools.

ManagedbyNC02ManagedbyNC03

Make sure you choose “Isolate using Hyper-V network virtualization” as Isolation option otherwise the VM Network creation fails.

ManagedbyNC04

Now you can create the Logical Switch or even before the Uplink Port Profile. During the Logical Switch creation process you can decide if it will be under the management of the Network Controller instance or not.

ManagedbyNC05ManagedbyNC06

One important notice here, you cannot create any vNIC Adapter on a Logical Switch that is under the management of a Network Controller instance.

ManagedbyNC07

When you now have a look into your Network Controller properties you will see the created Logical Network under Logical Network Affinity.

ManagedbyNC08

As I mentioned it earlier you can use PowerShell as well, but you do not want that. Why? Let me show you an example creating a Logical Network, a Logical Subnet and an IP Pool through PowerShell.

#New IP Pool Definition
$resourceIdIPPool=[system.guid]::NewGuid()
$StartIPAddress="10.1.0.1"
$EndIPAddress="10.1.0.254"
$IPPool = [Microsoft.Windows.NetworkController.IpPool] @{}
$IPPool.ResourceMetadata = @{}
$IPPool.resourceId = $resourceIdIPPool
$IPPool.properties = [Microsoft.Windows.NetworkController.IpPoolProperties] @{}
$IPPool.properties.startIpAddress = $StartIPAddress
$IPPool.properties.endIpAddress = $EndIPAddress
$IPPool.ResourceMetadata.ResourceName = "Network Controller IP Pool"
#Logical Network Subnet Definition
$resourceIdSubnet=[system.guid]::NewGuid()
$IPPools=$IPPool
$LogicalNetworkSubnet = [Microsoft.Windows.NetworkController.LogicalSubnet] @{}
$LogicalNetworkSubnet.ResourceMetadata = @{}
$LogicalNetworkSubnet.resourceId = $resourceIdSubnet
$LogicalNetworkSubnet.Properties =[Microsoft.Windows.NetworkController.LogicalSubnetProperties] @{}
$LogicalNetworkSubnet.Properties.AddressPrefix = "10.1.0.0/24"
$LogicalNetworkSubnet.Properties.VlanID = 0
$LogicalNetworkSubnet.Properties.IpPools=$IPPools
$LogicalNetworkSubnet.ResourceMetadata.ResourceName="10.1.0.0/24"
#Logical Network Definition
$resourceIdNetwork=[system.guid]::NewGuid()
$LogicalNetworkSubnets=$LogicalNetworkSubnet
$LogicalNetwork = [Microsoft.Windows.NetworkController.LogicalNetwork] @{}
$LogicalNetwork.resourceId = $resourceIdNetwork
$LogicalNetwork.properties =[Microsoft.Windows.NetworkController.LogicalNetworkProperties] @{}
$LogicalNetwork.ResourceMetadata = @{}
$LogicalNetwork.properties.subnets = $LogicalNetworkSubnets
$LogicalNetwork.properties.networkVirtualizationEnabled = "True"
$LogicalNetwork.ResourceMetadata.ResourceName="Network Controller"
$ConnectionUri="https://vmm-cdm.azure.local"
New-NetworkControllerLogicalNetwork -ResourceId $resourceIdNetwork -Properties $LogicalNetwork.properties -ResourceMetadata $LogicalNetwork.ResourceMetadata -ConnectionUri $ConnectionUri -Force -Verbose
New-NetworkControllerLogicalSubnet -LogicalNetworkId $resourceIdNetwork -ResourceId $resourceIdSubnet -Properties $LogicalNetworkSubnet.Properties -ResourceMetadata $LogicalNetworkSubnet.ResourceMetadata -ConnectionUri $ConnectionUri -Force -Verbose
New-NetworkControllerIpPool -NetworkId $resourceIdNetwork -SubnetId $resourceIdSubnet -ResourceId $resourceIdIPPool -Properties $IPPool.Properties -ResourceMetadata $IPPool.ResourceMetadata -ConnectionUri $ConnectionUri -Force –Verbose

As you can see it is a lot of work and actually the Remove PowerShell cmdlets do not seem to work in TP3.

WordPress Cookie Notice by Real Cookie Banner