Powered by SmartDoc

情報通信ネットワーク(2005/07/01)
Ver. 1.1

2005年7月1日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2005/ccna/ccna.html
情報通信ネットワーク2005年7月1日 のメモ

目次

カプセル化

カプセル化とは

上位層の通信単位を下層の層で通信する時に、その中身(上位層の構造)に無関係に通信が行えるようにするための仕組。

cf.封筒(手紙の内容を知らなくても済む.. [むしろ匿す.. ] )。

上位層のPDU ( Protocol Data Unit )にHeader (とFooder )を付けることにより、自分の層の新しいPDUを作る。

各層の通信単位 (PDU : Protocol Data Unit)

上層
データ
4層
セグメント
3層
パケット
2層
フレーム
1層
bit列

Ethernet の フレームフォーマット

IP の パケットフォーマット

IPv4

  1. Version 5は、実験的なプロトコルとして開発されたが、広まらなかった。
  2. もし、経路にloopがあっても、このTTLのおかげで、ネットワークから、( loopを巡り、TTLが0になるような.. )無駄なパケットを破棄できる。
  3. この初期値を何にするかは、OSに依存する。パケットを受けた時点で、パケットの持つTTL値(最終TTL値)は、「初期TTL値-ホップ数」となる。

    したがって、受け取ったパケットのホップ数だけで、通信元との距離を直接判断することはできない。

    しかし、OSの初期値の隔差は現状のInternetの最大ホップ数に比較して、結構大きいので、最終TTL値の大きさから、ある程度OSが予測できる。OSが予測できれば、最終TTL値から、そのOSの初期値を引くことにより、ある程度のホップ数の予測ができる。

  4. 通常は、1 (単位)となっている。したがって、「TTLの減った数」=「Routerを越た数」=「Hop数」となる。
  5. 通常は、破棄と同時にICMPを利用して、通信元に、破棄があったことを通知する規約になっている。tracerouteは、この規約を利用して、経路の表示をおこなっている。
  6. 実際には、255 Hop。つまり、255回routerを通過すると、どんな場合でも、破棄されることになる。

IPv6

トランスポート

UDP

TCP

中継装置

物理層の中継装置

物理層の中継装置(7)

は、純粋に、エネルギーの増幅(8)を行うことで、中継機能を実現している。

リピータ
10Base-2/5の場合
			10Base-2/5
	>-------+------------------<
		|
	+-------+-------+
	|   リピータ	|
	+-------+-------+
		|
	>-------+------------------<
			10Base-2/5
Hub
10Base-T/100Base-TXの場合(9)
		+---------------+
		|     Hub	|
		+---+---+-------+
		    |   |
		    |   | 10Base-T
		    |   |

特徴としては次のようものが揚げられる。

  1. では、Hubとリピータは区別してるが、両方をまとめてリピータ(振舞いの名前)と呼ぶことも多い。

    逆に、Hubという言葉は、Star型のネットワークトポロジィの中心に置く物(形状としての名前)という意味なので、逆にSwitchもHub (その場合はSwitching Hubと呼ぶ)と呼ぶことがあるので、注意。

  2. いわゆる、アンプリファイすること。

    必ずしも「信号」の増幅を行うわけではない。もし、ケーブル中に「雑音」が入っていれば、それも一緒に増幅する。

  3. 100Base-TXのHubというのは大変めずらしい..

論理層の中継装置

フレームの中継機能

論理層の中継装置(10)は、フレームを中継する。

リピータ
10Base-2/5の場合
			10Base-2/5
	>-------+------------------<
		|
	+-------+-------+
	|   ブリッジ	|
	+-------+-------+
		|
	>-------+------------------<
			10Base-2/5
Hub
10Base-T/100Base-TXの場合
		+---------------+
		|     Switch	|
		+---+---+-------+
		    |   |
		    |   | 10Base-T
		    |   |

特徴としては次のようものが揚げられる。

  1. ここでは、Siwtchをマルチポートブリッジとして扱っている。しかし、後に述べるように、現在商品としてのSwitchは、単にブリッジとしての機能をもつのみならず、様々な機能を提供しているので、簡単に並べることはできない。

トラフィックスの分割

ブリッジの機能の一つに、トラッフィク空間を分割するという機能がある(11)

これは、「ブリッジのInterfaceに接続されている個々のセグメントで利用されているMAC Addressを観察することによって、各々のセグメントに所属しているMAC Addressを学習し、もし、同一セグメント内の通信であれば、他のセグメントに中継しない」という機能である。

これを機能によって、パケットの複製をできるだけ少くし、ネットワーク帯域を有効利用できる可能性が生れる。

  1. 以下の機能は、最近のブリッジ/Switchでは当然のように塔載されている機能であるが、古いブリッジにはなかったこともある.. (馬鹿ブリッジ..)

    その当時は、この機能をもつブリッジをLarnning Bridgeと呼んで区別したが、現在、この区別は意味がない(馬鹿ブリッジがないので.. )。

冗長経路とスパンニングツリープロトコル

リピータだけで作られているネットワークは、冗長経路(12)をもつことができない(13)

原理的には、ブリッジも同様なことが言えるが、最近のブリッジは、ブリッジ間で、情報を交換することにより、冗長経路を検出し、ネットワーク上でのLoopを除去する(14)

この情報交換を行う規約が、スパンニングツリープロトコルである。

  1. 冗長経路というのは、二つのNode間で通信をする経路が複数あることを意味する。
  2. なぜなら、冗長経路があるということは、経路のLoopを意味し、リピータは原則として全てのフレームを経路に中継するので、同一のフレームがLoopした経路をいつまでも回り続けるけることになる。

    もちろん、その結果は、その「ネットワークの壊滅」を意味する。

  3. 具体的には、Loopを検出するとLoopを構成しているブリッジの一つの口を自動的無効に(ないものと.. )することによって、そのLoopを断ち切る。

    この結果、ネットワークは、木構造となる(これが、スパンニングツリーという名前の由来)。

    もちろん、何らかの障害が生じて、現在利用している経路が失われた場合は、無効にした口を復活させることによって、接続を自動回復する。

Router

Router とは

Routerは、Network層( Layer-3 )の中継装置であり、Network層のAddress(15)に基いて中継を行う。

  1. 以下では、暫くNetwork層のProtocolとしては、IP ( Internet Protocol )しか扱わないので、以下、IP Networkを想定して説明する。

    したがって、ここでのAddressはIP Addressを指す。

(IP) Router と Routing Table

Routerは他の中継装置(16)に対し、予めRouterに中継のための情報が入っていない限り中継を行わない点が大きく異なる。

Routerは、自分の所に届いたIP Packetの宛先( Destination ) Addressを見、その宛先Addressに対応した中継先が予め判っていれば、それに従って中継を行うが、そうでなければ、そのPacketは捨てられる(17)

この送信先のIP Address (のGroup )と中継先( Next Hop )の関係を記録した、Router内部の表( Table )をRouting (Forwarding) Table(18)と呼ぶ。

  1. 物理層の中継装置は、Repeater, Hub。論理層の中継装置は、Bridge, Switch。
  2. このようにIP Networkでは、何時何処で、どんな理由で、Packetが捨てられるかが解らない。従って、TCP (トランスポート層)の存在が重要になってくる。

    ちなみに、Packetは黙って捨てられるわけでなく、捨てたことをそのPacketの送り元( Source ) Addressに特別な形( ICMPを利用する)で通知する。

    送り元は、この特別な通知を受け取ることによって、通信ができないことを調ることができる。

  3. 後のDynamic Routingの話の場合に、用語が混乱しないよう、僕は、Routing Tableではなく、Forwarding Tableの方の呼び名を好んで利用している。

Routing Aggregation と Addressing

IP Address の block 化

IP Addressが表現できるAddressの個数は2^32なので、ざっと、40億位のAddressがあることになる。

もちろん、これらの個々の全てIP Addressに対して、Routerがその行き先を保持することは、現実的でない(19)

そこで、IP Addressを、block化し、そのblock単位で、宛先を共有する(20)ことを考える。これを経路( Route )の集約( Aggregation )と呼ぶ。

これによって、block内の個々のIP Addressに対しては、別々に中継先を保持する必要がなく(21)なるため、Forwarding Tableを大幅に圧縮(22)できる。

  1. この後述べるように、実際に保持している情報は、通常、数百にも満たない。本当にInternetの真中( Core )にあっても、数万程度である。

    しかし、すでに、その数万で、Core Routerは、悲鳴をあげているのが現実であり。また、それが(後に述べるように.. )本当のIPv4 ( IP Version 4 :現行のIPであり、次世代IPであるIPv6 [ Version 6 ]との区別する場合に利用される)が抱える問題点の一つである。

  2. 正確には、ある程度、「共有させる」という恣意的な意味合いが強い。

    このようなAggregationが行えるように、上手に、Addressをblock化する必要があることが認識され、実施されるようになったのは、最近のことである。

  3. その代わりにといってはなんだが、当然のことながら、そのデメリットとして、そのblockに所属するIP Addressは、同じ中継先に在る必要がでてくる。

    また、当然のことながら、与えられたIP Addressが、どのblockに所属するかも判定する必要があることに注意しよう。

  4. 例えば、平均のblockサイズ(同一のblockに含まれるIP Addressの数)が、Nとすれば、blockを利用しない場合のTable Size Sにたいして、blockを利用する場合のTable SizeはS/Nとなる。

Network Address と (Sub)net Mask

Routerでは、「複数のIP Addressをblock単位で扱う」と述べたが実は、このblockは自由に設定できるわけではない。

まずは、IP Addressとblockの所属関係が簡単に判定できる必要があるので、blockの作り方に関しては強い制約(23)が設けられている。

具体的には、次のような制約である。

Block Size (Net Mask)

Block Sizeは2の羃乗にしかできない。ただし2^0 = 1なので、Size 1のBlockは作れる。

更に、Block Sizeが2^Nの時、先頭の32 - N bitが1で、残りのN bitが0であるような特別なIP Addressの表現(24)を(Sub)Net Maskと呼ぶ。

Blockの開始位置(Network Address)

Blockの開始Addressも制約されている。すなわち、Block Sizeが2^Nの時、Blockの開始Addressは、そのAddressの最後のN bitが0であるものしか選べない(25)

このBlockの開始AddressをNetwork Addressと呼ぶ。

特に重要な点は、このBlockに所属しているIP Addressの先頭の32 - N bitは、全て共通であるという点と、逆に、Blockに所属しないIP Addressの先頭の32 - N bitは、Blockに所属するIP Addressの先頭の32 - N bitと異なるということである。

つまり、先頭の32 - N bitを利用して、Blockに所属しているかどうかが判定できる。

  1. 逆に、この(うまい..)制約によって、判定が簡単になっている。

    当然、制約によって、(色々な点で..)利用しにくくなっているが、これもトレードオフ(速度と使い安さ.. )と考えるべきだろう。

  2. 例えば、Block Sizeが2^8であるような場合は、先頭の32 - 8 = 24 bitが1で、残りの8 bitが0となるので、これを10進数で表現した255.255.255.0 ( 255は1^8 - 1つまり、1が8個並んだ2進数を10進数で表したものである。もちろん10進数0も、2進数で、0が8個並んだものを表す。
  3. SizeとStartが決れば自動的にEndが決るわけで、それは、Start + Size - 1である。ところがSize = 2^Nであり、Startは0がN bit並んだものであるから、Endは、最後のN bitが1となったものであることがわかる。

    このような、Endを表すIP Addressを、Broadcast Addressとよび、特別な意味で利用する。

Network Address を使った Forwarding

RouterはForarding Tableに基き、中継( Packet Forwarding )を行う。そのTableは、Block ( Network Address )単位で、中継先( Next Hop )を決定する仕組になっている。

しかし、実際に与えらえるのはIP Addressであり、これから、Network Addressを得、そして、そのNetwork Addressから、( Forwarding Tableを参照して.. )中継先に中継を行うわけである。

では、IP Addressから、どのようにしてNetwork Addressを求めればよいのだろうか?

実は、この答は、Net maskにある。つまりNet maskが判れば、それからIP Addressの先頭の何bitがNetwork Addressと一致しているかが確定するので、それを取り出し、残りのbitをall-0とすれば、Network Addressが確定する(26)

  1. 実習を行っている人は、ここにきて、なぜ、Network設置にIP AddressのみならずNet maskが必要なのかが、ここで明かになったわけだ..。

Network 設計と IP Address の割り振り

Network設計を行う場合に考えなければならないのは、どの論理Segment ( Routerで区切られ、Hub, SwitchだけからなるNetwork )に、どのIP Addressを割り振るか?という問題である。

通常、一つの論理Segmentに所属するHostの台数は、ある程度予想ができるので、その台数が入る程度のサイズに决める必要がある。

しかし、所属台数は、変化するので、将来、所属台数が、Networkサイズを超えた場合にも、困らない(27)ようにすることも考えておく必要がある。

  1. 一番、安易な方法は、新しいIP Addressに全部書き換えること( renumbering )だが、これは、Userの負担が大きいので、できれば避けたい。

Routing

Forwarding Table

Routerは、Forwarding Tableを利用して、Packetを中継する。逆の言い方をすれば、Forwarding Tableを設定しないかぎり中継をしてくれない。

では、Forwarding Tableをどうやって設定すればよいか。

その方法は、端的に言えば、次の二種類に分類できる。

Static Routing

要するに、手動で、直接Forward Tableに情報を書き込むやり方であり、一旦設定すると、次に設定するまで、内容が変化しないので静的( static ) Routingと呼ばれる。

Networkの変化に対応できないし、また、全て人の手を経由するので、設定が大変であるという欠点はあるものの、最も細かく設定ができる(28)という利点がある。

Dynamic Routing

Router自身が、Routeを探し出し、その結果をForwarding Tableに反映する。

Networkの変化に応じてForwarding Tableが変化するので動的( Dynamic ) Routingと呼ぶ。

手間いらずで便利だが、計算機のやることなので、思いもかけない結果になったり、また、自動化のために、幾つかの制約があり、これがNetwork設計に影響を与えたりする。

Dynamic Routingにも様々な形式があり、それぞれ特徴がある。

RouterがDynamic Routingするためには、隣接のRouterと情報交換を行う必要がある。このようにRoutingするためにRouter間で通信ProtocolをRouting Protocolと呼ぶ。

  1. 最悪、これを使えば、Router管理者は、RouterのRoutingを完全に支配できる。