antiCisco blogs


блоги по технологиям и оборудованию cisco от инструкторов

Опубликовано 3 Июнь , 2012

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-очередь), ее Вы видите при вводе команды show interfaces, и вторая часть — приоритетная очередь, которая держит в себе апдейты протоколов машрутизации и 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

 

 

 

Метки: , ,
Опубликовано: Маршрутизаторы и коммутаторы

 

4 Responses to “Selective Packet Discard (Выборочный дроп пакетов, SPD)”

comment rss - Trackback

  1. Lomax:

    Спасибо, записал в подкорку что это есть :)

  2. ruslan:

    Затея имеет смысл когда во входной очереди интерфейса имеются дропнутые пакеты?
    Input queue: 0/75/0/0 (size/max/drops/flushes)
    Т.е. когда третий ноль совсем не ноль?

  3. Как многого я еще не знаю…

    Спасибо тебе!

  4. fantas1st0:

    2 ruslan
    Затея имеет смысл, когда есть проблемы с дропом Management-трафика. SPD к hold-очереди (то вы привели: input queue) отношения не имеет

» Оставить комментарий

Вы должны войти чтобы прокомментировать.