Revision Summary Date Revision History Revision Class Comments 10/22/2006 0.01 New Version 0.01 release 1/19/2007 1.0 Major Version 1.0 release 3/2/2007 1.1 Minor Version 1.1 release 4/3/2007 1.2 Minor Version 1.2 release 5/11/2007 1.3 Minor Version 1.3 release 6/1/2007 1.3.1 Editorial Changed language and formatting in the technical content. 7/3/2007 2.0 Major Updated and revised the technical content. 7/20/2007 2.0.1 Editorial Changed language and formatting in the technical content. 8/10/2007 3.0 Major Updated and revised the technical content. 9/28/2007 3.0.1 Editorial Changed language and formatting in the technical content. 10/23/2007 3.0.2 Editorial Changed language and formatting in the technical content.
11/30/2007 3.0.3 Editorial Changed language and formatting in the technical content. 1/25/2008 4.0 Major Updated and revised the technical content. 3/14/2008 4.0.1 Editorial Changed language and formatting in the technical content. 5/16/2008 4.0.2 Editorial Changed language and formatting in the technical content. 6/20/2008 5.0 Major Updated and revised the technical content. 7/25/2008 6.0 Major Updated and revised the technical content. 8/29/2008 6.1 Minor Clarified the meaning of the technical content. 10/24/2008 6.2 Minor Clarified the meaning of the technical content. 12/5/2008 7.0 Major Updated and revised the technical content. 1/16/2009 8.0 Major Updated and revised
the technical content. 2/27/2009 9.0 Major Updated and revised the technical content. 4/10/2009 10.0 Major Updated and revised the technical content. 5/22/2009 11.0 Major Updated and revised the technical content. 7/2/2009 12.0 Updated and revised the technical content. 8/14/2009 12.1 Minor Clarified the meaning of the technical content. 9/25/2009 12.2 Minor Clarified the meaning of the technical content. 11/6/2009 13.0 Major Updated and revised the technical content. 12/18/2009 13.1 Clarified the meaning of the technical content. 1/29/2010 14.0 Major Updated and revised the technical content. 3/12/2010 15.0 Major Updated and revised the
technical content. 4/23/2010 16.0 Major Updated and revised the technical content. 6/4/2010 17.0 Updated and revised the technical content. 7/16/2010 18.0 Major Updated and revised the technical content. 8/27/2010 18.0 None No changes to the meaning, language, or formatting of the technical content. 10/8/2010 18.0 None No changes to the meaning, language, or formatting of the technical content. 11/19/2010 18.0 None No changes to the meaning, language, or formatting of the technical content. 1/7/2011 18.1 Minor Clarified the meaning of the technical content. 2/11/2011 18.1 None No changes to the meaning, language, or
formatting of the technical content. 3/25/2011 18.1 None No changes to the meaning, language, or formatting of the technical content. 5/6/2011 18.1 None No changes to the meaning, language, or formatting of the technical content. 6/17/2011 18.2 Clarified the meaning of the technical content. 9/23/2011 18.2 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 19.0 Major Updated and revised the technical content. 3/30/2012 19.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 19.1 Minor Clarified the meaning of the technical content.
10/25/2012 19.1 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 20.0 Major Updated and revised the technical content. 8/8/2013 21.0 Major Updated and revised the technical content. 11/14/2013 21.0 None No changes to the meaning, language, or formatting of the technical content. 2/13/2014 22.0 Major Updated and revised the technical content. 5/15/2014 22.0 None No changes to the meaning, language, or formatting of the technical content. 6/30/2015 23.0 Major Significantly changed the technical content. 10/16/2015 23.0 None No changes to the meaning, language, or formatting of the
technical content. 7/14/2016 24.0 Significantly changed the technical content. 6/1/2017 24.0 None No changes to the meaning, language, or formatting of the technical content. 9/15/2017 25.0 Major Significantly changed the technical content. 12/1/2017 25.0 None No changes to the meaning, language, or formatting of the technical content.
Initial Contact: A flag indicating if the "Vid-Initial-Contact" (see section ) has been received for the MM SA. The MMSAD MUST be indexed by the local and peer IP addresses and the and cookies found in the header (as specified in ). Note The preceding conceptual data can be implemented by using a variety of techniques. An implementation is at liberty to implement such data in any way it pleases. Timers None. Initialization None. Higher-Layer Triggered Events Start of an IKE MM SA Negotiation As part of the construction of message #1, a fast failover-supporting host MUST include an "NLBS_PRESENT" (that is, a vendor ID payload generated by using the vendor ID string "NLBS_PRESENT", as specified in section 3.16). Message Processing Events and Sequencing Rules Receiving Message #1 On receipt of message #1, the host MUST check for the presence of the "Vid-Initial-Contact" vendor ID (as specified in section ). If the "Vid-Initial-Contact" is present in the message, the host MUST set the Initial Contact flag for the corresponding entry. If the host is part of a , it MAY use this information to rebalance the to a different host within the cluster.<22> Receiving Message #2 Message #2 has the same processing as message #1. Events None. Other Local Events None. Negotiation Discovery Details Using the notation as specified in section 3.2, the generalized form of an phase 1 () is as shown in the following figure. For more information, see [RFC2409] section 5.
Appendix A: Product Behavior The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products. The terms "earlier" and "later", when used with a product version, refer to either all preceding versions or all subsequent versions, respectively. The term "through" refers to the inclusive range of versions. Applicable Microsoft products are listed chronologically in this section. The following tables show the relationships between Microsoft product versions or supplemental software and the they perform. Windows Client Releases All Initiator Roles All Responder Roles Windows 2000 Professional operating system Yes Yes Windows XP operating system Yes Yes Windows Vista operating system Yes Yes Windows 7 operating system Yes Yes Windows 8 operating system Yes Yes Windows 8.1 operating system Yes Yes Windows 10 operating system Yes Yes Windows Server Releases All Initiator Roles All Responder Roles Windows 2000 Server operating system Yes Yes Windows Server 2003 operating system Yes Yes Windows Server 2008 operating system Yes Yes Windows Server 2008 R2 operating system Yes Yes Windows Server 2012 operating system Yes Yes Windows Server 2012 R2 operating system Yes Yes Windows Server 2016 operating system Yes Yes Windows Server operating system Yes Yes Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior
also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition. Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription. <1> Section 1.3: Protocol Implementation Notes MUST / MUST NOT implementation notes RFC Requirement RFC 4306 Section Compliance statement "If a node receives a delete request for for which it has already issued a delete request, it MUST delete the outgoing SAs while processing the request and the incoming SAs while processing the response." Section 1.4 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "Note that Message IDs are cryptographically protected and provide protection against message replays. In the unlikely event that Message IDs grow too large to fit in 32 bits, the IKE_SA MUST be closed." Section 2.2 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "The management interface by which the Shared Secret is provided MUST accept ASCII strings of at least 64 octets and MUST NOT add a null terminator before using them as shared secrets. It MUST also accept a HEX encoding of Section 2.15 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008.
the Shared Secret." "IKEv2 simplifies this situation by requiring that ECN be usable in the outer IP headers of all tunnel-mode SAs created by IKEv2. Specifically, tunnel encapsulators and decapsulators for all SAs created by IKEv2 MUST support the ECN full-functionality option for tunnels specified in [RFC3168] and MUST implement the tunnel encapsulation and decapsulation processing specified in [RFC4301] to prevent discarding of ECN congestion indications." Section 3.6 Supported in Windows 2000 Professional through Windows and Windows 2000 Server through Windows Server 2008. "MUST be capable of being configured to send and accept the first two Hash and URL formats (with HTTP URLs)." Section 3.6 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. [RFC4306] IKEv2 SHOULD / SHOULD NOT implementation notes RFC Requirement RFC 4306 Section Compliance statement
"The initiator SHOULD repeat the request, but now with a KEi payload from the group the selected." Section 1.3 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "…regard connections as anomalous and their existence should they persist." Section 1.4 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "IKEv2 implementations SHOULD be of the maximum UDP message size supported." Section 2 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "An endpoint supporting a window size greater than one SHOULD be capable of processing incoming requests out of to maximize performance in the event of network failures or packet reordering." Section 2.4 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "An endpoint SHOULD suspect that the endpoint has failed Section 2.4 Supported in Windows 2000 Professional closed
based on routing information and initiate a request to see whether the other endpoint is alive." through Windows Vista and Windows 2000 Server through Windows Server 2008. "…implementations SHOULD reject as invalid a message with those payloads in any other order." Section 2.5 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "Implementations SHOULD support in-place rekeying of SAs." Section 2.8 Supported in Windows 2000 Professional through Windows and Windows 2000 Server through Windows Server 2008. "If redundant SAs are created though such a collision, the SA created with the lowest of the four used in the two exchanges SHOULD be by the endpoint that created it." Section 2.8 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "If an initiator receives a message on an SA for it has not received a response to its CREATE_CHILD_SA request, it SHOULD interpret Section 2.8 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server
that as a likely packet loss and retransmit the CREATE_CHILD_SA request." through Windows Server 2008. "If an error occurs outside the context of an IKE request (e.g., the node is getting ESP messages on a nonexistent SPI), the node SHOULD initiate an INFORMATIONAL exchange with a Notify payload describing the problem." Section 2.21 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "A node SHOULD treat such a message (and also a network message like ICMP destination unreachable) as a hint that there might be problems with SAs to that IP address and SHOULD initiate a liveness test for any such IKE_SA. An implementation SHOULD limit the frequency of such tests." Section 2.21 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "There are cases where a box decides to remove mappings that are still alive (for example, the keepalive interval is too long, or the NAT box is rebooted). To recover in these cases, hosts that are not behind a NAT SHOULD send all packets (including retransmission packets) to the IP address and port from the last valid authenticated Section 2.23 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008.
packet from the other end." "To assure maximum interoperability, implementations MUST be to send at least one of ID_IPV4_ADDR, ID_FQDN, ID_RFC822_ADDR, or ID_KEY_ID, and MUST be configurable to accept all of these types. Implementations SHOULD be capable of generating and accepting all of these types." Section 3.5 Supported in Windows 2000 Professional through Windows Vista and Windows 2000 Server through Windows Server 2008. "Implementations SHOULD be capable of being configured to send and accept Raw RSA keys." Section 3.6 Supported in Windows 2000 Professional through Windows and Windows 2000 Server through Windows Server 2008. "Note that since IKE passes an indication of initiator identity in message 3 of the protocol, the responder SHOULD NOT send EAP Identity requests. The initiator SHOULD, however, respond to such requests if it receives them." Section 3.16 Supported in Windows 2000 Professional through Windows and Windows 2000 Server through Windows Server 2008. [RFC4306] IKEv2 MAY implementation notes RFC Requirement RFC 4306 Section Compliance statement
Reliable delete X X X X X X X IKEv2 SA Correlation X X X IKEv2 Attributes X X X Denial of Service protection X X X X X X X Dead Peer Detection X * X Xbox Multiplayer Gaming (IKEv2) Vendor IDs X Security Realm (IKEv2) Vendor IDs X <3> Section 1.3.8: The IKE/AuthIP Coexistence extension is not implemented in Windows 2000, Windows XP and Windows Server 2003. <4> Section 1.7: The following table lists the algorithms that are implemented in each Windows release. Authentication method Windows 2000 Windows XP Windows Server 2003 Windows Vista and Windows Server 2008 Windows 7 and Windows Server 2008 R2 Windows 8 and and Windows Server 2012 and later Pre-shared key (as specified in ) X X X X X X RSA signature (as specified in [RFC2409]) X X X X X X
Authentication algorithm Windows 2000 Windows XP Windows Server 2003 Windows Vista and Windows Server 2008 Windows 7 and Windows Server 2008 R2 Windows 8 and later, and Windows Server 2012 and later NULL X X X X X X HMAC-SHA1-96 X X X X X X HMAC-MD5-96 X X X X X X AES-MAC X X SHA-256 X X Encryption algorithm Windows 2000 Windows XP Windows Server 2003 Windows Vista and Windows Server 2008 Windows 7 and Windows Server 2008 R2 Windows 8 and later, and Windows Server 2012 and later NULL [RFC2410] X X X X X X DES-CBC X X X X X X 3DES-CBC X X X X X X AES-CBC with 128, 192, and 256 Bit Keys X X X AES-GCM with 128, 192, and 256 Bit Keys X X <6> Section 1.7: The Microsoft implementation of IKE supports the following vendor IDs. The Microsoft implementation vendor ID (for example, in rows of the second table that follows, where the Common name starts with "Microsoft implementation"), is constructed by appending a 32-bit version number in network byte order to the 128-bit (16-byte) MD5 hash of the "MS NT5 ISAKMPOAKLEY" string. The version number is the additional 4 bytes that denote the Windows release, as detailed in the first table that follows.
Index A Abstract data model CGA authentication ( 29, 39) 42 57 29 fast failover client ( 29, 42) fast failover server ( 29, 44) IKE fragmentation ( 29, 35) NAT traversal ( 29, 33) negotiation discovery ( 29, 49) reliable delete ( 29, 53) 44 19 23 23 15 C 20 CGA authentication abstract data model ( 29, 39) 40 40 42 41 38 19 19 41 41 41 41 41 42 41 42 40 91 Client 42 43 overview ( 29, 42) 43 26 26 27 27 D Data model - abstract CGA authentication ( 29, 39) 42 57 29 fast failover client ( 29, 42) fast failover server ( 29, 44) IKE fragmentation ( 29, 35) NAT traversal ( 29, 33) negotiation discovery ( 29, 49) reliable delete ( 29, 53) 44 55 16 abstract data model ( 29, 57) 58 57 59 58 56 58 58 58 58 59 57 E 21 70 F 16 Fast failover client abstract data model ( 29, 42) 44 43 43 44 43 42 receiving message #1 ( 43, 43) 43 44 43 Fast failover server abstract data model ( 29, 44) 45 44 45 45 44 45 45 45 45 44 20 22 15 G 9 H Higher-layer triggered events 40
58 43 45 36 33 50 30 54 I 23 23 15 abstract data model ( 29, 35) 38 38 36 36 38 36 34 36 37 37 36 38 36 22 22 IKE MM SA negotiation ( 33, 36, 40, 43, 45) 17 72 51 72 13 Initialization 40 43 57 43 44 36 50 30 54 44 33 9 L Local events 42 59 44 45 38 34 53 32 56 M Message processing 41 58 43 45 36 33 52 31 receiving message #1 ( 33, 36, 41, 43, 43, 45, 52, 55, 55, 58) receiving message #2 ( 34, 37, 41, 45, 52, 58) receiving message #3 ( 41, 58) 41 receiving message #5 ( 41, 52) receiving message #6 ( 42, 53) receiving other messages ( 34, 37) 55 Messages 23 26 27 23 22 21 21 26 24 28 21 21 N NAT traversal abstract data model ( 29, 33) 33 33 34 33 overview ( 14, 32) 21 33 34 34 33 34 33 21 21 21 16 abstract data model ( 29, 49) 50 50 53 52 45 52 52 52 53 52 53 50
70 72 12 26 24 24 26 O Other local events 45 50 14 14 P Packets 51 50 72 19 19 19 19 19 19 73 Protocol 30 30 32 31 31 32 30 Protocol Details 29 Q 44 44 R 11 13 12 19 16 abstract data model ( 29, 53) 55 54 54 56 55 53 receiving message #1 ( 55, 55) 55 56 55 54 18 S 54 Security 72 72 72 28 Sequencing rules 41 58 43 45 36 33 52 31 55 Server 44 44 45 overview ( 29, 44) 45 44 56 20 Syntax 22 21 21 21 T Time events 44 44 Timer events 42 59 45 38 34 53 32 55 45 Timers 40 43 55 57 43 44 38 38 36 33 50 30 54 44 91