[go: up one dir, main page]

RU2851979C1 - Method and system for optimising cold start infrastructure for transport layer applications in serverless computing mode - Google Patents

Method and system for optimising cold start infrastructure for transport layer applications in serverless computing mode

Info

Publication number
RU2851979C1
RU2851979C1 RU2025124265A RU2025124265A RU2851979C1 RU 2851979 C1 RU2851979 C1 RU 2851979C1 RU 2025124265 A RU2025124265 A RU 2025124265A RU 2025124265 A RU2025124265 A RU 2025124265A RU 2851979 C1 RU2851979 C1 RU 2851979C1
Authority
RU
Russia
Prior art keywords
ebpf
serverless
protocol
agent
application
Prior art date
Application number
RU2025124265A
Other languages
Russian (ru)
Inventor
Дмитрий Александрович Веселов
Альберт Амирович Летфуллов
Александр Максимович Журавлев
Александр Александрович Ананьевский
Original Assignee
Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии")
Filing date
Publication date
Application filed by Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии") filed Critical Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии")
Application granted granted Critical
Publication of RU2851979C1 publication Critical patent/RU2851979C1/en

Links

Abstract

FIELD: computing.
SUBSTANCE: invention relates to means for implementing serverless computing (SLC). The claimed result is achieved by implementing the steps of: activating an eBPF agent in a Kubernetes environment for a virtual machine (VM) to prepare a transmission control protocol; configuring virtual interfaces and protocols in the Kubernetes environment for an application and assigning it an external IP address and port; intercepting an incoming network packet, using the eBPF agent, to launch a first serverless function (SLF) and identifying the requested SLF by the key-value pair protocol+IP address - port; routing requests for the prepared protocol and until the first launch of the SLF; launching in response to the received request the first SLF on the VM, using the prepared first protocol; if a request is received via a second protocol, launching in response to the received request the second SLF on the VM, using the prepared second protocol; and routing requests according to the protocols and ports corresponding to the SLFs; reading metrics from the network flow of the server application by means of the eBPF agent; and transmitting the metrics to the infrastructure event-driven scaling system (KEDA), which makes a decision on scaling the server application.
EFFECT: optimisation of cold start and expansion of the list of supported protocols.
8 cl, 8 dwg

Description

Изобретение относится к области компьютерной техники и информационных технологий, в частности, к средствам для осуществления бессерверных вычислений.The invention relates to the field of computer engineering and information technology, in particular, to means for implementing serverless computing.

Уровень техникиState of the art

Режим бессерверных вычислений (serverless) впервые был представлен широкой аудитории в 2014 году, пионером в этой области стала компания Amazon - предоставив платформу AWS Lambda. Прорывная идея, лежащая в основе такой платформы, состоит в концепции бессерверных вычислений - в рамках которой оплачиваются только фактически используемые ресурсы, а в момент простоя приложения (отсутствия запросов от клиента) ресурсы высвобождаются и не тарифицируются.Serverless computing was first introduced to a wider audience in 2014, pioneered by Amazon with its AWS Lambda platform. The breakthrough idea behind this platform is the concept of serverless computing, which only charges for the resources actually used, and when an application is idle (no client requests), the resources are freed up and not billed.

Режим запуска бессерверных вычислений был реализован в виде платформ у популярных провайдеров облачных вычислений - Google Cloud Platform (Cloud Run), Microsoft Azure (Container Apps), Huawei Cloud (FunctionGraph), Yandex Cloud (Serverless Containers), Cloud.ru (Container Apps) и другие. The serverless computing launch mode has been implemented in the form of platforms by popular cloud computing providers - Google Cloud Platform (Cloud Run), Microsoft Azure (Container Apps), Huawei Cloud (FunctionGraph), Yandex Cloud (Serverless Containers), Cloud.ru (Container Apps) and others.

Существующие платформы для запуска бессерверных вычислений предполагают, что серверное приложение использует HTTP протокол и его расширения, такие как HTTPS, GRPC, Websocket и другие. Это ограничивает диапазон приложений, которые могут быть опубликованы на таких платформах. По сути, единственный тип такого приложения — это web-сервер. Web-сервер далеко не единственный тип клиент-серверного приложения, существует так же ряд приложений, которые реализуют свой L7 протокол для клиент-серверного взаимодействия – например, системы управления базами данных, такие как PostgreSQL, MySQL, системы кеширования данных (Redis, Memcached), системы трансфера данных (FTP, SCP), приложения для многопользовательских сетевых игр (Minecraft и другие). Также известны игровые сервера (для игр по сети), использующие проприетарные протоколы, которые никто не будет модифицировать под выполнение бессерверных вычислений/обработки. Existing platforms for running serverless computing assume that the server application uses the HTTP protocol and its extensions, such as HTTPS, GRPC, WebSocket, and others. This limits the range of applications that can be published on such platforms. Essentially, the only type of such application is a web server. A web server is far from the only type of client-server application; there are also a number of applications that implement their own L7 protocol for client-server interactions—for example, database management systems such as PostgreSQL and MySQL, data caching systems (Redis, Memcached), data transfer systems (FTP, SCP), and applications for multiplayer online games (Minecraft and others). Game servers (for online gaming) also use proprietary protocols that no one will modify for serverless computing/processing.

В качестве примера реализации специализированного сервиса, частично решающего проблему ограничения использования только протокола HTTP в облачных сервисах бессерверных вычислений, можно привести Neon Serverless PostgreSQL - современное решение для запуска PostgreSQL в режиме бессерверных вычислений, позволяющее использовать реляционную базу данных без классического выделения серверных ресурсов. Когда запускается запрос к базе данных, система автоматически выделяет кратковременные вычислительные узлы (экземпляры), которые получают доступ к данным, находящимся в центральном и масштабируемом хранилище. Эти вычислительные узлы масштабируются вверх или вниз в зависимости от нагрузки и могут быстро запускаться и завершаться, что позволяет платить только за фактическое время работы. Таким образом, архитектура Neon позволяет обеспечивать высокую масштабируемость и гибкость: постоянное хранилище гарантирует надежность и долговременное хранение данных, а вычислительный слой автоматически адаптируется к изменению загрузки, что делает решение бессерверным. An example of a specialized service that partially addresses the limitation of using only the HTTP protocol in serverless cloud computing services is Neon Serverless PostgreSQL, a modern solution for running PostgreSQL in serverless mode, allowing the use of a relational database without traditional server resource provisioning. When a database query is launched, the system automatically allocates short-lived compute nodes (instances) that access data stored in a central, scalable storage. These compute nodes scale up or down depending on the load and can be quickly launched and terminated, allowing you to pay only for the time actually used. Thus, Neon's architecture enables high scalability and flexibility: persistent storage ensures reliability and long-term data retention, and the compute layer automatically adapts to changing workloads, making the solution truly serverless.

Однако, остается нерешенной проблема для остальных типов систем и протоколов L7, в целом. Таким образом, отсутствует единообразное решение, расширяющее как перечень используемых протоколов в бессерверных вычислениях, так и перечень продуктов.However, the problem remains unresolved for other types of L7 systems and protocols in general. Thus, there is no unified solution that expands both the range of protocols used in serverless computing and the range of products.

В качестве еще одного примера реализации специализированного сервиса можно привести Knative - это еще одно из самых популярных решений бессерверных вычислений, используемое в Cloud.ru, например, в Evolution App Services. Однако, как и Neon Serverless PostgreSQL, оно ограничено протоколом HTTP и имеет ряд недостатков: поддержка только HTTP-трафика, т.к. изначально разработано для веб-сервисов и API, поэтому не поддерживает другие L7-протоколы (DNS, PostgreSQL Wire protocol MQTT и т.д.) без дополнительных приложений, самописных адаптеров или sidecar-прокси, что в целом усложняет архитектуру. Кроме того, у данного решения есть ряд недостатков: Another example of a specialized service implementation is Knative, another of the most popular serverless computing solutions used at Cloud.ru, for example, in Evolution App Services. However, like Neon Serverless PostgreSQL, it is limited to the HTTP protocol and has several drawbacks. It only supports HTTP traffic, as it was originally designed for web services and APIs, so it doesn't support other L7 protocols (DNS, PostgreSQL Wire Protocol, MQTT, etc.) without additional applications, custom adapters, or sidecar proxies, which complicates the overall architecture. Furthermore, this solution has a number of disadvantages:

- отсутствие встроенной поддержки long-running-процессов (Knative оптимизирован под кратковременные HTTP-запросы, а задачи с долгим выполнением (например, обработка очередей или стриминг) требуют дополнительных решений (например, Kombinator в Cloud.ru));- lack of built-in support for long-running processes (Knative is optimized for short-term HTTP requests, while tasks with long execution times (for example, queue processing or streaming) require additional solutions (for example, Kombinator in Cloud.ru));

- ограниченная событийная модель (Knative Eventing предоставляет механизмы для триггеров, интеграция с не-HTTP источниками событий (например, Kafka, RabbitMQ), но требует дополнительных компонентов (Brokers, Triggers), что увеличивает накладные расходы).- limited event model (Knative Eventing provides mechanisms for triggers, integration with non-HTTP event sources (e.g. Kafka, RabbitMQ), but requires additional components (Brokers, Triggers), which increases overhead).

Также Knative содержит в своем составе специальный компонент (активатор), который принимает входящее соединение и запросы к пользовательской нагрузке, и временно буфферизирует запросы до тех пор, пока пользовательская нагрузка не будет масштабирована с нуля до требуемого количества активных контейнеров (процесс scale from zero). Knative also contains a special component (activator) that accepts incoming connections and requests to the user load, and temporarily buffers requests until the user load is scaled from zero to the required number of active containers (scale from zero process).

Такой подход позволяет реализовать алгоритм масштабирования с нуля, но для своего выполнения требует повышенных ресурсов, так как существуют накладные расходы на запуск такого сервиса активатора - повышенное потребление CPU, RAM, сети, файловых дескрипторов и т.д.This approach allows for the implementation of a scaling algorithm from scratch, but requires increased resources for its execution, as there are overhead costs associated with running such an activator service—increased consumption of CPU, RAM, network, file descriptors, etc.

Также известна заявка на патент US 2022/0156097 A1 опуб.2022.11.24, раскрывающая способ и систему управления бессерверными функциями в облачной среде, где перед запуском функций виртуальная машина предварительно создаёт TCP-сокет (socket activation). После активации сокета, при получении запроса от клиента, запускается указанная функция с использованием уже созданного сокета, что снижает задержки и повышает эффективность работы. Дополнительно система собирает и анализирует метрики производительности виртуальных машин (ВМ), позволяя выбирать оптимальные ресурсы для исполнения функций. Таким образом, данный способ и система направлены на решение проблемы производительности при работе с виртуализированной инфраструктурой, уменьшая задержки соединения. Also known is patent application US 2022/0156097 A1, published November 24, 2022, which discloses a method and system for managing serverless functions in a cloud environment. Before launching a function, a virtual machine creates a TCP socket (socket activation). After socket activation, upon receiving a request from a client, the specified function is launched using the already created socket, reducing latency and improving efficiency. The system also collects and analyzes virtual machine (VM) performance metrics, enabling the selection of optimal resources for executing functions. Thus, this method and system are aimed at solving the performance problem when working with a virtualized infrastructure by reducing connection latency.

В целом, анализ существующих решений показывает, что в них используются проксирующие и буферизирующие компоненты, в том или ином виде, что приводит к повышенному расходу вычислительных ресурсов. Эти компоненты, такие как, например, шлюз-активатор, обеспечивают «горячий» старт и масштабирование экземпляров serverless-приложений с необходимостью обеспечить наличие активных «горячих» экземпляров приложения и проксирующих, по факту входящего подключения, до этих «горячих» экземпляров компонентов, которые в режиме 24/7 готовы принять входящий запрос.Overall, an analysis of existing solutions shows that they utilize proxying and buffering components in one form or another, which leads to increased consumption of computing resources. These components, such as gateway activators, ensure hot startup and scaling of serverless application instances, necessitating the availability of active, hot application instances and components that proxy to these hot instances upon incoming connections, ready to accept incoming requests 24/7.

Предложенное же нами изобретение отличается тем, что вместо создания сокетов через ВМ используется система eBPF агентов, перехватывающих сетевые пакеты до попадания в сетевой слой операционной системы (ОС) - таким образом сокращаются накладные расходы на эксплуатацию платформы и обеспечивается оптимизация холодного старта, а также расширяется список поддерживаемых протоколов, что позволяет одновременно применять различные, ранее невозможные к применению, программные serverless-решения и запускать любые TCP/UDP/SCTP приложения, а не только HTTP, тем самым полностью закрывая проблему унификации использования протоколов в serverless инфраструктуре. Это обеспечивает эффективную работу сложных многокомпонентных систем в системной прослойке, обеспечивающей универсальность, на базе нашей serverless-платформы при оптимальных затратах вычислительных ресурсов. Our proposed solution differs in that, instead of creating sockets through a VM, it uses a system of eBPF agents that intercept network packets before they reach the operating system (OS) network layer. This reduces platform operating overhead and optimizes cold starts. It also expands the list of supported protocols, enabling the simultaneous use of previously unavailable serverless software solutions and the launch of any TCP/UDP/SCTP applications, not just HTTP, thereby completely eliminating the problem of protocol unification in a serverless infrastructure. This ensures the efficient operation of complex multi-component systems in a system layer that provides versatility, based on our serverless platform, while optimizing computing resources.

Под холодным стартом в нашем изобретении понимается процесс масштабирования приложения без наличия активных «горячих» экземпляров по факту входящего подключения, в существующих решениях на базе HTTP используются различные проксирующие компоненты, которые в режиме 24/7 готовые принять входящий запрос, в нашем случае они отсутствуют и за счет этого достигается оптимизация инфраструктуры, не требуется выделять ресурсы на работу проксирующего компонента по типу CPU/RAM и пр.In our invention, a cold start refers to the process of scaling an application without the presence of active "hot" instances upon incoming connections. Existing HTTP-based solutions utilize various proxy components that are ready to accept incoming requests 24/7. In our case, these components are absent, and this allows for infrastructure optimization, eliminating the need to allocate resources for the proxy component's operation, such as CPU/RAM, etc.

Известен патент CN 116016644 A опуб.2023.04.25, где раскрыт способ обработки запросов на выполнение сервиса в бессерверной архитектуре. При получении информации о запросе от API-шлюза, служба управления бессерверными приложениями определяет цели для приложения и соответствующую информацию по подключению к сервису BaaS (Backend as a Service). Затем система создаёт виртуальный экземпляр приложения и запускает компонент-прокси для BaaS, который обеспечивает установление сетевого взаимодействия между запущенным приложением и целевым сервисом. Дополнительно система может использовать информацию из хранилища приложения для уточнения конфигурации и, при недоступности стандартного компонента-прокси, создавать пул подключений для обеспечения надежного доступа. Таким образом, данный способ позволяет динамически и безопасно обеспечить выполнение сервисных задач в изолированном serverless-окружении с использованием BaaS. Способ также направлен на решение проблемы с ускорением обработки первых запросов к инфраструктуре бессерверных вычислений, для устранения задержек применяется прокси-балансер в виртуализированной среде на основе информации о целевом приложении бессерверных вычислений в запросе. Patent CN 116016644 A, published April 25, 2023, discloses a method for processing service requests in a serverless architecture. Upon receiving request information from the API gateway, the serverless application management service determines the application's targets and the corresponding connection information to the BaaS (Backend as a Service) service. The system then creates a virtual instance of the application and launches a BaaS proxy component, which facilitates network communication between the running application and the target service. Additionally, the system can use information from the application's storage to refine the configuration and, if the standard proxy component is unavailable, create a connection pool to ensure reliable access. Thus, this method enables dynamic and secure execution of service tasks in an isolated serverless environment using BaaS. The method also aims to solve the problem of accelerating the processing of the first requests to the serverless computing infrastructure; to eliminate delays, a proxy balancer is used in a virtualized environment based on information about the target serverless computing application in the request.

Предложенное изобретение отличается тем, что вместо прокси BaaS используется система eBPF агентов, решается принципиально другая проблема - расширение перечня поддерживаемых протоколов в serverless-вычислениях, что позволяет одновременно применять различные, ранее невозможные к применению, программные решения. Это обеспечивает эффективную работу сложных многокомпонентных систем в системной прослойке, обеспечивающей универсальность, на базе нашей serverless-платформы при оптимальных затратах вычислительных ресурсов. Решение направлено на применение модели бессерверных вычислений к базам данных (Database as Service/DBaaS), соответственно набор протоколов ограничен популярными базами данных, наше же решение универсально по типам поддерживаемых протоколов.The proposed invention is distinguished by its use of an eBPF agent system instead of a BaaS proxy. This solution addresses a fundamentally different problem: expanding the range of supported protocols in serverless computing, enabling the simultaneous use of previously unavailable software solutions. This ensures the efficient operation of complex multi-component systems within a system layer that provides versatility, based on our serverless platform, while optimizing computing resources. The solution is designed to apply the serverless computing model to databases (Database as a Service/DBaaS). Consequently, the protocol set is limited to popular databases, while our solution is universal in the types of protocols it supports.

Известна заявка на патент US 2019/0377604 A1 опуб.2019.12.12, где раскрыто описание системы для предоставления функций как сервиса (FaaS, Function as a Service) в облаке, которая состоит из мастер-узла, множества рабочих узлов и операционных узлов. Работа системы основана на динамическом развертывании контейнеров (pod’ов), в которых выполняются бессерверные функции, с управлением, осуществляемым мастером, который планирует запуск контейнеров, балансирует нагрузку и масштабирует их в зависимости от текущего спроса. Дополнительно система поддерживает миграцию функций бессерверных вычислений между различными FaaS-платформами, позволяя переносить код, конфигурации и данные о нагрузке для оптимального распределения ресурсов в распределённой инфраструктуре облачных вычислений. Таким образом, данная система направлена на решение проблемы горизонтального масштабирования вычислительных ресурсов FaaS в облаке платформы бессерверных вычислений, с учетом динамически меняющейся нагрузки. Patent application US 2019/0377604 A1, published December 12, 2019, describes a system for delivering Function as a Service (FaaS) in the cloud. The system consists of a master node, multiple worker nodes, and operational nodes. The system operates by dynamically deploying containers (pods) running serverless functions, managed by a master node that schedules container launches, balances the load, and scales them based on current demand. The system also supports the migration of serverless computing functions between different FaaS platforms, enabling the transfer of code, configurations, and load data for optimal resource allocation across a distributed cloud computing infrastructure. This system thus addresses the problem of horizontally scaling FaaS computing resources in a serverless computing platform, taking into account dynamically changing loads.

Предложенное изобретение отличается тем, что решается принципиально другая проблема - расширение перечня поддерживаемых протоколов в бессерверных вычислениях, что позволяет одновременно применять различные, ранее невозможные к применению, программные решения, а также обеспечивается процесс масштабирования serverless-приложения без наличия активных «горячих» экземпляров и связанных с этими экземплярами проксирующих и буферизирующих, по факту входящего подключения, компонентов. В нашем случае они отсутствуют, за счет этого достигается оптимизация инфраструктуры, не требуется выделять дополнительные вычислительные ресурсы на работу проксирующих компонентов. Это обеспечивает эффективную работу сложных многокомпонентных систем в системной прослойке, обеспечивающей универсальность, на базе нашей serverless-платформы при оптимальных затратах вычислительных ресурсов. The proposed invention is distinguished by its solution to a fundamentally different problem: expanding the range of supported protocols in serverless computing, enabling the simultaneous use of various previously unusable software solutions. It also facilitates scaling of serverless applications without the need for active "hot" instances and associated proxy and buffering components that rely on incoming connections. In our case, these components are eliminated, thereby optimizing the infrastructure and eliminating the need to allocate additional computing resources to proxy components. This ensures the efficient operation of complex multi-component systems in a system layer that provides versatility, based on our serverless platform, while optimizing computing resources.

Известна заявка на патент EP 4432094 A1 опуб.2024.09.18, где раскрыт способ автоматического анализа структуры и потоков приложения в облаке. Метод включает сбор логов активности бессерверных вычислений, построение графа событий, в котором узлы представляют собой отдельные сущности (функции, ресурсы, пользователя), а ребра фиксируют взаимодействия между ними. Система затем применяет алгоритмы обнаружения сообществ и меры центральности для идентификации потоков приложения и определения областей их пересечения, что позволяет реконструировать логику работы приложения и анализировать его структуру. Таким образом, данный способ направлен на решение проблемы контроля безопасности в облачной среде бессерверных вычислений на основе использования метода статического анализа (поиска пересечений) графов вызовов функций (объект-событие) из данных журналов активностей. Patent application EP 4432094 A1, published September 18, 2024, discloses a method for automatically analyzing the structure and flows of an application in the cloud. The method involves collecting serverless computing activity logs and constructing an event graph in which nodes represent individual entities (functions, resources, users), and edges record interactions between them. The system then applies community detection algorithms and centrality measures to identify application flows and determine their intersections, enabling the reconstruction of the application's logic and analysis of its structure. Thus, this method aims to address the problem of security monitoring in a serverless computing cloud environment by using static analysis (intersection detection) of function call graphs (object-event) from activity log data.

Предложенное изобретение отличается тем, что решается принципиально другая проблема - расширение перечня поддерживаемых протоколов в serverless-вычислениях, что позволяет одновременно применять различные, ранее невозможные к применению, программные решения, а также обеспечивается процесс масштабирования serverless-приложения без наличия активных «горячих» экземпляров и связанных с этими экземплярами проксирующих и буферизирующих, по факту входящего подключения, компонентов. В нашем случае они отсутствуют, за счет этого достигается оптимизация инфраструктуры, не требуется выделять дополнительные вычислительные ресурсы на работу проксирующих компонентов. Это обеспечивает эффективную работу сложных многокомпонентных систем в системной прослойке, обеспечивающей универсальность, на базе нашей serverless-платформы при оптимальных затратах вычислительных ресурсов. The proposed invention is distinguished by its solution to a fundamentally different problem: expanding the range of supported protocols in serverless computing, enabling the simultaneous use of various previously unusable software solutions. It also facilitates scaling of serverless applications without the need for active "hot" instances and associated proxy and buffering components that rely on incoming connections. In our case, these components are eliminated, thereby optimizing the infrastructure and eliminating the need to allocate additional computing resources to proxy components. This ensures the efficient operation of complex multi-component systems in a system layer that provides versatility, based on our serverless platform, while optimizing computing resources.

Таким образом, для реализации нового способа и получения нового технического результата, по сравнению с предыдущим уровнем техники, необходимо реализовать ряд задач: Thus, in order to implement a new method and obtain a new technical result, in comparison with the previous level of technology, it is necessary to implement a number of tasks:

- обеспечить максимальное и неограниченное расширение перечня поддерживаемых протоколов, и, за счет этого - универсальность публикации приложения "как есть", без необходимости модификации его архитектуры; - ensure maximum and unlimited expansion of the list of supported protocols, and, due to this, the universality of publishing the application "as is", without the need to modify its architecture;

- обеспечить обработку запросов, которые занимают необычно много времени на выполнение по сравнению с типичной нагрузкой (long-running запросов) в serverless-среде; - ensure processing of requests that take an unusually long time to execute compared to the typical load (long-running requests) in a serverless environment;

- обеспечить адаптивное к нагрузке на облачную платформу масштабирование инфраструктуры на уровне L4 (TCP/UDP/SCTP); - ensure adaptive scaling of the infrastructure at the L4 level (TCP/UDP/SCTP) to the load on the cloud platform;

- обеспечить маршрутизацию протоколов в целевые компоненты опубликованного приложения; - ensure routing of protocols to target components of the published application;

- отказаться от проксирующих и буферизирующих решений, «горячих» экземпляров приложения, что позволяет оптимизировать инфраструктуру холодного старта и сократить расходы на эксплуатацию платформы бессерверных вычислений.- eliminate proxying and buffering solutions and "hot" application instances, which allows for optimization of cold start infrastructure and reduction of operating costs for the serverless computing platform.

Задача предложенного изобретения состоит в том, чтобы расширить список поддерживаемых протоколов в контексте бессерверных вычислений, а также полностью отказаться от буфферизации входящих запросов с помощью проксирующего и/или кэширующего шлюза-активатора и производить масштабирование с нуля на основе факта получения запроса на установку соединения, при этом нужно обеспечить устойчивую работу существующих протоколов приложений - без прерываний, ошибок подключения, таймаутов и т.д.The objective of the proposed invention is to expand the list of supported protocols in the context of serverless computing, as well as to completely abandon the buffering of incoming requests using a proxy and/or caching gateway-activator and to perform scaling from scratch based on the fact of receiving a connection request, while ensuring the stable operation of existing application protocols - without interruptions, connection errors, timeouts, etc.

Технический результат предложенного изобретения заключается в обеспечении возможности выполнения приложений в режиме бессерверных вычислений без ограничения в виде только лишь HTTP протокола, снятии ограничений на поддержку long-running запросов, а также снижении требований к публикуемым приложениям в части облачного развертывания, и отказе от проксирующих и буферизирующих решений, что позволяет оптимизировать инфраструктуру холодного старта.The technical result of the proposed invention is to enable the execution of applications in serverless computing mode without the limitation of only the HTTP protocol, removing restrictions on the support of long-running requests, as well as reducing the requirements for published applications in terms of cloud deployment, and eliminating proxying and buffering solutions, which allows for the optimization of the cold start infrastructure.

Технический результат обеспечивается самой serverless-технологией - возможность экономии на ресурсах, так как используется режим бессерверных вычислений: ресурсы используются только тогда, когда есть фактический запрос пользователей.The technical result is ensured by the serverless technology itself—the ability to save on resources, since serverless computing mode is used: resources are used only when there is an actual user request.

Указанный технический результат достигается при осуществлении способа выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений, содержащий этапы, на которых: The specified technical result is achieved by implementing a method for executing client-server applications of the transport layer in a serverless computing mode, comprising the steps of:

выполняют активацию eBPF агента, выполняющего функции считывания и записи данных из ядра и обратно в реальном времени, чтобы предварительно подготовить протокол управления передачей, до того, как виртуальная машина запустит какую-либо бессерверную функцию, связанную с предварительно подготовленным протоколом;activate an eBPF agent that performs real-time read and write functions to and from the kernel to pre-stage the transmission control protocol before the virtual machine runs any serverless function associated with the pre-staged protocol;

проводят настройку виртуальных интерфейсов и протоколов в среде Kubernetes для публикуемого приложения и присваивают ему внешний IP-адрес и порт; configure virtual interfaces and protocols in the Kubernetes environment for the published application and assign it an external IP address and port;

перехватывают входящий сетевой пакет, с помощью eBPF агента, на запуск первой бессерверной функции;intercept the incoming network packet using the eBPF agent to launch the first serverless function;

проводят, с помощью eBPF агента, идентификацию запрашиваемой бессерверной функции по паре ключ-значение (IP-адрес - порт);using the eBPF agent, identify the requested serverless function using a key-value pair (IP address - port);

запускают, в ответ на полученный запрос, первую бессерверную функцию на виртуальной машине, используя предварительно подготовленный первый протокол;In response to the received request, launch the first serverless function on the virtual machine using the pre-prepared first protocol;

если получен запрос по второму протоколу, запускают, в ответ на полученный запрос, вторую бессерверную функцию на виртуальной машине, используя предварительно подготовленный второй протокол;if a request is received via the second protocol, a second serverless function is launched in response to the received request on the virtual machine using the previously prepared second protocol;

маршрутизируют запросы согласно протоколам и портам соответствующим бессерверным функциям,route requests according to protocols and ports to the corresponding serverless functions,

считывают метрики из сетевого потока клиент-серверного приложения, с помощью eBPF агента; и read metrics from the network flow of the client-server application using the eBPF agent; and

передают метрики в систему КЕDА, которая принимает решение о масштабировании клиент-серверного приложения.transmit metrics to the KEDA system, which makes decisions about scaling the client-server application.

Дополнительная особенность заключается в том, что осуществляют инициализацию eBPF агента с таблицей маршрутизации для публикуемых клиент-серверных приложений.An additional feature is that it initializes the eBPF agent with a routing table for published client-server applications.

Дополнительная особенность заключается в том, что таблица маршрутизации обновляется при изменении состояний клиент-серверных приложений, в частности, при масштабировании в ноль и/или удалении клиент-серверного приложения из системы.An additional feature is that the routing table is updated when the states of the client-server applications change, in particular when scaling to zero and/or removing the client-server application from the system.

Дополнительная особенность заключается в том, что метрики определяют, в частности, количество активных соединений и/или количество передаваемых пакетов в секунду.An additional feature is that the metrics define, in particular, the number of active connections and/or the number of packets transmitted per second.

Дополнительная особенность заключается в том, что осуществляют идентификацию запрашиваемой бессерверной функции в eBPF агенте: по входящему протоколу и/или IP-адресу и/или порту назначения.An additional feature is that the requested serverless function is identified in the eBPF agent: by the incoming protocol and/or IP address and/or destination port.

Дополнительная особенность заключается в том, что в качестве используемых протоколов применяют протоколы TCP/IP и/или SCTP и/или UDP.An additional feature is that the protocols used are TCP/IP and/or SCTP and/or UDP.

Дополнительная особенность заключается в том, что в результате определения набора (первого и/или второго) протоколов, маршрутизации и очередности передачи, направляют пакеты данных в запускаемую первую и вторую бессерверную функцию, используя соответственно первый протокол, например, TCP/IP или SCTP или UDP и второй протокол, например, TCP/IP или SCTP или UDP.An additional feature is that as a result of determining the set of (first and/or second) protocols, routing and transmission order, data packets are sent to the first and second serverless functions being launched, using the first protocol, for example, TCP/IP or SCTP or UDP, and the second protocol, for example, TCP/IP or SCTP or UDP, respectively.

Дополнительная особенность заключается в том, что способ выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений реализуется без использования проксирующих и буферизирующих компонентов.An additional feature is that the method for executing client-server applications of the transport layer in serverless computing mode is implemented without the use of proxying and buffering components.

Предложена система выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений, реализующая упомянутый способ, где система содержит: по меньшей мере один процессор, по меньшей мере одну память, интерфейсы ввода/вывода, средство сетевого взаимодействия, которые реализуют следующие функционально взаимосвязанные средства: по меньшей мере одну виртуальную машину, с развернутой средой Kubernetes; системы Kubernetes для управления внешними - публичными IP адресами Cilium (IPAM); систему событийного масштабирования инфраструктуры (KEDA); по меньшей мере одно бессерверное приложение, развернутое в Kubernetes; по меньшей мере один eBPF агент на каждой из по меньшей мере одной виртуальной машине в составе среды Kubernetes.A system for executing client-server applications of the transport layer in the serverless computing mode is proposed, implementing the mentioned method, wherein the system contains: at least one processor, at least one memory, input/output interfaces, a network interaction means, which implement the following functionally interconnected means: at least one virtual machine with a deployed Kubernetes environment; a Kubernetes system for managing external - public IP addresses Cilium (IPAM); an infrastructure event scaling system (KEDA); at least one serverless application deployed in Kubernetes; at least one eBPF agent on each of at least one virtual machine within the Kubernetes environment.

Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение, является новым и имеет изобретательский уровень, а возможность его использования в промышленности определяет его как промышленно применимое.The conducted analysis of the state of the art allows us to determine that the proposed technical solution is new and has an inventive step, and the possibility of its use in industry determines it as industrially applicable.

Эти и другие аспекты станут очевидными и будут объяснены со ссылками на графические материалы и варианты осуществления, описанные в дальнейшем.These and other aspects will become apparent and will be explained with reference to the drawings and embodiments described hereinafter.

Изобретение поясняется следующими графическими материалами:The invention is explained by the following graphic materials:

Фиг.1a - показана общая компонентная схема бессерверных вычислений в облачной среде на примере Evolution App Services Cloud.ru.Fig. 1a shows the general component diagram of serverless computing in a cloud environment using the example of Evolution App Services Cloud.ru.

Фиг.1b - показан пример архитектуры системы выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений.Fig. 1b - shows an example of the architecture of a system for executing client-server applications of the transport layer in serverless computing mode.

Фиг.2 - показано анонсирование IP адресов ВМ в среде Kubernetes.Fig. 2 shows the announcement of VM IP addresses in the Kubernetes environment.

Фиг.3 - показан процесс инициализации сессии на примере TCP.Fig. 3 - shows the session initialization process using TCP as an example.

Фиг.4 - показан алгоритм принятия или игнорирования пакета на уровне eBPF агента (уровень ядра).Fig. 4 shows the algorithm for accepting or ignoring a packet at the eBPF agent level (kernel level).

Фиг.5 - показан алгоритм повтора инициализации TCP сессии (TCP SYN ретрансляция).Fig. 5 - shows the algorithm for repeating the initialization of a TCP session (TCP SYN retransmission).

Фиг.6 - показан алгоритм масштабирования приложения на базе TCP протокола.Fig. 6 - shows the algorithm for scaling an application based on the TCP protocol.

Фиг.7 - показан алгоритм масштабирования приложения на базе UDP протокола.Fig. 7 - shows the algorithm for scaling an application based on the UDP protocol.

Фиг.8 - показаны этапы обработки запроса с масштабированием инфраструктуры (под рост и уменьшение числа запросов).Fig. 8 shows the stages of request processing with infrastructure scaling (for the growth and decrease in the number of requests).

Осуществление изобретенияImplementation of the invention

Введем ряд определений и понятий, которые будут использоваться при описании заявленного изобретения.Let us introduce a number of definitions and concepts that will be used in describing the claimed invention.

Пользовательское приложение (ПП) - программа, запускаемая в процессе бессерверных вычислений.A user application (UA) is a program that runs during serverless computing.

Клиент-серверное приложение - сетевая архитектура приложения, в которой существует клиент, например, физический пользователь сервиса и его персональный компьютер, и сервер, размещенный в удаленной среде, такой как центр обработки данных.A client-server application is a network application architecture in which there is a client, such as a physical user of a service and his or her personal computer, and a server located in a remote environment, such as a data center.

Сетевая модель OSI - Принятый ISO стандарт, описывающий уровни сетевых протоколов.OSI network model - An ISO standard that describes the layers of network protocols.

Транспортный сетевой уровень - 4-й уровень сетевой модели OSI (OSI/L4), предназначен для доставки данных. На базе транспортного уровня реализуются более высокоуровневые протоколы, такие как HTTP или DNS.The transport layer is the fourth layer of the OSI network model (OSI/L4), designed for data delivery. Higher-level protocols, such as HTTP or DNS, are implemented on the transport layer.

Прикладной сетевой уровень - 7-й уровень сетевой модели OSI (OSI/L7), реализует протокол для взаимодействия конкретного клиент-серверного приложения.The application network layer is the 7th layer of the OSI network model (OSI/L7), and implements a protocol for interaction between a specific client-server application.

TCP (TCP/IP) - протокол, используемый для передачи данных в сети интернет. Ключевой особенностью протокола являются механизмы обеспечения устойчивого соединения - SYN/ACK. TCP (TCP/IP) is a protocol used for transmitting data on the internet. A key feature of the protocol is its SYN/ACK connection-enforcing mechanisms.

UDP (UDP/IP) - протокол, используемый для передачи данных в сети интернет. Отличается от TCP/IP увеличенной производительностью, которая достигается за счет отсутствия механизмов контроля устойчивого соединения.UDP (UDP/IP) is a protocol used for data transfer on the internet. It differs from TCP/IP in that it offers increased performance due to the lack of connection monitoring mechanisms.

HTTP - протокол прикладного уровня, используемый для клиент-серверного взаимодействия в рамках сети интернет и его расширения, такие как HTTPS, GRPC, Websocket и прочие.HTTP is an application-level protocol used for client-server interactions within the Internet and its extensions, such as HTTPS, GRPC, Websocket, and others.

Web сервер - серверное приложение, использующее HTTP протокол для взаимодействия с клиентским приложением.A web server is a server application that uses the HTTP protocol to interact with a client application.

DNS сервер - серверное приложение, преобразующее доменное имя в IP адрес.DNS server is a server application that converts a domain name into an IP address.

Бессерверные вычисления (Serverless) - способ выполнения программы, при котором вычислительные мощности предоставляются по факту использования приложения, а не в постоянно выделенном (оплачиваемом) режиме.Serverless computing is a method of program execution in which computing power is provided based on the actual use of the application, rather than in a permanently allocated (paid) mode.

Платформа для бессерверных вычислений (Serverless PaaS) - комплекс програмного обеспечения (ПО), позволяющий запускать приложения в режиме бессерверных вычислений.Serverless computing platform (PaaS) is a software package that allows you to run applications in serverless computing mode.

Docker образ - открытый формат для распространения приложения.Docker image is an open format for distributing applications.

Система оркестрации нагрузки (Kubernetes, k8s) - открытое ПО для оркестровки контейнеризированных приложений - автоматизации их развёртывания, масштабирования и координации в условиях кластера. Поддерживает основные технологии контейнеризации, включая Docker, rkt, также возможна поддержка технологий аппаратной виртуализации. Kubernetes собирает один или несколько компьютеров, ВМ в кластер, который может запускать рабочие нагрузки в контейнерах. Он работает с различными средами выполнения контейнеров, такими как containerd и CRI-O. Kubernetes определяет набор строительных блоков («примитивов»), которые в совокупности обеспечивают механизмы, которые развертывают, поддерживают и масштабируют приложения на основе центрального процессора (ЦП), памяти или пользовательских метрик. Его пригодность для запуска и управления рабочими нагрузками всех размеров и стилей привела к его широкому внедрению в облаках и центрах обработки данных.Kubernetes (k8s) is an open-source software platform for orchestrating containerized applications, automating their deployment, scaling, and coordination within a cluster. It supports major containerization technologies, including Docker and rkt, and can also support hardware virtualization technologies. Kubernetes assembles one or more computers (VMs) into a cluster that can run containerized workloads. It works with various container runtime environments, such as containerd and CRI-O. Kubernetes defines a set of building blocks ("primitives") that, when combined, provide mechanisms for deploying, maintaining, and scaling applications based on CPU, memory, or user-defined metrics. Its suitability for running and managing workloads of all sizes and styles has led to its widespread adoption in clouds and data centers.

Система событийного масштабирования (Kubernetes Event-Driven Autoscaler, KEDA) - открытое решение для реактивного масштабирования приложений, реагирует на события и увеличивает или уменьшает количество активных экземпляров приложения. KEDA можно добавить в любой кластер Kubernetes. KEDA может расширять функциональность без перезаписи или дублирования. С помощью KEDA можно сопоставить приложения, которым необходимо масштабирование на основе событий, при этом другие приложения продолжат функционировать, что делает KEDA гибким и безопасным вариантом для запуска вместе с любым количеством других приложений или фреймворков Kubernetes.The Kubernetes Event-Driven Autoscaler (KEDA) is an open-source solution for reactive application scaling. KEDA responds to events and increases or decreases the number of active application instances. KEDA can be added to any Kubernetes cluster. KEDA can expand functionality without rewriting or duplicating. With KEDA, applications requiring event-driven scaling can be isolated while other applications continue to function, making KEDA a flexible and secure option for running alongside any number of other Kubernetes applications or frameworks.

Сетевой плагин (Cilium, CNI) - открытое решение для реализации сетевого взаимодействия в рамках кластера Kubernetes, используется для аннонсирования выделенного IP адреса для публикуемого приложения. Cilium позволяет гибко настраивать ограничения на сетевое взаимодействие в кластере с помощью сетевых политик.The Cilium Network Plugin (CNI) is an open-source solution for implementing networking within a Kubernetes cluster. It is used to advertise a dedicated IP address for a published application. Cilium allows flexible configuration of networking restrictions within the cluster using network policies.

eBPF (Extended Berkeley Packet Filter) - технология ядра Linux, позволяющая запускать специализированные подпрограммы для обработки сетевых пакетов на уровне ядра ОС или, в некоторых случаях, на уровне сетевого устройства (сетевой карты)eBPF (Extended Berkeley Packet Filter) is a Linux kernel technology that allows specialized routines to process network packets to be run at the OS kernel level or, in some cases, at the network device (network card) level.

eBPF агент (eBPF agent) - программное приложение, состоящая из двух подпрограмм: пользовательской, запускаемой в пользовательском пространстве (user space) и подпрограммой на уровне ядра (kernel space). С помощью технологии eBPF можно реализовать двухстороннюю связь между этими подпрограммами - считывать и записывать данные из ядра и обратно.An eBPF agent is a software application consisting of two subroutines: a user subroutine running in user space and a kernel subroutine. Using eBPF technology, two-way communication can be implemented between these subroutines, allowing for reading and writing data to and from the kernel.

XDP (eXpress Data Path) - самая ранняя точка в пути любого сетевого пакета, проходящего через eBPF программу, позволяет подключить к себе eBPF программу с помощью которой будет производится управление (PASS, DROP, REJECT) входящего сетевого пакета. Если в этой точке пакет получил пометку PASS, т.е. разрешение на дальнейшую обработку, то далее он передается ядром Linux в другие подсистемы - сетевой стек, стек уровня приложения и т.д.XDP (eXpress Data Path) is the earliest point in the path of any network packet passing through an eBPF program. It allows the connection of an eBPF program that will perform control (PASS, DROP, REJECT) of the incoming network packet. If at this point the packet is marked PASS, i.e., permitted for further processing, it is then passed by the Linux kernel to other subsystems—the network stack, the application-level stack, etc.

Предлагаемый способ и система маршрутизации запросов в бессерверных средах реализует прямой перехват сетевых пакетов на транспортном уровне, минуя стандартную обработку сетевым стеком ОС, без применения прокси-компонентов, предварительной инициализации сокетов или промежуточных преобразований. Технология обеспечивает поддержку мультипротокольных взаимодействий таких как TCP/IP, UDP и SCTP протоколы, сокращая ресурсные затраты за счёт устранения избыточной инфраструктуры и минимизируя задержки благодаря оптимизированной доставке данных к целевой функции без лишних сетевых переходов.The proposed method and system for routing requests in serverless environments implements direct interception of network packets at the transport layer, bypassing standard processing by the OS network stack and without the use of proxy components, socket pre-initialization, or intermediate transformations. The technology provides support for multiprotocol communications such as TCP/IP, UDP, and SCTP, reducing resource costs by eliminating redundant infrastructure and minimizing latency through optimized data delivery to the target function without unnecessary network hops.

На фиг.1а показана общая компонентная схема бессерверных вычислений в облачной среде на примере Evolution App Services в Cloud.ru, которая выполнена как публичное облако на базе компонентов с открытым исходным кодом с IaaS- и PaaS-сервисами. Облаком пользуются те, кому нужно арендовать вычислительные мощности и хранилища, например, чтобы запустить домашний проект, протестировать новую разработку или сделать облачно-ориентированное приложение. Figure 1a shows a general component diagram of serverless computing in a cloud environment, using Evolution App Services at Cloud.ru as an example. It is implemented as a public cloud based on open-source components with IaaS and PaaS services. The cloud is used by those who need to rent computing power and storage, for example, to launch a home project, test a new development, or build a cloud-native application.

Контрол плейн (Control Plane) 1 содержит следующие участвующие компоненты: управляющий API 10, общий публичный API 20, пользовательский уровень API 30, ядро API 40, управляющий уровень Kubernetes 50, API мониторинга 60, API использования для просмотра использования и расходов 70, брокер сообщений Kafka 80, базу данных 90. Control Plane 1 contains the following participating components: Control API 10, Common Public API 20, User Layer API 30, Core API 40, Kubernetes Control Layer 50, Monitoring API 60, Usage API for viewing usage and costs 70, Kafka Message Broker 80, Database 90.

Дата плейн (Data Plane) 2, содержит следующие участвующие компоненты: исполняющую среду Kubernetes 100, клиентское приложение бессерверных вычислений 110, источники данных и событий 120. Data Plane 2 contains the following participating components: Kubernetes runtime 100, serverless client application 110, data and event sources 120.

Облачный сервис 3, содержит следующие участвующие компоненты: функции IAM 130, MonAAS 140, LogAAS 150, биллинг 160, каталог продуктов 170, шина событий 180. Cloud service 3 contains the following participating components: IAM functions 130, MonAAS 140, LogAAS 150, Billing 160, Product Catalog 170, Event Bus 180.

Пространство пользователя 4, содержит следующие участвующие компоненты: регистр контейнеров 190, шину пользовательских событий 200, шлюз API 210. User space 4 contains the following participating components: container register 190, user event bus 200, API gateway 210.

На фиг.1b показан пример архитектуры системы выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений.Fig. 1b shows an example of the architecture of a system for executing client-server applications of the transport layer in serverless computing mode.

Каждый из средств ВМ с развернутой средой Kubernetes и/или системы событийного масштабирования инфраструктуры KEDA, и/или системы Kubernetes для управления внешними - публичными IP адресами Cilium (IPAM), и/или eBPF агента может быть выполнен, в виде узла вычислительного хоста 201, который обеспечивает реализацию заявленного способа, например, модулем/узлом хранения, частью вычислительного кластера, обрабатывающим необходимые данные для обеспечения облачной среды. Хост 201 - устройство, например, компьютерная система общего назначения или сервер, на котором функционирует, например, клиент и Kubernetes, под управлением которой исполняются ВМ.Each VM with a deployed Kubernetes environment and/or KEDA infrastructure event scaling system, and/or Cilium's IPAM (Kubernetes system for managing external public IP addresses), and/or eBPF agent can be implemented as a computing host node 201, which facilitates the implementation of the claimed method, for example, as a storage module/node, or as part of a computing cluster processing the necessary data to support the cloud environment. Host 201 is a device, such as a general-purpose computer system or server, that hosts, for example, a client and Kubernetes, under whose control the VMs are executed.

В общем случае система - хост 201 содержит такие компоненты, как: один или более процессоров 101, по меньшей мере одну память 105, средство хранения данных 103, интерфейсы ввода/вывода 102, средство ввода/вывода 106, средство сетевого взаимодействия 107, которые объединяются посредством универсальной шины 104. Процессор 101 выполняет основные вычислительные операции, необходимые для обработки данных при выполнении способа. Процессор 101 исполняет необходимые машиночитаемые команды, содержащиеся в оперативной памяти 105. Память 105, как правило, выполнена в виде ОЗУ и содержит необходимую программную логику, обеспечивающую требуемый функционал. Средство хранения данных 103 может выполняться в виде HDD, SSD дисков, рейд массива, флэш-памяти, оптических накопителей информации (CD, DVD, Blue-Ray дисков). Средства 103 позволяют выполнять долгосрочное хранение различного вида информации, например, блоки данных, структура данных, метаданные, тестовые сценарии. Для организации работы компонентов системы и организации работы внешних подключаемых устройств применяются различные виды интерфейсов ввода/вывода 102. Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительных устройств, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, Lightning, USB, TRS/Audio jack, HDMI, DVI, VGA, Display Port, RJ45, RS232. Выбор интерфейсов 102 зависит от конкретного исполнения системы, которая может быть реализована на базе широко класса устройств, например, персональный компьютер, серверный кластер, сервер. В качестве средств ввода/вывода данных 106 может использоваться: клавиатура, джойстик, дисплей (сенсорный дисплей), монитор, сенсорный дисплей, тачпад, манипулятор мышь, световое перо, сенсорная панель, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, проектор, камера, средства биометрической идентификации.In general, the host system 201 comprises the following components: one or more processors 101, at least one memory 105, data storage means 103, input/output interfaces 102, input/output means 106, and network interaction means 107, which are connected via a universal bus 104. The processor 101 performs the basic computing operations required for processing data during the method implementation. The processor 101 executes the necessary machine-readable instructions contained in the random access memory 105. The memory 105 is typically implemented in the form of RAM and contains the necessary program logic to provide the required functionality. The data storage means 103 can be implemented in the form of HDD, SSD disks, RAID array, flash memory, optical storage devices (CD, DVD, Blue-Ray disks). The 103 tools enable long-term storage of various types of information, such as data blocks, data structures, metadata, and test scripts. Various types of input/output interfaces 102 are used to organize the operation of system components and the operation of externally connected devices. The selection of the appropriate interfaces depends on the specific design of the computing devices, which may include, but are not limited to: PCI, AGP, PS/2, IrDA, FireWire, LPT, COM, SATA, Lightning, USB, TRS/Audio jack, HDMI, DVI, VGA, Display Port, RJ45, and RS232. The selection of interfaces 102 depends on the specific design of the system, which may be implemented on a wide range of devices, such as a personal computer, a server cluster, or a server. The following may be used as input/output data means 106: keyboard, joystick, display (touch display), monitor, touch display, touchpad, mouse, light pen, touch panel, speakers, microphone, augmented reality means, optical sensors, tablet, projector, camera, biometric identification means.

Средства сетевого взаимодействия 107 выбираются из устройств, обеспечивающих сетевой прием и передачу данных, например, Ethernet карту, WLAN/Wi-Fi модуль, Bluetooth модуль, BLE модуль, NFC модуль, IrDa, RFID модуль, GSM модем. С помощью средств 106 обеспечивается организация обмена данными между, например, системой, представленной в виде сервера и вычислительным устройством пользователя, на котором могут отображаться полученные данные по проводному или беспроводному каналу передачи данных, например, WAN, PAN, ЛВС (LAN), Интранет, Интернет, WLAN, WMAN или GSM.Network interaction means 107 are selected from devices that provide network data reception and transmission, such as an Ethernet card, a WLAN/Wi-Fi module, a Bluetooth module, a BLE module, an NFC module, an IrDA module, an RFID module, or a GSM modem. Means 106 facilitate data exchange between, for example, a system represented as a server and a user's computing device, which can display received data via a wired or wireless data transmission channel, such as a WAN, PAN, LAN, Intranet, Internet, WLAN, WMAN, or GSM.

В общем случае, система маршрутизации сетевых запросов в бессерверной среде состоит из набора компонентов, включающий в себя, например, хосты - физические или ВМ с установленными ОС, с развернутой на базе них средой Kubernetes и запускаемыми в этой среде экземплярами бессерверных приложений, и программного коммутатора, связывающего все ВМ с Kubernethes в единую систему. Особенность системы заключается в том, что в состав сетевого уровня Kubernetes входит плагин Cilium, пример работы которого раскрыт в статье https://habr.com/ru/companies/kts/articles/825136/ .In general, a network request routing system in a serverless environment consists of a set of components, including, for example, hosts—physical or VMs with an OS installed—with a Kubernetes environment deployed on them and instances of serverless applications running in this environment, and a software switch that connects all VMs to Kubernetes into a single system. A unique feature of the system is that the Kubernetes network layer includes the Cilium plugin, an example of which is described in the article https://habr.com/ru/companies/kts/articles/825136/.

Cilium позволяет гибко настраивать ограничения на сетевое взаимодействие в кластере с помощью сетевых политик. Их применение в Cilium похоже на применение стандартных сетевых политик Kubernetes: по умолчанию у пода нет никаких ограничений на ingress- и egress-трафик, но если он попадает под селектор хотя бы одной политики, то переходит в режим «default deny». Таким образом, весь трафик, кроме того, что разрешен политиками, блокируется. Ответный трафик имплицитно разрешен. Cilium предоставляет еще режим always - в этом режиме правило «default deny» распространяется на все поды независимо от того, попадают они под селектор сетевых политик или нет; и режим never - в этом режиме применение сетевых политик отключено, трафик в кластере передается без ограничений.Cilium allows flexible configuration of network communication restrictions within the cluster using network policies. Their implementation in Cilium is similar to standard Kubernetes network policies: by default, a pod has no restrictions on ingress and egress traffic, but if it matches the selector of at least one policy, it switches to "default deny" mode. This blocks all traffic except that permitted by the policies. Response traffic is implicitly allowed. Cilium also offers an "always" mode, in which the "default deny" rule applies to all pods regardless of whether they match the network policy selector. In this mode, network policies are disabled, and traffic within the cluster is transmitted without restrictions.

Система Kubernetes для управления внешними - публичными IP адресами Cilium (IPAM) содержит инструментарий Cilium, представляющий собой плагин, заменяющий стандартные сетевые компоненты (kube-proxy, iptables) за счет интеграции eBPF-программ в ядро ОС. Агент Cilium на каждом хосте взаимодействует с Kubernetes API для синхронизации сетевых политик и состояния эндпоинтов. Информация о подах и сервисах кэшируется в локальной памяти. Хранение состояния конфигурации (политики безопасности, IP-адреса подов и таблицы внутренней маршрутизации запросов) может осуществляться, например, в etcd или CiliumNetworkPolicy. Обработка трафика осуществляется за счет загрузки в ядро ОС eBPF-программ, которые обрабатывают трафик между подами Kubernetes напрямую, минуя сетевой стек. В рамках предложенного изобретения реализован компонент (eBPF агент), позволяющий перехватить входящий сетевой пакет до того, как сетевой стек ОС отклонит подключение.The Kubernetes IPAM system, Cilium, for managing external (public) IP addresses includes the Cilium toolkit, a plugin that replaces standard network components (kube-proxy, iptables) by integrating eBPF programs into the OS kernel. A Cilium agent on each host interacts with the Kubernetes API to synchronize network policies and endpoint state. Information about pods and services is cached in local memory. Configuration state (security policies, pod IP addresses, and internal request routing tables) can be stored, for example, in etcd or CiliumNetworkPolicy. Traffic processing is accomplished by loading eBPF programs into the OS kernel, which process traffic between Kubernetes pods directly, bypassing the network stack. The proposed solution implements a component (eBPF agent) that intercepts incoming network packets before the OS network stack rejects the connection.

Data Plane с оболочкой Kubernetes.Data Plane with Kubernetes shell.

1. Инициализация таблицы маршрутизации.1. Initialization of the routing table.

В предложенном изобретении виртуальная машина в составе среды Kubernetes, с помощью сетевого плагина Cilium, входящего в состав сетевого уровня Kubernetes, сообщает вышестоящему сетевому оборудованию, включая обслуживающий программный коммутатор, что готова принимать запросы по одному из назначенных публичных IP адресов или подсетей IP адресов, с помощью L2 протокола ARP, как показано на фиг.2. In the proposed invention, a virtual machine within the Kubernetes environment, using the Cilium network plugin, which is part of the Kubernetes network layer, informs the upstream network equipment, including the servicing software switch, that it is ready to accept requests on one of the assigned public IP addresses or subnets of IP addresses, using the L2 ARP protocol, as shown in Fig. 2.

На фиг.2 представлены этапы анонсирования IP адресов ВМ в среде Kubernetes, где каждая ВМ, например, 220 с адресом 100.72.0.1 и 230 с адресом, например, 100.72.0.2 осуществляют привязку к роутеру (сетевое устройство, маршрутизатор) 210. Пользователь 200 осуществляет через роутер 210 запрос и выбор требуемой ВМ 220 с адресом 100.72.0.1 и далее передают пакеты от пользователя 200 посредством роутера 210 на ВМ 220 с адресом 100.72.0.1.Fig. 2 shows the stages of announcing IP addresses of VMs in the Kubernetes environment, where each VM, for example, 220 with the address 100.72.0.1 and 230 with the address, for example, 100.72.0.2, bind to a router (network device, router) 210. User 200 makes a request through router 210 and selects the required VM 220 with the address 100.72.0.1 and then transmits packets from user 200 via router 210 to VM 220 with the address 100.72.0.1.

На уровне ВМ, в которой развернут экземпляр бессерверного приложения, а также на уровне сетевых устройств не происходит создание сокета, что позволяет не занимать дополнительных ресурсов в виде файловых дескрипторов, оперативной памяти. Также для каждого размещаемого серверного приложения на уровне eBPF агента, назначается уникальная комбинация из серверного протокола, IP адреса и порта назначения.No socket creation occurs at the VM level where the serverless application instance is deployed, nor at the network device level, eliminating the need for additional resources such as file descriptors and RAM. Furthermore, each hosted server application is assigned a unique combination of server protocol, IP address, and destination port at the eBPF agent level.

На основе комбинации протокола, IP адреса и порта назначения система строит таблицу внутренней маршрутизации запросов, например:Based on the combination of protocol, IP address and destination port, the system builds an internal request routing table, for example:

ПротоколProtocol IP адресIP address Порт назначенияPort of destination ПриложениеApplication Состояние приложенияApplication status TCPTCP 100.72.0.1100.72.0.1 54325432 Приложение АAppendix A Есть активный экземплярThere is an active copy UDPUDP 100.72.0.1100.72.0.1 5353 Приложение БAppendix B Нет активных экземпляровThere are no active instances.

Далее таблица маршрутизации реплицируется, посредством Kubernetes API, на все ВМ в составе среды Kubernetes для последующего использования eBPF агентом при инициализации соединения.The routing table is then replicated, via the Kubernetes API, to all VMs within the Kubernetes environment for subsequent use by the eBPF agent when initializing a connection.

При изменении состояния приложения (масштабирование в ноль - когда пользовательская нагрузка не масштабирована до требуемого значения количества активных контейнеров, удаление приложение из системы и др.) таблица маршрутизации обновляется.When the application state changes (scaling to zero - when the user load is not scaled to the required number of active containers, deleting the application from the system, etc.), the routing table is updated.

2. Перехват входящего подключения и применение таблицы маршрутизации.2. Intercepting the incoming connection and applying the routing table.

На примере TCP протокола, при отсутствии активных экземпляров бессерверного приложения, сетевой стек ОС ВМ будет отклонять входящее подключение с ошибкой Connection Refused как показано на фиг.3, блок "негативный сценарий".Using the TCP protocol as an example, if there are no active instances of a serverless application, the VM OS network stack will reject the incoming connection with the Connection Refused error as shown in Fig. 3, the "negative scenario" block.

На фиг.3 представлен процесс инициализации сессии на примере TCP, где при позитивном сценарии - пользовательское приложение (экземпляр бессерверного приложения) 340 (ПП) осуществляет инициализацию (аллокацию) сокета через сетевой стек ОС 330. Пользователь 300 инициализирует соединение (TCP SYN) через сетевой стек ОС 330, которая проверяет на существование запрашиваемого порта и передает пользователю 300 положительный ответ (TCP SYN + ACK), т.к. порт был аллоцирован ранее, система может принять запрос. Пользователь 300 подтверждает подключение (TCP ACK) на сетевой стек ОС 330. Осуществляется обмен пакетами в рамках TCP сессии между пользователем 300 и ПП 340. При негативном сценарии - пользователь 300 инициализирует соединение (TCP SYN) через сетевой стек ОС 330, которая проверяет на существование запрашиваемого порта и передает пользователю 300 отклонение подключения (TCP RST + ACK), т.к. порт не был аллоцирован ранее, система не может принять запрос.Fig. 3 shows the session initialization process using TCP as an example, where in a positive scenario, user application (serverless application instance) 340 (UA) initializes (allocates) a socket via OS network stack 330. User 300 initializes a connection (TCP SYN) via OS network stack 330, which checks for the existence of the requested port and sends a positive response (TCP SYN + ACK) to user 300, since the port was allocated earlier and the system can accept the request. User 300 confirms the connection (TCP ACK) to OS network stack 330. Packets are exchanged within the TCP session between user 300 and UA 340. In a negative scenario, user 300 initializes a connection (TCP SYN) via OS network stack 330, which checks for the existence of the requested port and sends a connection rejection (TCP RST + ACK) to user 300, since The port has not been allocated previously, the system cannot accept the request.

В случае если пользователь, отправив TCP SYN пакет при попытке установки соединения, не получил от сервера ни положительного, ни негативного ответа, например, из-за проблем на сетевом уровне, то по прошествии таймаута активирует стандартный механизм повторной попытки инициализации TCP сессии как показано на фиг.5, и см. https://datatracker.ietf.org/doc/html/rfc793#section-3.4If the user, having sent a TCP SYN packet when attempting to establish a connection, has not received either a positive or negative response from the server, for example, due to problems at the network level, then after a timeout, the standard mechanism for retrying to initialize the TCP session is activated, as shown in Fig. 5, and see https://datatracker.ietf.org/doc/html/rfc793#section-3.4

На фиг.5 представлен алгоритм повтора инициализации TCP сессии (TCP SYN retransmission (ретрансляции), где пользователь 500 передает запрос TCP SYN сетевому устройству (маршрутизатору) 510 для осуществления попытки передать пакет сетевому устройству сервера (NIC) 520. Пакет не был доставлен до запрашиваемого адреса, например, из-за проблем на уровне сетевой инфраструктуры и TCP ASK не был возвращен. Цикл ретрансляции TCP SYN повторяется от одного раза до заданного количества раз. Ожидание ответа от сетевого устройства сервера (NIC) 520. Пользователь 500 заново передает запрос TCP SYN сетевому устройству 510 для осуществления попытки передать пакет сетевому устройству сервера (NIC) 520. Повторная попытка инициализации сессии.Fig. 5 shows the algorithm for repeating the initialization of a TCP session (TCP SYN retransmission), where the user 500 transmits a TCP SYN request to the network device (router) 510 to attempt to transmit a packet to the network device server (NIC) 520. The packet was not delivered to the requested address, for example, due to problems at the network infrastructure level and the TCP ASK was not returned. The TCP SYN retransmission cycle is repeated from one time to a specified number of times. Waiting for a response from the network device server (NIC) 520. The user 500 retransmits the TCP SYN request to the network device 510 to attempt to transmit a packet to the network device server (NIC) 520. Repeated attempt to initialize the session.

В случае UDP-протокола, так как, в отличие от протокола TCP, протокол UDP не гарантирует доставку сообщений до запрашиваемого сервера (за счет этого достигается увеличенная пропускная способность), зачастую протоколы на базе UDP реализуют механизм ретранслирования сообщений, например, один из самых популярных протоколов на базе UDP - DNS, использует механизм повторных запросов по истечению таймаута, см. https://datatracker.ietf.org/doc/html/rfc1035#section-4.2.1In the case of the UDP protocol, since, unlike the TCP protocol, the UDP protocol does not guarantee the delivery of messages to the requested server (due to this, increased throughput is achieved), UDP-based protocols often implement a message relay mechanism, for example, one of the most popular UDP-based protocols - DNS, uses a mechanism for repeating requests after a timeout, see https://datatracker.ietf.org/doc/html/rfc1035#section-4.2.1

При "позитивном сценарии", когда уже запущен хотя бы один экземпляр бессерверного приложения, приложение инициирует (аллоцирует) открытый сокет на сетевом стеке ОС. Далее, eBPF агент, при перехвате входящего пакета, извлекает из входящего запроса его протокол (TCP), запрашиваемый IP адрес и порт назначения, проверяет состояние серверного приложения из реплицируемой таблицы маршрутизации и принимает дальнейшее действие по алгоритму, в зависимости от состояния приложения, как показано на фиг.4.In the "positive scenario," when at least one instance of the serverless application is already running, the application initiates (allocates) an open socket on the OS network stack. Next, the eBPF agent, upon intercepting an incoming packet, extracts the protocol (TCP), the requested IP address, and the destination port from the incoming request, checks the state of the server application from the replicated routing table, and takes further action according to the algorithm, depending on the application state, as shown in Figure 4.

На фиг.4 представлен алгоритм принятия или игнорирования пакета на уровне eBPF агента (уровень ядра), где на этапе 400 входящий пакет получен сетевым устройством, а на этапе 410 входящий пакет перехвачен eBPF агентом. На этапе 420 из входящего пакета извлекается протокол, запрашиваемый IP адрес и порт назначения. На этапе 430 осуществляют запрос состояния приложения в eBPF map и осуществляют пропуск пакета в сетевой стек (pass) (этап 440), если приложение активно или игнорируют пакет (drop), если приложение неактивно (этап 450). Figure 4 shows the algorithm for accepting or ignoring a packet at the eBPF agent level (kernel level), where at step 400 the incoming packet is received by the network device, and at step 410 the incoming packet is intercepted by the eBPF agent. At step 420 the protocol, requested IP address, and destination port are extracted from the incoming packet. At step 430 the application state is queried in the eBPF map and the packet is passed into the network stack (step 440) if the application is active, or the packet is dropped (step 450) if the application is inactive.

3. Алгоритм масштабирования бессерверного приложения (с нуля активных экземпляров). 3. Algorithm for scaling a serverless application (from zero active instances).

TCP. Пример перехвата входящего сообщения eBPF агентом для TCP протокола показан на фиг.6.TCP. An example of interception of an incoming message by an eBPF agent for the TCP protocol is shown in Fig. 6.

В общем случае. если активного экземпляра бессерверного приложения нет - пакет игнорируется и eBPF агент отправляет запрос события о открытии соединения в систему KEDA. При последующей попытке инициализации TCP сессии eBPF агент проверяет состояние приложения из таблицы маршрутизации и, если приложение активно (приложением открыт сокет на сетевом стеке) и готово принимать входящие запросы, то перенаправляет пакеты в запрашиваемое приложение без изменений.In general, if there is no active serverless application instance, the packet is ignored and the eBPF agent sends a connection open event request to the KEDA system. During a subsequent attempt to initialize a TCP session, the eBPF agent checks the application state from the routing table and, if the application is active (the application has an open socket on the network stack) and is ready to accept incoming requests, it forwards the packets to the requested application unchanged.

На фиг.6 представлен алгоритм масштабирования приложения на базе TCP протокола, где Kubernetes, посредством API, через KEDA 620 запускает агента eBPF (user space) 640 при старте системы, осуществляет синхронизацию пар IP:PORT+STATUS для ПП 630 и передает сообщение eBPF (user space) 640. Пары IP:PORT+STATUS записываются eBPF map и доступны для чтения/записи в компонентах агента. eBPF (user space) 640 осуществляет загрузку eBPF программы в ядро eBPF (kernel) 650, который осуществляет привязку перехватывающей логики с сетевым интерфейсом (с публичным IP) 610. Figure 6 shows an algorithm for scaling an application based on the TCP protocol, where Kubernetes, via API, through KEDA 620, launches the eBPF agent (user space) 640 at system startup, synchronizes IP:PORT+STATUS pairs for the PP 630, and transmits a message to eBPF (user space) 640. The IP:PORT+STATUS pairs are recorded in the eBPF map and are available for reading/writing in the agent components. eBPF (user space) 640 loads the eBPF program into the eBPF kernel (kernel) 650, which binds the intercepting logic to the network interface (with a public IP) 610.

Пользователь 600 передает пакет TCP SYN (попытка N1) сетевому интерфейсу (с публичным IP) 610. User 600 sends a TCP SYN packet (attempt N1) to network interface (with public IP) 610.

Алгоритм работы при наличии активного экземпляра бессерверного приложения (ПП): сетевой интерфейс (с публичным IP) 610 передает XDP событие с TCP SYN пакетом на eBPF (kernel) 650, который осуществляет проверку доступности ПП 630 в eBPF (user space) 640, и при негативном ответе eBPF (kernel) 650 передает cетевому интерфейсу (с публичным IP) 610 сообщение “потери” ответа (drop). Система не отвечает на TCP SYN запрос, т.к. в данный момент нет доступного контейнера, и пользователь получит ответ на SYN запрос в один из последующих запросов, в рамках механизма TCP SYN retransmission (ретрансляции). eBPF (kernel) 650 осуществляет передачу через eBPF (user space) 640 события о попытке инициализации TCP сессии, который передает, в свою очередь, событие на масштабирование в Kubernetes посредством API через KEDA 620. Kubernetes API/KEDA 620 далее осуществляет передачу сообщения - запуск и ожидание доступности на ПП 630. The operating algorithm for an active serverless application (SA) instance is as follows: network interface (with public IP) 610 transmits an XDP event with a TCP SYN packet to eBPF (kernel) 650, which checks the availability of SA 630 in eBPF (user space) 640. If the response is negative, eBPF (kernel) 650 transmits a "drop" message to network interface (with public IP) 610. The system does not respond to the TCP SYN request because there is currently no available container, and the user will receive a response to the SYN request in a subsequent request, as part of the TCP SYN retransmission mechanism. eBPF (kernel) 650 transmits an event about an attempt to initialize a TCP session via eBPF (user space) 640, which in turn transmits an event for scaling in Kubernetes via the API through KEDA 620. Kubernetes API/KEDA 620 then transmits a message - launch and wait for availability on PP 630.

Пользователь 600 передает пакет TCP SYN (попытка N2) сетевому интерфейсу (с публичным IP) 610, так как не был получен ответ на прошлую попытку соединения, то используется стандартный механизм TCP SYN RETRY (повторить). Cетевой интерфейс (с публичным IP) 610 передает XDP событие с TCP SYN пакетом на eBPF (kernel) 650, который осуществляет проверку доступности ПП 630 в eBPF (user space) 640, и, при положительном ответе, eBPF (kernel) 650 передает cетевому интерфейсу (с публичным IP) 610 сообщение о пропуске пакета далее, в сетевой стек ОС (pass). Cетевой интерфейс (с публичным IP) 610 передает пользователю 600 пакет с подтверждением подключения - стандартный пакет TCP с флагами SYN+ACK. Пользователь 600 осуществляет обмен пакетами в рамках установленной TCP сессии с ПП 630.User 600 transmits a TCP SYN packet (attempt N2) to network interface (with public IP) 610. Since no response was received to the previous connection attempt, the standard TCP SYN RETRY mechanism is used. Network interface (with public IP) 610 transmits an XDP event with a TCP SYN packet to eBPF (kernel) 650, which checks the availability of PP 630 in eBPF (user space) 640. If the response is positive, eBPF (kernel) 650 transmits a message to network interface (with public IP) 610 about passing the packet further, to the OS network stack (pass). Network interface (with public IP) 610 transmits a connection acknowledgment packet to user 600 - a standard TCP packet with the SYN+ACK flags. User 600 exchanges packets within the established TCP session with PP 630.

SCTP. Протокол имеет такой же алгоритм инициализации соединения как в TCP, поэтому алгоритм масштабирования такой же, как и для TCP.SCTP. The protocol has the same connection initialization algorithm as TCP, so the scaling algorithm is the same as for TCP.

UDP. Пример перехвата входящего сообщения eBPF агентом для UDP протокола показан на фиг.7. UDP. An example of interception of an incoming eBPF message by an agent for the UDP protocol is shown in Fig. 7.

В общем случае, в UDP протоколе сетевое сообщение также игнорируется eBPF агентом и в случае отсутствия активного экземпляра приложения, происходит уведомление системы KEDA, ожидается запуск приложения и его доступность. Последующие сообщения, отправленные в рамках механизма повтора доставки, пропускаются eBPF агентом в запрашиваемое приложение. Таким образом решается задача корректной установки соединения при отсутствии активного экземпляра приложения, без изменения конкретного протокола приложения, отпадает необходимость в промежуточном компоненте в виде проксирующего и/или кэширующего шлюза-активатора.In general, in the UDP protocol, the eBPF agent also ignores network messages. If there is no active application instance, the KEDA system is notified, and the application is expected to launch and become available. Subsequent messages sent via the retry delivery mechanism are passed on by the eBPF agent to the requested application. This solves the problem of correctly establishing a connection in the absence of an active application instance, without changing the specific application protocol, eliminating the need for an intermediate component such as a proxy and/or caching gateway-activator.

На фиг.7 представлен алгоритм масштабирования приложения на базе UDP протокола, где Kubernetes, посредством API через KEDA 720 запускает агента eBPF (user space) 740 при старте системы, осуществляет синхронизацию пар IP:PORT+STATUS для ПП 730 и передает сообщение eBPF (user space) 740. Пары IP:PORT+STATUS записываются в eBPF map и доступны для чтения/записи в компонентах агента. eBPF (user space) 740 осуществляет загрузку eBPF программы в ядро eBPF (kernel) 750, который осуществляет привязку перехватывающей логики с сетевым интерфейсом (с публичным IP) 710. Figure 7 shows an application scaling algorithm based on the UDP protocol, where Kubernetes, via API through KEDA 720, launches eBPF agent (user space) 740 at system startup, synchronizes IP:PORT+STATUS pairs for PP 730, and transmits a message to eBPF (user space) 740. IP:PORT+STATUS pairs are written to the eBPF map and are available for reading/writing in agent components. eBPF (user space) 740 loads the eBPF program into eBPF kernel (kernel) 750, which binds the intercepting logic to network interface (with public IP) 710.

Пользователь 700 передает пакет UDP (попытка N1) сетевому интерфейсу (с публичным IP) 710. Алгоритм работы при наличии активного экземпляра бессерверного приложения (ПП): сетевой интерфейс (с публичным IP) 710 передает XDP событие с UDP пакетом на eBPF (kernel) 750, который осуществляет проверку доступности ПП 730 в eBPF (user space) 740, и при негативном ответе eBPF (kernel) 750 передает cетевому интерфейсу (с публичным IP) 710 сообщение “потери” ответа (drop). Система не отвечает на входящий UDP запрос, т.к. в данный момент нет доступного контейнера, и пользователь получит ответ на UDP запрос в один из последующих запросов, в рамках retry механизма. eBPF (kernel) 750 осуществляет передачу через eBPF (user space) 740 события о получении UDP пакета, который передает, в свою очередь, событие на масштабирование в Kubernetes, посредством API через KEDA 720. Kubernetes, посредством API через KEDA 720, далее осуществляет передачу сообщения - запуск и ожидание доступности на ПП 730. User 700 transmits a UDP packet (attempt N1) to network interface (with public IP) 710. The operating algorithm for an active serverless application (SA) instance is as follows: network interface (with public IP) 710 transmits an XDP event with a UDP packet to eBPF (kernel) 750, which checks the availability of SA 730 in eBPF (user space) 740. If the response is negative, eBPF (kernel) 750 transmits a "drop" message to network interface (with public IP) 710. The system does not respond to the incoming UDP request because there is currently no available container, and the user will receive a response to the UDP request in a subsequent request, as part of the retry mechanism. eBPF (kernel) 750 transmits an event about receiving a UDP packet via eBPF (user space) 740, which in turn transmits an event for scaling to Kubernetes via the API through KEDA 720. Kubernetes, via the API through KEDA 720, then transmits a message - launch and wait for availability on PP 730.

Пользователь 700 передает пакет UDP (попытка N2) сетевому интерфейсу (с публичным IP) 710, т.к. так как не был получен ответ на прошлую попытку соединения, то используется стандартный механизм повторить попытку (retry). Cетевой интерфейс (с публичным IP) 710 передает XDP событие с UDP пакетом на eBPF (kernel) 750, который осуществляет проверку доступности ПП 730 в eBPF (user space) 740, и при положительном ответе eBPF (kernel) 750 передает cетевому интерфейсу (с публичным IP) 710 сообщение пропуск пакета далее в сетевой стек ОС (pass). Cетевой интерфейс (с публичным IP) 710 передает пакет в запрашиваемый контейнер для ПП 730. Пользователь осуществляет обмен пакетами в рамках протокола UDP с ПП 730.User 700 transmits a UDP packet (attempt N2) to network interface (with public IP) 710, since no response was received to the previous connection attempt, the standard retry mechanism is used. Network interface (with public IP) 710 transmits an XDP event with a UDP packet to eBPF (kernel) 750, which checks the availability of PP 730 in eBPF (user space) 740. If the response is positive, eBPF (kernel) 750 transmits a message to network interface (with public IP) 710 to pass the packet further into the OS network stack (pass). Network interface (with public IP) 710 forwards the packet to the requested container for PP 730. The user exchanges packets with PP 730 using the UDP protocol.

4. Алгоритм масштабирования бессерверного приложения под рост и уменьшение нагрузки (числа запросов).4. Algorithm for scaling a serverless application to accommodate increases and decreases in load (number of requests).

На фиг.8 показана блок-схема обработки запроса с масштабированием инфраструктуры (увеличение и уменьшение числа запросов).Fig. 8 shows a block diagram of request processing with infrastructure scaling (increasing and decreasing the number of requests).

В процессе выполнения eBPF агент считывает метрики из сетевого потока бессерверного приложения, такие как:During eBPF execution, the agent reads metrics from the serverless application's network stream, such as:

1. Количество активных соединений.1. Number of active connections.

2. Количество передаваемых пакетов в секунду.2. The number of packets transmitted per second.

Эти метрики передаются в систему КЕDА, которая принимает решение о масштабировании приложения.These metrics are transmitted to the KEDA system, which makes decisions about scaling the application.

Если нет активных соединений, осуществляют синхронизацию метрик. КЕDА 820 осуществляет, совместно с eBPF агентом 810, установку соединения с сервисом метрик, в ответ eBPF агент 810 осуществляет передачу в KEDA метрик в режиме потока. Количество соединений в этот момент равно нулю, никаких действий не требуется.If there are no active connections, metrics synchronization occurs. KEDA 820, in conjunction with eBPF agent 810, establishes a connection to the metrics service. In response, eBPF agent 810 transmits metrics to KEDA in streaming mode. The number of connections at this point is zero, and no action is required.

Далее количество соединений увеличивается с нуля до одного. В этот момент происходит синхронизация метрик и система КЕDА 820 осуществляет, совместно с eBPF агентом 810, установку соединения с сервисом метрик. В ответ eBPF агент 810 осуществляет передачу в KEDA метрик в режиме потока. Пользователь 800 осуществляет открытие соединения с ВМ и запущенным на ней eBPF агентом 810, который передает в КЕDА 820, что количество соединений увеличилось до одного. КЕDА 820 осуществляет передачу системе Kubernetes 830 команду на масштабирование бессерверного приложения с нуля до одного экземпляра. Далее происходит проверка доступности приложения (Health check). eBPF агент 810 принимает положительное решение на дальнейшую попытку установки соединения с серверным приложением 840, после чего передают двухсторонний TCP поток между пользователем 800 и серверным приложением 840.Next, the number of connections increases from zero to one. At this point, metrics are synchronized, and KEDA 820, in conjunction with eBPF agent 810, establishes a connection to the metrics service. In response, eBPF agent 810 streams metrics to KEDA. User 800 opens a connection to the VM and eBPF agent 810 running on it, which informs KEDA 820 that the number of connections has increased to one. KEDA 820 sends a command to Kubernetes system 830 to scale the serverless application from zero to one instance. A health check then occurs for the application. eBPF agent 810 approves a further connection attempt with server application 840, after which a two-way TCP stream is transmitted between user 800 and server application 840.

Пользователь 800 осуществляет закрытие соединения с ВМ и запущенным на ней eBPF агентом 810, при этом eBPF агент 810 осуществляет передачу КЕDА 820 сообщения о количестве соединений «стало равно нулю». КЕDА 820 осуществляет передачу системе Kubernetes 830 запроса на масштабирование приложения до нуля экземпляров и осуществляет передачу серверному приложению 840 сообщения на остановку приложения, после чего происходит остановка приложения.User 800 closes the connection to the VM and the eBPF agent 810 running on it. In doing so, eBPF agent 810 sends a message to KEDA 820 informing it that the number of connections has become zero. KEDA 820 sends a request to Kubernetes system 830 to scale the application to zero instances and sends a message to server application 840 to stop the application, after which the application is stopped.

Способ и система по настоящему изобретению может иметь форму, по меньшей мере, программного кода (инструкций, программных приложений), воплощенного на материальных носителях, таких как CD-ROM, жесткие диски, оперативная память или любой другой машиночитаемый носитель информации. Инструкции могут быть предоставлены в виде ПО или встроенного ПО и/или могут быть реализованы полностью или частично в аппаратных компонентах, таких как ASIC, FPGA, DSP или других подобных устройствах. Инструкции могут быть сконфигурированы для выполнения одним или несколькими процессорами, которые, при выполнении серии компьютерных инструкций, выполняют или облегчают выполнение всех или части раскрытых способов и процедур. Когда инструкции загружаются в компьютер и выполняются, он становится устройством для практической реализации изобретения. Программные инструкции, записанные на считываемом компьютером носителе, могут конфигурироваться для настоящего изобретения или могут быть известными и используемыми специалистом в компьютерном программном обеспечении. Примеры программных инструкций могут включать: коды на машинном языке, такие как коды, сформированные компилятором, а также коды на языке высокого уровня, которые исполняются компьютером с использованием интерпретатора и тому подобного.The method and system of the present invention may take the form of at least program code (instructions, software applications) embodied on tangible media such as CD-ROM, hard drives, RAM, or any other computer-readable storage medium. The instructions may be provided in the form of software or firmware and/or may be implemented in whole or in part in hardware components such as ASICs, FPGAs, DSPs, or other similar devices. The instructions may be configured for execution by one or more processors, which, when executing a series of computer instructions, perform or facilitate the execution of all or part of the disclosed methods and procedures. When the instructions are loaded into a computer and executed, it becomes a device for practical implementation of the invention. Software instructions recorded on a computer-readable medium may be configured for the present invention or may be known and used by a person skilled in the art in computer software. Examples of software instructions may include: machine language codes, such as those generated by a compiler, as well as high-level language codes that are executed by a computer using an interpreter and the like.

Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов в данной области техники.The submitted application materials disclose preferred examples of the implementation of the technical solution and should not be interpreted as limiting other, particular examples of its implementation that do not go beyond the scope of the requested legal protection, which are obvious to specialists in this field of technology.

Claims (17)

1. Способ выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений, реализующий этапы, на которых: 1. A method for executing client-server applications of the transport layer in serverless computing mode, implementing the steps of: выполняют активацию eBPF агента, чтобы предварительно подготовить протокол управления передачей, до того, как виртуальная машина запустит бессерверную функцию, связанную с предварительно подготовленным протоколом;perform eBPF agent activation to pre-stage the transmission control protocol before the virtual machine starts the serverless function associated with the pre-staged protocol; проводят настройку виртуальных интерфейсов и протоколов в среде Kubernetes для приложения и присваивают ему внешний IP-адрес и порт;configure virtual interfaces and protocols in the Kubernetes environment for the application and assign it an external IP address and port; перехватывают входящий сетевой пакет, с помощью eBPF агента, на запуск первой бессерверной функции;intercept the incoming network packet using the eBPF agent to launch the first serverless function; проводят, с помощью eBPF агента, идентификацию запрашиваемой бессерверной функции по паре ключ-значение протокол+IP-адрес - порт;using the eBPF agent, identify the requested serverless function using the protocol+IP address-port key-value pair; запускают, в ответ на полученный запрос, первую бессерверную функцию на виртуальной машине, используя предварительно подготовленный первый протокол;In response to the received request, launch the first serverless function on the virtual machine using the pre-prepared first protocol; если получен запрос по второму протоколу, запускают, в ответ на полученный запрос, вторую бессерверную функцию на виртуальной машине, используя предварительно подготовленный второй протокол;if a request is received via the second protocol, a second serverless function is launched in response to the received request on the virtual machine using the previously prepared second protocol; маршрутизируют запросы согласно протоколам и портам соответствующим бессерверным функциям;route requests according to protocols and ports to the corresponding serverless functions; считывают метрики из сетевого потока клиент-серверных приложений с помощью eBPF агента; и read metrics from the network flow of client-server applications using the eBPF agent; and передают метрики в систему событийного масштабирования инфраструктуры (КЕDА), которая принимает решение о масштабировании клиент-серверных приложений.transmit metrics to the infrastructure event-driven scaling system (KEDA), which makes decisions about scaling client-server applications. 2. Способ по п. 1, отличающийся тем, что осуществляют инициализацию eBPF агента с таблицей маршрутизации для клиент-серверных приложений.2. The method according to paragraph 1, characterized in that the eBPF agent is initialized with a routing table for client-server applications. 3. Способ по п. 2, отличающийся тем, что таблица маршрутизации обновляется при изменении состояний клиент-серверного приложения, в частности, таких как масштабирование в ноль и/или удаление клиент-серверного приложения. 3. The method according to paragraph 2, characterized in that the routing table is updated when the states of the client-server application change, in particular, such as scaling to zero and/or deleting the client-server application. 4. Способ по п. 1, отличающийся тем, что метрики определяют, в частности, количество активных соединений и/или количество передаваемых пакетов в секунду.4. The method according to paragraph 1, characterized in that the metrics determine, in particular, the number of active connections and/or the number of transmitted packets per second. 5. Способ по п. 1, отличающийся тем, что осуществляют идентификацию запрашиваемой бессерверной функции в eBPF агенте по входящему протоколу, и/или IP-адресу, и/или порту назначения. 5. The method according to paragraph 1, characterized in that the requested serverless function is identified in the eBPF agent by the incoming protocol and/or IP address and/or destination port. 6. Способ по п. 1, отличающийся тем, что предварительно подготовленными протоколами являются TCP/IP, и/или SCTP, и/или UDP протоколы.6. The method according to paragraph 1, characterized in that the pre-prepared protocols are TCP/IP, and/or SCTP, and/or UDP protocols. 7. Способ по п. 6, отличающийся тем, что в результате определения протоколов и маршрутизации направляют пакеты данных в запускаемую первую и вторую бессерверную функцию, используя первый и второй протоколы.7. The method according to paragraph 6, characterized in that as a result of determining the protocols and routing, data packets are sent to the first and second serverless functions being launched, using the first and second protocols. 8. Система выполнения клиент-серверных приложений транспортного уровня в режиме бессерверных вычислений, реализующая способ по любому из пп. 1-7, состоящая из функционально взаимосвязанных: по меньшей мере одной виртуальной машины с развернутой средой Kubernetes; системы Kubernetes для управления внешними - публичными IP адресами Cilium (IPAM); системы KEDA; по меньшей мере одного бессерверного приложения, развернутого в Kubernetes; по меньшей мере одного eBPF агента на каждой из по меньшей мере одной виртуальной машины в составе среды Kubernetes.8. A system for executing client-server applications of the transport layer in serverless computing mode, implementing the method according to any of paragraphs. 1-7, consisting of functionally interconnected: at least one virtual machine with a deployed Kubernetes environment; a Kubernetes system for managing external - public IP addresses Cilium (IPAM); a KEDA system; at least one serverless application deployed in Kubernetes; at least one eBPF agent on each of at least one virtual machine within the Kubernetes environment.
RU2025124265A 2025-09-03 Method and system for optimising cold start infrastructure for transport layer applications in serverless computing mode RU2851979C1 (en)

Publications (1)

Publication Number Publication Date
RU2851979C1 true RU2851979C1 (en) 2025-12-02

Family

ID=

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200081745A1 (en) * 2018-09-10 2020-03-12 Nuweba Labs Ltd. System and method for reducing cold start latency of serverless functions
CN116016644A (en) * 2021-10-19 2023-04-25 中兴通讯股份有限公司 Service request processing method, network device and computer readable storage medium
CN114979104B (en) * 2022-05-27 2023-07-21 苏州浪潮智能科技有限公司 A system, method, computer equipment and storage medium for realizing serverless
US11792194B2 (en) * 2020-12-17 2023-10-17 Zscaler, Inc. Microsegmentation for serverless computing
US20240080242A1 (en) * 2022-08-29 2024-03-07 Oracle International Corporation Control plane techniques for substrate managed containers
US20240303227A1 (en) * 2023-03-10 2024-09-12 Vmware, Inc. Custom resource schema modification
US12120205B2 (en) * 2022-03-03 2024-10-15 Red Hat, Inc. Communication protocol for a distributed event streaming platform
US12244505B1 (en) * 2023-08-15 2025-03-04 Amazon Technologies, Inc. Managed adaptive network connectivity in a cloud provider network
CN120128592A (en) * 2025-03-17 2025-06-10 紫金山实验室 Service call request transmission method, device, storage medium and program product

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200081745A1 (en) * 2018-09-10 2020-03-12 Nuweba Labs Ltd. System and method for reducing cold start latency of serverless functions
US11792194B2 (en) * 2020-12-17 2023-10-17 Zscaler, Inc. Microsegmentation for serverless computing
CN116016644A (en) * 2021-10-19 2023-04-25 中兴通讯股份有限公司 Service request processing method, network device and computer readable storage medium
US12120205B2 (en) * 2022-03-03 2024-10-15 Red Hat, Inc. Communication protocol for a distributed event streaming platform
CN114979104B (en) * 2022-05-27 2023-07-21 苏州浪潮智能科技有限公司 A system, method, computer equipment and storage medium for realizing serverless
US20240080242A1 (en) * 2022-08-29 2024-03-07 Oracle International Corporation Control plane techniques for substrate managed containers
US20240303227A1 (en) * 2023-03-10 2024-09-12 Vmware, Inc. Custom resource schema modification
US12244505B1 (en) * 2023-08-15 2025-03-04 Amazon Technologies, Inc. Managed adaptive network connectivity in a cloud provider network
CN120128592A (en) * 2025-03-17 2025-06-10 紫金山实验室 Service call request transmission method, device, storage medium and program product

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Installing Addons, опубл.17.12.2024 по данным web.archive.org, https://web.archive.org/web/20241217194419/https://kubernetes.io/docs/concepts/cluster-administration/addons/. *

Similar Documents

Publication Publication Date Title
US11934341B2 (en) Virtual RDMA switching for containerized
Wawrzoniak et al. Boxer: Data analytics on network-enabled serverless platforms
JP6200497B2 (en) Offload virtual machine flows to physical queues
US11115481B2 (en) Transmission control of protocol state exchange for dynamic stateful service insertion
US12169732B2 (en) Reusing software application containers
US8805990B2 (en) Load balancing for single-address tenants
US20070028239A1 (en) Dynamic performance management for virtual servers
Pipatsakulroj et al. muMQ: A lightweight and scalable MQTT broker
US9632974B1 (en) Proxy based data transfer utilizing direct memory access
Hayakawa et al. Prism: Proxies without the pain
US20130054817A1 (en) Disaggregated server load balancing
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
Zhu et al. Deploying user-space {TCP} at cloud scale with {LUNA}
CN113424149B (en) Low latency events across VM boundaries
Bernaschi et al. SockMi: a solution for migrating TCP/IP connections
RU2851979C1 (en) Method and system for optimising cold start infrastructure for transport layer applications in serverless computing mode
KR20050078395A (en) A grid mpi job allocation system and method using file-based mpi initialization in grid computing system
RU2851041C1 (en) System for executing client-server applications of transport layer in serverless computing mode
CN113419810A (en) Data interaction method and device, electronic equipment and computer storage medium
Ivanisenko Methods and Algorithms of load balancing
Wawrzoniak et al. Short-lived datacenter
KR101577034B1 (en) Multicore based toe system easy to add supplemental network functions with software and the control method therefor
Li et al. Remote TCP Connection Offload with XO
Horany et al. Remote Programmability Model
Olaru et al. Speculative TCP Connection Admission Using Connection Migration in Cluster-Based Servers.