CARP

CARP (Common Address Redundancy Protocol) ist ein Protokoll, mit dessen Hilfe sich die Verfügbarkeit von IP-Systemen erhöhen läßt. Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen IP/MAC-Adressen für die Kommunikation mit anderen Systemen nutzen können. Haupteinsatzgebiet von CARP ist die Erstellung hoch verfügbarer Gateways (Router/Firewall); mit CARP lassen sich aber auch Applikationsserver hoch verfügbar machen. In der Internet-Protokoll-Familie ist es das Protokoll Nummer 112.

Entwickelt wurde CARP vom OpenBSD-Team. Die Entwicklung war nötig, weil es (aus patentrechtlichen Gründen) nicht möglich ist, im Rahmen eines Open Source-Projektes VRRP einzusetzen. Dadurch war es nötig, ein eigenes Protokoll zu schreiben. Zusätzlich konnten so grundlegende Fehler von VRRP und HSRP vermieden werden. Die erste OpenBSD-Version, bei der CARP integriert war, war Version 3.5.

Inzwischen ist CARP auch auf andere Plattformen portiert worden. Eine freie Userland-Portierung ist UCARP (zur Zeit erhältlich für Linux 2.4/2.6, OpenBSD und NetBSD). Für FreeBSD existiert eine Kernel-Implementierung.

Abgrenzung zu VRRP

Die grundsätzliche Aufgabe und Funktionsweise von CARP ähnelt VRRP. Es gibt aber einige grundlegende Unterschiede:

Funktionsweise

Um CARP zu nutzen, braucht man mindestens zwei Systeme, die die gleiche Aufgabe erfüllen und im selben Subnetz liegen. Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse. Diese beiden Systeme bilden einen Cluster. Zusätzlich wird diesem Cluster jetzt eine virtuelle IP- und MAC-Adresse zugewiesen. Über diese virtuelle IP/MAC kommuniziert der Cluster mit anderen Systemen. Damit das funktioniert, wird ein Cluster-Rechner Master und der andere Slave, wobei der Master die Kommunikation mit der Außenwelt übernimmt. Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die andere Maschine noch arbeitet. Wenn der Master ausfällt, übernimmt der Slave sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse.

Besonders interessant ist CARP im Zusammenhang mit hoch verfügbaren Firewalls. Dabei ist es zusätzlich nötig, die Statetables zu synchronisieren (um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners abzufangen). Bei OpenBSD wird hierfür pfsync eingesetzt.

Weblinks

See also: CARP, Computercluster, Firewall, FreeBSD, Gateway, HSRP, IPv4, IPv6, Internet-Protokoll-Familie, Internet Protocol