Обработка пакетов - Packet processing
В цифровые коммуникации сети, обработка пакетов относится к широкому спектру алгоритмы которые применяются к пакету данных или информации по мере его прохождения через различные сетевые элементы сети связи. С увеличением производительности сетевых интерфейсов возникает соответствующая потребность в более быстрой обработке пакетов.[1].
Существует два широких класса алгоритмов обработки пакетов, которые соответствуют стандартизированному разделению сети на плоскость управления и плоскость данных. Алгоритмы применяются либо к:
- Управляющая информация, содержащаяся в пакете, которая используется для безопасной и эффективной передачи пакета от источника к месту назначения.
- или же
- Содержимое данных (часто называемое полезной нагрузкой) пакета, которое используется для обеспечения определенного преобразования содержимого или выполнения действия, управляемого содержимым.
На любом сетевом устройстве (например, маршрутизатор, выключатель, сетевой элемент или терминал, такой как компьютер или смартфон) именно подсистема обработки пакетов управляет прохождением многоуровневой сети или стек протоколов снизу, физический и сетевые уровни полностью до прикладной уровень.
История
История обработки пакетов - это история Интернет и коммутация пакетов. Основные этапы обработки пакетов включают:
- 1962–1968: Ранние исследования коммутация пакетов
- 1969: первые два узла ARPANET связаны; К концу 1971 года 15 сайтов подключились к электронной почте в качестве нового приложения
- 1973: голосовые соединения с коммутацией пакетов через ARPANET с Сетевой голосовой протокол. протокол передачи файлов (FTP) указан
- 1974: Протокол управления передачей (TCP) указан
- 1979: VoIP - NVP работает на ранних версиях IP
- 1981: IP и TCP стандартизированный
- 1982: TCP / IP стандартизированный
- 1991: World Wide Web (WWW) выпущен ЦЕРН, автор Тим Бернерс-Ли
- 1998: IPv6 впервые опубликовано
Исторические справки и хронологию можно найти в разделе «Внешние ресурсы» ниже.
Коммуникационные модели
Для успеха сетей необходим унифицирующий стандарт, определяющий архитектуру сетевых систем. Основное требование к такому стандарту - предоставить основу, которая позволит производителям оборудования и программного обеспечения по всему миру разрабатывать сетевые технологии, которые будут работать вместе, и использовать свои совокупные инвестиционные возможности для продвижения состояния сетей вперед.
В 1970-х годах две организации, Международная организация по стандартизации[2] (ISO) и Международный консультативный комитет по телеграфу и телефону[3] (CCITT, теперь называется Международный союз электросвязи (ITU-T) каждый инициировал проекты с целью разработки международных сетевых стандартов. В 1983 году эти усилия были объединены, и в 1984 году стандарт, названный Базовая эталонная модель для взаимодействия открытых систем,[4] был опубликован ISO и в качестве стандарта X.200[5] ITU-T.
Модель OSI - это 7-уровневая модель.[6] описание того, как работает сетевая операционная система. Многослойная модель имеет много преимуществ[7] включая возможность изменять один уровень, не затрагивая другие, и в качестве модели для понимания того, как работает сетевая ОС. Пока сохраняется взаимосвязь между уровнями, поставщики могут улучшать реализацию отдельного уровня без влияния на другие уровни.
Параллельно с разработкой модели OSI Агентство перспективных исследовательских проектов Министерства обороны США внедряло исследовательскую сеть.[8] (DARPA ). Протокол межсетевого взаимодействия, разработанный для поддержки сети, называется ARPAnet,[9] назывался TCP или Программа управления передачей. По мере продвижения исследований и разработок и роста размера сети было установлено, что используемый дизайн межсетевого взаимодействия становится громоздким и не совсем соответствует многоуровневому подходу модели OSI. Это привело к разделению исходного TCP и созданию TCP / IP архитектура[10] - TCP теперь означает протокол управления передачей, а IP - протокол Интернета.
Появление обработки пакетов
Пакетные сети[11] возникла в результате необходимости в начале 1960-х годов сделать сети связи более надежными. Его можно рассматривать как реализацию многоуровневой модели с использованием пакетной структуры.
Ранние коммерческие сети состояли из выделенных, аналог схемы, используемые для голосовой связи. Концепция коммутации пакетов была введена для создания сети связи, которая продолжала бы функционировать, несмотря на отказы оборудования по всей сети. При таком сдвиге парадигмы сети рассматриваются как совокупность систем, которые передают данные небольшими пакетами, которые проходят путь от источника к месту назначения по любому количеству маршрутов. Функции обработки исходных пакетов поддерживали маршрутизация пакетов через сеть, обнаружение и исправление ошибок передачи и другие управление сетью функции.
Коммутация пакетов с поддерживающими функциями обработки пакетов имеет несколько практических преимуществ по сравнению с традиционными сетями с коммутацией каналов:[12]
- Полностью цифровая среда, поддерживающая несколько типов данных (таких как голос, данные и видео), не только обогатила жизнь пользователей.[13][14] это значительно повысило эффективность сетевых провайдеров, которым ранее приходилось внедрять разные сети для поддержки разных типов данных.
- Более широкое использование полосы пропускания благодаря тому, что несколько логических цепей используют одни и те же физические каналы
- Надежность связи благодаря множеству путей через сеть из любого источника в любой пункт назначения
- Дополнительные информационные услуги могут быть введены с использованием функций обработки пакетов для обеспечения необходимой обработки
Структура пакета
А сетевой пакет является фундаментальным строительным блоком для сетей с коммутацией пакетов.[15] Когда элемент, такой как файл, сообщение электронной почты, голосовой или видеопоток, передается по сети, он разбивается на фрагменты, называемые пакетами, которые можно более эффективно перемещать по сети, чем один большой блок данных. Многочисленные стандарты[16] покрывают структуру пакетов, но обычно пакеты состоят из трех элементов:
- Заголовок - содержит информацию о пакете, включая источник, место назначения, длину и номер пакета.
- Полезная нагрузка (или тело) - содержит данные, составляющие пакет
- Трейлер - указывает конец пакета и часто включает информацию об обнаружении и исправлении ошибок
В сеть с коммутацией пакетов, отправляющий хост-компьютер пакетирует исходный элемент, и каждый пакет маршрутизируется по сети к месту назначения. Некоторые сети использовали пакеты фиксированной длины, обычно 1024 бита, в то время как другие используют пакеты переменной длины и включают длину пакета в заголовок.
Отдельные пакеты могут идти по разным маршрутам к пункту назначения и прибывать в пункт назначения не по порядку. Целевой компьютер проверяет правильность данных в каждом пакете (используя информацию в трейлере), повторно собирает исходный элемент, используя информацию о номере пакета в заголовке, и представляет элемент принимающему приложению или пользователю.
Этот базовый пример включает три основные функции обработки пакетов: пакетирование, маршрутизацию и сборку. Функции обработки пакетов варьируются от простых до очень сложных. Например, функция маршрутизации на самом деле представляет собой многоэтапный процесс.[17] с использованием различных алгоритмов оптимизации и поиска в таблицах. Базовая функция маршрутизации в Интернете выглядит примерно так:
- 1. Проверьте, является ли адрес назначения адресом, «принадлежащим» этому компьютеру. Если да, обработайте пакет. Если не:
- а. Проверить, есть ли IP-пересылка установлено «Да». Если нет, пакет уничтожается. Если да, то
- я. Проверьте, владеет ли сеть, подключенная к этому компьютеру, адресом назначения. Если да, направьте пакет в соответствующую сеть. Если нет, то
- 1. Проверьте, есть ли какой-либо маршрут к сети назначения. Если да, направьте пакет на шлюз следующего перехода. Если нет, уничтожьте пакет.
- я. Проверьте, владеет ли сеть, подключенная к этому компьютеру, адресом назначения. Если да, направьте пакет в соответствующую сеть. Если нет, то
- а. Проверить, есть ли IP-пересылка установлено «Да». Если нет, пакет уничтожается. Если да, то
Более продвинутые функции маршрутизации включают сеть Балансировка нагрузки[18] и самые быстрые алгоритмы маршрутов.[19] Эти примеры иллюстрируют диапазон возможных алгоритмов обработки пакетов и то, как они могут вызывать значительные задержки.[20] в передачу предмета. Разработчики сетевого оборудования часто используют комбинацию аппаратных и программных ускорителей, чтобы минимизировать задержка в сети.
Архитектура сетевого оборудования
IP-оборудование можно разделить на три основных элемента: уровень данных, уровень управления и уровень управления.[21]
Плоскость данных
В плоскость данных - это подсистема сетевого узла, которая принимает и отправляет пакеты от интерфейса, обрабатывает их в соответствии с требованиями применимого протокола и при необходимости доставляет, отбрасывает или пересылает их.
Плоскость управления
В плоскость управления поддерживает информацию, которая может быть использована для изменения данных, используемых плоскостью данных. Для поддержания этой информации требуется обработка сложных протоколов сигнализации. Реализация этих протоколов в плоскости данных приведет к снижению производительности пересылки. Распространенный способ управления этими протоколами - позволить плоскости данных обнаруживать входящие пакеты сигнализации и локально пересылать их в плоскость управления. Протоколы сигнализации плоскости управления могут обновлять информацию плоскости данных и вводить исходящие пакеты сигнализации в плоскость данных. Эта архитектура работает, потому что сигнальный трафик составляет очень небольшую часть глобального трафика.
Плоскость управления
Плоскость управления обеспечивает административный интерфейс для всей системы. Он содержит процессы, которые поддерживают оперативное администрирование, управление или действия по настройке / обеспечению, такие как:
- Средства для поддержки сбора и агрегирования статистики,
- Поддержка внедрения протоколов управления,
- Интерфейс командной строки, графический интерфейс конфигурации пользователя через веб-страницы или традиционный протокол SNMP (Простой протокол управления сетью ) управление.
Более сложные решения на основе XML (расширяемый язык разметки ) также могут быть включены.
Примеры
Список приложений для обработки пакетов[22] обычно делится на две категории. Ниже приведены несколько примеров, отобранных, чтобы проиллюстрировать разнообразие, используемое сегодня.
Управляющие приложения
- Пересылка, основная работа роутера
- Шифрование / дешифрование, защита информации в полезной нагрузке с помощью криптографических алгоритмов
- Качество обслуживания (QOS), обработка пакетов по-разному, например предоставление приоритетных или специализированных услуг в зависимости от класса пакета.
Приложения данных
- Транскодирование, преобразование конкретной кодировки видео в конкретную кодировку, используемую местом назначения
- Преобразование и преобразование,[23] преобразование размера и плотности изображения, соответствующих целевому устройству
- Изображение или же Распознавание голоса, обнаружение конкретного шаблон (изображение или голос), которое сопоставляется с теми, что в базе данных, с некоторыми сопутствующими действиями, предпринимаемыми при обнаружении совпадения
- Расширенные приложения включают такие области, как безопасность (мониторинг звонков и предотвращение утечки данных ), таргетированная реклама, многоуровневые услуги, защита авторских прав и статистика использования сети. Эти и многие другие приложения, ориентированные на контент, основаны на способности распознавать определенные интеллектуальные данные, содержащиеся в полезных данных пакета, используя Глубокая проверка пакетов (DPI) технологии.
Архитектуры обработки пакетов
Коммутация пакетов[24] также вводит некоторые архитектурные компромиссы. Выполнение функций обработки пакетов при передаче информации приводит к задержкам, которые могут отрицательно сказаться на выполняемом приложении. Например, в приложениях для передачи голоса и видео необходимое преобразование из аналого-цифрового и обратно в пункт назначения вместе с задержками, вносимыми сетью, может вызвать заметные пробелы, мешающие работе пользователей. Задержка - это мера задержки по времени, испытываемой сложной системой.
Разработано несколько архитектурных подходов к обработке пакетов.[25] для удовлетворения требований к производительности и функциональности конкретной сети и решения проблемы задержки.
Однопоточная архитектура (стандартная операционная система)
А стандартный сетевой стек пользуется услугами, предоставляемыми Операционная система (ОС) работает на одном процессоре (однопоточный ). Хотя однопоточные архитектуры проще всего реализовать, они подвержены накладным расходам, связанным с производительностью функций ОС, таких как прерывание, управление потоками, таймеры и блокировка. Эти накладные расходы на обработку ОС накладываются на каждый пакет, проходящий через систему, что приводит к снижению пропускной способности.
Многопоточная архитектура (многопроцессорная операционная система)
Можно улучшить производительность сетевого стека ОС, адаптируя программное обеспечение обработки стека протоколов для поддержки нескольких процессоров (многопоточный ), либо с помощью Симметричная многопроцессорная обработка (SMP) платформы или архитектура многоядерного процессора. Повышение производительности реализовано для небольшого количества процессоров,[26] но не может линейно масштабироваться на большее количество процессоров (или ядер), и процессор, например, с восемью ядрами, может не обрабатывать пакеты значительно быстрее, чем один с двумя ядрами.
Архитектура быстрого пути (обход операционной системы)
В быстрый путь В реализации плоскость данных разделена на два уровня. Нижний уровень, обычно называемый быстрым путем, обрабатывает большую часть входящих пакетов за пределами среды ОС и без каких-либо накладных расходов ОС, которые ухудшают общую производительность. Только те пакеты, которые требуют сложной обработки, направляются в сетевой стек ОС (верхний уровень плоскости данных), который выполняет необходимые функции управления, сигнализации и контроля. Когда требуются сложные алгоритмы, такие как маршрутизация или безопасность, сетевой стек ОС пересылает пакет выделенным программным компонентам в плоскости управления.
Многоядерный процессор может обеспечить дополнительное улучшение производительности при быстрой реализации.[27] Чтобы максимизировать общую пропускную способность системы, несколько ядер могут быть выделены для работы по быстрому пути, в то время как только одно ядро требуется для работы операционной системы, сетевого стека ОС и плоскости управления приложения.
Единственное ограничение при настройке платформы состоит в том, что, поскольку ядра, выполняющие быстрый путь, работают вне ОС, они должны быть выделены исключительно для быстрого пути и не должны использоваться совместно с другим программным обеспечением. Систему также можно динамически переконфигурировать по мере изменения структуры трафика. Разделение плоскости данных на два уровня также добавляет сложности, поскольку два уровня должны иметь одинаковую информацию для обеспечения согласованности системы.
Технологии обработки пакетов
Для создания специализированных платформ обработки пакетов были разработаны и внедрены различные технологии. Эти технологии, охватывающие широкий спектр аппаратного и программного обеспечения, были разработаны с целью максимизации скорости и пропускной способности при минимизации задержек.
Сетевые процессоры
А сетевой процессор блок (NPU) во многом похож на процессоры общего назначения (GPP) на них работает большинство компьютеров, но с его внутренней архитектурой и функциями, адаптированными для сетецентрических операций. NPU обычно имеют встроенные в сеть функции, такие как поиск адресов, сопоставление шаблонов и управление очередью. микрокод. Операции обработки пакетов более высокого уровня, такие как безопасность или обнаружения вторжений часто встроены в архитектуры NPU.[28] Примеры сетевых процессоров могут включать:
- Intel - Семейство IXP2xxx
- Нетроном - Семейства NFP-6xxx / 4xxx / 32xx
- ЧВК Сьерра - Семья Winpath
- EZChip - Семейство NP-x
Многоядерные процессоры
А многоядерный процессор представляет собой единый полупроводниковый корпус, который имеет 2 или более ядер, каждое из которых представляет собой отдельный процессор, способный выполнять код параллельно. Процессоры общего назначения, такие как Intel Xeon[29] теперь поддерживает до 8 ядер. Некоторые многоядерные процессоры объединяют специальные возможности обработки пакетов для создания полноценной SoC (системы на кристалле). Они обычно объединяют Ethernet интерфейсы, криптодвигатели, сопоставление с образцом двигатели, оборудование очереди для QoS и иногда более сложных функций с использованием микроядер. Все эти аппаратные функции позволяют разгрузить программную обработку пакетов. Недавние примеры этих специализированных многоядерных пакетов, такие как Cavium OCTEON II, могут поддерживать от 2 до 32 ядер.
- Тилера - Семейство процессоров TILE-Gx
- Cavium Networks - Семейства многоядерных процессоров OCTEON и OCTEON II
- Freescale - Платформы обработки QorIQ
- NetLogic Microsystems - Семейства процессоров XLP, XLR и XLS
Аппаратные ускорители
Для четко определяемых и повторяющихся действий создание специального ускорителя, встроенного непосредственно в решение для полупроводникового оборудования, ускорит выполнение операций по сравнению с программным обеспечением, работающим на процессоре общего назначения.[30] Используемые начальные реализации ПЛИС (программируемая вентильная матрица) или ASIC (Интегральная схема для конкретного приложения), но теперь специальные функции, такие как шифрование и сжатие, встроены как в GPP, так и в NPU как внутренние аппаратные ускорители. Текущие примеры многоядерных процессоров с аппаратными ускорителями для конкретных сетей включают Cavium CN63xx с ускорением для обеспечения безопасности, TCP / IP, QOS и сопоставление шаблонов HFA[31] и семейство процессоров Netlogic Microsystems XFS с механизмами ускорения работы в сети и безопасности.[32]
Глубокая проверка пакетов
Возможность принимать решения на основе содержимого отдельных пакетов позволяет использовать широкий спектр новых приложений, таких как Policy Charging и Rules Functions (ПКРФ ) и качество обслуживания. Системы обработки пакетов разделяют определенные типы трафика с помощью Deep Packet Inspection (DPI).[33] технологии. Технологии DPI используют сопоставление с образцом алгоритмы, чтобы заглянуть внутрь полезной нагрузки данных, чтобы идентифицировать содержимое каждого пакета, проходящего через сетевое устройство. Об успешном совпадении с образцом сообщается управляющему приложению для принятия любых соответствующих дальнейших действий.
Программное обеспечение для обработки пакетов
Программное обеспечение операционной системы будет содержать определенные стандартные сетевые стеки, которые будут работать как в одноядерных, так и в многоядерных средах.[34] Для реализации архитектуры обхода операционной системы (быстрого пути) требуется использование специализированного программного обеспечения для обработки пакетов, такого как 6WINDGate 6WIND. Этот тип программного обеспечения предоставляет набор сетевых протоколов, которые могут быть распределены между несколькими блейд-модулями, процессорами или ядрами и соответствующим образом масштабироваться.
Рекомендации
- ^ Д. Черович, В. Дель Пикколо, А. Амаму, К. Хаддаду и Г. Пуйоль, Быстрая обработка пакетов: обзор, в IEEE Communications Surveys & Tutorials, vol. 20, нет. 4, стр. 3645-3676, четвертый квартал 2018 г. doi: 10.1109 / COMST.2018.2851072
- ^ Международная организация по стандартизации
- ^ Международный союз электросвязи)
- ^ ИСО / МЭК 10731: 1994. Информационные технологии - Взаимодействие открытых систем - Базовая эталонная модель - Соглашения для определения услуг OSI
- ^ ITU-T X.200-199407, X.200: Информационные технологии - Взаимодействие открытых систем - Базовая эталонная модель: базовая модель
- ^ Tech-FAQ. Модель OSI - что это такое; Почему это важно; Почему это не имеет значения
- ^ Заметки о компьютерных сетях. Преимущества 7-уровневой модели OSI
- ^ «DARPA - Агентство перспективных оборонных исследовательских проектов». Архивировано из оригинал на 2020-01-15. Получено 2012-01-05.
- ^ Живой Интернет. ARPANET - Первый Интернет
- ^ W3 школы, Учебное пособие по TCP / IP
- ^ Шелдон, Том. Пакеты и сети обработки пакетов. Linktionary, 2001.
- ^ Коупленд, Ли. QuickStudy: сети с пакетной коммутацией и сети с коммутацией каналов. Computerworld, март 2000 г.
- ^ Негропонте, Н. Быть цифровым. Винтаж, январь 1996 г.
- ^ Рединг, Вивиан. Цифровая конвергенция: совершенно новый образ жизни. Выставка цифрового образа жизни, май 2006 г.
- ^ Петерсон, Л. и Дэви, Б. Компьютерные сети (5-е издание): системный подход. Моргон Кауфманн, март 2011 г.
- ^ RFC Sourcebook. IP, Интернет-протокол.
- ^ Стринструп М. Маршрутизация в сетях связи. Прентис Холл, апрель 1995 г.
- ^ Андерсон П. и Джеймс Л. Производительность стремительно растет, функции меняются - Обзор: балансировщики нагрузки. NetworkWorldFusion, июнь 1999 г.
- ^ Мурти, С. Маршрутизация в сетях с коммутацией пакетов с использованием алгоритмов поиска пути. Калифорнийский университет в Санта-Крус, 1996 год.
- ^ Университет Мэриленда. Введение, скорость и задержка. 2009
- ^ Руководство Nokia Communications Framework. Что такое самолеты?. Февраль 2010 г.
- ^ Вин, Х. Приложения для обработки пакетов: обзор. Univ. Техаса, осень 2003 г.
- ^ Редди, М. Транскодирование и преобразование видео - 31 вид видео!. Вела, сентябрь 2011 г.
- ^ Эльханани И. и Хамди М. Архитектуры высокопроизводительной коммутации пакетов. Springer, ноябрь 2011 г.
- ^ Селиссен, М. Обработка пакетов требует баланса между архитектурой и сетью. EE Times, август 2002 г.
- ^ Фунг А., Фунг Дж. И Ньюэлл Д. Улучшенное масштабирование SMP в Linux: привязка процессора к процессору. Intel Software Network, октябрь 2008 г.
- ^ CDC Innovation. 6WIND обеспечивает 10-кратное ускорение функций обработки пакетов на новых многоядерных платформах Intel®. Март 2010 г.
- ^ NetLogic Microsystems. Современные алгоритмические процессоры, основанные на знаниях.
- ^ Intel. Обработка пакетов с помощью многоядерных процессоров Intel®. 2008.
- ^ Чирла, Р. Сравнение архитектуры высокопроизводительных систем оптимизации WAN. Infineta, Cardinal Directions, март 2011 г.
- ^ Кавиум. OCTEON II CN63XX многоядерные процессоры интернет-приложений MIPS64
- ^ NetLogic Microsystems. многоядерные процессорные решения
- ^ dpacket.org Введение в глубокую проверку / обработку пакетов.
- ^ Форум по многоядерной обработке пакетов
внешняя ссылка
- Живая история. «История Интернета ”
- Хау, Уолт. (2010) «Краткая история Интернета ”
- Интернет-общество. «Истории Интернета ”
- Живая история. «История коммутации пакетов ”
- Робертс, доктор Лоуренс Г. (ноябрь 1978 г.). «Эволюция пакетной коммутации ”
- Маршалл, Дэйв. «История Интернета - Хронология. ”
- Рами Розен "Сетевое ускорение с DPDK ", статья на lwn.net, июль 2017 г.
- Рами Розен "Сеть в пользовательском пространстве с DPDK ", статья в Linux Journal, апрель 2018 г.