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 może
       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.