Fact-checked by Grok 2 weeks ago

Common Address Redundancy Protocol

The Common Address Redundancy Protocol () is a computer networking protocol that enables multiple hosts on the same to share a set of addresses, ensuring and by designating one host as the master to handle traffic while backups monitor and take over if the master fails. Developed as an open-source alternative to the patented VRRP and the proprietary HSRP, CARP was first introduced in 3.5 in 2004 and has since been implemented in various BSD-derived systems, including , , and firewalls. CARP operates by assigning a unique Virtual Host ID (VHID) to each redundancy group, with hosts configured to advertise their availability at intervals determined by the advbase (base advertisement interval in seconds) and advskew (skew to prioritize the ) parameters. The host sends periodic or advertisements; if backups detect the absence of these (typically after three missed heartbeats), the backup with the lowest skew assumes the role, transparently redirecting traffic to the shared IP addresses without interrupting services. This mechanism supports both IPv4 and , and includes security features like HMAC-SHA1 authentication using a shared to prevent unauthorized takeovers. Beyond basic , provides load balancing capabilities by distributing traffic across multiple active masters in a group, configurable via the carpnodes option (e.g., specifying weights for hashing). It attaches as a pseudo-device to physical interfaces and can operate in modes such as (default), unicast for restricted networks, or stealth to hide the virtual , making it versatile for scenarios like redundant firewalls or web servers. Global behaviors, including preemption (where a higher-priority host reclaims mastery) and logging of state changes, are tunable via parameters. Overall, 's design emphasizes simplicity, security, and no licensing costs, distinguishing it from standards like RFC 3768 for VRRP by offering enhanced protection against spoofing.

Overview

Definition and Purpose

The Common Address Redundancy Protocol () is an open protocol that enables multiple hosts on the same local to share a set of and/or addresses. Developed as a free alternative to proprietary redundancy protocols, CARP assigns these shared addresses to redundancy groups identified by a Virtual Host ID (VHID), allowing only one host to actively use them at a time while others remain in standby. This mechanism ensures that the shared addresses appear as a single, stable endpoint to the network, facilitating without requiring modifications to client configurations. The primary purpose of is to provide for critical services, such as default gateways or firewalls, by enabling seamless in the event of a failure. When the active (master) stops sending periodic advertisements, a automatically assumes the role and takes over the shared addresses, minimizing service disruptions and ensuring continuous operation. This process is particularly valuable in environments requiring uninterrupted connectivity, such as enterprise s or perimeter defenses, where could compromise or accessibility. Key benefits of CARP include enhanced continuous , protection against single points of failure, and support for load distribution. By eliminating reliance on a single host, CARP safeguards against failures, issues, or events, which is essential for stateful firewalls that maintain connection tracking. Load distribution is achieved through hashing mechanisms on addresses (source, destination, and optionally ports) across multiple CARP groups sharing the same virtual IP but using distinct VHIDs, ensuring consistent traffic routing to the same host for related connections. This approach not only balances traffic but also improves overall resilience without introducing bottlenecks. CARP operates at the network layer (Layer 3) as an IP protocol with number 112, utilizing multicast advertisements to 224.0.0.18 (IPv4) or FF02::12 (IPv6) for master election and status updates among group members. These advertisements, sent at configurable intervals, allow hosts to monitor each other and trigger elections transparently, supporting both failover and balanced operation across compatible systems like those in the BSD family.

Basic Principles of Redundancy

The Common Address Redundancy Protocol () operates on the principle that multiple on the same local can form a group to share a (VIP), ensuring continuous availability of network services. In this setup, one serves as the , actively responding to traffic directed at the VIP, while the others function as backups that remain idle until needed. This shared addressing mechanism allows for seamless traffic handling without requiring changes to client configurations, as the VIP remains constant regardless of which host is active. The failover process in CARP relies on periodic status advertisements sent by the master host to the group members. These advertisements occur at configurable intervals, and backups monitor for their presence; if the master fails and advertisements cease, the backups detect the absence within a short timeout period. A new master is then elected based on , typically determined by a value where the host with the highest (lowest ) assumes the role, promoting rapid transition to minimize service interruption. This election ensures that the group self-heals automatically without external intervention. To enhance beyond simple , supports optional load sharing through hashing of source and destination addresses (and optionally ports), which distributes incoming traffic across multiple active hosts in the group for balanced utilization. This is achieved by configuring multiple subgroups sharing the same VIP, where the hash determines which subgroup—and thus which host—processes each packet. The Virtual Host ID (VHID) plays a crucial role here, serving as a for each group on a given network interface, allowing multiple independent groups to coexist without interference. Overall, these principles provide significant advantages, including downtime reduction to mere seconds during , far surpassing manual intervention times, and support for both active-passive modes (single master with hot standbys) and active-active modes (concurrent load distribution). This approach delivers for critical network functions like routing and firewalling, making it suitable for environments demanding uninterrupted service.

Technical Details

Protocol Operation

In CARP, hosts sharing a Virtual Host ID (VHID) form a redundancy group to provide for a common . The of the master host occurs through a priority-based using two parameters: the base advertisement interval (advbase, typically 1 second) and the advertisement skew (advskew, ranging from 0 to 254). The host with the lowest effective advertisement interval—calculated as advbase + (advskew / 256)—is preferred as master, as it advertises more frequently. If advskew values are equal, the election may fall to random selection among tied hosts. Upon or (e.g., due to link issues), a host's advskew increases automatically by a demotion factor (default ), reducing its priority and allowing another host to take over. The master host periodically sends advertisement packets to the 224.0.0.18 ( number 112, 255) at intervals determined by its advbase + advskew. These packets include the VHID and are authenticated using a to prevent unauthorized participation. Backup hosts in the group listen for these advertisements; if the master fails and no packets are received for three times the expected interval (typically around 3 seconds with default settings), the backup with the next-lowest interval assumes the master role and begins advertising. Preemption is optional and configurable based on , allowing a higher- host to reclaim the master state upon recovery. CARP operates through defined state transitions for each host in a group: starting in (initialization, where the is configured but inactive), transitioning to (monitoring advertisements without responding to traffic), and to (actively handling traffic for the and sending advertisements). These transitions are triggered by configuration changes, advertisement receipt, or timeouts. For setups with multiple or VHID groups, each group operates independently, bound to a specific physical via a carpdev , enabling across diverse segments without . When load balancing is enabled (via parameters like net.inet.carp.arpbalance), distributes incoming requests across multiple hosts sharing the same virtual IP but using different VHIDs. This is achieved by computing a from packet details to determine which host responds:
hash = (source_IP XOR destination_IP XOR VHID) mod number_of_group_members
If the computed hash matches the host's VHID the group size, it generates the reply; otherwise, it ignores the request. This ensures even traffic distribution while maintaining , with the VHID playing a key role in .

Packet Structure and Authentication

The Common Address Redundancy Protocol (CARP) packets are encapsulated within datagrams using protocol number 112 for both IPv4 and . For IPv4, advertisements are sent as packets with the destination address 224.0.0.18 and a time-to-live () value of 255, using the shared () as the source address. For , the destination is the link-local ff02::12 with a hop limit of 255, again sourcing from the shared . This approach ensures efficient distribution within the local while preventing propagation beyond it. Packets with a or hop limit not equal to 255 are silently dropped to enforce local scope. The header follows immediately after the and is 36 bytes long for both and , structured as a packed without padding. The header includes fields for identification, timing parameters, integrity checks, and security. The and type fields occupy the first byte: (4 bits, value 2) in the high and type (4 bits, value 1 for advertisement) in the low . The virtual host ID (VHID), an 8-bit field (values 1–255), uniquely identifies the redundancy group and determines the associated virtual (e.g., 00:00:5E:00:01:VHID for Ethernet). The advertisement skew (advskew) is an 8-bit value (0–254) that fine-tunes the advertisement interval for / prioritization, while the advertisement base (advbase) is an 8-bit value (1–255) specifying the base interval in seconds. The authentication length (authlen) field, 8 bits, indicates the size of the and digest () in 32-bit words, typically 7 for the standard configuration ((64-bit + 160-bit ) / 32 bits). A (8 bits) tracks temporary demotions due to interface failures, defaulting to 0. The header's integrity is protected by a 16-bit field, computed as the IP-style one's complement sum over the entire header (excluding the MD). Following the checksum are two 32-bit counters forming a 64-bit value for anti-replay protection, though implementations often increment only the low-order word. The final 20 bytes (160 bits) contain the message digest, which is the HMAC-SHA1 output computed using a configured on all group members.

CARP Header Structure (Textual Representation)

Byte OffsetField NameSize (bits)Description
0Version (bits 7-4) + Type (bits 3-0)8Protocol version (2) and packet type (1 for advertisement).
1VHID8Virtual Host ID (1–255).
2Advskew8Advertisement skew (0–254).
3Authlen8Length of counter + MD in 32-bit words (typically 7).
4Demote8Demotion counter (0–255).
5Advbase8Advertisement base interval in seconds (1–255).
6–7Checksum16Ones' complement checksum of the header.
8–11Counter (low)32Low-order anti-replay counter.
12–15Counter (high)32High-order anti-replay counter (often 0).
16–35MD (Auth Data)160HMAC-SHA1 message digest.
Authentication relies on a key (up to 256 characters, but effectively used as a 512-bit key for via padding), configured identically across all hosts in the VHID group. The message digest is generated as the HMAC-SHA1 of the header fields from version through the counters (excluding and MD itself), providing protection against spoofing and tampering. The digest ensures only authorized hosts can validate advertisements, with invalid digests causing silent packet drops. The is verified first; failures result in immediate discard without further processing. No explicit error responses are defined, maintaining the protocol's lightweight design.

Implementations and Use Cases

Operating System Support

CARP is natively supported in OpenBSD since version 3.5, released in May 2004, where it is tightly integrated with the PF firewall and pfsync for state synchronization across redundant hosts. This integration allows seamless failover for firewall rules and connection states, making it a cornerstone for high-availability setups in OpenBSD environments. FreeBSD includes native CARP support starting from version 5.4 in 2005, following a port from in 2004, and it is extensively used in firewall distributions like . , built on , leverages for redundant gateways and load balancing, with added features such as compatibility and the ability to assign multiple Virtual Host IDs (VHIDs) per interface for granular control. NetBSD has supported CARP since version 4.0, released in December 2007, with integration similar to OpenBSD's PF for firewall redundancy. This enables shared IP addresses across hosts on the same network segment, ensuring continuous availability during failures. DragonFly BSD provides native CARP support, imported around 2007. Support in other operating systems is more limited. Linux lacks native kernel-level CARP implementation and relies on user-space tools like UCARP for compatibility, which provides a portable but less integrated alternative. Windows does not offer native CARP support, requiring third-party software for similar redundancy functions. Certain include CARP compatibility for virtual Ethernet interfaces in environments. CARP is commonly paired with pfsync in BSD systems to synchronize firewall states between active and backup nodes, enhancing reliability. It also integrates well with for securing redundancy tunnels in distributed setups. However, its absence from the mainline necessitates user-space daemons, which may introduce additional latency compared to native BSD implementations.

Basic OpenBSD Configuration

In OpenBSD, CARP interfaces are configured using the ifconfig command, typically in /etc/hostname.carp0 or via manual invocation after creating the interface. To set up a basic CARP interface on the master host, execute ifconfig carp0 create followed by ifconfig carp0 vhid 1 pass secretkey advskew 0 192.168.1.1 netmask 255.255.255.0, where vhid 1 assigns the virtual host identifier, pass secretkey sets the authentication passphrase, advskew 0 ensures priority as master (lower skew value), and the IP address is the shared virtual IP. On the backup host, use the same command but with advskew 100 to lower its priority, preventing it from advertising unless the master fails. To allow CARP protocol traffic (protocol number 112), add PF rules in /etc/pf.conf such as pass in on em0 proto carp and pass out on em0 proto carp, where em0 is the parent interface; reload PF with pfctl -f /etc/pf.conf. Enable CARP system-wide by ensuring net.inet.carp.allow=1 in /etc/sysctl.conf if not already default.

pfSense Configuration

pfSense, built on with OpenBSD's integration, configures via the web for easier management in high-availability clusters. First, assign unique static IPs to physical s on both nodes (e.g., primary : 198.51.100.1/24, secondary: 198.51.100.2/24) and set up a dedicated sync (e.g., 172.16.1.2/24 on primary, 172.16.1.3/24 on secondary). Under System > High Availability Sync, enable "Synchronize States" on the sync , set the peer IP (e.g., 172.16.1.3 on primary), and configure for config sync from primary to secondary, including rules and aliases. For Virtual IPs, navigate to > Virtual IPs, add a new -type VIP on the desired (e.g., ), specify the shared address (e.g., 192.168.1.1/24), VHID (e.g., 1), matching , advertising frequency base of 1, and of 0 on primary or 100 on secondary; repeat for VIPs. Apply changes to activate; pfsync handles state synchronization automatically once enabled.

IPv6 Setup

CARP supports alongside IPv4, using similar ifconfig parameters but with inet6 addressing. In , create the interface with ifconfig carp0 create, then configure ifconfig carp0 vhid 1 pass secretkey advskew 0 inet6 2001:db8::1 prefixlen 64, assigning the shared ; on backup, add advskew 100. Include rules like pass in on em0 proto carp from any to any to permit CARP advertisements, as the protocol operates identically for both address families. In , add CARP VIPs via > Virtual IPs, selecting CARP type, interface, and address (e.g., 2001:db8:1::1/64 for , VHID 2, skew 0/100), with link-local addresses like fe80::1%interface/64 for VHID 3 if needed for router advertisements.

Troubleshooting Tips

Monitor status in using ifconfig -g carp to view demotion counters and states (e.g., or ); a non-zero demote count indicates issues like parent interface failure. Check system logs with tail -f /var/log/daemon for transitions, such as "carp: -> " on , and ensure routing is enabled (default via IGMP) since uses 224.0.0.18 for IPv4 advertisements. In , view status under > ( Status) for master/backup indicators per VIP, and use Diagnostics > States for sync verification; logs under > Logs > filter demotions if skew misconfiguration causes flapping. Verify and VHID match across nodes, as mismatches prevent synchronization.

Advanced Configurations

For multiple CARP groups on one interface in , create additional interfaces like ifconfig carp1 create and ifconfig carp2 create, then assign them to a group with ifconfig carp1 group internal and ifconfig carp2 group internal to link demotions (e.g., if one fails, the group preempts). Load balancing can be achieved in active/active setups by configuring pfsync with ifconfig pfsync0 syncdev em1 up and using defer mode in /etc/hostname.pfsync0 to avoid conflicts, distributing traffic via 's hash-based advertisement selection. In , multiple VIPs share VHIDs per interface (e.g., VHID 1 for IPv4, 2 for ), with group syncing handled automatically through the HA config.

Sample Network Diagram

A basic two-host failover setup connects two firewalls via a dedicated sync link for pfsync, with shared CARP IPs on WAN and LAN interfaces:
Internet/WAN
      |
      +-------------------+
      |                   |
   em2 (198.51.100.1)  em2 (198.51.100.2)
      |                   |
+-----+-----+        +-----+-----+
| Firewall1|        | Firewall2|
| (Master) | em1 ---| (Backup) |
+-----+-----+        +-----+-----+
      |                   |
   em0 (192.168.1.2)   em0 (192.168.1.3)
      |                   |
      +-------------------+
           LAN (CARP VIP: 192.168.1.1)
This diagram shows em1 as the crossover sync link (e.g., 172.16.1.0/24), ensuring isolated state sync while handles on em0/em2.

History and Development

Origins in OpenBSD

The development of the Common Address Redundancy Protocol (CARP) began in the early 2000s within the project, primarily led by Jun-ichiro "itojun" Hagino, as an open-source response to the proprietary and patented router redundancy protocols (HSRP) and (VRRP), both controlled by Cisco Systems. Hagino's initiative addressed the absence of free implementations of VRRP in BSD systems over five years after its RFC publication, due to patent concerns that deterred adoption. The protocol was designed to provide and redundancy for network gateways, particularly firewalls, without infringing on existing patents, following a detailed analysis to ensure divergence from HSRP claims. Hagino presented the initial design of at the 58th IETF meeting in November 2003, emphasizing simplicity, security through HMAC-SHA1 authentication for advertisements, and support for both IPv4 and IPv6. This outline highlighted CARP's use of variable advertisement intervals, where the most frequent advertiser assumes the master role, and layer-2 load balancing via . The protocol was integrated from the outset with OpenBSD's packet filter, enabling seamless redundancy in setups to synchronize states across hosts. Implementation efforts involved additional contributors, including Mickey Shalayeff, Markus Friedl, Marco Pfatschbacher, and Ryan McBride, who refined the code for production use. CARP was imported into the source tree on October 17, 2003, and first released in 3.5 on May 1, 2004, marking its debut as a secure, patent-free alternative for high-availability networking. Early challenges included verifying non-infringement on patents—without formal assurances—and ensuring with existing network infrastructures while prioritizing open-source principles.

Adoption and Evolution

Following its initial implementation in OpenBSD, CARP was ported to other BSD variants to expand its availability for high-availability networking. FreeBSD integrated CARP in version 5.4, released on May 5, 2005, enabling multiple hosts to share IP addresses for in enterprise environments. followed with support in version 4.0, released on December 19, 2007, providing similar redundancy features across its portable kernel. The project, a FreeBSD-based distribution launched in 2006, incorporated CARP from its early releases, significantly popularizing the protocol in network appliances and small-to-medium business deployments for seamless configurations. Over time, enhancements focused on broadening compatibility and reliability. support was added in OpenBSD 4.0, released on November 1, 2006, allowing to handle both IPv4 and addresses as shared virtual hosts. Integration with pfsync, OpenBSD's state synchronization protocol, was refined to enable stateful , ensuring firewall states (such as connection tracking) are mirrored between nodes during redundancy events, a feature that matured through subsequent releases in BSD derivatives. CARP's community adoption grew through contributions in BSD ecosystems, particularly for high-availability clusters where it facilitates load balancing and among firewalls. It found use in embedded systems via and ports, supporting redundant routing in resource-constrained devices like network appliances. Open-source developers extended its functionality through patches and , fostering its role in security-oriented setups. Jun-ichiro "itojun" Hagino, a key figure in CARP's development, passed away on August 5, 2007; 4.2 was dedicated to his memory in recognition of his contributions to networking and IPv6. As of 2025, remains stable in BSD derivatives like , , and , with no major protocol revisions since its 2003 specification. Adoption on is limited, as administrators prefer the standardized VRRP due to broader interoperability and IETF backing. It is widely used in security-focused networks, notably comprising the core redundancy mechanism in high-availability setups.

Standards and Comparisons

Incompatibility with IETF Protocols

The (CARP) has never been submitted to the (IETF) for standardization as a (RFC), remaining instead an implementation-specific protocol developed primarily for BSD-derived operating systems. In contrast, the IETF's (VRRP) is defined in RFC 3768 as a standards-track protocol for providing redundancy in virtual router configurations. CARP was intentionally designed as a BSD-centric solution, diverging from VRRP to address specific needs in open-source environments without engaging in the IETF's collaborative standardization process. Key technical incompatibilities between and VRRP stem from differences in their packet formats and operational mechanics, despite sharing the same IP protocol number () and IPv4 (224.0.0.18). employs a unique structure that includes a Virtual Host ID (VHID) for group identification and for , without any built-in for VRRP packets. VRRP, however, uses a distinct packet layout with fields for router priority and advertisement intervals, along with optional or passwords, making direct communication impossible even on shared networks. These structural variances ensure that advertisements are not interpretable by VRRP implementations, and vice versa, often leading tools like to misdecode traffic as VRRP by default. As a result, and VRRP exhibit significant issues, preventing devices using the two protocols from participating in the same redundancy group. Network administrators must deploy either all- or all-VRRP configurations within a given to avoid failures in detection or processes; mixing them can cause packet drops, election loops, or complete redundancy breakdown. This limitation confines primarily to environments with uniform BSD-based support, such as , , and , while VRRP enjoys broader vendor adoption across commercial routers and operating systems. The primary reason for CARP's avoidance of IETF was to circumvent concerns associated with VRRP, which Cisco Systems claimed was covered under its Hot Standby Router Protocol (HSRP) (e.g., U.S. 5,473,599). OpenBSD developers opted for a rapid, independent development path to create a fully -free alternative, bypassing the IETF's requirement for reasonable and non-discriminatory () licensing disclosures that could impose legal risks on projects. This approach enabled quick integration into open-source ecosystems but fostered a fragmented protocol landscape, where CARP's open licensing avoids yet limits cross-protocol ecosystems compared to the standardized VRRP. To mitigate these incompatibilities, administrators can isolate and VRRP groups using separate VLANs or subnets, ensuring no overlap in multicast domains. Protocol translators or gateways to bridge and VRRP are theoretically possible but rarely implemented due to complexity and lack of demand; no official attempts have been made to submit for IETF adoption or harmonization with VRRP.

Key Differences from VRRP

The Common Address Redundancy Protocol (CARP) and the Virtual Router Redundancy Protocol (VRRP) both provide first-hop redundancy for IP networks, but CARP's design emphasizes openness, security, and flexibility to address limitations in VRRP, particularly its historical ties to proprietary influences. Developed by the OpenBSD project to avoid patent encumbrances associated with VRRP—stemming from Cisco's earlier claims on similar technologies like HSRP—CARP is released under the BSD license, enabling free implementation without licensing fees or restrictions. In contrast, while VRRP is an IETF standard (RFC 5798), its evolution was influenced by Cisco's Hot Standby Router Protocol (HSRP), leading to initial patent concerns that prompted alternatives like CARP. This openness in CARP facilitates broader adoption in open-source environments, such as firewalls and routers in BSD-based systems. A core difference lies in their election mechanisms for selecting the master router. CARP employs a time-based election using an advertisement base interval (default 1 second) adjusted by a skew value (0-255, in 0.01-second increments), allowing fine-grained control over failover timing and enabling backups to preempt via lower skew adjustments. For instance, a node with skew 0 advertises every second, while one with skew 100 advertises every 1.1 seconds, making the former the preferred master. VRRP, however, uses a fixed priority field (1-255), where the highest priority wins election, with 255 reserved for the IP address owner and 100 as the default for backups; this provides less granular timing control. CARP's approach supports more precise load distribution and preemption without explicit configuration changes. Authentication in CARP is mandatory and robust, utilizing HMAC-SHA1 (160-bit key) to cryptographically verify advertisement packets, enhancing security against spoofing in untrusted networks. VRRPv3 removes authentication entirely for simplicity and security reasons, relying on for protection if needed, while earlier versions (v2) offered optional plain-text passwords or HMAC-MD5 (128-bit). This mandatory strong authentication in CARP reflects OpenBSD's security focus, making it unsuitable for mixing with unauthenticated VRRP implementations. Both and VRRP support multiple groups (VHIDs for , VRIDs for VRRP) on a single interface, allowing diverse traffic handling without separate physical or subinterfaces. For preemption, enables it via the net.inet.carp.preempt (default disabled), often tuned with skew for controlled takeovers. VRRP supports configurable preemption (default enabled), where higher-priority routers can immediately assume mastery upon recovery. Load sharing distinguishes CARP further, with built-in IP hashing via the arpbalance feature and carpnodes configuration, distributing ARP replies across nodes based on client IP for active-active balancing without additional protocols. VRRP primarily focuses on active-passive failover and requires multiple VRIDs or vendor extensions (e.g., GLBP-like) for load distribution. Both protocols support natively—CARP since inception and VRRPv3 explicitly—but CARP's design integrates it seamlessly across VHIDs.
FeatureCARPVRRP (v3, RFC 5798)
Election MethodTime-based (advbase + advskew, 0-255 for fine control)Priority-based (1-255, fixed values)
AuthenticationMandatory (160-bit)None ( optional); v2 had optional /plain-text
Groups per InterfaceMultiple VHIDs nativelyMultiple VRIDs possible on one interface
PreemptionConfigurable via (default disabled); skew-enabledConfigurable (default enabled)
Load SharingBuilt-in IP hash (arpbalance) for active-activeRequires multiple groups/extensions; active-passive focus
OpennessBSD license, patent-freeIETF standard, historical patent influences
IPv6 SupportNative from startNative in v3

References

  1. [1]
    carp(4) - OpenBSD manual pages
    carp allows multiple hosts on the same local network to share a set of IP addresses. Its primary purpose is to ensure that these addresses are always available, ...<|control11|><|separator|>
  2. [2]
    High Availability - pfSense® software - Netgate Documentation
    Aug 26, 2025 · Common Address Redundancy Protocol (CARP) was created by OpenBSD developers as a free, open redundancy solution for sharing IP addresses among a ...
  3. [3]
    Chapter 28. Introduction to the Common Address Redundancy ...
    CARP is the Common Address Redundancy Protocol. Its primary purpose is to allow multiple hosts on the same network segment to share an IP address.Missing: documentation | Show results with:documentation
  4. [4]
    31.10. Common Address Redundancy Protocol (CARP)
    The Common Address Redundancy Protocol ( CARP ) allows multiple hosts to share the same IP address and Virtual Host ID ( VHID ) in order to provide high ...
  5. [5]
    OpenBSD PF: Firewall Redundancy (CARP and pfsync)
    CARP is the Common Address Redundancy Protocol. Its primary purpose is to allow multiple hosts on the same network segment to share an IP address.
  6. [6]
    [PDF] Router and Firewall Redundancy with OpenBSD and CARP
    Load balancing with CARP is done through ARP based hashing only. This requires a CARP group to be setup for each physical host with the groups sharing a common ...
  7. [7]
    Chapter 34. Advanced Networking
    Summary of each segment:
  8. [8]
    [PDF] CARP: The Free Fail-over Protocol - GIAC Certifications
    Jun 24, 2004 · This paper explains the design and implementation of CARP on OpenBSD 3.5, some sample setups in which CARP provides redundancy, and future.Missing: documentation | Show results with:documentation
  9. [9]
    [PDF] Introduction to CARP - FreeBSD Foundation
    CARP stands for Common. Address Redundancy Protocol and its basic functionality is to allow multiple hosts to share a set of IP addresses. The CARP protocol ...
  10. [10]
    carp(4) - OpenBSD manual pages
    ### Summary of CARP Protocol Operation
  11. [11]
    carp
    ### Summary of CARP Protocol Operation
  12. [12]
    Innovations - OpenBSD
    ASLR: OpenBSD 3.4 was the first widely used operating system to provide it by default. ... carp(4): Written by Mickey Shalayeff, Markus Friedl, Marco ...
  13. [13]
    carp(4) - NetBSD Manual Pages
    CARP(4) NetBSD Kernel Interfaces Manual CARP(4) NAME carp -- Common Address Redundancy Protocol SYNOPSIS pseudo-device carp. DESCRIPTION
  14. [14]
    UCARP allows a couple of hosts to share common virtual IP ... - GitHub
    Apr 24, 2019 · UCARP allows a couple of hosts to share common virtual IP addresses in order to provide automatic failover.
  15. [15]
    Best practices for running FreeBSD on Hyper-V - Microsoft Learn
    Nov 1, 2024 · Enable CARP in FreeBSD 10.2 on Hyper-V. The Common Address Redundancy Protocol (CARP) allows multiple hosts to share the same IP address and ...
  16. [16]
    [PDF] Supporting Redundant Routing Protocols - Cisco
    The protocols supported on a vEthernet interface are as follows: • carp—Common Address Redundancy Protocol. • custom-rp—User-defined protocol. • hsrp—Hot ...Missing: operating | Show results with:operating
  17. [17]
    High Availability Configuration Example | pfSense Documentation
    Aug 21, 2025 · Configuring the CARP Virtual IPs¶ · Navigate to Firewall > Virtual IPs on the primary node to manage CARP VIPs · Click fa-plus Add at the top of ...
  18. [18]
    CARP Status | pfSense Documentation
    Aug 27, 2025 · This page shows the current status of all configured CARP Virtual IP addresses. The page also provides troubleshooting and maintenance controls.
  19. [19]
    [PDF] CARP: common address redundancy protocol Jun-ihiro itojun ... - IETF
    CARP was imported to OpenBSD on Oct 17 after OpenBSD implemented CARP, in less than 1 month, FreeBSD and NetBSD are integrating it we planned to cleanup ...
  20. [20]
    OpenBSD 3.5
    May 1, 2004 · CARP (the Common Address Redundancy Protocol) carp(4) allows multiple machines to share responsibility for a given IP address or addresses.
  21. [21]
    FreeBSD/amd64 5.4-RELEASE Release Notes
    May 5, 2005 · The Common Address Redundancy Protocol (CARP) has been implemented. CARP comes from OpenBSD and allows multiple hosts to share an IP address, ...
  22. [22]
    Building a redundant firewall with PfSense and CARP - Conproly
    Aug 22, 2016 · This post is about building a redundant firewall with PfSense by utilizing CARP (Common Address Redundancy Protocol).
  23. [23]
    Configuring High-Availability Clusters with CARP on FreeBSD
    Mar 25, 2025 · CARP is a open-source protocol designed to allow multiple hosts to share a set of IP addresses, creating a highly available and fault-tolerant ...Missing: BSD | Show results with:BSD
  24. [24]
    CARP on Freebsd 10 with Pf Firewall @ Calomel.org
    Nov 20, 2019 · Multicast Advertisements: CARP advertisements are multicast to the 224.0.0.18 for IPv4 or FF02::12 for IPv6 multicast groups. The watch CARP ...
  25. [25]
    High Availability with CARP and VRRP - DFT Wiki
    Nov 23, 2020 · BSD systems extensively use CARP while Linux systems prefer using VRRP. The objective is to make two different gateways respond to the same IP.
  26. [26]
    RFC 3768 - Virtual Router Redundancy Protocol (VRRP)
    VRRP specifies an election protocol that dynamically assigns responsibility for a virtual router to one of the VRRP routers on a LAN.Missing: CARP incompatibility
  27. [27]
    Release Songs - OpenBSD
    Oct 18, 1995 · ... and VRRP. We read the patent document carefully and ensured that CARP was fundamentally different. We also avoided many of the flaws in HSRP ...Missing: incompatibility | Show results with:incompatibility
  28. [28]
    RFC 5798 - Virtual Router Redundancy Protocol (VRRP) Version 3 ...
    1. Version The version field specifies the VRRP protocol version of this packet. · 2. Type The type field specifies the type of this VRRP packet. · 3. Virtual Rtr ...
  29. [29]
  30. [30]
  31. [31]
  32. [32]
  33. [33]