Как стать автором
Обновить

Проблемы использования SPAN для мониторинга в современной сети

Время на прочтение4 мин
Количество просмотров7.1K
Всего голосов 2: ↑1 и ↓10
Комментарии7

Комментарии 7

Я сталкивался с проблемой даже не SPAN, а RSPAN на устройствах Sg350-10 в связке с ESXi версии то ли 6.5 то ли 6.7. Проблема заключалась в категорическом нежелании esx-ом понимать "зеркальный" VLAN. Но это совсем другая история....

Оптические делители в помощь))

И медные тоже!)

TAP в силу естественных причин имеет определенные преимущества перед SPAN - просто потому что съем трафика осуществляется на L1-уровне и исключает прохождение возможных "узких" мест внутри коммутатора (ASIC\буфера).

В статье есть "нюансы", которые могут вводить в заблуждение.

Нюансы:

  1. Фрейм помещается в буфер до момента прохождения коммутационной матрицы - т.е либо буфер "на порту" (выделенный на порт), либо он общий (shared buffer).

  2. "Как только коммутационная матрица принимает или собирается передать пакет через зеркалируемые порты, она дополнительно передаёт копии пакетов на порт мониторинга. И пока пакет не будет передан на порт мониторинга, он остаётся в буфере."

    "Поговорим про реализацию функции SPAN. Как мы уже упоминали, пока пакет не будет передан и на целевой порт, и на порт зеркалирования, он занимает место в буфере пакетов. Зеркалирование нескольких портов (или обоих направлений передачи одного порта) приводит к скапливанию пакетов в очереди на порт мониторинга и заполнению буфера. Некоторые производители ставят самый низкий приоритет для портов мониторинга, иными словами, оборудование под нагрузкой будет выбирать между передачей трафика на обычные порты или порты мониторинга."

По поводу механизмов репликации - всю жизнь думал, что фрейм передается одновременно на все порты за счет механизмов работы ASIC (поскольку если фрейм попал в ASIC - то легче его "реплицировать" силами ASIC сразу на все порты, нуждающиеся в его передаче). С Вашей подачи можно подумать что и BUM-трафик "ожидает" и занимает место в буфере входного порта (или shared буфере) пока не отправятся все реплики на все порты поочередно? Тогда сети работали бы довольно плохо с любым real-time трафиком by design.

Почему SPAN (суть - репликация), должен обрабатываться по другому, заставляя пакет томиться во входной очереди?

По поводу работы SPAN - тут надо четко понимать какой объем собираемся снимать с его помощью. Очевидно, что порт не пропустит трафика больше, чем его ёмкость. Т.е зеркалится in или out порта такой же ёмкости - то берите 1 к 1. Если зеркалятся несколько портов - то берите большую ёмкость - например на 5 портов 1G (в фулл дуплексе дают 10G) закладывайте один 10G. Тут будут возможны потери фреймов - но только тех, которые были в бёрстах на зеркалируемых портах (вывалились за возможности буферизации порта\общего буфера) - впрочем они терялись бы и так - безотносительно SPAN.

Опять же, если трафик к Вам приходит уже "порезанный" до какой-то полосы полисером или шейпером, и вы понимаете, какая возможная максимальная ёмкость канала передачи - то можно зеркалить и трафик 5-ти 1G портов на 1G. В таком случае бёрсты в пределах ёмкости будут сглаживаться входными буферами и потерь при SPAN не будет.

Под коммутационной матрицей мы как раз понимаем весь коммутирующий ASIC (иначе необходимо разрисовывать структурную схему чипа и определять, где заканчиваются интерфейсные и вспомогательные блоки, и начинается сама матрица). Основной буфер обычно всё-таки общий, на портах он меньше (есть, конечно, исключения).
Что касается репликации, то одновременности достичь не удается – разное количество пакетов хочет выйти в разные порты, и на выход образуются очереди. Длины этих очередей разные, поэтому когда в порт обычного обмена пакет уже ушёл, то на порт зеркалирования он ещё стоит в очереди за пакетом, который ушёл в другой свободный порт обычного обмена. И да, BUM-трафик "ожидает" и занимает место в буфере входного порта (или shared буфере), пока не отправятся все реплики на все порты, но не поочередно на каждый порт, а по мере освобождения очередей каждого порта (если другого трафика нет, то получится одновременно). Очень редко кто выделяет 10G порт на SPAN в 1G коммутаторах – если он есть, то его скорее используют для аплинка или стекирования. А порезанный трафик – это всё-таки удел каких-то внешних каналов. Кто же режет трафик у себя в сети? Плюс проблема, что об этом необходимо не только подумать, но и помнить затем. А то шейпер можно перенастроить (расширить внешние каналы), а про архитектурно заложенные ограничения SPAN-порта забыть…

"И да, BUM-трафик "ожидает" и занимает место в буфере входного порта (или shared буфере), пока не отправятся все реплики на все порты, но не поочередно на каждый порт, а по мере освобождения очередей каждого порта (если другого трафика нет, то получится одновременно) "

Любопытно, а есть какие-то пруфы, которые можно почитать для ознакомления?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий