СПОСОБ И СИСТЕМА ИЗМЕРЕНИЯ СТАТИСТИКИ ТРАФИКА СЕТИ ПО N-СЕКУНДНЫМ ИНТЕРВАЛАМ
METHOD AND SYSTEM FOR MEASURING NETWORK TRAFFIC STATISTICS IN N-SECOND INTERVALS

ОБЛАСТЬ ТЕХНИКИ
[001] Данное техническое решение, в общем, относится к области вычислительной техники, а в частности, к способам и системам для измерения статистики трафика сети.
УРОВЕНЬ ТЕХНИКИ
[002] Интенсификация обмена информацией в сетях общего пользования обуславливает актуальность оптимизации распределения сетевых ресурсов и динамического управления ими в интересах минимизации вероятности возникновения перегрузок. В настоящее время результаты ряда исследований указывают на несоответствие описания динамики сетевого трафика традиционными моделями, предполагающими пуассоновский характер потоков пользовательских запросов, результатам эмпирических наблюдений. Ускорение обмена информацией в многопользовательских сетях приводит к росту относительной ошибки описания и предсказания динамики трафика такими моделями, что обуславливает актуальность поиска альтернативных моделей динамики трафика в широком диапазоне временных масштабов и размеров сетей. Существующие модели и алгоритмы имитации сетевого трафика в основном отражают технические аспекты передачи информации в сетях на различных уровнях. Технические решения для сетей различного масштаба и протоколов различного уровня существенно различаются, в то время как динамика пользовательской активности зависит от размеров и связности сообщества пользователей. Существующие модели динамики сетевого трафика хорошо работают на коротких временных интервалах, но не учитывают факторы интенсификации обмена информацией в сетях на значительных временных интервалах. Существует потребность в оценке данных параметров и потребности в масштабировании сетевых ресурсов на длительных временных интервалах.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[003] Данное техническое решение направлено на устранение недостатков, свойственных решениям, известным из уровня техники.
[004] Технической задачей или, другими словами, технической проблемой, решаемой в данном техническом решении, является осуществление измерения статистики трафика сети по n-секундным интервалам посредством использования генератора трафика и анализатора трафика.
[005] Техническим результатом, достигаемым при решении вышеуказанной задачи, является повышение точности измерения статистики трафика сети по n-секундным интервалам при осуществлении нагрузочного теста.
[006] Дополнительным техническим результатом является повышение предсказуемости числа пакетов, отправляемых в интервал.
[007] Указанный технический результат достигается благодаря осуществлению способа измерения статистики трафика сети по n-секундным интервалам, который выполняется с помощью процессора, в котором направляют информацию о настройках нагрузочного теста, включающую по меньшей мере скорость генерации трафика, длительность теста и длину пакета посредством программного агента, расположенного на генераторе трафика, на анализатор трафика; определяют посредством анализатора трафика количество пакетов, которое будет отправлено генератором трафика и времени, когда он закончит процесс генерации на основании информации, полученной на предыдущем шаге; запускают по меньшей мере один генератор трафика и по меньшей мере один анализатор трафика для осуществления нагрузочного теста, посредством программных агентов, расположенных на данных устройствах; генерируют пакеты посредством по меньшей одного генератора трафика с постоянной скоростью и направляют на анализатор трафика; по меньшей мере один анализатор трафика запускает по меньшей мере один интервал после прихода первого пакета от генератора трафика, после чего сохраняет время начала нагрузочного теста; определяют принадлежность каждого переданного пакета от генератора трафика на анализатор трафика к конкретному интервалу с помощью времени начала генерации пакета, причем индекс интервала содержится в теле пакета; формируют посредством анализатора трафика статистику о трафике для каждого интервала, а также общую интегральную статистику о трафике на основании статистики обо всех интервалах.
[008] В некоторых вариантах реализации изобретения при запуске генератора трафика и анализатора трафика на анализаторе трафика временем начала нагрузочного теста считается время приема первого пакета.
[009] В некоторых вариантах реализации изобретения если первый пакет не дошел, а дошел пакет с порядковым номером N, то из времени приема пакета вычитается данный порядковый номер умноженный на период генерации секунд.
[0010] В некоторых вариантах реализации изобретения при осуществлении нагрузочного теста для валидного измерения задержки кадров (FTD) в одностороннем тесте системные часы генератора трафика и анализатора трафика синхронизированы по протоколу NTP или РТР.
[0011]В некоторых вариантах реализации изобретения способ реализован аппаратно с использованием программируемой пользователем вентильной матрицы (FPGA).
[0012] В некоторых вариантах реализации изобретения длительность нагрузочного теста задается в пакетах.
[0013] В некоторых вариантах реализации изобретения каждый пакет содержит Flow ID, индекс интервала, порядковый номер пакета, время отправки кадра. [0014] В некоторых вариантах реализации изобретения
[0015] В некоторых вариантах реализации изобретения время отправки кадра соответствует времени выхода первого байта кадра из генератора трафика в канал связи.
[0016] В некоторых вариантах реализации изобретения генератор трафика отправляет кадры фиксированной длины.
[0017]В некоторых вариантах реализации изобретения отправка пакетов генератором трафика останавливается, если было отправлено заданное количество пакетов или была получена команда об остановке нагрузочного теста от программного агента генератора трафика.
[0018] В некоторых вариантах реализации изобретения время завершения первого интервала используется как инициализационное значение таймера в FPGA.
[0019] В некоторых вариантах реализации изобретения в момент приема анализатором первого тестового кадра таймер запускается.
[0020] В некоторых вариантах реализации изобретения после завершения отсчитанного времени таймер автоматически перезапускается, но для всех интервалов, кроме первого, в качестве инициализационного значения используется время интервала.
[0021] Также технический результат достигается благодаря осуществлению системы измерения статистики трафика сети по n-секундным интервалам, которая содержит по меньшей мере один генератор трафика, выполненный с возможностью направления информации о настройках нагрузочного теста, включающую по меньшей мере скорость генерации трафика, длительность теста и длину пакета посредством программного агент на анализатор трафика; генерирования пакетов с постоянной скоростью и направления на анализатор трафика; по меньшей мере один анализатор трафика, выполненный с возможностью определения количества пакетов, которое будет отправлено генератором трафика и время, когда он закончит процесс генерации на основании информации; запуска по меньшей мере одного интервала после прихода первого пакета от генератора трафика, после чего сохранения времени начала нагрузочного теста; определения принадлежности каждого переданного пакета от генератора трафика на анализатор трафика к конкретному интервалу с помощью времени начала генерации пакета, причем индекс интервала содержится в теле пакета; формирования статистики о трафике для каждого интервала, а также общей интегральной статистики о трафике на основании статистики обо всех интервалах; по меньшей мере один программный агент, расположенный на анализаторе трафика и генераторе трафика, выполненный с возможностью запуска по меньшей мере одного генератора трафика и по меньшей мере одного анализатора трафика для осуществления нагрузочного теста.
[0022] В некоторых вариантах реализации изобретения генератор трафика является измерительным устройством с поддержкой функции NFV/SDN и H-QoS.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0023] Признаки и преимущества настоящего технического решения станут очевидными из приведенного ниже подробного описания и прилагаемых чертежей, на которых:
[0024] На Фиг. 1 показан пример реализации архитектуры системы измерения статистики трафика сети по n-секундным интервалам.
[0025] На Фиг. 2 показан пример реализации временных диаграмм анализа пакетов.
[0026] На Фиг. 3 показан пример реализации временных диаграмм анализа пакетов, при WAIT TIME больше 1/2 INTERVAL TIME.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0027] Данное техническое решение может быть реализовано на компьютере или другом устройстве обработки данных в виде автоматизированной системы или машиночитаемого носителя, содержащего инструкции для выполнения вышеупомянутого способа.
[0028] Техническое решение может быть реализовано в виде распределенной компьютерной системы, компоненты которой являются облачными или локальными серверами.
[0029] Ниже будут приведены термины и определения, используемой в данном техническом решении и широко известные в данной области техники, которые помогут лучше понять сущность данного технического решения.
[0030] В данном решении под системой подразумевается компьютерная система или автоматизированная система (АС), ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированная система управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций).
[0031] Под устройством обработки команд подразумевается электронный блок либо
интегральная схема (микропроцессор), исполняющая машинные инструкции
(программы).
[0032] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы, облачные хранилища данных.
[0033] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
[0034] Генератор трафика - устройство на сети (зонд), генерирующее тестовый трафик.
[0035] Анализатор трафика - устройство на сети (зонд), принимающее тестовый трафик и считающее статистику.
[0036] Программный агент - это программа, которая вступает в отношение посредничества с пользователем или другой программой.
[0037] Тестовый пакет - Ethernet-пакет, используемый в тестах. Включает в себя IFG (англ. «lnter Frame GAP», промежуток между кадрами длиною 12 байтов), преамбулу и SFD (англ. «Start of frame delimiter)), начало Ethernet кадра) и тестовый кадр.
[0038] Тестовый кадр - Ethernet-кадр, используемый в тестах. Включает в себя L2 заголовок, L2 данные и FCS (англ. «Frame Check Sequence)), четырехбайтное значение CRC, используемое для выявления ошибок передачи).
[0039] Данные тестового кадра - заполнение L2 данных: имеет заголовки L3 (IPv4) и L4 (UDP), датаграмма L4 - нули. Параметры заголовков (L2-L4) как и наличие/отсутствие VLAN меток - часть настроек теста.
[0040] Размер тестового пакета (L1) - размер тестового пакета в байтах с учетом 12, байт IFG, 7 байт преамбулы и 1 байт начала Ethernet кадра. То есть минимальный тестовый пакет (L1) имеет размер 84, айта.
[0041] Размер тестового кадра (L2) - размер тестового кадра в Байтах без учета 12 байт IFG, 7 байт преамбулы и 1 байт начала Ethernet кадра. То есть минимальный тестовый кадр (L2) имеет размер 64 байта.
[0042] Интервал - временной интервал определенной длительности, внутри которого на анализаторе считается статистика (потери, задержки, джиттер и т.д.)
[0043] INTERVAL_TIME - длительность интервала. Задается пользователем от 1 с до 60 с (с шагом в 1 с). По умолчанию принимает значение 10 с.
[0044] WAIT_TIME - время, в течение которого ожидается приход кадров из предыдущего интервала. Задается пользователем от 0.1 с до INTERVAL_TIME (с шагом в 0.1 с). По умолчанию 2 с.
[0045] FTD - максимально допустимая задержка распространения кадров.
[0046] FTD min - минимальный FTD за заданный промежуток времени (за интервал
или за всю тестовую сессию).
[0047] FTD max - максимальный FTD за заданный промежуток времени (за интервал или за всю тестовую сессию)
[0048] FTD avg - средний FTD за заданный промежуток времени (за интервал или за всю тестовую сессию). Рассчитывается как суммарный FTD / количество принятых кадров за заданный промежуток времени.
[0049] Джиттер пакетов (англ. «Packet Jitter») - колебание задержки при передаче пакетов. Джиттер пакетов имеет большую важность, поскольку именно он определяет максимальную задержку при приеме пакетов в конечном пункте назначения. Принимающая сторона, в зависимости от типа используемого приложения, может попытаться компенсировать джиттер пакетов за счет организации приемного буфера для хранения принятых пакетов на время, меньшее или равное верхней границе дрожания.
[0050] Packet Jitter min - минимальный Packet Jitter за заданный промежуток времени (за интервал или за всю тестовую сессию).
[0051] Packet Jitter max - максимальный Packet Jitter за заданный промежуток времени (за интервал или за всю тестовую сессию).
[0052] Packet Jitter avg - средний Packet Jitter за заданный промежуток времени (за интервал или за всю тестовую сессию). Рассчитывается как суммарный Packet Jitter / (количество пакетов пришедших по порядку (IOР - In Order Packets)) за заданный промежуток времени.
[0053] IOР (англ. «ln Order Packets») - пакет считается пришедшим по порядку, если его номер (идентификатор) больше, чем идентификатор предыдущего пришедшего пакета.
[0054] OOP (англ. «Out Of Order Packets») - пакет считается пришедшим не по порядку, если его номер (идентификатор) меньше, чем идентификатор предыдущего пришедшего пакета.
[0055] Все пакеты, кроме первого в тестовой сессии, относятся к одной из групп (IOР или OOP).
[0056] Тестовая сессия - один запуск теста. Начинается с запуска генератора кадров на генераторе нагрузочного теста, заканчивается остановкой работы анализатора нагрузочного теста по одной из следующих причин:
[0057] на анализаторе нагрузочного теста прошло заданное время теста+
WAIT_TIME.
[0058] получена команда остановки теста.
[0059] Jitter,FTD: ->Min (sec): inf- обозначение состояния, при котором прибор не получает данные по задержке или получает отрицательную задержку (при проблемах с синхронизацией времени).
[0060] Архитектура системы 100 измерения статистики трафика сети по п-секундным интервалам, т.е. примерный вариант ее реализации, показана на Фиг. 1.
[0061] Данное техническое решение может быть реализовано посредством способа измерения статистики трафика сети (по сути способ может представлять собой тест), который разбивается по времени на участки - интервалы. В некоторых вариантах реализации изобретения интервалы могут быть равными между собой. В некоторых вариантах реализации тест ограничен 1 часом.
[0062] Для каждого интервала времени собирается следующая статистика.
[0063] На генераторе 110 трафика в качестве статистики может собираться число переданных кадров, число переданных байт, число переданных байт (L2), скорость генерации (L2-L4) (которая определяется как число бит за интервал / длительность интервала) и так далее, не ограничиваясь. На анализаторе 120 в качестве статистики может собираться число принятых кадров, число принятых байт (L2), FTD (англ. «Frame Transfer Delay») - задержка кадров (min/max/avg), Packet Jitter по RFC 3550 - джиттер пакетов (min/max/avg), количество кадров, у которых в ходе передачи поменялся ToS (параметр TOS cnt), число пакетов вне очереди (OOP -Out Of Order Packet), число кадров с ошибками (кадром с ошибкой считается кадр с неправильной FCS, но его удалось опознать по загловкам L2-L4), число потерянных кадров, скорость (L2-L4)(определенная как число бит за интервал / длительность интервала) и так далее, не ограничиваясь.
[0064] Помимо данной статистики в некоторых вариантах реализации доступна и другая, дополнительная информация о каждом интервале на генераторе 110 и на анализаторе 120.
[0065] Например, на генераторе 110 может выводиться дополнительно следующая интервальная статистика: статус генератора 110 (например, принимает значения true или false в зависимости от того генератор 110 запущен или генератор 110 выключен), время тестирования, время начала генерации (начала интервала), время окончания генерации, номер текущего интервала генератора 110 (например, начинается с 1), число переданных кадров за последний завершенный интервал, число переданных байт (L2) за последний завершенный интервал, средняя скорость генерации за последний интервал, время фактических измерений, время начала измерений, время окончания измерений.
[0066] Размер интервала задается настройками теста. В конкретном варианте реализации интервал по умолчанию равен 10 с. В рамках одного запуска теста длительность интервала может быть постоянна и настраивается до начала работы теста. В некоторых вариантах реализации при проведении 2-х однонаправленных тестов временные границы интервалов разных направлений никак между собой не синхронизированы.
[0067] Во время одной тестовой сессии также собирается интегральная статистика. Интегральная статистика представляет собой статистику анализатора 120 за одну тестовую сессию, не привязанную к интервалам. Данная статистика может определяться отдельно и может не совпадать с суммой статистик по интервалам. Например, в случае если кадр интервала N пришел после WAIT TIME секунд после конца интервала N - он не попадет в интервальную статистику, но попадет в интегральную.
[0068] Интегральная статистика на генераторе 110 включает число переданных кадров (определяется отдельно от интервальной статистики, но всегда должно быть равно сумме переданных кадров за все интервалы), Число переданных байт (L2) (определяется отдельно от интервальной статистики, но всегда должно быть равно сумме переданных кадров за все интервалы), скорость генерации (L2-L4) (представляет собой число бит за последний интервал / длительность интервала).
[0069] Интегральная статистика на анализаторе 120 включает число принятых кадров всего (определяется отдельно от интервальной статистики, может отличаться от суммы за все интервалы), число принятых байт (L2) всего (определяется отдельно от интервальной статистики, может отличаться от суммы за все интервалы), задержку кадров (FTD - англ. «Frame Transfer Delay») (представляет собой задержку кадров (min/max/avg), считается отдельно от интервальной статистики, может быть не равно минимальному, максимальному, среднему значению по всем интервалам. Например из-за ситуации с приходом кадра после WAIT TIME секунд после завершения интервала), Packet Jitter по RFC 3550 (пакетный джиттер (min/max/avg), который считается отдельно от интервальной статистики, может быть не равно минимальному, максимальному, среднему значению по всем интервалам, например из-за ситуации с приходом пакета после WAIT TIME секунд после завершения интервала), количество кадров, у которых в ходе передачи поменялся ToS (считается отдельно от интервальной статистики, может отличаться от суммы за все интервалы), число пакетов вне очереди (OOP) (считается отдельно от интервальной статистики, может отличаться от суммы за все интервалы), число кадров с ошибками (кадры с CRC-ошибкой, которые подошли по фильтрам. Считается отдельно от интервальной статистики, может отличаться от суммы за все интервалы), число потерянных кадров (считается как сумма потерянных кадров за все интервалы), скорость (L2-L4) (число бит всего / текущее время теста).
[0070] Номер интервала, к которому будет принадлежать кадр определяет генератор 110 трафика в процессе отправки кадра. Генератор 110 вставляет индексы интервала в отправляемые кадры (в конец кадра, подробнее структура тестового кадра описана ниже), чтобы анализатор 120 мог правильно распределить кадры по интервалам.
[0071] Если на анализаторе сейчас идет интервал N, и пришел кадр из интервала N, то он учитывается в статистике для интервала N.
[0072] Если на анализаторе 120 в данный момент времени идет интервал N (и прошло меньше времени, чем WAIT_TIME от начала интервала), и пришел кадр из интервала N-1, то он учитывается в статистике для интервала N-1.
[0073] Если на анализаторе 120 в данный момент времени идет интервал N (и до начала следующего интервала меньше, чем WAIT_TIME), и пришел кадр из интервала N+1, то он учитывается в статистике для интервала N+1.
[0074] Во всех других случаях кадр не учитывается в интервальной статистике, но учитывается в интегральной.
[0075] Данное техническое решение может осуществляться следующим образом.
[0076] Система 100 обращается к программному агенту 130, расположенному на генераторе 110, настраивает и запускает на нем способ измерения статистики трафика сети по n-секундным интервалам (тест). Затем программный агент 130, расположенный на генераторе 110, перед тестом настраивает программный агент 140, расположенный на анализаторе 120, после чего настраивает сам генератор 110 (скорости генерации трафика, длительности теста, длина пакета и т.д.). Анализатору 120 направляется информация о настройках теста (скорости генерации трафика, длительности теста, длина пакета и т.д.).
[0077] Затем на основании этой информации анализатор 120 рассчитывает, сколько пакетов будет отправлено генератором 110 и когда он закончит процесс генерации.
[0078] Далее программный агент 130 запускает генератор 110, а программный агент 140 запускает анализатор 120. Для правильного формирования интервалов на приеме временем начала теста считается время приема первого пакета. Если первый пакет не дошел, а дошел пакет с порядковым номером N (пакеты индексируются с нуля), то из времени приема пакета вычитается N * период генерации секунд.
[0079] Например, в конкретном примере реализации анализатор 120 и генератор 110 были запущены со следующими настройками.
[0080] Скорость (L1) составляет 1000 Мбит/с (100% нагрузка), размер пакета (L1) равен 84 Байта (минимальный возможный кадр 64 Байт + 12 Байт Inter Frame GAP + 7 Байт Preamble + 1 Байт Start of frame delimiter), длительность интервала составляет 10 c.
[0081] Первые 10 пакетов были потеряны в сети и на анализатор 120 после старта теста первым пришел пакет с индексом 10. Значение периода генерации зависит от размера пакета и скорости генерации и рассчитывается как:
[0082] Период генерации = (1/Число пакетов за 1 секунду);
[0083] Число пакетов за 1 секунду = Скорость L1 / (Размер пакета L1 в битах).
[0084] Для данного конкретного примера реализации получают следующие
значения:
[0085] Число пакетов за 1 секунду = Скорость L1 / (Размер пакета L1 в битах)=1е9 / (84 * 8) = 1488095.238 пакетов в секунду.
[0086] Период генерации = (1/Число пакетов за 1 секунду)=6.72е-7 с.
[0087] После прихода первого пакета в тесте анализатор 120 должен выставить таймер, представляющий собой время завершение первого интервала и сохранить время начала теста.
[0088] Если бы первым пришел пакет #0:
[0089] Время начала теста = текущее время - 0 * (период генерации пакетов) = текущее время.
[0090] Время завершения первого интервала = INTERVAL_TIME - 0 * (период генерации пакетов) = INTERVAL_TIME = 10 с.
[0091] Для случая, когда первые 10 пакетов были потеряны:
[0092] Время начала теста = текущее время - 10 * (период генерации пакетов) = текущее время - 6.72е-6 с.
[0093] Время завершения первого интервала=INTERVAL_TIME - 10 * (период генерации пакетов)=INTERVAL_TIME - 6.72е-6=9.99999328 с.
[0094] При условии, что задержка в сети не слишком меняется от пакета к пакету, это дает достаточную точность для времени начала.
[0095] Тест завершается после завершения всех интервалов по времени или при приеме от системы 100 команды на завершение теста.
[0096] Варианты, при каждом из которых может происходить завершение теста:
• на анализатор 120 прошло заданное время теста+WAIT_TIME;
• выполнена команда остановки теста (при наличии канала).
[0097] Для валидного измерения задержки кадров (FTD) в одностороннем тесте системные часы генератора 110 и анализатора 120 могут быть синхронизированы по протоколу NTP или РТР.
[0098] При условии тестирования на полной скорости канала и отсутствии резервного канала управления анализатор 120 считается недоступным. При таких условиях тест невозможно отключить средствами системы 100.
[0099] Установкой соединения и запуском теста управляют программные агенты 130 и 140, поэтому в них не закладываются команды удаленного управления тестами.
[00100] Основная логика работы способа измерения статистики трафика сети по n-секундным интервалам (который может быть представлен как тест) может быть реализована аппаратно с использованием FPGA. FPGA (англ. «Field-Programmable Gate Аrrау») представляет собой программируемую логическую интегральную схему (ПЛИС), конфигурация которой может быть загружена после включения питания. Также FPGA иногда называется программируемой пользователем вентильной матрицы.
[00101] Таким образом при осуществлении способа достигается:
[00102] повышение точности длительности интервалов (с точностью до +- 25 ррm от длительности интервала, то есть +- 0.00025 с для интервала 10 с);
[00103] повышение предсказуемости числа пакетов, отправляемых в интервал (с точностью +-1 пакет, так как пакет на границе интервалов может быть причислен к следующему или предыдущему интервалу).
[00104] Генератор 110 может быть реализован следующим образом, как показано ниже.
[00105] Программный агент 130, расположенный на генераторе 110, взаимодействует с сервисом, который может работать под управлением ОС Linux, для управления генератора 110 трафика, запущенным на измерительном устройстве с функциями клиентского маршрутизатора и функцией мониторинга пользовательского трафика. В некоторых вариантах реализации таким устройством может быть программно-аппаратный зонд wiProbe™, который является измерительным устройством с поддержкой функции NFV/SDN и H-QoS.
[00106] Пользователь технического решения может направлять в систему 100 следующие команды:
• запуск генератора;
• остановка генератора;
• получение текущего статуса и настроек генератора;
• получение интервальной статистики генератора;
• получение интегральной статистики генератора.
[00107] Непосредственно за генерацию трафика отвечает генератор 110 трафика, расположенный в FPGA. После управляющей команды от пользователя, направленной из системы 100, на старт генерации генератор 110 в FPGA начинает генерировать пакеты с настроенным заголовком с постоянной скоростью. Длительность теста для FPGA всегда задается в пакетах, что гарантирует точное количество переданных пакетов на передаче.
[00108] Длительность теста в байтах и времени переводится в пакеты по следующим формулам:
[00109] Длительность теста в пакетах = floor ((скорость генерации L1 (бит/с) / размер пакета L1 (бит)) * длительность теста в (с));
[00110] Длительность теста в пакетах = ceil (длительность теста (байт) / размер пакета L1 (байт)),
[00111] где floor-округление вниз до целого, ceil - округление вверх до целого.
[00112] В некоторых вариантах реализации настройки теста не могут быть изменены в процессе выполнения теста.
[00113] Принадлежность переданного пакета к конкретному интервалу определяется временем начала генерации пакета. Индекс интервала вставляется в тело пакета.
Для того, чтобы рассчитывать все необходимые метрики теста, в тестовый пакет помещается следующая информация (в совокупности 10 байт информации):
[00114] Flow ID (4 бита) (в некоторых вариантах реализации может быть 1 и более потоков).
[00115] Индекс интервала (4 бита) - считаем, что пакеты не могут задержаться на 16 интервалов.
32
[00116] Порядковый номер пакета (4 Байта) - начиная с 0. В данном параметре подразумевается, что сеть не может потерять подряд больше чем 2 пакетов.
[00117] Время отправки кадра (5 Байт) - временная метка, вставляемая при отправке.
[00118] Таким образом, в данном техническом решении возможна реализация пакетов размером 64 байта даже с двумя VLAN-тегами. Временная метка отправки кадра соответствует времени выхода первого байта кадра из генератора 110 в канал связи. По терминологии Y.1563 это время соответствует ingress event FRE1.
[00119] В некоторых вариантах реализации генератор 110 трафика отправляет кадры фиксированной длины.
[00120] Диапазоны размеров кадров (L2) (с учетом CRC-суммы) могут иметь следующие размеры:
• минимальный размер кадра (L2) - 64 байта;
• максимальный размер кадра (L2) - 9600 байт.
[00121] Модуль 150 статистики генератора 110 предоставляет следующую статистику по последнему завершенному интервалу и по текущей тестовой сессии:
• Число переданных кадров;
• Число переданных байт (L2);
• Скорость генерации (L2-L4);
• Номере последнего завершенного интервала;
• Номере активного интервала;
• Статус теста - (true | false) (тестовая сессия в процессе | завершена).
[00122] Часть данной статистики собирается в FPGA:
• Число переданных кадров (за последний интервал и всего);
• Число переданных байт L2 (за последний интервал и всего);
• Номере текущего интервала;
• Статус генератора пакетов (отправляет пакеты | не отправляет пакеты).
[00123] Остальная статистика вычисляется модулем 150 статистики генератора 110 трафика.
[00124] Модуль 150 статистики генератора 110 трафика после старта генерации периодически (не реже, чем раз в INTERVAL_TIME) опрашивает FPGA, и считывает значение номера текущего интервала и общую статистику за все время теста.
[00125] Общая статистика (интегральная) обновляется каждый раз, при такой проверке.
[00126] Статистика по интервалу считывается, если:
• Номер текущего и последнего завершенного интервала не совпадают;
• Номер текущего интервала не равен значению, прочитанному при предыдущем вычитывании.
[00127] В этом случае количество кадров/Байт для завершенного интервала и его номер сохраняются в память, а номер активного интервала заменяется на новый.
[00128] Так как размерность счетчиков в FPGA ограничена, после считывания числа переданных байт и кадров счетчики в FPGA очищаются, и задачей модуля 150 статистики является аккумуляция значений счетчиков после каждого вычитывания.
[00129] Непосредственно отправка пакетов генератором 110 может остановиться, например, в следующих случаях:
[00130] было отправлено необходимое количество пакетов (FPGA завершает генерацию самостоятельно и уведомляет об этом изменяя значение статуса генератора 110);
[00131] была получена команда об остановке теста от программного агента 130.
[00132] В случае, если тест завершился штатно, и FPGA уведомила об этом модуль 150 статистики, и команда остановки генерации от модуля 150 статистики к FPGA не посылается, то статистика считывается еще раз.
[00133] После команды на остановку теста модуль 150 статистики сразу же дает команду на прекращение генерации в FPGA. После этого модуль 150 статистики считывает и обновляет статистику.
[00134] Результаты работы модуля 150 статистики доступны пользователю с помощью например следующих CLI команд:
[00135] show wlt-tx results local profile (0 | 1) - выводит интервальную статистику;
[00136] show wlt-tx results total profile (0 | 1) - выводит интегральную статистику.
[00137] Команда show wlt-tx results local profile (0 | 1) выводит информацию по интервальной статистике генератора 110:
• Status (Статус генератора) - (true | false) (генератор запущен | генератор выключен)
• Elapsed time (Время тестирования) - (Stop time - Start time)
• Start time (Время начала генерации) - (Время начала интервала (Linux sys time))
• Stop time (Время окончания генерации) - (Время конца интервала (Linux sys time))
• Bucket - Номер текущего интервала генератора (начинается с 1)
• Packets - Число переданных кадров за последний завершенный интервал
• Bytes - Число переданных байт (L2) за последний завершенный интервал
• Rate (L2-L4) - Средняя скорость генерации за последний интервал
• Elapsed meas time (Время фактических измерений) - ( = INTERVAL_TIME)
• Start meas time (Время начала измерений) - (ТХ Start meas time total + ((Bucket -1) * INTERVAL_TIME))
• Stop meas time (Время окончания измерений) - (Start meas time + INTERVAL_TIME)
[00138] Команда show wlt-tx results total profile (0 | 1) выводит информацию по интегральной статистике генератора:
• Status (Статус генератора) - (true | false) (генератор запущен | генератор выключен)
• Elapsed time (Время тестирования) - (Stop time - Start time)
• Start time (Время начала генерации) - (Время начала тестовой сессии (Linux sys time))
• Stop time (Время окончания генерации) - (Время конца тестовой сессии (Linux sys time))
• Bucket - Номер текущего интервала генератора (начинается с 1)
• Packets - Число переданных кадров за текущую тестовую сессию
• Bytes - Число переданных байт L2 за текущую тестовую сессию
• Rate (L2-L4) - Средняя скорость генерации за текущую тестовую сессию
• Elapsed meas time (Время фактических измерений) - (Bucket * INTERVAL_TIME)
• Start meas time (Время начала измерений) - (Время отправки первого пакета из FPGA (FPGA time))
• Stop meas time (Время окончания измерений) - (Start meas time + Elapsed meas time)
[00139] Анализатор 120 может быть реализован следующим образом, как показано ниже.
[00140] Программный агент 140 взаимодействует с модулем 150 статистики, работающим под управлением ОС Linux, для управления анализатором трафика, запущенным на зонде wiProbe.
[00141] Пользователь технического решения может направлять в систему 100
следующие команды:
[00142] запуск анализатора;
[00143] остановка анализатора;
[00144] текущий статус и настройки анализатора;
[00145] интервальная статистика анализатора;
[00146] интегральная статистика анализатора.
[00147] Основной процесс анализа тестового трафика происходит в FPGA. Модуль 150 статистики передает необходимые настройки в FPGA и запускает анализ трафика.
[00148] В ходе настройки в анализатор 120 трафика в FPGA записывается информация о: длительности интервала, времени, в течение которого ожидается приход кадров из предыдущего интервала, периоде отправки пакетов на генераторе 110, длительности теста (выраженная в количестве интервалов), ожидаемого ToS пакетов, Pv4 destination, UDP destination.
[00149] Период отправки пакетов вычисляется из заданной скорости генерации и размера пакета по формуле:
[00150] Период генерации = (1/Число пакетов за 1 секунду);
[00151] Число пакетов за 1 секунду = Скорость L1 / (Размер пакета L1 в битах).
[00152] FPGA считает тестовыми пакетами и учитывает их в интервальной статистике, те пакеты, которые попадают одновременно под все следующие фильтры:
• IP-адрес получателя равен заданному (Pv4 destination)
• UDP-порт получателя равен заданному (UDP destination)
• Размер пакета попадает в диапазон от 64 до 9600 байт
• Задержка пакета меньше 10 с
• Пакет принадлежит:
Текущему окну
Предыдущему окну, но со смены окна прошло времени меньше, чем WAIT_TIME
Следующему окну, но до смены окна осталось времени меньше, чем WAIT_TIME
[00153] FPGA считает тестовыми пакетами и учитывает их в интегральной статистике, те которые попадают одновременно под все следующие фильтры:
• IP-адрес получателя равен заданному (Pv4 destination)
• UDP-порт получателя равен заданному (UDP destination)
• Размер пакета попадает в диапазон от 64 до 9600 байт
• Задержка пакета меньше 10 с
[00154] Дополнительные счетчики учитывают, сколько из пришедших пакетов были и за каждый интервал и интегрально:
• С CRC-ошибками
• С полем ToS не равным заданному
[00155] Временная метка приема пакета защелкивается во время приема последнего байта тестового кадра. По терминологии Y.1563 это время соответствует egress event FRE2.
[00156] После того, как модуль 150 статистики был запущен, приемник в FPGA начинает ожидание первого дошедшего пакета из тестового потока. При приеме этого пакета предсказывается длительность первого интервала на приеме по формуле:
[00157] Время завершения первого интервала = INTERVAL_TIME - номер первого принятого пакета * (период генерации пакетов)
[00158] Схожим образом рассчитывается абсолютное время приема первого пакета:
[00159] Время приема первого пакета = текущее время - номер первого принятого пакета * (период генерации пакетов)
[00160] В случае, если потерь в начале теста не было, пакет будет с номером 0, и начало интервала будет совпадать со временем приема пакета.
[00161] Вычисленное время приема первого пакета сохраняется до конца теста - по нему модуль 150 статистики определяет действительную длительность всего нагрузочного теста.
[00162] Время завершения первого интервала используется как инициализационное значение таймера в FPGA. В момент приема первого тестового кадра таймер запускается. После завершения отсчитанного времени таймер автоматически перезапускается, но для всех интервалов, кроме первого, в качестве инициализационного значения используется INTERVAL_TIME.
[00163] Дальнейшая работа с интервальной статистикой в FPGA происходит на основе состояния этого таймера.
[00164] Так как для анализа статистики учитываются не только пакеты текущего интервала, но и пакеты опоздавшие и пришедшие раньше времени, анализатор 120 в FPGA выделяет 3 интервала времени, в которые эти опоздавшие и опередившие свое время пакеты будут анализироваться.
[00165] На Фиг. 2 и Фиг. 3 показаны схемы, одна для случая, когда длительность WAIT_TIME меньше, чем 1/2 INTERVAL_TIME. Отдельно на Фиг. 3 представлен случай, когда длительность WAIT_TIME больше, чем 1/2 INTERVAL_TIME - в этом случае интервалы для будущих пакетов и для опоздавших пересекаются.
[00166] АСС 0/1/2: счетчики статистики. Всего есть 3 счетчика, на фигуре знаком "+" обозначено, что в этот период времени указанный счетчик аккумулирует статистику (в скобках указано, какого потока эта статистика).
[00167] CURR/NEXT/PREVIOUS АСС: каждый из счетчиков в конкретный момент времени может собирать статистику одного из типов временного окна: текущего, предыдущего и следующего. На фигуре указано, какой счетчик какую статистику аккумулирует.
[00168] В конкретном примере реализации анализ пакетов интервала #1 начинается за WAIT TIME до конца интервала #0 (первое деление синего цвета).
[00169] В этот момент за статистику данного интервала отвечает счетчик "NEXT АСС". На Фиг. 2 видно, что в этот момент времени это "АСС 1".
[00170] Когда интервал #0 заканчивается (первое деление красного цвета) интервал #1 становится текущим - "CURRENT АСС". В этот же момент времени счетчик "CURRENT АСС" меняется с "АСС 0" на "АСС 1". Таким образом статистика за интервал #1 продолжает собираться в аккумулятор "АСС 1".
[00171] Когда основное время для интервала #1 заканчивается (второе деление красного цвета) текущим интервалам становится интервал #2. Но пакеты для интервала #1 все еще могут попасть в статистику, в течении времени WAIT TIME. Для этого используется аккумулятор "PREVIOUS АСС" который в этот же момент времени меняет свой адрес на "АСС 1".
[00172] По истечении времени WAIT TIME статистика счетчика "АСС 1" экспортируется - сохраняется в теневые регистры. При этом счетчик "АСС 1" уже может собирать другую статистику - На Фиг. 2 он становится "NETX АСС" для интервала #4.
[00173] Модулю 150 статистики не нужно знать о том, что в FPGA есть три аккумулятора. По завершению анализа каждого интервала счетчик, который отвечал за сбор пакетов предыдущего интервала, сохранят свои значение в специальный регистр, к которому и обращается модуль 150 статистики для сбора статистики за последний интервал.
[00174] FPGA предоставляет информацию о:
• Последнем полностью собранном интервале и за всю тестовую сессию:
Число принятых в нем кадров о Число принятых в нем байт (L2)
FTD (Frame Transfer Delay) - задержка кадров (min/max/acc)
Packet Jitter по RFC 3550 (А.8) - пакетный джиттер (min/max/acc)
TOS cnt - количество кадров, у которых в ходе передачи поменялся ToS
Число пакетов вне очереди (OOP - Out Of Order Packets)
Число кадров с ошибками - кадры с CRC-ошибкой, которые подошли
по фильтрам
Минимальный номер пакета в интервале
Максимальный номер пакета в интервале
Флаг о том, что все пакеты в интервале приходили последовательно
• Действительное время начала тестовой сессии (время прихода первого пакета);
• Действительное время конца тестовой сессии (время прихода последнего пакета);
• Номере текущего интервала.
[00175] Из-за ошибки синхронизации времени между генератором 110 и анализатором 120 FTD может принимать отрицательные значения. Такие значения не учитываются в статистике.
[00176] FPGA не выполняет расчет средних значений FTD и джиттера, а только считает сумму этих значений. Задача модуль 150 статистики - разделить предоставленную сумму на число принятых пакетов и число принятых пакетов по порядку.
[00177] Таким образом, формируется следующая статистика, которая используется потом в процессе расчета потерь пакетов за интервал:
• Минимальный номер пакета в интервале;
• Максимальный номер пакета в интервале;
• Флаг о том, что все пакеты в интервале приходили последовательно.
[00178] Проведя инициализацию FPGA, модуль 150 статистики начинает вызывать обработчик результатов не реже, чем раз в INTERVAL_TIME секунд. При каждом вызове запоминается номер текущего интервала и считывается интегральная статистика. Так как размерность счетчиков в FPGA ограничена -после считывания интегральной статистики счетчики в FPGA очищаются, и задача модуля 150 статистики - аккумуляция значений счетчиков после каждого вычитывания.
[00179] Если номер текущего интервала изменился с последнего чтения -производятся следующие действия:
• Считывается вся статистика по последнему завершенному интервалу из FPGA;
• Считается средняя скорость за интервал (число принятых бит за интервал / длительность интервала);
• Считаются число потерянных пакетов за интервал.
[00180] В некоторых вариантах реализации осуществляют расчет потерь пакетов за интервал следующим образом. На первом шаге осуществляют предсказание числа переданных пакетов за последний интервал:
1. Определяют, сколько пакетов должно было быть отправлено с начала теста до конца текущего интервала (назовем это время TEST_TIME_TOTAL) расчет происходит с учетом особенностей генератора трафика внутри FPGA для большей точности:
2. Схожим образом определяют, сколько пакетов должно было быть отправлено на конец предыдущего интервала (вместо TEST_JTIМE_TOTAL подставляем TEST_TIME_TOTAL - INTERVAL_TIME в формулы выше);
3. Считают число предсказанных пакетов на текущий интервал как разницу полученных в пунктах а и b значений.
[00181] Затем определяют возможное число потерянных пакетов как:
[00182] Число предсказанных пакетов за текущий интервал - число принятых пакетов за текущий интервал (из статистики FPGA)
[00183] Если данное значение больше двух, полученное число и есть количество потерянных пакетов за интервал
[00184] Если меньше или равно двух:
1. Если все пакеты в интервале приходили по порядку (определяем по флагу из статистики FPGA) и это первый интервал и минимальный индекс пакета в интервале = 0: потерь нет
2. Если все пакеты в интервале приходили по порядку (определяем по флагу из статистики FPGA) и минимальный индекс пакета в интервале=максимальный индекс пакета в предыдущем интервале+1: потерь нет
3. Если ничего из вышеперечисленного: полученное число в пункте 2 и есть число потерь.
[00185] Анализатор 120 в FPGA завершит прием пакетов автоматически после того как отсчитает заданное количество интервалов. После получения статистики по последнему завершенному интервалу модуль 150 статистики последний раз обновляет интервальную и интегральную статистики.
[00186] Потери в интегральной статистике равны сумме потерь во всех интервалах.
[00187] В примерном варианте осуществления система может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа осуществления нагрузочного теста.
[00188] Как будет понятно специалисту в данной области техники, аспекты настоящего технического решения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего технического решения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, некоторые детали реализации настоящего технического решения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.
[00189] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища данных может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними.
[00190] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.
[00191] Компьютерный программный код для выполнения операций для шагов настоящего технического решения может быть написан на любом языке программирования или комбинации языков программирования, включая объектно-ориентированный язык программирования, например Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на вычислителе системы полностью, частично, или же как отдельный пакет программного обеспечения, частично на локальном вычислителе и частично на удаленном вычислителе, или же полностью на удаленном вычислителе. В последнем случае, удаленный вычислитель может быть соединен с локальным вычислителе через доступную сеть любого типа, включая глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).
[00192] Аспекты настоящего технического решения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего технического решения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору вычислителя общего назначения, вычислителя специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором вычислителя или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.
[00193] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять вычислителем, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.