経路広報とは何なのか (original) (raw)

こんにちは。ネットワーク課の若松です。

私たちはインターネットへの接続性/到達性をお客様にご提供し続けるために、止まらないネットワーク運用を日々心掛けております。

今回インターネットへの接続性の話になると必ず出てくる「経路広報」についてお話してみたいと思います。

なお、なるべく平易な言葉を用いて、なんとなく分かったような気分になっていただくことを目標とさせていただきますので、記事中に「厳密に言うと異なる」点が多々あることや「敢えて深堀していない」ことを、予めご了承いただければと思います。

「経路広報」を普通に考えてみる

まずは、普通に「経路」と「広報」という言葉を考えてみます。

経路

「経路」とは出発点から目的地に至る「道順」ですね。同じ意味で「ルート(route)」とも言ったりしますね。

広報

「広報」とはさまざまな情報を、いろいろな媒体で広く一般に「お知らせ」することです。 お知らせする内容は新商品だったり、事業報告だったり、活動方針などですね。

木構造

ここでちょっと脱線しますが、「木構造 (きこうぞう) 」という言葉の説明をさせてください。

木構造とは

木構造とは簡単に説明すると階層的に辿っていけるデータの構造です。 例えば以下のようなデータは木構造であると言えます。

まだまだ木構造の例はあります。インターネット上のURLもそうですし、みなさんのPC上にあるファイルも、いくつかのディレクトリ(フォルダ)を経由した上でアクセスをしていますよね。

インターネットは木構造なのか

では、インターネットは木構造なのでしょうか?

IPアドレスで考える

IPアドレスはよく「インターネット上の住所」と呼ばれます。

ここでは、192.0.2.XXXというIPアドレスを持つネットワークで考えてみます。 インターネットはどこかに、「インターネットの元締め」みたいなのがいて、IPアドレスをもとに階層的につながっているのでしょうか。 例えば、「192」というネットワーク配下に「192.0」や「192.1」、「192.2」、「192.3」というネットワークがつながっているのでしょうか。

木構造ではない

いいえ、インターネットの構造はIPアドレスをもとにした木構造ではありません。

よって階層的に接続されているわけでもありません。もちろん「元締め」もいませんし「IPアドレスの上位から辿っていける」ネットワークでもありません。 また、IPアドレスはネットワーク構成を考慮せず割り振られています。よって連続したIPアドレスが必ずしも隣り合っているわけではありませんし、ネットワーク構成は休むことなく常に変わり続けています。

インターネットはどうやってつながっているのか

では、インターネットはどうやってつながっているのでしょうか。

インターネットは「ネットワークのネットワーク」と呼ばれることがあります。インターネットはネットワークが「蜘蛛の巣」のようにつながった集合体です。 参考までに総務省の資料をご紹介させていただきますね。

このような構造なので、「世界中のインターネット全体が止まる」ということはありません。

インターネットは何を頼りに通信するのか

インターネット上の通信はIPアドレスを頼りに通信しています。しかしさきほどインターネットは木構造ではないと説明しました。 では、蜘蛛の巣のように世界中に張り巡らされたインターネット上で、どうやって宛先IPアドレスを使用しているネットワークを判別/通信するのでしょうか?

BGP

そこでBGPというプロトコルの登場です。 BGPは隣あったネットワークのルータ同士でそれぞれが知っているネットワークの情報を交換しています。

「放送」と「通信」の違い

ここで再度脱線しますが、「放送」と「通信」の違いについて説明させてください。

放送

「放送」とは一般に放送局の送信所や中継局から電波を一方的に発射して、それをテレビやラジオなどで受信する仕組みです。 例えるならお手紙みたいなものでしょうか。ポストに投函されたお手紙は、配達員により宛先のポストに届けられて終わりです。

通信

「通信」は放送と違い、相手方の反応を見ながらデータのやりとりをします。 例えるなら「もしもし」、「はいはい」とやりとりする電話のようですね。 きちんと相手に用件が伝わったか確認出来ますし、聞き取れなかったことも再確認することができます。

通信が成立するということは

通信が成立するということは、送信元から宛先へデータが到達し、また宛先から送信元へもデータが到達するということです。 このためには、送信元から宛先ネットワークが認識でき、宛先からも送信元ネットワークが認識できる必要があります。 例えるなら「会話のキャッチボール」・・・まさにコミュニケーション(Communication)=通信 ですね。

BGPでやりとりする情報

さぁ話をBGPに戻しましょう。BGPでやりとりする情報は何でしょうか。それが「経路」というもの(後述します)です。

AS番号

AS(えーえす)とはAutonomous Systemの略で「自律システム」と訳されます。 簡単に言うとインターネット上のネットワークを識別するための番号です。

AS番号はインターネットサービスプロバイダや、インターネット上の各種サービス(SNSや動画配信など)を提供している事業者、学術機関、行政組織などに割り当てられています。 例えばシナプスですと、7511 という番号が割り当てられています。

経路

「経路」とは冒頭「道順」であると説明しました。 しかしインターネットを支えるネットワークエンジニアが言う「経路」は少し意味が違っていて

の2つとなります。 また「経路」は、その時々で若干ニュアンスが異なり、前者のみを指して「経路」と呼び、後者を「ASパス」と呼ぶこともあります。

経路広報

前述した「経路」を隣接するASのルータに伝えることを「経路広報」と呼びます。

また、この伝搬を繰り返し、バケツリレー方式でインターネット上に行き渡らせることも「経路広報」と呼ぶ場合があります。 こちらもその時々のニュアンスで異なる場合がありますが、それも「経路広報」の理解を妨げる要因かも知れませんね。

なお、インターネット上のすべての経路を「フルルート」と呼び、2024年7月時点ではIPv4で約98万経路あります。 私がBGPに初めて触れたころは約11万経路だったと記憶しておりますが、もう遠い思い出ですね。

経路選択

ここで経路選択について説明します。 簡単に言うと、どの隣接ASにトラフィックを流すか、というお話です。

今回例として図の一番左側にあるAというAS(以降「AS A」と呼びます)と、一番右側にあるZというAS(以降「AS Z」と呼びます)との間の通信について説明します。 またAS A と AS Zの間にはAS BからAS I が接続されているものとします(実際のネットワークではA~Zの部分には、おのおののASに割り当てられたAS番号が入ります)。

なお、図では楕円の中に「AS 〇」と記載していますが、実際のASはこんな「楕円形の何か」の中にあるわけではなく、各ASの運用主体が構築した幾重にも冗長化されたデータセンタと回線とルータにより構成されています。

パターン1

まずは、AS A が 192.0.2.0/24 というIPアドレスの塊(=「経路」)をAS Zまで伝搬させたとします。

具体的にはAS Aの中にあるルータが「私のASには192.0.2.0/24がつながっていますよー」とAS B と AS Cに「経路広報」します。 その広報された経路は途中のASでそれぞれ取捨選択されながら、最終的にAS Zまで届きます。 これにより、AS Zは192.0.2.0/24という経路は AS Aが広報していて、AS G か AS I に応答を送信すれば通信出来ると認識できます。

なお、BGPの基本的な実装として、経由するAS数が短い経路が選択されますので、AS Zとしては、AS A向けのトラフィックはAS Gに送信することになります。 この選択された経路を「ベストパス」と呼びます。図の場合ですと、「G → C → A 」がベストパスになります。

なお、図では省略しておりますが、AS Zも同様に保有するIPアドレスの塊を広報することで、それが伝搬しAS A側でもそのIPアドレスを認識できます。

パターン2

仮にAS Dが何等かの理由で停止した場合どうなるでしょうか。 AS Zから見たAS Aへのベストパスは「G → C → A 」となりますので変わりません。

パターン3

仮にAS Eが停止するとどうなるでしょうか。 AS Zから見たAS Aへのベストパスは「G → C → A 」となります。結果変わりませんね。

パターン4

それではAS CとAS Fが同時に停止するとどうなるでしょうか。

この場合、AS Zから見たAS Aへのベストパスは「I → E → D → B → A」となります。ベストというか、このパスしかありません。

実際のトラフィックの流れ

さきほど、経由するAS数が短い経路が選択されると説明しました。 でも、本当にそうなのでしょうか。

実際には自ASが送出するトラフィックについては、隣接ASから受信した情報に基づいていろいろと制御することがができます。 ここで実際のトラフィックの流れについて補足させていただきます。

エンジニア的思考

まずは、ネットワークエンジニアとしての観点から説明させていただきます。 ネットワークエンジニアとしては宛先とするネットワークへの順路が複数ある場合は「より安定している隣接ASに流したい」という思いがあります。 「より安定している」とは、以下が挙げられます。

商売人的思考

次に商売人的思考で考えます。商売人的思考とは売り上げやコストの観点からの思いで以下のようなことが挙げられます。

前者はトラフィックを流すことでより大きな収益につながる隣接ASに流したい、後者はなるべく出ていくお金は押さえたいという考えです。 例えば、完全従量制よりも、半従量制がコスト面で有利な場合もありますし、半従量制よりも固定制のほうが有利な場合があるでしょう。

AS

実際のトラフィックの流れはエンジニア的思考と商売人的思考のせめぎ合いとなります。 インターネット上のサービスに限ったことではありませんが、事業として成立させるには経済的合理性を考えることは当然です。 しかし難しいのはネットワーク品質と低コストは両立できないことです。 さまざまな事情からエンジニアが「うれしい」と感じるトラフィックの流し方が出来ず、収益/コストが優先される場合があり、このせめぎ合いが各AS毎に存在ます。

そして、出来ることは自ASが送信するトラフィックの制御です。自ASに入ってくるトラフィックについて制御する手段はほぼありません(ですので、某OSのアップデートや某スポーツイベントのライブ配信など、大量のトラフィックがいきなり流入してくる度にエンジニアは「ネットワークは耐えられるだろうか」と冷や汗をかいております)。

さきほどASとはAutonomous System(自律システム)の略だと説明しました。まさにそれぞれのASが自律的にポリシーを考え、トラフィックコントロールをしているわけです。

非対称ルーティング

そういう事情で、「行きと帰りで経由するネットワークが異なる」ということはよく起こります。

ですので、tracerouteコマンドでどういうネットワークを経由しているか確認しても、それは送信元から宛先に向かうトラフィックであって、宛先から戻ってくるトラフィックは全く異なるネットワークを経由しているかも知れません。 それを知るには、宛先となるネットワーク側の人から自AS宛にtracerouteして貰い、その結果を教えてもらうしかありません。

まとめ

以下まとめます。

いかがでしょうか。「なんとなく分かった気分」になっていただけましたでしょうか。 インターネットの構造とそれを支える技術/背景について考える際の、ご参考になればと思います。