ファストパス

$Date: 2017/10/11 12:06:55 $


概要

ヤマハルーターのうちいくつかの機種では、パケット転送を高速に行うためにファストパスと呼ばれる技術が利用されています。ファストパスでは、パケット転送を高速に行なえますが、その代わりに一部の機能に制約があります。この文書ではファストパスの仕様について解説します。

ファストパスはハードウェアによる実装とソフトウェアによる実装があり、利用しているCPUによってそれぞれ異なります。ファストパスを実装しているヤマハルーターでは以下のようなCPUを利用しています。

実装方式 機種 CPU ファストパス
IPv4 IPv6
ハードウェア RTX2000 Intel IXP1200 初期リビジョンから -
RTX1500 ADI AD6846 初期リビジョンから 初期リビジョンから
ソフトウェア (マルチコア) RTX5000 PowerPC 初期リビジョンから 初期リビジョンから
RTX3500 PowerPC 初期リビジョンから 初期リビジョンから
ソフトウェア (シングルコア) RTX1210 PowerPC 初期リビジョンから 初期リビジョンから
RTX1200 MIPS 初期リビジョンから 初期リビジョンから
RTX1100 MIPS 初期リビジョンから Rev.8.03.37以降
RTX1000 MIPS Rev.7.01系 -
RTX830 ARM 初期リビジョンから 初期リビジョンから
RTX810 ARM 初期リビジョンから 初期リビジョンから
RT107e MIPS 初期リビジョンから Rev.8.03.42以降
FWX120 ARM 初期リビジョンから 初期リビジョンから
SRT100 MIPS 初期リビジョンから 初期リビジョンから
NVR700W ARM 初期リビジョンから 初期リビジョンから
NVR510 ARM 初期リビジョンから 初期リビジョンから
NVR500 ARM 初期リビジョンから 初期リビジョンから
RT58i XScale 初期リビジョンから 初期リビジョンから
RT57i MIPS 初期リビジョンから -
RTV700 MIPS 初期リビジョンから -

ファストパスの仕組み

ファストパスとは、パケット転送を高速に処理するための仕組みです。ファストパスを使わずにパケットを転送する処理は、ノーマルパス、あるいはスローパスと呼んでいますが、どちらも同じ意味です。

ファストパスでは、パケットを高速に処理するために特別なテーブルを持っています。

フローテーブル

ソフトウェア実装の機種、およびRTX1500ではすべての場合で、RTX2000では後述する独自経路テーブルで扱えない場合には、ルーターが処理するパケットを種類別に分類して、フローとして扱います。フローとして分類する際に利用する情報は以下の通りです。

フローの先頭のパケットはノーマルパスで処理しますが、その際にフローをどのように処理するかをフローテーブルに記録しておきます。この時フローテーブルに記録するのは、パケットをフィルタで落すかどうか、NAT/IPマスカレード変換したならばどのように書き換えるか、パケットを送信するポートとその時のL2ヘッダ、などがあります。

フローの後続のパケットは、フローテーブルに記録されている情報を参照してファストパスで処理を行ないます。ノーマルパスで必要な、経路テーブルの参照、フィルタの適用、NAT/IPマスカレードテーブルの参照、L2ヘッダの構築などがフローテーブル一つですべて処理できるためにノーマルパスに比べて圧倒的に高速な処理が可能になっています。

フローテーブルのサイズは有限で、別表のようになっています。1つのセッションでは方向別に2つのフローを必要とするので、同時に管理できるセッションはそれぞれ約半分となります。これ以上のセッションについては、ノーマルパスで処理されることになります。

ファストパス独自経路テーブル

RTX2000では、ファストパス独自の経路テーブルを持っています。以下の条件にすべて合致する場合には、独自の経路テーブルに従ってパケットをファストパス処理することができます。

複数のゲートウェイを持つ経路とは、以下の経路のことです。

RTX2000のRev.7.00系ファームウェアでは複数のゲートウェイを持つ経路は利用できません。複数のgateway句を持つip routeコマンドはエラーとなりますし、OSPFのイコールコストマルチパス経路でもそのうちの1つだけが経路テーブルに登録されます。Rev.7.01系のファームウェアでは、複数のゲートウェイを持つ経路が利用できるようになりますが、複数のゲートウェイを持つ経路がある場合には、フローテーブルを用いた処理となります。

これらの条件に合致しない場合には、前述のフローテーブルを用いた処理を行ないます。また、RTX2000以外の機種では、ファストパス独自の経路テーブルを持っていませんので、ファストパスは常にフローテーブルを用いる処理になります。


ファストパスの実装

機種によってファストパスの実装方法が異なりますので、それぞれについて説明します。

ソフトウェア (シングルコア) 実装によるファストパス

ファストパスをソフトウェアで実装している機種では、ファストパス、ノーマルパスとも一つのCPUでパケット転送処理を行います。CPUに特別な機能を搭載しているわけではなく、ファストパスとノーマルパスの処理の優先度を変えることで高速転送を可能にしています。

ノーマルパスによる処理の場合は、LANインターフェースから受信したパケットを、いったんLANドライバソフトが受信した後にOSを通じてノーマルパスを処理するソフトに引き渡すのに対して、ファストパスではLANドライバソフト内で処理をすべて終えてしまいます。LANドライバソフトは割り込みハンドラまたは高優先度タスクとして動作しているのでパケットを受信したら最優先で処理されるのに対し、ノーマルパスはその他のタスクと同様の一般優先度による処理なので、パケットを処理中でもタスクスイッチや割り込みの発生によって処理が遅れることがあります。

ソフトウェア (シングルコア) 実装によるファストパス

RTX5000/RTX3500のファストパス

RTX5000/RTX3500はマルチコアCPUを搭載しています。コア数は4で、すべてのコアにおいてLANドライバソフトが高優先度タスクとして動作しています。

ルーターがパケットを受信すると、LANインターフェースがそのパケットをどのコアに振り分けるかを決定します。各コアで動作しているLANドライバソフトがパケットをLANインターフェースから受け取ると、シングルコア機種と同様のファストパス処理を行います。

コアの振り分けは、CPUスケジューリング(パケット転送)機能の設定に従って決定されます。
CPUスケジューリング(パケット転送)機能については、以下の文章を参照してください。

ノーマルパスタスクはコア1で動作しています。

RTX5000/RTX3500のファストパス

4個のコアで同時にファストパス処理が実行される場合に最大のスループットが得られます。1個のコアのみでファストパス処理が実行される場合のスループットは最大スループットの約1/4になります。

RTX1500のファストパス

RTX1500は、CPUとしてADI AD6846を利用しています。このAD6846はメインCPUとしてMIPS系RISC CPUを1個、パケット転送や暗号化処理などを行うための専用のアクセラレータプロセッサと呼ばれるサブCPUを5個搭載しています。5個あるアクセラレータプロセッサの内訳は、3つあるLANインターフェースにそれぞれ1つずつ、暗号化専用に1つ、バッファ管理などの汎用の目的に1つとなります。RTX1500のファストパスでは、メインCPUを使わず、アクセラレータプロセッサだけでパケットを転送します。

RTX1500のファストパス

アクセラレータプロセッサはパケット処理専用に設計されたCPUであり、通常のCPUのような複雑な処理を行うことはできません。その代わりに高速にパケット処理ができるようにさまざまな工夫が施されています。また、それぞれのアクセラレータプロセッサは並列に動作できるため、複数のLANインターフェースからの入力を同時に扱ってもスピードが落ちることがありません。

RTX2000のファストパス

RTX2000は、CPUとしてIntel IXP1200を利用しています。このIXP1200はメインCPUとしてStrongARMを1個、パケット転送専用のマイクロエンジンと呼ばれるサブCPUを6個搭載しています。RTX2000のファストパスでは、メインCPUを使わず、マイクロエンジンだけでパケットを転送します。

RTX2000のファストパス

マイクロエンジンはパケット処理専用に設計されたCPUであり、通常のCPUのような複雑な処理を行うことはできません。その代わりに高速にパケット処理ができるようにさまざまな工夫が施されています。また、6個あるマイクロエンジンは個々が並列に動作できるのみならず、1個あたり最大4つのスレッドをハードウェア的に切替えながら同時に走らせることができます。そのため、多くのLANインターフェースからの入力を同時に扱ってもスピードが落ちることがありません。


コマンド

以下のコマンドで、ファストパスを動作させるかどうかを選択できます。

ファストパス機能の設定

[書式]
ip routing process PROCESS
no ip routing process
[設定値及び初期値]
[説明]
パケット転送をファストパス機能で処理するか、ノーマルパス機能で処理するかを設定する。
[ノート]
ファストパスでは使用できる機能に制限は無いが、取り扱うパケットの種類によってはファストパスで処理されずノーマルパスで処理されることもある。

IPv6ファストパス機能の設定

[書式]
ipv6 routing process PROCESS
no ipv6 routing process
[設定値及び初期値]
[説明]
IPv6パケットの転送をファストパスで処理するか、ノーマルパスで処理するかを設定する。
[ノート]
ファストパスでは使用できる機能に制限は無いが、取り扱うパケットの種類によってはファストパスで処理されず、ノーマルパスで処理されることもある。
Rev.8.03.37以降、ipv6 multicast routing processコマンドを廃止し、本コマンドに統合した。そのため、本コマンドでfastを設定した場合、IPv6マルチキャストパケットもファストパス機能で処理される。

ファストパスで処理されるパケットの条件

ノーマルパスで処理される条件

以下のような条件に該当するパケットは必ずノーマルパスで処理されます。

IPv4、IPv6共通の条件

IPv4パケットがノーマルパスで処理される条件

IPv6パケットがノーマルパスで処理される条件

静的/動的フィルタ、NAT/IPマスカレード

IPv4およびIPv6の静的/動的フィルタ、IPv4のNAT/IPマスカレードの処理では、TCPとUDPだけがファストパスで処理されます。ただし、フローの先頭のパケットだけはフィルタの適用結果やNATの変換方法をファストパス用のキャッシュであるフローテーブルに記録する必要があるため、ノーマルパスでの処理となります。同じフローの後続のパケットはフローテーブルを利用しながらファストパスで処理します。

VPNトンネル

IPsecによるVPNにおいて、機種ごとに以下の種類のトンネルをファストパスで処理でします。

注: RT57i、RT58i、NVR500、NVR510はIPsecの機能を持っていません。
機種 IPv4 over IPv4 IPv6 over IPv6 IPv4 over IPv6 IPv6 over IPv4
RTX2000 × × ×
RTX1500 × × ×
RTX5000
RTX3500
RTX1210
RTX1200
RTX1100 ○※1 ○※1 ○※1
RTX1000 × - -
RTX830
RTX810
RT107e ○※2 ○※2 ○※2
FWX120
SRT100
NVR700W
RTV700 × - -

※1 Rev.8.03.42以降
※2 Rev.8.03.37以降

暗号アルゴリズム、認証アルゴリズムについてはハードウェア処理できるもののみファストパスで処理されます。ソフトウェア処理が必要なアルゴリズムを使う場合にはノーマルパスの処理となります。機種ごとに以下の通りです。

機種 暗号 認証
DES 3DES AES MD5 SHA
RTX2000 ×
RTX1500
RTX5000
RTX3500
RTX1210
RTX1200
RTX1100
RTX1000 ×
RTX830
RTX810
RT107e
FWX120
SRT100
NVR700W
RTV700 ×

○: ハードウェア処理できるアルゴリズム
×: ソフトウェア処理になるアルゴリズム

上記に加えて、ファストパスで処理するためには以下の条件を満たしている必要があります。

IPIPトンネル

IP over IPトンネルにおいて、機種ごとに以下の種類のトンネルをファストパスで処理でします。

機種 IPv4 over IPv4 IPv6 over IPv6 IPv4 over IPv6 IPv6 over IPv4
RTX2000 × × × ×
RTX1500 × × × ×
RTX5000
RTX3500
RTX1210
RTX1200
RTX1100 ○※1 ○※4 ○※4 ○※4
RTX1000 × × × ×
RTX830
RTX810
RT107e ○※5 ○※5 ○※5
FWX120
SRT100
NVR700W
NVR510
NVR500
RT58i
RT57i ○※2 × × ×
RTV700 ○※3 × × ×

※1 Rev.8.03.24以降
※2 Rev.8.00.66以降
※3 Rev.8.00.69以降
※4 Rev.8.03.37以降
※5 Rev.8.03.42以降

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フィルタを利用していると、最初の1パケットだけはフローテーブルを作るためにノーマルパスで処理されるためログに記録されるが、その後のパケットはファストパスで処理されるため記録されなくなるといった動作になります。

機種毎に異なる制限

フローテーブルのサイズ

フローテーブルのサイズを越えたフローはノーマルパスで処理されるため、速度が落ちます。フローテーブルのサイズは有限で、各機種毎に以下の表のようになっています。これは片方向あたりですから、セッション数で言えばそれぞれ約半分となります。これを越える通信はノーマルパスでの処理となるので、ファストパスでの処理に比べて速度が大きく落ちてしまいます。特に、RTX2000では速度差が大きいので注意してください。

IPv6のファストパスに対応した機種、ファームウェアでは、IPv4、IPv6それぞれ別のフローテーブルで管理されます。

機種 フローテーブルのサイズ
RTX2000 Rev.7.01.29以前: 16384
Rev.7.01.34以降: 65536
RTX1500 65536
RTX5000 131072
RTX3500
RTX1210
RTX1200 65536
RTX1100 16384
RTX1000
RTX830 131072
RTX810 32768
RT107e 16384
FWX120 65536
SRT100 16384
NVR700W 131072
NVR510
NVR500 16384
RT58i
RT57i
RTV700

ファストパスで処理する機能

機種 優先制御
/帯域制御
IPsec ESP
トンネルのUDP
カプセリング
TOS
フィールド
の書き換え
reject
フィルタ
のログ
ESPパケット
のフィルタ
リング
IDS
RTX2000 × × × ×
RTX1500 × ○※2 ×
RTX5000 ×
RTX3500 ×
RTX1210 ×
RTX1200 ×
RTX1100 ○※2 × ×
RTX1000 × × × ×
RTX830 ×
RTX810 ×
RT107e ○※1 × × ×
FWX120 ×
SRT100 ×
NVR700W ×
NVR510 - × ×
NVR500 × - × ×
RT58i × - × × ×
RT57i × - × × ×
RTV700 × × × -

※1 Rev.8.03.90以降
※2 Rev.8.03.24以降

ファストパスで対応する場合は○、そうでない場合は×、その機能がない場合は−で示します。

ソフトウェア実装の機種およびRTX1500では、rejectフィルタによりパケットを落すと決めたフローのパケットはノーマルパスに回すようになっていますが、RTX2000ではrejectフィルタによりパケットを落すと決めたフローのパケットはマイクロエンジン内で破棄してしまい、メインCPUにまで通知しません。そのため、ログも記録できなくなっています。

またソフトウェア実装の機種およびRTX2000では、ESPパケットはフィルタリングの処理対象外です。

ファストパスで処理するパケット

ファストパスで処理する場合は○、そうでない場合は×、その機能がない場合は−で示します。

機種 LAN分割機能の
ポートを経由
するパケット
VRRP使用時の
通過パケット
終点IPアドレスが
マルチキャスト
アドレスの
パケット
プライマリと
セカンダリ間など
の同一LANインター
フェース間の
通信パケット
折り返しパケット
RTX2000 - × ×
RTX1500 × ○※1 ×※2
RTX5000 × ×
RTX3500 × ×
RTX1210 × ×
RTX1200 × ×
RTX1100 × ○※1 × ×
RTX1000 × × × ×
RTX830 × ×
RTX810 × ×
RT107e × × ×
FWX120 × ×
SRT100 × × ×
NVR700W × ×
NVR510 - - × ×
NVR500 - - × ×
RT58i - - × ×
RT57i - - × ×
RTV700 - - × ×

※1 Rev.8.03系以降
※2 Rev.8.03.92以降


フローがクリアされるコマンド

以下のコマンド設定が変更された場合にフローテーブルはクリアされます。そして、即時に設定内容が反映されます。 これ以外の設定の場合は、フローテーブルが変更されないため、通信に設定内容が反映されるのに時間がかかる場合があります。 また、経路変更などが発生した場合にもフローテーブルがクリアされる場合があります。
ip routing process
ip flow limit
ipv6 routing process

clear ipv6 neighbor cache

lan type コマンドのLAN分割設定を変更したとき

vlan port mapping

ip INTERFACE nat descriptor
nat descriptor masquerade remove df-bit

ip fragment remove df-bit
ip tos supersede

lan backup
leased backup
pp backup
tunnel backup

ethernet filter
ethernet INTERFACE filter

ip filter
ip filter set
ip INTERFACE secure filter
ipv6 filter
ipv6 INTERFACE secure filter

queue class filter
queue INTERFACE class filter list

ip inbound filter
ipv6 inbound filter
ip INTERFACE inbound filter list
ipv6 INTERFACE inbound filter list
ip policy filter
ipv6 policy filter
ip policy service
ipv6 policy service
ip policy interface group
ipv6 policy interface group
ip policy address group
ipv6 policy address group
ip policy service group
ipv6 policy service group
ip policy filter set
ipv6 policy filter set
ip policy filter set enable
ipv6 policy filter set enable
ip policy filter set switch
ipv6 policy filter set switch

system packet-scheduling
system packet-scheduling filter
system packet-scheduling filter list