Provided by: manpages-pt_20040726-5_all bug

NOME

       arp - módulo de kernel para ARP em Linux.

DESCRIÇÃO

       Este  módulo  de protocolo de kernel implementa o Protocolo de Resolução de Endereços (Address Resolution
       Protocol) definido na RFC 826.  Ele é usado para converter o  endereço  de  hardware  da  camada  2  para
       endereços  do  protocolo  IPv4  em  redes  diretamente  conectadas.   Normalmente  o usuário não interage
       diretamente com este módulo, exceto para configurá-lo; em vez disso, ele provê  um  serviço  para  outros
       protocolos no kernel.

       Um  processo  de usuário pode receber pacotes ARP através do uso de sockets do tipo packet(7).  Há também
       um mecanisco de gerenciamento do cache ARP no espaço de usuário,  através  do  uso  de  sockets  do  tipo
       netlink(7).  A tabela ARP também pode ser controlada via ioctl (2) ou qualquer socket do tipo PF_INET

       O  módulo  ARP matém um cache de mapeamento entre endereços de hardware e endereços de protocolo. O cache
       tem um tamanho limitado pois há uma "coleta de lixo" entre entradas  mais  antigas  e  usadas  com  menos
       freqüência.  Entradas  que são marcadas como permanentes nunca são apagadas pelo coletor de lixo. O cache
       pode ser manipulado diretamente pelo uso de ioctls, e seu comportamento pode ser ajustado  pelos  sysctls
       definidos abaixo.

       Quando  não  há  feedback positiva para um mapeamento existente depois de um certo tempo (veja os sysctls
       abaixo), uma entrada de cache vizinha é considerada travada.  Para enviar dados para o destino novamente,
       o ARP primeiro tenta pedir ao daemon arp local um endereço MAC  atualizado  por  app_solicit  vezes.   Se
       falhar,  e  um  endereço  MAC  antigo  é conhecido, um teste de unicast é enviado ucast_solicit vezes. Se
       falhar também, ele fará um broadcast de um novo pedido de ARP na rede. Pedidos são enviados apenas quando
       há dado enfileirado para envio.

       O Linux acrescentará automaticamete uma entrada não permanente de arp proxy quando receber um  pedido  de
       um  endereço  para encaminhamento, e o arp proxy é habilitado na interface de recepção. Quando houver uma
       rota rejeitada para o destino, nenhuma entrada de arp proxy é acrescentada.

IOCTLS

       Esses ioctls são disponíveis em todos os sockets PF_INET Eles pegam um ponteiro  para  um  struct  arpreq
       como parâmetro.

       struct arpreq
       {
           struct sockaddr arp_pa;      /* endereço de protocolo */
           struct sockaddr arp_ha;      /* endereço de hardware */
           int             arp_flags;   /* flags */
           struct sockaddr arp_netmask; /* máscara de rede do endereço de protocolo */
           char            arp_dev[16];
       };

       SIOCSARP,  SIOCDARP  e  SIOCGARP respectivamente seta, deleta e obtém um mapeamento ARP.  Setar e deletar
       mapas ARP são operações privilegiadas e só podem ser  realizadas  por  um  processo  com  a  capabilidade
       CAP_NET_ADMIN ou com um UID efetivo igual a 0.

       arp_pa  deve  ser  um  socket  AF_INET  e  arp_ha deve ter o mesmo tipo que o dispositivo especificado em
       arp_dev.  arp_dev é uma string terminada em zero que nomeia um dispositivo.

       ┌───────────────────────────────────────────┐
       │                 arp_flags                 │
       ├─────────────────┬─────────────────────────┤
       │ flag            │ significado             │
       ├─────────────────┼─────────────────────────┤
       │ ATF_COM         │ Busca completada        │
       ├─────────────────┼─────────────────────────┤
       │ ATF_PERM        │ Mantém entrada          │
       ├─────────────────┼─────────────────────────┤
       │ ATF_PUBL        │ Publica entrada         │
       ├─────────────────┼─────────────────────────┤
       │ ATF_USETRAILERS │ Trailers requeridos     │
       ├─────────────────┼─────────────────────────┤
       │ ATF_NETMASK     │ Usa uma máscara de rede │
       ├─────────────────┼─────────────────────────┤
       │ ATF_DONTPUB     │ Não responde            │
       └─────────────────┴─────────────────────────┘

       Se o flag ATF_NETMASK é selecionado, então arp_netmask deveria ser  válido.   O  Linux  2.2  não  suporta
       entradas  entradas  ARP  de  rede  proxy, então deveria ser setado para 0xffffffff, ou 0 para remover uma
       entrada de proxy arp existente.  ATF_USETRAILERS é obsoleto e não deveria ser usado.

SYSCTLS

       O ARP suporta uma interface de sysctl para configurar parâmetros em uma base global ou por interface.  Os
       sysctls podem ser acessados por leitura ou escrita dos arquivos  /proc/sys/net/ipv4/neigh/*/*  ou  com  a
       interface  sysctl(2)  /proc/sys/net/ipv4/neigh/.  A configuração no diretório `default' é usada por todos
       os dispositivos recém-criados.  A menos que se especifique o contrário, sysctls relacionados a tempo  são
       especificados em segundos.

       anycast_delay
              O  número  máximo  de  jiffies  para atraso antes de uma resposta a uma mensagem de solicitação de
              vizinhança IPv6.  Suporte a anycast ainda não foi implementado.  O padrão é 1 segundo.

       app_solicit
              O número máximo de testes para envio ao daemon ARP do espaço de usuário,  via  netlink,  antes  de
              voltar aos testes de multicast (veja mcast_solicit).  O padrão é 0.

       base_reachable_time
              Uma  vez  que  um  vizinho  foi encontrado, a entrada é considerada válida pelo menos por um valor
              aleatório entre base_reachable_time/2 e 3*base_reachable_time/2.  Uma validação  da  entrada  será
              estendida  se  ele  receber  feedback positivo de protocolos de nível mais alto.  O padrão é de 30
              segundos.

       delay_first_probe_time
              Atraso antes do primeiro teste, depois que ele decidiu que um vizinho está travado.  O padrão é de
              5 segundos.

       gc_interval
              Quão freqüentemente o coletor de lixo para entradas vizinhas deveria tentar rodar.  O padrão é  de
              30 segundos.

       gc_stale_time
              Determina  a  freqüência  da  checagem  por  entradas de vizinhos travados.  Quando uma entrada de
              vizinho é considerada travada, é resolvido novamente antes de enviar dados para ele.  O  padrão  é
              de 60 segundos.

       gc_thresh1
              O número mínimo de entradas a serem mantidas no cache ARP.  O coletor de lixo não rodará se houver
              menos do que este número de entradas no cache.  O padrão é de 128.

       gc_thresh2
              O  número  máximo  flexível de entradas a serem mantidas no cache ARP. O coletor de lixo permitirá
              que o número de entradas exceda este número por 5 segundos antes que a coleta seja  realizada.   O
              padrão é de 512.

       gc_thresh3
              O  número máximo rígido de entradas a serem mantidas no cache ARP. O coletor de lixo sempre rodará
              se houver mais que este número de entradas no cache.  O padrão é de 1024.

       locktime
              O número mínimo de jiffies a manter uma entrada ARP no cache. Isto previne o esmagamento do  cache
              ARP  se  houver mais que um mapeamento potencial (geralmente devido a desconfiguração de rede).  O
              padrão é de 1 segundo.

       mcast_solicit
              O número máximo de tentativas para resolver um endereço por multicast/broadcast antes de marcar  a
              entrada como não alcançável.  O padrão é de 3.

       proxy_delay
              Quando é recebido um pedido ARP de um endereço proxy-ARP conhecido, atrasa até proxy_delay jiffies
              antes  de  responder.  Isto é usado para prevenir flooding (enxurrada) na rede em alguns casos.  O
              padrão é de 0.8 segundos.

       proxy_qlen
              O número máximo de pacotes que podem ser enfileirados em endereços proxy-ARP.  O padrão é de 64.

       retrans_time
              O número de jiffies de atraso antes de se retransmitir um pedido.  O padrão é de 1 segundo.

       ucast_solicit
              O número máximo de tentativas de enviar testes de unicast antes de perguntar ao daemon  ARP  (veja
              app_solicit).  O padrão é 3.

       unres_qlen
              O  número máximo de pacotes que podem ser enfileirados para cada endereço não resolvido por outras
              camadas da rede.  O padrão é de 3.

PROBLEMAS

       Algumas configurações de temporização são específicos em jiffies, que são relacionados com a arquitetura.
       No Alpha, um jiffy é 1/1024 segundo, em muitas outras arquiteturas é 1/100s.

       Não há maneira de sinalizar feedback  positivo  a  partir  do  espaço  do  usuário.  Isto  significa  que
       protocolos  orientados  a  conexão  implementados  no espaço de usuário gerarão um tráfego ARP excessivo,
       porque ndisc retestará regularmente o endereço MAC.  O mesmo problema se aplica para a  implementação  do
       NFS no kernel.

       Esta página de manual busca tanto a funcionalidade específica para IPv4 quanto a compartilhada entre IPv4
       e IPv6.

VERSÕES

       O  struct  arpreq mudou no Linux 2.0 para incluir o membro arp_dev e os números de ioctl mudaram ao mesmo
       tempo.  O suporte aos ioctls antigos foi tirado do Linux 2.2.

       O suporte a entradas de arp proxy para redes (máscara de rede diferente de 0xffffffff) foi  eliminado  no
       Linux  2.2.  Ele  é substituído pela configuração automática pelo kernel do arp proxy para todos os hosts
       alcancáveis em outras interfaces (quando o repasse e o arp proxy estiverem habilitados para a interface).

VEJA TAMBÉM

       ip(7)

       RFC826 para uma descrição do ARP.
       RFC2461 para uma descrição da descoberta de vizinhos IPv6 e os algoritmos-base usados.

TRADUZIDO POR LDP-BR em 21/08/2000.

       Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fassone Canova  <lonelywolf@blv.com.br>
       (revisão)

Página do Manual do Linux                           3/06/1999                                             ARP(7)