2 .\" This man page is Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>.
3 .\" %%%LICENSE_START(VERBATIM_ONE_PARA)
4 .\" Permission is granted to distribute possibly modified copies
5 .\" of this page provided the header is included verbatim,
6 .\" and in case of nontrivial modification author and date
7 .\" of the modification is added to the header.
10 .\" Modified June 1999 Andi Kleen
11 .\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
13 .\"*******************************************************************
15 .\" This file was generated with po4a. Translate the source file.
17 .\"*******************************************************************
19 .\" Japanese Version Copyright (c) 1999-2001 NAKANO Takeo all rights reserved.
20 .\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
21 .\" Updated & Modified 2001-02-16, NAKANO Takeo
22 .\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14
24 .TH ARP 7 2008\-11\-25 Linux "Linux Programmer's Manual"
26 arp \- Linux ARP カーネルモジュール
28 このカーネルプロトコルモジュールは、 RFC\ 826 で定義されている Address Resolution Protocol を
29 実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、 第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに
30 変換するために用いられる。ユーザーは設定の場合を除いて 通常直接このモジュールに関ることはない。
31 これはカーネル内部の他のプロトコルにサービスを提供するものである。
33 ユーザープロセスは、 \fBpacket\fP(7) ソケットを用いれば ARP パケットを受信することができる。 ARP
34 キャッシュをユーザー空間で管理することもできる。 これには \fBnetlink\fP(7) を用いる。 ARP テーブルも制御可能で、これには任意の
35 \fBAF_INET\fP ソケットに \fBioctl\fP(2) を用いる。
37 ARP モジュールはハードウェアアドレスからプロトコルアドレスへの マッピングのキャッシュを管理する。キャッシュの大きさには制限が
38 あるので、古いエントリや利用されないエントリはガベージコレクト される。 permanent (保存) マークがつけられたエントリは、
39 決してガベージコレクタによって消去されない。 ioctl を用いればキャッシュを直接操作することもできる。 また後述の \fI/proc\fP
40 インタフェースによりキャッシュの振る舞いを調整できる。
42 存在しているマッピングに対して、 正のフィードバックが一定時間ない (後述の \fI/proc\fP インタフェースを見よ) と、 近傍キャッシュエントリ
43 (neighbor cache entry) は 古くなった (stale) とみなされる。 正のフィードバックは高位のレイヤーからも取得できる
44 (例えば TCP ACK が成功した場合など)。 他のプロトコルは、 \fBsendmsg\fP(2) に \fBMSG_CONFIRM\fP
45 フラグを用いることによって、 フォワードプログレス (forward progress) をシグナルできる。 フォワードプログレスがなければ、 ARP
46 は再びプローブを試みる。 まずローカルな arp デーモンに問合わせを行い、 更新された MAC アドレスを取得しようとする。 このリクエストに
47 \fBapp_solicit\fP 回失敗すると、古い MAC アドレスがわかっている場合は、 unicast のプローブが
48 \fBucaset_solicit\fP 回送られる。これにも失敗すると、新しい ARP リクエスト をネットワークにブロードキャストする。
49 リクエストは、データが送信キューにある場合のみ送られる。
51 Linux は、あるアドレスへのリクエストを受信・フォワードし、 受信したインターフェースで代理 arp が有効になっている場合には、
52 自動的にそのアドレスを nonpermanent な代理 arp エントリに追加する。 そのターゲットに reject route があった場合には、
55 すべての \fBAF_INET\fP ソケットでは、 3 つの ioctl が使用できる。 これらは \fIstruct arpreq\fP
61 struct sockaddr arp_pa; /* protocol address */
62 struct sockaddr arp_ha; /* hardware address */
63 int arp_flags; /* flags */
64 struct sockaddr arp_netmask; /* netmask of protocol address */
70 \fBSIOCSARP\fP, \fBSIOCDARP\fP, \fBSIOCGARP\fP は、それぞれ ARP マッピングを設定・削除・取得する。 ARP
71 マップの設定と削除は特権が必要な操作であり、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
74 \fIarp_pa\fP は \fBAF_INET\fP アドレスでなければならず、 \fIarp_ha\fP は \fIarp_dev\fP
75 で設定されたデバイスと同じタイプでなければならない。 \fIarp_dev\fP はデバイスの名前を示す、ゼロで終端された文字列である。
84 ATF_PERM:エントリを peramanent にする
85 ATF_PUBL:エントリを publish する
86 ATF_USETRAILERS:trailer が必要
87 ATF_NETMASK:netmask を用いる
92 \fBATF_NETMASK\fP フラグがセットされているときには、 \fIarp_netmask\fP が有効でなければならない。 Linux 2.2
93 は代理ネットワーク ARP エントリをサポートしていないので、 これは 0xffffffff にセットしておくか、あるいは 現存の代理 arp
94 エントリを削除したい場合には 0 にしておく必要がある。 \fBATF_USETRAILERS\fP は obsolete なので、用いるべきでない。
96 ARP では、グローバルなパラメータやインターフェースごとのパラメータを \fI/proc\fP インタフェースを通して設定することができる。
97 これらのインタフェースには、 \fIproc/sys/net/ipv4/neigh/*/*\fP ファイルの読み書きによりアクセスできる。
98 システムにあるそれぞれのインターフェースには、 それぞれ対応するディレクトリが \fI/proc/sys/net/ipv4/neigh/\fP 以下にある。
99 "default" ディレクトリに対して設定をすると、 それ以降生成されるデバイス全てに対してその設定が用いられる。 特に指定がなければ、時間に関る
102 \fIanycast_delay\fP (Linux 2.2 以降)
103 .\" Precisely: 2.1.79
104 IPv6 の近傍要請メッセージ (neighbor soliciation message) に応答するまでの最大遅延時間 (jiffy 単位)。
105 anycast のサポートはまだ実装されていない。 デフォルトは 1 秒。
107 \fIapp_solicit\fP (Linux 2.2 以降)
108 .\" Precisely: 2.1.79
109 ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。 これを越えるとマルチキャストによる探索に移行する
110 (\fImcast_solicit\fP を見よ)。
112 \fIbase_reachable_time\fP (Linux 2.2 以降)
113 .\" Precisely: 2.1.79
114 近傍のホストがみつかると、そのエントリは \fIbase_reachable_time\fP/2 から 3*\fIbase_reachable_time\fP/2
115 の間のランダムな値の時間、有効であるとみなされる。 エントリの有効性は、高位のプロトコルからポジティブなフィードバックを
116 受け取ると延長される。デフォルトは 30 秒。 このファイルは現在は非推奨であり、代わりに \fIbase_reachable_time_ms\fP
119 \fIbase_reachable_time_ms\fP (Linux 2.6.12 以降)
120 \fIbase_reachable_time\fP と同じだが、時間をミリ秒単位で測る。 デフォルトは 30000 ミリ秒である。
122 \fIdelay_first_probe_time\fP (Linux 2.2 以降)
123 .\" Precisely: 2.1.79
124 近傍ホストのエントリが古くなったと判断された後に 最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
126 \fIgc_interval\fP (Linux 2.2 以降)
127 .\" Precisely: 2.1.79
128 ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。 デフォルトは 30 秒。
130 \fIgc_stale_time\fP (Linux 2.2 以降)
131 .\" Precisely: 2.1.79
132 古くなった近傍ホストエントリに対してチェックを行う頻度。 近傍ホストエントリが古くなったとみなされると、そのエントリに
133 データを送る前には再度解決が行われる。 デフォルトは 60 秒。
135 \fIgc_thresh1\fP (Linux 2.2 以降)
136 .\" Precisely: 2.1.79
137 ARP キャッシュに保存するエントリ数の最小値。 この数より少ないエントリしかキャッシュになければ、 ガベージ・コレクタは実行されない。 デフォルトは
140 \fIgc_thresh2\fP (Linux 2.2 以降)
141 .\" Precisely: 2.1.79
142 ARP キャッシュに保存されるエントリ数のソフトな最大値。 キャッシュのエントリがこの数を 5 秒間越えつづけると、 ガベージ・コレクタが実行される。
145 \fIgc_thresh3\fP (Linux 2.2 以降)
146 .\" Precisely: 2.1.79
147 ARP キャッシュに保存されるエントリ数のハードな最大値。 キャッシュのエントリがこの数を越えると、 ガベージ・コレクタはただちに実行される。
150 \fIlocktime\fP (Linux 2.2 以降)
151 .\" Precisely: 2.1.79
152 ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。 可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス)
153 場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。 デフォルトは 1 秒。
155 \fImcast_solicit\fP (Linux 2.2 以降)
156 .\" Precisely: 2.1.79
157 エントリを unreachable マークする前に、 アドレスをマルチキャスト/ブロードキャストで解決しようとする 試行回数の最大値。 デフォルトは
160 \fIproxy_delay\fP (Linux 2.2 以降)
161 .\" Precisely: 2.1.79
162 既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、 応答前に最大 \fIproxy_delay\fP jiffy
163 まで遅延する。これは場合によって生じる ネットワーク・フラッディング (network flooding) を避けるために用いる。 デフォルトは 0.8
166 \fIproxy_qlen\fP (Linux 2.2 以降)
167 .\" Precisely: 2.1.79
168 代理 ARP アドレスに対してキューイングできる最大のパケット数。 デフォルトは 64。
170 \fIretrans_time\fP (Linux 2.2 以降)
171 .\" Precisely: 2.1.79
172 リクエストを再度送るまでの遅延時間 (jiffy 単位)。 デフォルトは 1 秒。 このファイルは現在は非推奨であり、代わりに
173 \fIretrans_time_ms\fP を使うこと。
175 \fIretrans_time_ms\fP (Linux 2.6.12 以降)
176 リクエストを再度送るまでの遅延時間 (ミリ秒単位)。 デフォルトは 1000 ミリ秒。
178 \fIucast_solicit\fP (Linux 2.2 以降)
179 .\" Precisely: 2.1.79
180 ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数 (\fIapp_solicit\fP を見よ)。デフォルトは 3。
182 \fIunres_qlen\fP (Linux 2.2 以降)
183 .\" Precisely: 2.1.79
184 解決されていないアドレスに対して、 他のネットワーク層からキューイングできる最大パケット数。 デフォルトは 3。
186 Linux 2.0 で、 \fIstruct arpreq\fP に \fIarp_dev\fP メンバーが含まれるように変更があった。また同時に ioctl
187 番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。
189 ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない) は、 Linux 2.2
190 で用いることができなくなった。 これはカーネルによって設定される、別のインターフェースにおける 到達可能なすべてのホストに対する自動代理 arp
191 によって置き換えられた (そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。
193 \fIneigh/*\fP の各インタフェースは Linux 2.2 以前には存在しない。
195 いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャやカーネルのバージョンに依存する。 \fBtime\fP(7)
198 ユーザー空間からポジティブなフィードバックを送る方法が存在しない。 つまり接続指向 (connection\-oriented)
199 のプロトコルをユーザー空間で 実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc は定期的に MAC
200 アドレスを再探索するからである。 同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。
202 この man ページでは IPv4 特有の機能と IPv4・IPv6 で共有される機能とがごっちゃになっている。
204 \fBcapabilities\fP(7), \fBip\fP(7)
206 RFC \ 826: ARP の説明。 RFC\ 2461: IPv6 neighbor discovery の説明と利用されている基礎アルゴリズム。
207 Linux 2.2 以降では IPv4 ARP は可能な場合は IPv6 アルゴリズムを使っている。
209 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
210 である。プロジェクトの説明とバグ報告に関する情報は
211 http://www.kernel.org/doc/man\-pages/ に書かれている。