ルーターは複数のネットワークを相互接続するために四つの仕事をこなしている。では,これらの仕事を実行するルーター装置の中身はどうなっているのか。このPart2ではルーター内部のハードウエアと,そこでの処理内容に焦点を当てて見てみよう。
ルーターには「接続」「転送」「選別」「管理」という四つの仕事がある。Part1の最後で,そのように結論づけた。四つの仕事はどれも重要である。しかし,ルーターという装置にかかる負荷の大きさはかなり違う。
管理の仕事は処理速度よりも信頼性が求められる。管理用の経路情報が入ったパケットが処理しきれないほど大量に届くことはないし,受け取ったパケットを急いでほかに転送する必要もない。それよりは,受信した経路情報から確実に正しい経路表を作ることが大切だ。しかし,パケット転送に関係する「転送」「選別」「接続」の仕事は,何よりもスピードが要求される。
ルーターは複数のネットワークの間に立ってIPパケットを中継する装置である。ルーターの処理能力は単位時間当たりにどれだけのパケットを行き来させられるかで決まる。このため,ルーター装置の設計で最も重視されるのは,この部分である。
ということで,このあとはIPパケットを受け取ったルーターがどのように処理して適切なインタフェースに送り出しているかに着目していく。パケットを受け取ってから送り出すまでの処理は,4段階に分かれる(図1)。インタフェースからパケットを受け取る「ステップ1:受信」,ヘッダーを解析してパケットをどう扱うかを決める「ステップ2:解析」,パケットを転送先ネットワークに送出できる形にする「ステップ3:加工」,出力インタフェースからパケットを送り出す「ステップ4:送出」だ。

この四つのステップ全体で,Part1で結論づけた「接続」「転送」「選別」の三つの仕事をこなすことになる。
受信パケットをバッファにためる
では,パケットが転送される過程を4段階の処理に沿って見ていこう。
パケットはまずインタフェース回路に入る(図2のステップ1)。インタフェース回路は受け取った信号をビット列に直し,入口側のパケット処理エンジンであるネットワーク・プロセッサに渡す。
パケット処理エンジンは受け取ったフレームをバッファ・メモリーに蓄える。バッファ・メモリーはフレームを保存できるだけの大きさに領域があらかじめ分割されている。このようにいったんためておき,パケット処理エンジンが先に格納されたパケットから順番に次の処理を進める。
バッファのサイズは有限である。処理が間に合わないと,あとから来たパケットが格納できず,捨てられる。これがパケット・ロスという現象だ。
ヘッダーを読みとって解析する
次にパケット処理エンジンはパケットのヘッダーを読みとって解析し,パケットをどのように扱うかを決める作業に入る(図2のステップ2)。
最初に判断するのは,ほかへ転送する必要がないパケットかどうかだ。例えば,あて先がルーター自身になっているパケット。これはICMPなどの制御パケットやルーティング・プロトコルで使う経路情報を伝えるパケットである可能性が高い。こうしたパケットはパケット処理エンジンで扱わず,汎用プロセッサに処理を任せる。
次に確認するのは,フィルタやQoSの対象かどうか。これはフィルタやQoSの条件とパケットのヘッダー情報などが一致するかを順番に調べていく。条件に該当するパケットならば,それに沿った処理をする。
フィルタやQoS条件の検索が済んだらIPアドレスのあて先を読み出し,経路表と付き合わせて転送先のインタフェースを決める。ここまでのプロセスで,パケットをどう扱うかが決まる。フィルタ処理はあるか,QoSの対象パケットか,あて先インタフェースはどこになるか――といったことだ。