ローカルネットワークで、10.0.0.0/24と10.0.1.0/24というネットワーク間で通信を行うためには10.0.0.0/16という両方を含む上位のセグメントを作ればお互いに通信できる、ということは理解しているのですが、グローバル空間で通信を行うインターネットでは完全に異なるセグメント間で通信が行われるわけですよね。そこで質問です。
1)
プロバイダAとプロバイダBが直接繋がっているとして、Aの100.100.100.0/24とBの101.101.101.0/24という二つのネットワーク間で通信を行う場合、これらの境界にあるプロバイダAとBを結ぶノード同士はどのようなIP設定になっているのでしょうか?
2)
上の質問とあえて分離して質問しますが、AS番号を持つ組織に対してグローバルIPが割り当てられるのでしょうか?(そうだとすれば、異なるグローバルIP間はBGPを使う、といった理解で納得できます)それとも、AS番号を持たない組織が(AS番号を持つ上位の組織から与えられた以外の)グローバルIPを取得する、ということはあり得るのでしょうか?
ローカルネットワークで、10.0.0.0/24と10.0.1.0/24というネットワーク間で通信を行うためには10.0.0.0/16という両方を含む上位のセグメントを作ればお互いに通信できる、ということは理解しているのですが
そうする事もできますが、普通はしません。もし、10.0.0.0/24 と 10.0.1.0/24 の間で通信したければ、その2つのネットワークにつながっているルータを用意します。
このときの「ルータ」は、製品としての「ルータ」よりは、ネットワーク層で中継する役割を持つ物、という意味での「ルータ」で、L3 スイッチや、NIC を複数もって中継処理を行うサーバも含みます。
ルーター - Wikipedia
一番、シンプルな構成であれば、NIC を2つ持つルータで、
と IP アドレスを設定します。
ルータの 10.0.0.1 の NIC と同じネットワークに PC があって、そのアドレスが 10.0.0.2 だったとします。また、ルータの 10.0.1.1 と同じネットワークに 10.0.1.2 のアドレスを持つサーバがあったとします。
この時、PC に「デフォルトゲートウェイは 10.0.0.1」という設定が、サーバに「デフォルトゲートウェイは 10.0.1.1」という設定があれば、通信が成立します。
PC がサーバへパケットを送出する時の手順は以下のようになります。
いろいろ端折っている(例えば、どうやって 10.0.1.2 宛のパケットをルータへ向けて送出するか、といった辺り)ので、不正確なところがありますが、ここで重要なのは、どこにも「10.0.0.0/16」というネットワークは登場しません。
さらに言うと、サーバ側のネットワーク(10.0.1.0/24)を 192.168.1.0/24 に変えても成り立ちます。なので、まず「上位のセグメント」なる物がネットワーク間の通信に不要である事を理解して下さい。
で、ここでは1対1のネットワークなので、ルータが持つルーティングテーブルが、自身が直接つながっているネットワークのみルーティングする形になりますが、ルータ自身が直接つながっていないネットワークに対して、例えば「172.30.0.0/16 へは 10.0.1.253 のルータへ転送する」といった情報を持つ事があります。このルーティング情報を手で設定するのではなく、ルータ間でやりとりをするためのプロトコルがあり、BGP はその一つです。
ここまで、プライベートなネットワークイメージして書きましたが、基本はインターネットでも全く変わりません。複雑さは桁違いですが、ルーティングの基本は変わりません。
そういった、インターネットならではの特徴に関して、下記の本が参考になるかもしれません。
ISP 間をつないでいる IP ネットワークがあれば、そのネットワークセグメントはグローバルアドレスである必要はありません。私のコメントの方で登場する 172.31.1.0/24 が該当しますが、172.31.1.0/24 の存在は R1 と R2 だけが知っていればよく、それぞれのネットワーク上に存在する PC 等からは見えなくても構いません。
ISP 同士の接続の実態は知りませんが、データセンターでこのような構成になっているケースはありました。データセンターに設置する自分たちサーバにグローバルアドレスを直接設定し、自分たちのサーバとデータセンター側の間に設置するルータで、外側(データセンターの設備側)はプライベートアドレスを設定し、内側にグローバルアドレス、という構成になります。
あと、ネットワーク間をつなぐためのセグメントを設けずに通信するものもあります。「10.0.0.0/16 は 172.31.1.1 へ転送」という代わりに、「このインタフェースへ転送」という設定のしかたになります。俗に「Unnumberd」と言われるタイプで、一般企業が固定 IP で ISP と契約した場合に、このタイプになることが多いです。
先に書いたとおり、BGP はあくまでもルーティング情報をルータ同士で交換するためのプロトコルで、交換した情報にしたがってルータが自身のルーティングテーブルを更新します。
ただ、個々のルータレベルのルーティング情報を世界中で交換したら収集つかなくなるので、ISP の外と内でルーティングプロトコルを使い分け、外に対してはもっぱら BGP が使われています。BGP の場合、AS という単位で情報交換ができるので、ISP 同士で効率よく情報交換ができます。
大手 ISP のように、たくさんのネットワークと接続点を持っている場合は、当然、BGP で経路情報のやりとりをする必要があるので、事実上、AS 番号を持つことになりますが、一般企業や小規模な ISP など、接続点を一つしか持たないケースでは、AS 番号を持つ必要はありません。
2014/12/07 14:44:11例えば、ISP-A という ISP と固定 IP 接続の契約をして、グローバルアドレスの割り当てを8個受けている、というような場合、その8個のアドレスに対するルーティング情報は、ISP-A の内部ルーティングの情報としては持っています。
しかし、その8個のアドレスを含む、ISP-1 が持つアドレスブロックは、BGP で世界中の ISP に BGP に広告されています。
なので、グローバルアドレスの割当があるから、必ず AS 番号を持っている、とは限りません。
ただ、それは、最終的なアドレスの割当を受けているところが BGP でアドレスを広告する代わりに、上位となる ISP が広告している、ということになるので、もし、インターネット上の BGP で広告されているアドレスブロックに、そのグローバルアドレスが見つからなければ、ISP を超えた通信はできない状態になると思います。
2)に関して、ちょっと想像になりますが、インターネットのグローバルアドレスを管理している ICANN、及び、その下部組織で各地域の割り当てを担当する組織から直接、IP の割り当てを受けるような場合は、割り当てを受ける組織が AS 番号を持っているだろう、ということはあると思います。そもそも、ICANN とその地域組織からグローバルアドレスの割り当てを受けるのは、大規模な通信事業者に限られるのが実態なので、AS 番号以前に、満たすべき条件がいろいろあると思います。
二度にもわたり詳細なコメントで丁寧に教えていただきましてありがとうございます。内部でグローバルというのはよく見かけますが、ネットワーク同士をつなぐのにプライベートと逆転するケースは一般的なイメージと違ってて面白いですね。色々お教えいただきましたので、何度か読み直して完全に理解できるように努力したいと思います。ありがとうございました。
2014/12/07 15:06:27