draft-ietf-ipsecme-ipsec-ha-04.txt | draft-ietf-ipsecme-ipsec-ha-05.txt | |||
---|---|---|---|---|
Network Working Group Y. Nir | Network Working Group Y. Nir | |||
Internet-Draft Check Point | Internet-Draft Check Point | |||
Intended status: Informational June 1, 2010 | Intended status: Informational June 10, 2010 | |||
Expires: December 3, 2010 | Expires: December 12, 2010 | |||
IPsec High Availability and Load Sharing Problem Statement | IPsec Cluster Problem Statement | |||
draft-ietf-ipsecme-ipsec-ha-04 | draft-ietf-ipsecme-ipsec-ha-05 | |||
Abstract | Abstract | |||
This document describes a requirement from IKE and IPsec to allow for | This document defines terminology, problem statement and requirements | |||
more scalable and available deployments for VPNs. It defines | for implementing IKE and IPsec on clusters. It also describes gaps | |||
terminology for high availability and load sharing clusters | in existing standards and their implementation that need to be | |||
implementing IKE and IPsec, and describes gaps in the existing | filled, in order to allow peers to interoperate with clusters from | |||
standards. | different vendors. An agreed terminology, problem statement and | |||
requirements will allow the IPSECME WG to consider development of | ||||
IPsec/IKEv2 mechanisms to simplify cluster implementations. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on December 3, 2010. | This Internet-Draft will expire on December 12, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 12 | skipping to change at page 2, line 14 | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Conventions Used in This Document . . . . . . . . . . . . 3 | 1.1. Conventions Used in This Document . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. The Problem Statement . . . . . . . . . . . . . . . . . . . . 5 | 3. The Problem Statement . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.2. Lots of Long Lived State . . . . . . . . . . . . . . . . . 5 | 3.2. Lots of Long Lived State . . . . . . . . . . . . . . . . . 6 | |||
3.3. IKE Counters . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. IKE Counters . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Outbound SA Counters . . . . . . . . . . . . . . . . . . . 6 | 3.4. Outbound SA Counters . . . . . . . . . . . . . . . . . . . 6 | |||
3.5. Inbound SA Counters . . . . . . . . . . . . . . . . . . . 7 | 3.5. Inbound SA Counters . . . . . . . . . . . . . . . . . . . 7 | |||
3.6. Missing Synch Messages . . . . . . . . . . . . . . . . . . 7 | 3.6. Missing Synch Messages . . . . . . . . . . . . . . . . . . 7 | |||
3.7. Simultaneous use of IKE and IPsec SAs by Different | 3.7. Simultaneous use of IKE and IPsec SAs by Different | |||
Members . . . . . . . . . . . . . . . . . . . . . . . . . 8 | Members . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.7.1. Outbound SAs using counter modes . . . . . . . . . . . 9 | 3.7.1. Outbound SAs using counter modes . . . . . . . . . . . 9 | |||
3.8. Different IP addresses for IKE and IPsec . . . . . . . . . 9 | 3.8. Different IP addresses for IKE and IPsec . . . . . . . . . 9 | |||
3.9. Allocation of SPIs . . . . . . . . . . . . . . . . . . . . 9 | 3.9. Allocation of SPIs . . . . . . . . . . . . . . . . . . . . 10 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
7. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. Informative References . . . . . . . . . . . . . . . . . . . . 11 | 8. Informative References . . . . . . . . . . . . . . . . . . . . 11 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
IKEv2, as described in [RFC4306] and [IKEv2bis], and IPsec, as | IKEv2, as described in [RFC4306] and [IKEv2bis], and IPsec, as | |||
described in [RFC4301] and others, allows deployment of VPNs between | described in [RFC4301] and others, allows deployment of VPNs between | |||
different sites as well as from VPN clients to protected networks. | different sites as well as from VPN clients to protected networks. | |||
As VPNs become increasingly important to the organizations deploying | As VPNs become increasingly important to the organizations deploying | |||
them, there is a demand to make IPsec solutions more scalable and | them, there is a demand to make IPsec solutions more scalable and | |||
less prone to down time, by using more than one physical gateway to | less prone to down time, by using more than one physical gateway to | |||
either share the load or back each other up. Similar demands have | either share the load or back each other up, forming a "cluster" (see | |||
been made in the past for other critical pieces of an organizations's | Section 2). Similar demands have been made in the past for other | |||
infrastructure, such as DHCP and DNS servers, web servers, databases | critical pieces of an organization's infrastructure, such as DHCP and | |||
and others. | DNS servers, web servers, databases and others. | |||
IKE and IPsec are in particular less friendly to clustering than | IKE and IPsec are in particular less friendly to clustering than | |||
these other protocols, because they store more state, and that state | these other protocols, because they store more state, and that state | |||
is more volatile. Section 2 defines terminology for use in this | is more volatile. Section 2 defines terminology for use in this | |||
document, and in the envisioned solution documents. | document, and in the envisioned solution documents. | |||
In general, deploying IKE and IPsec in a cluster requires such a | In general, deploying IKE and IPsec in a cluster requires such a | |||
large amount of information to be synchronized among the members of | large amount of information to be synchronized among the members of | |||
the cluster, that it becomes impractical. Alternatively, if less | the cluster, that it becomes impractical. Alternatively, if less | |||
information is synchronized, failover would mean a prolonged and | information is synchronized, failover would mean a prolonged and | |||
skipping to change at page 3, line 50 | skipping to change at page 3, line 50 | |||
"Single Gateway" is an implementation of IKE and IPsec enforcing a | "Single Gateway" is an implementation of IKE and IPsec enforcing a | |||
certain policy, as described in [RFC4301]. | certain policy, as described in [RFC4301]. | |||
"Cluster" is a set of two or more gateways, implementing the same | "Cluster" is a set of two or more gateways, implementing the same | |||
security policy, and protecting the same domain. Clusters exist to | security policy, and protecting the same domain. Clusters exist to | |||
provide both high availability through redundancy, and scalability | provide both high availability through redundancy, and scalability | |||
through load sharing. | through load sharing. | |||
"Member" is one gateway in a cluster. | "Member" is one gateway in a cluster. | |||
"Availability" is a measure of a system's ability to perform the | ||||
service for which it was designed. It is measured as the percentage | ||||
of time a service is available, from the time it is supposed to be | ||||
available. Colloquially, availability is sometimes expressed in | ||||
"nines" rather than percentage, with 3 "nines" meaning 99.9% | ||||
availability, 4 "nines" meaning 99.99% availability, etc. | ||||
"High Availability" is a condition of a system, not a configuration | "High Availability" is a condition of a system, not a configuration | |||
type. A system is said to have high availability if its expected | type. A system is said to have high availability if its expected | |||
down time is low. High availability can be achieved in various ways, | down time is low. High availability can be achieved in various ways, | |||
one of which is clustering. All the clusters described in this | one of which is clustering. All the clusters described in this | |||
document achieve high availability. | document achieve high availability. What "high" means depends on | |||
application, but usually is 4 to 6 "nines" (at most 0.5-50 minutes of | ||||
down time per year in a system that is supposed to be available all | ||||
the time. | ||||
"Fault Tolerance" is a condition related to high availability, where | "Fault Tolerance" is a condition related to high availability, where | |||
a system maintains service availability, even when a specified set of | a system maintains service availability, even when a specified set of | |||
fault conditions occur. In clusters, we expect the system to | fault conditions occur. In clusters, we expect the system to | |||
maintain service availability, when one or more of the cluster | maintain service availability, when one or more of the cluster | |||
members fails. | members fails. | |||
"Completely Transparent Cluster" is a cluster where the occurence of | "Completely Transparent Cluster" is a cluster where the occurence of | |||
a fault is never visible to the peers. | a fault is never visible to the peers. | |||
"Partially Transparent Cluster" is a cluster where the occurence of a | "Partially Transparent Cluster" is a cluster where the occurence of a | |||
fault may be visible to the peers. | fault may be visible to the peers. | |||
"Hot Standby Cluster", or "HS Cluster" is a cluster where only one of | "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 | the members is active at any one time. This member is also referred | |||
to as the the "active", whereas the others are referred to as "stand- | to as the the "active", whereas the other(s) are referred to as | |||
bys". [VRRP] is one method of building such a cluster. | "stand-bys". [VRRP] is one method of building such a cluster. | |||
"Load Sharing Cluster", or "LS Cluster" is a cluster where more than | "Load Sharing Cluster", or "LS Cluster" is a cluster where more than | |||
one of the members may be active at the same time. The term "load | one of the members may be active at the same time. The term "load | |||
balancing" is also common, but it implies that the load is actually | balancing" is also common, but it implies that the load is actually | |||
balanced between the members, and we don't want to even imply that | balanced between the members, and this is not a requirement. | |||
this is a requirement. | ||||
"Failover" is the event where a one member takes over some load from | "Failover" is the event where a one member takes over some load from | |||
some other member. In a hot standby cluster, this hapens when a | some other member. In a hot standby cluster, this hapens when a | |||
standby member becomes active due to a failure of the former active | standby member becomes active due to a failure of the former active | |||
member, or because of an administrator command. In a load sharing | member, or because of an administrator command. In a load sharing | |||
cluster this usually happens because of a failure of one of the | cluster, this usually happens because of a failure of one of the | |||
members, but certain load-balancing technologies may allow a | members, but certain load-balancing technologies may allow a | |||
particular load (such as all the flows associated with a particular | particular load (such as all the flows associated with a particular | |||
child SA) to move from one member to another to even out the load, | child SA) to move from one member to another to even out the load, | |||
even without any failures. | even without any failures. | |||
"Tight Cluster" is a cluster where all the members share an IP | "Tight Cluster" is a cluster where all the members share an IP | |||
address. This could be accomplished using configured interfaces with | address. This could be accomplished using configured interfaces with | |||
specialized protocols or hardware, such as VRRP, or through the use | specialized protocols or hardware, such as VRRP, or through the use | |||
of multicast addresses, but in any case, peers need only be | of multicast addresses, but in any case, peers need only be | |||
configured with one IP address in the PAD. | configured with one IP address in the PAD. | |||
"Loose Cluster" is a cluster where each member has a different IP | "Loose Cluster" is a cluster where each member has a different IP | |||
address. Peers find the correct member using some method such as DNS | address. Peers find the correct member using some method such as DNS | |||
queries or [REDIRECT]. In some cases, members IP addresses may be | queries or [REDIRECT]. In some cases, a member's IP address(es) may | |||
allocated to other members at failover. | be allocated to another member at failover. | |||
"Synch Channel" is a communications channel among the cluster | "Synch Channel" is a communications channel among the cluster | |||
members, used to transfer state information. The synch channel may | members, used to transfer state information. The synch channel may | |||
or may not be IP based, may or may not be encrypted, and may work | or may not be IP based, may or may not be encrypted, and may work | |||
over short or long distances. The security and physical | over short or long distances. The security and physical | |||
characteristics of this channel are out of scope for this document, | characteristics of this channel are out of scope for this document, | |||
but it is a requirement that its use be minimized for scalability. | but it is a requirement that its use be minimized for scalability. | |||
3. The Problem Statement | 3. The Problem Statement | |||
skipping to change at page 6, line 4 | skipping to change at page 6, line 14 | |||
3.2. Lots of Long Lived State | 3.2. Lots of Long Lived State | |||
IKE and IPsec have a lot of long lived state: | IKE and IPsec have a lot of long lived state: | |||
o IKE SAs last for minutes, hours, or days, and carry keys and other | o IKE SAs last for minutes, hours, or days, and carry keys and other | |||
information. Some gateways may carry thousands to hundreds of | information. Some gateways may carry thousands to hundreds of | |||
thousands of IKE SAs. | thousands of IKE SAs. | |||
o IPsec SAs last for minutes or hours, and carry keys, selectors and | o IPsec SAs last for minutes or hours, and carry keys, selectors and | |||
other information. Some gateways may carry hundreds of thousands | other information. Some gateways may carry hundreds of thousands | |||
such IPsec SAs. | such IPsec SAs. | |||
o SPD (Security Policy Database) Cache entries. While the SPD is | ||||
unchanging, the SPD cache changes on the fly due to narrowing. | ||||
Entries last at least as long as the SAD (Security Association | ||||
Database) entries, but tend to last even longer than that. | ||||
o SPD Cache entries. While the SPD is unchanging, the SPD cache | A naive implementation of a cluster would have no synchronized state, | |||
changes on the fly due to narrowing. Entries last at least as | and a failover would produce an effect similar to that of a rebooted | |||
long as the SAD entries, but tend to last even longer than that. | gateway. [resumption] describes how new IKE and IPsec SAs can be | |||
recreated in such a case. | ||||
A naive implementation of a high availability cluster would have no | ||||
synchronized state, and a failover would produce an effect similar to | ||||
that of a rebooted gateway. [resumption] describes how new IKE and | ||||
IPsec SAs can be recreated in such a case. | ||||
3.3. IKE Counters | 3.3. IKE Counters | |||
We can overcome the first problem described in Section 3.2, by | We can overcome the first problem described in Section 3.2, by | |||
synchronizing states - whenever an SA is created, we can synch this | synchronizing states - whenever an SA is created, we can synch this | |||
new state to all other members. However, those states are not only | new state to all other members. However, those states are not only | |||
long-lived, they are also ever changing. | long-lived, they are also ever changing. | |||
IKE has message counters. A peer may not process message n until | IKE has message counters. A peer may not process message n until | |||
after it has processed message n-1. Skipping message IDs is not | after it has processed message n-1. Skipping message IDs is not | |||
allowed. So a newly-active member needs to know the last message IDs | allowed. So a newly-active member needs to know the last message IDs | |||
both received and transmitted. | both received and transmitted. | |||
Often, it is feasible to synchronize the IKE message counters for | In some cases, it is feasible to synchronize information about the | |||
every IKE exchange. This way, the newly active member knows what | IKE message counters after every IKE exchange. This way, the newly | |||
messages it is allowed to process, and what message IDs to use on IKE | active member knows what messages it is allowed to process, and what | |||
requests, so that peers process them. | message IDs to use on IKE requests, so that peers process them. We | |||
leave it for future discussion to determine if it is always feasible | ||||
to do so. | ||||
3.4. Outbound SA Counters | 3.4. Outbound SA Counters | |||
ESP and AH have an optional anti-replay feature, where every | ESP and AH have an optional anti-replay feature, where every | |||
protected packet carries a counter number. Repeating counter numbers | protected packet carries a counter number. Repeating counter numbers | |||
is considered an attack, so the newly-active member must not use a | is considered an attack, so the newly-active member MUST NOT use a | |||
replay counter number that has already been used. The peer will drop | replay counter number that has already been used. The peer will drop | |||
those packets as duplicates and/or warn of an attack. | those packets as duplicates and/or warn of an attack. | |||
Though it may be feasible to synchronize the IKE message counters, it | Though it may be feasible to synchronize the IKE message counters, it | |||
is almost never feasible to synchronize the IPsec packet counters for | is almost never feasible to synchronize the IPsec packet counters for | |||
every IPsec packet transmitted. So we have to assume that at least | every IPsec packet transmitted. So we have to assume that at least | |||
for IPsec, the replay counter will not be up-to-date on the newly- | for IPsec, the replay counter will not be up-to-date on the newly- | |||
active member, and the newly-active member may repeat a counter. | active member, and the newly-active member may repeat a counter. | |||
A possible solution is to synch replay counter information, not for | A possible solution is to synch replay counter information, not for | |||
each packet emitted, but only at regular intervals, say, every 10,000 | each packet emitted, but only at regular intervals, say, every 10,000 | |||
packets or every 0.5 seconds. After a failover, the newly-active | packets or every 0.5 seconds. After a failover, the newly-active | |||
member advances the counters for outbound SAs by 10,000. To the peer | member advances the counters for outbound IPsec SAs by 10,000. To | |||
this looks like up to 10,000 packets were lost, but this should be | the peer this looks like up to 10,000 packets were lost, but this | |||
acceptable, as neither ESP nor AH guarantee reliable delivery. | should be acceptable, as neither ESP nor AH guarantee reliable | |||
delivery. | ||||
3.5. Inbound SA Counters | 3.5. Inbound SA Counters | |||
An even tougher issue, is the synchronization of packet counters for | An even tougher issue, is the synchronization of packet counters for | |||
inbound SAs. If a packet arrives at a newly-active member, there is | inbound IPsec SAs. If a packet arrives at a newly-active member, | |||
no way to determine whether this packet is a replay or not. The | there is no way to determine whether this packet is a replay or not. | |||
periodic synch does not solve the problem at all, because suppose we | The periodic synch does not solve the problem at all, because suppose | |||
synchronize every 10,000 packets, and the last synch before the | we synchronize every 10,000 packets, and the last synch before the | |||
failover had the counter at 170,000. It is probable, though not | failover had the counter at 170,000. It is probable, though not | |||
certain, that packet number 180,000 has not yet been processed, but | certain, that packet number 180,000 has not yet been processed, but | |||
if packet 175,000 arrives at the newly- active member, it has no way | if packet 175,000 arrives at the newly- active member, it has no way | |||
of determining whether or not that packet has or has not already been | of determining whether or not that packet has or has not already been | |||
processed. The synchronization does prevent the processing of really | processed. The synchronization does prevent the processing of really | |||
old packets, such as those with counter number 165,000. Ignoring all | old packets, such as those with counter number 165,000. Ignoring all | |||
counters below 180,000 won't work either, because that's up to 10,000 | counters below 180,000 won't work either, because that's up to 10,000 | |||
dropped packets, which may be very noticeable. | dropped packets, which may be very noticeable. | |||
The easiest solution is to learn the replay counter from the incoming | The easiest solution is to learn the replay counter from the incoming | |||
traffic. This is allowed by the standards, because replay counter | traffic. This is allowed by the standards, because replay counter | |||
verification is an optional feature. The case can even be made that | verification is an optional feature (see section 3.2 in [RFC4301]). | |||
it is relatively secure, because non-attack traffic will reset the | The case can even be made that it is relatively secure, because non- | |||
counters to what they should be, so an attacker faces the dual | attack traffic will reset the counters to what they should be, so an | |||
challenge of a very narrow window for attack, and the need to time | attacker faces the dual challenge of a very narrow window for attack, | |||
the attack to a failover event. Unless the attacker can actually | and the need to time the attack to a failover event. Unless the | |||
cause the failover, this would be very difficult. It should be | attacker can actually cause the failover, this would be very | |||
noted, though, that although this solution is acceptable as far as | difficult. It should be noted, though, that although this solution | |||
RFC 4301 goes, it is a matter of policy whether this is acceptable. | is acceptable as far as RFC 4301 goes, it is a matter of policy | |||
whether this is acceptable. | ||||
Another possible solution to the inbound SA problem is to rekey all | Another possible solution to the inbound IPsec SA problem is to rekey | |||
child SAs following a failover. This may or may not be feasible | all child SAs following a failover. This may or may not be feasible | |||
depending on the implementation and the configuration. | depending on the implementation and the configuration. | |||
3.6. Missing Synch Messages | 3.6. Missing Synch Messages | |||
The synch channel is very likely not to be infallible. Before | The synch channel is very likely not to be infallible. Before | |||
failover is detected, some synchronization messages may have been | failover is detected, some synchronization messages may have been | |||
missed. For example, the active member may have created a new Child | missed. For example, the active member may have created a new Child | |||
SA using message n. The new information (entry in the SAD and update | SA using message n. The new information (entry in the SAD and update | |||
to counters of the IKE SA) is sent on the synch channel. Still, with | to counters of the IKE SA) is sent on the synch channel. Still, with | |||
every possible technology, the update may be missed before the | every possible technology, the update may be missed before the | |||
skipping to change at page 8, line 15 | skipping to change at page 8, line 26 | |||
o The counters for the IKE SA show that only request n-1 has been | o The counters for the IKE SA show that only request n-1 has been | |||
sent. The next request will get the message ID n, but that will | sent. The next request will get the message ID n, but that will | |||
be rejected by the peer. After a sufficient number of | be rejected by the peer. After a sufficient number of | |||
retransmissions and rejections, the whole IKE SA with all | retransmissions and rejections, the whole IKE SA with all | |||
associated IPsec SAs will get dropped. | associated IPsec SAs will get dropped. | |||
The above scenario may be rare enough that it is acceptable that on a | The above scenario may be rare enough that it is acceptable that on a | |||
configuration with thousands of IKE SAs, a few will need to be | configuration with thousands of IKE SAs, a few will need to be | |||
recreated from scratch or using session resumption techniques. | recreated from scratch or using session resumption techniques. | |||
However, detecting this may take a long time (several minutes) and | However, detecting this may take a long time (several minutes) and | |||
this negates the goal of creating a high availability cluster in the | this negates the goal of creating a cluster in the first place. | |||
first place. | ||||
3.7. Simultaneous use of IKE and IPsec SAs by Different Members | 3.7. Simultaneous use of IKE and IPsec SAs by Different Members | |||
For load sharing clusters, all active members may need to use the | For LS clusters, all active members may need to use the same SAs, | |||
same SAs, both IKE and IPsec. This is an even greater problem than | both IKE and IPsec. This is an even greater problem than in the case | |||
in the case of HA, because consecutive packets may need to be sent by | of HS clusters, because consecutive packets may need to be sent by | |||
different members to the same peer gateway. | different members to the same peer gateway. | |||
The solution to the IKE SA issue is up to the application. It's | The solution to the IKE SA issue is up to the application. It's | |||
possible to create some locking mechanism over the synch channel, or | possible to create some locking mechanism over the synch channel, or | |||
else have one member "own" the IKE SA and manage the child SAs for | else have one member "own" the IKE SA and manage the child SAs for | |||
all other members. For IPsec, solutions fall into two broad | all other members. For IPsec, solutions fall into two broad | |||
categories. | categories. | |||
The first is the "sticky" category, where all communications with a | The first is the "sticky" category, where all communications with a | |||
single peer, or all communications involving a certain SPD cache | single peer, or all communications involving a certain SPD cache | |||
entry go through a single peer. In this case, all packets that match | entry go through a single peer. In this case, all packets that match | |||
any particular SA go through the same member, so no synchronization | any particular SA go through the same member, so no synchronization | |||
of the replay counter needs to be done. Inbound processing is a | of the replay counter needs to be done. Inbound processing is a | |||
"sticky" issue, because the packets have to be processed by the | "sticky" issue, because the packets have to be processed by the | |||
correct member based on peer and SPI. Another issue is that | correct member based on peer and SPI. Another issue is that most | |||
commodity load balancers will not be able to match the SPIs of the | load balancers will not be able to match the SPIs of the encrypted | |||
encrypted side to the clear traffic, and so the wrong member may get | side to the clear traffic, and so the wrong member may get the the | |||
the the other half of the flow. | other half of the flow. | |||
The other way, is to duplicate the child SAs, and have a pair of | The second is the "duplicate" category, where the child SA is | |||
IPsec SAs for each active member. Different packets for the same | duplicated for each pair of IPsec SAs for each active member. | |||
peer go through different members, and get protected using different | Different packets for the same peer go through different members, and | |||
SAs with the same selectors and matching the same entries in the SPD | get protected using different SAs with the same selectors and | |||
cache. This has some shortcomings: | matching the same entries in the SPD cache. This has some | |||
shortcomings: | ||||
o It requires multiple parallel SAs, which the peer has no use for. | o It requires multiple parallel SAs, which the peer has no use for. | |||
Section 2.8 or [RFC4306] specifically allows this, but some | Section 2.8 or [RFC4306] specifically allows this, but some | |||
implementation might have a policy against long term maintenance | implementation might have a policy against long term maintenance | |||
of redundant SAs. | of redundant SAs. | |||
o Different packets that belong to the same flow may be protected by | o Different packets that belong to the same flow may be protected by | |||
different SAs, which may seem "weird" to the peer gateway, | different SAs, which may seem "weird" to the peer gateway, | |||
especially if it is integrated with some deep inspection | especially if it is integrated with some deep inspection | |||
middleware such as a firewall. It is not known whether this will | middleware such as a firewall. It is not known whether this will | |||
cause problems with current gateways. It is also impossible to | cause problems with current gateways. It is also impossible to | |||
mandate against this, because the definition of "flow" varies from | mandate against this, because the definition of "flow" varies from | |||
one implementation to another. | one implementation to another. | |||
o Reply packets may arrive with an IPsec SA that is not "matched" to | o Reply packets may arrive with an IPsec SA that is not "matched" to | |||
the one used for the outgoing packets. Also, they might arrive at | the one used for the outgoing packets. Also, they might arrive at | |||
a different member. This problem is beyond the scope of this | a different member. This problem is beyond the scope of this | |||
skipping to change at page 9, line 22 | skipping to change at page 9, line 32 | |||
o Reply packets may arrive with an IPsec SA that is not "matched" to | o Reply packets may arrive with an IPsec SA that is not "matched" to | |||
the one used for the outgoing packets. Also, they might arrive at | the one used for the outgoing packets. Also, they might arrive at | |||
a different member. This problem is beyond the scope of this | a different member. This problem is beyond the scope of this | |||
document and should be solved by the application, perhaps by | document and should be solved by the application, perhaps by | |||
forwarding misdirected packets to the correct gateway for deep | forwarding misdirected packets to the correct gateway for deep | |||
inspection. | inspection. | |||
3.7.1. Outbound SAs using counter modes | 3.7.1. Outbound SAs using counter modes | |||
For SAs involving counter mode ciphers such as [CTR] or [GCM] there | For SAs involving counter mode ciphers such as [CTR] or [GCM] there | |||
is yet another complication. The initial vector for such modes must | is yet another complication. The initial vector for such modes MUST | |||
never be repeated, and senders use methods such as counters or LFSRs | NOT be repeated, and senders use methods such as counters or LFSRs to | |||
to ensure this. An SA shared between more than one active member, or | ensure this. An SA shared between more than one active member, or | |||
even failing over from one member to another need to make sure that | even failing over from one member to another need to make sure that | |||
they do not generate the same initial vector. See [COUNTER_MODES] | they do not generate the same initial vector. See [COUNTER_MODES] | |||
for a discussion of this problem in another context. | for a discussion of this problem in another context. | |||
3.8. Different IP addresses for IKE and IPsec | 3.8. Different IP addresses for IKE and IPsec | |||
In many implementations there are separate IP addresses for the | In many implementations there are separate IP addresses for the | |||
cluster, and for each member. While the packets protected by tunnel | cluster, and for each member. While the packets protected by tunnel | |||
mode child SAs are encapsulated in IP headers with the cluster IP | mode child SAs are encapsulated in IP headers with the cluster IP | |||
address, the IKE packets originate from a specific member, and carry | address, the IKE packets originate from a specific member, and carry | |||
End of changes. 28 change blocks. | ||||
73 lines changed or deleted | 87 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |