SPD це техніка управління чергами на вході інтерфейсу. Команди SPD приховані в IOS, але якщо Ви їх введете, то вони будуть видні в файлі running-configuration.
Кожен фізичний інтерфейс має вхідну FIFO-чергу. Маршрутизатор використовує цю чергу для буфферізаціі пакетів, які призначаються центрального процесора. Найчастіше, це пакети для control-plane - keepalive'и на L2 (HDLC, PPP), пакети протоколів маршрутизації (OSPF, EIGRP, ISIS) і BGP (тут нагадую тим хто знає, а тим хто не знає кажу - eBGP і iBGP сесії обробляються різними (.) складовими control-plane (cef-exception і host відповідно)). На додаток до вищеописаних control-plane пакетам, вхідні чергу зберігає пакети для route-процесора (наприклад, пакети з TTL = 0, з неправильною довжиною заголовка на L3, поганий контрольною сумою і ін.). І нарешті, в цій черзі зберігаються всі пакети, які обробляються не по CEF, а по process-switching.
Наявність технології SPD бажано по ряду причин. Перша з них - захист control plane. Наприклад, можна блокувати вхідної черги з великою кількістю «поганих» пакетів, які заважають обробці «правильних» пакетів - отака захист від DoS. Друга причина - для поділу L2-keepalive, IGP і BGP трафіку.
Великі BGP-таблиці ведуть за собою великі апдейти роутінговой інформації. Ці апдейти, в теорії, можуть заблокувати вхідні чергу маршрутизатора на якийсь час - що тягне за собою ігнорування keepalive'ов протоколу IGP і, у фатальному випадку, руйнування всієї таблиці роутінга. Третя причина для настройки SPD відноситься до області process switching'а.
Якщо через будь-яких причин CEF відключений (ну не купили ви плати для 6500 J) то IP-Input процес дропа при переповненні черги спричинить за собою і дроп трафіку, який призначається для control-plane. SPD може запобігти таким ситуаціям.
Так що ж це таке, SPD і як працює? Для початку з'ясуємо, що вхідні чергу складається з двох частин. Одна частина - звичайна черга утримання (hold-черга), її Ви бачите при введенні команди showinterfaces. і друга частина - пріоритетна чергу, яка тримає в собі апдейти протоколів машрутізаціі і keepalive'и. Процесор спочатку обробляє пріоритетну чергу і тільки після того, як вона спорожніє, переключиться на регулярну (hold) чергу. Крім того, сама пріоритетна чергу складається з двох частин: SPD Headroom і SPD Extended Headroom (як це справа перевести - вирішуйте самі J). Extended SPD частина черзі обробляється перед SPD Headroom.
Keepalive'и L2 і IGP-пакети потрапляють в Extended SPD. Якщо в цій черзі немає місця, то пакети йдуть в «простий» SPD. Якщо обидві SPD-черзі повністю зайняті, то пакет IGP потрапляє в hold-чергу вхідного інтерфейсу. Апдейти BGP йдуть відразу в SPD Headroom (звідси і виходить, що IGP більш пріоритетний для маршрутизатора, ніж BGP) і якщо ця частина чергу повна, то в hold-чергу.
Хоча hold-чергу це FIFO-чергу, але для дропов в ній використовується алгоритм RED (Random Early Detection). Два порога (minimum і maximum), які встановлюються для hold-черзі, і визначають поведінку цього рандомних дропа. Якщо поточне завантаження черги менші, ніж мінімальний встановлений поріг дропа, то ніякі пакети не знищуються. Якщо завантаження черзі перебуває в інтервалі між мінімальним і максимальним порогом, то відбувається рандомний дроп пакетів з частотою, пропорційною глибині утворилася черзі. Якщо ж пакетів стає так багато, що завантаження черзі переходить максимальний поріг, то SPD починає Дропана все нові вхідні пакети
Хочеться звернути Вашу увагу на те, що SPD-пороги (трешолди, thresholds) задаються глобально для всіх черг. Розрахунок того, в який момент треба починати Дропана ті чи інші пакети, залежить від глибини hold-черзі. При цьому, з урахуванням того, що трешолди задаються глобально, SPD для своєї роботи бере мінімальний розмір hold-черзі з усіх інтерфейсів. Тому, якщо міняєте її значення на одному інтерфейсі, то будьте готові до того, що зміниться поведінка дропов і на інших інтерфейсах.
І на завершення, у SPD є два режими роботи: звичайний і агресивний. Різниця криється в реагуванні на «погані» пакети (тобто на ті, у відповідь на які маршрутизатор генерує ICMP-відповіді про помилку). Коли SPD налаштований в звичайний режим (режим за замовчуванням), то «погані» (malformed) пакети обробляються так само, як і всі інші IP-пакети. В агресивному режимі malformed-пакети Дропана як тільки глибина черги досягне мінімального порога.
Налаштовується SPD наступним чином:
spd enable spd headroom 120 spd extended-headroom 150 ip spd mode aggresive ip spd queue max-threshold 150 ip spd queue min-threshold 80 interface FastEthernet 1/0 hold-queue 150 in