Підручник з тестування протоколів (L2 та L3)

⚡ Розумний підсумок

Тестування протоколів перевіряє, як мережеві пристрої обмінюються даними за протоколами L2 та L3. Воно перевіряє структуру пакетів, відповідність, продуктивність та сумісність комутаторів, маршрутизаторів, VoIP-обладнання та бездротового обладнання, що використовується такими постачальниками, як Cisco, Джуніпер та Алкатель.

  • 🌐 Сфера застосування: Тестування протоколів охоплює протоколи комутації, бездротового зв'язку, VoIP та маршрутизації в стеку OSI з акцентом на поведінку L2 та L3.
  • 🔌 L2 проти L3: Рівень 2 обробляє MAC, Ethernet та Frame Relay; рівень 3 вибирає оптимальні шляхи через IP, OSPF, EIGRP та аналогічні протоколи маршрутизації.
  • 🛠️ Набір інструментів: Інженери покладаються на Wireshark для живої зйомки, Scapy для створення пакетів та TTCN-3 для наборів поведінкових тестів на тестованому пристрої.
  • Типи перевірок: Тести на відповідність, сумісність, функціональність, стрес, навантаження та продуктивність підтверджують порогові значення коректності, затримки та пропускної здатності.
  • 🧪 Кут штучного інтелекту: Сучасні лабораторії застосовують моделі штучного інтелекту для виявлення аномалій трафіку, прогнозування збоїв протоколів та автоматичної генерації негативних тестових випадків для швидших циклів регресії.

Тестування протоколу

Перш ніж ми дізнаємося про тестування протоколів, давайте розберемося з фундаментом, на якому воно базується.

Що таке протокол?

Коли комп’ютери взаємодіють один з одним, існує спільний набір правил та умов, яких повинен дотримуватися кожен комп’ютер. Іншими словами, протоколи визначають, як дані передаються. transmitміж обчислювальними пристроями та через мережі. Без цих спільних правил пристрої різних постачальників не могли б надійно обмінюватися трафіком.

Що таке тестування протоколів?

Тестування протоколу – це метод перевірки протоколів зв'язку в сферах комутації, бездротового зв'язку, VoIP, маршрутизації та подібних мережевих областях. Основною метою тестування протоколів є перевірка структури пакетів, що надсилаються мережею, за допомогою спеціалізованих інструментів тестування протоколів. Маршрутизатори та комутатори використовуються під час тестування як частини пристроїв та продуктів, що тестуються.

Тепер, коли ми визначили практику, давайте розглянемо, чому ця дисципліна важлива у виробничих мережах.

Чому тестування протоколів важливе

Сучасні мережі виконують критично важливі робочі навантаження, такі як VoIP-дзвінки, фінансові транзакції та потокове відео. Одна помилка протоколу може порушити сумісність між постачальниками, втратити пакети або виявити прогалини в безпеці. Тестування протоколів гарантує якість, перевіряючи, чи кожна реалізація протоколу відповідає своїй специфікації, масштабується під навантаженням і поводиться передбачувано під час збоїв.

Зрозумілою мотивацією, наступним питанням є те, як протоколи класифікуються в реальних мережах.

Маршрутизація та протоколи маршрутизації

Протоколи поділяються на дві категорії: маршрутизовані протоколи та протоколи маршрутизації.

  • Маршрутизовані протоколи: Маршрутизовані протоколи використовуються для надсилання даних користувачів з однієї мережі до іншої. Вони передають трафік користувачів, такий як електронна пошта, веб-трафік та передача файлів. Прикладами маршрутизованих протоколів є IP, IPX та AppleTalk.
  • Протоколи маршрутизації: Протоколи маршрутизації – це мережеві протоколи, що визначають маршрути для маршрутизаторів. Вони використовуються лише між маршрутизаторами. Прикладами є RIP, IGRP та EIGRP.

Прості слова Маршрутизатор схожий на автобус, який використовується для транспортування, тоді як протоколи маршрутизації – це сигнали на дорозі.

Залежно від типу зв'язку використовуються різні протоколи. Такі компанії, як Cisco, Juniper та Alcatel виробляють мережеві пристрої, такі як маршрутизатори, модеми та точки бездротового доступу, які використовують різні протоколи для зв'язку. Наприклад, Cisco використовує EIGRP та OSPF. Тестування протоколу, по суті, перевіряє, чи працює EIGRP (Enhanced Interior Gateway Routing Protocol), OSPF (Open Shortest Path First) або будь-який інший протокол відповідно до його відповідного стандарту.

Типи комп'ютерних протоколів

У таблиці нижче наведено найпоширеніші протоколи, з якими тестер зіткнеться під час роботи з мережею.

Типи протоколів Призначення протоколів
TCP / IP Він використовується для надсилання інформації невеликими пакетами через Інтернет
UDP/ICMP Він використовується для надсилання невеликої кількості інформації в пакетах даних через Інтернет
POP3 і SMTP Використовується для надсилання та отримання пошти
Протокол передачі гіпертексту Використовується для передачі HTML-сторінок у зашифрованому вигляді для забезпечення безпеки конфіденційних даних.
Ftp Він використовується для передачі файлів по мережі від одного вузла до іншого

* TCP / IP - Transmission Протокол керування/Інтернет-протокол, UDP/ICMP – Протокол дейтаграм користувача/Протокол керуючих повідомлень Інтернету, POP3 / SMTP – Протокол поштового відділення/Простий Mail Передавальний протокол, HTTP – протокол передачі гіпертексту, Ftp – Протокол передачі файлів.

Різні типи мережевих протоколів (L2 та L3)

Модель OSI має загалом сім рівнів мережевого зв'язку, з яких рівень 2 (L2) та рівень 3 (L3) є дуже важливими для тестування протоколів.

  • Шар 2 (L2): Це канальний рівень. MAC-адреса, Ethernet, Token Ring та Frame Relay – все це приклади канального рівня.
  • Шар 3 (L3): Саме мережевий рівень визначає найкращий доступний шлях у мережі для зв'язку. IP-адреса є прикладом L3.

Як провести тестування протоколу

  • Для тестування протоколу вам знадобиться аналізатор протоколів та симулятор.
  • Аналізатор протоколів забезпечує правильне декодування разом з аналізом викликів та сеансів. Симулятор моделює різні сутності мережевого елемента.
  • Зазвичай тестування протоколів виконується за допомогою DUT (пристрою, що тестується), підключеного до інших пристроїв, таких як комутатори та маршрутизатори, з налаштованим на ньому цільовим протоколом.
  • Після цього тестер перевіряє структуру пакетів, надісланих пристроями.
  • Він перевіряє масштабованість, продуктивність та поведінку алгоритму протоколу пристрою за допомогою таких інструментів, як IxNetwork, Scapy та Wireshark.

Типи тестування для тестування протоколу

Тестування протоколів включає тестування функціональності, продуктивності, стеку протоколів, сумісності тощо. Під час тестування протоколів виконуються три основні перевірки.

  • Правильність: Чи отримуємо ми пакет X, коли очікуємо?
  • Затримка: Скільки часу потрібно пакету, щоб пройти через систему?
  • Пропускна здатність: Скільки пакетів ми можемо надсилати за секунду?

Тестування протоколів можна розділити на дві широкі категорії: стрес-тести та тести надійності, і функціональні тести. Стрес-тести та тести надійності охоплюють Тестування навантаження, Стрес-тестування та Тестування продуктивності. Функціональне тестування включає негативне тестування, тестування на відповідність та тестування на сумісність.

  • Тестування відповідності: Протоколи, що реалізуються на продуктах, перевіряються на відповідність таким стандартам, як IEEE та RFC.
  • Тестування сумісності: Тестується сумісність для різних постачальників. Це тестування проводиться після завершення тестування на відповідність на відповідній платформі.
  • Тестування мережевих функцій: Функціональність мережевих продуктів тестується з урахуванням проектної документації. Наприклад, такими функціями можуть бути захист портів на комутаторі або ACL на маршрутизаторі.

Зразки тестових випадків для тестування протоколів мережевих пристроїв

Ось приклад набору тестових випадків для маршрутизаторів та комутаторів.

Назва тесту Тестові випадки
Одна VLAN на одному комутаторі Створіть дві різні VLAN. Перевірте видимість між хостами в різних VLAN.
Три симетричні VLAN на одному комутаторі Створіть три різні асиметричні VLAN. Перевірте видимість між хостами.
Spanning Tree: зміна вартості кореневого шляху Перевірте, як змінюється вартість кореневого шляху після зміни топології.
Spanning Tree: Блокування портів Перевірте, як протокол spanning tree уникає утворення циклів у мережі, блокуючи надлишкові зв'язки, за наявності VLAN теж.
Різний кореневий міст для різних MSTI Покажіть, що кожен MSTI може мати різний кореневий міст.
Видимість між різними регіонами STP З однаковими VLAN перевірте видимість між різними STP-регіонами.
Продуктивність телефонного комутатора Згенеруйте 1000 телефонних дзвінків та перевірте, чи працює телефонний комутатор, чи його продуктивність погіршилася.
Негативний тест на пристрій Введіть неправильний ключ і перевірте автентифікацію. Користувачеві не повинно бути дозволено доступ.
Швидкість лінії Перевірте, чи пристрій працює на швидкості 10 Гбіт/с, використовуючи всю доступну пропускну здатність для обробки вхідного трафіку.
Швидкість розмов протоколу Tracка TCP-з’єднання між двома пристроями та перевірка правильності роботи кожного пристрою.
Час відповіді для початку сеансу Виміряйте час відгуку пристрою на запит запрошення для початку сеансу.

Інструменти для тестування протоколу

Давайте обговоримо найважливіші інструменти тестування, що використовуються для перевірки протоколів.

1) Scapy для створення пакетів

Scapy — це потужна інтерактивна програма для маніпулювання пакетами. Вона дозволяє вам:

  • Створюйте пакети
  • Декодувати пакети в мережі
  • Захоплюйте пакети та аналізуйте їх
  • Вводити пакети в мережу

Отже, в основному, Scapy в основному робить дві речі: отримання відповідей і відправка пакетівВи визначаєте пакети, він їх надсилає, отримує відповіді, зіставляє запити з відповідями та повертає список пар пакетів і список неспівпадаючих пакетів.

Він також може виконувати інші завдання, такі як tracелектронна маршрутизація, модульні тести, атаки, виявлення мережі, розробкаping нові протоколи та зондування.

Scapy дозволяє вам написати Python скрипт, який дозволяє виконувати такі завдання, як надсилання, отримання або перехоплення пакетів. Наприклад, Scapy може перехоплювати пакети даних за допомогою короткого Python скрипт. Команда для відкриття редактора показана нижче.

#gedit scapysniff.py
#!/usr/bin/env python
from scapy.all import *

a = sniff(count=10)
a.nsummary()

save, and change the mode of the file into an executable form
#chmod +x scapysniff.py
# ./scapysniff.py

Він переніме 10 пакетів, і як тільки переніме 10 пакетів, надрукує зведення. Scapy також має набір команд для одночасного надсилання та отримання пакетів.

Завантажити Scapy

2) Wireshark для аналізу

Wireshark є провідним інструментом, що використовується для аналізу тестування протоколів. Він дозволяє захоплювати пакети в режимі реального часу та відображати їх у зручному для людини вигляді. Ви можете заглиблюватися в мережевий трафік та перевіряти окремі пакети за допомогою колірного кодування та фільтрів.

Wireshark фіксує пакети, які допомагають визначити, коли встановлюється сеанс, коли саме було розпочато передачу даних і скільки даних надсилається кожного разу.

Wireshark має багатий набір функцій, який включає:

  • Ретельна перевірка сотень протоколів, і постійно додаються нові
  • Зйомка в реальному часі та офлайн-аналіз
  • Насичений аналіз VoIP
  • Стандартний трипанельний браузер пакетів
  • Працює на кількох платформах, таких як Windows, Linux і macOS
  • Захоплені мережеві дані можна переглядати за допомогою графічного інтерфейсу користувача
  • Підтримка дешифрування для багатьох протоколів, таких як IPsec, ISAKMP та SSL/TLS
  • Дані в реальному часі можна зчитувати з Ethernet, ATM, Bluetooth, USB та Token Ring
  • Вихідні дані можна експортувати у формати CSV, XML та звичайний текст

Завантажити Wireshark

3) ТТКН

TTCN — це стандартна мова тестування для визначення Тестові сценарії та їх реалізація для тестування протоколів. Набір тестів TTCN містить багато тестових випадків, написаних мовою програмування TTCN, і використовується для тестування реактивних систем або поведінкове тестування.

Наприклад, розглянемо кавовий автомат, який видає каву, коли в нього вставлено монету в один долар, але не реагує, якщо вставлено менше долара. Для програмування таких автоматів використовується TTCN-3. Щоб кавоварка реагувала на вставлену монету, потрібно написати компонент TTCN-3, який поводиться як кавоварка. Це дозволяє запускати тести до того, як фактична кавоварка стане доступною як продукт. Після цього можна підключити набір тестів TTCN-3 до зовнішнього пристрою.

TTCN

Тестова система випромінює стимули (монету в один долар) та отримує відповіді (каву). Адаптер стимулів отримує стимули від тестової системи та передає їх тестованій системі. Адаптер відповідей очікує на відповіді тестованої системи та передає їх тестованій системі.

TTCN-3 може використовуватися в різних сферах, таких як:

  • Мобільний зв'язок (LTE, WiMAX, 3G)
  • Широкосмугові технології (ATM, DSL)
  • Платформи проміжного програмного забезпечення (веб-сервіси, CORBA)
  • Інтернет-протоколи (SIP, IMS, IPv6)
  • Смарт-картки
  • Автомобільний (AutoSAR, MOST, CAN)

У TTCN ви можете визначити:

  • Набори тестів
  • Тестові випадки
  • Етапи тестування
  • Оголошені змінні
  • Оголошені таймери
  • PDU та інше

TTCN можна інтегрувати з системами, написаними іншими мовами, такими як ASN.1, XML, та С/C++Базова мова TTCN-3 існує в текстовому форматі, а також у табличному, графічному та презентаційному форматах.

Як застосовувати тестування протоколів на практиці

Щоб застосувати ці методи до реального проєкту, визначте область дії протоколу (L2, L3 або вище), налаштуйте випробуване обладнання (DUT) з підключеними симулятором та аналізатором, складіть чернетки тестових випадків на відповідність та негативні тестові випадки, що посилаються на специфікації RFC або IEEE, а потім виконайте перевірки на напруження, сумісність та аномалії за допомогою штучного інтелекту. Зафіксуйте результати в Wireshark та повторювати, доки поведінка пакета не відповідатиме стандарту.

Поширені запитання

Тестування протоколів перевіряє, чи протоколи зв'язку на комутаторах, маршрутизаторах та подібних пристроях надсилають правильно сформовані пакети та поводяться відповідно до стандартів у доменах комутації, маршрутизації, VoIP та бездротового зв'язку.

Тестування L2 зосереджується на канальному рівні, такому як MAC, Ethernet та Frame Relay, тоді як тестування L3 перевіряє протоколи маршрутизації мережевого рівня, такі як IP, OSPF та EIGRP, які вибирають оптимальні шляхи між мережами.

Wireshark для живого захоплення та декодування, Scapy для створення пакетів, IxNetwork для генерації трафіку та TTCN-3 для наборів поведінкових тестів – це стандартні інструменти, що використовуються інженерами з мережевого тестування.

Тестування на відповідність перевіряє, чи реалізація протоколу суворо відповідає своїй специфікації, такій як стандарт IEEE або IETF RFC, тому пристрої різних постачальників передбачувано взаємодіють в одній мережі.

Моделі штучного інтелекту вивчають базові шаблони пакетів, а потім генерують негативні тестові випадки, прогнозують ризик регресії при змінах маршрутизації та автоматично визначають пріоритетність сценаріїв невдачі, щоб інженери-тестувальники охоплювали більше протокольних шляхів за менший час.

Так. Класифікатори машинного навчання враховують Wireshark або NetFlow захоплює дані, позначає незвичайну затримку, тремтіння або форми пакетів порівняно з вивченими базовими рівнями та виявляє неналежну поведінку протоколу, перш ніж це спричинить збої у виробничих мережах.

Підсумуйте цей пост за допомогою: