Provided by: manpages-pl_20060617-4_all bug

NAZWA

       arp - moduł ARP jądra Linuksa

OPIS

       Ten   moduł   protokołu   w   jądrze  zawiera  implementację  protokołu
       rozpoznawania adresów (ang. Address Resolution Protocol) zdefiniowanego
       w  RFC 826.   Służy on do przekształcania adresów sprzętowych warstwy 2
       na  adresy  protokołu  IPv4  w  sieciach  o  bezpośrednim   połączeniu.
       Normalnie  użytkownik  nie  korzysta  bezpośrednio  z  tego  modułu,  z
       wyjątkiem konfigurowania go; służy on innym protokołom w jądrze.

       Proces  użytkownika  może  odbierać  pakiety  ARP  za   pomocą   gniazd
       packet(7).  Istnieje także mechanizm zarządzania pamięcią podręczną ARP
       w przestrzeni użytkownika za  pomocą  gniazd  netlink(7).   Tabelą  ARP
       można  również  zarządzać  za  pomocą  ioctl(2)   lub dowolnego gniazda
       PF_INET.

       Moduł ARP zarządza  pamięcią  podręczną  odwzorowań  pomiędzy  adresami
       sprzętowymi  i  adresami  protokołu.  Pamięć  podręczna  ma ograniczony
       rozmiar, więc stare i rzadko używane wpisy są usuwane. Wpisy  oznaczone
       jako  trwałe  nie  są  nigdy usuwane podczas procesu czyszczenia. Można
       manipulować bezpośrednio tą  pamięcią  podręczną  za  pomocą  kontrolek
       wejścia/wyjścia  (ang.  ioctls)  a  jej  zachowanie  można dostrajać za
       pomocą zdefiniowanych poniżej kontrolek systemowych (ang. sysctls).

       Gdy dla istniejącego odwzorowania nie  ma  pozytywnych  odpowiedzi,  po
       pewnym  czasie  (patrz  kontrolki  systemowe  poniżej)  wpis  w pamięci
       podręcznej dla danego adresu jest uważany  za  przestarzały.  Pozytywna
       odpowiedź  może  zostać  odebrana  od wyższej warstwy; na przykład jako
       pozytywne potwierdzenie TCP.  Inne protokoły mogą sygnalizować  postępy
       w  połączeniu za pomocą znacznika MSG_CONFIRM w sendmsg(2).  Gdy nie ma
       postępów w połączeniu ARP próbuje próbkować ponownie.  Najpierw próbuje
       odpytać  o  zaktualizowany  adres MAC app_solicit razy lokalnego demona
       arp. Gdy to się nie powiedzie, a stary adres jest znany, to  dokonywane
       jest  ucast_solicit razy próbkowanie pojedyncze. Gdy to się również nie
       powiedzie, wysyłane jest w  sieć  nowe  zapytanie  rozgłoszeniowe  ARP.
       Zapytania  są wysyłane jedynie wtedy, gdy w kolejce do wysłania czekają
       jakieś dane.

       Linux automatycznie dodaje nietrwałe  wpisy  proxy  arp  po  otrzymaniu
       zapytania  dotyczącego  adresu,  dla którego są przekazywane pakiety, o
       ile dla interfejsu odbierającego dany pakiet włączono  proxy  arp.  Gdy
       dla  danego  celu ustawiona jest droga odrzucająca pakiety (ang. reject
       route), wpis proxy arp nie jest dodawany.

IOCTL

       Dla   wszystkich   gniazd   PF_INET   dostępne   są   trzy    kontrolki
       wejścia/wyjścia.   Pobierają  one  jako  parametr wskaźnik do struktury
       struct arpreq.

       struct arpreq {
           struct sockaddr arp_pa;      /* adres protokołu */
           struct sockaddr arp_ha;      /* adres sprzętowy */
           int             arp_flags;   /* znaczniki */
           struct sockaddr arp_netmask; /* maska sieci dla adresu protokołu */
           char            arp_dev[16];
       };

       SIOCSARP,  SIOCDARP  i  SIOCGARP  odpowiednio  ustawiają,   usuwają   i
       pobierają  odwzorowanie ARP.  Ustawianie i usuwanie odwzorowań ARP jest
       operacją uprzywilejowaną i może zostać wykonane jedynie przez proces  z
       ustawionym  znacznikiem  CAP_NET_ADMIN  lub  posiadający  efektywny UID
       równy 0.

       arp_pa musi być gniazdem AF_INET a arp_ha musi być tego samego typu, co
       urządzenie  podane  w  arp_dev.   arp_dev  jest zakończonym znakiem NUL
       łańcuchem stanowiącym nazwę urządzenia.

       ┌────────────────────────────────────────────┐
       │                 arp_flags                  │
       ├────────────────┬───────────────────────────┤
       │znacznik        │ znaczenie                 │
       ├────────────────┼───────────────────────────┤
       │ATF_COM         │ Zapytanie zakończone      │
       ├────────────────┼───────────────────────────┤
       │ATF_PERM        │ Wpis trwały               │
       ├────────────────┼───────────────────────────┤
       │ATF_PUBL        │ Wpis publikacji           │
       ├────────────────┼───────────────────────────┤
       │ATF_USETRAILERS │ Zażądano danych końcowych │
       ├────────────────┼───────────────────────────┤
       │ATF_NETMASK     │ Używanie maski sieci      │
       ├────────────────┼───────────────────────────┤
       │ATF_DONTPUB     │ Nie odpowiadać            │
       └────────────────┴───────────────────────────┘

       Gdy ustawiony jest znacznik ATF_NETMASK,  to  arp_netmask  powinno  być
       prawidłowe.  Linux  2.2  nie  wspiera  wpisów proxy ARP dla sieci, więc
       należy to ustawić na 0xffffffff lub 0, aby usunąć istniejący wpis  arp.
       ATF_USETRAILERS jest przestarzałe i nie powinno być używane.

SYSCTL

       ARP   wspiera  interfejs  sysctl,  pozwalający  konfigurować  parametry
       globalne lub lokalne - dla podanego interfejsu. Dostęp do tych  sysctli
       można uzyskać odczytując i zapisując pliki /proc/sys/net/ipv4/neigh/*/*
       lub używając interfejsu sysctl(2). Każdy interfejs w systemie  ma  swój
       własny  katalog  w  /proc/sys/net/ipv4/neigh/.  Ustawienia  w  katalogu
       'default' są używane dla wszystkich nowo tworzonych urządzeń. Jeśli nie
       podano  inaczej,  wszystkie  sysctl  związane  z  czasem  są podawane w
       sekundach.

       anycast_delay
              Maksymalna liczba jiffies oczekiwania  przed  odpowiedzeniem  na
              komunikat  zaproszenia  sąsiada  IPv6.  Obsługa anycast nie jest
              jeszcze zaimplementowana. Domyślnie 1 sekunda.

       app_solicit
              Maksymalna  liczba  prób  wysyłania  demonowi  ARP   przestrzeni
              użytkownika  poprzez  netlink przed przejściem do prób multicast
              (patrz mcast_solicit). Domyślnie 0.

       base_reachable_time
              Kiedy tylko sąsiad zostanie znaleziony,  wpis  jest  uważany  za
              ważny    przez    co    najmniej    losową    wartość   pomiędzy
              base_reachable_time/2 a 3*base_reachable_time/2.  Ważność  wpisu
              może  być  przedłużona,  jeżeli  otrzyma  on  takie  wskazówki z
              protokołów wyższego poziomu. Domyślnie 30 sekund.

       delay_first_probe_time
              Oczekiwanie przed pierwszą  próbą  po  tym,  jak  sąsiad  został
              uznany za niedostępny. Domyślnie 5 sekund.

       gc_interval
              Jak  często powinien się uruchamiać proces oczyszczania śmieci z
              listy wpisów o sąsiadach. Domyślnie 30 sekund.

       gc_stale_time
              Określa, jak  często  należy  sprawdzać  wpisy  o  niedostępnych
              sąsiadach.  Kiedy  sąsiad zostanie uznany za niedostępnego, jest
              on ponownie sprawdzany przed próbą  wysłania  danych  do  niego.
              Domyślnie 60 sekund.

       gc_thresh1
              Minimalna  liczba  wpisów  przechowywanych w buforze ARP. Proces
              czyszczenia  starych  wpisów  nie  uruchomi  się,  jeżeli  bufor
              zawiera mniej wpisów niż podana tutaj wartość. Domyślnie - 128.

       gc_thresh2
              Miękka maksymalna liczba wpisów trzymanych w buforze ARP. Proces
              czyszczenia śmieci pozwoli przekroczyć tę  liczbę  wpisów  na  5
              sekund przed rozpoczęciem czyszczenia. Domyślnie 512.

       gc_thresh3
              Twarda  maksymalna  liczba wpisów przechowywanych w buforze ARP.
              Proces czyszczenia  śmieci  zawsze  się  uruchomi,  jeśli  bufor
              zawiera więcej wpisów niż wynosi ta liczba. Domyślnie 1024.

       locktime
              Minimalna   liczba   jiffies,   przez   którą  wpis  ARP  będzie
              przechowywany  w  buforze.  Zabezpiecza  to  bufor   ARP   przed
              zabiciem,  jeżeli  jest  więcej  niż  jedno możliwe mapowanie (z
              powodu złej konfiguracji sieci). Domyślnie 1 sekunda.

       mcast_solicit
              Maksymalna  liczba   prób   rozwiązywania   adresu   za   pomocą
              multicast/broadcast  przed  zaznaczeniem wpisu jako niedostępny.
              Domyślnie 3.

       proxy_delay
              Kiedy otrzymano żądanie ATP dla  znanego  adresu  proxy-ARP,  to
              poczekaj proxy_delay jiffies przed wysłaniem odpowiedzi. Jest to
              używane,  aby  zapobiec  zalaniu  sieci  żądaniami   w   pewnych
              przypadkach. Domyślnie 0.8 sekundy.

       proxy_qlen
              Maksymalna  liczba  pakietów,  które  mogą  być zakolejkowane  w
              adresie proxy-ARP. Wartość domyślna to 64.

       retrans_time
              Liczba jiffies oczekiwania  przed  ponowną  transmisją  żądania.
              Domyślnie 1 sekunda.

       ucast_solicit
              Maksymalna  liczba  prób wysłania żądań unicast przed zapytaniem
              demona ARP (patrz app_solicit). Domyślnie 3.

       unres_qlen
              Maksymalna liczba pakietów, które  mogą  być  kolejkowane  przez
              inne warstwy sieci dla każdego nierozwiązanego adresu. Domyślnie
              3.

BŁĘDY

       Niektóre ustawienia timera są podawane w jednostkach  jiffy,  które  są
       zależne  od  architektury.  Dla  architektury  Alpha  jiffy  to  1/1024
       sekundy, na większości pozostałych architektur jest to 1/100s.

       Nie ma możliwości zasygnalizowania postępów w połączeniu z  przestrzeni
       użytkownika.  Oznacza  to, że protokoły połączeniowe zaimplementowane w
       przestrzeni użytkownika będą generować nadmierny ruch ARP,  gdyż  ndisc
       będzie  dokonywał  regularnego próbkowania adresów MAC. Ten sam problem
       dotyczy niektórych protokołów jądra (np. NFS-u po UDP).

       Ta strona podręcznika miesza ze sobą funkcje charakterystyczne dla IPv4
       z funkcjami wspólnymi dla IPv4 i IPv6.

WERSJE

       W  Linuksie  2.0  zmieniono  struct  arpreq,  dodając pole arp_dev oraz
       jednocześnie zmieniono numery kontrolek  wejścia/wyjścia.   W  Linuksie
       2.2 porzucono wsparcie dla starych kontrolek wejścia/wyjścia.

       W Linuksie 2.2 porzucono wsparcie dla wpisów proxy arp dla sieci (maska
       sieci inna niż 0xffffffff). Zostało ono zastąpione  przez  automatyczną
       konfigurację  proxy  arp  w jądrze dla wszystkich hostów osiągalnych na
       innych  interfejsach   (gdy   dla   danego   interfejsu   włączone   są
       przekazywanie pakietów i proxy arp).

       Kontrolki systemowe neigh/* nie istniały w Linuksie przed wersją 2.2.

ZOBACZ TAKŻE

       capabilities(7), ip(7)

       RFC826 dla opisu ARP.
       RFC2461  dla  opisu  znajdywania  sąsiadów  w  IPv6  oraz  podstawowych
       stosowanych w tym celu algorytmów.

       ARP IPv4 w Linuksie 2.2+  korzysta  z  algorytmów  IPv6,  gdy  jest  to
       możliwe.

INFORMACJE O TŁUMACZENIU

       Powyższe   tłumaczenie   pochodzi   z   nieistniejącego   już  Projektu
       Tłumaczenia Manuali i moe nie by aktualne. W razie zauważenia  różnic
       między powyższym opisem a rzeczywistym zachowaniem opisywanego programu
       lub funkcji, prosimy o zapoznanie się z oryginalną  (angielską)  wersją
       strony podręcznika.