Изобретение относится к вычислительной технике, а именно к средствам для осуществления межсетевого взаимодействия средств коммутации, организации и управления трафиком приема-передачи данных с целью оптимизации трафика и повышения сетевой производительности.
Из уровня техники известен патент (US 10764087 B2, опубл. 2020.09.01), где раскрыта открытая виртуализированная многоклиентская сеть, обслуживающая виртуальные машины для возможности подключения на основе контейнеров, которая включает: память, физический процессор, взаимодействующий с памятью, изолированного гостя на хосте, виртуальный коммутатор и контроллер сетевого интерфейса. Изолированный гость включает контроллер виртуального сетевого интерфейса (vNIC). Виртуальный коммутатор содержит множество портов, в том числе порт северного направления, порт связи и порт южного направления. Северный порт подключен к сети, имеющей соответствующее сетевое имя и связан с виртуальной локальной сетью (VLAN). Коммуникационный порт подключен к vNIC изолированного гостя и связан с VLAN, а контроллер сетевого интерфейса подключен к южному порту.
Из уровня техники известен прототип - программный коммутатор Open Virtual Switch (Open vSwitch, OVS), который позволяет управлять трафиком в виртуальной среде. Он работает на уровне L2 модели OSI и может быть использован для создания виртуальных сетей, управления трафиком и обеспечения безопасности. OVS является открытым и бесплатным программным обеспечением, которое может быть использовано в различных виртуальных средах, таких как OpenStack, KVM и другие. Он предоставляет широкий набор функций для управления трафиком и обеспечения безопасности в виртуальной среде.
OVS является распространенным решением для построения сетевой инфраструктуры в облачных системах. Он используется для объединения в единую сеть виртуальных машин или Kubernetes pods – подов, расположенных на множестве узлов. Для этого, в OVS есть различные механизмы для взаимодействия с виртуальными машинами, контейнерами, сетевыми контроллерами и операционной системой. Например, чтобы подключить к сети виртуальную машину на базе QEMU, можно использовать TAP интерфейсы. Для выхода во внешнюю сеть можно использовать ресурсы операционной системы, ее сетевой стек и драйверы сетевых контроллеров.
Однако подсистемы операционной системы больше рассчитаны на обслуживание сетевых приложений и их возможности избыточны для задачи коммутации сетевого трафика, что ведет к потреблению большего количество аппаратных ресурсов.
Техническая проблема, решаемая заявленным изобретением, заключается в повышении эффективности работы средств коммутации за счет установки и использования прямого канала передачи данных между устройствами (виртуальной машиной) и программным коммутатором.
Технический результат заключается в увеличении скорости передачи и приема данных при снижении числа потребляемых аппаратных ресурсов и сокращении участвующих компонентов в цепочке приемо-передачи для сетевого взаимодействия.
Указанный технический результат достигается при осуществлении способа сетевого взаимодействия средств коммутации, заключающегося в том, что посредством облачного контроллера 300 на хосте 201 под управлением операционной системы хоста 202 с ядром 203, содержащим vDPA-подсистему 206, запускают программный коммутатор 214 и виртуальную машину (ВМ) 220, создают с помощью программного коммутатора 214 виртуальное устройство VDUSE - «устройство vDPA в пространстве пользователя» 207 и регистрируют его в ядре операционной системы хоста 203, а также в программном коммутаторе 214 в виде сетевого VDUSE порта 215; в vDPA подсистеме в виде виртуального устройства VHOST 205, обеспечивают взаимодействие устройства VHOST 205 и vDPA устройства подсистемы vDPA 206; в ВМ 220 создают виртуальное устройство NIC 225; обеспечивают взаимодействие ВМ 220 с программным коммутатором 214, определяют на сетевом VDUSE порте 215 возможности по количеству очередей приема/передачи, в том числе и наличие очередей управления; в виртуальном устройстве NIC 225, в соответствии с указанными возможностями сетевого VDUSE порта 215, выделяют память под буферы с очередями приема/передачи и/или под очереди управления, настраивают очереди и, преобразуя виртуальные адреса очереди приема/передачи в физические адреса участков памяти с данными очередей приема/передачи, передают их виртуальному устройству VHOST 205 vDPA подсистемы 206; ВМ 220 запускает гостевую ОС 221 с ядром ВМ 222 содержащим драйвер virtio-net 223 виртуального устройства NIC 225; получают, с помощью драйвера virtio-net 223, адреса очередей приема/передачи от ВМ 220 и используют полученную информацию для настройки логической структуры очередей в драйвере virtio-net, добавляют буферы с очередями приема/передачи и/или очередями управления в адресное пространство программного коммутатора 214, устанавливая тем самым сетевую связанность между ВМ 220 и программным коммутатором 214 для осуществления приемо-передачи данных.
Указанный технический результат достигается в способе передачи данных, в сеть через программный коммутатор 214 к виртуальной машине 220, заключающемся в том, что в virtio-net драйвере 223 формируют очередь для передачи данных; выбирают с помощью программного коммутатора 214, из очереди данных 224 для передачи, ближайший свободный дескриптор очереди, который был отмечен свободным при помощи драйвера virtio-net 223 виртуальной машины 220; копируют данные, указанные в выбранном дескрипторе очереди 224, в буфер первичной очереди программного коммутатора 214; добавляют выбранные дескрипторы в очередь 224, тем самым изменяя состояние первичной и вторичной очередей; уведомляют, через VDUSE порт 215, виртуальное устройство VDUSE 207 и, с помощью подсистемы vDPA 206, ядро 203 операционной системы хоста, что состояние общей очереди было изменено; отправляют сообщение с помощью vDPA подсистемы 206, через виртуальное устройство VHOST 205 для ВМ, о том, что состояние общей очереди было изменено; обрабатывают данные между программным коммутатором 214 и гостевой ВМ 220; удаляют из очереди 224 использованные дескрипторы и помещают их снова в список свободных, при этом драйвер virtio-net 223 в виртуальной машине 220 осуществляет прерывание на прием, либо отслеживает состояние очереди передачи, определяя, какие дескрипторы очереди помечены как использованные и использованные дескрипторы заново инициализируют и ставятся в конец очереди 224.
Указанный технический результат достигается также в способе приема данных в сети через программный коммутатор 214 от виртуальной машины 220, заключающемся в том, что формируют очередь данных для приема; выбирают, с помощью драйвера virtio-net 223 гостевой ОС 220, следующий свободный дескриптор очереди 224; копируют, с помощью драйвера virtio-net 223, данные в буферы дескрипторов, которые нужно отправить; добавляют, с помощью драйвера virtio-net 223, дескрипторы в очередь 224, тем самым изменяя состояния вторичной и первичной очередей 224; уведомляют (передают и принимают), с помощью драйвера virtio-net 223, ядро 203 операционной системы хоста, что состояние очереди 224 было изменено; уведомляют, с помощью ядра ОС хоста 203 через виртуальное устройство VDUSE 207 и с помощью подсистемы vDPA 206, порт VDUSE 215 программного коммутатора 214, что состояние очереди 224 было изменено; осуществляют обработку данных между гостевой ВМ 220 и программным коммутатором 214; удаляют из очереди 224 использованные дескрипторы очереди и помещают их снова в список свободных.
Дополнительная особенность заключается в том, что настройка логической структуры включает в себя инициацию драйвером virtio-net 223 логической структуры очередей: очереди передачи инициализируются пустыми, очереди приема полностью заполняются дескрипторами с буферами для приема/передачи сообщений из сети; очередь управления, в случае ее наличия, инициализируется пустой.
Дополнительная особенность заключается в том, что указанные возможности (features), представляют собой битовый вектор, который находится в структуре, которая, в свою очередь, передается через цепочку вызовов функций, а программный коммутатор 214, при создании VDUSE порта 215, регистрирует свои возможности в ядре операционной системы хоста 202 и эти возможности передаются виртуальному устройству NIC 225.
Заявленное изобретение поясняется на графических материалах, где на фиг. 1 представлен пример общего вида вычислительной системы (хоста) 201, которая обеспечивает реализацию заявленной системы или является частью компьютерной системы, например, модулем, узлом хранения, частью вычислительного кластера, обрабатывающим необходимые данные для осуществления заявленного технического решения.
На фиг. 2а представлена схема работы прототипа предыдущего уровня техники.
На фиг. 2b - схема работы заявленного способа организации сетевого взаимодействия средств коммутации для повышения сетевой производительности.
На фиг. 3 - схема установки сетевой связанности средств коммуникации, согласно заявленному способу.
На фиг. 4 - схема осуществления способа передачи данных.
На фиг. 5 - схема осуществления способа приема данных.
Введем ряд определений и понятий, которые будут использоваться при описании осуществления заявленных способов.
Хост 201 - устройство (например, компьютерная система общего назначения), на котором функционирует, например, клиент гипервизора и операционная система (ОС) хоста 202, под управлением которой исполняются виртуальные машины 220.
В общем случае система 201 содержит такие компоненты, как: один или более процессоров 101, по меньшей мере одну память 105, средство хранения данных 103, интерфейсы ввода/вывода 102, средство В/В 106, средство сетевого взаимодействия 107, которые объединяются посредством универсальной шины 104.
Процессор 101 выполняет основные вычислительные операции, необходимые для обработки данных при выполнении способа Фиг 3b, 4b-1, 4b-2. Процессор 101 исполняет необходимые машиночитаемые команды, содержащиеся в оперативной памяти 105.
Память 105, как правило, выполнена в виде ОЗУ и содержит необходимую программную логику, обеспечивающую требуемый функционал.
Средство хранения данных 103 может выполняться в виде HDD, SSD дисков, рейд массива, флэш-памяти, оптических накопителей информации (CD, DVD, MD, Blue-Ray дисков) и т. п. Средства 103 позволяют выполнять долгосрочное хранение различного вида информации, например, блоки данных, структура данных, метаданные.
Для организации работы компонентов системы 201 и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В 102. Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительных устройств, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232.
Выбор интерфейсов 102 зависит от конкретного исполнения системы 201, которая может быть реализована на базе широко класса устройств, например, персональный компьютер, мейнфрейм, ноутбук, серверный кластер, тонкий клиент, смартфон, сервер.
В качестве средств В/В данных 106 может использоваться: клавиатура, джойстик, дисплей (сенсорный дисплей), монитор, сенсорный дисплей, тачпад, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса).
Средства сетевого взаимодействия 107 выбираются из устройств, обеспечивающих сетевой прием и передачу данных, например, Ethernet карту, WLAN/Wi-Fi модуль, Bluetooth модуль, BLE модуль, NFC модуль, IrDa, RFID модуль, GSM модем. С помощью средств 106 обеспечивается организация обмена данными между, например, системой 201, представленной в виде сервера и вычислительным устройством пользователя, на котором могут отображаться полученные данные по проводному или беспроводному каналу передачи данных, например, WAN, PAN, ЛВС (LAN), Интранет, Интернет, WLAN, WMAN или GSM.
Конкретный выбор элементов системы 201 для реализации различных программно-аппаратных архитектурных решений может варьироваться с сохранением обеспечиваемого требуемого функционала.
Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов соответствующей области техники.
ОС хоста 202 - комплекс взаимосвязанных программ для управления ресурсами хоста 201 и организации взаимодействия с пользователем.
Ядро (ОС) хоста 203 - это центральная часть ОС, которая обеспечивает приложениям доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешние устройства ввода и вывода информации. Оно также предоставляет сервисы файловой системы и сетевых протоколов. Ядро является наиболее низким уровнем абстракции для доступа приложений к ресурсам системы и предоставляет такой доступ через использование механизмов межпроцессного взаимодействия и системных вызовов.
Виртуальная машина (ВМ 220), выполняющаяся под управлением гипервизора или в рамках ОС хоста 203, предназначенная для выполнения пользовательских задач. В одном частном случае, примером такой ВМ может являться QEMU ВМ. Это программа для эмуляции аппаратного обеспечения и виртуализации, содержит в себе свой экземпляр операционной системы, в т.ч. ядро (ВМ) 222.
ОС ВМ 221 - это операционная система, которая управляет виртуальной машиной 220. Она обеспечивает эмуляцию аппаратного обеспечения и виртуализацию, позволяя запускать различные операционные системы внутри виртуальной среды.
Ядро ОС ВМ 222 - это основная часть ОС, которая отвечает, которая обеспечивает приложениям доступ к ресурсам ВМ 220, по аналогии с тем, как это делает ядро ОС хоста.
Virtio-net драйвер 223 - модуль ядра (драйвер) для поддержки виртуального сетевого адаптера virtio. Он представляет собой эмулируемую в ВМ 220 сетевую карту, которая используется для обмена данными между виртуальными машинами и хост-системой. Это устройство позволяет виртуальным машинам подключаться к сети и обмениваться информацией с другими виртуальными машинами или с хостом. Драйвер предназначен для работы с виртуальными сетевыми картами, которые используются в виртуальных машинах для подключения к сети.
VirtIO очереди 224 - это механизм управления очередями в виртуальных машинах, который используется для оптимизации работы виртуальных устройств, таких как сетевые карты и диски. Этот механизм основан на принципе "первым пришёл - первым ушёл" (FIFO), что означает, что данные обрабатываются в том порядке, в котором они поступают. Это позволяет улучшить производительность виртуальных машин и уменьшить задержки при обработке данных. VirtIO очереди являются частью архитектуры VirtIO, которая используется в различных операционных системах и виртуальных машинах для улучшения взаимодействия между гостевой и хост-системами. Очереди приема/передачи в формате VirtIO со стороны программного коммутатора 214. Они созданы в ВМ 220 и драйвере virtio-net 224 и подключены к адресному пространству программного коммутатора 214 через механизмы VDUSE. Virtio-net берет для очередей память из пула, выделенного на хосте виртуальной машиной и переданного эмулируемой системе.
Дескриптор очереди (на схеме не показан) - структура данных, представляющая собой один элемент очереди. Обычно дескриптор содержит указатель на область памяти, где содержится информация, которую нужно передать, или куда нужно положить принятые данные, а также размер этой области. Дескриптор используется для управления очередью и доступа к ее элементам.
Очередь - структура данных, которая состоит из дескриптора(ов) и содержит информацию о своем состоянии и параметрах. Обычно дескриптор(ы), относящиеся к общей очереди, содержат следующие поля: идентификатор очереди, размер очереди, максимальный размер очереди, текущее количество элементов в очереди, указатель на начало очереди и указатель на конец очереди. Таким образом, для каждого элемента очереди структура описывает область памяти (адрес) куда класть принимаемые данные (очередь приема). Очередь отправки - это область памяти (адрес) откуда брать передаваемые данные.
Символьное устройство TAP 208 - конкретное символьное устройство, которое взаимосвязано с конкретным сетевым интерфейсом TAP 210 и используется для отправки/приема Ethernet пакетов в этот интерфейс из/в пользовательского приложения.
Сетевой драйвер TAP 209 - модуль (драйвер) в ядре ОС, в котором реализованы TUN/TAP интерфейсы.
Сетевой интерфейс TAP 210 - конкретный экземпляр созданного и используемого сетевого интерфейса TAP. В ядре ОС выглядит как обычный сетевой интерфейс, вроде сетевой карты.
Модуль сетевого устройства TAP 229 - модуль в ВМ 220, в котором реализован эмулируемый сетевой интерфейс 230 или 228.
VHOST socket 211 - файл, с помощью которого пользовательское приложение подключается к подсистеме VHOST.
Виртуальное устройство VHOST 205 - конкретное виртуальное устройство vhost, которое создается VDPA подсистемой 205 ядра ОС хоста 203 на основе виртуального устройства VDUSE 207. Это подсистема окружения, выполняющаяся в ядре ОС хостовой системы 203, которая разработана для запуска приложений, написанных для разных типов операционных систем, и не имеет прямого доступа к аппаратной части компьютера, вместо этого она использует менеджер виртуальной памяти, работающий в режиме ядра, для доступа к ресурсам памяти.
vDPA-подсистема 206 - модуль (драйвер) в ядре ОС хоста 203, в котором реализованы механизмы VDPA. virtio Data Path Acceleration - технология виртуализации сетевых функций. Эта технология позволяет разделять ресурсы физического сетевого адаптера между несколькими виртуальными машинами, улучшая эффективность использования ресурсов и повышая масштабируемость сети. vDPA-подистема в ядре хостовой операционной системы обеспечивает взаимодействие между виртуальными машинами и физическим сетевым адаптером, управляя передачей данных и обеспечивая безопасность и изоляцию между различными виртуальными машинами. vDPA устройство - тип устройства, в котором канал передачи данных реализован в соответствии со спецификацией VirtIO, где VirtIO - это стандарт в операционной системе Linux для драйверов сетевых и дисковых устройств. При использовании virtio драйверы гостевой операционной системы “знают”, что запущены в виртуальной среде и взаимодействуют с гипервизором.
Программный коммутатор 214, также известный как софтсвитч, - это программа, которая работает на сервере или виртуальной машине, например внутри ОС хоста 202 и обеспечивает функции связи аналогично аппаратному сетевому коммутатору.
Порт TAP 230 - конкретный эмулируемый сетевой интерфейс ВМ 220, который использует символьное устройство TAP 208 для передачи/приема ethernet пакетов. Как правило, эмулируется какая-нибудь реальная сетевая карта, вроде Intel E1000.
Облачный контроллер 300 - основной компонент, который управляет работой хостов 201 в облачной среде и обрабатывает все запросы на управление виртуальными машинами на хостах, принимает решения о перенаправлении трафика.
Виртуальное устройство VDUSE 207 - конкретное виртуальное устройство VDUSE, которое создается при создании порта VDUSE 215.
vDPA Device in Userspace - фреймворк в ядре Linux, который является подсистемой в ядре ОС Хоста 203 для эмуляции vDPA устройств в пользовательских приложениях, запущенных на ОС хоста 202. Данное свойство позволяет, в том числе, эмулировать сетевую карту virtio-net 204 в ВМ 220.
Драйвер сетевого устройства 227 - модуль (драйвер) сетевого устройства в ядре ОС ВМ 222.
VDUSE порт 215 - конкретный виртуальный сетевой интерфейс в программном коммутаторе 214, который имеет уникальное имя, подключается через механизм VDUSE 207 к подсистеме vDPA 206 ядра ОС хоста 203. Это реализация виртуального Ethernet порта в программном коммутаторе 214, который выполняется в режиме пользовательского приложения и использует технологию VDUSE для связи с виртуальными машинами.
Модуль RAW Socket Linux 217 - программный модуль, в котором реализован виртуальный сетевой интерфейс для программного коммутатора 214, использующий TUN/TAP интерфейсы 209.
Порт Raw Socket 218 - конкретный виртуальный сетевой интерфейс в программном коммутаторе 214, который имеет уникальное имя, подключается через механизм Raw Socket к сетевому интерфейсу ядра ОС и через который идут данные.
Виртуальное устройство NIC 225 - конкретный эмулируемый virio-net сетевой интерфейс ВМ 220, который подключается к программному коммутатору 214 через цепочку подсистем vhost-vDPA-VDUSE.
В конфигурациях, показанных на фиг.1, 2а, 2b, гостевая виртуальная машина 220 исполняет гостевую операционную систему (ОС) 221, а также набор приложений. Гостевая ОС может содержать любую широкодоступную операционную систему, такую как, среди прочих, Microsoft Windows, MacOS, Linux, iOS или Android, обеспечивающую согласование между приложениями, исполняемыми в ВМ 220 и виртуализированными аппаратными устройствами виртуальной машины. Приложения обычно представляют любое пользовательское приложение, как, например, текстовые процессоры, электронные таблицы, графические приложения, браузеры, социальные сети и приложения электронной связи.
Облачный контроллер (гипервизор) 300 - программа, создающая среду функционирования других программ (в том числе других гипервизоров) за счет имитации аппаратных средств вычислительной техники, управления данными средствами и гостевыми операционными системами, функционирующими в данной среде. Для запуска виртуальных машин (например, таких как QEMU ВМ) используется программная виртуализация, имеющая схожие черты с известной технологией Virtualbox. Однако QEMU ВМ является более универсальным инструментом, который может использоваться не только для виртуализации, но и для эмуляции различных архитектур процессоров и систем.
Для достижения технического результата необходимо реализовать ряд задач:
1. Посредством технологии vDPA и VDUSE сделать общее адресное пространство памяти для прямого сетевого взаимодействия программного коммутатора и виртуального устройства NIC.
2. За счет использования общих очередей внутри общего адресного пространства памяти сократить число лишних операций копирования передаваемых данных.
3. При сокращении лишних операций копирования передаваемых данных снизить требования к используемым аппаратным ресурсам и их утилизацию.
В результате решения данных задач за счет использования общей памяти в заявленном способе повышения производительности средств коммутации и передачи данных мы избегаем лишних операций копирования данных при их передаче и оптимизируем потребление аппаратных ресурсов на всех компонентах. В известном способе (прототип предыдущего уровня техники, фиг.2а) данные копируются минимум дважды - в модуле сетевого устройства виртуальной машины 220, на этапе передачи через символьное устройство TAP 208 в ядро ОС хоста 203, и из ядра ОС хоста 203 через Raw Socket сетевого TAP интерфейса 210. Кроме того, при передаче данных в ядро или из ядра происходит переключение контекста, которое тоже занимает какое-то время и ресурсы.
Таким образом, за счет оптимизации потока данных (фиг.2b) между приложением внутри виртуальной машины (ВМ) 220 и программным коммутатором (исключение компонентов из цепочки приемо-передачи), сокращения накладных ресурсных расходов в виде проведения повторных копирований данных, а также избегая переключения контекста.
Пример осуществления способа организации сетевого взаимодействия средств коммутации заключается в следующем.
Способ организации сетевого взаимодействия средств коммутации, приема и передачи данных для повышения сетевой производительности, содержащий шаги, на которых:
запускают 400 облачным контроллером 300 на хосте 201 под управлением ОС хоста 202 с ядром 203 программный коммутатор 214 и виртуальную машину (ВМ) 220, в ходе которого:
а) определяют 410 имя виртуального устройства VDUSE 207 и путь в файловой системе к нему;
b) подают команду 411 для создания порта VDUSE 215 от хоста 201 к программному коммутатору 214;
c) создают с помощью программного коммутатора 214 виртуальное устройство VDUSE 207, регистрируют 413 его в ядре ОС (Linux) хоста 203 и в виде сетевого VDUSE порта 215 в программном коммутаторе 214;
d) добавляют 415 внутри ядра Linux 203 виртуальное VDUSE устройство 207 в vDPA подсистему 206;
e) добавляют 416, командой, новое виртуального устройства VDUSE 207 в vDPA подсистему 206 в ядре хоста 203;
f) создают 418, с помощью vDPA подсистемы 206, виртуальное устройство VHOST 205;
g) создают 420 в файловой системе хоста 201 файл сокета (VHOST socket) 211 для взаимодействия с vDPA устройством подсистемы vDPA 206;
h) запускают 406 с помощью хоста 201 (ОС хоста 202 и ядра ОС хоста 203) виртуальную машину 220 под управлением ОС (ядра Linux, 222) и создают виртуальное устройство NIC 225 на ВМ 220;
m) подключают 423 ВМ 220 к порту VDUSE 215 программного коммутатора 214 через файл сокета VHOST socket 211;
n) определяют 424, с помощью ВМ 220 на VDUSE порту 215 в программном коммутаторе 214 возможности по количеству очередей приема/передачи 224, в том числе и наличие очередей управления, включая, но не ограничиваясь, оффлоаддингом контрольных сумм, TSO; при этом возможности (features) - это битовый вектор, который находится в структуре, которая, в свою очередь, предается через цепочку вызовов функций, где программный коммутатор 214, при создании VDUSE порта, регистрирует свои возможности в ядре ОС хоста 202 и эти возможности, через vDPA передаются виртуальному устройству NIC 225 - пунктирная линия (control path);
o) выделяют 425, с помощью ВМ 220, память под буферы и настраивают очереди 224 в виртуальном устройстве NIC 225 соответственно согласованным возможностям;
p) передают 426 с помощью ВМ 220 адреса участков памяти с данными очередей виртуальному устройству VHOST 205 ядра ОС хоста;
q) запускают 427 с помощью ВМ 220 гостевую операционную систему 221 с ядром ВМ 222 вместе с драйвером virtio-net 223 виртуального устройства NIC 225;
r) согласовывают 429, с помощью драйвера virtio-net 223, возможности VDUSE порта 215;
s) получают 430, с помощью драйвера virtio-net 223, адреса очередей от ВМ 220 в адресном пространстве виртуальной машины и используют полученную информацию для настройки логической структуры очередей в драйвере virtio-net;
t) отправляют 431, после настройки очередей, с помощью драйвера virtio-net 223, сигнал DRIVER_OK ядру хоста 203;
u) передают 432 сигнал DRIVER_OK, с помощью ядра ОС хоста 203, полученный на этапе t) VDUSE порту 215;
w) добавляют 433 буферы с очередями в свое адресное пространство программным коммутатором 214;
x) устанавливают сетевую связанность 409 между ВМ 220 и программным коммутатором 214 для осуществления передачи данных.
Пример осуществления способа передачи данных заключается в следующем.
Способ передачи данных в сеть через программный коммутатор 214 к виртуальной машине 220, заключающийся в том, что на программном коммутаторе 214 формируют очередь для передачи данных в несколько этапов:
a) выбирают 500, с помощью программного коммутатора 214, из очереди данных 224 для передачи, ближайший свободный дескриптор, который был отмечен свободным при помощи драйвера virtio-net 223 программного коммутатора 214;
b) копируют 501 данные, указанные в выбранном дескрипторе очереди 224, в буфер первичной очереди программного коммутатора 214,
с) добавляют 502 выбранные дескрипторы в очередь передачи данных, тем самым изменяя состояние первичной и вторичной очередей;
d) уведомляют 503, через VDUSE порт 215 виртуального устройства VDUSE 207 и с помощью подсистемы vDPA 206, ядро 203 операционной системы хоста, что состояние общей очереди приема было изменено;
e) отправляют сообщение 505, с помощью vDPA подсистемы 206, через виртуальное устройство VHOST 205 для ВМ, о том, что состояние общей очереди было изменено;
f) обрабатывают данные 506 между программным коммутатором 214 и гостевой ВМ 220;
g) удаляют 507 из очереди 214 использованные дескрипторы и помещают их снова в список свободных 508, при этом драйвер virtio-net 223 в виртуальной машине 220 осуществляет прерывание на прием, либо отслеживает состояние очереди передачи, определяя, какие дескрипторы помечены как использованные и использованные дескрипторы заново инициализируют и ставятся в конец очереди передачи 224.
Пример осуществления способа приема данных заключается в следующем.
Способ приема данных в сеть через программный коммутатор 214 от виртуальной машины 220, заключающийся в том, что в несколько этапов формируют очередь данных для приема:
a) выбирают 500, с помощью драйвера virtio-net 223 гостевой ОС 221, следующий свободный дескриптор очереди передачи 224;
b) копируют 501, с помощью драйвера virtio-net 223, данные в буферы дескрипторов, которые нужно отправить;
c) добавляют 502, с помощью драйвера virtio-net 223, дескрипторы в очередь приема данных 224, тем самым изменяя состояния вторичной и первичной очередей;
d) уведомляют 503, с помощью драйвера virtio-net 223, ядро 203 операционной системы хоста, что состояние очереди передачи 224 было изменено;
e) уведомляют 505, с помощью ядра ОС хоста 203 через виртуальное устройство VDUSE 207 и с помощью подсистемы vDPA 206, порт VDUSE 215 программного коммутатора 214, что состояние очереди приема 224 было изменено;
f) осуществляют обработку данных 506 между гостевой ВМ 220 и программным коммутатором 214;
g) удаляют 507 из очереди 214 использованные дескрипторы и помещают их снова в список свободных 508.
Способы по настоящему изобретению могут принимать форму, по меньшей мере, программного кода (инструкций, программных приложений), воплощенного на материальных носителях, таких как CD-ROM, жесткие диски, оперативная память или любой другой машиночитаемый носитель информации. Инструкции могут быть предоставлены в виде программного обеспечения или встроенного программного обеспечения и/или могут быть реализованы полностью или частично в аппаратных компонентах, таких как ASIC, FPGA, DSP или любых других подобных устройствах. Инструкции могут быть сконфигурированы для выполнения одним или несколькими процессорами, которые при выполнении серии компьютерных инструкций выполняют или облегчают выполнение всех или части раскрытых способов и процедур. Когда инструкции загружаются в компьютер и выполняются, он становится устройством для практической реализации изобретения. При реализации на одном или нескольких процессорах общего назначения инструкции объединяется с таким процессором, чтобы обеспечить устройство, которое работает аналогично логическим схемам.
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми выше, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И УСТРОЙСТВО ДЛЯ ОСУЩЕСТВЛЕНИЯ ОПЕРАЦИИ ВВОДА/ВЫВОДА В СРЕДЕ ВИРТУАЛИЗАЦИИ | 2009 |
|
RU2532708C2 |
ЭНТРОПИЙНЫЙ КОДЕР ДЛЯ СЖАТИЯ ИЗОБРАЖЕНИЯ | 2011 |
|
RU2575679C2 |
СПОСОБ СОХРАНЕНИЯ СЛИЯНИЯ ВИРТУАЛЬНОГО ПОРТА И МАТЕРИАЛЬНАЯ СРЕДА | 2009 |
|
RU2451991C1 |
СИСТЕМА И СПОСОБЫ АУДИТА ВИРТУАЛЬНОЙ МАШИНЫ | 2017 |
|
RU2691187C1 |
СИСТЕМЫ И СПОСОБЫ ДВУХРЕЖИМНОЙ ВИРТУАЛИЗАЦИИ УСТРОЙСТВА РЕАЛЬНЫХ И ИДЕАЛИЗИРОВАННЫХ АППАРАТНЫХ УСТРОЙСТВ | 2004 |
|
RU2406113C2 |
СИСТЕМА И СПОСОБ ВИРТУАЛИЗАЦИИ ФУНКЦИИ МОБИЛЬНОЙ СЕТИ | 2014 |
|
RU2643451C2 |
Способ снижения нагрузки на сканирующую подсистему путем дедупликации сканирования файлов | 2018 |
|
RU2702053C1 |
Система и способ формирования списка виртуальных машин с указанием статуса защиты | 2020 |
|
RU2763112C1 |
ТЕХНОЛОГИЧЕСКИЕ ПРИЕМЫ ВЫГРУЗКИ ОБЪЕКТА НАЗНАЧЕНИЯ ВИРТУАЛЬНОГО ХРАНИЛИЩА | 2010 |
|
RU2562436C2 |
ВЫГРУЗКА ПОТОКОВ ВИРТУАЛЬНЫХ МАШИН В ФИЗИЧЕСКИЕ ОЧЕРЕДИ | 2013 |
|
RU2645595C2 |
Изобретение относится к области вычислительной техники. Технический результат заключается в увеличении скорости передачи и приема данных при снижении числа потребляемых аппаратных ресурсов и сокращении участвующих в цепочке приемо-передачи компонентов. Технический результат достигается за счет этапов, на которых: в виртуальном устройстве NIC, в соответствии с возможностями сетевого VDUSE порта, выделяют память под буферы с очередями приема/передачи и/или под очереди управления, настраивают очереди и преобразуют виртуальные адреса очереди приема/передачи в физические адреса участников памяти с данными очередей приема/передачи и передают виртуальному устройству VHOST vDPA подсистемы; виртуальная машина (ВМ) запускает гостевую операционную систему с ядром ВМ, содержащим драйвер virtio-net виртуального устройства NIC; получают с помощью драйвера virtio-net адреса очередей приема/передачи от ВМ и используют полученную информацию для настройки логической структуры очередей в драйвере virtio-net; добавляют буферы с очередями приема/передачи и/или очередями управления в адресное пространство программного коммутатора, устанавливая тем самым сетевую связанность между ВМ и программным коммутатором для осуществления приемо-передачи данных. 3 н. и 2 з.п. ф-лы, 5 ил.
1. Способ сетевого взаимодействия для коммутации, заключающийся в том, что посредством облачного контроллера 300 на хосте 201 под управлением операционной системы хоста 202 с ядром 203, содержащим vDPA-подсистему 206, запускают программный коммутатор 214 и виртуальную машину (ВМ) 220;
создают с помощью программного коммутатора 214 виртуальное устройство VDUSE 207 и регистрируют его в ядре операционной системы хоста 203, а также в программном коммутаторе 214, в виде сетевого VDUSE порта 215;
в vDPA подсистеме в виде виртуального устройства VHOST 205 обеспечивают взаимодействие устройства VHOST 205 и vDPA устройства подсистемы vDPA 206;
в ВМ 220 создают виртуальное устройство NIC 225 и обеспечивают взаимодействие ВМ 220 с программным коммутатором 214 для определения на сетевом VDUSE порте 215 возможностей по количеству очередей приема/передачи и наличие очередей управления;
в виртуальном устройстве NIC 225, в соответствии с указанными возможностями сетевого VDUSE порта 215, выделяют память под буферы с очередями приема/передачи и/или под очереди управления, настраивают очереди и преобразуют виртуальные адреса очереди приема/передачи в физические адреса участников памяти с данными очередей приема/передачи и передают виртуальному устройству VHOST 205 vDPA подсистемы 206;
ВМ 220 запускает гостевую операционную систему 221 с ядром ВМ 222, содержащим драйвер virtio-net 223 виртуального устройства NIC 225;
получают с помощью драйвера virtio-net 223 адреса очередей приема/передачи от ВМ 220 и используют полученную информацию для настройки логической структуры очередей в драйвере virtio-net 223;
добавляют буферы с очередями приема/передачи и/или очередями управления в адресное пространство программного коммутатора 214, устанавливая тем самым сетевую связанность между ВМ 220 и программным коммутатором 214 для осуществления приемо-передачи данных.
2. Способ по п.1, отличающийся тем, что указанные возможности представляют собой битовый вектор, а программный коммутатор 214 при создании VDUSE порта 215 регистрирует свои возможности в ядре операционной системы хоста 202, и эти возможности передаются виртуальному устройству NIC 225.
3. Способ по любому из пп.1 или 2, отличающийся тем, что при настройке логической структуры очередей драйвер virtio-net 223 осуществляет: очереди передачи инициализируются пустыми, очереди приема полностью заполняются дескрипторами с буферами для приема/передачи сообщений из сети; очередь управления инициализируется пустой.
4. Cпособ передачи данных в сеть через программный коммутатор 214 к виртуальной машине (ВМ) 220, заключающийся в том, что на программном коммутаторе 214 формируют очередь для передачи данных в несколько этапов:
выбирают с помощью программного коммутатора 214, из очереди данных 224 для передачи, ближайший свободный дескриптор очереди, который был отмечен свободным при помощи драйвера virtio-net 223 программного коммутатора 214;
копируют данные, указанные в выбранном дескрипторе очереди 224, в буфер первичной очереди программного коммутатора 214;
добавляют выбранные дескрипторы в очередь 224, тем самым изменяя состояние первичной и вторичной очередей;
уведомляют, через VDUSE порт 215 виртуального устройства VDUSE 207 и с помощью подсистемы vDPA 206, ядро 203 операционной системы хоста, что состояние общей очереди было изменено;
отправляют сообщение с помощью vDPA подсистемы 206, через виртуальное устройство VHOST 205 для ВМ, о том, что состояние общей очереди было изменено;
обрабатывают данные между программным коммутатором 214 и ВМ 220;
удаляют из очереди 224 использованные дескрипторы и помещают их снова в список свободных, при этом драйвер virtio-net 223 в ВМ 220 осуществляет прерывание на прием либо отслеживает состояние очереди передачи, определяя, какие дескрипторы очереди помечены как использованные, и использованные дескрипторы заново инициализируют и ставятся в конец очереди 224.
5. Способ приема данных в сети через программный коммутатор 214 от виртуальной машины (ВМ) 220, заключающийся в том, что в несколько этапов формируют очередь данных для приема:
выбирают, с помощью драйвера virtio-net 223 операционной системы (ОС) 221 ВМ 220, следующий свободный дескриптор очереди передачи 224;
копируют, с помощью драйвера virtio-net 223, данные в буферы дескрипторов, которые нужно отправить;
добавляют, с помощью драйвера virtio-net 223, дескрипторы в очередь приема данных 224, тем самым изменяя состояния вторичной и первичной очередей;
уведомляют, с помощью драйвера virtio-net 223, ядро 203 операционной системы хоста, что состояние очереди передачи 224 было изменено;
уведомляют, с помощью ядра ОС хоста 203 через виртуальное устройство VDUSE 207 и с помощью подсистемы vDPA 206, порт VDUSE 215 программного коммутатора 214, что состояние очереди приема 224 было изменено;
осуществляют обработку данных между ВМ 220 и программным коммутатором 214;
удаляют из очереди 224 использованные дескрипторы и помещают их снова в список свободных.
Способ восстановления спиралей из вольфрамовой проволоки для электрических ламп накаливания, наполненных газом | 1924 |
|
SU2020A1 |
Токарный резец | 1924 |
|
SU2016A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Способ регенерирования сульфо-кислот, употребленных при гидролизе жиров | 1924 |
|
SU2021A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
АППАРАТНО-ПРОГРАММНЫЙ КОМПЛЕКС КОММУТАЦИИ "Lan Lzoe" | 2013 |
|
RU2578697C2 |
Авторы
Даты
2024-12-24—Публикация
2024-08-15—Подача