本文說明如何使用網路型應用程式辨識(NBAR)的自訂封包說明語言模組(PDLM)功能,對非分類流量或非明確支援為match通訊協定語句的流量進行比對。
本文檔的讀者應瞭解以下主題:
基本QoS方法
對NBAR的基本理解
本文中的資訊係根據以下軟體和硬體版本:
Cisco IOS®軟體版本12.2(2)T
思科7206路由器
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
NBAR支援各種靜態和狀態協定。PDLM允許對NBAR提供新的通訊協定支援,且無需IOS版本升級和路由器重新載入。後續的IOS版本包含對這些新協定的支援。
自定義PDLM允許使用match protocol語句將協定對映到NBAR中當前不支援的協定的靜態使用者資料包協定(UDP)和TCP埠。換句話說,它擴展或增強了NBAR識別的協定清單。
以下是將自訂PDLM新增至路由器的步驟。
通過下載custom.pdlm檔案,從Software Download頁面(僅限註冊客戶)找到並下載NBAR PDLM。
使用下面的命令將PDLM載入到快閃記憶體裝置,如插槽0或1中的PCMCIA卡。
7206-15(config)# ip nbar pdlm slot0:custom.pdlm
使用show ip nbar port-map驗證對自定義協定的支援 | include custom命令(如下所示)或show ip nbar pdlm命令。
7206-16# show ip nbar port-map | include custom port-map custom-01 udp 0 port-map custom-01 tcp 0 port-map custom-02 udp 0 port-map custom-02 tcp 0 port-map custom-03 udp 0 port-map custom-03 tcp 0 port-map custom-04 udp 0 port-map custom-04 tcp 0 port-map custom-05 udp 0 port-map custom-05 tcp 0 port-map custom-06 udp 0 port-map custom-06 tcp 0 port-map custom-07 udp 0 port-map custom-07 tcp 0 port-map custom-08 udp 0 port-map custom-08 tcp 0 port-map custom-09 udp 0 port-map custom-09 tcp 0 port-map custom-10 udp 0 port-map custom-10 tcp 0
使用ip nbar port-map custom-XY {tcp|udp} {port1 port2 ...}命令將埠分配給自定義協議。例如,要匹配TCP埠8877上的流量,請使用ip nbar port-map custom-01 tcp 887命令。
根據網路流量,您可能需要在NBAR中使用特殊分類機制。對此流量進行分類後,您可以使用自定義PDLM並將UDP和TCP埠號與自定義埠對映進行匹配。
預設情況下,未啟用NBAR未分類機制。show ip nbar unclassified-port-stats命令返回以下錯誤消息:
d11-5-7206-16# show ip nbar unclassified-port-stats Port Statistics for unclassified packets is not turned on.
在嚴格控制的情況下,使用debug ip nbar unclassified-port-stats命令將路由器配置為開始跟蹤資料包到達的埠。然後使用show ip nbar unclassified-port-stats命令驗證收集的資訊。現在,輸出會顯示最常用埠的直方圖。
注意:發出debug命令之前,請參閱有關Debug命令的重要資訊。只有在精心控制的情況下才應啟用debug ip nbar命令。
如果此資訊不夠,您可以啟用捕獲功能,該功能提供了捕獲新協定資料包跟蹤的簡便方法。使用以下debug命令,如下所示。
debug ip nbar filter destination_port tcp XXXX debug ip nbar capture 200 10 10 10
第一個命令定義您希望捕獲的資料包。第二個命令將NBAR置於捕獲模式。capture命令的引數如下:
每個資料包要捕獲的位元組數。
要捕獲的起始資料包數,換句話說,在TCP/IP SYN資料包之後要捕獲的資料包數。
要捕獲的最終資料包數,換句話說,在流末尾要為其保留空間的資料包數。
要捕獲的資料包總數。
注意:指定起始和最終資料包引數只能捕獲長流中的相關資料包。
使用show ip nbar capture命令檢視收集的資訊。預設情況下,捕獲模式等待SYN資料包到達,然後開始捕獲該雙向流上的資料包。
讓我們看一下如何使用自定義PDLM的示例。我們使用Gnutella作為要分類的流量,然後應用阻止此流量的QoS策略。
Gnutella使用6個公認的TCP埠 — 6346、6347、6348、6349、6355和5634。當收到Pong時,可能會檢測到其他埠。如果使用者指定其他埠用於Gnutella檔案共用,則可以將這些埠新增到自定義匹配協定語句中。
以下是建立匹配和丟棄Gnutella流量的QoS服務策略的步驟。
如上所述,使用show ip nbar unclassified-port-stats命令檢視NBAR「未分類」流量。如果您的網路正在傳輸Gnutella流量,您會看到類似以下的輸出。
Port Proto # of Packets ------- -------- ------- 6346 tcp 347679 27005 udp 55043
使用ip nbar port-map custom命令定義與Gnutella埠匹配的自定義埠對映。
ip nbar port-map custom-02 tcp 5634 6346 6347 6348 6349 6355
注意:目前,必須使用如custom-xx這樣的名稱。即將發佈的Cisco IOS軟體版本將支援自定義PDLM的使用者定義名稱。
使用show ip nbar protocol stats命令確認與自定義語句的匹配。
2620# show ip nbar protocol stats byte-count FastEthernet0/0 Input Output Protocol Byte Count Byte Count ------------------------------------------------ custom-02 43880517 52101266
使用模組化QoS CLI(MQC)命令建立QoS服務策略。
d11-5-7206-16(config)# class-map gnutella d11-5-7206-16(config-cmap)# match protocol custom-02 d11-5-7206-16(config-cmap)# exit d11-5-7206-16(config)# policy-map sample d11-5-7206-16(config-pmap)# class gnutella d11-5-7206-16(config-pmap-c)# police 1000000 31250 31250 conform-action drop exceed-action drop violate-action drop
請參閱使用基於網路的應用識別和訪問控制清單阻止「紅色代碼」蠕蟲,瞭解用於阻止Gnutella和其他不需要的流量的其他配置命令。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
15-Feb-2008 |
初始版本 |