◆ NBAR(Network-Based Application Recognition)とは
NBAR(ネットワークベースのアプリケーション識別)とは、Cisco IOSに組み込まれたインテリジェントな
分類エンジンのことです。NBARは、プロトコル検出、トラフィックの分類、トラフィックの統計情報の収集
を可能とすることから、NBARを利用することで、TCP/UDPのポート番号を使用したトラフィックの識別や
HTTPトラフィックのURLによる識別が可能になります。つまり、NBARでは「L4 〜 L7の分類」が行えます。
◆ NBAR - PDLM(Packet Description Language Module)とは
NBARでは、PDLM機能によってIOSリリースのアップグレードやルータのリロードを行うとなく、新しい
プロトコルでNBARをサポートできるようになります。つまり、PDLM機能を使用することにより、例えば
現在はNBARの「 match protocol 」文でサポートされていないプロトコルに対して、スタティックなUDP
ポートやTCPポートを割り当てることができるので、NBARで認識できるプロトコルリストが拡張されます。
◆ NBAR - コンフィグ設定(統計情報収集の設定)
NBARには「Protocol Discovery」という機能が含まれています。Protocol Discoveryにはインターフェイス
で動作しているアプリケーションプロトコルを簡単に検出できる機能が用意されています。特定のインター
フェイス上でNBARが認識する全てのプロトコルについてトラフィックを検出するためには次の設定をします。
(config)# interface interface-id
(config-if)# ip nbar protocol-discovery
Protocol Discoveryの統計情報のレポートは、以下のコマンドによって確認することができます。
⇒ show policy-map interface interface-id
⇒ show ip nbar protocol-discovery interface interface-id
◆ NBAR - コンフィグ設定(分類の設定)
NBARを利用するためには「ip cef」を有効化させる必要があります。
(config)# ip cef
NBARによる分類はMQC(Modular QoS CLI)を使用します。従ってclass-mapの作成、policy-mapの作成、
最後にインターフェースの適用が必要です。NBARで分類を行うためには、class-mapの定義にNBARによる
実装が必要になることが分かります。NBARによる分類は「 match protocol 」コマンドによって行います。
(config)# class-map name
(config-cmap)# match protocol protocol
上記の「protocol」キーワードには、NBARの対応しているプロトコルを指定します。例えばHTTPの場合は
キーワードの後にURLの指定やホストの指定などが行えます。
(config-cmap)# match protocol http url url-string
(config-cmap)# match protocol http host host
◆ NBAR - match protocol http のコンフィグ設定
NBARによる分類を行う際に使用する「match protocol」の後にNBARのサポートしている多くのプロトコル
を指定できますが、ここではその中で「http」に特化して「match protocol http」を紹介したいと思います。
(config)# class-map name
(config-cmap)# match protocol http [ url string | host string | mime type | c-header-filed string | s-header-field string ]
コマンド引数 |
説明 |
url string |
合致条件となるHTTPのURLを指定する |
host string |
合致条件となるホスト名を指定する |
mime type |
合致条件となるMIMEテキスト文字列を指定する |
c-header-field string |
合致条件となるHTTP request message内にあるテキストの文字列を指定する |
s-header-field string |
合致条件となるHTTP response message内にあるテキストの文字列を指定する |
NBARでは「match protocol url」または「match protocol host」で指定する文字列に対して以下の
正規表現を使用して、文字列を指定することができます。
コマンドで実行できる正規表現 |
説明 |
* |
文字列上のこの位置で、0個以上の任意の文字列と見なされる |
? |
文字列上のこの位置で、1個以上の任意の文字と見なされる。 |
| |
文字列上のこの位置で、| を挟む2つの文字のどちらかの文字と見なされる。 |
(|) |
文字列上のこの位置で、| を挟む2つの文字列のどちらかの文字列と見なされる。 |
[ ] |
文字列上のこの位置で、[ ]内に指定した文字列のうちどれか1つの文字として見なされる。 |
◆ NBARの設定例
Cisco(config) # ip cef
Cisco(config) # class-map CLASS1
Cisco(config-cmap) # match protocol http c-header-field “somebody@cisco.com”
Cisco(config) # class-map CLASS2
Cisco(config-cmap) # match protocol http c-header-field “https://www.cisco.com/routers”
Cisco(config) # class-map CLASS3
Cisco(config-cmap) # match protocol http s-header-field “https://www.cisco.com/routers”
Cisco(config) # class-map CLASS4
Cisco(config-cmap) # match protocol http s-header-field “gzip”
|
|