RU2387002C2 - Levelling network load through connection control - Google Patents

Levelling network load through connection control Download PDF

Info

Publication number
RU2387002C2
RU2387002C2 RU2004117219/09A RU2004117219A RU2387002C2 RU 2387002 C2 RU2387002 C2 RU 2387002C2 RU 2004117219/09 A RU2004117219/09 A RU 2004117219/09A RU 2004117219 A RU2004117219 A RU 2004117219A RU 2387002 C2 RU2387002 C2 RU 2387002C2
Authority
RU
Russia
Prior art keywords
connection
host
protocol
load balancing
load
Prior art date
Application number
RU2004117219/09A
Other languages
Russian (ru)
Other versions
RU2004117219A (en
Inventor
Аболаде ГБАДЕГЕСИН (US)
Аболаде ГБАДЕГЕСИН
Шон Б. ХАУС (US)
Шон Б. ХАУС
Аамер ХАЙДРИ (US)
Аамер ХАЙДРИ
Джозеф М. ДЖОЙ (US)
Джозеф М. ДЖОЙ
Санджай Н. КАНИЙАР (US)
Санджай Н. КАНИЙАР
Роберт В. ВЕЛЛАНД (US)
Роберт В. ВЕЛЛАНД
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/610,506 external-priority patent/US7590736B2/en
Priority claimed from US10/610,519 external-priority patent/US7636917B2/en
Priority claimed from US10/657,568 external-priority patent/US7606929B2/en
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004117219A publication Critical patent/RU2004117219A/en
Application granted granted Critical
Publication of RU2387002C2 publication Critical patent/RU2387002C2/en

Links

Images

Abstract

FIELD: information technology.
SUBSTANCE: network load levelling module has connection transfer unit which can transfer connections from the said module, where the connection transfer unit can compile the protocol status for connection over a network stack; the connection transfer unit can aggregate the compiled protocol status with data for connection to the aggregated connection status for connection; the connection transfer unit can also initiate sending the aggregated connection status to a host; and a classifier which can accept a connection and give out a connection transfer instruction to the connection transfer unit. An information carrier contains instructions executed by a processor, which order the said module to carry out operations which include: reception from the packet of at least part of the source/destination pair; accessing the encapsulation mapping table using at least part of the source/destination pair and replacing part of the packet with a stream identifier in order to create an encapsulated packet.
EFFECT: higher quality of load levelling.
40 cl, 45 dwg

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF THE INVENTION

Это изобретение относится, в целом, к выравниванию сетевой нагрузки и, в частности, к выравниванию сетевой нагрузки с помощью манипуляции соединениями, например переноса соединений с туннелированием и/или переноса соединений совместно с выравниванием нагрузки на уровне приложений.This invention relates, in general, to network load balancing and, in particular, to network load balancing by manipulating connections, for example, transferring connections with tunneling and / or transferring connections together with load balancing at the application level.

УРОВЕНЬ ТЕХНИКИBACKGROUND

Интернет оказал большое влияние на связь и многие аспекты жизнедеятельности с использованием связи. Интернет обеспечивает быстрый и сравнительно простой обмен данными между двумя людьми или объектами (сущностями). Интернет включает в себя многочисленные сетевые узлы, связанные между собой, что обеспечивает возможность переноса информации между ними. Некоторые сетевые узлы могут представлять собой маршрутизаторы, которые переправляют пакет с одной линии связи на другую, могут представлять собой отдельные компьютеры-клиенты, могут представлять собой частные сети для различных сущностей (например, интрасети на предприятиях) и т.д.The Internet has had a great influence on communication and many aspects of life using communication. The Internet provides a quick and relatively simple exchange of data between two people or objects (entities). The Internet includes numerous network nodes interconnected, which provides the ability to transfer information between them. Some network nodes can be routers that forward a packet from one communication line to another, can be separate client computers, can be private networks for various entities (for example, intranets in enterprises), etc.

В случае частной сети, а также в других случаях, пакеты, поступающие на узел или узлы Интернета, распределяются на другие узлы частной сети. Такая частная сеть может быть сформирована, например, из группы серверов, каждый из которых может обрабатывать пакеты, поступающие в частную сеть. В частные сети предприятий, университетов, государственных учреждении и т.д. в течение короткого временного интервала могут поступать многочисленные пакеты. Чтобы своевременно отвечать и снизить вероятность отказа или потери поступающих пакетов, в частной сети можно использовать множественные серверы, способные одновременно обрабатывать поступающие пакеты.In the case of a private network, as well as in other cases, packets arriving at a node or nodes of the Internet are distributed to other nodes of the private network. Such a private network can be formed, for example, from a group of servers, each of which can process packets arriving at the private network. In private networks of enterprises, universities, public institutions, etc. Numerous packets may arrive over a short time interval. To respond in a timely manner and reduce the likelihood of failure or loss of incoming packets, multiple servers can be used on the private network that can simultaneously process incoming packets.

Поступающие пакеты часто являются запросами, относящимися к определенной информации, например документу, элементу каталога, веб-странице и т.д. Поступающие пакеты также могут относиться к финансовой транзакции между покупателем и продавцом. В пакетной связи пакеты можно использовать и в других целях. В любом случае поступающие пакеты распределяются между различными серверами из группы серверов для обеспечения быстрого получения пакетов и/или организации сложной связи.Incoming packages are often requests related to certain information, such as a document, catalog item, web page, etc. Incoming packages may also refer to a financial transaction between a buyer and a seller. In packet communication, packets can be used for other purposes. In any case, incoming packets are distributed between different servers from the server group to ensure fast packet reception and / or complex communication.

Распределение поступающих пакетов между серверами из группы серверов часто называют выравниванием сетевой нагрузки. Иными словами, операцию выравнивания нагрузки можно осуществлять над пакетами по мере их поступления на узел или узлы Интернета, когда узел или узлы составляют частную сеть и/или когда они соединяют частную сеть с Интернетом.Distributing incoming packets between servers in a server group is often referred to as network load balancing. In other words, the load balancing operation can be performed on packets as they arrive at a node or nodes of the Internet, when the node or nodes form a private network and / or when they connect the private network to the Internet.

Такая операция выравнивания нагрузки осуществляется с использованием специального оборудования, которое находится «перед» частной сетью на узле или узлах, соединяющих частную сеть с Интернетом, и/или которое обеспечивает присутствие частной сети в Интернете. Физическое оборудование, которое осуществляет операцию выравнивания нагрузки, обычно полностью дублируется, чтобы реализовать избыточность и повысить надежность операции выравнивания нагрузки. Для повышения емкости операций выравнивания нагрузки прежнее оборудование выравнивания нагрузки заменяют более мощным оборудованием, которое полностью повторяет прежнее оборудование выравнивания нагрузки. Таким образом, расширение выравнивания нагрузки ограничивается увеличением мощности оборудования при его замене.Such a load balancing operation is carried out using special equipment that is located “in front” of the private network on the node or nodes connecting the private network to the Internet and / or which ensures the presence of the private network on the Internet. The physical equipment that performs the load balancing operation is usually completely duplicated in order to realize redundancy and increase the reliability of the load balancing operation. To increase the capacity of load balancing operations, the old load balancing equipment is replaced with more powerful equipment that completely repeats the previous load balancing equipment. Thus, the expansion of load balancing is limited by the increase in equipment capacity during its replacement.

Для реализации операции выравнивания нагрузки оборудование обычно осуществляет циклическое распределение поступающих запросов соединения. Другими словами, поступающие запросы соединения распределяются на серверы из группы серверов в линейном, повторяющемся порядке, при этом единичный запрос соединения распределяется на каждый сервер. Это циклическое распределение нагрузки для соединений обычно используется безотносительно к состоянию частной сети или характеру поступающих запросов соединения. Если операция выравнивания нагрузки не распространяется за пределы циклического распределения, эти другие факторы учитываются лишь постольку, поскольку их можно вывести из сетевого графика и/или из уровня перегрузки частной сети.To implement the load balancing operation, the equipment usually cyclically distributes incoming connection requests. In other words, incoming connection requests are distributed to servers from a group of servers in a linear, repeating order, with a single connection request being distributed to each server. This cyclic load balancing for connections is typically used regardless of the state of the private network or the nature of incoming connection requests. If the load balancing operation does not extend beyond the cyclic distribution, these other factors are taken into account only insofar as they can be derived from the network and / or from the congestion level of the private network.

В публикации US 6,427,171 описан центральный процессор (ЦП) хоста, обслуживающий сетевой стек обработки протоколов. Этот стек обработки обеспечивает команды не только для обработки сетевых сообщений, но также для распределения обработки определенных сетевых сообщений в специализированное сетевое устройство связи, благодаря чему некоторая нагрузка по наиболее затратной по времени обработке протоколов переносится с ЦП хоста в сетевое устройство связи. ЦП хоста, работающий согласно инструкциям из стека, и сетевое устройство связи вместе определяют, будет ли то или иное сообщение обработано ЦП хоста или сетевым устройством связи, и в какой степени оно будет обработано.US Pat. No. 6,427,171 describes a host central processing unit (CPU) serving a network protocol processing stack. This processing stack provides commands not only for processing network messages, but also for distributing the processing of certain network messages to a specialized network communication device, due to which some load on the most time-consuming protocol processing is transferred from the host CPU to the network communication device. The host CPU, operating according to the instructions from the stack, and the network communication device together determine whether a message will be processed by the host CPU or network communication device, and to what extent it will be processed.

В публикации US 2001/0039586 описана система для направления запроса на динамический контент в сервер приложения, который имеет доступ к базе данных, содержащей обновляемые данные, относящиеся к запросу. Система содержит маршрутизатор динамического контента, средства репликации базы данных и плагины веб-сервера. Маршрутизатор динамического контента управляет осуществляемой плагинами веб-сервера пересылкой запроса на соответствующий сервер приложения.US 2001/0039586 describes a system for sending a request for dynamic content to an application server that has access to a database containing updated data related to the request. The system contains a dynamic content router, database replication tools, and web server plugins. The dynamic content router controls the forwarding of the request by the web server plug-ins to the corresponding application server.

В публикации 2002.0194342 описано переключение между приложениями с учетом контента и его способы, которые позволяют осуществлять интеллектуальное перенаправление пакетов клиента в один сервер из группы серверов, входящей в серверное хозяйство. Для переключения используется контент седьмого уровня сетевой модели или приложения, извлекаемый из пакета посредством анализа для осуществления помощи в выборе сервера и для планирования передачи пакета в сервер. Это позволяет осуществлять оптимизированное выравнивание нагрузки и управление качеством обслуживания, приспособленное к приложению, в отношении которого осуществляется переключение.The publication 2002.0194342 describes switching between applications based on content and its methods that allow intelligent redirection of client packets to a single server from a group of servers included in the server farm. For switching, the content of the seventh level of the network model or application is used, extracted from the package through analysis to provide assistance in choosing a server and to plan the transmission of the package to the server. This allows for optimized load balancing and quality of service management tailored to the switching application.

Соответственно, требуются схемы и/или способы усовершенствования выравнивания сетевой нагрузки, в частности, в системах, состоящих из множества устройств, и/или связанных с этим операций.Accordingly, schemes and / or methods for improving network load balancing are required, in particular in systems consisting of a plurality of devices, and / or related operations.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

В соответствии с первым аспектом настоящего изобретения предусмотрен способ согласно пункту 1 формулы изобретения.In accordance with a first aspect of the present invention, there is provided a method according to claim 1.

В соответствии со вторым аспектом настоящего изобретения предусмотрен модуль выравнивания нагрузки согласно пункту 21 формулы изобретения.In accordance with a second aspect of the present invention, there is provided a load balancing module according to claim 21.

В соответствии с третьим аспектом настоящего изобретения предусмотрен хост согласно пункту 31 формулы изобретения.In accordance with a third aspect of the present invention, there is provided a host according to paragraph 31 of the claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Для обозначения аналогичных и/или соответствующих аспектов, особенностей и компонентов на чертежах используются одинаковые позиции.For the designation of similar and / or corresponding aspects, features and components in the drawings, the same reference numbers are used.

Фиг.1 - иллюстративная схема выравнивания сетевой нагрузки, где показаны инфраструктура выравнивания нагрузки и множественные хосты.Figure 1 is an illustrative network load balancing diagram showing load balancing infrastructure and multiple hosts.

Фиг.2 - иллюстративная схема выравнивания сетевой нагрузки, где показаны множественные модули выравнивания нагрузки и множественные хосты.FIG. 2 is an illustrative network load balancing scheme showing multiple load balancing modules and multiple hosts.

Фиг.3 - схематическое изображение модуля выравнивания нагрузки, имеющего разделенные функции, и хоста.Figure 3 is a schematic illustration of a load balancing module having separate functions and a host.

Фиг.4 - иллюстративная схема инфраструктуры выравнивания сетевой нагрузки с разделенными функциями классификации и пересылки.4 is an illustrative diagram of a network load balancing infrastructure with separated classification and forwarding functions.

Фиг.5 - иллюстративная логическая блок-схема способа расширения инфраструктуры выравнивания сетевой нагрузки в различные конфигурации.5 is an illustrative flowchart of a method for expanding a network load balancing infrastructure into various configurations.

Фиг.6 - иллюстративная схема первой конфигурации инфраструктуры выравнивания сетевой нагрузки в отношении устройств.6 is an illustrative diagram of a first configuration of a network load balancing infrastructure with respect to devices.

Фиг.7 - иллюстративная схема второй конфигурации инфраструктуры выравнивания сетевой нагрузки в отношении устройств.7 is an illustrative diagram of a second network load balancing infrastructure configuration with respect to devices.

Фиг. 8А и 8В - иллюстративная схема первой и второй конфигураций инфраструктуры выравнивания сетевой нагрузки в отношении компонентов.FIG. 8A and 8B are an illustrative diagram of first and second configurations of a network load balancing infrastructure with respect to components.

Фиг. 9А и 9В - иллюстративная схема первой и второй конфигураций инфраструктуры выравнивания сетевой нагрузки с точки зрения ресурсов.FIG. 9A and 9B are an illustrative diagram of a first and second configuration of a network load balancing infrastructure in terms of resources.

Фиг.10 - иллюстративная схема подхода к выравниванию сетевой нагрузки с использованием информации статуса хоста.10 is an illustrative diagram of an approach to balancing network load using host status information.

Фиг.11 - иллюстративная логическая блок-схема способа выравнивания сетевой нагрузки с использованием информации статуса хоста.11 is an illustrative logical block diagram of a method of balancing network load using host status information.

Фиг.12 - иллюстративная схема подхода к выравниванию сетевой нагрузки с использованием информации работоспособности и нагрузки.12 is an illustrative diagram of an approach to balancing network load using health and load information.

Фиг.13А - иллюстративная таблица работоспособности и нагрузки, обозначенная на фиг.12.Figa is an illustrative table of health and load, indicated in Fig.12.

Фиг.13В - иллюстративный объединенный кэш работоспособности и нагрузки, обозначенный на фиг.12.FIG. 13B is an illustrative combined health and load cache indicated in FIG.

Фиг.14 - иллюстративная логическая блок-схема способа выравнивания сетевой нагрузки с использованием информации работоспособности и нагрузки.FIG. 14 is an illustrative flowchart of a method for balancing network load using health and load information.

Фиг.15 - иллюстративная схема протокола обмена сообщениями для передач, показанных на фиг.12, между хостами и модулями выравнивания нагрузки.15 is an illustrative diagram of a messaging protocol for transmissions shown in FIG. 12 between hosts and load balancing modules.

Фиг.16 - иллюстративная схема передачи сообщения для передач, показанных на фиг.12, между хостами и модулями выравнивания нагрузки.FIG. 16 is an illustrative message transmission diagram for transmissions shown in FIG. 12 between hosts and load balancing modules.

Фиг. 17А и 17В - иллюстративные схемы сценариев хранения на посреднике информации работоспособности и нагрузки для таблиц работоспособности и нагрузки, показанных на фиг.13А, и для объединенных кэшей работоспособности и нагрузки, показанных на фиг.13В, соответственно.FIG. 17A and 17B are illustrative diagrams of scenarios for storing health and load information on the intermediary for the health and load tables shown in FIG. 13A and for the combined health and load caches shown in FIG. 13B, respectively.

Фиг.18 - иллюстративная схема процедуры распределения для целевого хоста, в которой используется информация работоспособности и нагрузки.FIG. 18 is an illustrative diagram of a distribution procedure for a target host that uses health and load information.

Фиг.19 - иллюстративная схема подхода к выравниванию сетевой нагрузки с использованием информации сеанса.19 is an illustrative diagram of an approach to balancing network load using session information.

Фиг.20 - иллюстративная схема подхода к выравниванию сетевой нагрузки с использованием передачи информации сеанса посредством извещений и сообщений.FIG. 20 is an illustrative diagram of an approach to balancing network load using the transfer of session information through notifications and messages.

Фиг.21 - иллюстративная логическая блок-схема способа выравнивания сетевой нагрузки с использованием передачи информации сеанса посредством извещений и сообщений.FIG. 21 is an illustrative flowchart of a method for balancing network load using the transmission of session information through notifications and messages.

Фиг.22 - иллюстративная схема подхода к управлению информацией сеанса на множественных модулях выравнивания нагрузки.22 is an illustrative diagram of an approach to managing session information on multiple load balancing modules.

Фиг.23А - иллюстративная таблица сеансов, указанная на фиг.20.Figa is an illustrative table of sessions indicated in Fig.20.

Фиг.23В - иллюстративная таблица (ТРДА) распределенного диспетчера атомов (РДА), указанная на фиг.22.Figv is an illustrative table (TRDA) of a distributed atom manager (RDA) indicated in Fig.22.

Фиг.24 - иллюстративная логическая блок-схема способа управления информацией сеанса на множественных модулях выравнивания нагрузки.24 is an illustrative flowchart of a method for managing session information on multiple load balancing modules.

Фиг.25 - иллюстративная схема инфраструктуры выравнивания сетевой нагрузки с функцией маршрутизации запросов.25 is an illustrative diagram of a network load balancing infrastructure with a query routing function.

Фиг.26 - иллюстративная логическая блок-схема способа маршрутизации входящих пакетов в соответствии с (i) информацией сеанса и (ii) информацией работоспособности и нагрузки.FIG. 26 is an illustrative flow chart of a method for routing incoming packets in accordance with (i) session information and (ii) health and load information.

Фиг.27 - иллюстративная схема последовательности действий по маршрутизации трафика в отсутствие сбоев.Fig. 27 is an illustrative flow diagram of routing traffic in the absence of failures.

Фиг.28 - иллюстративная схема последовательности действий по маршрутизации трафика при наличии сбоя(ев).Fig. 28 is an illustrative flowchart of traffic routing in the event of a failure (s).

Фиг.29 - иллюстративная схема дополнительных процедур преодоления сбоя для повышения надежности инфраструктуры выравнивания сетевой нагрузки.29 is an illustrative diagram of additional failover procedures to improve the reliability of the network load balancing infrastructure.

Фиг.30 - иллюстративная схема эксплуатационной реализации взаимодействия маршрутизации трафика с информацией работоспособности и нагрузки.Fig. 30 is an illustrative diagram of an operational implementation of a traffic routing interaction with health and load information.

Фиг.31 - иллюстративные схемы механизмов обеспечения высокой надежности инфраструктуры выравнивания сетевой нагрузки.Fig is an illustrative diagram of mechanisms for ensuring high reliability of the network load balancing infrastructure.

Фиг.32 - иллюстративная схема подхода к выравниванию сетевой нагрузки с переносом соединений.32 is an illustrative diagram of an approach to balancing network load with connection transfer.

Фиг.33 - иллюстративная логическая блок-схема способа переноса соединения с первого устройства на второе устройство.Fig. 33 is an illustrative logical block diagram of a method for transferring a connection from a first device to a second device.

Фиг.34 - иллюстративная схема подхода к переносу соединений с точки зрения устройства-отправителя.Fig. 34 is an illustrative diagram of an approach for transferring connections from the point of view of the sending device.

Фиг.35 - иллюстративная схема подхода к переносу соединений с точки зрения устройства-адресата.Fig. 35 is an illustrative diagram of a connection transfer approach from the perspective of the destination device.

Фиг.36 - иллюстративная схема подхода к процедуре выгрузки для переноса соединения.Fig. 36 is an illustrative diagram of an approach to an upload procedure for transferring a connection.

Фиг.37 - иллюстративная схема подхода к процедуре загрузки для переноса соединения.Fig. 37 is an illustrative diagram of an approach to a download procedure for transferring a connection.

Фиг.38 - иллюстративная схема подхода к туннелированию пакетов между блоком пересылки и хостом.Fig. 38 is an illustrative diagram of an approach to tunneling packets between a forwarder and a host.

Фиг.39 - иллюстративная логическая блок-схема способа туннелирования пакетов между первым устройством и вторым устройством.Fig. 39 is an illustrative flowchart of a method for tunneling packets between a first device and a second device.

Фиг.40 - иллюстративная схема операционной среды компьютера (или устройства общего назначения), которая способна (полностью или частично) реализовать, по меньшей мере, один аспект описанного здесь выравнивания сетевой нагрузки.FIG. 40 is an illustrative diagram of a computer operating environment (or a general purpose device) that is capable of (in whole or in part) implementing at least one aspect of network load balancing described herein.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

Схемы выравнивания сетевой нагрузкиNetwork load balancing schemes

В этом разделе описаны иллюстративные схемы выравнивания сетевой нагрузки, и он используется для обеспечения принципов, сред, контекстов и т.д. для описаний в следующих разделах. В этом разделе ссылки, в основном, идут на фиг.1-3.This section describes illustrative network load balancing schemes and is used to provide principles, environments, contexts, etc. for descriptions in the following sections. In this section, references are mainly made in FIGS. 1-3.

На фиг.1 изображена иллюстративная схема 100 выравнивания сетевой нагрузки, где показаны инфраструктура 106 выравнивания нагрузки и множественные хосты 108. Иллюстративная схема 100 выравнивания сетевой нагрузки включает в себя множественные клиенты 102(1), 102(2)…102(m) и множественные хосты 108(1), 108(2)…108(n), а также сеть 104 и инфраструктуру 106 выравнивания нагрузки.1 illustrates an exemplary network load balancing scheme 100 showing load balancing infrastructure 106 and multiple hosts 108. An exemplary network load balancing scheme 100 includes multiple clients 102 (1), 102 (2) ... 102 (m) and multiple hosts 108 (1), 108 (2) ... 108 (n), as well as network 104 and load balancing infrastructure 106.

Каждый клиент 102 может представлять собой устройство, способное к сетевой связи, например компьютер, мобильную станцию, развлекательное устройство, другую сеть и т.д. Клиенты 102 могут также относиться к лицу и/или объекту, эксплуатирующему клиентское устройство. Иными словами, клиенты 102 могут представлять собой логические клиенты, которые являются пользователями, и/или машины. Сеть 104 может быть сформирована из одной или более сетей, например Интернета, интранета, проводной или беспроводной телефонной сети и т.д. Дополнительные примеры устройств для клиентов 102 и сетевые типы/топологии для сети 104 описаны ниже со ссылкой на фиг.40 в разделе «Иллюстративная операционная среда для компьютера или другого устройства».Each client 102 may be a device capable of network communication, such as a computer, mobile station, entertainment device, another network, etc. Clients 102 may also refer to a person and / or entity operating a client device. In other words, clients 102 may be logical clients that are users and / or machines. Network 104 may be formed from one or more networks, such as the Internet, intranet, wired or wireless telephone network, etc. Additional examples of devices for clients 102 and network types / topologies for network 104 are described below with reference to FIG. 40 in the section “Illustrative operating environment for a computer or other device”.

Отдельные клиенты 102 способны связываться с одним или несколькими хостами 108 и наоборот по сети 104 через инфраструктуру 106 выравнивания нагрузки. Хосты 108 содержат одно или несколько приложений для взаимодействия/связи с клиентами 102, для использования клиентами 102 и т.д. Каждый хост 108 может соответствовать серверу и/или устройству, множественным серверам и/или множественным устройствам, части сервера и/или части устройства, некоторым их комбинациям и т.д. Частичные реализации хостов 108 описаны ниже применительно к различным случаям выравнивания сетевой нагрузки. (Однако поддержка прикладной части для хостов 108 для ясности существа изобретения, по существу, не показана). Также ниже со ссылкой на фиг.40 в разделе, озаглавленном «Операционная среда для компьютера или другого устройства», описаны примеры устройств для хостов 108.Individual clients 102 are able to communicate with one or more hosts 108 and vice versa over a network 104 through load balancing infrastructure 106. Hosts 108 comprise one or more applications for interacting / communicating with clients 102, for use by clients 102, etc. Each host 108 may correspond to a server and / or device, multiple servers and / or multiple devices, server parts and / or device parts, some combinations thereof, etc. Partial implementations of hosts 108 are described below in relation to various cases of network load balancing. (However, application support for hosts 108 is, for clarity, not shown.) Also below, with reference to FIG. 40, in the section entitled “Operating environment for a computer or other device”, examples of devices for hosts 108 are described.

Инфраструктура 106 выравнивания нагрузки достижима или обнаружима через сеть 104 по одному или нескольким виртуальным адресам Интернет-протокола (IP). Передачи с клиентов 102 (или других узлов), направленные по виртуальному IP-адресу инфраструктуры 106 выравнивания нагрузки, принимаются здесь и пересылаются на хост 108. Инфраструктура 106 выравнивания нагрузки состоит из аппаратных и/или программных компонентов (не показанных явно на фиг.1).The load balancing infrastructure 106 is reachable or discoverable through the network 104 at one or more virtual Internet Protocol (IP) addresses. Transmissions from clients 102 (or other nodes) directed to the virtual IP address of load balancing infrastructure 106 are received here and forwarded to host 108. Load balancing infrastructure 106 consists of hardware and / or software components (not shown explicitly in FIG. 1) .

Хотя инфраструктура 106 показана как единый эллипс, инфраструктура для осуществления выравнивания нагрузки может также быть распределена на другие аспекты иллюстративной схемы 100 распределения сетевой нагрузки. Например, программный(е) компонент(ы) инфраструктуры 106 выравнивания нагрузки может/могут размещаться на одном или нескольких хостах 108, согласно описанному ниже. Примеры архитектур инфраструктуры 106 выравнивания нагрузки описаны ниже со ссылкой на фиг.40 в разделе, озаглавленном «Иллюстративная операционная среда для компьютера или другого устройства».Although the infrastructure 106 is shown as a single ellipse, the infrastructure for performing load balancing can also be distributed to other aspects of the illustrative network load distribution circuit 100. For example, the software component (s) of the load balancing infrastructure 106 may / may reside on one or more hosts 108, as described below. Examples of architectures of load balancing infrastructure 106 are described below with reference to FIG. 40 in the section entitled “Illustrative operating environment for a computer or other device”.

Согласно указанному позицией (1), один или несколько хостов 108 могут предоставлять информацию статуса хоста от хостов 108 инфраструктуре 106 выравнивания нагрузки. Эта информация статуса хоста может зависеть от приложения. Примеры такой информации статуса хоста описаны ниже и включают в себя информацию работоспособности и/или нагрузки, информацию сеанса и т.д. для хостов 108. Конкретная реализация, включающая в себя предоставление информации работоспособности и/или нагрузки от хостов 108 инфраструктуре 106 выравнивания нагрузки, описана ниже в разделе, озаглавленном «Иллюстративное управление работоспособностью и нагрузкой».According to (1), one or more hosts 108 may provide host status information from hosts 108 to load balancing infrastructure 106. This host status information may vary by application. Examples of such host status information are described below and include health and / or load information, session information, etc. for hosts 108. A specific implementation, including the provision of health and / or load information from hosts 108 to load balancing infrastructure 106, is described below in the section entitled “Illustrative Health and Load Management”.

Позицией (2) обозначен запрос, передаваемый от клиента 102(1) по сети 104 на инфраструктуру 106 выравнивания нагрузки по ее виртуальному IP-адресу. Содержимое, формат и т.д. запроса от клиента 102 может зависеть от приложения, которому адресован запрос, и термин «запрос» может неявно включать в себя ответ или ответы хоста(ов) 108, в зависимости от контекста. Виды клиентских запросов включают в себя, но не исключительно:Position (2) denotes a request transmitted from the client 102 (1) through the network 104 to the load balancing infrastructure 106 by its virtual IP address. Content, format, etc. the request from client 102 may depend on the application to which the request is addressed, and the term “request” may implicitly include the response or responses of the host (s) 108, depending on the context. Types of client requests include, but are not limited to:

1. Запросы GET протокола передачи гипертекстовых файлов (HTTP) от клиента с использованием программы обозревателя. В зависимости от приложения (в частности, от унифицированного указателя (URL) ресурса запросов) может быть лучше обслуживать запросы разными группами хостов, и существование клиентского состояния «сеанса» на хостах может препятствовать маршрутизации этих запросов от конкретных клиентов на конкретные хосты. Запросы можно посылать посредством соединения, работающего по протоколу защищенных сокетов (SSL) (или другого зашифрованного соединения).1. GET requests for the transmission of hypertext files (HTTP) from the client using a browser program. Depending on the application (in particular, on the unified index (URL) of the request resource), it may be better to serve requests by different groups of hosts, and the existence of a client “session” state on hosts may prevent routing of these requests from specific clients to specific hosts. Requests can be sent via a secure socket protocol (SSL) connection (or another encrypted connection).

2. Соединения виртуальной частной сети (ВЧС) (например, хосты являются группой серверов ВЧС). В этом случае «запрос» можно рассматривать как «соединение» по протоколу туннелирования второго уровня (L2TP) или протоколу двухточечного туннелирования (PPTP) (последнее является комбинацией соединения по протоколу (TCP) управления передачей и соответствующих данных общей маршрутизации с инкапсуляцией (GRE).2. Virtual Private Network (VPN) connections (for example, hosts are a group of VPN servers). In this case, the “request” can be considered as a “connection” using the Layer 2 Tunneling Protocol (L2TP) or Point-to-Point Tunneling Protocol (PPTP) (the latter is a combination of the transmission control protocol (TCP) connection and the corresponding encapsulated general routing data (GRE).

3. Соединения терминального сервера (например, хосты являются группой терминальных серверов).3. Terminal server connections (for example, hosts are a group of terminal servers).

4. Собственные запросы в виде индивидуальных TCP-соединений (по одному на запрос), использующие собственный протокол, зависящий от приложения.4. Own requests in the form of individual TCP connections (one per request) using their own application-specific protocol.

5. Запросы по простому протоколу доступа к объектам (SOAP).5. Requests for the Simple Object Access Protocol (SOAP).

6. Запросы на связь в режиме реального времени, предусматривающие управляющую информацию по TCP-соединению и потоковую передачу мультимедиа, чувствительную к задержке, по протоколу (RTF) передачи в реальном времени.6. Real-time communication requests that provide control information over a TCP connection and delay-sensitive multimedia streaming via real-time protocol (RTF).

Таким образом, запросы могут принимать разнообразные формы в зависимости от приложений. В некоторых описанных вариантах осуществления, инфраструктура 106 выравнивания нагрузки может принимать решения на пересылку в зависимости от приложений.Thus, requests can take many forms depending on the application. In some described embodiments, the load balancing infrastructure 106 may make forwarding decisions depending on the application.

Позиция (3) обозначает, что инфраструктура 106 выравнивания нагрузки пересылает запрос от 102(1) на хост 108(2) (в данном примере). Инфраструктура 106 выравнивания нагрузки может учитывать один или несколько факторов при выборе хоста 108 для пересылки запроса в зависимости от того, какая/какие из описанных здесь реализаций используются. Например, инфраструктура 106 выравнивания нагрузки может учитывать: информацию работоспособности и нагрузки приложения для каждого хоста 108, информацию сеанса, относящуюся к клиенту 102(1), хранящуюся на хосте 108, и т.д.Position (3) indicates that the load balancing infrastructure 106 forwards the request from 102 (1) to the host 108 (2) (in this example). The load balancing infrastructure 106 may consider one or more factors when choosing a host 108 to forward the request depending on which / which of the implementations described here are used. For example, load balancing infrastructure 106 may consider: application health and application information for each host 108, session information related to client 102 (1) stored on host 108, etc.

На фиг.2 изображена иллюстративная схема 200 выравнивания сетевой нагрузки, где показаны множественные модули 106 выравнивания нагрузки и множественные хосты 108. В частности, в иллюстративной схеме 200 выравнивания сетевой нагрузки инфраструктура 106 выравнивания нагрузки показана в виде множественных модулей 106(1), 106(2), …, 106(u) выравнивания нагрузки. Кроме того, показаны два маршрутизатора и/или коммутатора 202(1) и 202(2).2 illustrates an exemplary network load balancing circuit 200 showing multiple load balancing modules 106 and multiple hosts 108. In particular, in an illustrative network load balancing circuit 200, load balancing infrastructure 106 is shown as multiple modules 106 (1), 106 ( 2), ..., 106 (u) load balancing. In addition, two routers and / or switches 202 (1) and 202 (2) are shown.

Маршрутизаторы/коммутаторы 202, если присутствуют, можно рассматривать в составе инфраструктуры 106 выравнивания нагрузки (фиг.1) или отдельно от нее. Маршрутизаторы/коммутаторы 202 отвечают за направление всех запросов и индивидуальных пакетов, поступающих из сети 104, по совместно используемому(ым) виртуальному(ым) IP-адресу(ам) (VIP) модулей 106 выравнивания нагрузки. В случае сбоя первого маршрутизатора/коммутатора 202, его функции берет на себя второй маршрутизатор/коммутатор 202. Хотя показаны два маршрутизатора/коммутатора 202, альтернативно можно использовать один или более двух маршрутизаторов/коммутаторов 202.Routers / switches 202, if present, can be considered as part of the infrastructure load balancing 106 (figure 1) or separately from it. Routers / switches 202 are responsible for forwarding all requests and individual packets coming from network 104 to the shared virtual IP address (s) (VIP) of load balancing modules 106. In the event of a failure of the first router / switch 202, the second router / switch 202 assumes its functions. Although two routers / switches 202 are shown, alternatively one or more of two routers / switches 202 can be used.

Маршрутизаторы/коммутаторы 202 могут не знать об инфраструктуре выравнивания нагрузки или могут знать о выравнивании нагрузки. Если маршрутизаторы/коммутаторы 202 не знают о выравнивании нагрузки, то можно использовать одну из двух опций. Первая из них состоит в том, что одному модулю 106 выравнивания нагрузки «присваивается» совместно используемый VIP-адрес, и весь сетевой трафик переправляется на него. Тогда этот один модуль 106 выравнивания нагрузки равномерно перераспределяет трафик по другим модулям 106 выравнивания нагрузки. Однако в связи с первой опцией возникают проблемы и вопросы преодоления сбоя (которые можно смягчить при наличии множественных совместно используемых VIP-адресов и разделения между множественными модулями 106 выравнивания нагрузки). Вторая опция заключается в том, что маршрутизаторы/коммутаторы 202 «обманываются» в направлении сетевого трафика на все модули 106 выравнивания нагрузки, каждый из которых самостоятельно решает, какой трафик принять для выравнивания нагрузки. Однако эта вторая опция приводит к недостаточному дублированию усилий и к проблемам производительности/совместимости коммутаторов.Routers / switches 202 may not be aware of load balancing infrastructure or may be aware of load balancing. If the routers / switches 202 are not aware of load balancing, then one of two options can be used. The first of these is that a shared VIP address is “assigned” to one load balancing module 106, and all network traffic is forwarded to it. Then this one load balancing module 106 evenly redistributes the traffic to the other load balancing modules 106. However, problems and bridging issues arise with the first option (which can be mitigated by having multiple shared VIP addresses and sharing between multiple load balancing modules 106). The second option is that routers / switches 202 are “tricked” towards network traffic to all load balancing modules 106, each of which independently decides which traffic to accept for load balancing. However, this second option leads to insufficient duplication of effort and to switch performance / compatibility issues.

Если же маршрутизаторы/коммутаторы 202 знают о выравнивании нагрузки, то маршрутизаторы/коммутаторы 202 можно заставить распределять входящий сетевой трафик между множественными модулями 106 выравнивания нагрузки (например, в циклическом режиме). Следует понимать, что такие маршрутизаторы/коммутаторы 202, знающие о выравнивании нагрузки, способны выполнять функции выравнивания нагрузки на рудиментарном уровне (например, аппаратно). Например, маршрутизаторы/коммутаторы 202, знающие о выравнивании нагрузки, могут осуществлять простое выявление сродства к сеансу на основе IP-адресов, чтобы все пакеты с конкретного IP-адреса источника направлялись на один и тот же модуль 106 выравнивания нагрузки.If routers / switches 202 are aware of load balancing, then routers / switches 202 can be made to distribute incoming network traffic between multiple load balancing modules 106 (e.g., in cyclic mode). It should be understood that such routers / switches 202 that are aware of load balancing are capable of performing load balancing functions at a rudimentary level (e.g., hardware). For example, routers / switches 202 that are aware of load balancing can easily identify session affinity based on IP addresses so that all packets from a particular source IP address are routed to the same load balancer 106.

Каждый отдельно показанный модуль 106 выравнивания нагрузки из модулей 106 выравнивания нагрузки может представлять одно физическое устройство, множественные физические устройства или часть единого физического устройства. Например, модуль 106(1) выравнивания нагрузки может соответствовать одному серверу, двум серверам или более. Альтернативно, модуль 106(1) выравнивания нагрузки и модуль 106(2) выравнивания нагрузки могут совместно соответствовать одному серверу. Иллюстративный модуль 106 выравнивания нагрузки описан ниже с точки зрения его функций со ссылкой на фиг.3.Each separately shown load balancing module 106 from load balancing modules 106 may represent one physical device, multiple physical devices, or part of a single physical device. For example, load balancing module 106 (1) may correspond to one server, two or more servers. Alternatively, the load balancing module 106 (1) and the load balancing module 106 (2) may jointly correspond to one server. An exemplary load balancing module 106 is described below in terms of its functions with reference to FIG.

На фиг.2 показаны два иллюстративных пути [1] и [2] запроса. Что касается пути [1] запроса, клиент 102(2) передает запрос по сети 104, и этот запрос поступает на маршрутизатор/коммутатор 202(1). Маршрутизатор/коммутатор 202(1) направляет пакет(ы) запроса, поступающие от клиента 102(2), на модуль 106(1) выравнивания нагрузки. Затем модуль 106(1) выравнивания нагрузки пересылает пакет(ы) запроса на хост 108(1) в соответствии с некоторыми функциями выравнивания нагрузки (например, политикой). Что касается пути [2] запроса, клиент 102(m) передает запрос по сети 104, и этот запрос поступает на маршрутизатор/коммутатор 202(2). Маршрутизатор/коммутатор 202(2) направляет пакет(ы) запроса, поступающие от клиента 102(m), на модуль 106(u) выравнивания нагрузки. Затем модуль 106(u) выравнивания нагрузки пересылает пакет(ы) запроса на хост 108(n) в соответствии с некоторыми функциями выравнивания нагрузки. Иллюстративные функции выравнивания нагрузки описаны ниже со ссылкой на фиг.3.Figure 2 shows two illustrative query paths [1] and [2]. As for the request path [1], the client 102 (2) sends the request over the network 104, and this request arrives at the router / switch 202 (1). Router / switch 202 (1) routes the request packet (s) from client 102 (2) to load balancing module 106 (1). Then, load balancing module 106 (1) forwards the request packet (s) to host 108 (1) in accordance with some load balancing functions (e.g., a policy). As for the request path [2], the client 102 (m) transmits the request over the network 104, and this request arrives at the router / switch 202 (2). Router / switch 202 (2) sends the request packet (s) received from client 102 (m) to load balancing module 106 (u). Then, load balancing module 106 (u) forwards the request packet (s) to host 108 (n) in accordance with some load balancing functions. Illustrative load balancing functions are described below with reference to FIG. 3.

На фиг.3 показаны иллюстративный модуль 106 выравнивания нагрузки с разделенными функциями и иллюстративный хост 108. Модуль 106 выравнивания нагрузки содержит семь (7) функциональных блоков 302-314. Эти функциональные блоки модуля 106 выравнивания нагрузки могут быть реализованы, по меньшей мере, частично, программными средствами. Хост 108 включает в себя одно или несколько приложений 316. В описываемом варианте осуществления модуль 106 выравнивания нагрузки содержит блок 302 пересылки, классификатор 304, маршрутизатор 306 запросов, блок 308 отслеживания сеансов, блок 310 переноса соединений, блок 312 туннелирования и обработчик 314 работоспособности и нагрузки.FIG. 3 shows an exemplary distributed load balancing module 106 and an illustrative host 108. The load balancing module 106 comprises seven (7) function blocks 302-314. These functional blocks of the load balancing module 106 may be implemented, at least in part, by software. The host 108 includes one or more applications 316. In the described embodiment, the load balancing module 106 includes a forwarder 302, a classifier 304, a request router 306, a session tracking unit 308, a connection transfer unit 310, a tunneling unit 312, and a health and load handler 314 .

Обработчик 314 работоспособности и нагрузки размещен частично на хостах 108 и частично на устройствах модулей 106 выравнивания нагрузки. Обработчик 314 работоспособности и нагрузки отслеживает работоспособность и/или нагрузку (или, более обобщенно, статус) хостов 108, чтобы его информацию работоспособности и/или нагрузки можно было использовать для функций выравнивания нагрузки (например, при принятии решений на выравнивание нагрузки). Иллюстративные реализации обработчика 314 работоспособности и нагрузки описаны ниже, в частности, в разделе, озаглавленном «Иллюстративная обработка работоспособности и нагрузки».A health and load processor 314 is partially located on the hosts 108 and partially on the devices of the load balancing modules 106. The health and load processor 314 monitors the health and / or load (or, more generally, the status) of the hosts 108 so that its health and / or load information can be used for load balancing functions (for example, when making decisions about load balancing). Illustrative implementations of the health and load processor 314 are described below, in particular, in the section entitled “Illustrative Health and Load Processing”.

Блок 308 отслеживания сеансов также может размещаться частично на хостах 108 и частично на устройствах модулей 106 выравнивания нагрузки. Блок 308 отслеживания сеансов отслеживает сеансы, установленные клиентами 102, чтобы облегчить функциям выравнивания нагрузки восстановление/продолжение ранее установленных сеансов. Например, некоторые приложения поддерживают на хостах зависящие от приложения данные клиентского сеанса (которые также являются своего рода информацией статуса). Эти приложения обычно ожидают, что клиенты используют один и тот же хост на протяжении любого данного сеанса. Иллюстративные типы сеансов включают в себя: (i) TCP-соединение (которое, строго говоря, является сеансом); (ii) SSL-сеанс; (iii) защищенный IP-сеанс (IPsec); (iv) сеанс на основе cookie HTTP; и т.д.Session tracking unit 308 may also be located partially on hosts 108 and partially on devices of load balancing modules 106. Session tracking unit 308 monitors sessions established by clients 102 to facilitate load balancing functions to restore / continue previously established sessions. For example, some applications support client-specific client session data (which is also some kind of status information) on hosts. These applications typically expect clients to use the same host for any given session. Illustrative types of sessions include: (i) a TCP connection (which, strictly speaking, is a session); (ii) SSL session; (iii) secure IP session (IPsec); (iv) an HTTP cookie session; etc.

Хотя блок 308 отслеживания сеансов показан в виде отдельного блока в модуле 106 выравнивания нагрузки, функция отслеживания сеансов блока 308 отслеживания сеансов, в действительности, может быть реализована на глобальном уровне. Иными словами, сродство к сеансу поддерживается по множественным модулям 106 выравнивания нагрузки. Блок 308 отслеживания сеансов включает в себя централизованную базу данных и/или распределенную базу данных информации сеансов для сохранения сродства к сеансу. Иллюстративные реализации блока 308 отслеживания сеансов, с упором на подход распределенной базы данных, описаны ниже, в частности в разделе, озаглавленном «Отслеживание сеансов».Although the session tracking unit 308 is shown as a separate unit in the load balancing module 106, the session tracking function of the session tracking unit 308 can in fact be implemented globally. In other words, session affinity is supported across multiple load balancing modules 106. Session tracking unit 308 includes a centralized database and / or a distributed database of session information to maintain affinity for the session. Illustrative implementations of the session tracking unit 308, with emphasis on a distributed database approach, are described below, particularly in the section entitled “Session Tracking”.

Классификатор 304 использует данные, собираемые и поддерживаемые обработчиком 314 работоспособности и нагрузки и/или блоком 308 отслеживания сеансов, возможно, совместно с другими факторами, для классификации входящих запросов. Другими словами, классификатор 304 выделяет хост 108 назначения для каждого входящего запроса от клиента 102. Блок 302 пересылки пересылает запросы клиента (и/или его пакеты) в соответствии с хостом 108 назначения, выбранным классификатором 304. Блок 302 пересылки и классификатор 304 описаны ниже, в частности в разделах, озаглавленных «Иллюстративный подход к гибкому выравниванию сетевой нагрузки» и «Иллюстративные классификация, пересылка и маршрутизация запросов».Classifier 304 uses the data collected and maintained by the health and load processor 314 and / or session tracking unit 308, possibly in conjunction with other factors, to classify incoming requests. In other words, the classifier 304 allocates the destination host 108 for each incoming request from the client 102. The forwarding unit 302 forwards the client's requests (and / or its packets) in accordance with the destination host 108 selected by the classifier 304. The forwarding unit 302 and the classifier 304 are described below. in particular, in the sections entitled “Illustrative approach to flexible load balancing” and “Illustrative classification, forwarding and routing of requests”.

Маршрутизатор 306 запросов, в отличие от пакетно-ориентированных реализаций блока 302 пересылки и классификатора 304, может действовать как посредник для приложения, действующего на хосте 108. Например, маршрутизатор 306 запросов может заканчивать TCP-соединения, анализировать (возможно, частично) каждый логический запрос от клиента 102 и перенаправлять каждый логический запрос на хост 108 назначения. Следовательно, каждый логический запрос от клиента 102 можно направлять на тот или иной хост 108 в зависимости от решений, принятых маршрутизатором 306 запросов. Кроме того, маршрутизатор 306 запросов может осуществлять предварительную обработку на соединении (например, дешифровку SSL), может выбирать поглощение определенных запросов (например, потому что маршрутизатор 306 запросов поддерживает кэш ответов), может по своему усмотрению изменять запросы прежде, чем пересылать их на хосты 108, и т.д. Иллюстративные реализации маршрутизатора 306 запросов также описаны ниже, в частности, в разделах, озаглавленных «Иллюстративный подход к гибкому выравниванию сетевой нагрузки» и «Иллюстративные классификация, пересылка и маршрутизация запросов».Request router 306, unlike packet-oriented implementations of forwarder 302 and classifier 304, can act as an intermediary for an application running on host 108. For example, request router 306 can terminate TCP connections, analyze (possibly partially) each logical request from client 102 and redirect each logical request to destination host 108. Therefore, each logical request from the client 102 can be directed to one or another host 108 depending on the decisions made by the router 306 requests. In addition, the request router 306 can pre-process on the connection (for example, SSL decryption), it can select the absorption of certain requests (for example, because the request router 306 supports the response cache), it can change the requests at its discretion before forwarding them to hosts 108, etc. Exemplary implementations of the request router 306 are also described below, in particular in the sections entitled “Illustrative approach to flexible load balancing” and “Illustrative classification, forwarding and routing of requests”.

Блок 310 переноса соединений обеспечивает сначала окончание соединения на модуле 106 выравнивания нагрузки, а затем его перенос, чтобы соединение впоследствии заканчивалось на хосте 108. Этот перенос соединений может облегчать выравнивание нагрузки на уровне приложений. Блок 310 переноса соединений способен переносить соединение от модуля 106 выравнивания нагрузки на хост 108 таким образом, чтобы первоначальное окончание на модуле 106 выравнивания нагрузки было прозрачно для запрашивающего клиента 102 и приложениям 316 вновь оканчивающего хоста 108. Блок 312 туннелирования может использовать схему инкапсуляции для туннелирования пакетов, которая не вносит избыточной нагрузки в каждый туннелируемый пакет.The connection transfer unit 310 first terminates the connection on the load balancing module 106 and then transfers it so that the connection subsequently ends on the host 108. This transfer of connections can facilitate application-level load balancing. The connection transfer unit 310 is capable of transferring the connection from the load balancer 106 to the host 108 so that the initial termination on the load balancer 106 is transparent to the requesting client 102 and applications 316 of the newly terminating host 108. The tunneling unit 312 may use an encapsulation scheme to tunnel packets , which does not introduce excessive load in each tunneled packet.

Функции блока 312 туннелирования можно также использовать в случаях, которые не предусматривают перенос соединения. Кроме того, блок 310 переноса соединения и/или блок 312 туннелирования можно дополнительно использовать в реализациях без выравнивания нагрузки. Иллюстративные реализации блока 310 переноса соединения, а также блока 312 туннелирования описаны ниже, в частности, в разделе, озаглавленном «Иллюстративный перенос соединения с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений».The functions of tunneling unit 312 can also be used in cases that do not involve connection transfer. In addition, connection transfer unit 310 and / or tunneling unit 312 can be further used in implementations without load balancing. Exemplary implementations of the connection transfer unit 310 as well as the tunneling unit 312 are described below, in particular, in the section entitled “Illustrative connection transfer with optional tunneling and / or load balancing at the application level”.

Любая данная реализация модуля 106 выравнивания нагрузки может включать в себя одну или несколько из проиллюстрированных функций. Хотя каждая из функций блоков 302-314 показана по отдельности, она в действительности может быть взаимосвязана с, перекрываться с другими функциями и/или входить в их состав. Например, классификатор 304 может использовать информацию работоспособности и/или нагрузки обработчика 314 работоспособности и нагрузки. Кроме того, блок 310 переноса соединения и блока 312 туннелирования работают совместно с блоком 302 пересылки и классификатором 304. Ниже описаны определенные другие иллюстративные перекрытия и взаимодействия.Any given implementation of load balancing module 106 may include one or more of the illustrated functions. Although each of the functions of blocks 302-314 is shown separately, it can actually be interconnected with, overlap with, and / or be part of other functions. For example, classifier 304 may use health and / or load information of health and load handler 314. In addition, the connection transfer unit 310 and the tunneling unit 312 work in conjunction with the forwarding unit 302 and the classifier 304. Certain other illustrative overlaps and interactions are described below.

В описанной реализации, на хосте 108 работает одно или несколько приложений 316 и предоставляется доступ к ним. В целом, приложения 316 включают в себя программы доставки файлов, программы управления/сервера веб-сайтов, программы удаленного доступа, программы электронной почты, программы доступа к базам данных и т.п. В частности, приложения 316 могут включать в себя, но не исключительно, Internet Information Server® (IIS) от корпорации Microsoft®, терминальные серверы, например Terminal Server™ фирмы Microsoft® и продукты брандмауэра и посредника, например Internet Security and Acceleration Server™ (ISA). Хотя конкретные примеры приложений 316 в предыдущем предложении относятся к продуктам Microsoft, описанное здесь выравнивание сетевой нагрузки не ограничивается какими-либо конкретными поставщиком(ами), приложением(ями) или операционной(ыми) системой(ами).In the described implementation, one or more applications 316 are running on host 108 and access is provided to them. In general, applications 316 include file delivery programs, management / website server programs, remote access programs, email programs, database access programs, and the like. In particular, applications 316 may include, but are not limited to, Microsoft® Internet Information Server® (IIS), terminal servers, such as Microsoft® Terminal Server ™, and firewall and reseller products, such as Internet Security and Acceleration Server ™ ( ISA). Although the specific application examples 316 in the previous sentence relate to Microsoft products, the network load balancing described here is not limited to any particular vendor (s), application (s) or operating system (s).

Подход к гибкому выравниванию сетевой нагрузкиFlexible Network Load Balancing Approach

В этом разделе показано, как реализации выравнивания сетевой нагрузки, описанные в этом и других разделах, обеспечивают гибкий подход к выравниванию сетевой нагрузки. В этом разделе ссылки идут, в основном, на фиг.4-9В.This section shows how the network load balancing implementations described in this and other sections provide a flexible approach to network load balancing. In this section, the links go mainly to FIGS. 4-9B.

Как отмечено выше, функции выравнивания сетевой нагрузки можно расширить, заменив первый выравниватель сетевой нагрузки вторым, большим и более мощным выравнивателем сетевой нагрузки. Аппаратные возможности второго выравнивателя сетевой нагрузки повторяет все аппаратные возможности первого выравнивателя сетевой нагрузки за исключением обеспечения более высокой емкости. Это негибкий подход, который может быть весьма неэффективным, особенно, когда единственным признаком выравнивания сетевой нагрузки является ограничение производительности и обусловливание обновления выравнивателя сетевой нагрузки.As noted above, the network load balancing functions can be expanded by replacing the first network load balancer with a second, larger and more powerful network load balancer. The hardware capabilities of the second network load balancer repeats all the hardware capabilities of the first network load balancer, with the exception of providing higher capacity. This is an inflexible approach that can be very inefficient, especially when the only sign of network load balancing is performance limitation and conditional update of the network load balancer.

На фиг.4 показана инфраструктура выравнивания сетевой нагрузки, имеющая раздельные функции классификации и пересылки. Разделенные функция классификации и функция пересылки представлены классификатором 304 и блоком 302 пересылки, соответственно. Хотя функции классификации и пересылки описаны ниже, особенно в разделе, озаглавленном «Иллюстративные классификация, пересылка и маршрутизация запросов», первичное описание представлено здесь как пример взаимодействия между функциональными блоками инфраструктуры выравнивания сетевой нагрузки и хостами 108.4 shows a network load balancing infrastructure having separate classification and forwarding functions. The divided classification function and the forwarding function are represented by the classifier 304 and the forwarding unit 302, respectively. Although the classification and forwarding functions are described below, especially in the section entitled “Illustrative classification, forwarding, and routing of requests,” the primary description is presented here as an example of the interaction between the functional units of the network load balancing infrastructure and the hosts 108.

В описанной реализации блок 302 пересылки соответствует виртуальному IP-адресу (VIP) (или адресам) и является конечной точкой сети для него (них). Блок 302 пересылки является относительно низкоуровневым компонентом, который принимает упрощенные и/или элементарные политические решения, если принимает, при маршрутизации пакетов на дальнейший или окончательный пункт назначения. Блок 302 пересылки сверяется с таблицей маршрутизации для определения этого пункта назначения. Классификатор 304 заполняет таблицу маршрутизации на основании одного или нескольких факторов (например, информации статуса хоста), которые описаны в других разделах.In the described implementation, the forwarding unit 302 corresponds to the virtual IP address (VIP) (or addresses) and is the network endpoint for it (them). Forwarder 302 is a relatively low-level component that makes simplified and / or elementary policy decisions, if any, when routing packets to a further or final destination. Forwarder 302 checks the routing table to determine this destination. Classifier 304 populates the routing table based on one or more factors (eg, host status information), which are described in other sections.

Клиенты 102 и хосты 108 также соответствуют указанным сетевым адресам. В частности, клиент 102(1) соответствует адресу С1, клиент 102(2) соответствует адресу С2, … клиент 102(m) соответствует адресу Cm. Кроме того, хост 108(1) соответствует адресу Н1, хост 108(2) соответствует адресу Н2, … хост 108(n) соответствует адресу Hn.Clients 102 and hosts 108 also match the specified network addresses. In particular, client 102 (1) corresponds to address C1, client 102 (2) corresponds to address C2, ... client 102 (m) corresponds to address Cm. In addition, host 108 (1) corresponds to H1, host 108 (2) corresponds to H2, ... host 108 (n) corresponds to Hn.

На фиг.4 показано пять путей связи (1)-(5). Путь (1) связи проходит между клиентом 102(1) и блоком 302 пересылки, а путь (5) связи проходит между блоком 302 пересылки и хостом 108(1). Пути (2)-(4) связи проходят между блоком 302 пересылки и классификатором 304. Для простоты, в этом примере соединения, связанные с путями (1)-(5) связи, будут считаться TCP-соединениями HTTP. Кроме того, выравнивание нагрузки в этом примере относится к маршрутизации входящих соединений с, по меньшей мере, загруженным хостом 108, по меньшей мере, без какого бы то ни было явного учета выравнивания нагрузки на уровне приложений.Figure 4 shows five communication paths (1) to (5). A communication path (1) passes between the client 102 (1) and the forwarding unit 302, and a communication path (5) passes between the forwarding unit 302 and the host 108 (1). Communication paths (2) to (4) pass between the forwarder 302 and the classifier 304. For simplicity, in this example, the connections associated with the communication paths (1) to (5) will be considered HTTP TCP connections. In addition, load balancing in this example refers to routing incoming connections to at least a busy host 108, at least without any explicit consideration for load balancing at the application level.

Пути (1)-(5) связи указывают, как блок 302 пересылки и классификатор 304 выравнивают нагрузку одного TCP-соединения HTTP от клиента 102(1). На пути (1) клиент 102(1) инициирует TCP-соединение, отправляя пакет SYN TCP, адресованный по VIP-адресу. Маршрутизирующая инфраструктура 104 сети маршрутизирует этот пакет на блок 302 пересылки через маршрутизатор/коммутатор 202(1), который является «ближайшим» маршрутизатором/коммутатором 202 к блоку 302 пересылки.Communication paths (1) to (5) indicate how the forwarder 302 and classifier 304 balance the load of one HTTP TCP connection from client 102 (1). On path (1), client 102 (1) initiates a TCP connection by sending a TCP SYN packet addressed to the VIP address. Network routing infrastructure 104 routes this packet to forwarding unit 302 via router / switch 202 (1), which is the “closest” router / switch 202 to forwarding unit 302.

На пути (2) блок 302 пересылки сверяется с таблицей маршрутизации, которая может быть внутренней по отношению к блоку 302 пересылки или иным образом доступной для него, чтобы найти это соединение. Это соединение может быть идентифицировано в таблице маршрутизации упорядоченной четверкой TCP/IP (т.е. IP-адрес источника, TCP-порт источника, IP-адрес назначения, TCP-порт назначения). Поскольку это первый пакет соединения, в таблице маршрутизации нет ни одного элемента. Поэтому блок 302 пересылки применяет действие «маршрут по умолчанию», согласно которому это пакет нужно переслать на классификатор 304.On path (2), the forwarding unit 302 checks the routing table, which may be internal to the forwarding unit 302 or otherwise available to him to find this connection. This connection can be identified in the routing table by an ordered four TCP / IP (i.e. source IP address, source TCP port, destination IP address, destination TCP port). Since this is the first connection packet, there are no entries in the routing table. Therefore, the forwarding unit 302 applies the “default route” action, according to which this packet must be forwarded to the classifier 304.

На пути (3) классификатор 304 сверяется со своим (например, объединенным) кэшем информации статуса хоста для хостов 108(1), 108(2), …, 108(n). Классификатор 304 приходит к выводу, что хост 108(1) имеется в наличии и является последним нагруженным хостом 108 в этот момент в этом примере. Классификатор 304 также «прокладывает» маршрут в таблице маршрутизации, к которой обращается блок 302 пересылки на предмет этого TCP-соединения. Например, классификатор 304 добавляет элемент маршрута или предписывает блоку 302 пересылки добавить элемент маршрута в таблицу маршрутизации, который отображает TCP-соединение (например, идентифицированное упорядоченной четверкой TCP) с конкретным хостом 108 назначения, который в этом примере является хостом 108(1). В частности, элемент маршрута указывает сетевой адрес Н1 хоста 108(1).On path (3), the classifier 304 checks against its (e.g., combined) host status information cache for hosts 108 (1), 108 (2), ..., 108 (n). Classifier 304 concludes that host 108 (1) is available and is the last loaded host 108 at this point in this example. Classifier 304 also “paves” a route in the routing table that is forwarded by forwarder 302 for this TCP connection. For example, classifier 304 adds a route element or causes the forwarder 302 to add a route element to a routing table that maps a TCP connection (for example, identified by an ordered four TCP) to a specific destination host 108, which in this example is host 108 (1). In particular, the route element indicates the network address H1 of the host 108 (1).

На пути (4) классификатор 304 отправляет пакет SYN TCP обратно на блок 302 пересылки. Альтернативно, классификатор 304 может пересылать этот начальный пакет SYN TCP на хост 108(1) без использования блока 302 пересылки. Другие доступные опции классификатора 304 описаны ниже.On path (4), the classifier 304 sends the TCP SYN packet back to the forwarder 302. Alternatively, classifier 304 may forward this initial TCP SYN packet to host 108 (1) without using the forwarder 302. Other available classifier 304 options are described below.

На пути (5) блок 302 пересылки может осуществлять доступ к элементу маршрута для соединения, представленного пакетам SYN, чтобы переслать пакет на хост 108(1) по адресу Н1. Блок 302 пересылки также пересылает все последующие пакеты от клиента 102(1) для этого соединения непосредственно на хост 108(1). Другими словами, блок 302 пересылки может избежать дальнейшего взаимодействия с классификатором 304 для этого соединения. Для удаления элемента маршрута по завершении соединения можно использовать один или несколько механизмов, описанных ниже.On path (5), forwarding unit 302 may access a route element for the connection represented by SYN packets to forward the packet to host 108 (1) at address H1. Forwarder 302 also forwards all subsequent packets from client 102 (1) for this connection directly to host 108 (1). In other words, forwarding unit 302 can avoid further interaction with classifier 304 for this connection. You can use one or more of the mechanisms described below to delete a route item when the connection is complete.

Что касается пути (5), во многих средах протоколов блок 302 пересылки не может просто отправлять пакеты от клиента 102(1) как есть на хост 108(1) по сетевому адресу Н1, поскольку эти пакеты адресованы по VIP-адресу, который хостирован самим блоком 302 пересылки. Вместо этого, блок 302 пересылки может использовать одну или несколько из следующих иллюстративных опций.Regarding path (5), in many protocol environments, forwarder 302 cannot simply send packets from client 102 (1) as it is to host 108 (1) at network address H1, because these packets are addressed to the VIP address that is hosted by yourself forwarding unit 302. Instead, forwarder 302 may use one or more of the following illustrative options.

1. Блок 302 пересылки осуществляет трансляцию сетевых адресов (ТСА) (i), записывая вместо IP-адреса (С1) (клиента 102(1)) и номера порта источника IP-адрес и номер порта, генерированный путем ТСА, блока 302 пересылки и (ii) записывая вместо IP-адреса (VIP) назначения IP-адрес (Н1) хоста (108(1)).1. Forwarding unit 302 performs network address translation (TCA) (i) by recording instead of the IP address (C1) (client 102 (1)) and source port number, the IP address and port number generated by the TCA, forwarding unit 302 and (ii) recording instead of the destination IP address (VIP) the host IP address (H1) (108 (1)).

2. Блок 302 пересылки осуществляет «полу-ТСА», записывая вместо IP-адреса (VIP) назначения IP-адрес (H1) хоста (108(1)), что позволяет сохранить IP-адрес (С1) и номер порта источника (клиента 102(1)).2. Forwarding unit 302 performs a “semi-TSA”, instead of recording the destination IP address (VIP), the host IP address (H1) (108 (1)), which allows you to save the IP address (C1) and the port number of the source (client 102 (1)).

3. Блок 302 пересылки «туннелирует» пакеты, полученные от клиента 102(1) с блока 302 пересылки на хост 108(1). В частности, в этом примере туннелирование можно осуществлять путем инкапсуляции каждого пакета в новом IP-пакете, который адресован хосту 108(1). Программное обеспечение, знающее о выравнивании сетевой нагрузки на хосте 108(1), реконструирует исходный пакет при получении на блоке 302 пересылки от клиента 102(1). Затем этот исходный пакет указывается на виртуальном интерфейсе на хосте 108(1) (например, VIP-адрес, соответствующий блоку 302 пересылки, привязывается к этому виртуальному интерфейсу на хосте 108(1)). Иллюстративные реализации такого туннелирования описаны ниже со ссылкой на блок 312 туннелирования, особенно для сценариев переноса соединения и, в частности, в разделе, озаглавленном «Иллюстративный перенос соединений с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений».3. Forwarding unit 302 “tunnels” packets received from client 102 (1) from forwarding unit 302 to host 108 (1). In particular, in this example, tunneling can be accomplished by encapsulating each packet in a new IP packet that is addressed to host 108 (1). Software aware of network load balancing on host 108 (1) reconstructs the original packet upon receipt of a forwarding block 302 from client 102 (1). This source packet is then indicated on the virtual interface on host 108 (1) (for example, the VIP address corresponding to the forwarding unit 302 is mapped to this virtual interface on host 108 (1)). Illustrative implementations of such tunneling are described below with reference to tunneling block 312, especially for connection transfer scenarios, and in particular in the section entitled “Illustrative transfer of connections with optional tunneling and / or load balancing at the application level”.

Хотя на фиг. 4-9В показаны две конкретные разделенные функции, а именно классификация и пересылка, следует понимать, что и другие функции, например функции маршрутизатора 306 запросов, блока 308 отслеживания сеансов, блока 310 переноса соединений и обработчика 314 работоспособности и нагрузки, также можно расширять независимо (например, независимо пропорционально увеличить), как описано ниже. Кроме того, следует заметить, что одну или более двух функций можно отделять и расширять независимо в разные моменты времени и/или одновременно. Кроме того, хотя для ясности во многих примерах в этом и других разделах используется TCP/IP, описанные здесь принципы выравнивания сетевой нагрузки применимы к другим протоколам передачи и/или связи.Although in FIG. 4-9B show two specific separated functions, namely classification and forwarding, it should be understood that other functions, for example, the functions of the request router 306, session tracking unit 308, connection transfer unit 310, and health and load handler 314 can also be expanded independently ( for example, independently proportionally increase), as described below. In addition, it should be noted that one or more of two functions can be separated and expanded independently at different points in time and / or simultaneously. In addition, although TCP / IP is used in many examples in this and other sections for clarity, the principles of network load balancing described here apply to other transmission and / or communication protocols.

Согласно примеру, показанному на фиг.4, функции выравнивания сетевой нагрузки (например, показанные на фиг.3) можно отделять друг от друга в целях расширения. Их также можно разделять и дублировать в различные конфигурации для повышения надежности. Иллюстративные конфигурации для масштабируемости и/или надежности описаны ниже со ссылкой на фиг.6-9В после описания способа со ссылкой на фиг.5.According to the example shown in FIG. 4, the network load balancing functions (for example, shown in FIG. 3) can be separated from each other for expansion purposes. They can also be split and duplicated in various configurations to increase reliability. Illustrative configurations for scalability and / or reliability are described below with reference to Fig.6-9B after the description of the method with reference to Fig.5.

На фиг.5 показана логическая блок-схема 500 иллюстративного способа расширения инфраструктуры выравнивания сетевой нагрузки в разные конфигурации. Логическая блок-схема 500 содержит три блока 502-506. Хотя действия логической блок-схемы 500 могут выполняться в других средах посредством разнообразных программных схем, фиг. 1-4 и 6-9В используются, в частности, для иллюстрации определенных аспектов и примеров способа.5 is a flowchart 500 of an illustrative method for expanding a network load balancing infrastructure into different configurations. Logical block diagram 500 comprises three blocks 502-506. Although the actions of the logic flow diagram 500 may be performed in other environments through a variety of software schemes, FIG. 1-4 and 6-9B are used, in particular, to illustrate certain aspects and examples of the method.

На блоке 502 инфраструктура выравнивания сетевой нагрузки эксплуатируется в первой конфигурации. Например, каждая конфигурация может относиться к одной или нескольким из выделения, пропорции и/или взаимоотношения различных функций выравнивания нагрузки; к ряду и/или типу(ам) различных устройств; к организации и/или схеме различных компонентов; к распределению и/или выделению ресурсов; и т.п. На блоке 504 осуществляется расширение инфраструктуры выравнивания сетевой нагрузки. Например, отдельные функции выравнивания нагрузки могут расширяться и/или согласованно сокращаться на индивидуальной и/или независимой основе. На блоке 506 расширенная инфраструктура выравнивания сетевой нагрузки эксплуатируется во второй конфигурации.At block 502, the network load balancing infrastructure is operated in a first configuration. For example, each configuration may relate to one or more of the emphasis, proportion, and / or relationship of various load balancing functions; to a number and / or type (s) of various devices; to the organization and / or layout of the various components; to the allocation and / or allocation of resources; etc. At block 504, the network load balancing infrastructure is expanded. For example, individual load balancing functions can be expanded and / or reduced in a consistent manner on an individual and / or independent basis. At block 506, the expanded network load balancing infrastructure is operated in a second configuration.

Как отмечено выше, монолитный выравниватель сетевой нагрузки можно расширить, увеличив все функции выравнивания сетевой нагрузки путем замены прежнего оборудования выравнивания нагрузки более мощным оборудованием выравнивания сетевой нагрузки. Напротив, расширение инфраструктуры выравнивания сетевой нагрузки может позволить индивидуально и/или независимо расширять (под)функции выравнивания сетевой нагрузки. Это также может позволить расширять функции выравнивания сетевой нагрузки совместно или по отдельности между разными количествами устройств. Ниже приведены примеры расширения в отношении устройств, компонентов и ресурсов.As noted above, a monolithic network load balancer can be expanded by expanding all network load balancing functions by replacing legacy load balancing equipment with more powerful network load balancing equipment. In contrast, expanding the network load balancing infrastructure can allow individually and / or independently expanding (sub) network load balancing functions. It can also allow expanding network load balancing functions together or individually between different numbers of devices. The following are examples of extensions for devices, components, and resources.

На фиг.6 показана первая конфигурация инфраструктуры выравнивания сетевой нагрузки в отношении устройств. В этой первой конфигурации инфраструктуры выравнивания сетевой нагрузки, ориентированной на устройство, показаны три устройства 602(1), 602(2) и 602(3). Однако, альтернативно, можно использовать одно, две или более трех устройств 602.6 shows a first configuration of a network load balancing infrastructure with respect to devices. In this first configuration of a device-oriented network load balancing infrastructure, three devices 602 (1), 602 (2), and 602 (3) are shown. However, alternatively, one, two or more than three devices 602 may be used.

Показано, что на устройстве 602(1) присутствуют и выполняются блок 302(1) пересылки, классификатор 304(1) и хост 108(1). На устройстве 602(2) присутствуют блок 302(2) пересылки, классификатор 304(2) и хост 108(2). Кроме того, на устройстве 602(3) присутствуют блок 302(3) пересылки, классификатор 304(3) и хост 108(3). Таким образом, в этой первой конфигурации инфраструктуры выравнивания сетевой нагрузки, ориентированной на устройство, соответствующие блок 302 пересылки, классификатор 304 и хост 108 совместно используют ресурсы каждого соответствующего устройства 602.It is shown that on the device 602 (1) are present and run block 302 (1) forwarding, classifier 304 (1) and host 108 (1). On the device 602 (2) there are a forwarder 302 (2), a classifier 304 (2), and a host 108 (2). In addition, forwarding device 602 (3) includes a forwarder 302 (3), a classifier 304 (3), and a host 108 (3). Thus, in this first configuration of the device-oriented network load balancing infrastructure, the respective forwarder 302, the classifier 304, and the host 108 share the resources of each respective device 602.

В ходе эксплуатации блоки 302 пересылки являются конечными точками для VIP-адреса(ов). Любой классификатор 304 может прокладывать маршрут для соединения с любым хостом 108 в зависимости от информации статуса хоста. Например, классификатор 304(2) может прокладывать маршрут для нового входящего соединения с хостом 108(3). В соответствии с новым элементом маршрута для этого соединения, блок 302(2) пересылки пересылает следующие пакеты на хост 108(3).During operation, forwarding units 302 are endpoints for the VIP address (s). Any classifier 304 may plot a route to connect to any host 108, depending on the host status information. For example, classifier 304 (2) may route a new incoming connection to host 108 (3). According to the new route element for this connection, the forwarding unit 302 (2) forwards the following packets to the host 108 (3).

В одной альтернативной конфигурации инфраструктуры выравнивания сетевой нагрузки в отношении устройств, в которую может быть расширена первая конфигурация, может быть добавлено четвертое устройство 602(4) (не показанное явно на фиг.6), которое содержит блок 302(4) пересылки, классификатор 304(4) и хост 108(4). Если же достаточные функции классификации уже присутствуют с классификаторами 304(1-3), но дополнительные функции могут способствовать обработке запросов на хостах 108, может быть добавлено четвертое устройство 602(4), которое содержит блок 302(4) пересылки и, в необязательном порядке, хост 108(4). Для этой расширенной конфигурации другой классификатор 304(1, 2 или 3) может прокладывать маршруты для блока 302(4) пересылки к любому из хостов 108(1, 2 или 3) и хосту 108(4), если имеется.In one alternative configuration of the network load balancing infrastructure for devices into which the first configuration can be expanded, a fourth device 602 (4) (not shown explicitly in FIG. 6) may be added, which comprises a forwarder 302 (4), a classifier 304 (4) and host 108 (4). If sufficient classification functions are already present with the classifiers 304 (1-3), but additional functions can facilitate the processing of requests on the hosts 108, a fourth device 602 (4) can be added, which contains a block 302 (4) forwarding and, optionally host 108 (4). For this advanced configuration, another classifier 304 (1, 2 or 3) may route routes for forwarding unit 302 (4) to any of hosts 108 (1, 2 or 3) and host 108 (4), if any.

Первая конфигурация инфраструктуры выравнивания сетевой нагрузки, ориентированная на устройство, изображенная фиг.6, может быть особенно пригодна для ситуаций меньшего хостинга, в которых раздельные устройства для инфраструктуры выравнивания сетевой нагрузки не являются технически и/или экономически дающими надлежащие результаты или жизнеспособными. Однако, когда нагрузка хостинга расширяется до большего количества (и/или большей потребности в том же количестве) хостов 108 или если сетевая нагрузка на хосты 108 значительна, первая конфигурация инфраструктуры выравнивания сетевой нагрузки, ориентированная на устройство, может быть преобразована для приспособления к этому расширению, представленному второй конфигурацией инфраструктуры выравнивания сетевой нагрузки, ориентированной на устройство, показанной на фиг.7.The first configuration of the network load balancing infrastructure, oriented to the device depicted in FIG. 6, may be particularly suitable for smaller hosting situations in which separate devices for the network load balancing infrastructure are not technically and / or economically adequate or viable. However, when the hosting load expands to more (and / or more demand for the same number) hosts 108 or if the network load on the hosts 108 is significant, the first device-oriented network load balancing infrastructure configuration can be converted to accommodate this expansion represented by the second configuration of the device-oriented network load balancing infrastructure shown in FIG. 7.

На фиг.7 показана вторая конфигурация инфраструктуры выравнивания сетевой нагрузки в отношении устройств. В этой второй конфигурации инфраструктуры выравнивания сетевой нагрузки, ориентированной на устройство, также показаны три устройства 602(1), 602(2) и 602(3). Опять же, иллюстративно, можно использовать одно, два или более трех устройств 602.7 shows a second configuration of a network load balancing infrastructure with respect to devices. In this second configuration of the device-oriented network load balancing infrastructure, three devices 602 (1), 602 (2) and 602 (3) are also shown. Again, illustratively, you can use one, two or more than three devices 602.

Показано, что на устройстве 602(1) присутствуют и выполняются блок 302(1) пересылки и классификатор 304(1). На устройстве 602(2) присутствуют блок 302(2) пересылки и классификатор 304(2). Кроме того, на устройстве 602(3) присутствуют блок 302(3) пересылки и классификатор 304(3). Таким образом, в этой второй конфигурации инфраструктуры выравнивания сетевой нагрузки, ориентированной на устройство, каждый соответствующий блок 302 пересылки и классификатор 304 не используют совместно ресурсы каждого соответствующего устройства 602 с хостом 108. Кроме того, инфраструктура выравнивания сетевой нагрузки может обслуживать любое количество хостов 108.It is shown that on the device 602 (1) are present and run block 302 (1) forwarding and classifier 304 (1). On the device 602 (2), a forwarding unit 302 (2) and a classifier 304 (2) are present. In addition, forwarding device 602 (3) includes a forwarder 302 (3) and a classifier 304 (3). Thus, in this second configuration of the device-oriented network load balancing infrastructure, each respective forwarder 302 and classifier 304 do not share the resources of each respective device 602 with the host 108. In addition, the network load balancing infrastructure can serve any number of hosts 108.

В ходе эксплуатации блоки 302 пересылки опять же являются конечными точками для VIP-адреса(ов). Кроме того, любой классификатор 304 может прокладывать маршрут для соединения с любым хостом 108 в зависимости от информации статуса хоста. Например, классификатор 304(3) может прокладывать маршрут для нового входящего соединения с хостом 108(2). В соответствии с новым элементом маршрута для этого соединения блок 302(3) пересылки пересылает последующие пакеты данных на хост 108(2).During operation, forwarding units 302 are again endpoints for the VIP address (s). In addition, any classifier 304 may plot a route to connect to any host 108, depending on the host status information. For example, classifier 304 (3) may route a new incoming connection to host 108 (2). According to the new route element for this connection, the forwarding unit 302 (3) forwards subsequent data packets to the host 108 (2).

Поэтому инфраструктуру выравнивания сетевой нагрузки, реализованную программными средствами, можно расширять, перемещая инфраструктуру выравнивания сетевой нагрузки (или ее часть) с устройств, используемых совместно с хостами 108, на устройства, не используемые совместно с хостами 108. Кроме того, согласно упомянутому выше со ссылкой на фиг.6, к инфраструктуре выравнивания сетевой нагрузки можно добавить еще одно устройство 602(4) для обеспечения дополнительных функций пересылки, дополнительных функций классификации, дополнительных функций обоих типов и т.д.Therefore, the network load balancing infrastructure implemented by software can be expanded by moving the network load balancing infrastructure (or part thereof) from devices shared with hosts 108 to devices not shared with hosts 108. In addition, as described above with reference 6, another device 602 (4) can be added to the network load balancing infrastructure to provide additional forwarding functions, additional classification functions, additional functions both types, etc.

На фиг. 8А и 8В показаны первая и вторая конфигурации инфраструктуры выравнивания сетевой нагрузки в отношении компонентов. Изображено, что первая компонентно-ориентированная конфигурация 800 инфраструктуры выравнивания сетевой нагрузки содержит четыре компонента. Вторая компонентно-ориентированная конфигурация 850 инфраструктуры выравнивания сетевой нагрузки содержит шесть компонентов. Альтернативная вторая конфигурация 850 - седьмой компонент, обозначенный блоком, изображенным пунктирной линией, который будет описан ниже.In FIG. 8A and 8B show a first and second configuration of a network load balancing infrastructure with respect to components. It is depicted that the first component-oriented configuration 800 network load balancing infrastructure contains four components. The second component oriented configuration 850 network load balancing infrastructure contains six components. An alternate second configuration 850 is a seventh component, indicated by a block represented by a dashed line, which will be described later.

В частности, первая компонентно-ориентированная конфигурация 800 инфраструктуры выравнивания сетевой нагрузки (или первая конфигурация 800) содержит (i) два блока 302(1) и 302(2) пересылки и (ii) два классификатора 304(1) и 304(2). Вторая компонентно-ориентированная конфигурация 850 инфраструктуры выравнивания сетевой нагрузки (или вторая конфигурация 850) содержит (i) четыре блока 302(1), 302(2), 302(3) и 302(4) пересылки и (ii) два классификатора 304(1) и 304(2). Таким образом, первая конфигурация 800 расширяется во вторую конфигурацию 850 путем добавления двух компонентов, которые в данном примере являются компонентами пересылки.In particular, the first component-oriented configuration 800 network load balancing infrastructure (or the first configuration 800) contains (i) two blocks 302 (1) and 302 (2) forwarding and (ii) two classifiers 304 (1) and 304 (2) . The second component-oriented network load balancing infrastructure configuration 850 (or second configuration 850) comprises (i) four forwarding units 302 (1), 302 (2), 302 (3) and 302 (4), and (ii) two classifiers 304 ( 1) and 304 (2). Thus, the first configuration 800 is expanded into the second configuration 850 by adding two components, which in this example are forwarding components.

В описанной реализации каждый функциональный компонент, относящийся к выравниванию сетевой нагрузки, соответствует соответствующему устройству (не показанному явно на фиг. 8А и 8В); однако каждый компонент может альтернативно соответствовать части устройства или более чем одному устройству. Например, блоки 302(1) и 302(2) пересылки могут быть распределены по трем устройствам. В другом случае блок 302(1) пересылки и классификатор 304(1) могут соответствовать первому устройству, а блок 302(2) пересылки и классификатор 304(2) могут соответствовать второму устройству.In the described implementation, each functional component related to network load balancing corresponds to a corresponding device (not shown explicitly in FIGS. 8A and 8B); however, each component may alternatively correspond to a part of the device or more than one device. For example, forwarding units 302 (1) and 302 (2) can be distributed across three devices. Alternatively, the forwarding unit 302 (1) and the classifier 304 (1) may correspond to the first device, and the forwarding unit 302 (2) and the classifier 304 (2) may correspond to the second device.

Для расширения первой конфигурации 800 во вторую конфигурацию 850 добавляются два функциональных компонента, относящихся к выравниванию сетевой нагрузки. Однако для расширения инфраструктуры выравнивания сетевой нагрузки можно альтернативно добавлять один компонент (или более двух). Кроме того, можно «одновременно» расширять два или более функциональных компонента разных типов. Например, при расширении первой конфигурации 800 во вторую конфигурацию 850 можно также добавить еще один компонент классификации (например, классификатор 304(3)), обозначенный блоком, изображенным пунктирной линией.To expand the first configuration 800, two functional components related to network load balancing are added to the second configuration 850. However, to expand the network load balancing infrastructure, you can alternatively add one component (or more than two). In addition, you can “simultaneously” expand two or more functional components of different types. For example, when expanding the first configuration 800 to the second configuration 850, you can also add another classification component (for example, classifier 304 (3)), indicated by the block shown by the dashed line.

Кроме того, расширение двух или более функциональных компонентов разных типов можно осуществлять в подобных (например, эквивалентных) или неподобных пропорциях друг к другу. Показано, что добавление компонентов 302(3) и 302(4) без добавления какого-либо компонента 304 классификации или с добавлением одного компонента 304(3) классификации представляет расширение в неподобных пропорциях. Однако для расширения в подобных пропорциях при добавлении двух компонентов 302(3) и 302(4) пересылки можно добавлять два компонента 304(3) и 304(4) классификации (последний случай не показан явно на фиг.8В). Тем не менее, разные функциональные компоненты, относящиеся к выравниванию сетевой нагрузки, могут потреблять разные объемы доступных ресурсов инфраструктуры выравнивания сетевой нагрузки, что описано со ссылкой на фиг. 9А и 9В.In addition, the expansion of two or more functional components of different types can be carried out in similar (eg, equivalent) or inappropriate proportions to each other. It has been shown that the addition of components 302 (3) and 302 (4) without the addition of any classification component 304 or with the addition of one classification component 304 (3) represents an extension in unacceptable proportions. However, to expand in similar proportions when adding two forwarding components 302 (3) and 302 (4), two classification components 304 (3) and 304 (4) can be added (the latter case is not shown explicitly in FIG. 8B). However, different functional components related to network load balancing may consume different amounts of available network load balancing infrastructure resources, as described with reference to FIG. 9A and 9B.

На фиг. 9А и 9В показаны первая и вторая конфигурации инфраструктуры выравнивания сетевой нагрузки с точки зрения ресурсов. Первая ресурсо-ориентированная конфигурация 900 инфраструктуры выравнивания сетевой нагрузки (или первая конфигурация 900) содержит первое распределение или выделение ресурсов для модуля 106 выравнивания нагрузки. Вторая ресурсо-ориентированная конфигурация 950 инфраструктуры выравнивания сетевой нагрузки (или вторая конфигурация 950) содержит второе распределение или выделение ресурсов для модуля 106 выравнивания нагрузки.In FIG. 9A and 9B show the first and second configurations of the network load balancing infrastructure in terms of resources. The first resource-oriented network load balancing infrastructure configuration 900 (or first configuration 900) comprises a first resource allocation or allocation for load balancing module 106. The second resource-oriented configuration of the network load balancing infrastructure 950 (or the second configuration 950) comprises a second allocation or allocation of resources for the load balancing module 106.

Показано, что первая конфигурация 900 содержит распределение ресурсов 70%-30%, а вторая конфигурация 950 содержит распределение ресурсов 40%-60%. Такие ресурсы могут включать в себя ресурсы всего устройства (например, количество устройств), ресурсы обработки (например, количество циклов процессора), ресурсы памяти (например, участок кэша, главной памяти и т.д.), ресурсы пропускной способности и/или интерфейса сети (например, биты в секунду и/или физические сетевые адаптеры (СА) и т.п.).It is shown that the first configuration 900 contains a resource allocation of 70% -30%, and the second configuration 950 contains a resource distribution of 40% -60%. Such resources may include resources of the entire device (e.g., the number of devices), processing resources (e.g., the number of processor cycles), memory resources (e.g., a portion of the cache, main memory, etc.), bandwidth and / or interface resources Networks (e.g., bits per second and / or physical network adapters (CAs), etc.).

В частности, для первой конфигурации 900 блок 302 пересылки потребляет 70% ресурсов модуля 106 выравнивания нагрузки, а классификатор 304 потребляет 30% этих ресурсов. После повторного выделения в ходе процедуры расширения для создания второй конфигурации 950 блок 302 пересылки потребляет 40% ресурсов модуля 106 выравнивания нагрузки, а классификатор 304 потребляет 60% этих ресурсов.In particular, for the first configuration 900, the forwarder 302 consumes 70% of the resources of the load balancer 106, and the classifier 304 consumes 30% of these resources. After re-allocation during the expansion procedure to create a second configuration 950, the forwarder 302 consumes 40% of the resources of the load balancer 106, and the classifier 304 consumes 60% of these resources.

В проиллюстрированном случае первая конфигурация 900 призвана повышать производительность выравнивания сетевой нагрузки, когда соответствующие хосты (не показанные на фиг. 9А и 9В) обрабатывают меньшее количество более длительных транзакций, поскольку функции классификации используются после первоначальной связи для соединения, а функции пересылки используются потом. Вторая конфигурация 950, напротив, призвана повышать производительность выравнивания сетевой нагрузки, когда соответствующие хосты обрабатывают большее количество более коротких транзакций, поскольку функции классификации используются для большего процента полного количества пакетов, туннелируемых через инфраструктуру выравнивания сетевой нагрузки. В этом случае, если также используются функции маршрутизации запросов, то маршрутизатору(ам) 306 запросов также выделяется процент совокупных вычислительных ресурсов. Распределение ресурсов между тремя функциями можно регулировать в процессе обработки соединений (например, регулировать «на лету») в зависимости от текущего потребления и/или дефицита ресурсов.In the illustrated case, the first configuration 900 is intended to improve network load balancing performance when the corresponding hosts (not shown in FIGS. 9A and 9B) process fewer longer transactions since the classification functions are used after the initial connection to connect, and the forwarding functions are used later. The second configuration 950, by contrast, is designed to improve network load balancing performance when the corresponding hosts process a larger number of shorter transactions, since the classification functions are used for a larger percentage of the total number of packets tunneled through the network load balancing infrastructure. In this case, if query routing functions are also used, then the query router (s) 306 are also allocated a percentage of the total computing resources. The distribution of resources between the three functions can be adjusted during the processing of compounds (for example, adjusted on the fly) depending on current consumption and / or scarcity of resources.

Согласно фиг. 2 и 3, каждый модуль 106 выравнивания нагрузки может соответствовать всей полной инфраструктуре 106 выравнивания сетевой нагрузки или ее части. Для каждого данного физически, логически, произвольно и т.д. заданного или оговоренного модуля 106 выравнивания нагрузки его ресурсы можно повторно выделять посредством процедуры расширения. В частности, распределение ресурсов между разными разделенными функциями, относящимися к выравниванию сетевой нагрузки, модуля 106 выравнивания нагрузки можно изменять посредством процедуры расширения. Кроме того, более чем двум разным функциям, а также другим функциям, относящимся к выравниванию сетевой нагрузки, которые конкретно не показаны на фиг. 9А и 9В, можно выделять изменяющиеся проценты ресурсов.According to FIG. 2 and 3, each load balancing module 106 may correspond to all or part of the entire network load balancing infrastructure 106. For each given physically, logically, arbitrarily, etc. of a predetermined or specified load balancing module 106, its resources can be re-allocated through an extension procedure. In particular, the distribution of resources between different shared functions related to network load balancing of the load balancing module 106 can be changed through an extension procedure. In addition, more than two different functions, as well as other functions related to network load balancing, which are not specifically shown in FIG. 9A and 9B, varying percentages of resources can be allocated.

Процент совокупных системных ресурсов, выделяемый всем функциям выравнивания нагрузки, также можно изменять посредством процедуры расширения. В качестве примера общей вычислительной мощности процент полной вычислительной мощности, выделяемый для выравнивания нагрузки, можно постепенно увеличивать по мере увеличения объема трафика, в отношении которого нужно выполнять выравнивание нагрузки.The percentage of total system resources allocated to all load balancing functions can also be changed through an extension procedure. As an example of total processing power, the percentage of total processing power allocated for load balancing can be gradually increased as the amount of traffic for which load balancing is to be performed is increased.

Программное обеспечение выравнивания сетевой нагрузки может, в необязательном порядке, осуществлять мониторинг, чтобы анализировать и определять, следует ли перевыделять ресурсы. Например, программное обеспечение выравнивания сетевой нагрузки может отслеживать использование процессора разными функциями, относящимися к выравниванию сетевой нагрузки. Фактическое перевыделение может также, в необязательном порядке, осуществляться автоматически программным обеспечением выравнивания сетевой нагрузки в автономном или оперативном режиме.Network load balancing software may optionally monitor to analyze and determine whether resources should be reallocated. For example, network load balancing software can track processor usage with various functions related to network load balancing. Actual redistribution can also, optionally, be done automatically by the network load balancing software, either offline or online.

Следует понимать, что расширенные способности описанной здесь инфраструктуры выравнивания сетевой нагрузки (например, реализованной, по меньшей мере, частично, программными средствами) может относиться к разным установкам и не обязательно к изменению одной установки. В ресурсо-ориентированном примере описанная здесь инфраструктура выравнивания сетевой нагрузки может быть настроена в соответствии с одним распределением ресурсов в одной среде установки и может быть настроена в соответствии с другим распределением ресурсов в другой среде установки, имеющей другие рабочие параметры. Дополнительно возможности, признаки, опции и пр., описанные выше в отношении расширения, также применимы к сужению. Иными словами, ресурсы, выделяемые инфраструктуре выравнивания сетевой нагрузки (или ее подфункциям), можно также уменьшать.It should be understood that the enhanced capabilities of the network load balancing infrastructure described here (for example, implemented, at least in part, by software) may relate to different installations and not necessarily to a change in one installation. In a resource-oriented example, the network load balancing infrastructure described herein can be configured according to one resource allocation in one installation environment and can be configured according to a different resource distribution in another installation environment having different operating parameters. Additionally, the features, features, options, etc. described above with respect to expansion are also applicable to narrowing. In other words, the resources allocated to the network load balancing infrastructure (or its sub-functions) can also be reduced.

Обработка работоспособности и нагрузкиHealth and Load Handling

В этом разделе описано, как информацию статуса хоста, например информацию работоспособности и/или нагрузки, можно собирать для выравнивания сетевой нагрузки и использовать в нем. В этом разделе ссылки идут, главным образом, на фиг.10-18 и рассматриваются функции работоспособности и нагрузки, например, обеспечиваемые обработчиком 314 работоспособности и нагрузки (фиг.3). Согласно описанному выше со ссылкой на фиг.3, каждый хост 108 хостирует одно или несколько приложений 316. Обработчик 314 работоспособности и нагрузки использует информацию работоспособности и/или нагрузки, относящуюся к приложениям 316 и/или хостам 108 для определенных описанных реализаций выравнивания сетевой нагрузки.This section describes how host status information, such as health and / or load information, can be collected and used to balance network load. In this section, the links go mainly to FIGS. 10-18 and discusses the health and load functions, for example, provided by the health and load handler 314 (FIG. 3). As described above with reference to FIG. 3, each host 108 hosts one or more applications 316. The health and load handler 314 uses the health and / or load information related to applications 316 and / or hosts 108 for the specific described network load balancing implementations described.

На фиг.10 показан подход к выравниванию сетевой нагрузки с использованием информации 1006 статуса хоста (ИСХ). Каждый хост 108(1), 108(2), …, 108(n) включает в себя одно или несколько приложений 316(1), 316(2), …, 316(n), соответственно. Эти хосты 108 в целом и эти приложения 316 в частности могут время от времени изменять статус.Figure 10 shows an approach to balancing network load using information 1006 host status (ISX). Each host 108 (1), 108 (2), ..., 108 (n) includes one or more applications 316 (1), 316 (2), ..., 316 (n), respectively. These hosts 108 in general, and these applications 316 in particular, may change status from time to time.

Например, хосты 108 и приложения 316 могут принимать новые соединения или не принимать новые соединения. Кроме того, они могут быстро обрабатывать клиентские запросы или медленно обрабатывать клиентские запросы. Кроме того, они могут иметь много ресурсов в резерве или мало неиспользованных ресурсов. Все или часть таких данных, или другие данные могут содержать информацию 1006 статуса хоста. В целом, информация 1006 статуса хоста обеспечивает указание статуса некоторого аспекта хостов 108 и/или работающих на них приложений 316.For example, hosts 108 and applications 316 may accept new connections or not accept new connections. In addition, they can quickly process client requests or slowly process client requests. In addition, they can have many resources in reserve or few unused resources. All or part of such data or other data may contain host status information 1006. In general, the host status information 1006 provides an indication of the status of some aspect of the hosts 108 and / or their applications 316.

В описанной реализации каждый хост 108(1), 108(2), …, 108(n) содержит определитель 1002(1), 1002(2), … и 1002(n), информации статуса хоста (ИСХ), соответственно. Каждый хост 108(1), 108(2), …, 108(n) также содержит распространитель 1004(1), 1004(2), … и 1004(n), соответственно, информации статуса хоста (ИСХ). Каждый определитель 1002 информации статуса хоста и/или распространитель 1004 информации статуса хоста может быть частью инфраструктуры 106 выравнивания нагрузки (ИВН).In the described implementation, each host 108 (1), 108 (2), ..., 108 (n) contains a qualifier 1002 (1), 1002 (2), ... and 1002 (n), host status information (ISX), respectively. Each host 108 (1), 108 (2), ..., 108 (n) also contains a distributor 1004 (1), 1004 (2), ... and 1004 (n), respectively, host status information (ISX). Each host status information determiner 1002 and / or host status information distributor 1004 may be part of a load balancing infrastructure (TDI) 106.

Каждый определитель 1002 информации статуса хоста определяет информацию 1006 статуса хоста для соответствующего хоста 108 и/или действующих на нем приложений 316. Иллюстративные методы определения такой информации 1006 статуса хоста описаны ниже со ссылкой на фиг.12-14 и, в частности, на фиг.13А. Каждый распространитель 1004 информации статуса хоста распространяет информацию 1006 статуса хоста для соответствующего хоста и/или приложений 316 в инфраструктуру 106 выравнивания нагрузки (например, ту/те часть/части инфраструктуры 106 выравнивания нагрузки, которые не располагаются на хостах 108). Проиллюстрированные методы распространения такой информации 1006 статуса хоста описаны ниже со ссылкой на фиг.12-17 и, в частности, на фиг. 13В и 15-17.Each host status information determiner 1002 determines the host status information 1006 for a respective host 108 and / or its applications 316. Illustrative methods for determining such host status information 1006 are described below with reference to FIGS. 12-14 and, in particular, FIG. 13A. Each host status information distributor 1004 distributes the host status information 1006 for the corresponding host and / or applications 316 to the load balancing infrastructure 106 (for example, those / those parts / parts of the load balancing infrastructure 106 that are not located on the hosts 108). Illustrated methods for distributing such host status information 1006 are described below with reference to FIGS. 12-17 and, in particular, to FIGS. 13B and 15-17.

В частности, каждый распространитель 1004 информации состояния хоста распространяет информацию 1006 статуса хоста (прямо или косвенно) в каждый модуль 106 выравнивания нагрузки (МВН) инфраструктуры 106 выравнивания нагрузки, который включает в себя, по меньшей мере, один обработчик 314 работоспособности и нагрузки и/или классификатор 304. Инфраструктура 106 выравнивания нагрузки ссылается на информацию 1006 статуса хоста при реализации выравнивания сетевой нагрузки. Например, как указано логикой 1008, инфраструктура 106 выравнивания нагрузки способна принимать решения по выравниванию нагрузки в соответствии с информацией 1006 статуса хоста.In particular, each host state information distributor 1004 distributes the host status information 1006 (directly or indirectly) to each load balancing module (MVS) of the load balancing infrastructure 106, which includes at least one health and load processor 314 and / or classifier 304. The load balancing infrastructure 106 refers to the host status information 1006 when implementing network load balancing. For example, as indicated by logic 1008, load balancing infrastructure 106 is capable of making load balancing decisions in accordance with host status information 1006.

На этапе (1) работы определители 1002 информации статуса определяют информацию 1006 статуса хоста для соответствующих хостов 108 и/или приложений 316. На этапах (1) и (2) распространители 1004 информации статуса хоста распространяют информацию 1006 статуса хоста из хостов 108 в инфраструктуру 106 выравнивания нагрузки. Например, информация 1006 статуса хоста может быть распространена в индивидуальные модули 106 выравнивания нагрузки. На этапе (3) логика 1008 принимает решения по выравниванию сетевой нагрузки в соответствии с информацией 1006 статуса хоста. На этапе (4) соединения пересылаются на хосты назначения 108 на основании этих решений по выравниванию сетевой нагрузки.In operation step (1), status information determinants 1002 determine host status information 1006 for respective hosts 108 and / or applications 316. In steps (1) and (2), host status information distributors 1004 distribute host status information 1006 from hosts 108 to infrastructure 106 load balancing. For example, host status information 1006 may be distributed to individual load balancing modules 106. At step (3), the logic 1008 makes decisions to balance the network load in accordance with the host status information 1006. In step (4), the connections are forwarded to destination hosts 108 based on these network load balancing decisions.

На фиг.11 показана логическая блок-схема 1100 способа выравнивания сетевой нагрузки с использованием информации статуса хоста. Логическая блок-схема 1100 содержит три блока 1102-1106. Хотя действия логической блок-схемы 1100 могут осуществляться в других средах и посредством различных программных схем, фиг. 1-3 и 10 используются, в частности, для иллюстрации определенных аспектов и примеров способа.11 shows a flow chart 1100 of a method for balancing network load using host status information. Logical block diagram 1100 comprises three blocks 1102-1106. Although the actions of the logical flowchart 1100 may be carried out in other environments and through various software circuits, FIG. 1-3 and 10 are used, in particular, to illustrate certain aspects and examples of the method.

На блоке 1102 информация статуса хоста отправляется с хостов на модули выравнивания нагрузки. Например, информация 1006 статуса хоста может быть отправлена с хостов 108 на модули 106 выравнивания нагрузки. На блоке 1104 информация статуса хоста принимается от хостов на модулях выравнивания нагрузки. Например, модули 106 выравнивания нагрузки получают информацию 1006 статуса хоста от хостов 108. На блоке 1104 принимаются решения по выравниванию нагрузки в соответствии с полученной информацией статуса хоста. Например, логика 1008 на модулях 106 выравнивания нагрузки может принимать решения по выравниванию сетевой нагрузки в соответствии с информацией 1006 статуса хоста.At 1102, host status information is sent from hosts to load balancing modules. For example, host status information 1006 may be sent from hosts 108 to load balancing modules 106. At 1104, host status information is received from hosts on load balancing modules. For example, load balancing modules 106 receive host status information 1006 from hosts 108. At block 1104, load balancing decisions are made in accordance with the received host status information. For example, logic 1008 on load balancing modules 106 may make decisions to balance network load in accordance with host status information 1006.

Таким образом, на фиг.10 инфраструктура 106 выравнивания нагрузки собирает информацию 1006 статуса хоста от хостов 108 (и/или их приложений 316) и входящие запросы на выравнивание нагрузки, адресованные хостам 108 в соответствии с информацией 1006 статуса хоста. Согласно описанному ниже со ссылкой на фиг.12-18, эта информация 1006 статуса хоста может зависеть от приложения. Также, согласно описанному ниже, примеры информации 1006 статуса хоста включают в себя информацию работоспособности и/или нагрузки.Thus, in FIG. 10, load balancing infrastructure 106 collects host status information 1006 from hosts 108 (and / or their applications 316) and incoming load balancing requests addressed to hosts 108 in accordance with host status information 1006. As described below with reference to FIGS. 12-18, this host status information 1006 may be application dependent. Also, as described below, examples of host status information 1006 include health and / or load information.

На фиг.12 показан подход к выравниванию сетевой нагрузки с использованием информации 1206 работоспособности и/или нагрузки (ИРН). Хосты 108(1), 108(2), …, 108(n) подключены к модулям 106(1), 106(2), …, 106(u) выравнивания нагрузки через средство 1210 связи, например сеть.12 shows an approach to balancing network load using health and / or load information (IRI) 1206. Hosts 108 (1), 108 (2), ..., 108 (n) are connected to load balancing modules 106 (1), 106 (2), ..., 106 (u) via communication means 1210, such as a network.

Показано, что хосты 108 передают информацию 1206 работоспособности и нагрузки на модули 106 выравнивания нагрузки с использованием средства 1210 связи. Двусторонняя передача информации 1206 работоспособности и нагрузки, обозначенная двусторонней стрелкой, относится к двусторонней связи между модулями 106 выравнивания нагрузки и хостами 108, которая обеспечивает определенную полноту, когерентность, точность и т.д., в результате чего хосты 108 и/или модули 106 выравнивания нагрузки могут отказывать независимо друг от друга. Такие двусторонние связи между модулями 106 выравнивания нагрузки и хостами описаны ниже с конкретной ссылкой на фиг.15.Hosts 108 are shown to transmit health and load information 1206 to load balancing modules 106 using communication means 1210. Two-way communication of health and load information 1206, indicated by a two-way arrow, refers to two-way communication between load balancing modules 106 and hosts 108, which provides a certain completeness, coherence, accuracy, etc., resulting in hosts 108 and / or alignment modules 106 loads may fail independently of each other. Such two-way communications between load balancing modules 106 and hosts are described below with specific reference to FIG.

Информация работоспособности отражает, способен(но) ли данный(ое) хост и/или приложение обрабатывать клиентские запросы. Информация нагрузки отражает количество, величину и/или уровень клиентских запросов, которые в конкретный момент времени способен(но) обрабатывать данный(ое) хост и/или приложение. Иными словами, нагрузка отражает прямо или обратно доступные количество, величину и/или уровень полной емкости данного хоста и/или приложения. Как отмечено выше, реализации, описанные со ссылкой на фиг.12-18, фокусируются на информации работоспособности и/или нагрузки; однако эти реализации также применимы к общей информации статуса для хостов (включая их приложения).Health information reflects whether a given host and / or application is capable of processing client requests. The load information reflects the number, size and / or level of client requests that a given host and / or application is capable of (but) processing at a given moment in time. In other words, the load reflects directly or inversely the amount, amount and / or level of full capacity of a given host and / or application. As noted above, implementations described with reference to FIGS. 12-18 focus on health and / or load information; however, these implementations also apply to general status information for hosts (including their applications).

В описанной реализации каждый хост 108(1), 108(2), …, 108(n) содержит соответствующий компонент 1202(1), 1202(2), …, 1202(n) инфраструктуры работоспособности и нагрузки (ИРиН). Каждый компонент 1202 инфраструктуры работоспособности и нагрузки может, в необязательном порядке, быть частью инфраструктуры 106 выравнивания нагрузки, которая располагается и выполняется на каждом хосте 108. Информацию 1206 работоспособности и нагрузки можно реализовать программными средствами. При функционировании каждая инфраструктура 1202(1), 1202(2), …, 1202(n) создает и поддерживает таблицу 1204(1), 1204(2), …, 1204(n) работоспособности и нагрузки (РиН).In the described implementation, each host 108 (1), 108 (2), ..., 108 (n) contains the corresponding component 1202 (1), 1202 (2), ..., 1202 (n) of the health and load infrastructure (IRiN). Each component 1202 of the health and load infrastructure can optionally be part of the load balancing infrastructure 106 that is located and runs on each host 108. The health and load information 1206 can be implemented by software. When operating, each infrastructure 1202 (1), 1202 (2), ..., 1202 (n) creates and maintains a table 1204 (1), 1204 (2), ..., 1204 (n) of health and load (RiN).

Таблицы 1204 работоспособности и нагрузки могут включать в себя элементы, зависящие от приложения. Информация 1206 работоспособности и нагрузки, хранящаяся в таблицах 1204 работоспособности и нагрузки, может быть независимой от инфраструктуры 106 выравнивания нагрузки. Например, администраторы, конструкторы и т.д. могут задавать критерии для информации 1206 работоспособности и нагрузки во время настройки. Дополнительно, элементы, внешние по отношению к устройству, которое является хостом 108 или содержит его, могут способствовать определению информации 1206 работоспособности и нагрузки для приложений 316 на устройстве. Иллюстративная таблица 1204 работоспособности и нагрузки описана ниже со ссылкой на фиг.13А.Health and load tables 1204 may include application-specific elements. Health and load information 1206 stored in health and load tables 1204 may be independent of load balancing infrastructure 106. For example, administrators, designers, etc. can set criteria for information 1206 health and load during configuration. Additionally, elements external to the device, which is the host 108 or contains it, can help determine the health information 1206 and the load for applications 316 on the device. An illustrative health and load table 1204 is described below with reference to FIG. 13A.

Каждый модуль 106(1), 106(2), …, 106(u) выравнивания нагрузки включает в себя соответствующий объединенный кэш 1208(1), 1208(2), …, 1208(u) работоспособности и нагрузки (РиН). Каждый объединенный кэш 1208 работоспособности и нагрузки содержит информацию из каждой таблицы 1204(1), 1204(2), …, 1204(n) работоспособности и нагрузки. Поэтому каждому модулю 106 выравнивания нагрузки предоставляется быстрый (например, кэшированный) доступ к информации 1206 работоспособности и нагрузки для каждого хоста 108, для которого модули 106 выравнивания нагрузки выравнивают нагрузку сетевого трафика.Each load balancing module 106 (1), 106 (2), ..., 106 (u) includes a corresponding combined cache 1208 (1), 1208 (2), ..., 1208 (u) of health and load (RiN). Each combined health and load cache 1208 contains information from each health and load table 1204 (1), 1204 (2), ..., 1204 (n). Therefore, each load balancing module 106 is provided with quick (eg, cached) access to health and load information 1206 for each host 108 for which load balancing modules 106 balance the load of network traffic.

В ходе эксплуатации, инфраструктуры 1202 работоспособности и нагрузки переносят информацию 1206 работоспособности и нагрузки из таблиц 1204 работоспособности и нагрузки в объединенные кэши 1208 работоспособности и нагрузки. Механизм для предоставления информации 1206 работоспособности и нагрузки является управляемым событиями, в результате чего изменения в таблицах 1204 работоспособности и нагрузки поступают в объединенные кэши 1208 работоспособности и нагрузки своевременно и масштабируемо.During operation, the health and load infrastructure 1202 transfers health and load information 1206 from the health and load tables 1204 to the combined health and load caches 1208. The mechanism for providing health and load information 1206 is event driven, whereby changes to the health and load tables 1204 arrive in the combined health and load caches 1208 in a timely and scalable manner.

На фиг.13А показана таблица 1204 работоспособности и нагрузки, обозначенная на фиг.12. В описанной реализации таблица 1204 работоспособности и нагрузки содержит множественные элементы 1302, каждый из которых связан с отдельным приложением 316. Каждый элемент 1302 может соответствовать строке в таблице 1204 работоспособности и нагрузки, которая имеет три столбца. Эти столбцы соответствуют идентификатору (ИД) 1302(А) приложения, характеристике 1302(В) статуса приложения и директиве 1302(С) выравнивателя нагрузки.On figa shows the table 1204 health and load, indicated in Fig.12. In the described implementation, the health and load table 1204 contains multiple elements 1302, each of which is associated with a separate application 316. Each element 1302 may correspond to a row in the health and load table 1204, which has three columns. These columns correspond to application identifier (ID) 1302 (A), application status specification 1302 (B), and load balancer directive 1302 (C).

Поскольку каждый элемент 1302 связан с конкретным приложением 316, всякий раз при запуске (например, администратором) приложения происходит добавление строки. Аналогично, всякий раз при закрытии приложения происходит уничтожение/удаление строки. Аналогично, отдельные поля в столбцах 1302(A), 1302(B) и/или 1302(C) изменяются/обновляются при изменении их значений. Например, при изменении значения характеристики статуса для данного приложения 316, значение 1302(В) поля характеристики статуса приложения для элемента 1302 данного приложения 316 обновляется.Since each element 1302 is associated with a specific application 316, each time the application is started (for example, by the administrator), a line is added. Similarly, every time you close the application, the line is destroyed / deleted. Similarly, the individual fields in columns 1302 (A), 1302 (B) and / or 1302 (C) change / update when their values change. For example, when you change the value of the status characteristic for this application 316, the value 1302 (B) of the application status characteristic field for the element 1302 of this application 316 is updated.

Добавления и удаления элементов 1302 для приложений 316 могут осуществляться с помощью входной информации от диспетчера управления на хосте 108. Например, диспетчер управления операционной системы знает, когда приложение 316 начинает и прекращает работать, поскольку он активно участвует в запуске и остановке приложений 316. Поэтому диспетчер управления может указать, что он, по меньшей мере частично, запустил приложение 316, и диспетчер управления может установить, что он, по меньшей мере частично, остановил приложение 316. Таким образом, диспетчер управления может информировать инфраструктуру 1202 работоспособности и нагрузки о запуске и остановке приложений 316. Поэтому не требуется обеспечивать явной передачи данных от приложений 316 на инфраструктуру 1202 работоспособности и нагрузки. Примером диспетчера управления является диспетчер (ДУС) управления службами операционной системы Windows® от корпорации Microsoft®.Additions and deletions of elements 1302 for applications 316 can be accomplished using input from the management manager on host 108. For example, the operating system management manager knows when application 316 starts and stops working because it is actively involved in starting and stopping applications 316. Therefore, the manager the control may indicate that he, at least partially, has started the application 316, and the control manager may establish that he, at least partially, has stopped the application 316. Thus, the manager management can inform the health and load infrastructure 1202 of starting and stopping applications 316. Therefore, it is not necessary to explicitly transfer data from applications 316 to the health and load infrastructure 1202. An example of a management manager is the Microsoft® Windows® Operating System Services Management Manager (DLS).

Идентификатор 1302(А) приложения содержит информацию, используемую для однозначной идентификации приложения 316, с которым связан элемент 1302. Идентификатор 1302(А) приложения может содержать одно или более из следующего для соответствующего приложения 316: виртуальный IP-адрес и порт, физический IP-адрес и порт, используемый протокол и любую информацию, связанную с протоколом. В качестве протокола может выступать HTTP, IPsec, SOAP и т.д. В качестве информации, связанной с протоколом, может выступать шаблон или строка URL для дополнительного указания приложения, связанного с элементом 1302. Таким образом, идентификатор 1302(А) приложения более конкретно относится к конечной точке данного приложения на конкретном хосте 108.The application identifier 1302 (A) contains information used to uniquely identify the application 316 to which element 1302 is associated. The application identifier 1302 (A) may contain one or more of the following for the corresponding application 316: virtual IP address and port, physical IP address and port, protocol used and any information related to the protocol. The protocol can be HTTP, IPsec, SOAP, etc. The protocol-related information may be a URL pattern or string to further indicate the application associated with item 1302. Thus, the application identifier 1302 (A) more specifically refers to the endpoint of the application on a specific host 108.

Альтернативно, можно использовать другие идентификаторы приложения. Например, для снижения нагрузки на линию связи идентификатор 1302(А) приложения может представлять собой 32-разрядное двоичное число, соответствующее вышеупомянутой иллюстративной информации на инфраструктуре 1202 работоспособности и нагрузки и модулях 106 выравнивания нагрузки. Кроме того, любое из полей в элементе 1302 может фактически содержать глобально уникальный идентификатор (GUID), используемый в качестве ключа для поиска истинной информации для поля.Alternatively, other application identifiers may be used. For example, to reduce the load on the communication line, application identifier 1302 (A) may be a 32-bit binary number corresponding to the above illustrative information on health and load infrastructure 1202 and load balancing modules 106. In addition, any of the fields in element 1302 may actually contain a globally unique identifier (GUID) used as a key to search for true information for the field.

Характеристика 1302(В) статуса приложения содержит информацию, отражающую статус приложения 316, с которым связан элемент 1302. Характеристика 1302(В) статуса приложения содержит следующее для соответствующего приложения 316: работоспособность приложения, нагрузку приложения и емкость приложения. Работоспособность приложения это квазибулево значение, указывающее, работает ли приложение. Работоспособность приложения может принимать значения «работоспособно», «неработоспособно» и «неизвестно». Работоспособность приложения - это относительно мгновенное значение, которое передается со сравнительно небольшой задержкой (например, порядка секунды или нескольких секунд) на модули 106 выравнивания нагрузки при изменении значения работоспособности приложения.The application status characteristic 1302 (B) contains information reflecting the status of the application 316 to which the element 1302 is associated. The application status characteristic 1302 (B) contains the following for the corresponding application 316: application health, application load, and application capacity. Application health is a quasi-Boolean value indicating whether the application is running. The health of the application can take the values “operational”, “inoperative” and “unknown”. Application health is a relatively instantaneous value that is transmitted with a relatively small delay (for example, of the order of a second or several seconds) to load balancing modules 106 when the application health value changes.

Нагрузка приложения - это значение, указывающее, насколько нагружено или занято приложение, и, таким образом, прямо или обратно, сколько дополнительной нагрузки может обрабатывать данное приложение. Нагрузка приложения - это относительно медленно изменяющееся или усредненное значение, которое, при желании, можно сглаживать с помощью механизма гистерезисного возбуждения для устранения переходных пиков возрастающей или убывающей нагрузки. Она передается на модули 106 выравнивания нагрузки сравнительно редко (например, от одного до четырех раз в минуту). Значение нагрузки приложения приобретает смысл в отношении емкости приложения.Application load is a value that indicates how much the application is loaded or busy, and thus, directly or vice versa, how much additional load this application can handle. Application load is a relatively slowly varying or averaged value, which, if desired, can be smoothed out using the hysteresis excitation mechanism to eliminate the transient peaks of an increasing or decreasing load. It is transmitted to the load balancing modules 106 relatively rarely (for example, from one to four times per minute). The application load value makes sense in terms of application capacity.

Емкость приложения - это значение, указывающее максимальную емкость приложения. Его выбирают общим способом, чтобы оно имело смысл для данного контекста, но все же было достаточно гибким для других контекстов. Емкость приложения - это безразмерная величина, имеющая ограниченный диапазон значений (например, 0-99), которую можно определить во время настройки. Она может зависеть от вычислительной мощности, размера/скорости памяти, сетевого доступа, некоторых их комбинаций и т.п. Емкость приложения выражает относительные емкости между другими приложениями того же типа в группе хостов 108(1, 2, …, n).Application Capacity is a value indicating the maximum application capacity. It is chosen in a general way so that it makes sense for a given context, but still is flexible enough for other contexts. Application capacity is a dimensionless quantity having a limited range of values (for example, 0-99) that can be determined during setup. It may depend on processing power, memory size / speed, network access, some combinations thereof, etc. Application capacity expresses the relative capacities between other applications of the same type in the host group 108 (1, 2, ..., n).

Таким образом, нагрузка приложения приобретает смысл по отношению к емкости приложения. Нагрузка приложения для данного приложения - это процент емкости приложения для данного приложения. Альтернативно, нагрузка приложения может выражаться безразмерной величиной, из которой можно получить процент с привлечением значения емкости приложения.Thus, the load of the application makes sense in relation to the capacity of the application. Application load for a given application is the percentage of application capacity for a given application. Alternatively, the application load can be expressed as a dimensionless value, from which a percentage can be obtained using the application capacity value.

Директива 1302(С) выравнивателя нагрузки содержит информацию, отражающую желаемое и/или ожидаемое состояние директивы, установленной инфраструктурой 1202 работоспособности, и нагрузки для модулей 106 выравнивания нагрузки в отношении приложения 316, с которым связан элемент 1302. Директива 1302(С) выравнивателя нагрузки содержит следующее для соответствующего приложения 316: целевое состояние выравнивания нагрузки и текущее состояние выравнивания нагрузки.The load balancer directive 1302 (C) contains information reflecting the desired and / or expected state of the directive established by the health infrastructure 1202 and the load for load balancing modules 106 with respect to the application 316 to which element 1302 is associated. The load balancer directive 1302 (C) contains the following for corresponding application 316: target load balancing state and current load balancing state.

Целевое состояние выравнивания нагрузки отражает состояние директивы для модулей 106 выравнивания нагрузки в соответствии с указанием инфраструктуры 1202 работоспособности и нагрузки. Текущее состояние выравнивания нагрузки отражает то, что инфраструктура 1202 работоспособности и нагрузки понимает, каким должно быть текущее состояние директивы для модулей 106 выравнивания нагрузки, записываемое на модулях 106 выравнивания нагрузки. Текущее состояние выравнивания нагрузки, таким образом, отражает директиву выравнивания нагрузки, которую, как ожидает инфраструктура 1202 работоспособности и нагрузки, в данный момент выполняют модули 106 выравнивания нагрузки в соответствии с требованиями используемого протокола связи. Такой иллюстративный протокол связи описан ниже со ссылкой на фиг.15. Взаимодействие и соотношение между целевым состоянием выравнивания нагрузки и текущим состоянием выравнивания нагрузки также дополнительно поясняются в описании фиг.15.The target load balancing state reflects the state of the directive for load balancing modules 106 in accordance with the health and load infrastructure 1202. The current load balancing state reflects that the health and load infrastructure 1202 understands what the current state of the directive for the load balancing modules 106 should be written to the load balancing modules 106. The current load balancing state thus reflects the load balancing directive that the health and load infrastructure 1202 expects is currently being executed by load balancing modules 106 in accordance with the requirements of the communication protocol used. Such an illustrative communication protocol is described below with reference to FIG. The interaction and relationship between the target state of load balancing and the current state of load balancing are also further explained in the description of FIG.

Целевое состояние выравнивания нагрузки, как и текущее состояние выравнивания нагрузки, может принимать значения «активное», «неактивное» или «истощающееся». Директива «активное» указывает, что новые запросы/соединения могут поступать и направляться приложению, связанному с элементом 1302. Директива «неактивное» указывает, что никакие дополнительные пакеты не подлежат пересылке соответствующему приложению. Директива «истощающееся» указывает, что никакие пакеты для новых запросов/соединений не подлежат отправке соответствующему приложению, но пакеты существующих запросов/соединений следует продолжать пересылать соответствующему приложению.The target load balancing state, like the current load balancing state, can take the values “active”, “inactive” or “depleting”. The “active” directive indicates that new requests / connections may arrive and be sent to the application associated with element 1302. The “inactive” directive indicates that no additional packets should be forwarded to the corresponding application. The dwindling directive indicates that no packets for new requests / connections should be sent to the corresponding application, but packets of existing requests / connections should continue to be forwarded to the corresponding application.

В описанной реализации, окончательная версия соответствующей информации 1206 работоспособности и нагрузки сохраняется в таблицах 1204 работоспособности и нагрузки, размещенных на каждом соответствующем хосте 108 из множественных хостов 108. В этой реализации, если хост 108 ломается, информация 1206 работоспособности и нагрузки, которая теряется, относится к тем приложениям 316, которые также уничтожаются. Таким образом, высокая степень надежности достигается автоматически без дублирования данных. Однако окончательная версия информации 1206 работоспособности и нагрузки может альтернативно храниться в другом месте. Другие такие опции хранения включают в себя сами модули 106 выравнивания нагрузки, хост 108, который (в качестве самостоятельной задачи или совместно с задачами хостинга) хранит и поддерживает информацию 1206 работоспособности и нагрузки для множественных других (включая все остальные) хостов 108, других отдельных и/или внешних устройств и т.д.In the described implementation, the final version of the corresponding health and load information 1206 is stored in the health and load tables 1204 located on each respective host 108 of the multiple hosts 108. In this implementation, if the host 108 breaks down, the health and load information 1206 that is lost refers to to those applications 316, which are also destroyed. Thus, a high degree of reliability is achieved automatically without duplication of data. However, the final version of the health and load information 1206 may alternatively be stored elsewhere. Other such storage options include load balancing modules 106 themselves, host 108, which (as a standalone task or in conjunction with hosting tasks) stores and maintains health and load information 1206 for multiple other (including all others) hosts 108, other separate and / or external devices, etc.

Если окончательная версия информации 1206 работоспособности и нагрузки хранится и поддерживается в другом месте, помимо того, что она распределена между хостами 108(1, 2, …, n), то такая информация 1206 работоспособности и нагрузки может храниться избыточно (например, также храниться в дублирующем устройстве, резервно скопированы и т.д.) в целях повышения надежности. Иллюстративные сценарии посредника для сохранения информации 1206 работоспособности и нагрузки описаны ниже со ссылкой на фиг. 17А и 17В. На фиг.17А изображен сценарий посредника для таблиц 1204 работоспособности и нагрузки, а на фиг.17В изображен сценарий посредника для объединенных кэшей работоспособности и нагрузки.If the final version of the health and load information 1206 is stored and maintained elsewhere, in addition to being distributed between the hosts 108 (1, 2, ..., n), then such health and load information 1206 may be redundant (for example, also stored in backup device, backed up, etc.) in order to increase reliability. Illustrative proxy scenarios for storing health and load information 1206 are described below with reference to FIG. 17A and 17B. 17A depicts a proxy scenario for health and load tables 1204, and FIG. 17B depicts a proxy scenario for combined health and load caches.

На фиг.13В изображен объединенный кэш 1208 работоспособности и нагрузки, обозначенный на фиг.12. В описанной реализации каждый объединенный кэш 1208 работоспособности и нагрузки в каждом модуле 106 выравнивания нагрузки содержит, по меньшей мере, часть информации, хранящейся в каждой таблице 1204 работоспособности и нагрузки для каждой инфраструктуры 1202 работоспособности и нагрузки для каждого хоста 108. Кэшированная информация работоспособности и нагрузки может быть организована любым образом в объединенном кэше 1208 работоспособности и нагрузки.FIG. 13B depicts the combined health and load cache 1208 indicated in FIG. In the described implementation, each combined health and load cache 1208 in each load balancing module 106 contains at least a portion of the information stored in each health and load table 1204 for each health and load infrastructure 1202 for each host 108. Cached health and load information can be organized in any way in the combined cache 1208 health and load.

Показано, что объединенный кэш 1208 работоспособности и нагрузки содержит кэш для каждого хоста 108(1), 108(2), …, 108(n), который частично или полностью дублирует информацию таблицы 1204 работоспособности и нагрузки каждого соответствующего хоста 108(1, 2, …, n). В частности, объединенный кэш 1208 работоспособности и нагрузки содержит кэш для хоста № 1 1304(1), кэш для хоста № 2 1304(2), …, кэш для хоста № n 1304(n). Таким образом, иллюстрируемый объединенный кэш 1208 работоспособности и нагрузки организован на широком уровне по хосту 108(1, 2, …, n), причем каждый отдельный кэш 1304 содержит элементы, зависящие от приложения для соответствующего хоста 108(1, 2, …, n). Альтернативно, объединенный кэш 1208 работоспособности и нагрузки может быть организован на широком уровне по типу приложения 316 с отдельными блоками, направленными на конкретный тип приложения, дополнительно деленными по хосту 108(1, 2, …, n). Можно также использовать другие форматы структуры данных.It is shown that the combined health and load cache 1208 contains a cache for each host 108 (1), 108 (2), ..., 108 (n), which partially or completely duplicates the information of the health and load table 1204 of each corresponding host 108 (1, 2 , ..., n). In particular, the combined health and load cache 1208 contains a cache for host number 1 1304 (1), a cache for host number 2 1304 (2), ..., a cache for host number n 1304 (n). Thus, the illustrated unified cache of health and load 1208 is organized at a broad level by host 108 (1, 2, ..., n), with each individual cache 1304 containing application-specific elements for the corresponding host 108 (1, 2, ..., n ) Alternatively, the combined health and load cache 1208 can be organized at a broad level as application 316 with separate blocks aimed at a specific type of application, further divided by host 108 (1, 2, ..., n). Other data structure formats may also be used.

На фиг.14 показана логическая блок-схема способа выравнивания сетевой нагрузки с использованием информации работоспособности и нагрузки. Логическая блок-схема 1400 содержит восемь блоков 1402-1416. Хотя действия, указанные на логической блок-схеме 1400, могут осуществляться в других средах и посредством различных программных схем, фиг. 1-3 и 12-13В используются, в частности, для иллюстрации определенных аспектов и примеров способа. Например, действия двух блоков 1402-1404 осуществляются хостом 108, а действия шести блоков 1406-1416 осуществляются модулем 106 выравнивания нагрузки.On Fig shows a logical block diagram of a method of balancing network load using health information and load. Logical block diagram 1400 contains eight blocks 1402-1416. Although the actions indicated in the logical flowchart 1400 can be carried out in other environments and through various software circuits, FIG. 1-3 and 12-13B are used, in particular, to illustrate certain aspects and examples of the method. For example, the actions of two blocks 1402-1404 are performed by the host 108, and the actions of six blocks 1406-1416 are performed by the load balancing module 106.

На блоке 1402 происходит определение информации работоспособности и нагрузки на хосте. Например, инфраструктура 1202(2) работоспособности и нагрузки может получать информацию 1206 работоспособности и нагрузки для приложений 316(2) и сохранять в таблице 1204(2) на хосте 108(2). На блоке 1404 определенная информация работоспособности и нагрузки сеется в модули выравнивания нагрузки. Например, инфраструктура 1202(2) работоспособности и нагрузки может отправить информацию 1206 работоспособности и нагрузки для приложений 316(2) на модули 106(1, 2, …, u) выравнивания нагрузки. Стрелка 1418 указывает, что действия блоков 1402 и 1404 повторяются, что позволяет непрерывно отслеживать работоспособность и нагрузку (приложения) и обновлять их, когда происходят изменения.At block 1402, health information and host load information is determined. For example, the health and load infrastructure 1202 (2) can receive health and load information 1206 for applications 316 (2) and store it in a table 1204 (2) on the host 108 (2). At block 1404, certain health and load information is sown to load balancing modules. For example, health and load infrastructure 1202 (2) can send health and load information 1206 for applications 316 (2) to load balancing modules 106 (1, 2, ..., u). Arrow 1418 indicates that the actions of blocks 1402 and 1404 are repeated, which allows you to continuously monitor the health and load (applications) and update them when changes occur.

На блоке 1406 происходит получение информации работоспособности и нагрузки от хостов. Например, модуль 106(1) выравнивания нагрузки может получать информацию 1206 работоспособности и нагрузки от множественных хостов 108(1, 2, …, n), которая содержит информацию 1206 работоспособности и нагрузки для приложений 316(2) хоста 108(2). На блоке 1408 полученная информация работоспособности и нагрузки кэшируется. Например, модуль 106(1) выравнивания нагрузки может сохранять информацию 1206 работоспособности и нагрузки от хостов 108(1, 2, …, n) в объединенном кэше 1208(1) работоспособности и нагрузки. Согласно реализации объединенного кэша 1208(1) работоспособности и нагрузки, изображенного на фиг.13В, информация 1206 работоспособности и нагрузки для приложений 316(2) от хоста 108(2) может храниться в кэше 1304(2)для хоста № 2. Стрелка 1420 указывает, что действия блоков 1406 и 1408 повторяются, что позволяет непрерывно отслеживать работоспособность и нагрузку (приложения) и обновлять их, когда происходят изменения.At block 1406, health and load information is received from the hosts. For example, load balancing module 106 (1) may receive health and load information 1206 from multiple hosts 108 (1, 2, ..., n), which contains health and load information 1206 for applications 316 (2) of host 108 (2). At block 1408, the received health and load information is cached. For example, load balancing module 106 (1) may store health and load information 1206 from hosts 108 (1, 2, ..., n) in a combined health and load cache 1208 (1). According to the implementation of the combined health and load cache 1208 (1) shown in FIG. 13B, the health and load information 1206 for applications 316 (2) from the host 108 (2) can be stored in the cache 1304 (2) for the host No. 2. Arrow 1420 indicates that the actions of blocks 1406 and 1408 are repeated, which allows you to continuously monitor the health and load (applications) and update them when changes occur.

Пунктирная стрелка 1422 указывает, что модули 106 выравнивания нагрузки также обрабатывают передачи от клиентов 102, одновременно обрабатывая информацию работоспособности и нагрузки. На блоке 1410 происходит получение пакета, запрашивающего новое соединение. Например, модуль 106(1) выравнивания нагрузки может получить пакет SYN TCP от клиента 102(2) по сети 104. На блоке 1412 осуществляется сверка с кэшированной информацией работоспособности и нагрузки. Например, модуль 106(1) выравнивания нагрузки может сверяться с объединенным кэшем 1208(1) работоспособности и нагрузки. В частности, модуль 106(1) выравнивания нагрузки может сверяться с элементами, связанными с приложением, которому адресован пакет SYN TCP, по кэшам 1304(1, 2, …, n) для хостов №1, №2, …, №n.The dashed arrow 1422 indicates that load balancing modules 106 also process transmissions from clients 102, while processing health and load information. At block 1410, a packet is received requesting a new connection. For example, load balancing module 106 (1) may receive a TCP SYN packet from client 102 (2) over network 104. At block 1412, it checks against the cached health and load information. For example, load balancing module 106 (1) may check against the combined health and load cache 1208 (1). In particular, load balancing module 106 (1) can check against elements associated with the application to which the SYN TCP packet is addressed by caches 1304 (1, 2, ..., n) for hosts No. 1, No. 2, ..., No. n.

На блоке 1414 происходит выбор хоста в соответствии с кэшированной информацией работоспособности и нагрузки. Например, модуль 106(1) выравнивания нагрузки может выбрать хост 108(2), имеющий приложение(я) 316(2), в соответствии с информацией 1206 работоспособности и нагрузки, кэшированной в объединенном кэше 1208(1) работоспособности и нагрузки. Выбранное приложение 316 (и хост 108) должно быть работоспособным и способным принимать дополнительную нагрузку (например, по возможности, наименее нагруженным приложением среди приложений того типа приложения, которому адресован пакет SYN TCP).At block 1414, a host is selected in accordance with the cached health and load information. For example, load balancing module 106 (1) may select a host 108 (2) having application (s) 316 (2) in accordance with health and load information 1206 cached in the combined health and load cache 1208 (1). The selected application 316 (and host 108) must be functional and able to take on additional load (for example, if possible, the least loaded application among applications of the type of application to which the TCP SYN packet is addressed).

Сверка с кэшированной информацией работоспособности и нагрузки (на блоке 1412) и выбор хоста в соответствии с кэшированной информацией работоспособности и нагрузки (на блоке 1414) может осуществляться до получения конкретного пакета запроса нового соединения и/или с использованием групповой схемы. Кроме того, выбор можно осуществлять в соответствии с любой из многочисленных схем. Например, можно применять маркерную или круговую схемы. При любой схеме выбор может предусматривать взвешивание относительных нагрузок среди опций приложения. Эти сверка и выбор совместно с маркерной и круговой схемами описаны ниже со ссылкой на фиг.18 в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов», особенно в связи с функциями классификации.Reconciliation with cached health and load information (at block 1412) and host selection in accordance with the cached health and load information (at block 1414) can be performed before receiving a specific request packet for a new connection and / or using a group scheme. In addition, the selection can be made in accordance with any of numerous schemes. For example, you can use marker or circular patterns. In any design, the choice may include weighting the relative loads among the application options. These reconciliation and selection, together with marker and pie circuits, are described below with reference to FIG. 18 in the section entitled “Classification, Forwarding and Routing of Requests”, especially in connection with the classification functions.

После выбора хоста назначения на блоке 1414 на него можно отправить пакет запроса нового соединения. На блоке 1416 пакет, полученный от клиента, пересылается на выбранный хост. Например, пакет SYN TCP пересылается с модуля 106(1) выравнивания нагрузки на выбранный хост 108(2). Пересылка этого начального пакета может осуществляться непосредственно классификатором 304 или блоком 302 пересылки, что также описано ниже в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов».After selecting the destination host at block 1414, you can send a packet request a new connection to it. At block 1416, a packet received from the client is forwarded to the selected host. For example, a TCP SYN packet is forwarded from load balancing module 106 (1) to a selected host 108 (2). Forwarding of this initial packet can be done directly by the classifier 304 or the forwarding unit 302, which is also described below in the section entitled “Classification, Forwarding and Routing of Requests”.

В рассмотренной реализации инфраструктура 1202 работоспособности и нагрузки размещена на множественных хостах 108 и распределена между ними, а также размещена на модулях 106 выравнивания нагрузки (будучи представлена обработчиком 314 работоспособности и нагрузки). Инфраструктура 1202 работоспособности и нагрузки имеет три функции. Во первых, она открывает точку(и) прослушивания для получения обновлений статуса приложения для характеристик 1302(В) статуса приложения таблиц 1204 работоспособности и нагрузки. Во-вторых, он синтезирует информацию статуса приложения, чтобы определить, что должны делать модули 106 выравнивания нагрузки, что воплощено в директиве 1302(С) выравнивателя нагрузки. В-третьих, инфраструктура 1202 работоспособности и нагрузки передает эту директиву от хостов 108 на модули 106 выравнивания нагрузки.In the implementation described, the health and load infrastructure 1202 is hosted on multiple hosts 108 and distributed between them, and also hosted on load balancing modules 106 (as represented by the health and load handler 314). Health and load infrastructure 1202 has three functions. First, it opens the listening point (s) to receive application status updates for characteristics 1302 (B) of the application status of the health and load tables 1204. Secondly, it synthesizes application status information to determine what load balancing modules 106 should do, as embodied in load balancer directive 1302 (C). Third, the health and load infrastructure 1202 passes this directive from hosts 108 to load balancing modules 106.

Директивное содержимое директивы 1302(С) выравнивателя нагрузки является эффективно классифицированной версией информации для характеристик 1302(В) статуса приложения. Однако модули 106 выравнивания нагрузки также могут принимать необработанную информацию характеристик 1302(В) статуса приложения, а также эту обработанную директиву. Передача содержимого этих и других полей таблиц 1204 работоспособности и нагрузки осуществляется с использованием протокола обмена сообщениями, который описан ниже со ссылкой на фиг.15.The directory content of load balancer directive 1302 (C) is an efficiently classified version of the information for application status characteristics 1302 (B). However, load balancing modules 106 may also receive raw information about application status characteristics 1302 (B), as well as this processed directive. The contents of these and other fields of the health and load tables 1204 are transmitted using the messaging protocol, which is described below with reference to FIG.

На фиг.15 представлен протокол 1500 обмена сообщениями для передач, относящихся к информации работоспособности и нагрузки, обозначенных на фиг.12, между хостами 108 и модулями 106 выравнивания нагрузки. В общем случае механизм, управляемый событиями, используется для передачи изменений в таблицах 1204 работоспособности и нагрузки с хостов 108 на модули 106 выравнивания нагрузки. Иными словами, для описываемой реализации, информация передается с хостов 108 на модули 106 выравнивания нагрузки при обновлении таблиц 1204 работоспособности и нагрузки. Это позволяет избегать отправки моментальных снимков всех таблиц 1204 работоспособности и нагрузки и, таким образом, снизить потребление полосы пропускания сети инфраструктурой 1202 работоспособности и нагрузки.FIG. 15 illustrates a messaging protocol 1500 for transmissions related to health and load information indicated in FIG. 12 between hosts 108 and load balancing modules 106. In the general case, an event-driven mechanism is used to transfer changes to the health and load tables 1204 from hosts 108 to load balancing modules 106. In other words, for the described implementation, information is transmitted from hosts 108 to load balancing modules 106 when updating health and load tables 1204. This avoids sending snapshots of all health and load tables 1204 and thus reduces network bandwidth consumption by the health and load infrastructure 1202.

Протокол 1500 обмена сообщениями может быть реализован с использованием имеющегося механизма передачи сообщений. Такие механизмы включают в себя надежный широковещательный механизм, двухточечную передачу (например, протокол пользовательских датаграмм (UDP)) и т.д. Показано, что протокол 1500 обмена сообщениями содержит семь типов сообщений 1502-1514: сообщение 1502 «пульс», сообщение 1504 «прощание», сообщение 1506 «изменение строки», сообщение 1508 «получить мгновенный снимок таблицы», сообщение 1510 «отправить мгновенный снимок таблицы», сообщение 1512 «постулировать состояние таблицы» и сообщение 1514 «постулировать ошибку».The messaging protocol 1500 may be implemented using the existing messaging engine. Such mechanisms include a robust broadcast mechanism, point-to-point transmission (e.g., user datagram protocol (UDP)), etc. It is shown that the messaging protocol 1500 contains seven types of messages 1502-1514: a pulse message 1502, a goodbye message 1504, a row change message 1506, a receive snapshot of a table message 1508, a send snapshot of a table message 1510 ", Message 1512" postulate the state of the table "and message 1514" postulate the error ".

Следует понимать, что, за исключением стрелок 1516 и 1518, данная иллюстрация не устанавливает никакой взаимосвязи по времени между разными типами сообщений 1502-1514. Например, сообщение 1506 «изменение строки» не обязано следовать за сообщением 1504 «прощание».It should be understood that, with the exception of arrows 1516 and 1518, this illustration does not establish any time relationship between the different types of messages 1502-1514. For example, a 150 line change message 1506 is not required to follow a goodbye message 1504.

Сообщение 1502 «пульс» указывает, что конкретный хост 108 действует, и обеспечивает некоторый контроль ошибок для содержимого соответствующей таблицы 1204 работоспособности и нагрузки в отношении соответствующего конкретного кэша для конкретного хоста 1304 в объединенном кэше 1208 работоспособности и нагрузки. Каждая инфраструктура 1202 работоспособности и нагрузки на каждом хосте 108 отправляет сообщение «пульс», прямо или косвенно, в каждый кэш 1208 работоспособности и нагрузки на каждом модуле 106 выравнивания нагрузки.A heartbeat message 1502 indicates that a specific host 108 is operational, and provides some error control for the contents of the corresponding health and load table 1204 with respect to the corresponding specific cache for a specific host 1304 in the combined health and load cache 1208. Each health and load infrastructure 1202 on each host 108 sends a heartbeat message, directly or indirectly, to each health and load cache 1208 on each load balancing module 106.

Сообщения 1502 «пульс» решают проблему устаревания данных в объединенных кэшах 1208 работоспособности и нагрузки, которая возникает, отчасти, из-за того, что мгновенный снимок всей таблицы 1204 работоспособности и нагрузки не периодически передается каждому модулю 106 выравнивания нагрузки. Схема передачи сообщений 1502 «пульс» описана ниже со ссылкой на фиг.16.Pulse messages 1502 solve the problem of data obsolescence in the combined health and load caches 1208, which occurs, in part, because a snapshot of the entire health and load table 1204 is not periodically transmitted to each load balancing module 106. A heartbeat message transmission scheme 1502 is described below with reference to FIG.

Сообщения 1502 «пульс» включают в себя идентификатор для хоста, данные контроля ошибок и, в необязательном порядке, имя DNS. Идентификатор хоста может представлять собой уникальное (32-разрядное) двоичное число, выбранное во время настройки. Данные контроля ошибок могут представлять собой контрольную сумму, порядковый номер смены состояния, номер поколения, значение CRC и т.д., что позволяет принимающему модулю 106 выравнивания нагрузки удостоверяться, что содержимое его объединенного кэша 1208 работоспособности и нагрузки согласуется с содержимым таблицы 1204 работоспособности и нагрузки передающего хоста 108. В случае использования номера поколения можно использовать множественные ИД поколения, причем каждый ИД поколения присваивается «куску» приложений. Тогда сообщения могут ссылаться на номер куска или пару номер куска/ИД поколения, в зависимости от контекста.Pulse messages 1502 include an identifier for a host, error control data, and optionally a DNS name. The host ID can be a unique (32-bit) binary number selected during setup. The error control data may be a checksum, a state change sequence number, a generation number, a CRC value, etc., which allows the host load balancer 106 to verify that the contents of its combined health and load cache 1208 are consistent with the contents of the health table 1204 and load of the transmitting host 108. In the case of using the generation number, multiple generation IDs can be used, and each generation ID is assigned to a “piece” of applications. Then the messages can refer to a piece number or a pair of piece number / generation ID, depending on the context.

Данные контроля ошибок (или, более обобщенно, индикатор содержимого) могут представлять собой одно значение для всей таблицы 1204 работоспособности и нагрузки, а могут представлять собой множественные значения, определенные для каждого элемента 1302. В необязательном порядке может передаваться имя DNS (например, каждые «х» «ударов пульса») для проверки или обновления текущего правильного сетевого адреса хоста.The error control data (or, more generally, the content indicator) may represent a single value for the entire health and load table 1204, or may be multiple values defined for each element 1302. The DNS name may optionally be transmitted (for example, every " x "heartbeat") to check or update the current correct host network address.

Сообщение 1504 «прощание» передается с конкретного хоста 108 на модули 106 выравнивания нагрузки, чтобы указывать, что планируется отключение конкретного хоста 108. Сообщение 1504 «прощание» включает в себя идентификатор хоста, который может индексироваться/отображаться на сетевой адрес для конкретного хоста 108. Сообщение 1504 «прощание» используется для чистых, преднамеренных отключений хостами 108, чтобы обусловливать «быструю очистку». Однако в случае потери сообщения 1504 «прощание» кэши в конце концов отстают от элементов конкретного хоста 108, поскольку сообщения 1502 «пульс» больше не передаются.A goodbye message 1504 is sent from a specific host 108 to load balancing modules 106 to indicate that a particular host 108 is scheduled to shut down. A goodbye message 1504 includes a host identifier that can be indexed / mapped to a network address for a specific host 108. A “goodbye” message 1504 is used for clean, intentional outages by the hosts 108 to cause a “quick clean up”. However, in the event of a loss of goodbye message 1504, the caches ultimately lag behind the elements of a particular host 108, because heartbeat messages 1502 are no longer transmitted.

Сообщение 1506 «изменение строки» передается с конкретного хоста 108 на модули 106 выравнивания нагрузки, чтобы указывать, что работоспособность и нагрузка данного приложения 316 конкретного хоста 108 изменилась. Сообщение 1506 «изменение строки» включает в себя идентификатор хоста, идентификатор приложения, операцию и данные для операции. Иллюстративные идентификаторы хостов описаны выше в связи с сообщениями 1502 «пульс» и сообщениями 1504 «прощание». Проиллюстрированные идентификаторы приложений описаны выше в связи с идентификатором 1302(А) приложения в элементе 1302, связанном с приложением, таблиц 1204 работоспособности и нагрузки.A line change message 1506 is transmitted from a specific host 108 to load balancing modules 106 to indicate that the health and load of a given application 316 of a particular host 108 has changed. The line change message 1506 includes a host identifier, an application identifier, an operation, and data for the operation. Illustrative host identifiers are described above in connection with heartbeat messages 1502 and goodbye messages 1504. The illustrated application identifiers are described above in connection with the application identifier 1302 (A) in the application related item 1302, health and load tables 1204.

Операция смены строки может представлять собой добавление, удаление или обновление. Иными словами, данные для операции могут добавляться (для операции добавления) или заменять (для операции обновления) информацию, уже присутствующую в объединенных кэшах 1208 работоспособности и нагрузки на модулях 106 выравнивания нагрузки. Для операции удаления никаких данных не предусмотрено. Протокол 1500 обмена сообщениями задан так, что для одного сообщения 1506 «изменение строки» может быть предусмотрено выполнение множественных операций. Поэтому для конкретного идентификатора хоста наборы из идентификатора приложения, операции и данных операции могут повторяться для множественных приложений 316 хоста 108, идентифицированного конкретным идентификатором хоста.A line change operation may be an addition, deletion, or update. In other words, data for an operation can be added (for an addition operation) or replaced (for an update operation) with information already present in the combined health and load caches 1208 on the load balancing modules 106. No data is provided for the delete operation. The messaging protocol 1500 is defined such that multiple operations can be provided for a single “row change” message 1506. Therefore, for a particular host identifier, sets of the application identifier, operation, and operation data may be repeated for multiple applications 316 of the host 108 identified by the specific host identifier.

Сообщение 1508 «получить мгновенный снимок таблицы» передается с конкретного модуля 106 выравнивания нагрузки для конкретного объединенного кэша 1208 работоспособности и нагрузки на отдельный хост 108 или хосты 108. Это сообщение 1508 «получить мгновенный снимок таблицы» запрашивает у инфраструктуры 1202 работоспособности и нагрузки на хостах 108 предоставление соответствующей таблицы 1204 работоспособности и нагрузки для соответствующего хоста 108. Это сообщение включает в себя идентификацию запрашивающего модуля 106 выравнивания нагрузки и может использоваться модулем 106 выравнивания нагрузки (i) после его сбоя и последующего восстановления; (ii) после того, как хост 108 испытал сбой, восстановился и вновь начал отправлять сообщения 1502 «пульс»; (iii) если сообщение 1506 «изменение строки» отправлено на модуль 106 выравнивания нагрузки, но сообщение пропало, в результате чего произошла рассинхронизация между кэшем 1208 работоспособности и нагрузки и соответствующей таблицей 1204 работоспособности и нагрузки для соответствующего хоста 108; и (iv) т.д.A “receive snapshot of the table” message 1508 is sent from a specific load balancing module 106 for a specific combined health cache and load 1208 on a separate host 108 or hosts 108. This “receive snapshot of the table” message 1508 requests health and load infrastructure 1202 on the hosts 108 providing the appropriate health and load table 1204 for the corresponding host 108. This message includes the identification of the request load balancer 106 and may spolzovat load balancing unit 106 (i) after a failure and recovery; (ii) after host 108 experienced a failure, recovered, and again began sending heart rate messages 1502; (iii) if a “row change” message 1506 is sent to the load balancer 106 but the message is lost, resulting in a desynchronization between the health and load cache 1208 and the corresponding health and load table 1204 for the corresponding host 108; and (iv) etc.

Для случая (iii) потеря синхронизации между кэшем 1208 работоспособности и нагрузки и соответствующей таблицей 1204 работоспособности и нагрузки для соответствующего хоста 108 обнаруживается посредством последующего сообщения 1502 «пульс» от соответствующего хоста 108, поскольку «контроль ошибок» указывает, что объединенный кэш 1208 работоспособности и нагрузки устарел. Тогда модуль 106 выравнивания нагрузки отправляет сообщение 1508 «получить мгновенный снимок таблицы», что позволяет ему обновить свой объединенный кэш 1208 работоспособности и нагрузки. Таким образом, в любом из трех иллюстративных случаев (i, ii, iii) модуль 106 выравнивания нагрузки впоследствии восстанавливает свой объединенный кэш 1208 работоспособности и нагрузки с использованием сообщения 1508 «получить мгновенный снимок таблицы». Сообщение 1508 «получить мгновенный снимок таблицы» может многократно отправляться на каждый хост 108 в двухточечном режиме или может отправляться однократно на множественные хосты 108 в широковещательном режиме.For case (iii), loss of synchronization between the health and load cache 1208 and the corresponding health and load table 1204 for the corresponding host 108 is detected by a subsequent heartbeat message 1502 from the corresponding host 108, because the “error control” indicates that the combined health cache 1208 and load outdated. Then, the load balancing module 106 sends a “receive snapshot of the table” message 1508, which allows it to update its combined health and load cache 1208. Thus, in any of the three illustrative cases (i, ii, iii), the load balancing module 106 subsequently restores its combined health and load cache 1208 using the “receive snapshot of the table” message 1508. The 1508 “receive snapshot of the table” message may be sent multiple times to each host 108 in point-to-point mode, or may be sent once to multiple hosts 108 in broadcast mode.

Сообщение 1510 «отправить мгновенный снимок таблицы» отправляется с отдельного хоста 108 на конкретный модуль 106 выравнивания нагрузки после того, как отдельный хост 108 получил сообщение 1508 «получить мгновенный снимок таблицы» от конкретного модуля 106 выравнивания нагрузки, что указано стрелкой 1516. Содержимое сообщения 1510 «отправить мгновенный снимок таблицы» подготавливается инфраструктурой 1202 работоспособности и нагрузки и может включать в себя все или, по меньшей мере, множественные строки таблицы 1204 работоспособности и нагрузки для отдельных хостов 108, что позволяет конкретному модулю 106 выравнивания нагрузки восстанавливать свой объединенный кэш 1208 работоспособности и нагрузки. Сообщение 1510 «отправить мгновенный снимок таблицы» может быть отдельно построенным сообщением или может быть эквивалентно последовательности операций добавления в сообщении 1506 «изменение строки».A “send snapshot of the table” message 1510 is sent from a separate host 108 to a specific load balancer 106 after a separate host 108 receives a “receive snapshot of a table” message 1508 from a specific load balancer 106, as indicated by arrow 1516. Message Content 1510 “Send a snapshot of the table” is prepared by the health and load infrastructure 1202 and may include all or at least multiple rows of the health and load table 1204 for separate hosts 108, which allows a specific load balancing module 106 to recover its combined health and load cache 1208. The “send snapshot of the table” message 1510 may be a separately constructed message, or it may be equivalent to the sequence of operations added in the “row change” message 1506.

Сообщение 1512 «постулировать состояние таблицы» и сообщение 1514 «постулировать ошибку» относятся к целевому состоянию выравнивания нагрузки и текущему состоянию выравнивания нагрузки директивы 1302(С) выравнивателя нагрузки элемента 1302 таблицы 1204 работоспособности и нагрузки. Целевое состояние выравнивания нагрузки - это директива, в соответствии с которой должны работать модули 106 выравнивания нагрузки согласно желанию инфраструктуры 1202 работоспособности и нагрузки. Текущее состояние выравнивания нагрузки - это директива, в соответствии с которой в данный момент работают модули 106 выравнивания нагрузки согласно ожиданию инфраструктуры 1202 работоспособности и нагрузки. В общем случае два состояния выравнивания нагрузки идентичны.Message 1512 "postulate the state of the table" and message 1514 "postulate the error" refer to the target state of load balancing and the current state of load balancing directive 1302 (C) of the load balancer element 1302 of the table 1204 health and load. The target load balancing state is a directive according to which load balancing modules 106 should operate according to the desire of the health and load infrastructure 1202. The current state of load balancing is a directive according to which load balancing modules 106 are currently operating according to the expectation of the health and load infrastructure 1202. In general, the two load balancing states are identical.

Однако целевое состояние выравнивания нагрузки может отличаться от текущего состояния выравнивания нагрузки в переходный период изменения директивы состояния. Пусть, например, целевое состояние выравнивания нагрузки и текущее состояние выравнивания нагрузки первоначально установлены активными. При обнаружении проблемы с хостом 108 и/или его приложением 316 директива состояния выравнивания нагрузки меняется на «истощающееся». Эта директива «истощающееся» передается на модули 106 выравнивания нагрузки с использованием сообщения 1506 «изменение строки».However, the target load balancing state may differ from the current load balancing state during the transition period of the state directive. Let, for example, the target load balancing state and the current load balancing state be initially set active. If a problem is detected with the host 108 and / or its application 316, the load balancing state directive changes to “dwindling”. This dwindling directive is passed to load balancing modules 106 using the line change message 1506.

Пока это изменение директивы будет отмечено во всех объединенных кэшах 1208 работоспособности и нагрузки всех модулей 106 выравнивания нагрузки, имеет место задержка. В течение этого переходного периода целевое состояние выравнивания нагрузки является «истощающимся», тогда как текущее состояние выравнивания нагрузки по-прежнему является «активным» в таблице 1204 работоспособности и нагрузки хоста 108. Прежде чем текущее состояние выравнивания нагрузки сменится на «истощающееся», инфраструктура 1202 работоспособности и нагрузки хочет удостовериться, что объединенные кэши 1208 работоспособности и нагрузки действительно были обновлены до нового директивного состояния «истощения».While this change in directive will be noted in all the combined health and load caches 1208 of all load balancing modules 106, there is a delay. During this transition period, the target load balancing state is “depleting,” while the current load balancing state is still “active” in host health and load table 1204 108. Before the current load balancing state changes to “depleting”, infrastructure 1202 health and workloads wants to make sure that the combined health and load caches 1208 have indeed been updated to a new “depleted” directory state.

Чтобы проверить, что объединенные кэши 1208 работоспособности и нагрузки модулей 106 выравнивания нагрузки были обновлены в соответствии с новой директивой состояния, инфраструктура 1202 работоспособности и нагрузки оправляет сообщение 1512 «постулировать состояние таблицы» на модули 106 выравнивания нагрузки. Сообщение 1512 «постулировать состояние таблицы» передается через некоторое время (например, с заранее определенным периодом задержки) после передачи сообщения 1506 «изменение строки», указывая, что директива состояния должна измениться. В данном примере сообщение 1512 «постулировать состояние таблицы» указывает, что состояние таблицы должно быть «истощающееся». Пунктирная стрелка 1518 указывает, что модуль 106 выравнивания нагрузки отвечает на это сообщение 1512 «постулировать состояние таблицы», если его объединенный кэш 1208 работоспособности и нагрузки отличается от постулированной директивы состояния.In order to verify that the combined health and load caches 1208 of the load balancing modules 106 have been updated in accordance with the new state directive, the health and load infrastructure 1202 sends a "postulate table state" message 1512 to the load balancing modules 106. Message 1512 "postulate the state of the table" is transmitted after some time (for example, with a predetermined delay period) after the transmission of the message 1506 "row change", indicating that the status directive should change. In this example, the message “postulate table state” 1512 indicates that the state of the table should be “depleted”. The dashed arrow 1518 indicates that the load balancer 106 responds to this “postulate table state” message 1512 if its combined health and load cache 1208 is different from the postulated state directive.

Если директива в объединенном кэше 1208 работоспособности и нагрузки не отличается от постулированной директивы состояния, то модуль 106 выравнивания нагрузки отправляет сообщение 1514 «постулировать ошибку» на инфраструктуру 1202 работоспособности и нагрузки хоста 108, который выдал сообщение 1512 «постулировать состояние таблицы». Затем эта инфраструктура 1202 работоспособности и нагрузки периодически повторно отправляет сообщение 1512 «постулировать состояние таблицы», пока от объединенных кэшей 1208 работоспособности и нагрузки не перестанут поступать сообщения 1514 «постулировать ошибку». В этот момент инфраструктура 1202 работоспособности и нагрузки отправляет новое сообщение 1506 «изменение строки» с новым состоянием выравнивания нагрузки. В этом смысле объединенные кэши 1208 работоспособности и нагрузки являются окончательными определителями текущего состояния выравнивания нагрузки, и инфраструктура 1202 работоспособности и нагрузки является окончательным определителем целевого состояния выравнивания нагрузки.If the directive in the combined health and load cache 1208 does not differ from the postulated state directive, then the load balancing module 106 sends a “post error” message 1514 to the health and load infrastructure 1202 of host 108, which issued message 1512 “post table state”. Then, this health and load infrastructure 1202 periodically resends the “postulate table state” message 1512 until messages “postulate an error” 1514 no longer arrive from the combined health and load caches 1208. At this point, the health and load infrastructure 1202 sends a new row change message 1506 with a new load balancing state. In this sense, the combined health and load caches 1208 are the final determinants of the current load balancing state, and the health and load infrastructure 1202 is the final determinant of the target load balancing state.

На фиг.16 изображена схема передачи сообщений для передач, показанных на фиг.12, между хостами 108 и модулями 106 выравнивания нагрузки. Иллюстративная схема передачи сообщений может снижать полосу пропускания, потребляемую сообщениями 1502 «пульс» на средстве связи 1210. Схема передачи сообщений, показанная на фиг.16, конкретно приспособлена к сообщениями 1502 «пульс», но может использоваться для других сообщений протокола 1500 обмена сообщениями.FIG. 16 shows a message flow diagram for the transmissions shown in FIG. 12 between hosts 108 and load balancing modules 106. An exemplary messaging scheme may reduce the bandwidth consumed by heartbeat messages 1502 on the communication medium 1210. The messaging circuit shown in FIG. 16 is specifically adapted to heartbeat messages 1502, but can be used for other messages of the messaging protocol 1500.

Множественные хосты 108(1), 108(2), 108(3), …, 108(11) и 108(12) показаны совместно с модулями 106(1), 106(2), …, 106(u) выравнивания нагрузки. Каждая линия представляет связь между членами или принадлежность к группе хостов 108(1, 2, …, 12). Группа хостов 108(1, 2, …, 12) образует множество узлов, которые работают совместно для распространения информации «пульса» на модули 106 выравнивания нагрузки. Хотя показано двенадцать хостов, в каждую данную группу хостов может входить больше или меньше хостов. Кроме того, полная группа хостов 108, обслуживаемых инфраструктурой 106 выравнивания нагрузки, может делиться на одну, две, три или более групп хостов.Multiple hosts 108 (1), 108 (2), 108 (3), ..., 108 (11) and 108 (12) are shown in conjunction with load balancing modules 106 (1), 106 (2), ..., 106 (u) . Each line represents a relationship between members or membership of a host group 108 (1, 2, ..., 12). The host group 108 (1, 2, ..., 12) forms a plurality of nodes that work together to distribute the pulse information to the load balancing modules 106. Although twelve hosts are shown, each given group of hosts can include more or less hosts. In addition, a complete group of hosts 108 served by load balancing infrastructure 106 can be divided into one, two, three, or more host groups.

В описываемой реализации узлы, входящие в группу хостов 108(1, 2, …, 12), избирают лидера, отвечающего на передачу сообщений 1502 «пульс» на модули 106 выравнивания нагрузки. Каждый (нелидирующий) хост 108 из группы хостов 108(1, 2, …, 12) отправляет свои сообщения 1502 «пульс» избранному лидеру. В данном примере избранным лидером является хост 108(4).In the described implementation, the nodes included in the host group 108 (1, 2, ..., 12) select a leader who is responsible for sending a pulse message 1502 to the load balancing modules 106. Each (non-leading) host 108 from the group of hosts 108 (1, 2, ..., 12) sends its messages 1502 "pulse" to the selected leader. In this example, the selected leader is host 108 (4).

Информация «пульса» каждого хоста 108 из группы хостов 108(1, 2, …, 12), через узлы-члены, распространяется на лидирующий хост 108(4) группы. Хост 108(4) собирает информацию «пульса» и объединяет ее в объединенном сообщении 1602 «пульс». Объединенные сообщения 1602(1), 1602(2), …, 1602(u) «пульс» отправляются на соответствующие модули 106(1), 106(2), …, 106(u). Эти объединенные сообщения 1602 «пульс» можно в необязательном порядке сжимать для дальнейшего снижения потребления полосы пропускания.The pulse information of each host 108 from the group of hosts 108 (1, 2, ..., 12), through the member nodes, is distributed to the leading host 108 (4) of the group. The host 108 (4) collects the information of the "pulse" and combines it in the combined message 1602 "pulse". The combined pulse messages 1602 (1), 1602 (2), ..., 1602 (u) are sent to the corresponding modules 106 (1), 106 (2), ..., 106 (u). These combined heartbeat messages 1602 may optionally be compressed to further reduce bandwidth consumption.

В качестве другой альтернативы лидирующий хост 108(4) может только пересылать изменения состава группы в объединенные кэши 1208 работоспособности и нагрузки. Иными словами, в этом режиме, объединенные кэши 1208 работоспособности и нагрузки имеют дело главным образом, если не исключительно, с изменениями состояния в отношении принадлежности. Лидирующий хост 108(4) призван гарантировать пересылку первого приветствия, когда хост 108 выходит на связь, и отправку сообщения 1504 «прощание» при отключении хоста 108. Дополнительно, хост 108 может периодически указывать необходимость «пересылки» сообщения 1502 «пульс». Таким образом лидирующий хост 108(4) получает предписание отправить его в объединенные кэши 1208 работоспособности и нагрузки, даже если оно не выражает изменение принадлежности.As another alternative, the leading host 108 (4) can only forward group composition changes to the combined health and load caches 1208. In other words, in this mode, the combined health and load caches 1208 deal mainly, if not exclusively, with state changes with respect to ownership. The leading host 108 (4) is designed to guarantee the forwarding of the first greeting when the host 108 is communicating, and sending a goodbye message 1504 when the host 108 is disconnected. Additionally, the host 108 may periodically indicate the need to “forward” the heartbeat message 1502. Thus, the leading host 108 (4) receives an order to send it to the combined health and load caches 1208, even if it does not express a change of ownership.

Сообщения 1502 «пульс» (в том числе, объединенные сообщения 1602 «пульс») используются модулями 106 выравнивания нагрузки, когда их объединенные кэши 1208 работоспособности и нагрузки рассинхронизированы с таблицами 1204 работоспособности и нагрузки. Эта рассинхронизация может возникать, например, вследствие повреждения или иного сбоя объединенного кэша 1208 работоспособности и нагрузки и/или модуля 106 выравнивания нагрузки. Согласно описанному выше, каждое сообщение 1502 «пульс» содержит данные контроля ошибок, которые формируются для проверки эквивалентности между объединенным кэшем 1208 работоспособности и нагрузки и таблицами 1204 работоспособности и нагрузки. В случае обнаружения неэквивалентности в отношении конкретного хоста 108 и/или его приложения 316, из сообщений 1502 «пульс» извлекается имя DNS конкретного хоста 108.Heartbeat messages 1502 (including combined heartbeat messages 1602) are used by load balancing modules 106 when their combined health and load caches 1208 are out of sync with health and load tables 1204. This desynchronization may occur, for example, due to damage or other malfunction of the combined health and load cache 1208 and / or load balancing module 106. As described above, each heartbeat message 1502 contains error control data that is generated to verify equivalence between the combined health and load cache 1208 and the health and load tables 1204. In the event of unequality with respect to a particular host 108 and / or its application 316, the DNS name of the specific host 108 is retrieved from the heartbeat message 1502.

Объединенный кэш 1208 работоспособности и нагрузки использует имя DNS для отправки сообщения 1508 «получить мгновенный снимок таблицы» на конкретный хост 108 в целях получения обновленной информации 1206 работоспособности и нагрузки в виде сообщения 1510 «отправить мгновенный снимок таблицы». Другое или такое же сообщение 1508 «получить мгновенный снимок таблицы» отправляется на каждый хост 108, для которого обнаружена неэквивалентность. В конце концов, информация 1206 работоспособности и нагрузки в объединенном кэше 1208 работоспособности и нагрузки оказывается эквивалентной информации 1206 работоспособности и нагрузки в таблицах 1204 работоспособности и нагрузки, что проверяется посредством новых сообщений 1502 «пульс». Таким образом, работа сбойного кэша 1208 работоспособности и нагрузки может восстанавливаться без вмешательства извне с использованием протокола 1500 обмена сообщениями и схемы контроля эквивалентности.The combined health and load cache 1208 uses the DNS name to send a 1508 "receive snapshot of the table" message to a specific host 108 in order to receive updated health and load information 1206 in the form of a "send snapshot of the table" message 1510. Another or the same 1508 “receive snapshot of the table” message is sent to each host 108 for which nonequivalence is detected. In the end, the health and load information 1206 in the combined health and load cache 1208 is equivalent to the health and load information 1206 in the health and load tables 1204, which is verified by new heartbeat messages 1502. Thus, the operation of the failed cache 1208 health and load can be restored without external intervention using the protocol 1500 messaging and control circuit equivalence.

На фиг.17А и 17В изображены сценарии хранения на посреднике информации работоспособности и нагрузки для таблиц 1204 работоспособности и нагрузки и для объединенных кэшей 1208 работоспособности и нагрузки, соответственно. В реализациях, описанных выше со ссылками на фиг.12-16, хосты 108 содержат инфраструктуру 1202 работоспособности и нагрузки. Однако в других реализациях хосты могут не содержать инфраструктуру 1202 работоспособности и нагрузки.17A and 17B depict scenarios for storing health and load information on an intermediary for health and load tables 1204 and for combined health and load caches 1208, respectively. In the implementations described above with reference to FIGS. 12-16, hosts 108 comprise a health and load infrastructure 1202. However, in other implementations, the hosts may not contain the health and load infrastructure 1202.

Например, на хосте может работать версия приложения(й) и/или операционная система, для которой инфраструктура работоспособности и нагрузки либо не реализована, либо, по соображениям политики, не установлена на хосте. В результате, на этих типах хостов инфраструктура 1202 работоспособности и нагрузки не выполняется. Хост 1702 является таким хостом, на котором не выполняется инфраструктура 1202 работоспособности и нагрузки. Тем не менее, хост 1702 может использовать инфраструктуру 1202 работоспособности и нагрузки, которая выполняется на одном или нескольких посредниках, например на посреднике 1704.For example, the host may have version of the application (s) and / or an operating system for which the health and load infrastructure is either not implemented or, for policy reasons, is not installed on the host. As a result, the health and load infrastructure 1202 is not running on these types of hosts. The host 1702 is such a host on which the health and load infrastructure 1202 is not running. However, host 1702 may utilize the health and load infrastructure 1202 that runs on one or more intermediaries, such as intermediary 1704.

На посреднике 1704 размещается и выполняется инфраструктура 1202 работоспособности и нагрузки, включающая в себя таблицу 1204 работоспособности и нагрузки. Хост 712 может использовать функциональные возможности инфраструктуры 1202 работоспособности и нагрузки путем представления информации 1206 о работоспособности и нагрузке в таблицу 1204. Для приложений, работающих на хосте 1702. Альтернативно, посредник 1704 может выводить работоспособность и нагрузку на хосте 1702, выполняя действия внешнего слежения. Посредник 1704 показан как посредник 1704(1) и 1704(2) для избыточности и, следовательно, высокой надежности.At an intermediary 1704, health and load infrastructure 1202 is hosted and executed, including a health and load table 1204. The host 712 can utilize the functionality of the health and load infrastructure 1202 by presenting the health and load information 1206 to a table 1204. For applications running on the host 1702. Alternatively, the broker 1704 can output the health and load on the host 1702 by performing external tracking actions. Mediator 1704 is shown as mediator 1704 (1) and 1704 (2) for redundancy and, therefore, high reliability.

В реализациях, описанных выше со ссылками на фиг.12-16 и ниже со ссылками на фиг.8, выравнивание нагрузки осуществляется с помощью модулей 106 выравнивания нагрузки, содержащих объединенные кэши 1208 работоспособности и нагрузки. Однако другие реализации могут предусматривать выравнивание нагрузки без применения объединенных кэшей 1208 работоспособности и нагрузки.In the implementations described above with reference to FIGS. 12-16 and below with reference to FIG. 8, load balancing is performed using load balancing modules 106 containing the combined health and load caches 1208. However, other implementations may include load balancing without using the combined health and load caches 1208.

Например, выравнивание нагрузки можно осуществлять посредством монолитного оборудования выравнивания нагрузки или другой инфраструктуры выравнивания нагрузки, которая не хранит и/или не может хранить или иным образом не содержит объединенный кэш 1208 работоспособности и нагрузки. Выравниватель 1706 нагрузки отражает такое(ие) устройство или устройства выравнивания нагрузки, которые не имеют объединенного кэша 1208 работоспособности и нагрузки. Тем не менее, выравниватель 1706 нагрузки может использовать объединенный кэш 1208 работоспособности и нагрузки, существующий на одном или нескольких посредниках, например на посреднике 1708.For example, load balancing can be performed using monolithic load balancing equipment or other load balancing infrastructure that does not store and / or cannot store or otherwise does not contain a combined health and load cache 1208. The load balancer 1706 reflects such load balancing device or devices that do not have a combined health and load cache 1208. However, load balancer 1706 may utilize a combined health and load cache 1208 existing on one or more intermediaries, such as intermediary 1708.

Посредник 1708 содержит объединенный кэш 1208 работоспособности и нагрузки, в котором хранится информация 1206 работоспособности и нагрузки для хостированных приложений, обслуживаемых выравнивателем 1706 нагрузки. Выравниватель 1706 нагрузки может использовать информацию 1206 работоспособности и нагрузки объединенного кэша 1208 работоспособности и нагрузки при осуществлении функций выравнивания нагрузки, осуществляя доступ к такой информации с использованием программных интерфейсов приложения (API), «родных» для выравнивателя 1706 нагрузки и поддерживаемых им. Альтернативно, объединенный кэш 1208 работоспособности и нагрузки может вызывать API для передачи информации 1206 работоспособности и нагрузки, включая директивы, на выравниватель 1706 нагрузки. Посредник 1708 показан как посредник 1708(1) и 1708(2) избыточности и, следовательно, высокой надежности.Mediator 1708 contains a combined health and load cache 1208 that stores health and load information 1206 for hosted applications served by load balancer 1706. The load balancer 1706 can use the health and load information 1206 of the combined health and load cache 1208 when performing load balancing functions by accessing such information using the application program interfaces (native) for the load balancer 1706 and supported by it. Alternatively, the combined health and load cache 1208 may invoke an API to transmit health and load information 1206, including directives, to load balancer 1706. The mediator 1708 is shown as the mediator 1708 (1) and 1708 (2) of redundancy and, therefore, high reliability.

На фиг.18 показана процедура распределения целевых конечных точек приложения с использованием классификатора 304 и обработчика 314 работоспособности и нагрузки, входящих в состав модуля 106 выравнивания нагрузки. После того как обработчик 314 работоспособности и нагрузки получает доступ к объединенному кэшу 1208 работоспособности и нагрузки, содержащаяся в нем информация 1206 работоспособности и нагрузки используется при выборе конечных точек приложения для новых запросов/соединений.On Fig shows the distribution process of the target endpoints of the application using the classifier 304 and the processor 314 health and load, which are part of the module 106 load balancing. After the health and load handler 314 gains access to the combined health and load cache 1208, the health and load information 1206 contained therein is used to select application endpoints for new requests / connections.

Согласно описанному выше со ссылкой на фиг.13В, объединенный кэш 1208 работоспособности и нагрузки содержит кэшированную информацию 1206 работоспособности и нагрузки для множественных хостов 108. Для облегчения создания и обновления объединенного кэша 1208 работоспособности и нагрузки по информации 1206 работоспособности и нагрузки, полученной от множественных хостов 108, информация 1206 работоспособности и нагрузки организована в нем так, что она доступна по идентификатору каждого хоста 108. Однако информация 1206 работоспособности и нагрузки также организована в нем так, что она доступна по типу приложения 316 с целью облегчения выбора конечной точки приложения.As described above with reference to FIG. 13B, the combined health and load cache 1208 contains cached health and load information 1206 for multiple hosts 108. To facilitate the creation and updating of the combined health and load cache 1208 based on the health and load information 1206 received from the multiple hosts 108, the health and load information 1206 is organized therein so that it is accessible by the identifier of each host 108. However, the health and load information 1206 is also it is organized in such a way that it is accessible by application type 316 in order to facilitate the selection of the application endpoint.

Другими словами, обработчик 314 работоспособности и нагрузки способен обращаться к информации 1206 работоспособности и нагрузки для каждого приложения 316 в отдельности по информации 1206 работоспособности и нагрузки для множественных хостов 108. После получения информации 1206 работоспособности и нагрузки для данного приложения 316 для каждого хоста 108 выделение входящих запросов соединения может осуществляться в соответствии с этой информацией 1206 работоспособности и нагрузки. Например, возможные конечные точки для данного приложения 316 могут выделяться входящим запросам соединения путем выбора конечных точек данного приложения 316 с учетом имеющейся относительной емкости нагрузки среди работоспособных конечных точек для данного приложения 316.In other words, the health and load processor 314 is able to access health and load information 1206 for each application 316 individually from the health and load information 1206 for multiple hosts 108. After receiving the health and load information 1206 for this application 316 for each host 108, the incoming connection requests may be in accordance with this health and load information 1206. For example, possible endpoints for a given application 316 can be allocated to incoming connection requests by selecting the endpoints of this application 316, taking into account the available relative load capacity among operational endpoints for this application 316.

В описываемой реализации классификатор 304 делает запрос 1802 распределения целевых конечных точек приложения обработчику 314 работоспособности и нагрузки. Показано, что запрос 1802 распределения целевых конечных точек приложения содержит (i) виртуальный IP-адрес и порт, (ii) протокол и (iii) информацию, связанную с протоколом. Поэтому запрос 1802 распределения целевых конечных точек приложения идентифицирует тип приложения 316, которому адресованы входящие запросы соединения.In the described implementation, the classifier 304 makes a request 1802 distribution of the target endpoints of the application processor 314 health and load. It is shown that the request 1802 distribution of the target endpoints of the application contains (i) a virtual IP address and port, (ii) the protocol and (iii) information associated with the protocol. Therefore, the application target distribution endpoint distribution request 1802 identifies the type of application 316 to which incoming connection requests are addressed.

Обработчик 314 работоспособности и нагрузки получает запрос 1802 распределения целевых конечных точек приложения и выбирает, по меньшей мере, одну физическую конечную точку, соответствующую идентифицированному типу приложения 316, с использованием любого одного или более из многочисленных механизмов выбора. Для уменьшения задержки обработчик 314 работоспособности и нагрузки выбирает распределение конечных точек, подлежащее использованию по ряду входящих запросов соединения. Это распределение поступает от обработчика 314 работоспособности и нагрузки на классификатор 304 с использованием ответа 1804 по распределению конечных точек приложения. Показано, что ответ 1804 по распределению конечных точек приложения содержит распределение физических IP-адресов и портов (например, конечных точек IP1, IP2 и IP3) для идентифицированного типа приложения 316.The health and load processor 314 receives a request 1802 for distributing the application target endpoints and selects at least one physical endpoint corresponding to the identified type of application 316 using any one or more of a variety of selection mechanisms. To reduce latency, the health and load handler 314 selects the endpoint distribution to be used for a number of incoming connection requests. This distribution comes from the processor 314 health and load on the classifier 304 using the response 1804 on the distribution of the endpoints of the application. It is shown that the response 1804 on the distribution of application endpoints contains a distribution of physical IP addresses and ports (for example, endpoints IP1, IP2 and IP3) for the identified application type 316.

Ответ 1804 по распределению конечных точек приложения может быть выполнен с использованием одной или нескольких схем распределения. Для примера, показаны маркерная схема 1806 распределения и процентная схема 1808 распределения. Маркерная схема 1806 распределения является модульной схемой выделения, а процентная схема 1808 распределения является временной схемой распределения.Response 1804 on the distribution of application endpoints may be performed using one or more distribution schemes. For example, a marker distribution scheme 1806 and a percentage distribution scheme 1808 are shown. Marker distribution scheme 1806 is a modular allocation scheme, and percentage distribution scheme 1808 is a temporary distribution scheme.

Маркерная схема 1806 распределения выделяет маркеры для каждой работоспособной конечной точки IP1, IP2 и IP3 в соответствии с их относительной нагрузкой и отношениями емкостей. В иллюстрируемом примере из полной имеющейся емкости IP1 имеет 40% имеющейся емкости, IP2 имеет 35% имеющейся емкости, и IP3 имеет 25% имеющейся емкости. Таким образом, общее количество маркеров делится в соответствии с этими процентами. Общее количество маркеров может обеспечиваться как часть запроса 1802 распределения целевых конечных точек приложения или определяться обработчиком 314 работоспособности и нагрузки.Marker distribution scheme 1806 allocates markers for each operable endpoint IP1, IP2, and IP3 according to their relative load and capacity ratios. In the illustrated example, of the total available capacity, IP1 has 40% of the available capacity, IP2 has 35% of the available capacity, and IP3 has 25% of the available capacity. Thus, the total number of markers is divided according to these percentages. The total number of tokens may be provided as part of a request 1802 for distributing application target endpoints, or determined by a health and load handler 314.

Можно использовать любое значение общего количества маркеров, например 10, 45, 100, 250, 637, 1000 и т.д. Это значение может устанавливаться в зависимости от количества запросов соединения в секунду и скорости/частоты изменения работоспособности и/или нагрузки приложения. Классификатор 304 «тратит»/потребляет один маркер, отвечая на каждый запрос соединения при выделении конечных точек приложения, пока не закончатся маркеры; затем классификатор 304 запрашивает другое маркерное распределение с использованием запроса 1802 распределения целевых конечных точек приложения.You can use any value of the total number of markers, for example 10, 45, 100, 250, 637, 1000, etc. This value can be set depending on the number of connection requests per second and the speed / frequency of changes in the health and / or load of the application. Classifier 304 “spends” / consumes one token, responding to each connection request when allocating application endpoints until the tokens run out; then, the classifier 304 requests another marker distribution using the application target distribution endpoint query 1802.

Процентная схема 1808 распределения определяет имеющуюся относительную емкость аналогичным образом. Однако вместо маркеров эти определенные имеющиеся относительные емкости на конечную точку приложения предоставляются классификатору 304 совместно с таймером 1810 длительности. Классификатор 304 выделяет целевые конечные точки приложения входящим запросам соединения в соответствии с этими имеющимися процентами относительной емкости до истечения таймера 1810 длительности.Percentage distribution scheme 1808 determines available relative capacity in a similar manner. However, instead of tokens, these specific available relative capacities per application endpoint are provided to classifier 304 in conjunction with a timer 1810 of duration. Classifier 304 allocates target application endpoints to incoming connection requests in accordance with these available percentages of relative capacity before the timer 1810 expires.

Согласно процентной схеме 1808 распределения, классификатор 304 поддерживает непрерывную запись выделений конечных точек приложения для присоединения к распределенным процентам и отслеживает время таймера 1810 длительности. По истечении времени классификатор 304 запрашивает другое процентное распределение с использованием запроса 1802 распределения целевых конечных точек приложения.According to the percentage distribution scheme 1808, the classifier 304 maintains a continuous record of the endpoint allocations of the application to join the distributed percentages and tracks the duration timer 1810. At the end of time, the classifier 304 requests another percentage distribution using a request 1802 distribution of the target endpoints of the application.

Заметим, что маркерная схема 1806 распределения также может использовать предел времени. Если распределенные маркеры слишком стары, их можно отбросить и получить новые. В противном случае, классификатор 304 может потреблять несвежие маркеры, которые были ранее выделены на основании информации работоспособности и нагрузки, которая в данный момент слишком устарела. Использование распределений конечных точек приложения классификатором 304 описано ниже в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов».Note that marker distribution scheme 1806 may also use a time limit. If the distributed markers are too old, you can discard them and get new ones. Otherwise, classifier 304 may consume stale tokens that were previously allocated based on health information and load, which is currently too outdated. The use of classifier 304 application endpoint distributions is described below in the section entitled “Classification, Forwarding, and Routing of Requests”.

Отслеживание сеансовSession Tracking

В этом разделе описано, как информацию статуса хоста, например информацию сеанса, можно собирать и использовать для выравнивания сетевой нагрузки. В этом разделе ссылки идут, главным образом, на фиг.19-24 и освещены функции сохранения сродства к сеансу, например, обеспечиваемые блоком 308 отслеживания сеансов (фиг.3). Согласно описанному выше со ссылкой на фиг.1-3, каждый хост 108 хостирует одно или несколько приложений 316, которые предоставляют услугу(и) клиентам 102. Блок 308 отслеживания сеансов использует информацию сеанса, относящуюся к контекстам для соединений, установленных между приложениями 316 и клиентами 102 для определенных описанных реализаций выравнивания сетевой нагрузки.This section describes how host status information, such as session information, can be collected and used to balance network load. In this section, the links go mainly to FIGS. 19-24 and the functions of maintaining affinity for the session, for example, provided by the session tracking unit 308 (FIG. 3), are highlighted. As described above with reference to FIGS. 1-3, each host 108 hosts one or more applications 316 that provide service (s) to clients 102. Session tracking unit 308 uses session information related to contexts for connections established between applications 316 and clients 102 for certain described network load balancing implementations.

На фиг.19 показан подход к выравниванию сетевой нагрузки с использованием информации 1902 сеанса. Соединение [1] обозначает, что клиент 102(1) создает новое соединение с хостом 108(2) через инфраструктуру 106 выравнивания нагрузки. Инфраструктура 106 выравнивания нагрузки может состоять из одного или нескольких модулей 106 выравнивания нагрузки. При поступлении запроса соединения на инфраструктуру 106 выравнивания нагрузки запрос обычно маршрутизируется на хост 108 с использованием функций выравнивания сетевой нагрузки в соответствии с информацией работоспособности и/или нагрузки хостов 108 и/или их приложений 316 (явно не показанной на фиг.19).19 shows an approach to balancing network load using session information 1902. Connection [1] means that client 102 (1) creates a new connection with host 108 (2) through load balancing infrastructure 106. The load balancing infrastructure 106 may consist of one or more load balancing modules 106. When a connection request arrives at the load balancing infrastructure 106, the request is usually routed to the host 108 using network load balancing functions in accordance with the health and / or load information of the hosts 108 and / or their applications 316 (not explicitly shown in FIG. 19).

При установлении соединения [1] между клиентом 102(1) и обслуживающим приложением 316, которое в данном примере размещается на хосте 108(2), устанавливается сеанс. Сеанс обеспечивает контекст для двусторонней связи между клиентом 102(1) и хостом 108(2). Информация для контекста сеанса хранится на хосте 108(2). По завершении соединения [1] контекст сеанса может не использоваться вновь. С другой стороны, контекст сеанса может вновь быть полезен, если клиент 102(1) пытается инициировать другое соединение с хостами 108 для услуг, предоставляемых приложением 316. Если это другое соединение не маршрутизируется на тот же хост 108(2), где хранится этот контекст сеанса, то клиенту 102(1) приходится устанавливать новый контекст сеанса, что может требовать затрат времени, больших объемов данных/обработки и/или расстраивать человека-пользователя клиента 102(1). При выравнивании сетевой нагрузки на основе информации работоспособности и/или нагрузки, вероятность того, что второе соединение будет маршрутизировано на 108(2), будет не больше, чем случайный шанс.When a connection is established [1] between the client 102 (1) and the serving application 316, which in this example is hosted on the host 108 (2), a session is established. A session provides a context for two-way communication between client 102 (1) and host 108 (2). Session context information is stored on host 108 (2). Upon completion of connection [1], the session context may not be reused. On the other hand, a session context may again be useful if client 102 (1) attempts to initiate another connection with hosts 108 for services provided by application 316. If this other connection is not routed to the same host 108 (2) where this context is stored session, then the client 102 (1) has to establish a new session context, which may require time consuming, large amounts of data / processing and / or upset the human user of the client 102 (1). When balancing the network load based on the health and / or load information, the probability that the second connection will be routed to 108 (2) will be no more than a random chance.

Если же инфраструктура 106 выравнивания нагрузки имеет доступ к отображению между информацией сеанса и хостами 108, то инфраструктура 106 выравнивания нагрузки может маршрутизировать запросы соединения, относящиеся к ранее установленным сеансам, на соответствующий хост 108. Некоторую информацию сеанса можно вывести из содержимого пакетов, переносимых через инфраструктуру 106 выравнивания нагрузки. Однако этот подход неточен и нецеленаправлен по ряду причин. Во-первых, установление и окончание сеанса всего лишь предполагается. Во-вторых, некоторые сеансы не заканчиваются «официально» с надлежащим указанием, включаемым в пакет. Например, некоторые сеансы просто приостанавливаются. В-третьих, пакеты, передаваемые от хоста 108(2) на клиент 102(1), могут перемещаться по пути, который не включают в себя инфраструктуру 106 выравнивания нагрузки, что мешает инфраструктуре 106 выравнивания нагрузки отслеживать такие пакеты на предмет информации сеанса.If the load balancing infrastructure 106 has access to the mapping between the session information and the hosts 108, then the load balancing infrastructure 106 can route connection requests related to previously established sessions to the corresponding host 108. Some session information can be derived from the contents of packets carried through the infrastructure 106 load balancing. However, this approach is inaccurate and unfocused for a number of reasons. Firstly, the establishment and termination of the session is only assumed. Secondly, some sessions do not end “officially” with the proper indication included in the package. For example, some sessions simply pause. Thirdly, packets transmitted from the host 108 (2) to the client 102 (1) can travel along a path that does not include the load balancing infrastructure 106, which prevents the load balancing infrastructure 106 from monitoring such packets for session information.

Согласно фиг.19, хосты 108 предоставляют информацию 1902 сеанса (ИС) инфраструктуре 106 выравнивания нагрузки. Используя информацию 1902 сеанса от хостов 108, блок 1904 сохранения сродства к сеансу может сохранять сродство между установленным сеансом и хостом 108, на котором был установлен сеанс. Информация 1902 сеанса включает в себя связь или отображение между каждым сеансом, установленным между клиентом 102 и конкретным хостом 108, и этим конкретным хостом 108. Это отображение доступно блоку 1904 сохранения сродства к сеансу как часть отображения 1906 хост - информация сеанса. Более конкретные примеры информации 1902 сеанса приведены ниже, особенно со ссылкой на фиг. 20, 22, 23A и 23B.As shown in FIG. 19, hosts 108 provide session (IC) information 1902 to load balancing infrastructure 106. Using session information 1902 from hosts 108, affinity storage session 1904 can maintain affinity between the established session and the host 108 on which the session was established. Session information 1902 includes a connection or mapping between each session established between client 102 and a specific host 108 and that particular host 108. This display is available to session affinity storage unit 1904 as part of the host information display 1906. More specific examples of session information 1902 are provided below, especially with reference to FIG. 20, 22, 23A and 23B.

В определенных описанных реализациях отслеживания сеансов логическая природа клиентов 102 является подходящей. Согласно указанному выше со ссылкой на фиг.1, клиент 102 может быть конкретным устройством и/или конкретным пользователем устройства. Поэтому сродство к сеансу для пользовательского клиента 102, который осуществляет доступ к хостам 108 с различных устройств, все еще может сохраняться. Поэтому продолжения сеансов с использованием информации 1902 сеансов могут все еще осуществляться в сценариях посредника (например, как у некоторых поставщиков услуг Интернета (ПУИ)).In certain described session tracking implementations, the logical nature of clients 102 is appropriate. According to the above with reference to figure 1, the client 102 may be a specific device and / or a specific user of the device. Therefore, the affinity for the session for the user client 102, which accesses the hosts 108 from various devices, can still be maintained. Therefore, continuation of sessions using the information of 1902 sessions can still be carried out in intermediary scenarios (for example, as with some Internet service providers (ISPs)).

Согласно примеру соединения [1], сеанс, установленный на хосте 108(2), предоставляется инфраструктуре 106 выравнивания нагрузки как информация 1902 сеанса. В частности, связь/отображение между (i) контекстом сеанса клиента 102(1) и хостом 108(2) и (ii) идентификатор для хоста 108(2) создаются на отображении 1906 хост - информация сеанса. Когда впоследствии поступает запрос соединения для соединения [2] для того же контекста сеанса, блок 1904 сохранения сродства к сеансу размещает этот контекст сеанса в отображении 1906 хост - информация сеанса и выясняет, что хост 108(2) связан с контекстом сеанса из связи/отображения.According to connection example [1], a session established on host 108 (2) is provided to load balancing infrastructure 106 as session information 1902. In particular, a connection / mapping between (i) the client session context 102 (1) and the host 108 (2) and (ii) the identifier for the host 108 (2) are created on the host-session information display 1906. When a connection request is subsequently received for the connection [2] for the same session context, the affinity for the session unit 1904 places this session context in the display 1906 of the host information of the session and finds out that the host 108 (2) is connected to the session context from the connection / display .

В соответствии с отображением хоста 108(2) на запрашиваемый контекст сеанса, выявленным блоком 1904 сохранения сродства к сеансу из отображения 1906 хост - информация сеанса, соединение [2] маршрутизируется на хост 108(2). В этом смысле, сохранение сродства к сеансу имеет более высокий приоритет для инфраструктуры 106 выравнивания нагрузки, чем решения по выравниванию сетевой нагрузки на основании работоспособности и нагрузки приложения. Однако работоспособность и нагрузка может быть более важным фактором выравнивания сетевой нагрузки, чем отслеживание сеанса, например, в случае чрезвычайно высокой нагрузки или сбойного состояния приложения, относящегося к сеансу, и/или хоста.In accordance with the mapping of the host 108 (2) to the requested session context, detected by the affinity block 1904 for the session from the host-session information display 1906, the connection [2] is routed to the host 108 (2). In this sense, maintaining affinity for a session has a higher priority for load balancing infrastructure 106 than solutions for balancing network load based on application health and load. However, uptime and load can be a more important factor in balancing network load than session tracking, for example, in the case of extremely high load or failure of the session-related application and / or host.

Многие типы соединений могут быть связанными с сеансом. Примеры включают в себя: TCP-соединение, сеанс по протоколу защиты транспортного уровня (TLS)/SSL, сеанс PPTP, сеанс IPSec/L2TP, сеанс ISA, сеанс на основе cookie HTTP, сеанс терминального сервера, сеанс, заданный администратором, и т.д. Для наглядности, TCP-соединение рассматривается как сеанс TCP-пакетов. Кроме того, может перечисляться и поддерживаться модель задания сеансов администратором. Кроме того, могут также поддерживаться сеансы на основе IP-адреса клиента, разграниченные простоями. Это сравнительно неинтеллектуальная поддержка сеанса, но ожидается некоторыми пользователями.Many types of connections can be associated with a session. Examples include: TCP connection, Transport Layer Security (TLS) / SSL session, PPTP session, IPSec / L2TP session, ISA session, HTTP cookie-based session, terminal server session, administrator-defined session, etc. d. For clarity, a TCP connection is considered as a TCP packet session. In addition, an administrator-defined session setting model can be listed and supported. In addition, client IP-based sessions delimited by downtime can also be supported. This is a relatively dumb session support, but is expected by some users.

Запрос соединения от клиента 102 различается по типу нужного сеанса. Например, для сеансов типа «TCP-соединение» запрос соединения содержит TCP-пакет. Для сеансов типа «сеанс SSL» запрос соединения содержит TCP-соединение. Другие такие запросы соединения соответствуют другим типам сеанса. Эти примеры также показывают, какие могут быть уровни сеанса. На нижнем уровне сеанса контекст сеанса для TCP-соединения может включать в себя упорядоченную четверку TCP, номер сеанса, количество переданных/принятых битов и т.д. На более высоком уровне сеанса контекст сеанса для сеанса SSL может включать в себя 32-битовый ИД сеанса, открытый ключ клиента 102, предоставляемый хосту 108, и т.д.The connection request from client 102 varies in the type of session needed. For example, for sessions of the TCP Connection type, the connection request contains a TCP packet. For SSL session type sessions, the connection request contains a TCP connection. Other such connection requests correspond to other types of session. These examples also show what session levels might be. At the lower level of the session, the session context for a TCP connection may include an ordered four TCP, session number, number of transmitted / received bits, etc. At a higher session level, the session context for the SSL session may include a 32-bit session ID, the public key of the client 102 provided to the host 108, etc.

На фиг.20 изображен иллюстративный подход к выравниванию сетевой нагрузки с использованием передачи информации сеанса посредством извещений 2006 и сообщений 2008. Показаны множественные модули 106(1), 106(2), …, 106(u) выравнивания нагрузки и множественные хосты 108(1), 108(2), …, 108(n). Каждый соответствующий хост 108(1), 108(2), …, 108(n) включает в себя одно или несколько соответствующих приложений 316(1), 316(2), …, 316(n), размещенные и выполняющиеся на нем. Извещения 2006 используются для предоставления информации сеанса от приложений 316, и сообщения 2008 используются для предоставления информации сеанса от хостов 108 на модули 106 выравнивания нагрузки.FIG. 20 shows an illustrative approach to network load balancing using the transmission of session information through notifications 2006 and messages 2008. Multiple load balancing modules 106 (1), 106 (2), ..., 106 (u) and multiple hosts 108 (1 are shown. ), 108 (2), ..., 108 (n). Each respective host 108 (1), 108 (2), ..., 108 (n) includes one or more respective applications 316 (1), 316 (2), ..., 316 (n) hosted and executed on it. Notifications 2006 are used to provide session information from applications 316, and messages 2008 are used to provide session information from hosts 108 to load balancing modules 106.

Показано, что каждый соответствующий хост 108(1), 108(2), …, 108(n) содержит инфраструктуру 2002(1), 2002(2), …, 2002(n) отслеживания сеанса (ИОС). Каждая соответствующая инфраструктура 2002(1), 2002(2), …, 2002(n) отслеживания сеанса содержит соответствующую таблицу 2014(1), 2014(2), …, 2014(n) сеансов (хотя на фиг.19 явно показана только одна таблица 2014(1) сеансов).It is shown that each corresponding host 108 (1), 108 (2), ..., 108 (n) contains the infrastructure 2002 (1), 2002 (2), ..., 2002 (n) session tracking (IOS). Each corresponding session tracking infrastructure 2002 (1), 2002 (2), ..., 2002 (n) contains a corresponding table of 2014 (1), 2014 (2), ..., 2014 (n) sessions (although only explicitly shown in FIG. 19 one table 2014 (1) sessions).

Каждый соответствующий модуль 106(1), 106(2), …, 106(u) выравнивания нагрузки содержит соответствующую функцию 2012(1), 2012(2), …, 2012(u) маршрутизации трафика (ФМТ). Функция 2012 маршрутизации трафика может содержать, например, функцию классификации и/или запрашивания маршрутизации, например, обеспечиваемую классификатором 304 и маршрутизатором 306 запросов, соответственно. Распределенным по модулям 106(1), 106(2), …, 106(u) является распределенный диспетчер 2010 отслеживания сеансов.Each corresponding load balancing module 106 (1), 106 (2), ..., 106 (u) contains a corresponding function 2012 (1), 2012 (2), ..., 2012 (u) traffic routing (MTF). The traffic routing function 2012 may comprise, for example, a routing classification and / or query function, for example, provided by a classifier 304 and a request router 306, respectively. Distributed by modules 106 (1), 106 (2), ..., 106 (u) is the distributed session tracking manager 2010.

В описываемой реализации функция 2012 маршрутизации трафика и распределенный диспетчер 2010 отслеживания сеансов являются частью инфраструктуры 106 выравнивания нагрузки. Инфраструктура 2002 отслеживания сеансов также может быть (например, удаленной) частью инфраструктуры 106 выравнивания нагрузки.In the described implementation, the traffic routing function 2012 and the distributed session tracking manager 2010 are part of the load balancing infrastructure 106. Session tracking infrastructure 2002 may also be (e.g., remote) part of load balancing infrastructure 106.

API 2004 используется для предоставления информации сеанса от приложений 316 на инфраструктуру 2002 отслеживания сеансов. Использование API 2004 позволяет приложениям 316 сообщать инфраструктуре 2002 отслеживания сеансов информацию сеанса, включая различные ее изменения. В частности, каждое приложение 316 способно выдавать, а инфраструктура 2002 отслеживания сеансов способна получать извещения 2006.API 2004 is used to provide session information from applications 316 to the session tracking infrastructure 2002. Using API 2004 allows applications 316 to communicate session tracking infrastructure 2002 with session information, including various changes to it. In particular, each application 316 is capable of issuing, and the session tracking infrastructure 2002 is capable of receiving notifications 2006.

При новом установлении или открытии сеанса, приложение 316 выдает извещение об установлении сеанса (или извещение 2006(Е) об установлении сеанса). Извещение 2006(Е) об установлении сеанса содержит идентификатор сеанса и, в необязательном порядке, идентификатор приложения 316. При окончании или закрытии сеанса приложение 316 выдает извещение об окончании сеанса (или извещение 2006(Т) об окончании сеанса). Извещение 2006(Т) об окончании сеанса также содержит идентификатор сеанса и, в необязательном порядке, идентификатор приложения 316.When you re-establish or open a session, application 316 issues a session setup notification (or session establishment notification 2006 (E)). The session establishment notification 2006 (E) contains a session identifier and, optionally, an application identifier 316. When a session ends or closes, an application 316 issues a session end notification (or a session end notification 2006 (T)). The end of session notification 2006 (T) also contains a session identifier and, optionally, an application identifier 316.

Получив извещение 2006(Е) об установлении сеанса, инфраструктура 2002 отслеживания сеансов вставляет в таблицу 2014 сеансов элемент для нового сеанса. Иллюстративная таблица 2014 сеансов описана ниже со ссылкой на фиг.23А. Получив извещение 2006(Т) об окончании сеанса, инфраструктура 2002 отслеживания сеансов удаляет из таблицы 2014 сеансов элемент для старого сеанса.Upon receiving the session establishment notification 2006 (E), the session tracking infrastructure 2002 inserts an element for a new session into the session table 2014. An example session table 2014 is described below with reference to FIG. Upon receiving the session end notification 2006 (T), the session tracking infrastructure 2002 removes an item from the session table 2014 for the old session.

Таблица 2014(1) сеансов является официальным источником информации 1902 сеансов в отношении приложений 316(1) на хосте 108(1). Однако при запрашивании функции 2012 маршрутизации трафика на контакт с хостами 108 для доступа к таблицам 2014 сеансов по получении каждого входящего запроса соединения, имеющего ссылку на сеанс, имеет место слишком большая задержка. Поэтому информация 1902 сеансов кэшируется на модулях 106 выравнивания нагрузки.Session table 2014 (1) is the official source of 1902 session information regarding applications 316 (1) on host 108 (1). However, when requesting the function 2012 of routing traffic to the contact with hosts 108 to access the session tables 2014 upon receipt of each incoming connection request having a session reference, there is too much delay. Therefore, session information 1902 is cached on load balancing units 106.

На модулях 106 выравнивания нагрузки распределенный диспетчер 2010 отслеживания сеансов кэширует информацию 1902 сеанса, что входит в его обязанности по управлению отслеживанием сеансов. В общем случае распределенный диспетчер 2010 отслеживания сеансов является распределенным приложением и/или виртуальной службой, размещенной частично на каждом модуле 106 выравнивания нагрузки. Для каждого логического сеанса распределенный диспетчер 2010 отслеживания сеансов сохраняет, по меньшей мере, одну кэшированную копию информации сеанса для него надежным и масштабируемым образом, которую можно быстро использовать для маршрутизации трафика при поступлении входящих запросов соединения, имеющих ссылку на сеанс, на инфраструктуру 106 выравнивания нагрузки.On load balancing modules 106, the distributed session tracking manager 2010 caches session information 1902, which is part of its responsibility for managing session tracking. In general, the distributed session tracking manager 2010 is a distributed application and / or virtual service hosted partially on each load balancer 106. For each logical session, the distributed session tracking manager 2010 stores at least one cached copy of the session information for it in a reliable and scalable manner that can be quickly used to route traffic when incoming connection requests that have a link to the session to the load balancing infrastructure 106 .

Связь между хостами 108 и модулями 106 выравнивания нагрузки осуществляется с помощью надежного протокола, который гарантирует, что сообщения 2008, отправленные с хоста 108, поступают на нужный модуль 106 выравнивания нагрузки. Каждый хост 108 привязан к, по меньшей мере, одному конкретному модулю 106 выравнивания нагрузки, который является назначенным модулем 106 выравнивания нагрузки для сообщений 2008. Эта привязка создается путем присваивания IP-адреса конкретного модуля 106 выравнивания нагрузки каждому хосту 108 для передачи сообщений 2008 отслеживания сеансов между инфраструктурой 2002 отслеживания сеанса и распределенным диспетчером 2010 отслеживания сеанса. Для повышения надежности инфраструктуры выравнивания нагрузки в случае отказа модуля 106 выравнивания нагрузки другой модуль 106 выравнивания нагрузки принимает на себя IP-адрес сбойного модуля 106 выравнивания нагрузки. Обнаружение сбоев для принятия IP-адреса может осуществляться с использованием «пульса» или другой схемы отслеживания работоспособности.Communication between hosts 108 and load balancing modules 106 is accomplished using a reliable protocol that ensures that messages 2008 sent from host 108 arrive at the desired load balancing module 106. Each host 108 is associated with at least one specific load balancing module 106, which is a designated load balancing module 106 for messages 2008. This binding is created by assigning the IP address of a specific load balancing module 106 to each host 108 for sending session tracking messages 2008 between the session tracking infrastructure 2002 and the distributed session tracking manager 2010. To improve the reliability of the load balancing infrastructure in the event of a failure of the load balancing module 106, another load balancing module 106 assumes the IP address of the failed load balancing module 106. Failure detection for accepting an IP address can be done using a heartbeat or other health monitoring scheme.

Таким образом, сообщения 2008 переносят информацию 1902 сеанса от инфраструктуры 2002 отслеживания сеанса на распределенный диспетчер 2010 отслеживания сеансов. Например, когда инфраструктура 2002 отслеживания сеанса принимает извещение 2006(Е) об установлении сеанса, она также оправляет сообщение 2008(U) начала сеанса на распределенный диспетчер 2010 отслеживания сеансов. Сообщение 2008(U) начала сеанса содержит идентификатор сеанса, идентификатор хоста и, в необязательном порядке, другую информацию. Содержимое сообщения 2008(U) начала сеанса описано ниже со ссылкой на фиг.23В в отношении информации, которая может сохраняться для каждого сеанса посредством реализации распределенного диспетчера 2010 отслеживания сеансов. Когда инфраструктура 2002 отслеживания сеанса принимает извещение 2006(Т) об окончании сеанса, она также отправляет сообщение 2008(D) окончания сеанса на распределенный диспетчер 2010 отслеживания сеансов. Передача сообщений 2008 может осуществляться до, во время или после того, как инфраструктура 2002 отслеживания сеанса надлежащим образом изменит таблицу 2014 сеансов в соответствии с извещениями 2006.Thus, messages 2008 transfer session information 1902 from the session tracking infrastructure 2002 to the distributed session tracking manager 2010. For example, when the session tracking infrastructure 2002 receives a session establishment notification 2006 (E), it also sends a session start message 2008 (U) to the distributed session tracking manager 2010. The session start message 2008 (U) contains a session identifier, a host identifier, and optionally other information. The contents of the session start message 2008 (U) are described below with reference to FIG. 23B with respect to information that can be stored for each session by implementing the distributed session tracking manager 2010. When the session tracking infrastructure 2002 receives the session end notification 2006 (T), it also sends a session end message 2008 (D) to the distributed session tracking manager 2010. Message passing 2008 can occur before, during, or after the session tracking infrastructure 2002 has appropriately modified the session table 2014 in accordance with the 2006 notices.

На фиг.21 показана логическая блок-схема 2100 способа выравнивания сетевой нагрузки с использованием передачи информации сеанса посредством извещений и сообщений. Логическая блок-схема 2100 содержит пятнадцать блоков 2102-2130. Хотя действия логической блок-схемы 2100 могут осуществляться в других средах и с помощью различных других программных схем, фиг. 1-3 и 19-20 используются, в частности, для иллюстрации определенных аспектов и примеров способа.FIG. 21 is a flow chart 2100 of a method for balancing network load using the transmission of session information through notifications and messages. Logical block diagram 2100 contains fifteen blocks 2102-2130. Although the actions of the logic flowchart 2100 can be carried out in other environments and using various other software schemes, FIG. 1-3 and 19-20 are used, in particular, to illustrate certain aspects and examples of the method.

Например, действия четырех блоков 2102-2104 и 2118-2120 осуществляются приложением 316, действия шести блоков 2106-2110 и 2122-2126 осуществляются инфраструктурой 2002 отслеживания сеансов, и действия пяти блоков 2112-2116 и 2128-2130 осуществляются распределенным диспетчером 2010 отслеживания сеансов. Действия восьми из этих блоков 2102-2116, главным образом, направлены на открытие сеанса, и действия семи из этих блоков 2118-2130, главным образом, направлены на закрытие сеанса.For example, the actions of the four blocks 2102-2104 and 2118-2120 are performed by the application 316, the actions of the six blocks 2106-2110 and 2122-2126 are performed by the session tracking infrastructure 2002, and the actions of the five blocks 2112-2116 and 2128-2130 are performed by the distributed session tracking manager 2010. The actions of eight of these blocks 2102-2116 are mainly aimed at opening a session, and the actions of seven of these blocks 2118-2130 are mainly aimed at closing a session.

На блоке 2102 происходит открытие сеанса. Например, приложение 316 может открывать сеанс с клиентом 102. На блоке 2104 предоставляется извещение об установлении сеанса. Например, приложение 316 может предоставлять извещение 2006(Е) об установлении сеанса инфраструктуре 2002 отслеживания сеансов с использованием API 2004 в результате открытия сеанса и/или совместно с ним.At block 2102, a session is opened. For example, application 316 may open a session with client 102. At block 2104, a session establishment notification is provided. For example, application 316 may provide session notification 2006 (E) to session tracking infrastructure 2002 using API 2004 as a result of opening and / or sharing a session.

На блоке 2106 происходит получение извещения об установлении сеанса. Например, инфраструктура 2002 отслеживания сеансов может получать извещение 2006(Е) об установлении сеанса от приложения 316 в соответствии с API 2004. На блоке 2108, в таблицу сеансов вставляется элемент. Например, инфраструктура 2002 отслеживания сеансов может вставлять элемент в таблицу 2014 сеансов для открытого сеанса. Примеры такого вставления описаны ниже, в особенности со ссылкой на фиг.23А. На блоке 2110 происходит отправка сообщения начала сеанса. Например, инфраструктура 2002 отслеживания сеансов может отправлять сообщение 2008(U) начала сеанса на распределенный диспетчер 2010 отслеживания сеансов с использованием надежного протокола связи.At block 2106, a session establishment notification is received. For example, session tracking infrastructure 2002 may receive a session establishment notification 2006 (E) from application 316 in accordance with API 2004. At block 2108, an element is inserted into the session table. For example, Session Tracking Infrastructure 2002 may insert an item into a session table 2014 for an open session. Examples of such an insertion are described below, in particular with reference to figa. At block 2110, a session start message is sent. For example, session tracking infrastructure 2002 may send a session start message 2008 (U) to the distributed session tracking manager 2010 using a reliable communication protocol.

На блоке 2112 происходит получение сообщения начала сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может получать сообщение 2008(U) начала сеанса от инфраструктуры 2002 отслеживания сеансов в соответствии с надежным протоколом связи. На блоке 2114 создается элемент информации сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может создавать элемент информации сеанса для кэшированной информации 1902 сеанса на одном или нескольких модулях 106 выравнивания нагрузки. Примеры такого создания и последующего добавления описаны ниже, в особенности со ссылкой на фиг. 22 и 23В.At block 2112, a session start message is received. For example, the distributed session tracking manager 2010 may receive a session start message 2008 (U) from the session tracking infrastructure 2002 in accordance with a reliable communication protocol. At block 2114, a session information item is created. For example, the distributed session tracking manager 2010 may create a session information item for cached session information 1902 on one or more load balancing units 106. Examples of such creation and subsequent addition are described below, in particular with reference to FIG. 22 and 23B.

На блоке 2116 сетевой трафик маршрутизируется с помощью информации сеанса. Например, функция 2012 маршрутизации трафика совместно с распределенным диспетчером 2010 отслеживания сеансов может использовать кэшированную информацию 1902 сеанса, включая созданный элемент информации сеанса, для маршрутизации входящих запросов соединения, имеющих ссылку на сеанс. Пример такой маршрутизации трафика описан ниже, в особенности со ссылкой на фиг.24. Дополнительные примеры описаны ниже в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов».At block 2116, network traffic is routed using session information. For example, the traffic routing function 2012, in conjunction with the distributed session tracking manager 2010, can use the cached session information 1902, including the generated session information item, to route incoming connection requests that have a session link. An example of such traffic routing is described below, in particular with reference to FIG. Additional examples are described below in the section entitled “Classification, Forwarding, and Routing of Requests”.

На блоке 2118 сеанс закрывается. Например, приложение 316 может закрыть сеанс с клиентом 102. На блоке 2120 предоставляется извещение об окончании сеанса. Например, приложение 316 может предоставлять извещение 2006(Т) об окончании сеанса инфраструктуре 2002 отслеживания сеансов с использованием API 2004 в результате закрытия сеанса и/или совместно с ним.At block 2118, the session is closed. For example, application 316 may close the session with client 102. At block 2120, a session end notification is provided. For example, application 316 may provide a 2006 (T) end of session notification to session tracking infrastructure 2002 using API 2004 as a result of and / or in conjunction with a session closing.

На блоке 2120 происходит получение извещения об окончании сеанса. Например, инфраструктура 2002 отслеживания сеансов может получать извещение 2006(Т) об окончании сеанса от приложения 316 в соответствии с API 2004. На блоке 2124 происходит удаление элемента из таблицы сеансов. Например, инфраструктура 2002 отслеживания сеансов может удалять элемент из таблицы 2014 сеансов для закрытого сеанса. На блоке 2126 происходит отправка сообщения окончания сеанса. Например, инфраструктура 2002 отслеживания сеансов может отправлять сообщение 2008(D) окончания сеанса на распределенный диспетчер 2010 отслеживания сеансов с использованием надежного протокола связи.At block 2120, a session end notification is received. For example, Session Tracking Infrastructure 2002 may receive a 2006 (T) session end notification from application 316 in accordance with API 2004. At block 2124, an item is deleted from the session table. For example, the session tracking infrastructure 2002 may remove an item from the session table 2014 for a closed session. At block 2126, a session end message is sent. For example, the session tracking infrastructure 2002 may send a session end message 2008 (D) to the distributed session tracking manager 2010 using a reliable communication protocol.

На блоке 2128 происходит получение сообщения окончания сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может получать сообщение 2008(D) окончания сеанса от инфраструктуры 2002 отслеживания сеансов в соответствии с надежным протоколом связи. На блоке 2130 элемент информации сеанса уничтожается. Например, распределенный диспетчер 2010 отслеживания сеансов может уничтожать элемент информации сеанса в кэшированной информации 1902 сеанса на любых модулях 106 выравнивания нагрузки, имеющих элемент информации сеанса. Примеры такого уничтожения и последующего удаления описаны ниже, в особенности со ссылками на фиг. 22 и 23В.At block 2128, a session end message is received. For example, the distributed session tracking manager 2010 may receive a session end message 2008 (D) from the session tracking infrastructure 2002 in accordance with a reliable communication protocol. At block 2130, the session information item is destroyed. For example, the distributed session tracking manager 2010 may destroy a session information item in cached session information 1902 on any load balancing units 106 having a session information item. Examples of such destruction and subsequent removal are described below, in particular with reference to FIGS. 22 and 23B.

На фиг.22 показан подход к управлению информацией сеанса на множественных модулях 106 выравнивания нагрузки. Каждый соответствующий модуль 106(1), 106(2), …, 106(u) выравнивания нагрузки содержит соответствующую часть 2202(1), 2202(2), …, 2202(u) распределенного диспетчера 2202 атомов (РДА). РДА 2202 является иллюстративной реализацией распределенного диспетчера 2010 отслеживания сеансов. Каждая соответствующая часть РДА 2202(1), 2202(2), …, 2202(u) содержит соответствующую часть 2206(1), 2206(2), …, 2206(u) таблицы РДА (ТРДА) 2206.22 shows an approach to managing session information on multiple load balancing modules 106. Each corresponding load balancing module 106 (1), 106 (2), ..., 106 (u) contains the corresponding portion 2202 (1), 2202 (2), ..., 2202 (u) of the distributed atomic atom manager 220 (RDA). RDA 2202 is an illustrative implementation of the distributed session tracking manager 2010. Each corresponding part of the RDA 2202 (1), 2202 (2), ..., 2202 (u) contains the corresponding part 2206 (1), 2206 (2), ..., 2206 (u) of the table RDA (TRDA) 2206.

РДА 2202 является распределенным приложением или виртуальной службой, которая управляет информацией 1902 сеанса надежным и масштабируемым образом, что позволяет функции 2012 маршрутизации трафика использовать его для сохранения сродства к сеансу. Например, функция 2012 маршрутизации трафика может осуществлять доступ к РДА 2202 с использованием API (конкретно не показан) для поиска в ТРДА 2206. Функциональные вызовы 2204, работа РДА 2202 и другие аспекты фиг.22 описаны ниже после описания фиг. 23А и 23В.RDA 2202 is a distributed application or virtual service that manages session information 1902 in a reliable and scalable manner that allows the traffic routing function 2012 to use it to maintain affinity for the session. For example, the traffic routing function 2012 may access the RDA 2202 using an API (not specifically shown) to search in the RDA 2206. The function calls 2204, operation of the RDA 2202 and other aspects of FIG. 22 are described below after describing FIG. 23A and 23B.

На фиг.23А показана таблица 2014 сеансов, указанная на фиг.20. Таблица 2014 сеансов содержит «v» элементов 2302(1), 2302(2), …, 2302(v). Каждый элемент 2302 вставляется инфраструктурой 2002 отслеживания сеансов в соответствии с извещением 2006(Е) об установлении сеанса, полученным от приложения 316. Каждый элемент 2302 удаляется инфраструктурой 2002 отслеживания сеансов в соответствии с извещением 2006(Т) об окончании сеанса, полученным от приложения 316.On figa shows a table 2014 sessions indicated in Fig.20. The 2014 session table contains the “v” of elements 2302 (1), 2302 (2), ..., 2302 (v). Each element 2302 is inserted by the session tracking infrastructure 2002 in accordance with the session establishment notification 2006 (E) received from application 316. Each element 2302 is deleted by the session tracking infrastructure 2002 in accordance with the session end notification 2006 (T) received from application 316.

Согласно описанному выше, каждое извещение 2006(Е) об установлении сеанса содержит идентификатор сеанса и, в необязательном порядке, идентификатор приложения 316. Каждый соответствующий элемент 2302(1), 2302(2), …, 2302(v) таблицы 2014 сеансов содержит соответствующие поля (i) идентификатора 2302(1I), 2302(2I), …, 2302(vI) сеанса и (ii) тип сеанса и/или приложение 2302(1T), 2302(2T), …, 2302(vT).As described above, each session establishment notification 2006 (E) contains a session identifier and, optionally, an application identifier 316. Each corresponding element 2302 (1), 2302 (2), ..., 2302 (v) of the 2014 session table contains corresponding field (i) of the identifier 2302 (1I), 2302 (2I), ..., 2302 (vI) of the session and (ii) the type of session and / or application 2302 (1T), 2302 (2T), ..., 2302 (vT).

Тип сеанса и/или приложение 2302(Т) может быть "TCP", "IPSEC", «Терминальный сервер», «cookie HTTP», тип приложения, как отмечено выше, и т.д. Идентификатор 2302(I) сеанса может представлять собой "<IP-адрес источника, TCP-порт источника, IP-адрес назначения, TCP-порт назначения>", "IP клиента =172.30.189.122", "Пользователь='joe_user'", "Cookie='{b7595cc9-e68b-4eb0-9bfl-bb717b31d447}'", другой, например, идентификатор сеанса, связанный с приложением, и т.д. Для типов TCP-соединение/сеанс, идентификатор 2302(I) сеанса может, альтернативно, представлять собой каноническую версию упорядоченной четверки TCP (для IPv4 или IPv6). Альтернативно, можно также использовать другие значения для полей идентификатора 2302(I) сеанса и приложения/типа сеанса 2302(Т).The session type and / or application 2302 (T) may be “TCP”, “IPSEC”, “Terminal Server”, “HTTP cookie”, application type, as noted above, etc. Session ID 2302 (I) may be "<source IP address, source TCP port, destination IP address, destination TCP port>", "Client IP = 172.30.189.122", "User = 'joe_user'", "Cookie = '{b7595cc9-e68b-4eb0-9bfl-bb717b31d447}'", another, for example, the session identifier associated with the application, etc. For TCP connection / session types, session identifier 2302 (I) may, alternatively, be a canonical version of the ordered TCP four (for IPv4 or IPv6). Alternatively, other values may also be used for the fields of the session identifier 2302 (I) and application / session type 2302 (T).

На фиг.23В показана таблица 2206 (ТРДА) распределенного диспетчера (РДА) атомов, обозначенная на фиг.22. Таблица 2206 РДА содержит «w» элементов 2304(1), 2304(2), …, 2304(w). Каждый элемент 2304 информации сеанса создается РДА 2202 в соответствии с сообщением 2008(U) начала сеанса, полученным от инфраструктуры 2002 отслеживания сеансов. Каждый элемент 2304 информации сеанса уничтожается в соответствии с сообщением 2008(D) окончания сеанса, полученным от инфраструктуры 2002 отслеживания сеансов. Согласно описанному ниже, элементами 2304 информации сеанса из таблиц 2206 РДА можно реально управлять посредством РДА 2202 с использованием функциональных вызовов 2204.On figv shows a table 2206 (TRDA) distributed dispatcher (RDA) of atoms, indicated in Fig.22. The RDA table 2206 contains the “w” of elements 2304 (1), 2304 (2), ..., 2304 (w). Each session information element 2304 is created by the RDA 2202 in accordance with the session start message 2008 (U) received from the session tracking infrastructure 2002. Each session information element 2304 is destroyed in accordance with the session end message 2008 (D) received from the session tracking infrastructure 2002. As described below, the session information elements 2304 from the RDA tables 2206 can actually be controlled by the RDA 2202 using function calls 2204.

Согласно описанному выше, сообщение 2008(U) начала сеанса содержит идентификатор сеанса, идентификатор хоста и, в необязательном порядке, другую информацию. Каждый соответствующий элемент 2304(1), 2304(2), …, 2304(w) информации сеанса в таблице 2206 РДА содержит соответствующие поля (i) ключа 2304(1K), 2304(2K), …, 2304(wK), (ii) данных 2304(1D), 2304(2D), …, 2304(wD) и (iii) метаданных 2304(1M), 2304(2M), …, 2304(wM). Например, значения полей 2304(K) ключа могут представлять собой буквенно-цифровые строки, а значения полей 2304(D) данных могут представлять собой биты. Значения ключа 2304(K) также могут представлять собой биты.As described above, the session start message 2008 (U) contains a session identifier, a host identifier, and, optionally, other information. Each corresponding element 2304 (1), 2304 (2), ..., 2304 (w) of the session information in the table 2206 of the RDA contains the corresponding fields (i) of the key 2304 (1K), 2304 (2K), ..., 2304 (wK), ( ii) data 2304 (1D), 2304 (2D), ..., 2304 (wD) and (iii) metadata 2304 (1M), 2304 (2M), ..., 2304 (wM). For example, the values of the key fields 2304 (K) may be alphanumeric strings, and the values of the data fields 2304 (D) may be bits. Key values 2304 (K) may also be bits.

Ключ 2304(K) может соответствовать идентификатору 2302(I) сеанса. Данные 2304(D) могут соответствовать идентификатору хоста, например сетевому адресу хоста 108, на котором существует контекст сеанса. Метаданные 2304(М) могут соответствовать другой, необязательной, информации. Примером таких метаданных 2304(М) могут служить данные, внутренне используемые РДА 2202 для разрешения конфликтов атомов и отслеживания работоспособности атомов (например, посредством механизма приостановки). (Это представление элементов 2304 как атомарных более подробно описано в следующем абзаце.) В частности, метаданные 2304(М) включают в себя, помимо прочего, идентификацию сущности (объекта) (например, экземпляра функции 2012 маршрутизации трафика), добавляющие элемент 2304 информации сеанса в таблицу 2206 РДА.Key 2304 (K) may correspond to session identifier 2302 (I). Data 2304 (D) may correspond to a host identifier, for example, the network address of a host 108 on which a session context exists. Metadata 2304 (M) may correspond to other, optional, information. An example of such metadata 2304 (M) is the data internally used by the RDA 2202 to resolve atomic conflicts and track the health of atoms (for example, through a suspension mechanism). (This presentation of 2304 elements as atomic is described in more detail in the next paragraph.) In particular, metadata 2304 (M) includes, among other things, the identification of an entity (object) (for example, an instance of the 2012 traffic routing function), adding a session information element 2304 to table 2206 RDA.

В описываемой реализации каждый элемент 2304 информации сеанса является атомарным в том смысле, что РДА 2202 может добавлять, удалять, копировать и т.д. элементы 2304 как целое, но РДА 2202 обычно не изменяет часть любого элемента 2304 как целого. Таким образом, атомарные элементы 2304 добавляются, удаляются, копируются, иным образом обрабатываются и т.д. по таблицам 2206 РДА посредством РДА 2202 для реализации надежности и масштабируемости для реализации сохранения сродства к сеансу.In the described implementation, each session information element 2304 is atomic in the sense that RDA 2202 can add, delete, copy, etc. elements 2304 as a whole, but RDA 2202 usually does not change part of any element 2304 as a whole. Thus, atomic elements 2304 are added, deleted, copied, otherwise processed, etc. according to the tables 2206 RDA through RDA 2202 for the implementation of reliability and scalability for the implementation of maintaining affinity for the session.

Функциональные вызовы 2204 (фиг.22) используются РДА 2202 для манипулирования атомарными элементами 2304 таблицы 2206 РДА. Функциональные вызовы 2204 могут поступать от одного модуля 106 выравнивания нагрузки на один или несколько модулей 106 выравнивания нагрузки в двухточечном или широковещательном режиме. Эти функциональные вызовы включают в себя «добавить атом» 2204(А), «удалить атом» 2204(D), «запросить атом» 2204(Q) и «возвратить атом» 2204(R).Functional calls 2204 (FIG. 22) are used by the RDA 2202 to manipulate the atomic elements 2304 of the RDA table 2206. Functional calls 2204 may come from one load balancing module 106 to one or more load balancing modules 106 in point-to-point or broadcast mode. These functional challenges include “add atom” 2204 (A), “remove atom” 2204 (D), “request atom” 2204 (Q), and “return atom” 2204 (R).

«Добавить атом» 2204(А) имеет вид AddAtom(ключ, данные) и используется для добавления атомарного элемента 2304 в одну или несколько таблиц 2206. Поэтому функциональный вызов «добавить атом» 2204(А) можно выразить как AddAtom(<идентификатор сеанса> IP-адрес хоста). «Удалить атом» 2204(D) имеет вид DeleteAtom(ключ) и используется для удаления атомарного элемента 2304 из одной или нескольких таблиц 2206 РДА. Функциональные вызовы «удалить атом» 2204(D) могут быть направлены на те таблицы 2206 РДА, про которые известно, что они имеют копию сеанса, идентифицированного ключом 2304(K), или могут рассылаться на все таблицы 2206 РДА, что позволяет гарантировать удаление любых копий.“Add atom” 2204 (A) has the form AddAtom (key, data) and is used to add atomic element 2304 to one or more tables 2206. Therefore, the functional call “add atom” 2204 (A) can be expressed as AddAtom (<session identifier> Host IP address). "Delete Atom" 2204 (D) has the form DeleteAtom (key) and is used to remove the atomic element 2304 from one or more tables 2206 RDA. Functional calls “remove atom" 2204 (D) can be directed to those tables 2206 RDA, about which it is known that they have a copy of the session identified by key 2304 (K), or can be sent to all tables 2206 RDA, which can guarantee the removal of any copies.

«Запросить атом» 2204(Q) имеет вид QueryAtom(ключ) и используется конкретной частью 2202 РДА, когда идентификатор сеанса, на который ссылается входящий запрос соединения, не находится в конкретной локальной таблице 2206 РДА или конкретной части 2202 РДА. Функциональные вызовы «запросить атом» 2204(Q) отправляются на одну или несколько (возможно, все) другие части 2202 РДА. В ответ, каждая часть 2202 РДА проверяет свою локальную таблицу 2206 РДА на предмет ключа/идентификатора сеанса. Если ключ обнаруживается другой частью 2202 РДА, то эта другая часть 2202 РДА отвечает посредством «возвратить атом» 2204(R).“Request Atom” 2204 (Q) has the form QueryAtom (key) and is used by a specific part of the RDA or a specific part of the RDA 2206 or a specific part of the RDA 2202 when the session identifier referenced by the incoming connection request. Functional requests "request atom" 2204 (Q) are sent to one or more (possibly all) other parts of the 2202 RDA. In response, each RDA part 2202 checks its local RDA table 2206 for a key / session identifier. If the key is detected by the other part of the RDA 2202, then this other part of the RDA 2202 responds by “return the atom” 2204 (R).

«Возвратить атом» 2204(R) имеет вид ReturnAtom(ключ, данные) и используется для ответа на функциональный вызов «запросить атом» 2204(Q). Функциональные вызовы «возвратить атом» 2204(R) используются, когда часть РДА 2202 имеет запрошенный атомарный элемент 2304 в своей локальной таблице 2206 РДА, идентифицированный ключом 2304(K), указанным в функциональном вызове «запросить атом» 2204(Q). Функциональные вызовы «возвратить атом» 2204(R) могут быть направлены обратно на часть РДА 2202, выдавшую функциональный вызов «запросить атом» 2204(Q).“Return atom” 2204 (R) has the form ReturnAtom (key, data) and is used to answer the functional call “request atom” 2204 (Q). The atom return function calls 2204 (R) are used when part of the RDA 2202 has the requested atomic element 2304 in its local RDA table 2206, identified by the key 2304 (K) indicated in the request atom atom function call 2204 (Q). Functional calls "return atom" 2204 (R) can be directed back to the part of the RDA 2202, which issued a functional call "request atom" 2204 (Q).

Функциональные вызовы «добавить атом» 2204(А) используются в ответ на сообщения 2008(U) начала сеанса и/или для дублирования атомарного элемента 2304 в одну или более других таблиц 2206 РДА. Такое дублирование может выполняться для избыточности и/или масштабируемости.The “add atom” functional calls 2204 (A) are used in response to a session start message 2008 (U) and / or to duplicate an atomic element 2304 to one or more other RDA tables 2206. Such duplication can be performed for redundancy and / or scalability.

Функциональные вызовы «удалить атом» 2204(D) используются в ответ на сообщения 2008(D) окончания сеанса и также могут отправляться на одну или несколько таблиц 2206 РДА. После удаления атомарного элемента 2304 атомарный элемент 2304 может войти в состояние «зомби», при котором он остается в РДА 2202 и, в необязательном порядке, по-прежнему хранится в таблице 2206 РДА с указателем «зомби» в поле метаданных 2304(М) атомарного элемента 2304.The “remove atom” function calls 2204 (D) are used in response to the 2008 (D) session end messages and can also be sent to one or more RDA tables 2206. After the removal of the atomic element 2304, the atomic element 2304 can enter the “zombie” state, in which it remains in the RDA 2202 and, optionally, is still stored in the RDA table 2206 with the zombie pointer in the metadata field 2304 (M) of the atomic item 2304.

Таким образом, после удаления атомарного элемента 2304 он может оставаться в РДА 2202 и таблице 2206 РДА в состоянии «зомби», в результате чего пакеты для этого (теперь неработающего и закрытого) сеанса направляются на хост 108 контекста сеанса для надлежащей, в зависимости от протокола, обработки. Например, TCP-пакеты, полученные после устранения TCP-соединения, направляются на хост 108, который прекратил соединение. Этот хост 108 может надлежащим образом ответить - возможно, послав RST или повторно послав FIN-ACK. Время, которое атомарный элемент 2304 проводит в этом состоянии «зомби», совпадает (по возможности точно) с зависящим от протокола временем простоя для используемого надежного протокола связи.Thus, after the removal of the atomic element 2304, it can remain in the RDA 2202 and the RDA table 2206 in the “zombie” state, as a result of which packets for this (now idle and closed) session are sent to the session context host 108 for an appropriate, depending on the protocol processing. For example, TCP packets received after a TCP connection has been resolved are routed to host 108, which terminated the connection. This host 108 may appropriately respond — perhaps by sending an RST or by sending a FIN-ACK again. The time that the atomic element 2304 spends in this “zombie” state coincides (as accurately as possible) with the protocol-specific downtime for the reliable communication protocol used.

Функциональный вызов «запросить атом» 2204(Q) используется для доступа к атомарному элементу 2304, когда первый модуль 106 выравнивания нагрузки принимает входящий запрос соединения, ссылающийся на сеанс, который не хранится в локальной таблице 2206 РДА для РДА 2202 первого модуля 106 выравнивания нагрузки. Заметим, что другие части РДА 2202 можно одновременно запрашивать посредством широковещательного функционального вызова «запросить атом» 2204(Q) или последовательно, пока не будет получен положительный функциональный вызов «возвратить атом» 2204(R).The atomic request function call 2204 (Q) is used to access atomic element 2304 when the first load balancer 106 receives an incoming connection request that refers to a session that is not stored in the local RDA table 2206 for the RDA 2202 of the first load balancer 106. Note that other parts of the RDA 2202 can be simultaneously requested via the broadcast request “request atom” 2204 (Q) function or sequentially until a positive return “atom” 2204 (R) function call is received.

Функциональный вызов «возвратить атом» 2204(R) используется частью 2202 РДА второго модуля 106 выравнивания нагрузки для предоставления атомарного элемента 2304 части РДА 2202 первого модуля 106 выравнивания нагрузки, когда атомарный элемент 2304 имеет ключ 2304(K), заданный ключом/идентификатором сеанса в функциональном вызове «запросить атом» 2204(Q), ранее выданном частью РДА 2202 первого модуля 106 выравнивания нагрузки. Заметим, что другие компоненты, например функция 2012 маршрутизации трафика, также может пользоваться функциональными вызовами 2204, в особенности, функциональным вызовом «запросить атом» 2204(Q), в соответствии с API или подобным.The atom return function call 2204 (R) is used by the RDA part 2202 of the second load balancing module 106 to provide the atomic element 2304 of the RDA 2202 of the first load balancing module 106 when the atomic element 2304 has a key 2304 (K) specified by the session key / identifier in the function call "request atom" 2204 (Q), previously issued part of the RDA 2202 of the first module 106 load balancing. Note that other components, for example, the traffic routing function 2012, may also use function calls 2204, in particular the “request atom” function call 2204 (Q), in accordance with an API or the like.

Части РДА 2202 и таблицы 2206 РДА можно организовывать и администрировать всевозможными способами. Проиллюстрированные способы относятся к дублированию/избыточности, локальному кэшированию после получения, хэшированию для выбора местоположения и т.д. Можно использовать нулевой, первый, второй или более высокий уровень дублирования вплоть до полного дублирования. При нулевом уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, без дублирования в другие части РДА 2202.Parts of the RDA 2202 and tables 2206 of the RDA can be organized and administered in various ways. The illustrated methods relate to duplication / redundancy, local caching upon receipt, hashing for location selection, etc. You can use zero, first, second or higher level of duplication up to complete duplication. At a zero level of duplication, each atomic element 2304 is stored in the RDA 2202, receiving the message 2008 (U) of the beginning of the session for him, without duplication in other parts of the RDA 2202.

При первом уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, и также добавляется (копируется) в другую часть РДА 2202 с использованием функционального вызова «добавить атом» 2204(А). Это позволяет справиться с одним уровнем сбоя для модуля 106 выравнивания нагрузки. Аналогично, при втором уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, и также добавляется в две другие части РДА 2202. В целом, одна, две и т.д. части РДА 2202, в которые данная часть РДА 2202 копирует атомарные элементы 2304, заранее определены или выбираются произвольно. Можно также применять третий, четвертый и т.д. уровни дублирования.At the first duplication level, each atomic element 2304 is stored in the RDA 2202, receiving a session start message 2008 (U) for it, and is also added (copied) to another part of the RDA 2202 using the “add atom” function call 2204 (A). This allows one level of failure to be dealt with for load balancing module 106. Similarly, at the second level of duplication, each atomic element 2304 is stored in the RDA 2202, receiving the message 2008 (U) of the beginning of the session for him, and is also added to the other two parts of the RDA 2202. In general, one, two, etc. parts of the RDA 2202 into which this part of the RDA 2202 copies atomic elements 2304 are predetermined or arbitrarily selected. You can also apply the third, fourth, etc. duplication levels.

Кроме того, можно использовать полное дублирование, при котором каждый атомарный элемент 2304, который сохраняется на РДА 2202, принимающем сообщение 2008(U) начала сеанса, также добавляется в каждую другую часть РДА 2202. На выбор уровня дублирования влияют несколько факторов. По мере возрастания уровня дублирования надежность повышается, а задержка уменьшается. С другой стороны, сетевой трафик и использование памяти возрастают с повышением уровня дублирования.In addition, you can use full duplication, in which each atomic element 2304, which is stored on the RDA 2202, receiving message 2008 (U) of the beginning of the session, is also added to each other part of the RDA 2202. Several factors influence the choice of the level of duplication. As the level of duplication increases, reliability increases and latency decreases. Network traffic and memory usage, on the other hand, increase with increasing duplication.

Когда полное дублирование не используется, возможно локальное кэширование после получения. Например, когда часть РДА 2202 не обнаруживает идентификатора сеанса, на который указывает ссылка, в своей части таблицы 2206 РДА, часть РДА 2202 выдает функциональный запрос «запросить атом» 2204(Q), чтобы получить доступ к атомарному элементу 2304, связанному с идентификатором сеанса, на который указывает ссылка, посредством функционального вызова «возвратить атом» 2204(R). Вместо того чтобы отбрасывать атомарный элемент 2304 после его использования, часть РДА 2202 кэширует полученный атомарный элемент 2304 в своей части таблицы 2206 РДА. Эта опция дает возможность выбора между вышеперечисленными факторами.When full duplication is not used, local caching is possible after receipt. For example, when the part of the RDA 2202 does not detect the identifier of the session referred to by the link in its part of the table 2206 of the RDA, the part of the RDA 2202 issues a request atom request 2204 (Q) to gain access to the atomic element 2304 associated with the session identifier referenced by reference through a function call "return atom" 2204 (R). Instead of discarding the atomic element 2304 after its use, the part of the RDA 2202 caches the received atomic element 2304 in its part of the table 2206 of the RDA. This option allows you to choose between the above factors.

Еще одна опция в отсутствие использования полного дублирования может состоять в хэшировании для выбора местоположения. Первый атомарный элемент 2304 для сеанса сохраняется в части РДА 2202, которая принимает сообщение 2008(U) начала сеанса. Дублированная копия или копии отправляются посредством функциональных вызовов «добавить атом» 2204(А) на конкретную(ые) часть(и) РДА 2202 с использованием хэш-функции. Из множества всевозможных хэш-значений каждой части РДА 2202 присваивается его подмножество. Каждый идентификатор сеанса хэшируется с использованием некоторой хэш-функции для получения хэширующего значения. Это хэширующее значение отображается на присвоенные части РДА 2202. Часть РДА 2202, которая первая добавила атомарный элемент 2304, затем дублирует атомарный элемент 2304 в присвоенную(ые) часть(и) РДА 2202.Another option in the absence of full duplication may be to hash the location. The first atomic element 2304 for the session is stored in the part of the RD 2202, which receives the message 2008 (U) of the beginning of the session. The duplicated copy or copies are sent via the function call “add atom” 2204 (A) to the specific part (s) of the RDA 2202 using a hash function. Of the many possible hash values of each part of the RDA 2202, a subset thereof is assigned. Each session identifier is hashed using some hash function to obtain a hash value. This hash value is mapped to the assigned parts of the RDA 2202. The part of the RDA 2202, which first added the atomic element 2304, then duplicates the atomic element 2304 in the assigned part (s) of the RDA 2202.

Благодаря хэшированию для выбора местоположения, по меньшей мере, одна часть РДА 2202, которая локально кэшировала нужный атомарный элемент 2304 в своей таблице 2206 РДА, доступна по идентификатору сеанса. Поэтому функциональный вызов «запросить атом» 2204(Q) может быть направлен на известную(ые) часть(и) РДА 2202. Это обычно снижает сетевой трафик и/или задержку.Due to hashing for location selection, at least one part of the RDA 2202, which locally cached the desired atomic element 2304 in its RDA table 2206, is accessible by session identifier. Therefore, the “request atom” functional call 2204 (Q) can be routed to a known part (s) of the RDA 2202. This typically reduces network traffic and / or delay.

Это хэширование для выбора местоположения можно использовать на первом, втором, третьем или более уровне дублирования, причем каждый диапазон хэширующих значений отображается на одну, две, три и т.д. разные части РДА 2202, соответственно. Дополнительно, хэширование для выбора местоположения можно использовать совместно с локальным кэшированием после получения.This hash to select a location can be used at the first, second, third or more levels of duplication, with each range of hash values mapped to one, two, three, etc. different parts of the RDA 2202, respectively. Additionally, hashing for location selection can be used in conjunction with local caching upon receipt.

На фиг.24 показана логическая блок-схема 2400 способа управления информацией сеанса на множественных модулях выравнивания нагрузки. Логическая блок-схема 2400 содержит восемь блоков 2402-2416. Хотя действия логической блок-схемы 2400 могут осуществляться в других средах и с помощью различных программных схем, фиг. 1-3, 19, 20, 22 и 23В используются, в частности, для иллюстрации определенных аспектов и примеров способа.24 is a flowchart 2400 of a method for managing session information on multiple load balancing modules. The logical block diagram 2400 contains eight blocks 2402-2416. Although the actions of the logical flowchart 2400 can be carried out in other environments and using various software circuits, FIG. 1-3, 19, 20, 22 and 23B are used, in particular, to illustrate certain aspects and examples of the method.

На блоке 2402 анализируется входящий запрос соединения со ссылкой на сеанс. Например, функция 2012 маршрутизации трафика может получить входящий запрос соединения, который ссылается на ранее открытый/установленный сеанс определенного типа. На блоке 2404 осуществляется поиск в локальной таблице РДА с использованием ссылки на сеанс. Например, для данных модуля 106 выравнивания нагрузки и функции 2012 маршрутизации трафика его часть РДА 2202 может осуществлять поиск в своей соответствующей таблице 2206 РДА по ссылке на сеанс.At block 2402, an incoming connection request is analyzed with reference to the session. For example, traffic routing function 2012 may receive an incoming connection request that refers to a previously opened / established session of a certain type. At block 2404, a search is performed in the local RDA table using the session link. For example, for the data of the load balancing module 106 and the traffic routing function 2012, a part of the RDA 2202 may search in its corresponding RDA table 2206 by reference to the session.

На блоке 2406 производится определение, совпадает ли ссылка на сеанс с ключом локальной таблицы РДА. Например, часть РДА 2202 может производить поиск в полях 2304(K) ключа множественных элементов 2304 таблицы 2206 РДА, чтобы определить, совпадает ли ссылка на сеанс с какими-либо значениями полей 2304(K) ключа. Если да, то логическая блок-схема 2400 переходит к блоку 2412.At block 2406, a determination is made whether the link to the session matches the key of the local RDA table. For example, part of the RDA 2202 may search the key fields 2304 (K) of the plurality of elements 2304 of the RDA table 2206 to determine if the link to the session matches any values of the key fields 2304 (K). If so, then logic flow diagram 2400 proceeds to block 2412.

Если же ссылка на сеанс не совпадает ни с каким ключом, то логическая блок-схема 2400 переходит к блоку 2408. На блоке 2408 осуществляется функциональный вызов «запросить атом». Например, часть РДА 2202 может осуществлять функциональный вызов «запросить атом» 2204(Q), содержащий в качестве ключа ссылку на сеанс/идентификатор сеанса. Функциональный вызов «запросить атом» 2204(Q) может быть отправлен на, по меньшей мере, одну другую часть РДА 2202. Количество, выбор, порядок и т.д. возможных частей РДА 2202 назначения для «запросить атом» 2204(Q) может зависеть от опций (например, уровня дублирования, хэширования для выбора местоположения, локального кэширования после получения, двухточечного/широковещательного режима и т.д.), применяемых в РДА 2202.If the link to the session does not coincide with any key, then the logical block diagram 2400 proceeds to block 2408. At block 2408, a functional call is made to “request an atom”. For example, part of the RDA 2202 may make a functional request “request atom” 2204 (Q) containing, as a key, a link to the session / session identifier. The “request atom” function call 2204 (Q) can be sent to at least one other part of the RDA 2202. Number, selection, order, etc. the possible parts of the destination RDA 2202 for “request atom” 2204 (Q) may depend on the options (eg, duplication level, hashing for location selection, local caching upon receipt, point-to-point / broadcast mode, etc.) used in RDA 2202.

На блоке 2410 происходит получение возвращенного атома. Например, может быть получена информация от функционального вызова «возвратить атом» 2204(R), выданного другой частью РДА 2202. Другая часть РДА 2202 успешно обнаружила атомарный элемент 2304 в своей соответствующей таблице 2206 РДА, причем обнаруженный атомарный элемент 2304 имеет ключ, совпадающий со ссылкой на сеанс. Информация от функционального вызова «возвратить атом» 2204(R) содержит значения из поля 2304(K) ключа и поля 2304(D) данных для обнаруженного атомарного элемента 2304. Эти значения соответствуют идентификатору сеанса для сеанса и сетевому адресу хоста 108, который имеет сродство к сеансу.At block 2410, the returned atom is received. For example, information can be received from the “return atom” function call 2204 (R) issued by another part of the RDA 2202. Another part of the RDA 2202 has successfully detected the atomic element 2304 in its corresponding RDA table 2206, the detected atomic element 2304 having a key matching link to the session. The information from the “return atom” function call 2204 (R) contains the values from the key field 2304 (K) and the data field 2304 (D) for the detected atomic element 2304. These values correspond to the session identifier for the session and the network address of host 108, which has an affinity to the session.

На блоке 2412 происходит извлечение атомарного элемента. Атомарный элемент извлекается из локальной таблицы РДА, если совпадение найдено локально (на блоках 2404 и 2406), или из возвращенного атома, если совпадение найдено в другом месте (на блоках 2408 и 2410). Например, атомарный элемент 2304 может быть извлечен из таблицы 2206 РДА части РДА 2202 или из информации, полученной посредством функционального вызова «возвратить атом» 2204(R). Извлеченный атомарный элемент 2304 может быть кэширован в локальной таблице 2206 РДА, если он получен в результате функционального вызова «возвратить атом» 2204(R).At block 2412, an atomic element is extracted. The atomic element is retrieved from the local RDA table if a match is found locally (at blocks 2404 and 2406), or from the returned atom, if a match is found elsewhere (at blocks 2408 and 2410). For example, the atomic element 2304 can be retrieved from the RDA table 2206 of the RDA portion 2202 or from information obtained through the “return atom” function call 2204 (R). The extracted atomic element 2304 can be cached in the local RDA table 2206 if it is received as a result of the “return atom” function call 2204 (R).

На блоке 2414 из атомарного элемента выявляют хост, имеющий сродство к сеансу, на который указывает ссылка. Например, значение поля 2304(D) данных извлеченного атомарного элемента 2304 можно узнать, чтобы, таким образом, узнать сетевой адрес хоста 108, имеющего сродство к сеансу. На блоке 2416 входящий запрос соединения маршрутизируется на выявленный хост, например функция 2012 маршрутизации трафика и/или функция пересылки может маршрутизировать входящий запрос соединения, имеющий ссылку на сеанс на выявленный хост 108, имеющий сродство к сеансу. В следующем разделе описаны иллюстративные функции классификации, маршрутизации запросов и пересылки.At block 2414, a host having an affinity for the session referred to by the link is identified from the atomic element. For example, the value of the data field 2304 (D) of the extracted atomic element 2304 can be found in order to thereby find out the network address of the host 108 having an affinity for the session. At block 2416, the incoming connection request is routed to the identified host, for example, the traffic routing function 2012 and / or the forwarding function can route the incoming connection request having a session link to the identified host 108 having an affinity for the session. The following section describes illustrative classification, query routing, and forwarding functions.

Классификация, пересылка и маршрутизация запросаRequest classification, forwarding and routing

В этом разделе описано, как можно реализовать маршрутизацию трафика для выравнивания сетевой нагрузки, в том числе в отношении высокой надежности такой функции маршрутизации трафика. Функция маршрутизации трафика может включать в себя функцию классификации и/или запрашивания маршрутизации, особенно в связи с функцией пересылки. В этом разделе ссылки идут, главным образом, на фиг.25-31. Он освещает функцию маршрутизатора 306 запросов (фиг.3), взаимоотношения между отслеживанием сеансов и использованием информации работоспособности и нагрузки при маршрутизации трафика, эксплуатационных реализаций взаимодействий маршрутизации трафика с информацией сеанса и/или информацией работоспособности и нагрузки, процедур преодоления сбоя для высокой надежности инфраструктуры выравнивания сетевой нагрузки (включая обработку сбоев компонентов классификации, пересылки и/или маршрутизации запросов), дополнительных конфигураций инфраструктуры выравнивания сетевой нагрузки и т.д.This section describes how traffic routing can be implemented to balance network load, including with regard to the high reliability of such a traffic routing function. The traffic routing function may include a classification and / or routing request function, especially in connection with a forwarding function. In this section, the links go mainly to FIGS. 25-31. It highlights the function of the request router 306 (FIG. 3), the relationship between session tracking and the use of health and load information when routing traffic, operational implementations of traffic routing interactions with session information and / or health and load information, failover procedures for high reliability of the alignment infrastructure network load (including handling failures of classification components, forwarding and / or routing requests), additional configurations, and Network load balancing infrastructure, etc.

На фиг.25 показана инфраструктура выравнивания сетевой нагрузки, имеющая функцию маршрутизации запросов, реализованную маршрутизатором 306(H/S) запросов. Согласно отмеченному выше со ссылкой на функцию 2012 маршрутизации трафика, маршрутизация трафика может опираться на классификацию (например, с пересылкой) и/или запрашивание маршрутизации. Классификация на уровне пакетов, совместно с пересылкой, описана выше, в частности со ссылкой на фиг.4. Маршрутизация запросов описана здесь, в частности со ссылкой на фиг.25.25 shows a network load balancing infrastructure having a request routing function implemented by a request router 306 (H / S). As noted above with reference to the traffic routing function 2012, traffic routing can be based on classification (e.g., forwarding) and / or routing request. The classification at the packet level, together with the forwarding, is described above, in particular with reference to FIG. Request routing is described here, in particular with reference to FIG.

Маршрутизация на уровне запросов происходит на более высоком уровне, чем маршрутизация на уровне пакетов. В общем случае, маршрутизатор 306 запросов действует как посредник для приложения 316, работающего на хосте 108. Маршрутизатор 306 запросов заканчивает TCP-соединения, анализирует (возможно, частично) каждый запрос от клиента 102 и перенаправляет каждый запрос на хост 108. Маршрутизатор 306 запросов может осуществлять предварительную обработку на соединении, например SSL-дешифрование. Кроме того, маршрутизатор 306 запросов может выбирать поглощение определенных запросов (например, маршрутизатор запросов поддерживает кэш ответов) и может по своему усмотрению изменять запросы, прежде чем пересылать их на хосты 108.Request-level routing occurs at a higher level than packet-level routing. In general, the request router 306 acts as an intermediary for the application 316 running on the host 108. The request router 306 terminates the TCP connections, analyzes (possibly partially) each request from the client 102, and redirects each request to the host 108. The request router 306 can Perform preprocessing on the connection, such as SSL decryption. In addition, the query router 306 may choose to absorb certain requests (for example, the query router supports a response cache) and may optionally modify the requests before forwarding them to hosts 108.

Маршрутизаторы 306 запросов обычно зависят от приложения и могут быть достаточно расширяемыми в отношении того, что они могут делать. Исключительно в порядке примера в нижеследующем описании рассмотрен единственный класс маршрутизаторов 306 запросов - маршрутизаторы 306(H/S) запросов HTTP/SSL. Показано, что клиент 102, имеющий сетевой адрес С1, связывается по сети 104 с хостами 108(1) и 108(2), имеющими сетевые адреса Н1 и Н2, соответственно. Связь осуществляется посредством инфраструктуры выравнивания нагрузки, которая содержит маршрутизатор 306(H/S) запросов HTTP/SSL.Request routers 306 are typically application dependent and can be quite extensible in terms of what they can do. Exclusively by way of example, in the following description, a single class of request routers 306 is considered - HTTP / SSL request routers 306 (H / S). It is shown that the client 102 having the network address C1 is connected over the network 104 with the hosts 108 (1) and 108 (2) having the network addresses H1 and H2, respectively. The communication is through a load balancing infrastructure that includes an HTTP / SSL request router 306 (H / S).

Маршрутизатор 306(H/S) запросов HTTP/SSL заканчивает трафик HTTP и SSL, расшифровывает трафик SSL, проверяет каждый запрос HTTP от клиента 102, применяет зависящие от приложения правила для классификации каждого запроса и для определения «наилучшей» конечной точки для этого запроса, в то же время учитывая информацию работоспособности и нагрузки конечной точки приложения, и направляет запрос на конечную точку. Для подачи запроса на конечную точку используется отдельное TCP-соединение, отличное от инициированного клиентом 102 (последнее соединение заканчивается на маршрутизаторе 306(H/S) запросов HTTP/SSL). Эти действия можно рассматривать как логически эквивалентные действиям, производимым классификатором 304, но с той разницей, что эти действия в маршрутизаторе 306(H/S) запросов HTTP/SSL осуществляются на уровне логических запросов для каждого запроса в TCP-соединении. Маршрутизатор 306(H/S) запросов HTTP/SSL и, вообще, маршрутизаторы 306 запросов могут использовать те же инфраструктуры (i) работоспособности и нагрузки и (ii) отслеживания сеансов, которые используются классификаторами 304.Router 306 (H / S) of HTTP / SSL requests terminates HTTP and SSL traffic, decrypts SSL traffic, checks each HTTP request from client 102, applies application-specific rules to classify each request and to determine the “best” endpoint for this request, at the same time, given the health and load information of the application endpoint, it sends a request to the endpoint. To submit a request to the endpoint, a separate TCP connection is used, different from that initiated by the client 102 (the last connection ends on the HTTP / SSL request router 306 (H / S)). These actions can be considered as logically equivalent to the actions performed by the classifier 304, but with the difference that these actions in the router 306 (H / S) of HTTP / SSL requests are carried out at the level of logical requests for each request in the TCP connection. The HTTP / SSL request router 306 (H / S) and, in general, the request routers 306 can use the same infrastructure (i) health and load and (ii) session tracking that are used by classifiers 304.

Маршрутизатор 306(H/S) запросов HTTP/SSL действует как посредник между клиентом 102 и двумя хостами 108(1) и 108(2). Он обрабатывает два запроса от клиента 102 по одному TCP-соединению. В описываемой реализации окончательная маршрутизация запросов предусматривает ряд действий. Во-первых, клиент 102 устанавливает HTTP- или HTTPS-соединение [1] с маршрутизатором 306(H/S) запросов HTTP/SSL и посылает запрос №1 2502(1).The HTTP / SSL request router 306 (H / S) acts as an intermediary between the client 102 and the two hosts 108 (1) and 108 (2). It processes two requests from client 102 over a single TCP connection. In the described implementation, the final routing of requests involves a series of actions. First, the client 102 establishes an HTTP or HTTPS connection [1] with the HTTP / SSL request router 306 (H / S) and sends a request No. 1 2502 (1).

Во-вторых, маршрутизатор 306(H/S) запросов HTTP/SSL заканчивает сеанс SSL (если трафик зашифрован посредством SSL), анализирует запрос №1 2502(1) и проверяет содержимое запроса №1 2502(1). С учетом информации работоспособности и нагрузки, а также сеанса маршрутизатор 306(H/S) запросов HTTP/SSL определяет, что хост 108(1) является «наилучшим» хостом для этого конкретного запроса №1 2502(1) в этом примере.Secondly, the HTTP / SSL request router 306 (H / S) ends the SSL session (if the traffic is encrypted using SSL), analyzes the request No. 1 2502 (1) and checks the contents of the request No. 1 2502 (1). Based on the health and load information, as well as the session, the HTTP / SSL request router 306 (H / S) determines that host 108 (1) is the “best” host for this particular request # 1 2502 (1) in this example.

В-третьих, маршрутизатор 306(H/S) запросов HTTP/SSL устанавливает вторичное TCP-соединение [2] с хостом 108(1). Это вторичное TCP-соединение не исходит от VIP-адреса в сети 104; вместо этого, оно исходит от адреса (не показан на фиг.25), который выделен для маршрутизатора 306(H/S) запросов, чтобы гарантировать, что ответы 2504 от хоста(ов) 108 приходят на надлежащий маршрутизатор 306 запросов. (Может быть несколько действующих маршрутизаторов 306 запросов, хотя на фиг.25, для простоты, показан один маршрутизатор 306(H/S) запросов.) Альтернативно, можно использовать существующее соединение [2] с хостом 108(1). Затем маршрутизатор 306(H/S) запросов HTTP/SSL посылает, например, незашифрованную версию запроса №1 2502(1) на хост 108(1). В-четвертых, хост 108(1) отвечает посредством ответа №1 2504(1). В-пятых, маршрутизатор 306(H/S) запросов HTTP/SSL шифрует этот ответ №1 2504(1) и отправляет его обратно на клиент 102 по TCP-соединению [1].Third, the HTTP / SSL request router 306 (H / S) establishes a secondary TCP connection [2] with the host 108 (1). This secondary TCP connection does not originate from the VIP address on network 104; instead, it comes from an address (not shown in FIG. 25) that is allocated to the request router 306 (H / S) to ensure that responses 2504 from the host (s) 108 come to the proper request router 306. (There may be several operational request routers 306, although in FIG. 25, for simplicity, one request router 306 (H / S) is shown.) Alternatively, you can use the existing connection [2] with host 108 (1). Then, the HTTP / SSL request router 306 (H / S) sends, for example, an unencrypted version of request No. 2502 (1) to host 108 (1). Fourthly, the host 108 (1) responds with a response No. 1 of 2504 (1). Fifth, the HTTP / SSL request router 306 (H / S) encrypts this response No. 1 2504 (1) and sends it back to client 102 over a TCP connection [1].

В-шестых, клиент 102 посылает другой запрос, запрос №2 2502(2). Запрос №2 2502(2) обрабатывается аналогично запросу №1 2502(1) за исключением того, что маршрутизатор 306(H/S) запросов HTTP/SSL выбирает хост 108(2). Причина другого выбора может быть в том, что хост 108(1) в данный момент находится в нерабочем состоянии или перегружен, поскольку запрос №2 2502(2) направлен по другому URL, чем запрос №1 2502(1), и т.д. Так или иначе, маршрутизатор 306(H/S) запросов HTTP/SSL устанавливает другое вторичное TCP-соединение, но это вторичное TCP-соединение [3] организовано с хостом 108(2). Незашифрованный запрос №2 2502(2) маршрутизируется на хост 108(2), и, в результате, ответ №2 2504(2) поступает оттуда. Затем, зашифрованная версия ответа №2 2504(2) отправляется на клиент 102 от маршрутизатора 306(H/S) запросов HTTP/SSL.Sixth, client 102 sends another request, request No. 2 2502 (2). Request No. 2 2502 (2) is processed similarly to request No. 1 2502 (1) except that the router 306 (H / S) of the HTTP / SSL requests selects the host 108 (2). The reason for another choice may be that the host 108 (1) is currently in an idle state or is overloaded, because the request No. 2 2502 (2) was sent to a different URL than the request No. 1 2502 (1), etc. . One way or another, the HTTP / SSL request router 306 (H / S) establishes a different secondary TCP connection, but this secondary TCP connection [3] is established with host 108 (2). Unencrypted request No. 2 2502 (2) is routed to the host 108 (2), and, as a result, the response No. 2 2504 (2) comes from there. Then, the encrypted version of the response No. 2 2504 (2) is sent to the client 102 from the router 306 (H / S) HTTP / SSL requests.

В-седьмых, клиент 102 закрывает TCP-соединение [1] с маршрутизатором 306(H/S) запросов HTTP/SSL. Маршрутизатор 306(H/S) запросов HTTP/SSL (в некоторый момент в будущем) закрывает соединения [2] и [3], установленные с хостами 108(1) и 108(2), соответственно, со стороны клиента 102. TCP-соединение [2] можно, альтернативно, закрывать после того, как маршрутизатор 306(H/S) запросов HTTP/SSL решит открыть/использовать TCP-соединение [3] для запроса №2 2502(2).Seventh, client 102 closes the TCP connection [1] with the HTTP / SSL request router 306 (H / S). Router 306 (H / S) of HTTP / SSL requests (at some point in the future) closes the connections [2] and [3] established with hosts 108 (1) and 108 (2), respectively, from client side 102. TCP- connection [2] can alternatively be closed after router 306 (H / S) of HTTP / SSL requests decides to open / use TCP connection [3] for request No. 2 2502 (2).

Поскольку маршрутизатор 306(H/S) запросов HTTP/SSL заканчивает HTTP/HTTPS-соединение, то маршрутизатор 306(H/S) запросов HTTP/SSL может не только маршрутизировать запросы. Например, маршрутизатор 306(H/S) запросов HTTP/SSL может, в принципе, поддерживать собственный кэш ответов (например, с помощью внеполосного механизма, чтобы сделать кэш недействительным). Согласно отмеченному в вышеприведенном примере, маршрутизатор 306(H/S) запросов HTTP/SSL также может, в принципе, маршрутизировать запросы других видов на другие группы хостов 108 на основании, например, запрашиваемого URL. Опять же, маршрутизатор 306(H/S) запросов HTTP/SSL может, в принципе, агрегировать запросы от многочисленных короткоживущих клиентских соединений и передавать их по немногочисленным долгоживущим TCP-соединениям на хосты 108. Такое агрегирование соединений может снижать служебную нагрузку обработки соединений на хостах 108.Since the HTTP / SSL request router 306 (H / S) ends the HTTP / HTTPS connection, the HTTP / SSL request router 306 (H / S) can not only route the requests. For example, the HTTP / SSL request router 306 (H / S) can, in principle, support its own response cache (for example, using an out-of-band mechanism to invalidate the cache). As noted in the above example, the HTTP / SSL request router 306 (H / S) can also, in principle, route other types of requests to other groups of hosts 108 based on, for example, the requested URL. Again, the HTTP / SSL request router 306 (H / S) can, in principle, aggregate requests from multiple short-lived client connections and send them over a few long-lived TCP connections to hosts 108. Such aggregation of connections can reduce the overhead of processing connections on hosts 108.

Маршрутизаторы запросов других классов могут соответствовать другим иллюстративным протоколам помимо HTTP. Например, маршрутизатор запросов может представлять собой маршрутизатор запросов SOAP. Маршрутизатор запросов SOAP действует аналогично маршрутизатору 306(H/S) запросов HTTP/SSL. Однако маршрутизатор запросов SOAP предназначен именно для маршрутизации трафика SOAP. Маршрутизаторы запросов SOAP понимают заголовки SOAP и принимают решения по маршрутизации на основании заголовков SOAP, а также работоспособности и нагрузки приложений.Request routers of other classes may conform to illustrative protocols other than HTTP. For example, a request router may be a SOAP request router. The SOAP request router acts similarly to the HTTP / SSL request router 306 (H / S). However, the SOAP request router is designed specifically for routing SOAP traffic. SOAP request routers understand SOAP headers and make routing decisions based on SOAP headers, as well as application health and load.

Классификация и пересылка уровня пакетов (или маршрутизация уровня пакетов) и маршрутизация уровня запросов могут обеспечивать некоторый вид выравнивания нагрузки уровня 7. Выравнивание нагрузки уровня 7 описано ниже в разделе, озаглавленном «Перенос соединений с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений». Маршрутизация на уровне пакетов обеспечивает доступ только для чтения к начальной части данных TCP-соединения клиента, а маршрутизация на уровне запросов обеспечивает доступ с возможностью чтения и изменения ко всему потоку данных.Classification and forwarding of the packet level (or routing of the packet level) and routing of the query level can provide some kind of level 7 load balancing. The level 7 load balancing is described below in the section entitled “Transferring connections with optional tunneling and / or load balancing at the application level”. Packet-level routing provides read-only access to the initial portion of the client’s TCP connection data, and query-level routing provides read-only access to the entire data stream.

Маршрутизация на уровне пакетов имеет несколько преимуществ над маршрутизацией на уровне запросов. Эти преимущества включают в себя прозрачность (клиентские пакеты доставляются на хосты в первозданном виде, сохраняя IP-адреса и номера портов источника и назначения), низкую служебную нагрузку обработки (в целом, пересылка трафика предусматривает поиск маршрута), низкую задержку (отдельные пакеты пересылаются, и пакеты не ставятся в очередь после определения пункта назначения TCP-соединения) и высокая надежность (в целом, сбой на блоке пересылки не прекращает TCP-соединение). С другой стороны, маршрутизация на уровне запросов обычно имеет следующие преимущества над маршрутизацией на уровне пакетов: возможность проверять весь поток данных, идущий на и от клиента, и возможность преобразовывать поток данных и даже расщеплять поток данных между множественными хостами или агрегировать потоки данных от множественных клиентов.Packet-level routing has several advantages over query-level routing. These benefits include transparency (client packets are delivered to the hosts in their original form, preserving the IP addresses and port numbers of the source and destination), low processing overhead (in general, traffic forwarding involves searching for a route), low latency (individual packets are forwarded, and packets are not queued after determining the destination of the TCP connection) and high reliability (in general, a failure on the forwarding unit does not stop the TCP connection). On the other hand, query-level routing usually has the following advantages over packet-level routing: the ability to check the entire data stream going to and from the client, and the ability to transform the data stream and even split the data stream between multiple hosts or aggregate data streams from multiple clients .

На фиг.26 показана логическая блок-схема 2600 способа маршрутизации входящих пакетов в соответствии с (i) информацией сеанса и (ii) информацией работоспособности и нагрузки. Логическая блок-схема 2600 содержит восемь блоков 2602-2616. Хотя действия логической блок-схемы 2600 могут осуществляться в других средах и с помощью различных программных схем, фиг. 1-3, 12, 18-20, 22 и 23В используются, в частности, для иллюстрации определенных аспектов и примеров способа.FIG. 26 shows a flow chart 2600 of an incoming packet routing method in accordance with (i) session information and (ii) health and load information. The logical block diagram 2600 contains eight blocks 2602-2616. Although the actions of the logical flowchart 2600 can be carried out in other environments and using various software circuits, FIG. 1-3, 12, 18-20, 22 and 23B are used, in particular, to illustrate certain aspects and examples of the method.

На блоке 2602 происходит прием входящего пакета. Например, пакет от клиента 102 может поступать на блок пересылки 302 модуля 106 выравнивания нагрузки. На блоке 2604 происходит определение, относится ли полученный пакет к уже существующему сеансу. Например, блок 302 пересылки может свериться с локальной таблицей 2206() РДА, чтобы определить, что принятый пакет уже является частью сеанса TCP/IP.At block 2602, an incoming packet is received. For example, a packet from client 102 may arrive at forwarding unit 302 of load balancing module 106. At block 2604, a determination is made whether the received packet belongs to an existing session. For example, forwarding unit 302 may check the local RDA table 2206 () to determine that the received packet is already part of a TCP / IP session.

Кроме того, блок 302 пересылки может свериться с локальной таблицей 2206() РДА и определить, что полученный пакет уже не является частью сеанса TCP/IP. В этом случае блок 302 пересылки подает полученный пакет на классификатор 304, который проверяет сродство к сеансу на более высоком уровне для полученного пакета, если он имеет ссылку на сеанс. Примеры таких действий описаны выше, в частности со ссылкой на фиг.24, и ниже, в частности со ссылками на фиг. 27 и 28.In addition, forwarding unit 302 may check the local RDA table 2206 () and determine that the received packet is no longer part of the TCP / IP session. In this case, the forwarding unit 302 submits the received packet to the classifier 304, which checks the affinity for the session at a higher level for the received packet, if it has a reference to the session. Examples of such actions are described above, in particular with reference to FIG. 24, and below, in particular with reference to FIG. 27 and 28.

Если полученный пакет относится к уже существующему сеансу (что определено на блоке 2604), то происходит переход к блоку 2606. На блоке 2606 происходит обнаружение хоста, имеющего сродство к уже существующему сеансу. Например, хост 108, имеющий сродство к сеансу, может быть выявлен из локальной таблицы 2206() РДА и/или общей распределенной таблицы 2206 РДА блоком 302 пересылки или классификатором 304.If the received packet refers to an existing session (which is determined at block 2604), then proceed to block 2606. At block 2606, a host is found that has an affinity for an existing session. For example, a host 108 having an affinity for a session can be detected from a local RDA table 2206 () and / or a shared distributed RDA table 2206 by a forwarding unit 302 or classifier 304.

На блоке 2608 производится определение, работоспособен ли хост, имеющий сродство к сеансу. Например, классификатор 304 может свериться с объединенным кэшем 1208 работоспособности и нагрузки, чтобы определить, работоспособен ли хост 108, имеющий сродство к сеансу, в особенности для тех принятых пакетов, которые являются частью сеансов, которые находятся на более высоком логическом уровне, чем сеансы TCP/IP. Действие(я) этого блока могут осуществляться совместно с обработчиком 314 работоспособности и нагрузки.At block 2608, a determination is made whether a host that has an affinity for the session is operational. For example, classifier 304 may check the combined health and load cache 1208 to determine if host 108 has an affinity for a session, especially for received packets that are part of sessions that are at a higher logical level than TCP sessions / IP. The action (s) of this block can be implemented in conjunction with the processor 314 health and load.

Если хост, имеющий сродство к сеансу, работоспособен (что определено на блоке 2608), то происходит переход к блоку 2610. На блоке 2610 полученный пакет маршрутизируется на хост, имеющий сродство к сеансу. Например, блок 302 пересылки (для сеансов TCP/IP) или классификатор 304 (для сеансов более высокого уровня) может маршрутизировать пакет на хост 108, имеющий сродство к сеансу. В альтернативной реализации классификатор 304 может возвращать принятый пакет на блок 302 пересылки для маршрутизации на хост 108, имеющий сродство к сеансу, даже для принятых пакетов, которые являются частью сеансов более высокого уровня.If the host with the affinity for the session is operational (as determined at block 2608), then the process proceeds to block 2610. At block 2610, the received packet is routed to the host with the affinity for the session. For example, forwarder 302 (for TCP / IP sessions) or a classifier 304 (for higher-level sessions) can route the packet to host 108, which has an affinity for the session. In an alternative implementation, the classifier 304 may return the received packet to the forwarder 302 for routing to the host 108 having an affinity for the session, even for received packets that are part of higher-level sessions.

Если же хост, имеющий сродство к сеансу, неработоспособен (что определено на блоке 2608), то происходит переход к блоку 2612. Кроме того, если, с другой стороны, полученный пакет не относится к уже существующему сеансу (что определено на блоке 2604), то происходит переход к 2612. На блоке 2612 осуществляется выбор хоста в соответствии с информацией работоспособности и нагрузки. Например, классификатор 304 может выбирать хост 108 из и/или с использованием распределения для приложения на основании работоспособности и нагрузки (например, из ответа 1804 по распределению целевых конечных точек приложения), полученного от обработчика 314 работоспособности и нагрузки. Примеры этих действий описаны выше, в частности со ссылкой на фиг. 19 и 18, и ниже, в частности со ссылкой на фиг.30.If the host with the affinity for the session is down (which is determined at block 2608), then the transition to block 2612 occurs. In addition, if, on the other hand, the received packet does not belong to an existing session (which is determined at block 2604), this proceeds to 2612. At block 2612, a host is selected in accordance with the health and load information. For example, the classifier 304 may select the host 108 from and / or using the distribution for the application based on the health and load (for example, from the response 1804 on the distribution of the target endpoints of the application) received from the health and load handler 314. Examples of these actions are described above, in particular with reference to FIG. 19 and 18, and below, in particular with reference to FIG.

На блоке 2614 полученный пакет маршрутизируется на выбранный хост. Например, классификатор 304 может маршрутизировать (в необязательном порядке, через блок 302 пересылки) пакет на выбранный хост 108. На блоке 2616 прокладывается маршрут для пути соединения к выбранному хосту. Например, классификатор 304 может добавить элемент информации сеанса в таблицу 2206 РДА, в особенности, в таблицу 2206() РДА, которая является локальной по отношению к блоку 302 пересылки, который передал полученный пакет классификатору 304. Этот элемент информации сеанса можно дублировать в соответствии с установленной политикой избыточности для РДА 2202 (например, блока 308 отслеживания сеансов).At block 2614, the received packet is routed to the selected host. For example, classifier 304 may route (optionally, through forwarding block 302) a packet to a selected host 108. At block 2616, a route is laid for the connection path to the selected host. For example, the classifier 304 may add a session information element to the RDA table 2206, in particular to the RDA table 2206 (), which is local to the forwarding unit 302 that transmitted the received packet to the classifier 304. This session information element can be duplicated in accordance with an established redundancy policy for RDA 2202 (e.g., session tracking unit 308).

Действия блока 2614 и 2616 могут осуществляться в конкретно показанном порядке, когда блок 2616 выполняется до блока 2614, когда действия частично или полностью перекрываются в любом порядке и т.д. Заметим, что вышеописанные действия, осуществляемые классификатором 304, могут альтернативно выполняться маршрутизатором 306 запросов (или, в целом, функцией 2012 маршрутизации трафика).The actions of block 2614 and 2616 can be carried out in the order shown, when block 2616 is executed before block 2614, when the actions partially or completely overlap in any order, etc. Note that the above actions performed by the classifier 304 may alternatively be performed by the request router 306 (or, in general, the traffic routing function 2012).

Помимо маршрутизации на уровне пакетов и на уровне запросов, описанную здесь функцию маршрутизации трафика (например, функцию 2012 маршрутизации трафика, маршрутизатор 306 запросов, пару блок 302 пересылки/классификатор 304 и т.д.) также можно использовать для реализации функции брандмауэра. Поэтому функция маршрутизации трафика может включать в себя особенность блокировки трафика вместо автоматической маршрутизации трафика на надлежащий хост 108. Например, классификатор 304 может инспектировать трафик и прерывать его, если он кажется небезопасным.In addition to routing at the packet level and at the request level, the traffic routing function described here (for example, the traffic routing function 2012, the request router 306, the pair of forwarder 302 / classifier 304, etc.) can also be used to implement the firewall function. Therefore, the traffic routing function may include a traffic blocking feature instead of automatically routing the traffic to the proper host 108. For example, the classifier 304 can inspect the traffic and interrupt it if it seems unsafe.

На фиг.27 показана последовательность действий по маршрутизации трафика в отсутствие сбоев. Показано, что перед остальной частью инфраструктуры 106 выравнивания нагрузки (отдельно не указана) имеются один или несколько коммутаторов 202(LBA), знающих о выравнивании нагрузки. Функции пересылки и классификации распределены по трем устройствам или узлам. Первое устройство содержит блок 302(1) пересылки и классификатор 304(1). Второе устройство содержит классификатор 304(2). Третье устройство содержит блок 302(2) пересылки.On Fig shows the sequence of actions for routing traffic in the absence of failures. It is shown that in front of the rest of the load balancing infrastructure 106 (not shown separately), there are one or more switches 202 (LBA) that are aware of load balancing. Forwarding and classification functions are distributed across three devices or nodes. The first device comprises a forwarder 302 (1) and a classifier 304 (1). The second device contains a classifier 304 (2). The third device comprises a forwarder 302 (2).

С помощью классификатора 304(2), работающего на втором устройстве, и блока 302(2) пересылки, работающего на третьем устройстве, каждое устройство можно конкретно настраивать на его соответствующие функции. Например, аппаратное, программное, аппаратно-программное обеспечение, некоторые их комбинации и т.д. второго устройства и третьего устройства можно приспособить для поддержки нужных функций, не привлекая дополнительных средств. Таким образом, третье устройство, содержащее блок 302(2) пересылки, по своим аппаратным возможностям может быть сродни коммутатору и/или маршрутизатору, а второе устройство, содержащее классификатор 304(2), по своим аппаратным возможностям может больше походить на сервер и/или персональный компьютер.Using the classifier 304 (2) running on the second device and the forwarding unit 302 (2) running on the third device, each device can be specifically configured for its respective functions. For example, hardware, software, hardware and software, some combinations thereof, etc. the second device and the third device can be adapted to support the desired functions without attracting additional funds. Thus, the third device containing the forwarding unit 302 (2) may be akin to a switch and / or router in its hardware capabilities, and the second device containing the classifier 304 (2) may look more like a server and / or Personal Computer.

Хотя показаны три устройства, обеспечивающие функциональные возможности по четырем компонентам, альтернативные логические и/или аппаратные конфигурации для функций пересылки и классификации применимы к проиллюстрированной последовательности действий по маршрутизации трафика, показанной на фиг.27. Кроме того, хотя пункты назначения маршрутизации показаны как хосты 108, описанные здесь реализации маршрутизации можно альтернативно применять, в целом, к следующему узлу-адресату для пакета и не обязательно к окончательному узлу, потребляющему пакет.Although three devices are shown that provide functionality across four components, alternative logical and / or hardware configurations for forwarding and classification functions are applicable to the illustrated traffic routing sequence shown in FIG. 27. Furthermore, although routing destinations are shown as hosts 108, the routing implementations described here can alternatively be applied, in general, to the next destination node for the packet and not necessarily to the final node consuming the packet.

Реализация РДА 2202 блока 308 отслеживания сеансов используется для реализации таблицы 2206 РДА. Однако блоки 1904 сохранения сродства к сеансу, в общем случае, также применимы к иллюстративной последовательности действий по маршрутизации трафика, показанной на фиг.27. Блок 302(1) пересылки содержит часть 2206(1) таблицы РДА, а блок 302(2) пересылки содержит часть 2206(2) таблицы РДА. Входящие пакеты маршрутизируются на хост 108(1) или хост 108(2).An implementation of the RDA 2202 of the session tracking unit 308 is used to implement the RDA table 2206. However, session affinity conservation blocks 1904 are also generally applicable to the exemplary traffic routing sequence shown in FIG. 27. Forwarding unit 302 (1) comprises an RDA table part 2206 (1), and a forwarding unit 302 (2) comprises an RDA table part 2206 (2). Incoming packets are routed to host 108 (1) or host 108 (2).

В описанной реализации РДА 2202 является распределенной, размещенной в памяти, таблицей «атомов» 2304 (например, пар ключевое слово/значение, с необязательными метаданными), имеющих информацию сеанса. РДА 2202 и таблица 2206 РДА описаны выше, в частности, со ссылкой на фиг.22-24. Любой узел в группе классификаторов 304 может добавлять, запрашивать и удалять атомы 2304. РДА 2202 поддерживает высоконадежную таблицу 2206 РДА, которая содержит информацию о действующих маршрутизаторах (например, уровня TCP/IP), а также сеансах более высокого уровня. Примеры сеансов более высокого уровня включают в себя: сеанс TLS/SSL, сеанс PPTP, сеанс IPSec/L2TP, сеанс ISA, сеанс на основе cookie HTTP и т.д. Кроме того, РДА 2202 может включать в себя элементы информации сеанса в таблице 2206 РДА, которые относятся к другим сеансам, не связанным с TCP/IP, например, RTF, UDP и т.д.In the described implementation, the RDA 2202 is a distributed, stored in memory, table of “atoms” 2304 (for example, keyword / value pairs, with optional metadata) having session information. RDA 2202 and RDA table 2206 are described above, in particular with reference to FIGS. 22-24. Any node in the classifier group 304 can add, query, and delete atoms 2304. RDA 2202 maintains a highly reliable RDA table 2206, which contains information about existing routers (for example, TCP / IP level), as well as higher-level sessions. Examples of higher level sessions include: TLS / SSL session, PPTP session, IPSec / L2TP session, ISA session, HTTP cookie-based session, etc. In addition, the RDA 2202 may include session information elements in the RDA table 2206 that relate to other sessions not associated with TCP / IP, for example, RTF, UDP, etc.

Позиция (1) обозначает, что коммутаторы 202(LBA), знающие о выравнивании нагрузки, направляют входящий пакет на блок 302(1) пересылки. Позиция (2) обозначает, что блок 302(1) сверяется со своей внутренней таблицей маршрутизации, таблицей 2206(1) РДА. Когда блок 302(1) пересылки не находит атомарный элемент 2304 для этого пакета, он пересылает пакет на присвоенный ему и/или связанный с ним классификатор, классификатор 304(1).Position (1) indicates that the switches 202 (LBA), aware of load balancing, direct the incoming packet to block 302 (1) forwarding. Position (2) indicates that block 302 (1) is checking against its internal routing table, table 2206 (1) RDA. When the forwarder 302 (1) does not find the atomic element 2304 for this packet, it forwards the packet to the assigned and / or associated classifier, classifier 304 (1).

Позиция (3) обозначает, что классификатор 304(1) распознает, что пакет в данном примере является первым пакетом нового сеанса (например, пакетом SYN для TCP-соединения). Поэтому классификатор 304(1) обрабатывает пакет как начало нового TCP-соединения от клиента 102. Используя информацию работоспособности и нагрузки от обработчика 314 работоспособности и нагрузки (не показан в явном виде), классификатор 304(1) определяет, что хост 108(1) должен принимать этот сеанс.Position (3) indicates that the classifier 304 (1) recognizes that the packet in this example is the first packet of a new session (for example, the SYN packet for a TCP connection). Therefore, classifier 304 (1) processes the packet as the beginning of a new TCP connection from client 102. Using health and load information from health and load handler 314 (not shown explicitly), classifier 304 (1) determines that host 108 (1) must take this session.

Классификатор 304(1) обновляет таблицу 2206(1) РДА, которая служит локальной таблицей маршрутизации для блока 302(1) пересылки, а также вставляет атомарный элемент 2304, представляющий маршрут, в общую таблицу 2206 РДА. Это могут быть отдельные операции, единая операция, в которой сеансы уровня TCP/IP таблицы 2206 РДА размещаются на блоках 302 пересылки, и т.д. РДА 2202 внутренне дублирует этот маршрут в один или несколько членов группы классификаторов 304 в соответствии со своей оговоренной политикой избыточности. Классификатор 304(1) может, в необязательном порядке, связываться с хостом 108(1), чтобы подтвердить создание нового сеанса, прежде чем обновить таблицу 2206(1) РДА блока 302(1) пересылки и общие РДА 2202/таблицу 2206 РДА.Classifier 304 (1) updates the RDA table 2206 (1), which serves as the local routing table for the forwarder 302 (1), and also inserts the atomic element 2304 representing the route into the RDA common table 2206. These can be separate operations, a single operation in which sessions of the TCP / IP level of the RDA table 2206 are located on forwarding units 302, etc. RDA 2202 internally duplicates this route into one or more members of the classifier 304 group in accordance with its agreed redundancy policy. Classifier 304 (1) may optionally contact the host 108 (1) to confirm the creation of a new session before updating the table 2206 (1) RDA block 302 (1) forwarding and general RDA 2202 / table 2206 RDA.

Позиция (4) обозначает, что блок 302(1) пересылки напрямую пересылает последующие пакеты для этого соединения на хост 108(1), не взаимодействуя с классификатором 304(1). РДА 2202 можно использовать для маскировки, по меньшей мере, отчасти, сбоя блока 302 пересылки, классификатора 304 или пары 302/304 блок пересылки/классификатор. РДА 2202 также можно использовать, по меньшей мере, частично, для сохранения способности клиента к соединению, если коммутаторы 202(LBA), знающие о выравнивании нагрузки, по случайности, начинают передавать пакеты для установленного соединения на другой блок 302 пересылки.Position (4) indicates that the forwarding unit 302 (1) directly forwards subsequent packets for this connection to host 108 (1) without interacting with classifier 304 (1). RDA 2202 can be used to mask, at least in part, the failure of the forwarder 302, classifier 304, or forwarder / classifier pair 302/304. RDA 2202 can also be used, at least in part, to maintain client connectivity if the switches 202 (LBA), aware of load balancing, randomly start transmitting packets for the established connection to another forwarder 302.

На фиг.28 показана последовательность действий по маршрутизации трафика при наличии сбоя(ев). В противоположность последовательности действий по маршрутизации трафика в отсутствие сбоев, показанной на фиг.27, на фиг.28 показан сбой, произошедший в части инфраструктуры 106 выравнивания сетевой нагрузки (конкретно не указанной). В частности, первое устройство, на котором размещены и работают блок 302(1) пересылки и классификатор 304(1), переходит в нерабочее состояние после установления соединения, показанного на фиг.27. РДА 2202, по меньшей мере, частично маскирует этот сбой.On Fig shows the sequence of actions for routing traffic in the presence of failure (s). In contrast to the flow of traffic routing in the absence of failures shown in FIG. 27, FIG. 28 shows a failure that occurred in part of the network load balancing infrastructure 106 (not specifically indicated). In particular, the first device on which the forwarding unit 302 (1) and the classifier 304 (1) are located and operating, becomes inoperative after establishing the connection shown in FIG. 27. RDA 2202 at least partially masks this failure.

Позиция (1) обозначает, что коммутаторы 202(LBA), знающие о выравнивании нагрузки, обнаруживают сбой блока 302(1) пересылки и начинают передавать пакеты для соединения с каким-либо другим блоком 302 пересылки в группе. В этом примере другой блок 302 пересылки представляет собой блок 302(2) пересылки. Хотя на фиг.28 показан случай сбоя, коммутаторы 202(LBA), знающие о выравнивании нагрузки, могут также направлять этот трафик на блок 302(2) пересылки, даже если блок 302(1) пересылки все еще действует. Эта смена блоков 302 пересылки, инициированная в отсутствие сбоя, происходит, например, потому что коммутаторы 202(LBA), знающие о выравнивании нагрузки, не сохраняют сродство этого трафика с блоком 302(1) пересылки. Любой из нескольких факторов может заставить коммутаторы 202 (ошибочно) направить трафик на другой (неродственный) блок 302 пересылки. Например, трафик для одного и того же сеанса более высокого уровня может поступать на коммутаторы 202 с другого IP-адреса источника или порта источника, когда источник находится по другую сторону фермы прокси-серверов. Действия, обозначенные позициями (2)-(5) применяются как в случае сбоев, так и в случае «неверно направленного трафика».Position (1) indicates that the switches 202 (LBA), aware of load balancing, detect the failure of the forwarder 302 (1) and begin to transmit packets to connect to any other forwarder 302 in the group. In this example, another forwarding unit 302 is a forwarding unit 302 (2). Although a failure case is shown in FIG. 28, the LBAs 202 aware of load balancing can also direct this traffic to the forwarding unit 302 (2), even if the forwarding unit 302 (1) is still operational. This change of forwarding units 302, initiated in the absence of a failure, occurs, for example, because the switches 202 (LBA), aware of load balancing, do not retain the affinity of this traffic with the forwarding unit 302 (1). Any of several factors may cause the switches 202 (erroneously) to direct traffic to another (unrelated) forwarder 302. For example, traffic for the same higher-level session can flow to switches 202 from a different source IP address or source port when the source is on the other side of the proxy farm. The actions indicated by positions (2) - (5) are applied both in the event of failures and in the case of “incorrectly directed traffic”.

Позиция (2) обозначает, что блок 302(2) пересылки сверяется со своей таблицей маршрутизации, таблицей 2206(2) РДА. Не найдя маршрут для этого пакета, он пересылает этот пакет на свой классификатор 304(2). Позиция (3) обозначает, что классификатор распознает, что этот пакет является пакетом «середины сеанса», и классификатор 304(2) запрашивает у РДА 2202 маршрут для этого пакета. РДА 2202 отвечает посредством маршрута для соединения из связанного с ним атомарного элемента 2304.Position (2) indicates that the forwarding unit 302 (2) is checked against its routing table, RDA table 2206 (2). Not finding a route for this packet, it forwards this packet to its classifier 304 (2). Position (3) indicates that the classifier recognizes that this packet is a “mid-session” packet, and the classifier 304 (2) asks the RDA 2202 for the route for this packet. RDA 2202 responds via a route for connecting from its associated atomic element 2304.

Позиция (4) обозначает, что классификатор 304(2) прокладывает маршрут в блоке 302(2) пересылки. Протокол прокладки маршрутов описан ниже. Позиция (5) обозначает, что последующие пакеты для этого соединения, направленные на блок 302(2) пересылки, маршрутизируются непосредственно в надлежащий хост, который в данном примере является хостом 108(1) без сверки с классификатором 304(2).Position (4) indicates that the classifier 304 (2) leads the route in block 302 (2) forwarding. The routing protocol is described below. Position (5) indicates that subsequent packets for this connection directed to the forwarder 302 (2) are routed directly to the proper host, which in this example is host 108 (1) without reconciling with classifier 304 (2).

В целом, протокол прокладки маршрутов для связи между классификаторами 304 и блоками 302 пересылки включает в себя команды добавления и удаления маршрутов. В частности, классификатор 304 отправляет на блок 302 пересылки команду добавления маршрута для установления маршрута между блоком пересылки и хостом 108 для данного соединения. Например, классификатор 304(2) может подать на блок 302(2) пересылки команду добавления маршрута, указанную на фиг.28 позицией (4). Маршрут (например, ключ и соответствующее значение) добавляется в локальную таблицу 2206(2) РДА для быстрого доступа к блоку 302(2) пересылки в будущем. В этом примере, классификатор 304(2) является устройством, отдельным от блока 302(2) пересылки, вследствие чего протокол прокладки маршрутов может представлять собой протокол между устройствами. Однако протокол прокладки маршрутов можно также использовать для связи внутри устройства.In general, a routing protocol for communicating between classifiers 304 and forwarders 302 includes commands for adding and removing routes. In particular, the classifier 304 sends to the forwarder 302 a command to add a route to establish a route between the forwarder and host 108 for a given connection. For example, the classifier 304 (2) may send to the forwarding unit 302 (2) the add route command indicated at (4) in FIG. 28. The route (for example, the key and the corresponding value) is added to the local RDA table 2206 (2) for quick access to the forwarding unit 302 (2) in the future. In this example, the classifier 304 (2) is a device separate from the forwarding unit 302 (2), whereby the routing protocol may be a protocol between devices. However, the routing protocol can also be used for communication within the device.

В описанной реализации классификатор 304(2) содержит реестр 2802 соединений. С помощью реестра 2802 соединений классификатор 304(2) отслеживает сеансы любых блоков 302 пересылки (например, блока 302(2) пересылки), для которых классификатор 304(2) прокладывает маршруты. Чтобы классификатор 304(2) мог отслеживать соединения, включая их прекращения, блок 302(2) пересылки пересылает окончательные пакеты для сеансов (например, пакет FIN TCP) на классификатор 304(2). Затем классификатор 304(2) удаляет из реестра 2802 соединений элемент, который соответствует сеансу, и отправляет на блок 302(2) пересылки команду удаления маршрута. Получив команду удаления маршрута, блок 302(2) пересылки удаляет соответствующий маршрут из таблицы 2206(2) РДА.In the described implementation, classifier 304 (2) contains a registry of 2802 compounds. Using the registry 2802 connections classifier 304 (2) tracks the sessions of any blocks 302 forwarding (for example, block 302 (2) forwarding), for which the classifier 304 (2) paves the way. In order for classifier 304 (2) to track connections, including terminations, forwarder 302 (2) forwards the final packets for sessions (e.g., TCP TCP packet) to classifier 304 (2). Then, the classifier 304 (2) removes the element that corresponds to the session from the connection registry 2802 and sends a route removal command to the forwarding unit 302 (2). Upon receiving the route deletion command, the forwarding unit 302 (2) deletes the corresponding route from the RDA table 2206 (2).

Таким образом, функция классификации совместно с функцией отслеживания сеансов может управлять таблицами маршрутизации и их маршрутами, которые используются функцией пересылки. Поэтому функция пересылки, которая разделена на другое устройство, может осуществляться с использованием высокоскоростного, но сравнительно простого оборудования. Альтернативно, классификаторы 304 могут опираться на связь с хостами 108, а не на перехваченные начальные (или дополнительно к ним) (например, SYN TCP) и конечные (например, FIN TCP) пакеты сеанса, чтобы определить продолжительности сеансов. Иными словами, классификаторы 304 могут альтернативно или дополнительно принимать и использовать сообщения 2008(U/D) (начала/окончания) сеанса, описанные выше в разделе, озаглавленном «Отслеживание сеансов».Thus, the classification function, together with the session tracking function, can manage the routing tables and their routes that are used by the forwarding function. Therefore, the transfer function, which is divided into another device, can be carried out using high-speed, but relatively simple equipment. Alternatively, classifiers 304 may rely on communication with hosts 108 rather than intercepted initial (or in addition to them) (e.g., SYN TCP) and final (e.g., FIN TCP) session packets to determine session durations. In other words, classifiers 304 may alternatively or additionally receive and use session 2008 (U / D) (start / end) messages described above in the section entitled “Session Tracking”.

На фиг.29 показаны дополнительные процедуры преодоления сбоя для повышения надежности инфраструктуры 106 выравнивания сетевой нагрузки. Опишем процедуры преодоления сбоя для двух разных сбоев, сбоя 2902 и сбоя 2906. Показано, что инфраструктура 106 выравнивания сетевой нагрузки (отдельно не указана) содержит пять компонентов: блок 302(1) пересылки, блок 302(2) пересылки, блок 302(3) пересылки, классификатор 304(1) и классификатор 304(2).On Fig shows additional procedures for overcoming failure to improve the reliability of the infrastructure 106 balancing network load. We describe the procedures for overcoming a failure for two different failures, failure 2902 and failure 2906. It is shown that the network load balancing infrastructure 106 (not specified separately) contains five components: transfer unit 302 (1), transfer unit 302 (2), unit 302 (3 ) forwarding, classifier 304 (1) and classifier 304 (2).

В описываемой реализации каждый из этих пяти компонентов 302(1), 302(2), 302(3), 304(1) и 304(2) соответствует отдельному устройству. Однако подобные или аналогичные процедуры преодоления сбоя можно применять к средам, в которых другие компоненты выравнивания нагрузки совместно используют устройства. Кроме того, подобные или аналогичные процедуры преодоления сбоя можно применять к средам, имеющим другие количества, комбинации, масштабы и т.д. компонентов.In the described implementation, each of these five components 302 (1), 302 (2), 302 (3), 304 (1) and 304 (2) corresponds to a separate device. However, similar or similar failover procedures can be applied to environments in which other load balancing components share devices. In addition, similar or similar failover procedures can be applied to environments that have different amounts, combinations, scales, etc. components.

Первоначально, согласно позиции [1], маршрутизатор(ы)/коммутатор(ы) 202 направляют входящий пакет, который, как оказалось, относится к новому соединению, на блок 302(1) пересылки. Поскольку блок 302(1) пересылки не имеет маршрут для этого соединения в своей локальной таблице маршрутизации, он отправляет пакет на классификатор 304(1), что указано пунктирной двойной стрелкой, обозначенной (1). Классификатор 304(1) сначала проверяет информацию сеанса со ссылкой на блок 308 отслеживания сеансов на предмет возможного сродства к сеансу более высокого уровня. В этом примере пакет не имеет сродства к существующему сеансу, поэтому классификатор 304(1) выбирает хост 108 со ссылкой на информацию работоспособности и нагрузки со ссылкой на обработчик 314 работоспособности и нагрузки.Initially, according to [1], the router (s) / switch (s) 202 forward the incoming packet, which, as it turned out, refers to the new connection, to the forwarding unit 302 (1). Since the forwarder 302 (1) does not have a route for this connection in its local routing table, it sends the packet to the classifier 304 (1), which is indicated by the dotted double arrow indicated by (1). Classifier 304 (1) first checks the session information with reference to the session tracking unit 308 for possible affinity for a higher level session. In this example, the packet has no affinity for the existing session, therefore, the classifier 304 (1) selects the host 108 with reference to the health and load information with reference to the processor 314 health and load.

В частности, в данном примере, классификатор 304(1) выбирает хост 108(1). Предполагая, что пакет относится к сеансу TCP/IP, классификатор 304(1) добавляет этот сеанс TCP/IP, привязанный к хосту 108(1), к РДА 2202 с использованием функционального вызова «добавить атом» 2204(А). Классификатор 304(1) или блок 302(1) пересылки пересылает начальный пакет на хост 108(1). Классификатор 304(1) также прокладывает маршрут в локальной таблице маршрутизации блока 302(1) пересылки. Последующие пакеты блок 302(1) пересылки пересылает на хост 108(1) уже без взаимодействия с классификатором 304(1).In particular, in this example, the classifier 304 (1) selects the host 108 (1). Assuming the packet belongs to a TCP / IP session, classifier 304 (1) adds this TCP / IP session bound to host 108 (1) to RDA 2202 using the add atom function call 2204 (A). Classifier 304 (1) or forwarder 302 (1) forwards the initial packet to host 108 (1). Classifier 304 (1) also routes in the local routing table of forwarder 302 (1). Forward packets, the forwarder 302 (1) forwards to the host 108 (1) without interacting with the classifier 304 (1).

В некоторый момент в ходе соединения [1] на блоке 302(1) пересылки происходит сбой. Этот сбой 2902 обнаруживается с помощью маршрутизатора(ов)/коммутатора(ов) 202(LBA), знающих о выравнивании нагрузки. В результате, в точке 2904, маршрутизатор(ы)/коммутатор(ы) 202 направляют дальнейшие пакеты, которые должны были быть направлены на блок 302(1) пересылки по соединению [1], на другой блок 302 пересылки, в данном примере блок 302(2) пересылки.At some point during the connection [1], the transfer unit 302 (1) fails. This 2902 failure is detected by the router (s) / switch (s) 202 (LBA) that are aware of load balancing. As a result, at point 2904, the router (s) / switch (s) 202 forward further packets that were to be forwarded to connection forwarding unit 302 (1) [1] to another forwarding unit 302, in this example, unit 302 (2) shipments.

Таким образом, блок 302(2) пересылки получает дальнейшие пакеты по соединению [2]. Поскольку блок 302(2) пересылки не имеет элемент в своей локальной таблице маршрутизации для пакетов, которые ранее были направлены на блок 302(1) пересылки, блок 302(2) пересылки направляет первый полученный пакет соединения [2] на классификатор, которому он присвоен/с которым он связан. В этом примере блок 302(2) пересылки присвоен классификатору 304(2), что указано пунктирной двойной стрелкой (2).Thus, the forwarding unit 302 (2) receives further packets over the connection [2]. Since the forwarding unit 302 (2) does not have an element in its local routing table for packets that were previously routed to the forwarding unit 302 (1), the forwarding unit 302 (2) directs the first received connection packet [2] to the classifier to which it is assigned / with which he is associated. In this example, the forwarding unit 302 (2) is assigned to the classifier 304 (2), as indicated by the dotted double arrow (2).

Классификатор 304(2) использует функциональный вызов «запросить атом» 2204(Q) для получения атомарного элемента 2304 (явно не показан) из РДА 2202, который связан с существующим соединением TCP/IP. Этот атомарный элемент 2304 обеспечивается через РДА 2202 блока 308 отслеживания сеансов посредством функционального вызова «возвратить атом» 2204(R). Классификатор 304(2) извлекает хост 108(1), который имеет сродство к этому соединению TCP/IP, из возвращенного атомарного элемента 2304. Классификатор 304(2) пересылает этот первый полученный пакет для соединения [2] на хост 108(1) и также прокладывает маршрут в локальной таблице маршрутизации блока 302(2) пересылки. Последующие пакеты блок 302(2) пересылки пересылает уже без взаимодействия с классификатором 304(2).Classifier 304 (2) uses the "request atom" 2204 (Q) function call to retrieve an atomic element 2304 (not explicitly shown) from the RDA 2202, which is connected to an existing TCP / IP connection. This atomic element 2304 is provided through an RDA 2202 of the session tracking unit 308 via a “return atom” function call 2204 (R). Classifier 304 (2) retrieves host 108 (1), which has an affinity for this TCP / IP connection, from the returned atomic element 2304. Classifier 304 (2) forwards this first packet received for connection [2] to host 108 (1) and also routes in the local routing table of the forwarder 302 (2). Subsequent packets block 302 (2) forwarding forwards without interacting with the classifier 304 (2).

Вышеприведенные описания сосредоточены, главным образом, на сбоях отдельных компонентов блока 302 пересылки. Однако компоненты классификатора 304 также могут испытать сбой. Например, в некоторый момент происходит сбой 2906 на классификаторе 304(2). Блок 302(2) пересылки обнаруживает сбой 2906 при попытке потребить услуги классификации или посредством извещения об отсутствии некоторого указания работоспособности, например указателя типа «пульс». Для обработки сбоя 2906, блок 302(2) пересылки переназначается другому классификатору 304 или повторно связывается с ним, который в данном примере представляет собой классификатор 304(1). Классификатор 304(1) предоставляет блоку 302(2) пересылки дополнительные функции классификации, что указано пунктирной двойной стрелкой (3).The above descriptions focus mainly on failures of the individual components of the forwarding unit 302. However, the components of classifier 304 may also fail. For example, at some point, 2906 fails on classifier 304 (2). Forwarding unit 302 (2) detects a failure 2906 when attempting to consume classification services or by notifying of the absence of some indication of operability, such as a pulse type indicator. To handle failure 2906, the forwarder 302 (2) is reassigned to or re-associated with another classifier 304, which in this example is classifier 304 (1). Classifier 304 (1) provides forwarding unit 302 (2) with additional classification functions as indicated by the dotted double arrow (3).

На фиг.30 показана эксплуатационная реализация взаимодействия маршрутизации трафика с информацией работоспособности и нагрузки. Блок 302 пересылки и классификатор 304 взаимодействуют с обработчиком 314 работоспособности и нагрузки для маршрутизации пакетов на хосты 108(1), 108(2), …, 108(n). Хотя показаны блок 302 пересылки и классификатор 304, эксплуатационная реализация также применима к маршрутизатору 306 запросов (или, в целом, к функции 2012 маршрутизации трафика).On Fig shows the operational implementation of the interaction of the routing of traffic with information health and load. Forwarder 302 and classifier 304 interact with a health and load handler 314 to route packets to hosts 108 (1), 108 (2), ..., 108 (n). Although the forwarder 302 and the classifier 304 are shown, the operational implementation is also applicable to the request router 306 (or, in general, to the traffic routing function 2012).

Показано, что хост 108(1) содержит конечные точки IP1, IP3 и IP4 приложения для приложения №1 и приложения №2, соответственно. Хост 108(2) содержит конечные точки IP2 и IP6 приложения для приложения №1 и приложения №2, соответственно. Хост 108(n) содержит конечную точку IP5 приложения для приложения №2. Обработчик 314 работоспособности и нагрузки отслеживает эти хосты 108(1), 108(2), …, 108(n) и конечные точки IP1, IP2, IP3, IP4, IP5 и IP6 приложения (например, с использованием инфраструктуры 1202 работоспособности и нагрузки, объединенного кэша 1208 работоспособности и нагрузки и т.д.).It is shown that host 108 (1) contains the application endpoints IP1, IP3, and IP4 for application No. 1 and application No. 2, respectively. The host 108 (2) contains the endpoints of the IP2 and IP6 applications for application No. 1 and application No. 2, respectively. The host 108 (n) contains the IP5 endpoint of the application for application No. 2. The health and load processor 314 monitors these hosts 108 (1), 108 (2), ..., 108 (n) and the application endpoints IP1, IP2, IP3, IP4, IP5 and IP6 (for example, using the health and load infrastructure 1202, unified cache 1208 health and load, etc.).

В описываемой реализации, (1) обозначает, что классификатор 304 запрашивает одно или несколько распределений конечных точек приложения (например, посредством, по меньшей мере, одного запроса 1802 распределения конечных точек приложения) в среде, где используется маркерная схема 1806 распределения. Обработчик 314 работоспособности и нагрузки в этом примере отвечает, предоставляя маркерные распределения 3002 (например, посредством, по меньшей мере, одного ответа 1804 по распределению конечных точек приложения).In the described implementation, (1) means that the classifier 304 requests one or more distributions of application endpoints (for example, by means of at least one query 1802 of distribution of application endpoints) in an environment where a token distribution scheme 1806 is used. The health and load handler 314 in this example responds by providing marker distributions 3002 (for example, through at least one response 1804 on the distribution of application endpoints).

В частности, маркерное распределение для приложения №1 3002(1) и маркерное распределение для приложения №2 3002(2) доступны классификатору 304. Маркерное распределение для приложения №1 3002(1) первоначально предоставляет 40 маркеров для IP1, 35 маркеров для IP2 и 25 маркеров для IP3. Маркерное распределение для приложения №2 3002(2) предоставляет 10 маркеров для IP4, 72 маркера для IP5 и 18 маркеров для IP6. Для каждого нового соединения, которому классификатор 304 выделил маршрутизацию на конечную точку приложения, классификатор 304 потребляет маркер.In particular, the marker distribution for application No. 13002 (1) and the marker distribution for application No. 3002 (2) are available to classifier 304. The marker distribution for application No. 3002 (1) initially provides 40 tokens for IP1, 35 tokens for IP2 and 25 markers for IP3. Token distribution for application # 2 3002 (2) provides 10 tokens for IP4, 72 tokens for IP5 and 18 tokens for IP6. For each new connection to which classifier 304 has allocated routing to the application endpoint, classifier 304 consumes a token.

Позиция (2) обозначает, что блок 302 пересылки получает начальный входящий пакет для нового соединения. Поскольку никакой маршрутизации для этого нового соединения в локальной части таблицы 2206 РДА блока 302 пересылки нет, то блок 302 пересылки пересылает начальный пакет на классификатор 304, что обозначено позицией (3).Position (2) indicates that the forwarding unit 302 receives the initial incoming packet for a new connection. Since there is no routing for this new connection in the local part of the RDA table 2206 of the forwarding unit 302, the forwarding unit 302 forwards the initial packet to the classifier 304, which is indicated by (3).

Позиция (4) обозначает, что классификатор 304 (например, определив, что начальный пакет не содержит ссылку на сеанс для сеанса более высокого уровня) выбирает конечную точку приложения (и, таким образом, хост 108) в соответствии с информацией работоспособности и нагрузки. В частности, для нового соединения, которое должно обслуживаться приложением №1, классификатор 304 может выбрать любой из IP1, IP2 и IP3, если маркер для соответствующей конечной точки все еще существует.Position (4) indicates that the classifier 304 (for example, determining that the initial packet does not contain a session reference for a higher-level session) selects the application endpoint (and thus host 108) in accordance with the health and load information. In particular, for a new connection to be serviced by application No. 1, Classifier 304 may select any of IP1, IP2, and IP3 if the token for the corresponding endpoint still exists.

Классификатор 304 может потреблять маркеры любым из многих возможных способов. Например, классификатор 304 может использовать круговой подход вне зависимости от количества маркеров на конечную точку. Альтернативно, согласно линейному подходу, классификатор 304 может просто начать с IP1 и продвигаться через IP3, потребляя все маркеры для каждой конечной точки, прежде чем перейти к следующей конечной точке. Кроме того, классификатор 304 может потреблять в любой момент времени маркер из группы маркеров, зависящей от конечной точки, которая в данный момент имеет наибольшее количество маркеров. Согласно последнему подходу, классификатор 304 выбирает IP1. Также можно использовать и другие подходы.Classifier 304 may consume tokens in any of many possible ways. For example, classifier 304 may use a circular approach regardless of the number of markers per endpoint. Alternatively, according to the linear approach, Classifier 304 can simply start with IP1 and move through IP3, consuming all the markers for each endpoint, before moving on to the next endpoint. In addition, the classifier 304 can consume at any time a marker from the group of markers depending on the endpoint that currently has the largest number of markers. According to the latter approach, classifier 304 selects IP1. Other approaches can also be used.

Показано, что классификатор 304 потребляет маркер для конечной точки IP2 приложения. Следовательно, при потреблении маркера группа маркеров для IP2 уменьшается с 35 маркеров до 34 маркеров. Кроме того, начальный пакет для нового соединения должен маршрутизироваться на конечную точку IP2 приложения.Classifier 304 is shown to consume a token for the application's IP2 endpoint. Therefore, when a marker is consumed, the marker group for IP2 decreases from 35 tokens to 34 tokens. In addition, the initial packet for the new connection must be routed to the application's IP2 endpoint.

Позиция (5А) обозначает пересылку начального пакета с классификатора 304 на конечную точку IP2 приложения для хоста 108(2). До, во время или после этой пересылки классификатор 304, что обозначено (5В), прокладывает маршрут для этого соединения в локальной части таблицы 2206 РДА. Классификатор 304 может также добавить атомарный элемент 304 для этого сеанса в таблицу 2206 РДА для распределения и дублирования. Позиция (6) обозначает пересылку дальнейших пакетов для этого соединения/сеанса с блока 302 пересылки на конечную точку IP2 приложения для хоста 108(2) с использованием локальной таблицы маршрутизации блока 302 пересылки, реализованной как локальная часть таблицы 2206 РДА на фиг.30.Position (5A) indicates the transfer of the initial packet from the classifier 304 to the application endpoint IP2 for the host 108 (2). Before, during or after this transfer, classifier 304, which is indicated by (5B), paves the route for this connection in the local part of the RDA table 2206. Classifier 304 may also add atomic element 304 for this session to RDA table 2206 for distribution and duplication. Position (6) indicates the forwarding of further packets for this connection / session from the forwarding unit 302 to the application endpoint IP2 for the host 108 (2) using the local routing table of the forwarding unit 302 implemented as the local part of the RDA table 2206 in FIG. 30.

На фиг.31 показаны механизмы обеспечения высокой надежности инфраструктуры 106 выравнивания сетевой нагрузки. В частности, показаны обнаружение 3104 сбоя, обработка 3106 сбоя и исправление 3108 сбоя. Эти механизмы обеспечения высокой надежности описаны применительно к разным компонентам инфраструктуры 106 выравнивания сетевой нагрузки. Компоненты инфраструктуры 106 выравнивания сетевой нагрузки включают в себя блок 302 пересылки, классификатор 304, маршрутизатор 306 запросов, блок 308 отслеживания сеансов и обработчик 314 работоспособности и нагрузки.On Fig shows the mechanisms for ensuring high reliability of the infrastructure 106 balancing network load. In particular, failure detection 3104, failure processing 3106, and error correction 3108 are shown. These high reliability mechanisms are described for various components of the network load balancing infrastructure 106. The components of the network load balancing infrastructure 106 include a forwarder 302, a classifier 304, a request router 306, a session tracking unit 308, and a health and load handler 314.

Позиция 3102(А) обозначает локальный сбой блока 302 пересылки. Позиция 3104(А) обозначает, что сбой обнаружен, по меньшей мере, одним коммутатором, знающим о выравнивании нагрузки. Для обработки локального сбоя 3102(А) коммутатор, знающий о выравнивании нагрузки, перенаправляет пакеты на другой(ие) блок(и) пересылки, что обозначено позицией 3106(А). Для исправления сбоя блока 302 пересылки маршруты, локально хранившиеся на блоке 302 пересылки, повторно строятся, что обозначено позицией 3108(А) на блоке(ах) пересылки, на которые перенаправлены пакеты, с использованием распределенного диспетчера отслеживания сеансов и его таблицы, в частности РДА и его таблицы. Таким образом, распределенный диспетчер отслеживания сеансов может обеспечивать избыточные данные на одном или нескольких уровнях.Reference numeral 3102 (A) indicates a local failure of the forwarding unit 302. Position 3104 (A) indicates that a failure has been detected by at least one switch that is aware of load balancing. To handle local fault 3102 (A), the switch, aware of load balancing, redirects packets to another forwarding block (s), which is indicated by 3106 (A). To correct the failure of the forwarding unit 302, the routes locally stored on the forwarding unit 302 are re-built, which is indicated by 3108 (A) on the forwarding unit (s) to which the packets are redirected using the distributed session tracking manager and its table, in particular, the RDA and its tables. Thus, a distributed session tracking manager can provide redundant data at one or more layers.

Позиция 3102(В) обозначает локальный сбой классификатора 304. Позиция 3104(В) обозначает, что сбой обнаружен, по меньшей мере, одним блоком пересылки. Для обработки локального сбоя 3102(В) блок пересылки, обнаруживший сбой, перенаправляет пакеты на другой(ие) классификатор(ы), что обозначено позицией 3106(В). Для исправления сбоя классификатора 304 информация сеанса, локально хранившаяся на классификаторе 304, повторно строится, что обозначено позицией 3108(В), на классификаторе(ах), на которые перенаправлены пакеты, с использованием РДА. Эта информация сеанса может представлять собой, например, информацию сеанса более высокого уровня, чем основные соединения TCP/IP. Кроме того, эту информацию сеанса можно рассматривать как часть инфраструктуры отслеживания сеансов, размещенную на том же устройстве, что и классификатор 304.Reference numeral 3102 (B) indicates a local failure of classifier 304. Reference 3104 (B) indicates that a failure was detected by at least one forwarding unit. To handle local fault 3102 (B), the forwarder that detects the fault redirects packets to another classifier (s), which is indicated by 3106 (B). To correct the malfunction of the classifier 304, the session information locally stored on the classifier 304 is re-built, which is indicated by 3108 (B), on the classifier (s) to which packets are redirected using the RDA. This session information may be, for example, session information of a higher level than basic TCP / IP connections. In addition, this session information can be considered as part of the session tracking infrastructure hosted on the same device as the classifier 304.

Позиция 3102(С) обозначает локальный сбой маршрутизатора 306 запросов. Позиция 3104(С) обозначает, что сбой обнаружен, по меньшей мере, одним блоком пересылки и/или коммутатором, знающими о выравнивании нагрузки. Для обработки локального сбоя 3102(С), блок пересылки и/или коммутатор, знающий о выравнивании нагрузки, перенаправляет пакеты на другой(ие) маршрутизатор(ы) запросов, что обозначено позицией 3106(С). Отдельные текущие логические запросы, на которых работает маршрутизатор 306 запросов после возникновения локального сбоя 3102(С), могут быть потеряны, если дублировать каждый такой отдельный логический запрос, пока запрос обрабатывается. Для исправления сбоя маршрутизатора 306 запроса информация сеанса и/или маршруты, локально хранившиеся на маршрутизаторе 306 запросов, повторно строятся, что обозначено позицией 3108(С) на маршрутизаторе(ах) запросов, на которые перенаправляются пакеты (и, таким образом, новые логические запросы). Повторное построение информации сеанса может осуществляться с использованием РДА. Опять же, такую информацию сеанса можно рассматривать как часть инфраструктуры отслеживания сеансов, размещенную на том же устройстве, что и маршрутизатор 306 запросов.Position 3102 (C) indicates a local failure of the router 306 requests. Reference numeral 3104 (C) indicates that a failure has been detected by at least one forwarder and / or switch that is aware of load balancing. To handle local fault 3102 (C), the forwarding unit and / or switch that is aware of load balancing redirects packets to the other request router (s), which is indicated by 3106 (C). The individual current logical queries that the query router 306 runs on after a local failure 3102 (C) occurs can be lost if each such separate logical query is duplicated while the request is being processed. To correct the failure of the request router 306, session information and / or routes locally stored on the request router 306 are re-built, which is indicated by 3108 (C) on the request router (s) to which packets are redirected (and thus new logical requests ) Reconstruction of the session information can be carried out using RDA. Again, such session information can be considered as part of a session tracking infrastructure hosted on the same device as the request router 306.

Позиция 3102(D) обозначает локальный сбой блока 308 отслеживания сеанса. Позиция 3104(D) обозначает, что сбой обнаружен, по меньшей мере, одним блоком пересылки и/или классификатором. Например, если блок 308 отслеживания сеансов размещен на том же устройстве, что и классификатор, то сбой может обнаружить блок пересылки или другой классификатор. Если блок 308 отслеживания сеансов размещен на отдельном устройстве, то сбой может обнаружить классификатор. Для обработки локального сбоя 3102(D), для информации отслеженного сеанса устанавливаются избыточность данных одного или нескольких уровней и распределение по множественным устройствам, что обозначено 3106(D). Следует отметить, что избыточность и распределение устанавливают до сбоя 3102(D). Для исправления сбоя блока 308 отслеживания сеансов информация сеанса из таблиц РДА может перераспределяться и повторно дублироваться на, по меньшей мере, двух устройствах (если она уже так не распределена и не дублирована в достаточной степени), что обозначено позицией 3108(D), для обработки второго уровня сбоя.Reference numeral 3102 (D) indicates a local failure of the session tracking unit 308. Reference numeral 3104 (D) indicates that a failure has been detected by at least one forwarding unit and / or classifier. For example, if the session tracking unit 308 is located on the same device as the classifier, then a forwarding unit or other classifier may detect a failure. If the session tracking unit 308 is located on a separate device, then a classifier may detect the failure. To handle local fault 3102 (D), data redundancy of one or more levels and distribution across multiple devices are established for information from the monitored session, which is indicated 3106 (D). It should be noted that redundancy and distribution are set before failure 3102 (D). To correct the failure of the session tracking unit 308, the session information from the RDA tables can be redistributed and duplicated on at least two devices (if it is not already distributed and duplicated sufficiently), which is indicated by 3108 (D), for processing second level of failure.

Позиция 3102(Е) обозначает локальный сбой обработчика 314 работоспособности и нагрузки. Позиция 3104(Е) обозначает, что сбой обнаружен, по меньшей мере, одним классификатором и/или маршрутизатором запросов. Например, сбой может обнаружить компонент, принимающий информацию работоспособности и нагрузки от обработчика 314 работоспособности и нагрузки, если обработчик 314 работоспособности и нагрузки перестает отвечать, особенно, если обработчик 314 работоспособности и нагрузки размещен не на том устройстве, где размещен запрашивающий компонент. Для обработки локального сбоя 3102(Е), для информации работоспособности и нагрузки используются избыточность данных работоспособности и нагрузки и внутренняя обработка сбоя, что обозначено позицией 3106(Е).Reference numeral 3102 (E) indicates a local failure of the health and load handler 314. Position 3104 (E) indicates that a failure was detected by at least one classifier and / or query router. For example, a failure can detect a component receiving health and load information from health and load handler 314 if the health and load handler 314 stops responding, especially if the health and load handler 314 is not located on the device where the requesting component is located. For processing a local fault 3102 (E), for the health and load information, the redundancy of the health and load data and the internal fault processing are used, which is indicated by 3106 (E).

Например, каждый обработчик 314 работоспособности и нагрузки может содержать объединенный кэш 1208 работоспособности и нагрузки, который дублирует информацию в таблицах 1204 работоспособности и нагрузки на множественных хостах 108. Кроме того, потребители информации 1206 работоспособности и нагрузки данного обработчика 314 работоспособности и нагрузки могут располагаться на том же устройстве, что и обработчик 314 работоспособности и нагрузки, вследствие чего этот сбой будет внутренне допустим. Аналогично, официальная версия соответствующей части информации 1206 работоспособности и нагрузки находится на соответствующем хосте 108, из-за чего сбой хоста 108 делает потерю соответствующей части информации работоспособности и нагрузки допустимой.For example, each health and load handler 314 may contain a combined health and load cache 1208 that duplicates information in the health and load tables 1204 on multiple hosts 108. In addition, consumers of the health and load information 1206 of this health and load handler 314 may reside on that volume. same device as the processor 314 health and load, as a result of which this failure will be internally valid. Similarly, the official version of the corresponding part of the health and load information 1206 is located on the corresponding host 108, because of which failure of the host 108 makes the loss of the corresponding part of the health and load information acceptable.

Для исправления сбоя обработчика 314 работоспособности и нагрузки данный компонент выравнивания сетевой нагрузки, который потребляет информацию работоспособности и нагрузки, может запросить другой обработчик работоспособности и нагрузки, потому что каждый такой обработчик 314 работоспособности и нагрузки содержит объединенный кэш информации обработчика работоспособности и нагрузки. Кроме того, когда обработчик 314 работоспособности и нагрузки вновь становится доступным, можно использовать протокол 1500 обмена сообщениями, что обозначено 3108(Е), для повторного построения его объединенного кэша информации работоспособности и нагрузки. Использование этих иллюстративных механизмов обеспечения высокой надежности позволяет обнаруживать, обрабатывать и исправлять сбойные компоненты инфраструктуры 106 выравнивания сетевой нагрузки, чтобы маскировать такие сбои для клиентов 102.To correct a malfunction of the health and load handler 314, this network load balancing component that consumes health and load information may request a different health and load handler because each such health and load handler 314 contains a combined health and load handler information cache. In addition, when the health and load handler 314 becomes available again, the messaging protocol 1500, designated 3108 (E), can be used to rebuild its combined cache of health and load information. Using these illustrative high-reliability mechanisms, it is possible to detect, process, and correct the failed components of the network load balancing infrastructure 106 to mask such failures for clients 102.

Перенос соединений с необязательным туннелированием и/или выравниванием нагрузки на уровне приложенийTransferring connections with optional tunneling and / or load balancing at the application level

В этом разделе описано, как манипуляции соединениями, например перенос соединений, можно использовать для выравнивания сетевой нагрузки. В этом разделе ссылки идут, главным образом, на фиг.32-39 и описана функция переноса соединений, например, обеспечиваемая блоком 310 переноса соединений (фиг.3). Согласно описанному выше со ссылкой на фиг. 3 и 4, каждое входящее соединение на инфраструктуре 106 выравнивания нагрузки может заканчиваться на ней. После этого соединение может быть перенесено на хост 108, так что соединение затем оканчивается на хосте 108. Блок 310 переноса соединений способен осуществлять перенос соединений и может размещаться частично на хостах 108 для осуществления переноса. Такой перенос соединений может осуществляться совместно с выравниванием нагрузки на уровне приложений классификатором 304 и/или с использованием туннелирования через блок 312 туннелирования.This section describes how connection manipulation, such as connection transfer, can be used to balance network load. In this section, the links go mainly to FIGS. 32-39 and the connection transfer function, for example, provided by the connection transfer unit 310 (FIG. 3), is described. As described above with reference to FIG. 3 and 4, each incoming connection to the load balancing infrastructure 106 may end there. After that, the connection can be transferred to the host 108, so that the connection then terminates on the host 108. The connection transfer unit 310 is capable of transferring the connections and can be partially hosted on the hosts 108 for transferring. Such transfer of connections can be done in conjunction with load balancing at the application level by classifier 304 and / or using tunneling through tunneling unit 312.

На фиг.32 показан подход к выравниванию сетевой нагрузки на уровне приложений с переносом соединений. Выравнивание нагрузки на уровне приложений или на уровне 7 связано с принятием решений в отношении приложения по обработке соединения. Для осуществления выравнивания нагрузки на уровне приложений инфраструктура 106 выравнивания нагрузки обычно учитывает часть данных соединения. Пока не используется маршрутизация запросов классификатор 304 обычно считывает начальную часть соединения, а затем переносит соединение совместно с блоком 310 переноса соединений на выбранный хост 108.On Fig shows an approach to balancing network load at the application level with the transfer of connections. Load balancing at the application level or at level 7 is associated with decision making regarding the connection processing application. To perform application-level load balancing, load balancing infrastructure 106 typically takes into account a portion of the connection data. Until query routing is used, the classifier 304 usually reads the initial part of the connection, and then transfers the connection together with the connection transfer unit 310 to the selected host 108.

Для выравнивания нагрузки на уровне приложений в среде на основе TCP, в целом, классификаторы 304 считывают начальную часть TCP-данных клиента при принятии решения, куда переслать TCP-соединение клиента. Таким образом, логика уровня приложений проверяет данные клиента и принимает решения по выравниванию нагрузки на основании этих данных. Например, если соединение является (незашифрованным) соединением HTTP, то классификатор 304 может считывать HTTP-заголовок первого HTTP-запроса в соединении и может принимать решения на основании некоторой части содержимого заголовка (например, URL, cookie и т.д.). Хотя выравнивание нагрузки на уровне приложений, перенос соединений и туннелирование применимы к другим протоколам, в приведенных здесь примерах используется, в основном, TCP/IP.To balance the load at the application level in a TCP-based environment, in general, classifiers 304 read the initial portion of the client’s TCP data when deciding where to forward the client’s TCP connection. Thus, application-level logic validates client data and makes load balancing decisions based on that data. For example, if the connection is an (unencrypted) HTTP connection, then the classifier 304 can read the HTTP header of the first HTTP request in the connection and can make decisions based on some part of the header content (for example, URL, cookie, etc.). Although application-level load balancing, connection transfer, and tunneling are applicable to other protocols, the examples here use mainly TCP / IP.

Показано, что инфраструктура 106 выравнивания нагрузки (конкретно не указана) содержит блок 302 пересылки, классификатор 304, блок 312 туннелирования и блок 310 переноса соединений (и, возможно, например, маршрутизаторы/коммутаторы 202(LBA), знающие о выравнивании нагрузки). Блок 302 пересылки соответствует виртуальному IP-адресу и пересылает пакеты на хосты 108, выбранные классификатором 304. Хотя это, для ясности, и не показано конкретно на фиг.32, хосты 108 также содержат функцию переноса 310 соединений и функцию туннелирования 312.The load balancing infrastructure 106 (not specifically specified) is shown to include a forwarder 302, a classifier 304, a tunneling unit 312, and a connection transfer unit 310 (and possibly, for example, routers / switches 202 (LBAs) that are aware of load balancing). Forwarder 302 corresponds to a virtual IP address and forwards packets to hosts 108 selected by classifier 304. Although this is not shown specifically in FIG. 32 for clarity, hosts 108 also include connection transfer function 310 and tunneling function 312.

В описываемой реализации блок 302 пересылки, классификатор 304 и блок 310 переноса соединений (на классификаторе 304 и на хостах 108), совместно с программным обеспечением протокола TCP на классификаторе 304 и хостах 108, действуют совместно для обеспечения переноса соединений. Перенос соединений, показанный на фиг.32, относится к соединению от клиента 102(1), которое обычно оканчивается на классификаторе 304. После переноса соединения соединение от клиента 102(1) оканчивается на хосте 108(1). Когда соединение оканчивается на хосте 108(1), пакеты для соединения могут туннелировать с использованием блока 312 туннелирования (на блоке 302 пересылки и хосте 108(1)).In the described implementation, the forwarder 302, the classifier 304 and the connection transfer unit 310 (on the classifier 304 and on the hosts 108), together with the TCP protocol software on the classifier 304 and the hosts 108, act together to provide transfer of connections. The connection transfer shown in FIG. 32 refers to the connection from client 102 (1), which usually ends with classifier 304. After transferring the connection, the connection from client 102 (1) ends at host 108 (1). When the connection ends at the host 108 (1), packets for the connection can be tunneled using the tunneling unit 312 (at the forwarder 302 and the host 108 (1)).

Позиция (1) обозначает, что клиент 102(1) отправляет пакет SYN на блок 302 пересылки, чтобы сигнализировать о начале нового TCP-соединения. Позиция (2) обозначает, что блок 302 пересылки пересылает этот пакет на классификатор 304. Позиция (3) обозначает, что классификатор 304 принимает TCP-соединение со стороны хоста 108 (чей идентификатор еще не известен, фактический хост 108() назначения еще предстоит выбрать). Применительно к протоколу TCP классификатор 304 отправляет пакет SYN-ACK клиенту 102(1).Position (1) indicates that client 102 (1) sends a SYN packet to forwarding unit 302 to signal the start of a new TCP connection. Position (2) indicates that the forwarder 302 forwards this packet to classifier 304. Position (3) indicates that classifier 304 receives a TCP connection from host 108 (whose identifier is not yet known, the destination destination host 108 () has yet to be selected ) For TCP, the classifier 304 sends a SYN-ACK packet to client 102 (1).

Позиция (4) обозначает, что клиент 102(1) начинает передавать данные. (Начальный пакет SYN также может содержать данные). Данные обрабатываются классификатором 304, который может сверяться со специализированной логикой. Специализированная логика может действовать в зависимости от того, какой хост 108 способен обрабатывать или лучше всех обрабатывать какие типы запросов или соединений. Поэтому классификатор 304 использует данные, а также информацию работоспособности и нагрузки приложения из обработчика 314 работоспособности и нагрузки, чтобы определить хост 108, который лучше или лучше всех подходит для обработки этого соединения от клиента 102(1). В данном примере выбран хост 108(1).Position (4) indicates that the client 102 (1) begins to transmit data. (The initial SYN packet may also contain data). Data is processed by classifier 304, which can be verified with specialized logic. Specialized logic may act depending on which host 108 is capable of processing, or what types of requests or connections are best processed. Therefore, the classifier 304 uses the data, as well as the health and load information of the application from the health and load handler 314, to determine the host 108 that is best or best suited to process this connection from the client 102 (1). In this example, host 108 (1) is selected.

Позиция (5) обозначает, что классификатор 304 отправляет «большой двоичный объект» («двоичный блоб»), представляющий состояние TCP-соединения хосту 108(1). Это состояние соединения агрегируется блоком 310 переноса соединений во взаимодействии со стеком TCP на классификаторе 304. Двоичный блоб содержит данные от клиента 102(1), квитированные классификатором 304, и параметры TCP, например упорядоченная четверка TCP/IP, начальные порядковые номера и т.д.Position (5) indicates that the classifier 304 sends a “blob” (“binary blob”) representing the state of the TCP connection to host 108 (1). This connection state is aggregated by the connection transfer unit 310 in cooperation with the TCP stack on the classifier 304. The binary blob contains the data from the client 102 (1), acknowledged by the classifier 304, and TCP parameters, for example, an ordered four TCP / IP, initial sequence numbers, etc. .

Позиция (6) обозначает, что компонент блока 310 переноса соединений на хосте 108(1) (не показанный явно на фиг.32), «вставляет» это соединение в стек TCP на хосте 108(1) с использованием состояния TCP-соединения из двоичного блоба, полученного от классификатора 304. Эта вставка состояния соединения осуществляется во взаимодействии со стеком TCP на хосте 108(1), в результате чего приложениям 316 на хосте 108(1) кажется, что это соединение изначально принято самим хостом 108(1). Клиенту 102(1) и приложениям 316 на хосте 108(1) не известно о переносе соединения.Position (6) indicates that the component of the connection transfer unit 310 on the host 108 (1) (not shown explicitly in Fig. 32) “inserts” this connection into the TCP stack on the host 108 (1) using the binary TCP connection status blob received from the classifier 304. This insertion of the connection state is carried out in cooperation with the TCP stack on the host 108 (1), as a result of which the applications 316 on the host 108 (1) think that this connection was initially accepted by the host 108 (1) itself. Client 102 (1) and applications 316 on host 108 (1) are not aware of the transfer of the connection.

Позиция (7) обозначает, что классификатор 304, во взаимодействии со стеком TCP на классификаторе 304, очищает внутренне состояние, поддерживаемое для этого соединения. Эта очистка внутреннего состояния на классификаторе 304 осуществляется «молча», т.е. клиент 102(1) не извещается о сбросе состояния соединения. Классификатор 304 также добавляет маршрут в локальную таблицу маршрутизации блока 302 пересылки, который указывает, что хост 108(1) является пунктом назначения для пакетов этого соединения.Position (7) indicates that the classifier 304, in interaction with the TCP stack on the classifier 304, clears the internal state maintained for this connection. This purification of the internal state on the classifier 304 is carried out "silently", i.e. client 102 (1) is not notified of a reset of the connection state. Classifier 304 also adds a route to the local routing table of the forwarder 302, which indicates that host 108 (1) is the destination for packets of this connection.

Позиция (8) обозначает, что последующие пакеты для соединения маршрутизируются блоком 302 пересылки на хост 108(1) без отвода на или через классификатор 304. Эти пакеты могут обрабатываться тем же блоком 302 пересылки, что и пакеты для соединений, которые классифицируются и маршрутизируются без использования переноса соединений. Эти последующие пакеты можно, в необязательном порядке, туннелировать с блока 302 пересылки на хост 108(1) с использованием блока 312 туннелирования. Блок 312 туннелирования также обозначен (пунктирными линиями) на блоке 310 переноса соединений на классификаторе 304, поскольку определенный(е) параметр(ы), используемые блоком 312 туннелирования, могут быть определены при переносе соединения и/или связаны с переносимым соединением. Иллюстративные реализации блока 312 туннелирования описаны ниже, в частности, со ссылкой на фиг. 38 и 39.Position (8) indicates that subsequent packets for connection are routed by forwarding unit 302 to host 108 (1) without forwarding to or through classifier 304. These packets can be processed by the same forwarding unit 302 as packets for connections that are classified and routed without use transfer connections. These subsequent packets may optionally be tunneled from the forwarding unit 302 to the host 108 (1) using the tunneling unit 312. The tunneling unit 312 is also indicated by (dashed lines) on the connection transferring unit 310 on the classifier 304, since the specific parameter (s) used by the tunneling unit 312 can be determined during connection transferring and / or associated with a portable connection. Exemplary implementations of tunneling unit 312 are described below, in particular with reference to FIG. 38 and 39.

На фиг.33 изображена логическая блок-схема 3300 способа переноса соединения с первого устройства на второе устройство. Логическая блок-схема 3300 содержит семь блоков 3302-3314. Хотя фиг. 32 и 34-37 посвящены, главным образом, переносу соединения в среде выравнивания сетевой нагрузки, описанный здесь перенос соединения можно осуществлять между двумя устройствами общего вида, каждое из которых имеет функцию переноса соединения, например, как у блока 310 переноса соединений.33 is a flowchart 3300 of a method for transferring a connection from a first device to a second device. The logical block diagram 3300 contains seven blocks 3302-3314. Although FIG. 32 and 34-37 are devoted mainly to connection transfer in a network load balancing environment, the connection transfer described here can be performed between two general devices, each of which has a connection transfer function, for example, as in connection transfer unit 310.

На блоке 3302 первое устройство принимает соединение. Например, первое устройство может заканчивать входящее соединение в соответствии с одним или несколькими протоколами части стека протоколов сетевого стека. На блоке 3304 происходит получение данных для соединения на первом устройстве. Например, эти данные можно принимать в начальном пакете, который запрашивает соединение, или в одном или нескольких пакетах, которые поступают после принятия соединения.At block 3302, the first device accepts the connection. For example, the first device may terminate an incoming connection in accordance with one or more protocols of a portion of the protocol stack of the network stack. At block 3304, data is received for the connection on the first device. For example, this data can be received in the initial packet that requests a connection, or in one or more packets that arrive after the connection is accepted.

На блоке 3306 происходит агрегирование состояния соединения для принятого соединения из стека протоколов (в более общем случае, из сетевого стека) на первом устройстве. Например, состояние протокола для одного или нескольких протоколов из стека протоколов можно компилировать и агрегировать с помощью любых полученных данных, которые были квитированы. На блоке 3308 состояние соединения отправляется с первого устройства на второе устройство. Например, агрегированная информация первого состояния может быть отправлена с использованием надежного протокола на второе устройство.At block 3306, aggregation of the connection state for the received connection from the protocol stack (more generally from the network stack) on the first device occurs. For example, the protocol state for one or more protocols from the protocol stack can be compiled and aggregated using any received data that has been acknowledged. At block 3308, a connection state is sent from the first device to the second device. For example, aggregated information of a first state may be sent using a reliable protocol to a second device.

На блоке 3310 состояние соединения для переносимого соединения поступает с первого устройства на второе устройство. На блоке 3312 состояние соединения вставляется в стек протоколов (в более общем случае, в сетевой стек) второго устройства. Например, соединение можно «регидратировать» с использованием протоколов стека протоколов второго устройства, чтобы программы, находящиеся выше уровня стека протоколов, не знали, что соединение является перемещенным соединением. В частности, состояние протокола можно внедрить в стек протоколов. Агрегированные данные состояния соединения также часто включаются на втором устройстве. На блоке 3314, соединение продолжается на втором устройстве. Например, соединение может продолжаться на втором устройстве, как если бы соединение не оканчивалось раньше в другом месте.At block 3310, the connection state for the portable connection is received from the first device to the second device. At block 3312, the connection state is inserted into the protocol stack (more generally, the network stack) of the second device. For example, a connection can be “rehydrated” using the protocols of the protocol stack of the second device so that programs above the level of the protocol stack do not know that the connection is a relocated connection. In particular, the state of the protocol can be injected into the protocol stack. Aggregated connection state data is also often included on the second device. At block 3314, the connection continues on the second device. For example, the connection may continue on the second device, as if the connection did not end earlier in another place.

На фиг.34 изображен подход к переносу соединений с точки зрения устройства-отправителя 3400. Перенос соединения на устройстве-отправителе 3400 осуществляется, по меньшей мере, блоком 310 переноса соединений. В описанной реализации устройство-отправитель 3400 - это устройство, которое является частью инфраструктуры 106 выравнивания сетевой нагрузки. Например, устройство-отправитель 3400 может содержать классификатор 304, возможно, совместно с блоком 302 пересылки, маршрутизатором 306 запросов и т.д.34 shows an approach to transferring connections from the point of view of the sending device 3400. Connection transfer on the sending device 3400 is carried out by at least a connection transferring unit 310. In the described implementation, the sending device 3400 is a device that is part of the network load balancing infrastructure 106. For example, the sending device 3400 may include a classifier 304, possibly in conjunction with a forwarder 302, a request router 306, etc.

Показано, что устройство-отправитель 3400 содержит в качестве части своего сетевого стека физический сетевой интерфейс (ФСИ) 3410, минипорт 3408 ФСИ, протокольно-аппаратный интерфейс 3406, стек 3404 протоколов и уровень 3402 сокетов. Устройство-отправитель 3400 также содержит функцию 106 выравнивания нагрузки, например, классификатор 304 на уровне приложений и блок 310 переноса соединений. В частности, блок 310 переноса соединений содержит промежуточный драйвер 3414 переноса и «прокладку» 3412 блока переноса. Блок 310 переноса соединений способен выгружать соединение из устройства-отправителя 3400.It is shown that the sending device 3400 contains, as part of its network stack, a physical network interface (FSI) 3410, a miniport 3408 FSI, a protocol-hardware interface 3406, a protocol stack 3404, and a socket level 3402. The sending device 3400 also includes a load balancing function 106, for example, an application level classifier 304 and a connection transfer unit 310. In particular, the connection transfer unit 310 comprises an intermediate transfer driver 3414 and a “spacer” 3412 transfer unit. A connection transfer unit 310 is capable of offloading the connection from the sending device 3400.

В описываемой реализации физический сетевой интерфейс 3410 может представлять собой сетевой адаптер (СА) (например, СА Ethernet), беспроводной интерфейс и т.д. Хотя показан только один физический сетевой интерфейс 3410, данное устройство может иметь множество таких физических сетевых интерфейсов 3410 (т.е. устройство-отправитель 3400 может быть подключено к нескольким линиям передачи данных). Каждый физический сетевой интерфейс 3410 обычно соответствует одному или нескольким физическим сетевым адресам.In the described implementation, the physical network interface 3410 may be a network adapter (CA) (e.g., CA Ethernet), a wireless interface, etc. Although only one physical network interface 3410 is shown, this device can have many such physical network interfaces 3410 (i.e., the sending device 3400 can be connected to several data lines). Each physical network interface 3410 typically corresponds to one or more physical network addresses.

Минипорт 3408 ФСИ - это программный модуль, который понимает и обеспечивает сопряжение с конкретной аппаратной реализацией физического сетевого интерфейса 3410. Протокольно-аппаратный интерфейс 3406 - это уровень, содержащий один или несколько соответствующих интерфейсов между двумя или более соответствующими протоколами и минипортом 3408 ФСИ.The FSI miniport 3408 is a software module that understands and provides interfacing with a specific hardware implementation of the physical network interface 3410. The protocol and hardware interface 3406 is a layer containing one or more corresponding interfaces between two or more corresponding protocols and the FSI miniport 3408.

Стек 3404 протоколов включает в себя один или несколько соответствующих модулей, каждый из которых предназначен для одного или нескольких соответствующих протоколов. Примеры таких протоколов описаны ниже со ссылкой на фиг. 36 и 37. В переходном контексте стек 3404 протоколов содержит состояние 3420 протокола для каждого соединения, существующего на устройстве-отправителе 3400. Уровень 3402 сокетов лежит между программой, например функцией 106 выравнивания нагрузки, и стеком 3404 протоколов. Уровень 3402 сокетов обеспечивает API между функцией 106 выравнивания нагрузки и стеком 3404 протоколов и позволяет, помимо прочего, программам регистрироваться для соединений.The protocol stack 3404 includes one or more respective modules, each of which is intended for one or more respective protocols. Examples of such protocols are described below with reference to FIG. 36 and 37. In the transition context, the protocol stack 3404 contains a protocol state 3420 for each connection existing on the sender 3400. The socket layer 3402 lies between the program, for example, load balancing function 106, and the protocol stack 3404. Socket layer 3402 provides an API between load balancing function 106 and protocol stack 3404 and allows, among other things, programs to register for connections.

Промежуточный драйвер 3414 переноса или, более обобщенно, драйвер 3414 переноса размещается на уровне 3406 протокольно-аппаратного интерфейса. Прокладка 3412 блока переноса размещается прозрачно между стеком 3404 протоколов и уровнем 3402 сокетов.The intermediate transfer driver 3414 or, more generally, the transfer driver 3414 is located at the protocol-hardware interface level 3406. Gasket 3412 transfer unit is placed transparently between the stack 3404 protocols and level 3402 sockets.

Когда начальный пакет (не показан), запрашивающий новое соединение, представляется устройству-отправителю 3400, пакет направляется вверх от физического сетевого интерфейса 3410, на минипорт 3408 ФСИ, через уровень 3406 протокольно-аппаратного интерфейса и на стек 3404 протоколов. Когда пакет пересекает один или несколько протоколов стека 3404 протоколов, на нем создается состояние 3420 протокола. Кроме того, в результате этого начального пакета или вследствие того, что функция 106 выравнивания нагрузки принимает соединение, чтобы считать запрос, на устройство-отправитель 3400 поступают данные 3416.When an initial packet (not shown) requesting a new connection is presented to the sending device 3400, the packet is sent upstream from the physical network interface 3410 to the FSI miniport 3408, through the protocol-hardware interface layer 3406 and to the protocol stack 3404. When a packet crosses one or more protocols of the protocol stack 3404, a protocol state 3420 is created on it. In addition, as a result of this initial packet, or because load balancing function 106 receives the connection to read the request, data 3416 is sent to the sending device 3400.

В ходе работы промежуточный драйвер 3414 переноса отводит копию данных 3416 на логику блока 310 переноса соединений. Когда функция 106 выравнивания нагрузки выдает функциональный вызов «перенести соединение», функциональный вызов переноса поступает на самый верхний уровень стека 3404 протоколов, чтобы могло начаться агрегирование 3418 состояния соединения. Состояние 3420 протокола компилируется из одного или нескольких протоколов стека 3404 протоколов. В реализации TCP/IP состояние 3420 протокола может включать в себя (i) TCP-порты и IP-адреса назначения и источника (например, упорядоченную четверку TCP/IP), (ii) состояние окна TCP, (iii) начальные порядковые номера, (iv) информацию приостановки, (v) ИД фрагмента IP, (vi) информацию маршрутизации и (vii) т.д.During operation, the intermediate transfer driver 3414 allocates a copy of the data 3416 to the logic of the connection transfer unit 310. When the load balancing function 106 issues a transfer call functional call, the transfer function call arrives at the highest level of the protocol stack 3404 so that aggregation of the connection state 3418 can begin. Protocol state 3420 is compiled from one or more protocols of protocol stack 3404. In a TCP / IP implementation, protocol state 3420 may include (i) TCP ports and destination and source IP addresses (e.g., an ordered four TCP / IP), (ii) TCP window state, (iii) starting sequence numbers, ( iv) suspension information, (v) IP fragment ID, (vi) routing information, and (vii) etc.

Агрегирование 3418 состояния соединения также агрегирует данные 3416, отведенные на блок 310 переноса соединений и уже квитированные из устройства-отправителя 3400 (например, функцией 106 выравнивания нагрузки). Это агрегированное состояние 3418 соединения включает в себя состояние 3420 протокола и данные 3416 (и, в необязательном порядке, другую информацию, относящуюся к соединению). Затем агрегированное состояние 3418 соединения передается в виде двоичного блоба 3422 с устройства-отправителя 3400 на устройство-адресат.Aggregation of the connection state 3418 also aggregates data 3416 allocated to the connection transfer unit 310 and already acknowledged from the sending device 3400 (for example, load balancing function 106). This aggregated connection state 3418 includes protocol state 3420 and data 3416 (and, optionally, other information related to the connection). Then, the aggregated state of the connection 3418 is transmitted as a binary blob 3422 from the sending device 3400 to the destination device.

Двоичный блоб 3422 можно посылать с устройства-отправителя 3400 на устройство-адресат с использованием надежного протокола. Под «надежным» можно понимать, например, что двоичный блоб 3422 принимается на устройстве-адресате без изменений, даже если отдельные пакеты, составляющие двоичный блоб 3422, пропали или повреждены. Этот двоичный блоб 3422 можно также пакетировать с идентификатором потока, если соединение подлежит в дальнейшем туннелированию посредством блока 312 туннелирования. Идентификаторы потока описаны ниже, в частности, со ссылкой на фиг. 38 и 39.The binary bloom 3422 can be sent from the sending device 3400 to the destination device using a reliable protocol. By “reliable” it can be understood, for example, that the binary blob 3422 is received at the destination device unchanged, even if the individual packets constituting the binary blob 3422 are lost or damaged. This binary blob 3422 may also be packetized with a flow identifier if the connection is to be further tunneled by tunneling block 312. The flow identifiers are described below, in particular with reference to FIG. 38 and 39.

На фиг.35 показан подход к переносу соединений с точки зрения устройства-адресата 3500. Устройство-адресат 3500 подобно устройству-отправителю 3400 в отношении различных показанных уровней/модулей, включая блок 310 переноса соединений. Однако показано, что, по меньшей мере, одно приложение 316 на уровне приложений сопрягается с уровнем 3402 сокетов. Поэтому устройство-адресат 3500 может содержать хост 108. Кроме того, блок 310 переноса соединения способен загружать соединение от устройства-отправителя 3400.35 shows an approach to transferring connections from the perspective of the destination device 3500. The destination device 3500 is similar to the sending device 3400 with respect to the various levels / modules shown, including a connection transfer unit 310. However, it is shown that at least one application 316 at the application level is mated to a socket level 3402. Therefore, the destination device 3500 may comprise a host 108. In addition, the connection transfer unit 310 is capable of loading a connection from the sending device 3400.

В описываемой реализации, приложение 316 является пунктом назначения пакета, инициирующего соединение, принятого на устройстве-отправителе 3400. Устройство-адресат 3500 принимает двоичный блоб 3422 от устройства-отправителя 3400. Двоичный блоб 3422 включает в себя состояние соединения, связанное с соединением, переносимым на устройство-адресат 3500 и, в необязательном порядке, идентификатор потока. Это состояние соединения включает в себя состояние 3420 протокола и квитированные данные 3416 (и, возможно, другую информацию, относящуюся к соединению).In the described implementation, application 316 is the destination of the packet initiating the connection received at the sending device 3400. The destination device 3500 receives the binary blob 3422 from the sending device 3400. The binary blob 3422 includes a connection state associated with the connection transferred to destination device 3500 and, optionally, a stream identifier. This connection state includes protocol state 3420 and acknowledged data 3416 (and possibly other information related to the connection).

В ходе работы, когда двоичный блоб 3422 достигает уровня 3406 протокольно-аппаратного интерфейса, промежуточный драйвер 3411 переноса распознает его как блоб для переноса соединения и отводит его. Состояние соединения вставляется на 3502, чтобы создать видимость для приложения 316, что соединение изначально заканчивалось на устройстве-адресате 3500.During operation, when the binary blob 3422 reaches the protocol-hardware interface level 3406, the intermediate transfer driver 3411 recognizes it as a blob for transferring the connection and retracts it. The connection state is inserted at 3502 to make it visible to the application 316 that the connection initially ended on the destination device 3500.

В частности, состояние 3420 протокола вставленного состояния 3502 соединения внедряется в стек 3404 протоколов. В описываемой реализации состояние 3420 протокола внедряется первым на протоколах высшего уровня, а затем на протоколах более низкого уровня стека 3404 протоколов. После внедрения состояния 3420 протокола в стек 3404 протоколов, данные 3416 можно указывать приложению 316. Эти данные 3416 можно предоставлять приложению 316, как если бы они были частью вновь и локально оконченного соединения.In particular, the state 3420 of the protocol of the inserted state 3502 connection is embedded in the stack 3404 protocols. In the described implementation, the state 3420 of the protocol is implemented first on the protocols of the higher level, and then on the protocols of the lower level of the protocol stack 3404. After the state 3420 of the protocol is inserted into the protocol stack 3404, the data 3416 can be indicated to the application 316. This data 3416 can be provided to the application 316 as if they were part of a newly and locally terminated connection.

По завершении вставки 3502 состояния соединения, соединение, инициированное пакетом, полученным на устройстве-отправителе 3400, успешно переносится оттуда на устройство-адресат 3500. Последующие пакеты для соединения можно пересылать непосредственно на устройство-адресат 3500 без прохождения через устройство-отправитель 3400 или, по меньшей мере, только с простой маршрутизацией и без применения к ним анализа уровня приложений. В необязательном порядке, эти пакеты могут туннелировать так, что промежуточный драйвер 3414 переноса эффективно работает как виртуальный СА на программной основе, который привязан к виртуальному IP-адресу. Другими словами, промежуточный драйвер 3414 переноса (фиг.35) может содержать виртуальный сетевой адаптер, привязанный к адресу назначения неинкапсулированных пакетов.Upon completion of the connection status insert 3502, the connection initiated by the packet received on the sending device 3400 is successfully transferred from there to the destination device 3500. Subsequent packets for connection can be sent directly to the destination device 3500 without passing through the sending device 3400 or, by at least only with simple routing and without application level analysis applied to them. Optionally, these packets can be tunneled so that the intermediate transfer driver 3414 effectively operates as a software-based virtual CA that is bound to a virtual IP address. In other words, the intermediate transfer driver 3414 (FIG. 35) may comprise a virtual network adapter mapped to an unencapsulated packet destination address.

На фиг.36 показан подход к процедуре 3600 выгрузки для переноса соединения. Процедура 3600 выгрузки переноса демонстрирует дополнительные иллюстративные подробности переноса соединения со стороны устройства-отправителя 3400. Показано, что общий стек 3404 протоколов содержит стек 3404(Т) TCP, стек 3404(I) IP и стек 3404(А) протокола разрешения адресов (ARP). Однако, альтернативно, можно использовать другие стеки 3404() конкретных протоколов.On Fig shows the approach to the procedure 3600 unloading to transfer the connection. The transfer upload procedure 3600 shows additional illustrative details of the connection transfer from the sending device 3400. It is shown that the common protocol stack 3404 contains a TCP stack 3404 (T), an IP stack 3404 (I) and an address resolution protocol (ARP) stack 3404 (A) . However, alternatively, other stacks 3404 () of specific protocols can be used.

Для примера, уровень 3406 протокольно-аппаратного интерфейса может быть реализован как уровень на основе спецификации стандартного интерфейса сетевых адаптеров (NDIS) в среде операционной системы (OS) Microsoft® Windows®. Кроме того, уровень 3402 сокетов может быть реализован как уровень Winsock™ в среде (OS) Microsoft® Windows®.For example, the protocol-hardware interface layer 3406 can be implemented as a layer based on the specification of the standard network adapter interface (NDIS) in the Microsoft® Windows® operating system (OS) environment. In addition, socket level 3402 can be implemented as a Winsock ™ layer in Microsoft® Windows® (OS) environments.

В описываемой реализации промежуточный драйвер 3414 переноса включает в себя протокольно-аппаратные интерфейсы 3406 на стыках со стеком 3404(А) ARP и с минипортом 3408 ФСИ. Драйвер 3414 переноса служит в качестве цели выгрузки в процедуре 3600 выгрузки переноса. Цель выгрузки - это минипорт протокольно-аппаратного интерфейса 3406, показанного в этом примере. В процедуре 3700 загрузки переноса (на фиг.37), промежуточный драйвер 3414 переноса служит в качестве отводчика загрузки.In the described implementation, the intermediate transfer driver 3414 includes protocol and hardware interfaces 3406 at interfaces with the ARP stack 3404 (A) and the FSI miniport 3408. Transfer driver 3414 serves as the unload target in the transfer unload procedure 3600. The purpose of the upload is the miniport of the protocol-hardware interface 3406 shown in this example. In the transfer loading procedure 3700 (in FIG. 37), the intermediate transfer driver 3414 serves as a download tap.

В частности, промежуточный драйвер 3414 переноса привязан к каждому физическому сетевому интерфейсу 3410, через который можно переносить TCP-соединение. Промежуточный драйвер 3414 переноса обычно действует как транзитный драйвер, пропуская пакеты вверх или вниз по сетевому стеку и не взаимодействуя с пакетами иным образом. Однако промежуточный драйвер 3414 переноса не взаимодействует с пакетами, относящимися к переносам соединения (в необязательном порядке, включающими в себя впоследствии туннелированные пакеты).In particular, the intermediate transfer driver 3414 is associated with each physical network interface 3410 through which a TCP connection can be transferred. The intermediate transfer driver 3414 typically acts as a transit driver, passing packets up or down the network stack and not interacting with packets in any other way. However, the intermediate transfer driver 3414 does not interact with packets related to connection transfers (optionally including subsequently tunneled packets).

Промежуточный драйвер 3414 переноса отвечает за следующее: (i) принятие запросов выгрузки переноса; (ii) агрегирование информации состояния протокола, относящейся к переносимому TCP-соединения, скомпилированной из стеков 3404() конкретных протоколов, совместно с квитированными данными, для получения информации состояния соединения; и (iii) передача агрегированного состояния соединения на устройство-адресат 3500 для процедуры 3700 загрузки переноса. Надежный протокол проводной связи для такой передачи может совместно использоваться с тем, который используется компонентами 2002 и 2010 отслеживания сеансов, для отправки и получения сообщений 2008 информации сеанса (например, описанных выше со ссылкой на фиг.20).The intermediate transfer driver 3414 is responsible for the following: (i) accepting transfer offload requests; (ii) aggregating protocol status information related to a portable TCP connection compiled from specific protocol stacks 3404 (), together with acknowledged data, to obtain connection status information; and (iii) transmitting the aggregated state of the connection to the destination device 3500 for the transfer loading procedure 3700. A reliable wired communication protocol for such a transmission can be shared with that used by the session tracking components 2002 and 2010 to send and receive session information messages 2008 (for example, described above with reference to FIG. 20).

Другой задачей промежуточного драйвера 3414 переноса (например, в процедуре 3700 загрузки переноса) является инициирование загрузки переносимых соединений, которые он получает от других устройств, и буферизация любых входящих пакетов, относящихся к переносу соединения, когда оно находится в процессе загрузки. Чтобы загрузить соединение, промежуточный драйвер 3414 блока переноса посылает запрос загрузки на прокладку 3412 блока переноса. Прокладка 3412 блока переноса выдает вызов вставки в стек 3404 протоколов на стеке 3404(А) TCP, чтобы обрабатывать соединение в участке стека 3404 протоколов сетевого стека.Another objective of the intermediate transfer driver 3414 (for example, in the transfer loading procedure 3700) is to initiate the download of the portable connections that it receives from other devices and to buffer any incoming packets related to the transfer of the connection when it is in the process of loading. To download the connection, the transfer block intermediate driver 3414 sends a download request to the transfer block gasket 3412. Gasket 3412 of the transfer unit issues a call to insert on the protocol stack 3404 on the TCP stack 3404 (A) to process the connection in the portion of the protocol stack 3404 of the network stack.

Прокладка 3412 блока переноса открывает интерфейс клиента транспортного уровня стеку 3404(Т) TCP и открывает интерфейс поставщика транспортного уровня уровню 3402 сокетов. Прокладка 3412 блока переноса играет две роли: (i) инициируют процедуру 3600 выгрузки переноса соединения на устройстве-отправителе 3400, а затем процедуру 3700 загрузки переноса на устройстве-адресате 3500 и (ii) посредничает в процессе классификации между прикладной программой 316 хоста, программой классификации 304 выравнивания нагрузки и уровнем 3402 сокетов. Прокладка 3412 блока пересылки и промежуточный драйвер 3414 блока пересылки описаны ниже со ссылкой на фиг. 36 и 37.Layout 3412 of the transfer unit opens the transport layer client interface to the TCP stack 3404 (T) and opens the transport layer provider interface to the socket layer 3402. The transfer block gasket 3412 plays two roles: (i) initiate the transfer transfer upload procedure 3600 on the sending device 3400, and then the transfer loading procedure 3700 on the destination device 3500 and (ii) mediates the classification process between the host application 316, the classification program 304 load balancing and 3402 socket level. The transfer unit gasket 3412 and the transfer unit intermediate driver 3414 are described below with reference to FIG. 36 and 37.

Для проиллюстрированной процедуры 3600 выгрузки переноса перенос TCP-соединения осуществляется после того, как классификатор 304 классифицирует входящее TCP-соединение с использованием одного, двух или более его пакетов. Процедура 3600 выгрузки переноса описана посредством позиций <1>-<7>.For the illustrated transfer upload procedure 3600, the TCP connection is transferred after the classifier 304 classifies the incoming TCP connection using one, two or more of its packets. Transfer transfer procedure 3600 is described by means of <1> - <7>.

Позиция <1> обозначает инициализацию, которая осуществляется до операций классификации. Стек 3404 протоколов делает запросы на уровне 3406 протокольно-аппаратного интерфейса, чтобы определить, какие имеются возможности выгрузки, если вообще имеются. Промежуточный драйвер 3414 блока переноса указывает, что выгрузка переноса соединения доступна и распространяет запрос вниз на минипорт 3408 ФСИ. Если возможность выгрузки «дымохода» TCP обеспечена физическим сетевым интерфейсом 3410, то минипорт 3408 ФСИ также это указывает. Выгрузка «дымохода» TCP позволяет выгружать некоторую обработку TCP/IP на оборудование физического сетевого интерфейса 3410 и предусматривает некоторое компилирование состояния 3420 протокола. Поэтому некоторая логика компиляции и агрегирования может совместно использоваться двумя механизмами выгрузки.Position <1> indicates the initialization that takes place before the classification operations. The protocol stack 3404 makes requests at the protocol-hardware interface level 3406 to determine what upload capabilities, if any, are available. Intermediate driver 3414 transfer unit indicates that the unload transfer connection is available and distributes the request down to the miniport 3408 FSI. If the possibility of unloading the “chimney” TCP is provided by the physical network interface 3410, then the miniport 3408 FSI also indicates this. Unloading the TCP “chimney” allows uploading some TCP / IP processing to the equipment of the physical network interface 3410 and provides some compilation of the 3420 protocol state. Therefore, some compilation and aggregation logic can be shared by two unloading mechanisms.

Позиция <2> обозначает, что, после того как TCP-соединение классифицировано, классификатор 304 инициирует перенос TCP-соединения на выбранный хост 108. В частности, через уровень 3402 сокетов на прокладку 3412 блока переноса поступает команда переноса, указывающая устройство-адресат 3500.Position <2> indicates that after the TCP connection is classified, the classifier 304 initiates the transfer of the TCP connection to the selected host 108. In particular, through the socket level 3402, a transfer command is sent to the transfer block 3412 indicating the destination device 3500.

Позиция <3> обозначает, что прокладка 3412 блока переноса инициирует перенос TCP-соединения для компиляции состояния протокола TCP. В частности, прокладка 3412 блока переноса вызывает API начальной выгрузки переноса TCP (или, в более общем случае, функциональный вызов «перенести соединение» или команду переноса соединения). Эта процедура компилирует соответствующее состояние для указанного TCP-соединения, которое используется для восстановления соединения на устройстве-адресате 3500. Скомпилированное состояние 3420 протокола включает в себя состояние из промежуточных уровней стека, в том числе стека 3404(Т) TCP, стека 3404(I) IP и стека 3404(А) ARP.Position <3> indicates that the gasket 3412 transfer unit initiates the transfer of the TCP connection to compile the state of the TCP protocol. In particular, laying 3412 transfer unit calls the TCP transfer initial upload API (or, more generally, a “transfer connection” function call or a transfer transfer command). This procedure compiles the appropriate state for the specified TCP connection, which is used to reconnect to the destination device 3500. The compiled state 3420 of the protocol includes the state of the intermediate levels of the stack, including the TCP stack 3404 (T), 3404 (I) stack IP and stack 3404 (A) ARP.

Позиция <4> обозначает, что, после того как стек 3404 протоколов скомпилировал состояние 3420 протокола для переносимого TCP-соединения, он вызывает API начальной выгрузки переноса на минипорте, к которому он привязан; в этом примере этим минипортом является промежуточный драйвер 3414 блока переноса. Однако, на практике, между стеком 3404 протоколов и промежуточным драйвером 3414 блока переноса могут быть вставлены другие промежуточные драйверы, например QoS IP. В этом случае, эти промежуточные драйверы блока переноса могут участвовать в переносе, если относятся, компилируя/агрегируя свое состояние в информацию состояния соединения для переносимого соединения. Промежуточные драйверы продолжают распространять вызов «начать выгрузку переноса» вниз на сетевой стек, что, в конце концов, приводит к выполнению обработчика выгрузки переноса на промежуточном драйвере 3414 блока переноса. При этом промежуточный драйвер 3414 блока переноса также агрегирует любые квитированные данные с остальным состоянием соединения для переноса TCP-соединения на устройство-адресат 3500.Position <4> means that after the protocol stack 3404 compiled the protocol state 3420 for the portable TCP connection, it calls the transport initial unload API on the miniport to which it is attached; in this example, this miniport is an intermediate driver 3414 transfer unit. However, in practice, other intermediate drivers, such as IP QoS, can be inserted between the protocol stack 3404 and the intermediate driver 3414 of the transfer unit. In this case, these intermediate drivers of the transfer unit may participate in the transfer if they relate by compiling / aggregating their state into connection status information for the transferring connection. Intermediate drivers continue to propagate the “start transfer unloading” call down to the network stack, which ultimately leads to the execution of the transfer unloading processor on the intermediate driver 3414 of the transfer unit. In this case, the intermediate driver 3414 of the transfer unit also aggregates any acknowledged data with the rest of the connection state to transfer the TCP connection to the destination device 3500.

Позиция <5> обозначает, что после сохранения/копирования информации состояния соединения для переносимого TCP-соединения промежуточный драйвер 3414 блока переноса извещает сетевой стек о том, что перенос находится на своих окончательных стадиях, вызывая API завершения начальной выгрузки переноса. Этот API завершения начальной выгрузки переноса идет по обратному пути вверх от сетевого стека, через те же промежуточные драйверы, если имеются, и, наконец, к стеку 3404 протоколов. По мере того, как каждый уровень обрабатывает этот вызов, информация состояния, связанная с переносимым соединением, может освобождаться. Пока обработка этого вызова не завершится, каждый уровень может посылать извещения об обновлении вниз на сетевой стек, чтобы обновить любую часть состояния соединения, которая изменилась с тех пор, как начался перенос.Position <5> means that after saving / copying the connection status information for the transferred TCP connection, the intermediate driver 3414 of the transfer unit informs the network stack that the transfer is in its final stages, calling the API to complete the initial transfer unload. This API for completing the initial transfer unloading goes the return way up from the network stack, through the same intermediate drivers, if any, and, finally, to the protocol stack 3404. As each level processes this call, status information associated with the portable connection may be released. Until this call is processed, each layer can send update notifications down to the network stack to update any part of the connection state that has changed since the transfer began.

Позиция <6> обозначает, что, когда процедура завершения начальной выгрузки переноса достигает стека 3404(Т) TCP, TCP молча (т.е., отправляя команду перезагрузки на клиент 102) закрывает соединение, сбрасывая все состояние, связанное с переносимым соединением, и распространяет вызов «начальная выгрузка переноса завершена» на прокладку 3412 блока переноса. При этом сетевой стек освобождается от любой остаточной информации переносимого TCP-соединения.Position <6> means that when the procedure for completing the initial transfer offload reaches the TCP stack 3404 (T), TCP silently (that is, sending a reboot command to client 102) closes the connection, resetting all the state associated with the portable connection, and extends the call "initial transfer unloading completed" to the gasket 3412 transfer unit. In this case, the network stack is freed from any residual information of the transferred TCP connection.

Позиция <7> обозначает, что, когда вызов «начальная выгрузка переноса завершена» возвращается на промежуточный драйвер 3414 блока переноса (через часть прокладки 3412 блока переноса блока 310 переноса соединения), перенос TCP-соединения от устройства-отправителя 3400 на устройство-адресат 3500 может начинаться с переноса на него состояния соединения. Состояние соединения можно передавать асинхронно и надежно.Position <7> means that when the call “initial transfer unloading is completed” returns to the intermediate driver 3414 of the transfer unit (through part of the gasket 3412 of the transfer unit of transfer unit 310), the TCP connection is transferred from the sending device 3400 to the destination device 3500 may begin by transferring the connection state to it. Connection status can be transmitted asynchronously and reliably.

После начала переноса устройство-отправитель 3400 также должно гарантировать, что последующие данные от клиента 102 пересылаются на устройство-адресат 3500. Поэтому даже после успешного переноса соединения на адресат отправитель сохраняет некоторый объем состояния для соединения (например, элемент таблицы маршрутизации), чтобы правильно маршрутизировать последующие пакеты на адресат. Когда соединение заканчивается, адресат извещает отправителя, чтобы позволить ему очистить все оставшееся состояние для перенесенного соединения.Once the transfer has begun, the sending device 3400 must also ensure that subsequent data from the client 102 is sent to the destination device 3500. Therefore, even after the connection is successfully transferred to the destination, the sender retains some amount of state for the connection (for example, a routing table element) to route correctly subsequent packets to the destination. When the connection ends, the recipient notifies the sender to allow him to clear all remaining status for the transferred connection.

Кроме того, вследствие асинхронной природы переноса соединения, пакеты данных для переноса соединения, которые пересылаются устройством-отправителем 3400 (или блоком пересылки, рассматриваемым как отдельное устройство) могут начинать поступать на устройство-адресат 3500 до того, как устройство-адресат 3500 получит состояние переносимого соединения. Промежуточный драйвер 3414 блока переноса на устройстве-адресате 3500 отвечает за буферизацию этих пакетов, пока соответствующее переносимое соединение не будет установлено на устройстве-адресате 3500.In addition, due to the asynchronous nature of the transfer of the connection, data packets for transferring the connection, which are forwarded by the sending device 3400 (or the forwarding unit, considered as a separate device) may begin to arrive at the destination device 3500 before the destination device 3500 receives the status of the transferred connections. Intermediate driver 3414 transfer unit on the destination device 3500 is responsible for buffering these packets until the corresponding portable connection is established on the destination device 3500.

На фиг.37 показан подход к процедуре 3700 загрузки для переноса соединения. Процедура 3700 загрузки переноса демонстрирует иллюстративные подробности для переноса соединения со стороны устройства-адресата 3500.37 shows an approach to a download procedure 3700 for transferring a connection. Transfer download procedure 3700 shows illustrative details for transferring a connection from the destination device 3500.

Когда переносимое соединение поступает на устройство-адресат 3500, оно опирается на промежуточный драйвер 3414 блока переноса для обработки. После расширения и объединения состояния переносимого соединения промежуточный драйвер 3414 блока переноса в сочетании с прокладкой 3412 блока переноса вставляет переносимое соединение в локальный сетевой стек прозрачно для приложения 316. Для процедуры 3700 загрузки переноса описан перенос TCP-соединения в позициях <1>-<8>.When the portable connection arrives at the destination device 3500, it relies on the intermediate driver 3414 transfer unit for processing. After expanding and combining the state of the portable connection, the intermediate driver 3414 of the transfer unit, in combination with the gasket 3412 of the transfer unit, inserts the portable connection into the local network stack transparently for application 316. For the transfer loading procedure 3700, the transfer of the TCP connection is described at positions <1> - <8> .

Позиция <1>, как описано выше со ссылкой на процедуру 3600 выгрузки переноса, обозначает инициализацию, осуществляемую до операций хостирования приложений. В частности, стек 3404 протоколов делает запросы относительно того, какие имеются возможности выгрузки, если вообще имеются. Промежуточный драйвер 3414 блока переноса заполняет запрос поддержки переноса TCP-соединения, чтобы указать, что загрузка переноса соединения доступна, а также распространяет запрос вниз на минипорт 3408 ФСИ для возможных возможностей выгрузки «дымохода» TCP.Position <1>, as described above with reference to transfer upload procedure 3600, denotes initialization prior to application hosting operations. In particular, the protocol stack 3404 makes inquiries as to what upload capabilities, if any, exist. The intermediate driver 3414 of the transfer unit fills out a request for support for transferring a TCP connection to indicate that a connection transfer download is available, and also distributes the request down to the FSI miniport 3408 for possible TCP chimney discharge capabilities.

Позиция <2> обозначает, что, когда данные переноса соединения поступают на устройство-адресат 3500, информация переноса соединения (например, пакетированный двоичный блоб 3422) доставляется на промежуточный драйвер 3414 блока переноса. Промежуточный драйвер 3414 блока переноса повторно собирает состояние соединения, согласует его с любыми соответствующими данными, поступившими в ходе переноса, и подготавливается к загрузке на сетевой стек. Любые данные от клиента 102, поступающие в процессе загрузки переносимого соединения, буферизуются промежуточным драйвером 3414 блока переноса. После успешного завершения переноса данные будут доставлены на приложение 316.Position <2> means that when the connection transfer data arrives at the destination device 3500, the connection transfer information (for example, packetized binary blob 3422) is delivered to the intermediate driver 3414 of the transfer unit. The intermediate driver 3414 of the transfer unit reassembles the connection status, reconciles it with any relevant data received during the transfer, and prepares for loading onto the network stack. Any data from client 102 coming in during the download of the portable connection is buffered by the intermediate driver 3414 of the transfer unit. Upon successful completion of the transfer, the data will be delivered to application 316.

Согласно позиции <3>, чтобы инициировать загрузку переносимого соединения в локальный сетевой стек, промежуточный драйвер 3414 блока переноса извещает прокладку 3412 блока переноса о поступлении запроса переносимого соединения. Промежуточный драйвер 3414 блока переноса также доставляет состояние соединения (или, по меньшей мере, состояние 3420 протокола) на прокладку 3412 блока переноса.According to position <3>, in order to initiate the loading of the portable connection to the local network stack, the intermediate driver 3414 of the transfer unit notifies the gasket 3412 of the transfer unit of the receipt of the request for the portable connection. The intermediate driver 3414 of the transfer unit also delivers the connection state (or at least the state 3420 of the protocol) to the gasket 3412 transfer unit.

Позиция <4> обозначает, что прокладка 3412 блока переноса инициирует загрузку переносимого соединения, вызывая процедуру начальной вставки TCP (или, в более общем случае, процедуру внедрения состояния протокола) и выдавая состояние 3420 переносимого протокола на стек 3404(Т) TCP. Позиция <5> обозначает, что TCP/IP восстанавливает переносимое соединение посредством стека 3404 протоколов с использованием предоставленного состояния 3420 протокола. Это состояние 3420 протокола может включать в себя одно или несколько из состояния транспорта (TCP), состояния пути (IP), состояния соседа и следующего скачка (ARP) и т.д.Position <4> indicates that the transfer unit gasket 3412 initiates the download of the portable connection, invoking the initial TCP insert procedure (or, more generally, the protocol state injection procedure) and issuing the state of the portable protocol 3420 onto the TCP stack 3404 (T). Position <5> indicates that TCP / IP restores the portable connection through the protocol stack 3404 using the provided protocol state 3420. This protocol state 3420 may include one or more of a transport state (TCP), a path state (IP), a neighbor state and a next hop (ARP), etc.

Позиция <6> обозначает, что если переносимое соединение успешно повторно установлено на устройстве-адресате 3500, то TCP инициирует событие соединения с клиентской частью прокладки 3412 блока переноса, чтобы указать установление нового соединения. Имеется множество возможных причин для сбоя, но общие причины могут включать в себя недостаток соответствующего слушателя, сбой маршрутизации и т.д. В этих случаях, когда сетевой стек не способен повторно установить переносимое соединение, не указывается ни одно событие соединения, и в вызове «начальная вставка завершена» задается статус «сбой». Блок 310 переноса соединений отвечает за очистку переноса и отправку извещения о перезагрузке обратно на клиент 102, чтобы прекратить соединение.Position <6> means that if the portable connection is successfully re-established on the destination device 3500, then TCP will trigger a connection event with the client part of the gasket 3412 transfer unit to indicate the establishment of a new connection. There are many possible reasons for the failure, but common reasons may include a lack of an appropriate listener, a routing failure, etc. In these cases, when the network stack is not able to re-establish the portable connection, not a single connection event is indicated, and the status “failed” is set in the “initial insert completed” call. The connection transfer unit 310 is responsible for clearing the transfer and sending the reboot notification back to the client 102 to terminate the connection.

Позиция <7> обозначает, что прокладка 3412 блока переноса действует, как поставщик, распространяющий событие соединения на уровень 3402 сокетов, чтобы указывать слушающему приложению 316 об установлении нового соединения. Если приложение 316 принимает соединение, оно обрабатывает запросы и ответы посредством нормальных операций чтения и записи сокета; приложению 316 может быть неизвестно, что соединение было перемещено. Если приложение 316 не приняло соединение, то TCP заканчивает соединение, но не посылает извещение о перезагрузке обратно на клиент 102. Опять же, в вызове «начальная вставка завершена» устанавливается статус «сбой», и блок 310 переноса соединения отвечает за очистку переноса и отправку извещения о перезапуске обратно на клиент 102, чтобы прекратить соединение.Position <7> indicates that the transfer block gasket 3412 acts as a provider propagating the connection event to socket level 3402 to indicate to the listening application 316 that a new connection has been established. If application 316 accepts the connection, it processes requests and responses through normal socket read and write operations; application 316 may not be aware that the connection has been moved. If application 316 did not accept the connection, then TCP terminates the connection but does not send a reboot notification back to client 102. Again, in the call “initial insert is completed” the status is set to “failure”, and the connection transfer unit 310 is responsible for clearing the transfer and sending restart notifications back to client 102 to terminate the connection.

Особая ситуация возникает, когда приложение 316 и классификатор 304 совместно расположены на одном и том же устройстве: прокладка 3412 блока переноса может быть судьей между ними. Когда на одном и том же хосте 108 размещены оба класса программ, они оба могут слушать один/одни и тот/те же IP-адрес(а) и порт(ы). Однако TCP обычно имеет одного слушателя на уникальный IP-адрес и порт. Поэтому прокладка 3412 блока переноса может затемнять конфигурацию, когда две программы слушают на одном и том же IP-адресе и порте, мультиплексируя два сокета в единый слушатель на уровне TCP.A special situation arises when the application 316 and the classifier 304 are jointly located on the same device: the transfer unit gasket 3412 may be the judge between them. When both classes of programs are hosted on the same host 108, they can both listen on the same IP address (s) and port (s). However, TCP usually has one listener per unique IP address and port. Therefore, the transfer block gasket 3412 can obscure the configuration when two programs listen on the same IP address and port, multiplexing two sockets into a single listener at the TCP level.

В этом случае, когда события соединения поступают на клиентскую часть прокладки 3412 блока переноса, прокладка 3412 блока переноса, в качестве поставщика, определяет, на какой слушающий сокет доставлять извещение о соединении на уровне 3402 сокетов. При наличии только одного сокета, слушающего соответствующий IP-адрес и порт, этот сокет принимает событие соединения. При наличии более одного слушающего сокета, получатель зависит от контекста, в котором указано событие соединения. Если событие соединения является фирменным новым соединением для виртуального IP-адреса, то событие соединения доставляется на классификатор 304; если событие соединения относится к выделенному IP-адресу (IP-адресу без выравнивания нагрузки) или является результатом загрузки переносимого соединения, то событие соединения доставляется на целевое приложение 316.In this case, when the connection events are sent to the client part of the transfer block gasket 3412, the transfer block gasket 3412, as a provider, determines to which listening socket the connection notification should be delivered at the level of 3402 sockets. If there is only one socket listening on the corresponding IP address and port, this socket receives a connection event. If there is more than one listening socket, the receiver depends on the context in which the connection event is indicated. If the connection event is a proprietary new connection for the virtual IP address, then the connection event is delivered to classifier 304; if the connection event refers to a dedicated IP address (IP address without load balancing) or is the result of loading a portable connection, then the connection event is delivered to the destination application 316.

Позиция <8> обозначает, что по завершении переносимого соединения TCP извещает прокладку 3412 блока переноса, вызывая предоставленный обработчик завершения начальной вставки. Код статуса предусмотрен для извещения прокладки 3412 блока переноса, было ли соединение успешно обновлено. Если загрузка переносимого соединения не удается, то блок 310 переноса соединения отвечает за очистку переноса и за извещение клиента 102 о прекращении соединения путем отправки ему команды перезапуска. Если переносимое соединение было успешно вставлено в локальный сетевой стек, то промежуточный драйвер 3414 блока переноса может начать доставлять буферизованные данные с клиента 102, передавая полученный(е) пакет(ы) через путь приема пакетов протокольно-аппаратного интерфейса 3406.Position <8> means that upon completion of the portable connection, TCP notifies the transfer block gasket 3412, invoking the provided initial insert completion handler. A status code is provided to notify the transfer block gasket 3412 whether the connection has been successfully updated. If the download of the portable connection fails, then the connection transfer unit 310 is responsible for clearing the transfer and for notifying the client 102 about the connection being terminated by sending it a restart command. If the portable connection was successfully inserted into the local network stack, the intermediate driver 3414 of the transfer unit may begin to deliver buffered data from client 102 by transmitting the received packet (s) through the packet receiving path of the protocol-hardware interface 3406.

Когда переносимое соединение оканчивается (по причине неудачной загрузки, из-за того, что перенесенное соединение впоследствии закрыто нормальными средствами, и т.д.), устройство-адресат 3500 извещает устройство-отправитель 3400. Устройство-отправитель 3400 использует эти извещения, чтобы более эффективно и надежно очищать неактивное состояние для переносимых соединений, включая элементы таблицы маршрутизации. Поэтому для учета успешно перенесенных соединений, которые произвольно заканчиваются в будущем, прокладка 3412 блока переноса может отслеживать их деятельность и извещать промежуточный драйвер 3414 блока переноса, когда сокеты из-за этого закрываются.When the portable connection ends (due to a failed download, due to the fact that the transferred connection was subsequently closed by normal means, etc.), the destination device 3500 notifies the sending device 3400. The sending device 3400 uses these notifications to efficiently and reliably clean inactive state for portable connections, including routing table elements. Therefore, to account for successfully transferred connections that arbitrarily end in the future, the transfer block routing 3412 can monitor their activity and notify the transfer block intermediate driver 3414 when the sockets are closed due to this.

На фиг.38 показан подход к туннелированию пакетов между блоком 302 пересылки и хостом 108. Инкапсулированные пакеты 3808 могут туннелировать из блока 302 пересылки на хост 108 без привлечения служебной нагрузки для каждого переданного пакета. Согласно описанному ниже, туннелирование осуществляется с использованием идентификатора 3814 потока и таблиц 3806 и 3810 отображения инкапсуляции блоков 312(F) и 312(Н) туннелирования, соответственно, блока 302 пересылки и хоста 108, соответственно. Идентификатор 3814 потока вставляется в инкапсулированные пакеты 3808.FIG. 38 illustrates an approach to tunneling packets between forwarder 302 and host 108. Encapsulated packets 3808 can tunnel from forwarder 302 to host 108 without any overhead for each transmitted packet. As described below, the tunneling is performed using the flow identifier 3814 and the encapsulation mapping tables 3806 and 3810 of the tunneling units 312 (F) and 312 (H), respectively, of the forwarding unit 302 and the host 108, respectively. The identifier 3814 flow is inserted into the encapsulated packets 3808.

Как отмечено выше со ссылкой фиг.32, пакеты для соединения, которые поступают после переноса соединения, могут маршрутизироваться блоком 302 пересылки на хост 108(1) с использованием туннелирования с помощью блока 312 туннелирования. Согласно позиции (8) (фиг.32), блок 302 пересылки пересылает эти последующие пакеты с блока 302 пересылки, имеющего сетевой адрес «F», на хост 108(1), имеющий сетевой адрес «Н1». Как описано выше со ссылкой на фиг.4, блок 302 пересылки может осуществлять ТСА [трансляцию сетевых адресов], полу-ТСА, туннелирование и т.д., чтобы маршрутизировать входящие пакеты на хост 108(1).As noted above with reference to FIG. 32, packets for a connection that arrive after transferring a connection can be routed by the forwarding unit 302 to the host 108 (1) using tunneling using the tunneling unit 312. According to (8) (FIG. 32), the forwarding unit 302 forwards these subsequent packets from the forwarding unit 302 having the network address “F” to the host 108 (1) having the network address “H1”. As described above with reference to FIG. 4, the forwarding unit 302 may perform TCA [network address translation], semi-TCA, tunneling, etc., to route incoming packets to host 108 (1).

Такие входящие пакеты содержат IP-адрес назначения виртуального IP-адреса (VIP) и IP-адрес источника «С1» для пакетов, поступающих от клиента 102(1). Пакеты, маршрутизируемые на хост 108(1), имеют IP-адрес назначения и адрес источника C1 (для полу-ТСА) или «F» (для полной ТСА). Это переписывание адресов может мешать некоторым протоколам, которые ожидают, что клиент 102(1) и хост 108(1) имеют идентичные виды адресов источника и назначения.Such incoming packets contain the destination IP address of the virtual IP address (VIP) and the source IP address “C1” for packets arriving from client 102 (1). Packets routed to host 108 (1) have a destination IP address and a source address of C1 (for semi-TCA) or “F” (for full TCA). This rewriting of addresses may interfere with some protocols that expect client 102 (1) and host 108 (1) to have identical types of source and destination addresses.

Поэтому, по меньшей мере, в отношении полной ТСА обратные пути от хоста 108(1) к клиенту 102(1), которые не проходят через блок 302 пересылки, запрещены, поскольку хост 108(1) не знает адрес клиента 102(1). Прямые пути от хоста 108(1) к клиенту 102(1) желательны в ситуациях, когда трафик от хоста 108(1) к клиенту 102(1) особенно высок и/или значительно превышает трафик в обратном направлении (например, когда хост 108(1) обеспечивает потоковую передачу мультимедийных данных на клиент 102(1)).Therefore, at least with respect to the complete TCA, the return paths from the host 108 (1) to the client 102 (1) that do not pass through the forwarding unit 302 are prohibited because the host 108 (1) does not know the address of the client 102 (1). Direct paths from host 108 (1) to client 102 (1) are desirable in situations where traffic from host 108 (1) to client 102 (1) is especially high and / or significantly exceeds traffic in the opposite direction (for example, when host 108 ( 1) provides streaming multimedia data to the client 102 (1)).

Туннелирование посредством блоков 312 туннелирования, согласно описанному здесь, может обеспечивать идентичные виды в отношении адресов (и портов) источника и назначения для клиентов 102 и приложений 316 на хостах 108. Для примера и со ссылками на фиг. 34 и 35, блок 312 туннелирования на каждом из блока 302 пересылки и хоста 108 могут действовать как часть промежуточного драйвера 3414 переноса блока 310 переноса или совместно с ним.Tunneling via tunneling units 312 as described herein can provide identical views with respect to source and destination addresses (and ports) for clients 102 and applications 316 on hosts 108. For example and with reference to FIG. 34 and 35, the tunneling unit 312 on each of the forwarding unit 302 and the host 108 may act as part of, or in conjunction with, the transfer intermediate driver 3414 of the transfer unit 310.

В реализации, описанной со ссылкой на фиг.38, блок 310 переноса соединений обеспечивает отображение 3812 инкапсуляции между идентификатором 3814 потока и упорядоченной четверки 3804 TCP/IP. Блок 310 переноса соединений может быть связан с классификатором 304, и блок 310 переноса соединений (в необязательном порядке, совместно с таким классификатором 304) может располагаться на том же устройстве, что и блок 302 пересылки. Альтернативно, блок 310 переноса соединений (а также классификатор 304) может размещаться на устройстве, отличном от блока 302 пересылки. Отображение 3812 инкапсуляции может, альтернативно, обеспечиваться посредством функции блока 312 туннелирования или совместно с ней, т.е., например, размещаться на классификаторе 304 или быть связанным с ним.In the implementation described with reference to FIG. 38, the connection transfer unit 310 provides an encapsulation mapping 3812 between the flow identifier 3814 and the TCP / IP ordered four 3804. A connection transfer unit 310 may be associated with a classifier 304, and a connection transfer unit 310 (optionally in conjunction with such a classifier 304) may reside on the same device as the transfer unit 302. Alternatively, the connection transferring unit 310 (as well as the classifier 304) may reside on a device other than the forwarding unit 302. The encapsulation display 3812 may alternatively be provided by or in conjunction with the function of the tunneling unit 312, i.e., for example, be located on or associated with the classifier 304.

Будучи отображен в упорядоченную четверку 3804 TCP/IP посредством отображения 3812 инкапсуляции, идентификатор 3814 потока служит для идентификации потока инкапсулированных пакетов 3808 для конкретного соединения. Упорядоченная четверка 3804 TCP/IP содержит сетевой адрес (и порты и пр.) для источника и назначения для конкретного соединения в соответствии с протоколом TCP/IP или любого подобного или аналогичного протокола. Идентификатор 3814 потока является 32-битовым в описываемой реализации, поскольку это позволяет идентификатору потока кодироваться в полях порта источника и назначения TCP-сегмента заголовка в туннелированном пакете, что позволяет передавать туннелированный пакет без каких-либо дополнительных затрат пространства туннелирования. В пункте назначения упорядоченную четверку TCP/IP можно определить посредством поиска упорядоченной четверки, которая связана с идентификатором потока, извлеченным из полей порта источника и назначения. Однако, альтернативно, можно использовать идентификаторы 3814 потока другой длины, в особенности для других протоколов, таких как RTP Интернета и т.д.Being mapped to TCP / IP ordered four 3804 by means of encapsulation mapping 3812, flow identifier 3814 serves to identify the encapsulated packet stream 3808 for a particular connection. The ordered four 3804 TCP / IP contains the network address (and ports, etc.) for the source and destination for a particular connection in accordance with the TCP / IP protocol or any similar or similar protocol. The flow identifier 3814 is 32-bit in the described implementation since it allows the flow identifier to be encoded in the source port and destination port fields of the TCP header segment in the tunneled packet, which allows the tunneled packet to be transmitted without any additional tunneling space overhead. At the destination, the ordered four TCP / IP can be determined by searching for the ordered four that is associated with the flow identifier extracted from the source port and destination port fields. However, alternatively, stream identifiers 3814 of a different length may be used, especially for other protocols such as Internet RTP, etc.

Каждый идентификатор 3814 потока может идентифицировать уникальное соединение от устройства, с которого начинается туннелирование (которым в данном примере является блок 302 пересылки). Идентификаторы 3814 потока можно генерировать с использованием любого подходящего механизма, например возрастающего счетчика соединений. Альтернативно, начальный порядковый номер (НПН) получателя TCP/IP, сгенерированный блоком переноса соединений, может служить идентификатором 3814 потока. Кроме того, упорядоченная четверка 3804 TCP/IP является, в более общем случае, парой источник/пункт назначения. Каждое значение источника и значение пункта назначения отдельной пары источник/пункт назначения может включать в себя идентификатор сетевого узла (например, сетевой адрес, порт, некоторые их комбинации и т.д.) для источника и пункта назначения, соответственно, данного пакета, распространяющегося по конкретному соединению.Each flow identifier 3814 may identify a unique connection from the device from which tunneling begins (which in this example is forwarding unit 302). Flow identifiers 3814 may be generated using any suitable mechanism, such as an incremental connection counter. Alternatively, the initial sequence number (NN) of the TCP / IP receiver generated by the connection transfer unit may serve as a stream identifier 3814. Furthermore, the ordered four 3804 TCP / IP is, in a more general case, a source / destination pair. Each source value and destination value of an individual source / destination pair may include an identifier of a network node (for example, network address, port, some combinations thereof, etc.) for a source and destination, respectively, of a given package distributed over specific compound.

Блок 310 переноса соединений предоставляет отображение 3812 инкапсуляции хосту 108. Блок 312(Н) туннелирования на хосте 108 сохраняет отображение 3812 инкапсуляции в таблице 3810 отображения инкапсуляции как элемент 3810(1) отображения инкапсуляции. Блок 312(Н) туннелирования может затем использовать идентификатор 3814 потока для отображения и идентификации конкретного соединения, соответствующего упорядоченной четверке 3804 TCP/IP. Отображение 3812 инкапсуляции может, в необязательном порядке, сообщаться на хост 108 как часть пакетированного двоичного блоба 3422 в операции переноса соединения.The connection transfer unit 310 provides an encapsulation mapping 3812 to the host 108. The tunneling unit 312 (H) on the host 108 stores the encapsulation mapping 3812 in the encapsulation mapping table 3810 as the encapsulation mapping element 3810 (1). Tunneling unit 312 (H) may then use flow identifier 3814 to display and identify a particular connection corresponding to TCP / IP ordered four 3804. The encapsulation mapping 3812 may optionally be reported to the host 108 as part of a packetized binary blob 3422 in a connection transfer operation.

Блок 302 пересылки также содержит компонент блока 312(F) туннелирования с таблицей 3806 отображения инкапсуляции. В таблице 3806 отображения инкапсуляции хранится элемент 3806(1) отображения инкапсуляции, который связывает/отображает упорядоченную четверку 3804 TCP/IP для конкретного соединения в идентификатор 3814 потока. Блок 312(F) туннелирования также получает информацию отображения для элемента 3806(1) отображения инкапсуляции от блока 310 переноса соединений (например, отображение 3812 инкапсуляции).Forwarding unit 302 also contains a component of tunneling unit 312 (F) with encapsulation mapping table 3806. Encapsulation mapping table 3806 stores an encapsulation mapping element 3806 (1) that associates / maps an ordered four TCP / IP four 3804 for a particular connection into a stream identifier 3814. Tunneling unit 312 (F) also obtains mapping information for encapsulation display element 3806 (1) from connection transfer unit 310 (e.g., encapsulation mapping 3812).

Хотя показан только один элемент 3806(1) и 3810(1) отображения инкапсуляции, таблица 3806 отображения инкапсуляции и таблица 3810 отображения инкапсуляции могут иметь много таких элементов. Эти таблицы 3806 и 3810 отображения инкапсуляции можно комбинировать с другой информацией, например таблицами для информации сеанса блока 308 отслеживания сеансов.Although only one encapsulation mapping element 3806 (1) and 3810 (1) is shown, the encapsulation mapping table 3806 and the encapsulation mapping table 3810 may have many such elements. These encapsulation mapping tables 3806 and 3810 may be combined with other information, such as tables for session information, of the session tracking unit 308.

Когда устройство (например, блок 302 пересылки) передающее и устройство (например, хост 108), принимающее инкапсулированные пакеты 3808 только обеспечивают туннелирование между собой, их таблицы отображения инкапсуляции, вероятно, имеют одинаковые элементы отображения инкапсуляции. В противном случае, таблица 3806 отображения инкапсуляции и таблица 3810 отображения инкапсуляции, вероятно, имеют разные полные наборы элементов 3806() отображения инкапсуляции и элементов 3810() отображения инкапсуляции, соответственно.When a device (e.g., forwarder 302) is a transmitter and a device (e.g., host 108) that receives encapsulated packets 3808 only provides tunneling between themselves, their encapsulation mapping tables probably have the same encapsulation mapping elements. Otherwise, the encapsulation mapping table 3806 and the encapsulation mapping table 3810 probably have different full sets of encapsulation mapping elements 3806 () and the encapsulation mapping elements 3810 (), respectively.

В ходе работы входящий пакет 3802 для конкретного соединения поступает на блок 302 пересылки. Конкретное соединение связано с упорядоченной четверкой 3804 TCP/IP. Входящий пакет 3802 содержит упорядоченную четверку 3804 TCP/IP с IP-адресом источника (клиента 102), IP-адресом назначения (виртуальным IP), TCP-портом источника (клиента 102) и TCP-портом назначения.During operation, an incoming packet 3802 for a particular connection arrives at the forwarder 302. A specific connection is associated with an ordered four 3804 TCP / IP. Incoming packet 3802 contains an ordered four TCP / IP four 3804 with source IP address (client 102), destination IP address (virtual IP), source TCP port (client 102), and destination TCP port.

Блок 312(F) туннелирования принимает входящий пакет 3802 для туннелирования на хост 108. Используя упорядоченную четверку 3804 TCP/IP, блок 312(F) туннелирования обращается к таблице 3806 отображения инкапсуляции, чтобы отыскать элемент 3806(1) отображения инкапсуляции. Идентификатор 3814 потока извлекается из элемента 3806(1) отображения инкапсуляции как связанный/отображенный на упорядоченную четверку 3804 TCP/IP.The tunneling unit 312 (F) receives the incoming packet 3802 for tunneling to the host 108. Using the ordered four TCP / IP 3804, the tunneling unit 312 (F) looks at the encapsulation mapping table 3806 to find the encapsulation mapping element 3806 (1). The flow identifier 3814 is retrieved from the encapsulation mapping element 3806 (1) as connected / mapped to the ordered four TCP / IP 3804.

Для создания инкапсулированного пакета 3808 блок 312(F) туннелирования вставляет идентификатор 3814 потока в части порта источника и назначения упорядоченной четверки TCP/IP. Эти две части TCP имеют 16 битов каждая, что позволяет вставлять 32-битовый идентификатор 3814 потока. Кроме того, для части IP-адреса источника заголовка упорядоченной четверки TCP/IP, блок 312(F) туннелирования вставляет IP-адрес «F» блока 302 пересылки. Для части IP-адреса назначения заголовка упорядоченной четверки TCP/IP, блок 312(F) туннелирования вставляет IP-адрес «Н» хоста 108.To create the encapsulated packet 3808, the tunneling unit 312 (F) inserts the flow identifier 3814 into the port part of the source and destination of the ordered four TCP / IP. These two parts of TCP have 16 bits each, which allows you to insert a 32-bit identifier 3814 stream. In addition, for the TCP / IP ordered four header source IP address portion, the tunneling unit 312 (F) inserts the IP address “F” of the forwarding unit 302. For the TCP / IP ordered four header portion destination IP address portion, tunneling unit 312 (F) inserts the IP address “H” of host 108.

Блок 302 пересылки маршрутизирует/передает инкапсулированный пакет 3808 на хост 108, и хост 108 получает инкапсулированный пакет 3808 от блока 302 пересылки. Компонент блока 312(Н) пересылки на хосте 108 обнаруживает, что инкапсулированный пакет 3808 является туннелированным пакетом, который нужно декапсулировать.Forwarder 302 routes / transmits the encapsulated packet 3808 to host 108, and host 108 receives the encapsulated packet 3808 from forwarder 302. The component of the forwarder 312 (H) at the host 108 detects that the encapsulated packet 3808 is a tunneled packet that needs to be decapsulated.

Идентификатор 3814 потока извлекается из инкапсулированного пакета 3808 и используется для поиска соответствующей упорядоченной четверки 3804 TCP/IP, которая привязана к элементу 3810(1) отображения инкапсуляции таблицы 3810 отображения инкапсуляции. Упорядоченная четверка 3804 TCP/IP используется блоком 312(Н) туннелирования для восстановления заголовка упорядоченной четверки 3804 TCP/IP как изначально принятого во входящем пакете 3802 на блоке 302 пересылки.The flow identifier 3814 is retrieved from the encapsulated packet 3808 and used to search for the corresponding ordered TCP / IP quadruple 3804 that is associated with the encapsulation display element 3810 (1) 38 of the encapsulation mapping table 3810. The TCP / IP ordered four 3804 is used by the tunneling unit 312 (H) to recover the ordered TCP / IP four four 3804 as originally received in the incoming packet 3802 on the forwarding unit 302.

В частности, IP-адрес F блока 302 пересылки заменяется IP-адресом источника, а IP-адрес Н хоста 108 заменяется IP-адресом назначения. Кроме того, идентификатор 3814 потока заменяется TCP-портом источника и TCP-портом назначения. Декапсулированный пакет указывается через сетевой стек хоста 108 целевому приложению 316.In particular, the IP address F of the forwarder 302 is replaced by the source IP address, and the IP address H of the host 108 is replaced by the destination IP address. In addition, the flow identifier 3814 is replaced by the source TCP port and the destination TCP port. The unencapsulated packet is indicated through the network stack of the host 108 to the target application 316.

В целом, часть заголовка пакета, включая часть пары источник/пункт назначения, для данного пакета, который не обязательно используется для передачи данного пакета, можно использовать для переноса идентификатора 3814 потока. Благодаря предварительному предоставлению, по меньшей мере, части пары источник/пункт назначения на хост 108 идентификатор 3814 потока можно использовать для туннелирования (например, инкапсулировать и/или декапсулировать) пакеты без привлечения служебной нагрузки инкапсуляции на каждом пакете. Кроме того, пакеты, которые имеют полный размер в отношении данного протокола, можно туннелировать без фрагментации.In general, a portion of the packet header, including a portion of the source / destination pair, for a given packet, which is not necessarily used to transmit this packet, can be used to carry the flow identifier 3814. By providing at least a portion of the source / destination pair to host 108, the flow identifier 3814 can be used to tunnel (e.g., encapsulate and / or decapsulate) packets without involving the encapsulation overhead on each packet. In addition, packets that are full size with respect to this protocol can be tunneled without fragmentation.

На фиг.39 показана логическая блок-схема 3900 способа туннелирования пакетов между первым устройством и вторым устройством. Например, первое устройство и второе устройство могут соответствовать устройству-отправителю 3400 и устройству-адресату 3500, соответственно, инфраструктуры 106 выравнивания нагрузки и группы хостов 108, соответственно. Тем не менее, туннелирование можно использовать в реализациях, не связанных с выравниванием нагрузки.FIG. 39 is a flowchart 3900 of a packet tunneling method between a first device and a second device. For example, the first device and the second device may correspond to the sending device 3400 and the destination device 3500, respectively, of the load balancing infrastructure 106 and the host group 108, respectively. However, tunneling can be used in non-load balancing implementations.

Логическая блок-схема 3900 содержит двенадцать блоков 3902-3924. Хотя действия логической блок-схемы 3900 могут осуществляться в других средах и посредством различных программных схем, фиг. 1-3, 32, 34, 35 и 38 используются, в частности, для иллюстрации определенных аспектов и примеров способа.The logical block diagram 3900 contains twelve blocks 3902-3924. Although the actions of the logical flowchart 3900 can be carried out in other environments and through various software circuits, FIG. 1-3, 32, 34, 35 and 38 are used, in particular, to illustrate certain aspects and examples of the method.

На блоке 3902 устройство-отправитель отправляет на устройство-адресат отображение идентификатора потока в упорядоченную четверку TCP/IP. Например, устройство-отправитель 3400 может послать отображение 3812 инкапсуляции, которое привязывает идентификатор 3814 потока к упорядоченной четверке 3804 TCP/IP. На блоке 3914 устройство-адресат принимает отображение идентификатора потока в упорядоченную четверку TCP/IP от устройства-отправителя. Например, устройство-адресат 3500 получает от устройства-отправителя 3400 отображение 3812 инкапсуляции, которое привязывает идентификатор 3814 потока к упорядоченной четверке 3804 TCP/IP.At block 3902, the sending device sends to the destination device the mapping of the stream identifier into an ordered four TCP / IP. For example, the sending device 3400 may send an encapsulation mapping 3812 that maps the flow identifier 3814 to the ordered four TCP / IP 3804. At block 3914, the destination device receives the mapping of the flow identifier to the ordered four TCP / IP from the sending device. For example, the destination device 3500 receives an encapsulation mapping 3812 from the sending device 3400, which maps the flow identifier 3814 to the ordered four TCP / IP 3804.

Альтернативно, устройство-адресат 3500 может получить отображение 3812 инкапсуляции от другого устройства. Пунктирные стрелки 3926 и 3928 указывают, что действия блоков 3904-3912 и блоков 3916-3924 могут происходить через некоторое время после действий блоков 3902 и 3914, соответственно.Alternatively, the destination device 3500 may receive an encapsulation mapping 3812 from another device. The dashed arrows 3926 and 3928 indicate that the actions of blocks 3904-3912 and blocks 3916-3924 can occur some time after the actions of blocks 3902 and 3914, respectively.

На блоке 3904 устройство-отправитель получает от клиента входящий пакет. Например, устройство-отправитель 3400 может получить от клиента 102 входящий пакет 3802, имеющий заголовок с упорядоченной четверкой 3804 TCP/IP. На блоке 3906 осуществляется поиск идентификатора потока для соединения, соответствующего пакету клиента с использованием упорядоченной четверки TCP/IP входящего пакета. Например, можно искать идентификатор 3814 потока для соединения с клиентом 102 с использованием упорядоченной четверки 3804 TCP/IP, которая отображается в него, в элементе 3806(1) отображения инкапсуляции таблицы 3806 отображения инкапсуляции.At block 3904, the sending device receives an incoming packet from the client. For example, a sending device 3400 may receive an incoming packet 3802 from a client 102 having a TCP / IP ordered four 3804 header. At block 3906, a stream identifier is searched for the connection corresponding to the client packet using the ordered four TCP / IP of the incoming packet. For example, you can search for thread identifier 3814 to connect to client 102 using the ordered four TCP / IP 3804 that maps to it in the encapsulation mapping element 3806 (1) of the encapsulation mapping table 3806.

На блоке 3908 происходит замена IP источника и IP назначения входящего пакета IP-адресом отправителя устройства-отправителя и целевым IP-адресом устройства-адресата, соответственно. Например, устройство-отправитель 3400 может заменить части IP-адреса части упорядоченной четверки 3804 TCP/IP заголовка входящего пакета 3802 IP-адресами устройства-отправителя 3400 и устройства-адресата 3500.At block 3908, the source IP and destination IP of the incoming packet are replaced with the IP address of the sender of the sending device and the destination IP address of the destination device, respectively. For example, a sender 3400 may replace portions of the IP address of a portion of the ordered four 3804 TCP / IP headers of the incoming packet 3802 with the IP addresses of the sender 3400 and the destination 3500.

На блоке 3910 порт источника и порт назначения входящего пакета заменяются идентификатором потока. Например, устройство-отправитель 3400 может заменить TCP-порты источника и пункта назначения части упорядоченной четверки 3804 TCP/IP заголовка входящего пакета 3802 идентификатором 3814 потока. На блоке 3912 устройство-отправитель передает инкапсулированный пакет на устройство-адресат. Например, устройство-отправитель 3400 может отправить на устройство-адресат 3500 инкапсулированный пакет 3808.At block 3910, the source port and destination port of the incoming packet are replaced by the stream identifier. For example, a sending device 3400 may replace the source and destination TCP ports of a portion of the ordered four 3804 TCP / IP headers of the incoming packet 3802 with flow identifier 3814. At block 3912, the sending device transmits the encapsulated packet to the destination device. For example, a sending device 3400 may send an encapsulated packet 3808 to a destination device 3500.

На блоке 3916 устройство-адресат получает инкапсулированный пакет от устройства-отправителя. Например, устройство-адресат 3500 может получить от устройства-отправителя 3400 инкапсулированный пакет 3808. На блоке 3918 осуществляется поиск упорядоченной четверки TCP/IP для соединения, соответствующего пакету, полученному от клиента, с использованием идентификатора потока. Например, устройство-адресат 3500 может обратиться к таблице 3810 отображения инкапсуляции в элементе 3810(1) отображения инкапсуляции, который отображает идентификатор 3814 потока в упорядоченную четверку 3804 TCP/IP.At block 3916, the destination device receives an encapsulated packet from the sending device. For example, the destination device 3500 can receive an encapsulated packet 3808 from the sending device 3400. At block 3918, an ordered four TCP / IP is searched for the connection corresponding to the packet received from the client using the flow identifier. For example, the destination device 3500 may refer to the encapsulation mapping table 3810 in the encapsulation mapping element 3810 (1), which maps the flow identifier 3814 to the ordered four TCP / IP 3804.

На блоке 3920 IP-адрес отправителя и IP-адрес получателя заменяются IP-адресом источника и IP-адресом назначения, соответственно, с использованием найденной упорядоченной четверки TCP/IP. Например, устройство-адресат 3500 может заменить IP-адреса устройства-отправителя 3400 и устройства-адресата 3500 в инкапсулированном пакете 3808 IP-адресом источника и IP-адресом назначения из упорядоченной четверки 3804 TCP/IP, полученной из таблицы 3810 отображения инкапсуляции.At block 3920, the sender’s IP address and the recipient’s IP address are replaced by the source IP address and destination IP address, respectively, using the TCP / IP ordered four. For example, the destination device 3500 can replace the IP addresses of the sending device 3400 and the destination device 3500 in the encapsulated packet 3808 with the source IP address and destination IP address from the ordered four TCP / IP 3804 obtained from the encapsulation mapping table 3810.

На блоке 3922 идентификатор потока заменяется портом источника и портом назначения входящего пакета с использованием найденной упорядоченной четверки TCP/IP. Например, устройство-адресат 3500 может заменить идентификатор 3814 потока в инкапсулированном пакете 3808 TCP-портом источника и TCP-портом назначения из упорядоченной четверки 3804 TCP/IP. На блоке 3924 пакет клиента указывается приложению на устройстве-адресате. Например, декапсулированная версия инкапсулированного пакета 3808 или входящий пакет 3802 указывается приложению 316 устройства-адресата 3500.At block 3922, the flow identifier is replaced by the source port and destination port of the incoming packet using the TCP / IP ordered four. For example, the destination device 3500 can replace the flow identifier 3814 in the encapsulated packet 3808 with the source TCP and destination TCP ports from the ordered four TCP / IP 3804. At block 3924, the client package is indicated to the application on the destination device. For example, a decapsulated version of the encapsulated packet 3808 or an incoming packet 3802 is indicated to the application 316 of the destination device 3500.

Действия, аспекты, признаки, компоненты и т.д., указанные на фиг.1-39, представлены в виде схем, состоящих из ряда блоков. Однако порядок, взаимосвязи, схемы размещения и т.д., применяемые для описания и представления фиг.1-39, не следует рассматривать в смысле ограничения, и для любого количества блоков допустимы любые комбинирование, изменение расположения, добавление, исключение и т.д. для реализации одного или нескольких систем, способов, устройств, протоколов, носителей, API, аппаратов, конфигураций и т.д. для выравнивания сетевой нагрузки. Кроме того, хотя приведенное здесь описание включает в себя ссылки на конкретные реализации (и иллюстративную операционную среду, представленную на фиг.40), показанные и/или описанные реализации можно реализовать посредством любого подходящего аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения или их комбинаций и с использованием любых пригодных организаций сети, транспортных/коммуникационных протоколов, программных интерфейсов приложений (API), архитектур клиент-сервер и т.п.The actions, aspects, features, components, etc. indicated in FIGS. 1-39 are presented in the form of diagrams consisting of a number of blocks. However, the order, relationships, layouts, etc., used to describe and present FIGS. 1-39 should not be considered in the sense of limitation, and for any number of blocks any combination, change of location, addition, exclusion, etc. . for implementing one or more systems, methods, devices, protocols, media, APIs, devices, configurations, etc. to balance network load. Furthermore, although the description provided here includes references to specific implementations (and the illustrative operating environment shown in FIG. 40), the shown and / or described implementations can be implemented using any suitable hardware, software, firmware or hardware or combinations and using any suitable network organizations, transport / communication protocols, application programming interfaces (APIs), client-server architectures, etc.

Операционная среда компьютера или другого устройстваOperating environment of a computer or other device

На фиг.40 показана операционная среда 4000 компьютера (или устройства общего назначения), способная (полностью или частично) реализовать, по меньшей мере, одну систему, устройство, аппарат, компонент, конфигурацию, протокол, подход, способ, процедуру, носитель, API, некоторую их комбинацию и т.д. для описанного здесь выравнивания сетевой нагрузки. Операционную среду 4000 можно использовать в описанных ниже компьютерных и сетевых архитектурах или в условиях автономной работы.On Fig shows the operating environment 4000 of a computer (or general purpose device), capable of (in whole or in part) to implement at least one system, device, apparatus, component, configuration, protocol, approach, method, procedure, media, API some combination thereof, etc. for network load balancing described here. Operating environment 4000 can be used in the following computer and network architectures or in stand-alone conditions.

Операционная среда 4000 является лишь одним примером среды и не призвана как-либо ограничивать объем использования или функциональные возможности применяемых архитектур устройства (включая компьютер, сетевой узел, развлекательное устройство, мобильный прибор, общее электронное устройство и т.д.). Кроме того, вычислительную среду 4000 (или ее устройства) не следует рассматривать как имеющую какую-либо зависимость или требование по отношению к любому или комбинации компонентов, показанных на фиг.40.Operating environment 4000 is just one example of the environment and is not intended to limit the use or functionality of the device architectures (including computer, network node, entertainment device, mobile device, general electronic device, etc.) in any way. In addition, the computing environment 4000 (or its devices) should not be construed as having any dependency or requirement with respect to any or a combination of components shown in FIG.

Кроме того, выравнивание сетевой нагрузки может быть реализовано посредством многочисленных других сред или конфигураций устройства общего назначения или устройства специального назначения (включая вычислительную систему). Примеры общеизвестных устройств, систем, сред и/или конфигураций, которые могут быть пригодны для использования, включают в себя, но не исключительно, персональные компьютеры, компьютеры-серверы, тонкие клиенты, толстые клиенты, карманные персональные компьютеры (КПК) или мобильные телефоны, часы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, телевизионные приставки, программируемую бытовую электронику, видеоигровые аппараты, игровые пульты, портативные или карманные игровые устройства, сетевые ПК, миникомпьютеры, универсальные компьютеры, сетевые узлы, распределенные или мультипроцессорные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, некоторые их комбинации и т.п.In addition, network load balancing can be implemented through numerous other environments or configurations of a general purpose device or a special purpose device (including a computing system). Examples of well-known devices, systems, environments and / or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, thin clients, thick clients, personal digital assistants (PDAs), or mobile phones, watches, handheld or portable devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, video game devices, game consoles, portable or handheld game devices systems, network PCs, minicomputers, universal computers, network nodes, distributed or multiprocessor computing environments, which include any of the above systems or devices, some combinations thereof, etc.

Реализации выравнивания сетевой нагрузки можно описать в общем контексте команд, выполняемых процессором. В целом, команды, выполняемые процессором, включают в себя процедуры, программы, протоколы, объекты, интерфейсы, компоненты, структуры данных и т.п., которые выполняют конкретные задания и/или реализуют определенные абстрактные типы данных. Выравнивание сетевой нагрузки, описанное здесь в некоторых реализациях, может также осуществляться на практике в средах распределенной обработки, где задания выполняются удаленно-связанными обрабатывающими устройствами, соединенными посредством линии и/или сети связи. Особенно в распределенной вычислительной среде команды, выполняемые процессором, могут размещаться на раздельных носителях данных, выполняться разными процессорами и/или распространяться по средам передачи данных.Network load balancing implementations can be described in the general context of instructions executed by a processor. In general, instructions executed by a processor include procedures, programs, protocols, objects, interfaces, components, data structures, and the like that perform specific tasks and / or implement certain abstract data types. Network load balancing, described here in some implementations, can also be practiced in distributed processing environments where tasks are performed by remotely-connected processing devices connected via a line and / or communication network. Especially in a distributed computing environment, instructions executed by a processor can be located on separate storage media, executed by different processors, and / or distributed across data transmission media.

Операционная среда 4000 включает в себя вычислительное устройство общего назначения в виде компьютера 4002, который может содержать любое (например, электронное) устройство с возможностями вычисления/обработки. Компоненты компьютера 4002 могут включать в себя, но не исключительно, один или несколько процессоров 4004, системную память 4006 и системную шину 4008, которая подключает различные компоненты системы, в том числе процессор 4004, к системной памяти 4006.Operating environment 4000 includes a general-purpose computing device in the form of a computer 4002, which may include any (e.g., electronic) device with computing / processing capabilities. Components of computer 4002 may include, but are not limited to, one or more processors 4004, system memory 4006, and system bus 4008 that connects various system components, including processor 4004, to system memory 4006.

Процессоры 4004 не ограничиваются материалами, из которых они сформированы, или применяемыми в них механизмами обработки. Например, процессоры 4004 могут состоять из полупроводников и/или транзисторов (например, электронные интегральные схемы (ИС)). В таком контексте команды, выполняемые процессором, могут быть электронно-выполняемыми командами. Альтернативно, механизмы процессоров 4004, а следовательно и компьютера 4002, могут включать в себя, но без ограничения, квантовое вычисление, оптическое вычисление, механическое вычисление (например, с использованием нанотехнологии) и т.д.Processors 4004 are not limited to the materials from which they are formed, or the processing mechanisms used therein. For example, processors 4004 may consist of semiconductors and / or transistors (e.g., electronic integrated circuits (ICs)). In this context, instructions executed by a processor may be electronically executed instructions. Alternatively, the mechanisms of processors 4004, and hence of computer 4002, may include, but are not limited to, quantum computing, optical computing, mechanical computing (e.g., using nanotechnology), etc.

Системная шина 4008 представляет один или несколько из многочисленных типов шинных структур, включая шину памяти или контроллер памяти, двухточечное соединение, коммутирующую ткань, периферийную шину, ускоренный графический порт и шину процессора или локальную шину, использующую разнообразные шинные архитектуры. Например, такие архитектуры могут включать в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенного стандарта ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину подключений периферийных компонентов (PCI), также именуемую шиной расширения, некоторые их комбинации и т.д.The system bus 4008 represents one or more of many types of bus structures, including a memory bus or memory controller, point-to-point connection, switching fabric, peripheral bus, accelerated graphics port, and processor bus or local bus using a variety of bus architectures. For example, such architectures may include an industry standard architecture bus (ISA), microchannel architecture bus (MCA), an extended ISA bus (EISA), a local VESA bus, and peripheral component connection bus (PCI) , also called expansion bus, some combinations thereof, etc.

Компьютер 4002 обычно содержит разнообразные среды, доступные процессору. Такие среды могут представлять собой любые имеющиеся среды, к которым компьютер 4002 или другое (например, электронное) устройство может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители, носители данных и среды передачи данных.Computer 4002 typically contains a variety of environments available to the processor. Such media can be any available media that can be accessed by a computer 4002 or other (e.g., electronic) device, and includes both volatile and non-volatile media, removable and non-removable media, storage media, and data transmission media.

Системная память 4006 содержит носители, доступные процессору, в виде энергозависимой памяти, например оперативной памяти (ОЗУ) 4040, и/или энергонезависимой памяти, например постоянной памяти (ПЗУ) 4012. Базовая система 4014 ввода/вывода (BIOS), содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 4002, например, при запуске, хранится в ПЗУ 4012. ОЗУ 4010 обычно содержит данные и/или программные модули/команды, которые непосредственно доступны процессору 4004 и/или в данный момент обрабатываются им.System memory 4006 contains media accessible to the processor in the form of volatile memory, such as random access memory (RAM) 4040, and / or non-volatile memory, such as read only memory (ROM) 4012. Basic input / output system (BIOS) 4014, containing basic procedures, which help transfer information between elements of computer 4002, for example, at startup, is stored in ROM 4012. RAM 4010 usually contains data and / or program modules / instructions that are directly accessible to processor 4004 and / or are currently being processed by it.

Компьютер 4002 может также включать в себя другие сменные/стационарные и/или энергозависимые/энергонезависимые носители данных. В порядке примера, на фиг.40 показаны жесткий диск или массив дисковых приводов 4016 для считывания с (обычно) стационарного энергонезависимого магнитного носителя (отдельно не показан) и записи на него, привод 4018 магнитного диска для считывания с (обычно) сменного энергонезависимого магнитного диска 4020 (например, «флоппи-диска») и записи на него и привод 4022 оптического диска для считывания с (обычно) сменного энергонезависимого оптического диска 4024, например CD, DVD, или другого оптического носителя и записи на него. Жесткий диск 4016, привод 4018 магнитного диска и привод 4022 оптического диска подключен к системной шине 4008 посредством одного или нескольких интерфейсов 4026 носителей данных. Альтернативно, жесткий диск 4016, привод 4018 магнитного диска и привод 4022 оптического диска могут быть подключены к системной шине 4008 посредством одного или нескольких других отдельных или комбинированных интерфейсов (не показаны).Computer 4002 may also include other removable / fixed and / or volatile / nonvolatile storage media. As an example, FIG. 40 shows a hard disk or an array of disk drives 4016 for reading from (usually) a stationary non-volatile magnetic medium (not shown separately) and writing to it, a magnetic disk drive 4018 for reading from a (usually) removable non-volatile magnetic disk 4020 (eg, a “floppy disk”) and writing to it and an optical disk drive 4022 for reading from and (usually) a removable non-volatile optical disk 4024, such as a CD, DVD, or other optical medium and writing to it. A hard disk 4016, a magnetic disk drive 4018, and an optical disk drive 4022 are connected to the system bus 4008 via one or more storage media interfaces 4026. Alternatively, the hard disk 4016, the magnetic disk drive 4018, and the optical disk drive 4022 may be connected to the system bus 4008 via one or more other separate or combined interfaces (not shown).

Приводы и соответствующие носители, доступные процессору, обеспечивают энергонезависимое хранение команд, выполняемых процессором, например, структур данных, программных модулей и других данных для компьютера 4002. Хотя в проиллюстрированном компьютере 4002 показаны жесткий диск 4016, сменный магнитный диск 4020 и сменный оптический диск 4024, очевидно, что для хранения команд, доступных устройству, можно также использовать другие типы носителей, доступных процессору, например магнитные кассеты или другие магнитные устройства хранения данных, флэш-память, компакт-диски (CD), цифровые универсальные диски (DVD) или другие оптические носители данных, ОЗУ, ПЗУ, электрически стираемые программируемые постоянные запоминающие устройства (ЭСППЗУ) и т.п. Такие носители также могут включать в себя так называемые специализированные или «зашитые» ИС. Другими словами, для реализации носителей данных иллюстративной операционной среды 4000 можно использовать любые носители, доступные процессору.The drives and associated media available to the processor provide non-volatile storage of instructions executed by the processor, for example, data structures, program modules and other data for computer 4002. Although the illustrated computer 4002 shows a hard disk 4016, a removable magnetic disk 4020 and a removable optical disk 4024, it is obvious that for storing commands available to the device, you can also use other types of media available to the processor, for example magnetic cassettes or other magnetic storage devices, flash memory, compact discs (CDs), digital versatile disks (DVDs) or other optical storage media, RAM, ROM, electrically erasable programmable read-only memory devices (EEPROM), etc. Such media may also include so-called specialized or “wired” IPs. In other words, any media available to the processor can be used to implement the storage media of the illustrative operating environment 4000.

На жестком диске 4016, магнитном диске 4020, оптическом диске 4024, ПЗУ 4012 и/или ОЗУ 4010 может храниться любое количество программных модулей (или других блоков или наборов команд/кодов), включая, например, операционную систему 4028, одну или несколько прикладных программ 4030, другие программные модули 4032 и программные данные 4034.On the hard disk 4016, magnetic disk 4020, optical disk 4024, ROM 4012 and / or RAM 4010 can be stored any number of program modules (or other blocks or sets of commands / codes), including, for example, operating system 4028, one or more application programs 4030, other software modules 4032 and software data 4034.

Пользователь может вводить команды и/или информацию в компьютер 4002 через устройства ввода, например клавиатуру 4036 и указательное устройство 4038 (например, «мышь»). Другие устройства 4040 ввода (конкретно не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, последовательный порт, сканер и/или др. Эти и другие устройства ввода подключены к процессору 4004 через интерфейсы 4042 ввода/вывода, которые подключены к системной шине 4008. Однако устройства ввода и/или устройства вывода могут, альтернативно, быть подключены посредством другого интерфейса и шинных структур, например, параллельного порта, игрового порта, универсальной последовательной шины (USB), инфракрасного порта, интерфейса IEEE 1394 ("Firewire"), беспроводного интерфейса IEEE 802.11, беспроводного интерфейса Bluetooth® и т.п.A user may enter commands and / or information into a computer 4002 through input devices, such as a keyboard 4036 and pointing device 4038 (such as a mouse). Other input devices 4040 (not specifically shown) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and / or other. These and other input devices are connected to the processor 4004 via input / output interfaces 4042 that are connected to the system bus 4008. However, input devices and / or output devices can alternatively be connected via another interface and bus structures, for example, a parallel port, a game port, a universal serial bus (USB), an infrared port , IEEE 1394 ("Firewire"), IEEE 802.11 wireless, Bluetooth® wireless, etc.

Монитор/экран 4044 визуального наблюдения или устройство отображения другого типа может также быть подключено к системной шине 4008 через интерфейс, например видеоадаптер 4046. Видеоадаптер 4046 (или другой компонент) может представлять собой или включать в себя графическую карту для обработки графики, требующей больших вычислительных ресурсов, и для выполнения требований, предъявляемых дисплеем. Обычно графическая карта содержит графический процессор (ГП), видеопамять (ВОЗУ) и т.д. для облегчения быстрого отображения графики и выполнения графических операций. Помимо монитора 4044, другие периферийные устройства вывода могут включать в себя такие компоненты, как громкоговорители (не показаны) и принтер 4048, которые могут быть подключены к компьютеру 4002 через интерфейсы 4042 ввода/вывода.A visual monitor / screen 4044 or another type of display device may also be connected to the system bus 4008 through an interface, such as a video adapter 4046. Video adapter 4046 (or another component) may or may include a graphics card for processing graphics that require large computational resources , and to fulfill the requirements of the display. Typically, a graphics card contains a graphics processor (GPU), video memory (WHO), etc. to facilitate quick display of graphics and graphic operations. In addition to the 4044 monitor, other peripheral output devices may include components such as speakers (not shown) and a printer 4048, which can be connected to the computer 4002 via input / output interfaces 4042.

Компьютер 4002 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например удаленным вычислительным устройством 4050. Например, удаленное вычислительное устройство 4050 может представлять собой персональный компьютер, портативный компьютер (например, лэптоп, планшетный компьютер, КПК, мобильную станцию и др.), ручной или карманный компьютер, часы, игровое устройство, сервер, маршрутизатор, сетевой компьютер, равноправное устройство, другой сетевой узел или устройство другого типа из вышеперечисленных и т.п. Однако удаленное вычислительное устройство 4050 показано в виде портативного компьютера, который может содержать многие или все элементы и особенности, описанные здесь применительно к компьютеру 4002.Computer 4002 may operate in a network environment using logical connections to one or more remote computers, such as a remote computing device 4050. For example, the remote computing device 4050 may be a personal computer, a laptop computer (eg, laptop, tablet computer, PDA, mobile station etc.), a handheld or handheld computer, a clock, a gaming device, a server, a router, a network computer, a peer device, another network node or other device about the type of the above, etc. However, the remote computing device 4050 is shown as a portable computer, which may contain many or all of the elements and features described herein with reference to computer 4002.

Логические соединения между компьютером 4002 и удаленным компьютером 4050 представлены в виде локальной сети (ЛС) 4052 и общей глобальной сети (ГС) 4054. Такие сетевые среды обычно используются в офисных, производственных компьютерных сетях, интрасетях, в Интернете, стационарных и мобильных телефонных сетях, специальных и инфраструктурных беспроводных сетях, других беспроводных сетях, игровых сетях, в некоторых их комбинациях и т.д. Такие сети и коммуникационные соединения являются примерами сред передачи данных.The logical connections between the computer 4002 and the remote computer 4050 are presented in the form of a local area network (LAN) 4052 and a common global network (HS) 4054. Such network environments are usually used in office, industrial computer networks, intranets, the Internet, landline and mobile telephone networks, special and infrastructural wireless networks, other wireless networks, game networks, in some of their combinations, etc. Such networks and communications are examples of communication media.

При реализации в сетевой среде ЛС компьютер 4002 подключен к ЛС 4052 через сетевой интерфейс или адаптер 4056. При реализации в сетевой среде ГС компьютер 4002 обычно содержит модем 4058 или другие средства установления соединений по ГС 4054. Модем 4058, который может быть внутренним или внешним по отношению к компьютеру 4002, может быть подключен к системной шине 4008 через интерфейсы 4042 ввода/вывода или любые другие соответствующие механизмы. Очевидно, что показанные сетевые соединения являются иллюстративными и что для установления линии(й) связи между компьютерами 4002 и 4050 можно использовать другие средства.When implemented in a LAN network environment, computer 4002 is connected to the LAN 4052 via a network interface or adapter 4056. When implemented in a LAN network environment, computer 4002 typically contains a 4058 modem or other means of establishing connections to the 4054 GS. 4058 modem, which can be internal or external relative to the computer 4002, can be connected to the system bus 4008 via input / output interfaces 4042 or any other appropriate mechanisms. Obviously, the network connections shown are illustrative and that other means can be used to establish communication link (s) between computers 4002 and 4050.

Кроме того, можно применять другое оборудование, специально разработанное для серверов. Например, для выгрузки вычислений SSL можно использовать карты ускорения SSL. Кроме того, особенно в операционной среде выравнивания сетевой нагрузки, можно установить и использовать на серверных устройствах оборудование выгрузки TCP и/или классификаторы пакетов на сетевых интерфейсах или адаптерах 4056 (например, на картах сетевого интерфейса).In addition, you can use other equipment specifically designed for servers. For example, you can use SSL acceleration cards to upload SSL calculations. In addition, especially in the network load balancing operating environment, you can install and use TCP upload equipment and / or packet classifiers on server interfaces or 4056 adapters (for example, on network interface cards) on server devices.

В сетевой среде, проиллюстрированной посредством операционной среды 4000, программные модули или другие команды, описанные применительно к компьютеру 4002, или их часть могут полностью или частично храниться на удаленном запоминающем устройстве. Например, удаленные прикладные программы 4060 размещаются в компоненте памяти удаленного компьютера 4050, но могут использоваться или могут быть иным образом доступны через компьютер 4002. Также, в целях иллюстрации, прикладные программы 4030 и другие команды, выполняемые процессором, например операционная система 4028, показаны здесь в качестве дискретных блоков, хотя понятно, что такие программы, компоненты и другие команды размещаются в разные моменты времени в разных компонентах хранения компьютера 4002 (и/или удаленного компьютера 4050) и выполняются процессором(ами) 4004 компьютера 4002 (и/или удаленного компьютера 4050).In a network environment illustrated by operating environment 4000, program modules or other instructions described with reference to computer 4002, or a portion thereof, may be fully or partially stored on a remote storage device. For example, remote applications 4060 are located in the memory component of the remote computer 4050, but may be used or may otherwise be accessible through the computer 4002. Also, for purposes of illustration, applications 4030 and other instructions executed by a processor, such as operating system 4028, are shown here. as discrete blocks, although it is clear that such programs, components and other commands are placed at different points in time in different storage components of computer 4002 (and / or remote computer 4050) and are processor (s) 4004, the computer 4002 (and / or remote computer 4050).

Хотя системы, носители, устройства, способы, процедуры, аппараты, методики, схемы, подходы, процедуры, конфигурации и другие реализации были описаны на языке, специфическом для структурных, логических, алгоритмических и функциональных особенностей и/или диаграмм, следует понимать, что изобретение, раскрытое в прилагаемой формуле изобретения, не обязано ограничиваться конкретными описанными выше особенностями или диаграммами. Напротив, конкретные особенности и диаграммы раскрыты как иллюстративные формы реализации заявленного изобретения.Although systems, media, devices, methods, procedures, apparatuses, methods, circuits, approaches, procedures, configurations and other implementations have been described in a language specific to structural, logical, algorithmic and functional features and / or diagrams, it should be understood that the invention disclosed in the attached claims is not required to be limited to the particular features or diagrams described above. On the contrary, specific features and diagrams are disclosed as illustrative forms of implementing the claimed invention.

Claims (40)

1. Способ выравнивания сетевой нагрузки, содержащий этапы, на которых:
принимают в модуле (106) выравнивания нагрузки соединение с клиентом (102(1), (102(2)…(102(m)) путем отправки подтверждения клиенту в ответ на прием от клиента запроса на установление соединения;
агрегируют (3418) в модуле выравнивания нагрузки состояние соединения, созданное для соединения с клиентом в сетевом стеке (3404) в модуле выравнивания нагрузки;
отправляют из модуля выравнивания нагрузки в хост (108(1), (108(2)…(108(n)) состояние соединения, относящееся к соединению с клиентом;
принимают из модуля выравнивания нагрузки в хосте состояние соединения, относящееся к соединению с клиентом;
вставляют (3502) состояние соединения, относящееся к соединению с клиентом, в сетевой стек (3404) хоста; и
продолжают в хосте соединение с клиентом с использованием состояния соединения, вставленного в сетевой стек хоста.
1. A method of balancing network load, comprising stages in which:
in the load balancing module (106), connect to the client (102 (1), (102 (2) ... (102 (m)) by sending a confirmation to the client in response to receiving a connection request from the client;
aggregate (3418) in the load balancing module the connection state created for connecting to the client in the network stack (3404) in the load balancing module;
sending from the load balancing module to the host (108 (1), (108 (2) ... (108 (n)) the connection status related to the connection with the client;
receiving from the host load balancing module the connection state related to the client connection;
insert (3502) the connection state related to the connection with the client on the network stack (3404) of the host; and
continue at the host to connect to the client using the connection state inserted into the host network stack.
2. Способ по п.1, в котором этап принятия соединения содержит этап, на котором:
отправляют пакет подтверждения клиенту в ответ на пакет запроса соединения.
2. The method according to claim 1, in which the step of accepting the connection comprises the step of:
send a confirmation packet to the client in response to the connection request packet.
3. Способ по п.1, дополнительно содержащий этап, на котором:
принимают данные относительно соединения в модуле (106) выравнивания нагрузки;
причем этап агрегирования состояния соединения содержит этап, на котором:
агрегируют состояние соединения из состояния протокола сетевого стека (3404) и упомянутых данных.
3. The method according to claim 1, additionally containing a stage in which:
receive data regarding the connection in the load balancing module (106);
moreover, the stage of aggregation of the state of the connection contains a stage in which:
aggregate the connection state from the protocol state of the network stack (3404) and said data.
4. Способ по п.1, в котором этап агрегирования состояния соединения содержит этап, на котором:
компилируют состояние протокола из сетевого стека (3404).
4. The method according to claim 1, in which the step of aggregating the state of the connection comprises the step of:
compile the state of the protocol from the network stack (3404).
5. Способ по п.4, в котором этап компилирования содержит этап, на котором:
компилируют состояние протокола из сетевого стека (3404), начиная с наивысшего уровня сетевого стека.
5. The method according to claim 4, in which the compilation step comprises the step of:
compile the state of the protocol from the network stack (3404), starting with the highest level of the network stack.
6. Способ по п.4, в котором этап компилирования содержит этап, на котором:
компилируют состояние протокола из сетевого стека (3404) на части стека протокола управления передачей (TCP) и части стека Интернет-протокола (IP).
6. The method according to claim 4, in which the compilation step comprises the step of:
compile the state of the protocol from the network stack (3404) into portions of the Transmission Control Protocol (TCP) stack and portions of the Internet Protocol (IP) stack.
7. Способ по п.1, в котором этап передачи содержит этапы, на которых:
пакетируют состояние соединения с идентификатором потока, который соответствует соединению, для создания двоичного блоба (3422); и
отправляют двоичный блоб от клиента (102(1), (102(2)…(102(m)) в хост (108(1), (108(2)…(108(n)).
7. The method according to claim 1, in which the transmission step comprises the steps of:
packetizing a connection state with a stream identifier that corresponds to the connection to create a binary blob (3422); and
send a binary blob from the client (102 (1), (102 (2) ... (102 (m)) to the host (108 (1), (108 (2) ... (108 (n)).
8. Способ по п.1, в котором этап отправки содержит этапы, на которых:
пакетируют состояние соединения с идентификатором (3814) потока, который соответствует соединению, для создания двоичного блоба (3422); и
отправляют двоичный блоб от клиента (102(1), (102(2)…(102(m)) в хост (108(1), (108(2)…(108(n)) надежным способом так, что хост может принять двоичный блоб в первозданном виде, даже если один или несколько пакетов, составляющих двоичный блоб, потеряны или повреждены.
8. The method according to claim 1, in which the sending step comprises the steps of:
packetizing the connection state with the identifier (3814) of the stream that corresponds to the connection to create a binary blob (3422); and
send the binary blob from the client (102 (1), (102 (2) ... (102 (m)) to the host (108 (1), (108 (2) ... (108 (n)) in a reliable way so that the host can accept the binary blob in its original form, even if one or more of the packages that make up the binary blob are lost or damaged.
9. Способ по п.1, дополнительно содержащий этапы, на которых:
выбирают идентификатор (3814) потока для соединения в соответствии со счетчиком соединений, и
отправляют идентификатор потока для идентификации пакетов, соответствующих соединению, в хост (108(1), (108(2)…(108(n)).
9. The method according to claim 1, additionally containing stages in which:
selecting a flow identifier (3814) for the connection in accordance with the connection counter, and
send a stream identifier to identify packets corresponding to the connection to the host (108 (1), (108 (2) ... (108 (n)).
10. Способ по п.1, в котором этап отправки дополнительно содержит этап, на котором:
отправляют состояние соединения в хост (108(1), (108(2)…(108(n));
причем способ дополнительно содержит этап, на котором:
пересылают последующие пакеты для соединения в хост с использованием идентификатора потока (3814) для инкапсуляции последующих пакетов.
10. The method according to claim 1, in which the sending step further comprises a step in which:
send the connection state to the host (108 (1), (108 (2) ... (108 (n));
moreover, the method further comprises a step on which:
forward subsequent packets for connection to the host using a stream identifier (3814) to encapsulate subsequent packets.
11. Способ по п.1, в котором этап продолжения дополнительно содержит этап, на котором:
продолжают соединение путем указания полученных пакетов приложению в соответствии со вставленным состоянием соединения.
11. The method according to claim 1, in which the continuation step further comprises a step in which:
continue the connection by indicating the received packets to the application in accordance with the inserted connection state.
12. Способ по п.1, в котором:
этап приема содержит этап, на котором:
принимают состояние соединения, причем состояние соединения имеет состояние протокола и данные для соединения; и
этап вставки содержит этап, на котором:
вставляют состояние протокола в часть стека протоколов сетевого стека (3404).
12. The method according to claim 1, in which:
the receiving step comprises a step in which:
receiving a connection state, the connection state having a protocol state and data for the connection; and
the insertion step comprises the step of:
insert the protocol state into the protocol stack part of the network stack (3404).
13. Способ по п.12, в котором этап вставки состояния соединения дополнительно содержит этап, на котором:
указывают данные для соединения через сетевой стек (3404) к приложению.
13. The method of claim 12, wherein the step of inserting a connection state further comprises the step of:
indicate data for connection through the network stack (3404) to the application.
14. Способ по п.1, в котором этап вставки содержит этап, на котором:
внедряют состояние протокола из состояния соединения в часть стека протоколов сетевого стека (3404).
14. The method according to claim 1, wherein the insertion step comprises the step of:
inject the protocol state from the connection state into a part of the protocol stack of the network stack (3404).
15. Способ по п.14, в котором этап внедрения содержит этап, на котором:
внедряют состояние протокола в сетевой стек, начиная с наивысшего уровня сетевого стека (3404).
15. The method according to 14, in which the implementation phase comprises the step of:
inject the state of the protocol into the network stack, starting with the highest level of the network stack (3404).
16. Способ по п.14, в котором этап внедрения содержит этап, на котором:
внедряют состояние протокола в сетевой стек (3404) на части стека протокола управления передачей (TCP) и части стека Интернет-протокола (IP).
16. The method according to 14, in which the implementation phase comprises the step of:
inject the state of the protocol into the network stack (3404) on the part of the Transmission Control Protocol (TCP) stack and part of the Internet Protocol (IP) stack.
17. Способ по п.8, в котором этап приема содержит этапы, на которых:
принимают двоичный блоб (3422) из модуля (106) выравнивания нагрузки в хосте (108(1), (108(2)…(108(n)); и
депакетируют состояние соединения и идентификатор (3814) потока на уровне сетевого стека (3404), который ниже части стека протоколов сетевого стека.
17. The method according to claim 8, in which the receiving step comprises the steps of:
receiving a binary blob (3422) from the load balancing module (106) in the host (108 (1), (108 (2) ... (108 (n)); and
de-packetize the connection state and stream identifier (3814) at the network stack level (3404), which is below the portion of the protocol stack of the network stack.
18. Способ по п.1, причем способ содержит этапы, на которых:
принимают отображение инкапсуляции в хосте; и
сохраняют принятое отображение инкапсуляции в таблице (3806, 3810) отображения инкапсуляции, доступ к которой возможен по идентификатору (3814) потока в хосте.
18. The method according to claim 1, wherein the method comprises the steps of:
accept host encapsulation mapping; and
save the received encapsulation mapping in the encapsulation mapping table (3806, 3810), access to which is possible by the stream identifier (3814) in the host.
19. Способ по п.1, причем способ дополнительно содержит этапы, на которых:
принимают от модуля выравнивания нагрузки инкапсулированные пакеты, имеющие идентификатор (3814) потока; и
декапсулируют инкапсулированные пакеты с использованием элемента (3806(1), 3810(1)) отображения инкапсуляции, который привязывает идентификатор (3814) потока к паре источник/пункт назначения.
19. The method according to claim 1, wherein the method further comprises the steps of:
receiving encapsulated packets having a flow identifier (3814) from the load balancing module; and
encapsulate packets are decapsulated using the encapsulation display element (3806 (1), 3810 (1)), which maps the stream identifier (3814) to the source / destination pair.
20. Доступный процессору носитель информации, содержащий команды, которые при выполнении компьютером побуждают компьютер выполнять способ по любому из предшествующих пунктов.20. A storage medium accessible to the processor, comprising instructions that, when executed by a computer, cause the computer to execute the method according to any one of the preceding paragraphs. 21. Модуль (106) выравнивания сетевой нагрузки, содержащий:
блок (310) переноса соединений, выполненный с возможностью переноса соединений от упомянутого модуля, причем блок переноса соединений способен обеспечивать компиляцию состояния протокола для соединения по сетевому стеку (3404);
блок переноса соединений выполнен с возможностью агрегировать компилированное состояние протокола с данными для соединения в агрегированное состояние соединения для соединения;
блок переноса соединений дополнительно выполнен с возможностью инициировать отправку агрегированного состояния соединения в хост (108(1), (108(2)…(108(n)); и
классификатор (304), способный принимать соединение, причем классификатор выполнен с возможностью выдавать команду переноса соединения на блок (310) переноса соединений.
21. A network load balancing module (106), comprising:
a connection transfer unit (310) configured to transfer connections from said module, the connection transfer unit being capable of compiling a protocol state for connection over a network stack (3404);
a connection transfer unit is configured to aggregate a compiled protocol state with data for a connection into an aggregated connection state for a connection;
the connection transfer unit is further configured to initiate sending the aggregated state of the connection to the host (108 (1), (108 (2) ... (108 (n)); and
a classifier (304) capable of receiving a connection, the classifier being configured to issue a connection transfer command to the connection transfer unit (310).
22. Модуль (106) по п.21, в котором блок (310) переноса соединений осуществлен по меньшей мере частично в виде программного обеспечения.22. Module (106) according to claim 21, wherein the connection transfer unit (310) is implemented at least partially in the form of software. 23. Модуль (106) по п.21, в котором данные, которые агрегируют с компилированным состоянием протокола в агрегированное состояние соединения, содержат данные, квитированные классификатором (304).23. Module (106) according to claim 21, wherein the data that aggregates with the compiled protocol state to the aggregated state of the connection contains data acknowledged by the classifier (304). 24. Модуль (106) по п.21, в котором блок (310) переноса соединений содержит:
«прокладку» (3412) блока переноса, которая размещена выше стека (3404) протоколов в сетевом стеке модуля (106); и
промежуточный драйвер (3414) блока переноса, который размещен ниже стека протоколов в сетевом стеке (3404) модуля (106).
24. The module (106) according to item 21, in which the block (310) transfer connections contains:
“Laying” (3412) of the transfer unit, which is located above the protocol stack (3404) in the network stack of the module (106); and
an intermediate driver (3414) of the transfer unit, which is located below the protocol stack in the network stack (3404) of the module (106).
25. Модуль (106) по п.24, в котором:
«прокладка» (3412) блока переноса размещена между стеком (3404) протоколов и уровнем (3402) сокетов сетевого стека модуля (106); и
промежуточный драйвер (3414) блока переноса размещен между стеком (3404) протоколов и, по меньшей мере, одним минипортом (3408) сетевого стека (3404) модуля (106).
25. Module (106) according to claim 24, wherein:
The “laying” (3412) of the transfer unit is placed between the protocol stack (3404) and the socket level (3402) of the network stack of the module (106); and
an intermediate driver (3414) of the transfer unit is placed between the protocol stack (3404) and at least one miniport (3408) of the network stack (3404) of the module (106).
26. Модуль (106) по п.25, в котором промежуточный драйвер (3414) блока переноса размещен на уровне протокольно-аппаратного интерфейса сетевого стека (3404) модуля (106).26. The module (106) according to claim 25, wherein the intermediate driver (3414) of the transfer unit is located at the protocol-hardware interface of the network stack (3404) of the module (106). 27. Модуль (106) по п.24, в котором:
«прокладка» (3412) блока переноса выполнена с возможностью принимать команду переноса соединения и распространять команду переноса соединения на стек (3404) протоколов, и
промежуточный драйвер (3414) блока переноса приспособлен отводить копию данных для соединения для последующего агрегирования с компилированным состоянием протокола.
27. Module (106) according to claim 24, wherein:
The “laying” (3412) of the transfer unit is configured to receive the transfer command and distribute the transfer command to the protocol stack (3404), and
the intermediate driver (3414) of the transfer unit is adapted to retrieve a copy of the data for connection for subsequent aggregation with the compiled protocol state.
28. Модуль (106) по п.24, в котором промежуточный драйвер (3414) блока переноса выполнен с возможностью пакетировать агрегированное состояние соединения и идентификатор (3814) потока для соединения в большой двоичный объект (двоичный блоб) (3422), представляющий состояние соединения.28. The module (106) according to paragraph 24, in which the intermediate driver (3414) of the transfer unit is configured to packetize the aggregated state of the connection and the identifier (3814) of the stream for connection to a large binary object (binary blob) (3422), representing the state of the connection . 29. Модуль (106) по п.21, в котором соединение содержит соединение по протоколу управления передачей/Интернет-протоколу (TCP/IP), и компилированное состояние протокола включает в себя информацию, относящуюся к соединению TCP/IP.29. Module (106) according to claim 21, wherein the connection comprises a Transmission Control Protocol / Internet Protocol (TCP / IP) connection, and the compiled protocol state includes information related to the TCP / IP connection. 30. Модуль (106) по п.21, причем модуль дополнительно содержит:
стек протоколов, причем стек протоколов выполнен с возможностью компилировать состояние протокола для соединения в компилированное состояние протокола в соответствии с командой переноса соединения.
30. Module (106) according to claim 21, wherein the module further comprises:
a protocol stack, the protocol stack being configured to compile a protocol state for a connection into a compiled protocol state in accordance with a connection transfer command.
31. Хост (108(1)), выполненный с возможностью устанавливать и продолжать соединение с клиентом, используя состояние соединения, вставленное в сетевой стек хоста, причем хост содержит:
блок переноса соединений, выполненный с возможностью переноса соединений на хост;
причем блок переноса соединений выполнен с возможностью перехватывать состояние соединения для соединения, отправленное из модуля (106) выравнивания нагрузки, причем состояние соединения включает в себя состояние протокола и данные;
блок переноса соединений дополнительно выполнен с возможностью вставлять состояние соединения в сетевой стек упомянутого модуля;
блок переноса соединений способен обеспечивать внедрение состояния протокола для соединения по стеку протоколов сетевого стека (3404) и продолжать соединение с использованием вставленного состояния соединения.
31. A host (108 (1)), configured to establish and continue a connection with a client using a connection state inserted in a host network stack, the host comprising:
a connection transfer unit configured to transfer connections to a host;
moreover, the connection transfer unit is configured to intercept the connection state for the connection sent from the load balancing module (106), the connection state including the protocol state and data;
the connection transfer unit is further configured to insert a connection state into the network stack of said module;
the connection transfer unit is capable of implementing the state of the protocol for connecting over the protocol stack of the network stack (3404) and continuing the connection using the inserted connection state.
32. Хост (108(1)) по п.31, в котором блок (310) переноса соединений составляет по меньшей мере часть инфраструктуры (106) выравнивания нагрузки, размещенной и выполняющейся на устройстве.32. The host (108 (1)) according to claim 31, wherein the connection transfer unit (310) constitutes at least a portion of the load balancing infrastructure (106) located and running on the device. 33. Хост (108(1)) по п.31, причем хост дополнительно содержит:
приложение, сохраненное на хосте,
причем блок (310) переноса соединений дополнительно выполнен с возможностью переноса соединений на хост, осуществляемого способом, прозрачным для приложения.
33. The host (108 (1)) according to p, and the host further comprises:
hosted application
moreover, the connection transfer unit (310) is further configured to transfer the connections to the host in a manner transparent to the application.
34. Хост (108(1)) по п.31, в котором данные, включенные в состояние соединения, содержат данные, квитированные в модуле (106) выравнивания нагрузки.34. The host (108 (1)) according to claim 31, wherein the data included in the connection state contains data acknowledged in the load balancing module (106). 35. Хост (108(1)) по п.31, в котором блок (310) переноса соединений содержит:
«прокладку» (3412) блока переноса, которая размещена выше стека (3404) протоколов в сетевом стеке хоста (108(1)); и
промежуточный драйвер (3414) блока переноса, который размещен ниже стека (3404) протоколов в сетевом стеке хоста.
35. The host (108 (1)) according to p, in which the block (310) transfer connections contains:
“Laying” (3412) of the transfer unit, which is located above the protocol stack (3404) in the network stack of the host (108 (1)); and
an intermediate driver (3414) of the transfer unit, which is located below the protocol stack (3404) in the host network stack.
36. Хост (108(1)) по п.35, в котором:
«прокладка» (3412) блока переноса размещена между стеком (3404) протоколов и уровнем (3402) сокетов сетевого стека хоста (108(1)); и
промежуточный драйвер (3414) блока переноса размещен между стеком (3404) протоколов и по меньшей мере одним минипортом (3408) сетевого стека хоста (108(1)).
36. The host (108 (1)) according to claim 35, wherein:
“Laying” (3412) of the transfer unit is located between the protocol stack (3404) and the level (3402) of the sockets of the host network stack (108 (1)); and
an intermediate driver (3414) of the transfer unit is located between the protocol stack (3404) and at least one miniport (3408) of the host network stack (108 (1)).
37. Хост (108(1)) по п.35, в котором:
«прокладка» (3412) блока переноса выполнена с возможностью получать извещения от промежуточного драйвера (3414) блока переноса о процедуре загрузки переноса и выполнена с возможностью инициировать процедуру внедрения состояния протокола со стеком протокола; и
промежуточный драйвер (3414) блока переноса выполнен с возможностью обнаруживать поступление состояния соединения для соединения, отводить состояние соединения от нижней части стека (3404) протоколов и извещать «прокладку» (3412) блока переноса о процедуре загрузки переноса.
37. The host (108 (1)) according to claim 35, wherein:
“Laying” (3412) of the transfer unit is configured to receive notifications from the intermediate driver (3414) of the transfer unit about the transfer loading procedure and is configured to initiate a procedure for implementing a protocol state with a protocol stack; and
the intermediate driver (3414) of the transfer unit is configured to detect the arrival of the connection status for the connection, divert the connection status from the bottom of the protocol stack (3404) and notify the “gasket” (3412) of the transfer unit of the transfer loading procedure.
38. Хост (108(1)) по п.35, в котором промежуточный драйвер (3414) блока переноса приспособлен депакетировать принятый большой двоичный объект (двоичный блоб) (3422), представляющий состояние соединения, который содержит состояние соединения для соединения и идентификатор (3814) потока, соответствующий соединению.38. The host (108 (1)) according to clause 35, in which the intermediate driver (3414) of the transfer unit is adapted to de-package the received binary large object (binary blob) (3422), representing the connection state, which contains the connection state for the connection and the identifier ( 3814) the thread corresponding to the connection. 39. Хост (108(1)) по п.31, причем хост дополнительно содержит:
стек (3404) протоколов, причем стек протоколов включает в себя уровень протокола управления передачей (TCP) и уровень Интернет-протокола (IP).
39. The host (108 (1)) according to claim 31, wherein the host further comprises:
a protocol stack (3404), the protocol stack including a Transmission Control Protocol (TCP) layer and an Internet Protocol (IP) layer.
40. Хост (108(1)) по п.31, причем хост дополнительно содержит:
стек (3404) протоколов, причем стек протоколов выполнен с возможностью внедрять состояние протокола для соединения по стеку протоколов в соответствии с началом процедуры внедрения состояния протокола.
40. The host (108 (1)) according to claim 31, wherein the host further comprises:
a protocol stack (3404), the protocol stack being configured to implement a protocol state for connecting on a protocol stack in accordance with the start of a protocol state implementation procedure.
RU2004117219/09A 2003-06-30 2004-06-07 Levelling network load through connection control RU2387002C2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US10/610,506 US7590736B2 (en) 2003-06-30 2003-06-30 Flexible network load balancing
US10/610,506 2003-06-30
US10/610,519 2003-06-30
US10/610,321 2003-06-30
US10/610,519 US7636917B2 (en) 2003-06-30 2003-06-30 Network load balancing with host status information
US10/657,568 2003-09-08
US10/657,568 US7606929B2 (en) 2003-06-30 2003-09-08 Network load balancing with connection manipulation

Publications (2)

Publication Number Publication Date
RU2004117219A RU2004117219A (en) 2006-01-10
RU2387002C2 true RU2387002C2 (en) 2010-04-20

Family

ID=35871392

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004117219/09A RU2387002C2 (en) 2003-06-30 2004-06-07 Levelling network load through connection control

Country Status (1)

Country Link
RU (1) RU2387002C2 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2454711C1 (en) * 2011-04-04 2012-06-27 Общество с ограниченной ответственностью "СДН-видео" Method of distributing load between content delivery network (cdn) servers
RU2480820C1 (en) * 2011-12-08 2013-04-27 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Information processing device
RU2530663C2 (en) * 2012-11-16 2014-10-10 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Method of transmitting data in digital tcp/ip data networks via http
RU2541113C2 (en) * 2010-10-15 2015-02-10 Нек Корпорейшн Switching system and monitoring centralisation management method
RU2541157C2 (en) * 2010-08-03 2015-02-10 ЭйчТи С.Р.Л. Method and device for network traffic manipulation
RU2558624C2 (en) * 2010-09-22 2015-08-10 Нек Корпорейшн Control device, communication system, communication method and record medium containing communication programme recorded to it
RU2613528C2 (en) * 2013-01-28 2017-03-16 ЗетТиИ Корпорейшн Method and device for load sharing
RU2654140C2 (en) * 2014-03-11 2018-05-16 Хуавэй Текнолоджиз Ко., Лтд. Method and device for information transmission
RU2675148C1 (en) * 2017-09-11 2018-12-17 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Method of organizing automatic balancing of multi-threaded connection flows on switching devices using automatic learning thereof

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2541157C2 (en) * 2010-08-03 2015-02-10 ЭйчТи С.Р.Л. Method and device for network traffic manipulation
RU2558624C2 (en) * 2010-09-22 2015-08-10 Нек Корпорейшн Control device, communication system, communication method and record medium containing communication programme recorded to it
RU2541113C2 (en) * 2010-10-15 2015-02-10 Нек Корпорейшн Switching system and monitoring centralisation management method
RU2454711C1 (en) * 2011-04-04 2012-06-27 Общество с ограниченной ответственностью "СДН-видео" Method of distributing load between content delivery network (cdn) servers
RU2480820C1 (en) * 2011-12-08 2013-04-27 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Information processing device
RU2530663C2 (en) * 2012-11-16 2014-10-10 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Method of transmitting data in digital tcp/ip data networks via http
RU2613528C2 (en) * 2013-01-28 2017-03-16 ЗетТиИ Корпорейшн Method and device for load sharing
RU2654140C2 (en) * 2014-03-11 2018-05-16 Хуавэй Текнолоджиз Ко., Лтд. Method and device for information transmission
US10581979B2 (en) 2014-03-11 2020-03-03 Huawei Technologies Co., Ltd. Information transmission method and apparatus
RU2675148C1 (en) * 2017-09-11 2018-12-17 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Method of organizing automatic balancing of multi-threaded connection flows on switching devices using automatic learning thereof

Also Published As

Publication number Publication date
RU2004117219A (en) 2006-01-10

Similar Documents

Publication Publication Date Title
RU2380746C2 (en) Network load balancing using host status information
AU2004202403B2 (en) Network load balancing with connection manipulation
US7567504B2 (en) Network load balancing with traffic routing
US7590736B2 (en) Flexible network load balancing
US7613822B2 (en) Network load balancing with session information
US10985999B2 (en) Methods, devices and systems for coordinating network-based communication in distributed server systems with SDN switching
US9942153B2 (en) Multiple persistant load balancer system
Zhang et al. Efficient TCP connection failover in web server clusters
US11586484B2 (en) Automatically replicate API calls to separate data centers
RU2387002C2 (en) Levelling network load through connection control
Zhu et al. Mechanisms for high volume data transfer in grids
Koskinen IP substitution as a building block for fault tolerance in stateless distributed network services

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130608