Трохи про продуктивності мережевого устаткування Cisco



В цьому році ми опублікували дві статті, пов'язані з порівнянням функціональності маршрутизаторів і міжмережевих екранів компанії Cisco, а також з огляд поділу control і data plane в мережевому обладнанні. У коментарях до цих статей було порушено питання продуктивності мережевого обладнання. А саме як залежить продуктивність маршрутизаторів Cisco різних поколінь від включення на них тих або інших сервісів. Так само обговорювалася тема продуктивності міжмережевих екранів Cisco ASA. У зв'язку з цим виникло бажання подивитися на ці питання з практичної сторони, підкріпивши відомі моменти цифрами. Про те, що вийшло і вийшло не дуже, розповім під катом.

Під продуктивністю будемо розуміти пропускну здатність пристрою, вимірювану у Мбіт/с. Стенд для тестування представляв із себе два ноутбука, з встановленою програмою iPerf3. Методика випробування – досить проста. iPerf3 запускався в режимі передачі пакетів по протоколу TCP. Використовувалося 5 потоків. Я не ставив перед собою мету визначити реальну продуктивність пристроїв. Для цієї задачі необхідна більш складна екіпірування, так як потрібно відтворювати патерни трафіку реальної мережі. Та й міряти потрібно було б кількість оброблюваних пакетів. У нас же основним завданням була оцінка впливу використання різних сервісів на роботу пристрою, а також порівняння результатів, отриманих на різних пристроях. Таким чином, вибраний інструментарій на перший погляд здавався досить підходящим для поставлених завдань.

Cisco Integrated Services Router (ISR) Generation 1 і 2

Для початку з коробки були взяті два молодших маршрутизатора Cisco 871 і 881. Це маршрутизатори різних поколінь (871 старий – G1, а 881 більш новий – G2), які звичайно ставляться в невеликі офіси, наприклад, у віддалені філії компанії.

Досліджувані маршрутизатори мають схожі риси в плані програмної та апаратної архітектури: операційна система Cisco IOS, «мозок» пристроїв – SoC MPC 8272 871 і SoC MPC 8300 у 881.

Для кожного маршрутизатора перевірялися такі режими роботи:
  • Маршрутизація з використанням технології Cisco Express Forwarding (CEF).
  • Маршрутизація без використання оптимізуючих технологій (Process Switching).
  • Маршрутизація (CEF) і застосований список доступу (ACL) на одному з інтерфейсів.
  • Маршрутизація (CEF) і ACL на одному з інтерфейсів з опцією log.
  • Маршрутизація (CEF) і включена служба трансляції адрес (NAT*).
  • Маршрутизація (CEF) і включені сервіси міжмережевого екранування (CBAC для 871 і ZPF для 881).
  • Маршрутизація (CEF), МСЕ і NAT.
* При тестуванні налаштовувався як статичний, так і динамічний NAT. Обидва варіанти показали приблизно однакову впливу на продуктивність пристрою.

Тестування зачіпало маршрутизацію трафіку (L3-комутацію) на базі CEF і Process Switching. Обидва режими роботи на досліджуваних пристроях є програмною обробкою пакетів. Різниця в тому, як саме маршрутизатор приймає рішення куди відправити пакет. У разі Process Switching маршрутизатор для кожного пакета визначає, куди його передати і формує/модифікує необхідні заголовки в рамках окремого процесу на підставі таблиці маршрутизації і L2-таблиць. Відбувається так звана процесорна обробка. У разі CEF маршрутизатор використовує заздалегідь підготовлені спеціальним чином таблиці FIB (таблиця префіксів) і Adjacency (таблиця даних по сусідах), які дозволяють істотно знизити навантаження на ЦП і підвищити швидкість обробки пакета всередині пристрою.

Для більш наочного порівняння дані з різних пристроїв нанесені на один графік (малюнок 1).


Відзначимо основні моменти:
  1. Так як інтерфейси на пристроях мають тип FastEthernet, максимальна пропускна здатність точка-точка, отримана через iPerf3, не перевищувала 95 Мбіт/с. При цьому завантаження ЦП для деяких режимів тесетирования не досягала своїх пікових значень, а значить цифра 95 Мбіт/с для цих маршрутизаторів не межа.
  2. Маршрутизатор 881 виглядає краще, так як має більш просунуту апаратну начинку (в першу чергу процесор загального призначення, далі ЦПУ).
  3. Як і слід було очікувати, ми бачимо помітну деградацію продуктивності при включенні сервісів.
  4. При відключенні CEF ми маємо суттєве зменшення продуктивності, так як маршрутизатор починає обробляти кожен пакет не найоптимальнішим чином.
  5. Включення опції log в ACL призводить до підвищення навантаження на пристрій (завантаження ЦП в цьому випадку складає 99%), що негативно позначається на продуктивності. Обумовлено це тим фактом, що опція log примушує маршрутизатор обробляти кожен пакет, що потрапляє в зазначену позицію ACL, в режимі Process Switching, що суттєво збільшує навантаження на процесор.
Пропоную розглянути детальніше завантаження ЦП у разі маршрутизації в режимі CEF і Process Switching. Маршрутизація в режимі CEF:

Router881#sh processes cpu sorted
CPU utilization for five seconds: 47%/42%; one minute: 40%; five minutes: 35%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
89 143724 8597 16717 1.51% 1.42% 1.43% 0 COLLECT STAT COU
5 25792 638 40426 1.43% 0.29% 0.20% 0 Check heaps
97 45204 180099 250 0.63% 0.57% 0.47% 0 Ethernet Msec Ti
...

Загальна завантаження ЦП становить 47%. З них 42% йде на обробку переривань, викликаних передачею пакетів. Переривання при передачі пакетів бувають двох типів: переривання отримання і переривання передачі пакета. Переривання отримання пакета ініціюється інтерфейсним процесором, коли пакет отриманий через інтерфейс маршрутизатора і він готовий до обробки. Отримавши таке переривання ЦПУ припиняє обробку поточних процесів, і починає виконувати обробку пакета. Так як включений режим CEF, ЦПУ приймає рішення, куди передати пакет на підставі таблиць CEF (FIB і Adjacency) під час переривання. Тобто йому не потрібно відправляти пакет на процесорну обробку, а значить істотно економляться процесорні потужності. У зв'язку з цим на процеси в маршрутизаторі витрачається лише 5% завантаження ЦПУ. Переривання відправки пакета передається на ЦПУ, коли пакет був відправлений інтерфейсним процесором далі по каналах зв'язку. ЦПУ реагує на це переривання оновленням лічильників і звільненням пам'яті, виділеної для зберігання пакета. У плані внеску в загальну завантаження пристрою дане переривання менш цікаво.

Маршрутизація в режимі Process Switching:

Router881#sh processes cpu sorted
CPU utilization for five seconds: 99%/27%; one minute: 82%; five minutes: 48%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
129 98988 6013 16462 69.91% 55.95% 19.35% 0 IP Input
89 145568 9248 15740 1.11% 1.11% 1.33% 0 COLLECT STAT COU
97 45480 193804 234 0.23% 0.23% 0.35% 0 Ethernet Msec Ti
...

Тепер загальна завантаження ЦП становить 99%. Причому тільки 27% йде на переривання. Решта 72% витрачаються на виконання процесів. Процес IP Input забирає практично 70% процесорного часу. Саме цей процес відповідає за процесорну обробку пакетів, тобто тих пакетів, які не можуть бути оброблені під час переривання (наприклад, відключений CEF або в його таблицях немає потрібної інформації для передачі, пакети, адресовані безпосередньо маршрутизатора або є широкомовним трафіком тощо). А так як в нашому прикладі відключені CEF і Fast Switching (про цьому методі я не згадував у силу його неактуальність), після того як до ЦПУ прийшло переривання отримання пакета, ЦПУ надсилає пакет на процесорну обробку. Переривання завершується і ЦПУ опрацьовує пакет безпосередньо в рамках одного зі своїх процесів. Тому ми і бачимо таку утилізацію ЦПУ процесом IP Input.

Ще цікаво буде подивитися на завантаження ЦП у разі ACL з опцією log.

Router881#sh processes cpu sorted
CPU utilization for five seconds: 99%/37%; one minute: 80%; five minutes: 52%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
129 297672 15360 19379 60.83% 48.79% 29.67% 0 IP Input
89 150496 10973 13715 0.72% 0.93% 1.22% 0 COLLECT STAT COU
97 46036 232697 197 0.16% 0.17% 0.21% 0 Ethernet Msec Ti
...

Опція log в ACL примушує маршрутизатор кожен пакети відправляти на процесорну обробку, ознакою чого, як і в попередньому прикладі, є висока утилізація ЦПУ процесом IP Input.

Cisco ASA 5500

Давайте подивимося тепер на такий пристрій як міжмережевий екран Cisco ASA 5505. Можна сказати, що ASA 5505 – це аналогічне маршрутизатора Cisco 881 пристрій в плані позиціонування (для невеликих офісів і філій). Ці пристрої приблизно з одного цінового сегменту і мають відносно подібними апаратними характеристиками. В ASA 5505 використовується ПРОЦЕСОР AMD Geode з тактовою частотою 500 Мгц. Найголовніша відмінність –операційна система. В ASA 5505 використовується ASA OS. Про відмінності між маршрутизаторами і ASA в плані функціональності ми говорили в окремій статті. Подивимося тепер на продуктивність ASA і впливу на неї різних сервісів.

Так як на ASA немає чистої маршрутизації і якихось виділених технологій оптимізації маршрутизації трафіку, перевірялися лише наступні режими роботи:
  • Міжмережевий екран.
  • Міжмережевий екран і включена служба трансляції адрес (NAT).
  • Міжмережевий екран і ACL на одному з інтерфейсів з опцією log.
Для більш наочного порівняння дані по таких пристроїв як ASA 5505 і маршрутизатор 881 нанесені на один графік (малюнок 2).


З діаграми видно, пропускна здатність ASA 5505 у всіх режимах роботи обмежена лише технічними аспектами стенду. Причому, якщо ми подивимося на завантаження ЦП, то для всіх варіантів вона практично ідентична:

cbs-asa-vpn# sh proc cpu-usage non-zero sorted
PC Thread 5Sec 1Min 5Min Process
0x082a2849 0xa86e0994 31.1% 25.4% 13.4% Dispatch Unit
0x09bcebdb 0xa86d094c 6.4% 5.1% 5.9% esw_stats
0x08e68295 0xa86ced10 0.2% 0.1% 0.2% ci/console
0x0919171d 0xa86c9404 0.2% 0.2% 0.2% IP SLA Mon Event Processor
0x08f0591c 0xa86ce68c 0.1% 0.1% 0.1% update_cpu_usage

Можна зробити наступні висновки:
  1. При відносно схожих цінових і апаратних параметрах ASA 5505 надає більшу продуктивність, ніж маршрутизатор 881.
  2. Продуктивність ASA практично не залежить від сервісів (у всякому разі в межах даного стенду її виявити не вдалося).
  3. Опція логування (log) в ACL не призводить до деградації продуктивності. Обумовлено специфікою цієї реалізацій функції маршрутизації в пристрої.
Таким чином, операційна система ASA OS здається більш збалансованою в плані впливу сервісів на продуктивність пристрою.

Cisco ISR 4000

Йдемо далі. Пропоную подивитися, як йдуть справи з впливом сервісів на продуктивність маршрутизаторів Cisco ISR 4000. Це сама нова лінійка маршрутизаторів Cisco для невеликих і середніх інсталяцій. Як ми пам'ятаємо, в цих маршрутизаторах використовується операційна система Cisco IOS XE, яка вміє працювати в багатопотоковому режимі. З точки зору апаратної начинки, в цих маршрутизаторах використовуються багатоядерні процесори.

І так дістаємо з коробки наймолодший Cisco ISR 4000 – 4321. Активуємо на ньому performance license, щоб отримати заявлену максимальну продуктивність 100 Мбіт/с, і починаємо тестувати. Важливо відзначити, що на маршрутизаторах ISR 4000 завжди використовується шейпер, що обмежує максимальну продуктивність пристрою. Використовується два порога: базова (для 4321 – це 50 Мбіт/с) і розширена (для 4321 – це 100 Мбіт/с; активується ліцензією performance license) продуктивності. Така схема роботи спрямована на отримання прогнозованих значень продуктивності пристрою, не дозволяючи «захлебывать» від великої кількості трафіку.

Для початку перевіряємо продуктивність чистого маршрутизації в режимі CEF без додаткових сервісів. Запускаємо iPerf3 і отримуємо 95 Мбіт/с. Очікувано. Дивимося в цей момент на завантаження ЦП:

cbs-rtr-4321#show proc cpu sorted 
CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 1%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 
658 8563421 409607083 20 0.47% 0.48% 0.48% 0 IP SLAs XOS Even 
79 1123726 12408975 90 0.15% 0.06% 0.07% 0 IOSD ipc task 
2 120745 326115 370 0.07% 0.00% 0.00% 0 Load Meter 
667 420 1850 227 0.07% 0.03% 0.04% 2 SSH Process 
...

Оце результат! Завантаження ЦПУ 1%. Круто! Але не все так ідеально. Розуміння даного феномену приходить після більш детального вивчення специфіки роботи IOS XE.

IOS XE – це операційна система, створена на базі linux'а, ретельно допиленного і оптимізованого вендором. Традиційна операційна система Cisco IOS запускається у вигляді окремого Linux процесу (IOSd). Найцікавіше полягає в тому, що в IOS XE ми маємо окремий основний процес, що виконує функції data plane. Тобто ми маємо чіткий поділ control і data plane на програмному рівні. Процес, що відповідає за control plane, називається linux_iosd-imag. Це власне і є звичним нам IOS. Процес, що відповідає за data plane, називається qfp-ucode-utah. QFP, знайомо? Відразу згадуємо про мережевий процесор QuantumFlow Processor в маршрутизаторах ASR 1000. Так як спочатку IOS XE з'явився саме на цих маршрутизаторах, процес, що відповідає за передачу пакетів, отримав абревіатуру qfp у своїй назві. Надалі для ISR 4000, мабуть, нічого міняти не стали, з однією лише різницею, що в ISR 4000 QFP є віртуальним (виконується на окремих ядрах процесора загального призначення). Крім озвучених процесів в IOS XE присутні й інші допоміжні процеси.

Таким чином, щоб подивитися на скільки завантажені процесорні потужності, аналізуємо висновок наступних команд, специфічних для IOS XE:

cbs-rtr-4321#show platform software status control-processor brief 
Load Average
Slot Status 1-Min 5 Min 15 Min
RP0 Healthy 1.14 1.05 1.01

Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
RP0 Healthy 3950540 3888836 (98%) 61704 ( 2%) 2517892 (64%)

CPU Utilization
Slot CPU User System Nice Idle IRQ SIRQ IOwait
RP0 0 5.28 10.57 0.00 79.84 4.19 0.09 0.00
1 1.80 1.60 0.00 95.99 0.50 0.10 0.00
2 41.00 2.70 0.00 56.30 0.00 0.00 0.00
3 23.02 76.97 0.00 0.00 0.00 0.00 0.00

У нашому маршрутизатор використовується чотири ядра (CPU 0, 1, 2, і 3). Команда дозволяє нам отримати інформацію щодо завантаження кожного з них.

Примітка

Побачити апаратну начинку маршрутизатора можна висновком стандартною для Linux інформації з файлу dmesg: more flash:/tracelogs/dmesg.

В маршрутизаторі ISR 4321 використовується процесор:
CPU0: Intel® Atom(TM) CPU C2558 @ 2.40 GHz stepping 08


Наступна команда дозволяє нам побачити утилізацію процесорних потужностей різними процесами:

cbs-rtr-4321#show platform software process slot RP active monitor cycles 1 interval 1 top - 15:03:45 up 18 days, 21:00, 0 users, load average: 1.13, 1.05, 1.01
Завдання: 316 total, 2 running, 314 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.8%us, 22.3%sy, 0.0%ni, 68.8%id, 0.0%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 3950540k total, 3889372k used, 61168k free, 199752k buffers
Swap: 0k total, 0k used, 0k free, 1608388k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
3111 root 20 0 1041m 589m 333m S 150 15.3 28747:48 qfp-ucode-utah 
1915 root 20 0 1957m 182m 124m S 10 4.7 2216:08 fman_fp_image 
22575 root 20 0 360m 74m 30m S 2 1.9 392:16.70 bsm 
23130 root 20 0 46828 25m 11m S 2 0.7 23:08.43 cmand 
26108 root 20 0 2378m 896m 374m S 2 23.2 881:05.01 linux_iosd-imag 
27088 root 20 0 2204 1096 728 R 2 0.0 0:00.02 top 
1 root 20 0 1820 520 440 S 0 0.0 0:10.97 init 
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd 
... 

В даному прикладі, IOS з'їдає всього 2%, а QFP – 150% (що еквівалентно утилізації одне ядра повністю і ще одного на половину).

Так, що ж у підсумку показує тоді команда «cpu show processes»? Вона виводить завантаження віртуального ЦПУ, який був виділений процесу IOSd. Під даний процес на маршрутизаторах ISR 4000 виділяється одне з ядер ПРОЦЕСОРІВ.

З усього цього можна зробити висновок, що в IOS XE архітектура обробки пакетів суттєво змінилася у порівнянні із звичайним IOS. IOS більше не займається обробкою абсолютно всіх пакетів. Даним процесом обробляються лише ті пакети, які вимагають процесорної обробки. Але навіть в цьому випадку в IOS XE використовується більш новий механізм Fastpath, який реалізує передачу пакетів для процесорної обробки за допомогою окремого потоку всередині IOSd, а не через переривання. Переривання в IOSd виникають тільки, коли не можлива обробка через Fastpath.

Повернемось до нашого завдання. Перевіримо наступні режими роботи:
  • Маршрутизація з використанням технології CEF.
  • Маршрутизація і застосований список доступу (ACL) на одному з інтерфейсів.
  • Маршрутизація (CEF) і ACL на одному з інтерфейсів з опцією log.
  • Маршрутизація (CEF) і включена служба трансляції адрес NAT.
  • Маршрутизація (CEF) і включені сервіси міжмережевого екранування (ZPF).
  • Маршрутизація (CEF), МСЕ і NAT.
Необхідно відзначити, що відключити CEF на 4321 (та й на всій лінійці ISR 4000) не можна. Тепер це базова технологія маршрутизації.

Результати тестування представлені на малюнку 3. Для більшої наочності на один графік нанесені значення пропускної здатності (а вони у нас у всіх випадках однакові) і завантаження ЦП процесом QFP. Процес IOSd не цікавий в силу того, що у всіх режимах завантаження віртуального ЦПУ всередині IOSd мінімальна – 1%.


При проведенні тестування виявити залежність продуктивності маршрутизатора ISR 4321 від включення сервісів не вдалося. Є невелике підвищення завантаження CPU, але зовсім незначна. Також варто відзначити, що включення опції log в ACL більше не приводить до драматичних втрат у продуктивності, так як пакет відправляється на процесорну обробку.

Підсумки

На прикладі декількох пристроїв різних поколінь і типів ми спробували розглянути, як залежить продуктивність від включення різних сервісів. В цілому отримані результати вкладаються у раніше відомі факти. Америки ми не відкрили. Короткі висновки, отримані в результаті тестування, можна сформулювати так:

  1. Відбувається істотна деградація продуктивності маршрутизаторів ISR G1 і G2 при включенні сервісів.
  2. Продуктивність ASA менш схильна до впливу сервісів. При порівнянній ціною з маршрутизатором ми отримуємо більшу продуктивність.
  3. Вплив включення сервісів на продуктивність ISR 4000 мінімальна.
Дякую за увагу. Сподіваюся, що якась інформація зі статті допоможе в роботі з обладнанням Cisco.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.