Способ модификации данных при сетевой пакетной коммутации
DATA MODIFICATION METHOD IN NETWORK PACKET SWITCHING

Предлагаемый способ относится к области построения систем маршрутизации в системах коммутации сетевых пакетов, а именно к способам обработки данных при маршрутизации, и направлен на решение задачи предварительной модификации данных, передаваемых в составе сетевых пакетов, с целью снижения вычислительной нагрузки на системы глубокого анализа данных при передаче больших объемов данных, передаваемых по сети, а также обеспечения защиты информации путем обезличивания части сетевого трафика и может быть реализован, например, в составе сетевых коммутаторов стандарта Ethernet, поддерживающих стек протокола TCP/IP на базе ПЛИС или СБИС.
Достигаемый технический результат - обеспечение модификации данных сетевых пакетов на уровне отдельных байт с минимальной задержкой на обработку и высокой пропускной способностью, а также исключение уязвимости со стороны злоумышленников, действующих по сети.
В настоящее время большинство локальных вычислительных сетей подключено к сети Интернет. Расширение спектра и повышение требований к уровню конфиденциальности требует использования специальных технических средств глубокого анализа данных, передаваемых по сети, а также разграничения доступа к информационным ресурсам.
Одним из способов снижения вычислительной нагрузки на системы глубокого анализа данных при передаче больших объемов сетевого трафика (более 1,5 Тбит/с) является выполнение предварительной модификации данных в составе передаваемых пакетов, например, заголовков, в узловых коммутаторах вычислительных сетей на уровне отдельных байт.
В существующих пакетных коммутаторах, функционирующих под управлением операционных систем, обработка пакета включает последовательность следующих операций чтения, модификации и записи данных. Данные посредством драйвера сначала загружаются в системную память, которая обычно реализуется на основе DRAM, где они последовательно обрабатываются центральным процессором, и по завершению обработки перегружаются в память сетевого интерфейса, откуда далее передаются потребителю. При этом коммутатором вносится значительная временная задержка, связанная с ограниченной пропускной способностью системной памяти, и в результате не обеспечивается пропускная способность, достаточная для передачи требуемых объемов сетевого трафика (предельно достижимая величина пропускной способности для таких коммутаторов составляет не более 40 Гбит/с).
Кроме того, операционные системы, применяемые в коммутаторах, могут потенциально содержать уязвимости, используемые злоумышленниками для нарушения штатного функционирования межсетевого экрана.
Известен способ модификации сетевых пакетов («System for user-space network packet modification»), описанный в патенте US 6,675,218 B1 от 06.01.2004 [1], не имеющий существенных общих признаков с предлагаемым изобретением, но обладающий схожим функциональным назначением.
Основные недостатки данного способа заключаются в том, что он предназначен для реализации в коммутаторах, функционирующих под управлением операционных систем, которые потенциально могут быть подвержены уязвимости. При его практической реализации будут иметь место существенные временные задержки на обработку и пересылку пакетов информации между сетевыми интерфейсами и снижение пропускной способности при передаче больших объемов сетевого трафика.
Также известен способ для эффективного изменения сетевых кадров данных, описанные в патенте US 7,522,621 B2 от 21.04.2009 «Apparatus and method for efficiently modifying network data frames» [2], по функциональному назначению, а также схожести ряда признаков выбранный в качестве прототипа.
Способ прототипа включает следующие операции: сохранение указанного кадра данных во множестве буферов; создание блока управления кадром, идентифицирующего первый буфер, содержащий указанный кадр данных; создание блока управления буфером для каждого из указанных буферов, содержащих данные, указанный блок управления буфером идентифицирует следующий буфер в последовательности указанных буферов, содержащих данные кадра; изменение данных, по меньшей мере, в двух из указанных блоков управления буфером для идентификации новой последовательности буферов, содержащих кадр данных; изменение данных первого блока управления, который указывает на буфер в указанной последовательности, где данные должны быть удалены, чтобы он указывал на второй блок управления буфером, и чтобы он указывал, что данные указанного буфера заканчиваются в точке удаления удаленных данных; создание второго блока управления буфером, соответствующего пустому буферу, на который указывает указанный первый блок управления буфером и который указывает на буфер, на который ранее указывал первый блок управления.
Способ прототипа также дополнительно включает модификацию данных кадра для удаления данных, хранящихся в одном из указанных буферов, а также модификацию данных кадра путем включения дополнительных данных, хранящихся в дополнительном буфере, посредством включения дополнительных этапов: изменения данных в одном из указанных блоков управления буфером для идентификации указанного дополнительного буфера; создания нового блока управления для идентификации буфера, ранее идентифицированного в указанном модифицированном блоке управления буфером и создание новой последовательности буферов, включающей указанный дополнительный буфер.
Как описано в [2], пакеты в рассматриваемом прототипе модифицируются путем внесения соответствующих изменений в блоки управления, без копирования и модификации самих данных. Изменяя определенные блоки управления, можно связать данные с кадром данных, а также удалить данные, хранящиеся в буферах, из кадра без необходимости копировать, перемещать или изменять сами сохраненные данные [2]. Всего предусмотрены следующие виды модификация пакетов [2]: вставка в один пакет другого пакета данных, удаление из пакета данных входящего в него пакета, объединения множества пакетов в один или разделения пакета на множество составных пакетов.
В прототипе [2] обеспечивается минимальная задержка на фильтрацию данных кадра. Однако это достигается за счет того, что в нем модификация данных выполняется только на уровне пакетов и отсутствует возможность ее модификации на уровне отдельных байт, что необходимо для систем глубокого анализа данных. Данное свойство является основным существенным недостатком рассматриваемого прототипа.
A1
A2
A1
A2
k
k
An
k
k
k
k
k
Недостатки, присущие рассмотренным прототипам, преодолены в предлагаемом способе модификации данных при сетевой пакетной коммутации, который заключатся в том, что в способ, содержащий признаки прототипа: сохранение пакета данных, подлежащих модификации, в области памяти, инициализацию блока управления пакетом, включающего адрес первой ячейки в упомянутой области памяти, содержащей указанный пакет данных, инициализацию блоков управления ячейкой упомянутой области памяти, содержащей указанный пакет данных, включены новые признаки: каждая из ячеек упомянутой области памяти содержит один байт пакета данных, блок управления пакетом дополнительно содержит адрес  первой ячейки данных, подлежащих модификации, а также адрес  последней ячейки, содержащей указанный пакет данных в упомянутой области памяти, блоки управления ячейкой инициализируются для каждой ячейки данных c адресом Аn, в упомянутой области памяти, который изменяется в диапазоне от  до  включительно, каждый из блоков управления ячейкой содержит набор из двух байт, первый из которых содержит маску, а второй - паттерн, причем, -му биту маски соответствует -й бит паттерна, модификация данных в каждой ячейке с адресом  в упомянутой области памяти, осуществляется по правилу: если -й бит маски в блоке управления ячейкой, соответствующем данной ячейке, равен «1», то -й бит данной ячейки устанавливается равным -му биту паттерна в блоке управления ячейкой, соответствующем данной ячейке, а если -й бит маски в блоке управления ячейкой, соответствующем данной ячейке, равен «0», то -й бит данной ячейки не подвергается модификации, измененный пакет данных дополняется контрольной суммой, вычисляемой по алгоритму CRC-32 в соответствии со стандартом IEEE 802.3 и доставляется получателю, причем блок управления пакетом и блоки управления ячейкой задаются оператором посредством не связанного с сетью конфигурационного интерфейса и остаются неизменными для каждого пакета данных, подлежащих модификации, а модификация данных в каждой ячейке в упомянутой области памяти, вычисление контрольной последовательности и дополнение ей данных, доставляемых получателю, выполняется аппаратно на основе жесткой логики.
Следовательно, предлагаемый способ удовлетворяет критерию «новизна».
Сравнение с другими техническими решениями показывает, что предлагаемый способ обладает признаками, позволяющими достичь обеспечения модификации данных пакетов на уровне отдельных байт в составе сетевых коммутаторов, например, стандарта Ethernet, поддерживающих стек протокола TCP/IP.
Поскольку реализация предлагаемого способа осуществляется аппаратно, на основе жесткой логики, без применения операционной системы и центрального процессора, сетевые коммутаторы, в составе которых он будет реализован, будут обладать минимальной задержкой на обработку данных и высокой пропускная способностью, а с учетом того, что маска и паттерн в блоках управления ячейками задаются оператором посредством не связанного с сетью доверенного интерфейса, исключается возможность вмешательства в работу средств модификации данных со стороны сети.
Изобретение поясняется следующими графическими материалами:
фиг. 1 - Схема, поясняющая заявляемый способ модификации данных при сетевой пакетной коммутации;
фиг. 2 - Функциональная схема сетевого коммутатора, реализующего заявляемый способ;
фиг. 3 - Структурная схема - пример аппаратной реализации блока модификации данных;
фиг. 4 - Пример обработки данных, поясняющий заявляемый способ.
Способ модификации данных при сетевой пакетной коммутации (фиг. 1) заключается в том, что оператором через не связанный с сетью доверенный конфигурационный интерфейс загружаются маска и паттерн, сохраняются в памяти коммутатора и остаются неизменными для всех передаваемых пакетов, до тех пор, пока они не будут изменены оператором.
Пакет данных, подлежащий модификации, сохраняется в области памяти коммутатора с фиксированным адресным пространством, причем каждая из ячеек упомянутой области памяти содержит один байт пакета данных.
A0
A1
A2
Выполняется инициализация блока управления пакетом, включающего адрес первой ячейки в упомянутой области памяти, содержащей указанный пакет данных, адрес  первой ячейки данных, подлежащих модификации, а также адрес  последней ячейки, содержащей указанный пакет данных в упомянутой области памяти.
Аn
Аn
A1
A2
k
k
Выполняется инициализация блоков управления ячейкой упомянутой области памяти, содержащей указанный пакет данных, причем блоки управления ячейкой инициализируются для каждой ячейки данных c адресом , в упомянутой области памяти (адрес  изменяется в диапазоне от  до  включительно). Каждый из блоков управления ячейкой содержит набор из двух байт, первый из которых содержит маску, а второй - паттерн, причем, -му биту маски соответствует -й бит паттерна.
An
k
k
k
k
k
Модификация данных в каждой ячейке с адресом  в упомянутой области памяти, осуществляется по правилу: если -й бит маски в блоке управления ячейкой, соответствующем данной ячейке, равен «1», то -й бит данной ячейки устанавливается равным -му биту паттерна в блоке управления ячейкой, соответствующем данной ячейке, а если -й бит маски в блоке управления ячейкой, соответствующем данной ячейке, равен «0», то -й бит данной ячейки не подвергается модификации.
Модифицированный пакет данных дополняется контрольной суммой, вычисляемой по алгоритму CRC-32 в соответствии со стандартом IEEE 802.3 [3] и доставляется получателю.
Модификация данных в каждой ячейке в упомянутой области памяти, вычисление контрольной последовательности и дополнение ей данных, доставляемых получателю, выполняется аппаратно на основе жесткой логики.
Подлежащий модификации и модифицированный пакеты могут иметь формат в соответствии с используемым в коммутаторе сетевым протоколом, например, IEEE 802.3 [3].
А2
A1
Количество блоков управления ячейкой, включающих маску и паттерн, определяется количеством ячеек памяти, подлежащих модификации (равно разности  и ), ограничивается объемом памяти, используемой в сетевом коммутаторе и при использовании протокола IEEE 802.3 может находиться в пределах от 8 до 16000 байт.
A1
А0
А2
Адреса , , остаются постоянными для модифицируемых пакетов имогут, например, задаваться, оператором через не связанный с сетью доверенный конфигурационный интерфейс.
Длина контрольной последовательности, вычисляемой с использованием алгоритма CRC-32 в соответствии со стандартом сетевого протокола IEEE 802.3, равна 4 байтам.
Заявляемый способ может быть аппаратно реализован в виде устройства, включающего последовательно соединенные: входной сетевой интерфейс, блок памяти для хранения модифицируемых пакетов, блок модификации данных, блок вычисления и добавления контрольной суммы, выходной сетевой интерфейс, последовательно соединенные конфигурационный интерфейс и блок памяти для хранения набора блоков управления ячейками, выход которого соединен со входом блока модификации для загрузки маски и паттерна, а также включающего блок управления пакетом, адресный выход которого соединен с адресным входом блока памяти для хранения модифицируемых пакетов, а выход сигнала разрешения модификации соединен с одноименным входом блока модификации данных.
Устройство функционирует следующим образом. Набор блоков управления ячейками загружается оператором через не связанный с сетью конфигурационный интерфейс и сохраняется в блоке памяти для хранения блоков управления ячейками.
An
А0
А2
A1
Модифицируемый пакет данных подается через входной сетевой интерфейс и загружается в область памяти блока памяти для хранения модифицируемых пакетов. Текущий, начальный и конечный адреса упомянутой области памяти, ,  и  соответственно, а также адрес первой ячейки данных, подлежащих модификации,  формируются блоком управления пакетом.
После окончания загрузки модифицируемого пакета данных, последний начинает побайтно выгружаться. В это время в освобождающуюся область памяти загружается следующий модифицируемый пакет.
А1
А2
Во время выгрузки данных из ячеек памяти для хранения модифицируемых пакетов с адресом с  по , в блок модификации из блока памяти для хранения блоков управления ячейками подаются маска и паттерн.
An
An
A0
А1-1
An
An
A1
А2
k
An
k
k
An
k
An
k
Блок модификации данных функционирует следующим образом: если данные пакета поступают из ячейки памяти для хранения модифицируемых пакетов с адресом , причем  находится в диапазоне от  до (), то указанные данные не модифицируются; если данные пакета поступают из ячейки памяти для хранения модифицируемых пакетов с адресом , причем  находится в диапазоне от  до , то указанные данные модифицируются по правилу: если -й бит маски, соответствующей ячейке с адресом , равен «1», то -й бит указанных данных устанавливается равным -му биту паттерна, соответствующего ячейке с адресом , а если -й бит маски, соответствующей ячейке с адресом , равен «0», то -й бит указанных данных не подвергается модификации.
К данным, снимаемым с выхода блока модификации, в соответствующем блоке добавляется контрольная сумма, вычисленная по ним в соответствии с протоколом IEEE 802.3, после чего пакет выдается потребителю через выходной сетевой интерфейс.
Блок памяти для хранения модифицируемых пакетов должен обеспечивать одновременное чтение/запись из ячеек с различными адресами, и может быть реализован, например, в виде двухпортового статического оперативного запоминающего устройства.
Объем указанного блока оперативной памяти определяется длиной модифицируемого пакета. Например, при использовании протокола IEEE 802.3 объем оперативной памяти для хранения модифицируемых пакетов должен составлять не менее 16000 байт.
Блок памяти для хранения блоков управления ячейками может быть, например, статическим оперативным запоминающим устройством.
Объем блока памяти для хранения блоков управления ячейками определяется объемом модифицируемых данных.
Входной и выходной сетевые интерфейсы коммутатора могут быть, например, стандарта Ethernet.
В качестве конфигурационного интерфейса, в зависимости от элементной базы, на основе которой реализовано рассматриваемое устройство, может быть использован любой цифровой интерфейс, например, JTAG.
Блок дополнения контрольной последовательностью является стандартным устройством, реализованном в сетевых коммутаторах, функционирующих в соответствии со стандартом IEEE 802.3.
A1
А0
А2
Блок управления пакетом выполняет следующие функции: формирование адресов в блоке памяти для хранения модифицируемых пакетов для загрузки и выгрузки из него модифицируемых данных; хранение адресов: первой ячейки, подлежащих модификации(), первой () и последней () ячеек памяти, содержащей модифицируемый пакет данных; выработку сигнала разрешения модификации данных и может быть реализован, например, в виде цифрового логического автомата.
SW0,
, SW7
P0, D0
P7, D7
M0,
M7
D’0,
D’7
SW8
D’, D
Out
D’0,
D’7
D’
SW8
D
SW8
D0,
D7
SW0,
, SW7
P0,
P7
SW0,
, SW7
M0,
M7
SW0,
, SW7
SW8
En
SW8
SW0,
, SW8
Блок модификации данных может быть реализован в виде цифрового логического устройства (фиг. 3), имеющего входы: шину для подачи данных модифицируемого пакета, шину для подачи маски, шину для подачи паттерна, вход для подачи сигнала разрешения модификации данных, и выход - шину для снятия байт данных модифицированного пакета, и состоящего из восьми одноразрядных мультиплексоров (…), каждый из которых имеет по два одноразрядных входа данных (),…, (), по одному одноразрядному входу адреса (…) и одному одноразрядному выходу (…), и одного восьмиразрядного мультиплексора () с двумя восьмиразрядными входами данных (), восьмиразрядным выходом  и одноразрядным входом адреса En, выходы одноразрядных мультиплексоров (…) объединены в общую шину, которая поразрядно подсоединена к первому входу данных ()восьмиразрядного мультиплексора (), второй вход данных ()восьмиразрядного мультиплексора () и вторые входы (…) каждого из восьми одноразрядных мультиплексоров (…) поразрядно объединены между собой и являются входной шиной для подачи данных модифицируемого пакета блока модификации, а первые входы (…) одноразрядных мультиплексоров (…) объединены в общую шину, которая являются входной шиной для подачи паттерна блока модификации данных, адресные входы (…) одноразрядных мультиплексоров (…) объединены в общую шину, которая является входной шиной для подачи маски блока модификации данных, выход восьмиразрядного мультиплексора () является выходной шиной блока модификации, с которой снимаются данные модифицированного пакета, а адресный вход () восьмиразрядного мультиплексора () является входом для подачи сигнала разрешения блока модификации данных, причем каждый из указанных мультиплексоров (…) выдает на свой выход данные со своего первого входа, когда сигнал на его адресном входе равен «1» и со своего второго входа - в противном случае.
SW8
SW8
D’0,
D’7
SW0,
, SW7
M0,
M7
Данные пакетов поступают в блок модификации побайтно и последовательно. Когда данные поступают из ячеек оперативной памяти для хранения модифицируемых пакетов с адресом в диапазоне от A0 до (А1-1), сигналу разрешения модификации данных присваивается значение «0», и восьмиразрядный мультиплексор () передает байты модифицируемого пакета со входа на выход блока модификации данных без изменений. Когда данные пакета поступают из ячеек оперативной памяти для хранения модифицируемых пакетов с адресом в диапазоне от A1 до А2, сигналу разрешения модификации данных присваивается значение «1», и восьмиразрядный мультиплексор () переключается на выдачу на выход блока модификации данных, снимаемых с выходов (…) восьми одноразрядных мультиплексоров (…), каждый из которых управляется соответствующим k-м битом маски на входах (…), в зависимости от значения которого на выход соответствующего одноразрядного мультиплексора выдается либо k-й бит паттерна (при k-м битом маски равном «1»), либо k-й бит обрабатываемого байта данных модифицируемого пакета.
Использованные источники
1. Патент US 6,675,218 B1 от 06.01.2004. System for user-space network packet modification.
2. Патент US 7,522,621 B2 от 21.04.2009. Apparatus and method for efficiently modifying network data frames.
3. IEEE Std 802.3-2012. IEEE Standard for Ethernet (https://standards.ieee.org/ieee/802.3/5084/).