RTX2000、RTX1500、RTX1200、RTX1100、RTX1000、RTX810、RT107e、SRT100、NVR500、RT58i、RT57i、RTV700 では、パケット転送を高速に行なうためにファストパスと 呼ばれる技術が利用されています。ファストパスでは、パケット転送を高速に 行なえますが、その代わりに一部の機能に制約があります。この文書ではファス トパスとその特徴について解説しています。
ファストパスの実装は利用しているCPUによってそれぞれ異なります。ファ ストパスを実装しているRTシリーズでは以下のようなCPUを利用しており、 それぞれの機種は3つのグループに分けることができます。この文書では、 それぞれ以下のように呼ぶことにします。
| 呼称 | RTX2000系 | RTX1500系 | RTX1000系 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 機種 | RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 |
| CPU | Intel IXP1200 | ADI AD6846 | MIPS | Brecis MSP2000 | ARM | MIPS | ARM | XScale | MIPS | |||
| ファストパス | 最初から | Rev.7.01系 | 最初から | |||||||||
| IPv4 over IPv4 | − | 最初から | Rev.8.03.37以降 | − | 最初から | Rev.8.00.66以降 | Rev.8.00.69以降 | |||||
| IPv6 | − | 最初から | Rev.8.03.37以降 | − | 最初から | Rev.8.03.42以降 | 最初から | − | ||||
ファストパスとは、パケット転送を高速に処理するための仕組みです。 ファストパスを使わずにパケットを転送する処理は、ノーマルパス、あ るいはスローパスと呼んでいますが、どちらも同じ意味です。
ファストパスでは、パケットを高速に処理するために特別なテーブルを 持っています。
RTX1000系、RTX1500系ではすべての場合で、RTX2000系では後述する独自 経路テーブルで扱えない場合には、ルータが処理するパケットを種類別 に分類して、フローとして扱います。フローとして分類する際に利用す る情報は以下の通りです。
始点、終点IPアドレス
プロトコル
始点、終点ポート番号 (TCP/UDPの場合)
Identifier (pingの場合)
フローの先頭のパケットはノーマルパスで処理しますが、その際にフロー をどのように処理するかをフローテーブルに記録しておきます。この時 フローテーブルに記録するのは、パケットをフィルタで落すかどうか、 NAT/IPマスカレード変換したならばどのように書き換えるか、パケット を送信するポートとその時のL2ヘッダ、などがあります。
フローの後続のパケットは、フローテーブルに記録されている情報を参 照してファストパスで処理を行ないます。ノーマルパスで必要な、経路 テーブルの参照、フィルタの適用、NAT/IPマスカレードテーブルの参照、 L2ヘッダの構築などがフローテーブル一つですべて処理できるためにノー マルパスに比べて圧倒的に高速な処理が可能になっています。
フローテーブルのサイズは有限で、 別表 のようになっています。1つのセッションでは方向別に2つのフローを必 要とするので、同時に管理できるセッションはそれぞれ約半分となりま す。これ以上のセッションについては、ノーマルパスで処理されること になります。
RTX2000系では、ファストパス独自の経路テーブルを持っています。以下 の条件にすべて合致する場合には、独自の経路テーブルに従ってパケッ トをファストパス処理することができます。
IPv4パケット
終点IPアドレスはユニキャスト
経路テーブルに、複数のゲートウェイを持つ経路が登録されていな い
入出力のインタフェースに、静的/動的フィルタ、NAT/IPマスカレー ドのすべてが設定されていない
複数のゲートウェイを持つ経路とは、以下の経路のことです。
ip routeコマンドによる静的経路で、gateway句が複数設定されてい るもの
OSPFのイコールコストマルチパス経路
RTX2000系のRev.7.00系ファームウェアでは複数のゲートウェイを持つ経 路は利用できません。複数のgateway句を持つip routeコマンドはエラー となりますし、OSPFのイコールコストマルチパス経路でもそのうちの1つ だけが経路テーブルに登録されます。Rev.7.01系のファームウェアでは、 複数のゲートウェイを持つ経路が利用できるようになりますが、複数の ゲートウェイを持つ経路がある場合には、フローテーブルを用いた処理 となります。
これらの条件に合致しない場合には、前述のフローテーブルを用いた処 理を行ないます。また、RTX2000系以外の機種では、ファストパス独自の 経路テーブルを持っていませんので、ファストパスは常にフローテーブ ルを用いる処理になります。
機種によってファストパスの実装方法が異なりますので、それぞれにつ いて説明します。
RTX1000系では、CPUとして特別なものを搭載しているわけではなく、パ ケット転送処理はファストパス、ノーマルパスとも一つのCPUで処理され ます。RTX1000系では、ファストパスとノーマルパスの処理の優先度を変 えることで高速転送を可能にしています。
ノーマルパスによる処理の場合は、LANインタフェースから受信したパケッ トを、いったんLANドライバソフトが受信した後にOSを通じてノーマルパ スを処理するソフトに引き渡すのに対して、ファストパスではLANドライ バソフト内で処理をすべて終えてしまいます。LANドライバソフトは割り 込みコンテキストで動作しているのでパケットを受信したら最優先で処 理されるのに対し、ノーマルパスはOSによって管理されるタスクコンテ キストでの処理なので、パケットを処理中でも他のタスクや割り込みコ ンテキストによって処理が遅れることがあります。
┌───────────┐ ┌───────┐ ┌───────┐ │ ノーマルパスタスク │ │ 他のタスク │ │ 他のタスク │ └───────────┘ └───────┘ └───────┘ ↑ │ │ │ タスクコンテキスト ─────────────────────────────────── │ │ ┌─────────┐ │ OS │ └─────────┘ │ │ ─────────────────────────────────── │ │ 割り込みコンテキスト │ ↓ ┌─────────┐ │ ↑ │ │ │ │ ↓ │ │ LANドライバ │ │ │ │ │ │ ├─→─┤ │ ← ファストパス処理 │ ↑ ↓ │ └─────────┘ ↑ │ │ ↓ ┌────────────┐ │ LANインタフェース │ └────────────┘
RTX1500系は、CPUとしてADI AD6846を利用しています。このAD6846はメ インCPUとしてMIPS系RISC CPUを1個、パケット転送や暗号化処理などを 行なうための専用のアクセラレータプロセッサと呼ばれるサブCPUを5個 搭載しています。5個あるアクセラレータプロセッサの内訳は、3つある LANインタフェースにそれぞれ1つずつ、暗号化専用に1つ、バッファ管理 などの汎用の目的に1つとなります。RTX1500系のファストパスでは、メ インCPUを使わず、アクセラレータプロセッサだけでパケットを転送しま す。
┌────────┐ │ メインCPU │ ← ノーマルパス処理 └────────┘ ↑ │ │ ↓ ┌──────────┐ │ ↑ │ │ │ │ ↓ │ │ アクセラレータ │ │ プロセッサ │ │ │ │ │ │ ├─→─┤ │ ← ファストパス処理 │ ↑ ↓ │ └──────────┘ ↑ │ │ ↓ ┌────────────┐ │ LANインタフェース │ └────────────┘
アクセラレータプロセッサはパケット処理専用に設計されたCPUであり、 通常のCPUのような複雑な処理を行なうことはできません。その代わりに 高速にパケット処理ができるようにさまざまな工夫が施されています。 また、それぞれのアクセラレータプロセッサは並列に動作できるため、 複数のLANインタフェースからの入力を同時に扱ってもスピードが落ちる ことがありません。
RTX2000系は、CPUとして Intel IXP1200 を利用しています。このIXP1200はメインCPUとしてStrongARMを1個、パ ケット転送専用のマイクロエンジンと呼ばれるサブCPUを6個搭載してい ます。RTX2000系のファストパスでは、メインCPUを使わず、マイクロエ ンジンだけでパケットを転送します。
┌────────┐
│ メインCPU │ ← ノーマルパス処理
└────────┘
↑ │
│ ↓
┌──────────┐
│ ↑ │ │
│ │ ↓ │
│ マイクロエンジン │
│ │ │ │
│ ├─→─┤ │ ← ファストパス処理
│ ↑ ↓ │
└──────────┘
↑ │
│ ↓
┌────────────┐
│ LANインタフェース │
└────────────┘
マイクロエンジンはパケット処理専用に設計されたCPUであり、通常の CPUのような複雑な処理を行なうことはできません。その代わりに高速に パケット処理ができるようにさまざまな工夫が施されています。また、 6個あるマイクロエンジンは個々が並列に動作できるのみならず、1個あ たり最大4つのスレッドをハードウェア的に切替えながら同時に走らせる ことができます。そのため、多くのLANインタフェースからの入力を同時 に扱ってもスピードが落ちることがありません。
以下のコマンドで、ファストパスを動作させるかどうかを選択できます。
'normal'を設定した場合には、ファストパスを使わずノーマル パスだけで動作します。
'fast'を設定した場合には、ファストパス動作となり高速なパ ケット転送処理が行なわれます。
ipv6 multicast routing process コマンドを廃止し、本コマン ドに統合した。そのため、本コマンドで fast を設定した場合、 IPv6マルチキャストパケットもファストパスで処理される。
以下のような条件に該当するパケットは必ずノーマルパスで処理されま す。
IPv4またはIPv6ではないパケット
ARP、RARPも含みます
終点IPアドレスがルータ自身のIPアドレスになっているパケッ
ト
ただし、IPsecのESPパケットでルータ自身が管理しているVPNト
ンネルのパケットはルータ宛でもファストパスでの処理となり
ます。
また、IPIPトンネルのファストパス化対応機種では、同様に
IPIPトンネルのパケットはルータ宛でもファストパスでの処理
となります。
フラグメントする必要があるパケット
ただし、IPsecトンネルで暗号化して転送する時にフラグメント
が必要な時は、ファストパスでフラグメントまで処理していま
す。
フラグメントされているパケット
SYN/FIN/RSTビットがセットされているTCPパケット
これらのビットはTCPのセッションの開始、終了を表すものです
が、動的フィルタのセッション管理はノーマルパスでしか行な
えないため、これらのビットがセットされているパケットはノー
マルパスに回します。
FTPの制御セッションのパケット
フローテーブルが一杯になってしまい、新たにフローテーブル に追加できないフローのパケット
LAN分割機能のポートを経由するパケット
ただし、RTX1200、RTX810についてはファストパスでの処理となります。
終点IPアドレスがブロードキャストになっているパケット
IPオプションが付いているパケット
ICMPエラーを送る必要があるパケット
具体的には、以下のようなものが該当します。
DHCP関連のパケット
折り返しパケット(始点IPアドレスと終点IPアドレスが同じパケット) ※
※ RTX1500のRev.8.03.92以降のみが対象となります。
パケットを転送する先のホストやゲートウェイのARPがまだ解決 できていない時
IPv6ヘッダのNext Headerが、TCP、UDP、ICMPv6、ESP、 IPv4(4)、IPv6(41)以外の場合
ICMPv6エラーを送る必要があるパケット
具体的には、以下のようなものが該当します。
DHCPv6関連のパケット
パケットの終点IPv6アドレスに相当する近隣キャッシュ (Neighbor Cache)がない時
IPv4およびIPv6の静的/動的フィルタ、IPv4のNAT/IPマスカレードの処理 では、TCPとUDPだけがファストパスで処理されます。ただし、フローの先 頭のパケットだけはフィルタの適用結果やNATの変換方法をファストパス 用のキャッシュであるフローテーブルに記録する必要があるため、ノーマ ルパスでの処理となります。同じフローの後続のパケットはフローテーブ ルを利用しながらファストパスで処理します。
IPsecによるVPNのトンネルでは、以下の条件を満たすものはファストパ スで処理します。
注: RT57i、RT58i、NVR500はIPsecの機能を持っていません。
IPv4 over IPv4 IPsec、IPv4 over IPv6 IPsec、IPv6 over IPv4 IPsec、IPv6 over IPv6 IPsecトンネルをファストパスで処理します
| 機能 | RTX2000系 | RTX1500系 | RTX1000系 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | RTV700 | |
| IPv4 over IPv4トンネル | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| IPv6 over IPv6トンネル | × | × | ○ | ○※2 | × | ○ | ○※1 | ○ | × |
| IPv4 over IPv6トンネル | × | × | ○ | ○※2 | − | ○ | ○※1 | ○ | − |
| IPv6 over IPv4トンネル | × | × | ○ | ○※2 | − | ○ | ○※1 | ○ | − |
プロトコルはESPトンネルのみ
トランスポートモードおよびAHトンネルはノーマルパスで処理しま
す。
IPCompを使わない設定になっている
暗号アルゴリズム、認証アルゴリズムはハードウェア処理できるも
ののみ
ソフトウェア処理が必要なアルゴリズムを使う場合にはノーマルパ
スの処理となります。
| 機能 | RTX2000系 | RTX1500系 | RTX1000系 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | RTV700 | ||
| 暗号 | DES | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 3DES | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |
| AES | × | ○ | ○ | ○ | × | ○ | ○ | ○ | × | |
| 認証 | MD5 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| SHA | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |
○: ハードウェア処理できるアルゴリズム
×: ソフトウェア処理になるアルゴリズム
静的/動的フィルタ、NAT/IPマスカレードについてはVPNトンネルで はない場合と同じ条件
IP over IPトンネルでは、以下の条件を満たすものはファストパスで処 理します。
IPv4 over IPv4、IPv4 over IPv6、IPv6 over IPv4、IPv6 over IPv6トンネルをファストパスで処理します
| 機能 | RTX2000系 | RTX1500系 | RTX1000系 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 | |
| IPv4 over IPv4トンネル | × | × | ○ | ○※1 | × | ○ | ○ | ○ | ○ | ○ | ○※4 | ○※5 |
| IPv6 over IPv6トンネル | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × |
| IPv4 over IPv6トンネル | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × |
| IPv6 over IPv4トンネル | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × |
IPsec、IPIPトンネルをファストパスで処理する条件は以下のようになり ます。
| コマンド設定 | IPv4 over IPv6 | IPv6 over IPv4 | IPv4 over IPv4 | IPv6 over IPv6 | |
|---|---|---|---|---|---|
| ip routing process | ipv6 routing process | ||||
| fast | fast | ◯ | ◯ | ◯ | ◯ |
| fast | normal | × | × | ◯ | × |
| normal | fast | × | × | × | ◯ |
| normal | normal | × | × | × | × |
ファストパスではパケットの転送を高速に行なうことを主眼としており、 ノーマルパスでの処理を100%再現することはしていません。そのため、 ノーマルパスに対して、以下のような機能の制限があります。
pass-logフィルタにより通過したパケットのログを取ることはできない
IDS機能が働かない
ただし、RTX1200、RTX810、SRT100、NVR500についてはファストパスに対応しているため
この制限はありません。
いずれも、ファストパスでパケットが処理された場合だけの制限ですか ら、パケットがノーマルパスで処理される場合にはこれらの機能は正し く働きます。例えば、pass-logフィルタを利用していると、最初の1パケッ トだけはフローテーブルを作るためにノーマルパスで処理されるためロ グに記録されるが、その後のパケットはファストパスで処理されるため 記録されなくなるといった動作になります。
フローテーブルのサイズ
フローテーブルのサイズを越えたフローはノーマルパスで処理されるた め、速度が落ちます。フローテーブルのサイズは有限で、各機種毎に以 下の表のようになっています。これは片方向あたりですから、セッショ ン数で言えばそれぞれ約半分となります。これを越える通信はノーマル パスでの処理となるので、ファストパスでの処理に比べて速度が大きく 落ちてしまいます。特に、RTX2000では速度差が大きいので注意してくだ さい。
IPv6のファストパスに対応した機種、ファームウェアでは、IPv4、IPv6 それぞれ別のフローテーブルで管理されます。
| RTX2000系 | RTX1500系 | RTX1000系 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 | |
| フローテーブルのサイズ | Rev.7.01.29以前 16384 Rev.7.01.34以降 65536 |
65536 | 65536 | 16384 | 32768 | 16384 | ||||||
ファストパスで処理する機能
ファストパスで対応する場合は○、そうでない場合は×、その機能がな い場合は−で示します。
| 機能 | RTX2000系 | RTX1500系 | RTX1000系 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 | ||
| 優先制御、帯域制御 | ○ | ○ | ○ | ○ | × | ○ | ○※6 | ○ | × | × | × | × | |
| IPsecのESPトンネルのUDPカプセリング | ○ | × | ○ | ○ | ○ | ○ | ○ | ○ | − | − | − | ○ | |
| TOSフィールドの書き換え機能 | × | ○※1 | ○ | ○※1 | × | ○ | × | ○ | × | × | × | × | |
| IPsecのESPトンネル | IPv4 over IPv4 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | − | − | − | ○ |
| IPv6 over IPv6 | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | − | − | − | × | |
| IPv4 over IPv6 | × | × | ○ | ○※3 | − | ○ | ○※2 | ○ | − | − | − | − | |
| IPv6 over IPv4 | × | × | ○ | ○※3 | − | ○ | ○※2 | ○ | − | − | − | − | |
| IPIPトンネル | IPv4 over IPv4 | × | × | ○ | ○※1 | × | ○ | ○ | ○ | ○ | ○ | ○※4 | ○※5 |
| IPv6 over IPv6 | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × | |
| IPv4 over IPv6 | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × | |
| IPv6 over IPv4 | × | × | ○ | ○※3 | × | ○ | ○※2 | ○ | ○ | ○ | × | × | |
ファストパスで処理するパケット
ファストパスで処理する場合は○、そうでない場合は×、その機能がな い場合は−で示します。
| パケット | RTX2000系 | RTX1500系 | RTX1000系 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 | |
| VRRPを使用している時の通過パケット | ○ | ○ | ○ | ○※7 | × | ○ | ○ | ○ | − | |||
| 終点IPアドレスが マルチキャストアドレスのパケット |
× | ○※7 | × | |||||||||
| プライマリとセカンダリ間などの 同一LANインタフェース間の通信パケット |
× | ○ | × | |||||||||
| 折り返しパケット | ○ | ×※8 | ○ | |||||||||
その他対応と非対応
対応する場合は○、そうでない場合は×で示します。
| 機能 | RTX2000系 | RTX1500系 | RTX1000系 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RTX2000 | RTX1500 | RTX1200 | RTX1100 | RTX1000 | RTX810 | RT107e | SRT100 | NVR500 | RT58i | RT57i | RTV700 | |
| rejectフィルタのログ | × | ○ | ○ | |||||||||
| ESPパケットのフィルタリング | × | ○ | × | |||||||||
RTX1000系、RTX1500系では、rejectフィルタによりパケットを落すと決
めたフローのパケットはノーマルパスに回すようになっていますが、
RTX2000系ではrejectフィルタによりパケットを落すと決めたフローのパ
ケットはマイクロエンジン内で破棄してしまい、メインCPUにまで通知し
ません。そのため、ログも記録できなくなっています。
またRTX1000系、RTX2000系では、ESPパケットはフィルタリングの処理対象外です。