NBAR(Network-Based Application Recognition) 的意思是网络应用识别。 NBAR是一种动态能在四层到七层发现协议的技术。它不同于ACL,仅仅依靠端口号进行对应用服务的判断,更加精准的是可以通过数据包本身的描述进行识别判断,该数据属于哪一种服务,可以对使用动态分配TCP/UDP端口号(如P2P下载软件)的应用程序和HTTP流量等进行分类。

    实际上NBAR的应用原理在于对网络应用层面的监控,可以进行代码匹配来识别数据报的具体应用,例如FTP、WEB、BT、电驴等等。即便所应用的服务端口变化,NBAR也可以识别出来具体的服务。NBAR首先可以应用于网络监控,判断究竟在你的网内哪种服务占据着最主要的流量,以便于配合QOS来做流量的修整。

PDLM它是NBAR针对于网络高层应用的主要识别原理,从Cisco IOS 12.0之后引入了NBAR的概念,由于IOS的版本高低不同,较高的IOS已经内嵌支持bittorrent和eDonkey两种协议,如果您的设备目前没有能力发现BT和电驴的流量,主要是不支持这两个协议。

1.上传PDLM, 如果IOS已经支持这两种协议,则无需上传PDLM

cisco#copytftp flash  //采用TFTP协议,复制TFTP文件到路由器flash

Addressor name of remote host []? 192.168.10.10 //TFTP服务器的IP地址

Sourcefilename []? bittorrent.pdlm //上传支持BT协议的PDLM

Destinationfilename [bittorrent.pdlm]?  //上传后的目的文件名

Accessingtftp://192.168.10.10/bittorrent.pdlm...

Eraseflash: before copying? [confirm]n  

//一定要选择NO,不格式化Flash,否则PDLM是上传到Flash中了,Flash中的其他的文件都被格式化了

cisco#showflash //查看flash确认已经上传成功

Systemflash directory:

File  Length  Name/status

  1  15824768  3600_12_3(22)(fc2).bin 

  2   3100    bittorrent.pdlm 

[15827996bytes used, 17202144 available, 33030140 total]

32768Kbytes of processor board System flash (Read/Write)

2.第二步:通过IP NBAR命令加载PDLM模块到内存中

cisco(config)#ipnbar pdlm flash:bittorrent.pdlm

cisco(config)#ipnbar pdlm flash:eDonkey.pdlm

3.使用Class-map来对流量进行分类标记

cisco(config)#class-mapmatch-any bt

cisco(config-cmap)#matchprotocol bittorrent

cisco(config-cmap)#matchprotocol edonkey

“match-any”匹配上其中一种流量,就执行分类

“match-all”匹配所有流量,才分类

//使用Class-map对流量进行分类,Class-map的名字为BT

//Match 对象很多,可以ACL或者协议等

4.使用Policy-map对分类的流量给定丢弃的策略

cisco(config)#policy-mapDeny-bt

//流量已经分类,使用Policy-map的目的是针对这些分类的流量给定一个什么样的策略。

这里先定义policy-map 的名字为Deny-bt 名称可以是任意字符

cisco(config-pmap)#classbt

//在Policy-map中关联Class-map 的名字

//policy-map给这些满足分类流量的策略是丢弃,你可以做做限速,可以让下载BT,但是速度限制20Kbps

cisco(config-pmap-c)#drop

cisco(config)#ip cef  //要使用NBAR必须启用 Cisco 快速转发

5.应用在连接Internet的接口下

cisco(config)#int e0/2  //在接口下要调用Policy-map 的策略

cisco(config-if)#ip nbar protocol-discovery//开启接口下NBAR

cisco(config-if)#service-policyoutput Deny-bt //把策略应用E0/2的出方向

cisco(config-if)#service-policyinput Deny-bt //把策略应用E0/2的入方向

6.在路由器上检查配置

   Show class-map

   Show Policy-map

   Show policy-mapinterface e0/2