Common Address Redundancy Protocol: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „{| class="wikitable float-right" style="margin-top:0;" |- ! colspan="2" style="background:#C0C0FF; font-size:larger;"| CARP (Common Address Redundancy Protocol) |- | '''Familie:''' | Internetprotokollfamilie |- | '''Einsatzgebiet:''' | Steigerung der Verfügbarkeit<br /> von Gateways |- |colspan="2"| {{Netzwerk-UDP-IP-Anwendungsprotokoll|CARP|2=Class="center"}} |- | '''Standards:''' | |} Das '''Common Address Redundancy Prot…“
 
K Textersetzung - „float-right“ durch „float“
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{| class="wikitable float-right" style="margin-top:0;"
'''Common Address Redundancy Protocol''' ('''CARP''') - [[Netzwerkprotokoll]] zur Erhöhung der [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen
 
== Beschreibung ==
{| class="wikitable float" style="margin-top:0;"
|-
|-
! colspan="2" style="background:#C0C0FF; font-size:larger;"| CARP (Common Address Redundancy Protocol)
! colspan="2" style="background:#C0C0FF; font-size:larger;"| CARP (Common Address Redundancy Protocol)
|-
|-
| '''Familie:'''
| '''Familie:'''
| [[Internetprotokollfamilie]]
| [[Internetprotokolle]]
|-
|-
| '''Einsatzgebiet:'''
| '''Einsatzgebiet:'''
Zeile 15: Zeile 18:
|-
|-
| '''Standards:'''
| '''Standards:'''
|  
|
|}
|}


Das '''Common Address Redundancy Protocol''' ('''CARP''') ist ein [[Netzwerkprotokoll]], mit dessen Hilfe sich die [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen erhöhen lässt. Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen [[IP-Adresse|IP]]-/[[MAC-Adresse]]n für die Kommunikation mit anderen Systemen nutzen können. Haupteinsatzgebiet von CARP ist die Erstellung [[Hochverfügbarkeit|hochverfügbarer]] [[Gateway (Informatik)|Gateways]] ([[Router]]/[[Firewall]]); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen. In der [[Internetprotokollfamilie]] ist es das Protokoll Nummer 112.
Das '''Common Address Redundancy Protocol''' ('''CARP''') ist ein [[Netzwerkprotokoll]], mit dessen Hilfe sich die [[Verfügbarkeit]] von [[Internet Protocol|IP]]-Systemen erhöhen lässt.
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|Open-Source]]-Projektes [[Virtual Router Redundancy Protocol|VRRP]] einzusetzen. Dadurch war es nötig, ein eigenes Protokoll zu schreiben. Zusätzlich konnten auf diese Weise grundlegende Fehler des VRRP und [[Hot Standby Router Protocol|HSRP]] vermieden werden. Die erste OpenBSD-Version, bei der CARP integriert war, war Version 3.5.
* Dies wird dadurch erreicht, dass mehrere Rechner innerhalb eines lokalen Netzes dieselben virtuellen [[IP-Adresse|IP]]-/[[MAC-Adresse]]n für die Kommunikation mit anderen Systemen nutzen können.
* Haupteinsatzgebiet von CARP ist die Erstellung [[Hochverfügbarkeit|hochverfügbarer]] [[Gateway (Informatik)|Gateways]] ([[Router]]/[[Firewall]]); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen.
* In der [[Internetprotokolle]] 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|Open-Source]]-Projektes [[Virtual Router Redundancy Protocol|VRRP]] einzusetzen.
* Dadurch war es nötig, ein eigenes Protokoll zu schreiben.
* Zusätzlich konnten auf diese Weise grundlegende Fehler des VRRP und [[Hot Standby Router Protocol|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 [[Ring (CPU)|Userland]]-Portierung ist UCARP (zurzeit erhältlich für [[Linux]] 2.4/2.6, OpenBSD und [[NetBSD]]). Für [[DragonFly BSD]], [[FreeBSD]]<ref>{{Internetquelle |url=https://www.freebsd.org/cgi/man.cgi?query=carp&apropos=0&sektion=4&manpath=FreeBSD+11.2-RELEASE&arch=default&format=html |titel=carp(4) |zugriff=2018-10-08}}</ref> und NetBSD existieren [[Kernel (Betriebssystem)|Kernel]]-Implementierungen.
; Inzwischen ist CARP auch auf andere Plattformen portiert worden.
* Eine freie [[Ring (CPU)|Userland]]-Portierung ist UCARP (zurzeit erhältlich für [[Linux]] 2.4/2.6, OpenBSD und [[NetBSD]]).
* Für [[DragonFly BSD]], [[FreeBSD]] und NetBSD existieren [[Kernel (Betriebssystem)|Kernel]]-Implementierungen.


== Abgrenzung zu VRRP ==
== Abgrenzung zu VRRP ==
Die grundsätzliche Aufgabe und Funktionsweise von CARP ähnelt VRRP. Es gibt aber einige grundlegende Unterschiede:
; Aufgabe und Funktionsweise von CARP ähnelt [[VRRP]]
 
; Unterschiede
* Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, [[patent]]frei von jedermann genutzt werden kann.
* Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, [[patent]]frei von jedermann genutzt werden kann.
* Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP. Damit ist CARP für [[IPv4]] und [[IPv6]] nutzbar.
* Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP.
* Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den [[Rechnerverbund|Cluster]]-Rechnern ausgetauschten Nachrichten prinzipiell [[Kryptographie|kryptographisch]] mit [[Secure Hash Algorithm|SHA-1]] bzw. [[Keyed-Hash Message Authentication Code|HMAC]] signiert.
* Damit ist CARP für [[IPv4]] und [[IPv6]] nutzbar.
* CARP nutzt ein Feature namens ''arpbalance''. Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse. Dadurch ist [[Lastverteilung (Informatik)|Lastverteilung]] zwischen den Rechnern möglich. Dieses Merkmal funktioniert bisher nur unter [[OpenBSD]] sowie auf [[FreeBSD]] bis Version 9.3<ref>{{Internetquelle |url=https://www.freebsd.org/releases/10.0R/relnotes.html |titel=FreeBSD 10.0-RELEASE Release Notes |zugriff=2018-10-08}}</ref>, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z.&nbsp;B. [[Linux]] bisher nicht.
* Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den [[Rechnerverbund|Cluster]]-Rechnern ausgetauschten Nachrichten prinzipiell [[Kryptografie|kryptographisch]] mit [[Secure Hash Algorithm|SHA-1]] bzw.&nbsp;[[Keyed-Hash Message Authentication Code|HMAC]] signiert.
* CARP nutzt ein Feature namens ''arpbalance''.
* Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse.
* Dadurch ist [[Lastverteilung (Informatik)|Lastverteilung]] zwischen den Rechnern möglich.
* Dieses Merkmal funktioniert bisher nur unter [[OpenBSD]] sowie auf [[FreeBSD]] bis Version 9.3, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z.&nbsp;B.&nbsp;[[Linux]] bisher nicht.


== Funktionsweise ==
== 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 und 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 die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt. Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten. Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse.<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/newsticker/meldung/OPNsense-Firewall-20-1-mit-VXLAN-IPsec-public-key-und-kompletter-Doku-4654216.html |titel=OPNsense-Firewall 20.1 mit VXLAN, IPsec Public Key und kompletter Doku |sprache=de |abruf=2021-11-26}}</ref>
; Mindestens zwei Systeme
Welche die gleiche Aufgabe erfüllen und im selben [[Subnetz]] liegen.


Besonders interessant ist CARP im Zusammenhang mit hoch verfügbaren Firewalls. Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern. Bei der Kombination [[OpenBSD]]/[[Pf (Paketfilter)|pf]] wird hierfür pfsync eingesetzt, unter [[Linux]]/[[Netfilter]] ist diese Funktion mit conntrackd umsetzbar.
; Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse und 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 die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt.
** Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten.
* Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse


== Weblinks ==
; Besonders interessant ist CARP im Zusammenhang mit hochverfügbaren Firewalls.
* [http://www.openbsd.org/cgi-bin/man.cgi?query=carp&sec=4 Man page-Eintrag Beschreibung der Original OpenBSD-Implementation]
* Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern.
* https://ucarp.wordpress.com/
* Bei der Kombination [[OpenBSD]]/[[Pf (Paketfilter)|pf]] wird hierfür pfsync eingesetzt, unter [[Linux]]/[[Netfilter]] ist diese Funktion mit conntrackd umsetzbar.
* [http://www.kernel-panic.it/openbsd/carp/carp4.html Firewall Failover with pfsync and CARP] ([[OpenBSD]])


== Einzelnachweise ==
<noinclude>
<references />
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
==== Sicherheit ====
==== Dokumentation ====
==== Links ====
===== Projekt =====
===== Weblinks =====
# [http://www.openbsd.org/cgi-bin/man.cgi?query=carp&sec=4 Man page-Eintrag Beschreibung der Original OpenBSD-Implementation]
# https://ucarp.wordpress.com/
# [http://www.kernel-panic.it/openbsd/carp/carp4.html Firewall Failover with pfsync and CARP] ([[OpenBSD]])
</noinclude>


[[Kategorie:Netzwerkprotokoll]]
[[Kategorie:IP]]
[[Kategorie:OpenBSD]]
[[Kategorie:OpenBSD]]
[[Kategorie:FreeBSD]]
[[Kategorie:FreeBSD]]

Aktuelle Version vom 22. Februar 2024, 11:21 Uhr

Common Address Redundancy Protocol (CARP) - Netzwerkprotokoll zur Erhöhung der Verfügbarkeit von IP-Systemen

Beschreibung

CARP (Common Address Redundancy Protocol)
Familie: Internetprotokolle
Einsatzgebiet:

Steigerung der Verfügbarkeit
von Gateways

Vorlage:Netzwerk-UDP-IP-Anwendungsprotokoll

Standards:

Das Common Address Redundancy Protocol (CARP) ist ein Netzwerkprotokoll, mit dessen Hilfe sich die Verfügbarkeit von IP-Systemen erhöhen lässt.

  • 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 hochverfügbarer Gateways (Router/Firewall); mit CARP lassen sich aber auch Applikationsserver hochverfügbar machen.
  • In der Internetprotokolle 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 auf diese Weise grundlegende Fehler des 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.

Abgrenzung zu VRRP

Aufgabe und Funktionsweise von CARP ähnelt VRRP
Unterschiede
  • Der wichtigste Vorteil von CARP ist, dass es, im Gegensatz zu VRRP, patentfrei von jedermann genutzt werden kann.
  • Ein grundsätzlicher Unterschied zu VRRP ist die protokollunabhänge Arbeitsweise von CARP.
  • Damit ist CARP für IPv4 und IPv6 nutzbar.
  • Des Weiteren wurde bei der Entwicklung von CARP sehr viel Wert auf Sicherheit gelegt, so sind beispielsweise die zwischen den Cluster-Rechnern ausgetauschten Nachrichten prinzipiell kryptographisch mit SHA-1 bzw. HMAC signiert.
  • CARP nutzt ein Feature namens arpbalance.
  • Dabei nutzen alle Rechner dieselbe virtuelle IP-Adresse, aber jeder Rechner bekommt noch eine eigene virtuelle MAC-Adresse.
  • Dadurch ist Lastverteilung zwischen den Rechnern möglich.
  • Dieses Merkmal funktioniert bisher nur unter OpenBSD sowie auf FreeBSD bis Version 9.3, userland CARP (UCARP) implementiert diese Funktion für andere Plattformen, z. B. Linux bisher nicht.

Funktionsweise

Mindestens zwei Systeme

Welche die gleiche Aufgabe erfüllen und im selben Subnetz liegen.

Diese Systeme haben jeweils eine eindeutige IP- und MAC-Adresse und 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 die anderen Slaves, wobei der Master die Kommunikation mit der Außenwelt übernimmt.
    • Über das CARP-Protokoll stellt jedes Cluster-Mitglied sicher, dass die anderen Maschinen noch arbeiten.
  • Wenn der Master ausfällt, übernimmt einer der Slaves sowohl die virtuelle MAC-Adresse als auch die virtuelle IP-Adresse
Besonders interessant ist CARP im Zusammenhang mit hochverfügbaren Firewalls.
  • Dabei ist es zusätzlich nötig, die Zustandstabellen zu synchronisieren, um Verluste von Verbindungen bei Ausfall des aktiven Cluster-Rechners zu verhindern.
  • Bei der Kombination OpenBSD/pf wird hierfür pfsync eingesetzt, unter Linux/Netfilter ist diese Funktion mit conntrackd umsetzbar.


Anhang

Siehe auch

Sicherheit

Dokumentation

Links

Projekt
Weblinks
  1. Man page-Eintrag Beschreibung der Original OpenBSD-Implementation
  2. https://ucarp.wordpress.com/
  3. Firewall Failover with pfsync and CARP (OpenBSD)