スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ルータの中身と仕事

日経NETWORK 2004.8「ルータの中身と仕事」P.59~P.77

 みなさんは「ルータとはどんな装置でしょうか?」と聞かれてなんと答えますか?
一言で言えば「あるネットワーク間でパケットを転送(ルーティング)する装置」となるのかもしれませんが、皆さんご存知のように最近のルータはそれだけでは語りつくせないほどいろいろな事をしています。今回の特集ではそんな「ルータの中身と仕事」について解説されています。

「いまさらそんなこと説明されなくても・・・」と思う方もいるかもしれませんが(私もそう思いました。^^;)、新しい発見もあってなかなか面白い記事でした。
 はじめに興味深かったのがpart1「定義」の最後にある「ルータは、L3スイッチとどこが違う?」というコラムです。これについては、私の周りでも上司に聞かれて回答に困っている人がいました。(笑)
この記事では、L3スイッチの特徴について次のように定義しています。

(1)L3スイッチは、ルータとLANスイッチが一体化したもの
(2)ローカルルータが行っていた社内のイーサネット同士を接続するために特化して作られているため、価格の割にパケット転送能力が高い
(3)イーサネット以外のインターフェースを持たない
(4)実装上のルーティングプロトコルの信頼性に疑問が残る
(5)パケットフィルタリングやQoSといった機能が貧弱であったり、柔軟性に欠ける

 たしかに、Catalyst3550なんかではイーサネットインターフェースだけですし、私自身もルーティングプロトコルであるIS-ISが使えない(router isisコマンドは入るが動かない)とか、PBR(Policy Based Routing)ができなかったという経験があります。(最近のIOSでは問題ないかもしれませんが・・・)

しかしながら、ハイスペックなルータではASICによるパケットの高速転送もできますし、イーサネット以外のインターフェースを持つL3スイッチもあります。(4)や(5)についてもメーカーの実装次第だと思いますので、個人的には今後ますますL3スイッチとルータの分類があいまいになっていって、上司の素朴な質問の回答に苦しむ人が増えるのではないかと思います。(笑)

そのほかに興味深かったのが、Part3「高速化技法」でルータがパケットを転送する際のヘッダ解析処理について触れられています。

 ルータがルーティングテーブルから、IPヘッダのあて先に適合するルートを見つけ出すとき、どのような方法があるのでしょうか?

 まず誰もが思いつく方法として、単純にルーティングテーブルを上からひとつひとつ見ていくやり方があります。この方法では運がよければ1回目の比較で見つかるかもしれませんが、基本的にルータはロンゲストマッチ検索(最も長くアドレスのビット列が一致する経路を使う)を行いますので、より長く一致するルートを探す必要があるため最後までテーブルを確認する必要があり、テーブルが大きければ大きいほど時間がかかり現実的ではありません。
 
そこで探索法の定番といわれているツリー法とハッシュ法について解説されていますが、個人的に「なるほどねぇ~~」と思ったのがハッシュ法でした。

ハッシュ法はハッシュ関数を使います。ネットワークの世界ではよく出てくる言葉ですが、ハッシュ関数とは何でしょうか?

【ハッシュ関数】
 数字や文字など不定長の文字列を一定長のデータに要約するための関数・手順のことであり、出力されるデータはハッシュ値と呼ばれる。“SHA-1”や“MD5”というハッシュ関数が代表的で、いずれも一方向関数であるため生成データから原文を推定することは不可能であるが、原文が同じであればハッシュ値は必ず同じになる。

 ここで重要なのは“不定長の文字列を一意な一定長のデータに要約できる”ということです。

これにより比較する文字列を減らすことができ、検索処理の高速化につながります。特にハッシュ法は、比較する文字列が長くなりがちなフィルタ検索に向いているそうです。

たとえば「MACアドレスがXかつ、IPアドレスがYで、ポート番号がZであるIPパケットをフィルタする」といった場合、MACアドレス48ビット+IPアドレス32ビット+ポート番号16ビット=96ビット分のビット列をパケットを受信するたびに比較する必要があります。そこでこのビット列を短い4ビットのハッシュ値に変換しておき、パケットを受信するたびに、そのヘッダのMACアドレス、IPアドレス、ポート番号をハッシュ関数にかけて、ハッシュ値同士を比較すれば4ビットの比較だけですみます。

※実際にはすべてビット列を4ビットで表現するため、元データが違ってもハッシュ値が重複する可能性があるため、これほど簡単には短くできないようです。

私は、ハッシュ関数はMD5認証などセキュリティで使うものだと思っていましたが、このような検索処理に使えるということでとても感心しました。これを考えた人は偉いですね!(笑)

最後に、まったく別の手法が紹介されています。それはCAMと呼ばれる専用チップを使う方法です。
 CAMはビット列の比較機能を持った特殊なメモリーで、あらかじめ登録しておいたビット列と、入力したビット列を比較して、合致するものを瞬時に出力するというものです。

 私は今まで「CAMは高速にMACアドレスを検索できるもの・・」という漠然とした認識しかなく、なにげにCatalystで“show cam dynamic ・・・”なんて叩いてましたが、この特集で改めてCAMの優位性を再認識しました。

 以上、「ルータの中身と仕事」というタイトルから一見初歩的な解説に思える記事ですが、いろいろ勉強になる内容でしたので、みなさんも一読されてみてはいかがでしょうか?
スポンサーサイト


この記事のトラックバックURL

http://cassi.blog34.fc2.com/tb.php/4-504f0493

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

FC2アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。