Network Working Group R. Singh, Ed. Internet-Draft G. Kalyani Intended status: Standards Track Cisco Expires:April 28,August 12, 2011 Y. Nir Check Point Y. Sheffer Independent D. Zhang HuaweiOctober 25, 2010February 8, 2011 Protocol Support for High Availability of IKEv2/IPsecdraft-ietf-ipsecme-ipsecha-protocol-02draft-ietf-ipsecme-ipsecha-protocol-03 Abstract The IPsec protocol suite is widely used forthe deployment of virtual private networks (VPNs).business-critical network traffic. In order to makesuch VPNsIPsec deployments highly available, more scalable and failure-resistant,these VPNsthey are often implemented as IPsec High Availability (HA) clusters. However there are many issues in IPsec HA clustering, and in particular in IKEv2 clustering. An earlier document, "IPsec Cluster Problem Statement", enumerates the issues encountered in the IKEv2/IPsec HA cluster environment. This document attempts to resolve these issues with the least possible change to the protocol. This document proposes an extension to the IKEv2 protocol to solve the main issues of "IPsec Cluster Problem Statement" in the commonly deployed hot-standby cluster, and provides implementation advice for other issues. The main issues to be solved are the synchronization of IKEv2 Message ID counters, and of IPsec Replay Counters. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onApril 28,August 12, 2011. Copyright Notice Copyright (c)20102011 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . .34 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . .45 3. Issues Resolved from IPsec Cluster Problem Statement . . . . .56 4. The IKEv2/IPsec SA Counter Synchronization Problem . . . . . .57 5. SA Counter Synchronization Solution . . . . . . . . . . . . . 8 5.1. Processing Rules for IKE Message ID Synchronization . . . 10 5.2. Processing Rules for IPsec Replay Counter Synchronization . . . . . .7. . . . . . . . . . . . . . . 11 6. IKEv2/IPsec Synchronization Notification Payloads . . . . . .911 6.1. The IKEV2_MESSAGE_ID_SYNC_SUPPORTED Notification . . . . . 11 6.2. The IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED Notification . . . 12 6.3. The IKEV2_MESSAGE_ID_SYNC Notification . . . . .9 6.2. IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED. . . . . 12 6.4. The IPSEC_REPLAY_COUNTER_SYNC Notification . . . . . .10 6.3. IKEV2_MESSAGE_ID_SYNC. . 13 7. Implementation Details . . . . . . . . . . . . . . . . .10 6.4. IPSEC_REPLAY_COUNTER_SYNC. . . 14 8. IKE SA and IPsec SA Message Sequencing . . . . . . . . . . . . 14 8.1. Handling of Pending IKE Messages .11 7. Implementation Details. . . . . . . . . . . . 15 8.2. Handling of Pending IPsec Messages . . . . . . . .12 8. Step by Step Details. . . . 15 8.3. IKE SA Inconsistencies . . . . . . . . . . . . . . . . . .1315 9.Security ConsiderationsStep by Step Details . . . . . . . . . . . . . . . . . . .14. . 15 10. Interaction with other drafts . . . . . . . . . . . . . . . .1416 11. Security Considerations . . . . . . . . . . . . . . . . . . . 17 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . .15 12.17 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .15 13.18 14. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . .15 13.1.18 14.1. Draft -03 . . . . . . . . . . . . . . . . . . . . . . . . 18 14.2. Draft -02 . . . . . . . . . . . . . . . . . . . . . . . .16 13.2.18 14.3. Draft -01 . . . . . . . . . . . . . . . . . . . . . . . .16 13.3.18 14.4. Draft -00 . . . . . . . . . . . . . . . . . . . . . . . .16 14.19 15. References . . . . . . . . . . . . . . . . . . . . . . . . . .16 14.1.19 15.1. Normative References . . . . . . . . . . . . . . . . . . .16 14.2.19 15.2. Informative References . . . . . . . . . . . . . . . . . .1719 Appendix A. IKEv2 Message ID Sync Examples . . . . . . . . . . .1720 A.1. Normal Failover - Example 1 . . . . . . . . . . . . . . .1720 A.2. Normal Failover - Example 2 . . . . . . . . . . . . . . .1820 A.3. Simultaneous Failover . . . . . . . . . . . . . . . . . .1820 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .1821 1. Introduction The IPsec protocol suite, including IKEv2, is a major building block of virtual private networks (VPNs). In order to make such VPNs highly available, more scalable and failure-resistant, these VPNs are implemented as IKEv2/IPsec Highly Available (HA) cluster. However there are many issues with the IKEv2/IPsec HA cluster. The problem statement draft Section 4 enumerates the issues around the IKEv2/ IPsec HA cluster solution. In the case of a hot-standby cluster implementation of IKEv2/IPsec based VPNs, the IKEv2/IPsec session is first established between the peer and the active member of the cluster. Later, the active member continuously syncs/updates the IKE/IPsec SA state to the standby member of the cluster. This primary SA state sync-up takes place upon each SA bring-up and/or rekey. Performing the SA state synchronization/update for every single IKE and IPsec message is very costly, so normally it is done periodically. As a result, when the failover event happens, this is first detected by the standby member and, possibly after a considerable amount of time, it becomes the active member. During this failover process the peer is unaware of the failover event, and keeps sending IKE requests and IPsec packets to the cluster, as in fact it is allowed to do because of the IKEv2 windowing feature. After the newly-active member starts, it detects the mismatch in IKE Message ID values and IPsec replay counters and needs to resolve this situation. Please see Section 4 for more details of the problem. This document proposes an extension to the IKEv2 protocol to solve the main issues of IKE Message ID synchronization and IPsec SA replay counter synchronization and gives implementation advice for others. Following is a summary of the solutions provided in this document: o IKEv2 Message ID synchronization: this is done by syncing up the expected send and receive Message ID values with the peer, and updating the values at the newly active cluster member. o IPsec Replay Counter synchronization: this is done by incrementing the cluster's outgoing SA replay counter values by a "large"number, and synchronizing these values withnumber; in addition, the newly-active member requests thepeer. Thepeersend its outgoing SA replyto increment the replay counterinvalues it is using for theresponse.peer's outgoing traffic. Although this document describes the IKEv2 Message ID and IPsec replay counter synchronization in the context of an IPsec HA cluster, the solution provided is generic and can be used in other scenarios where IKEv2 Message ID or IPsec SA replay counter synchronization may be required. Implementations differ on the need to synchronize the IKEv2 Message ID and/or IPsec replay counters. Both of theseproblemproblems are handled separately, using a separate notification for each capability. This provides the flexibility of implementing either or both of these solutions. 2. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in[RFC2119].[1]. "SA Counter Synchronization Request/Response" are the request viz. response of theinformationinformational exchange defined in this document to synchronize the IKEv2/IPsec SA counter information between one member of the cluster and the peer. Some of the terms listed below are reused from[RFC6027][2] with further clarification in the context of the current document. o "Hot Standby Cluster", or "HS Cluster" is a cluster where only one of the members is active at any one time. This member is also referred to as the "active" member, whereas the other(s) are referred to as "standby" members. VRRP[RFC5798][5] is one method of building such a cluster. The goal of the Hot Standby Cluster isthat it creates illusionto create the illusion of a single virtual gateway to the peer(s). o "Active Member" is the primary member in the Hot-Standby cluster. It is responsible for forwarding packets on behalf of the virtual gateway. o "Standby Member" is the primary backup member. This member takes control, i.e. becomes the active member, after the failover event. o "Peer" is an IKEv2/IPsec endpoint that maintainsa VPNan IPsec connection with the Hot-Standby cluster. The Peer identifies the cluster by the cluster's (single) IP address. If a failover event occurs, the standby member of the cluster becomes active, and the peer normally doesn't notice that failover has taken place.o "Failover Count" is a global failover event counter maintained by the HA cluster and incremented by 1 upon each failover event inAlthough we treat theHApeer as a single entity, it may also be a cluster.All members of the HA cluster share the failover count.o "Multiple failover" is the situation where, in a cluster with three or more members, multiple failoverhappensevents happen in rapidsuccession.succession, e.g. from M1 to M2, and then to M3. It is our goal that the implementation should be able to handle this situation, i.e. to handle the new failover event even if it is still processing the old failover. o "Simultaneous failover" is the situation where two clusters havea VPNan IPsec connection between them, and failover happens attheboth ends at the same time. It is our goal thatimplementationimplementations should be able to handle simultaneous failover. The generic term "IKEv2/IPsec SA Counters" is used throughout this document. This term refers to both IKEv2 Message ID counters(mandatory,and IPsec replay counters. According to the IPsec standards, the IKEv2 Message ID counter is mandatory, and used to ensure reliable delivery as well as to protect against message replay inIKEv2) andIKEv2; the IPsec SA replay counters(optional,are optional, and are used to provide the IPsecanti-replay feature).anti- replay feature. 3. Issues Resolved from IPsec Cluster Problem Statement The IPsec Cluster Problem Statement[RFC6027][2] enumerates the problems raised by IPsec clusters. The following table lists the problem statement's sections that are resolved by this document. o 3.2. Lots of Long Lived State o 3.3. IKE Counters o 3.4. Outbound SA Counters o 3.5. Inbound SA Counters o 3.6. Missing Synchronization Messages o 3.7. Simultaneous use of IKE and IPsec SAs by Different Members * 3.7.1. Outbound SAs using counter modes o 3.8. Different IP addresses for IKE and IPsec o 3.9. Allocation of SPIs The main problem areas are solved using the protocol extension definedbelow, and additionallybelow; additionally, this document provides implementation advice for other issues,givenas follows. o Section 3.2This sectionof the Problem Statement mentions that there is a large amount of state that needs to be synchronized. However if state is not synchronized, this is not really an interesting cluster: failover is equivalent to a reboot of the cluster member, and so the issue need not be solved with a protocolextensions.extension. o 3.3, 3.4,3.5, and 3.6 are solved by this document. Please see Section 4, for more details. o 3.7 is an implementation problem that needs to be solved while building IPsec clusters. However, the peers should be required to accept multiple parallel SAs for 3.7.1. o 3.8 can be solved by using the IKEv2 Redirect mechanism[RFC5685].[6]. o 3.9 discusses the avoidance of collisions where the same SPI value is used by multiple cluster members. This is outside the document's scope since the problem needs to be solved internally to the cluster and does not involve the peer. 4. The IKEv2/IPsec SA Counter Synchronization Problem The IKEv2 protocol[RFC5996][3] states that "An IKE endpoint MUST NOT exceed the peer's stated window size for transmitted IKE requests". All IKEv2 messages are required to follow a request-response paradigm. The initiator of an IKEv2 request MUST retransmit the request, until it has received a response from the peer. IKEv2 introduces a windowing mechanism that allows multiple requests to be outstanding at a given point of time, but mandates that thesendersender's window should not move until the oldest message it has sentfrom one peer to anotheris acknowledged. Loss of even a single message leads to repeated retransmissions followed by an IKEv2 SA teardown if the retransmissionsareremain unacknowledged. An IPsec Hot Standby Cluster is required to ensure that in the case of failover, the standby member becomes active immediately. The standby member is expected to have the exact value of the Message ID counter as the active member had before failover. Even assuming the best effort to update the Message ID values from active to standby member, the values at the standby member can still be stale due to the following reasons: o The standby member is unaware of the last message that was received and acknowledged by the previously active member, as the failover event could have happened before the standby member could be updated. o The standby member does not have information about on-going unacknowledged requestsreceivedsent by the previously active member. As a result after the failover event, the newly active member cannot retransmit those requests. When a standby member takes over as the active member, it can only initialize the Message ID values from the previously updated values. This would make it reject requests from the peer when these values are stale. Conversely, the standby member may end up reusing a stale Message ID value which would cause the peer to drop the request. Eventually there is a high probability of the IKEv2 and corresponding IPsec SAs getting torn down simply because of a transitory Message ID mismatch and retransmission of requests, negating the benefits of the high availability cluster despite the periodic update between the cluster members. A similar issue is also observed with IPsec anti-replay counters if anti-replayprotection/ESNprotection isimplemented,enabled, which is commonly the case. Regardless of how well the ESP and AH SA counters are synchronized from the active to the standby member, there is a chance that the standby member would end up with stale counter values. The standby member would then use those stale counter values when sending IPsec packets. The peer would reject/drop such packets since when the anti-replay protection feature is enabled, duplicate use of counters is not allowed. Note that IPsec allows the sender to skip some counter values and continue sending with higher counter values. We conclude that a mechanism is required to ensure that the standby member has correct Message ID and IPsec counter values when it becomes active, so that sessions are not torn down as a result of mismatched counters. 5. SA Counter Synchronization Solution This document proposes two separate approaches to resolving the issues of mismatched IKE Message ID values and IPsec counter values. o Ingeneral, whenthestandby member becomescase of IKE Message ID values, the newly active cluster memberafterand thefailover event,peer negotiate a pair of new values so that future IKE messages will not be dropped. o For IPsec counter values, thestandbynewly-active membersends an authenticated IKEv2 request toand thepeer, asking it to send its SA counter values. The standby member then updates its own SApeer both increment their respective countervalues and can resume normally sending and receiving protocol messages.values, "skipping forward" by a large number, to ensure that no IPsec counters are ever reused. Although conceptually separate, the two synchronization processes would typically take place simultaneously. First, the peerMUSTand the active member of the cluster negotiateitstheir ability to support IKEv2 Message ID synchronizationwith the active member of the clusterand/or IPsec Replay Counter synchronization. This is done bysendingexchanging one or both of the IKEV2_MESSAGE_ID_SYNC_SUPPORTEDnotification inand IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED notifications during the IKE_AUTH exchange.Similarly, to support IPsec Replay Counter synchronization,When negotiating these capabilities, thepeerresponder MUSTnegotiate this capability with the active memberNOT assert support of a capability unless such support was asserted by theclusterinitiator. Only a capability whose support was asserted bysendingboth parties can be used during theIPSEC_REPLAY_COUNTER_SYNC_SUPPORTED notification inlifetime of theIKE_AUTH exchange.SA. This per-IKE SA information is shared with the other cluster members. Peer Active Member - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HDR, SK {IDi, [CERT], [CERTREQ], [IDr], AUTH, [N(IKEV2_MESSAGE_ID_SYNC_SUPPORTED),] [N(IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED),] SAi2, TSi, TSr} ----------> <-------- HDR, SK {IDr, [CERT+], [CERTREQ+], AUTH, [N(IKEV2_MESSAGE_ID_SYNC_SUPPORTED),] [N(IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED),] SAr2, TSi, TSr}When the peer and active member both support SA counter synchronization, the active member MUST informAfter a failover event, the standby memberof the SA counter synchronization capability after the establishment ofMAY use the IKESA. The standby member can then use thisMessage ID and/or IPsec Replay Counter synchronization capability when it becomes the activemember after a failover event.member, and provided support for the capabilities used has been negotiated. Following that, the peer MUST respond to any synchronization message it receives from the newly-active cluster member, subject to the rules noted below. After the failover event, when the standby member becomes active, it has torequest thesynchronize its SA countersfromwith the peer. There are now three possible cases: 1. Thenewly-activecluster member wishes to only perform IKE Message ID value synchronization. In this case it initiatesthe synchronization request withan Informationalexchangeexchange, with Message ID zerocontaining either the notification IKEV2_MESSAGE_ID_SYNC or the two notifications IKEV2_MESSAGE_ID_SYNCandIPSEC_REPLAY_COUNTER_SYNC, depending on whetherthesynchronization is to be done for IKEv2 Message IDs or for both IKEv2 Message IDs and IPsec replay counters.sole notification IKEV2_MESSAGE_ID_SYNC. 2. If theactivenewly-active memberhaswishes to perform onlynegotiated synchronization ofIPsecReplay Counters, the request is sent asreplay counter synchronization, it generates a regular IKEv2 Informational exchange(i.e. with a non-zerousing the current MessageID)ID values, and containing thenotification IPSEC_REPLAY_COUNTER_SYNC. The initiatorIPSEC_REPLAY_COUNTER_SYNC notification. 3. If synchronization of both counters is needed, theIKEv2 Message ID synchronization request sends its expected send and receive Messagecluster member generates a zero-Message IDvaluesmessage as in case #1, and"failover count" in a IKEV2_MESSAGE_ID_SYNC notification. The responder compares the received values with its local values. For both send and receive values, The higher between the cluster member's and the local value is selected, and sent in the response message with the notification IKEV2_MESSAGE_ID_SYNC. The initiator now updates its send and receive IKEv2 Message IDs to the values received in the response and can now start a normal IKEv2 message exchange. The initiator of an IPsec Replay Counter synchronization sends the incremented outgoing IPsec SA reply counter value and a "failover count" in a IPSEC_REPLAY_COUNTER_SYNC notification in IKEv2 INFORMATIONAL exchange. The responder updates its incoming IPsec SA counter values according to the received value. The responder now sends its own incremented outgoing IPsec SA Replay Counter value in a synchronization response message, with the same IPSEC_REPLAY_COUNTER_SYNC notification. The initiator can now update its incoming IPsec SA counter to values receivedincludes both notifications in this message. This figure contains theresponseIKE messageand can start normal IPsec data traffic. The IKEV2_MESSAGE_ID_SYNC notification payload contain nonce data to avoid a denial-of-service (DoS) attack due to replay ofexchange used for SA countersynchronization response. The nonce values are selected randomly on each new notification and MUST be validated by the receiver.synchronization. Thenonce data sent in the response MUST match the nonce data sent by the newly-active member in its request. If the nonce data received in the response does not match the request's nonce data,following subsections describe thecluster member MUST silently discard this response, and SHOULD revert to normal IKEv2 behaviordetails ofretransmittingtherequestsender andwaiting for a genuine a reply from the peer. Eventually this might result in the SA being torn down becausereceiver processing ofexcessive retransmissions.each message. Standby [Newly Active] Member Peer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HDR, SK {N(IKEV2_MESSAGE_ID_SYNC), [N(IPSEC_REPLAY_COUNTER_SYNC)]} --------> <--------- HDR, SK{N(IKEV2_MESSAGE_ID_SYNC), [N(IPSEC_REPLAY_COUNTER_SYNC)]}{N(IKEV2_MESSAGE_ID_SYNC)} Alternatively, if only IPsec Replay Counter synchronization is desired, a normalInformationInformational exchange is used, where the Message ID is non-zero: Standby [Newly Active] Member Peer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HDR, SK{N(IPSEC_REPLAY_COUNTER_SYNC)} --------> <---------HDR, SK {N(IPSEC_REPLAY_COUNTER_SYNC)}HDR 5.1. Processing Rules for IKE Message ID Synchronization The newly-active member sends a request containing two counter value, one for the member (itself) and another for the peer, as well as a random nonce. We denote the values M1 and P1. The peer responds with a message containing two counter values, M2 and P2. The goal of the rules below is to prevent an attacker from replaying a synchronization message, thereby invalidating IKE messages that are currently in process. o M1 is the next sender's Message ID to be used by the member. M1 MUST be chosen so that it is larger than any value known to have been used. It is RECOMMENDED to increment the known value at least by the size of the IKE sender window. o P1 SHOULD be 1 more than the last Message ID value received from the peer, but may be any higher value. o The member SHOULD communicate the sent values to the other cluster members, so that if a second failover event takes place, the synchronization message is not replayed. Such a replay would result in the eventual deletion of the IKE SA (see below). o The peer MUST reject any received synchronization message if M1 is lower than or equal to the highest value it has seen from the cluster. This includes any previous received synchronization messages. o M2 MUST be at least the higher of the received M1, and one more than the highest sender value received from the cluster. This includes any previous received synchronization messages. o P2 MUST be the higher of the received P1 value, and one more than the highest sender value used by the peer. o The request contains a Nonce field. This field MUST be returned in the response, unchanged. A response MUST be silently dropped if the received Nonce does not match the one that was sent. o Both the request and the response MUST NOT contain any additional payloads, other than an optional IPSEC_REPLAY_COUNTER_SYNC notification in the request. o The request and the response MUST both be sent with a Message ID value of zero. 5.2. Processing Rules for IPsec Replay Counter Synchronization Upon failover, the newly-active member MUST increment its own Replay Counter (the counter used for outgoing traffic), so as to prevent the case of its traffic being dropped by the peer as replay. We note that IPsec allows the replay counter to skip forward by any amount. The estimate is based on the outgoing IPsec bandwidth and the frequency of synchronization between cluster members. In those implementations where it is difficult to estimate this value, the counter can be incremented by a very large number, e.g. 2**30. In the latter case, a rekey SHOULD follow shortly afterwards, to ensure that the counter never wraps around. Next, the cluster member estimates the number of incoming messages it might have missed, using similar logic. The member sends out a IPSEC_REPLAY_COUNTER_SYNC notification, either stand-alone or together with a IKEV2_MESSAGE_ID_SYNC notification. If the IPSEC_REPLAY_COUNTER_SYNC is included in the same message as IKEV2_MESSAGE_ID_SYNC, the peer MUST process the Message ID notification first (which might cause the entire message to be dropped as a replay). Then, it MUST increment the replay counters for all Child SAs associated with the current IKE SA by the amount requested by the cluster member. 6. IKEv2/IPsec Synchronization Notification Payloads This section lists the new notificationpayloadspayload types defined by this extension. 6.1. The IKEV2_MESSAGE_ID_SYNC_SUPPORTEDIKEV2_MESSAGE_ID_SYNC_SUPPORTED:Notification This notification payload is included in the IKE_AUTHrequest/responserequest/ response to indicate support of the IKEv2 Message ID synchronization mechanism described in this document. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload |C| RESERVED | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Protocol ID(=0)| SPI Size (=0) | Notify Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The 'Next Payload', 'Payload Length', 'Protocol ID', 'SPI Size', and 'Notify Message Type' fields are the same as described in Section 3 of[RFC5996] .[3]. The 'SPI Size' field MUST be set to 0 to indicate that the SPI is not present in this message. The 'Protocol ID' MUST be set to 0, since the notification is not specific to a particular security association. The 'Payload Length' field is set to the length in octets of the entire payload, including the generic payload header. The 'Notify Message Type' field is set to indicate IKEV2_MESSAGE_ID_SYNC_SUPPORTED, value TBD by IANA. There is no data associated with this notification. 6.2. The IPSEC_REPLAY_COUNTER_SYNC_SUPPORTEDIPSEC_REPLAY_COUNTER_SYNC_SUPPORTED:Notification This notification payload is included in the IKE_AUTHrequest/responserequest/ response to indicate support for the IPsec SA Replay Counter synchronization mechanism described in this document. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload |C| RESERVED | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Protocol ID(=0)| SPI Size (=0) | Notify Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The 'Next Payload', 'Payload Length', 'Protocol ID', 'SPI Size', and 'Notify Message Type' fields are the same as described in Section 3 of[RFC5996][3] . The 'SPI Size' field MUST be set to 0 to indicate that the SPI is not present in this message. The 'Protocol ID' MUST be set to 0, since the notification is not specific to a particular security association. The 'Payload Length' field is set to the length in octets of the entire payload, including the generic payload header. The 'Notify Message Type' field is set to indicate IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED, value TBD by IANA. There is no data associated with this notification. 6.3. The IKEV2_MESSAGE_ID_SYNCIKEV2_MESSAGE_ID_SYNC :Notification This notification payload type (value TBD by IANA) is defined to synchronize the IKEv2 Message ID values between the newly-active (formerly standby) cluster member and the peer. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload||C| RESERVED | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Protocol ID(=0)| SPI Size (=0) | Notify Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Failover Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Nonce Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EXPECTED_SEND_REQ_MESSAGE_ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EXPECTED_RECV_REQ_MESSAGE_ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ It contains the following data. oFailover Count (4 octets): a running count of failover events between cluster members, it is initialized to 0 when the cluster is first set up, and incremented by 1 upon each failover event. oNonce Data (4 octets): the random nonce data. The data should be identical in the synchronization request and response. o EXPECTED_SEND_REQ_MESSAGE_ID (4 octets): this field is used by the sender of this notification payload to indicate the Message ID it will use in the next request that it will send to the other protocol peer. o EXPECTED_RECV_REQ_MESSAGE_ID (4 octets): this field is used by the sender of this notification payload to indicate the Message ID it is expecting in the next request to be received from the other protocol peer. 6.4. The IPSEC_REPLAY_COUNTER_SYNCIPSEC_REPLAY_COUNTER_SYNC:Notification This notification payload type (value TBD by IANA) is defined to synchronize the IPsec SA Replay Counters between the newly-active (formerly standby) cluster member and the peer. Since there may be numerous IPsec SAs established under a single IKE SA, we do not directly synchronize the value of each one. Instead, a delta value is sent and all Replay Counters forchildChild SAs of this IKE SA are incremented by the same value. Note that this solution requires that all these Child SAs either use or do not use Extended Sequence Numbers[RFC4301].[4]. This notification is only sent by the cluster. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload|E||C| RESERVED | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Protocol ID(=0)| SPI Size (=0) | Notify Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |OutgoingIncoming IPsec SAcounterdelta value |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The notification payload contains the following data. o E (1 bit): The ESN bit. This MUST be 1 if+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The notification payload contains theIPsec SAs were established with Extended Sequence Numbers.following data. oOutgoingIncoming IPsec SA delta value (4 or 8octects):octets): The senderwill incrementrequests that the peer should increment all the Child SA Replay Counters forits outgoingthe sender's incoming (the peer's outgoing) traffic by this value. The size of this field depends on the ESNbit:bit associated with the Child SAs: if the ESN bit is 1,itsthe field's size is 8 octets, otherwise it is 4 octets. We note that this constrains the Child SAs of each IKE SA to either all have the ESN bit on or off. 7. Implementation DetailsThe Message ID value used in the Informational exchange that contains the IKEV2_MESSAGE_ID_SYNC notification MUST be zero so that it isThis protocol does notvalidated upon receipt as required by normal IKEv2 windowing. The Message ID zero MUST be accepted only in an Informational exchange that contains a notification of type IKEV2_MESSAGE_ID_SYNC. Ifchange anyInformational exchange has aof the existing IKEv2 rules regarding Message IDzero, but not this notification type, such messages MUST be discarded upon decryption and the INVALID_SYNTAX notification SHOULD be sent. Other payloads MUST NOT be sent in this Informational exchange. Whenever an IKEV2_MESSAGE_ID_SYNC or IPSEC_REPLAY_COUNTER_SYNC notification payload is received with an invalid failover count or invalid nonce data, the event SHOULD be logged.values. The standby member can initiate the synchronization of IKEv2 Message ID's under different circumstances. o When it receives a problematic IKEv2/IPsec packet, i.e. a packet outside its expected receive window. o When it has to send the first IKEv2/IPsec packet after a failover event. o When it has just received control from the active member and wishes to update the values proactively, so that it need not start this exchange later, when sending or receiving the request. The standby member can initiate the synchronization of IPsec SA Replay Counters: o If there has been traffic using the IPsec SA in the recent past and the standby member suspects that its Replay Counter may be stale. Since there can be a large number of sessions at the standby member, and sending synchronization exchanges for all of them may result in overload, the standby member can choose to initiate the exchange in a "lazy" fashion: only when it has to send or receive the request. In general, the standby member is free to initiate this exchange at its discretion.A8. IKE SA and IPsec SA Message Sequencing The straightforward definitions of message sequence numbers, retransmissions and replay protection in IPsec and IKEv2 are strained by the failover scenarios described in this document. This section describes some policy choices that need to be made by implementations in this setting. 8.1. Handling of Pending IKE Messages After sending its "receive" counter, the cluster memberwhich has not announced its capability by using IKEV2_MESSAGE_ID_SYNC_SUPPORTEDMUSTNOT send orreject any incoming IKE messages that are outside its declared window. A similar rule applies to the peer. Local policies vary, and strict implementations will reject any incoming IKE message arriving before Message ID synchronization is complete. 8.2. Handling of Pending IPsec Messages For IPsec, there is often a trade-off between security and reliability of the protected protocols. Here again there is some leeway for local policy. Some implementations might accept incoming traffic that is outside thenotification IKEV2_MESSAGE_ID_SYNC. A cluster member which has not announced its capability by using IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED MUST NOT send orreplay window for some time after the failover event. Strict implementations will only accept traffic that's inside thenotification IPSEC_REPLAY_COUNTER_SYNC. If"safe" window. 8.3. IKE SA Inconsistencies IKEv2 is normally apeer receivesreliable protocol. As long as an IKE SA is valid, both peers share aIKEV2_MESSAGE_ID_SYNC or IPSEC_REPLAY_COUNTER_SYNC request although it had not announcedsingle, consistent view of theappropriate capabilityIKE SA and all associated Child SAs. Failover situations as described inthe IKE_AUTH exchange, then it MUST silently ignorethismessage. As usualdocument may involve forced deletion of IKE messages, resulting inIKEv2, if anyinconsistencies, such as Child SAs that exist on only one of thenotification payloads defined here is malformed,peers. Such SAs would cause an INVALID_SPI to be returned when used by that peer. The Working Group discussed at some point a proposed set of rules for dealing with such situations. However we believe that these situations should be rare in practice; as a result thereceiver must announce this fact using"default" behavior of tearing down theINVALID_SYNTAX notification. 8.entire IKE SA is to be preferred over the complexity of dealing with a multitude of edge cases. 9. Step by Step Details This section goes through the sequence of steps of a typical failover event, looking at a case where the IKEv2 Message ID values are synchronized. o The active cluster member and the peer device establish the session. They both announce the capability to synchronize counter information by sending the IKEV2_MESSAGE_ID_SYNC_SUPPORTED notification in the IKE_AUTH Exchange. oTheSome time later, the active member dies, and a standby member takes over. The standby member sends its own idea of the IKE Message IDs (both incoming and outgoing) to the peer in an Informational message exchange with Message ID zero. o The peer first authenticates themessage and then validates the failover count.message. The peer compares the received values with the values available locally and picks the higher value. It then updates its Message IDs with the higher values and also propose the same values in its response. o The peer should not wait forany pending responses while responding with the new Message ID values. For example, if the window size is 5 and the peer's window is 3-7, and if the peer has sent requests 3, 4, 5, 6, 7 and received responses only for 4, 5, 6, 7 but not for 3, then it should include the value 8 in its EXPECTED_SEND_REQ_MESSAGE_ID payload and should not wait for a response to message 3 anymore. o Similarly, the peer should also not wait forany pending(incoming) requests.responses while responding with the new Message ID values. Forexampleexample, if the window size is 5 and the peer's window is3-73-7, and if the peer hasreceivedsent requests 3, 4, 5, 6, 7but not 3, then it should send the value 8 in the EXPECTED_RECV_REQ_MESSAGE_ID payload, and should not expect to receive message 3 anymore. In case multiple successive failover events and sync request getting lost, the failover count value at peer will not be updated and new standby member will become active with incremented failover count value. So, peer can receive valid failover count value which is not just incremented by 1 in case of multiple failover. Accepting incremented failover count within a range is allowed and increases interoperability. 9. Security Considerations Since Message ID synchronization messages need to be sent with Message ID zero, they are potentially vulnerable to replay attacks. Because of the semantics of this protocol, these can only be denial- of-service (DoS) attacks, and we are aware of two variants. o Replay of Message ID synchronization request: This is countered by use of the Failover Count, since synchronization starts after the failover event and each member of the cluster needs to be aware of the failover event. The receiver of the synchronization request should verify the received Failover Countandmaintain its own copy of it. If a peer receives a synchronization request with an already observed Failover Count, it can safely discard the request if it has alreadyreceivedvalid IKEv2 request/response from other side peer after sync exchange. The peer will beresponses only for 4, 5, 6, 7 but notbe aware that sync response has reached to other side till it receives a valid IKEv2 request/response from other side. The peer can send the cached responseforsync request till3, then ithasshould include the value 8 in its EXPECTED_SEND_REQ_MESSAGE_ID payload and should notreceived valid request/response from other sidewait for a response to message 3 anymore. o Similarly, the peeror failover count hasshould also notincreased. o Replay ofwait for pending (incoming) requests. For example if theMessage ID synchronization response: Thiswindow size iscountered by sending5 and thenonce data along withpeer's window is 3-7 and if thesynchronization payload. The same nonce datapeer hasto be returned in response. Thus the standby member will accept a reply only for the current request. After it receives a valid response,received requests 4, 5, 6, 7 but not 3, then itMUST NOT processshould send thesame response againvalue 8 in the EXPECTED_RECV_REQ_MESSAGE_ID payload, andMUST discard any additional responses.should not expect to receive message 3 anymore. 10. Interaction with other drafts The usage scenario of the IKEv2/IPsec SA counter synchronization proposal is that an IKEv2 SA has been established between the active member of a hot-standby cluster and a peer, then a failover event occurred with the standby member becoming active. The proposal further assumes that the IKEv2 SA state was continuously synchronized between the active and standby members of the cluster before the failover event. o Session resumption[RFC5723][7] assumes that a peer (client or initiator) detects the need to re-establish the session. In IKEv2/IPsec SA counter synchronization, it is the newly-active member (a gateway or responder) that detects the need to synchronize the SA counter after the failover event. Also in a hot-standby cluster, the peer establishes the IKEv2/IPsec session with a single IP address that represents the whole cluster, so the peer normally does not detect the event of failover in the cluster unless the standby member takes too long to become active and the IKEv2 SA times out by use of the IKEv2 liveness check mechanism. To conclude, session resumption and SA counter synchronization after failover are mutually exclusive. o The IKEv2 Redirect mechanism for load-balancing[RFC5685][6] can be used either during the initial stages of SA setup (the IKE_SA_INIT and IKE_AUTH exchanges) or after session establishment. SA counter synchronization is only useful after the IKE SA has been established and a failover event has occurred. So, unlike Redirect, it is irrelevant during the first two exchanges. Redirect after the session has been established is mostly useful for timed or planned shutdown/maintenance. A real failover event cannot be detected by the active member ahead of time, and so using Redirect after session establishment is not possible in the case of failover. So, Redirect and SA counter synchronization after failover are mutually exclusive. o IKEv2 Failure Detection[I-D.ietf-ipsecme-failure-detection][8] solves a similar problem where the peer can rapidly detect that a cluster member has crashed based on a token. It is unrelated to the current scenario because the goal in failover is for thepeer not to notice thatpeer not to notice that a failure has occurred. 11. Security Considerations Since Message ID synchronization messages need to be sent with Message ID zero, they are potentially vulnerable to replay attacks. Because of the semantics of this protocol, these can only be denial- of-service (DoS) attacks, and we are aware of two variants. o Replay of Message ID synchronization request: This is countered by the requirement that the Send counter sent by the cluster member should always be monotonically increasing, a rule that the peer enforces by silently dropping messages that contradict it. o Replay of the Message ID synchronization response: This is countered by sending the nonce data along with the synchronization payload. The same nonce data has to be returned in the response. Thus the standby member will accept a reply only for the current request. After it receives afailure has occurred. 11.valid response, it MUST NOT process the same response again and MUST discard any additional responses. 12. IANA Considerations This document introduces four new IKEv2 Notification Message types as described in Section6.The6. The new Notify Message Types must be assigned values between 16396 and 40959.o IKEV2_MESSAGE_ID_SYNC_SUPPORTED. o IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED. o IKEV2_MESSAGE_ID_SYNC. o IPSEC_REPLAY_COUNTER_SYNC. 12.+-------------------------------------+-------------+ | Name | Value | +-------------------------------------+-------------+ | IKEV2_MESSAGE_ID_SYNC_SUPPORTED | TBD by IANA | | IPSEC_REPLAY_COUNTER_SYNC_SUPPORTED | TBD by IANA | | IKEV2_MESSAGE_ID_SYNC | TBD by IANA | | IPSEC_REPLAY_COUNTER_SYNC | TBD by IANA | +-------------------------------------+-------------+ 13. Acknowledgements We would like to thank Pratima Sethi and Frederic Detienne for their review comments and valuable suggestions for the initial version of the document. We would also like to thank the following people (in alphabetical order) for their review comments and valuable suggestions: Dan Harkins, Paul Hoffman, Steve Kent, Tero Kivinen, David McGrew,Pekka Riikonen,andYaron Sheffer. 13.Pekka Riikonen. 14. Change Log This section lists all the changes in this document. NOTE TO RFC EDITOR: Please remove this section before publication.13.1.14.1. Draft -03 Clarified the rules for Message ID sync, so that replay attacks can be avoided without a failover counter. Added wording regarding inconsistent IKE state (basically choosing to ignore the problem) and further rules dealing with pending traffic. The IPsec replay counter delta value now refers to incoming traffic. The associated notification is only sent from the cluster to the peer, and not back. 14.2. Draft -02 Addressed comments by Yaron Sheffer posted on the WG mailing list. Numerous editorial changes.13.2.14.3. Draft -01 Added "Multiple and Simultaneous failover' scenarios as pointed out by Pekka Riikonen. Now document provides a mechanism to sync either IKEv2 message or IPsec replay counter or both to cater different types of implementations. HA cluster's "failover count' is used to encounter replay of sync requests by attacker. The sync of IPsec SA replay counter optimized to to have just one global bumped-up outgoing IPsec SA counter of ALL Child SAs under an IKEv2 SA. The examples added for IKEv2 Message ID sync to provide more clarity. Some edits as per comments on mailing list to enhance clarity.13.3.14.4. Draft -00 Version 00 is identical to draft-kagarigi-ipsecme-ikev2-windowsync-04, started as WG document. Added IPSECME WG HA design team members as authors. Added comment in Introduction to discuss the window sync process on WG mailing list to solve some concerns.14.15. References14.1.15.1. Normative References[RFC2119][1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[RFC4301] Kent, S. and K. Seo, "Security Architecture for the Internet Protocol",[2] Nir, Y., "IPsec Cluster Problem Statement", RFC4301, December 2005. [RFC5996]6027, October 2010. [3] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, "Internet Key Exchange Protocol Version 2 (IKEv2)", RFC 5996, September 2010.[RFC6027] Nir, Y., "IPsec Cluster Problem Statement",[4] Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC6027, October 2010. 14.2.4301, December 2005. 15.2. Informative References[I-D.ietf-ipsecme-failure-detection] Nir, Y., Wierbowski, D., Detienne, F., and P. Sethi, "A Quick Crash Detection Method[5] Nadas, S., "Virtual Router Redundancy Protocol (VRRP) Version 3 forIKE", draft-ietf-ipsecme-failure-detection-01 (work in progress), OctoberIPv4 and IPv6", RFC 5798, March 2010.[RFC5685][6] Devarapalli, V. and K. Weniger, "Redirect Mechanism for the Internet Key Exchange Protocol Version 2 (IKEv2)", RFC 5685, November 2009.[RFC5723][7] Sheffer, Y. and H. Tschofenig, "Internet Key Exchange Protocol Version 2 (IKEv2) Session Resumption", RFC 5723, January 2010.[RFC5798] Nadas, S., "Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4[8] Nir, Y., Wierbowski, D., Detienne, F., andIPv6", RFC 5798, March 2010.P. Sethi, "A Quick Crash Detection Method for IKE", draft-ietf-ipsecme-failure-detection-03 (work in progress), January 2011. Appendix A. IKEv2 Message ID Sync Examples This (non-normative) section presents some examples that illustrate how the IKEv2 Message ID values are synchronized. We use a tuple notation, denoting the two counters EXPECTED_SEND_REQ_MESSAGE_ID and EXPECTED_RECV_REQ_MESSAGE_ID on a member as (EXPECTED_SEND_REQ_MESSAGE_ID, EXPECTED_RECV_REQ_MESSAGE_ID). A.1. Normal Failover - Example 1 Standby (Newly Active) Member Peer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sync Request (2, 3) --------> Peer has the values (4, 5) so it sends <------------- (4, 5) as the Sync Response A.2. Normal Failover - Example 2 Standby (Newly Active) Member Peer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sync Request (2, 5) --------> Peer has the values (2, 4) so it sends <-------------(5, 4) as the Sync Response A.3. Simultaneous Failover In the case of simultaneous failover, both sides send the synchronization request, but whichever side has the higher value will be eventually synchronized. Standby (Newly Active) Member Peer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sync Request (4,4) -----> <-------------- Sync Request (5,5) Sync Response (5,5) ----> <-------- Sync Response (5,5) Authors' Addresses Raj Singh (Editor) Cisco Systems, Inc. Divyashree Chambers, B Wing, O'Shaugnessy Road Bangalore, Karnataka 560025 India Phone: +91 80 4301 3320 Email: rsj@cisco.com Kalyani Garigipati Cisco Systems, Inc. Divyashree Chambers, B Wing, O'Shaugnessy Road Bangalore, Karnataka 560025 India Phone: +91 80 4426 4831 Email: kagarigi@cisco.com Yoav Nir Check Point Software Technologies Ltd. 5 Hasolelim St. Tel Aviv 67897 Israel Email: ynir@checkpoint.com Yaron Sheffer Independent Email: yaronf.ietf@gmail.com Dacheng Zhang Huawei Technologies Ltd. Email: zhangdacheng@huawei.com