ルーティング
[Wikipedia|▼Menu]

ルーティング(: routing)あるいは経路制御(けいろせいぎょ)とは、データを目的地まで送信するために、コンピュータネットワーク上のデータ配送経路を決定する制御の事である。ネットワークのトポロジとトラフィック状態に関する情報を収集するためのプロトコルと、ネットワークを介したルートを設計するためのアルゴリズムで構成される[1]
概要

OSI参照モデルのネットワーク層(第3層)の中継機器がこの制御を担っている。

ルーティングを行うための通信プロトコルを「ルーティングプロトコル」という。

経路が判明すれば、その経路に沿って、発信元から最終的な受取先へ、結節点またはノード(ここではルータと呼ばれる)を経由しながら転送を繰り返して情報が送られる。情報はパケット(小包の意。データをある程度の量ずつに小分けして送信する、その一単位)として送られ、各パケットには論理的なアドレスが付加してある。各ルータはルーティングテーブルという表を保持しており、この表に従ってパケットの転送先を決定する。

ルーティングテーブルとはネットワーク上の様々な宛先に対する最も良い経路が記録されたものである。ルーティングの目的は、ルーティングテーブルを構築・維持・管理することである。ルーティングでは、似たアドレスはネットワークの近傍に存在するようにアドレスが構造化されていることを想定している。
(例えばjp.example.orgから見ると、us.example.orgはtw.example.orgより遠く、ru.example.orgより近い。全て架空のアドレス)

また、ネットワーク的に近傍にある複数のアドレスを、ルーティングテーブル内の一つの項目にまとめることができる。
(例えば、***.example.orgから転送する場合、ルーティングテーブルで example.org を参照する)
この点がネットワークのブリッジと異なる点であり、インターネットにおける経路決定の主要な方法になっている理由である。

ルーティングには、スタティック(静的)ルーティングとダイナミック(動的)ルーティングとがある。

小規模なネットワークでは、手動でルーティングテーブルを構成してもよい (静的ルーティング)。ネットワークが大規模になると複雑なトポロジーを持ち、しかも間断なく変更される。そのためルーティングテーブルの構築は大きな問題となりがちである。それでもなお、公衆交換電話網は、ルーティングテーブルをあらかじめ計算し用意した上で、最も短い経路が使えなくなった場合に備えて予備回線も用意する方法をとっている。動的ルーティングは自動的にルーティングテーブルを構築する方法によって、この問題を解決しようというものである。ルーティングテーブルの構築はルーティング・プロトコルによって伝えられる情報に基づいて行われる。この手法によって、通信の断絶が起きないように、自律的といっていいほどのルーティング能力が得られる。だが、プロトコルの構成には技術が要求され、現時点ではルーティングが完全に自動的に行われるというわけではない。

インターネットのようなパケット交換(packet switching)方式ではデータはパケットに分解される。パケットには個々に完全な宛先がラベルされ、独立してルーティングされる。対照的な方法である公衆交換電話網のような回線交換方式(circuit switching: 回路を実際に接続するなどの方法で持続的な回線を用意する方式)でも、電話の発呼のように、回線への経路を探すためにルーティングが行われる。しかし一旦接続が成立すれば、完全な宛先をラベルとして貼らなくても連続的に大量のデータを送ることができる。

ルーティングを行う装置としては、レイヤ3スイッチルーターなどがあるが、一般的にルーティングと言う場合にはレイヤ3以上のアドレス(ここではIPアドレス)に関する経路制御を指す。
ルーティング方式

ルーティング 方式


エニーキャスト


ブロードキャスト


マルチキャスト


ユニキャスト


ジオキャスト(英語版)


.mw-parser-output .hlist ul,.mw-parser-output .hlist ol{padding-left:0}.mw-parser-output .hlist li,.mw-parser-output .hlist dd,.mw-parser-output .hlist dt{margin-right:0;display:inline-block;white-space:nowrap}.mw-parser-output .hlist dt:after,.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{white-space:normal}.mw-parser-output .hlist li:after,.mw-parser-output .hlist dd:after{content:" ・\a0 ";font-weight:bold}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist-pipe dd:after,.mw-parser-output .hlist-pipe li:after{content:" |\a0 ";font-weight:normal}.mw-parser-output .hlist-hyphen dd:after,.mw-parser-output .hlist-hyphen li:after{content:" -\a0 ";font-weight:normal}.mw-parser-output .hlist-comma dd:after,.mw-parser-output .hlist-comma li:after{content:"、";font-weight:normal}.mw-parser-output .hlist-slash dd:after,.mw-parser-output .hlist-slash li:after{content:" /\a0 ";font-weight:normal}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")\a0 ";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)" ";white-space:nowrap}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)" "}.mw-parser-output .navbar{display:inline;font-size:75%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:88%}.mw-parser-output .navbox .navbar{display:block;font-size:88%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}











ユニキャスト - 単一の特定のノードにメッセージを配信

ブロードキャスト - ネットワーク内のすべてのノードにメッセージを配信

マルチキャスト - メッセージを受信する特定のノードのグループにメッセージを配信

エニーキャスト - ソースに最も近い、典型的には1ノードのグループにメッセージを配信

ジオキャスト(英語版) - 地理的領域にメッセージを配信

動的ルーティングの基礎

指示された経路が有効でなくなっている場合、現存するノードを使った別の経路を決めなければならない。これは通常ルーティングプロトコルと経路決定アルゴリズムによってなされる。経路決定アルゴリズムには二種類あって、一つは距離ベクトルアルゴリズム (distance vector algorithm, 以下DVA)、もう一つはリンク状態アルゴリズム (link state algorithm, 以下LSA) である。この内どちらか一方が用いられるが、この二つがわかれば、インターネット上の経路決定問題はほとんど理解できることになろう。

以下用いられる「コスト」ないし「距離」は経由するルータの数(「ホップ数」)や回線速度を数値化したもので、「メトリック metric」と呼ばれる。メトリックの決定法はプロトコルによって異なる。
DVA

DVAは Bellman-Fordアルゴリズムを用いている。この方法では、各ノード間に「コスト」と呼ばれる数値が割り振られる。二点間を結ぶ経路のコストは、その間に経由するノード間のコストの総和であり、その情報はノードから得られる。

アルゴリズムは極めて単純である。最初の段階では、各ノードは直近のノードがどれかという情報と、それらの間とのコストだけを知っている(このような、「行き先リスト」とそれぞれの総コスト、やりとりするべき「次の相手(next hop)」を集めたものがルーティングテーブルないし、ディスタンステーブルである)。定期的にノード間でやりとりがなされ、互いにルーティングテーブルのデータを交換する。もし隣から渡されたデータに、自分のルーティングテーブルより優れたもの(同じ行き先に到達するのに、コストが少ない)があれば、それを用いてテーブルを更新する。自分のテーブルにない相手への情報が入っていた場合も同様である。時間をかけると、全てのノードがあらゆる宛先についての最良の「次の相手」と最良の「コスト」を見つけだす。

あるノードが脱落した場合は、そこを「次の相手」としていたノード全てにおいて、ルーティングテーブルの破棄と再構築が行われる。この情報は隣のノードに次々伝えられて行き、最終的には到達可能な全てのノードについて最良の経路が発見されることになる。

経路収束が遅いため、現在はあまり用いられていない。
LSA

LSAでは、各ノードが用いるのはネットワークのマップであり、それはグラフの形で格納されている。このマップをつくるために、全てのノードがネットワーク全体に「自分が接続しているノード」をブロードキャストする。各ノードはそのデータをもとに、個々独立してマップを計算し生成する。自分で生成したマップをもとに、各ノードは他のノードへの最短経路を決定する。

最短経路の計算にはダイクストラのアルゴリズムが用いられる。このアルゴリズムはネットワーク全体を木構造で表現する。木の根(最初の要素)は各ノードそれ自体である。次いで、ノードの集合から未登録のノードを一つずつ木に加えていく。加えるノードは既に木に存在するノードのどれかから到達できるノードのうち、最も少ないコストで到達できるものである。ネットワーク上の全てのノードを登録するまでこれを繰り返す。

木構造ができあがったら、それを用いて、ルーティングテーブルをつくる。最良の「次の相手」等がそこに登録される。
ルーティッドプロトコルとルーティングプロトコル


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:20 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef