NBAR ( Network-Based Application Recognition )



 ◆ 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 “http://www.cisco.com/routers”

 
Cisco(config) # class-map CLASS3
 
Cisco(config-cmap) # match protocol http s-header-field “http://www.cisco.com/routers”

 Cisco(config) # class-map CLASS4
 
Cisco(config-cmap) # match protocol http s-header-field “gzip”




QoSをはじめから

ネットワークエンジニアとして

Copyright (C) 2002-2017 ネットワークエンジニアとして All Rights Reserved.