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