Rechercher une page de manuel

Chercher une autre page de manuel:

arp

Autres langues

Langue: pl

Version: 1999\-06\-03 (ubuntu - 16/08/07)

Autres sections - même nom

Section: 7 (Divers)

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.

Génial étiré,
le parka yéti va vite.
Yak râpe le rite.

Laine génitale !
Gala en image ! Gamine
à la gélatine !

-- Rapilly, Robert