【S2お茶会】インターネットルーティングについて説明してみる(8/13)

s2お茶会
今回は弊社の栗山が「インターネットルーティング」について話しました。

インターネットルーティングについて説明してみる


今回は、IPアドレスの仕組み、そしてオフィスや自宅などの末端と呼ばれるところから ISP を経由してどうやってインターネット通信が行われているのか、インターネットルーティングについて話したいと思います。


※プライベートアドレス、NAT についてはそこまでしっかりと解説しないつもりです。

IPアドレスの仕組み


IP(internet protocol)アドレスとは、それぞれが固有の番号を持つ住所みたいなもので、192.0.2.1 のような形式で表されます(自分が属するネットワークを含めた表現として 192.0.2.0/24 のような表記もあります)。

IP にはコネクション(接続)という概念はないので、パケット(packet)を宛先に届けることだけを考えます。
IP アドレスがあれば、世界中のどこの IP に対してもパケットを届け、通信できるようになっています。

本来、packet とは「小包」とか「封筒」という意味ですが、日本では情報通信における伝送単位を表す言葉として使われています。
昔の電話などでは、物理的な線を使った通信は向かい合うもの同士が接続されて信号(波)を流す前提でしたが、インターネットでは線を専有せず、細切れの小包を配送し続ける形態を取るようになったことから、パケットという表現が使われているそうです。

通常、IP 機器は自分が属するネットワークにしかパケットを投げることができません。
そのため、それ以外のネットワーク(インターネット)にパケットを投げるときは、誰かそれについて知っていそうな人に投げます。これがデフォルトゲートウェイ(ゲートウェイ、デフォルトルーターとも)と呼ばれるものです。

インターネットに到達するのに必要なのはこの三つ。

  • IP アドレス
  • ネットワーク (/24 の部分。これを 255.255.255.0 のように表記する場合もある)
  • デフォルトゲートウェイ

これだけあれば、自宅にあるインターネット機器から世界中どこへでも、パケットを届けることが可能になります。

それでは、自宅の IP 機器から海外のとある IP に向けてパケットを届ける時にどういう仕組みになっているのでしょうか。

末端(家庭/事務所)の通信について


末端(家庭/事務所)からインターネットに接続するためには、まず ISP(Internet Service Provider)と契約しなければいけません。
そうしたら、ブロードバンドルーターを通して家庭内にある IP 機器(Wi-Fi親機やPCなど)のネットワークと ISP のネットワークが接続できます。
各機器によって IP はそれぞれ違いますが、大体の場合、同じデフォルトゲートウェイを持っており、一つのネットワークにまとめて接続されるようになっています。



家庭内の各機器は、自分のネットワーク内に属しているIPアドレスに対してのパケットは直接届くと判断して、同一ネットワークに対して直接パケットを投げつけるようになっており、それ以外(Googleとか)の宛先へのパケットはデフォルトゲートウェイがその先を知っていると判断してそっちに投げられます。

  • 同じネットワーク:直接投げる
  • それ以外:デフォルトゲートウェイに投げる

これが最もシンプルなルーティングテーブルです。

家庭内の各機器のデフォルトゲートウェイはブロードバンドルーターを指すのですが、ブロードバンドルーターは ISP 側のルーターがデフォルトゲートウェイになります。
なので、挙動としては同じように見えるかもしれませんが、

  • 家庭内のネットワーク: 直接投げる
  • それ以外: ISP側のデフォルトゲートウェイに投げる

というルーティングテーブルになります。

つまり、ブロードバンドルーターは、ISP から家庭向けに投げられたパケットの処理を行いつつ、その時に、ルーティングテーブルに基づいてパケットをどこに投げるか判断しています。 家庭内と ISP、どちらから来たパケットであろうとも、宛先を見てテーブルから判断するという仕組みです。

これがまさにルート(経路)を決める人、ルーターとしての役割になります。
こうして ISP までパケットが届けられるのです。

ISP の話


ISP といっても、色々と種類がありまして、大きさでいうとこれらの三つに分けられます。

  • 地域ISP:エンドユーザーへの接続性を提供する
  • 大手ISP, IX:一部の ISP 同士の接続を提供する
  • Tier-1 ISP:世界中への接続を提供する

全ての接続の中心にあるのが Tier-1 ISP で、Tier-2大手ISP・Tier-3地域ISP の順でそれにぶら下がるような形になっています。
それぞれの ISP の間には相互接続ポイント(IX)があり、ISP 同士が結ばれることによってインターネットが構成されているというイメージです。

下流にある ISP は上流のプロバイダと契約して接続性を提供してもらっています。これは家庭のインターネット契約と同じと考えてもらえばいいです。
なので、地域 ISP は大手 ISP と、そして大手 ISP はTier-1 ISPと契約を結び、それを経由することで世界中と通信できるようになっています。

参考:
TeleGeography – Global Internet Map 2021
インターネットマガジン2001年10月号 インターネットサービスプロバイダー相互接続マップ

ただ、上流にある ISP を利用しようとすると、その分料金がたくさんかかってしまうので、それを回避するために大手同士、あるいは地域同士で相互接続契約を結び、上流の ISP を利用せず効率よくパケットが流せるような設計を行っていたりもします。

より適切で遅延が少なく、料金もかからないルートをテーブルとして持つことになるので、末端の通信に比べると ISP 内のルーターはより複雑なルーティングテーブルを持っています。

  • 東京都の ISP 内部ユーザー:ルーターAへ投げる
  • 他の関東の ISP 内部ユーザー:ルーターBへ投げる
  • 他の ISP 内部ユーザー:ルーターCへ投げる
  • 相互接続契約を結んでいる別 ISP 宛:指定されたルーターへ投げる
  • その他の宛先:上流 ISP のルーターへ投げる(デフォルトゲートウェイ)

さらに、ネットワーク障害時の迂回などの際に、ルーティングテーブルを適切に更新する仕組みなどもあったりして動的に経路が変更されるので、本当に複雑です。
複数の経路がある場合にどちらを選ぶべきなのか、遅延、帯域、費用など含め考慮する必要があって、ここをどうにかする仕事をトラフィックエンジニアリングと言ったりします。

Tier-1 ISP


ここまでの話では「知ってる相手にはそこに投げ、それ以外はデフォルトゲートウェイに投げる」というルールで通してきました。 ですが「最上位のルーター」というものは存在しないので、最後までそういうわけにはいきませんNTT/Verio を含む Tier-1 ISP と呼ばれる組織がここを担当します。

例えばですが、 S2 が自分の IP アドレスレンジ(ネットワーク)を持っていて、NTT/Verio と契約したとします。そして S2 が運用しているネットワーク一覧を NTT/Verio に提出。このネットワーク宛のパケットが来たら S2 に届けるようにと NTT/Verio に依頼します。
NTT/Verio は世界中にそのことを広告、これで S2 の IP アドレスに対して世界中からパケットが届けられるようになります。逆に、S2 は自分が届けられない宛先のパケットの配送を NTT/Verio に依頼します。

NTT/Verio は他の Tier-1 ISP と相互接続し、Tier-1 ISP 同士で管轄している宛先のネットワークアドレスを交換しています。あるネットワークアドレスのパケットを、どの Tier-1 ISP に配送すればよいかの一覧を交換しあっているわけです。
これも、最後のデフォルトゲートウェイが無い以外は今まで出てきたルーティングテーブルと同じ構造を持ちます。

ただ、この一覧が現状で 86 万行ある、という規模感です。

ここでいう宛先は明示的な一覧になるので、まだ割り当てられていない IP アドレスブロックだったり、割り当てられているけど広告しないことを選択したプライベートなアドレスといった、この一覧にない宛先というのも存在します。
その場合は、Tier-1 ISP 側で宛先到達不可として送り元にエラーパケットが戻されます。 基本的には、一覧にあるネットワークアドレスの時は、宛先となる ISP へパケットを投げ、その ISP の中を逆にたどって宛先となる IP にパケットが届けられる、という仕組みです。
そうやって世界中と通信ができるようになっています。


通信の仕組みについて、色々と細かい部分は割愛し、単純な例をあげながら説明しましたが、なんとなくイメージはつかめましたでしょうか。ISP の話の中で参考にあげましたが、インターネットの繋がりや接続性を可視化するプロジェクトなどもあるので、よかったらそちらも見てみて下さい。もしかしたら面白い発見があるかもしれません。