簡介
本文說明如何處理Cisco IOS存取點(AP)上報告的快閃記憶體損毀問題。
必要條件
需求
思科建議您瞭解以下基本知識:
- AireOS無線LAN控制器(WLC)
- 輕量型AP
- Python 2.7(無更高版本)
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- Cisco Aironet 1040、1140、1250、1260、1600、1700、2600、2700、3500、3600、3700、700、AP801和AP802系列室記憶體取點
- Cisco Aironet 1520(1522、1524)、1530、1550(1552)、1570和工業無線3700系列室外和工業無線接入點
註:由於快閃記憶體硬體型別,在此問題上的Wave1 AP型號(如1700/2700/3700和2600/3600)與其他AP型別相比具有更高的流行率。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
根據FN70330 - Cisco IOS AP由於快閃記憶體損壞問題而擱淺,由於許多軟體錯誤和AP正常操作,某些Cisco IOS AP上的快閃記憶體檔案系統可能會隨著時間的推移而損壞。這尤其是在對WLC執行升級後發生,但並不一定僅限於此情況。
AP在此問題狀態下工作,為客戶端提供服務,但檢測不容易。
解決方案
WLC升級前修復
以便在升級之前識別網路中受影響的AP並修復它們。 您需要執行WLAN輪詢器。
注意:升級前,請閱讀整個文檔。
WLAN輪詢器邏輯
每次運行該指令碼時,都會驗證AP快閃記憶體是否可以訪問。
如果可以訪問,它會運行命令fsck flash:
如果一切正常,則轉到下一個AP。
- 否則重複該命令最多4次。如果發生故障,指令碼可以在最終報告中報告此情況,並且此AP符合恢復條件。
如果無法訪問
- 指令碼在其最終報告中標籤接入點,並且此接入點符合恢復條件。
如果可以訪問,AP可以檢查關鍵檔案的MD5值。
如果所有值都良好,則轉到下一個AP。
- 否則,腳本可以在最終報告中報告此情況,並且此AP符合恢復條件。
指令碼需要運行三次。
- 運行
- 該指令碼根據AP上每個檔案的MD5校驗和值構建MD5資料庫。特定檔案的最終MD5值是WLC上同一AP系列的命中數最多的檔案。
- 運行
- 該指令碼將MD5校驗和值與資料庫進行比較。如果值匹配,則檔案為ok,如果不匹配,則標籤AP以便在第三次運行中恢復。
- 運行
- 指令碼觸發命令test capwap image capwap(僅針對前兩個步驟中標籤的AP)。
注意:此恢複方法會在下載並安裝映像後重新載入AP。確保在維護視窗中運行。
安裝/準備WLAN輪詢器
1.下載WLAN輪詢器工具。
註:如果您從上一個連結下載最新版本的WLAN Poller工具,則可以跳過步驟2和步驟3。此版本可以自動安裝WLAN輪詢器工具的所有必需元件。如果您有較舊版本的WLAN Poller(.rar),請執行下一個步驟2和3。
2.將檔案移動到要儲存WLAN Poller檔案的特定資料夾。
3.有關如何安裝指令碼的說明,請參見下一個連結:
有關Windows 10電腦上的分步指南,請按一下此處。
有關MAC OS的分步指南,請單擊此處。
4.準備config.ini檔案。
完成安裝並生成檔案後。您需要編輯檔案config.ini。
指定WLC/AP連線模式:
; config global mode for WLC and AP connection: "ssh" or "telnet"
mode: ssh
ap_mode: ssh
指定WLC/AP憑據:
; set global WLC credentials
wlc_user: <wlc_user>
wlc_pasw: <wlc_pasw>
; set global AP credentials
ap_user: <ap_user>
ap_pasw: <ap_pasw>
ap_enable: <ap_enable>
對於快閃記憶體檢查/恢復,有以下選項。
要確定受影響的AP使用,請執行以下操作:
; ap file system checks (WARNING: recover can force Cisco IOS image download and AP reload)
ap_fs_check: True
ap_fs_recover: False
要恢復AP,請使用:
; ap file system checks (WARNING: recover can force Cisco IOS image download and AP reload)
ap_fs_check: True
ap_fs_recover: True
指定WLC資訊
在本範例中,WLC名稱為2504-WLC。您可以在WLC監控頁面上找到此資訊。
; WLC sections must be named as [WLC-
]
[WLC-2504-Rafis]
active: True
ipaddr:
您可以新增多個WLC。變更方式如下:使用新的WLC資訊複製/貼上先前的語法。
註:無需指定任何AP清單。指令碼從WLC中提取AP。
運行WLAN輪詢器
從建立配置檔案的目錄中(上一節,步驟3)。使用以下命令: wlanpoller --cli-logging
.
完成指令碼後,它會提供以下摘要:
============================================================
Summary
============================================================
Total APs : 1
Processed APs : 1
Failed APs : 0
============================================================
Errors
============================================================
AP MD5 checksum mismatch : 2
AP FSCK recover : 1
============================================================
注意:請記住,指令碼需要運行2次,才能獲得有關受影響的AP數量的準確資訊。
WLAN輪詢器輸出
在運行指令碼的路徑上。它建立這些檔案。
- ap_md5_db.json: MD5資料庫
- 資料夾日誌
- 它將由WLAN輪詢器顯示的所有輸出資訊儲存在終端上。
- 資料夾資料
- 它將報告分為以下路徑: <年> / <月> / <天>
檔案: <timestamp>_ap_fs.csv — 對AP執行的檢查及其結果的摘要。
列說明
- ap_name:AP的名稱。
- ap_type:AP模型。
- ap_uptime:AP的運行時間(天)。
- ap_ios_ver:Cisco IOS版本。
- fs_free_bytes:快閃記憶體檔案系統中的可用位元組數。
- flash_issue:如果觀察到任何快閃記憶體損壞,則為True。
- fs_zero_size:檢測到掛起的快閃記憶體時為true,檔案系統顯示「 — 」 -(show file system - command)。
- fsck_fail:如果檔案系統檢查失敗,則為True。 — (fsck flash: — 命令)。
- fsck_busy:執行快閃記憶體fsck時,裝置或資源正忙。
- fsck_recovered:在fsck上發生錯誤時為True,但在下一個fsck中修復了該錯誤。
- fsck_attempts:fsck恢復AP的嘗試次數(最多4次)。
- md5_fail:當md5中至少有一個檔案與資料庫中儲存的檔案不同時,則為True。
- rcv_trigger:檢測到問題且已啟用恢復時,AP嘗試從WLC下載映像時為True。
檔案: <timestamp>_ap_md5.csv所有檔案(在所有AP上)的MD5校驗和值的詳細資訊。
列說明
- ap_name:AP的名稱。
- ap_type:AP模型。
- ap_uptime:AP的運行時間(天)。
- filename:Cisco IOS映像檔名。
- md5_hash:檔名的md5值。
- is_good:true md5值與儲存在資料庫中的值匹配。發現此檔案的False md5不匹配。
- is_zero_bytes:根據md5checksum,如果檔名有0個位元組,則為True,因此文件不正確。
- md5_error:如果無法獲取檔名的md5,則會出現檢索到md5值的錯誤消息。
注意:可能會出現WLAN輪詢器恢復指令碼無法恢復某些AP,並且這些AP在報告中仍標籤為失敗的情況。在這些情況下,建議通過telnet/SSH/控制檯手動將AP恢復到AP CLI中。如果您需要有關此流程的幫助,請開啟TAC SR。將WLAN Poller產生的所有輸出都附加到該案例。
擱淺的AP
如果SSH/telnet連線
您可以執行以下步驟嘗試恢復AP:
AP# debug capwap console cli
AP# debug capwap client no-reload
- 如果成功,則格式化flash,然後您可以繼續執行下一步,否則退出。
AP# format flash:
archive download-sw /overwrite tftp://<IP address>/<file name>
- 檢查已載入的恢復映像上的MD5(如果正確),繼續下一步
AP# verify /md5 flash:/<image directory>/<image file>
您可以在思科網頁上比較CLI值與值。
AP#show boot
AP(config)#boot system flash:/RCV/RCV-image
如果AP Rommon狀態
您可以嘗試與之前相同的方式,但需使用boot指令。以下是您可以使用的命令:
ap: tftp_init
ap: ether_init
ap: flash_init
ap: format flash:
ap: set IP_ADDR <IP Address>
ap: set NETMASK <mask>
ap: set DEFAULT_ROUTER < default router >
ap: tar -xtract tftp://<IP address>/<file name> flash:
ap: set BOOT flash:/<file name>
ap: boot
無法使用SSH/Telnet
退回交換機埠數次,驗證是否有所幫助。
在Windows 10上安裝WLAN輪詢器的分步指南
註:如果您下載最新版本的WLAN Poller工具,則可以跳過此部分。
- 從此連結下載並安裝Python 2.7.14。
- 從此連結下載並安裝C++編譯器Python for Windows客戶端。
- 安裝之後,請轉到「控制面板」上的「系統設定」,然後選擇「高級系統設定」(確保關閉所有Windows終端):
- 在彈出視窗中,選擇Environment Variables。
- 在該處,從System variables中選擇Path變數,然後按一下Edit。
- 在該視窗中,將路徑新增到安裝Python 2.7.14.0的基目錄和C:\<Base directory>\Scripts,以便筆記型電腦的命令列可識別python命令。按一下「New」,然後手動新增路徑。
關閉所有設定視窗,如果有的話,開啟終端(命令提示符)。
- 驗證是否已安裝pip,開啟新終端並輸入pip —version:
另一個選項是檢查資料夾C:\Python27\Scripts 上是否存在名為pip或pip2或pip2.7的檔案
- 如果一切正常,請轉至升級pip部分,步驟8。
- 如果出現錯誤,或者找不到資料夾/檔案,請繼續閱讀。
安裝pip
- 關閉終端並從下一個連結安裝pip。
- 下載並儲存檔案get-pip.py。 在網站上查詢:
- 將get-pip-py檔案複製到C:\Python27資料夾。
註:如果從網站複製並貼上內容,請確保其沒有py.txt副檔名,則在C:\Python27資料夾上使用dir檢查此檔案,如果發生這種情況,請從終端重新命名該檔案。
使用下一個命令重新命名檔案:
- 在同一資料夾C:\Python27上執行python get-pip.py。
- 使用以下命令將PIP升級到最新版本: pip install —upgrade pip。
- 前面步驟可以安裝所需的所有資料包。現在開啟Windows命令列,並轉到儲存.tar.gz WLAN輪詢器檔案的目錄(使用: cd <目錄路徑>)。
- 使用pip install wlanpoller-0.7.1.dev90_md5rcv.tar.gz命令安裝指令碼。
- 建立一個要儲存所有WLAN輪詢器資訊的新目錄。
- 在命令列上,移動到該目錄,然後運行命令wlanpoller —generate-configs以建立運行指令碼所需的設定變數和配置檔案:
按一下這裡以繼續使用config.ini檔案。
在MacBook上安裝WLAN輪詢器的分步指南
註:如果您下載最新版本的WLAN Poller工具,則可以跳過此部分。
MAC OS已安裝Python。若要安裝其餘封包,請執行以下步驟:
- 移到您使用WLAN輪詢器file: cd <path>的資料夾。
- 運行以下命令後:sudo pip install wlanpoller-<version>.tar.gz。為此,您需要輸入密碼(MACBook管理員密碼)。
- 建立新目錄以組織指令碼可以建立的所有檔案。
- mkdir <directory name>
- cd <目錄名稱>
- 執行下一個命令,以便指令碼準備運行指令碼所需的所有目錄/檔案: wlanpoller —generate-configs。
按一下此處繼續config.ini檔案。
WLAN輪詢器限制
- WLAN Poller只在Windows 10 64位系統和Apple MacBook 10.11或更高版本上測試支援。
- 如果不使用較新版本的WLANPoller工具,則較舊版本僅支援Python 2.7版本。
- 如果AP名稱包含特殊字元,例如 執行指令碼期間將會出現下一個錯誤。
- 使用者需要手動從AP名稱中刪除特殊字元才能解決問題。
相關資訊