たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

Pingの応答から通信距離を推定してみる(太平洋横断編)

(前回の記事の補足と更新があります)

はじめに

以下の記事を読んでいて気になる箇所がありました。 jp.quora.com

これは小学生の知識でも説明できます。光は1秒間に地球を約7周半するのですよね。日本ブラジル間はだいたい地球半周の距離です。仮に一切のボトルネックなく通信が光の速さで一直線に進んでも、60 × 0.5/7.5 = 4フレームの遅延が発生することがわかると思います。

光ファイバーで通信する場合、光は真空中と同じ速さ(3x108 m/s)で通信できるでしょうか? 物質中を通過するので、もう少し遅いような気もします。
また、気になる画像をインターネットで見つけました。
「電脳格技メフィストワルツ」で「光速は俺らには遅すぎる」という名言が出たそうですが、本当に真空中の光速で通信しているのでしょうか。
疑問に思ったので今回はその検証をしてみたいともい思います。

情報の伝わる速さについて調べる

インターネットの世界においては、「通信速度」という言葉はたいていの場合、bpsという単位を使います。これは1秒間にどれだけの量の送れるかを表す単位です。私が疑問に思ったのは「秒速何キロで情報が送られているのか?」 という点です。この私が疑問に思っている速度についてググってみると、群速度とか位相速度というようです。(大学物理で習った気がする...) また、この値はケーブルの規格の満たすべき性能の指標の一つ「最大伝搬遅延」として基準が決められていることが分かりました。

ネットで調べた情報を元に、各通信経路ごとの速度はだいたい以下のようになりました。

ケーブルカテゴリ 真空中の光速に対する割合 %
Cat-7 74-79
Cat-6A 65
Cat-5e 65
Cat-3 58.5

もっと真空中の光速に近いものだと想像していたのですが、65%ほど、1.95x108 m/s くらいしか速度が出てないようです。意外でした。
一方で、海底ケーブルに使われる光ファイバーの群速度についてNTT技術資料館に問い合わせたところ、2.0x108 m/s 真空中の光の速さの約66%とのことでした。 Cat5e ケーブルと光ファイバーケーブルの伝搬速度がほぼおなじなようです。

伝搬速度を検証する

ここまで来て疑問に思ったのですが、インターネットは本当にこの伝搬速度で通信している(できる)のでしょうか? 自宅でいつも使っているPCとルータまででは検証が難しそうです。 1mのlanケーブルを5マイクロ秒で伝搬するので、コンピューターの時刻精度では測定が難しいでしょう。

通信するサーバが遠くはなれていて、サーバの設置場所が分かり、且つ距離が正確に分からなければなりません。
ここで、クラウドサービスと海底ケーブルに目を付けました。 サーバの場所と、距離がおおよそわかります。 また、クラウド事業者の提供する各リージョンは太い回線網で接続され、安定したネットワーク環境が提供されています。
今回はGCPの東京、オハイオ、ロサンゼルスリージョンで実験してみました。
submarinecablemap.comによれば、東京-オハイオ間、東京-ロサンゼルス間はGoogleが出資する海底ケーブルが敷かれており、それぞれおおよその長さが公表されています。

ネットの情報によると、東京-オレゴン間は、おおよそ9000km、東京-ロサンゼルス間は9620kmの長さがあります。

検証環境を構築する

構築するといっても簡単です。 GCPの東京、オレゴン、ロサンゼルの各スリージョンにインスタンスを起動します。
インスタンスの設定は以下で設定しました。

マシンタイプ: e2-medium
NICタイプ: gVNIC
OS: Ubuntu 22.04.1 LTS

時間を測定するプロトコルはICMPを対象とします。HTTPリクエストでは接続の確立が必要で、その間の時間ロスが考えられます。 ICMPはセッションの確立を必要としないこと、またパケットキャプチャが比較的簡単にできるので選定しました。もう一つの理由は、遠く離れた2台のサーバをミリ秒単位まで正確に時刻同期をしようとすると非常に難しいので、往復時間の計測の方が簡単だからです。
今回はICMPの応答を正確に計るためにPingコマンドではなく、Go言語でプログラムを作成しました。 複数回Pingを送信し、その平均をとります。
GitHub - TTY6335/go_icmp_message

検証

検証といっても、各サーバでプログラムを実行するだけです。 東京リージョンからロサンゼルスリージョンへ、

ロサンゼルスリージョンでは、ICMPの受信時刻と応答の送信時刻を記録します。 計測したTTLからサーバが応答に要した時間を引いた時間の平均をとります。

結果

東京-オレゴンリージョン間

応答時間 ms 計算された往復距離 km 海底ケーブルの往復距離 km
91.05879 18211.76 18000

東京-ロサンゼルスリージョン間

応答時間 ms 計算された往復距離 km 海底ケーブルの往復距離 km
100.405 20081.06 19240

所感

ICMPの応答時間から導出した距離が、海底ケーブルの距離とかなり近い値となり非常に驚きました。 また、実験を通して、TTLが非常に安定しておりネットワーク環境の良さも実感しました。

参考文献

ネットワークの世界における遅延とは - Apposite Technologies
15.3. time — Time access and conversions — Python 2.7.18 documentation
Velocity factor - Wikipedia
https://home.jeita.or.jp/is/seminar/110210_igcs/pdf/2.pdf
グローバルインフラストラクチャネットワーク
Submarine Cable Map
日米間を結ぶ光海底ケーブル「FASTER」を運用開始 | 2016年 | KDDI株式会社
日本~米国間光海底ケーブル「Unity」の運用開始について | 2010年 | KDDI株式会社