- ユーザーの パケットがインターネットを通ってウェブサイトのサーバーに到達する経路 をリアルタイムで可視化したインタラクティブページ
- 自作の traceroute プログラム「ktr」 が ICMP パケットの TTL 値を活用して各ネットワークホップの情報を収集
- ウェブサイトは JavaScript なしでも動作し、サーバーが traceroute の結果をストリーミング形式で HTML に反映
- 経路分析には WHOIS・PeeringDB データ を用いて、各 IP が属する 自律システム(AS) と企業情報を表示
- traceroute と BGP ベースのインターネット構造 を組み合わせ、インターネットが企業間の ピアリング関係で構成されたネットワークの集合 であることを示す
あなたのパケットがたどった旅
- ページ上部の traceroute は、ユーザーのコンピューターからサーバーまでの パケット移動経路 を示している
- ルーター、ISP、Amazon、NTT Global IP Network、Hetzner などのネットワークを順番に通過
- 一部区間は「(no response)」と表示されるが、これは応答しないサーバーがあるため
- Hetzner ネットワーク内部では複数のルーターを経由して最終サーバーに到達
- IP アドレス
213.239.252.10 は 逆引き DNS 参照 によって core0.fra.hetzner.com と表示される
Behind the Scenes
- ウェブサイトはユーザーのリクエストを受けると サーバー上で traceroute を実行 し、結果をリアルタイムで送信
- traceroute は ICMP プロトコル を使い、TTL(Time To Live)値を 1 ずつ増やしながら各ホップの応答を収集
- TTL が 0 になると該当ルーターがエラーメッセージを返し、これによって パケットが通過した経路を追跡 する
ktr は traceroute の結果をストリーミングしながら、各ホップの IP・ASN・所有ネットワーク情報 も同時に照会
Frontend Fun
- JavaScript なしでも動作し、ブラウザーには単に ゆっくり読み込まれるページ のように見える
- サーバーは HTTP 接続を維持したまま traceroute の結果を順次 HTML に挿入
- 各更新ごとに CSS ブロックを挿入して前の結果を隠す方式 でリアルタイム更新の効果を実現
Front to Back, Back to Front
- 実際には サーバーからユーザーの IP に向けて traceroute を実行 し、その結果を 逆順で表示 している
- これは「reverse traceroute」であり、双方向の経路が完全に同一ではないものの おおむね似た経路 を示す
ネットワークと自律システム(AS)
- インターネットは 自律システム(Autonomous System, AS) と呼ばれる 企業単位のネットワーク同士の接続網 で成り立っている
- 各 AS は固有の ASN(Autonomous System Number) を持ち、相互の ピアリング(peering) を通じてトラフィックを交換
- インターネットは個人ではなく 企業が所有するネットワークの集合 であり、接続は 金銭的契約と事務手続き によって決まる
- ASN は 5 つの地域インターネットレジストリ(RIR) のいずれかを通じて申請できる
WHOIS と PeeringDB
- traceroute の各 IP が属する AS を調べるために WHOIS プロトコル と PeeringDB データベース を使用
- WHOIS は TCP 接続後にクエリーを送るとサーバーが情報を返すシンプルな構造
- サーバーごとにフィールド名や形式が異なるため、パーサーは 人間が読むやり方に近いシンプルなシミュレーター形式 で実装
- PeeringDB は全 AS の約 3 分の 1 について企業情報を提供
BGP(Border Gateway Protocol)
- BGP はインターネットの形を決める中核プロトコル であり、AS 間で経路情報を交換する
- 境界ルーター(border router)は BGP ルーティングテーブル を保持し、各経路の ASN 一覧を保存
- 2 つの AS がピアリングすると、それぞれのルーターが BGP セッション を張り、経路広告(route advertisement) を交換
- ルーターは複数の経路の中から 最短、または選好度の高い経路 を選んでパケットを転送
BGP の歴史
- 1969 年の ARPANET に始まるネットワーク実験は、1989 年の Cisco と IBM の RFC 1105 へとつながり、BGP v1 が登場
- その後 BGP v2(1990) 、v4(1994) が発表され、v4 は現在まで使われている
- BGP は インターネット上のあらゆるネットワーク間の接続経路を決める 標準プロトコルとして定着した
Traceroute と BGP の関係
- 例の経路: AS16509 → AS2914 → AS24940
- Amazon(AS16509)→ NTT Global IP Network(AS2914)→ Hetzner(AS24940)の順
- 同じ ASN 内にも複数のホップが存在し、これは内部ルーティングプロトコルや固定経路で処理される
- AS 間のピアリング関係 がインターネット上で実際に到達可能かどうかを決定する
Recap まとめ
- ウェブサイトはユーザーの IP に対して traceroute を実行し、その結果を HTTP ストリームで送信
- traceroute は ICMP パケットの TTL を活用して ルーター間の経路を可視化 する
- 各ルーターは 自律システム(AS) に属し、BGP によって相互接続されている
- ピアリング関係 がインターネットの到達性と構造を決める
Epilogue
- 作者はインターネット構造への理解不足を感じ、プロトコル中心の教育用インタラクティブ記事 を制作
- 完成度の高い大規模プロジェクトではなく 小さくても公開することを選択 した
- Hack Club コミュニティの励ましで完成し、オープンソースの traceroute プログラム を活用
- 「小さくても完成しているほうがよい」というメッセージとともに、持続可能なウェブコンテンツ として残ることを願っている
まだコメントはありません。