+ 作るログイン
図を読み込んでいます…
1 / 15
ネットワークのしくみ ― 場所を知らない相手に、なぜ届くのか / 全8章

ネットワークのしくみ 7:経路の決め方 ― ルーター同士の話し合い

発行
アニメモ公式
版
第1版
改訂
コマ
全15

ルーターの道しるべの表を、誰がどうやって書いているのかを説明します。手書きでは追いつかない理由、隣との挨拶とネットワークの告知、会社の中で使う OSPF(網の地図とコストから最短経路を計算)、線が切れたときの自動の切り替え、インターネット全体をつなぐ AS と BGP、取り決めで道を選ぶこと、そして話し合いの弱点まで。

道しるべの表は、誰が書いているのか

6本目で、ルーターは道しるべの表(ルーティングテーブル)を見て「次はどこへ渡すか」を決めている、と説明しました。そして最後に、疑問が残りました。

その表の行は、誰がどうやって書いているのか。

表の行の書かれ方には、直結・手書き・話し合いの3つがありました。この作品では、いちばん大事な「話し合い」を見ていきます。

図は、5台のルーターがつながった小さな網です。ルーター E の先に、目的のネットワーク 203.0.113.0/24 があります。ルーター A は、そこへの道をどうやって知るのでしょうか。

このシリーズの疑問「その経路はどうやって決めているのか?」の、後半の答えです。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 1 / 15
  • 道しるべの表は、誰が書いているのか
  • ルーターB
  • ルーターA
  • ルーターD
  • ルーターE
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • ルーターA は、203.0.113.0/24 への道を、どうやって知る?
  • 6本目の残り。大きな網では、ルーター同士が話し合って自動で書く。

手書きでは、網の変化に追いつけない

小さな家のネットワークなら、人が表を手で書けば十分です。でも、大きな網ではそうはいきません。

ルーターが数千台あれば、表も数千枚あります。どこかの線が切れたら、その線を通る道を使っていたすべてのルーターの表を、すぐに書き換えなければなりません。人がやっていたら、書き換え終わる前に次の変化が起きます。しかも、1台でも書き間違えれば、6本目で見たような輪(ループ)ができたり、行き止まりができたりします。

そこで、ルーター自身に、隣と情報を交換させて、表を書かせます。この話し合いの決まりをルーティングプロトコルと呼びます。

大事なのは、ここでも「全体を指示する中央の管理者はいない」ことです。1本目で見たとおり、インターネットには全体の地図を持つ機械がありません。表を書くのも、各ルーターが隣と話し合った結果です。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 2 / 15
  • 手書きでは、網の変化に追いつけない
  • ルーターが数千台あれば、表も数千枚
  • どこかの線が切れたら、関係する表を全部すぐ書き換える必要がある
  • 1台でも書き間違えれば、輪ができたり行き止まりになる
  • → ルーター自身に、隣と情報を交換させて書かせる(ルーティングプロトコル)
  • 線は切れ、機械は増え、混み具合は変わる。変化のたびに人が全部書き換えるのは無理。

まず、隣に誰がいるかを確かめ合う

話し合いの第一歩は、隣に誰がいるかを知ることです。

ルーターは、自分の口につながっている線に向けて、定期的に「こんにちは、私はルーター A です」という挨拶を送ります。隣のルーターも同じように挨拶を返します。こうして、お互いに「この線の先には B がいる」と分かります。

この挨拶は、ずっと続けます。数秒おきに届くはずの挨拶が、しばらく途絶えたら、「その線(か、隣のルーター)が落ちた」と判断します。線が切れたことに、誰かが教えてくれるのを待つのではなく、自分で気づけるわけです。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 3 / 15
  • まず、隣に誰がいるかを確かめ合う
  • ルーターB
  • こんにちは、B です
  • こんにちは、A です
  • こんにちは、D です
  • ルーターA
  • ルーターD
  • ルーターE
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • ルーターは定期的に「生きてるよ」と隣に挨拶を送る。返事が途絶えたら、その線は切れた。

自分の知っているネットワークを、隣に教える

次に、ルーターは自分が知っているネットワークを隣に教えます。

ルーター E は、自分の口に 203.0.113.0/24 がつながっています(6本目の「直結」の行)。そこで、隣の D に「203.0.113.0/24 は、うちの先にあるよ」と伝えます。

受け取った D は、自分の表に「203.0.113.0/24 → E へ」と書きます。そして、D は自分の隣(B や C)にも「E の先に 203.0.113.0/24 があるよ」と伝えます。それを受け取った B は、さらに A に伝えます。

こうして、情報が隣から隣へ、噂のように広がっていきます。1本目で見た小包のバケツリレーと同じ形で、今度は「道の情報」がリレーされているのです。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 4 / 15
  • 自分の知っているネットワークを、隣に教える
  • D 経由で 203.0.113.0/24
  • ルーターB
  • E の先に 203.0.113.0/24
  • 203.0.113.0/24 はうちの先
  • ルーターA
  • ルーターD
  • ルーターE
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • E「203.0.113.0/24 は、うちの先にあるよ」。受け取った D は、それを自分の隣にも伝える。

噂のように広がり、全員が網の形を知る(OSPF の場合)

話し合いのやり方には、いくつか種類があります。会社や大学のように、1つの組織の中の網でよく使われるのが OSPF(Open Shortest Path First)です。

OSPF では、各ルーターが「自分は誰とつながっていて、その線のコストはいくつか」という情報を、網の全員に配ります。受け取ったルーターは、それをさらに隣に配ります。

しばらくすると、網の中のすべてのルーターが、同じ「網の地図」を持つことになります。どのルーターとどのルーターがつながっていて、それぞれの線のコストがいくつか、という地図です。

「全体の地図を持つ機械はない」と1本目で書きましたが、組織の中の小さな網に限っては、全員が地図を持つこともできます。インターネット全体では、それは不可能です(後半の BGP で見ます)。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 5 / 15
  • 噂のように広がり、全員が網の形を知る(OSPF の場合)
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • 全員が同じ「網の地図」を持つ → それぞれが自分から見た最短経路を計算する
  • 会社の中の網では、各ルーターが「誰と誰がつながっているか」を全員に配る。

線には「コスト」が付いている

地図の線には、コストという数字が付いています。

コストは、その線を通る「負担」を表す数字です。多くの場合、速い線ほど小さく、遅い線ほど大きく設定されます。図では、C-D の線だけがコスト 3(遅い線)で、ほかは 1 です。

A から E へ行く道を2つ比べてみます。

道コストの合計
A → B → D → E1 + 1 + 1 = 3
A → C → D → E1 + 3 + 1 = 5

合計がいちばん小さい道が、「最短経路」です。ここでは A-B-D-E です。

「最短」は、距離や通るルーターの数ではなく、コストの合計で決まる、という点に注意してください。遠回りでも速い線を通るほうが、コストが小さくなることがあります。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 6 / 15
  • 線には「コスト」が付いている
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • A → E:A-B-D-E = 1+1+1 = 3 / A-C-D-E = 1+3+1 = 5
  • 速い線は小さく、遅い線は大きく。合計がいちばん小さい道を選ぶ。

各ルーターが、自分で最短経路を計算する

網の地図を持ったルーターは、自分から見た各ネットワークへの最短経路を、自分で計算します(ダイクストラ法という計算方法を使います)。

ルーター A が計算すると、203.0.113.0/24 への最短経路は A-B-D-E(コスト 3)です。そこで A は、自分の表にこう書きます。

宛先次の渡し先
203.0.113.0/24ルーター B へ

ここで大事なのは、表に書くのは「次は B」だけだということです。A は全体の道(B の次に D、その次に E)を計算していますが、表には最初の1歩しか書きません。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 7 / 15
  • 各ルーターが、自分で最短経路を計算する
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • ルーターA の表:203.0.113.0/24 → ルーターB へ(コスト 3)
  • A から見た最短は A-B-D-E。だから A の表には「203.0.113.0/24 → B へ」と書く。

A が表に書くのは「次は B」だけ

では、B の次の1歩は誰が決めるのでしょうか。B 自身です。

B も、同じ網の地図を持っているので、自分から見た最短経路を自分で計算します。B から見た最短は B-D-E なので、B の表には「203.0.113.0/24 → D へ」と書かれます。D も同じように計算して「→ E へ」と書きます。

全員が同じ地図から、同じ計算方法で最短経路を計算しているので、A が思い描いた道(A-B-D-E)と、B や D が実際に選ぶ次の1歩は、きちんと一致します。だから、小包はバケツリレーで A-B-D-E と進みます。

1本目で見た「各ルーターは次の1歩だけを知っている」は、こうして作られています。誰かが「この道を通れ」と指示しているのではなく、各自が同じ情報から、自分の次の1歩を決めているのです。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 8 / 15
  • A が表に書くのは「次は B」だけ
  • ルーターB
  • 次は D
  • 次は B
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • 次は E
  • 表には次の1歩だけ。B も自分で計算して「次は D」と書く。

線が切れた:B-D が落ちる

ここで、B と D の間の線が切れたとします。

B と D は、お互いの挨拶が届かなくなったことで、線が落ちたことに気づきます。そして、「B-D の線が消えた」という情報を、網の全員に配ります。

情報を受け取った各ルーターは、自分の地図から B-D の線を消します。

このとき、途中にある小包は、しばらく行き場を失って捨てられることがあります。でも、それも数秒の話です。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 9 / 15
  • 線が切れた:B-D が落ちる
  • D と話せなくなった
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • B と話せなくなった
  • B と D の挨拶が途絶える。「B-D の線が消えた」という知らせが網全体に広がる。

全員が計算し直し、別の道に切り替わる

地図が変わったので、各ルーターは最短経路を計算し直します。

A から見ると、B-D の線が無くなったので、A-B-D-E の道は使えません。残る道のうち最短は A-C-D-E(コスト 5)です。A は、自分の表を「203.0.113.0/24 → C へ」に書き換えます。C と D も同じように計算し直して、表を書き換えます。

こうして、数秒のうちに、誰も指示していないのに、網全体が別の道に切り替わります。これが、ルーター同士が話し合って表を書くことの最大の利点です。インターネットのどこかで線が切れても、多くの場合、利用者は気づかないうちに迂回路へ切り替わっています。

B-D の線が直れば、また同じ手順で元の道(コスト 3)に戻ります。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 10 / 15
  • 全員が計算し直し、別の道に切り替わる
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • ルーターA の表:203.0.113.0/24 → ルーターC へ(コスト 5)
  • A から E の最短は A-C-D-E(コスト 5)に。数秒で、誰も指示していないのに道が変わる。

インターネット全体は、会社ごとの網(AS)の集まり

ここまでの OSPF は、1つの組織の中の話でした。では、インターネット全体ではどうでしょうか。

インターネットは、会社ごとの網の集まりです。あなたが契約しているプロバイダ、大きな通信会社、クラウドやデータセンターの会社、大学……。それぞれが自分の網を持ち、中は自分で管理しています。この「1つの管理者が運営する網」を AS(Autonomous System、自律システム)と呼び、1つずつ番号(AS 番号)が付いています。世界には約7万の AS があります。

AS の中では、OSPF のような方法で経路を決めます。でも、AS と AS の間では、OSPF は使えません。理由は2つあります。

1つは、規模です。世界中のルーターが1枚の地図を共有するのは不可能です。もう1つは、会社の都合です。自分の網の中の細かい形を、他の会社に全部見せたくはありません。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 11 / 15
  • インターネット全体は、会社ごとの網(AS)の集まり
  • あなたのプロバイダ
  • 大きな通信会社
  • サーバーのデータセンター
  • 中は OSPF など
  • 中は OSPF など
  • 中は OSPF など
  • 世界に約7万の AS(自律システム)がある。1つ1つに番号が付いている
  • プロバイダ・通信会社・データセンター。それぞれが自分の網を持ち、中は自分で管理する。

会社の境目では BGP で「この宛先はうち経由」と伝え合う

AS と AS の間の話し合いに使われるのが BGP(Border Gateway Protocol)です。インターネットを1つにまとめている、いちばん大事な仕組みの1つです。

BGP では、網の地図は配りません。代わりに、「この宛先のまとまりには、うち(とこの AS たち)を通れば行けるよ」という情報だけを、隣の AS に伝えます。

図の例では、こう伝わります。

誰が誰に何を伝える
データセンター(AS 3)大きな通信会社(AS 2)203.0.113.0/24 は、うち(AS 3)の中にある
大きな通信会社(AS 2)あなたのプロバイダ(AS 1)203.0.113.0/24 へは、AS 2 → AS 3 と行ける

情報には、通ってきた AS の並びが付いています。だから受け取った側は「この宛先へは、この順に AS を通る」と分かり、同じ AS を2回通るような輪も避けられます。

4本目で見た集約(大きなまとまり1行)のおかげで、BGP で交換される行は、世界全体で約100万行に収まっています。6本目で見た「インターネットの中心の大きなルーター」の表は、この BGP で作られています。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 12 / 15
  • 会社の境目では BGP で「この宛先はうち経由」と伝え合う
  • あなたのプロバイダ
  • 大きな通信会社
  • サーバーのデータセンター
  • 中は OSPF など
  • 中は OSPF など
  • 中は OSPF など
  • 203.0.113.0/24 はうち(AS 3)の中
  • AS 2 → AS 3 経由で行ける
  • 「203.0.113.0/24 はうちの中」が、AS から AS へ伝わる。

BGP は「近さ」より「約束」で道を選ぶ

OSPF は「コストの合計がいちばん小さい道」を選びました。BGP は違います。BGP は、会社同士の約束(ビジネスの取り決め)を重視して道を選びます。

AS 同士のつながり方には、大きく3種類あります。

相手関係
上位のプロバイダ(トランジット)こちらがお金を払って、世界中へ運んでもらう
対等な相手(ピアリング)お互い無料で、自分たちのお客さんの間だけ運び合う
お客さんお金をもらって運ぶ

同じ宛先に複数の道があるとき、会社はふつう「お客さん経由 > 無料の相手経由 > お金を払う相手経由」の順に選びます。お金のかからない、あるいはお金になる道を優先するのは自然なことです。そのうえで、通る AS の数が少ない道を選びます。

つまり、インターネット全体の経路は、技術(速さ・近さ)だけでなく、会社同士の取り決めでも決まっているのです。日本国内の通信が、わざわざ海外を経由してしまうことがあるのは、このためです。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 13 / 15
  • BGP は「近さ」より「約束」で道を選ぶ
  • 通過料を払う相手
  • お互い無料でつなぐ相手
  • お金をもらう相手
  • トランジット
  • ピアリング
  • お客さんの網
  • 同じ宛先に複数の道があれば、「お客さん経由 > 無料の相手 > 払う相手」と選ぶことが多い。 通過する AS の数(道の短さ)も見る
  • どの会社を通すか、お金を払う相手か、の取り決めで選ぶ。技術だけでは決まらない。

話し合いは、嘘や間違いにも弱い

話し合いで表を書く仕組みには、弱点もあります。誰かが間違った情報を流すと、それが広がってしまうことです。

たとえば、ある AS が設定を間違えて、「203.0.113.0/24 は、うちの中にある」と BGP で宣言してしまったとします。それを信じた周りの AS は、203.0.113.0/24 宛ての小包を、その間違えた AS へ送り始めます。本物のサーバーには届かなくなります。

しかも、6本目で見た最長一致があるので、本物より細かいまとまり(たとえば /25)で宣言されると、世界中のルーターがそちらを優先してしまいます。実際に、こうした間違いで大きなサービスが何時間もつながらなくなった事件が、何度も起きています。わざと行えば、通信の横取り(ハイジャック)にもなります。

対策として、「この AS は、このまとまりを宣言してよい」という情報を署名付きで登録し、受け取った側が照合する仕組み(RPKI)が広まりつつあります。メールのしくみシリーズの DKIM と同じように、「本人が認めたものか」を確かめる考え方です。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 14 / 15
  • 話し合いは、嘘や間違いにも弱い
  • 間違えた AS
  • 本物の AS
  • 「203.0.113.0/24 はうち」と誤って宣言
  • 本当に 203.0.113.0/24 を持っている
  • 細かい宣言(最長一致)で上書きされると、本物より優先されてしまう。 対策:宣言してよい範囲を署名付きで登録し、照合する(RPKI)
  • 間違った「うちの中」の宣言で、小包がそこへ吸い込まれる。

まとめ:経路の決め方

この作品で見たことをまとめます。

項目内容
なぜ話し合うか手書きでは網の変化に追いつけない
挨拶隣に誰がいるか確かめ、途絶えたら線が落ちたと判断する
告知自分の知っているネットワークを隣に伝え、噂のように広がる
OSPF(組織の中)全員が網の地図を持ち、コストから自分で最短経路を計算する
切り替え線が切れたら、全員が計算し直して数秒で迂回する
AS会社ごとの網。インターネットはその集まり
BGP(会社の間)「この宛先はうち経由」を伝え合う。約束で道を選ぶ
弱点間違った告知も広がる。署名で確かめる仕組みが進んでいる

冒頭の疑問「その経路はどうやって決めているのか?」への答えは、こうなります。

経路は、誰か1人が決めているのではない。各ルーターが隣と話し合って網の様子を知り、自分で「次の1歩」を決めている。その次の1歩をつなげたものが、経路になっている。

次の最終回では、ここまでの部品をすべて組み合わせて、あなたの PC から Web サーバーまで、実際に何が起きているのかを最初から最後まで追いかけます。

  • ネットワークのしくみ 7 / 8 ― 経路の決め方:話し合い
  • 15 / 15
  • まとめ:経路の決め方
  • ルーターB
  • 1
  • 1
  • ルーターA
  • 1
  • ルーターD
  • 1
  • ルーターE
  • 1
  • 3
  • 203.0.113.0/24 (ルーターE の先)
  • ルーターC
  • 会社の中は OSPF(最短経路を計算)/ 会社の間は BGP(約束で選ぶ)
  • 誰も全体を指示しない。各ルーターが隣と話し、自分で次の1歩を決める。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]