要請ノードマルチキャストアドレスについての疑問 - Yota.log

# 要請ノードマルチキャストアドレスについての疑問

March 23, 2013

ネットワーク系のことで少し疑問に思ったことなので備忘録的な。

## 疑問点

要請ノードマルチキャストアドレスはネットワーク負荷を軽減するのか？
要請ノードマルチキャストアドレスは一意なものか？

の2点。
というわけで、説明していきます。
[]{#more-164}

## 負荷軽減？

ITproのページによると、要請ノードマルチキャストアドレスを用いることによりネットワーク負荷が軽減される、と記述されている。
これ、何と比べて負荷軽減なんだろうか。あと、どこの負荷なのか。
話の流れ的には「IPv4のブロードキャスト」と比べて「IPv6のマルチキャスト」の方が負荷軽減される、ってこと？
負荷は、ネットワーク？
そもそも、今読んでいる本では、「L2アドレス変換を行う要請ノードマルチキャストアドレスがLAN内の前端末あてにマルチキャスト送信される」ってかかれてる。
ってことは、ネットワークの負荷ではない？
つまり、「L2ブロードキャストを受け取ってしまった関係のないIPv4ノードがL3レベルでパケットを破棄する」ということと比べて「要請ノードマルチキャストを受け取ってしまった関係のないIPv6ノードがL2レベルでパケットを破棄する」ことが負荷軽減ってことかな？
まあIP以上はOSの域だしCPUリソースを若干使うとかその辺が負荷になってるのか。

ここまで予想。そのうち調べる。

## 要請ノードマルチキャストアドレスは一意なものか？

要請ノードマルチキャストアドレスの作成方法は割とシンプルで、上位104ビットがff02::1:ffとなっていて、下位24ビットがIPv6アドレスの下位24ビットと同じになるというもの。
つまり、fe80::a8bb:ccff:fedd:eeffというIPv6アドレスが存在した場合、要請ノードマルチキャストアドレスはff02::1:ffdd:eeffとなる。
ここまでは良いんだけど、疑問に思ったのは「要請ノードマルチキャストアドレスが使われるのはIPv4でいうARPのようなL2アドレス変換の際である」と書いてあるため。
L2アドレス変換を行うっていうことは、一意なアドレスを指定しないといけないってことで、IPv4のときは4オクテット全て使ってARPしていたから分かるんだけど、IPv6のこの考えでは、下位24ビットしかみていない。
それじゃあ被ることってあるんじゃないの？被った時どうすんの？っていう疑問。
例えば、fe80::a7bb:ccff:fedd:eeffとかってIPv6アドレスがあった場合、要請ノードマルチキャストアドレスは同じものになってしまう。
EUI-64の場合は、上のようにouiが違ってノードidが同じだったら起こりうるわけで。
とか考えてググってみたら「アドレス重複の検出などにも使う」ね。
ちなみにこのサイトです。
でも結局元々の問題は解決してないわけであって…。
微妙に悩んだけど、これって送信元を未指定アドレスにしてレスポンスにIPv6アドレスとL2アドレスを載せるようにしてマルチキャストしたらいいのか、って考え。
ff02::1くらいに。
ってことで、その方面で軽くぐぐってみたらここに少し書いてる。
やっぱそれであってるっぽい？

ていうかさっきのIPv6アドレスだとEUI-64なのバレバレなんでaa:bb:cc:dd:ee:ffってMACアドレスなのはすぐばれちゃうってのもある。
んー、しかしそんな変換をいちいちするよりさっきのでNS送った方がいいのかな。
ちなみに要請ノードマルチキャストアドレスはSolicited-node Multicast
Addressっていうらしい。へ〜。
そういえばこのページも見ました。

## ついでにIPv6のプライバシー問題（？）

上で少し書いてるけど、EUI-64ではIPからMACアドレスがすぐにばれます。
世界で一意のはずのMACアドレスが簡単にばれちゃうわけ。こわ。
と、いっても最近はEUI-64で通信するってことあまりないんじゃないかな〜、とか思っていろいろやってたんですが。
学科VMのCentOSを使っている人は、EUI-64になっているかも。
その辺の設定した方が安心。
Macの人は
[bash]
sysctl net.inet6.ip6.use_tempaddr
[/bash]
で確認できるみたい。
1だとオッケーらしい（？）
ちなみにちなみに、高木先生のブログに行き着いた。
結構前の話題だけど、今更ようやくv6やり始めたから…。

CentOSの人は/etc/sysctl.confに
[bash]
net.ipv6.conf.eth0.use_tempaddr = 2
net.ipv6.conf.eth0.temp_valid_lft = 86400
net.ipv6.conf.eth0.temp_prefered_lft = 3600
[/bash]
でrebootしたらいいんじゃないかと。
心配な人は確認してみてください。
ubuntuも同じ感じでいけるかも？
このページが参考になった。

と、まあこれでEUI-64からは逃れた、と。
久しぶりにRFC見たな〜。

« Previous

windowsに振り回される日々

Next »

職業体験的な