ARP(7) | Linux Programmer's Manual | ARP(7) |
名前
arp - Linux ARP カーネルモジュール説明
このカーネルプロトコルモジュールは、 RFC 826 で定義されている Address Resolution Protocol を実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに変換するために用いられる。ユーザーは設定の場合を除いて通常直接このモジュールに関ることはない。これはカーネル内部の他のプロトコルにサービスを提供するものである。ioctl
すべての AF_INET ソケットでは、 3 つの ioctl が使用できる。これらは struct arpreq へのポインタを引数に取る。struct arpreq {
struct sockaddr arp_pa; /* protocol address */
struct sockaddr arp_ha; /* hardware address */
int arp_flags; /* flags */
struct sockaddr arp_netmask; /* netmask of protocol address */
char arp_dev[16];
};
arp_flags | |
フラグ | 意味 |
ATF_COM | 参照完了 |
ATF_PERM | エントリを peramanent にする |
ATF_PUBL | エントリを publish する |
ATF_USETRAILERS | trailer が必要 |
ATF_NETMASK | netmask を用いる |
ATF_DONTPUB | 回答しない |
ATF_NETMASK フラグがセットされているときには、 arp_netmask が有効でなければならない。 Linux 2.2 は代理ネットワーク ARP エントリをサポートしていないので、これは 0xffffffff にセットしておくか、あるいは現存の代理 arp エントリを削除したい場合には 0 にしておく必要がある。 ATF_USETRAILERS は obsolete なので、用いるべきでない。
/proc インタフェース
ARP では、グローバルなパラメータやインターフェースごとのパラメータを /proc インタフェースを通して設定することができる。これらのインタフェースには、 proc/sys/net/ipv4/neigh/*/* ファイルの読み書きによりアクセスできる。システムにあるそれぞれのインターフェースには、それぞれ対応するディレクトリが /proc/sys/net/ipv4/neigh/ 以下にある。 "default"ディレクトリに対して設定をすると、それ以降生成されるデバイス全てに対してその設定が用いられる。特に指定がなければ、時間に関る sysctl の単位は秒である。- anycast_delay (Linux 2.2 以降)
- IPv6 の近傍要請メッセージ (neighbor soliciation message) に応答するまでの最大遅延時間 (jiffy 単位)。 anycast のサポートはまだ実装されていない。デフォルトは 1 秒。
- app_solicit (Linux 2.2 以降)
- ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。これを越えるとマルチキャストによる探索に移行する ( mcast_solicit を見よ)。
- base_reachable_time (Linux 2.2 以降)
- 近傍のホストがみつかると、そのエントリは base_reachable_time/2 から 3* base_reachable_time/2 の間のランダムな値の時間、有効であるとみなされる。エントリの有効性は、高位のプロトコルからポジティブなフィードバックを受け取ると延長される。デフォルトは 30 秒。このファイルは現在は非推奨であり、代わりに base_reachable_time_ms を使うこと。
- base_reachable_time_ms (Linux 2.6.12 以降)
- base_reachable_time と同じだが、時間をミリ秒単位で測る。デフォルトは 30000 ミリ秒である。
- delay_first_probe_time (Linux 2.2 以降)
- 近傍ホストのエントリが古くなったと判断された後に最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
- gc_interval (Linux 2.2 以降)
- ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。デフォルトは 30 秒。
- gc_stale_time (Linux 2.2 以降)
- 古くなった近傍ホストエントリに対してチェックを行う頻度。近傍ホストエントリが古くなったとみなされると、そのエントリにデータを送る前には再度解決が行われる。デフォルトは 60 秒。
- gc_thresh1 (Linux 2.2 以降)
- ARP キャッシュに保存するエントリ数の最小値。この数より少ないエントリしかキャッシュになければ、ガベージ・コレクタは実行されない。デフォルトは 128。
- gc_thresh2 (Linux 2.2 以降)
- ARP キャッシュに保存されるエントリ数のソフトな最大値。キャッシュのエントリがこの数を 5 秒間越えつづけると、ガベージ・コレクタが実行される。デフォルトは 512。
- gc_thresh3 (Linux 2.2 以降)
- ARP キャッシュに保存されるエントリ数のハードな最大値。キャッシュのエントリがこの数を越えると、ガベージ・コレクタはただちに実行される。デフォルトは 1024。
- locktime (Linux 2.2 以降)
- ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス) 場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。デフォルトは 1 秒。
- mcast_solicit (Linux 2.2 以降)
- エントリを unreachable マークする前に、アドレスをマルチキャスト/ブロードキャストで解決しようとする試行回数の最大値。デフォルトは 3。
- proxy_delay (Linux 2.2 以降)
- 既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、応答前に最大 proxy_delay jiffy まで遅延する。これは場合によって生じるネットワーク・フラッディング (network flooding) を避けるために用いる。デフォルトは 0.8 秒。
- proxy_qlen (Linux 2.2 以降)
- 代理 ARP アドレスに対してキューイングできる最大のパケット数。デフォルトは 64。
- retrans_time (Linux 2.2 以降)
- リクエストを再度送るまでの遅延時間 (jiffy 単位)。デフォルトは 1 秒。このファイルは現在は非推奨であり、代わりに retrans_time_ms を使うこと。
- retrans_time_ms (Linux 2.6.12 以降)
- リクエストを再度送るまでの遅延時間 (ミリ秒単位)。デフォルトは 1000 ミリ秒。
- ucast_solicit (Linux 2.2 以降)
- ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数 ( app_solicit を見よ)。デフォルトは 3。
- unres_qlen (Linux 2.2 以降)
- 解決されていないアドレスに対して、他のネットワーク層からキューイングできる最大パケット数。デフォルトは 3。
バージョン
Linux 2.0 で、 struct arpreq に arp_dev メンバーが含まれるように変更があった。また同時に ioctl 番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。バグ
いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャやカーネルのバージョンに依存する。 time(7) を参照のこと。関連項目
capabilities(7), ip(7)RFC 826 for a description of ARP. RFC 2461 for a description of IPv6 neighbor discovery and the base algorithms used. Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable.
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2008-11-25 | Linux |