DPI

$Date: 2024/04/16 16:04:01 $

  1. 1. 概要
  2. 2. 対応機種とファームウェアリビジョン
  3. 3. 用語の定義
  4. 4. 注意事項
  5. 5. 詳細
    1. 5-1. システム構成
    2. 5-2. アプリケーションの識別
    3. 5-3. ライセンス認証
    4. 5-4. シグネチャー
    5. 5-5. フィルタリング
    6. 5-6. 経路の選択
    7. 5-7. QoS
    8. 5-8. 統計情報の利用
  6. 6. コマンド
  7. 7. 設定例
    1. 7-1. 特定のアプリケーションのパケットのみ、指定の経路経由で送信する
    2. 7-2. フィルターで特定のアプリケーションの通信のみ通過させる
    3. 7-3. 特定のアプリケーションのパケットを優先して送信する
  8. 8. SYSLOGメッセージ一覧
  9. 9. 既知の問題
  10. 10. 関連情報

1. 概要

Deep Packet Inspection(以下DPI) は、IPネットワーク上を流れるトラフィックを高度に検査することにより、そのパケットがどのアプリケーションのものであるかをレイヤー7レベルで識別することができる技術です。 アプリケーションの識別には、従来のIPヘッダーやTCP/UDPヘッダーの検査に加えて、シグネチャーと呼ばれるデータベースとのパターンマッチングをはじめとする様々な手法が用いられます。

ヤマハルーターのDPIでは、3000以上のアプリケーションの識別に対応しています。 シグネチャーはヤマハのWebサーバー上で配布され、新たに識別可能になったアプリケーションや、通信仕様の変更されたアプリケーションに追従するため、おおよそ1年に1~2回の頻度で更新されます。 ルーターはシグネチャーの更新を定期的にチェックし、最新のシグネチャーが利用可能な場合にはダウンロード、および使用中のシグネチャーとの置き換えを自動で行います。

図1 DPIによるトラフィック識別

図1 DPIによるアプリケーション識別 (*1)

DPIを利用したレイヤー7レベルでのトラフィックの識別には、従来のレイヤー4レベルまでのトラフィック識別に対し、以下のような優位点があります。

(*1) 「Facebook」は、Facebook,inc.の登録商標です。
「LINE」は、LINE株式会社の商標または登録商標です。
「Office 365」は、米国Microsoft Corporationの、米国およびその他の国における登録商標または商標です。
Skype、関連商標およびロゴ、「S」記号はSkype Limited社の商標です。
(*2) 「Twitter」は、Twitter,Inc.の商標または登録商標です。
(*3) ©2018 Niantic, Inc. ©2018 Pokémon. ©1995-2018 Nintendo/Creatures Inc. /GAME FREAK inc.

ヤマハルーターにおけるDPIの利用

ヤマハルーターでは、DPIの識別結果を以下のように利用することができます。

2. 対応機種とファームウェアリビジョン

ヤマハルーターでは以下の機種およびファームウェアで、DPIをサポートしています。

機種ファームウェア
ノーマルパスファストパス
RTX1300すべてのリビジョンRev.23.00.05以降
RTX830Rev.15.02.13以降Rev.15.02.27以降
NVR700WRev.15.00.17以降Rev.15.00.23以降

3. 用語の定義

用語説明
DPIエンジン DPIの中核を担うソフトウェアモジュールで、パケットの解析やコネクションの管理などを担当します。
シグネチャー DPIエンジンがアプリケーションを識別するのに必要な情報を記録したデータベースファイルです。各アプリケーション固有のパターンや、各アプリケーションの属するカテゴリーなどの情報が記録されています。
コネクション TCPやUDPのコネクションを指します。端末は個々のコネクションに対してポート番号を割り当てるので、コネクションは2つの端末のIPアドレスとポート番号によって一意に決まります。
セッション アプリケーションによっては複数のコネクションを利用して通信を実現するものがあります。 これら複数のコネクションをまとめてセッションと呼びます。
アプリケーションの中には非常に多くのコネクションを使用するものがあり、例えばOffice 365のOutlookでは1ユーザーあたり20~40、Googleマップでは80~100ものコネクションが同時に使用されることがあります。

4. 注意事項


5. 詳細

5-1. システム構成

DPIのシステムの構成を図2に示します。

図2 システム構成

図2 システム構成

DPIは、アプリケーションの識別を行うDPIエンジンと、識別に使用されるパターンが収められたシグネチャーとで構成されます。
DPIエンジンはファームウェアに組み込まれて提供されます。DPIエンジンにはルーターを通過するすべてのパケットが入力され、解析が完了するとDPIエンジンはアプリケーションの識別結果を出力します。 一方でシグネチャーは、ファームウェアには組み込まれず、シグネチャー配布サーバーから提供されます。シグネチャーは外部メモリーまたは内蔵不揮発メモリー(RTFS)に保存可能です。シグネチャーを保存することで、シグネチャー配布サーバーからのダウンロードを省略することができます。

DPIの統計情報は、ルーターのRAMに最大10分間分保存できます。外部メモリーを使用すれば、より長い時間の統計情報を保存することができます。

LMSによるライセンス認証や、シグネチャーの配布はインターネット上で行われるため、DPIを使用するためには、インターネット回線への接続が必要です。

5-2. アプリケーションの識別

アプリケーションの識別には様々な手法が用いられます。主なものは以下の通りです。

DPIエンジンは、入力された各パケットをコネクション単位で解析してアプリケーションの識別をします。 各コネクションは、DPIエンジンが持つコネクション管理テーブル上で管理され、識別が完了したコネクションには、アプリケーションの識別結果が付与されます。 識別が完了したコネクションの後続パケットについては、コネクション管理テーブルに記録された識別結果を参照することでアプリケーションを特定できるため、以降の解析は行われません。

アプリケーション/カテゴリーのニーモニック

アプリケーションの識別結果は、以下の斜体で示すような短い文字列 (ニーモニック) として表されます。

(例)

facebook ... Facebook
google_maps ... Googleマップ

アプリケーションのニーモニックは、dpi logコマンドを on に設定することで出力される識別結果のログや show dpi statisticsコマンドの出力結果などに表示されるほか、後述のフィルタリング経路の選択などで利用することができます。 アプリケーションのニーモニックについては、DPIで識別可能なアプリケーション一覧 (Ysig Book)を参照してください。

また、DPIで識別可能なアプリケーションはすべてカテゴリーに分類されています。 各カテゴリーはそれぞれ "@" で始まるニーモニックを持ち、フィルタリングなどで利用可能です。 カテゴリーのニーモニックについては、カテゴリー一覧を参照してください。

DPIにおけるパケットの状態

1つのアプリケーションの識別が完了するまでには、一般的に送信/受信を合わせて 1~数パケットの検査を必要とするため、DPIエンジンで処理されたパケットには識別処理中の状態と、識別が完了した状態とがあります。 また、dpi useコマンドがonにもかかわらず、シグネチャーのダウンロードが完了していないなどによりDPIが使用できない場合には、パケットがDPIエンジンに入力されないため、識別処理がまったく行われていない状態のパケットも存在します。

DPIのフィルターでは、識別結果に基づいてパケットの通過や破棄を決定しますが、パケットの状態によっては識別結果がなく、DPIのフィルターで評価できない場合もあります。 パケットの状態と、識別結果の有無、DPIのフィルターでの扱いを以下にまとめます。

  1. 未識別
    dpi useコマンドがonに設定されているが、まだDPIが使用できない場合、いずれのパケットもDPIエンジンに入力されておらず、アプリケーションの識別結果を持っていない。
    この状態のパケットはDPIのフィルターでは評価されず、dpi useコマンドのREJECTに指定した値に従って通過、または破棄が決定される。
    dpi useコマンドがonに設定されている状態で、DPIが使用できない理由を以下に示します。
    • ライセンス認証中である
    • ライセンス認証に失敗し、リトライ開始の待ち状態である
    • シグネチャーのダウンロード中である
    • シグネチャーのダウンロードに失敗し、リトライ開始の待ち状態である
    • ダウンロードしたシグネチャーをルーターのRAMに展開してDPI稼働の準備をしている
    DPIの稼働準備が完了するまでの状態 (以下、アクティベーション中) では、すべてのパケットが未識別となる状態が続きます。
  2. 識別処理中
    コネクションの先頭パケットから数パケットがDPIエンジンに入力されたが、未だ識別処理中であり、アプリケーションの識別結果を持っていない。
    この状態のパケットはDPIのフィルターでは評価されず、ip dpi filter、およびipv6 dpi filterでは破棄することはできない。
  3. 識別完了
    アプリケーションの識別は完了しており、識別結果のアプリケーションに応じて、DPIのフィルターで評価され、通過、または破棄が決定される。

コネクションの管理

DPIエンジンは、アプリケーション識別のためにコネクション情報を管理します。 コネクション情報は、DPIエンジンが持つコネクション管理テーブル上で管理されます。

DPIエンジンは新規コネクションの最初のパケットが入力されると、管理テーブルに新規のエントリーを追加します。 同一コネクションの後続パケットは、管理テーブルを参照することで、いずれのコネクションのものかを識別することができます。 管理テーブルには最大で 65,536 のエントリーを登録することができます。 管理テーブルは、IPv4、およびIPv6のコネクションで共通して使用されます。

管理テーブルのエントリーが最大数に達すると、新規のコネクションが作られてもエントリーを追加することができなくなります。 この場合、既存のエントリーが削除されて空きエントリーができるまで、当該コネクションのパケットのアプリケーション識別ができなくなります。 この場合、識別できなかったパケットは未識別のパケットとして扱われます。

多数のコネクションを使用するアプリケーションが存在することや、IPv4/IPv6のコネクションで共通の管理テーブルを使用することを踏まえると、継続してアプリケーションの識別を行うためには、管理テーブルが溢れないようなネットワーク設計をする必要があります。

寿命が尽きたエントリーがコネクション管理テーブルから削除されると、アプリケーションの識別結果も破棄されます。 後続のパケットは新規コネクションと見なされ、DPIエンジンは当該コネクションを管理テーブルに再度追加し、各パケットに対する識別処理を再開します。
(※識別結果のキャッシュが存在する場合、再度識別処理をせずにアプリケーションの識別結果を得ることができます)

コネクション管理テーブルにおける各エントリーの寿命は以下の通りです。 なお、下記の値を変更することはできません。

プロトコル状態など寿命 (秒)
TCPSYNフラグのみが立っているパケット15
SYNフラグとACKフラグが立っているパケット60
ACKフラグのみが立っているパケット380
FINフラグのみが立っているパケット15
FINフラグ、ACKフラグの立っているパケット3
RSTフラグの立っているパケット6
UDPRTP280
上記以外60
ICMP-60

識別結果のキャッシュ

DPIエンジンは独自のキャッシュを持っており、以前識別したアプリケーションの識別結果を一定時間記憶しています。 このキャッシュと同一の宛先IPアドレスおよび宛先ポートを持つコネクションが新規に生成された場合、先頭パケットがDPIエンジンに入力された時点でアプリケーションの識別を終えることができます。 識別結果のキャッシュを利用した先頭パケットのアプリケーション識別は、経路の選択において重要な役割を果たします。

キャッシュの内容はshow dpi cacheコマンドで確認することができます。

キャッシュを利用できるのは一部のアプリケーションに限られます。 キャッシュが利用可能なアプリケーションについては、DPIで識別可能なアプリケーション一覧 (Ysig Book)を参照してください。 「キャッシュの利用 (経路の選択)」が「Yes」と表示されているアプリケーションでキャッシュの利用が可能です。 またキャッシュが有効な時間は、最初にアプリケーションが識別された時点から60分間です。

ルーター発・ルーター宛のパケットについて

以下のパケットに対してはアプリケーション識別が行われず、アプリケーションの識別結果を持ちません。

そのため、アプリケーションごとのフィルタリング経路の選択QoSの対象外となります。 また統計情報にも記録されません。

5-3. ライセンス認証

DPIは、LMSによるライセンス認証に成功した場合に使用できます。ライセンスの情報はshow status licenseコマンドで確認することができます。

DPIでは、以下のタイミングでライセンス認証を行います。

起動直後のライセンス認証に失敗してDPIをアクティベートできなかった場合には、license authentication goコマンドで手動認証を行ってください。 ライセンスの状態が認証猶予期間である場合には、定期認証(1回/日)により自動でライセンス認証を行います。

ライセンス認証についての詳細は、ライセンス管理システム (LMS) 、および LMSクライアントを参照してください。

5-4. シグネチャー

シグネチャーは、動的にロードすることができるライブラリーファイルで、インターネット上のシグネチャー配布サーバーで配布されています。 シグネチャーのファイルサイズは約5MBです。

dpi useコマンドをonに設定した状態でライセンス認証に成功すると、ルーターは自動的にシグネチャーを配布サーバーからダウンロードし、ルーターのRAMに格納します。 ダウンロードに成功した場合、シグネチャーはルーターのRAMに展開されます。この状態になってはじめて、DPIエンジンはアプリケーションの識別処理を行うことができます。 ルーターを再起動した場合には、再度シグネチャーをダウンロードします。

ダウンロードに失敗した場合、ルーターは以下のインターバルを置いた後、シグネチャーのダウンロードのリトライをします。 リトライまでのインターバルは、リトライした回数に応じて長くなっていき、最大10分前後になります。 また、インターバルはリトライ回数毎に決められた一定の範囲の中からランダムに決定します。

リトライ回数インターバル
1回目35秒前後
2回目50秒前後
3回目70秒前後
4回目90秒前後
5回目130秒前後
6回目175秒前後
7回目240秒前後
8回目330秒前後
9回目445秒前後
10回目以降625秒前後

リトライはシグネチャーのダウンロードに成功するまで続けられます。 直ちにリトライをする必要がある場合には、dpi signature download goコマンドを実行して、手動でシグネチャーのダウンロードを実施してください。

シグネチャーのダウンロードにはHTTP、またはHTTPSを使用します。独自に用意したHTTP/HTTPSサーバーでシグネチャーを配布する場合には、dpi signature download urlコマンドでURLを指定してください。

dpi useコマンドをoffに設定してDPIを無効にした場合や、ライセンス認証に失敗してDPIが無効になった場合、ルーターはシグネチャーをアンロードします。 次にDPIを有効にした場合には、再度シグネチャーのダウンロードを行います。

保存したシグネチャーの利用

外部メモリーまたは内蔵不揮発性メモリー(RTFS)にシグネチャーを保存すると、DPIを有効にした場合や、dpi useコマンドがonに設定された状態でルーターが起動した場合、保存したシグネチャーを利用することができます。 この場合、シグネチャーのダウンロードを省略することができます。

保存可能な領域と保存ディレクトリーの設定コマンドはリビジョンによって異なります。詳細は以下の表をご覧ください。

機種 保存可能な領域 設定コマンド
外部メモリー 内蔵不揮発性メモリー(RTFS)
RTX830 / NVR700W - external-memory dpi signature directory
上記以外 dpi signature directory

同コマンドが設定されている場合には、DPIが有効になった場合や更新があった場合にダウンロードしたシグネチャーが自動的に指定のディレクトリーに保存されます。 また、PCから外部メモリーまたは内蔵不揮発性メモリー(RTFS)に保存したシグネチャーであっても、同コマンドで指定したディレクトリーに格納されていれば利用することができます。

保存したシグネチャーを利用する場合でも、DPIが有効になるとシグネチャーの更新チェックが行われます。配布サーバーに最新のシグネチャーが存在する場合、保存したシグネチャーもダウンロードした最新のシグネチャーに置き換えられます。

external-memory dpi signature directoryコマンド、もしくはdpi signature directoryコマンドで保存ディレクトリーに外部メモリーを指定している場合、指定したディレクトリーを含む外部メモリーが接続されていない状態でダウンロードされたシグネチャーは保存されません。 外部メモリーを接続した後、次にダウンロードしたシグネチャーから指定のディレクトリーに保存されるようになりますが、通常は更新があるまでダウンロードが行われることはありません。 更新の有無にかかわらず、直ちにシグネチャーをダウンロードして外部メモリーに保存する場合には、dpi signature download goコマンドをforceオプション付きで実行します。

シグネチャーの更新

ルーターが使用中のシグネチャーを更新するには、自動更新と手動更新の2つの方法があります。

自動更新では、ルーターが定期的に配布サーバーにアクセスして更新の有無をチェックします。 更新があれば、最新のシグネチャーのダウンロードと、新旧のシグネチャーの交換を行います。 ヤマハルーターのDPIでは、シグネチャーの更新時にルーターやDPI機能の再起動の必要がなく、更新の前後に解析されないパケットはない、といったシームレスな運用が可能です。

自動更新によるチェックは、前回のシグネチャーのダウンロードからおよそ24時間後に開始され、以降24時間間隔で実行されます。配布サーバーにアクセスできないなど、自動更新に失敗した場合にはリトライを行います。リトライのインターバルは、シグネチャーのダウンロードのリトライ動作に準じます。

直ちにシグネチャーの更新を行う必要がある場合には、dpi signature download goコマンドによる手動更新が可能です。手動更新でも、シグネチャーの更新の有無をチェックした後、更新があればシグネチャーのダウンロードと、新旧シグネチャーの交換を行います。なお、手動更新は失敗してもリトライを行いません。

なお、シグネチャーの更新を行うと、コネクション管理テーブルや識別結果のキャッシュが一旦クリアされます。識別済みであったアプリケーションのトラフィックにも再度識別処理が必要となります。

最新のシグネチャーは、こちらでダウンロードすることができます。

シグネチャー更新に関する注意

新しいシグネチャーをダウンロードすると、一時的にメモリー使用率が上昇します。 また、通信の負荷が高い状況下では、シグネチャー更新中のパケット転送の遅延等が発生する場合があります。 シグネチャーの更新を安全に行うためには、ルーターの通信量が少ない時間帯にdpi signature download goコマンドをスケジュール実行することをお勧めします。

毎日午前3時にシグネチャーの更新チェックを行う例を以下に示します。

schedule at 1000 */* 03:00 * dpi signature download go

サポート対象のシグネチャー

シグネチャーの更新に合わせてファームウェアの更新が必要になることがあります。この場合、シグネチャーとファームウェアの組み合わせによってはDPIの有効化に失敗します。DPIの有効化に成功するシグネチャーはサポート対象のシグネチャーと呼び、DPIの有効化に失敗するシグネチャーのことをサポート対象外のシグネチャーと呼びます。

サポート対象のシグネチャーは以下の通りです。

機種リビジョンシグネチャー
RTX1300 全てのリビジョン Ver. 1.0 系
RTX830 Rev.15.02.13 ~ Rev.15.02.28 Ver. 1.0 系
Rev.15.02.29 ~ Ver. 1.1 系
NVR700W Rev.15.00.17 ~ Rev.15.00.23 Ver. 1.0 系
Rev.15.00.24 ~ Ver. 1.1 系

基本的には、サポート対象のシグネチャーが読み込まれるため、DPIの有効化に失敗することはありません。

以下のコマンドを設定し、かつ、シグネチャーの読み込み先にサポート対象外のシグネチャーを配置しているときにのみ、サポート対象外のシグネチャーが読み込まれ、DPIの有効化に失敗します。

有効化に失敗したときは、以下のログが DEBUG レベルで出力されます。

■ RTX830(Rev.15.02.13 ~ Rev.15.02.28) 、NVR700W(Rev.15.00.17 ~ Rev.15.00.23)
[DPI] Failed to read signature (signature for other product)

■ RTX830(Rev.15.02.29 ~) 、NVR700W(Rev.15.00.24 ~)
[DPI] Failed to read signature (not supported version signature)

5-5. フィルタリング

DPIの識別結果を利用して、アプリケーションごとにフィルターの通過/破棄の設定をします。

DPIのフィルタリングは、受信側と送信側でそれぞれ図3に示す位置で行われます。

図3 ルーター内部でのパケットの処理手順

図3 ルーター内部でのパケットの処理手順

受信側・送信側のいずれも、DPIのフィルターの前段にIPフィルターが存在しています。 IPフィルターにより不要な送信元や宛先のパケットをあらかじめ落としてから、DPIのフィルターでの評価を行うことを推奨します。 ただし、DPIのフィルターで評価されるべきパケットがIPフィルターのdefaultフィルターで破棄されないよう、IPフィルターのいずれのフィルターにもマッチしないパケットは通過するように設定します。 なお、DPIのフィルターは静的フィルターとして動作します。動的フィルターとしての動作はできません。

アプリケーション識別の完了したパケットは、条件にマッチするフィルターに設定された通過/破棄のルールに従って処理されます。 いずれのフィルターにもマッチしなかったパケットは基本的に破棄されます。一方でアプリケーションの識別が完了していないパケットは、DPIのフィルターでは破棄できないため通過します。

DPIのアクティベーション中には、すべてのパケットがdpi useコマンドのREJECTの設定に従って処理されます。 REJECTをonに設定した場合、基本的にはすべてのパケットが破棄されますが、以下のパケットは同コマンドの設定によらず通過します。

以下に特定のアプリケーションのみ通過させる例、および特定アプリケーションのみ破棄する例を示します。いずれもDPIのフィルター設定のみを抜粋します。ルーター全体の設定は「7. 設定例」を参照してください。

特定のアプリケーションのみ通過させ、その他は破棄する場合の設定例

ip dpi filter 1 pass * * @web  - - - - - - a
ip dpi filter 2 pass * * @mail,@webmail  - - - - - - b
ip dpi filter 100 reject * *  - - - - - - c
ip lan2 dpi filter out 1 2 100  - - - - - - d
dpi use on  - - - - - - e

Webアクセスとメールの使用のみ許可します。

  1. Webカテゴリーに属するアプリケーションのパケットは通過させます。
  2. Mail、Webmailのカテゴリーのいずれかに属するアプリケーションのパケットは通過させます。
  3. 他のいずれのフィルターにもマッチしないパケットは破棄しますが、アプリケーション識別が完了していないパケットは通過させます。 アプリケーション、およびカテゴリーの指定を省略していますが、この場合には、* を指定した場合と同じ扱いになります。
  4. DPIのフィルターをLAN2インターフェースに適用します。
  5. DPIを使用する設定をします。 REJECTは省略されており、DPIのアクティベーション中には、すべてのパケットは通過します。

特定のアプリケーションのみ破棄し、その他は通過させる場合の設定例

dpi group set 100 name=file-sharing winmx winny share bittorrent  - - - - - - a
ip dpi filter 1 reject 192.168.200.0/24 * 100  - - - - - - b
ip dpi filter 2 reject 192.168.200.0/24 * @game  - - - - - - c
ip dpi filter 100 pass * *  - - - - - - d
pp select 1
 ip pp dpi filter out 1 2 100  - - - - - - e
dpi use on on  - - - - - - f

192.168.200.0/24のネットワークに属する端末で、指定のファイル共有ソフトと、ゲームカテゴリーに属するアプリケーションを禁止します。

  1. WinMX、Winny、Share、BitTorrentをグループ化し、作成したグループに"file-sharing"と名付けます。
  2. file-sharingグループに属するアプリケーションのパケットを破棄します。
  3. Gameカテゴリーに属するアプリケーションのパケットを破棄します。
  4. 他のいずれのフィルターにもマッチしないパケットは通過させます。
  5. DPIのフィルターをPP1インターフェースに適用します。
  6. DPIを使用する設定をします。 REJECTはonに設定されており、DPIのアクティベーション中には、すべてのパケットが破棄されます。

5-6. 経路の選択

DPIの識別結果を利用して、アプリケーションごとに経路を選択することができます。

前述の通り、アプリケーションの識別完了までには1~数パケットが必要であり、新規コネクションでは先頭パケットから指定した経路に送信することはできません。 また経路の途中にNAT箱が存在する場合、同一のコネクションの経路を途中で変更すれば通信できなくなるため、すでに確立されたコネクションについての経路を途中で変更することはできません。

一方、識別結果のキャッシュが存在するアプリケーションで、宛先が同一で送信元が異なるコネクションであれば、2セッション目から設定した経路経由で送信されます。(※)
※1つのアプリケーションで複数の経路が使用される場合があります。正しく通信できることを十分検証のうえでご使用ください。

図4 経路の選択

図4 経路の選択

DPIを利用した経路の選択では、フィルター型ルーティングを応用して、フィルターの条件にマッチしたアプリケーションのパケットが指定の経路を経由して送信されます。 それ以外のパケットは通常の経路設定に従って送信されます。また、未識別や識別処理中のパケットも通常の経路設定に従います。

以下はいずれも動画視聴アプリケーションのパケットはPP1インターフェース経由で、その他はTUNNEL1経由で送信する設定例です。
DPIのフィルターと経路の設定のみを抜粋した設定例を示します。ルーター全体の設定は「7. 設定例」を参照してください。

フィルター型ルーティングの設定例 (IPv4)

ip dpi filter 1 pass * * mcafee,norton_update,kaspersky_update,trendmicro_update  - - - - - - a
ip route default gateway pp 1 dpi 1 gateway tunnel 1  - - - - - - b
  1. 経路を変更したいアプリケーションをip dpi filterコマンドで定義します。
  2. a のフィルターで指定したアプリケーションのみ、PP1インターフェース経由で、その他はすべてデフォルトゲートウェイであるTUNNEL1インターフェース経由で送信します。

フィルター型ルーティングの設定例 (IPv6)

ipv6 dpi filter 1 pass * * mcafee,norton_update,kaspersky_update,trendmicro_update  - - - - - - a
ipv6 route default gateway dhcp lan2 dpi 1 gateway tunnel 1  - - - - - - b
  1. 経路を変更したいアプリケーションをipv6 dpi filterコマンドで定義します。
  2. a のフィルターで指定したアプリケーションのみ、DHCPクライアントとして動作するLAN2インターフェース経由で、その他はすべてデフォルトゲートウェイであるTUNNEL1インターフェース経由で送信します。

5-7. QoS

DPIの識別結果に基づいたクラス分けをすることができます。

経路の選択とは違って、QoSの場合はアプリケーションの識別が完了した直後からクラス分けに識別結果を反映させることができます。 DPIのフィルターの条件にマッチしたパケット以外は通常の設定に従って分類されます。 識別が完了していないパケットも、やはり通常の設定に従います。

帯域制御の設定例

PPPoE接続で、Skype for Bussiness用に20Mbit/sの帯域を、UDPパケットに10Mbit/sの帯域を、その他に30Mbit/sの帯域を割り当てます。queue class filterの設定は優先制御でも変わりありません。
QoSの設定のみを抜粋した設定例を示します。ルーター全体の設定は「7. 設定例」を参照してください。

queue lan2 type shaping  - - - - - - a
queue class filter 1 1 ip dpi * * lync,lync_online  - - - - - - b
queue class filter 2 3 ip * * udp * *  - - - - - - c
queue lan2 class property 1 bandwidth=20m  - - - - - - d
queue lan2 class property 2 bandwidth=30m  - - - - - - e
queue lan2 class property 3 bandwidth=10m  - - - - - - f
pp select 1
 pppoe use lan2
 queue pp class filter list 1 2  - - - - - - g
pp enable 1
  1. LAN2のキューで帯域制御を行います。
  2. Skype for Bussinessのパケットをクラス1とするフィルター 1 を定義します。
  3. UDPパケットをクラス3とするフィルター 2 を定義します。Skype for Bussinessに識別されるまでのUDPパケットもこのフィルターにマッチします。
  4. クラス1 (Skype for Bussinessのパケット) に20Mbit/sを割り当てます。
  5. クラス2 (デフォルトクラス:その他のパケット)に30Mbit/sを割り当てます。
  6. クラス3 (UDPのパケット) に10Mbit/sを割り当てます。
  7. フィルター 1・2 をPP1インタフェースに適用します。

5-8. 統計情報の利用

DPIの統計情報を利用するには、statisticsコマンドでアプリケーションのトラフィック量の統計機能を有効にします。

statistics application on

DPIが有効になると、識別されたアプリケーションの統計情報がルーターのRAMに記録されます。 統計情報には、アプリケーションごと、端末ごとに以下の情報が記録され、30秒間隔で更新されます。

統計情報を記録できる端末の台数には上限があります。機種別の上限の台数は以下の通りです。

機種上限の台数(台)
RTX1300512
RTX830
NVR700W

上限の台数を超えた場合、それ以降に通信を開始した端末の統計情報を記録することができません。 clear dpi statisticsコマンドで統計情報をクリアすることで、新規の端末の統計情報を記録することができます。

ルーターのRAMに記録可能な統計情報は最大10分間分ですが、外部メモリーを使用することで、より長時間の統計情報を保存することができます。 外部メモリーにDPIの統計情報を保存する場合には、external-memory statistics filename prefixコマンドで保存先を指定してください。

パスに含まれる外部メモリーが接続されていない場合には、統計情報は保存されません。外部メモリーを接続した後に保存が開始されます。

外部メモリーを使用しない場合、以下の条件で統計情報はクリアされるため、注意が必要です。

記録された統計情報は、show dpi statisticsコマンドで表示します。

トラフィック全体の統計情報の表示

ルーターを通過するトラフィック全体で使用されているアプリケーションを把握するには、show dpi statisticsコマンドを実行します。 この場合、送信オクテット数と受信オクテット数の合計が上位10位以内のアプリケーションの送受信オクテット数と全体に占める割合を表示します。

# show dpi statistics
アプリケーション  送受信オクテット数    割合     
----------------+---------------------+-----------
office365                  18,754,987    25%
lync                       15,854,347    21%
google_map                 11,115,753    14%
facebook                    9,835,354    11%
windows_update              6,354,682     8%
twitter                     5,854,965     6%
dns                         5,032,886     5%
ftp                         4,258,369     4%
icmp                        3,125,784     3%
imap                        1,411,955     1%
other                       1,923,854     2%
----------------+---------------------+-----------
合計                       83,522,936   100%

allキーワードを指定した場合には、11位以下の "other" にまとめられたアプリケーションの一覧を表示します。

アプリケーションごと・カテゴリーごとの統計情報の表示

アプリケーションごとの統計情報を表示するには、show dpi statisticsコマンドにapplicationキーワードを指定し、次に表示したいアプリケーションのニーモニックを指定します。 アプリケーションのニーモニックに続いてdetailキーワードを指定した場合、端末ごとの情報も表示します。

# show dpi statistics application office365 detail
[office365]
                           オクテット数
端末                     送信           受信
-------------------+-------------+-------------
  Total                    88,258      131,564
   192.168.0.15            11,254       10,223
   192.168.0.68            48,256       58,825
            :
            :

カテゴリーごとの統計情報を表示するには、show dpi statisticsコマンドにcategoryを指定し、次に "@" で始まるカテゴリーのニーモニックを指定します。 カテゴリー内のアプリケーションは、アプリケーションのニーモニックを基準に、0-9、a-zの順に表示します。 カテゴリーの場合、detailを指定して端末ごとの情報を表示することはできません。

# show dpi statistics category @game
[@game]
                             オクテット数
アプリケーション          送信           受信
-------------------+-------------+-------------
akinator                      456        1,675
all_slots_casino           11,254       10,223
            :
            :

端末ごとの統計情報の表示

端末ごとの統計情報を表示するには、show dpi statisticsコマンドにaddressを指定し、表示する端末のIPv4またはIPv6アドレスを指定します。

# show dpi statistics address 192.168.0.15
[192.168.0.15]
                             オクテット数
アプリケーション          送信           受信
-------------------+-------------+-------------
lync                       32,645    1,556,998
office365                     546      665,320
            :
            :


6. コマンド


7. 設定例

例示用グローバルアドレスには、文書作成用途として RFC6890 で予約されているIPアドレスの中の 203.0.113.0/24 の範囲を使用しています。

7-1. 特定のアプリケーションのパケットのみ、指定の経路経由で送信する

[ネットワークの構成と使用条件]
図5 Windows UpdateとOffice 365のインターネットオフローディング

図5 Windows UpdateとOffice 365のインターネット・オフローディング

[拠点ルーターの CONFIG 例]
ip route default gateway pp 1 dpi 1 2 gateway tunnel 1
ip route 203.0.113.0/24 gateway pp 1
ip routing process normal (※)
ip lan1 address 192.168.1.1/24
pp select 1
 pppoe use lan2
 pp auth accept pap chap
 pp auth myname MYNAME PASSWORD
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp mtu 1454
 ip pp nat descriptor 1
 pp enable 1
tunnel select 1
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac
  ipsec ike always-on 1 on
  ipsec ike keepalive use 1 on heartbeat
  ipsec ike local address 1 192.168.1.1
  ipsec ike local name 1 kyoten key-id
  ipsec ike pre-shared-key 1 text himitsu
  ipsec ike remote address 1 203.0.113.1
 ip tunnel tcp mss limit auto
 tunnel enable 1
dpi group set 100 name=o365 word_online sharepoint_online powerpoint_online outlook office_docs office365 ms_sway ms_planner ms_onenote lync_online excel_online
ip dpi filter 1 pass * * windows_update
ip dpi filter 2 pass * * 100
nat descriptor type 1 masquerade
nat descriptor address outer 1 ipcp
nat descriptor masquerade static 1 1 192.168.1.1 udp 500
nat descriptor masquerade static 1 2 192.168.1.1 esp
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.2-192.168.1.100/24
dpi use on

(※) DPI のファストパスに対応しているファームウェアでは不要です。

[拠点ルーターの CONFIG の説明]
pp select 1
 :
 ip pp nat descriptor 1
 pp enable 1
 :
nat descriptor type 1 masquerade
nat descriptor address outer 1 ipcp
nat descriptor masquerade static 1 1 192.168.1.1 udp 500
nat descriptor masquerade static 1 2 192.168.1.1 esp
PP1にPPPoEとIPマスカレードの設定をします。
tunnel select 1
 ipsec tunnel 101
 :
  ipsec ike local name 1 kyoten key-id
 :
 tunnel enable 1
203.0.113.1 のルーターとの間をIPsecで接続するTUNNEL1を設定します。接続で使用する自身の名前は "kyoten" です。
dpi group set 100 name=o365 word_online excel_online powerpoint_online outlook ms_onenote lync_online sharepoint_online office365 office_docs ms_sway ms_planner 
Office 365に関連する11のアプリケーションをまとめたグループ 100 (名称:o365) を作成します。グループに所属させるアプリケーションは、半角スペースで区切って列挙します。
ip dpi filter 1 pass * * windows_update
Windows Updateのパケットがマッチする DPI のフィルター 1 を記述します。
ip dpi filter 2 pass * * 100
グループ 100 に属するアプリケーションのパケットがマッチするDPIのフィルター 2 を記述します。
ip route default gateway pp 1 dpi 1 2 gateway tunnel 1
フィルター型ルーティングを使用して、DPIのフィルター 1、または 2 にマッチしたパケットはPP1経由で、その他はデフォルト経路であるTUNNEL1経由で送信する設定をします。
dpi use on
DPIを使用する設定をします。
REJECTを省略しており、DPIのアクティベーション中にはすべてのパケットが破棄されずに送信されますが、アプリケーションごとの経路の選択はできません。 すべてのパケットは通常の経路設定通りに送信されます。

7-2. フィルターで特定のアプリケーションの通信のみ通過させる

[ネットワークの構成と使用条件]
図6 特定アプリケーションのフィルタリング

図6 特定アプリケーションのフィルタリング

[ルーターの CONFIG 例]
ip routing process normal (※)
ip route default gateway dhcp lan2
ip keepalive 1 icmp-echo 10 5 dhcp lan2
ip lan1 address 192.168.100.1/24
ip lan2 address dhcp
ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032
ip lan2 secure filter out 101013 101020 101021 101022 101023 101024 101025 101026 101027 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ip lan2 dpi filter out 1 2 99 100
ip lan2 nat descriptor 200
ip filter 101000 reject 10.0.0.0/8 * * * *
ip filter 101001 reject 172.16.0.0/12 * * * *
ip filter 101002 reject 192.168.0.0/16 * * * *
ip filter 101003 reject 192.168.100.0/24 * * * *
ip filter 101010 reject * 10.0.0.0/8 * * *
ip filter 101011 reject * 172.16.0.0/12 * * *
ip filter 101012 reject * 192.168.0.0/16 * * *
ip filter 101013 reject * 192.168.100.0/24 * * *
ip filter 101020 reject * * udp,tcp 135 *
ip filter 101021 reject * * udp,tcp * 135
ip filter 101022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 101023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 101024 reject * * udp,tcp 445 *
ip filter 101025 reject * * udp,tcp * 445
ip filter 101026 restrict * * tcpfin * www,21,nntp
ip filter 101027 restrict * * tcprst * www,21,nntp
ip filter 101030 pass * 192.168.100.0/24 icmp * *
ip filter 101031 pass * 192.168.100.0/24 established * *
ip filter 101032 pass * 192.168.100.0/24 tcp * ident
ip filter 101033 pass * 192.168.100.0/24 tcp ftpdata *
ip filter 101034 pass * 192.168.100.0/24 tcp,udp * domain
ip filter 101035 pass * 192.168.100.0/24 udp domain *
ip filter 101036 pass * 192.168.100.0/24 udp * ntp
ip filter 101037 pass * 192.168.100.0/24 udp ntp *
ip filter 101099 pass * * * * *
ip filter 500000 restrict * * * * *
ip filter dynamic 101080 * * ftp
ip filter dynamic 101081 * * domain
ip filter dynamic 101082 * * www
ip filter dynamic 101083 * * smtp
ip filter dynamic 101084 * * pop3
ip filter dynamic 101085 * * submission
ip filter dynamic 101098 * * tcp
ip filter dynamic 101099 * * udp
ip dpi filter 1 pass * * @web
ip dpi filter 2 pass * * 1000
ip dpi filter 99 pass * * dns
ip dpi filter 100 reject * * *
dpi group set 1000 name=g_mail gmail gmail_basic gmail_mobile
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns host lan1
dns server dhcp lan2
dns server select 500201 dhcp lan2 any .
dns private address spoof on
httpd host lan1
yno use on
yno access code OPERATOR-ID CODE
dpi use on on

(※) DPI のファストパスに対応しているファームウェアでは不要です。

[CONFIGの説明]
ip lan2 address dhcp
 :
ip lan2 nat descriptor 200
 :
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
LAN2にDHCPクライアントとIPマスカレードの設定をします。
ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032
ip lan2 secure filter out 101013 101020 101021 101022 101023 101024 101025 101026 101027 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
 :
ip filter 101099 pass * * * * *
 :
ip filter dynamic 101099 * * udp
インターネットアクセスに最低限必要なIPフィルターをLAN2に設定をします。 いずれのフィルターにもマッチしなかったパケットがDPIのフィルターで評価されるよう、out側には 101099 のAll Passフィルターを記述します。 DPIを使用できるように、ライセンス認証のためにLMSとの間でやり取りするパケット、シグネチャーのダウンロードで送受信されるパケットがフィルターで破棄されない設定をしなければなりません。 上記の設定であれば、両者に加えてYNOエージェント機能で送受信されるパケットも破棄されることはありません。
ip dpi filter 1 pass * * @web
dpi group set 1000 name=g_mail gmail gmail_basic gmail_mobile
ip dpi filter 2 pass * * 1000
ip dpi filter 99 pass dns
通信を許可するアプリケーションの設定をします。 フィルター 1 は @webカテゴリーに属するアプリケーションのパケットを通過させます。 フィルター 2 は Gmail に関係するアプリケーションをまとめたグループ 1000 (名称:g_mail) のパケットを通過させます。 また、ルーターのLAN配下に接続されたPCが名前解決をできるように、フィルター 99 でDNSサーバーとの間でやり取りされるパケットを通過させます。
ip dpi filter 100 reject * *
いずれのフィルターにもマッチしなかったパケットは、フィルター 100 により破棄されます。
ip lan2 dpi filter out 1 2 99 100
LAN2インターフェースにDPIのフィルターを適用します。
dpi use on on
DPIを使用する設定をします。DPIのアクティベーション中には、すべてのパケットを破棄します。  

7-3. 特定のアプリケーションのパケットを優先して送信する

[ネットワークの構成と使用条件]
図7 DPIを利用した優先制御

図7 DPIを利用した優先制御

[CONFIGの例]
ip routing process normal (※)
ip route default gateway pp 1
ip lan1 address 192.168.100.1/24
speed lan2 20m
queue lan2 type priority
pp select 1
 pp always-on on
 queue pp class filter list 100
 pppoe use lan2
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname MYNAME PASSWORD
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp nat descriptor 1
 pp enable 1
nat descriptor type 1 masquerade
queue class filter 100 4 ip dpi * * @audio_video
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.254/24
dns server pp 1
dpi use on off

(※) DPI のファストパスに対応しているファームウェアでは不要です。

[CONFIGの説明]
speed lan2 20m
queue lan2 type priority
LAN2を出力インターフェースとする通信の送出速度を 20Mbit/s に制限し、優先制御を使用するよう設定します。
 queue class filter 100 4 ip dpi * * @audio_video
優先するパケットのフィルターを定義します。@audio_video カテゴリーのパケットを最優先のクラス 4 に分類されるように設定します。
# PP1
 queue pp class filter list 100
PP1インターフェースにフィルター 100 を適用し、送出パケットが優先制御の対象となるようにします。 フィルター 100 にマッチしなかったパケットは、queue INTERFACE default classコマンドで指定したデフォルトクラス (初期値:2) に分類されます。
dpi use on off
DPIを使用する設定をします。
REJECTにoffが指定されているため、DPIのアクティベーション中には、すべてのパケットが破棄されずに送信されますが、アプリケーションの識別はできないため、すべてのパケットが通常の設定通りに分類されます。

8. SYSLOGメッセージ一覧

本機能において出力されるSYSLOGメッセージの一覧を以下に示します。

レベル出力メッセージ意味
INFO[DPI] Activated.DPIが有効化された。
[DPI] Deactivated.DPIが無効化された。
[DPI] Succeeded in updating signature (Ver.XXX).シグネチャーの更新に成功した。(バージョン)
[DPI] Succeeded in initializing DPI Engine.DPIエンジンの初期化に成功した。
[DPI] Failed to initialize DPI Engine (REASON).DPIエンジンの初期化に失敗した。(理由)
[DPI] Execute "dpi signature download go no-confirm [force]" command.dpi signature download go [force] コマンドのバックグラウンド実行を開始する。
DEBUG[DPI] Start checking for new signature.シグネチャーの更新チェックを開始した。
[DPI] Failed to check update (REASON).シグネチャーの更新チェックに失敗した。 (理由)
[DPI] No update available.新しいバージョンのシグネチャーは見つからなかった。
[DPI] New signature found (Ver.XXX). Download starts N sec later.新しいシグネチャーが見つかった。(バージョン)N秒後にダウンロードを開始する。
[DPI] Succeeded in downloading signature.シグネチャーのダウンロードに成功した。
[DPI] Failed to download signature (REASON).シグネチャーのダウンロードに失敗した。(理由)
[DPI] Succeeded in reading signature (Ver.XXX).シグネチャーの読み込みに成功した。(バージョン)
[DPI] Failed to read signature (REASON).シグネチャーの読み込みに失敗した。(理由)
[DPI] Succeeded in updating signature (Ver.XXX).シグネチャーの更新に成功した。(バージョン)
[DPI] Failed to update signature (REASON).シグネチャーの更新に失敗した。(理由)
[DPI] Forced signature update started.シグネチャーの強制更新を開始した。
[DPI] Succeeded in destroying old signature.旧シグネチャーの破棄に成功した。
[DPI] Failed to destroy old signature (REASON).旧シグネチャーの破棄に失敗した。(理由)
[DPI] Cannot find signature in the external-memory (PATH).シグネチャーの保存先外部メモリー、または外部メモリーに保存したシグネチャーが見つからない。(パス)
[DPI] Cannot find signature in RTFS (PATH).内蔵不揮発性メモリー(RTFS)に保存したシグネチャーが見つからない。(パス)
[DPI] Succeeded in writing signature to the external-memory (PATH).シグネチャーの外部メモリーへの書き込みに成功した。(パス)
[DPI] Succeeded in writing signature to RTFS (PATH).シグネチャーの内蔵不揮発性メモリー(RTFS)への書き込みに成功した。(パス)
[DPI] Failed to write signature to the external-memory (PATH:REASON).シグネチャーの外部メモリーへの書き込みに失敗した。(パス:理由)
[DPI] Failed to write signature to RTFS (PATH:REASON).シグネチャーの内蔵不揮発性メモリー(RTFS)への書き込みに失敗した。(パス:理由)
NOTICE[DPI] Inspection Completed: APPLICATION (CATEGORY) SRC_ADDR:SRC_PORT > DST_ADDR:DST_PORT.アプリケーションの解析が完了した: アプリケーション (カテゴリー) 送信元アドレス:ポート > 宛先アドレス:ポート
[DPI] Failed to inspect packet (REASON).パケットの解析に失敗した。(理由)

本機能により追加されるフィルターログは以下の通りです。

レベル出力メッセージ意味
NOTICE INTERFACE Passed at IN(FILTER_NUM) DPI: [APPLICATION] SRC_ADDR > DST_ADDR INTERFACEの受信側DPIフィルター (フィルター番号 : FILTER_NUM) で、APPLICATIONのパケット (送信元アドレス : SRC_ADDR,宛先アドレス : DST_ADDR) を通過させた。
INTERFACE Passed at OUT(FILTER_NUM) DPI: [APPLICATION] SRC_ADDR > DST_ADDR INTERFACEの送信側DPIフィルター (フィルター番号 : FILTER_NUM) で、APPLICATIONのパケット (送信元アドレス : SRC_ADDR,宛先アドレス : DST_ADDR) を通過させた。
INTERFACE rejected at IN(FILTER_NUM) DPI: [APPLICATION] SRC_ADDR > DST_ADDR INTERFACEの受信側DPIフィルター (フィルター番号 : FILTER_NUM) で、APPLICATIONのパケット (送信元アドレス : SRC_ADDR,宛先アドレス : DST_ADDR) を破棄した。
INTERFACE rejected at OUT(FILTER_NUM) DPI: [APPLICATION] SRC_ADDR > DST_ADDR INTERFACEの送信側DPIフィルター (フィルター番号 : FILTER_NUM) で、APPLICATIONのパケット (送信元アドレス : SRC_ADDR,宛先アドレス : DST_ADDR) を破棄した。

9. 既知の問題


10. 関連情報