2007/06/19

注意!IPマルチキャストに関して訂正・本編

2008.11.3(月):注意!この記事の内容も正しくありませんでした。訂正記事を掲載しました。
注意!IPマルチキャストに関して訂正』で予告した、以下の記事に関する訂正です。
[1] 『IPマルチキャストを使う
[2] 『IPマルチキャストを使う・補足・VLANと
端的に言うと、ntpdのIPマルチキャストを使ってIPマルチキャスト通信の検証を行っていたので、ntpd固有の問題とIPマルチキャスト一般の問題を混同してしまったのが間違いの原因です。

記事[1]の中で当初、
IPマルチキャストを使用する場合、そのホストが持っているネットワークインターフェースの内、どのインターフェースの先にIPマルチキャストネットワークが存在しているかを指定しなければならない。
と書いていました。これは実際には誤りで、何も指定していなければどのインターフェースにもIPマルチキャストネットワークが存在するものと理解しているはずです。ただ、IPマルチキャストアドレスに対する経路を明示的に設定することができる、というだけのことです。

ただし、ntpdに関しては事情が違います。Ntpdは、その認証機構がIPアドレスと結びついているため、マルチキャストパケットを送信する際に、送信元となる自分自身のIPアドレスをntpd自身が明示的に知る必要があります。そのため、IPマルチキャスト用のソケット(socket)を取得する際、そのIPマルチキャストアドレス(通常なら224.0.1.1)で経路情報(routing table)を引き、得られたネットワークインターフェースのIPアドレスを送信元IPアドレスとするようです。
これは、マルチキャストクライアントの場合も同様のようです。つまり、listenするIPマルチキャストアドレス(通常なら224.0.1.1)で経路情報を引いて得られたネットワークインターフェースからのみ、NTPマルチキャストパケットを受け取ります。

このntpdの動作は、Linux機にネットワークインターフェースが一つしかない場合には問題になりません。なぜなら、既定経路(default route)が存在していれば、それは必ず唯一のネットワークインターフェースに結びついているからです。

0 件のコメント: