ひかりTV IPv6問題 再発

ひかりTVのIPv6問題とは言っても、最も影響の大きい無線機器は別経路になっているので、特に性能問題が起きると言う訳ではない。ひかりTVのマルチキャスト放送波はMLDスヌーピングの機能があれば専用チューナー(ST-3200)のみに送られる事になる。うちの場合は、根元のブロードバンドルータと中継するスイッチ(EHB-SG2A08)がMLDスヌーピングに対応しており、マルチキャストが他のノードに溢れる事はない。が、今までもEHB-SG2A08のIPアドレスを変更したりすると、何故か放送波が届かなくなったりと不穏な兆候はあった。設定し直すと回復するので、だましだまし使っていたのだが、マルチセッション障害の対応でブロードバンドルータがPR-400NEに変更となってから、ひかりTVの放送波がまったくチューナーに届かなくなってしまった。

切り分けのために、EHB-SG2A08スイッチのアップリンクを直接ST-3200チューナーに繋いでみる。これで2FにあるPR-400NEルータとST-3200を直結している格好になり、放送波は受けられるようになった。やはり中継するEHB-SG2A08が何か悪さをしている可能性が高い。次にEHB-SG2A08で中継した上でMLDスヌーピングの設定を消してみると、これでも放送波を受ける事が出来た。どうやらEHB-SG2A08のMLDスヌーピングが悪さをしているようだ。久々に公式サイトでマニュアルを見てみてるとMLDスヌーピングの説明欄に『※EHB-SG2A08、EHB-SG2A08-PLにはこの機能はありません』との注意書き。。。こんな仕様以前からあったかな。明らかにMLDスヌーピングらしき動作はしていたにもかかわらず、それが存在しないという説明に変わってしまったので公式サポートは期待出来なくなってしまった。

以前と比べて、宅内のlinuxノードが増えたので、この際詳しく動作を調べてみる。利用したのは先日購入したZBOX AD11の2台で、これをEHB-SG2A08配下と上流側に設置。これだけ気軽に配置換えが出来るlinuxノードが存在すると、ネットワーク調査が捗る。PR-400NE、EHB-SG2A08、AD11間でIPv6の通信状態を確認する。ルータがIPv6のpingに対応したのも改めてありがたい。しかし、linuxノードたちはIPV6 pingによるNeighbor Solicitation(NS)が流れても反応しない事がある。問題のノードでtcpdumpをしているとNeighbor Advertisement(NA)を返してくれる。つまりpromiscuous modeだとNSに反応するが、そうでないと反応しない。ぐぐってみると『multicast_snooping』という設定値がある事に気付く。この設定を無効にしてやれば、NSに反応するようになった。これで準備OK。

echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

まずはMLDスヌーピングを停止した状態から。ST-3200チューナーを再起動すると、ST-3200からrouter solicitation(RS)がマルチキャストされ、PR-400NEがrouter advertisement(RA)を返してネットワークが確立。ST-3200はIPv6アドレスをもらえて放送波を受けられる。これらのDHCPv6通信は上流でも下流でも確認する事が出来た。続いてMLDスヌーピングを有効にしてST-3200を再起動してみる。今度はRAどころかRSすら周りのノードにはまったく聞こえない。どうやらEHB-SG2A08のMLDスヌーピングがRSを潰してしまっているようだ。RSのマルチキャストが通らなければ、当然ST-3200はIPv6アドレスをもらう事ができず、ひかりTV放送波を受ける事が出来ない。

EHB-SG2A08の設定を変えた訳ではないので、この問題は以前から存在していたはず。以前のルータ(PR-S300SE)では何故うまくいっていたのか。自分のメモを見返すと、ST-3200が明示的にIPv6アドレスをもらえてから、MLDスヌーピングの設定を入れる順序になっている。逆に言えば、IPv6アドレスをもらう前にMLDスヌーピングを設定すると動作しなかったのだろう。一度アドレスをもらえれば、その後はチューナーを何度再起動しても問題なく放送波を受けられるし、MLDスヌーピングも正しく動作する。しかし、今度のルータはその再起動が許されない。既に以前のルータがなくなってしまったので、具体的な違いを確認する事は出来なかった。

EHB-SG2A08の問題は、MLDスヌーピング有効時にRAやRSを流すマルチキャストアドレス(ff02::1,ff02::2)までブロックしてしまうこと。MLDスヌーピングそのものは動作しているように見える。RAとRSを何とか通せば通信を確立できそうだが、マルチセッション障害でも薄氷の上に成り立つネットワーク体系で痛い目に遭ったので、大人しく諦めることに。マニュアルにもサポートしないと明記されてしまったし。MLDスヌーピングできないと死ぬって訳でもないんだけど、ここまできたら何とかしたい。改めてMLDスヌーピングをサポートしてそうなスイッチを探してみる。具体的な実績を示すような記述は見つからないが、値段も手頃なBuffaloの『BS-GS2008』を試してみる。ダメだったらヤフオクで売ればいいし、というのが最近の考え方。積極的に人柱w

スイッチとしての通常動作を確認後、公式からビジネススイッチ設定ツールというのをダウンロード。windows8.1用しか置いてなかったが、windows10でも動作した。このツールでIPを設定し、そのIPに対してブラウザからアクセス。詳細設定>MLD>設定でMLDスヌーピングを有効化。ひかりTVのマルチキャスト放送波を受けてみると、しばらくしたら対象ノードのみに絞られた。MLDスヌーピングはOK。今度は以前のスイッチで問題だったST-3200再起動を試してみる。これも問題なし。うおおお、正しく動作するスイッチって素晴らしい!まあ、最初から動いたらIPv6とかまるで勉強しなかったから複雑な気持ちだけどw

3 replies on “ひかりTV IPv6問題 再発”

  1. TAXI より:

    初めまして。
    ひかりTVの無線LANの問題で、検索していたら、こちらのブログにたどり着きました。
    お忙しいところ、失礼します。
    もし差し支えなければ教えて欲しいのですが、当方も、IPv6のやりとりで、同じような障害が出ており、無線LANルータ下流に、チューナーとタブレットなどの機器を接続し、同じネットワークに入れると、チューナーに帯域が潰され、他の機器が通信できません。こちらは、ひかり電話の契約がないため、NTTからは、ルータ機能なしの、ONUが提供されており、その先に無線LANのルータをつなげてネットワークを構築しています。その場合、ONU直下に別途MLD Snooping対応のルータを入れることで、筆者さまのように問題が解決できるのでしょうか?

    • aqua より:

      TAXI様
      お考えの通りの構成で問題を回避できると思います。
      MLDスヌーピングに対応したネットワーク機器の直下に、
      無線LANアクセスポイントとひかりTVチューナーを設置すれば、
      IPv6マルチキャストによるフラッディングを防げるはずです。

      ルータが無線LANを兼ねる場合は、ルータそのものが
      MLDスヌーピングに対応する必要があると思います。
      ルータと無線LANアクセスポイントを分けるなら、
      配下にMLDスヌーピング対応のスイッチングハブを挟んで、
      その直下に無線LANアクセスポイントとひかりTVチューナー
      を繋ぐ形も取れます。

      ご参考になれば幸いです。

  2. TAXI より:

    aqua様
    丁寧なご解説、どうもありがとうございました。
    ルーターとスイッチのことで混乱していまいち理解できていなかったものて、どのような機器を揃えるべきか、困っておりました。これで、迷いなく準備できそうです。助かりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)