Provided by: manpages-pt_20040726-4_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)