OSDN Git Service

d92e07fde7522bb8ec33c3be42cc2c216ad6902b
[linuxjm/LDP_man-pages.git] / draft / man7 / arp.7
1 .\" t
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.
8 .\" %%%LICENSE_END
9 .\"
10 .\" Modified June 1999 Andi Kleen
11 .\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
12 .\"
13 .\"*******************************************************************
14 .\"
15 .\" This file was generated with po4a. Translate the source file.
16 .\"
17 .\"*******************************************************************
18 .TH ARP 7 2008\-11\-25 Linux "Linux Programmer's Manual"
19 .SH 名前
20 arp \- Linux ARP カーネルモジュール
21 .SH 説明
22 このカーネルプロトコルモジュールは、 RFC\ 826 で定義されている Address Resolution Protocol を
23 実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、 第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに
24 変換するために用いられる。ユーザーは設定の場合を除いて 通常直接このモジュールに関ることはない。
25 これはカーネル内部の他のプロトコルにサービスを提供するものである。
26
27 ユーザープロセスは、 \fBpacket\fP(7)  ソケットを用いれば ARP パケットを受信することができる。 ARP
28 キャッシュをユーザー空間で管理することもできる。 これには \fBnetlink\fP(7)  を用いる。 ARP テーブルも制御可能で、これには任意の
29 \fBAF_INET\fP ソケットに \fBioctl\fP(2)  を用いる。
30
31 ARP モジュールはハードウェアアドレスからプロトコルアドレスへの マッピングのキャッシュを管理する。キャッシュの大きさには制限が
32 あるので、古いエントリや利用されないエントリはガベージコレクト される。 permanent (保存) マークがつけられたエントリは、
33 決してガベージコレクタによって消去されない。 ioctl を用いればキャッシュを直接操作することもできる。 また後述の \fI/proc\fP
34 インタフェースによりキャッシュの振る舞いを調整できる。
35
36 存在しているマッピングに対して、 正のフィードバックが一定時間ない (後述の \fI/proc\fP インタフェースを見よ) と、 近傍キャッシュエントリ
37 (neighbor cache entry) は 古くなった (stale) とみなされる。 正のフィードバックは高位のレイヤーからも取得できる
38 (例えば TCP ACK が成功した場合など)。 他のプロトコルは、 \fBsendmsg\fP(2)  に \fBMSG_CONFIRM\fP
39 フラグを用いることによって、 フォワードプログレス (forward progress) をシグナルできる。 フォワードプログレスがなければ、 ARP
40 は再びプローブを試みる。 まずローカルな arp デーモンに問合わせを行い、 更新された MAC アドレスを取得しようとする。 このリクエストに
41 \fBapp_solicit\fP 回失敗すると、古い MAC アドレスがわかっている場合は、 unicast のプローブが
42 \fBucaset_solicit\fP 回送られる。これにも失敗すると、新しい ARP リクエスト をネットワークにブロードキャストする。
43 リクエストは、データが送信キューにある場合のみ送られる。
44
45 Linux は、あるアドレスへのリクエストを受信・フォワードし、 受信したインターフェースで代理 arp が有効になっている場合には、
46 自動的にそのアドレスを nonpermanent な代理 arp エントリに追加する。 そのターゲットに reject route があった場合には、
47 代理 arp エントリは一切追加されない。
48 .SS ioctl
49 すべての \fBAF_INET\fP ソケットでは、 3 つの ioctl が使用できる。 これらは \fIstruct arpreq\fP
50 へのポインタを引数に取る。
51
52 .in +4n
53 .nf
54 struct arpreq {
55     struct sockaddr arp_pa;      /* protocol address */
56     struct sockaddr arp_ha;      /* hardware address */
57     int             arp_flags;   /* flags */
58     struct sockaddr arp_netmask; /* netmask of protocol address */
59     char            arp_dev[16];
60 };
61 .fi
62 .in
63
64 \fBSIOCSARP\fP, \fBSIOCDARP\fP, \fBSIOCGARP\fP は、それぞれ ARP マッピングを設定・削除・取得する。 ARP
65 マップの設定と削除は特権が必要な操作であり、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
66 でなければ実行できない。
67
68 \fIarp_pa\fP は \fBAF_INET\fP アドレスでなければならず、 \fIarp_ha\fP は \fIarp_dev\fP
69 で設定されたデバイスと同じタイプでなければならない。 \fIarp_dev\fP はデバイスの名前を示す、ゼロで終端された文字列である。
70 .RS
71 .TS
72 tab(:) allbox;
73 c s
74 l l.
75 \fIarp_flags\fP
76 フラグ:意味
77 ATF_COM:参照完了
78 ATF_PERM:エントリを peramanent にする
79 ATF_PUBL:エントリを publish する
80 ATF_USETRAILERS:trailer が必要
81 ATF_NETMASK:netmask を用いる
82 ATF_DONTPUB:回答しない
83 .TE
84 .RE
85 .PP
86 \fBATF_NETMASK\fP フラグがセットされているときには、 \fIarp_netmask\fP が有効でなければならない。 Linux 2.2
87 は代理ネットワーク ARP エントリをサポートしていないので、 これは 0xffffffff にセットしておくか、あるいは 現存の代理 arp
88 エントリを削除したい場合には 0 にしておく必要がある。 \fBATF_USETRAILERS\fP は obsolete なので、用いるべきでない。
89 .SS "/proc インタフェース"
90 ARP では、グローバルなパラメータやインターフェースごとのパラメータを \fI/proc\fP インタフェースを通して設定することができる。
91 これらのインタフェースには、 \fIproc/sys/net/ipv4/neigh/*/*\fP ファイルの読み書きによりアクセスできる。
92 システムにあるそれぞれのインターフェースには、 それぞれ対応するディレクトリが \fI/proc/sys/net/ipv4/neigh/\fP 以下にある。
93 "default" ディレクトリに対して設定をすると、 それ以降生成されるデバイス全てに対してその設定が用いられる。 特に指定がなければ、時間に関る
94 sysctl の単位は秒である。
95 .TP 
96 \fIanycast_delay\fP (Linux 2.2 以降)
97 .\" Precisely: 2.1.79
98 IPv6 の近傍要請メッセージ (neighbor soliciation message)  に応答するまでの最大遅延時間 (jiffy 単位)。
99 anycast のサポートはまだ実装されていない。 デフォルトは 1 秒。
100 .TP 
101 \fIapp_solicit\fP (Linux 2.2 以降)
102 .\" Precisely: 2.1.79
103 ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。 これを越えるとマルチキャストによる探索に移行する
104 (\fImcast_solicit\fP を見よ)。
105 .TP 
106 \fIbase_reachable_time\fP (Linux 2.2 以降)
107 .\" Precisely: 2.1.79
108 近傍のホストがみつかると、そのエントリは \fIbase_reachable_time\fP/2 から 3*\fIbase_reachable_time\fP/2
109 の間のランダムな値の時間、有効であるとみなされる。 エントリの有効性は、高位のプロトコルからポジティブなフィードバックを
110 受け取ると延長される。デフォルトは 30 秒。 このファイルは現在は非推奨であり、代わりに \fIbase_reachable_time_ms\fP
111 を使うこと。
112 .TP 
113 \fIbase_reachable_time_ms\fP (Linux 2.6.12 以降)
114 \fIbase_reachable_time\fP と同じだが、時間をミリ秒単位で測る。 デフォルトは 30000 ミリ秒である。
115 .TP 
116 \fIdelay_first_probe_time\fP (Linux 2.2 以降)
117 .\" Precisely: 2.1.79
118 近傍ホストのエントリが古くなったと判断された後に 最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
119 .TP 
120 \fIgc_interval\fP (Linux 2.2 以降)
121 .\" Precisely: 2.1.79
122 ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。 デフォルトは 30 秒。
123 .TP 
124 \fIgc_stale_time\fP (Linux 2.2 以降)
125 .\" Precisely: 2.1.79
126 古くなった近傍ホストエントリに対してチェックを行う頻度。 近傍ホストエントリが古くなったとみなされると、そのエントリに
127 データを送る前には再度解決が行われる。 デフォルトは 60 秒。
128 .TP 
129 \fIgc_thresh1\fP (Linux 2.2 以降)
130 .\" Precisely: 2.1.79
131 ARP キャッシュに保存するエントリ数の最小値。 この数より少ないエントリしかキャッシュになければ、 ガベージ・コレクタは実行されない。 デフォルトは
132 128。
133 .TP 
134 \fIgc_thresh2\fP (Linux 2.2 以降)
135 .\" Precisely: 2.1.79
136 ARP キャッシュに保存されるエントリ数のソフトな最大値。 キャッシュのエントリがこの数を 5 秒間越えつづけると、 ガベージ・コレクタが実行される。
137 デフォルトは 512。
138 .TP 
139 \fIgc_thresh3\fP (Linux 2.2 以降)
140 .\" Precisely: 2.1.79
141 ARP キャッシュに保存されるエントリ数のハードな最大値。 キャッシュのエントリがこの数を越えると、 ガベージ・コレクタはただちに実行される。
142 デフォルトは 1024。
143 .TP 
144 \fIlocktime\fP (Linux 2.2 以降)
145 .\" Precisely: 2.1.79
146 ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。 可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス)
147 場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。 デフォルトは 1 秒。
148 .TP 
149 \fImcast_solicit\fP (Linux 2.2 以降)
150 .\" Precisely: 2.1.79
151 エントリを unreachable マークする前に、 アドレスをマルチキャスト/ブロードキャストで解決しようとする 試行回数の最大値。 デフォルトは
152 3。
153 .TP 
154 \fIproxy_delay\fP (Linux 2.2 以降)
155 .\" Precisely: 2.1.79
156 既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、 応答前に最大 \fIproxy_delay\fP jiffy
157 まで遅延する。これは場合によって生じる ネットワーク・フラッディング (network flooding) を避けるために用いる。 デフォルトは 0.8
158 秒。
159 .TP 
160 \fIproxy_qlen\fP (Linux 2.2 以降)
161 .\" Precisely: 2.1.79
162 代理 ARP アドレスに対してキューイングできる最大のパケット数。 デフォルトは 64。
163 .TP 
164 \fIretrans_time\fP (Linux 2.2 以降)
165 .\" Precisely: 2.1.79
166 リクエストを再度送るまでの遅延時間 (jiffy 単位)。 デフォルトは 1 秒。 このファイルは現在は非推奨であり、代わりに
167 \fIretrans_time_ms\fP を使うこと。
168 .TP 
169 \fIretrans_time_ms\fP (Linux 2.6.12 以降)
170 リクエストを再度送るまでの遅延時間 (ミリ秒単位)。 デフォルトは 1000 ミリ秒。
171 .TP 
172 \fIucast_solicit\fP (Linux 2.2 以降)
173 .\" Precisely: 2.1.79
174 ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数 (\fIapp_solicit\fP を見よ)。デフォルトは 3。
175 .TP 
176 \fIunres_qlen\fP (Linux 2.2 以降)
177 .\" Precisely: 2.1.79
178 解決されていないアドレスに対して、 他のネットワーク層からキューイングできる最大パケット数。 デフォルトは 3。
179 .SH バージョン
180 Linux 2.0 で、 \fIstruct arpreq\fP に \fIarp_dev\fP メンバーが含まれるように変更があった。また同時に ioctl
181 番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。
182
183 ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない)  は、 Linux 2.2
184 で用いることができなくなった。 これはカーネルによって設定される、別のインターフェースにおける 到達可能なすべてのホストに対する自動代理 arp
185 によって置き換えられた (そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。
186
187 \fIneigh/*\fP の各インタフェースは Linux 2.2 以前には存在しない。
188 .SH バグ
189 いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャやカーネルのバージョンに依存する。 \fBtime\fP(7)
190 を参照のこと。
191
192 ユーザー空間からポジティブなフィードバックを送る方法が存在しない。 つまり接続指向 (connection\-oriented)
193 のプロトコルをユーザー空間で 実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc は定期的に MAC
194 アドレスを再探索するからである。 同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。
195
196 この man ページでは IPv4 特有の機能と IPv4・IPv6 で共有される機能とがごっちゃになっている。
197 .SH 関連項目
198 \fBcapabilities\fP(7), \fBip\fP(7)
199 .PP
200 RFC \ 826: ARP の説明。 RFC\ 2461: IPv6 neighbor discovery の説明と利用されている基礎アルゴリズム。
201 Linux 2.2 以降では IPv4 ARP は可能な場合は IPv6 アルゴリズムを使っている。
202 .SH この文書について
203 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
204 である。プロジェクトの説明とバグ報告に関する情報は
205 http://www.kernel.org/doc/man\-pages/ に書かれている。