WLC 9800-L прошивка

WLC 9800-L прошивка — продолжаем, а точнее завершаем, цикл статей про обновлению современных девайсов CISCO на IOS XE.

Конечно хорошо бы для полноты было добавить ещё статейку по обновлению Nexus (тут NX-OS). И хотя прошивал 9000 серию, моё скупое знание дата-центровых технологий не сделает такую статью достаточно познавательной. Возможно дата-центр как-нибудь потом.

Итак, программный WLC на каталисте 9300 обновляли в прошлой статье, теперь очередь обновить железный кластер. Общий принцип обновления IOS XE обрисован здесь. Скажу сразу, обновление 9800-L отличается от обновления коммутатора несильно, но нюансы таки есть.


Подготовка

Чем потенциально грозит обновление WLC? На мой взгляд следующими вещами:

  • Появятся серьёзные проблемы с работоспособностью. Например, кластер развалится и не соберётся;
  • В новой версии не поддерживаются некоторые модели APs, которые сейчас используются;
  • Существует зависимость процесса обновления от используемых APs;
  • После обновления часть APs не переподсоединится к контроллеру и исчезнет из поля зрения;
  • Обновление принесёт новые баги, чувствительные для продакшена;
  • Простой в работе корпоративных сетей Wi-Fi.

Как обезопасить первый пункт не подскажу, только пробовать обновляться (три раза перекрестился, бух в котёл и там сварился). А если проблемы вылезут, откатываться назад. Поэтому всё что тут придумал, это скачать текущую версию прошивки, иметь её под рукой. И конечно бэкап конфигурации.

Ещё, загрузчик должен соответствовать прошивке:

#show ver
Cisco IOS XE Software, Version 17.03.06
...
ROM: 16.12(3r) - у меня он последний, дополнительные действия не требуются

Второй пункт, пробить поддерживаемые точки в зависимости от версии здесь. В моём случае APs поддерживаются полностью и в начальном, и в конечном релизах. Едем дальше.

Третий, при наличии AP моделей 9130/9124 проверить можно ли апгрейдиться напрямую тут. Или же возможно только через апгрейд на промежуточную версию. Поскольку у меня таких моделей точек нет, пропускаю и перехожу далее.

Четвертый пункт считаю самым важным. Особенно когда точек много. И если после обновы точек станет меньше, а именно так и получилось, понять какие именно точки не присоединились, без подготовленных заранее данных будет сложной задачей. Можно выгрузить список точек прямо с самого контроллера в файл Excel (штатная возможность). Не люблю офисный пакет MS, с домашнего компа давно его снёс, а на работе стараюсь пользоваться как можно реже. Поэтому воспользуюсь другим вариантов сохранения списка точек, через CLI контроллера. Тем более, так или иначе придётся перед обновлением в командной строке повозиться. Переходим к следующему пункту.

Баги

Поговорим отдельно, баги зависят от версии ПО, сама циска рекомендует 17.9.5, при этом для этой версии заявлено вот такое количество багов:

IdentifierHeadline
CSCwi51168FlexConnect setup fails to renew 4-way handshake when Pairwise Master Key (PMK) ID does not match.
CSCwi55714Controller reboots when handling Cisco Network Mobility Services Protocol (NMSP) Transport Layer Security (TLS) connection.
CSCwi53481Controller loses SUDI MIC trustpoint when upgrading from Cisco IOS-XE 17.6.4 to 17.9.4a via SDA.
CSCwh63050Controller with Cisco IOS-XE 17.9.3 sends Internet Group Management Protocol (IGMP) queries with a non-WLC IP address and MAC address.
CSCwi16509APs do not join the controller with Invalid radio slot id error.
CSCwi60173Security Group Tag (SGT) is not applied to wireless client in Software Defined-Access (SDA) fabric.
CSCwi28382Controller reloads unexpectedly due to Keymgmt: Failed to eapol key m1 retransmit failure. Max retries for M1 over.
CSCwi57179A client with a static IP is assigned to the wrong VLAN (vlan group) during roaming.
CSCwh18613Encrypted mesh pre-shared key changes each time the password encryption aes is applied.
CSCwi62934Cisco Catalyst 9120 AP drops the large frame downstream towards the wireless client.
CSCwi16104Controller experiences an unexpected reboot in DBM during the Flex VLAN list retrieval.
CSCwi66133Cisco Catalyst 9130 AP reloads unexpectedly due to kernel panic.
CSCwi42112Wired clients learn MAC address from the Cisco Catalyst 9124 MAP port.
CSCwi56780The MAC Authentication Bypass (MAB) is not initiated unless the controller deauthenticates the device.
CSCwi04855Cisco Catalyst 9115 APs join and disjoin repeatedly with traceback.
CSCwi51025Cisco Catalyst 9130 AP reloads unexpectedly resulting in kernel panic crash.
CSCwi27380Media stream feature does not work.
CSCwi29636Cisco Catalyst 9800-40 Wireless Controller reloads unexpectedly when Cisco IOS-XE 17.9.3 WNCD is down.
CSCwi54064APs connected to the same controller classify each other as rogue and generate an "AP Impersonation" threat warning.
Выглядит опасно, хотя большая часть неприменима для моего контроллера

Опять же, не поставишь, не узнаешь. С другой стороны, хорошо что хоть список багов имеется, не каждый вендор это делает. Как оказалось далее, WLC работает штатно. Прям каких-то особых случаев не выявлено.

Простой

Последний пункт, читаем в мануале по обновлению на сайте циски:

Hitless upgrade leverages the concept of N+1 high availability with a spare WLC (already upgraded to the target version) to upgrade the CAPWAP infrastructure. The hitless upgrade is not supported by the controller running in BUNDLE mode. Access Point Stateful Switch Over (AP SSO) functionality is not supported for N+1 HA. 

То есть можно, необходим выделенный бэкапный WLC. Но нафиг не нужно, овчинка не стоит выделки. Ибо переконфигурация, SSO потеряется:

#show redundancy states 
my state = 13 -ACTIVE
peer state = 8 -STANDBY HOT
Mode = Duplex
Unit = Primary
Unit ID = 1

Redundancy Mode (Operational) = sso
Redundancy Mode (Configured) = sso
Redundancy State = sso
Maintenance Mode = Disabled
Manual Swact = enabled
Communications = U
p

То есть другими словами, мой отказоустойчивый кластер нельзя проапгрейдить без простоя. Чтобы снизить простой, предварительно загрузим новую версию ПО на точки. Кроме это апгрейдиться разумеется будем на выходных, согласовав со всеми и заложив времени с запасом.


Прошивка

Смотрим текущее состояние установки:

#show install summary 
[ Chassis ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
...
[ chassis 1/R0 ] Installed Package(s) Information:
IMG C 17.03.06.0.7954
...
[ chassis 2/R0 ] Installed Package(s) Information:
IMG C 17.03.06.0.7954
Контроллер

Первым делом удаляем всё старое, как видно старья с избытком:

#install remove inactive
...
The following files will be deleted:
[chassis 1/R0]:
/bootflash/C9800-L-hw-programmables.16.12.04a.SPA.pkg
/bootflash/C9800-L-mono-universalk9_wlc.16.12.04a.SPA.pkg
/bootflash/C9800-L-mono-universalk9_wlc.17.03.03.SPA.pkg
/bootflash/C9800-L-rpboot.16.12.04a.SPA.pkg
/bootflash/C9800-L-rpboot.17.03.03.SPA.pkg
/bootflash/C9800-L-universalk9_wlc.16.12.04a.SPA.bin
/bootflash/C9800-L-universalk9_wlc.17.03.03.SPA.conf
/bootflash/C9800-L-universalk9_wlc.17.03.06.SPA.bin
/bootflash/C9800-L-universalk9_wlc.17.03.06.SPA.conf
[chassis 2/R0]:
...
SUCCESS: install_remove Mon May 13 11:03:21 GMT 2024

Закачиваем новую прошивку и проверяем её хэш, он должен бить с хешем на сайте циски:

.....................................................................................Done!
verify /md5 (bootflash:C9800-L-universalk9_wlc.17.09.05.SPA.bin) = 07ff2f59787530d2814874ea39416b46

А затем предустанавливаем:

#install add file flash:C9800-L-universalk9_wlc.17.09.05.SPA.bin

В результате:

#show install summary
[ Chassis ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
...
[ chassis 1/R0 ] Installed Package(s) Information:
IMG I 17.09.05.0.6450
IMG C 17.03.06.0.7954
...
[ chassis 2/R0 ] Installed Package(s) Information:
IMG I 17.09.05.0.6450
IMG C 17.03.06.0.7954
Точки доступа

Посмотрим что у нас есть (названия точек изменены):

#show ap image
Total number of APs : 171
...
AP Name Primary Image Backup Image Predownload Status
-----------------------------------------------------------------------------------------------------
AP1 17.3.6.76 17.3.3.26 None
AP2 17.3.6.76 17.3.3.26 None
AP3 17.3.6.76 17.3.3.26 None
AP4 17.3.6.76 8.10.130.0 None
AP5 17.3.6.76 17.3.4.30 None
AP6 17.3.6.76 17.3.4.30 None
...

Как видно, точки добавлялись на контроллер разными сложными путями. Поможем им пережить обновление, сразу закачав новый образ:

#ap image predownload

После чего, точки начинают качать. В процессе закачки всегда примерно 25 штук:

#show ap image summary 
Total number of APs : 171
Number of APs
Initiated : 0
Downloading : 0
Predownloading : 25
Completed downloading : 0
Completed predownloading : 69
Not Supported : 0
Failed to Predownload : 0
Predownload in progress : Yes

При этом закачивающие отваливаются (!) от контроллера, а после закачки приваливаются обратно. На работоспособность сетей Wi-Fi повлияло незначительно. После завершения процесса, как говорится "то, что доктор прописал".

#show ap image         
Total number of APs : 171
...
AP Name Primary Image Backup Image Predownload Status
-----------------------------------------------------------------------------------------------------
AP1 17.3.6.76 17.9.5.47 Complete
AP2 17.3.6.76 17.9.5.47 Complete
AP3 17.3.6.76 17.9.5.47 Complete
AP4 17.3.6.76 17.9.5.47 Complete
AP5 17.3.6.76 17.9.5.47 Complete
AP6 17.3.6.76 17.9.5.47 Complete
...

Вот эти данные и предлагаю скопировать в текстовый файл. Использовать его для проверки после обновления. И если у вас точки названы правильно, а именно (примерно) по формату Компания-Локация-Этаж-Номер_точки, то найти пропажу будет несложно.

Обновление

Всё готово к обновлению, в час X вводим команду:

#install activate 
install_activate: START Sat May 18 08:07:08 GMT 2024
install_activate: Activating PACKAGE
Following packages shall be activated:
/bootflash/C9800-L-rpboot.17.09.05.SPA.pkg
/bootflash/C9800-L-mono-universalk9_wlc.17.09.05.SPA.pkg

This operation may require a reload of the system. Do you want to proceed? [y/n]y

После согласия с перезагрузкой выполняются следующие действия:

--- Starting Activate ---
Performing Activate on all members
umount: /tmp/sw/transient/wlcPkg: target is busy.
[1] Activate package(s) on chassis 1/R0
--- Starting list of software package changes ---
Old files list:
Removed C9800-L-mono-universalk9_wlc.17.03.06.SPA.pkg
Removed C9800-L-rpboot.17.03.06.SPA.pkg
New files list:
Added C9800-L-mono-universalk9_wlc.17.09.05.SPA.pkg
Added C9800-L-rpboot.17.09.05.SPA.pkg
Finished list of software package changes
[1] Finished Activate on chassis 1/R0
[2] Activate package(s) on chassis 2/R0
--- Starting list of software package changes ---
Old files list:
Removed C9800-L-mono-universalk9_wlc.17.03.06.SPA.pkg
Removed C9800-L-rpboot.17.03.06.SPA.pkg
New files list:
Added C9800-L-mono-universalk9_wlc.17.09.05.SPA.pkg
Added C9800-L-rpboot.17.09.05.SPA.pkg
Finished list of software package changes
[2] Finished Activate on chassis 2/R0
Checking status of Activate on [1/R0 2/R0]
Activate: Passed on [1/R0 2/R0]
Finished Activate

Send model notification for install_activate before reload
Install will reload the system now!
SUCCESS: install_activate Sat May 18 08:13:05 GMT 2024

Подчёркиваю, активация выполняется на обеих нодах кластера и обе ноды уходят в перезагрузку.

Кластер

После перезагрузки ноды появляются отдельно, смотрим:

#show install summary 
[ Chassis 1/R0 2/R0 ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG U 17.09.05.0.6450
--------------------------------------------------------------------------------
Auto abort timer: active , time before rollback - 05:45:18

Кластера при этом нет и нет кластерного IP. Обращаю внимание, время до ролбэка значительно больше, чем у коммутатора. Там два часа, тут шесть.

Кластер собрался только после коммита (и ещё одной перезагрузки). Должно так быть, не должно, штатное ли это поведение.. — не знаю.

#install commit 
install_commit: START Sat May 18 08:42:21 GMT 2024
--- Starting Commit ---
Performing Commit on all members
[1] Commit packages(s) on Chassis 1/R0
[2] Commit packages(s) on Chassis 2/R0
[1] Finished Commit packages(s) on Chassis 1/R0
Checking status of Commit on [1/R0 2/R0]
Commit: Passed on [1/R0 2/R0]
Finished Commit operation

SUCCESS: install_commit Sat May 18 08:42:30 GMT 2024

После обновы

Первым делом надо заценить красоту и WLC теперь умеет 6GHz (выключено за ненадобностью, точки не могут):

WLC 9800-L прошивка

Изначально не вернулось 9 точек. Три из одной локации и шесть из другой. Помог текстовый файл со списком. С обновлением не было связано. Это всплыла давнишняя проблема, когда несколько новых точек не захотели цепляться на контроллер и были прописаны через CLI точки руками. Дополнительно выявились проблемы с DHCP во VLAN управления в одной из локаций. Так что апгрейд WLC полезная вещь сама по себе. 🙂 Вскрывает невидимые траблы.

А как вообще точки находят котроллер? Повторим заодно материал CCNP Core Enterprise.

Порядок нахождения WLC точкой доступа

Книжка описывает следующие варианты по нахождению WLC точкой, это всего лишь варианты, порядок будет далее:

  • Точка бродскастит в своей VLAN запросом CAPWAP Discovery Request. Если во VLAN есть WLC, он отправит CAPWAP Discovery Response;
  • Контроллеры могут быть прописаны руками на самой точке. Первичный, вторичный и третичный. Кроме того точка хранит список контроллеров, к которым она подключалась ранее и попытается с этими контроллерами связаться;

Для прописывания на точке надо зайти на вебке контроллера в Configuration-Wireless-Access Points, выбрать точку, перейти на вкладку High Availability:

WLC 9800-L прошивка
Надо ввести имя контроллера и его IP
  • Если на интерфейсе VLAN, в которой живёт точка, прописан хелпер, а сам хелпер является DHCP-сервером, то при наличии для области опции 43, точка возьмёт адрес WLC из этой опции;

Значение опции формируется из IP адреса WLC специальным образом и имеет вид f104c0a80101 (для адреса 192.168.1.1). А посмотреть как это происходит, побаловаться с разными адресами, можно например здесь.

  • Когда опять же есть хелпер, DHCP и после загрузки точке доступен DNS, точка попытается разрезолвить адрес CISCO-CAPWAP-CONTROLLER.your_domain. На корпоративном DNS естественно такой адрес должен быть прописан для успеха;
  • В случае когда ни один метод не сработал, точка уходит в ребут. И он будет циклическим.

Допустим, в результате поиска было найдено несколько разных WLC. К какому точка подсоединится? Тут могу ошибаться, расскажу как сам знаю. Контроллеров не так много обычно 🙂 , протраблшутить данный момент достаточно затруднительно. Ну и путаный процесс сам по себе. Поправьте, если что.

У контроллера есть максимальное число точек (ограничение платформы/лицензионное). И если точка окажется "лишней", WLC её зареджектит, она пойдёт искать дальше по своему алгоритму. На вкладке High Availability точки есть параметр AP failover priority со значениями Low, Medium, High, Critical. Всегда считал, что он влияет на выбор WLC. Это не так. Нужен он как раз для контроллера с заполненной ёмкостью. Такой контроллер будет принимать точки с высоким приоритетом в первую очередь, выпихивая точки с низким приоритетом:

Failover priority is not in effect during the regular operation of your wireless network. It takes effect only if there are more associations requests to controller than the available AP capacity on the controller.

Итак, процесс выбора. Точка видит контроллер, к которому была подсоединена до ребута? Тогда она подсоединится именно к нему. Затем идут контроллеры на закладке High Availability. Далее, если ничего такого не случилось, точка начинает броадкастить, находит контроллер, цепляется к нему. Крайние методы DHCP и DNS. При этом, если найдено несколько WLC, точка подсоединится к наименее загруженному (контроллеры отправят свой статус). Примерно так.

Приглашаю поделиться мнением в Tелеграм канал

Leave a Comment

Scroll to Top