Nexus 5XでIIJmioの通信が「詰まる」事象(記事1、記事2)で、改めてIIJmioにおけるDNS関連の挙動をいろいろ調べてみました。
【環境】
・IIJmio 音声SIM
・ZTE Blade Vec 4G
・アプリ「Ping & DNS」
・Google Chrome 46(Android)
【事象】
Chromeブラウザでブックマークから異なる複数のWebページを次々表示させていると、あるタイミングでページを読み込まなくなります。平日12時台など混雑時に発生することが多いですが、非混雑時にも発生する場合があります。多くの場合はしばらく待つと読み込みを開始しますが「DNS PROBE_FINISHED_NO_INTERNET」エラーページが出てしまう場合もあります。
事象発生中、Ping & DNSアプリで任意のDNS問い合わせを試みるとタイムアウトします。
DNS問い合わせ時にUDPではなくTCPを利用すると事象発生中でも正常に名前解決ができます。
Ping & DNSアプリでDNSサーバーにGoogle Public DNS(IPアドレス:8.8.8.8)を指定しても上記状況には変化がありません。
【推論】
素人の推論ですが、以下のような印象を受けます。
- UDPを用いたDNSクエリを複数回行うと一定時間DNSクエリのレスポンスがなくなる。TCPなら問題ない
- Google Public DNSでも事象が変わらないことから、問題はDNSサーバーではなくそこに到達するまでのネットワークにある
- IIJmioにはUDPの流量制御のようなものが存在して、UDPを用いたDNSクエリがそれに引っかかっている?
UDPは動画ストリーミングやVoIPといった(通信量が多い)用途に用いられることが多く、帯域単位でMNOにお金を払っているMVNOが流量制御を行っていたとしても不思議ではありません。まあ本当のところはIIJmioの中の人にしかわからないでしょうから、しょせん素人の戯言ですね。