Что такое идеальная пропускная способность
Качество сетей передачи данных. Программные и аппаратные измерения
Я бы хотел опубликовать цикл статей об измерениях характеристик систем связи и сетей передачи данных. Эта статья вводная и в ней будут затронуты лишь самые основы. В дальнейшем планирую более глубокое рассмотрение в стиле «как это сделано».
Покупая продукт или услугу мы часто оперируем таким понятием как качество. Что же такое качество? Если мы обратимся к словарю Ожегова, то там увидим следующее: «совокупность существенных признаков, свойств, особенностей, отличающих предмет или явление от других и придающих ему определенность». Перенося определение на область сетей связи, приходим к выводу, что нам требуется определить «существенные признаки, свойства и особенности», позволяющие однозначно определить отличие одной линии или сети связи от другой. Перечисление всех признаков и свойств обобщаются понятием «метрика». Когда кто-то говорит о метриках сетей связи, он имеет в виду те характеристики и свойства, которые позволят точно судить о системе связи в целом. Потребность в оценке качества лежит большей частью в экономической области, хотя и техническая её часть не менее интересна. Я же попробую балансировать между ними, чтобы раскрыть все самые интересные аспекты этой области знаний.
Всех заинтересовавшихся прошу под кат.
Мониторинг и диагностика систем связи
Как я писал выше, метрики качества определяют экономическую составляющую владения сетью или системой связи. Т.е. стоимость аренды или сдачи в аренду линии связи напрямую зависит от качества этой самой линии связи. Стоимость, в свою очередь, определяется спросом и предложением на рынке. Дальнейшие закономерности описаны у Адама Смита и развиты Милтоном Фридманом. Даже во времена СССР, когда была плановая экономика, а о «рынке» думали, как о преступлении против власти и народа, существовал институт госприемки, как для военных, так и гражданских целей, призванный обеспечить надлежащее качество. Но вернемся в наше время и попробуем определить эти метрики.
Рассмотрим сеть на основе Ethernet, как самой популярной технологии на данный момент. Не будем рассматривать метрики качества среды передачи данных, поскольку они мало интересуют конечного потребителя (разве что материал самой среды иногда бывает интересен: радио, медь или оптика). Самая первая метрика, которая приходит в голову — пропускная способность (bandwidth), т.е. сколько данных мы можем передать в единицу времени. Вторая, связанная с первой,- пакетная пропускная способность (PPS, Packets Per Second), отражающая сколько фреймов может быть передано в единицу времени. Поскольку сетевое оборудование оперирует фреймами, метрика позволяет оценить, справляется ли оборудование с нагрузкой и соответствует ли его производительность заявленной.
Третья метрика — это показатель потери фреймов (frame loss). Если невозможно восстановить фрейм, либо восстановленный фрейм не соответствует контрольной сумме, то принимающая, либо промежуточная система его отвергнет. Здесь имеется ввиду второй уровень системы OSI. Если рассматривать подробнее, то большинство протоколов не гарантируют доставку пакета получателю, их задача лишь переслать данные в нужном направлении, а те кто гарантирует (например, TCP) могут сильно терять в пропускной способности как раз из-за перепосылок фреймов (retransmit), но все они опираются на L2 фреймы, потерю которых учитывает эта метрика.
Четвертая — задержка (delay, latency),- т.е. через сколько пакет отправленный из точки A оказаться в точке B. Из этой характеристики можно выделить еще две: односторонняя задержка (one-trip) и круговая (round-trip). Фишка в том, что путь от A к B может быть один, а от B к A уже совсем другим. Просто поделить время не получится. А еще задержка время от времени может меняться, или “дрожать”,- такая метрика называется джиттером (jitter). Джиттер показывает вариацию задержки относительно соседних фреймов, т.е. девиацию задержки первого пакета относительно второго, или пятого относительно четвертого, с последующим усреднением в заданный период. Однако если требуется анализ общей картины или интересует изменение задержки в течении всего времени теста, а джиттер уже не отражает точно картину, то используется показатель вариации задержки (delay variation). Пятая метрика — минимальный MTU канала. Многие не придают важности этому параметру, что может оказаться критичным при эксплуатации “тяжелых” приложений, где целесообразно использовать jumbo-фреймы. Шестой, и малоочевидный для многих параметр — берстность — нормированная максимальная битовая скорость. По этой метрике можно судить о качестве оборудования, составляющего сеть или систему передачи данных, позволяет судить о размере буфера оборудования и вычислять условия надежности.
Об измерениях
Поскольку с метриками определились, стоит выбрать метод измерения и инструмент.
Задержка
Известный инструмент, поставляемый в большинстве операционных систем — утилита ping (ICMP Echo-Request). Многие ее используют по нескольку раз на дню для проверки доступности узлов, адресов, и т.п. Предназначена как раз для измерения RTT (Round Trip Time). Отправитель формирует запрос и посылает получателю, получатель формирует ответ и посылает отправителю, отправитель замеряя время между запросом и ответом вычисляет время задержки. Все понятно и просто, изобретать ничего не нужно. Есть некоторые вопросы точности и они рассмотрены в следующем разделе.
Но что, если нам надо измерить задержку только в одном направлении? Здесь все сложнее. Дело в том, что помимо просто оценки задержки пригодится синхронизировать время на узле отправителе и узле-получателе. Для этого придуман протокол PTP (Precision Time Protocol, IEEE 1588). Чем он лучше NTP описывать не буду, т.к. все уже расписано здесь, скажу лишь то, что он позволяет синхронизировать время с точностью до наносекунд. В итоге все сводится к ping-like тестированию: отправитель формирует пакет с временной меткой, пакет идет по сети, доходит до получателя, получатель вычисляет разницу между временем в пакете и своим собственным, если время синхронизировано, то вычисляется корректная задержка, если же нет, то измерение ошибочно.
Если накапливать информацию об измерениях, то на основании исторических данных о задержке можно без труда построить график и вычислить джиттер и вариацию задержки — показатель важный в сетях VoIP и IPTV. Важность его связана, прежде всего, с работой энкодера и декодера. При “плавающей” задержке и адаптивном буфере кодека повышается вероятность не успеть восстановить информацию, появляется “звон” в голосе (VoIP) или “перемешивание” кадра (IPTV).
Потери фреймов
Проводя измерения задержки, если ответный пакет не был получен, то предполагается, что пакет был потерян. Так поступает ping. Вроде тоже все просто, но это только на первый взгляд. Как написано выше, в случае с ping отправитель формирует один пакет и отправляет его, а получатель формирует свой собственный о отправляет его в ответ. Т.е. имеем два пакета. В случае потери какой из них потерялся? Это может быть не важно (хотя тоже сомнительно), если у нас прямой маршрут пакетов соответствует обратному, а если это не так? Если это не так, то очень важно понять в каком плече сети проблема. Например, если пакет дошел до получателя, то прямой путь нормально функционирует, если же нет, то стоит начать с диагностики этого участка, а вот если пакет дошел, но не вернулся, то точно не стоит тратить время на траблшутинг исправного прямого сегмента. Помочь в идентификации могла бы порядковая метка, встраиваемая в тестовый пакет. Если на обоих концах стоят однотипные измерители, то каждый из них в любой момент времени знает количество отправленных и полученных им пакетов. Какие именно из пакетов не дошли до получателя можно получить сравнением списка отправленных и полученных пакетов.
Минимальный MTU
Измерение этой характеристики не то чтобы сложно, скорее оно скучно и рутинно. Для определения минимального размера MTU (Maximum transmission unit) следует лишь запускать тест (тот же ping) с различными значениями размеров кадра и установленным битом DF (Don’t Fragmentate), что приведет к непрохождению пакетов с размером кадра больше допустимого, ввиду запрета фрагментации.
Например, так не проходит:
А так уже проходит:
Не часто используемая метрика с коммерческой точки зрения, но актуальная в некоторых случаях. Опять же, стоит отметить, что при асимметричном пути следования пакетов, возможен различный MTU в разных направлениях.
Пропускная способность
Наверняка многим известен факт, что количество переданной полезной информации в единицу времени зависит от размера фрейма. Связано это с тем, что фрейм содержит довольно много служебной информации — заголовков, размер которых не меняется при изменении размера фрейма, а изменяется поле “полезной” части (payload). Это значит, что несмотря на то, что даже если мы передаем данные на скорости линка, количество полезной информации переданной за тот же период времени может сильно варьироваться. Поэтому несмотря на то, что существуют утилиты для измерения пропускной способности канала (например iperf), часто невозможно получить достоверные данные о пропускной способности сети. Все дело в том, что iperf анализирует данные о трафике на основе подсчета той самой «полезной» части, окруженной заголовками протокола (как правило UDP, но возможен и TCP), следовательно нагрузка на сеть (L1,L2) не соответствует подсчитанной (L4). При использовании аппаратных измерителей скорость генерации трафика устанавливается в величинах L1, т.к. иначе было бы не очевидно для пользователя почему при измерении размера кадра меняется и нагрузка, это не так заметно, при задании ее в %% от пропускной способности, но очень бросается в глаза при указании в единицах скорости (Mbps, Gbps). В результатах теста, как правило, указывается скорость для каждого уровня (L1,L2,L3,L4). Например, так (можно переключать L2, L3 в выводе):
Пропускная способность в кадрах в секнду
Если говорить о сети или системе связи как о комплексе линий связи и активного оборудования, обеспечивающего нормальное функционирование, то эффективность работы такой системы зависит от каждого составляющего ее звена. Линии связи должны обеспечивать работу на заявленных скоростях (линейная скорость), а активное оборудование должно успевать обрабатывать всю поступающую информацию.
У всех производителей оборудования заявляется параметр PPS (packets per second), прямо указывающий сколько пакетов способно «переварить» оборудование. Ранее этот параметр был очень важен, поскольку подавляющее число техники просто не могло обработать огромное количество “мелких” пакетов, сейчас же все больше производители заявляют о wirespeed. Например, если передаются малые пакеты, то времени на обработку тратится, как правило, столько же, сколько и на большие. Поскольку содержимое пакета оборудованию не интересно, но важна информация из заголовков — от кого пришло и кому передать.
Сейчас все большее распространение в коммутирующем оборудовании получают ASIC (application-specific integrated circuit) — специально спроектированные для конкретных целей микросхемы, обладающие очень высокой производительностью, в то время как раньше довольно часто использовались FPGA (field-programmable gate array) — подробнее об их применении можно прочитать у моих коллег здесь и послушать здесь.
Бёрстность
Стоит отметить, что ряд производителей экономит на компонентах и использует малые буферы для пакетов. Например заявлена работа на скорости линка (wirespeed), а по факту происходят потери пакетов, связанные с тем, что буфер порта не может вместить в себя больше данных. Т.е. процессор еще не обработал скопившуюся очередь пакетов, а новые продолжают идти. Часто такое поведение может наблюдаться на различных фильтрах или конвертерах интерфейсов. Например предполагается, что фильтр принимает 1Gbps поток и направляет результаты обработки в 100Mbps интерфейс, если известно, что отфильтрованный трафик заведомо меньше 100Mbps. Но в реальной жизни случается так, что в какой-то момент времени может возникнуть «всплеск» трафика более 100Mbps и в этой ситуации пакеты выстраиваются в очередь. Если величина буфера достаточна, то все они уйдут в сеть без потерь, если же нет, то просто потеряются. Чем больше буфер, тем дольше может быть выдержана избыточная нагрузка.
Погрешности измерения
Пропускная способность в IP-сетях: расчет и выбор сетевого оборудования
После оценки требуемой пропускной способности на каждом из участков IP-сети необходимо определиться с выбором технологий сетевого и канального уровней OSI. В соответствии с выбранными технологиями определяются наиболее подходящие модели сетевого оборудования. Этот вопрос также непростой, поскольку пропускная способность напрямую зависит от производительности оборудования, а производительность, в свою очередь, – от программно-аппаратной архитектуры. Рассмотрим подробнее критерии и методы оценки пропускной способности каналов и оборудования в IP-сетях.
Критерии оценки пропускной способности
Со времени возникновения теории телетрафика было разработано множество методов расчета пропускных способностей каналов. Однако в отличие от методов расчета, применяемых к сетям с коммутацией каналов, расчет требуемой пропускной способности в пакетных сетях довольно сложен и вряд ли позволит получить точные результаты. В первую очередь это связано с огромным количеством факторов (в особенности присущих современным мультисервисным сетям), которые довольно сложно предугадать. В IP-сетях общая инфраструктура, как правило, используется множеством приложений, каждое из которых может использовать собственную, отличную от других модель трафика. Причем в рамках одного сеанса трафик, передаваемый в прямом направлении, может отличаться от трафика, проходящего в обратном направлении. Вдобавок к этому расчеты осложняются тем, что скорость трафика между отдельно взятыми узлами сети может изменяться. Поэтому в большинстве случаев при построении сетей оценка пропускной способности фактически обусловлена общими рекомендациями производителей, статистическими исследованиями и опытом других организаций.
Чтобы более или менее точно определить, какая пропускная способность требуется для проектируемой сети, необходимо в первую очередь знать, какие приложения будут использоваться. Далее для каждого приложения следует проанализировать, каким образом будет происходить передача данных в течение выбранных промежутков времени, какие протоколы для этого применяются.
Для простого примера рассмотрим приложения небольшой корпоративной сети.
Пример расчета пропускной способности
Предположим, в сети расположены 300 рабочих компьютеров и столько же IP-телефонов. Планируется использовать такие сервисы: электронная почта, IP-телефония, видеонаблюдение (рис. 1). Для видеонаблюдения применяются 20 камер, с которых видеопотоки передаются на сервер. Попытаемся оценить, какая максимальная пропускная способность потребуется для всех сервисов на каналах между коммутаторами ядра сети и на стыках с каждым из серверов.
Следует сразу отметить, что все расчеты нужно проводить для времени наибольшей сетевой активности пользователей (в теории телетрафика – ЧНН, часы наибольшей нагрузки), поскольку обычно в такие периоды работоспособность сети наиболее важна и возникающие задержки и отказы в работе приложений, связанные с нехваткой пропускной способности, неприемлемы. В организациях наибольшая нагрузка на сеть может возникать, например, в конце отчетного периода или в сезонный наплыв клиентов, когда совершается наибольшее количество телефонных вызовов и отправляется большая часть почтовых сообщений.
Электронная почта
Возвращаясь к нашему примеру, рассмотрим сервис электронной почты. В нем используются протоколы, работающие поверх TCP, то есть скорость передачи данных постоянно корректируется, стремясь занять всю доступную пропускную способность. Таким образом, будем отталкиваться от максимального значения задержки отправки сообщения – предположим, 1 секунды будет достаточно, чтобы пользователю было комфортно. Далее нужно оценить средний объем отправляемого сообщения. Предположим, что в пиках активности почтовые сообщения часто будут содержать различные вложения (копии счетов, отчеты и т.д.), поэтому для нашего примера средний размер сообщения возьмем 500 кбайт. И наконец, последний параметр, который нам необходимо выбрать, – максимальное число сотрудников, которые одновременно отправляют сообщения. Предположим, во время авралов половина сотрудников одновременно нажмут кнопку «Отправить» в почтовом клиенте. Тогда требуемая максимальная пропускная способность для трафика электронной почты составит (500 кбайт х 150 хостов)/1 с = 75 000 кбайт/с или 600 Мбит/с. Отсюда сразу можно сделать вывод, что для соединения почтового сервера с сетью необходимо использовать канал Gigabit Ethernet. В ядре сети это значение будет одним из слагаемых, составляющих общую требуемую пропускную способность.
Телефония и видеонаблюдение
Другие приложения – телефония и видеонаблюдение – в своей структуре передачи потоков схожи: оба вида трафика передаются с использованием протокола UDP и имеют более или менее фиксированную скорость передачи. Главные отличия в том, что у телефонии потоки являются двунаправленными и ограничены временем вызова, у видеонаблюдения потоки передаются в одном направлении и, как правило, являются непрерывными.
Чтобы оценить требуемую пропускную способность для трафика телефонии, предположим, что в пики активности количество одновременных соединений, проходящих через шлюз, может достигать 100. При использовании кодека G.711 в сетях Ethernet скорость одного потока с учетом заголовков и служебных пакетов составляет примерно 100 кбит/с. Таким образом, в периоды наибольшей активности пользователей требуемая пропускная способность в ядре сети составит 10 Мбит/с.
Трафик видеонаблюдения рассчитывается довольно просто и точно. Допустим, в нашем случае видеокамеры передают потоки по 4 Мбит/с каждая. Требуемая пропускная способность будет равна сумме скоростей всех видеопотоков: 4 Мбит/с х 20 камер = 80 Мбит/с.
Конечно же, приведенный пример является далеко не эталонным – каждый случай нужно рассматривать отдельно. В реальности топология сети может быть гораздо сложнее (рис. 2), и оценку пропускной способности необходимо производить для каждого из участков сети.
Нужно учитывать, что VoIP-трафик (IP-телефония) распространяется не только от телефонов к серверу, но и между телефонами напрямую. Кроме того, в разных отделах организации сетевая активность может различаться: служба техподдержки совершает больше телефонных вызовов, отдел проектов активнее других пользуется электронной почтой, инженерный отдел больше других потребляет интернет-трафик и т.д. В результате некоторые участки сети могут требовать большей пропускной способности по сравнению с остальными.
Полезная и полная пропускная способность
В нашем примере при расчете скорости потока IP-телефонии мы учитывали используемый кодек и размеры заголовка пакета. Это немаловажная деталь, которую нужно иметь в виду. В зависимости от способа кодирования (используемые кодеки), объема данных, передаваемых в каждом пакете, и применяемых протоколов канального уровня формируется полная пропускная способность потока. Именно полная пропускная способность должна учитываться при оценке требуемой пропускной способности сети. Это наиболее актуально для IP-телефонии и других приложений, использующих передачу низкоскоростных потоков в реальном времени, в которых размер заголовков пакета составляет существенную часть от размера пакета целиком. Для наглядности сравним два потока VoIP (см. таблицу). Эти потоки используют одинаковое сжатие, но разные размеры полезной нагрузки (собственно, цифровой аудиопоток) и разные протоколы канального уровня.
Скорость передачи данных в чистом виде, без учета заголовков сетевых протоколов (в нашем случае – цифрового аудиопотока), есть полезная пропускная способность. Как видно из таблицы, при одинаковой полезной пропускной способности потоков их полная пропускная способность может сильно различаться. Таким образом, при расчете требуемой пропускной способности сети для телефонных вызовов в пиковые нагрузки, особенно у операторов связи, выбор канальных протоколов и параметров потоков играет значительную роль.
Выбор оборудования
Выбор протоколов канального уровня обычно не составляет проблемы (сегодня чаще стоит вопрос, какая пропускная способность должна быть у канала Ethernet), но вот выбор подходящего оборудования даже у опытного инженера может вызвать затруднения.
Развитие сетевых технологий одновременно с растущими потребностями приложений в пропускной способности сетей вынуждает производителей сетевого оборудования разрабатывать все новые программно-аппаратные архитектуры. Часто у отдельно взятого производителя встречаются на первый взгляд схожие модели оборудования, но предназначенные для решения разных сетевых задач. Взять, к примеру, коммутаторы Ethernet: у большинства производителей наряду с обычными коммутаторами, используемыми на предприятиях, есть коммутаторы для построения сетей хранения данных, для организации операторских сервисов и т.д. Модели одной ценовой категории различаются своей архитектурой, «заточенной» под определенные задачи.
Кроме общей производительности, выбор оборудования также должен быть обусловлен поддерживаемыми технологиями. В зависимости от типа оборудования определенный набор функций и виды трафика могут обрабатываться на аппаратном уровне, не используя ресурсы центрального процессора и памяти. При этом трафик других приложений будет обрабатываться на программном уровне, что сильно снижает общую производительность и, как следствие, максимальную пропускную способность. Например, многоуровневые коммутаторы, благодаря сложной аппаратной архитектуре, способны осуществлять передачу IP-пакетов без снижения производительности при максимальной загрузке всех портов. При этом если мы захотим использовать более сложную инкапсуляцию (GRE, MPLS), то такие коммутаторы (по крайней мере недорогие модели) вряд ли нам подойдут, поскольку их архитектура не поддерживает соответствующие протоколы, и в лучшем случае такая инкапсуляция будет происходить за счет центрального процессора малой производительности. Поэтому для решения подобных задач можно рассматривать, например, маршрутизаторы, у которых архитектура основана на высокопроизводительном центральном процессоре и в большей степени зависит от программной, нежели аппаратной реализации. В этом случае в ущерб максимальной пропускной способности мы получаем огромный набор поддерживаемых протоколов и технологий, которые не поддерживаются коммутаторами той же ценовой категории.
Общая производительность оборудования
В документации к своему оборудованию производители часто указывают два значения максимальной пропускной способности: одно выражается в пакетах в секунду, другое – в битах в секунду. Это связано с тем, что большая часть производительности сетевого оборудования расходуется, как правило, на обработку заголовков пакетов. Грубо говоря, оборудование должно принять пакет, найти для него подходящий путь коммутации, сформировать новый заголовок (если нужно) и передать дальше. Очевидно, что в этом случае играет роль не объем данных, передаваемых в единицу времени, а количество пакетов.
Если сравнить два потока, передаваемых с одинаковой скоростью, но с разным размером пакетов, то на передачу потока с меньшим размером пакетов потребуется больше производительности. Данный факт следует учитывать, если в сети предполагается использовать, например, большое количество потоков IP-телефонии – максимальная пропускная способность в битах в секунду здесь будет гораздо меньше заявленной.
Понятно, что при смешанном трафике, да еще и с учетом дополнительных сервисов (NAT, VPN), как это бывает в подавляющем большинстве случаев, очень сложно рассчитать нагрузку на ресурсы оборудования. Часто производители оборудования или их партнеры проводят нагрузочное тестирование разных моделей при разных условиях и результаты публикуют в Интернете в виде сравнительных таблиц. Ознакомление с этими результатами сильно упрощает задачу выбора подходящей модели.
Подводные камни модульного оборудования
Если выбранное сетевое оборудование является модульным, то, кроме гибкой конфигурации и масштабируемости, обещанной производителем, можно получить и множество «подводных камней».
При выборе модулей следует тщательно ознакомиться с их описанием или проконсультироваться у производителя. Недостаточно руководствоваться только типом интерфейсов и их количеством – нужно также ознакомиться и с архитектурой самого модуля. Для похожих модулей нередка ситуация, когда при передаче трафика одни способны обрабатывать пакеты автономно, а другие просто пересылают пакеты центральному процессорному модулю для дальнейшей обработки (соответственно для одинаковых внешне модулей цена на них может различаться в несколько раз). В первом случае общая производительность оборудования и, как следствие, его максимальная пропускная способность оказываются выше, чем во втором, поскольку часть своей работы центральный процессор перекладывает на процессоры модулей.
Кроме этого, модульное оборудование часто обладает блокируемой архитектурой (когда максимальная пропускная способность ниже суммарной скорости всех портов). Это связано с ограниченной пропускной способностью внутренней шины, через которую модули осуществляют обмен трафиком между собой. Например, если модульный коммутатор имеет внутреннюю шину с пропускной способностью 20 Гбит/с, то для его линейной платы с 48 портами Gigabit Ethernet при полной загрузке можно использовать только 20 портов. Подобные детали нужно также иметь в виду и при выборе оборудования внимательно читать документацию.
Общие рекомендации
При проектировании IP-сетей пропускная способность является ключевым параметром, от которого будет зависеть архитектура сети в целом. Для более точной оценки пропускной способности, можно руководствоваться следующим рекомендациям:
В результате при правильном выборе технологий и оборудования можно быть уверенным, что сеть в полной мере удовлетворит требованиям всех приложений и, будучи достаточно гибкой и масштабируемой, прослужит долгое время.