Provided by: manpages-pt_20040726-2_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 con‐
        figurá-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 sock‐
        ets 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  apa‐
        gadas  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 envia‐
        dos 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 any‐
               cast 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_reach‐
               able_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 mul‐
               ticast/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 con‐
               hecido, 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 implementa‐
        dos 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 con‐
        figuraçã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).
        ip(7)
 
        RFC826 para uma descrição do ARP.
        RFC2461 para uma descrição da descoberta de vizinhos IPv6 e os algorit‐
        mos-base usados.
        Rubens  de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fas‐
        sone Canova <lonelywolf@blv.com.br> (revisão)