1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-gazelle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
user-guide.md 36 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 17:01 5c2f3c0

Пользовательское руководство для Gazelle

Установка

Настройте yum-источник openEuler и установите с помощью команды yum:

# dpdk >= 21.11-2
yum install dpdk
yum install libconfig
yum install numactl
yum install libboundscheck
yum install libpcap
yum install gazelle

Способ использования

Настройте среду выполнения, используйте Gazelle для ускорения приложений следуя этим шагам:

1. Установите модуль ko с правами root

Выберите использование ko в зависимости от ситуации, чтобы предоставить виртуальные сетевые порты и привязывать сетевые карты к пользовательскому режиму.
Если используется функция виртуальных сетевых портов, то используйте rte_kni.ko.

modprobe rte_kni carrier="on"

Настройте NetworkManager для управления неподдерживаемыми kni-сетевыми картами

[root@localhost ~]# cat /etc/NetworkManager/conf.d/99-unmanaged-devices.conf 
[keyfile]
unmanaged-devices=interface-name:kni
[root@localhost ~]# systemctl reload NetworkManager

Привяжите сетевые карты от ядра к пользовательским модулям ko в зависимости от ситуации. Для сетевых карт mlx4 и mlx5 не требуется привязка к vfio или uio-драйверам.

# Если IOMMU может использоваться
modprobe vfio-pci

# Если IOMMU не может использоваться, но VFIO поддерживает noiommu
modprobe vfio enable_unsafe_noiommu_mode=1
modprobe vfio-pci

# В других случаях
modprobe igb_uio

2. Привязка сетевых карт DPDK

Привяжите сетевые карты к выбранному в шаге 1 драйверу. Это обеспечит доступ к ресурсам сетевой карты для пользователя.

# При использовании vfio-pci
dpdk-devbind -b vfio-pci enp3s0
```# При использовании igb_uio
dpdk-devbind -b igb_uio enp3s0

3. Настройка больших страниц памяти

Gazelle использует большие страницы памяти для повышения производительности. Настройте систему для зарезервированной большой страницы памяти с использованием прав root. Вы можете выбрать любой размер страницы. Поскольку каждая страница требует одного fd, рекомендуется использовать страницы размером 1 ГБ при работе с большим объемом памяти, чтобы избежать использования большого количества fd.

Выберите один размер страницы и настройте достаточное количество больших страниц памяти. Процесс настройки больших страниц представлен ниже:

# Настройка больших страниц памяти размером 2МБ: на узле node0 конфигурация 2МБ * 1024 = 2ГБ
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

# Настройка больших страниц памяти размером 1ГБ: на узле node0 конфигурация 1ГБ * 5 = 5ГБ
echo 5 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages

# Проверьте результат конфигурации
grep Huge /proc/meminfo

4. Монтирование больших страниц памяти

Создайте два каталога для доступа процессами lstack и ltran к большим страницам памяти. Операция выполняется следующими шагами:```sh mkdir -p /mnt/hugepages-ltran mkdir -p /mnt/hugepages-lstack chmod -R 700 /mnt/hugepages-ltran chmod -R 700 /mnt/hugepages-lstack

Note: /mnt/hugepages-ltran and /mnt/hugepages-lstack should be mounted with the same page size.

mount -t hugetlbfs nodev /mnt/hugepages-ltran -o pagesize=2M mount -t hugetlbfs nodev /mnt/hugepages-lstack -o pagesize=2M


### 5. Использование Gazelle в приложении
Существуют два способа использования Gazelle; выберите подходящий:- **Перекомпиляция приложения с подключением библиотеки Gazelle**
    Измените makefile вашего приложения, чтобы подключить liblstack.so. Пример:
    ```
    # Добавление Makefile Gazelle в makefile
    -include /etc/gazelle/lstack.Makefile
    
    # Компиляция с использованием LSTACK_LIBS переменной
    gcc test.c -o test ${LSTACK_LIBS}
    ```

- **Использование LD_PRELOAD для загрузки библиотеки Gazelle**
    Установите переменную окружения GAZELLE_BIND_PROCNAME для указания имени процесса и переменную LD_PRELOAD для указания пути к библиотеке Gazelle.
    ```
    GAZELLE_BIND_PROCNAME=test LD_PRELOAD=/usr/lib64/liblstack.so ./test
    ```### 6. Конфигурационные файлы
- **lstack.conf** используется для указания параметров запуска lstack. По умолчанию этот файл находится по адресу `/etc/gazelle/lstack.conf`. Параметры конфигурационного файла представлены ниже:

| Параметр            | Формат параметра          | Описание                                                                 |
|---------------------|----------------------------|---------------------------------------------------------------------------|
| dpdk_args           | `--socket-mem` (необходимо) <br>`--huge-dir` (необходимо) <br>`--proc-type` (необходимо) <br>`--legacy-mem` <br>`--map-perfect` <br>`-d` <br>`--iova-mode` <br>и т. д. | Инициализационные параметры DPDK, см. описание DPDK <br>Для PMD, не связанных с `liblstack.so`, необходимо использовать `-d` для загрузки, например `librte_net_mlx5.so`. <br>Если используется непривилегированный пользователь при запуске и версия DPDK > 23.11, требуется указание режима iova как `va`, то есть `--iova-mode va` |
| use_ltran           | 0/1                        | Использование ltran                                                      |
| listen_shadow       | 0/1                        | Использование слушателя shadow fd, используется при одиночном listen потоке и нескольких протокольных потоках                 |
| num_cpus            | `"0,2,4 ... "`             | Номера CPU, на которых привязываются потоки lstack, количество номеров равно количеству потоков lstack (меньше либо равно количеству очередей сетевой карты). Можно выбрать CPU по NUMA |
| app_bind_numa       | 0/1                        | Привязка потоков epoll и poll приложения к NUMA протокола, значение по умолчанию равно 1, то есть привязка                    |
| app_exclude_cpus    | `"7,8,9 ... "`             | Номера CPU, от которых не будут привязываться потоки epoll и poll приложения, действует только если `app_bind_numa = 1`        |
| low_power_mode      | 0/1                        | Включение режима низкого энергопотребления, пока не поддерживается                                                                |
| kni_switch          | 0/1                        | Переключатель `rte_kni`, значение по умолчанию равно 0                                                                            |

---

Также учтены все правила и требования к оформлению текста.Может быть включен только при отсутствии использования **ltran**  
**unix_prefix**|"строка"|Строка префикса Unix-сокета для межпроцессного взаимодействия gazelle, значение по умолчанию пустое, должно совпадать с конфигурацией **unix_prefix** в **ltran.conf** или параметром **-u** в команде **gazellectl**. Не может содержать специальные символы, максимальная длина — 128 символов.  
**host_addr**|"192.168.xx.xx"|IP-адрес хоста, должен совпадать с полем **bind** в конфигурационном файле **redis-server**  
**mask_addr**|"255.255.xx.xx"|Маска сети  
**gateway_addr**|"192.168.xx.1"|Адрес шлюза  
**devices**|"aa:bb:cc:dd:ee:ff"|MAC-адрес сетевой карты для связи, должен совпадать с конфигурацией **bond_macs** в **ltran.conf**; в режиме объединения **bond1** lstack можно указать основной интерфейс **bond1**, значение должно быть одним из значений **bond_slave_mac**  
**send_connect_number**|4|Устанавливается положительным целым числом, представляет количество соединений для отправки данных в каждом цикле протокола  
**read_connect_number**|4|Устанавливается положительным целым числом, представляет количество соединений для приема данных в каждом цикле протокола  
**rpc_number**|4|Устанавливается положительным целым числом, представляет количество сообщений RPC для обработки в каждом цикле протокола  
**nic_read_num**|128|Устанавливается положительным целым числом, представляет количество пакетов данных для чтения из сетевой карты в каждом цикле протокола|tcp_conn_count|1500|Максимальное количество TCP-соединений. Это значение умножается на mbuf_count_per_conn для получения размера пула mbuf при инициализации. Слишком маленькое значение может вызвать ошибку при запуске. tcp_conn_count * mbuf_count_per_conn * 2048 байт не должны превышать размер большой страницы||mbuf_count_per_conn|170|Количество mbufs для каждого TCP-соединения. Умножение этого параметра на tcp_conn_count даёт размер пула адресов mbuffs, выделенного при инициализации. Недостаточное значение может привести к провалу запуска, а tcp_conn_count * mbuf_count_per_conn * 2048 байт не должно превышать размер большой страницы|
  |nic_rxqueue_size|4096|Глубина очереди приема сетевой карты. Диапазон значений от 512 до 8192, по умолчанию равно 4096|
  |nic_txqueue_size|2048|Глубина очереди передачи сетевой карты. Диапазон значений от 512 до 8192, по умолчанию равно 2048|
  |nic_vlan_mode|-1|Переключатель режима VLAN. Принимает значения vlanid в диапазоне от -1 до 4094, где -1 означает отключение режима VLAN, по умолчанию равно -1|
  |bond_mode|n|Режим объединения. Поддерживаются три режима ACTIVE_BACKUP/8023AD/ALB с соответствующими значениями 1/4/6 соответственно. При значении -1 или NULL объединение не настроено|
  |bond_slave_mac|"aa:bb:cc:dd:ee:ff;dd:aa:cc:dd:ee:ff"|MAC-адреса двух slave-интерфейсов, используемых для объединения|
  |bond_miimon|n|Время мониторинга связи, измеряется в миллисекундах. Диапазон значений от 1 до 2^31 - 1, по умолчанию равно 10 миллисекунд|
  ||flow_bifurcation|0/1|Переключатель разделения потока (альтернатива kni-схеме), который позволяет Gazelle перенаправлять пакеты, которые невозможно обработать, в ядро системы. По умолчанию равно 0, что означает отключенное состояние.|Пример файла `lstack.conf`:

```markdown
|flow_bifurcation|0/1|Переключатель разделения потока (альтернатива kni-схеме), который позволяет Gazelle перенаправлять пакеты, которые невозможно обработать, в ядро системы. По умолчанию равно 0, что означает отключенное состояние.|Пример файла `lstack.conf`:
``````conf
dpdk_args=["--socket-mem", "2048,0,0,0", "--huge-dir", "/mnt/hugepages-lstack", "--proc-type", "primary", "--legacy-mem", "--map-perfect"]

use_ltran=1
kni_switch=0

low_power_mode=0

num_cpus="2,22"

host_addr="192.168.1.10"
mask_addr="255.255.255.0"
gateway_addr="192.168.1.1"
devices="aa:bb:cc:dd:ee:ff"

send_connect_number=4
read_connect_number=4
rpc_number=4
nic_read_num=128
tcp_conn_count=1500
mbuf_count_per_conn=170
```- Файл конфигурации `ltran.conf` используется для указания параметров запуска ltran. По умолчанию он находится в пути `/etc/gazelle/ltran.conf`. При использовании ltran следует установить значение `use_ltran=1` в файле `lstack.conf`, а также настроить следующие параметры:
   - `kni_switch`: отключено (`0`)
   - `low_power_mode`: отключено (`0`)
   - `num_cpus`: количество процессоров (`"2,22"`)
   - `host_addr`: адрес хоста (`"192.168.1.10"`)
   - `mask_addr`: маска сети (`"255.255.255.0"`)
   - `gateway_addr`: адрес шлюза (`"192.168.1.1"`)
   - `devices`: устройства (`"aa:bb:cc:dd:ee:ff"`)
   - `send_connect_number`: число соединений отправки (`4`)
   - `read_connect_number`: число соединений чтения (`4`)
   - `rpc_number`: число RPC (`4`)
   - `nic_read_num`: число чтений NIC (`128`)
   - `tcp_conn_count`: общее количество TCP-соединений (`1500`)
   - `mbuf_count_per_conn`: число mbuf на каждое соединение (`170`)

|Функциональная категория|Опция|Формат параметров|Описание|
|:----------------------|:----|:---------------|:-------|
|kit|forward_kit|"dpdk"|Указывает модуль передачи данных для сетевой карты.<br>Зарезервированное поле, которое в настоящее время не используется.|
||forward_kit_args|-l<br>--socket-mem(обязательно)<br>--huge-dir(обязательно)<br>--proc-TYPE(обязательно)<br>--legacy-mem(обязательно)<br>--map-perfect(обязательно)<br>-d<br>и т. д.|Параметры инициализации DPDK, см. описание DPDK.<br>Примечание: --map-perfect — расширенная функциональность, используемая для предотвращения использования DPDK лишнего адресного пространства, что гарантирует наличие дополнительного адресного пространства для lstack.|<br>Для PMD, не связанных с `ltran`, обязательно использовать `-d` для загрузки, например `librte_net_mlx5.so`. 
<br>`-l` привязывает CPU-ядра, которые не должны совпадать с привязанными к `lstack`, иначе производительность может значительно упасти. 
<br>|kni|kni_switch|0/1|Переключатель `rte_kni`, значение по умолчанию равно 0|
<br>|unix|unix_prefix|"`строка`"|Строка префикса файла Unix socket, используемого для межпроцессного взаимодействия Gazelle. По умолчанию пустое значение, должно совпадать с конфигурацией `unix_prefix` в `lstack.conf` или параметром `-u` в `gazellectl`|
<br>|dispatcher|dispatch_max_clients|n|Максимальное количество клиентов, поддерживаемых `ltranc`. 
<br>1. В многопроцессорной однониточной среде поддерживаются до 32 экземпляров `lstack`, каждый экземпляр имеет один сетевой поток
<br>2. В однопроцессорной многониточной среде поддерживается один экземпляр `lstack`, число сетевых потоков в этом экземпляре не превышает 32|
<br>||dispatch_subnet|192.168.xx.xx|Подсетевая маска, указывающая на сеть, содержащую IP-адреса, которые может распознать `ltranc`. Пример параметра, реальные значения подсети должны быть указаны отдельно. |
<br>||dispatch_subnet_length|n|Длина подсети, указывающая на длину подсети, которую может распознать `ltranc`. Например, при значении `length` равном 4, диапазон IP-адресов будет 192.168.1.1-192.168.1.16|
<br>|bond|bond_mode|n|Режим объединения, в настоящее время поддерживаются только Active Backup (Mode1), значение равно 1|||bond_miimon|n|Время мониторинга связи объединения, единицы измерения — миллисекунды, значение должно находиться в диапазоне от 1 до 2^64 - 1 - (1000 * 1000)|
||bond_ports|"0xaa"|Используемые сетевые карты DPDK, 0x1 указывает на первую карту|
||bond_macs|"aa:bb:cc:dd:ee:ff"|MAC-адреса, привязанные к сетевым картам, должны совпадать с MAC-адресами KNI|
||bond_mtu|n|Максимальный размер передачи данных (MTU), значение по умолчанию равно 1500, не должно превышать 1500, минимальное значение равно 68, не должно быть меньше 68|

### 7. Запуск приложения
- Запуск процесса `ltran`
Если это однопоточный процесс и сетевой адаптер поддерживает несколько очередей, то сообщения распределяются между потоками с использованием нескольких очередей сетевого адаптера, а процесс `ltran` не запускается; в этом случае значение конфигурации `use_ltran` в `lstack.conf` равно 0. 
При запуске процесса `ltran` без указания файла конфигурации через параметр `--config-file` используется по умолчанию путь `/etc/gazelle/ltran.conf`.
```sh
ltran --config-file ./ltran.conf
  • Запуск приложения Перед запуском приложения, если не указано окружение LSTACK_CONF_PATH для указания пути к файлу конфигурации, используется по умолчанию путь /etc/gazelle/lstack.conf.
export LSTACK_CONF_PATH=./lstack.conf
LD_PRELOAD=/usr/lib64/liblstack.so GAZELLE_BIND_PROCNAME=redis-server redis-server redis.conf
```### 8. API
Программа Gazelle wrap использует POSIX-интерфейсы, поэтому изменения в коде приложения не требуются.

### 9. Команды отладки
- При отсутствии режима ltran недоступны команды gazellectl ltran xxx
- Параметр `-u` указывает префикс Unix-сокета для межпроцессного взаимодействия Gazelle, который совпадает со значением параметра `unix_prefix` в конфигурационных файлах `ltran.conf` или `lstack.conf`.
- Для UDP-соединений в настоящее время команда `gazellectl lstack xxx` поддерживается только без параметров `LSTACK_OPTIONS`.

Использование: gazellectl [-h | help] или: gazellectl ltran {quit | show} [LTRAN_OPTIONS] [time] [-u UNIX_PREFIX] или: gazellectl lstack show {ip | pid} [LSTACK_OPTIONS] [time] [-u UNIX_PREFIX]

quit завершает выполнение процесса ltran

                   выводит все статистики процесса ltran
   -r, rate        выводит статистику процесса ltran за секунду
   -i, instance    выводит информацию о регистрации экземпляра процесса ltran
   -b, burst       выводит длину пакета NIC процесса ltran за секунду
   -t, table       {socktable | conntable}  выводит таблицу сокетов или соединений процесса ltran
   -l, latency     выводит задержку процесса ltran
 ```  где  LSTACK_OPTIONS :=
                   показывает lstack все статистики
   -r, rate        показывает lstack статистики в секунду
   -s, snmp        показывает lstack snmp
   -c, connect     показывает lstack connect
   -l, latency     показывает lstack latency
   -x, xstats      показывает lstack xstats
   -k, nic-features     показывает состояние отключения протокола и других возможностей
   -a, aggregation  [время]   показывает lstack отправку/получение агрегации
   установка:
   loglevel        {error | info | debug}  устанавливает уровень логгирования lstack
   lowpower        {0 | 1}  устанавливает низкое энергопотребление
   [время]         измеряет время задержки по умолчанию 1С

Пакетный анализатор пакетов

Используемые Gazelle сетевые карты находятся под управлением DPDK, поэтому обычный tcpdump не может захватывать пакеты Gazelle. В качестве альтернативы Gazelle использует инструмент gazelle-pdump из пакета dpdk-tools для анализа пакетов. Этот инструмент работает в многопоточном режиме DPDK с использованием lstack/ltran процессов и общего буфера памяти.В режиме ltran gazelle-pdump может захватывать только те пакеты, которые непосредственно взаимодействуют с сетевой картой; использование tcpdump позволяет фильтровать пакеты конкретной lstack.Детальное руководство по использованию

10. Условия использования

1. Расположение конфигурационных файлов DPDK

Если вы являетесь пользователем root, после запуска DPDK конфигурационные файлы будут помещены в директорию /var/run/dpdk; Если вы не являетесь пользователем root, расположение конфигурационных файлов DPDK будет зависеть от переменной окружения XDG_RUNTIME_DIR.

  • Если XDG_RUNTIME_DIR пустая, конфигурационные файлы DPDK будут помещены в директорию /tmp/dpdk;
  • Если XDG_RUNTIME_DIR не пустая, конфигурационные файлы DPDK будут помещены в указанную директорию XDG_RUNTIME_DIR;
  • Обратите внимание, что некоторые машины могут иметь установленную по умолчанию переменную XDG_RUNTIME_DIR.#### 2. Влияние патча для устранения уязвимости Retbleed на производительность Gazelle
  • В версии ядра Linux 5.10.0-60.57.0.85 был применён патч для устранения уязвимости Retbleed, который снижает производительность Gazelle на архитектуре x86. Для минимизации потерь производительности можно использовать параметры запуска retbleed=off mitigations=off, но это зависит от особенностей продукта пользователя. По умолчанию, для обеспечения безопасности, этот параметр не используется.
  • При тестировании сценарий отправки данных осуществлялся в ядре системы, а получение — в пользовательском режиме ltran, при передаче блока размером 1024 байта производительность упала с 17000 Mb/s до 5000 Mb/s.
  • Версии, затронутые этой проблемой, включают openEuler-22.03-LTS (версия ядра 5.10.0-60.57.0.85 и выше) и последующие SP версии.
  • Подробнее см.: https://gitee.com/openeuler/kernel/pulls/110## Ограничения использования Gazelle имеет некоторые ограничения:

Ограничения функциональности

  • Поддержка блокирующего режима accept или connect отсутствует.
  • Максимальное количество поддерживаемых TCP-соединений — 1500.
  • В данный момент поддерживаются протоколы TCP, ICMP, ARP и IPv4.
  • При пинге Gazelle с другой стороны требуется указывать размер пакета до 14792 байт включительно.
  • Поддержка прозрачных больших страниц недоступна.
  • Устройство ltran не поддерживает объединение различных типов сетевых карт.
  • Режим активности/пассивности bond1 ltran поддерживает только переключение на уровне канала (например, при отключении Ethernet-кабеля), но не поддерживает переключение на уровне физического соединения (например, выключение сетевой карты).
  • Виртуальные сетевые адаптеры виртуальных машин не поддерживают несколько очередей.
  • Для использования режимов bond4/6 требуется включение режима беспорядочной передачи, что конфликтует с функциями аппаратной VLAN-фильтрации; программная VLAN-фильтрация требует отключения GRO. Поэтому при использовании режимов bond4/6 для конфигурирования функции VLAN-фильтрации следует использовать конфигурацию маршрутизатора.

Ограничения операционные

  • Предоставленные командные строки и файлы конфигурации имеют права доступа root по умолчанию. Некоторым пользователям может потребоваться повышение прав и изменение владельца файла.- Для перезагрузки пользовательских сетевых адаптеров обратно в ядро необходимо завершить работу Gazelle.
  • Большие страницы памяти не поддерживают создание подкаталогов и повторное монтирование.
  • Минимальное количество больших страниц памяти для ltran составляет 1064МБ.
  • Каждый экземпляр приложения требует минимум 800МБ больших страниц памяти для потока протокола.
  • Поддерживаются только 64-битные системы.
  • При сборке x86 версий Gazelle используется опция -march=native, которая оптимизирована для процессора Intel® Xeon® Gold 5118 CPU @ 2.30GHz. Требуется поддержка инструкций SSE4.2, AVX, AVX2 и AVX-512 в среде выполнения.
  • Максимальное число фрагментов IP-пакета для переупаковки IP-пакета составляет 10 (максимальная длина пакета ping — 14792 байта), а TCP-протокол не использует IP-фрагментацию.
  • Конфигурация sysctl параметра rp_filter для сетевых адаптеров должна быть установлена в значение 1, чтобы обеспечить корректное использование протокольной стека Gazelle.
  • Без использования режима ltran KNI-сетевые адаптеры могут быть настроены только для локальной связи и должны быть настроены NetworkManager для управления KNI-сетевыми адаптерами до запуска.
  • IP-адреса и MAC-адреса виртуального KNI-сетевого адаптера должны совпадать с конфигурационным файлом lstack.conf.
  • При отправке UDP-пакета более 45952 (32 * 1436) байтов send_ring_size должен быть увеличен до как минимум 64.

Предупреждение о рискахGazelle может содержать следующие безопасности риски, пользователи должны оценивать эти риски в зависимости от сценария использования.

Исправлено: "безопасностные" -> "безопасность"Общее пространство памяти

  • Текущее состояние
    Большие страницы памяти монтируются в директорию /mnt/hugepages-lstack, процессы, связанные с liblstack.so, при запуске создают файлы в этой директории, каждый файл соответствует большой странице памяти размером 2МБ, и используют mmap для этих файлов. При получении информации о регистрации lstask от ltran, последний использует конфигурацию больших страниц памяти и также использует mmap для файлов в директории, обеспечивая общую доступность больших страниц памяти. Аналогично для больших страниц памяти в директории /mnt/hugepages-ltran.
  • Текущие меры по снижению рисков
    Разрешения на доступ к большим страницам файлам установлены как 600, что позволяет только пользователям-владельцам иметь доступ к этим файлам; по умолчанию это пользователь root, но можно настроить других пользователей; Большой страницы имеют блокировки файлов DPDK, поэтому они не могут быть напрямую записаны или отображены.
  • Риск
    Вредоносные процессы одного и того же пользователя могут имитировать логику DPDK, использовать общие большие страницы памяти, чтобы записывать вредоносные данные, что приведёт к аварийному завершению Gazelle. Рекомендовано, чтобы все процессы пользователя принадлежали одному доверительному домену.Ограничение трафика
    Gazelle не имеет ограничений на трафик, что позволяет пользователям отправлять пакеты с максимальной скоростью сети, что может вызывать заторы в сетях.Имитация процессов
    Два легальных процесса lstack, зарегистрированных в ltran, могут имитировать друг друга, отправляя ложные сообщения в ltran, что приводит к изменениям информации управления пересылкой в ltran. Это может вызвать проблемы с коммуникацией процесса B, а также утечки данных процесса A. Рекомендуется, чтобы все процессы lstack были доверенными.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openeuler-gazelle.git
git@api.gitlife.ru:oschina-mirror/openeuler-gazelle.git
oschina-mirror
openeuler-gazelle
openeuler-gazelle
master