Provided by:
manpages-ja_0.5.0.0.20060115-1_all 
IOCTL
すべての PF_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];
};
SIOCSARP, SIOCDARP, SIOCGARP は、それぞれ ARP
マッピングを設定・削除・取得する。 ARP
マップの設定と削除は特権が必要な操作であり、 CAP_NET_ADMIN
権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
でなければ実行でい覆ぁ
arp_pa は AF_INET ソケットでなければならず、 arp_ha は arp_dev
で設定されたデバイスと同じタイプでなければならない。 arp_dev
はデバイスの名前を示す、ゼロで終端された文字列である。
+-----------------------------------------------+
| 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 なので、用いるべい任覆ぁ
SYSCTL
ARP では、グローバルなパラメータやインターフェースごとのパラメータを
sysctl を通して設定することがでい襦 これらの sysctl
へアクセスするには、 proc/sys/net/ipv4/neigh/*/* ファイルを読み書-
する方法と、インターフェースに対して sysctl(2) を用いる方法がある。
システムにあるそれぞれのインターフェースには、
それぞれ対応するディレクトリが /proc/sys/net/ipv4/neigh/ 以下にある。
`default' ディレクトリに対して設定をすると、
それ以降生成されるデバイス全てに対してその設定が用いられる。
特に指定がなければ、 時間に関る sysctl の単位は秒である。
anycast_delay
IPv6 の近傍要請メッセージ (neighbour soliciation message)
に応答するまでの最大遅延時間 (jiffy 単位)。 anycast
のサポートはまだ実装されていない。 デフォルトは 1 秒。
app_solicit
ユーザー空間の ARP デーモンに netlink
を用いて探索させる最大回数。 これを越えるとマルチ-
ャストによる探索に移行する (mcast_solicit を見よ)。
base_reachable_time
近傍のホストがみつかると、そのエントリは base_reachable_time/2
から 3*base_reachable_time/2 の間のランダムな値の時間、-
効であるとみなされる。 エントリの邑-
は、高位のプロトコルからポジティブなフィードバックを
受け取ると延長される。デフォルトは 30 秒。
delay_first_probe_time
近傍ホストのエントリが古くなったと判断された後に
最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
gc_interval
ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。
デフォルトは 30 秒。
gc_stale_time
古くなった近傍ホストエントリに対してチェックを行う頻度。
近傍ホストエントリが古くなったとみなされると、そのエントリに
データを送る前には再度解決が行われる。 デフォルトは 60 秒。
gc_thresh1
ARP ゥ礇奪轡紊吠歛犬垢襯┘鵐肇蠖瑤虜脳値。
この数より少ないエントリしかゥ礇奪轡紊砲覆韻譴弌
ガベージ・コレクタは実行されない。 デフォルトは 128。
gc_thresh2
ARP ゥ礇奪轡紊吠歛犬気譴襯┘鵐肇蠖瑤離愁侫箸丙蚤臙諭 -
ャッシュのエントリがこの数を 5 秒間越えつづけると、
ガベージ・コレクタが実行される。 デフォルトは 512。
gc_thresh3
ARP ゥ礇奪轡紊吠歛犬気譴襯┘鵐肇蠖瑤離蓮璽匹丙蚤臙諭 -
ャッシュのエントリがこの数を越えると、
ガベージ・コレクタはただちに実行される。 デフォルトは 1024。
locktime
ARP エントリをゥ礇奪轡紊吠歛犬垢觧間の最小値 (jiffy 単位)。
可能世里△襯泪奪團鵐阿一つ以上ある
(たいていはネットワーク設定のミス) 場合に、 ARP -
ャッシュのスラッシングが起い襪海箸鯔匹亜 デフォルトは 1 秒。
mcast_solicit
エントリを unreachable マークする前に、 アドレスをマルチ-
ャスト/ブロードゥ礇好箸撚魴茲靴茲Δ箸垢 試行回数の最大値。
デフォルトは 3。
proxy_delay
既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、
応答前に最大 proxy_delay jiffy
まで遅延する。これは場合によって生じる
ネットワーク・フラッディング (network flooding)
を避けるために用いる。 デフォルトは 0.8 秒。
proxy_qlen
代理 ARP アドレスに対してゥ紂璽ぅ鵐阿任る最大のパケット数。
デフォルトは 64。
retrans_time
リクエストを再度送るまでの遅延時間 (jiffy 単位)。 デフォルトは 1
秒。
ucast_solicit
ARP デーモンへの問い合わせを行う前に行う unicast
探索の最大試行数 (app_solicit を見よ)。デフォルトは 3。
unres_qlen
解決されていないアドレスに対して、 他のネットワーク層から-
ューイングでい觝蚤腑僖吋奪反堯 デフォルトは 3。
グ
タイマー設定に、アーゥ謄チャ依存な jiffy を用いているものがある。
Alpha では jiffy は 1/1024 秒であり、その他の多くのアーゥ謄チャでは
1/100 秒である。
ユーザー空間からポジティブなフィードバックを送る方法が存在しない。
つまり接続指向 (connection oriented) のプロトコルをユーザー空間で
実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc
は定期的に MAC アドレスを再探索するからである。
同様の問題はいくつかのカーネルプロトコル (NFS over UDP など)
にも存在する。
この man ページでは IPv4 特佑竜’修 IPv4・IPv6 で共-
される機能とがごっちゃになっている。
ン
Linux 2.0 で、 struct arpreq に arp_dev
メンバーが含まれるように変更があった。また同時に ioctl
番号も変更された。古い ioctl は Linux 2.2 で用いることがでい覆なった。
ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない)
は、 Linux 2.2 で用いることがでい覆なった。
これはカーネルによって設定される、別のインターフェースにおける
到達可能なすべてのホストに対する自動代理 arp によって置ご垢┐蕕譴
(そのインターフェースでフォワーディングと代理 arp が-
効になっている場合)。
各 neigh/* sysctl は Linux 2.2 以前には存在しない。
目
capabilities(7), ip(7)
RFC 826: ARP に関する説明
RFC 2461: IPv6 neighbour discovery に関する説明と、
利用されている基礎アルゴリズム
Linux 2.2 以降の IPv4 ARP は、 可能な場合は IPv6
のアルゴリズムを用いる。