RU2387002C2 - Levelling network load through connection control - Google Patents
Levelling network load through connection control Download PDFInfo
- 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
Links
Images
Abstract
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
В соответствии со вторым аспектом настоящего изобретения предусмотрен модуль выравнивания нагрузки согласно пункту 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
Каждый клиент 102 может представлять собой устройство, способное к сетевой связи, например компьютер, мобильную станцию, развлекательное устройство, другую сеть и т.д. Клиенты 102 могут также относиться к лицу и/или объекту, эксплуатирующему клиентское устройство. Иными словами, клиенты 102 могут представлять собой логические клиенты, которые являются пользователями, и/или машины. Сеть 104 может быть сформирована из одной или более сетей, например Интернета, интранета, проводной или беспроводной телефонной сети и т.д. Дополнительные примеры устройств для клиентов 102 и сетевые типы/топологии для сети 104 описаны ниже со ссылкой на фиг.40 в разделе «Иллюстративная операционная среда для компьютера или другого устройства».Each
Отдельные клиенты 102 способны связываться с одним или несколькими хостами 108 и наоборот по сети 104 через инфраструктуру 106 выравнивания нагрузки. Хосты 108 содержат одно или несколько приложений для взаимодействия/связи с клиентами 102, для использования клиентами 102 и т.д. Каждый хост 108 может соответствовать серверу и/или устройству, множественным серверам и/или множественным устройствам, части сервера и/или части устройства, некоторым их комбинациям и т.д. Частичные реализации хостов 108 описаны ниже применительно к различным случаям выравнивания сетевой нагрузки. (Однако поддержка прикладной части для хостов 108 для ясности существа изобретения, по существу, не показана). Также ниже со ссылкой на фиг.40 в разделе, озаглавленном «Операционная среда для компьютера или другого устройства», описаны примеры устройств для хостов 108.
Инфраструктура 106 выравнивания нагрузки достижима или обнаружима через сеть 104 по одному или нескольким виртуальным адресам Интернет-протокола (IP). Передачи с клиентов 102 (или других узлов), направленные по виртуальному IP-адресу инфраструктуры 106 выравнивания нагрузки, принимаются здесь и пересылаются на хост 108. Инфраструктура 106 выравнивания нагрузки состоит из аппаратных и/или программных компонентов (не показанных явно на фиг.1).The
Хотя инфраструктура 106 показана как единый эллипс, инфраструктура для осуществления выравнивания нагрузки может также быть распределена на другие аспекты иллюстративной схемы 100 распределения сетевой нагрузки. Например, программный(е) компонент(ы) инфраструктуры 106 выравнивания нагрузки может/могут размещаться на одном или нескольких хостах 108, согласно описанному ниже. Примеры архитектур инфраструктуры 106 выравнивания нагрузки описаны ниже со ссылкой на фиг.40 в разделе, озаглавленном «Иллюстративная операционная среда для компьютера или другого устройства».Although the
Согласно указанному позицией (1), один или несколько хостов 108 могут предоставлять информацию статуса хоста от хостов 108 инфраструктуре 106 выравнивания нагрузки. Эта информация статуса хоста может зависеть от приложения. Примеры такой информации статуса хоста описаны ниже и включают в себя информацию работоспособности и/или нагрузки, информацию сеанса и т.д. для хостов 108. Конкретная реализация, включающая в себя предоставление информации работоспособности и/или нагрузки от хостов 108 инфраструктуре 106 выравнивания нагрузки, описана ниже в разделе, озаглавленном «Иллюстративное управление работоспособностью и нагрузкой».According to (1), one or
Позицией (2) обозначен запрос, передаваемый от клиента 102(1) по сети 104 на инфраструктуру 106 выравнивания нагрузки по ее виртуальному IP-адресу. Содержимое, формат и т.д. запроса от клиента 102 может зависеть от приложения, которому адресован запрос, и термин «запрос» может неявно включать в себя ответ или ответы хоста(ов) 108, в зависимости от контекста. Виды клиентских запросов включают в себя, но не исключительно:Position (2) denotes a request transmitted from the client 102 (1) through the
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
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
Позиция (3) обозначает, что инфраструктура 106 выравнивания нагрузки пересылает запрос от 102(1) на хост 108(2) (в данном примере). Инфраструктура 106 выравнивания нагрузки может учитывать один или несколько факторов при выборе хоста 108 для пересылки запроса в зависимости от того, какая/какие из описанных здесь реализаций используются. Например, инфраструктура 106 выравнивания нагрузки может учитывать: информацию работоспособности и нагрузки приложения для каждого хоста 108, информацию сеанса, относящуюся к клиенту 102(1), хранящуюся на хосте 108, и т.д.Position (3) indicates that the
На фиг.2 изображена иллюстративная схема 200 выравнивания сетевой нагрузки, где показаны множественные модули 106 выравнивания нагрузки и множественные хосты 108. В частности, в иллюстративной схеме 200 выравнивания сетевой нагрузки инфраструктура 106 выравнивания нагрузки показана в виде множественных модулей 106(1), 106(2), …, 106(u) выравнивания нагрузки. Кроме того, показаны два маршрутизатора и/или коммутатора 202(1) и 202(2).2 illustrates an exemplary network
Маршрутизаторы/коммутаторы 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
Маршрутизаторы/коммутаторы 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
Если же маршрутизаторы/коммутаторы 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
Каждый отдельно показанный модуль 106 выравнивания нагрузки из модулей 106 выравнивания нагрузки может представлять одно физическое устройство, множественные физические устройства или часть единого физического устройства. Например, модуль 106(1) выравнивания нагрузки может соответствовать одному серверу, двум серверам или более. Альтернативно, модуль 106(1) выравнивания нагрузки и модуль 106(2) выравнивания нагрузки могут совместно соответствовать одному серверу. Иллюстративный модуль 106 выравнивания нагрузки описан ниже с точки зрения его функций со ссылкой на фиг.3.Each separately shown
На фиг.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
На фиг.3 показаны иллюстративный модуль 106 выравнивания нагрузки с разделенными функциями и иллюстративный хост 108. Модуль 106 выравнивания нагрузки содержит семь (7) функциональных блоков 302-314. Эти функциональные блоки модуля 106 выравнивания нагрузки могут быть реализованы, по меньшей мере, частично, программными средствами. Хост 108 включает в себя одно или несколько приложений 316. В описываемом варианте осуществления модуль 106 выравнивания нагрузки содержит блок 302 пересылки, классификатор 304, маршрутизатор 306 запросов, блок 308 отслеживания сеансов, блок 310 переноса соединений, блок 312 туннелирования и обработчик 314 работоспособности и нагрузки.FIG. 3 shows an exemplary distributed
Обработчик 314 работоспособности и нагрузки размещен частично на хостах 108 и частично на устройствах модулей 106 выравнивания нагрузки. Обработчик 314 работоспособности и нагрузки отслеживает работоспособность и/или нагрузку (или, более обобщенно, статус) хостов 108, чтобы его информацию работоспособности и/или нагрузки можно было использовать для функций выравнивания нагрузки (например, при принятии решений на выравнивание нагрузки). Иллюстративные реализации обработчика 314 работоспособности и нагрузки описаны ниже, в частности, в разделе, озаглавленном «Иллюстративная обработка работоспособности и нагрузки».A health and
Блок 308 отслеживания сеансов также может размещаться частично на хостах 108 и частично на устройствах модулей 106 выравнивания нагрузки. Блок 308 отслеживания сеансов отслеживает сеансы, установленные клиентами 102, чтобы облегчить функциям выравнивания нагрузки восстановление/продолжение ранее установленных сеансов. Например, некоторые приложения поддерживают на хостах зависящие от приложения данные клиентского сеанса (которые также являются своего рода информацией статуса). Эти приложения обычно ожидают, что клиенты используют один и тот же хост на протяжении любого данного сеанса. Иллюстративные типы сеансов включают в себя: (i) TCP-соединение (которое, строго говоря, является сеансом); (ii) SSL-сеанс; (iii) защищенный IP-сеанс (IPsec); (iv) сеанс на основе cookie HTTP; и т.д.
Хотя блок 308 отслеживания сеансов показан в виде отдельного блока в модуле 106 выравнивания нагрузки, функция отслеживания сеансов блока 308 отслеживания сеансов, в действительности, может быть реализована на глобальном уровне. Иными словами, сродство к сеансу поддерживается по множественным модулям 106 выравнивания нагрузки. Блок 308 отслеживания сеансов включает в себя централизованную базу данных и/или распределенную базу данных информации сеансов для сохранения сродства к сеансу. Иллюстративные реализации блока 308 отслеживания сеансов, с упором на подход распределенной базы данных, описаны ниже, в частности в разделе, озаглавленном «Отслеживание сеансов».Although the
Классификатор 304 использует данные, собираемые и поддерживаемые обработчиком 314 работоспособности и нагрузки и/или блоком 308 отслеживания сеансов, возможно, совместно с другими факторами, для классификации входящих запросов. Другими словами, классификатор 304 выделяет хост 108 назначения для каждого входящего запроса от клиента 102. Блок 302 пересылки пересылает запросы клиента (и/или его пакеты) в соответствии с хостом 108 назначения, выбранным классификатором 304. Блок 302 пересылки и классификатор 304 описаны ниже, в частности в разделах, озаглавленных «Иллюстративный подход к гибкому выравниванию сетевой нагрузки» и «Иллюстративные классификация, пересылка и маршрутизация запросов».
Маршрутизатор 306 запросов, в отличие от пакетно-ориентированных реализаций блока 302 пересылки и классификатора 304, может действовать как посредник для приложения, действующего на хосте 108. Например, маршрутизатор 306 запросов может заканчивать TCP-соединения, анализировать (возможно, частично) каждый логический запрос от клиента 102 и перенаправлять каждый логический запрос на хост 108 назначения. Следовательно, каждый логический запрос от клиента 102 можно направлять на тот или иной хост 108 в зависимости от решений, принятых маршрутизатором 306 запросов. Кроме того, маршрутизатор 306 запросов может осуществлять предварительную обработку на соединении (например, дешифровку SSL), может выбирать поглощение определенных запросов (например, потому что маршрутизатор 306 запросов поддерживает кэш ответов), может по своему усмотрению изменять запросы прежде, чем пересылать их на хосты 108, и т.д. Иллюстративные реализации маршрутизатора 306 запросов также описаны ниже, в частности, в разделах, озаглавленных «Иллюстративный подход к гибкому выравниванию сетевой нагрузки» и «Иллюстративные классификация, пересылка и маршрутизация запросов».
Блок 310 переноса соединений обеспечивает сначала окончание соединения на модуле 106 выравнивания нагрузки, а затем его перенос, чтобы соединение впоследствии заканчивалось на хосте 108. Этот перенос соединений может облегчать выравнивание нагрузки на уровне приложений. Блок 310 переноса соединений способен переносить соединение от модуля 106 выравнивания нагрузки на хост 108 таким образом, чтобы первоначальное окончание на модуле 106 выравнивания нагрузки было прозрачно для запрашивающего клиента 102 и приложениям 316 вновь оканчивающего хоста 108. Блок 312 туннелирования может использовать схему инкапсуляции для туннелирования пакетов, которая не вносит избыточной нагрузки в каждый туннелируемый пакет.The
Функции блока 312 туннелирования можно также использовать в случаях, которые не предусматривают перенос соединения. Кроме того, блок 310 переноса соединения и/или блок 312 туннелирования можно дополнительно использовать в реализациях без выравнивания нагрузки. Иллюстративные реализации блока 310 переноса соединения, а также блока 312 туннелирования описаны ниже, в частности, в разделе, озаглавленном «Иллюстративный перенос соединения с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений».The functions of
Любая данная реализация модуля 106 выравнивания нагрузки может включать в себя одну или несколько из проиллюстрированных функций. Хотя каждая из функций блоков 302-314 показана по отдельности, она в действительности может быть взаимосвязана с, перекрываться с другими функциями и/или входить в их состав. Например, классификатор 304 может использовать информацию работоспособности и/или нагрузки обработчика 314 работоспособности и нагрузки. Кроме того, блок 310 переноса соединения и блока 312 туннелирования работают совместно с блоком 302 пересылки и классификатором 304. Ниже описаны определенные другие иллюстративные перекрытия и взаимодействия.Any given implementation of
В описанной реализации, на хосте 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
Подход к гибкому выравниванию сетевой нагрузки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
В описанной реализации блок 302 пересылки соответствует виртуальному IP-адресу (VIP) (или адресам) и является конечной точкой сети для него (них). Блок 302 пересылки является относительно низкоуровневым компонентом, который принимает упрощенные и/или элементарные политические решения, если принимает, при маршрутизации пакетов на дальнейший или окончательный пункт назначения. Блок 302 пересылки сверяется с таблицей маршрутизации для определения этого пункта назначения. Классификатор 304 заполняет таблицу маршрутизации на основании одного или нескольких факторов (например, информации статуса хоста), которые описаны в других разделах.In the described implementation, the
Клиенты 102 и хосты 108 также соответствуют указанным сетевым адресам. В частности, клиент 102(1) соответствует адресу С1, клиент 102(2) соответствует адресу С2, … клиент 102(m) соответствует адресу Cm. Кроме того, хост 108(1) соответствует адресу Н1, хост 108(2) соответствует адресу Н2, … хост 108(n) соответствует адресу 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
Пути (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
На пути (2) блок 302 пересылки сверяется с таблицей маршрутизации, которая может быть внутренней по отношению к блоку 302 пересылки или иным образом доступной для него, чтобы найти это соединение. Это соединение может быть идентифицировано в таблице маршрутизации упорядоченной четверкой TCP/IP (т.е. IP-адрес источника, TCP-порт источника, IP-адрес назначения, TCP-порт назначения). Поскольку это первый пакет соединения, в таблице маршрутизации нет ни одного элемента. Поэтому блок 302 пересылки применяет действие «маршрут по умолчанию», согласно которому это пакет нужно переслать на классификатор 304.On path (2), the
На пути (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
На пути (4) классификатор 304 отправляет пакет SYN TCP обратно на блок 302 пересылки. Альтернативно, классификатор 304 может пересылать этот начальный пакет SYN TCP на хост 108(1) без использования блока 302 пересылки. Другие доступные опции классификатора 304 описаны ниже.On path (4), the
На пути (5) блок 302 пересылки может осуществлять доступ к элементу маршрута для соединения, представленного пакетам SYN, чтобы переслать пакет на хост 108(1) по адресу Н1. Блок 302 пересылки также пересылает все последующие пакеты от клиента 102(1) для этого соединения непосредственно на хост 108(1). Другими словами, блок 302 пересылки может избежать дальнейшего взаимодействия с классификатором 304 для этого соединения. Для удаления элемента маршрута по завершении соединения можно использовать один или несколько механизмов, описанных ниже.On path (5), forwarding
Что касается пути (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
1. Блок 302 пересылки осуществляет трансляцию сетевых адресов (ТСА) (i), записывая вместо IP-адреса (С1) (клиента 102(1)) и номера порта источника IP-адрес и номер порта, генерированный путем ТСА, блока 302 пересылки и (ii) записывая вместо IP-адреса (VIP) назначения IP-адрес (Н1) хоста (108(1)).1.
2. Блок 302 пересылки осуществляет «полу-ТСА», записывая вместо IP-адреса (VIP) назначения IP-адрес (H1) хоста (108(1)), что позволяет сохранить IP-адрес (С1) и номер порта источника (клиента 102(1)).2.
3. Блок 302 пересылки «туннелирует» пакеты, полученные от клиента 102(1) с блока 302 пересылки на хост 108(1). В частности, в этом примере туннелирование можно осуществлять путем инкапсуляции каждого пакета в новом IP-пакете, который адресован хосту 108(1). Программное обеспечение, знающее о выравнивании сетевой нагрузки на хосте 108(1), реконструирует исходный пакет при получении на блоке 302 пересылки от клиента 102(1). Затем этот исходный пакет указывается на виртуальном интерфейсе на хосте 108(1) (например, VIP-адрес, соответствующий блоку 302 пересылки, привязывается к этому виртуальному интерфейсу на хосте 108(1)). Иллюстративные реализации такого туннелирования описаны ниже со ссылкой на блок 312 туннелирования, особенно для сценариев переноса соединения и, в частности, в разделе, озаглавленном «Иллюстративный перенос соединений с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений».3.
Хотя на фиг. 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
Согласно примеру, показанному на фиг.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
На блоке 502 инфраструктура выравнивания сетевой нагрузки эксплуатируется в первой конфигурации. Например, каждая конфигурация может относиться к одной или нескольким из выделения, пропорции и/или взаимоотношения различных функций выравнивания нагрузки; к ряду и/или типу(ам) различных устройств; к организации и/или схеме различных компонентов; к распределению и/или выделению ресурсов; и т.п. На блоке 504 осуществляется расширение инфраструктуры выравнивания сетевой нагрузки. Например, отдельные функции выравнивания нагрузки могут расширяться и/или согласованно сокращаться на индивидуальной и/или независимой основе. На блоке 506 расширенная инфраструктура выравнивания сетевой нагрузки эксплуатируется во второй конфигурации.At
Как отмечено выше, монолитный выравниватель сетевой нагрузки можно расширить, увеличив все функции выравнивания сетевой нагрузки путем замены прежнего оборудования выравнивания нагрузки более мощным оборудованием выравнивания сетевой нагрузки. Напротив, расширение инфраструктуры выравнивания сетевой нагрузки может позволить индивидуально и/или независимо расширять (под)функции выравнивания сетевой нагрузки. Это также может позволить расширять функции выравнивания сетевой нагрузки совместно или по отдельности между разными количествами устройств. Ниже приведены примеры расширения в отношении устройств, компонентов и ресурсов.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
Показано, что на устройстве 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
В ходе эксплуатации блоки 302 пересылки являются конечными точками для VIP-адреса(ов). Любой классификатор 304 может прокладывать маршрут для соединения с любым хостом 108 в зависимости от информации статуса хоста. Например, классификатор 304(2) может прокладывать маршрут для нового входящего соединения с хостом 108(3). В соответствии с новым элементом маршрута для этого соединения, блок 302(2) пересылки пересылает следующие пакеты на хост 108(3).During operation, forwarding
В одной альтернативной конфигурации инфраструктуры выравнивания сетевой нагрузки в отношении устройств, в которую может быть расширена первая конфигурация, может быть добавлено четвертое устройство 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
Первая конфигурация инфраструктуры выравнивания сетевой нагрузки, ориентированная на устройство, изображенная фиг.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
На фиг.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
Показано, что на устройстве 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
В ходе эксплуатации блоки 302 пересылки опять же являются конечными точками для VIP-адреса(ов). Кроме того, любой классификатор 304 может прокладывать маршрут для соединения с любым хостом 108 в зависимости от информации статуса хоста. Например, классификатор 304(3) может прокладывать маршрут для нового входящего соединения с хостом 108(2). В соответствии с новым элементом маршрута для этого соединения блок 302(3) пересылки пересылает последующие пакеты данных на хост 108(2).During operation, forwarding
Поэтому инфраструктуру выравнивания сетевой нагрузки, реализованную программными средствами, можно расширять, перемещая инфраструктуру выравнивания сетевой нагрузки (или ее часть) с устройств, используемых совместно с хостами 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
На фиг. 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
В частности, первая компонентно-ориентированная конфигурация 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
В описанной реализации каждый функциональный компонент, относящийся к выравниванию сетевой нагрузки, соответствует соответствующему устройству (не показанному явно на фиг. 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
Кроме того, расширение двух или более функциональных компонентов разных типов можно осуществлять в подобных (например, эквивалентных) или неподобных пропорциях друг к другу. Показано, что добавление компонентов 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
На фиг. 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
Показано, что первая конфигурация 900 содержит распределение ресурсов 70%-30%, а вторая конфигурация 950 содержит распределение ресурсов 40%-60%. Такие ресурсы могут включать в себя ресурсы всего устройства (например, количество устройств), ресурсы обработки (например, количество циклов процессора), ресурсы памяти (например, участок кэша, главной памяти и т.д.), ресурсы пропускной способности и/или интерфейса сети (например, биты в секунду и/или физические сетевые адаптеры (СА) и т.п.).It is shown that the
В частности, для первой конфигурации 900 блок 302 пересылки потребляет 70% ресурсов модуля 106 выравнивания нагрузки, а классификатор 304 потребляет 30% этих ресурсов. После повторного выделения в ходе процедуры расширения для создания второй конфигурации 950 блок 302 пересылки потребляет 40% ресурсов модуля 106 выравнивания нагрузки, а классификатор 304 потребляет 60% этих ресурсов.In particular, for the
В проиллюстрированном случае первая конфигурация 900 призвана повышать производительность выравнивания сетевой нагрузки, когда соответствующие хосты (не показанные на фиг. 9А и 9В) обрабатывают меньшее количество более длительных транзакций, поскольку функции классификации используются после первоначальной связи для соединения, а функции пересылки используются потом. Вторая конфигурация 950, напротив, призвана повышать производительность выравнивания сетевой нагрузки, когда соответствующие хосты обрабатывают большее количество более коротких транзакций, поскольку функции классификации используются для большего процента полного количества пакетов, туннелируемых через инфраструктуру выравнивания сетевой нагрузки. В этом случае, если также используются функции маршрутизации запросов, то маршрутизатору(ам) 306 запросов также выделяется процент совокупных вычислительных ресурсов. Распределение ресурсов между тремя функциями можно регулировать в процессе обработки соединений (например, регулировать «на лету») в зависимости от текущего потребления и/или дефицита ресурсов.In the illustrated case, the
Согласно фиг. 2 и 3, каждый модуль 106 выравнивания нагрузки может соответствовать всей полной инфраструктуре 106 выравнивания сетевой нагрузки или ее части. Для каждого данного физически, логически, произвольно и т.д. заданного или оговоренного модуля 106 выравнивания нагрузки его ресурсы можно повторно выделять посредством процедуры расширения. В частности, распределение ресурсов между разными разделенными функциями, относящимися к выравниванию сетевой нагрузки, модуля 106 выравнивания нагрузки можно изменять посредством процедуры расширения. Кроме того, более чем двум разным функциям, а также другим функциям, относящимся к выравниванию сетевой нагрузки, которые конкретно не показаны на фиг. 9А и 9В, можно выделять изменяющиеся проценты ресурсов.According to FIG. 2 and 3, each
Процент совокупных системных ресурсов, выделяемый всем функциям выравнивания нагрузки, также можно изменять посредством процедуры расширения. В качестве примера общей вычислительной мощности процент полной вычислительной мощности, выделяемый для выравнивания нагрузки, можно постепенно увеличивать по мере увеличения объема трафика, в отношении которого нужно выполнять выравнивание нагрузки.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
На фиг.10 показан подход к выравниванию сетевой нагрузки с использованием информации 1006 статуса хоста (ИСХ). Каждый хост 108(1), 108(2), …, 108(n) включает в себя одно или несколько приложений 316(1), 316(2), …, 316(n), соответственно. Эти хосты 108 в целом и эти приложения 316 в частности могут время от времени изменять статус.Figure 10 shows an approach to balancing network
Например, хосты 108 и приложения 316 могут принимать новые соединения или не принимать новые соединения. Кроме того, они могут быстро обрабатывать клиентские запросы или медленно обрабатывать клиентские запросы. Кроме того, они могут иметь много ресурсов в резерве или мало неиспользованных ресурсов. Все или часть таких данных, или другие данные могут содержать информацию 1006 статуса хоста. В целом, информация 1006 статуса хоста обеспечивает указание статуса некоторого аспекта хостов 108 и/или работающих на них приложений 316.For example, hosts 108 and
В описанной реализации каждый хост 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
В частности, каждый распространитель 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
На этапе (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
На фиг.11 показана логическая блок-схема 1100 способа выравнивания сетевой нагрузки с использованием информации статуса хоста. Логическая блок-схема 1100 содержит три блока 1102-1106. Хотя действия логической блок-схемы 1100 могут осуществляться в других средах и посредством различных программных схем, фиг. 1-3 и 10 используются, в частности, для иллюстрации определенных аспектов и примеров способа.11 shows a
На блоке 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,
Таким образом, на фиг.10 инфраструктура 106 выравнивания нагрузки собирает информацию 1006 статуса хоста от хостов 108 (и/или их приложений 316) и входящие запросы на выравнивание нагрузки, адресованные хостам 108 в соответствии с информацией 1006 статуса хоста. Согласно описанному ниже со ссылкой на фиг.12-18, эта информация 1006 статуса хоста может зависеть от приложения. Также, согласно описанному ниже, примеры информации 1006 статуса хоста включают в себя информацию работоспособности и/или нагрузки.Thus, in FIG. 10,
На фиг.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.
Информация работоспособности отражает, способен(но) ли данный(ое) хост и/или приложение обрабатывать клиентские запросы. Информация нагрузки отражает количество, величину и/или уровень клиентских запросов, которые в конкретный момент времени способен(но) обрабатывать данный(ое) хост и/или приложение. Иными словами, нагрузка отражает прямо или обратно доступные количество, величину и/или уровень полной емкости данного хоста и/или приложения. Как отмечено выше, реализации, описанные со ссылкой на фиг.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
Таблицы 1204 работоспособности и нагрузки могут включать в себя элементы, зависящие от приложения. Информация 1206 работоспособности и нагрузки, хранящаяся в таблицах 1204 работоспособности и нагрузки, может быть независимой от инфраструктуры 106 выравнивания нагрузки. Например, администраторы, конструкторы и т.д. могут задавать критерии для информации 1206 работоспособности и нагрузки во время настройки. Дополнительно, элементы, внешние по отношению к устройству, которое является хостом 108 или содержит его, могут способствовать определению информации 1206 работоспособности и нагрузки для приложений 316 на устройстве. Иллюстративная таблица 1204 работоспособности и нагрузки описана ниже со ссылкой на фиг.13А.Health and load tables 1204 may include application-specific elements. Health and
Каждый модуль 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
В ходе эксплуатации, инфраструктуры 1202 работоспособности и нагрузки переносят информацию 1206 работоспособности и нагрузки из таблиц 1204 работоспособности и нагрузки в объединенные кэши 1208 работоспособности и нагрузки. Механизм для предоставления информации 1206 работоспособности и нагрузки является управляемым событиями, в результате чего изменения в таблицах 1204 работоспособности и нагрузки поступают в объединенные кэши 1208 работоспособности и нагрузки своевременно и масштабируемо.During operation, the health and
На фиг.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
Поскольку каждый элемент 1302 связан с конкретным приложением 316, всякий раз при запуске (например, администратором) приложения происходит добавление строки. Аналогично, всякий раз при закрытии приложения происходит уничтожение/удаление строки. Аналогично, отдельные поля в столбцах 1302(A), 1302(B) и/или 1302(C) изменяются/обновляются при изменении их значений. Например, при изменении значения характеристики статуса для данного приложения 316, значение 1302(В) поля характеристики статуса приложения для элемента 1302 данного приложения 316 обновляется.Since each
Добавления и удаления элементов 1302 для приложений 316 могут осуществляться с помощью входной информации от диспетчера управления на хосте 108. Например, диспетчер управления операционной системы знает, когда приложение 316 начинает и прекращает работать, поскольку он активно участвует в запуске и остановке приложений 316. Поэтому диспетчер управления может указать, что он, по меньшей мере частично, запустил приложение 316, и диспетчер управления может установить, что он, по меньшей мере частично, остановил приложение 316. Таким образом, диспетчер управления может информировать инфраструктуру 1202 работоспособности и нагрузки о запуске и остановке приложений 316. Поэтому не требуется обеспечивать явной передачи данных от приложений 316 на инфраструктуру 1202 работоспособности и нагрузки. Примером диспетчера управления является диспетчер (ДУС) управления службами операционной системы Windows® от корпорации Microsoft®.Additions and deletions of
Идентификатор 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
Альтернативно, можно использовать другие идентификаторы приложения. Например, для снижения нагрузки на линию связи идентификатор 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
Характеристика 1302(В) статуса приложения содержит информацию, отражающую статус приложения 316, с которым связан элемент 1302. Характеристика 1302(В) статуса приложения содержит следующее для соответствующего приложения 316: работоспособность приложения, нагрузку приложения и емкость приложения. Работоспособность приложения это квазибулево значение, указывающее, работает ли приложение. Работоспособность приложения может принимать значения «работоспособно», «неработоспособно» и «неизвестно». Работоспособность приложения - это относительно мгновенное значение, которое передается со сравнительно небольшой задержкой (например, порядка секунды или нескольких секунд) на модули 106 выравнивания нагрузки при изменении значения работоспособности приложения.The application status characteristic 1302 (B) contains information reflecting the status of the
Нагрузка приложения - это значение, указывающее, насколько нагружено или занято приложение, и, таким образом, прямо или обратно, сколько дополнительной нагрузки может обрабатывать данное приложение. Нагрузка приложения - это относительно медленно изменяющееся или усредненное значение, которое, при желании, можно сглаживать с помощью механизма гистерезисного возбуждения для устранения переходных пиков возрастающей или убывающей нагрузки. Она передается на модули 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
Емкость приложения - это значение, указывающее максимальную емкость приложения. Его выбирают общим способом, чтобы оно имело смысл для данного контекста, но все же было достаточно гибким для других контекстов. Емкость приложения - это безразмерная величина, имеющая ограниченный диапазон значений (например, 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
Целевое состояние выравнивания нагрузки отражает состояние директивы для модулей 106 выравнивания нагрузки в соответствии с указанием инфраструктуры 1202 работоспособности и нагрузки. Текущее состояние выравнивания нагрузки отражает то, что инфраструктура 1202 работоспособности и нагрузки понимает, каким должно быть текущее состояние директивы для модулей 106 выравнивания нагрузки, записываемое на модулях 106 выравнивания нагрузки. Текущее состояние выравнивания нагрузки, таким образом, отражает директиву выравнивания нагрузки, которую, как ожидает инфраструктура 1202 работоспособности и нагрузки, в данный момент выполняют модули 106 выравнивания нагрузки в соответствии с требованиями используемого протокола связи. Такой иллюстративный протокол связи описан ниже со ссылкой на фиг.15. Взаимодействие и соотношение между целевым состоянием выравнивания нагрузки и текущим состоянием выравнивания нагрузки также дополнительно поясняются в описании фиг.15.The target load balancing state reflects the state of the directive for
Целевое состояние выравнивания нагрузки, как и текущее состояние выравнивания нагрузки, может принимать значения «активное», «неактивное» или «истощающееся». Директива «активное» указывает, что новые запросы/соединения могут поступать и направляться приложению, связанному с элементом 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
В описанной реализации, окончательная версия соответствующей информации 1206 работоспособности и нагрузки сохраняется в таблицах 1204 работоспособности и нагрузки, размещенных на каждом соответствующем хосте 108 из множественных хостов 108. В этой реализации, если хост 108 ломается, информация 1206 работоспособности и нагрузки, которая теряется, относится к тем приложениям 316, которые также уничтожаются. Таким образом, высокая степень надежности достигается автоматически без дублирования данных. Однако окончательная версия информации 1206 работоспособности и нагрузки может альтернативно храниться в другом месте. Другие такие опции хранения включают в себя сами модули 106 выравнивания нагрузки, хост 108, который (в качестве самостоятельной задачи или совместно с задачами хостинга) хранит и поддерживает информацию 1206 работоспособности и нагрузки для множественных других (включая все остальные) хостов 108, других отдельных и/или внешних устройств и т.д.In the described implementation, the final version of the corresponding health and
Если окончательная версия информации 1206 работоспособности и нагрузки хранится и поддерживается в другом месте, помимо того, что она распределена между хостами 108(1, 2, …, n), то такая информация 1206 работоспособности и нагрузки может храниться избыточно (например, также храниться в дублирующем устройстве, резервно скопированы и т.д.) в целях повышения надежности. Иллюстративные сценарии посредника для сохранения информации 1206 работоспособности и нагрузки описаны ниже со ссылкой на фиг. 17А и 17В. На фиг.17А изображен сценарий посредника для таблиц 1204 работоспособности и нагрузки, а на фиг.17В изображен сценарий посредника для объединенных кэшей работоспособности и нагрузки.If the final version of the health and
На фиг.13В изображен объединенный кэш 1208 работоспособности и нагрузки, обозначенный на фиг.12. В описанной реализации каждый объединенный кэш 1208 работоспособности и нагрузки в каждом модуле 106 выравнивания нагрузки содержит, по меньшей мере, часть информации, хранящейся в каждой таблице 1204 работоспособности и нагрузки для каждой инфраструктуры 1202 работоспособности и нагрузки для каждого хоста 108. Кэшированная информация работоспособности и нагрузки может быть организована любым образом в объединенном кэше 1208 работоспособности и нагрузки.FIG. 13B depicts the combined health and
Показано, что объединенный кэш 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
На фиг.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
На блоке 1402 происходит определение информации работоспособности и нагрузки на хосте. Например, инфраструктура 1202(2) работоспособности и нагрузки может получать информацию 1206 работоспособности и нагрузки для приложений 316(2) и сохранять в таблице 1204(2) на хосте 108(2). На блоке 1404 определенная информация работоспособности и нагрузки сеется в модули выравнивания нагрузки. Например, инфраструктура 1202(2) работоспособности и нагрузки может отправить информацию 1206 работоспособности и нагрузки для приложений 316(2) на модули 106(1, 2, …, u) выравнивания нагрузки. Стрелка 1418 указывает, что действия блоков 1402 и 1404 повторяются, что позволяет непрерывно отслеживать работоспособность и нагрузку (приложения) и обновлять их, когда происходят изменения.At
На блоке 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
Пунктирная стрелка 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
На блоке 1414 происходит выбор хоста в соответствии с кэшированной информацией работоспособности и нагрузки. Например, модуль 106(1) выравнивания нагрузки может выбрать хост 108(2), имеющий приложение(я) 316(2), в соответствии с информацией 1206 работоспособности и нагрузки, кэшированной в объединенном кэше 1208(1) работоспособности и нагрузки. Выбранное приложение 316 (и хост 108) должно быть работоспособным и способным принимать дополнительную нагрузку (например, по возможности, наименее нагруженным приложением среди приложений того типа приложения, которому адресован пакет SYN TCP).At
Сверка с кэшированной информацией работоспособности и нагрузки (на блоке 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
В рассмотренной реализации инфраструктура 1202 работоспособности и нагрузки размещена на множественных хостах 108 и распределена между ними, а также размещена на модулях 106 выравнивания нагрузки (будучи представлена обработчиком 314 работоспособности и нагрузки). Инфраструктура 1202 работоспособности и нагрузки имеет три функции. Во первых, она открывает точку(и) прослушивания для получения обновлений статуса приложения для характеристик 1302(В) статуса приложения таблиц 1204 работоспособности и нагрузки. Во-вторых, он синтезирует информацию статуса приложения, чтобы определить, что должны делать модули 106 выравнивания нагрузки, что воплощено в директиве 1302(С) выравнивателя нагрузки. В-третьих, инфраструктура 1202 работоспособности и нагрузки передает эту директиву от хостов 108 на модули 106 выравнивания нагрузки.In the implementation described, the health and
Директивное содержимое директивы 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
На фиг.15 представлен протокол 1500 обмена сообщениями для передач, относящихся к информации работоспособности и нагрузки, обозначенных на фиг.12, между хостами 108 и модулями 106 выравнивания нагрузки. В общем случае механизм, управляемый событиями, используется для передачи изменений в таблицах 1204 работоспособности и нагрузки с хостов 108 на модули 106 выравнивания нагрузки. Иными словами, для описываемой реализации, информация передается с хостов 108 на модули 106 выравнивания нагрузки при обновлении таблиц 1204 работоспособности и нагрузки. Это позволяет избегать отправки моментальных снимков всех таблиц 1204 работоспособности и нагрузки и, таким образом, снизить потребление полосы пропускания сети инфраструктурой 1202 работоспособности и нагрузки.FIG. 15 illustrates a
Протокол 1500 обмена сообщениями может быть реализован с использованием имеющегося механизма передачи сообщений. Такие механизмы включают в себя надежный широковещательный механизм, двухточечную передачу (например, протокол пользовательских датаграмм (UDP)) и т.д. Показано, что протокол 1500 обмена сообщениями содержит семь типов сообщений 1502-1514: сообщение 1502 «пульс», сообщение 1504 «прощание», сообщение 1506 «изменение строки», сообщение 1508 «получить мгновенный снимок таблицы», сообщение 1510 «отправить мгновенный снимок таблицы», сообщение 1512 «постулировать состояние таблицы» и сообщение 1514 «постулировать ошибку».The
Следует понимать, что, за исключением стрелок 1516 и 1518, данная иллюстрация не устанавливает никакой взаимосвязи по времени между разными типами сообщений 1502-1514. Например, сообщение 1506 «изменение строки» не обязано следовать за сообщением 1504 «прощание».It should be understood that, with the exception of
Сообщение 1502 «пульс» указывает, что конкретный хост 108 действует, и обеспечивает некоторый контроль ошибок для содержимого соответствующей таблицы 1204 работоспособности и нагрузки в отношении соответствующего конкретного кэша для конкретного хоста 1304 в объединенном кэше 1208 работоспособности и нагрузки. Каждая инфраструктура 1202 работоспособности и нагрузки на каждом хосте 108 отправляет сообщение «пульс», прямо или косвенно, в каждый кэш 1208 работоспособности и нагрузки на каждом модуле 106 выравнивания нагрузки.A
Сообщения 1502 «пульс» решают проблему устаревания данных в объединенных кэшах 1208 работоспособности и нагрузки, которая возникает, отчасти, из-за того, что мгновенный снимок всей таблицы 1204 работоспособности и нагрузки не периодически передается каждому модулю 106 выравнивания нагрузки. Схема передачи сообщений 1502 «пульс» описана ниже со ссылкой на фиг.16.
Сообщения 1502 «пульс» включают в себя идентификатор для хоста, данные контроля ошибок и, в необязательном порядке, имя DNS. Идентификатор хоста может представлять собой уникальное (32-разрядное) двоичное число, выбранное во время настройки. Данные контроля ошибок могут представлять собой контрольную сумму, порядковый номер смены состояния, номер поколения, значение CRC и т.д., что позволяет принимающему модулю 106 выравнивания нагрузки удостоверяться, что содержимое его объединенного кэша 1208 работоспособности и нагрузки согласуется с содержимым таблицы 1204 работоспособности и нагрузки передающего хоста 108. В случае использования номера поколения можно использовать множественные ИД поколения, причем каждый ИД поколения присваивается «куску» приложений. Тогда сообщения могут ссылаться на номер куска или пару номер куска/ИД поколения, в зависимости от контекста.
Данные контроля ошибок (или, более обобщенно, индикатор содержимого) могут представлять собой одно значение для всей таблицы 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
Сообщение 1504 «прощание» передается с конкретного хоста 108 на модули 106 выравнивания нагрузки, чтобы указывать, что планируется отключение конкретного хоста 108. Сообщение 1504 «прощание» включает в себя идентификатор хоста, который может индексироваться/отображаться на сетевой адрес для конкретного хоста 108. Сообщение 1504 «прощание» используется для чистых, преднамеренных отключений хостами 108, чтобы обусловливать «быструю очистку». Однако в случае потери сообщения 1504 «прощание» кэши в конце концов отстают от элементов конкретного хоста 108, поскольку сообщения 1502 «пульс» больше не передаются.A goodbye message 1504 is sent from a
Сообщение 1506 «изменение строки» передается с конкретного хоста 108 на модули 106 выравнивания нагрузки, чтобы указывать, что работоспособность и нагрузка данного приложения 316 конкретного хоста 108 изменилась. Сообщение 1506 «изменение строки» включает в себя идентификатор хоста, идентификатор приложения, операцию и данные для операции. Иллюстративные идентификаторы хостов описаны выше в связи с сообщениями 1502 «пульс» и сообщениями 1504 «прощание». Проиллюстрированные идентификаторы приложений описаны выше в связи с идентификатором 1302(А) приложения в элементе 1302, связанном с приложением, таблиц 1204 работоспособности и нагрузки.A line change message 1506 is transmitted from a
Операция смены строки может представлять собой добавление, удаление или обновление. Иными словами, данные для операции могут добавляться (для операции добавления) или заменять (для операции обновления) информацию, уже присутствующую в объединенных кэшах 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
Сообщение 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”
Для случая (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
Сообщение 1510 «отправить мгновенный снимок таблицы» отправляется с отдельного хоста 108 на конкретный модуль 106 выравнивания нагрузки после того, как отдельный хост 108 получил сообщение 1508 «получить мгновенный снимок таблицы» от конкретного модуля 106 выравнивания нагрузки, что указано стрелкой 1516. Содержимое сообщения 1510 «отправить мгновенный снимок таблицы» подготавливается инфраструктурой 1202 работоспособности и нагрузки и может включать в себя все или, по меньшей мере, множественные строки таблицы 1204 работоспособности и нагрузки для отдельных хостов 108, что позволяет конкретному модулю 106 выравнивания нагрузки восстанавливать свой объединенный кэш 1208 работоспособности и нагрузки. Сообщение 1510 «отправить мгновенный снимок таблицы» может быть отдельно построенным сообщением или может быть эквивалентно последовательности операций добавления в сообщении 1506 «изменение строки».A “send snapshot of the table”
Сообщение 1512 «постулировать состояние таблицы» и сообщение 1514 «постулировать ошибку» относятся к целевому состоянию выравнивания нагрузки и текущему состоянию выравнивания нагрузки директивы 1302(С) выравнивателя нагрузки элемента 1302 таблицы 1204 работоспособности и нагрузки. Целевое состояние выравнивания нагрузки - это директива, в соответствии с которой должны работать модули 106 выравнивания нагрузки согласно желанию инфраструктуры 1202 работоспособности и нагрузки. Текущее состояние выравнивания нагрузки - это директива, в соответствии с которой в данный момент работают модули 106 выравнивания нагрузки согласно ожиданию инфраструктуры 1202 работоспособности и нагрузки. В общем случае два состояния выравнивания нагрузки идентичны.Message 1512 "postulate the state of the table" and
Однако целевое состояние выравнивания нагрузки может отличаться от текущего состояния выравнивания нагрузки в переходный период изменения директивы состояния. Пусть, например, целевое состояние выравнивания нагрузки и текущее состояние выравнивания нагрузки первоначально установлены активными. При обнаружении проблемы с хостом 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
Пока это изменение директивы будет отмечено во всех объединенных кэшах 1208 работоспособности и нагрузки всех модулей 106 выравнивания нагрузки, имеет место задержка. В течение этого переходного периода целевое состояние выравнивания нагрузки является «истощающимся», тогда как текущее состояние выравнивания нагрузки по-прежнему является «активным» в таблице 1204 работоспособности и нагрузки хоста 108. Прежде чем текущее состояние выравнивания нагрузки сменится на «истощающееся», инфраструктура 1202 работоспособности и нагрузки хочет удостовериться, что объединенные кэши 1208 работоспособности и нагрузки действительно были обновлены до нового директивного состояния «истощения».While this change in directive will be noted in all the combined health and
Чтобы проверить, что объединенные кэши 1208 работоспособности и нагрузки модулей 106 выравнивания нагрузки были обновлены в соответствии с новой директивой состояния, инфраструктура 1202 работоспособности и нагрузки оправляет сообщение 1512 «постулировать состояние таблицы» на модули 106 выравнивания нагрузки. Сообщение 1512 «постулировать состояние таблицы» передается через некоторое время (например, с заранее определенным периодом задержки) после передачи сообщения 1506 «изменение строки», указывая, что директива состояния должна измениться. В данном примере сообщение 1512 «постулировать состояние таблицы» указывает, что состояние таблицы должно быть «истощающееся». Пунктирная стрелка 1518 указывает, что модуль 106 выравнивания нагрузки отвечает на это сообщение 1512 «постулировать состояние таблицы», если его объединенный кэш 1208 работоспособности и нагрузки отличается от постулированной директивы состояния.In order to verify that the combined health and
Если директива в объединенном кэше 1208 работоспособности и нагрузки не отличается от постулированной директивы состояния, то модуль 106 выравнивания нагрузки отправляет сообщение 1514 «постулировать ошибку» на инфраструктуру 1202 работоспособности и нагрузки хоста 108, который выдал сообщение 1512 «постулировать состояние таблицы». Затем эта инфраструктура 1202 работоспособности и нагрузки периодически повторно отправляет сообщение 1512 «постулировать состояние таблицы», пока от объединенных кэшей 1208 работоспособности и нагрузки не перестанут поступать сообщения 1514 «постулировать ошибку». В этот момент инфраструктура 1202 работоспособности и нагрузки отправляет новое сообщение 1506 «изменение строки» с новым состоянием выравнивания нагрузки. В этом смысле объединенные кэши 1208 работоспособности и нагрузки являются окончательными определителями текущего состояния выравнивания нагрузки, и инфраструктура 1202 работоспособности и нагрузки является окончательным определителем целевого состояния выравнивания нагрузки.If the directive in the combined health and
На фиг.16 изображена схема передачи сообщений для передач, показанных на фиг.12, между хостами 108 и модулями 106 выравнивания нагрузки. Иллюстративная схема передачи сообщений может снижать полосу пропускания, потребляемую сообщениями 1502 «пульс» на средстве связи 1210. Схема передачи сообщений, показанная на фиг.16, конкретно приспособлена к сообщениями 1502 «пульс», но может использоваться для других сообщений протокола 1500 обмена сообщениями.FIG. 16 shows a message flow diagram for the transmissions shown in FIG. 12 between
Множественные хосты 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
В описываемой реализации узлы, входящие в группу хостов 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
Информация «пульса» каждого хоста 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
В качестве другой альтернативы лидирующий хост 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
Сообщения 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
Объединенный кэш 1208 работоспособности и нагрузки использует имя DNS для отправки сообщения 1508 «получить мгновенный снимок таблицы» на конкретный хост 108 в целях получения обновленной информации 1206 работоспособности и нагрузки в виде сообщения 1510 «отправить мгновенный снимок таблицы». Другое или такое же сообщение 1508 «получить мгновенный снимок таблицы» отправляется на каждый хост 108, для которого обнаружена неэквивалентность. В конце концов, информация 1206 работоспособности и нагрузки в объединенном кэше 1208 работоспособности и нагрузки оказывается эквивалентной информации 1206 работоспособности и нагрузки в таблицах 1204 работоспособности и нагрузки, что проверяется посредством новых сообщений 1502 «пульс». Таким образом, работа сбойного кэша 1208 работоспособности и нагрузки может восстанавливаться без вмешательства извне с использованием протокола 1500 обмена сообщениями и схемы контроля эквивалентности.The combined health and
На фиг.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
Например, на хосте может работать версия приложения(й) и/или операционная система, для которой инфраструктура работоспособности и нагрузки либо не реализована, либо, по соображениям политики, не установлена на хосте. В результате, на этих типах хостов инфраструктура 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
На посреднике 1704 размещается и выполняется инфраструктура 1202 работоспособности и нагрузки, включающая в себя таблицу 1204 работоспособности и нагрузки. Хост 712 может использовать функциональные возможности инфраструктуры 1202 работоспособности и нагрузки путем представления информации 1206 о работоспособности и нагрузке в таблицу 1204. Для приложений, работающих на хосте 1702. Альтернативно, посредник 1704 может выводить работоспособность и нагрузку на хосте 1702, выполняя действия внешнего слежения. Посредник 1704 показан как посредник 1704(1) и 1704(2) для избыточности и, следовательно, высокой надежности.At an intermediary 1704, health and
В реализациях, описанных выше со ссылками на фиг.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
Например, выравнивание нагрузки можно осуществлять посредством монолитного оборудования выравнивания нагрузки или другой инфраструктуры выравнивания нагрузки, которая не хранит и/или не может хранить или иным образом не содержит объединенный кэш 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
Посредник 1708 содержит объединенный кэш 1208 работоспособности и нагрузки, в котором хранится информация 1206 работоспособности и нагрузки для хостированных приложений, обслуживаемых выравнивателем 1706 нагрузки. Выравниватель 1706 нагрузки может использовать информацию 1206 работоспособности и нагрузки объединенного кэша 1208 работоспособности и нагрузки при осуществлении функций выравнивания нагрузки, осуществляя доступ к такой информации с использованием программных интерфейсов приложения (API), «родных» для выравнивателя 1706 нагрузки и поддерживаемых им. Альтернативно, объединенный кэш 1208 работоспособности и нагрузки может вызывать API для передачи информации 1206 работоспособности и нагрузки, включая директивы, на выравниватель 1706 нагрузки. Посредник 1708 показан как посредник 1708(1) и 1708(2) избыточности и, следовательно, высокой надежности.
На фиг.18 показана процедура распределения целевых конечных точек приложения с использованием классификатора 304 и обработчика 314 работоспособности и нагрузки, входящих в состав модуля 106 выравнивания нагрузки. После того как обработчик 314 работоспособности и нагрузки получает доступ к объединенному кэшу 1208 работоспособности и нагрузки, содержащаяся в нем информация 1206 работоспособности и нагрузки используется при выборе конечных точек приложения для новых запросов/соединений.On Fig shows the distribution process of the target endpoints of the application using the
Согласно описанному выше со ссылкой на фиг.13В, объединенный кэш 1208 работоспособности и нагрузки содержит кэшированную информацию 1206 работоспособности и нагрузки для множественных хостов 108. Для облегчения создания и обновления объединенного кэша 1208 работоспособности и нагрузки по информации 1206 работоспособности и нагрузки, полученной от множественных хостов 108, информация 1206 работоспособности и нагрузки организована в нем так, что она доступна по идентификатору каждого хоста 108. Однако информация 1206 работоспособности и нагрузки также организована в нем так, что она доступна по типу приложения 316 с целью облегчения выбора конечной точки приложения.As described above with reference to FIG. 13B, the combined health and
Другими словами, обработчик 314 работоспособности и нагрузки способен обращаться к информации 1206 работоспособности и нагрузки для каждого приложения 316 в отдельности по информации 1206 работоспособности и нагрузки для множественных хостов 108. После получения информации 1206 работоспособности и нагрузки для данного приложения 316 для каждого хоста 108 выделение входящих запросов соединения может осуществляться в соответствии с этой информацией 1206 работоспособности и нагрузки. Например, возможные конечные точки для данного приложения 316 могут выделяться входящим запросам соединения путем выбора конечных точек данного приложения 316 с учетом имеющейся относительной емкости нагрузки среди работоспособных конечных точек для данного приложения 316.In other words, the health and
В описываемой реализации классификатор 304 делает запрос 1802 распределения целевых конечных точек приложения обработчику 314 работоспособности и нагрузки. Показано, что запрос 1802 распределения целевых конечных точек приложения содержит (i) виртуальный IP-адрес и порт, (ii) протокол и (iii) информацию, связанную с протоколом. Поэтому запрос 1802 распределения целевых конечных точек приложения идентифицирует тип приложения 316, которому адресованы входящие запросы соединения.In the described implementation, the
Обработчик 314 работоспособности и нагрузки получает запрос 1802 распределения целевых конечных точек приложения и выбирает, по меньшей мере, одну физическую конечную точку, соответствующую идентифицированному типу приложения 316, с использованием любого одного или более из многочисленных механизмов выбора. Для уменьшения задержки обработчик 314 работоспособности и нагрузки выбирает распределение конечных точек, подлежащее использованию по ряду входящих запросов соединения. Это распределение поступает от обработчика 314 работоспособности и нагрузки на классификатор 304 с использованием ответа 1804 по распределению конечных точек приложения. Показано, что ответ 1804 по распределению конечных точек приложения содержит распределение физических IP-адресов и портов (например, конечных точек IP1, IP2 и IP3) для идентифицированного типа приложения 316.The health and
Ответ 1804 по распределению конечных точек приложения может быть выполнен с использованием одной или нескольких схем распределения. Для примера, показаны маркерная схема 1806 распределения и процентная схема 1808 распределения. Маркерная схема 1806 распределения является модульной схемой выделения, а процентная схема 1808 распределения является временной схемой распределения.
Маркерная схема 1806 распределения выделяет маркеры для каждой работоспособной конечной точки IP1, IP2 и IP3 в соответствии с их относительной нагрузкой и отношениями емкостей. В иллюстрируемом примере из полной имеющейся емкости IP1 имеет 40% имеющейся емкости, IP2 имеет 35% имеющейся емкости, и IP3 имеет 25% имеющейся емкости. Таким образом, общее количество маркеров делится в соответствии с этими процентами. Общее количество маркеров может обеспечиваться как часть запроса 1802 распределения целевых конечных точек приложения или определяться обработчиком 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.
Процентная схема 1808 распределения определяет имеющуюся относительную емкость аналогичным образом. Однако вместо маркеров эти определенные имеющиеся относительные емкости на конечную точку приложения предоставляются классификатору 304 совместно с таймером 1810 длительности. Классификатор 304 выделяет целевые конечные точки приложения входящим запросам соединения в соответствии с этими имеющимися процентами относительной емкости до истечения таймера 1810 длительности.
Согласно процентной схеме 1808 распределения, классификатор 304 поддерживает непрерывную запись выделений конечных точек приложения для присоединения к распределенным процентам и отслеживает время таймера 1810 длительности. По истечении времени классификатор 304 запрашивает другое процентное распределение с использованием запроса 1802 распределения целевых конечных точек приложения.According to the
Заметим, что маркерная схема 1806 распределения также может использовать предел времени. Если распределенные маркеры слишком стары, их можно отбросить и получить новые. В противном случае, классификатор 304 может потреблять несвежие маркеры, которые были ранее выделены на основании информации работоспособности и нагрузки, которая в данный момент слишком устарела. Использование распределений конечных точек приложения классификатором 304 описано ниже в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов».Note that
Отслеживание сеансов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
На фиг.19 показан подход к выравниванию сетевой нагрузки с использованием информации 1902 сеанса. Соединение [1] обозначает, что клиент 102(1) создает новое соединение с хостом 108(2) через инфраструктуру 106 выравнивания нагрузки. Инфраструктура 106 выравнивания нагрузки может состоять из одного или нескольких модулей 106 выравнивания нагрузки. При поступлении запроса соединения на инфраструктуру 106 выравнивания нагрузки запрос обычно маршрутизируется на хост 108 с использованием функций выравнивания сетевой нагрузки в соответствии с информацией работоспособности и/или нагрузки хостов 108 и/или их приложений 316 (явно не показанной на фиг.19).19 shows an approach to balancing network load using
При установлении соединения [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
Если же инфраструктура 106 выравнивания нагрузки имеет доступ к отображению между информацией сеанса и хостами 108, то инфраструктура 106 выравнивания нагрузки может маршрутизировать запросы соединения, относящиеся к ранее установленным сеансам, на соответствующий хост 108. Некоторую информацию сеанса можно вывести из содержимого пакетов, переносимых через инфраструктуру 106 выравнивания нагрузки. Однако этот подход неточен и нецеленаправлен по ряду причин. Во-первых, установление и окончание сеанса всего лишь предполагается. Во-вторых, некоторые сеансы не заканчиваются «официально» с надлежащим указанием, включаемым в пакет. Например, некоторые сеансы просто приостанавливаются. В-третьих, пакеты, передаваемые от хоста 108(2) на клиент 102(1), могут перемещаться по пути, который не включают в себя инфраструктуру 106 выравнивания нагрузки, что мешает инфраструктуре 106 выравнивания нагрузки отслеживать такие пакеты на предмет информации сеанса.If the
Согласно фиг.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)
В определенных описанных реализациях отслеживания сеансов логическая природа клиентов 102 является подходящей. Согласно указанному выше со ссылкой на фиг.1, клиент 102 может быть конкретным устройством и/или конкретным пользователем устройства. Поэтому сродство к сеансу для пользовательского клиента 102, который осуществляет доступ к хостам 108 с различных устройств, все еще может сохраняться. Поэтому продолжения сеансов с использованием информации 1902 сеансов могут все еще осуществляться в сценариях посредника (например, как у некоторых поставщиков услуг Интернета (ПУИ)).In certain described session tracking implementations, the logical nature of
Согласно примеру соединения [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
В соответствии с отображением хоста 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
Многие типы соединений могут быть связанными с сеансом. Примеры включают в себя: 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
На фиг.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
Показано, что каждый соответствующий хост 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
В описываемой реализации функция 2012 маршрутизации трафика и распределенный диспетчер 2010 отслеживания сеансов являются частью инфраструктуры 106 выравнивания нагрузки. Инфраструктура 2002 отслеживания сеансов также может быть (например, удаленной) частью инфраструктуры 106 выравнивания нагрузки.In the described implementation, the
API 2004 используется для предоставления информации сеанса от приложений 316 на инфраструктуру 2002 отслеживания сеансов. Использование API 2004 позволяет приложениям 316 сообщать инфраструктуре 2002 отслеживания сеансов информацию сеанса, включая различные ее изменения. В частности, каждое приложение 316 способно выдавать, а инфраструктура 2002 отслеживания сеансов способна получать извещения 2006.
При новом установлении или открытии сеанса, приложение 316 выдает извещение об установлении сеанса (или извещение 2006(Е) об установлении сеанса). Извещение 2006(Е) об установлении сеанса содержит идентификатор сеанса и, в необязательном порядке, идентификатор приложения 316. При окончании или закрытии сеанса приложение 316 выдает извещение об окончании сеанса (или извещение 2006(Т) об окончании сеанса). Извещение 2006(Т) об окончании сеанса также содержит идентификатор сеанса и, в необязательном порядке, идентификатор приложения 316.When you re-establish or open a session,
Получив извещение 2006(Е) об установлении сеанса, инфраструктура 2002 отслеживания сеансов вставляет в таблицу 2014 сеансов элемент для нового сеанса. Иллюстративная таблица 2014 сеансов описана ниже со ссылкой на фиг.23А. Получив извещение 2006(Т) об окончании сеанса, инфраструктура 2002 отслеживания сеансов удаляет из таблицы 2014 сеансов элемент для старого сеанса.Upon receiving the session establishment notification 2006 (E), the
Таблица 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
На модулях 106 выравнивания нагрузки распределенный диспетчер 2010 отслеживания сеансов кэширует информацию 1902 сеанса, что входит в его обязанности по управлению отслеживанием сеансов. В общем случае распределенный диспетчер 2010 отслеживания сеансов является распределенным приложением и/или виртуальной службой, размещенной частично на каждом модуле 106 выравнивания нагрузки. Для каждого логического сеанса распределенный диспетчер 2010 отслеживания сеансов сохраняет, по меньшей мере, одну кэшированную копию информации сеанса для него надежным и масштабируемым образом, которую можно быстро использовать для маршрутизации трафика при поступлении входящих запросов соединения, имеющих ссылку на сеанс, на инфраструктуру 106 выравнивания нагрузки.On
Связь между хостами 108 и модулями 106 выравнивания нагрузки осуществляется с помощью надежного протокола, который гарантирует, что сообщения 2008, отправленные с хоста 108, поступают на нужный модуль 106 выравнивания нагрузки. Каждый хост 108 привязан к, по меньшей мере, одному конкретному модулю 106 выравнивания нагрузки, который является назначенным модулем 106 выравнивания нагрузки для сообщений 2008. Эта привязка создается путем присваивания IP-адреса конкретного модуля 106 выравнивания нагрузки каждому хосту 108 для передачи сообщений 2008 отслеживания сеансов между инфраструктурой 2002 отслеживания сеанса и распределенным диспетчером 2010 отслеживания сеанса. Для повышения надежности инфраструктуры выравнивания нагрузки в случае отказа модуля 106 выравнивания нагрузки другой модуль 106 выравнивания нагрузки принимает на себя IP-адрес сбойного модуля 106 выравнивания нагрузки. Обнаружение сбоев для принятия IP-адреса может осуществляться с использованием «пульса» или другой схемы отслеживания работоспособности.Communication between
Таким образом, сообщения 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,
На фиг.21 показана логическая блок-схема 2100 способа выравнивания сетевой нагрузки с использованием передачи информации сеанса посредством извещений и сообщений. Логическая блок-схема 2100 содержит пятнадцать блоков 2102-2130. Хотя действия логической блок-схемы 2100 могут осуществляться в других средах и с помощью различных других программных схем, фиг. 1-3 и 19-20 используются, в частности, для иллюстрации определенных аспектов и примеров способа.FIG. 21 is a
Например, действия четырех блоков 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
На блоке 2102 происходит открытие сеанса. Например, приложение 316 может открывать сеанс с клиентом 102. На блоке 2104 предоставляется извещение об установлении сеанса. Например, приложение 316 может предоставлять извещение 2006(Е) об установлении сеанса инфраструктуре 2002 отслеживания сеансов с использованием API 2004 в результате открытия сеанса и/или совместно с ним.At
На блоке 2106 происходит получение извещения об установлении сеанса. Например, инфраструктура 2002 отслеживания сеансов может получать извещение 2006(Е) об установлении сеанса от приложения 316 в соответствии с API 2004. На блоке 2108, в таблицу сеансов вставляется элемент. Например, инфраструктура 2002 отслеживания сеансов может вставлять элемент в таблицу 2014 сеансов для открытого сеанса. Примеры такого вставления описаны ниже, в особенности со ссылкой на фиг.23А. На блоке 2110 происходит отправка сообщения начала сеанса. Например, инфраструктура 2002 отслеживания сеансов может отправлять сообщение 2008(U) начала сеанса на распределенный диспетчер 2010 отслеживания сеансов с использованием надежного протокола связи.At
На блоке 2112 происходит получение сообщения начала сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может получать сообщение 2008(U) начала сеанса от инфраструктуры 2002 отслеживания сеансов в соответствии с надежным протоколом связи. На блоке 2114 создается элемент информации сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может создавать элемент информации сеанса для кэшированной информации 1902 сеанса на одном или нескольких модулях 106 выравнивания нагрузки. Примеры такого создания и последующего добавления описаны ниже, в особенности со ссылкой на фиг. 22 и 23В.At
На блоке 2116 сетевой трафик маршрутизируется с помощью информации сеанса. Например, функция 2012 маршрутизации трафика совместно с распределенным диспетчером 2010 отслеживания сеансов может использовать кэшированную информацию 1902 сеанса, включая созданный элемент информации сеанса, для маршрутизации входящих запросов соединения, имеющих ссылку на сеанс. Пример такой маршрутизации трафика описан ниже, в особенности со ссылкой на фиг.24. Дополнительные примеры описаны ниже в разделе, озаглавленном «Классификация, пересылка и маршрутизация запросов».At
На блоке 2118 сеанс закрывается. Например, приложение 316 может закрыть сеанс с клиентом 102. На блоке 2120 предоставляется извещение об окончании сеанса. Например, приложение 316 может предоставлять извещение 2006(Т) об окончании сеанса инфраструктуре 2002 отслеживания сеансов с использованием API 2004 в результате закрытия сеанса и/или совместно с ним.At
На блоке 2120 происходит получение извещения об окончании сеанса. Например, инфраструктура 2002 отслеживания сеансов может получать извещение 2006(Т) об окончании сеанса от приложения 316 в соответствии с API 2004. На блоке 2124 происходит удаление элемента из таблицы сеансов. Например, инфраструктура 2002 отслеживания сеансов может удалять элемент из таблицы 2014 сеансов для закрытого сеанса. На блоке 2126 происходит отправка сообщения окончания сеанса. Например, инфраструктура 2002 отслеживания сеансов может отправлять сообщение 2008(D) окончания сеанса на распределенный диспетчер 2010 отслеживания сеансов с использованием надежного протокола связи.At
На блоке 2128 происходит получение сообщения окончания сеанса. Например, распределенный диспетчер 2010 отслеживания сеансов может получать сообщение 2008(D) окончания сеанса от инфраструктуры 2002 отслеживания сеансов в соответствии с надежным протоколом связи. На блоке 2130 элемент информации сеанса уничтожается. Например, распределенный диспетчер 2010 отслеживания сеансов может уничтожать элемент информации сеанса в кэшированной информации 1902 сеанса на любых модулях 106 выравнивания нагрузки, имеющих элемент информации сеанса. Примеры такого уничтожения и последующего удаления описаны ниже, в особенности со ссылками на фиг. 22 и 23В.At
На фиг.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
РДА 2202 является распределенным приложением или виртуальной службой, которая управляет информацией 1902 сеанса надежным и масштабируемым образом, что позволяет функции 2012 маршрутизации трафика использовать его для сохранения сродства к сеансу. Например, функция 2012 маршрутизации трафика может осуществлять доступ к РДА 2202 с использованием API (конкретно не показан) для поиска в ТРДА 2206. Функциональные вызовы 2204, работа РДА 2202 и другие аспекты фиг.22 описаны ниже после описания фиг. 23А и 23В.
На фиг.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
Согласно описанному выше, каждое извещение 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
Тип сеанса и/или приложение 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
Согласно описанному выше, сообщение 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
В описываемой реализации каждый элемент 2304 информации сеанса является атомарным в том смысле, что РДА 2202 может добавлять, удалять, копировать и т.д. элементы 2304 как целое, но РДА 2202 обычно не изменяет часть любого элемента 2304 как целого. Таким образом, атомарные элементы 2304 добавляются, удаляются, копируются, иным образом обрабатываются и т.д. по таблицам 2206 РДА посредством РДА 2202 для реализации надежности и масштабируемости для реализации сохранения сродства к сеансу.In the described implementation, each
Функциональные вызовы 2204 (фиг.22) используются РДА 2202 для манипулирования атомарными элементами 2304 таблицы 2206 РДА. Функциональные вызовы 2204 могут поступать от одного модуля 106 выравнивания нагрузки на один или несколько модулей 106 выравнивания нагрузки в двухточечном или широковещательном режиме. Эти функциональные вызовы включают в себя «добавить атом» 2204(А), «удалить атом» 2204(D), «запросить атом» 2204(Q) и «возвратить атом» 2204(R).Functional calls 2204 (FIG. 22) are used by the
«Добавить атом» 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
«Запросить атом» 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
«Возвратить атом» 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
Функциональные вызовы «добавить атом» 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
Функциональные вызовы «удалить атом» 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
Таким образом, после удаления атомарного элемента 2304 он может оставаться в РДА 2202 и таблице 2206 РДА в состоянии «зомби», в результате чего пакеты для этого (теперь неработающего и закрытого) сеанса направляются на хост 108 контекста сеанса для надлежащей, в зависимости от протокола, обработки. Например, TCP-пакеты, полученные после устранения TCP-соединения, направляются на хост 108, который прекратил соединение. Этот хост 108 может надлежащим образом ответить - возможно, послав RST или повторно послав FIN-ACK. Время, которое атомарный элемент 2304 проводит в этом состоянии «зомби», совпадает (по возможности точно) с зависящим от протокола временем простоя для используемого надежного протокола связи.Thus, after the removal of the
Функциональный вызов «запросить атом» 2204(Q) используется для доступа к атомарному элементу 2304, когда первый модуль 106 выравнивания нагрузки принимает входящий запрос соединения, ссылающийся на сеанс, который не хранится в локальной таблице 2206 РДА для РДА 2202 первого модуля 106 выравнивания нагрузки. Заметим, что другие части РДА 2202 можно одновременно запрашивать посредством широковещательного функционального вызова «запросить атом» 2204(Q) или последовательно, пока не будет получен положительный функциональный вызов «возвратить атом» 2204(R).The atomic request function call 2204 (Q) is used to access
Функциональный вызов «возвратить атом» 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
Части РДА 2202 и таблицы 2206 РДА можно организовывать и администрировать всевозможными способами. Проиллюстрированные способы относятся к дублированию/избыточности, локальному кэшированию после получения, хэшированию для выбора местоположения и т.д. Можно использовать нулевой, первый, второй или более высокий уровень дублирования вплоть до полного дублирования. При нулевом уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, без дублирования в другие части РДА 2202.Parts of the
При первом уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, и также добавляется (копируется) в другую часть РДА 2202 с использованием функционального вызова «добавить атом» 2204(А). Это позволяет справиться с одним уровнем сбоя для модуля 106 выравнивания нагрузки. Аналогично, при втором уровне дублирования каждый атомарный элемент 2304 сохраняется в РДА 2202, принимающем сообщение 2008(U) начала сеанса для него, и также добавляется в две другие части РДА 2202. В целом, одна, две и т.д. части РДА 2202, в которые данная часть РДА 2202 копирует атомарные элементы 2304, заранее определены или выбираются произвольно. Можно также применять третий, четвертый и т.д. уровни дублирования.At the first duplication level, each
Кроме того, можно использовать полное дублирование, при котором каждый атомарный элемент 2304, который сохраняется на РДА 2202, принимающем сообщение 2008(U) начала сеанса, также добавляется в каждую другую часть РДА 2202. На выбор уровня дублирования влияют несколько факторов. По мере возрастания уровня дублирования надежность повышается, а задержка уменьшается. С другой стороны, сетевой трафик и использование памяти возрастают с повышением уровня дублирования.In addition, you can use full duplication, in which each
Когда полное дублирование не используется, возможно локальное кэширование после получения. Например, когда часть РДА 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
Еще одна опция в отсутствие использования полного дублирования может состоять в хэшировании для выбора местоположения. Первый атомарный элемент 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
Благодаря хэшированию для выбора местоположения, по меньшей мере, одна часть РДА 2202, которая локально кэшировала нужный атомарный элемент 2304 в своей таблице 2206 РДА, доступна по идентификатору сеанса. Поэтому функциональный вызов «запросить атом» 2204(Q) может быть направлен на известную(ые) часть(и) РДА 2202. Это обычно снижает сетевой трафик и/или задержку.Due to hashing for location selection, at least one part of the
Это хэширование для выбора местоположения можно использовать на первом, втором, третьем или более уровне дублирования, причем каждый диапазон хэширующих значений отображается на одну, две, три и т.д. разные части РДА 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
На фиг.24 показана логическая блок-схема 2400 способа управления информацией сеанса на множественных модулях выравнивания нагрузки. Логическая блок-схема 2400 содержит восемь блоков 2402-2416. Хотя действия логической блок-схемы 2400 могут осуществляться в других средах и с помощью различных программных схем, фиг. 1-3, 19, 20, 22 и 23В используются, в частности, для иллюстрации определенных аспектов и примеров способа.24 is a
На блоке 2402 анализируется входящий запрос соединения со ссылкой на сеанс. Например, функция 2012 маршрутизации трафика может получить входящий запрос соединения, который ссылается на ранее открытый/установленный сеанс определенного типа. На блоке 2404 осуществляется поиск в локальной таблице РДА с использованием ссылки на сеанс. Например, для данных модуля 106 выравнивания нагрузки и функции 2012 маршрутизации трафика его часть РДА 2202 может осуществлять поиск в своей соответствующей таблице 2206 РДА по ссылке на сеанс.At
На блоке 2406 производится определение, совпадает ли ссылка на сеанс с ключом локальной таблицы РДА. Например, часть РДА 2202 может производить поиск в полях 2304(K) ключа множественных элементов 2304 таблицы 2206 РДА, чтобы определить, совпадает ли ссылка на сеанс с какими-либо значениями полей 2304(K) ключа. Если да, то логическая блок-схема 2400 переходит к блоку 2412.At
Если же ссылка на сеанс не совпадает ни с каким ключом, то логическая блок-схема 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
На блоке 2410 происходит получение возвращенного атома. Например, может быть получена информация от функционального вызова «возвратить атом» 2204(R), выданного другой частью РДА 2202. Другая часть РДА 2202 успешно обнаружила атомарный элемент 2304 в своей соответствующей таблице 2206 РДА, причем обнаруженный атомарный элемент 2304 имеет ключ, совпадающий со ссылкой на сеанс. Информация от функционального вызова «возвратить атом» 2204(R) содержит значения из поля 2304(K) ключа и поля 2304(D) данных для обнаруженного атомарного элемента 2304. Эти значения соответствуют идентификатору сеанса для сеанса и сетевому адресу хоста 108, который имеет сродство к сеансу.At
На блоке 2412 происходит извлечение атомарного элемента. Атомарный элемент извлекается из локальной таблицы РДА, если совпадение найдено локально (на блоках 2404 и 2406), или из возвращенного атома, если совпадение найдено в другом месте (на блоках 2408 и 2410). Например, атомарный элемент 2304 может быть извлечен из таблицы 2206 РДА части РДА 2202 или из информации, полученной посредством функционального вызова «возвратить атом» 2204(R). Извлеченный атомарный элемент 2304 может быть кэширован в локальной таблице 2206 РДА, если он получен в результате функционального вызова «возвратить атом» 2204(R).At
На блоке 2414 из атомарного элемента выявляют хост, имеющий сродство к сеансу, на который указывает ссылка. Например, значение поля 2304(D) данных извлеченного атомарного элемента 2304 можно узнать, чтобы, таким образом, узнать сетевой адрес хоста 108, имеющего сродство к сеансу. На блоке 2416 входящий запрос соединения маршрутизируется на выявленный хост, например функция 2012 маршрутизации трафика и/или функция пересылки может маршрутизировать входящий запрос соединения, имеющий ссылку на сеанс на выявленный хост 108, имеющий сродство к сеансу. В следующем разделе описаны иллюстративные функции классификации, маршрутизации запросов и пересылки.At
Классификация, пересылка и маршрутизация запроса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
Маршрутизация на уровне запросов происходит на более высоком уровне, чем маршрутизация на уровне пакетов. В общем случае, маршрутизатор 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
Маршрутизаторы 306 запросов обычно зависят от приложения и могут быть достаточно расширяемыми в отношении того, что они могут делать. Исключительно в порядке примера в нижеследующем описании рассмотрен единственный класс маршрутизаторов 306 запросов - маршрутизаторы 306(H/S) запросов HTTP/SSL. Показано, что клиент 102, имеющий сетевой адрес С1, связывается по сети 104 с хостами 108(1) и 108(2), имеющими сетевые адреса Н1 и Н2, соответственно. Связь осуществляется посредством инфраструктуры выравнивания нагрузки, которая содержит маршрутизатор 306(H/S) запросов HTTP/SSL.
Маршрутизатор 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
Маршрутизатор 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
Во-вторых, маршрутизатор 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
В-третьих, маршрутизатор 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
В-шестых, клиент 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,
В-седьмых, клиент 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,
Поскольку маршрутизатор 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
Маршрутизаторы запросов других классов могут соответствовать другим иллюстративным протоколам помимо 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
Маршрутизация на уровне пакетов имеет несколько преимуществ над маршрутизацией на уровне запросов. Эти преимущества включают в себя прозрачность (клиентские пакеты доставляются на хосты в первозданном виде, сохраняя 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
На блоке 2602 происходит прием входящего пакета. Например, пакет от клиента 102 может поступать на блок пересылки 302 модуля 106 выравнивания нагрузки. На блоке 2604 происходит определение, относится ли полученный пакет к уже существующему сеансу. Например, блок 302 пересылки может свериться с локальной таблицей 2206() РДА, чтобы определить, что принятый пакет уже является частью сеанса TCP/IP.At
Кроме того, блок 302 пересылки может свериться с локальной таблицей 2206() РДА и определить, что полученный пакет уже не является частью сеанса TCP/IP. В этом случае блок 302 пересылки подает полученный пакет на классификатор 304, который проверяет сродство к сеансу на более высоком уровне для полученного пакета, если он имеет ссылку на сеанс. Примеры таких действий описаны выше, в частности со ссылкой на фиг.24, и ниже, в частности со ссылками на фиг. 27 и 28.In addition, forwarding
Если полученный пакет относится к уже существующему сеансу (что определено на блоке 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
На блоке 2608 производится определение, работоспособен ли хост, имеющий сродство к сеансу. Например, классификатор 304 может свериться с объединенным кэшем 1208 работоспособности и нагрузки, чтобы определить, работоспособен ли хост 108, имеющий сродство к сеансу, в особенности для тех принятых пакетов, которые являются частью сеансов, которые находятся на более высоком логическом уровне, чем сеансы TCP/IP. Действие(я) этого блока могут осуществляться совместно с обработчиком 314 работоспособности и нагрузки.At
Если хост, имеющий сродство к сеансу, работоспособен (что определено на блоке 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
Если же хост, имеющий сродство к сеансу, неработоспособен (что определено на блоке 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
На блоке 2614 полученный пакет маршрутизируется на выбранный хост. Например, классификатор 304 может маршрутизировать (в необязательном порядке, через блок 302 пересылки) пакет на выбранный хост 108. На блоке 2616 прокладывается маршрут для пути соединения к выбранному хосту. Например, классификатор 304 может добавить элемент информации сеанса в таблицу 2206 РДА, в особенности, в таблицу 2206() РДА, которая является локальной по отношению к блоку 302 пересылки, который передал полученный пакет классификатору 304. Этот элемент информации сеанса можно дублировать в соответствии с установленной политикой избыточности для РДА 2202 (например, блока 308 отслеживания сеансов).At
Действия блока 2614 и 2616 могут осуществляться в конкретно показанном порядке, когда блок 2616 выполняется до блока 2614, когда действия частично или полностью перекрываются в любом порядке и т.д. Заметим, что вышеописанные действия, осуществляемые классификатором 304, могут альтернативно выполняться маршрутизатором 306 запросов (или, в целом, функцией 2012 маршрутизации трафика).The actions of
Помимо маршрутизации на уровне пакетов и на уровне запросов, описанную здесь функцию маршрутизации трафика (например, функцию 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
На фиг.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
Реализация РДА 2202 блока 308 отслеживания сеансов используется для реализации таблицы 2206 РДА. Однако блоки 1904 сохранения сродства к сеансу, в общем случае, также применимы к иллюстративной последовательности действий по маршрутизации трафика, показанной на фиг.27. Блок 302(1) пересылки содержит часть 2206(1) таблицы РДА, а блок 302(2) пересылки содержит часть 2206(2) таблицы РДА. Входящие пакеты маршрутизируются на хост 108(1) или хост 108(2).An implementation of the
В описанной реализации РДА 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
Позиция (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
Позиция (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
Классификатор 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
Позиция (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).
На фиг.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.
Позиция (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
Позиция (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
Позиция (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
В описанной реализации классификатор 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
Таким образом, функция классификации совместно с функцией отслеживания сеансов может управлять таблицами маршрутизации и их маршрутами, которые используются функцией пересылки. Поэтому функция пересылки, которая разделена на другое устройство, может осуществляться с использованием высокоскоростного, но сравнительно простого оборудования. Альтернативно, классификаторы 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,
На фиг.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
В описываемой реализации каждый из этих пяти компонентов 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
В частности, в данном примере, классификатор 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
В некоторый момент в ходе соединения [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
Таким образом, блок 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
Вышеприведенные описания сосредоточены, главным образом, на сбоях отдельных компонентов блока 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
На фиг.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.
Показано, что хост 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
В описываемой реализации, (1) обозначает, что классификатор 304 запрашивает одно или несколько распределений конечных точек приложения (например, посредством, по меньшей мере, одного запроса 1802 распределения конечных точек приложения) в среде, где используется маркерная схема 1806 распределения. Обработчик 314 работоспособности и нагрузки в этом примере отвечает, предоставляя маркерные распределения 3002 (например, посредством, по меньшей мере, одного ответа 1804 по распределению конечных точек приложения).In the described implementation, (1) means that the
В частности, маркерное распределение для приложения №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
Позиция (2) обозначает, что блок 302 пересылки получает начальный входящий пакет для нового соединения. Поскольку никакой маршрутизации для этого нового соединения в локальной части таблицы 2206 РДА блока 302 пересылки нет, то блок 302 пересылки пересылает начальный пакет на классификатор 304, что обозначено позицией (3).Position (2) indicates that the
Позиция (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,
Классификатор 304 может потреблять маркеры любым из многих возможных способов. Например, классификатор 304 может использовать круговой подход вне зависимости от количества маркеров на конечную точку. Альтернативно, согласно линейному подходу, классификатор 304 может просто начать с IP1 и продвигаться через IP3, потребляя все маркеры для каждой конечной точки, прежде чем перейти к следующей конечной точке. Кроме того, классификатор 304 может потреблять в любой момент времени маркер из группы маркеров, зависящей от конечной точки, которая в данный момент имеет наибольшее количество маркеров. Согласно последнему подходу, классификатор 304 выбирает IP1. Также можно использовать и другие подходы.
Показано, что классификатор 304 потребляет маркер для конечной точки IP2 приложения. Следовательно, при потреблении маркера группа маркеров для IP2 уменьшается с 35 маркеров до 34 маркеров. Кроме того, начальный пакет для нового соединения должен маршрутизироваться на конечную точку IP2 приложения.
Позиция (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
На фиг.31 показаны механизмы обеспечения высокой надежности инфраструктуры 106 выравнивания сетевой нагрузки. В частности, показаны обнаружение 3104 сбоя, обработка 3106 сбоя и исправление 3108 сбоя. Эти механизмы обеспечения высокой надежности описаны применительно к разным компонентам инфраструктуры 106 выравнивания сетевой нагрузки. Компоненты инфраструктуры 106 выравнивания сетевой нагрузки включают в себя блок 302 пересылки, классификатор 304, маршрутизатор 306 запросов, блок 308 отслеживания сеансов и обработчик 314 работоспособности и нагрузки.On Fig shows the mechanisms for ensuring high reliability of the
Позиция 3102(А) обозначает локальный сбой блока 302 пересылки. Позиция 3104(А) обозначает, что сбой обнаружен, по меньшей мере, одним коммутатором, знающим о выравнивании нагрузки. Для обработки локального сбоя 3102(А) коммутатор, знающий о выравнивании нагрузки, перенаправляет пакеты на другой(ие) блок(и) пересылки, что обозначено позицией 3106(А). Для исправления сбоя блока 302 пересылки маршруты, локально хранившиеся на блоке 302 пересылки, повторно строятся, что обозначено позицией 3108(А) на блоке(ах) пересылки, на которые перенаправлены пакеты, с использованием распределенного диспетчера отслеживания сеансов и его таблицы, в частности РДА и его таблицы. Таким образом, распределенный диспетчер отслеживания сеансов может обеспечивать избыточные данные на одном или нескольких уровнях.Reference numeral 3102 (A) indicates a local failure of the
Позиция 3102(В) обозначает локальный сбой классификатора 304. Позиция 3104(В) обозначает, что сбой обнаружен, по меньшей мере, одним блоком пересылки. Для обработки локального сбоя 3102(В) блок пересылки, обнаруживший сбой, перенаправляет пакеты на другой(ие) классификатор(ы), что обозначено позицией 3106(В). Для исправления сбоя классификатора 304 информация сеанса, локально хранившаяся на классификаторе 304, повторно строится, что обозначено позицией 3108(В), на классификаторе(ах), на которые перенаправлены пакеты, с использованием РДА. Эта информация сеанса может представлять собой, например, информацию сеанса более высокого уровня, чем основные соединения TCP/IP. Кроме того, эту информацию сеанса можно рассматривать как часть инфраструктуры отслеживания сеансов, размещенную на том же устройстве, что и классификатор 304.Reference numeral 3102 (B) indicates a local failure of
Позиция 3102(С) обозначает локальный сбой маршрутизатора 306 запросов. Позиция 3104(С) обозначает, что сбой обнаружен, по меньшей мере, одним блоком пересылки и/или коммутатором, знающими о выравнивании нагрузки. Для обработки локального сбоя 3102(С), блок пересылки и/или коммутатор, знающий о выравнивании нагрузки, перенаправляет пакеты на другой(ие) маршрутизатор(ы) запросов, что обозначено позицией 3106(С). Отдельные текущие логические запросы, на которых работает маршрутизатор 306 запросов после возникновения локального сбоя 3102(С), могут быть потеряны, если дублировать каждый такой отдельный логический запрос, пока запрос обрабатывается. Для исправления сбоя маршрутизатора 306 запроса информация сеанса и/или маршруты, локально хранившиеся на маршрутизаторе 306 запросов, повторно строятся, что обозначено позицией 3108(С) на маршрутизаторе(ах) запросов, на которые перенаправляются пакеты (и, таким образом, новые логические запросы). Повторное построение информации сеанса может осуществляться с использованием РДА. Опять же, такую информацию сеанса можно рассматривать как часть инфраструктуры отслеживания сеансов, размещенную на том же устройстве, что и маршрутизатор 306 запросов.Position 3102 (C) indicates a local failure of the
Позиция 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
Позиция 3102(Е) обозначает локальный сбой обработчика 314 работоспособности и нагрузки. Позиция 3104(Е) обозначает, что сбой обнаружен, по меньшей мере, одним классификатором и/или маршрутизатором запросов. Например, сбой может обнаружить компонент, принимающий информацию работоспособности и нагрузки от обработчика 314 работоспособности и нагрузки, если обработчик 314 работоспособности и нагрузки перестает отвечать, особенно, если обработчик 314 работоспособности и нагрузки размещен не на том устройстве, где размещен запрашивающий компонент. Для обработки локального сбоя 3102(Е), для информации работоспособности и нагрузки используются избыточность данных работоспособности и нагрузки и внутренняя обработка сбоя, что обозначено позицией 3106(Е).Reference numeral 3102 (E) indicates a local failure of the health and
Например, каждый обработчик 314 работоспособности и нагрузки может содержать объединенный кэш 1208 работоспособности и нагрузки, который дублирует информацию в таблицах 1204 работоспособности и нагрузки на множественных хостах 108. Кроме того, потребители информации 1206 работоспособности и нагрузки данного обработчика 314 работоспособности и нагрузки могут располагаться на том же устройстве, что и обработчик 314 работоспособности и нагрузки, вследствие чего этот сбой будет внутренне допустим. Аналогично, официальная версия соответствующей части информации 1206 работоспособности и нагрузки находится на соответствующем хосте 108, из-за чего сбой хоста 108 делает потерю соответствующей части информации работоспособности и нагрузки допустимой.For example, each health and
Для исправления сбоя обработчика 314 работоспособности и нагрузки данный компонент выравнивания сетевой нагрузки, который потребляет информацию работоспособности и нагрузки, может запросить другой обработчик работоспособности и нагрузки, потому что каждый такой обработчик 314 работоспособности и нагрузки содержит объединенный кэш информации обработчика работоспособности и нагрузки. Кроме того, когда обработчик 314 работоспособности и нагрузки вновь становится доступным, можно использовать протокол 1500 обмена сообщениями, что обозначено 3108(Е), для повторного построения его объединенного кэша информации работоспособности и нагрузки. Использование этих иллюстративных механизмов обеспечения высокой надежности позволяет обнаруживать, обрабатывать и исправлять сбойные компоненты инфраструктуры 106 выравнивания сетевой нагрузки, чтобы маскировать такие сбои для клиентов 102.To correct a malfunction of the health and
Перенос соединений с необязательным туннелированием и/или выравниванием нагрузки на уровне приложений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
На фиг.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
Для выравнивания нагрузки на уровне приложений в среде на основе 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,
Показано, что инфраструктура 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
В описываемой реализации блок 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
Позиция (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
Позиция (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
Позиция (5) обозначает, что классификатор 304 отправляет «большой двоичный объект» («двоичный блоб»), представляющий состояние TCP-соединения хосту 108(1). Это состояние соединения агрегируется блоком 310 переноса соединений во взаимодействии со стеком TCP на классификаторе 304. Двоичный блоб содержит данные от клиента 102(1), квитированные классификатором 304, и параметры TCP, например упорядоченная четверка TCP/IP, начальные порядковые номера и т.д.Position (5) indicates that the
Позиция (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
Позиция (7) обозначает, что классификатор 304, во взаимодействии со стеком TCP на классификаторе 304, очищает внутренне состояние, поддерживаемое для этого соединения. Эта очистка внутреннего состояния на классификаторе 304 осуществляется «молча», т.е. клиент 102(1) не извещается о сбросе состояния соединения. Классификатор 304 также добавляет маршрут в локальную таблицу маршрутизации блока 302 пересылки, который указывает, что хост 108(1) является пунктом назначения для пакетов этого соединения.Position (7) indicates that the
Позиция (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
На фиг.33 изображена логическая блок-схема 3300 способа переноса соединения с первого устройства на второе устройство. Логическая блок-схема 3300 содержит семь блоков 3302-3314. Хотя фиг. 32 и 34-37 посвящены, главным образом, переносу соединения в среде выравнивания сетевой нагрузки, описанный здесь перенос соединения можно осуществлять между двумя устройствами общего вида, каждое из которых имеет функцию переноса соединения, например, как у блока 310 переноса соединений.33 is a
На блоке 3302 первое устройство принимает соединение. Например, первое устройство может заканчивать входящее соединение в соответствии с одним или несколькими протоколами части стека протоколов сетевого стека. На блоке 3304 происходит получение данных для соединения на первом устройстве. Например, эти данные можно принимать в начальном пакете, который запрашивает соединение, или в одном или нескольких пакетах, которые поступают после принятия соединения.At
На блоке 3306 происходит агрегирование состояния соединения для принятого соединения из стека протоколов (в более общем случае, из сетевого стека) на первом устройстве. Например, состояние протокола для одного или нескольких протоколов из стека протоколов можно компилировать и агрегировать с помощью любых полученных данных, которые были квитированы. На блоке 3308 состояние соединения отправляется с первого устройства на второе устройство. Например, агрегированная информация первого состояния может быть отправлена с использованием надежного протокола на второе устройство.At
На блоке 3310 состояние соединения для переносимого соединения поступает с первого устройства на второе устройство. На блоке 3312 состояние соединения вставляется в стек протоколов (в более общем случае, в сетевой стек) второго устройства. Например, соединение можно «регидратировать» с использованием протоколов стека протоколов второго устройства, чтобы программы, находящиеся выше уровня стека протоколов, не знали, что соединение является перемещенным соединением. В частности, состояние протокола можно внедрить в стек протоколов. Агрегированные данные состояния соединения также часто включаются на втором устройстве. На блоке 3314, соединение продолжается на втором устройстве. Например, соединение может продолжаться на втором устройстве, как если бы соединение не оканчивалось раньше в другом месте.At
На фиг.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
Показано, что устройство-отправитель 3400 содержит в качестве части своего сетевого стека физический сетевой интерфейс (ФСИ) 3410, минипорт 3408 ФСИ, протокольно-аппаратный интерфейс 3406, стек 3404 протоколов и уровень 3402 сокетов. Устройство-отправитель 3400 также содержит функцию 106 выравнивания нагрузки, например, классификатор 304 на уровне приложений и блок 310 переноса соединений. В частности, блок 310 переноса соединений содержит промежуточный драйвер 3414 переноса и «прокладку» 3412 блока переноса. Блок 310 переноса соединений способен выгружать соединение из устройства-отправителя 3400.It is shown that the sending
В описываемой реализации физический сетевой интерфейс 3410 может представлять собой сетевой адаптер (СА) (например, СА Ethernet), беспроводной интерфейс и т.д. Хотя показан только один физический сетевой интерфейс 3410, данное устройство может иметь множество таких физических сетевых интерфейсов 3410 (т.е. устройство-отправитель 3400 может быть подключено к нескольким линиям передачи данных). Каждый физический сетевой интерфейс 3410 обычно соответствует одному или нескольким физическим сетевым адресам.In the described implementation, the
Минипорт 3408 ФСИ - это программный модуль, который понимает и обеспечивает сопряжение с конкретной аппаратной реализацией физического сетевого интерфейса 3410. Протокольно-аппаратный интерфейс 3406 - это уровень, содержащий один или несколько соответствующих интерфейсов между двумя или более соответствующими протоколами и минипортом 3408 ФСИ.The
Стек 3404 протоколов включает в себя один или несколько соответствующих модулей, каждый из которых предназначен для одного или нескольких соответствующих протоколов. Примеры таких протоколов описаны ниже со ссылкой на фиг. 36 и 37. В переходном контексте стек 3404 протоколов содержит состояние 3420 протокола для каждого соединения, существующего на устройстве-отправителе 3400. Уровень 3402 сокетов лежит между программой, например функцией 106 выравнивания нагрузки, и стеком 3404 протоколов. Уровень 3402 сокетов обеспечивает API между функцией 106 выравнивания нагрузки и стеком 3404 протоколов и позволяет, помимо прочего, программам регистрироваться для соединений.The
Промежуточный драйвер 3414 переноса или, более обобщенно, драйвер 3414 переноса размещается на уровне 3406 протокольно-аппаратного интерфейса. Прокладка 3412 блока переноса размещается прозрачно между стеком 3404 протоколов и уровнем 3402 сокетов.The
Когда начальный пакет (не показан), запрашивающий новое соединение, представляется устройству-отправителю 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
В ходе работы промежуточный драйвер 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
Агрегирование 3418 состояния соединения также агрегирует данные 3416, отведенные на блок 310 переноса соединений и уже квитированные из устройства-отправителя 3400 (например, функцией 106 выравнивания нагрузки). Это агрегированное состояние 3418 соединения включает в себя состояние 3420 протокола и данные 3416 (и, в необязательном порядке, другую информацию, относящуюся к соединению). Затем агрегированное состояние 3418 соединения передается в виде двоичного блоба 3422 с устройства-отправителя 3400 на устройство-адресат.Aggregation of the
Двоичный блоб 3422 можно посылать с устройства-отправителя 3400 на устройство-адресат с использованием надежного протокола. Под «надежным» можно понимать, например, что двоичный блоб 3422 принимается на устройстве-адресате без изменений, даже если отдельные пакеты, составляющие двоичный блоб 3422, пропали или повреждены. Этот двоичный блоб 3422 можно также пакетировать с идентификатором потока, если соединение подлежит в дальнейшем туннелированию посредством блока 312 туннелирования. Идентификаторы потока описаны ниже, в частности, со ссылкой на фиг. 38 и 39.The
На фиг.35 показан подход к переносу соединений с точки зрения устройства-адресата 3500. Устройство-адресат 3500 подобно устройству-отправителю 3400 в отношении различных показанных уровней/модулей, включая блок 310 переноса соединений. Однако показано, что, по меньшей мере, одно приложение 316 на уровне приложений сопрягается с уровнем 3402 сокетов. Поэтому устройство-адресат 3500 может содержать хост 108. Кроме того, блок 310 переноса соединения способен загружать соединение от устройства-отправителя 3400.35 shows an approach to transferring connections from the perspective of the
В описываемой реализации, приложение 316 является пунктом назначения пакета, инициирующего соединение, принятого на устройстве-отправителе 3400. Устройство-адресат 3500 принимает двоичный блоб 3422 от устройства-отправителя 3400. Двоичный блоб 3422 включает в себя состояние соединения, связанное с соединением, переносимым на устройство-адресат 3500 и, в необязательном порядке, идентификатор потока. Это состояние соединения включает в себя состояние 3420 протокола и квитированные данные 3416 (и, возможно, другую информацию, относящуюся к соединению).In the described implementation,
В ходе работы, когда двоичный блоб 3422 достигает уровня 3406 протокольно-аппаратного интерфейса, промежуточный драйвер 3411 переноса распознает его как блоб для переноса соединения и отводит его. Состояние соединения вставляется на 3502, чтобы создать видимость для приложения 316, что соединение изначально заканчивалось на устройстве-адресате 3500.During operation, when the
В частности, состояние 3420 протокола вставленного состояния 3502 соединения внедряется в стек 3404 протоколов. В описываемой реализации состояние 3420 протокола внедряется первым на протоколах высшего уровня, а затем на протоколах более низкого уровня стека 3404 протоколов. После внедрения состояния 3420 протокола в стек 3404 протоколов, данные 3416 можно указывать приложению 316. Эти данные 3416 можно предоставлять приложению 316, как если бы они были частью вновь и локально оконченного соединения.In particular, the
По завершении вставки 3502 состояния соединения, соединение, инициированное пакетом, полученным на устройстве-отправителе 3400, успешно переносится оттуда на устройство-адресат 3500. Последующие пакеты для соединения можно пересылать непосредственно на устройство-адресат 3500 без прохождения через устройство-отправитель 3400 или, по меньшей мере, только с простой маршрутизацией и без применения к ним анализа уровня приложений. В необязательном порядке, эти пакеты могут туннелировать так, что промежуточный драйвер 3414 переноса эффективно работает как виртуальный СА на программной основе, который привязан к виртуальному IP-адресу. Другими словами, промежуточный драйвер 3414 переноса (фиг.35) может содержать виртуальный сетевой адаптер, привязанный к адресу назначения неинкапсулированных пакетов.Upon completion of the
На фиг.36 показан подход к процедуре 3600 выгрузки для переноса соединения. Процедура 3600 выгрузки переноса демонстрирует дополнительные иллюстративные подробности переноса соединения со стороны устройства-отправителя 3400. Показано, что общий стек 3404 протоколов содержит стек 3404(Т) TCP, стек 3404(I) IP и стек 3404(А) протокола разрешения адресов (ARP). Однако, альтернативно, можно использовать другие стеки 3404() конкретных протоколов.On Fig shows the approach to the
Для примера, уровень 3406 протокольно-аппаратного интерфейса может быть реализован как уровень на основе спецификации стандартного интерфейса сетевых адаптеров (NDIS) в среде операционной системы (OS) Microsoft® Windows®. Кроме того, уровень 3402 сокетов может быть реализован как уровень Winsock™ в среде (OS) Microsoft® Windows®.For example, the protocol-
В описываемой реализации промежуточный драйвер 3414 переноса включает в себя протокольно-аппаратные интерфейсы 3406 на стыках со стеком 3404(А) ARP и с минипортом 3408 ФСИ. Драйвер 3414 переноса служит в качестве цели выгрузки в процедуре 3600 выгрузки переноса. Цель выгрузки - это минипорт протокольно-аппаратного интерфейса 3406, показанного в этом примере. В процедуре 3700 загрузки переноса (на фиг.37), промежуточный драйвер 3414 переноса служит в качестве отводчика загрузки.In the described implementation, the
В частности, промежуточный драйвер 3414 переноса привязан к каждому физическому сетевому интерфейсу 3410, через который можно переносить TCP-соединение. Промежуточный драйвер 3414 переноса обычно действует как транзитный драйвер, пропуская пакеты вверх или вниз по сетевому стеку и не взаимодействуя с пакетами иным образом. Однако промежуточный драйвер 3414 переноса не взаимодействует с пакетами, относящимися к переносам соединения (в необязательном порядке, включающими в себя впоследствии туннелированные пакеты).In particular, the
Промежуточный драйвер 3414 переноса отвечает за следующее: (i) принятие запросов выгрузки переноса; (ii) агрегирование информации состояния протокола, относящейся к переносимому TCP-соединения, скомпилированной из стеков 3404() конкретных протоколов, совместно с квитированными данными, для получения информации состояния соединения; и (iii) передача агрегированного состояния соединения на устройство-адресат 3500 для процедуры 3700 загрузки переноса. Надежный протокол проводной связи для такой передачи может совместно использоваться с тем, который используется компонентами 2002 и 2010 отслеживания сеансов, для отправки и получения сообщений 2008 информации сеанса (например, описанных выше со ссылкой на фиг.20).The
Другой задачей промежуточного драйвера 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
Прокладка 3412 блока переноса открывает интерфейс клиента транспортного уровня стеку 3404(Т) TCP и открывает интерфейс поставщика транспортного уровня уровню 3402 сокетов. Прокладка 3412 блока переноса играет две роли: (i) инициируют процедуру 3600 выгрузки переноса соединения на устройстве-отправителе 3400, а затем процедуру 3700 загрузки переноса на устройстве-адресате 3500 и (ii) посредничает в процессе классификации между прикладной программой 316 хоста, программой классификации 304 выравнивания нагрузки и уровнем 3402 сокетов. Прокладка 3412 блока пересылки и промежуточный драйвер 3414 блока пересылки описаны ниже со ссылкой на фиг. 36 и 37.
Для проиллюстрированной процедуры 3600 выгрузки переноса перенос TCP-соединения осуществляется после того, как классификатор 304 классифицирует входящее TCP-соединение с использованием одного, двух или более его пакетов. Процедура 3600 выгрузки переноса описана посредством позиций <1>-<7>.For the illustrated transfer upload
Позиция <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
Позиция <2> обозначает, что, после того как TCP-соединение классифицировано, классификатор 304 инициирует перенос TCP-соединения на выбранный хост 108. В частности, через уровень 3402 сокетов на прокладку 3412 блока переноса поступает команда переноса, указывающая устройство-адресат 3500.Position <2> indicates that after the TCP connection is classified, the
Позиция <3> обозначает, что прокладка 3412 блока переноса инициирует перенос TCP-соединения для компиляции состояния протокола TCP. В частности, прокладка 3412 блока переноса вызывает API начальной выгрузки переноса TCP (или, в более общем случае, функциональный вызов «перенести соединение» или команду переноса соединения). Эта процедура компилирует соответствующее состояние для указанного TCP-соединения, которое используется для восстановления соединения на устройстве-адресате 3500. Скомпилированное состояние 3420 протокола включает в себя состояние из промежуточных уровней стека, в том числе стека 3404(Т) TCP, стека 3404(I) IP и стека 3404(А) ARP.Position <3> indicates that the
Позиция <4> обозначает, что, после того как стек 3404 протоколов скомпилировал состояние 3420 протокола для переносимого TCP-соединения, он вызывает API начальной выгрузки переноса на минипорте, к которому он привязан; в этом примере этим минипортом является промежуточный драйвер 3414 блока переноса. Однако, на практике, между стеком 3404 протоколов и промежуточным драйвером 3414 блока переноса могут быть вставлены другие промежуточные драйверы, например QoS IP. В этом случае, эти промежуточные драйверы блока переноса могут участвовать в переносе, если относятся, компилируя/агрегируя свое состояние в информацию состояния соединения для переносимого соединения. Промежуточные драйверы продолжают распространять вызов «начать выгрузку переноса» вниз на сетевой стек, что, в конце концов, приводит к выполнению обработчика выгрузки переноса на промежуточном драйвере 3414 блока переноса. При этом промежуточный драйвер 3414 блока переноса также агрегирует любые квитированные данные с остальным состоянием соединения для переноса TCP-соединения на устройство-адресат 3500.Position <4> means that after the
Позиция <5> обозначает, что после сохранения/копирования информации состояния соединения для переносимого TCP-соединения промежуточный драйвер 3414 блока переноса извещает сетевой стек о том, что перенос находится на своих окончательных стадиях, вызывая API завершения начальной выгрузки переноса. Этот API завершения начальной выгрузки переноса идет по обратному пути вверх от сетевого стека, через те же промежуточные драйверы, если имеются, и, наконец, к стеку 3404 протоколов. По мере того, как каждый уровень обрабатывает этот вызов, информация состояния, связанная с переносимым соединением, может освобождаться. Пока обработка этого вызова не завершится, каждый уровень может посылать извещения об обновлении вниз на сетевой стек, чтобы обновить любую часть состояния соединения, которая изменилась с тех пор, как начался перенос.Position <5> means that after saving / copying the connection status information for the transferred TCP connection, the
Позиция <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
Позиция <7> обозначает, что, когда вызов «начальная выгрузка переноса завершена» возвращается на промежуточный драйвер 3414 блока переноса (через часть прокладки 3412 блока переноса блока 310 переноса соединения), перенос TCP-соединения от устройства-отправителя 3400 на устройство-адресат 3500 может начинаться с переноса на него состояния соединения. Состояние соединения можно передавать асинхронно и надежно.Position <7> means that when the call “initial transfer unloading is completed” returns to the
После начала переноса устройство-отправитель 3400 также должно гарантировать, что последующие данные от клиента 102 пересылаются на устройство-адресат 3500. Поэтому даже после успешного переноса соединения на адресат отправитель сохраняет некоторый объем состояния для соединения (например, элемент таблицы маршрутизации), чтобы правильно маршрутизировать последующие пакеты на адресат. Когда соединение заканчивается, адресат извещает отправителя, чтобы позволить ему очистить все оставшееся состояние для перенесенного соединения.Once the transfer has begun, the sending
Кроме того, вследствие асинхронной природы переноса соединения, пакеты данных для переноса соединения, которые пересылаются устройством-отправителем 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
На фиг.37 показан подход к процедуре 3700 загрузки для переноса соединения. Процедура 3700 загрузки переноса демонстрирует иллюстративные подробности для переноса соединения со стороны устройства-адресата 3500.37 shows an approach to a
Когда переносимое соединение поступает на устройство-адресат 3500, оно опирается на промежуточный драйвер 3414 блока переноса для обработки. После расширения и объединения состояния переносимого соединения промежуточный драйвер 3414 блока переноса в сочетании с прокладкой 3412 блока переноса вставляет переносимое соединение в локальный сетевой стек прозрачно для приложения 316. Для процедуры 3700 загрузки переноса описан перенос TCP-соединения в позициях <1>-<8>.When the portable connection arrives at the
Позиция <1>, как описано выше со ссылкой на процедуру 3600 выгрузки переноса, обозначает инициализацию, осуществляемую до операций хостирования приложений. В частности, стек 3404 протоколов делает запросы относительно того, какие имеются возможности выгрузки, если вообще имеются. Промежуточный драйвер 3414 блока переноса заполняет запрос поддержки переноса TCP-соединения, чтобы указать, что загрузка переноса соединения доступна, а также распространяет запрос вниз на минипорт 3408 ФСИ для возможных возможностей выгрузки «дымохода» TCP.Position <1>, as described above with reference to transfer upload
Позиция <2> обозначает, что, когда данные переноса соединения поступают на устройство-адресат 3500, информация переноса соединения (например, пакетированный двоичный блоб 3422) доставляется на промежуточный драйвер 3414 блока переноса. Промежуточный драйвер 3414 блока переноса повторно собирает состояние соединения, согласует его с любыми соответствующими данными, поступившими в ходе переноса, и подготавливается к загрузке на сетевой стек. Любые данные от клиента 102, поступающие в процессе загрузки переносимого соединения, буферизуются промежуточным драйвером 3414 блока переноса. После успешного завершения переноса данные будут доставлены на приложение 316.Position <2> means that when the connection transfer data arrives at the
Согласно позиции <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
Позиция <4> обозначает, что прокладка 3412 блока переноса инициирует загрузку переносимого соединения, вызывая процедуру начальной вставки TCP (или, в более общем случае, процедуру внедрения состояния протокола) и выдавая состояние 3420 переносимого протокола на стек 3404(Т) TCP. Позиция <5> обозначает, что TCP/IP восстанавливает переносимое соединение посредством стека 3404 протоколов с использованием предоставленного состояния 3420 протокола. Это состояние 3420 протокола может включать в себя одно или несколько из состояния транспорта (TCP), состояния пути (IP), состояния соседа и следующего скачка (ARP) и т.д.Position <4> indicates that the
Позиция <6> обозначает, что если переносимое соединение успешно повторно установлено на устройстве-адресате 3500, то TCP инициирует событие соединения с клиентской частью прокладки 3412 блока переноса, чтобы указать установление нового соединения. Имеется множество возможных причин для сбоя, но общие причины могут включать в себя недостаток соответствующего слушателя, сбой маршрутизации и т.д. В этих случаях, когда сетевой стек не способен повторно установить переносимое соединение, не указывается ни одно событие соединения, и в вызове «начальная вставка завершена» задается статус «сбой». Блок 310 переноса соединений отвечает за очистку переноса и отправку извещения о перезагрузке обратно на клиент 102, чтобы прекратить соединение.Position <6> means that if the portable connection is successfully re-established on the
Позиция <7> обозначает, что прокладка 3412 блока переноса действует, как поставщик, распространяющий событие соединения на уровень 3402 сокетов, чтобы указывать слушающему приложению 316 об установлении нового соединения. Если приложение 316 принимает соединение, оно обрабатывает запросы и ответы посредством нормальных операций чтения и записи сокета; приложению 316 может быть неизвестно, что соединение было перемещено. Если приложение 316 не приняло соединение, то TCP заканчивает соединение, но не посылает извещение о перезагрузке обратно на клиент 102. Опять же, в вызове «начальная вставка завершена» устанавливается статус «сбой», и блок 310 переноса соединения отвечает за очистку переноса и отправку извещения о перезапуске обратно на клиент 102, чтобы прекратить соединение.Position <7> indicates that the
Особая ситуация возникает, когда приложение 316 и классификатор 304 совместно расположены на одном и том же устройстве: прокладка 3412 блока переноса может быть судьей между ними. Когда на одном и том же хосте 108 размещены оба класса программ, они оба могут слушать один/одни и тот/те же IP-адрес(а) и порт(ы). Однако TCP обычно имеет одного слушателя на уникальный IP-адрес и порт. Поэтому прокладка 3412 блока переноса может затемнять конфигурацию, когда две программы слушают на одном и том же IP-адресе и порте, мультиплексируя два сокета в единый слушатель на уровне TCP.A special situation arises when the
В этом случае, когда события соединения поступают на клиентскую часть прокладки 3412 блока переноса, прокладка 3412 блока переноса, в качестве поставщика, определяет, на какой слушающий сокет доставлять извещение о соединении на уровне 3402 сокетов. При наличии только одного сокета, слушающего соответствующий IP-адрес и порт, этот сокет принимает событие соединения. При наличии более одного слушающего сокета, получатель зависит от контекста, в котором указано событие соединения. Если событие соединения является фирменным новым соединением для виртуального IP-адреса, то событие соединения доставляется на классификатор 304; если событие соединения относится к выделенному IP-адресу (IP-адресу без выравнивания нагрузки) или является результатом загрузки переносимого соединения, то событие соединения доставляется на целевое приложение 316.In this case, when the connection events are sent to the client part of the
Позиция <8> обозначает, что по завершении переносимого соединения TCP извещает прокладку 3412 блока переноса, вызывая предоставленный обработчик завершения начальной вставки. Код статуса предусмотрен для извещения прокладки 3412 блока переноса, было ли соединение успешно обновлено. Если загрузка переносимого соединения не удается, то блок 310 переноса соединения отвечает за очистку переноса и за извещение клиента 102 о прекращении соединения путем отправки ему команды перезапуска. Если переносимое соединение было успешно вставлено в локальный сетевой стек, то промежуточный драйвер 3414 блока переноса может начать доставлять буферизованные данные с клиента 102, передавая полученный(е) пакет(ы) через путь приема пакетов протокольно-аппаратного интерфейса 3406.Position <8> means that upon completion of the portable connection, TCP notifies the
Когда переносимое соединение оканчивается (по причине неудачной загрузки, из-за того, что перенесенное соединение впоследствии закрыто нормальными средствами, и т.д.), устройство-адресат 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
На фиг.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
Как отмечено выше со ссылкой фиг.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
Такие входящие пакеты содержат 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
Туннелирование посредством блоков 312 туннелирования, согласно описанному здесь, может обеспечивать идентичные виды в отношении адресов (и портов) источника и назначения для клиентов 102 и приложений 316 на хостах 108. Для примера и со ссылками на фиг. 34 и 35, блок 312 туннелирования на каждом из блока 302 пересылки и хоста 108 могут действовать как часть промежуточного драйвера 3414 переноса блока 310 переноса или совместно с ним.Tunneling via
В реализации, описанной со ссылкой на фиг.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
Будучи отображен в упорядоченную четверку 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
Каждый идентификатор 3814 потока может идентифицировать уникальное соединение от устройства, с которого начинается туннелирование (которым в данном примере является блок 302 пересылки). Идентификаторы 3814 потока можно генерировать с использованием любого подходящего механизма, например возрастающего счетчика соединений. Альтернативно, начальный порядковый номер (НПН) получателя TCP/IP, сгенерированный блоком переноса соединений, может служить идентификатором 3814 потока. Кроме того, упорядоченная четверка 3804 TCP/IP является, в более общем случае, парой источник/пункт назначения. Каждое значение источника и значение пункта назначения отдельной пары источник/пункт назначения может включать в себя идентификатор сетевого узла (например, сетевой адрес, порт, некоторые их комбинации и т.д.) для источника и пункта назначения, соответственно, данного пакета, распространяющегося по конкретному соединению.Each
Блок 310 переноса соединений предоставляет отображение 3812 инкапсуляции хосту 108. Блок 312(Н) туннелирования на хосте 108 сохраняет отображение 3812 инкапсуляции в таблице 3810 отображения инкапсуляции как элемент 3810(1) отображения инкапсуляции. Блок 312(Н) туннелирования может затем использовать идентификатор 3814 потока для отображения и идентификации конкретного соединения, соответствующего упорядоченной четверке 3804 TCP/IP. Отображение 3812 инкапсуляции может, в необязательном порядке, сообщаться на хост 108 как часть пакетированного двоичного блоба 3422 в операции переноса соединения.The
Блок 302 пересылки также содержит компонент блока 312(F) туннелирования с таблицей 3806 отображения инкапсуляции. В таблице 3806 отображения инкапсуляции хранится элемент 3806(1) отображения инкапсуляции, который связывает/отображает упорядоченную четверку 3804 TCP/IP для конкретного соединения в идентификатор 3814 потока. Блок 312(F) туннелирования также получает информацию отображения для элемента 3806(1) отображения инкапсуляции от блока 310 переноса соединений (например, отображение 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
Когда устройство (например, блок 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
В ходе работы входящий пакет 3802 для конкретного соединения поступает на блок 302 пересылки. Конкретное соединение связано с упорядоченной четверкой 3804 TCP/IP. Входящий пакет 3802 содержит упорядоченную четверку 3804 TCP/IP с IP-адресом источника (клиента 102), IP-адресом назначения (виртуальным IP), TCP-портом источника (клиента 102) и TCP-портом назначения.During operation, an
Блок 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
Для создания инкапсулированного пакета 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
Блок 302 пересылки маршрутизирует/передает инкапсулированный пакет 3808 на хост 108, и хост 108 получает инкапсулированный пакет 3808 от блока 302 пересылки. Компонент блока 312(Н) пересылки на хосте 108 обнаруживает, что инкапсулированный пакет 3808 является туннелированным пакетом, который нужно декапсулировать.Forwarder 302 routes / transmits the encapsulated
Идентификатор 3814 потока извлекается из инкапсулированного пакета 3808 и используется для поиска соответствующей упорядоченной четверки 3804 TCP/IP, которая привязана к элементу 3810(1) отображения инкапсуляции таблицы 3810 отображения инкапсуляции. Упорядоченная четверка 3804 TCP/IP используется блоком 312(Н) туннелирования для восстановления заголовка упорядоченной четверки 3804 TCP/IP как изначально принятого во входящем пакете 3802 на блоке 302 пересылки.The
В частности, 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
В целом, часть заголовка пакета, включая часть пары источник/пункт назначения, для данного пакета, который не обязательно используется для передачи данного пакета, можно использовать для переноса идентификатора 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
На фиг.39 показана логическая блок-схема 3900 способа туннелирования пакетов между первым устройством и вторым устройством. Например, первое устройство и второе устройство могут соответствовать устройству-отправителю 3400 и устройству-адресату 3500, соответственно, инфраструктуры 106 выравнивания нагрузки и группы хостов 108, соответственно. Тем не менее, туннелирование можно использовать в реализациях, не связанных с выравниванием нагрузки.FIG. 39 is a
Логическая блок-схема 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
На блоке 3902 устройство-отправитель отправляет на устройство-адресат отображение идентификатора потока в упорядоченную четверку TCP/IP. Например, устройство-отправитель 3400 может послать отображение 3812 инкапсуляции, которое привязывает идентификатор 3814 потока к упорядоченной четверке 3804 TCP/IP. На блоке 3914 устройство-адресат принимает отображение идентификатора потока в упорядоченную четверку TCP/IP от устройства-отправителя. Например, устройство-адресат 3500 получает от устройства-отправителя 3400 отображение 3812 инкапсуляции, которое привязывает идентификатор 3814 потока к упорядоченной четверке 3804 TCP/IP.At
Альтернативно, устройство-адресат 3500 может получить отображение 3812 инкапсуляции от другого устройства. Пунктирные стрелки 3926 и 3928 указывают, что действия блоков 3904-3912 и блоков 3916-3924 могут происходить через некоторое время после действий блоков 3902 и 3914, соответственно.Alternatively, the
На блоке 3904 устройство-отправитель получает от клиента входящий пакет. Например, устройство-отправитель 3400 может получить от клиента 102 входящий пакет 3802, имеющий заголовок с упорядоченной четверкой 3804 TCP/IP. На блоке 3906 осуществляется поиск идентификатора потока для соединения, соответствующего пакету клиента с использованием упорядоченной четверки TCP/IP входящего пакета. Например, можно искать идентификатор 3814 потока для соединения с клиентом 102 с использованием упорядоченной четверки 3804 TCP/IP, которая отображается в него, в элементе 3806(1) отображения инкапсуляции таблицы 3806 отображения инкапсуляции.At
На блоке 3908 происходит замена IP источника и IP назначения входящего пакета IP-адресом отправителя устройства-отправителя и целевым IP-адресом устройства-адресата, соответственно. Например, устройство-отправитель 3400 может заменить части IP-адреса части упорядоченной четверки 3804 TCP/IP заголовка входящего пакета 3802 IP-адресами устройства-отправителя 3400 и устройства-адресата 3500.At
На блоке 3910 порт источника и порт назначения входящего пакета заменяются идентификатором потока. Например, устройство-отправитель 3400 может заменить TCP-порты источника и пункта назначения части упорядоченной четверки 3804 TCP/IP заголовка входящего пакета 3802 идентификатором 3814 потока. На блоке 3912 устройство-отправитель передает инкапсулированный пакет на устройство-адресат. Например, устройство-отправитель 3400 может отправить на устройство-адресат 3500 инкапсулированный пакет 3808.At
На блоке 3916 устройство-адресат получает инкапсулированный пакет от устройства-отправителя. Например, устройство-адресат 3500 может получить от устройства-отправителя 3400 инкапсулированный пакет 3808. На блоке 3918 осуществляется поиск упорядоченной четверки TCP/IP для соединения, соответствующего пакету, полученному от клиента, с использованием идентификатора потока. Например, устройство-адресат 3500 может обратиться к таблице 3810 отображения инкапсуляции в элементе 3810(1) отображения инкапсуляции, который отображает идентификатор 3814 потока в упорядоченную четверку 3804 TCP/IP.At
На блоке 3920 IP-адрес отправителя и IP-адрес получателя заменяются IP-адресом источника и IP-адресом назначения, соответственно, с использованием найденной упорядоченной четверки TCP/IP. Например, устройство-адресат 3500 может заменить IP-адреса устройства-отправителя 3400 и устройства-адресата 3500 в инкапсулированном пакете 3808 IP-адресом источника и IP-адресом назначения из упорядоченной четверки 3804 TCP/IP, полученной из таблицы 3810 отображения инкапсуляции.At
На блоке 3922 идентификатор потока заменяется портом источника и портом назначения входящего пакета с использованием найденной упорядоченной четверки TCP/IP. Например, устройство-адресат 3500 может заменить идентификатор 3814 потока в инкапсулированном пакете 3808 TCP-портом источника и TCP-портом назначения из упорядоченной четверки 3804 TCP/IP. На блоке 3924 пакет клиента указывается приложению на устройстве-адресате. Например, декапсулированная версия инкапсулированного пакета 3808 или входящий пакет 3802 указывается приложению 316 устройства-адресата 3500.At
Действия, аспекты, признаки, компоненты и т.д., указанные на фиг.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
Операционная среда 4000 является лишь одним примером среды и не призвана как-либо ограничивать объем использования или функциональные возможности применяемых архитектур устройства (включая компьютер, сетевой узел, развлекательное устройство, мобильный прибор, общее электронное устройство и т.д.). Кроме того, вычислительную среду 4000 (или ее устройства) не следует рассматривать как имеющую какую-либо зависимость или требование по отношению к любому или комбинации компонентов, показанных на фиг.40.
Кроме того, выравнивание сетевой нагрузки может быть реализовано посредством многочисленных других сред или конфигураций устройства общего назначения или устройства специального назначения (включая вычислительную систему). Примеры общеизвестных устройств, систем, сред и/или конфигураций, которые могут быть пригодны для использования, включают в себя, но не исключительно, персональные компьютеры, компьютеры-серверы, тонкие клиенты, толстые клиенты, карманные персональные компьютеры (КПК) или мобильные телефоны, часы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, телевизионные приставки, программируемую бытовую электронику, видеоигровые аппараты, игровые пульты, портативные или карманные игровые устройства, сетевые ПК, миникомпьютеры, универсальные компьютеры, сетевые узлы, распределенные или мультипроцессорные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, некоторые их комбинации и т.п.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.
Процессоры 4004 не ограничиваются материалами, из которых они сформированы, или применяемыми в них механизмами обработки. Например, процессоры 4004 могут состоять из полупроводников и/или транзисторов (например, электронные интегральные схемы (ИС)). В таком контексте команды, выполняемые процессором, могут быть электронно-выполняемыми командами. Альтернативно, механизмы процессоров 4004, а следовательно и компьютера 4002, могут включать в себя, но без ограничения, квантовое вычисление, оптическое вычисление, механическое вычисление (например, с использованием нанотехнологии) и т.д.
Системная шина 4008 представляет один или несколько из многочисленных типов шинных структур, включая шину памяти или контроллер памяти, двухточечное соединение, коммутирующую ткань, периферийную шину, ускоренный графический порт и шину процессора или локальную шину, использующую разнообразные шинные архитектуры. Например, такие архитектуры могут включать в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенного стандарта ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину подключений периферийных компонентов (PCI), также именуемую шиной расширения, некоторые их комбинации и т.д.The
Компьютер 4002 обычно содержит разнообразные среды, доступные процессору. Такие среды могут представлять собой любые имеющиеся среды, к которым компьютер 4002 или другое (например, электронное) устройство может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители, носители данных и среды передачи данных.
Системная память 4006 содержит носители, доступные процессору, в виде энергозависимой памяти, например оперативной памяти (ОЗУ) 4040, и/или энергонезависимой памяти, например постоянной памяти (ПЗУ) 4012. Базовая система 4014 ввода/вывода (BIOS), содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 4002, например, при запуске, хранится в ПЗУ 4012. ОЗУ 4010 обычно содержит данные и/или программные модули/команды, которые непосредственно доступны процессору 4004 и/или в данный момент обрабатываются им.
Компьютер 4002 может также включать в себя другие сменные/стационарные и/или энергозависимые/энергонезависимые носители данных. В порядке примера, на фиг.40 показаны жесткий диск или массив дисковых приводов 4016 для считывания с (обычно) стационарного энергонезависимого магнитного носителя (отдельно не показан) и записи на него, привод 4018 магнитного диска для считывания с (обычно) сменного энергонезависимого магнитного диска 4020 (например, «флоппи-диска») и записи на него и привод 4022 оптического диска для считывания с (обычно) сменного энергонезависимого оптического диска 4024, например CD, DVD, или другого оптического носителя и записи на него. Жесткий диск 4016, привод 4018 магнитного диска и привод 4022 оптического диска подключен к системной шине 4008 посредством одного или нескольких интерфейсов 4026 носителей данных. Альтернативно, жесткий диск 4016, привод 4018 магнитного диска и привод 4022 оптического диска могут быть подключены к системной шине 4008 посредством одного или нескольких других отдельных или комбинированных интерфейсов (не показаны).
Приводы и соответствующие носители, доступные процессору, обеспечивают энергонезависимое хранение команд, выполняемых процессором, например, структур данных, программных модулей и других данных для компьютера 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
На жестком диске 4016, магнитном диске 4020, оптическом диске 4024, ПЗУ 4012 и/или ОЗУ 4010 может храниться любое количество программных модулей (или других блоков или наборов команд/кодов), включая, например, операционную систему 4028, одну или несколько прикладных программ 4030, другие программные модули 4032 и программные данные 4034.On the
Пользователь может вводить команды и/или информацию в компьютер 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
Монитор/экран 4044 визуального наблюдения или устройство отображения другого типа может также быть подключено к системной шине 4008 через интерфейс, например видеоадаптер 4046. Видеоадаптер 4046 (или другой компонент) может представлять собой или включать в себя графическую карту для обработки графики, требующей больших вычислительных ресурсов, и для выполнения требований, предъявляемых дисплеем. Обычно графическая карта содержит графический процессор (ГП), видеопамять (ВОЗУ) и т.д. для облегчения быстрого отображения графики и выполнения графических операций. Помимо монитора 4044, другие периферийные устройства вывода могут включать в себя такие компоненты, как громкоговорители (не показаны) и принтер 4048, которые могут быть подключены к компьютеру 4002 через интерфейсы 4042 ввода/вывода.A visual monitor /
Компьютер 4002 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например удаленным вычислительным устройством 4050. Например, удаленное вычислительное устройство 4050 может представлять собой персональный компьютер, портативный компьютер (например, лэптоп, планшетный компьютер, КПК, мобильную станцию и др.), ручной или карманный компьютер, часы, игровое устройство, сервер, маршрутизатор, сетевой компьютер, равноправное устройство, другой сетевой узел или устройство другого типа из вышеперечисленных и т.п. Однако удаленное вычислительное устройство 4050 показано в виде портативного компьютера, который может содержать многие или все элементы и особенности, описанные здесь применительно к компьютеру 4002.
Логические соединения между компьютером 4002 и удаленным компьютером 4050 представлены в виде локальной сети (ЛС) 4052 и общей глобальной сети (ГС) 4054. Такие сетевые среды обычно используются в офисных, производственных компьютерных сетях, интрасетях, в Интернете, стационарных и мобильных телефонных сетях, специальных и инфраструктурных беспроводных сетях, других беспроводных сетях, игровых сетях, в некоторых их комбинациях и т.д. Такие сети и коммуникационные соединения являются примерами сред передачи данных.The logical connections between the
При реализации в сетевой среде ЛС компьютер 4002 подключен к ЛС 4052 через сетевой интерфейс или адаптер 4056. При реализации в сетевой среде ГС компьютер 4002 обычно содержит модем 4058 или другие средства установления соединений по ГС 4054. Модем 4058, который может быть внутренним или внешним по отношению к компьютеру 4002, может быть подключен к системной шине 4008 через интерфейсы 4042 ввода/вывода или любые другие соответствующие механизмы. Очевидно, что показанные сетевые соединения являются иллюстративными и что для установления линии(й) связи между компьютерами 4002 и 4050 можно использовать другие средства.When implemented in a LAN network environment,
Кроме того, можно применять другое оборудование, специально разработанное для серверов. Например, для выгрузки вычислений 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
Хотя системы, носители, устройства, способы, процедуры, аппараты, методики, схемы, подходы, процедуры, конфигурации и другие реализации были описаны на языке, специфическом для структурных, логических, алгоритмических и функциональных особенностей и/или диаграмм, следует понимать, что изобретение, раскрытое в прилагаемой формуле изобретения, не обязано ограничиваться конкретными описанными выше особенностями или диаграммами. Напротив, конкретные особенности и диаграммы раскрыты как иллюстративные формы реализации заявленного изобретения.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)
принимают в модуле (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. 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.
принимают данные относительно соединения в модуле (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.
компилируют состояние протокола из сетевого стека (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).
компилируют состояние протокола из сетевого стека (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.
компилируют состояние протокола из сетевого стека (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.
пакетируют состояние соединения с идентификатором потока, который соответствует соединению, для создания двоичного блоба (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)).
пакетируют состояние соединения с идентификатором (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.
выбирают идентификатор (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)).
отправляют состояние соединения в хост (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. 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.
этап приема содержит этап, на котором:
принимают состояние соединения, причем состояние соединения имеет состояние протокола и данные для соединения; и
этап вставки содержит этап, на котором:
вставляют состояние протокола в часть стека протоколов сетевого стека (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).
указывают данные для соединения через сетевой стек (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.
внедряют состояние протокола из состояния соединения в часть стека протоколов сетевого стека (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).
внедряют состояние протокола в сетевой стек, начиная с наивысшего уровня сетевого стека (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).
внедряют состояние протокола в сетевой стек (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.
принимают двоичный блоб (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.
принимают отображение инкапсуляции в хосте; и
сохраняют принятое отображение инкапсуляции в таблице (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.
принимают от модуля выравнивания нагрузки инкапсулированные пакеты, имеющие идентификатор (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.
блок (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).
«прокладку» (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).
«прокладка» (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).
«прокладка» (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.
стек протоколов, причем стек протоколов выполнен с возможностью компилировать состояние протокола для соединения в компилированное состояние протокола в соответствии с командой переноса соединения.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.
блок переноса соединений, выполненный с возможностью переноса соединений на хост;
причем блок переноса соединений выполнен с возможностью перехватывать состояние соединения для соединения, отправленное из модуля (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.
приложение, сохраненное на хосте,
причем блок (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.
«прокладку» (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.
«прокладка» (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)).
«прокладка» (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.
стек (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.
стек (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.
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)
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 |
-
2004
- 2004-06-07 RU RU2004117219/09A patent/RU2387002C2/en not_active IP Right Cessation
Cited By (10)
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 |