Présentation de CARP

Adrien Kunysz

Qu'est-ce que CARP ?

  • Common Address Redundancy Protocol
  • partage d'une même adresse MAC entre plusieurs machines
  • créé par les gens d'OpenBSD comme alternative à VRRP

quelques mots sur ARP

  • Address Resolution Protocol
  • lie une adresse IP à une adresse MAC

fonctionnement de CARP

  • chaque groupe CARP est associé à une adresse MAC virtuelle et comprend un maître et un ou plusieurs esclaves
  • le maître possède l'adresse MAC du groupe et multicast un message annonçant qu'il est actif
  • lorsque l'esclave constate que le maître n'envoit plus rien il devient maître
  • possibilité de régler le délais entre les annonces pour chaque hôte
  • les annonces CARP sont signés avec un HMAC SHA1 (secret partagé)

répartition de charge

  • on crée autant de groupes CARP qu'il y a d'hôtes participants
  • on choisi des délais d'annonces de telle manière qu'il y ait un maître préférentiel différent pour chaque groupe
  • l'adresse MAC qui est à l'origine de la requète détermine le groupe CARP concerné et donc l'hôte qui répondra
  • fonctionne uniquement si le client est sur le même segment réseau

applications

  • serveurs
    • DNS
    • WINS
    • ...
  • routeurs et firewalls

réplication

  • comme chaque requète peut aller à un serveur/routeur différent, il faut que les données sur les serveurs/routeurs restent synchronisées
  • DNS: c'est fait "naturellement"
  • Samba WINS: wrepld (expérimental?)
  • routeurs/firewall:
    • OpenBSD: pfsync
    • Linux: High Availability Linux Firewall (ct_sync)

implémentation actuelles

  • OpenBSD (kernel) par Michael Shalayeff et Ryan McBride
  • UCARP (userland pour Unix) par Frank Denis (basé sur l'implémentation OBSD)
  • FreeBSD (kernel) par Max Laier (basé sur l'implémentation OBSD)

alternatives

  • Hot Standby Router Protocol et Virtual Router Redundancy Protocol
    • créés et brevetés par Cisco
    • pas de support d'IPv6
    • pas sécurisé
    • uniquement pour les routeurs
    • standardisé dans les RFC 2281 et 3768
  • Gateway Load Balancing Protocol
    • créé par Cisco
    • protocoles propriétaires
    • uniquement pour les routeurs