Loading

NOM

       arp - Module ARP du noyau Linux

       Ce  module du noyau implémente le protocole de résolution d’adresse ARP
       tel qu’il est décrit dans le document RFC 826. Il sert à la  conversion
       entre les adresses matérielles de niveau 2 et les adresses du protocole
       IPv4 sur les réseaux connectés en direct. L’utilisateur n’a normalement
       pas  d’interactions avec ce module sauf pour le configurer. En fait, ce
       module fournit des services aux autres protocoles du noyau.

       Un processus utilisateur peut recevoir les paquets ARP en utilisant les
       sockets  de  type  packet(7).  Il  y a aussi un mécanisme pour gérer le
       cache ARP dans l’espace utilisateur avec  des  sockets  netlink(7).  La
       table  ARP peut être contrôlée par le biais d’un ioctl(2) sur n’importe
       quelle socket AF_INET.

       Le module ARP maintient un cache des correspondances entre les adresses
       matérielles  et  les  adresses logiques. Le cache a une taille limitée,
       ainsi  les  entrées  anciennes  et  utilisées  moins  fréquemment  sont
       récupérées.  Les  entrées  qui  sont marquées comme permanentes ne sont
       jamais  effacées.  Le  cache  peut  être   manipulé   directement   par
       l’intermédiaire  des  ioctls  et  son  comportement  peut être ajusté à
       l’aide des interfaces /proc décrites plus bas.

       Lorsqu’il n’y a pas de retour positif pour une correspondance existante
       après un certain temps (voir les interfaces /proc ci-dessous), l’entrée
       est considérée comme gelée. Un retour positif  peut  être  obtenu  d’un
       niveau  supérieur,  par  exemple un ACK TCP réussi. D’autres protocoles
       peuvent signaler des avancées en utilisant  l’attribut  MSG_CONFIRM  de
       sendmsg(2).  Pour  envoyer  à  nouveau des données à cette cible, l’ARP
       essaye d’abord d’interroger un démon arp local au  maximum  app_solicit
       fois,  afin d’obtenir une adresse MAC à jour. Si ceci échoue, et si une
       ancienne adresse MAC est connue,  une  tentative  unicast  est  envoyée
       ucast_solicit  fois. Si on échoue encore, il enverra une requête ARP en
       broadcast sur le réseau. Les requêtes ne sont envoyées que s’il y a des
       données en attente d’émission.

       Linux  ajoutera  automatiquement  une  entrée  arp proxy non permanente
       lorsqu’il reçoit une requête pour une adresse à laquelle il envoie  des
       données,  si le proxy arp est validé sur l’interface réceptrice. Aucune
       entrée n’est ajoutée s’il y a une route de rejet pour la cible.

   Ioctls
       Trois ioctls sont disponibles pour les sockets AF_INET. Elles  prennent
       un pointeur sur une struct arpreq comme paramètre.

           struct arpreq {
               struct sockaddr arp_pa;      /* adresse protocole */
               struct sockaddr arp_ha;      /* adresse matérielle */
               int             arp_flags;   /* attributs */
               struct sockaddr arp_netmask; /* masque réseau du protocole */
               char            arp_dev[16];
           };

       SIOCSARP,   SIOCDARP   et   SIOCGARP   ajoute,  supprime,  et  consulte
       respectivement une correspondance ARP. L’ajout  et  la  suppression  de
       correspondance  ARP  sont  des  opérations privilégiées ne pouvant être
       réalisées que par un processus avec la capacité CAP_NET_ADMIN ou un UID
       effectif nul.

       arp_pa  doit  être  une socket AF_INET et arp_ha doit être du même type
       que le périphérique  indiqué  dans  arp_dev.  arp_dev  est  une  chaîne
       terminée par un caractère nul, contenant le nom d’un périphérique.

              +--------------------------------------------+
              |                 arp_flags                  |
              +----------------+---------------------------+
              |attribut        | signification             |
              +----------------+---------------------------+
              |ATF_COM         | Recherche complète        |
              +----------------+---------------------------+
              |ATF_PERM        | Entrée permanente         |
              +----------------+---------------------------+
              |ATF_PUBL        | Entrée publique           |
              +----------------+---------------------------+
              |ATF_USETRAILERS | Demande trailer           |
              +----------------+---------------------------+
              |ATF_NETMASK     | Utiliser le masque réseau |
              +----------------+---------------------------+
              |ATF_DONTPUB     | Ne pas répondre           |
              +----------------+---------------------------+

       Si  l’attribut ATF_NETMASK est activé, alors le membre arp_netmask doit
       être valide. Linux 2.2 ne supporte pas les entrées  ARP  proxy  réseau.
       Ainsi,  il  doit être configuré avec 0xFFFFFFFF ou 0 pour supprimer une
       entrée arp proxy existante. ATF_USETRAILERS est obsolète et ne doit pas
       être utilisé.

   Interfaces /proc
       ARP supporte une série d’interface /proc pour configurer les paramètres
       sur une base globale ou interface par interface.  Les  interfaces  sont
       accessibles    en   lisant   ou   en   écrivant   dans   les   fichiers
       /proc/sys/net/ipv4/neigh/*/*. Chaque interface dans le  système  a  son
       propre répertoire dans /proc/sys/net/ipv4/neigh/. La configuration dans
       le répertoire « default » sert pour tous  les  nouveaux  périphériques.
       Sauf mention contraire, les durées sont en secondes.

       anycast_delay (depuis Linux 2.2)
              Le  nombre  maximum de jiffies à attendre avant de répondre à un
              message de sollicitation IPv6 du voisinage. Le  support  Anycast
              n’est pas encore implémenté. Par défaut, le délai est 1 seconde.

       app_solicit (depuis Linux 2.2)
              Le nombre maximum d’essai  d’envoi  au  démon  ARP  de  l’espace
              utilisateur   par   netlink  avant  de  basculer  en  tentatives
              multicast (voir mcast_solicit). La valeur par défaut est 0.

       base_reachable_time (depuis Linux 2.2)
              Une fois qu’un voisin a  été  trouvé,  l’entrée  est  considérée
              comme  valide  pendant,  au  moins,  une  durée  aléatoire entre
              base_reachable_time/2 et  3*base_reachable_time/2.  La  validité
              d’une  entrée  sera  étendue  si on reçoit un retour positif des
              protocoles de plus haut niveau. La  valeur  par  défaut  est  30
              secondes.  Ce  fichier  est  maintenant obsolète et remplacé par
              base_reachable_time_ms.

       base_reachable_time_ms (depuis Linux 2.6.12)
              Comme pour base_reachable_time, mais  le  temps  est  mesuré  en
              millisecondes. La valeur par défaut est 30000 millisecondes.

       delay_first_probe_time (depuis Linux 2.2)
              Délai  avant  la première tentative multicast après avoir décidé
              qu’un voisin est gelé. La valeur par défaut est 5 secondes.

       gc_interval (depuis Linux 2.2)
              Fréquence avec laquelle  on  vérifie  les  entrées  valides.  La
              valeur par défaut est 30 secondes.

       gc_stale_time (depuis Linux 2.2)
              Fréquence  avec  laquelle  on  vérifie  une  entrée de voisinage
              gelée. Lorsqu’une correspondance  est  considérée  comme  gelée,
              elle  sera à nouveau redéterminée avant d’y envoyer des données.
              La valeur par défaut est 60 secondes.

       gc_thresh1 (depuis Linux 2.2)
              Le nombre minimal d’entrées à conserver dans le  cache  ARP.  Le
              récupérateur  ne sera pas déclenché s’il y a moins d’entrées que
              cette valeur. La valeur par défaut est 128.

       gc_thresh2 (depuis Linux 2.2)
              La limite maximale souple d’entrées à conserver  dans  le  cache
              ARP.  Le  récupérateur autorisera un dépassement de cette valeur
              pendant 5 secondes avant de lancer une  véritable  récupération.
              La valeur par défaut est 512 entrées.

       gc_thresh3 (depuis Linux 2.2)
              La  limite  maximale d’entrées à conserver dans le cache ARP. Le
              récupérateur sera immédiatement déclenché si  cette  valeur  est
              dépassée. La valeur par défaut est 1024.

       locktime (depuis Linux 2.2)
              Le  nombre  minimum  de jiffies pendant lesquels on conserve une
              entrée ARP dans le cache. Ceci évite  la  dégradation  du  cache
              s’il  y  a  plusieurs  correspondances possibles (généralement à
              cause d’une mauvaise configuration du  réseau).  La  valeur  par
              défaut est 1 seconde.

       mcast_solicit (depuis Linux 2.2)
              Le  nombre maximal de tentatives de résolution d’une adresse par
              le multicast et le broadcast avant  de  marquer  l’entrée  comme
              inaccessible. La valeur par défaut est 3.

       proxy_delay (depuis Linux 2.2)
              Lorsqu’une  requête arrive pour une adresse proxy-ARP, on attend
              proxy_delay jiffies avant de répondre. Ceci permet d’éviter  des
              saturations  du  réseau  dans certains cas. La valeur par défaut
              est 0,8 secondes.

       proxy_qlen (depuis Linux 2.2)
              Le nombre maximal de paquets qui peuvent être conservés pour des
              adresses proxy-ARP. La valeur par défaut est 64.

       retrans_time (depuis Linux 2.2)
              Le  nombre  de  jiffies  à  attendre  avant de retransmettre une
              requête. La valeur par défaut est  1  seconde.  Ce  fichier  est
              maintenant obsolète et remplacé par retrans_time_ms.

       retrans_time_ms (depuis Linux 2.6.12)
              Le nombre de millisecondes à attendre avant de retransmettre une
              requête. La valeur par défaut est 1000 millisecondes.

       ucast_solicit (depuis Linux 2.2)
              Le  nombre  maximal  de   tentatives   d’envoi   unicast   avant
              d’interroger  le  démon  ARP  (voir  app_solicit). La valeur par
              défaut est 3.

       unres_qlen (depuis Linux 2.2)
              Le nombre maximal de paquets conservés pour chaque  adresse  non
              résolue  par les autres couches réseau. La valeur par défaut est
              3.

VERSIONS

       La structure arpreq a changé dans Linux  2.0  pour  inclure  le  membre
       arp_dev  et  les  numéros  d’ioctl ont changé en même temps. Le support
       pour les anciens ioctl a été abandonné dans Linux 2.2.

       Le support pour les entrées proxy ARP concernant des  réseaux  (netmask
       différent  de  0xFFFFFFF)  a été supprimé de Linux 2.2. Il est remplacé
       par une configuration proxy ARP automatique dans le noyau pour tous les
       hôtes  accessibles  sur  les  autres  interfaces  (lorsque l’on fait du
       forwarding et que le proxy ARP est activé sur l’interface).

       Les interfaces neigh/* n’existaient pas avant Linux 2.2.

BOGUES

       Certaines temporisations sont exprimées en jiffies,  qui  dépendent  de
       l’architecture et de la version du noyau ; voir time(7).

       Il  n’y  a  pas  de  moyen  d’envoyer  une réponse positive de l’espace
       utilisateur.  Ceci  signifie  que  les  protocoles  orientés  connexion
       implémentés  dans  l’espace  utilisateur  engendreront  un  trafic  ARP
       excessif, car ndisc revérifiera régulièrement les adresses MAC. Le même
       problème se pose pour certains protocoles du noyau (par exemple NFS sur
       UDP).

       Cette  page  de  manuel  mélange   les   spécificités   IPv4   et   les
       fonctionnalités communes à IPv4 et IPv6.

VOIR AUSSI

       capabilities(7), ip(7)

       RFC 826 pour une description de l’ARP.
       RFC 2461 pour une description de l’exploration du voisinage IPv6 et des
       algorithmes de base employés.

       L’ARP IPv4 de Linux 2.2 et ultérieurs emploie l’algorithme IPv6 lorsque
       c’est possible.

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».