<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='./rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="no"?>
<?rfc compact="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc strict="yes" ?>
<?rfc linkmailto="yes" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >
    

<?xml-stylesheet type='text/xsl' href='./rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="yes" ?>
<?rfc sortrefs="yes" ?>
<rfc ipr="trust200902" docName="draft-ietf-ipsecme-ipsec-ha-09" category="info">
  <front>
    <title abbrev="IPsec Cluster Problem Statement">IPsec Cluster Problem Statement</title>
    <author initials="Y." surname="Nir" fullname="Yoav Nir">
      <organization abbrev="Check Point">Check Point Software Technologies Ltd.</organization>
      <address>
        <postal>
          <street>5 Hasolelim st.</street>
          <city>Tel Aviv</city>
          <code>67897</code>
          <country>Israel</country>
        </postal>
        <email>ynir@checkpoint.com</email>
      </address>
    </author>
    <date year="2010" month="July"/>
    <area>Security Area</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines terminology, problem statement and requirements for implementing IKE 
        and IPsec on clusters. It also describes gaps in existing standards and their 
        implementation that need to be filled, in order to allow peers to interoperate with 
        clusters from different vendors. An agreed terminology, problem statement and requirements 
        will allow IETF working gropus to consider development of IPsec/IKEv2 mechanisms to 
        simplify cluster implementations.</t>
    </abstract>
  </front>
  <middle>
    <!-- ====================================================================== -->
    <section anchor="introduction" title="Introduction">
      <t> IKEv2, as described in <xref target="RFC4306"/> and <xref target="IKEv2bis"/>, and IPsec, 
        as described in <xref target="RFC4301"/> and others, allows deployment of VPNs between 
        different sites as well as from VPN clients to protected networks.</t> 
      <t> As VPNs become increasingly important to the organizations deploying 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 either share the load or back each other up, forming a 
        "cluster" (see <xref target="Term"/>). Similar demands have been made in the past for other 
        critical pieces of an organization's infrastructure, such as DHCP and DNS servers, web 
        servers, databases and others.</t>
      <t> IKE and IPsec are in particular less friendly to clustering than these other protocols,
        because they store more state, and that state is more volatile. <xref target="Term"/> 
        defines terminology for use in this document, and in the envisioned solution documents.</t>
      <t> In general, deploying IKE and IPsec in a cluster requires such a large amount of 
        information to be synchronized among the members of the cluster, that it becomes 
        impractical. Alternatively, if less information is synchronized, failover would mean a 
        prolonged and intensive recovery phase, which negates the scalability and availability
        promises of using clusters. In <xref target="PS"/> we will describe this in more detail.</t> 
      <section anchor="mustshouldmay" title="Conventions Used in This Document">
        <t>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 <xref target="RFC2119"/>.</t>
      </section>
      </section>
      <section anchor="Term" title="Terminology">
        <t> "Single Gateway" is an implementation of IKE and IPsec enforcing a certain policy, as
          described in <xref target="RFC4301"/>.</t>
        <t> "Cluster" is a set of two or more gateways, implementing the same security policy, and
          protecting the same domain. Clusters exist to provide both high availability through 
          redundancy, and scalability through load sharing.</t>
        <t> "Member" is one gateway in a cluster.</t>
        <t> "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. </t>
        <t> "High Availability" is a property of a system, not a configuration type. A system is 
          said to have high availability if its expected down time is low. High availability can be
          achieved in various ways, one of which is clustering. All the clusters described in this
          document achieve high availability. What "high" means depends on the 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.</t>
        <t> "Fault Tolerance" is a property related to high availability, where a system maintains
          service availability, even when a specified set of fault conditions occur. In clusters,
          we expect the system to maintain service availability, when one or more of the cluster 
          members fails.</t>
        <t> "Completely Transparent Cluster" is a cluster where the occurence of a fault is never
          visible to the peers.</t>
        <t> "Partially Transparent Cluster" is a cluster where the occurence of a fault may be 
          visible to the peers.</t>
        <t> "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", whereas the
          other(s) are referred to as "stand-bys". VRRP (<xref target="RFC5798"/>) is one method of 
          building such a cluster.</t>
        <t> "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 balancing" is also common, but it implies
          that the load is actually balanced between the members, and this is not a requirement.</t>
        <t> "Failover" is the event where one member takes over some load from some other member.
          In a hot standby cluster, this happens when a standby member becomes active due to a 
          failure of the former active member, or because of an administrator command. In a load
          sharing cluster, this usually happens because of a failure of one of the members, but 
          certain load-balancing technologies may allow a 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, even without any failures.</t>
        <t> "Tight Cluster" is a cluster where all the members share an IP address. This could be
          accomplished using configured interfaces with specialized protocols or hardware, such as
          VRRP, or through the use of multicast addresses, but in any case, peers need only be 
          configured with one IP address in the Peer Authentication Database.</t>
        <t> "Loose Cluster" is a cluster where each member has a different IP address. Peers find 
          the correct member using some method such as DNS queries or the IKEv2 redirect mechanism
          (<xref target="RFC5685"/>). In some cases, a member's IP address(es) may be allocated to 
          another member at failover.</t>
        <t> "Synch Channel" is a communications channel among the cluster 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 over short or long distances. The security and physical
          characteristics of this channel are out of scope for this document, but it is a
          requirement that its use be minimized for scalability.</t>
      </section>
      <section anchor="PS" title="The Problem Statement">
        <t> This section starts by scoping the problem, and goes on to list each of the issues 
          encountered while setting up a cluster of IPsec VPN gateways.</t>
        <section anchor="psscope" title="Scope">
          <t> This document will make no attempt to describe the problems in setting up a generic 
            cluster.  It describes only problems related to the IKE/IPsec protocols.</t>
          <t> The problem of synchronizing the policy between cluster members is out of scope, as 
            this is an administrative issue that is not particular to either clusters or to IPsec.</t>
          <t> The interesting scenario here is VPN, whether tunneled site-to-site or remote access. 
            Host-to-host transport mode is not expected to benefit from this work.</t>
          <t> We do not describe in full the problems of the communication channel between cluster 
            members (the Synch Channel), nor do we intend to specify anything in this space later. 
            Specifically, mixed-vendor clusters are out of scope.</t>
          <t> The problem statement anticipates possible protocol-level solutions between IKE/IPsec 
            peers, in order to improve the availability and/or performance of VPN clusters. One 
            vendor's IPsec endpoint should be able to work, optimally, with another vendor's 
            cluster.</t>
        </section>
        <section anchor="state" title="Lots of Long Lived State">
          <t> IKE and IPsec have a lot of long lived state:<list style="symbols">
            <t> IKE SAs last for minutes, hours, or days, and carry keys and other information. 
              Some gateways may carry thousands to hundreds of thousands of IKE SAs.</t>
            <t> IPsec SAs last for minutes or hours, and carry keys, selectors and other 
              information. Some gateways may carry hundreds of thousands such IPsec SAs.</t>
            <t> 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.</t>
            </list></t>
          <t> A naive implementation of a cluster would have no synchronized state, and a failover 
            would produce an effect similar to that of a rebooted gateway. 
            <xref target="RFC5723"/> describes how new IKE and IPsec SAs can be recreated in 
            such a case.</t>
        </section>
        <section anchor="ikecounters" title="IKE Counters">
          <t> We can overcome the first problem described in <xref target="state"/>, by 
            synchronizing states - whenever an SA is created, we can synch this new state to all 
            other members. However, those states are not only long-lived, they are also ever 
            changing.</t>
          <t> IKE has message counters. A peer MUST NOT process message n until 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 both received and transmitted.</t>
          <t> One possible solution, is to synchronize information about the IKE message 
            counters after every IKE exchange. This way, the newly active member knows what 
            messages it is allowed to process, and what message IDs to use on IKE requests, so that 
            peers process them. This solution may be appropriate in some cases, but may be too
            onerous in systems with lots of SAs. It also has the drawback, that it never recovers
            from the missing synch message problem, which is described in 
            <xref target="missing"/>.</t>
        </section>
        <section anchor="ipsec_ocounters" title="Outbound SA Counters">
          <t> ESP and AH have an optional anti-replay feature, where every protected packet carries 
            a counter number. Repeating counter numbers 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 those packets as duplicates and/or warn of an attack.</t>
          <t> Though it may be feasible to synchronize the IKE message counters, it is almost never 
            feasible to synchronize the IPsec packet counters for 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-active member, and the newly-active member may repeat a counter.</t>
          <t> A possible solution is to synch replay counter information, not for each packet 
            emitted, but only at regular intervals, say, every 10,000 packets or every 0.5 seconds. 
            After a failover, the newly-active member advances the counters for outbound IPsec SAs 
            by 10,000. To the peer this looks like up to 10,000 packets were lost, but this should 
            be acceptable, as neither ESP nor AH guarantee reliable delivery.</t>
        </section>
        <section anchor="ipsec_icounters" title="Inbound SA Counters">
          <t> An even tougher issue is the synchronization of packet counters for inbound IPsec 
            SAs. If a packet arrives at a newly-active member, there is no way to determine whether 
            this packet is a replay or not. The periodic synch does not solve the problem at all, 
            because suppose we synchronize every 10,000 packets, and the last synch before the
            failover had the counter at 170,000. It is probable, though not 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 of determining whether or not that packet has or has not
            already been processed. The synchronization does prevent the processing of really 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 dropped packets, which may be very 
            noticeable.</t>
          <t> The easiest solution is to learn the replay counter from the incoming traffic. This
            is allowed by the standards, because replay counter verification is an optional 
            feature (see section 3.2 in <xref target="RFC4301"/>). The case can even be made that 
            it is relatively secure, because non-attack traffic will reset the counters to what 
            they should be, so an attacker faces the dual challenge of a very narrow window for 
            attack, and the need to time the attack to a failover event. Unless the attacker can 
            actually cause the failover, this would be very difficult. It should be noted, though, 
            that although this solution is acceptable as far as RFC 4301 goes, it is a matter of 
            policy whether this is acceptable.</t>
          <t> Another possible solution to the inbound IPsec SA problem is to rekey all child SAs 
            following a failover. This may or may not be feasible depending on the implementation 
            and the configuration.</t>
        </section>
        <section anchor="missing" title="Missing Synch Messages">
          <t> The synch channel is very likely not to be infallible. Before failover is detected,
            some synchronization messages may have been 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 to counters of the IKE SA) is sent on the synch channel. Still, with every
            possible technology, the update may be missed before the failover.</t>
          <t> This is a bad situation, because the IKE SA is doomed. The newly-active member has 
            two problems: <list style="symbols">
            <t> It does not have the new IPsec SA pair. It will drop all incoming packets protected
              with such an SA. This could be fixed by sending some DELETEs and INVALID_SPI 
              notifications, if it wasn't for the other problem...</t>
            <t> 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 be rejected by the peer. After
              a sufficient number of retransmissions and rejections, the whole IKE SA with all
              associated IPsec SAs will get dropped.</t></list></t>
          <t> 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 recreated from scratch or using 
            session resumption techniques. However, detecting this may take a long time (several
            minutes) and this negates the goal of creating a cluster in the first place.</t>
        </section>
        <section anchor="ls_simul" title="Simultaneous use of IKE and IPsec SAs by Different Members">
          <t> For load sharing clusters, all active members may need to use the same SAs, both IKE 
            and IPsec. This is an even greater problem than in the case of hot-standby clusters, 
            because consecutive packets may need to be sent by different members to the same peer 
            gateway.</t>
          <t> The solution to the IKE SA issue is up to the implementation. It's 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 all other members. For IPsec, solutions fall into two 
            broad categories.</t>
          <t> The first is the "sticky" category, where all communications with a single peer, or
            all communications involving a certain SPD cache entry go through a single peer. In
            this case, all packets that match any particular SA go through the same member, so no
            synchronization of the replay counter needs to be done. Inbound processing is a "sticky"
            issue (no pun intended), because the packets have to be processed by the correct member 
            based on peer and SPI, and most load balancers will not be able to match the SPIs to  
            the correct member, unless stickyness extends to all traffic with a particular peer.
            Another disadvantage of sticky solutions, is that the load tends to not distribute
            evenly, especially if one SA covers a significant portion of IPsec traffic.</t>
          <t> The second is the "duplicate" category, where the child SA is duplicated for each 
            pair of IPsec SAs for each active member. Different packets for the same peer go 
            through different members, and get protected using different SAs with the same 
            selectors and matching the same entries in the SPD cache.  This has some 
            shortcomings:<list style="symbols">
            <t>It requires multiple parallel SAs, which the peer has no use for. Section 2.8 of 
              <xref target="RFC4306"/> specifically allows this, but some implementation might
              have a policy against long term maintenance of redundant SAs.</t>
            <t>Different packets that belong to the same flow may be protected by different SAs,
              which may seem "weird" to the peer gateway, especially if it is integrated with 
              some deep inspection middleware such as a firewall. It is not known whether this will
              cause problems with current gateways. It is also impossible to mandate against this, 
              because the definition of "flow" varies from one implementation to another.</t>
            <t>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 a different member. This problem
              is beyond the scope of this document and should be solved by the application, perhaps
              by forwarding misdirected packets to the correct gateway for deep inspection.</t>
            </list></t>
          <section anchor="ipsec_ctr" title="Outbound SAs using counter modes">
            <t> For SAs involving counter mode ciphers such as CTR (<xref target="RFC3686"/>) or 
              GCM (<xref target="RFC4106"/>) there is yet another complication. The initial vector 
              for such modes MUST NOT be repeated, and senders use methods such as counters or 
              LFSRs to 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 they do not generate 
              the same initial vector. See <xref target="COUNTER_MODES"/> for a discussion of this 
              problem in another context.</t>
          </section>            
        </section>
        <section anchor="alt_tunnel_addresses" title="Different IP addresses for IKE and IPsec">
          <t> In many implementations there are separate IP addresses for the cluster, and for each
            member. While the packets protected by tunnel mode child SAs are encapsulated in IP 
            headers with the cluster IP address, the IKE packets originate from a specific member,
            and carry that member's IP address. This may be done so that IPsec traffic bypasses the
            load balancer for greater scalability. For the peer, this looks weird, as the usual 
            thing is for the IPsec packets to come from the same IP address as the IKE packets.
            Unmodified peers may drop such packets.</t>
          <t> One obvious solution is to use some fancy capability of the IKE host to change 
            things so that IKE packets also come out of the cluster IP address. This can be 
            achieved through NAT or through assigning multiple addresses to interfaces. This is 
            not, however, possible for all implementations, and will not reduce load on the 
            balancer.</t>
          <t><xref target="ARORA"/> discusses this problem in greater depth, and proposes another
            solution, that does involve protocol changes.</t>
        </section>
        <section anchor="spi_alloc" title="Allocation of SPIs">
          <t> The SPI associated with each child SA, and with each IKE SA, MUST be unique relative 
            to the peer of the SA.  Thus, in the context of a cluster, each cluster member MUST 
            generate SPIs in a fashion that avoids collisions (with other cluster members) for 
            these SPI values. The means by which cluster members achieve this requirement is a 
            local matter, outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="sec" title="Security Considerations">
        <t>Implementations running on clusters MUST be as secure as implementations running on 
          single gateways. In other words, no extension or interpretation used to allow operation
          in a cluster may facilitate attacks that are not possible for single gateways.</t>
        <t>Moreover, thought must be given to the synching requirements of any protocol extension,
          to make sure that it does not create an opportunity for denial of service attacks on the
          cluster.</t>
        <t> As mentioned in <xref target="ipsec_icounters"/>, allowing an inbound child SA to fail
          over to another member has the effect of disabling replay counter protection for a short
          time. Though the threat is arguably low, it is a policy decision whether this is 
          acceptable.</t>
        <t> <xref target="ls_simul"/> describes the problem of the two directions of a flow being
          protected by two SAs which are not part of a matched pair, or even not being processed
          by the same cluster member. This is not a security problem as far as IPsec is concerned,
          because IPsec has policy at the IP, protocol and port level only. However, many IPsec
          implementations are integrated with stateful firewalls, which need to see both sides of a
          flow. Such implementations may have to forward packets to other members for the firewall
          to properly inspect the traffic.</t>
      </section> 
      <section anchor="iana" title="IANA Considerations">
        <t> This document has no actions for IANA.</t>
      </section>
      <section anchor="acknowledgements" title="Acknowledgements">
        <t> This document is the collective work, and includes contribution from many people who
          participate in the IPsecME working group.</t>
        <t> The editor would particularly like to acknowledge the extensive contribution of the 
          following people (in alphabetical order): Jitender Arora, Jean-Michel Combes, Dan 
          Harkins, David Harrington, Steve Kent, Tero Kivinen, Alexey Melnikov, Yaron Sheffer, 
          Melinda Shore, and Rodney Van Meter.</t>
      </section>
      <section anchor="history" title="Change Log">
        <t> NOTE TO RFC EDITOR: REMOVE THIS SECTION BEFORE PUBLICATION</t>
        <t> Version 00 was identical to draft-nir-ipsecme-ipsecha-ps-00, re-spun as an WG 
          document.</t>
        <t> Version 01 included closing issues 177, 178 and 180, with updates to terminology, and
          added discussion of inbound SAs and the CTR issue.</t>
        <t> Version 02 includes comments by Yaron Sheffer and the acknowledgement section.</t>
        <t> Version 03 fixes some ID-nits, and adds the problem presented by Jitender Arora in
          <xref target="ARORA"/>.</t>
        <t> Version 04 fixes a spelling mistake, moves the scope discussion to a subsection of its
          own (<xref target="psscope"/>), and adds a short discussion of the duplicate SPI problem,
          presented by Jean-Michel Combes.</t>
        <t> Versions 05, 06 and 07 just corrected nits and notation </t>
        <t> Versions 08 and 09 include suggestions from the IETF last call.</t>
      </section>
  </middle>
  <!-- ====================================================================== -->
  <back>
    <references title="Normative References"> 
      <reference anchor='RFC2119'>
        <front>
          <title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials='S.' surname='Bradner' fullname='Scott Bradner'>
            <organization>Harvard University</organization>
            <address>
              <postal>
                <street>1350 Mass. Ave.</street>
                <street>Cambridge</street>
                <street>MA 02138</street>
              </postal>
              <phone>- +1 617 495 3864</phone>
              <email>sob@harvard.edu</email>
            </address>
          </author>
          <date year='1997' month='March' />
          <area>General</area>
          <keyword>keyword</keyword>
        </front>
        <seriesInfo name='BCP' value='14' />
        <seriesInfo name='RFC' value='2119' />
        <format type='TXT' octets='4723' target='ftp://ftp.isi.edu/in-notes/rfc2119.txt' />
        <format type='HTML' octets='16553' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
        <format type='XML' octets='5703' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
      </reference>
      <reference anchor='RFC4301'>
        <front>
          <title>Security Architecture for the Internet Protocol</title>
          <author initials='S.' surname='Kent' fullname='S. Kent'>
            <organization>BBN Technologies</organization></author>
          <author initials='K.' surname='Seo' fullname='K. Seo'>
            <organization>BBN Technologies</organization></author>
          <date year='2005' month='December' />
        </front>
        <seriesInfo name='RFC' value='4301' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc4301.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc4301.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc4301.xml' />
      </reference>
      <reference anchor='RFC4306'>
        <front>
          <title>Internet Key Exchange (IKEv2) Protocol</title>
          <author initials='C.' surname='Kaufman' fullname='C. Kaufman'>
            <organization /></author>
          <date year='2005' month='December' />
        </front>
        <seriesInfo name='RFC' value='4306' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc4306.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc4306.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc4306.xml' />
      </reference>
    </references>
    <references title="Informative References"> 
      <reference anchor='IKEv2bis'>
        <front>
          <title>Internet Key Exchange Protocol: IKEv2</title>
          <author initials='C.' surname='Kaufman' fullname='C. Kaufman'>
            <organization>Microsoft</organization></author>
          <author initials='P.' surname='Hoffman' fullname='P. Hoffman'>
            <organization>VPN Consortium</organization></author>
          <author initials='Y.' surname='Nir' fullname='Y. Nir'>
            <organization>Check Point</organization></author>
          <author initials='P.' surname='Eronen' fullname='P. Eronen'>
            <organization>Nokia</organization></author>
          <date year='2010' month='May' />
        </front>
        <seriesInfo name='Internet-Draft' value='draft-ietf-ipsecme-ikev2bis' />
        <format type='TXT'
          target='http://tools.ietf.org/id/draft-ietf-ipsecme-ikev2bis' />
        <format type='HTML'
          target='http://tools.ietf.org/html/draft-ietf-ipsecme-ikev2bis' />
      </reference>
      <reference anchor='RFC5723'>
        <front>
          <title>IKEv2 Session Resumption</title>
          <author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'>
            <organization>Check Point</organization></author>
          <author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'>
            <organization>Nokia Siemens Networks</organization></author>
          <date year='2010' month='January' />
        </front>
        <seriesInfo name='RFC' value='5723' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc5723.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc5723.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc5723.xml' />
      </reference>
      <reference anchor='RFC5798'>
        <front>
          <title>Virtual Router Redundancy Protocol (VRRP)</title>
          <author initials='S.' surname='Nadas' fullname='S. Nadas'>
            <organization>Ericsson</organization></author>
          <date year='2010' month='March' />
        </front>
        <seriesInfo name='RFC' value='5798' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc5798.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc5798.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc5798.xml' />
      </reference>
      <reference anchor='RFC5685'>
        <front>
          <title>Redirect Mechanism for IKEv2</title>
          <author initials='V.' surname='Devarapalli' fullname='V. Devarapalli'>
            <organization>WiChorus</organization></author>
          <author initials='K.' surname='Weniger' fullname='K. Weniger'>
            <organization /></author>
          <date year='2009' month='November' />
        </front>
        <seriesInfo name='RFC' value='5685' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc5685.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc5685.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc5685.xml' />
      </reference>
      <reference anchor='RFC3686'>
        <front>
          <title>Using Advanced Encryption Standard (AES) Counter Mode</title>
          <author initials='R.' surname='Housley' fullname='R. Housley'>
            <organization>Vigil Security</organization></author>
          <date year='2009' month='January' />
        </front>
        <seriesInfo name='RFC' value='3686' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc3686.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc3686.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc3686.xml' />
      </reference>
      <reference anchor='RFC4106'>
        <front>
          <title>The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP)</title>
          <author initials='J.' surname='Viega' fullname='J. Viega'>
            <organization>Secure Software</organization></author>
          <author initials='D.' surname='McGrew' fullname='D. McGrew'>
            <organization>Cisco</organization></author>
          <date year='2005' month='June' />
        </front>
        <seriesInfo name='RFC' value='4106' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc4106.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc4106.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc4106.xml' />
      </reference>
      <reference anchor='COUNTER_MODES'>
        <front>
          <title>Using Counter Modes with Encapsulating Security Payload (ESP) and Authentication Header (AH) to Protect Group Traffic</title>
          <author initials='D.' surname='McGrew' fullname='D. McGrew'>
            <organization>Cisco</organization></author>
          <author initials='B.' surname='Weis' fullname='B. Weis'>
            <organization>Cisco</organization></author>
          <date year='2010' month='March' />
        </front>
        <seriesInfo name='Internet-Draft' value='draft-ietf-msec-ipsec-group-counter-modes' />
        <format type='TXT'
          target='http://tools.ietf.org/id/draft-ietf-msec-ipsec-group-counter-modes' />
        <format type='HTML'
          target='http://tools.ietf.org/html/draft-ietf-msec-ipsec-group-counter-modes' />
      </reference>
      <reference anchor='ARORA'>
        <front>
          <title>Alternate Tunnel Addresses for IKEv2</title>
          <author initials='J.' surname='Arora' fullname='J. Arora'>
            <organization>Acme Packet</organization></author>
          <author initials='P.' surname='Kumar' fullname='P. Kumar'>
            <organization>Acme Packet</organization></author>
          <date year='2010' month='April' />
        </front>
        <seriesInfo name='Internet-Draft' value='draft-arora-ipsecme-ikev2-alt-tunnel-addresses' />
        <format type='TXT'
          target='http://tools.ietf.org/id/draft-arora-ipsecme-ikev2-alt-tunnel-addresses' />
        <format type='HTML'
          target='http://tools.ietf.org/html/draft-arora-ipsecme-ikev2-alt-tunnel-addresses' />
      </reference>
    </references>
    <!-- ====================================================================== -->
  </back>
</rfc>
