Provided by: manpages-pl_0.5-1_all 

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 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 AF_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ą
opisanych poniżej interfejsów /proc.
Gdy dla istniejącego odwzorowania nie ma pozytywnych odpowiedzi, po pewnym czasie (patrz interfejsy /proc
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.
Kontrolki systemowe (ioctl)
Dla wszystkich gniazd AF_INET dostępne są trzy kontrolki wejścia/wyjścia. Pobierają one jako argument
wskaźnik do struktury struct arpreq.
struct arpreq {
struct sockaddr arp_pa; /* adres protokołu */
struct sockaddr arp_ha; /* addres sprzętowy */
int arp_flags; /* znaczniki */
struct sockaddr arp_netmask; /* maska sieciowa 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ć adresem AF_INET, a arp_ha musi być tego samego typu, co urządzenie podane w arp_dev.
arp_dev jest zakończonym znakiem NULL ł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.
Interfejsy /proc
ARP wspiera interfejsy /proc, pozwalające konfigurować parametry globalne lub lokalne - dla podanego
interfejsu. Dostęp do tych interfejsów można uzyskać odczytując i zapisując pliki
/proc/sys/net/ipv4/neigh/*/*. 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 wartości interfejsów związanych z czasem są podawane w
sekundach.
anycast_delay (od Linuksa 2.2)
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 (od Linuksa 2.2)
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 (od Linuksa 2.2)
Kiedy tylko sąsiad zostanie znaleziony, wpis jest uważany za ważny przez co najmniej losową
wartość czasu 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.
Plik jest obecnie przestarzały, zamiast niego prosimy używać base_reachable_time_ms.
base_reachable_time_ms (od Linuksa 2.6.12)
Tak jak base_reachable_time, ale czas jest wyrażany w milisekundach. Domyślną wartością jest 30000
milisekund.
delay_first_probe_time (od Linuksa 2.2)
Oczekiwanie przed pierwszą próbą po tym, jak sąsiad został uznany za niedostępny. Domyślnie 5
sekund.
gc_interval (od Linuksa 2.2)
Jak często powinien się uruchamiać proces oczyszczania śmieci z listy wpisów o sąsiadach.
Domyślnie 30 sekund.
gc_stale_time (od Linuksa 2.2)
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 (od Linuksa 2.2)
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 (od Linuksa 2.2)
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 (od Linuksa 2.2)
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 (od Linuksa 2.2)
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 (od Linuksa 2.2)
Maksymalna liczba prób rozwiązywania adresu za pomocą multicast/broadcast przed zaznaczeniem wpisu
jako niedostępny. Domyślnie 3.
proxy_delay (od Linuksa 2.2)
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 (od Linuksa 2.2)
Maksymalna liczba pakietów, które mogą być zakolejkowane w adresie proxy-ARP. Wartość domyślna to
64.
retrans_time (od Linuksa 2.2)
Liczba jiffies oczekiwania przed ponowną transmisją żądania. Domyślnie 1 sekunda. Plik jest
obecnie przestarzały, zamiast niego prosimy używać retrans_time_ms.
retrans_time_ms (od Linuksa 2.6.12)
Liczba milisekund oczekiwania przed ponowną transmisją żądania. Domyślnie 1000 milisekund.
ucast_solicit (od Linuksa 2.2)
Maksymalna liczba prób wysłania żądań unicast przed zapytaniem demona ARP (patrz app_solicit).
Domyślnie 3.
unres_qlen (od Linuksa 2.2)
Maksymalna liczba pakietów, które mogą być kolejkowane przez inne warstwy sieci dla każdego
nierozwiązanego adresu. Domyślnie 3.
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 komputerów
osiągalnych na innych interfejsach (gdy dla danego interfejsu włączone są przekazywanie pakietów i proxy
ARP).
Interfejsy neigh/* nie istniały w Linuksie przed wersją 2.2.
BŁĘDY
Niektóre ustawienia timera są podawane w jednostkach jiffy, które są zależne od architektury i wersji
jądra; patrz także time(7).
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.
ZOBACZ TAKŻE
capabilities(7), ip(7)
RFC 826 do opisu ARP. RFC 2461 dla opisu znajdywania sąsiadów w IPv6 oraz podstawowych stosowanych w tym
celu algorytmów. ARP IPv4 w Linuksie 2.2+ używa algorytmów IPv6 tam gdzie jest to celowe.
O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.52 projektu Linux man-pages. Opis projektu oraz
informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Andrzej M. Krzysztofowicz (PTM)
<ankry@mif.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.52 oryginału.
Linux 2008-11-25 ARP(7)