CARP („Common Address Redundance Protocol”) este un protocol de rețea care permite mai multor calculatoare aflate în aceeași rețea locală să partajeze un set de adrese IP. Este utilizat în general pentru redundanță și failover pentru echipamentele firewall și routere. În unele situații CARP poate susține și capabilități de administrare a încărcării echipamentelor. Acest protocol nu este pantentat și poate fi implementat gratuit pe echipamentele compatibile. Protocolul folosește tehnica adreselor IP virtuale ce sunt prezente în jurul nodurilor CARP. Există un nod principal și unul sau mai multe noduri secundare în configurările normale. Nodul principal întotdeauna va răspunde cererilor adreselor IP virtuale. Nodurile secundare vor ignora aceste cereri, ele sunt interesate doar când nodul principal este indisponibil pentru ca unul dintre ele să preia funcțiile nodului master oricând acest lucru se întâmplă. Pentru fiecare configurație este nevoie de un host virtual (vhid- virtual host id), o adresă IP virtuală și o adresă hardware virtuală. Forma adresei hardware depinde de tipul echipamentului și este creată automat de protocolul CARP, ceilalți doi parametri trebuiesc configurați.

  • Virtual host id (vhid): 1
  • Virtual IP: 192.168.0.100

Fiecare nod CARP prezent în grup trebuie configurat cu aceiași adresă hardware virtuală, același id și ip virtual pentru client. Fiecare nod va avea și alți trei parametri pentru a funcționa corespunzător. Primi doi parametri sunt pentru schimbul de bază și schimbul oblic care influențează intervalul de verificare a nodurilor și al treilea parametru este cel de autentificare a nodului (password).

  • Advertisement base (advbase): 1
  • Advertisement skew (advskew): 100
  • Password (pass): parola

Pentru a crea o interfață CARP într-un nod care va fi selectat ca nod principal se urmează exemplul.

# ifconfig carp0 create
  1. ifconfig carp0 vhid 1 advskew 100 advbase 1 pass changeme 192.168.0.100
  2. ifconfig carp0

carp0: flags=41<UP,RUNNING> mtu 1500 carp: MASTER vhid 1 advbase 1 advskew 100 inet 192.168.0.100 netmask 0xffffff00

și în nodul secundar (slave)

# ifconfig carp0 create
  1. ifconfig carp0 vhid 1 advskew 110 advbase 1 pass changeme 192.168.0.100
  2. ifconfig carp0

carp0: flags=41<UP,RUNNING> mtu 1500 carp: BACKUP vhid 1 advbase 1 advskew 100 inet 192.168.0.100 netmask 0xffffff00

Nodul principal în arhitectura CARP trimite pachete de verificare cu frecvență mare. Acest lucru se poate influența și prin modificarea parametrilor ”advbase” și ”advskew”. Funcția de master este de a răspunde la cererile ARP pentru adresa IP virtuală cu adresa hardware virtuală. Acesta este răspunsul atunci când o cerere ARP pentru 192.168.0.100 este făcută de către o mașină client. Fiecare nod din infrastructură recepționează mesajele nodului principal și verifică dacă intervalul de anunț al lor este mai mic decât al nodului principal. Dacă pentru un motiv oarecare nodul principal nu reușește să trimită mesajul de verificare toate nodurile secundare va observa acest lucru și va trimite un ”anunț” bazat pe parametri propii. Toate nodurile vor primi mesajul și nodul cu frecvența cea mai mare va prelua funcția de nod principal. Dacă nodul master inițial se alătură din nou grupului CARP acesta va fi un nod secundar. Aceeași procedură de selecție va începe și dacă este configurat corect acesta va deveni nodul principal al infrastucturii CARP din nou.