СПОСОБ ПЕРЕДАЧИ ДАННЫХ В ЦИФРОВЫХ СЕТЯХ ПЕРЕДАЧИ ДАННЫХ ПО ПРОТОКОЛУ ТСР/IP ЧЕРЕЗ НТТР
METHOD OF TRANSMITTING DATA IN DIGITAL TCP/IP DATA NETWORKS VIA HTTP

Область техники, к которой относится изобретение
Предлагаемое изобретение относится к сетевым технологиям, в частности к способам передачи данных в цифровых сетях передачи данных по протоколу TCP/IP через HTTP.
Уровень техники
При передаче цифровых данных в форме пакетов по протоколу TCP/IP через HTTP соединение часто возникает задача повышения скорости передачи. Проблема низкой скорости передачи возникает при передаче TCP трафика через HTTP соединение, которое также использует TCP, а снижение скорости обусловлено тем, что происходит наложение TCP задержек двух соединений, это приводит к падению скорости TCP соединения, передаваемого через HTTP соединение. Это относится как к обычным соединениям, так и к соединениям, в которых применяется шифрование исходных пакетов данных и формирование зашифрованных данных в стандартном виде согласно параметрам используемых протоколов перед последующей их передачей по сети (инкапсуляция).
Эта задача решается разными методами, в том числе с использованием возможностей, имеющихся в составе используемых протоколов.
Известен способ обнаружения в установленном соединении использования алгоритма Нэйгла (Nagle algorithm) [l], реализуемый с помощью системы, включающей
сетевой модуль, встроенный в компьютер-отправитель и обеспечивающий
- формирование соединения между компьютером-отправителем и компьютером-приемником сообщений;
- прием и передачу сетевых пакетов в соединении между клиентом и сервером;
- определение размера и формирование совокупности пакетов (сегментов) для передачи через установленное соединение;
- обнаружение использования алгоритма Нэйгла в установленном соединении;
- отключение использования алгоритма Нэйгла в установленном соединении.
Способ включает:
- получение сетевым модулем компьютерной системы-отправителя, запроса от приложения отправки, чтобы передать данные через сетевое соединение в компьютерную систему-приемник;
- создание сетевым модулем одного или более сегментов, которые будут переданы в компьютерную систему-приемник через сетевое соединение;
- определение сетевым модулем, является ли один или более сегментов, которые будут переданы, малыми сегментами, и подтвержден ли прием ранее переданного малого сегмента компьютером-приемником;
- если прием ранее переданного малого сегмента не подтвержден компьютером-приемником, и, по крайней мере, один из сегментов, которые будут переданы, является малым сегментом, обнаружение с помощью датчика алгоритма Нэйгла в компьютерной системе-отправителе использования алгоритма Нэйгла в сетевом соединении; и
- в ответ на обнаружение использования алгоритма Нэйгла в сетевом соединении, передача датчиком алгоритма Нэйгла предупреждения об обнаружении использования алгоритма Нэйгла, причем предупреждение включает сигнал для компьютерной системы-приемника и сигнал для приложения отправки.
Способ также предусматривает, в частных случаях реализации
- создание компьютерной системой-отправителем одного или более сегментов, которые будут переданы к компьютерную систему-приемник в ответ на полученный запрос о передаче данных;
- определение компьютерной системой-отправителем, является ли один или более сегментов, которые будут переданы, малыми сегментами, включает определение компьютерной системой-отправителем, является ли один или более сегментов меньше, чем максимальный объем сегмента (maximum segment size, MSS) для сетевого соединения;
- в ответ на обнаружение использования алгоритма Нэйгла в сетевом соединении, выключение алгоритма Нэйгла для сетевого соединения компьютерной системой-отправителем.
В известном способе не предложено какого-либо решения для повышения скорости передачи при инкапсуляции пакетов протокола TCP/IP в HTTP.
Известен способ обеспечения максимальной передаваемой величины сетевых пакетов [2], реализуемый с помощью системы, включающей
сетевой модуль, встроенный в компьютер-клиент и обеспечивающий
- формирование соединения между компьютером-клиентом и компьютером-сервером;
- прием и передачу сетевых пакетов в соединении между клиентом и сервером;
- шифрование сетевых пакетов для установленного соединения;
- регулирование максимального значения передаваемой величины сетевых пакетов,
способ включает
- формирование сетевым модулем соединения между клиентом и сервером, причем сетевой модуль выполняет шифрование множества сетевых пакетов для соединения;
- получение сетевым модулем от сервера через соединение множества сетевых пакетов, предназначенных для клиента, причем множество сетевых пакетов передаются серверу с максимальным значением величины;
- определение превышения размера пакета в результате шифрования для каждого из множества сетевых пакетов;
- регулирование максимального значения передаваемой величины сетевых пакетов по отношению к размеру сетевого пакета из множества сетевых пакетов соединения, имеющего самый большой размер; и
- передача множества сетевых пакетов клиенту через соединение в соответствии с отрегулированным максимальным значением передаваемой величины пакета.
При реализации способа предусматривается также возможность формирования соединения, включающего SSL (secure socket layer) или защищенного туннеля транспортного уровня.
Кроме того, в ходе реализации способа регулирование максимального значения передаваемой величины сетевых пакетов может включать определение величины пропускной способности сети.
Описанный способ принимается за прототип.
Однако известному способу свойственна невысокая скорость передачи данных при наличии двух и более прокси-серверов между компьютером-клиентом и компьютером-сервером, поскольку не предусмотрено предотвращение задержек инкапсулированного трафика на участках между прокси-серверами.
Раскрытие изобретения
Техническим результатом является повышение скорости передачи (обмена) туннелированного TCP соединения, осуществляемого, по крайней мере, через два прокси-сервера.
Для этого предлагается способ повышения быстродействия, реализуемый с помощью системы, включающей сетевые модули, встроенные в компьютер-клиент и компьютер-сервер, и обеспечивающие
- формирование соединения между компьютером-клиентом и компьютером-сервером;
- прием и передачу сетевых пакетов в соединении между клиентом и сервером;
- туннелирование сетевых пакетов;
причем между клиентом и сервером имеется, по крайней мере, два прокси-сервера, связанных с клиентом и сервером,
способ, заключающийся в том, что
- формируют с помощью сетевых модулей соединение между клиентом и сервером, причем соединение устанавливается, по крайней мере, через два прокси-сервера;
- создают туннельное сообщение в сетевом модуле клиента;
- передают туннельное сообщение серверу;
- подбирают величину задержки Т по признаку максимальной скорости передачи туннельного сообщения;
- определяют объем пакета с фиктивными данными Q по формуле
<mrow><mi>Q</mi><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>M</mi><mi>S</mi><msub><mi>S</mi><mi>i</mi></msub></mrow></mstyle><mo>,</mo><mtext> </mtext><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>
i
где MSS - значение максимального объема сегмента в TCP соединениях между i прокси-сервером и i+1 прокси сервером;
N - количество прокси-серверов;
- отправляет из клиента пакет с фиктивными данными объемом Q через Т секунд с момента последней передачи нефиктивных данных через НТТР-туннель,
- принимают на сервере туннельное сообщение;
- отключают алгоритм Нэйгла для TCP соединения в сетевых модулях клиента и сервера;
- отключают алгоритм TCP delayed acknowledge в сетевых модулях клиента и сервера.
Отключение алгоритмов Нэйгла и TCP delayed acknowledge в сетевых модулях клиента и сервера для TCP соединения позволяет увеличить скорость передачи на участке клиент - прокси-сервер и сервер - прокси-сервер. Это происходит за счет того, что передача через TCP туннель будет происходить без задержек, которые вносят алгоритмы Нэйгла и TCP delayed acknowledge.
Для того чтобы предотвратить задержки на участках между прокси-серверами и, соответственно, повысить скорость передачи, достаточно чтобы на прокси-серверах не срабатывал алгоритм Нэйгла. Поскольку алгоритм Нэйгла задерживает отправку пакета, если размер их меньше MSS, то для предотвращения задержки передачи данных достаточно отправить пакет с фиктивными данными, объем которого равен сумме объемов MSS на всех участках между прокси-серверами. Отправка пакета с фиктивными данными заставит прокси-серверы передать все данные, которые были задержаны алгоритмом Нэйгла, дальше по цепочке.
В результате, скорость передачи данных между клиентом и сервером повышается.
Осуществление изобретения
Рассмотрим пример реализации предложенного способа в сети для компьютерной системы, включающей два прокси-сервера и подключенные к ним компьютер-клиент и компьютер-сервер. Сетевые модули, встроенные в компьютер-клиент и компьютер-сервер, имеют аппаратную часть, обеспечивающую физическую передачу данных по сети, и программное обеспечение (ПО), обеспечивающие выполнение требуемых функций.
В качестве ПО, обеспечивающего выполнение обычных функций прокси-сервера, на компьютеры, выполняющие функции прокси-серверов, может быть, например, установлен бесплатный программный пакет Squid.
Компьютер клиент и сервер могут работать под управлением операционной системы (ОС) общего назначения, например Microsoft Windows 7. Для реализации программного модуля ОС должна предоставлять:
- программный интерфейс для работы с транспортным протоколом TCP (в Windows 7 это - API сокетов);
- программный интерфейс, позволяющий управлять сетевым протоколом IP (в ОС Windows 7 это - API Windows Filtering Platform);
- возможность отключения алгоритмов Нэйгла и TCP delayed acknowledge (в ОС Windows 7 такая возможность может быть реализована путем редактирования реестра).
Сетевой модуль клиента должен содержать ПО, обеспечивающее выполнение следующих функций:
- отключение алгоритмов Нэйгла и TCP delayed acknowledge;
- формирование соединения с сервером через два прокси-сервера (НТТР-туннель) с помощью запроса к серверу;
- перенаправление исходящего IP трафика в НТТР-туннель;
- формирует входящий IP трафик, принятый из НТТР-туннеля;
- формирование пакета с фиктивными данными объемом Q через Т секунд с момента последней передачи нефиктивных (полезных) данных через НТТР-туннель.
Сетевой модуль сервера должен содержать ПО, обеспечивающее выполнение следующих функций:
- отключение алгоритмов Нэйгла и TCP delayed acknowledge;
- формирование соединения с клиентом через два прокси-сервера (НТТР-туннель) после получения запроса от клиента;
- перенаправление исходящего IP трафика в НТТР-туннель;
- формирует входящий IP трафик, принятый из HTTP туннеля;
- формирование пакета с фиктивными данными объемом Q через Т секунд с момента последней передачи нефиктивных (полезных) данных через НТТР-туннель.
На компьютере-клиенте и сервере загружаются соответствующие программные модули, с заданием следующих параметров для каждого программного модуля:
- количество прокси-серверов и значение MSS на участках между прокси-серверами;
- значение T;
- параметры для идентификации IP трафика, который будет перенаправляться в туннель (например, IP адреса, номер прикладного протокола и др.).
Значение параметра T определяется путем последовательного перебора значений T с определенным шагом в заранее установленном интервале времени (практически можно принять интервал 0-500 мс с шагом 5-10 мс). Для каждого значения T запускается ПО сетевого модуля и определяется пропускная способность соединения с помощью протокола TCP. Тестирование пропускной способности можно выполнить, например, с помощью бесплатного программного пакета Iperf. Искомое значение T определяется по максимальной величине пропускной способности соединения при посылке пакетов объемом, не превышающим MSS на участке между двумя прокси-серверами.
Затем в ПО сетевых модулей клиента и сервера определяют объем Q пакета с фиктивными данными по формуле
<mrow><mi>Q</mi><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>M</mi><mi>S</mi><msub><mi>S</mi><mi>i</mi></msub></mrow></mstyle></mrow>
,
i
где MSS - значение максимального объем сегмента в TCP соединениях между i прокси-сервером и i+1 прокси-сервером;
N - количество прокси-серверов.
После этого из клиента отправляют фиктивные данные объемом Q через T секунд с момента последней передачи нефиктивных данных через НТТР-туннель, принимают на сервере туннельное сообщение и отключают алгоритм Нэйгла и TCP delayed acknowledge для TCP соединения в сетевых модулях клиента и сервера.
В случае, если заранее точно неизвестно количество прокси-серверов, для расчета объема Q пакета с фиктивными данными по формуле (1) количество прокси-серверов N принимается минимально возможным и равным 2. Однако в этом случае максимальная скорость передачи не достигается.
Необходимо отметить, что возможны и другие варианты реализации предложенного способа, отличающиеся от описанного выше и зависящие от личных предпочтений при программировании отдельных действий и функций.
Источники информации
1. Патент США №7970864, приоритет от 02.04.2009 г., МКИ G06F 15/16.
2. Патент США №8014421, приоритет от 15.09.2009 г., МКИ H04J 3/16.