| rfc9568.original | rfc9568.txt | |||
|---|---|---|---|---|
| Network Working Group A. Lindem | Internet Engineering Task Force (IETF) A. Lindem | |||
| Internet-Draft LabN Consulting, L.L.C. | Request for Comments: 9568 LabN Consulting, L.L.C. | |||
| Obsoletes: 5798 (if approved) A. Dogra | Obsoletes: 5798 A. Dogra | |||
| Intended status: Standards Track Cisco Systems | Category: Standards Track Cisco Systems | |||
| Expires: 7 July 2024 4 January 2024 | ISSN: 2070-1721 April 2024 | |||
| Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6 | Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6 | |||
| draft-ietf-rtgwg-vrrp-rfc5798bis-18 | ||||
| Abstract | Abstract | |||
| This document defines version 3 of the Virtual Router Redundancy | This document defines version 3 of the Virtual Router Redundancy | |||
| Protocol (VRRP) for IPv4 and IPv6. It obsoletes RFC 5798 which | Protocol (VRRP) for IPv4 and IPv6. It obsoletes RFC 5798, which | |||
| previously specified VRRP (version 3). RFC 5798 obsoleted RFC 3768 | previously specified VRRP (version 3). RFC 5798 obsoleted RFC 3768, | |||
| which specified VRRP (version 2) for IPv4. VRRP specifies an | which specified VRRP (version 2) for IPv4. VRRP specifies an | |||
| election protocol that dynamically assigns responsibility for a | election protocol that dynamically assigns responsibility for a | |||
| Virtual Router to one of the VRRP Routers on a LAN. The VRRP Router | Virtual Router to one of the VRRP Routers on a LAN. The VRRP Router | |||
| controlling the IPv4 or IPv6 address(es) associated with a Virtual | controlling the IPv4 or IPv6 address(es) associated with a Virtual | |||
| Router is called the Active Router, and it forwards packets routed to | Router is called the Active Router, and it forwards packets routed to | |||
| these IPv4 or IPv6 addresses. Active Routers are configured with | these IPv4 or IPv6 addresses. Active Routers are configured with | |||
| virtual IPv4 or IPv6 addresses, and Backup Routers infer the address | virtual IPv4 or IPv6 addresses, and Backup Routers infer the address | |||
| family of the virtual addresses being advertised based on the IP | family of the virtual addresses being advertised based on the IP | |||
| protocol version. Within a VRRP Router, the Virtual Routers in each | protocol version. Within a VRRP Router, the Virtual Routers in each | |||
| of the IPv4 and IPv6 address families are independent of one another | of the IPv4 and IPv6 address families are independent of one another | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at line 37 ¶ | |||
| responsibility should the Active Router become unavailable. For | responsibility should the Active Router become unavailable. For | |||
| IPv4, the advantage gained from using VRRP is a higher-availability | IPv4, the advantage gained from using VRRP is a higher-availability | |||
| default path without requiring configuration of dynamic routing or | default path without requiring configuration of dynamic routing or | |||
| router discovery protocols on every end-host. For IPv6, the | router discovery protocols on every end-host. For IPv6, the | |||
| advantage gained from using VRRP for IPv6 is a quicker switchover to | advantage gained from using VRRP for IPv6 is a quicker switchover to | |||
| Backup Routers than can be obtained with standard IPv6 Neighbor | Backup Routers than can be obtained with standard IPv6 Neighbor | |||
| Discovery mechanisms. | Discovery mechanisms. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 7 July 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9568. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction | |||
| 1.1. RFC 5798 Differences . . . . . . . . . . . . . . . . . . 4 | 1.1. Differences from RFC 5798 | |||
| 1.2. A Note on Terminology . . . . . . . . . . . . . . . . . . 5 | 1.2. A Note on Terminology | |||
| 1.3. IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.3. IPv4 | |||
| 1.4. IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.4. IPv6 | |||
| 1.5. Requirements Language . . . . . . . . . . . . . . . . . . 7 | 1.5. Requirements Language | |||
| 1.6. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 1.6. Scope | |||
| 1.7. Definitions . . . . . . . . . . . . . . . . . . . . . . . 8 | 1.7. Definitions | |||
| 2. Required Features . . . . . . . . . . . . . . . . . . . . . . 9 | 2. Required Features | |||
| 2.1. IPvX Address Backup . . . . . . . . . . . . . . . . . . . 9 | 2.1. IPvX Address Backup | |||
| 2.2. Preferred Path Indication . . . . . . . . . . . . . . . . 10 | 2.2. Preferred Path Indication | |||
| 2.3. Minimization of Unnecessary Service Disruptions . . . . . 10 | 2.3. Minimization of Unnecessary Service Disruptions | |||
| 2.4. Efficient Operation over Extended LANs . . . . . . . . . 10 | 2.4. Efficient Operation over Extended LANs | |||
| 2.5. Sub-Second Operation for IPv4 and IPv6 . . . . . . . . . 11 | 2.5. Sub-second Operation for IPv4 and IPv6 | |||
| 3. VRRP Overview . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3. VRRP Overview | |||
| 4. Sample Configurations . . . . . . . . . . . . . . . . . . . . 12 | 4. Sample VRRP Networks | |||
| 4.1. Sample Configuration 1 . . . . . . . . . . . . . . . . . 12 | 4.1. Sample VRRP Network 1 | |||
| 4.2. Sample Configuration 2 . . . . . . . . . . . . . . . . . 14 | 4.2. Sample VRRP Network 2 | |||
| 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 5. Protocol | |||
| 5.1. VRRP Packet Format . . . . . . . . . . . . . . . . . . . 16 | 5.1. VRRP Packet Format | |||
| 5.1.1. IPv4 Field Descriptions . . . . . . . . . . . . . . . 17 | 5.1.1. IPv4 Field Descriptions | |||
| 5.1.1.1. Source Address . . . . . . . . . . . . . . . . . 17 | 5.1.1.1. Source Address | |||
| 5.1.1.2. Destination Address . . . . . . . . . . . . . . . 17 | 5.1.1.2. Destination Address | |||
| 5.1.1.3. TTL . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.1.1.3. TTL | |||
| 5.1.1.4. Protocol . . . . . . . . . . . . . . . . . . . . 18 | 5.1.1.4. Protocol | |||
| 5.1.2. IPv6 Field Descriptions | ||||
| 5.1.2. IPv6 Field Descriptions . . . . . . . . . . . . . . . 18 | 5.1.2.1. Source Address | |||
| 5.1.2.1. Source Address . . . . . . . . . . . . . . . . . 18 | 5.1.2.2. Destination Address | |||
| 5.1.2.2. Destination Address . . . . . . . . . . . . . . . 18 | 5.1.2.3. Hop Limit | |||
| 5.1.2.3. Hop Limit . . . . . . . . . . . . . . . . . . . . 18 | 5.1.2.4. Next Header | |||
| 5.1.2.4. Next Header . . . . . . . . . . . . . . . . . . . 18 | 5.2. VRRP Field Descriptions | |||
| 5.2. VRRP Field Descriptions . . . . . . . . . . . . . . . . . 18 | 5.2.1. Version | |||
| 5.2.1. Version . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.2.2. Type | |||
| 5.2.2. Type . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.2.3. Virtual Rtr ID (VRID) | |||
| 5.2.3. Virtual Rtr ID (VRID) . . . . . . . . . . . . . . . . 19 | 5.2.4. Priority | |||
| 5.2.4. Priority . . . . . . . . . . . . . . . . . . . . . . 19 | 5.2.5. IPvX Addr Count | |||
| 5.2.5. IPvX Addr Count . . . . . . . . . . . . . . . . . . . 19 | 5.2.6. Reserve | |||
| 5.2.6. Reserve . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.2.7. Maximum Advertisement Interval (Max Advertise Interval) | |||
| 5.2.7. Maximum Advertisement Interval (Max Advertise | 5.2.8. Checksum | |||
| Interval) . . . . . . . . . . . . . . . . . . . . . . 19 | 5.2.9. IPvX Address(es) | |||
| 5.2.8. Checksum . . . . . . . . . . . . . . . . . . . . . . 20 | 6. Protocol State Machine | |||
| 5.2.9. IPvX Address(es) . . . . . . . . . . . . . . . . . . 20 | 6.1. Parameters per Virtual Router | |||
| 6. Protocol State Machine . . . . . . . . . . . . . . . . . . . 21 | 6.2. Timers | |||
| 6.1. Parameters Per Virtual Router . . . . . . . . . . . . . . 21 | 6.3. State Transition Diagram | |||
| 6.2. Timers . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6.4. State Descriptions | |||
| 6.3. State Transition Diagram . . . . . . . . . . . . . . . . 23 | 6.4.1. Initialize | |||
| 6.4. State Descriptions . . . . . . . . . . . . . . . . . . . 23 | 6.4.2. Backup | |||
| 6.4.1. Initialize . . . . . . . . . . . . . . . . . . . . . 23 | 6.4.3. Active | |||
| 6.4.2. Backup . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Sending and Receiving VRRP Packets | |||
| 6.4.3. Active . . . . . . . . . . . . . . . . . . . . . . . 27 | 7.1. Receiving VRRP Packets | |||
| 7. Sending and Receiving VRRP Packets . . . . . . . . . . . . . 29 | 7.2. Transmitting VRRP Packets | |||
| 7.1. Receiving VRRP Packets . . . . . . . . . . . . . . . . . 29 | 7.3. Virtual Router MAC Address | |||
| 7.2. Transmitting VRRP Packets . . . . . . . . . . . . . . . . 30 | 7.4. IPv6 Interface Identifiers | |||
| 7.3. Virtual Router MAC Address . . . . . . . . . . . . . . . 31 | 8. Operational Issues | |||
| 7.4. IPv6 Interface Identifiers . . . . . . . . . . . . . . . 32 | 8.1. IPv4 | |||
| 8. Operational Issues . . . . . . . . . . . . . . . . . . . . . 32 | 8.1.1. ICMP Redirects | |||
| 8.1. IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 8.1.2. Host ARP Requests | |||
| 8.1.1. ICMP Redirects . . . . . . . . . . . . . . . . . . . 32 | 8.1.3. Proxy ARP | |||
| 8.1.2. Host ARP Requests . . . . . . . . . . . . . . . . . . 33 | 8.2. IPv6 | |||
| 8.1.3. Proxy ARP . . . . . . . . . . . . . . . . . . . . . . 33 | 8.2.1. ICMPv6 Redirects | |||
| 8.2. IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 8.2.2. ND Neighbor Solicitation | |||
| 8.2.1. ICMPv6 Redirects . . . . . . . . . . . . . . . . . . 33 | 8.2.3. Router Advertisements | |||
| 8.2.2. ND Neighbor Solicitation . . . . . . . . . . . . . . 34 | 8.2.4. Unsolicited Neighbor Advertisements | |||
| 8.2.3. Router Advertisements . . . . . . . . . . . . . . . . 35 | 8.3. IPvX | |||
| 8.2.4. Unsolicited Neighbor Advertisements . . . . . . . . . 35 | 8.3.1. Potential Forwarding Loop | |||
| 8.3. IPvX . . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 8.3.2. Recommendations Regarding Setting Priority Values | |||
| 8.3.1. Potential Forwarding Loop . . . . . . . . . . . . . . 35 | 8.4. VRRPv3 and VRRPv2 Interoperation | |||
| 8.3.2. Recommendations Regarding Setting Priority Values . . 36 | 8.4.1. Assumptions | |||
| 8.4. VRRPv3 and VRRPv2 Interoperation . . . . . . . . . . . . 36 | 8.4.2. VRRPv3 Support of VRRPv2 Interoperation | |||
| 8.4.1. Assumptions . . . . . . . . . . . . . . . . . . . . . 36 | 8.4.2.1. Interoperation Considerations | |||
| 8.4.2. VRRPv3 Support of VRRPv2 Interoperation . . . . . . . 36 | 9. Security Considerations | |||
| 8.4.2.1. Interoperation Considerations . . . . . . . . . . 37 | 10. IANA Considerations | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | 11. References | |||
| 10. Contributors and Acknowledgments . . . . . . . . . . . . . . 39 | 11.1. Normative References | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 | 11.2. Informative References | |||
| 12. Normative References . . . . . . . . . . . . . . . . . . . . 40 | Acknowledgments | |||
| 13. Informative References . . . . . . . . . . . . . . . . . . . 41 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| 1. Introduction | 1. Introduction | |||
| This document defines version 3 of the Virtual Router Redundancy | This document defines version 3 of the Virtual Router Redundancy | |||
| Protocol (VRRP) for IPv4 and IPv6. It obsoletes RFC 5798 [RFC5798] | Protocol (VRRP) for IPv4 and IPv6. It obsoletes [RFC5798], which | |||
| which previously specified VRRP (version 3). RFC 5798 obsoleted RFC | previously specified VRRP (version 3). [RFC5798] obsoleted | |||
| 3768 [RFC3768] which specified VRRP (version 2) for IPv4. VRRP | [RFC3768], which specified VRRP (version 2) for IPv4. VRRP specifies | |||
| specifies an election protocol that dynamically assigns | an election protocol that dynamically assigns responsibility for a | |||
| responsibility for a Virtual Router (refer to Section 1.7) to one of | Virtual Router (refer to Section 1.7) to one of the VRRP Routers on a | |||
| the VRRP routers on a LAN. The VRRP Router controlling the IPv4 or | LAN. The VRRP Router controlling the IPv4 or IPv6 address(es) | |||
| IPv6 address(es) associated with a Virtual Router is called the | associated with a Virtual Router is called the Active Router, and it | |||
| Active Router, and it forwards packets routed to these IPv4 or IPv6 | forwards packets routed to these IPv4 or IPv6 addresses (except for | |||
| addresses (except for packets addressed to these addresses as | packets addressed to these addresses as described in Section 8.3.1). | |||
| decribed in Section 8.3.1). VRRP Active Routers are configured with | VRRP Active Routers are configured with virtual IPv4 or IPv6 | |||
| virtual IPv4 or IPv6 addresses, and Backup Routers infer the address | addresses, and Backup Routers infer the address family of the virtual | |||
| family of the virtual addresses being advertised based on the IP | addresses being advertised based on the IP protocol version. Within | |||
| protocol version. Within a VRRP Router, the Virtual Routers in each | a VRRP Router, the Virtual Routers in each of the IPv4 and IPv6 | |||
| of the IPv4 and IPv6 address families are independent of one another | address families are independent of one another and always treated as | |||
| and always treated as separate Virtual Router instances. The | separate Virtual Router instances. The election process provides | |||
| election process provides dynamic failover in the forwarding | dynamic failover in the forwarding responsibility should the Active | |||
| responsibility should the Active Router become unavailable. | Router become unavailable. | |||
| VRRP provides a function similar to the proprietary protocols "Hot | VRRP provides a function similar to the proprietary protocols Hot | |||
| Standby Router Protocol (HSRP)" [RFC2281] and "IP Standby Protocol" | Standby Router Protocol (HSRP) [RFC2281] and IP Standby Protocol | |||
| [IPSTB]. | [IPSTB]. | |||
| 1.1. RFC 5798 Differences | 1.1. Differences from RFC 5798 | |||
| The following changes have been made from RFC 5798: | The following changes have been made from [RFC5798]: | |||
| 1. The VRRP terminology has been updated to conform to inclusive | 1. The VRRP terminology has been updated to conform to inclusive | |||
| language guidelines for IETF technologies. The IETF has | language guidelines for IETF technologies. The IETF has | |||
| designated National Institute of Standards and Technology (NIST) | designated the National Institute of Standards and Technology | |||
| "Guidance for NIST Staff on Using Inclusive Language in | (NIST) document "Guidance for NIST Staff on Using Inclusive | |||
| Documentary Standards" [NISTIR8366] for its inclusive language | Language in Documentary Standards" [NISTIR8366] for its | |||
| guidelines. | inclusive language guidelines. | |||
| 2. The term for the VRRP Router assuming forwarding responsibility | 2. The term for the VRRP Router assuming forwarding responsibility | |||
| has been changed to "Active Router" to be consistent with IETF | has been changed to "Active Router" to be consistent with IETF | |||
| inclusive terminology. Additionally, inconsistencies in RFC | inclusive terminology. Additionally, inconsistencies in the | |||
| 5798 terminology for both "Active Router" and "Backup Router" | terminology of [RFC5798] for both "Active Router" and "Backup | |||
| were corrected. Additionally, the undesirable term for | Router" were corrected. Additionally, the undesirable term for | |||
| attracting and dropping unreachable packets has been changed. | attracting and dropping unreachable packets has been changed. | |||
| 3. Errata pertaining to the state machines in Section 6 were | 3. Errata pertaining to the state machines in Section 6 were | |||
| corrected. | corrected. | |||
| 4. The checksum calculation in Section 5.2.8 has been clarified to | 4. The checksum calculation in Section 5.2.8 has been clarified to | |||
| specify precisely what is included and that it does not include | specify precisely what is included and that it does not include | |||
| the pseudo-header for IPv4. | the pseudo-header for IPv4. | |||
| 5. When a VRRP advertisement is received from a lower priority VRRP | 5. When a VRRP advertisement is received from a lower priority VRRP | |||
| router, the Active VRRP router will immediately send a VRRP | Router, the Active VRRP Router will immediately send a VRRP | |||
| advertisement to assure learning bridges will bridge the packets | advertisement to assure learning bridges will bridge the packets | |||
| to the correct Ethernet segment (refer to Section 6.4.3). | to the correct Ethernet segment (refer to Section 6.4.3). | |||
| 6. Appendices describing operation over legacy technologies (FDDI, | 6. Appendices describing operation over legacy technologies (Fiber | |||
| Token Ring, and ATM LAN Emulation) were removed. | Distributed Data Interface (FDDI), Token Ring, and ATM LAN | |||
| Emulation) were removed. | ||||
| 7. A recommendation was added indicating that IPv6 Unsolicited | 7. A recommendation was added indicating that IPv6 Unsolicited | |||
| Neighbor Advertisements SHOULD be accepted by the Active and | Neighbor Advertisements SHOULD be accepted by the Active and | |||
| Backup Routers Section 8.2.4. | Backup Routers (Section 8.2.4). | |||
| 8. Checking that the Maximum Advertisement Intervals match is | 8. Checking that the Maximum Advertisement Intervals match is | |||
| recommended although this will not result in the VRRP packet | recommended, although this will not result in the VRRP packet | |||
| being dropped Section 7.1. | being dropped (Section 7.1). | |||
| 9. Miscellaneous editorial changes were made for readability. | 9. Miscellaneous editorial changes were made for readability. | |||
| 10. The IANA Considerations section was augmented to include all the | 10. The IANA Considerations section was augmented to include all the | |||
| IPv4/IPv6 multicast address allocations and Ethernet MAC address | IPv4/IPv6 multicast address allocations and Ethernet Media | |||
| allocations. | Access Control (MAC) address allocations. | |||
| 1.2. A Note on Terminology | 1.2. A Note on Terminology | |||
| This document discusses both IPv4 and IPv6 operations, and with | This document discusses both IPv4 and IPv6 operations, and with | |||
| respect to the VRRP protocol, many of the descriptions and procedures | respect to the VRRP protocol, many of the descriptions and procedures | |||
| are common. In this document, it would be less verbose to be able to | are common. In this document, it would be less verbose to be able to | |||
| refer to "IP" to mean either "IPv4 or IPv6". However, historically, | refer to "IP" to mean either "IPv4 or IPv6". However, historically, | |||
| the term "IP" often refers to IPv4. For this reason, in this | the term "IP" often refers to IPv4. For this reason, in this | |||
| specification, the term "IPvX" (where X is 4 or 6) is introduced to | specification, the term "IPvX" (where X is 4 or 6) is introduced to | |||
| mean either "IPv4" or "IPv6". In this text, where the IP version | mean either "IPv4" or "IPv6". In this text, where the IP version | |||
| matters, the appropriate term is used, and the use of the term "IP" | matters, the appropriate term is used, and the use of the term "IP" | |||
| is avoided. | is avoided. | |||
| 1.3. IPv4 | 1.3. IPv4 | |||
| There are a number of methods that an IPv4 end-host can use to | There are a number of methods that an IPv4 end-host can use to | |||
| determine its first-hop router for a particular IPv4 destination. | determine its first-hop router for a particular IPv4 destination. | |||
| These include running (or snooping) a dynamic routing protocol such | These include running (or snooping) a dynamic routing protocol such | |||
| as Routing Information Protocol (RIP) [RFC2453] or OSPF version 2 | as Routing Information Protocol (RIP) [RFC2453] or OSPF version 2 | |||
| [RFC2328], running an ICMP router discovery client [RFC1256], DHCPv4 | [RFC2328], running an ICMP router discovery client [RFC1256], running | |||
| [RFC2131], or using a statically configured default route. | DHCPv4 [RFC2131], or using a statically configured default route. | |||
| Running a dynamic routing protocol on every end-host may not be | Running a dynamic routing protocol on every end-host may not be | |||
| feasible for a number of reasons, including administrative overhead, | feasible for a number of reasons, including administrative overhead, | |||
| processing overhead, security issues, or the lack of an | processing overhead, security issues, or the lack of an | |||
| implementation for a particular platform. Neighbor or router | implementation for a particular platform. Neighbor or router | |||
| discovery protocols may require active participation by all hosts on | discovery protocols may require active participation by all hosts on | |||
| a network, requiring large timer values to reduce protocol overhead | a network, requiring large timer values to reduce protocol overhead | |||
| associated with the protocol packet processing for each host. This | associated with the protocol packet processing for each host. This | |||
| can result in a significant delay in the detection of an unreachable | can result in a significant delay in the detection of an unreachable | |||
| router and, such a delay may introduce unacceptably long periods of | router, and such a delay may introduce unacceptably long periods of | |||
| unreachability for the default route. | unreachability for the default route. | |||
| The use of a manually configured default route (either via a static | The use of a manually configured default route (either via a static | |||
| route or DHCPv4) is quite popular since it minimizes configuration | route or DHCPv4) is quite popular since it minimizes configuration | |||
| and processing overhead on the end-host and is supported by virtually | and processing overhead on the end-host and is supported by virtually | |||
| every IPv4 implementation. However, this creates a single point of | every IPv4 implementation. However, this creates a single point of | |||
| failure. Loss of the default router results in a catastrophic event, | failure. Loss of the default router results in a catastrophic event, | |||
| isolating all end-hosts that are unable to detect an available | isolating all end-hosts that are unable to detect an available | |||
| alternate path. | alternate path. | |||
| The Virtual Router Redundancy Protocol (VRRP) is designed to | The Virtual Router Redundancy Protocol (VRRP) is designed to | |||
| eliminate the single point of failure inherent in a network utilizing | eliminate the single point of failure inherent in a network utilizing | |||
| default routing. VRRP specifies an election protocol that | default routing. VRRP specifies an election protocol that | |||
| dynamically assigns responsibility for a Virtual Router to one of the | dynamically assigns responsibility for a Virtual Router to one of the | |||
| VRRP Routers on a LAN. The VRRP Router controlling the IPv4 | VRRP Routers on a LAN. The VRRP Router controlling the IPv4 | |||
| address(es) associated with a Virtual Router is called the Active | address(es) associated with a Virtual Router is called the Active | |||
| Router and forwards packets sent to these IPv4 addresses. The | Router and forwards packets sent to these IPv4 addresses. The | |||
| election process provides dynamic failover of the forwarding | election process provides dynamic failover of the forwarding | |||
| responsibility should the Active Router become unavailable. Any of | responsibility should the Active Router become unavailable. Any of | |||
| the Virtual Router's IPv4 addresses on a LAN can then be used as the | the Virtual Router's IPv4 addresses on a LAN can then be used as the | |||
| default first hop router by end-hosts. The advantage gained from | default first-hop router by end-hosts. The advantage gained from | |||
| using VRRP is a higher availability default path without requiring | using VRRP is a higher availability default path without requiring | |||
| configuration of dynamic routing or a router discovery protocol on | configuration of dynamic routing or a router discovery protocol on | |||
| every end-host. | every end-host. | |||
| 1.4. IPv6 | 1.4. IPv6 | |||
| IPv6 hosts on a LAN will usually learn about one or more default | IPv6 hosts on a LAN will usually learn about one or more default | |||
| routers by receiving Router Advertisements sent using the IPv6 | routers by receiving Router Advertisements sent using the IPv6 | |||
| Neighbor Discovery (ND) protocol [RFC4861]. The Router | Neighbor Discovery (ND) protocol [RFC4861]. The Router | |||
| Advertisements are periodically multicast at a rate such that the | Advertisements are periodically multicast at a rate such that the | |||
| skipping to change at page 7, line 28 ¶ | skipping to change at line 295 ¶ | |||
| unicast ND Neighbor Solicitation messages to the neighbor node. To | unicast ND Neighbor Solicitation messages to the neighbor node. To | |||
| reduce the overhead of sending Neighbor Solicitations, they are only | reduce the overhead of sending Neighbor Solicitations, they are only | |||
| sent to neighbors to which the node is actively sending traffic and | sent to neighbors to which the node is actively sending traffic and | |||
| only after there has been no positive indication that the router is | only after there has been no positive indication that the router is | |||
| up for a period of time. Using the default parameters in ND, it can | up for a period of time. Using the default parameters in ND, it can | |||
| take a host more than 10 seconds to learn that a router is | take a host more than 10 seconds to learn that a router is | |||
| unreachable before it will switch to another default router. This | unreachable before it will switch to another default router. This | |||
| delay would be very noticeable to users and cause some transport | delay would be very noticeable to users and cause some transport | |||
| protocol implementations to time out. | protocol implementations to time out. | |||
| While the ND unreachability detection could be made quicker by | While the Neighbor Unreachability Detection could be made quicker by | |||
| configuring the timer intervals to be more aggressive (note that the | configuring the timer intervals to be more aggressive (note that the | |||
| current lower limit for this is 5 seconds), this would have the | current lower limit for this is 5 seconds), this would have the | |||
| downside of significantly increasing the overhead of ND traffic, | downside of significantly increasing the overhead of ND traffic, | |||
| especially when there are many hosts all trying to determine the | especially when there are many hosts all trying to determine the | |||
| reachability of one or more routers. | reachability of one or more routers. | |||
| The Virtual Router Redundancy Protocol for IPv6 provides a much | The Virtual Router Redundancy Protocol for IPv6 provides a much | |||
| faster switchover to an alternate default router than can be obtained | faster switchover to an alternate default router than can be obtained | |||
| using standard ND procedures. Using VRRP, a Backup Router can take | using standard ND procedures. Using VRRP, a Backup Router can take | |||
| over for a failed default router in around three seconds (using VRRP | over for a failed default router in around three seconds (using VRRP | |||
| default parameters). This is done without any interaction with the | default parameters). This is done without any interaction with the | |||
| hosts and a minimum amount of VRRP traffic. | hosts and a minimum amount of VRRP traffic. | |||
| 1.5. Requirements Language | 1.5. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.6. Scope | 1.6. Scope | |||
| The remainder of this document describes the features, design goals, | The remainder of this document describes the features, design goals, | |||
| and theory of operation of VRRP. The message formats, protocol | and theory of operation of VRRP. The message formats, protocol | |||
| processing rules, and state machine that guarantee convergence to a | processing rules, and state machine that guarantee convergence to a | |||
| single Active Router are presented. Finally, operational issues | single Active Router are presented. Finally, operational issues | |||
| related to MAC address mapping, handling of ARP messages, generation | related to MAC address mapping, handling of ARP messages, generation | |||
| of ICMP redirect messages, and security issues are addressed. | of ICMP redirect messages, and security issues are addressed. | |||
| skipping to change at page 9, line 9 ¶ | skipping to change at line 370 ¶ | |||
| advertisements are always sent using the | advertisements are always sent using the | |||
| primary IPv4 address as the source of the | primary IPv4 address as the source of the | |||
| IPv4 packet. In IPv6, the link-local address | IPv4 packet. In IPv6, the link-local address | |||
| of the interface over which the packet is | of the interface over which the packet is | |||
| transmitted is used. | transmitted is used. | |||
| Forwarding Responsibility The responsibility for forwarding packets | Forwarding Responsibility The responsibility for forwarding packets | |||
| sent to the IPvX address(es) associated with | sent to the IPvX address(es) associated with | |||
| the Virtual Router. This includes receiving | the Virtual Router. This includes receiving | |||
| packets sent to the Virtual Router MAC | packets sent to the Virtual Router MAC | |||
| Address, forwarding these packets based on | address, forwarding these packets based on | |||
| the local RIB (Routing Information Base)/FIB | the local Routing Information Base (RIB) / | |||
| (Forwarding Information Base), answering ARP | Forwarding Information Base (FIB), answering | |||
| requests for the IPv4 address(es), and | ARP requests for the IPv4 address(es), and | |||
| answering ND requests for the IPv6 | answering ND requests for the IPv6 | |||
| address(es). | address(es). | |||
| Active Router The VRRP Router that is assuming the | Active Router The VRRP Router that is assuming the | |||
| responsibility of forwarding packets sent to | responsibility of forwarding packets sent to | |||
| the IPvX address(es) associated with the | the IPvX address(es) associated with the | |||
| Virtual Router, answering ARP requests for | Virtual Router, answering ARP requests for | |||
| the IPv4 address(es), and answering ND | the IPv4 address(es), and answering ND | |||
| requests for the IPv6 address(es). Note that | requests for the IPv6 address(es). Note that | |||
| if the IPvX address owner is available, then | if the IPvX address owner is available, then | |||
| it will always be the Active Router. | it will always be the Active Router. | |||
| Backup Router(s) The set of VRRP Routers available to assume | Backup Router(s) The set of VRRP Routers available to assume | |||
| forwarding responsibility for a Virtual | forwarding responsibility for a Virtual | |||
| Router should the current Active Router fail. | Router should the current Active Router fail. | |||
| Drop Route A route installed in the RIB (Routing | Drop Route A route installed in the Routing Information | |||
| Information Base) that will result in traffic | Base (RIB) that will result in traffic with a | |||
| with a destination address that matches the | destination address that matches the route to | |||
| route to be dropped. | be dropped. | |||
| 2. Required Features | 2. Required Features | |||
| This section describes the set of features that were considered | This section describes the set of features that were considered | |||
| mandatory and that guided the design of VRRP. | mandatory and that guided the design of VRRP. | |||
| 2.1. IPvX Address Backup | 2.1. IPvX Address Backup | |||
| Backup of an IPvX address or addresses is the primary function of | Backup of an IPvX address or addresses is the primary function of | |||
| VRRP. When providing election of an Active Router and the additional | VRRP. When providing election of an Active Router and the additional | |||
| functionality described below; the protocol should strive to: | functionality described below, the protocol should strive to: | |||
| * Minimize the duration of unreachability. | * minimize the duration of unreachability, | |||
| * Minimize the steady-state bandwidth overhead and processing | * minimize the steady-state bandwidth overhead and processing | |||
| complexity. | complexity, | |||
| * Function over a wide variety of multiaccess LAN technologies | * function over a wide variety of multiaccess LAN technologies | |||
| capable of supporting IPvX traffic. | capable of supporting IPvX traffic, | |||
| * Allow multiple Virtual Routers on a network for load-balancing. | * allow multiple Virtual Routers on a network for load-balancing, | |||
| and | ||||
| * Support multiple logical IPvX subnets on a single LAN segment. | * support multiple logical IPvX subnets on a single LAN segment. | |||
| 2.2. Preferred Path Indication | 2.2. Preferred Path Indication | |||
| A simple model of Active Router election among a set of redundant | A simple model of Active Router election among a set of redundant | |||
| routers is to treat each router with equal preference and claim | routers is to treat each router with equal preference and claim | |||
| victory after converging to any router as Active Router. However, | victory after converging to any router as the Active Router. | |||
| there are likely to be many environments where there is a distinct | However, there are likely to be many environments where there is a | |||
| preference (or range of preferences) among the set of redundant | distinct preference (or range of preferences) among the set of | |||
| routers. For example, this preference may be based upon access link | redundant routers. For example, this preference may be based upon | |||
| cost or speed, router performance or reliability, or other policy | access link cost or speed, router performance or reliability, or | |||
| considerations. The protocol should allow the expression of this | other policy considerations. The protocol should allow the | |||
| relative path preference in an intuitive manner and guarantee Active | expression of this relative path preference in an intuitive manner | |||
| Router convergence to the most preferred Virtual Router currently | and guarantee Active Router convergence to the most preferred Virtual | |||
| available. | Router currently available. | |||
| 2.3. Minimization of Unnecessary Service Disruptions | 2.3. Minimization of Unnecessary Service Disruptions | |||
| Once Active Router election has been performed, any unnecessary | Once Active Router election has been performed, any unnecessary | |||
| transition between Active and Backup Routers can result in a | transition between Active and Backup Routers can result in a | |||
| disruption in service. The protocol should ensure that, after Active | disruption of service. The protocol should ensure that, after Active | |||
| Router election, no state transition is triggered by any Backup | Router election, no state transition is triggered by any Backup | |||
| Router of equal or lower preference as long as the Active Router | Router of equal or lower preference as long as the Active Router | |||
| continues to function properly. | continues to function properly. | |||
| Some environments may find it beneficial to avoid the state | Some environments may find it beneficial to avoid the state | |||
| transition triggered when a router that is preferred over the current | transition triggered when a router that is preferred over the current | |||
| Active Router becomes available. It may be useful to support an | Active Router becomes available. It may be useful to support an | |||
| override of the immediate restoration to the preferred path. | override of the immediate restoration to the preferred path. | |||
| 2.4. Efficient Operation over Extended LANs | 2.4. Efficient Operation over Extended LANs | |||
| skipping to change at page 11, line 11 ¶ | skipping to change at line 469 ¶ | |||
| 1. Use the Virtual Router MAC address as the source in a packet sent | 1. Use the Virtual Router MAC address as the source in a packet sent | |||
| by the Active Router to trigger MAC learning. | by the Active Router to trigger MAC learning. | |||
| 2. Trigger a message immediately after transitioning to the Active | 2. Trigger a message immediately after transitioning to the Active | |||
| Router to update MAC learning. | Router to update MAC learning. | |||
| 3. Trigger periodic messages from the Active Router to maintain the | 3. Trigger periodic messages from the Active Router to maintain the | |||
| MAC address cache. | MAC address cache. | |||
| 2.5. Sub-Second Operation for IPv4 and IPv6 | 2.5. Sub-second Operation for IPv4 and IPv6 | |||
| Sub-second detection of Active Router failure is needed in both IPv4 | Sub-second detection of Active Router failure is needed in both IPv4 | |||
| and IPv6 environments. Earlier work proposed that sub-second | and IPv6 environments. Earlier work proposed that sub-second | |||
| operation was for IPv6 and this specification leverages that earlier | operation was for IPv6, and this specification leverages that earlier | |||
| approach for both IPv4 and IPv6. | approach for both IPv4 and IPv6. | |||
| One possible problematic scenario that may occur when using a small | One possible problematic scenario that may occur when using a small | |||
| Advertisement_Interval (refer to Section 6.1) is when a VRRP Router | Advertisement_Interval (refer to Section 6.1) is when a VRRP Router | |||
| is generating more packets than it can transmit, and a queue builds | is generating more packets than it can transmit, and a queue builds | |||
| up on the VRRP Router. When this occurs, it is possible that packets | up on the VRRP Router. When this occurs, it is possible that packets | |||
| being transmitted onto the VRRP-protected LAN could see a larger | being transmitted onto the VRRP-protected LAN could see a larger | |||
| queueing delay than the smallest Advertisement_Interval. In this | queueing delay than the smallest Advertisement_Interval. In this | |||
| case, the Active_Down_Interval (refer to Section 6.1) may be small | case, the Active_Down_Interval (refer to Section 6.1) may be small | |||
| enough that normal queuing delays might cause a Backup Router to | enough that normal queuing delays might cause a Backup Router to | |||
| conclude that the Active Router is down, and, hence, promote itself | conclude that the Active Router is down and, hence, promote itself to | |||
| to Active Router. Very shortly afterwards, the delayed VRRP packets | Active Router. Very shortly afterwards, the delayed VRRP packets | |||
| from the original Active Router cause a switch back to Backup Router. | from the original Active Router cause the VRRP Router to switch back | |||
| Furthermore, this process can repeat many times per second, causing a | to Backup Router. Furthermore, this process can repeat many times | |||
| significant disruption of traffic. To mitigate this problem, giving | per second, causing a significant disruption of traffic. To mitigate | |||
| VRRP packets priority on egress interface queues should be | this problem, giving VRRP packets priority on egress interface queues | |||
| considered. If the Active Router observes that this is occurring, it | should be considered. If the Active Router observes that this is | |||
| SHOULD log the problem (subject to rate-limiting). | occurring, it SHOULD log the problem (subject to rate-limiting). | |||
| 3. VRRP Overview | 3. VRRP Overview | |||
| VRRP specifies an election protocol to provide the Virtual Router | VRRP specifies an election protocol to provide the Virtual Router | |||
| function described earlier. All protocol messaging is performed | function described earlier. All protocol messaging is performed | |||
| using either IPv4 or IPv6 multicast datagrams. Thus, the protocol | using either IPv4 or IPv6 multicast datagrams. Thus, the protocol | |||
| can operate over a variety of multiaccess LAN technologies supporting | can operate over a variety of multiaccess LAN technologies supporting | |||
| IPvX multicast. Each link of a VRRP Virtual Router has a single | IPvX multicast. Each link of a VRRP Virtual Router has a single | |||
| well-known MAC address allocated to it. This document currently only | well-known MAC address allocated to it. This document currently only | |||
| details the mapping to networks using an IEEE 802 48-bit MAC address. | details the mapping to networks using an IEEE 802 48-bit MAC address. | |||
| The Virtual Router MAC address is used as the source in all periodic | The Virtual Router MAC address is used as the source in all periodic | |||
| VRRP messages sent by the Active Router to enable MAC learning by | VRRP messages sent by the Active Router to enable MAC learning by | |||
| layer-2 bridges on an extended LAN. | Layer 2 (L2) bridges on an extended LAN. | |||
| A Virtual Router is defined by its Virtual Router Identifier (VRID) | A Virtual Router is defined by its Virtual Router Identifier (VRID) | |||
| and a set of either IPv4 or IPv6 address(es). A VRRP Router may | and a set of either IPv4 or IPv6 address(es). A VRRP Router may | |||
| associate a Virtual Router with its real address on an interface. | associate a Virtual Router with its real address on an interface. | |||
| The scope of each Virtual Router is restricted to a single LAN. A | The scope of each Virtual Router is restricted to a single LAN. A | |||
| VRRP Router may be configured with additional Virtual Router mappings | VRRP Router may be configured with additional Virtual Router mappings | |||
| and priority for Virtual Routers it is willing to back up. The | and priority for Virtual Routers it is willing to back up. The | |||
| mapping between the VRID and its IPvX address(es) must be coordinated | mapping between the VRID and its IPvX address(es) must be coordinated | |||
| among all VRRP Routers on a LAN. | among all VRRP Routers on a LAN. | |||
| skipping to change at page 12, line 22 ¶ | skipping to change at line 529 ¶ | |||
| To minimize network traffic, only the Active Router for each Virtual | To minimize network traffic, only the Active Router for each Virtual | |||
| Router sends periodic VRRP Advertisement messages. A Backup Router | Router sends periodic VRRP Advertisement messages. A Backup Router | |||
| will not attempt to preempt the Active Router unless the Backup | will not attempt to preempt the Active Router unless the Backup | |||
| Router has a higher priority. This eliminates service disruption | Router has a higher priority. This eliminates service disruption | |||
| unless a more preferred path becomes available. It's also possible | unless a more preferred path becomes available. It's also possible | |||
| to administratively prohibit Active Router preemption attempts. The | to administratively prohibit Active Router preemption attempts. The | |||
| only exception is that a VRRP Router will always become the Active | only exception is that a VRRP Router will always become the Active | |||
| Router for any Virtual Router associated with address(es) it owns. | Router for any Virtual Router associated with address(es) it owns. | |||
| If the Active Router becomes unavailable, then the highest-priority | If the Active Router becomes unavailable, then the highest-priority | |||
| Backup Router will transition to Active Router after a short delay, | Backup Router will transition to the Active Router after a short | |||
| providing a controlled transition of Virtual Router responsibility | delay, providing a controlled transition of Virtual Router | |||
| with minimal service interruption. | responsibility with minimal service interruption. | |||
| The VRRP protocol design provides rapid transition from Backup Router | The VRRP protocol design provides rapid transition from the Backup | |||
| to Active Router to minimize service interruption and incorporates | Router to the Active Router to minimize service interruption and | |||
| optimizations that reduce protocol complexity while guaranteeing | incorporates optimizations that reduce protocol complexity while | |||
| controlled Active Router transition for typical operational | guaranteeing controlled Active Router transition for typical | |||
| scenarios. These optimizations result in an election protocol with | operational scenarios. These optimizations result in an election | |||
| minimal runtime state requirements, minimal active protocol states, | protocol with minimal runtime state requirements, minimal active | |||
| and a single message type and sender. The typical operational | protocol states, and a single message type and sender. The typical | |||
| scenarios are defined to be two redundant routers and/or distinct | operational scenarios are defined to be two redundant routers and/or | |||
| path preferences for each router. A side effect when these | distinct path preferences for each router. A side effect when these | |||
| assumptions are violated, i.e., more than two redundant paths with | assumptions are violated, i.e., more than two redundant paths with | |||
| equal preference, is that duplicate packets may be forwarded for a | equal preference, is that duplicate packets may be forwarded for a | |||
| brief period during Active Router election. However, the typical | brief period during Active Router election. However, the typical | |||
| scenario assumptions are likely to cover the vast majority of | scenario assumptions are likely to cover the vast majority of | |||
| deployments, loss of the Active Router is infrequent, and the | deployments, loss of the Active Router is infrequent, and the | |||
| expected duration for Active Router election convergence is quite | expected duration for Active Router election convergence is quite | |||
| small (< 4 seconds when using the default Advertisement_Interval and | small (< 4 seconds when using the default Advertisement_Interval and | |||
| configurable to < 1/25 second). Thus, the VRRP optimizations | configurable to < 1/25 second). Thus, the VRRP optimizations | |||
| represent significant simplifications in the protocol design while | represent significant simplifications in the protocol design while | |||
| incurring an insignificant probability of brief network disruption. | incurring an insignificant probability of brief network disruption. | |||
| 4. Sample Configurations | 4. Sample VRRP Networks | |||
| 4.1. Sample Configuration 1 | 4.1. Sample VRRP Network 1 | |||
| The following figure shows a simple network with two VRRP Routers | The following figure shows a simple network with two VRRP Routers | |||
| implementing one Virtual Router. | implementing one Virtual Router. | |||
| +-----------+ +-----------+ | +-----------+ +-----------+ | |||
| | Router-1 | | Router-2 | | | Router-1 | | Router-2 | | |||
| |(AR VRID=1)| |(BR VRID=1)| | |(AR VRID=1)| |(BR VRID=1)| | |||
| | | | | | | | | | | |||
| VRID=1 +-----------+ +-----------+ | VRID=1 +-----------+ +-----------+ | |||
| IPvX A------>* *<---------IPvX B | IPvX A------>* *<---------IPvX B | |||
| | | | | | | |||
| | | | | | | |||
| -------------+------------+--+-----------+-----------+-----------+ | -------------+------------+--+-----------+-----------+-----------+ | |||
| ^ ^ ^ ^ | ^ ^ ^ ^ | |||
| | | | | | | | | | | |||
| Default Router | | | | | Default Router | | | | | |||
| IPvX addresses ---> (IPvX A) (IPvX A) (IPvX A) (IPvX A) | IPvX Addresses ---> (IPvX A) (IPvX A) (IPvX A) (IPvX A) | |||
| | | | | | | | | | | |||
| IPvX H1->* IPvX H2->* IPvX H3->* IPvX H4->* | IPvX H1->* IPvX H2->* IPvX H3->* IPvX H4->* | |||
| +--+--+ +--+--+ +--+--+ +--+--+ | +--+--+ +--+--+ +--+--+ +--+--+ | |||
| | H1 | | H2 | | H3 | | H4 | | | H1 | | H2 | | H3 | | H4 | | |||
| +-----+ +-----+ +--+--+ +--+--+ | +-----+ +-----+ +--+--+ +--+--+ | |||
| Legend: | Legend: | |||
| --+---+---+-- = Ethernet | --+---+---+-- = Ethernet | |||
| H = Host computer | H = Host computer | |||
| AR = Active Router | AR = Active Router | |||
| BR = Backup Router | BR = Backup Router | |||
| * = IPvX Address: X is 4 everywhere in IPv4 case | * = IPvX Address: X is 4 everywhere in IPv4 case | |||
| X is 6 everywhere in IPv6 case | X is 6 everywhere in IPv6 case | |||
| (IPvX) = Default Router for hosts | (IPvX) = Default Router for hosts | |||
| Figure 1: Sample VRRP Network 1 | ||||
| In the IPv4 case, i.e., IPvX is IPv4 everywhere in the figure, each | In the IPv4 case, i.e., IPvX is IPv4 everywhere in the figure, each | |||
| router is permanently assigned an IPv4 address on the LAN interface | router is permanently assigned an IPv4 address on the LAN interface | |||
| (Router-1 is assigned IPv4 A and Router-2 is assigned IPv4 B), and | (Router-1 is assigned IPv4 A and Router-2 is assigned IPv4 B), and | |||
| each host installs a default route (learned through DHCPv4 or via a | each host installs a default route (learned through DHCPv4 or via a | |||
| configured static route) through one of the routers (in this example, | configured static route) through one of the routers (in this example, | |||
| they all use Router-1's IPv4 A). | they all use Router-1's IPv4 A). | |||
| In the IPv6 case, i.e., IPvX is IPv6 everywhere in the figure, each | In the IPv6 case, i.e., IPvX is IPv6 everywhere in the figure, each | |||
| router has its own Link-Local IPv6 address on the LAN interface, and | router has its own link-local IPv6 address on the LAN interface and a | |||
| a link-local IPv6 address per VRID that is shared with the other | link-local IPv6 address per VRID that is shared with the other | |||
| routers that serve the same VRID. Each host learns a default route | routers that serve the same VRID. Each host learns a default route | |||
| from Router Advertisements through one of the routers (in this | from Router Advertisements through one of the routers (in this | |||
| example, they all use Router-1's IPv6 Link-Local A). | example, they all use Router-1's IPv6 Link-Local A). | |||
| In an IPv4 VRRP environment, each router supports reception and | In an IPv4 VRRP environment, each router supports reception and | |||
| transmission for the exact same IPv4 address. Router-1 is said to be | transmission for the exact same IPv4 address. Router-1 is said to be | |||
| the IPv4 address owner of IPv4 A, and Router-2 is the IPv4 address | the IPv4 address owner of IPv4 A, and Router-2 is the IPv4 address | |||
| owner of IPv4 B. A Virtual Router is then defined by associating a | owner of IPv4 B. A Virtual Router is then defined by associating a | |||
| unique identifier (the VRID) with the address owned by Router-1. | unique identifier (the VRID) with the address owned by Router-1. | |||
| skipping to change at page 14, line 23 ¶ | skipping to change at line 621 ¶ | |||
| Router-1 is said to be the IPv6 address owner of IPv6 A, and Router-2 | Router-1 is said to be the IPv6 address owner of IPv6 A, and Router-2 | |||
| is the IPv6 address owner of IPv6 B. A Virtual Router is then | is the IPv6 address owner of IPv6 B. A Virtual Router is then | |||
| defined by associating a unique identifier (the VRID) with the | defined by associating a unique identifier (the VRID) with the | |||
| address owned by Router-1. | address owned by Router-1. | |||
| Finally, in both the IPv4 and IPv6 cases, the VRRP protocol manages | Finally, in both the IPv4 and IPv6 cases, the VRRP protocol manages | |||
| Virtual Router failover to a Backup Router. | Virtual Router failover to a Backup Router. | |||
| The IPvX example above shows a Virtual Router configured to cover the | The IPvX example above shows a Virtual Router configured to cover the | |||
| IPvX address owned by Router-1 (VRID=1, IPvX_Address=A). When VRRP | IPvX address owned by Router-1 (VRID=1, IPvX_Address=A). When VRRP | |||
| is enabled on Router-1 for VRID=1, it will assert itself as Active | is enabled on Router-1 for VRID=1, it will assert itself as the | |||
| Router, with priority = 255, since it is the IPvX address owner for | Active Router, with priority = 255, since it is the IPvX address | |||
| the Virtual Router IPvX address. When VRRP is enabled on Router-2 | owner for the Virtual Router IPvX address. When VRRP is enabled on | |||
| for VRID=1, it will transition to Backup Router, with priority = 100 | Router-2 for VRID=1, it will transition to the Backup Router, with | |||
| (the default priority is 100), since it is not the IPvX address | priority = 100 (the default priority is 100), since it is not the | |||
| owner. If Router-1 should fail, then the VRRP protocol will | IPvX address owner. If Router-1 should fail, then the VRRP protocol | |||
| transition Router-2 to Active Router, temporarily taking over | will transition Router-2 to the Active Router, temporarily taking | |||
| forwarding responsibility for IPvX A to provide uninterrupted service | over forwarding responsibility for IPvX A to provide uninterrupted | |||
| to the hosts. | service to the hosts. | |||
| Note that in both cases in this example, IPvX B is not backed up and | Note that in both cases in this example, IPvX B is not backed up and | |||
| it is only used by Router-2 as its interface address. In order to | it is only used by Router-2 as its interface address. In order to | |||
| back up IPvX B, a second Virtual Router must be configured. This is | back up IPvX B, a second Virtual Router must be configured. This is | |||
| shown in the next section. | shown in the next section. | |||
| 4.2. Sample Configuration 2 | 4.2. Sample VRRP Network 2 | |||
| The following figure shows a configuration with two Virtual Routers | The following figure shows a configuration with two Virtual Routers | |||
| with the hosts splitting their traffic between them. | with the hosts splitting their traffic between them. | |||
| +-----------+ +-----------+ | +-----------+ +-----------+ | |||
| | Router-1 | | Router-2 | | | Router-1 | | Router-2 | | |||
| |(AR VRID=1)| |(BR VRID=1)| | |(AR VRID=1)| |(BR VRID=1)| | |||
| |(BR VRID=2)| |(AR VRID=2)| | |(BR VRID=2)| |(AR VRID=2)| | |||
| VRID=1 +-----------+ +-----------+ VRID=2 | VRID=1 +-----------+ +-----------+ VRID=2 | |||
| IPvX A ----->* *<---------- IPvX B | IPvX A ----->* *<---------- IPvX B | |||
| | | | | | | |||
| | | | | | | |||
| ----------+-------------+-+-----------+-----------+-----------+ | ----------+-------------+-+-----------+-----------+-----------+ | |||
| ^ ^ ^ ^ | ^ ^ ^ ^ | |||
| | | | | | | | | | | |||
| Default Router | | | | | Default Router | | | | | |||
| IPvX addresses ---> (IPvX A) (IPvX A) (IPvX B) (IPvX B) | IPvX Addresses ---> (IPvX A) (IPvX A) (IPvX B) (IPvX B) | |||
| | | | | | | | | | | |||
| IPvX H1->* IPvX H2->* IPvX H3->* IPvX H4->* | IPvX H1->* IPvX H2->* IPvX H3->* IPvX H4->* | |||
| +--+--+ +--+--+ +--+--+ +--+--+ | +--+--+ +--+--+ +--+--+ +--+--+ | |||
| | H1 | | H2 | | H3 | | H4 | | | H1 | | H2 | | H3 | | H4 | | |||
| +-----+ +-----+ +--+--+ +--+--+ | +-----+ +-----+ +--+--+ +--+--+ | |||
| Legend: | Legend: | |||
| ---+---+---+-- = Ethernet | ---+---+---+-- = Ethernet | |||
| H = Host computer | H = Host computer | |||
| AR = Active Router | AR = Active Router | |||
| BR = Backup Router | BR = Backup Router | |||
| * = IPvX Address: X is 4 everywhere in IPv4 case | * = IPvX Address: X is 4 everywhere in IPv4 case | |||
| X is 6 everywhere in IPv6 case | X is 6 everywhere in IPv6 case | |||
| (IPvX) = Default Router for hosts | (IPvX) = Default Router for hosts | |||
| Figure 2: Sample VRRP Network 2 | ||||
| In the IPv4 example above, i.e., IPvX is IPv4 everywhere in the | In the IPv4 example above, i.e., IPvX is IPv4 everywhere in the | |||
| figure, half of the hosts have configured a static default route | figure, half of the hosts have configured a static default route | |||
| through Router-1's IPv4 A, and half are using Router-2's IPv4 B. The | through Router-1's IPv4 A, and half are using Router-2's IPv4 B. The | |||
| configuration of Virtual Router VRID=1 is exactly the same as in the | configuration of Virtual Router VRID=1 is exactly the same as in the | |||
| first example (see Section 4.1), and a second Virtual Router has been | first example (see Section 4.1), and a second Virtual Router has been | |||
| added to cover the IPv4 address owned by Router-2 (VRID=2, | added to cover the IPv4 address owned by Router-2 (VRID=2, | |||
| IPv4_Address=B). In this case, Router-2 will assert itself as Active | IPv4_Address=B). In this case, Router-2 will assert itself as the | |||
| Router for VRID=2 while Router-1 will act as a Backup Router. This | Active Router for VRID=2, while Router-1 will act as a Backup Router. | |||
| scenario demonstrates a deployment providing load-splitting when both | This scenario demonstrates a deployment providing load-splitting when | |||
| routers are available, while providing full redundancy for | both routers are available, while providing full redundancy for | |||
| robustness. | robustness. | |||
| In the IPv6 example above, i.e., IPvX is IPv6 everywhere in the | In the IPv6 example above, i.e., IPvX is IPv6 everywhere in the | |||
| figure, half of the hosts are using a default route through Router- | figure, half of the hosts are using a default route through Router- | |||
| 1's IPv6 A, and half are using Router-2's IPv6 B. The configuration | 1's IPv6 A, and half are using Router-2's IPv6 B. The configuration | |||
| of Virtual Router VRID=1 is exactly the same as in the first example | of Virtual Router VRID=1 is exactly the same as in the first example | |||
| (see Section 4.1), and a second Virtual Router has been added to | (see Section 4.1), and a second Virtual Router has been added to | |||
| cover the IPv6 address owned by Router-2 (VRID=2, IPv6_Address=B). | cover the IPv6 address owned by Router-2 (VRID=2, IPv6_Address=B). | |||
| In this case, Router-2 will assert itself as the Active Router for | ||||
| In this case, Router-2 will assert itself as Active Router for VRID=2 | VRID=2, while Router-1 will act as a Backup Router. This scenario | |||
| while Router-1 will act as a Backup Router. This scenario | ||||
| demonstrates a deployment providing load-splitting when both routers | demonstrates a deployment providing load-splitting when both routers | |||
| are available, while providing full redundancy for robustness. | are available while providing full redundancy for robustness. | |||
| Note that the details of load-balancing are out of scope of this | Note that the details of load-balancing are out of scope of this | |||
| document. However, in a case where the servers need different | document. However, in a case where the servers need different | |||
| weights, it may not make sense to rely on router advertisements alone | weights, it may not make sense to rely on Router Advertisements alone | |||
| to balance the host traffic between the routers [RFC4311]. | to balance the host traffic between the routers [RFC4311]. | |||
| 5. Protocol | 5. Protocol | |||
| The purpose of the VRRP Advertisement is to communicate to all VRRP | The purpose of the VRRP Advertisement is to communicate to all VRRP | |||
| Routers the priority, Max Advertisement Interval, and IPvX addresses | Routers the priority, Maximum Advertisement Interval, and IPvX | |||
| of the Active Router associated with the VRID. | addresses of the Active Router associated with the VRID. | |||
| When VRRP is protecting an IPv4 address, VRRP packets are sent | When VRRP is protecting an IPv4 address, VRRP packets are sent | |||
| encapsulated in IPv4 packets. They are sent to the IPv4 multicast | encapsulated in IPv4 packets. They are sent to the IPv4 multicast | |||
| address assigned to VRRP. | address assigned to VRRP. | |||
| When VRRP is protecting an IPv6 address, VRRP packets are sent | When VRRP is protecting an IPv6 address, VRRP packets are sent | |||
| encapsulated in IPv6 packets. They are sent to the IPv6 multicast | encapsulated in IPv6 packets. They are sent to the IPv6 multicast | |||
| address assigned to VRRP. | address assigned to VRRP. | |||
| 5.1. VRRP Packet Format | 5.1. VRRP Packet Format | |||
| skipping to change at page 17, line 28 ¶ | skipping to change at line 741 ¶ | |||
| | IPvX Address(es) | | | IPvX Address(es) | | |||
| + + | + + | |||
| + + | + + | |||
| + + | + + | |||
| + + | + + | |||
| | | | | | | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4/IPv6 VRRP Advertisement Packet Format | Figure 3: IPv4/IPv6 VRRP Advertisement Packet Format | |||
| 5.1.1. IPv4 Field Descriptions | 5.1.1. IPv4 Field Descriptions | |||
| 5.1.1.1. Source Address | 5.1.1.1. Source Address | |||
| This is the primary IPv4 address of the interface from which the | This is the primary IPv4 address of the interface from which the | |||
| packet is being sent. | packet is being sent. | |||
| 5.1.1.2. Destination Address | 5.1.1.2. Destination Address | |||
| skipping to change at page 18, line 42 ¶ | skipping to change at line 802 ¶ | |||
| 5.1.2.4. Next Header | 5.1.2.4. Next Header | |||
| The IPv6 Next Header protocol assigned by the IANA for VRRP is 112 | The IPv6 Next Header protocol assigned by the IANA for VRRP is 112 | |||
| (decimal). | (decimal). | |||
| 5.2. VRRP Field Descriptions | 5.2. VRRP Field Descriptions | |||
| 5.2.1. Version | 5.2.1. Version | |||
| The version field specifies the VRRP protocol version of this packet. | The Version field specifies the VRRP protocol version of this packet. | |||
| This document defines version 3. | This document defines version 3. | |||
| 5.2.2. Type | 5.2.2. Type | |||
| The Type field specifies the type of this VRRP packet. The only | The Type field specifies the type of this VRRP packet. The only | |||
| packet type defined in this version of the protocol is: | packet type defined in this version of the protocol is: | |||
| 1 - ADVERTISEMENT | 1 - ADVERTISEMENT | |||
| A packet with unknown type MUST be discarded. | A packet with unknown type MUST be discarded. | |||
| 5.2.3. Virtual Rtr ID (VRID) | 5.2.3. Virtual Rtr ID (VRID) | |||
| The Virtual Rtr ID field identifies the Virtual Router for which this | The Virtual Rtr ID field identifies the Virtual Router for which this | |||
| packet is reporting status. | packet is reporting status. | |||
| 5.2.4. Priority | 5.2.4. Priority | |||
| The priority field specifies the sending VRRP Router's priority for | The Priority field specifies sending the VRRP Router's priority for | |||
| the Virtual Router. Higher values indicate higher priority. This | the Virtual Router. Higher values indicate higher priority. This | |||
| field is an 8-bit unsigned integer field. | field is an 8-bit unsigned integer field. | |||
| The priority value for the VRRP Router that owns the IPvX address | The priority value for the VRRP Router that owns the IPvX address | |||
| associated with the Virtual Router MUST be 255 (decimal). | associated with the Virtual Router MUST be 255 (decimal). | |||
| VRRP Routers backing up a Virtual Router MUST use priority values | VRRP Routers backing up a Virtual Router MUST use priority values | |||
| between 1-254 (decimal). The default priority value for VRRP Routers | between 1-254 (decimal). The default priority value for VRRP Routers | |||
| backing up a Virtual Router is 100 (decimal). Refer to Section 8.3.2 | backing up a Virtual Router is 100 (decimal). Refer to Section 8.3.2 | |||
| for recommendations on setting the priority. | for recommendations on setting the priority. | |||
| The priority value zero (0) has special meaning, indicating that the | The priority value zero (0) has special meaning, indicating that the | |||
| current Active Router has stopped participating in VRRP. This is | current Active Router has stopped participating in VRRP. This is | |||
| used to trigger Backup Routers to quickly transition to Active Router | used to trigger Backup Routers to quickly transition to the Active | |||
| without having to wait for the current Active_Down_Interval (refer to | Router without having to wait for the current Active_Down_Interval | |||
| Section 6.1). | (refer to Section 6.1). | |||
| 5.2.5. IPvX Addr Count | 5.2.5. IPvX Addr Count | |||
| This is the number of either IPv4 addresses or IPv6 addresses | The IPvX Addr Count field is the number of either IPv4 addresses or | |||
| contained in this VRRP advertisement. The minimum value is 1. If | IPv6 addresses contained in this VRRP advertisement. The minimum | |||
| the received count is 0, the VRRP advertisement MUST be ignored. | value is 1. If the received count is 0, the VRRP advertisement MUST | |||
| be ignored. | ||||
| 5.2.6. Reserve | 5.2.6. Reserve | |||
| This reserved field MUST be set to zero on transmission and ignored | The Reserve field MUST be set to zero on transmission and ignored on | |||
| on reception. | reception. | |||
| 5.2.7. Maximum Advertisement Interval (Max Advertise Interval) | 5.2.7. Maximum Advertisement Interval (Max Advertise Interval) | |||
| The Maximum Advertisement Interval is a 12-bit field that indicates | The Max Advertise Interval is a 12-bit field that indicates the time | |||
| the time interval (in centiseconds) between advertisements. The | interval (in centiseconds) between advertisements. The default is | |||
| default is 100 centiseconds (1 second). | 100 centiseconds (1 second). | |||
| Note that higher-priority Active Routers with slower transmission | Note that higher-priority Active Routers with slower transmission | |||
| rates than their Backup Routers are unstable. This is because lower- | rates than their Backup Routers are unstable. This is because lower- | |||
| priority Backup Routers configured to faster rates could join the LAN | priority Backup Routers configured to faster rates could join the LAN | |||
| and decide they should be Active Routers before they have heard | and decide they should be Active Routers before they have heard | |||
| anything from the higher-priority Active Router with a slower rate. | anything from the higher-priority Active Router with a slower rate. | |||
| When this happens, it is temporary, once the lower-priority node does | When this happens, it is temporary, i.e., once the lower-priority | |||
| hear from the higher-priority Active Router, it will relinquish | node does hear from the higher-priority Active Router, it will | |||
| Active Router status. | relinquish Active Router status. | |||
| 5.2.8. Checksum | 5.2.8. Checksum | |||
| The checksum field is used to detect data corruption in the VRRP | The Checksum field is used to detect data corruption in the VRRP | |||
| message. | message. | |||
| For both the IPv4 and IPv6 address families, the checksum is the | For both the IPv4 and IPv6 address families, the checksum is the | |||
| 16-bit one's complement of the one's complement sum of the VRRP | 16-bit one's complement of the one's complement sum of the VRRP | |||
| message. For computing the checksum, the checksum field is set to | message. For computing the checksum, the Checksum field is set to | |||
| zero. See RFC1071 for more detail [RFC1071]. | zero. See [RFC1071] for more details. | |||
| For the IPv4 address family, the checksum calculation only includes | For the IPv4 address family, the checksum calculation only includes | |||
| the VRRP message starting with the Version field and ending after the | the VRRP message starting with the Version field and ending after the | |||
| last IPv4 address (refer to Section 5.2). | last IPv4 address (refer to Section 5.2). | |||
| For the IPv6 address family, the checksum calculation also includes a | For the IPv6 address family, the checksum calculation also includes a | |||
| prepended "pseudo-header" as defined in Section 8.1 of [RFC8200]. | prepended "pseudo-header", as defined in Section 8.1 of [RFC8200]. | |||
| The next header field in the "pseudo-header" should be set to 112 | The Next Header field in the "pseudo-header" should be set to 112 | |||
| (decimal) for VRRP. | (decimal) for VRRP. | |||
| 5.2.9. IPvX Address(es) | 5.2.9. IPvX Address(es) | |||
| This refers to one or more IPvX addresses associated with the Virtual | This refers to one or more IPvX addresses associated with the Virtual | |||
| Router. The number of addresses included is specified in the "IPvX | Router. The number of addresses included is specified in the IPvX | |||
| Addr Count" field. These fields are used for troubleshooting | Addr Count field. These fields are used for troubleshooting | |||
| misconfigured routers. If more than one address is sent, it is | misconfigured routers. If more than one address is sent, it is | |||
| recommended that all routers be configured to send these addresses in | recommended that all routers be configured to send these addresses in | |||
| the same order to simplify comparisons. | the same order to simplify comparisons. | |||
| For IPv4 addresses, this refers to one or more IPv4 addresses that | For IPv4 addresses, this refers to one or more IPv4 addresses that | |||
| are backed up by the Virtual Router. | are backed up by the Virtual Router. | |||
| For IPv6, the first address MUST be the IPv6 link-local address | For IPv6, the first address MUST be the IPv6 link-local address | |||
| associated with the Virtual Router. | associated with the Virtual Router. | |||
| This field contains either one or more IPv4 addresses, or one or more | This field contains either one or more IPv4 addresses or one or more | |||
| IPv6 addresses. The address family of the addresses, IPv4 or IPv6 | IPv6 addresses. The address family of the addresses, IPv4 or IPv6 | |||
| but not both, MUST be the same as the VRRP packet's IPvX header | but not both, MUST be the same as the VRRP packet's IPvX header | |||
| address family. | address family. | |||
| 6. Protocol State Machine | 6. Protocol State Machine | |||
| 6.1. Parameters Per Virtual Router | 6.1. Parameters per Virtual Router | |||
| VRID Virtual Router Identifier. Configurable | VRID Virtual Router Identifier. Configurable | |||
| value in the range 1-255 (decimal). | value in the range 1-255 (decimal). | |||
| There is no default. | There is no default. | |||
| Priority Priority value to be used by this VRRP | Priority Priority value to be used by this VRRP | |||
| router in Active Router election for this | Router in Active Router election for this | |||
| Virtual Router. The value of 255 | Virtual Router. The value of 255 | |||
| (decimal) is reserved for the router that | (decimal) is reserved for the router that | |||
| owns the IPvX address associated with the | owns the IPvX address associated with the | |||
| Virtual Router. The value of 0 (zero) is | Virtual Router. The value of 0 (zero) is | |||
| reserved for the Active Router to | reserved for the Active Router to | |||
| indicate it is relinquishing | indicate it is relinquishing | |||
| responsibility for the Virtual Router. | responsibility for the Virtual Router. | |||
| The range 1-254 (decimal) is available | The range 1-254 (decimal) is available | |||
| for VRRP Routers backing up the Virtual | for VRRP Routers backing up the Virtual | |||
| Router. Higher values indicate higher | Router. Higher values indicate higher | |||
| skipping to change at page 21, line 43 ¶ | skipping to change at line 943 ¶ | |||
| with this Virtual Router. Configured | with this Virtual Router. Configured | |||
| list of addresses with no default. The | list of addresses with no default. The | |||
| first address MUST be the Link-Local | first address MUST be the Link-Local | |||
| address associated with the Virtual | address associated with the Virtual | |||
| Router. | Router. | |||
| IPvX_Addresses Refer to either the IPv4 or IPv6 address | IPvX_Addresses Refer to either the IPv4 or IPv6 address | |||
| associated with this Virtual Router (see | associated with this Virtual Router (see | |||
| IPv4_Addresses and IPv6_Addresses above). | IPv4_Addresses and IPv6_Addresses above). | |||
| Advertisement_Interval Time interval between ADVERTISEMENTS | Advertisement_Interval Time interval between VRRP Advertisements | |||
| (centiseconds) sent by this Virtual | (centiseconds) sent by this Virtual | |||
| Router. Default is 100 centiseconds (1 | Router. Default is 100 centiseconds (1 | |||
| second). | second). | |||
| Active_Adver_Interval Advertisement interval contained in | Active_Adver_Interval Advertisement interval contained in VRRP | |||
| ADVERTISEMENTS received from the Active | Advertisements received from the Active | |||
| Router (in centiseconds). This value is | Router (in centiseconds). This value is | |||
| saved by Virtual Routers in the Backup | saved by Virtual Routers in the Backup | |||
| state and used to compute Skew_Time (as | state and used to compute Skew_Time (as | |||
| specfied in Section 8.3.2) and | specified in Section 8.3.2) and | |||
| Active_Down_Interval. The initial value | Active_Down_Interval. The initial value | |||
| is the same as Advertisement_Interval. | is the same as Advertisement_Interval. | |||
| Skew_Time Time to skew Active_Down_Interval in | Skew_Time Time to skew Active_Down_Interval in | |||
| centiseconds. Calculated as: | centiseconds. Calculated as: | |||
| (((256 - Priority) * | (((256 - Priority) * | |||
| Active_Adver_Interval) / 256) | Active_Adver_Interval) / 256) | |||
| Active_Down_Interval Time interval for the Backup Router to | Active_Down_Interval Time interval for the Backup Router to | |||
| skipping to change at page 23, line 31 ¶ | skipping to change at line 1027 ¶ | |||
| | +------| |----------+ | | | +------| |----------+ | | |||
| | | +---------------+ | | | | | +---------------+ | | | |||
| | | | | | | | | | | |||
| | V V | | | V V | | |||
| +---------------+ +---------------+ | +---------------+ +---------------+ | |||
| | |---------------------->| | | | |---------------------->| | | |||
| | Active | | Backup | | | Active | | Backup | | |||
| | |<----------------------| | | | |<----------------------| | | |||
| +---------------+ +---------------+ | +---------------+ +---------------+ | |||
| Figure 4: State Transition Diagram | ||||
| 6.4. State Descriptions | 6.4. State Descriptions | |||
| In the state descriptions below, the state names are identified by | In the state descriptions below, the state names are identified by | |||
| {state-name}, and the packets are identified by all-uppercase | {state-name}, and the packets are identified by all-uppercase | |||
| characters. | characters. | |||
| A VRRP Router implements an instance of the state machine for each | A VRRP Router implements an instance of the state machine for each | |||
| Virtual Router in which it is participating. | Virtual Router in which it is participating. | |||
| 6.4.1. Initialize | 6.4.1. Initialize | |||
| The purpose of this state is to wait for a Startup event, that is, an | The purpose of this state is to wait for a Startup event, that is, an | |||
| implementation-defined mechanism that initiates the protocol once it | implementation-defined mechanism that initiates the protocol once it | |||
| has been configured. The configuration mechanism is out of scope for | has been configured. The configuration mechanism is out of scope for | |||
| this specification. | this specification. | |||
| If a Startup event is received, then: | If a Startup event is received, then: | |||
| - If the Priority = 255, i.e., the router owns the IPvX | * If the Priority = 255, i.e., the router owns the IPvX address(es) | |||
| address(es) associated with the Virtual Router, then: | associated with the Virtual Router, then: | |||
| + Send an ADVERTISEMENT | - Send an ADVERTISEMENT | |||
| + If the protected IPvX address is an IPv4 address, then: | - If the protected IPvX address is an IPv4 address, then: | |||
| * For each IPv4 address associated with the Virtual | o For each IPv4 address associated with the Virtual Router, | |||
| Router, broadcast a gratuitous ARP message | broadcast a gratuitous ARP message containing the Virtual | |||
| containing the Virtual Router MAC address and | Router MAC address and with the target link-layer address | |||
| with the target link-layer address set to the | set to the Virtual Router MAC address. | |||
| Virtual Router MAC address. | ||||
| + else // IPv6 | - else // IPv6 | |||
| * For each IPv6 address associated with the Virtual | o For each IPv6 address associated with the Virtual Router, | |||
| Router, send an unsolicited ND Neighbor | send an unsolicited ND Neighbor Advertisement with the | |||
| Advertisement with the Router Flag (R) set, the | Router Flag (R) set, the Solicited Flag (S) clear, the | |||
| Solicited Flag (S) clear, the Override flag (O) | Override flag (O) set, the target address set to the IPv6 | |||
| set, the target address set to the IPv6 address | address of the Virtual Router, and the target link-layer | |||
| of the Virtual Router, and the target link-layer | address set to the Virtual Router MAC address. | |||
| address set to the Virtual Router MAC address. | ||||
| + endif // was protected address IPv4? | - endif // was protected address IPv4? | |||
| + Set the Adver_Timer to Advertisement_Interval | - Set the Adver_Timer to Advertisement_Interval | |||
| + Transition to the {Active} state | - Transition to the {Active} state | |||
| - else // Router is not the address owner | * else // Router is not the address owner | |||
| + Set Active_Adver_Interval to Advertisement_Interval | - Set the Active_Adver_Interval to Advertisement_Interval | |||
| + Set the Active_Down_Timer to Active_Down_Interval | - Set the Active_Down_Timer to Active_Down_Interval | |||
| + Transition to the {Backup} state | - Transition to the {Backup} state | |||
| - endif // was priority 255? | * endif // was priority 255? | |||
| endif // Startup event was received | endif // Startup event was received | |||
| 6.4.2. Backup | 6.4.2. Backup | |||
| The purpose of the {Backup} state is to monitor the availability and | The purpose of the {Backup} state is to monitor the availability and | |||
| state of the Active Router. The Solicited-Node multicast address | state of the Active Router. The Solicited-Node multicast address | |||
| [RFC4291] is referenced in the pseudo-code below. | [RFC4291] is referenced in the pseudocode below. | |||
| While in Backup state, a VRRP Router MUST do the following: | While in the {Backup} state, a VRRP Router MUST do the following: | |||
| - If the protected IPvX address is an IPv4 address, | * If the protected IPvX address is an IPv4 address, then: | |||
| then: | ||||
| + It MUST NOT respond to ARP requests for the IPv4 | - It MUST NOT respond to ARP requests for the IPv4 address(es) | |||
| address(es) associated with the Virtual Router. | associated with the Virtual Router. | |||
| - else // protected address is IPv6 | * else // protected address is IPv6 | |||
| + It MUST NOT respond to ND Neighbor Solicitation messages | - It MUST NOT respond to ND Neighbor Solicitation messages for | |||
| for the IPv6 address(es) associated with the Virtual Router. | the IPv6 address(es) associated with the Virtual Router. | |||
| + It MUST NOT send ND Router Advertisement messages | - It MUST NOT send ND Router Advertisement messages for the | |||
| for the Virtual Router. | Virtual Router. | |||
| - endif // was protected address IPv4? | * endif // was protected address IPv4? | |||
| - It MUST discard packets with a destination link-layer | * It MUST discard packets with a destination link-layer MAC address | |||
| MAC address equal to the Virtual Router MAC address. | equal to the Virtual Router MAC address. | |||
| - It MUST NOT accept packets addressed to the IPvX | * It MUST NOT accept packets addressed to the IPvX address(es) | |||
| address(es) associated with the Virtual Router. | associated with the Virtual Router. | |||
| - If a Shutdown event is received, then: | * If a Shutdown event is received, then: | |||
| + Cancel the Active_Down_Timer | - Cancel the Active_Down_Timer | |||
| + Transition to the {Initialize} state | - Transition to the {Initialize} state | |||
| - endif // Shutdown event received | * endif // Shutdown event received | |||
| - If the Active_Down_Timer fires, then: | * If the Active_Down_Timer fires, then: | |||
| + Send an ADVERTISEMENT | - Send an ADVERTISEMENT | |||
| + If the protected IPvX address is an IPv4 address, then: | - If the protected IPvX address is an IPv4 address, then: | |||
| * For each IPv4 address associated with the Virtual | o For each IPv4 address associated with the Virtual Router, | |||
| Router, broadcast a gratuitous ARP message | broadcast a gratuitous ARP message containing the Virtual | |||
| containing the Virtual Router MAC address and | Router MAC address and with the target link-layer address | |||
| with the target link-layer address set to the | set to the Virtual Router MAC address. | |||
| Virtual Router MAC address. | ||||
| + else // IPv6 | - else // IPv6 | |||
| * Compute and join the Solicited-Node multicast | o Compute and join the Solicited-Node multicast address | |||
| address [RFC4291] for the IPv6 address(es) | [RFC4291] for the IPv6 address(es) associated with the | |||
| associated with the Virtual Router. | Virtual Router. | |||
| * For each IPv6 address associated with the | o For each IPv6 address associated with the Virtual Router, | |||
| Virtual Router, send an unsolicited ND Neighbor | send an unsolicited ND Neighbor Advertisement with the | |||
| Advertisement with the Router Flag (R) set, the | Router Flag (R) set, the Solicited Flag (S) clear, the | |||
| Solicited Flag (S) clear, the Override flag (O) | Override flag (O) set, the target address set to the IPv6 | |||
| set, the target address set to the IPv6 address | address of the Virtual Router, and the target link-layer | |||
| of the Virtual Router, and the target link-layer | address set to the Virtual Router MAC address. | |||
| address set to the Virtual Router MAC address. | ||||
| + endif // was protected address IPv4? | - endif // was protected address IPv4? | |||
| + Set the Adver_Timer to Advertisement_Interval | - Set the Adver_Timer to Advertisement_Interval | |||
| + Transition to the {Active} state | - Transition to the {Active} state | |||
| - endif // Active_Down_Timer fired | * endif // Active_Down_Timer fired | |||
| - If an ADVERTISEMENT is received, then: | * If an ADVERTISEMENT is received, then: | |||
| + If the Priority in the ADVERTISEMENT is 0, then: | - If the Priority in the ADVERTISEMENT is 0, then: | |||
| * Set the Active_Down_Timer to Skew_Time | o Set the Active_Down_Timer to Skew_Time | |||
| + else // priority non-zero | - else // priority non-zero | |||
| * If Preempt_Mode is False, or if the Priority in | o If Preempt_Mode is False, or if the Priority in the | |||
| the ADVERTISEMENT is greater than or equal to the | ADVERTISEMENT is greater than or equal to the local | |||
| local Priority, then: | Priority, then: | |||
| @ Set Active_Adver_Interval to Max Advertise | + Set the Active_Adver_Interval to the Max Advertise | |||
| Interval contained in the ADVERTISEMENT | Interval contained in the ADVERTISEMENT | |||
| @ Recompute the Skew_Time | + Recompute the Skew_Time | |||
| @ Recompute the Active_Down_Interval, | + Recompute the Active_Down_Interval | |||
| @ Set the Active_Down_Timer to Active_Down_Interval | + Set the Active_Down_Timer to Active_Down_Interval | |||
| * else // preempt was true and priority was less | o else // preempt was true and priority was less than the | |||
| than the local priority | local priority | |||
| @ Discard the ADVERTISEMENT | + Discard the ADVERTISEMENT | |||
| * endif // preempt test | o endif // preempt test | |||
| + endif // was priority 0? | - endif // was priority 0? | |||
| - endif // was advertisement received? | * endif // was advertisement received? | |||
| endwhile // Backup state | endwhile // {Backup} state | |||
| 6.4.3. Active | 6.4.3. Active | |||
| While in the {Active} state, the router functions as the forwarding | While in the {Active} state, the router functions as the forwarding | |||
| router for the IPvX address(es) associated with the Virtual Router. | router for the IPvX address(es) associated with the Virtual Router. | |||
| Note that in the Active state, the Preempt_Mode Flag is not | Note that in the {Active} state, the Preempt_Mode Flag is not | |||
| considered. | considered. | |||
| While in Active state, a VRRP Router MUST do the following: | While in the {Active} state, a VRRP Router MUST do the following: | |||
| - If the protected IPvX address is an IPv4 address, then: | * If the protected IPvX address is an IPv4 address, then: | |||
| + It MUST respond to ARP requests for the IPv4 | - It MUST respond to ARP requests for the IPv4 address(es) | |||
| address(es) associated with the Virtual Router. | associated with the Virtual Router. | |||
| - else // IPv6 | * else // IPv6 | |||
| + It MUST be a member of the Solicited-Node multicast | - It MUST be a member of the Solicited-Node multicast address for | |||
| address for the IPv6 address(es) associated with the | the IPv6 address(es) associated with the Virtual Router. | |||
| Virtual Router. | ||||
| + It MUST respond to ND Neighbor Solicitation messages (with | - It MUST respond to ND Neighbor Solicitation messages (with the | |||
| the Router Flag (R) set) for the IPv6 address(es) associated | Router Flag (R) set) for the IPv6 address(es) associated with | |||
| with the Virtual Router. | the Virtual Router. | |||
| + It MUST send ND Router Advertisements for the Virtual | - It MUST send ND Router Advertisements for the Virtual Router. | |||
| Router. | ||||
| + If Accept_Mode is False: MUST NOT drop IPv6 | - If Accept_Mode is False: | |||
| Neighbor Solicitations and Neighbor Advertisements. | ||||
| - endif // IPv4? | o It MUST NOT drop IPv6 Neighbor Solicitations and Neighbor | |||
| Advertisements. | ||||
| - It MUST forward packets with a destination link-layer MAC | * endif // IPv4? | |||
| address equal to the Virtual Router MAC address. | ||||
| - It MUST accept packets addressed to the IPvX address(es) | * It MUST forward packets with a destination link-layer MAC address | |||
| associated with the Virtual Router if it is the IPvX | equal to the Virtual Router MAC address. | |||
| address owner or if Accept_Mode is True. Otherwise, | ||||
| MUST NOT accept these packets. | ||||
| - If a Shutdown event is received, then: | * It MUST accept packets addressed to the IPvX address(es) | |||
| associated with the Virtual Router if it is the IPvX address owner | ||||
| or if Accept_Mode is True. Otherwise, it MUST NOT accept these | ||||
| packets. | ||||
| + Cancel the Adver_Timer | * If a Shutdown event is received, then: | |||
| + Send an ADVERTISEMENT with Priority = 0 | ||||
| + Transition to the {Initialize} state | - Cancel the Adver_Timer | |||
| - endif // shutdown received | - Send an ADVERTISEMENT with Priority = 0 | |||
| - If the Adver_Timer fires, then: | - Transition to the {Initialize} state | |||
| + Send an ADVERTISEMENT | * endif // shutdown received | |||
| + Reset the Adver_Timer to Advertisement_Interval | * If the Adver_Timer fires, then: | |||
| - endif // advertisement timer fired | - Send an ADVERTISEMENT | |||
| - If an ADVERTISEMENT is received, then: | - Reset the Adver_Timer to Advertisement_Interval | |||
| + If the Priority in the ADVERTISEMENT is 0, then: | * endif // advertisement timer fired | |||
| * Send an ADVERTISEMENT | * If an ADVERTISEMENT is received, then: | |||
| * Reset the Adver_Timer to Advertisement_Interval | - If the Priority in the ADVERTISEMENT is 0, then: | |||
| + else // priority was non-zero | o Send an ADVERTISEMENT | |||
| * If the Priority in the ADVERTISEMENT is greater | o Reset the Adver_Timer to Advertisement_Interval | |||
| than the local Priority or the Priority in the | ||||
| ADVERTISEMENT is equal to the local Priority and | ||||
| the primary IPvX Address of the sender is greater | ||||
| than the local primary IPvX Address (based on an | ||||
| unsigned integer comparison of the IPvX addresses in | ||||
| network-byte order), then: | ||||
| @ Cancel Adver_Timer | - else // priority was non-zero | |||
| @ Set Active_Adver_Interval to Max Advertise | o If the Priority in the ADVERTISEMENT is greater than the | |||
| Interval contained in the ADVERTISEMENT | local Priority or the Priority in the ADVERTISEMENT is equal | |||
| to the local Priority and the primary IPvX address of the | ||||
| sender is greater than the local primary IPvX address (based | ||||
| on an unsigned integer comparison of the IPvX addresses in | ||||
| network byte order), then: | ||||
| @ Recompute the Skew_Time | + Cancel Adver_Timer | |||
| @ Recompute the Active_Down_Interval | + Set the Active_Adver_Interval to the Max Advertise | |||
| Interval contained in the ADVERTISEMENT | ||||
| @ Set Active_Down_Timer to Active_Down_Interval | + Recompute the Skew_Time | |||
| @ Transition to the {Backup} state | + Recompute the Active_Down_Interval | |||
| * else // new Active Router logic | + Set the Active_Down_Timer to Active_Down_Interval | |||
| @ Discard the ADVERTISEMENT | + Transition to the {Backup} state | |||
| @ Send an ADVERTISEMENT immediately to assert | ||||
| Active state to the sending VRRP Router and | ||||
| to update any learning bridges with the correct | ||||
| Active VRRP Router path. | ||||
| * endif // new Active Router detected | o else // new Active Router logic | |||
| + endif // was priority zero? | + Discard the ADVERTISEMENT | |||
| - endif // advert received | + Send an ADVERTISEMENT immediately to assert the {Active} | |||
| state to the sending VRRP Router and to update any | ||||
| learning bridges with the correct Active VRRP Router | ||||
| path. | ||||
| endwhile // in Active state | o endif // new Active Router detected | |||
| - endif // was priority zero? | ||||
| * endif // advert received | ||||
| endwhile // in {Active} state | ||||
| Note: VRRP packets are transmitted with the Virtual Router MAC | Note: VRRP packets are transmitted with the Virtual Router MAC | |||
| Address as the source MAC address to ensure that learning bridges | address as the source MAC address to ensure that learning bridges | |||
| correctly determine the LAN segment to which the Virtual Router is | correctly determine the LAN segment to which the Virtual Router is | |||
| attached. | attached. | |||
| 7. Sending and Receiving VRRP Packets | 7. Sending and Receiving VRRP Packets | |||
| 7.1. Receiving VRRP Packets | 7.1. Receiving VRRP Packets | |||
| The following functions must be performed when a VRRP packet is | The following functions must be performed when a VRRP packet is | |||
| received: | received: | |||
| - If the received packet is an IPv4 packet, then: | * If the received packet is an IPv4 packet, then: | |||
| + It MUST verify that the IPv4 TTL is 255. | - It MUST verify that the IPv4 TTL is 255. | |||
| - else // IPv6 VRRP packet received | * else // IPv6 VRRP packet received | |||
| + It MUST verify that the IPv6 Hop Limit is 255. | - It MUST verify that the IPv6 Hop Limit is 255. | |||
| -endif | * endif | |||
| - It MUST verify that the VRRP Version is 3. | * It MUST verify that the VRRP version is 3. | |||
| - It MUST verify that the VRRP Packet Type is 1 (ADVERTISEMENT). | * It MUST verify that the VRRP packet type is 1 (ADVERTISEMENT). | |||
| - It MUST verify that the received packet contains the complete | * It MUST verify that the received packet contains the complete VRRP | |||
| VRRP packet (including fixed fields, and IPvX address). | packet (including fixed fields and the IPvX address). | |||
| - It MUST verify the VRRP checksum. | * It MUST verify the VRRP checksum. | |||
| - It MUST verify that the VRID is configured on the receiving | * It MUST verify that the VRID is configured on the receiving | |||
| interface and the local router is not the IPvX address | interface and the local router is not the IPvX address owner | |||
| owner (Priority = 255 (decimal)). | (Priority = 255 (decimal)). | |||
| If any one of the above checks fails, the receiver MUST discard | If any one of the above checks fails, the receiver MUST discard the | |||
| the packet, SHOULD log the event (subject to rate-limiting), and | packet, SHOULD log the event (subject to rate-limiting), and MAY | |||
| MAY indicate via network management that an error occurred. | indicate via network management that an error occurred. | |||
| A receiver SHOULD also verify that the Max Advertise Interval in the | A receiver SHOULD also verify that the Max Advertise Interval in the | |||
| received VRRP packet matches the Advertisement_Interval configured | received VRRP packet matches the Advertisement_Interval configured | |||
| for the VRID. Instability can occur with differing intervals (refer | for the VRID. Instability can occur with differing intervals (refer | |||
| to Section 5.2.7). If this check fails, the receiver SHOULD log the | to Section 5.2.7). If this check fails, the receiver SHOULD log the | |||
| event (subject to rate-limiting) and MAY indicate via network | event (subject to rate-limiting) and MAY indicate via network | |||
| management that a misconfiguration was detected. | management that a misconfiguration was detected. | |||
| A receiver MAY also verify that "IPvX Addr Count" and the list of | A receiver MAY also verify that "IPvX Addr Count" and the list of | |||
| IPvX address(es) match the IPvX Address(es) configured for the VRID. | IPvX address(es) match the IPvX address(es) configured for the VRID. | |||
| If this check fails, the receiver SHOULD log (subject to rate- | If this check fails, the receiver SHOULD log (subject to rate- | |||
| limiting) the event and MAY indicate via network management that a | limiting) the event and MAY indicate via network management that a | |||
| misconfiguration was detected. | misconfiguration was detected. | |||
| 7.2. Transmitting VRRP Packets | 7.2. Transmitting VRRP Packets | |||
| The following operations MUST be performed when transmitting a VRRP | The following operations MUST be performed when transmitting a VRRP | |||
| packet: | packet: | |||
| - Fill in the VRRP packet fields with the appropriate Virtual | * Fill in the VRRP packet fields with the appropriate Virtual Router | |||
| Router configuration state | configuration state | |||
| - Compute the VRRP checksum | * Compute the VRRP checksum | |||
| - Set the source MAC address to the Virtual Router MAC Address | * Set the source MAC address to the Virtual Router MAC address | |||
| - If the protected address is an IPv4 address, then: | * If the protected address is an IPv4 address, then: | |||
| + Set the source IPv4 address to the interface's primary IPv4 | - Set the source IPv4 address to the interface's primary IPv4 | |||
| address | address | |||
| - else // IPv6 | * else // IPv6 | |||
| + Set the source IPv6 address to the interface's link-local | - Set the source IPv6 address to the interface's link-local IPv6 | |||
| IPv6 address | address | |||
| - endif | * endif | |||
| - Set the IPvX protocol to VRRP | * Set the IPvX protocol to VRRP | |||
| - Send the VRRP packet to the VRRP IPvX multicast group | * Send the VRRP packet to the VRRP IPvX multicast group | |||
| Note: VRRP packets are transmitted with the Virtual Router MAC | Note: VRRP packets are transmitted with the Virtual Router MAC | |||
| address as the source MAC address to ensure that learning bridges | address as the source MAC address to ensure that learning bridges | |||
| correctly determine the LAN segment to which the Virtual Router is | correctly determine the LAN segment to which the Virtual Router is | |||
| attached. | attached. | |||
| 7.3. Virtual Router MAC Address | 7.3. Virtual Router MAC Address | |||
| The Virtual Router MAC address associated with a Virtual Router is an | The Virtual Router MAC address associated with a Virtual Router is an | |||
| IEEE 802 MAC Address [I-D.ietf-intarea-rfc7042bis] in the following | IEEE 802 MAC address [RFC9542] in the following format: | |||
| format: | ||||
| IPv4 case: 00-00-5E-00-01-{VRID} (in hex, in Internet-standard bit- | IPv4 case: 00-00-5E-00-01-{VRID} (in hex, in network byte order) | |||
| order) | ||||
| The first three octets are derived from the IANA's Organizational | The first three octets are derived from the IANA's Organizationally | |||
| Unique Identifier (OUI). The next two octets (00-01) indicate the | Unique Identifier (OUI). The next two octets (00-01) indicate the | |||
| address block assigned to the VRRP protocol for the IPv4 protocol. | address block assigned to the VRRP protocol for the IPv4 protocol. | |||
| {VRID} is the Virtual Router Identifier. This mapping provides for | {VRID} is the Virtual Router Identifier. This mapping provides for | |||
| up to 255 IPv4 VRRP Routers on a LAN. | up to 255 IPv4 VRRP Routers on a LAN. | |||
| IPv6 case: 00-00-5E-00-02-{VRID} (in hex, in Internet-standard bit- | IPv6 case: 00-00-5E-00-02-{VRID} (in hex, in network byte order) | |||
| order) | ||||
| The first three octets are derived from the IANA's OUI. The next two | The first three octets are derived from the IANA's OUI. The next two | |||
| octets (00-02) indicate the address block assigned to the VRRP | octets (00-02) indicate the address block assigned to the VRRP | |||
| protocol for the IPv6 protocol. {VRID} is the Virtual Router | protocol for the IPv6 protocol. {VRID} is the Virtual Router | |||
| Identifier. This mapping provides for up to 255 IPv6 VRRP Routers on | Identifier. This mapping provides for up to 255 IPv6 VRRP Routers on | |||
| a LAN. | a LAN. | |||
| 7.4. IPv6 Interface Identifiers | 7.4. IPv6 Interface Identifiers | |||
| [RFC8064] specifies that [RFC7217] be used as the default scheme for | [RFC8064] specifies that [RFC7217] be used as the default scheme for | |||
| generating stable address in IPv6 Stateless Address Autoconfiguration | generating a stable address in IPv6 Stateless Address | |||
| (SLAAC) [RFC4862]. The Virtual Router MAC MUST NOT be used for the | Autoconfiguration (SLAAC) [RFC4862]. The Virtual Router MAC MUST NOT | |||
| Net_Iface parameter used in the Interface Identifier (IID) derivation | be used for the Net_Iface parameter used in the Interface Identifier | |||
| algorithms in [RFC7217] and [RFC8981]. | (IID) derivation algorithms in [RFC7217] and [RFC8981]. | |||
| Similarly, the Virtual Router MAC MUST NOT be used for the Net_Iface | ||||
| parameter used for the Interface Identifier (IID) derivation | ||||
| algorithms in [RFC7217] and [RFC8981]. | ||||
| This VRRP specification describes how to advertise and resolve the | This VRRP specification describes how to advertise and resolve the | |||
| VRRP Router's IPv6 link-local address and other associated IPv6 | VRRP Router's IPv6 link-local address and other associated IPv6 | |||
| addresses into the Virtual Router MAC address. | addresses into the Virtual Router MAC address. | |||
| 8. Operational Issues | 8. Operational Issues | |||
| 8.1. IPv4 | 8.1. IPv4 | |||
| 8.1.1. ICMP Redirects | 8.1.1. ICMP Redirects | |||
| ICMP redirects can be used normally when VRRP is running among a | ICMP redirects can be used normally when VRRP is running among a | |||
| group of routers. This allows VRRP to be used in environments where | group of routers. This allows VRRP to be used in environments where | |||
| the topology is not symmetric. | the topology is not symmetric. | |||
| The IPv4 source address of an ICMP redirect should be the address | The IPv4 source address of an ICMP redirect should be the address | |||
| that the end-host used when making its next-hop routing decision. If | that the end-host used when making its next-hop routing decision. If | |||
| a VRRP Router is acting as Active Router for Virtual Router(s) | a VRRP Router is acting as the Active Router for Virtual Router(s) | |||
| containing address(es) it does not own, then it must determine to | containing address(es) it does not own, then it must determine to | |||
| which Virtual Router the packet was sent when selecting the redirect | which Virtual Router the packet was sent when selecting the redirect | |||
| source address. One method to deduce the Virtual Router used is to | source address. One method to deduce the Virtual Router used is to | |||
| examine the destination MAC address in the packet that triggered the | examine the destination MAC address in the packet that triggered the | |||
| redirect. | redirect. | |||
| It may be useful to disable redirects for specific cases where VRRP | It may be useful to disable redirects for specific cases where VRRP | |||
| is being used to load-share traffic among a number of routers in a | is being used to load-share traffic among a number of routers in a | |||
| symmetric topology. | symmetric topology. | |||
| 8.1.2. Host ARP Requests | 8.1.2. Host ARP Requests | |||
| When a host sends an ARP request for one of the Virtual Router IPv4 | When a host sends an ARP request for one of the Virtual Router IPv4 | |||
| addresses, the Active Router MUST respond to the ARP request with an | addresses, the Active Router MUST respond to the ARP request with an | |||
| ARP response that indicates the Virtual Router MAC address for the | ARP response that indicates the Virtual Router MAC address for the | |||
| Virtual Router. Note that the source address of the Ethernet frame | Virtual Router. Note that the source address of the Ethernet frame | |||
| of this ARP response is the physical MAC address of the physical | of this ARP response is the physical MAC address of the physical | |||
| router. The Active Router MUST NOT respond with its physical MAC | router. The Active Router MUST NOT respond with its physical MAC | |||
| address in the ARP response. This allows the host to always use the | address in the ARP response. This allows the host to always use the | |||
| same MAC address regardless of the current Active Router. | same MAC address, regardless of the current Active Router. | |||
| When a VRRP Router restarts or boots, it SHOULD NOT send any ARP | When a VRRP Router restarts or boots, it SHOULD NOT send any ARP | |||
| messages using its physical MAC address for an IPv4 address for which | messages using its physical MAC address for an IPv4 address for which | |||
| it is the IPv4 Address Owner (as defined in Section 1.7), and it | it is the IPv4 address owner (as defined in Section 1.7), and it | |||
| should only send ARP messages that include Virtual Router MAC | should only send ARP messages that include Virtual Router MAC | |||
| addresses. | addresses. | |||
| This entails the following: | This entails the following: | |||
| * When configuring an interface, Active Routers SHOULD broadcast a | * When configuring an interface, Active Routers SHOULD broadcast a | |||
| gratuitous ARP message containing the Virtual Router MAC address | gratuitous ARP message containing the Virtual Router MAC address | |||
| for each IPv4 address on that interface. | for each IPv4 address on that interface. | |||
| * At system boot, when initializing interfaces for VRRP operation, | * At system boot, when initializing interfaces for VRRP operation, | |||
| gratuitous ARP messages MUST be delayed until both the IPv4 | gratuitous ARP messages MUST be delayed until both the IPv4 | |||
| address and the Virtual Router MAC address are configured. | address and the Virtual Router MAC address are configured. | |||
| * When, for example, SSH access to a particular VRRP Router is | * When, for example, Secure Shell (SSH) access to a particular VRRP | |||
| required, an IPv4 address known to belong to that router SHOULD be | Router is required, an IPv4 address known to belong to that router | |||
| used. | SHOULD be used. | |||
| 8.1.3. Proxy ARP | 8.1.3. Proxy ARP | |||
| If Proxy ARP is to be used on a VRRP Router, then the VRRP Router | If Proxy ARP is to be used on a VRRP Router, then the VRRP Router | |||
| MUST advertise the Virtual Router MAC address in the Proxy ARP | MUST advertise the Virtual Router MAC address in the Proxy ARP | |||
| message. Doing otherwise could cause hosts to learn the real MAC | message. Doing otherwise could cause hosts to learn the real MAC | |||
| address of the VRRP Router. | address of the VRRP Router. | |||
| 8.2. IPv6 | 8.2. IPv6 | |||
| 8.2.1. ICMPv6 Redirects | 8.2.1. ICMPv6 Redirects | |||
| ICMPv6 redirects can be used normally when VRRP is running among a | ICMPv6 redirects can be used normally when VRRP is running among a | |||
| group of routers [RFC4443]. This allows VRRP to be used in | group of routers [RFC4443]. This allows VRRP to be used in | |||
| environments where the topology is not symmetric, e.g., the VRRP | environments where the topology is not symmetric, e.g., the VRRP | |||
| routers do not connect to the same destinations. | Routers do not connect to the same destinations. | |||
| The IPv6 source address of an ICMPv6 redirect SHOULD be the address | The IPv6 source address of an ICMPv6 redirect SHOULD be the address | |||
| that the end-host used when making its next-hop routing decision. If | that the end-host used when making its next-hop routing decision. If | |||
| a VRRP Router is acting as Active Router for Virtual Router(s) | a VRRP Router is acting as the Active Router for Virtual Router(s) | |||
| containing address(es) it does not own, then it has to determine to | containing address(es) it does not own, then it has to determine to | |||
| which Virtual Router the packet was sent when selecting the redirect | which Virtual Router the packet was sent when selecting the redirect | |||
| source address. A method to deduce the Virtual Router used is to | source address. A method to deduce the Virtual Router used is to | |||
| examine the destination MAC address in the packet that triggered the | examine the destination MAC address in the packet that triggered the | |||
| redirect. | redirect. | |||
| 8.2.2. ND Neighbor Solicitation | 8.2.2. ND Neighbor Solicitation | |||
| When a host sends an ND Neighbor Solicitation message for a Virtual | When a host sends an ND Neighbor Solicitation message for a Virtual | |||
| Router IPv6 address, the Active Router MUST respond to the ND | Router IPv6 address, the Active Router MUST respond to the ND | |||
| Neighbor Solicitation message with the Virtual Router MAC address for | Neighbor Solicitation message with the Virtual Router MAC address for | |||
| the Virtual Router. The Active Router MUST NOT respond with its | the Virtual Router. The Active Router MUST NOT respond with its | |||
| physical MAC address. This allows the host to always use the same | physical MAC address. This allows the host to always use the same | |||
| MAC address regardless of the current Active Router. | MAC address, regardless of the current Active Router. | |||
| When an Active Router sends an ND Neighbor Solicitation message for a | When an Active Router sends an ND Neighbor Solicitation message for a | |||
| host's IPv6 address, the Active Router MUST include the Virtual | host's IPv6 address, the Active Router MUST include the Virtual | |||
| Router MAC address for the Virtual Router if it sends a source link- | Router MAC address for the Virtual Router if it sends a source link- | |||
| layer address option in the neighbor solicitation message. It MUST | layer address option in the Neighbor Solicitation message. It MUST | |||
| NOT use its physical MAC address in the source link-layer address | NOT use its physical MAC address in the source link-layer address | |||
| option. | option. | |||
| When a VRRP Router restarts or boots, it SHOULD NOT send any ND | When a VRRP Router restarts or boots, it SHOULD NOT send any ND | |||
| messages with its physical MAC address for the IPv6 address it owns | messages with its physical MAC address for the IPv6 address it owns | |||
| and it should only send ND messages that include Virtual Router MAC | and it should only send ND messages that include Virtual Router MAC | |||
| addresses. | addresses. | |||
| This entails the following: | This entails the following: | |||
| * When configuring an interface, Active Routers SHOULD send an | * When configuring an interface, Active Routers SHOULD send an | |||
| unsolicited ND Neighbor Advertisement message containing the | unsolicited ND Neighbor Advertisement message containing the | |||
| Virtual Router MAC address for the IPv6 address on that interface. | Virtual Router MAC address for the IPv6 address on that interface. | |||
| * At system boot, when initializing interfaces for VRRP operation, | * At system boot, when initializing interfaces for VRRP operation, | |||
| all ND Router and Neighbor Advertisements and Solicitation | all ND Router Advertisements, ND Neighbor Advertisements, and ND | |||
| messages MUST be delayed until both the IPv6 address and the | Neighbor Solicitation messages MUST be delayed until both the IPv6 | |||
| Virtual Router MAC address are configured. | address and the Virtual Router MAC address are configured. | |||
| Note that on a restarting Active Router where the VRRP protected | Note that on a restarting Active Router where the VRRP protected | |||
| address is an interface address, i.e., the address owner, Duplicate | address is an interface address, i.e., the address owner, Duplicate | |||
| Address Detection may fail, as the Backup Router MAY answer that it | Address Detection may fail, as the Backup Router MAY answer that it | |||
| owns the address. One solution is to not run Duplicate Address | owns the address. One solution is to not run Duplicate Address | |||
| Detection in this case. | Detection in this case. | |||
| 8.2.3. Router Advertisements | 8.2.3. Router Advertisements | |||
| When a Backup VRRP Router has become Active Router for a Virtual | When a Backup VRRP Router has become the Active Router for a Virtual | |||
| Router, it is responsible for sending Router Advertisements for the | Router, it is responsible for sending Router Advertisements for the | |||
| Virtual Router as specified in Section 6.4.3. The Backup Routers | Virtual Router, as specified in Section 6.4.3. The Backup Routers | |||
| MUST be configured to send the same Router Advertisement options as | MUST be configured to send the same Router Advertisement options as | |||
| the address owner. | the address owner. | |||
| Router Advertisement options that advertise special services, e.g., | Router Advertisement options that advertise special services, e.g., | |||
| Home Agent Information Option, that are present in the address owner | Home Agent Information Option, that are present in the address owner | |||
| SHOULD NOT be sent by the address owner unless the Backup Routers are | SHOULD NOT be sent by the address owner unless the Backup Routers are | |||
| prepared to assume these services in full and have a complete and | prepared to assume these services in full and have a complete and | |||
| synchronized database for this service. | synchronized database for this service. | |||
| 8.2.4. Unsolicited Neighbor Advertisements | 8.2.4. Unsolicited Neighbor Advertisements | |||
| A VRRP Router acting as either an IPv6 Active Router or Backup | A VRRP Router acting as either an IPv6 Active Router or Backup Router | |||
| Router, SHOULD accept Unsolicited Neighbor Advertisements and update | SHOULD accept Unsolicited Neighbor Advertisements and update the | |||
| the corresponding neighbor cache [RFC4861]. Since these are sent to | corresponding neighbor cache [RFC4861]. Since these are sent to the | |||
| the IPv6 all-nodes multicast address (ff02::1) [RFC4861] or the IPv6 | IPv6 all-nodes multicast address (ff02::1) [RFC4861] or the IPv6 all- | |||
| all-routers multicast address (ff02::2), they will be received. | routers multicast address (ff02::2), they will be received. | |||
| Unsolicited Neighbor Advertisements are sent both in the case where | Unsolicited Neighbor Advertisements are sent both in the case where | |||
| the link-level addresses change [RFC4861] and for gratuitous neighbor | the link-level addresses change [RFC4861] and for gratuitous neighbor | |||
| discovery by first hop routers [RFC9131]. Additional configuration | discovery by first-hop routers [RFC9131]. Additional configuration | |||
| may be required in order for Unsolicited Neighbor Advertisements to | may be required in order for Unsolicited Neighbor Advertisements to | |||
| update the corresponding neighbor cache. | update the corresponding neighbor cache. | |||
| 8.3. IPvX | 8.3. IPvX | |||
| 8.3.1. Potential Forwarding Loop | 8.3.1. Potential Forwarding Loop | |||
| If it is not the address owner, a VRRP Router SHOULD NOT forward | If it is not the address owner, a VRRP Router SHOULD NOT forward | |||
| packets addressed to the IPvX address for which it becomes Active | packets addressed to the IPvX address for which it becomes the Active | |||
| Router. Forwarding these packets would result in unnecessary | Router. Forwarding these packets would result in unnecessary | |||
| traffic. Also, in the case of LANs that receive packets they | traffic. Also, in the case of LANs that receive packets they | |||
| transmit, this can result in a forwarding loop that is only | transmit, this can result in a forwarding loop that is only | |||
| terminated when the IPvX TTL expires. | terminated when the IPvX TTL expires. | |||
| One mechanism for VRRP Routers to avoid these forwarding loops is to | One mechanism for VRRP Routers to avoid these forwarding loops is to | |||
| add/delete a host Drop Route for each non-owned IPvX address when | add/delete a host Drop Route for each non-owned IPvX address when | |||
| transitioning to/from Active state. | transitioning to/from the Active state. | |||
| 8.3.2. Recommendations Regarding Setting Priority Values | 8.3.2. Recommendations Regarding Setting Priority Values | |||
| A priority value of 255 designates a particular router as the "IPvX | A priority value of 255 designates a particular router as the "IPvX | |||
| address owner" for the VRID. VRRP Routers with priority 255 will, as | address owner" for the VRID. VRRP Routers with priority 255 will, as | |||
| soon as they start up, preempt all lower-priority routers. For a | soon as they start up, preempt all lower-priority routers. For a | |||
| VRID, only a single VRRP Router on the link SHOULD be configured with | VRID, only a single VRRP Router on the link SHOULD be configured with | |||
| priority 255. If multiple VRRP Routers advertising priority 255 are | priority 255. If multiple VRRP Routers advertising priority 255 are | |||
| detected, the condition SHOULD be logged (subject to rate-limiting). | detected, the condition SHOULD be logged (subject to rate-limiting). | |||
| If no VRRP Router has this priority, and preemption is disabled, then | If no VRRP Router has this priority, and preemption is disabled, then | |||
| no preemption will occur. | no preemption will occur. | |||
| In order to avoid two or more Backup Routers simultaneously becoming | In order to avoid two or more Backup Routers simultaneously becoming | |||
| Active Routers after the previous Active Router fails or is shut | Active Routers after the previous Active Router fails or is shut | |||
| down, all Virtual Routers SHOULD be configured with different | down, all Virtual Routers SHOULD be configured with different | |||
| priorities, and with sufficient differences in priority so that lower | priorities and with sufficient differences in the priorities so that | |||
| priority Backup Routers do not transition to Active state before | lower priority Backup Routers do not transition to the Active state | |||
| receiving an advertisement from the highest priority Backup Router | before receiving an advertisement from the highest priority Backup | |||
| following it transitioning to Active Router. If multiple VRRP | Router when it transitions to the Active Router. If multiple VRRP | |||
| Routers advertising the same priority are detected, this condition | Routers advertising the same priority are detected, this condition | |||
| MAY be logged as a warning (subject to rate-limiting). | MAY be logged as a warning (subject to rate-limiting). | |||
| Since the Skew_Time is reduced as priority is increased, faster | Since the Skew_Time is reduced as the priority is increased, faster | |||
| convergence can be obtained by using a higher priority for the | convergence can be obtained by using a higher priority for the | |||
| preferred Backup Router. However, with multiple Backup Routers, the | preferred Backup Router. However, with multiple Backup Routers, the | |||
| priorities should have sufficient differences as previously | priorities should have sufficient differences, as previously | |||
| recommended. | recommended. | |||
| 8.4. VRRPv3 and VRRPv2 Interoperation | 8.4. VRRPv3 and VRRPv2 Interoperation | |||
| 8.4.1. Assumptions | 8.4.1. Assumptions | |||
| 1. VRRPv2 and VRRPv3 interoperation is optional. | 1. VRRPv2 and VRRPv3 interoperation is optional. | |||
| 2. Mixing VRRPv2 and VRRPv3 should only be done when transitioning | 2. Mixing VRRPv2 and VRRPv3 should only be done when transitioning | |||
| from VRRPv2 to VRRPv3. Mixing the two versions should not be | from VRRPv2 to VRRPv3. Mixing the two versions should not be | |||
| skipping to change at page 36, line 51 ¶ | skipping to change at line 1618 ¶ | |||
| 8.4.2. VRRPv3 Support of VRRPv2 Interoperation | 8.4.2. VRRPv3 Support of VRRPv2 Interoperation | |||
| As mentioned above, this support is intended for upgrade scenarios | As mentioned above, this support is intended for upgrade scenarios | |||
| and is NOT RECOMMENDED for permanent deployments. | and is NOT RECOMMENDED for permanent deployments. | |||
| An implementation MAY implement a configuration flag that tells it to | An implementation MAY implement a configuration flag that tells it to | |||
| listen for and send both VRRPv2 and VRRPv3 advertisements. | listen for and send both VRRPv2 and VRRPv3 advertisements. | |||
| When a Virtual Router is configured this way and is the Active | When a Virtual Router is configured this way and is the Active | |||
| Router, it MUST send both types at the configured rate, even if sub- | Router, it MUST send both types at the configured rate, even if it is | |||
| second. | sub-second. | |||
| When a Virtual Router is configured this way and is the Backup | When a Virtual Router is configured this way and is the Backup | |||
| Router, it MUST time out based on the rate advertised by the Active | Router, it MUST time out based on the rate advertised by the Active | |||
| Router. In the case of a VRRPv2 Active Router, this means it MUST | Router. In the case of a VRRPv2 Active Router, this means it MUST | |||
| translate the timeout value it receives (in seconds) into | translate the timeout value it receives (in seconds) into | |||
| centiseconds. Also, a Backup Router SHOULD ignore VRRPv2 | centiseconds. Also, a Backup Router SHOULD ignore VRRPv2 | |||
| advertisements from the current Active Router if it is also receiving | advertisements from the current Active Router if it is also receiving | |||
| VRRPv3 packets from it. It MAY report when a VRRPv3 Active Router is | VRRPv3 packets from it. It MAY report when a VRRPv3 Active Router is | |||
| not sending VRRPv2 packets as this suggests they don't agree on | not sending VRRPv2 packets, as this suggests they don't agree on | |||
| whether they're supporting VRRPv2 interoperation. | whether they're supporting VRRPv2 interoperation. | |||
| 8.4.2.1. Interoperation Considerations | 8.4.2.1. Interoperation Considerations | |||
| 8.4.2.1.1. Slow, High-Priority Active Routers | 8.4.2.1.1. Slow, High-Priority Active Routers | |||
| See also Section 5.2.7, "Maximum Advertisement Interval (Max | See also Section 5.2.7, "Maximum Advertisement Interval (Max | |||
| Advertise Interval)". | Advertise Interval)". | |||
| The VRRPv2 Active Router interacting with a sub-second VRRPv3 Backup | The VRRPv2 Active Router interacting with a sub-second VRRPv3 Backup | |||
| router is the most important example of this. | Router is the most important example of this. | |||
| A VRRPv2 implementation SHOULD NOT be given a higher priority than a | A VRRPv2 implementation SHOULD NOT be given a higher priority than a | |||
| VRRPv2/VRRPv3 implementation with which it is interoperating if the | VRRPv2 or VRRPv3 implementation with which it is interoperating if | |||
| VRRPv2/VRRPv3 router's advertisement rate is sub-second. | the VRRPv2 or VRRPv3 router's advertisement rate is sub-second. | |||
| 8.4.2.1.2. Overwhelming VRRPv2 Backups | 8.4.2.1.2. Overwhelming VRRPv2 Backups | |||
| It seems possible that a VRRPv3 Active Router sending at centisecond | It seems possible that a VRRPv3 Active Router sending at centisecond | |||
| rates could potentially overwhelm a VRRPv2 Backup Router with | rates could potentially overwhelm a VRRPv2 Backup Router with | |||
| potentially non-deterministic results. | potentially non-deterministic results. | |||
| In this upgrade case, a deployment should initially run the VRRPv3 | In this upgrade case, a deployment should initially run the VRRPv3 | |||
| Active Routers with lower frequencies, e.g., 100 centiseconds, until | Active Routers with lower frequencies, e.g., 100 centiseconds, until | |||
| the VRRPv2 routers are upgraded. Then, once the deployment has | the VRRPv2 routers are upgraded. Then, once the deployment has | |||
| verified that VRRPv3 is working properly, the VRRPv2 support may be | verified that VRRPv3 is working properly, the VRRPv2 support may be | |||
| disabled and the desired sub-second rates may be configured. | disabled and the desired sub-second rates may be configured. | |||
| 9. Security Considerations | 9. Security Considerations | |||
| VRRP for IPvX does not currently include any type of authentication. | VRRP for IPvX does not currently include any type of authentication. | |||
| Earlier versions of the VRRP specification included several types of | Earlier versions of the VRRP specification included several types of | |||
| authentication ranging from no authentication to strong | authentication, ranging from no authentication to strong | |||
| authentication. Operational experience and further analysis | authentication. Operational experience and further analysis | |||
| determined that these did not provide sufficient security to overcome | determined that these did not provide sufficient security to overcome | |||
| the vulnerability of misconfigured secrets, causing multiple Active | the vulnerability of misconfigured secrets, causing multiple Active | |||
| Routers to be elected. Due to the nature of the VRRP protocol, even | Routers to be elected. Due to the nature of the VRRP protocol, even | |||
| if VRRP messages are cryptographically protected, it does not prevent | if VRRP messages are cryptographically protected, it does not prevent | |||
| hostile nodes from behaving as if they are an Active Router, creating | hostile nodes from behaving as if they are an Active Router, creating | |||
| multiple Active Routers. Authentication of VRRP messages could have | multiple Active Routers. Authentication of VRRP messages could have | |||
| prevented a hostile node from causing all properly functioning | prevented a hostile node from causing all properly functioning | |||
| routers from going into Backup state. However, having multiple | routers from going into the Backup state. However, having multiple | |||
| Active Routers can cause as much disruption as no routers, which | Active Routers can cause as much disruption as no routers, which | |||
| authentication cannot prevent. Also, even if a hostile node could | authentication cannot prevent. Also, even if a hostile node could | |||
| not disrupt VRRP, it can disrupt ARP/ND and create the same effect as | not disrupt VRRP, it can disrupt ARP/ND and create the same effect as | |||
| having all routers go into Backup state. | having all routers go into the Backup state. | |||
| Some L2 switches provide the capability to filter out, for example, | Some L2 switches provide the capability to filter out, for example, | |||
| ARP and/or ND messages from end-hosts on a switch-port basis. This | ARP and/or ND messages from end-hosts on a switch-port basis. This | |||
| mechanism could also filter VRRP messages from switch ports | mechanism could also filter VRRP messages from switch ports | |||
| associated with end-hosts and can be considered for deployments with | associated with end-hosts and can be considered for deployments with | |||
| untrusted hosts. | untrusted hosts. | |||
| It should be noted that these attacks are not worse and are a subset | It should be noted that these attacks are not worse and are a subset | |||
| of the attacks that any node attached to a LAN can do independently | of the attacks that any node attached to a LAN can do independently | |||
| of VRRP. The kind of attacks a malicious node on a LAN can perform | of VRRP. The kind of attacks a malicious node on a LAN can perform | |||
| include: | include: | |||
| * Promiscuously receiving packets for any router's MAC address. | * promiscuously receiving packets for any router's MAC address, | |||
| * Sending packets with the router's MAC address as the source MAC | * sending packets with the router's MAC address as the source MAC | |||
| address in the L2 header to tell the L2 switches to send packets | address in the L2 header to tell the L2 switches to send packets | |||
| addressed to the router to the malicious node instead of the | addressed to the router to the malicious node instead of the | |||
| router. | router, | |||
| * Sending redirects to tell hosts to send their traffic somewhere | * sending redirects to tell hosts to send their traffic somewhere | |||
| else. | else, | |||
| * Sending unsolicited ND replies. | * sending unsolicited ND replies, | |||
| * Answering ND requests, etc. | * answering ND requests, etc. | |||
| All of these can be done independently of implementing VRRP. VRRP | All of these can be done independently of implementing VRRP. VRRP | |||
| does not add to these vulnerabilities and most of these | does not add to these vulnerabilities, and most of these | |||
| vulnerabilities are addressed independently, e.g., SEcure Neighbor | vulnerabilities are addressed independently, e.g., SEcure Neighbor | |||
| Discovery [RFC3971]. | Discovery (SEND) [RFC3971]. | |||
| VRRP includes a mechanism (setting IPv4 TTL or IPv6 Hop Limit to 255 | VRRP includes a mechanism (setting IPv4 TTL or IPv6 Hop Limit to 255 | |||
| and checking the value on receipt) that protects against VRRP packets | and checking the value on receipt) that protects against VRRP packets | |||
| being injected from another remote network [RFC5082]. This limits | being injected from another remote network [RFC5082]. This limits | |||
| most vulnerabilities to attacks on the local network. | most vulnerabilities to attacks on the local network. | |||
| VRRP does not provide any confidentiality. Confidentiality is not | VRRP does not provide any confidentiality. Confidentiality is not | |||
| necessary for the correct operation of VRRP, and there is no | necessary for the correct operation of VRRP, and there is no | |||
| information in the VRRP messages that must be kept secret from other | information in the VRRP messages that must be kept secret from other | |||
| nodes on the LAN. | nodes on the LAN. | |||
| In the context of IPv6 operation, if SEcure Neighbor Discovery (SEND) | In the context of IPv6 operation, if SEND is deployed, VRRP is | |||
| is deployed, VRRP is compatible with the "trust anchor" and "trust | compatible with the "trust anchor" and "trust anchor or CGA" modes of | |||
| anchor or CGA" modes of SEND [RFC3971]. The SEND configuration needs | SEND [RFC3971]. The SEND configuration needs to give the Active and | |||
| to give the Active and Backup Routers the same prefix delegation in | Backup Routers the same prefix delegation in the certificates so that | |||
| the certificates so that Active and Backup Routers advertise the same | Active and Backup Routers advertise the same set of subnet prefixes. | |||
| set of subnet prefixes. However, the Active and Backup Routers | However, the Active and Backup Routers should have their own key | |||
| should have their own key pairs to avoid private key sharing. | pairs to avoid private key sharing. | |||
| Also in the context of IPv6 operation, it is RECOMMENDED that the | Also in the context of IPv6 operation, it is RECOMMENDED that the | |||
| link-level security guidelines in section 2.3 of [RFC9099] be | link-level security guidelines in Section 2.3 of [RFC9099] be | |||
| followed. | followed. | |||
| 10. Contributors and Acknowledgments | 10. IANA Considerations | |||
| The IPv6 text in this specification is based on [RFC2338]. The | ||||
| authors of RFC2338 are S. Knight, D. Weaver, D. Whipple, R. | ||||
| Hinden, D. Mitzel, P. Hunt, P. Higginson, M. Shand, and A. | ||||
| Lindem. | ||||
| The author of [VRRP-IPv6] would also like to thank Erik Nordmark, | ||||
| Thomas Narten, Steve Deering, Radia Perlman, Danny Mitzel, Mukesh | ||||
| Gupta, Don Provan, Mark Hollinger, John Cruz, and Melissa Johnson for | ||||
| their helpful suggestions. | ||||
| The IPv4 text in this specification is based on [RFC3768]. The | ||||
| authors of that specification would like to thank Glen Zorn, Michael | ||||
| Lane, Clark Bremer, Hal Peterson, Tony Li, Barbara Denny, Joel | ||||
| Halpern, Steve Bellovin, Thomas Narten, Rob Montgomery, Rob Coltun, | ||||
| Radia Perlman, Russ Housley, Harald Alvestrand, Steve Bellovin, Ned | ||||
| Freed, Ted Hardie, Russ Housley, Bert Wijnen, Bill Fenner, and Alex | ||||
| Zinin for their comments and suggestions. | ||||
| Thanks to Steve Nadas for his work merging/editing [RFC3768] and | ||||
| [VRRP-IPv6] into the draft that eventually became RFC 5798 [RFC5798]. | ||||
| Thanks to Stewart Bryant, Sasha Vainshtein, Pascal Thubert, Alexander | ||||
| Okonnikov, Ben Niven-Jenkins, Tim Chown, Malisa Vucinic, Russ White, | ||||
| Donald Eastlake, Dave Thaler, Eric Kline, and Vijay Gurbani for | ||||
| comments on the current document (RFC 5798 BIS). Thanks to Gyan | ||||
| Mishra, Paul Congdon, and Jon Rosen for discussions related to the | ||||
| removal of legacy technology appendices. Thanks to Dhruv Dhody and | ||||
| Donald Eastlake for comments and suggestions for improving the IANA | ||||
| section. Thanks to Sasha Vainshtein for recommending "Maximum | ||||
| Advertisement Interval" validation. Thanks to Tim Chown and Fernando | ||||
| Gont for discussions and updates related to IPv6 SLAAC. | ||||
| Special thanks to Quentin Armitage for a detailed review and | ||||
| extensive comments on the current document (RFC 5798 BIS). | ||||
| 11. IANA Considerations | ||||
| IANA is requested to update all IANA Registry references to [RFC5798] | IANA has updated all IANA registry references to [RFC5798] to | |||
| to be references to [RFCXXXX], i.e., this document. The individual | references to RFC 9568, i.e., this document. The individual IANA | |||
| IANA references are listed below. | references are listed below. | |||
| The value 112 is assigned to VRRP in the Assigned Internet Protocol | The value 112 is assigned to VRRP in the "Assigned Internet Protocol | |||
| Numbers Registry. | Numbers" registry. | |||
| In the "Local Network Control Block (224.0.0.0 - 224.0.0.255 | In the "Local Network Control Block (224.0.0.0 - 224.0.0.255 | |||
| (224.0.0/24))" of the "IPv4 Multicast Address Space Registry" | (224.0.0/24))" registry of the "IPv4 Multicast Address Space | |||
| [RFC5771], IANA has assigned the IPv4 multicast address 224.0.0.18 | Registry" [RFC5771], IANA has assigned the IPv4 multicast address | |||
| for VRRP. | 224.0.0.18 for VRRP. | |||
| In the "Link-Local Scope Multicast Addresses" block of the "IPv6 | In the "Link-Local Scope Multicast Addresses" registry of the "IPv6 | |||
| Multicast Address Space Registry" [RFC3307], IANA has assigned the | Multicast Address Space Registry" [RFC3307], IANA has assigned the | |||
| IPv6 link-local scope multicast address ff02:0:0:0:0:0:0:12 for VRRP | IPv6 link-local scope multicast address ff02:0:0:0:0:0:0:12 for VRRP | |||
| for IPv6. | for IPv6. | |||
| In the "IANA MAC ADDRESS BLOCK" registry | In the "IANA MAC ADDRESS BLOCK" registry [RFC9542], IANA has assigned | |||
| [I-D.ietf-intarea-rfc7042bis], IANA has assigned blocks of Ethernet | blocks of Ethernet unicast addresses as follows (in hexadecimal): | |||
| unicast addresses as follows (in hexadecimal): | ||||
| 00-01-00 to 00-01-FF VRRP | +======================+===========================+===========+ | |||
| 00-02-00 to 00-02-FF VRRP IPv6 | | Addresses | Usage | Reference | | |||
| +======================+===========================+===========+ | ||||
| | 00-01-00 to 00-01-FF | VRRP (Virtual Router | RFC 9568 | | ||||
| | | Redundancy Protocol) | | | ||||
| +----------------------+---------------------------+-----------+ | ||||
| | 00-02-00 to 00-02-FF | VRRP IPv6 (Virtual Router | RFC 9568 | | ||||
| | | Redundancy Protocol IPv6) | | | ||||
| +----------------------+---------------------------+-----------+ | ||||
| 12. Normative References | Table 1 | |||
| [I-D.ietf-intarea-rfc7042bis] | 11. References | |||
| Eastlake, D. E., Abley, J., and Y. Li, "IANA | ||||
| Considerations and IETF Protocol and Documentation Usage | 11.1. Normative References | |||
| for IEEE 802 Parameters", Work in Progress, Internet- | ||||
| Draft, draft-ietf-intarea-rfc7042bis-11, 6 November 2023, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-intarea- | ||||
| rfc7042bis-11>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3307] Haberman, B., "Allocation Guidelines for IPv6 Multicast | [RFC3307] Haberman, B., "Allocation Guidelines for IPv6 Multicast | |||
| Addresses", RFC 3307, DOI 10.17487/RFC3307, August 2002, | Addresses", RFC 3307, DOI 10.17487/RFC3307, August 2002, | |||
| <https://www.rfc-editor.org/info/rfc3307>. | <https://www.rfc-editor.org/info/rfc3307>. | |||
| skipping to change at page 41, line 35 ¶ | skipping to change at line 1809 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| 13. Informative References | [RFC9542] Eastlake 3rd, D., Abley, J., and Y. Li, "IANA | |||
| Considerations and IETF Protocol and Documentation Usage | ||||
| for IEEE 802 Parameters", BCP 141, RFC 9542, | ||||
| DOI 10.17487/RFC9542, April 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9542>. | ||||
| 11.2. Informative References | ||||
| [IPSTB] Higginson, P. and M. Shand, "Development of Router | [IPSTB] Higginson, P. and M. Shand, "Development of Router | |||
| Clusters to Provide Fast Failover in IP Networks", Digital | Clusters to Provide Fast Failover in IP Networks", Digital | |||
| Technical Journal, Volume 9 Number 3", 1997. | Technical Journal, Volume 9, Number 3, 1997. | |||
| [NISTIR8366] | [NISTIR8366] | |||
| National Institute of Standards and Technology (NIST), | ||||
| "Guidance for NIST Staff on Using Inclusive Language in | "Guidance for NIST Staff on Using Inclusive Language in | |||
| Documentary Standards, National Institute of Standards and | Documentary Standards,", NISTIR 8366, | |||
| Technology (NIST) Interagency or Internal Report 8366", | DOI 10.6028/NIST.IR.8366, April 2021, | |||
| NISTIR 8366, April 2021, | ||||
| <https://doi.org/10.6028/NIST.IR.8366>. | <https://doi.org/10.6028/NIST.IR.8366>. | |||
| [RFC1071] Braden, R., Borman, D., and C. Partridge, "Computing the | [RFC1071] Braden, R., Borman, D., and C. Partridge, "Computing the | |||
| Internet checksum", RFC 1071, DOI 10.17487/RFC1071, | Internet checksum", RFC 1071, DOI 10.17487/RFC1071, | |||
| September 1988, <https://www.rfc-editor.org/info/rfc1071>. | September 1988, <https://www.rfc-editor.org/info/rfc1071>. | |||
| [RFC1256] Deering, S., Ed., "ICMP Router Discovery Messages", | [RFC1256] Deering, S., Ed., "ICMP Router Discovery Messages", | |||
| RFC 1256, DOI 10.17487/RFC1256, September 1991, | RFC 1256, DOI 10.17487/RFC1256, September 1991, | |||
| <https://www.rfc-editor.org/info/rfc1256>. | <https://www.rfc-editor.org/info/rfc1256>. | |||
| skipping to change at page 43, line 39 ¶ | skipping to change at line 1911 ¶ | |||
| RFC 9099, DOI 10.17487/RFC9099, August 2021, | RFC 9099, DOI 10.17487/RFC9099, August 2021, | |||
| <https://www.rfc-editor.org/info/rfc9099>. | <https://www.rfc-editor.org/info/rfc9099>. | |||
| [RFC9131] Linkova, J., "Gratuitous Neighbor Discovery: Creating | [RFC9131] Linkova, J., "Gratuitous Neighbor Discovery: Creating | |||
| Neighbor Cache Entries on First-Hop Routers", RFC 9131, | Neighbor Cache Entries on First-Hop Routers", RFC 9131, | |||
| DOI 10.17487/RFC9131, October 2021, | DOI 10.17487/RFC9131, October 2021, | |||
| <https://www.rfc-editor.org/info/rfc9131>. | <https://www.rfc-editor.org/info/rfc9131>. | |||
| [VRRP-IPv6] | [VRRP-IPv6] | |||
| Hinden, R. and J. Cruz, "Virtual Router Redundancy | Hinden, R. and J. Cruz, "Virtual Router Redundancy | |||
| Protocol for IPv6", Work in Progress, March 2007. | Protocol for IPv6", Work in Progress, Internet-Draft, | |||
| draft-ietf-vrrp-ipv6-spec-08, 5 March 2007, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-vrrp- | ||||
| ipv6-spec-08>. | ||||
| Acknowledgments | ||||
| The IPv6 text in this specification is based on [RFC2338]. The | ||||
| authors of [RFC2338] are S. Knight, D. Weaver, D. Whipple, R. Hinden, | ||||
| D. Mitzel, P. Hunt, P. Higginson, M. Shand, and A. Lindem. | ||||
| The authors of [VRRP-IPv6] would also like to thank Erik Nordmark, | ||||
| Thomas Narten, Steve Deering, Radia Perlman, Danny Mitzel, Mukesh | ||||
| Gupta, Don Provan, Mark Hollinger, John Cruz, and Melissa Johnson for | ||||
| their helpful suggestions. | ||||
| The IPv4 text in this specification is based on [RFC3768]. The | ||||
| authors of that specification would like to thank Glen Zorn, Michael | ||||
| Lane, Clark Bremer, Hal Peterson, Tony Li, Barbara Denny, Joel | ||||
| Halpern, Steve M. Bellovin, Thomas Narten, Rob Montgomery, Rob | ||||
| Coltun, Radia Perlman, Russ Housley, Harald Alvestrand, Ned Freed, | ||||
| Ted Hardie, Bert Wijnen, Bill Fenner, and Alex Zinin for their | ||||
| comments and suggestions. | ||||
| Thanks to Steve Nadas for his work merging/editing [RFC3768] and | ||||
| [VRRP-IPv6] into the document that eventually became [RFC5798]. | ||||
| Thanks to Stewart Bryant, Sasha Vainshtein, Pascal Thubert, Alexander | ||||
| Okonnikov, Ben Niven-Jenkins, Tim Chown, Mališa Vučinić, Russ White, | ||||
| Donald Eastlake, Dave Thaler, Eric Kline, and Vijay Gurbani for | ||||
| comments on the current document (RFC 9568). Thanks to Gyan Mishra, | ||||
| Paul Congdon, and Jon Rosen for discussions related to the removal of | ||||
| legacy technology appendices. Thanks to Dhruv Dhody and Donald | ||||
| Eastlake for comments and suggestions for improving the IANA section. | ||||
| Thanks to Sasha Vainshtein for recommending "Maximum Advertisement | ||||
| Interval" validation. Thanks to Tim Chown and Fernando Gont for | ||||
| discussions and updates related to IPv6 SLAAC. | ||||
| Special thanks to Quentin Armitage for a detailed review and | ||||
| extensive comments on the current document (RFC 9568). | ||||
| Authors' Addresses | Authors' Addresses | |||
| Acee Lindem | Acee Lindem | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| 301 Midenhall Way | 301 Midenhall Way | |||
| Cary, NC 27513 | Cary, NC 27513 | |||
| United States of America | United States of America | |||
| Email: acee.ietf@gmail.com | Email: acee.ietf@gmail.com | |||
| Aditya Dogra | Aditya Dogra | |||
| Cisco Systems | Cisco Systems | |||
| Sarjapur Outer Ring Road | Sarjapur Outer Ring Road | |||
| Bangalore 560103 | Bangalore 560103 | |||
| Karnataka | Karnataka | |||
| India | India | |||
| Email: addogra@cisco.com | Email: addogra@cisco.com | |||
| End of changes. 244 change blocks. | ||||
| 571 lines changed or deleted | 576 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||