プロバイダがOCNで、YouTubeがなぜか遅くて悩んでいた人はDNSを変えてみるといいかも

自分がまさにそうなんだけど、OCNで、YouTubeが異様に遅かった。どんくらい遅いかというと、中程度の画質の動画でも満足にロードされなくて、再生の途中でロードが足りずに待たされる感じ。高画質の動画はしばらく待たないと見れないし、いくら待ってもロードが進まないこともあった。

これに関して、今までは調べもせずにうちのマンションのせいだとか、YouTube側が遅いせいだとか思ってたけど、試しにググってみたら意外なことがわかり、解決した。

Google Public DNS

GoogleがやってるPublic DNSというのがあって、IPアドレス「8.8.8.8」と「8.8.4.4」をDNSとして使うと、Webの閲覧が速くなるかもよ、という感じのもの。

で、OCNでYouTubeが遅い人は、OCNが用意している(DHCPで割り当てられる)DNSではなく、こっちに変えれば解決するよ、という話が、ググったらたくさん見つかった。

マジで?マジだった

普通に考えれば、DNSを変えたら名前解決は速くなるかも知れないけど、動画のダウンロードが速くなるようなものではない。YouTubeのサーバーにつながるまでの時間が短縮されるだけで、つながってから速くなるものではないでしょ。プロキシじゃないんだから。

でも実際やってみたら、ホントに速くなった。何度も設定を戻したり変えたりして調べたけど、GoogleDNSを使った方が速い。信じがたいけど事実だった。

なんで?

DNSを変えて通信速度が変わることがあるの?と普通に疑問だったけど、これも調べてたらなんとなくわかった。

YouTubeはあまりに巨大。世界中にユーザーがいて、世界中にサーバーがある。だから、みんなが自分から近いところのサーバーにつないで動画を受信すると、効率が良いので、そうなるようにできてる。この仕組みにDNSが一枚噛んでて、おそらく同じホスト名の配信サーバーなんだけどDNSで問い合わせる場所によって違ったIPを返すようになってるんだと思う。Akamaiみたいな感じ。推測だけど。

そんな中、なぜかOCNが提供するDNSは、このYouTubeの配信サーバーに関して、遠い外国のサーバーのIPを返す(古い情報をキャッシュしたままなのかな?)。だから、わざわざ遠くから動画を受信することになってしまい、遅い。

別にGoogleのじゃなくてもいいと思うけど、最新の日本(または日本から近い国)のYouTubeサーバーのIPアドレスを返してくれるDNSを使えば、スイスイと動画を受信できるわけだ。すごいね!

やり方

うちの環境でのやり方しか知らないけど一応。Bフレッツマンションタイプなので、PPPoEをするわけだけど、うちはルータを使ってる。だからルータの設定のDNSのところに、8.8.8.8と8.8.4.4を設定しただけ。家のPCやらiPhoneやらは何もしなくてもいい(各マシンがDHCPになってれば、ルータのIPアドレスDNSの欄に入ってるでしょ。それならそのままでOK)。

最高だ。

2010-9-6 追記

このやり方でOCNにおけるYouTubeは確かに速くなるんだけど、今度はAkamaiCDNが配信してるコンテンツの受信が遅くなった気がする。。。まだちゃんと調べてないけど。

Akamaiの仕組みは、今回のYouTubeのやり方とだいたい同じで、DNSの問い合わせを元に近所のサーバーのIPアドレスを返すようにしているらしい。完全になんの根拠もない推測だけど、たまたまYouTubeGoogleが運営しているから、GoogleDNSに問い合わせるだけで近所のサーバーのIPを教えてもらえただけで、AkamaiだとかGoogle以外の同様の仕組みに対しては、日本からGoogleDNSを使って問い合わせるのはマズいかも知れない。つまり、GoogleDNSが、Akamaiなどの他社のネームサーバーに問い合わせを回した場合、問い合わせを受けた側としてはGoogleDNSからの通信ってことになるから、少なくとも日本からのアクセスにとってはあまり有利でないIPが返っちゃうのかなーということ。わかんないけどね。

じゃあどうすりゃいいんだ。OCNのDNSがちゃんと近所のIPを返してくれればいいんだけど。