Урок за тестване на протоколи (L2 и L3)
⚡ Умно обобщение
Тестването на протоколи валидира как мрежовите устройства обменят данни по протоколите L2 и L3. То проверява структурата на пакетите, съответствието, производителността и оперативната съвместимост на комутатори, рутери, VoIP оборудване и безжично оборудване, използвани от доставчици като... Cisco, Джунипър и Алкател.

Преди да научим за тестването на протоколи, нека разберем върху каква основа се гради.
Какво е протокол?
Когато компютрите комуникират помежду си, има общ набор от правила и условия, които всеки компютър трябва да спазва. С други думи, протоколите определят как данните се 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, когато го очакваме?
- Забавяне: Колко време отнема на един пакет да премине през системата?
- Bandwidth: Колко пакета можем да изпращаме в секунда?
Тестването на протоколи може да се раздели на две основни категории: стрес и надеждностни тестове и функционални тестове. Стрес и надеждностни тестове обхващат Тестване на товара, Стресиране, и Тестване на производителността. Функционално тестване включва отрицателно тестване, тестване за съответствие и тестване за оперативна съвместимост.
- Тестване за съответствие: Протоколите, внедрени в продуктите, се тестват за съответствие със стандарти като IEEE и RFC.
- Тестване за оперативна съвместимост: Тества се оперативната съвместимост за различни доставчици. Това тестване се извършва след завършване на тестването за съответствие на съответната платформа.
- Тестване на мрежови функции: Функционалността на мрежовите продукти се тества спрямо проектната документация. Например, функциите могат да бъдат защита на портове на комутатор или ACL на рутер.
Примерни тестови случаи за тестване на протоколи на мрежови устройства
Ето примерен набор от тестови случаи за рутери и комутатори.
| Име на теста | Тестови Случаи |
|---|---|
| Една VLAN на един комутатор | Изградете две различни VLAN мрежи. Проверете видимостта между хостовете в различните VLAN мрежи. |
| Три симетрични VLAN мрежи на един комутатор | Създайте три различни асиметрични VLAN мрежи. Проверете видимостта между хостовете. |
| Spanning Tree: Вариация на разходите за коренния път | Тествайте как се променя цената на коренния път след промяна в топологията. |
| Spanning Tree: Блокиране на портове | Проверете как протоколът Spanning Tree избягва образуването на цикли в мрежата, блокирайки излишни връзки, при наличие на VLAN също. |
| Различен коренен мост за различен MSTI | Покажете, че всеки MSTI може да има различен коренов мост. |
| Видимост между различните STP региони | С едни и същи VLAN мрежи, проверете видимостта между различните STP региони. |
| Производителност на телефонния комутатор | Генерирайте 1000 телефонни повиквания и проверете дали телефонният комутатор все още работи или производителността му се влошава. |
| Отрицателен тест за устройство | Въведете неправилен ключ и проверете удостоверяването. Потребителят не трябва да има достъп. |
| Линейна скорост | Проверете дали устройството работи със скорост от 10 Gbps, използвайки цялата налична честотна лента за обработка на входящия трафик. |
| Скорост на разговор по протокола | Tracka TCP разговор между две устройства и проверете дали всяко устройство се държи правилно. |
| Време за реакция за иницииране на сесия | Измерете времето за реакция на устройство на заявка за покана за иницииране на сесия. |
Инструменти за тестване на протоколи
Нека обсъдим най-важните инструменти за тестване, използвани за проверка на протоколи.
1) Scapy за изработка на пакети
Scapy е мощна интерактивна програма за манипулиране на пакети. Тя ви позволява да:
- Създайте пакети
- Декодиране на пакети в мрежата
- Уловете пакети и ги анализирайте
- Инжектирайте пакети в мрежата
Така че, по принцип, Scapy прави основно две неща: получаване на отговори и изпращане на пакетиВие дефинирате пакетите, той ги изпраща, получава отговори, съпоставя заявките с отговорите и връща списък с двойки пакети и списък с несъпоставени пакети.
Може да се справи и с други задачи, като например tracелектронно маршрутизиране, модулни тестове, атаки, откриване на мрежа, разработкаping нови протоколи и сондиране.
Scapy ви позволява да напишете Python скрипт, който ви позволява да изпълнявате задачи като изпращане, получаване или „sniffing“ на пакети. Например, 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 пакета и веднага щом ги е подушил, ще отпечата резюмето. Scapy също така има набор от команди за едновременно изпращане и получаване на пакети.
2) Wireshark за анализ
Wireshark е водещият инструмент, използван за анализ на протоколно тестване. Той ви позволява да улавяте пакети в реално време и да ги показвате в четлива за човек форма. Можете да се задълбочите в мрежовия трафик и да проверявате отделни пакети, използвайки цветно кодиране и филтри.
Wireshark улавя пакети, които помагат да се определи кога се установява сесията, кога е иницииран точният трансфер на данни и колко данни се изпращат всеки път.
Wireshark има богат набор от функции, който включва:
- Цялостна проверка на стотици протоколи, като непрекъснато се добавят още
- Заснемане на живо и офлайн анализ
- Богат VoIP анализ
- Стандартен трипанелен браузър за пакети
- Работи на множество платформи, като например Windows, Linux и macOS
- Заснетите мрежови данни могат да се разглеждат чрез GUI
- Поддръжка на декриптиране за много протоколи, като IPsec, ISAKMP и SSL/TLS
- Данните в реално време могат да се четат от Ethernet, ATM, Bluetooth, USB и Token Ring
- Изходът може да бъде експортиран в CSV, XML и обикновен текст
3) ТТКН
TTCN е стандартен език за тестване за дефиниране Тестови сценарии и тяхната имплементация за тестване на протоколи. Тестов пакет на TTCN съдържа много тестови случаи, написани на езика за програмиране TTCN, и се използва за тестване на реактивни системи или поведенческо тестване.
Например, помислете за автомат за кафе, който пуска кафе, когато се пусне монета от един долар, но не реагира, ако се пусне по-малко от един долар. За програмиране на такива машини се използва TTCN-3. За да накарате кафемашината да реагира, когато се пусне монета, се пише компонент TTCN-3, който се държи като кафемашина. Това ви позволява да провеждате тестове, преди действителна кафемашина да е налична като продукт. След като това е направено, можете да свържете тестовия пакет TTCN-3 с външното устройство.
Тестовата система излъчва стимули (монета от един долар) и получава отговори (кафе). Адаптерът за стимули получава стимули от тестовата система и ги предава на тестваната система. Адаптерът за отговори чака отговори от тестваната система и ги предава на тестовата система.
TTCN-3 може да се използва в различни области, като например:
- Мобилни комуникации (LTE, WiMAX, 3G)
- Широколентови технологии (ATM, DSL)
- Мидълуер платформи (уеб услуги, CORBA)
- Интернет протоколи (SIP, IMS, IPv6)
- Смарт карти
- Автомобили (AutoSAR, MOST, CAN)
В TTCN можете да дефинирате:
- Тестови пакети
- Тестови Случаи
- Тестови стъпки
- Декларирани променливи
- Декларирани таймери
- PDU и други
TTCN може да бъде интегриран със системи, написани на други езици, като например ASN.1, XMLи C/C++Основният език TTCN-3 съществува в текстов формат, наред с табличен, графичен и презентационен формат.
Как да приложим тестването на протоколи на практика
За да приложите тези техники в реален проект, дефинирайте обхвата на протокола (L2, L3 или по-висок), настройте тестово устройство (DUT) със симулатор и анализатор, свързани към него, изгответе чернови на тестове за съответствие и отрицателни тестове, позовавайки се на RFC или IEEE спецификации, след което изпълнете проверки за стрес, оперативна съвместимост и аномалии, подпомогнати от изкуствен интелект. Запишете резултатите в Wireshark и итерирай, докато поведението на пакета не съвпадне със стандарта.

