Configure Microsoft Windows Server 2016/2019 to provide DHCP services for VXLAN (DFA)

The purpose of this article is to simplify the configuration of the DHCP service for the VXLAN BGP EVPN and DFA factory using Microsoft Windows Server 2016/2019.


In the official documentation, the DHCP service based on Microsoft Windows Server 2012 for the factory is configured as SuperScope containing the Loopback pool (in this pool, the highlight is the exclusion from the pool of all pool IP addresses (excluded IP address = pool)) and IP address issuing pools for real networks (here is the highlight - the policy is configured - in which the DHCP Relay Circuit ID is filtered and this DHCP relay Circuit ID contains the VNI for the network, that is, for another pool this DHCP Relay Circuit ID will be slightly different).

To configure DHCP on Windows server. 

1. Create a super scope. Within the super scope, create scope B, S1, S2, S3, …, Sn for the subnet B and the subnets for each segment. 
2. In scope B,  specify the 'Exclusion Range' to be the entire address range (so that the offered address range must not be from this scope). 
3. For every segment scope Si, specify a policy that matches on Agent Circuit ID with value of '0108000600XXXXXX', where '0108000600' is a fixed value for all segments, the 6 numbers "XXXXXX" is the segment ID value in hexadecimal. Also ensure to check the Append wildcard(*) check box. 
4. Set the policy address range to the entire range of the scope.

This article answers the following questions:



Introduction


This part briefly lists all the initial data: Instructions for setting up network equipment, RFCs used in DHCP packets in eVPN factories, the evolution of DHCP server settings on Microsoft Windows Server 2012 in the Cisco documentation is provided for reference. As well as brief information about Superscope and Policy in the DHCP service on Microsoft Windows Server servers.

How DHCP Relay is configured in the VXLAN BGP EVPN, DFA factory


Configuring DHCP Relay in the VXLAN BGP factory EVPN is not the main topic of this article, because it is quite simple. I provide links to documentation and a spoiler for settings on network equipment.


DHCP Relay setup example on Nexus 9000V v9.2 (3)
service dhcp
ip dhcp relay
ip dhcp relay information option
ip dhcp relay information option vpn
interface loopback10
  vrf member VRF1
  ip address 10.120.0.1/32 tag 1234567
interface Vlan12
  no shutdown
  vrf member VRF1
  no ip redirects
  ip address 10.120.251.1/24 tag 1234567
  no ipv6 redirects
  fabric forwarding mode anycast-gateway
  ip dhcp relay address 10.0.0.5
  ip dhcp relay source-interface loopback10



RFCs implemented in the operation of the DHCP Relay service in VXLAN BGP EVPN factories



RFC#6607: Sub-option 151(0x97) - Virtual Subnet Selection
•	Sub-option 151(0x97) - Virtual Subnet Selection (Defined in RFC#6607)
Used to convey VRF related information to the DHCP server in an MPLS-VPN and VXLAN EVPN multi-tenant environment.

«» VRF .

RFC#5107: Sub-option 11(0xb) - Server ID Override
•	Sub-option 11(0xb) - Server ID Override (Defined in RFC#5107.) 
The server identifier (server ID) override sub-option allows the DHCP relay agent to specify a new value for the server ID option, which is inserted by the DHCP server in the reply packet. This sub-option allows the DHCP relay agent to act as the actual DHCP server such that the renew requests will come to the relay agent rather than the DHCP server directly. The server ID override sub-option contains the incoming interface IP address, which is the IP address on the relay agent that is accessible from the client. Using this information, the DHCP client sends all renew and release request packets to the relay agent. The relay agent adds all of the appropriate sub-options and then forwards the renew and release request packets to the original DHCP server. For this function, Cisco’s proprietary implementation is sub-option 152(0x98). You can use the ip dhcp relay sub-option type cisco command to manage the function.

, IP . ( Cisco VXLAN BGP EVPN – Anycast .)

RFC#3527: Sub-option 5(0x5) - Link Selection
Sub-option 5(0x5) - Link Selection (Defined in RFC#3527.) 

The link selection sub-option provides a mechanism to separate the subnet/link on which the DHCP client resides from the gateway address (giaddr), which can be used to communicate with the relay agent by the DHCP server. The relay agent will set the sub-option to the correct subscriber subnet and the DHCP server will use that value to assign an IP address rather than the giaddr value. The relay agent will set the giaddr to its own IP address so that DHCP messages are able to be forwarded over the network. For this function, Cisco’s proprietary implementation is sub-option 150(0x96). You can use the ip dhcp relay sub-option type ciscocommand to manage the function.

, IP .


Cisco DHCP Microsoft Windows Server 2012


I included this section because there is a positive tendency on the part of the vendor:

Nexus 9000 VXLAN Configuration Guide 7.3

The documentation only shows the DHCP Relay setting on the network equipment.

Another article was used to configure DHCP on Windows Server 2012:

Configuring Microsoft Windows Server 2012 to provide DHCP services in an eVPN Scenario (VXLAN, Cisco One Fabric, etc)

This article indicates that each network / VNI needs its own SuperScope bundle and its own own set of Loopback addresses:

If multiple DHCP Scopes are required for multiple subnets, you need to create one LoopbackX per subnet/vlan on all LEAFS and create a superscope with a loopbackX range scope and actual client IP subnet scope per vlan.

Nexus 9000 VXLAN Configuration Guide 9.3

Added Windows 2012 Server settings to the documentation for configuring network equipment. For all used address pools, one SuperScope per data center is required and this SuperScope is the data center boundary:

Create Superscope for all scopes you want to use for Option 82-based policies.
Note
The Superscope should combine all scopes and act as the administrative boundary.

Cisco Dynamic Fabric Automation

Very comprehensively talked about everything:

Let us assume the switch is using the address from subnet B (it can be the backbone subnet, management subnet, or any customer designated subnet for this purpose) to communicate with the Windows DHCP server. In DFA we have subnets S1, S2, S3, …, Sn for segment s1, s2, s3, …, sn. 

To configure DHCP on Windows server. 

1. Create a super scope. Within the super scope, create scope B, S1, S2, S3, …, Sn for the subnet B and the subnets for each segment. 
2. In scope B,  specify the 'Exclusion Range' to be the entire address range (so that the offered address range must not be from this scope). 
3. For every segment scope Si, specify a policy that matches on Agent Circuit ID with value of '0108000600XXXXXX', where '0108000600' is a fixed value for all segments, the 6 numbers "XXXXXX" is the segment ID value in hexadecimal. Also ensure to check the Append wildcard(*) check box. 
4. Set the policy address range to the entire range of the scope.

DHCP on Microsoft Windows Server (superscope & policy)


Superscope


Superscope is an administrative feature of a DHCP server that can be used to group multiple scopes as a single administrative entity. Superscope allows a DHCP server to provide leases from more than one scope to clients on a single physical network. Scopes added to a superscope are called member scopes.

What is SuperScope? This is a feature that allows you to combine several pools of IP addresses into one administrative unit. To announce to users in the same physical network (in one VLAN) ip addresses from several pools. If the request came to the address pool as part of SuperScope, then you can issue the client an address from another Scope included in this SuperScope.

Policy


The DHCP Server role in Windows Server 2012 introduces a new feature that allows you to create IPv4 policies that specify custom IP address and option assignments for DHCP clients based on a set of conditions.

The policy based assignment (PBA) feature allows you to group DHCP clients by specific attributes based on fields contained in the DHCP client request packet. PBA enables targeted administration and greater control of the configuration parameters delivered to network devices with DHCP.

Policies - allow users to assign IP addresses depending on the type of user or parameter. Cisco engineers use policies in Windows Server 2012 to filter by VNI (Virtual Network Identifier).

Main part


In this section, the results of research are carried out, why it is not supported, how it works (logic), what is new and how this new will help us.

Why is Microsoft Windows Server 2000/2003/2008 not supported?


Microsoft Windows Server 2008 and earlier do not handle option 82 (Option 82) and send the return packet without option 82.

Win2k8 R2 DHCP problem with Option82

  1. A request from the client is sent to Broadcast (DHCP Discover).
  2. Equipment (Nexus) sends a packet to a DHCP server (DHCP Discover + Option 82).
  3. The DHCP server accepts the packet, processes it, sends it back, but without option 82. (DHCP Offer - without option 82)
  4. Equipment (Nexus) receives a packet from a DHCP server. (DHCP Offer) But does not send this packet to the end user.

Sniffer data - on Windows Server 2008 and on the DHCP client
Windows Server 2008 . (Option 82 )


Windows Server 2008 . (Option 82 )

– DHCP Discover DHCP Offer

:

NEXUS-9000V-SW-1# show ip dhcp relay statistics 
----------------------------------------------------------------------
Message Type             Rx              Tx           Drops  
----------------------------------------------------------------------
Discover                  8               8               0
Offer                     8               8               0
Request(*)                0               0               0
Ack                       0               0               0
Release(*)                0               0               0
Decline                   0               0               0
Inform(*)                 0               0               0
Nack                      0               0               0
----------------------------------------------------------------------
Total                    16              16               0
----------------------------------------------------------------------

DHCP L3 FWD:
Total Packets Received                           :         0
Total Packets Forwarded                          :         0
Total Packets Dropped                            :         0
Non DHCP:
Total Packets Received                           :         0
Total Packets Forwarded                          :         0
Total Packets Dropped                            :         0
DROP:
DHCP Relay not enabled                           :         0
Invalid DHCP message type                        :         0
Interface error                                  :         0
Tx failure towards server                        :         0
Tx failure towards client                        :         0
Unknown output interface                         :         0
Unknown vrf or interface for server              :         0
Max hops exceeded                                :         0
Option 82 validation failed                      :         0
Packet Malformed                                 :         0
Relay Trusted port not configured                :         0
DHCP Request dropped on MCT                      :         0
*  -  These counters will show correct value when switch 
receives DHCP request packet with destination ip as broadcast
address. If request is unicast it will be HW switched
NEXUS-9000V-SW-1#


Why is configuration so complicated in Microsoft Windows Server 2012?


In Microsoft Windows Server 2012, RFC # 3527 (Option 82 Sub-option 5 (0x5) - Link Selection) is not yet supported,
but the Policy functionality has already been implemented.

How it works:

  • Microsoft Windows Server 2012 has a super pool (SuperScope) in which there are Loopback addresses and pools for real networks.
  • The choice of the pool for issuing the IP address falls into SuperScope, because the response came from DHCP Relay from the Source Loopback address included in SuperScope.
  • Using a Policy request, it selects from Superscope the member scope whose VNI is contained in Option 82 Suboption 1 Agent Circuit ID. (“0108000600” + 24 VNI bits + 24 bits whose values ​​I do not know, but the sniffer shows the values ​​0 in this field.)


How easy is setup in Microsoft Windows Server 2016/2019?


Microsoft Windows Server 2016 implements RFC # 3527 functionality. That is, Windows Server 2016 can recognize the correct network from the Option 82 Sub-option 5 (0x5) attribute - Link Selection

3 questions arise right away:

  • Can we do without Superscope?
  • Can we do without Policy and translating VNI into a hexadecimal form?
  • Can we do without Scope for Loopback DHCP Source addresses?

Q. Can we do without Superscope?
A. Yes, scope can be created immediately in the scope of IPv4 addresses.
Q. Can we do without Policy and translating VNI into a hexadecimal form?
A. Yes, network selection is based on Option 82 Suboption 0x5,
Q. Can we do without Scope for Loopback DHCP Source addresses?
A. No, we cannot. Since Microsoft Windows Server 2016/2019 has protection against malicious DHCP requests. That is, all requests from addresses that are not in the DHCP server pool are considered malicious.

DHCP Subnet Selection Options

 Note
All relay agent IP addresses (GIADDR) must be part of an active DHCP scope IP address range. Any GIADDR outside of the DHCP scope IP address ranges is considered a rogue relay and Windows DHCP Server will not acknowledge DHCP client requests from those relay agents.

A special scope can be created to "authorize" relay agents. Create a scope with the GIADDR (or multiple if the GIADDR's are sequential IP addresses), exclude the GIADDR address(es) from distribution, and then activate the scope. This will authorize the relay agents while preventing the GIADDR addresses from being assigned.

Those. To configure a DHCP pool on a Microsoft Windows Server 2016/2019 DHCP pool for a VXLAN BGP EVPN factory, you only need:

  • Create a pool for Source Relay addresses.
  • Create a pool for client networks

What is not necessary (but you can configure it and it will work, and will not interfere with work):

  • Create Policy
  • Create SuperScope

Example
DHCP ( 2 DHCP — VXLAN )


:


( — ):


Source DHCP Relay ( ):


Configure DHCP service on Microsoft Windows Server 2019

Loopback (source) DHCP Relay.


(Scope) IPv4.


. «Next >»


(Description) .


IP Loopback .


. .


. «Next >»


: DHCP (DNS, WINS, Gateway, Domain) . , . .


, , . «Finish»


. — Scope — «Activate».


/.


.


. «Next >»


(Description) .


IP Loopback .


. ( ) «Next >»


. «Next >»


: DHCP (DNS, WINS, Gateway, Domain) . .


.


DNS .


IP WINS .


Scope.


. «Finish»




Conclusion


Using Windows Server 2016/2019 reduces the complexity of configuring a DHCP server for a VXLAN factory (or any other factory). (It is not required to transfer IT specialists special bundles: Network / Agent Circuit ID for prescribing filters.)

Will the configuration for Windows Server 2012 work on the new servers 2016/2019 - let it work.

This document provides links to 2 versions: 7.X and 9.3. This is due to the fact that version 7.0 (3) I7 (7) is the Cisco Suggested release, and version 9.3 is the most innovative (up to the support of Multicast via VXLAN Multisite).

List of sources


  1. Nexus 9000 VXLAN Configuration Guide 7.x
  2. Nexus 9000 VXLAN Configuration Guide 9.3
  3. DFA (Cisco Dynamic Fabric Automation)
  4. Configuring Microsoft Windows Server 2012 to provide DHCP services in an eVPN Scenario (VXLAN, Cisco One Fabric, etc)
  5. 3.4 DHCP Superscopes
  6. Introduction to DHCP Policies
  7. Win2k8 R2 DHCP problem with Option82
  8. DHCP Subnet Selection Options

All Articles