Вернуться   Sat-madi.com.ua > Компьютеры,Программное обеспечение > Разные программы

Рекламные ссылки:

Ответ
 
Опции темы
Старый 07.08.2019, 20:37   #41
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Ядро Linux не может мягко обрабатывать ситуации с нехваткой памяти
06.08.2019 18:32


В списке рассылки разработчиков ядра Linux поднята проблема с обработкой ситуации исчерпания свободной памяти в Linux:

Известна проблема, которая донимает множество людей на протяжении многих лет и которую можно воспроизвести меньше, чем за несколько минут на последней версии ядра Linux 5.2.6. Все параметры ядра установлены в значения по умолчанию.

Шаги:

Загружаемся с параметром "mem=4G".
Выключаем поддержку swap (sudo swapoff -a).
Запускаем любой веб браузер, например, Chrome/Chromium или/и Firefox.
Начинаем открывать вкладки с сайтами и смотрим как уменьшается объём свободной памяти.

Как только возникает ситуация, когда новая вкладка требует больше оперативной памяти, чем доступно, система практически полностью зависает. Вы даже с трудом сможете двигать курсором мыши. Индикатор жёсткого диска будет моргать без остановки (мне не ясно почему). Вы не сможете запустить новые приложения или закрыть текущие запущенные.

Этот маленький кризис может продолжаться минуты или дольше. Я предполагаю, что система не должна себя так вести. Думаю, что-то нужно сделать, чтобы избежать таких «зависаний».

Я почти уверен, что можно поменять некоторые параметры sysctl для избежания подобных ситуаций, но что-то подсказывает, что это можно сделать по умолчанию для всех, потому что нетехнические пользователи, столкнувшись с такой проблемой, просто откажутся от использования Linux и им будет не до того, чтобы искать решения в Google.

В комментариях на Reddit некоторые пользователи предлагают включить swap, но это не решает проблему, а только её отодвигает и часто усугубляет. В качестве возможного решения в будущем может быть привлечена появившаяся в ядре 4.20 и улучшенная в ядре 5.2 подсистема PSI (Pressure Stall Information), которая позволяет анализировать информацию о времени ожидания получения различных ресурсов (CPU, память, ввод/вывод). Данная подсистема даёт возможность организовать отслеживание нехватки памяти на ранней стадии, определять источник проблем и завершать неважные приложения, не доводя до появления заметных пользователю эффектов.
vladimir59 вне форума   Ответить с цитированием
Рекламные ссылки:
Старый 02.09.2019, 16:20   #42
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Грег Кроа-Хартман перешёл на использование Arch Linux
02.09.2019 08:54


Издание TFIR опубликовало видеоинтервью с Грегом Кроа-Хартманом (Greg Kroah-Hartman), отвечающим за поддержку стабильной ветки ядра Linux, а также являющимся мэинтейнером ряда подсистем ядра Linux (USB, driver core) и основателем инициативы по разработке драйверов для Linux (Linux driver project). Грег рассказал о смене дистрибутива на своих рабочих системах. Несмотря на то, что до 2012 года Грег 7 лет проработал в SUSE/Novell, он прекратил использование openSUSE и теперь применяет в качестве основной ОС Arch Linux на всех своих ноутбуках, компьютерах и даже в облачных окружениях. Также на его компьютере выполняется несколько виртуальных машин с Gentoo, Debian и Fedora с целью тестирования некоторых инструментов в пространстве пользователя.

К переходу на Arch Грега побудила необходимость работы с последней версии какой-то программы и в Arch оказалось то что было нужно. Грег также давно знал нескольких разработчиков Arch и ему по душе пришлась философия дистрибутива и идея непрерывной доставки обновлений, не требующая периодической установки новых релизов дистрибутива и позволяющая иметь всегда свежие версии программ.

В качестве важного фактора отмечается то, что разработчики Arch стараются как можно ближе держаться к upstream, не внося лишних патчей, не меняя задуманное изначальными разработчиками поведение и продвигая исправления ошибок напрямую в основные проекты. Возможность оценивать текущее состояние программ позволяет добиться хорошей обратной связи в сообществе, быстро вылавливать появляющиеся ошибки и оперативно получать исправления.

Из достоинств Arch упоминается также нейтральный характер дистрибутива, развиваемого сообществом, не зависящим от отдельных компаний, и прекрасный раздел Wiki с исчерпывающей и понятной документацией (как пример качественной выжимки полезной информации приводится страница с руководством по использованию systemd).
vladimir59 вне форума   Ответить с цитированием
Старый 13.09.2019, 14:32   #43
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Компания Huawei начала предустановку Deepin Linux на ноутбуки
13.09.2019 10:05


Компания Huawei выпустила в продажу варианты моделей ноутбуков Matebook 13, MateBook 14, MateBook X Pro и Honor MagicBook Pro с предустановленным Linux. Поставляемые с Linux модели устройств пока распространяются только на китайском рынке и ограничены базовой комплектацией. Стоимость устройств Matebook 13 и Matebook 14 с Linux примерно на 42 доллара ниже аналогичных моделей с предустановленным Windows, а модели MateBook X Pro на 84 доллара. Отличия в аппаратной начинке сводятся только к переименованию клавиши Windows в Start.

В качестве дистрибутива для предустановки выбран Deepin Linux, который был основан группой разработчиков из Китая, но уже давно развивается как международный проект. Дистрибутив базируется на пакетной базе Debian и предлагает собственный рабочий стол Deepin Desktop Environment, а также около 30 собственных пользовательских приложений, среди которых музыкальный проигрыватель DMusic, видеоплеер DMovie, система обмена сообщениями DTalk, инсталлятор и центр установки программ Deepin Software Center. Компоненты рабочего стола и приложения разрабатываются с использованием языков C/C++ (Qt5) и Go, и распространяются под лицензией GPLv3.

Ключевой особенностью рабочего стола Deepin является панель, которая поддерживает несколько режимов работы. В классическом режиме осуществляется более явное отделение открытых окон и предлагаемых для запуска приложений, отображается область системного лотка. Эффективный режим чем-то напоминает Unity, смешивая индикаторы запущенных программ, избранных приложений и управляющих апплетов (настройка громкости/яркости, подключенные накопители, часы, состояние сети и т.п.). Интерфейс запуска программ отображается на весь экран и предоставляет два режима - просмотр избранных приложений и навигация по каталогу установленных программ.

vladimir59 вне форума   Ответить с цитированием
Старый 16.09.2019, 12:14   #44
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Релиз ядра Linux 5.3
16.09.2019 07:05


После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.3. Среди наиболее заметных изменений: поддержка GPU AMD Navi, процессоров Zhaoxi и технологии управления энергопотреблением Intel Speed Select, возможность использования инструкций umwait для ожидания без использования циклов, повышающий интерактивность режим 'utilization clamping' для асимметричных CPU, системный вызов pidfd_open, возможность использования IPv4-адресов из подсети 0.0.0.0/8, возможность аппаратного ускорения nftables, поддержка HDR в подсистеме DRM, интеграция гипервизора ACRN.

В анонсе нового выпуска Линус напомнил всем разработчикам о главном правиле разработки ядра - сохранение неизменности поведения для компонентов пространства пользователя. Изменения в ядре никаким образом не должны нарушать уже работающие приложения и приводить к регрессиям на пользовательском уровне. При этом нарушение поведения может вызвать не только изменение ABI, удаление устаревшего кода или появление ошибок, но и косвенное влияние корректно работающих полезных улучшений. В качестве наглядного примера была отброшена полезная оптимизация в коде Ext4, сокращающая число обращений к накопителю за счёт отключения упреждающего чтение таблицы inode при мелких запросах ввода/вывода.

Оптимизация привела к тому, что из-за снижения дисковой активности энтропия для генератора случайных чисел getrandom() стала накапливаться медленнее и в некоторых конфигурациях при определённом стечении обстоятельств могли наблюдаться подвисания во время загрузки до заполнения пула энтропии. Так как оптимизация действительно полезная, среди разработчиков возникла дискуссия, в которой предлагалось устранить проблему за счёт отключения по умолчанию блокирующего режима работы вызова getrandom() с добавлением опционального флага для ожидания энтропии, но подобное изменение повлияет на качество случайных чисел на начальном этапе загрузки.

В новую версию принято 15794 исправлений от 1974 разработчиков, размер патча - 92 Мб (изменения затронули 13986 файлов, добавлено 258419 строк кода, удалено 599137 строк). Около 39% всех представленных в 5.3 изменений связаны с драйверами устройств, примерно 12% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 11% связано с сетевым стеком, 3% - файловыми системами и 3% c внутренними подсистемами ядра.

Основные новшества:

Память и системные сервисы
Продолжено развитие функциональности 'pidfd', помогающей обрабатывать ситуации с повторным использованием PID (pidfd связывается с конкретным процессом и не меняется, в том время какPID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID). Ранее в ядро уже был добавлен системный вызов pidfd_send_signal() и флаг CLONE_PIDFD в вызове clone(), позволяющий получить pidfd для использования в idfd_send_signal(). При использовании вызова clone() с флагом CLONE_PIDFD могли возникать проблемы с сервисными менеджерами или системой принудительного завершения процессов при нехватке памяти в платформе Android. В этом случае для запуска используется вызов fork() или clone() без CLONE_PIDFD.

В ядре 5.3 представлен системный вызов pidfd_open(), позволяющий получить проверяемый pidfd для произвольного существующего процесса, созданного не через вызов clone() с флагом CLONE_PIDFD. Также добавлена поддержка поллинга pidfd при помощи poll() и epoll(), что позволяет в менеджерах процессов отслеживать завершения произвольных процессов, не опасаясь состояния гонки в случае присвоения PID новому процессу. Механизм уведомления о завершении работы процесса, связанного с pidfd, аналогичен информированию о завершении своего дочернего процесса;
В планировщик задач добавлена поддержка механизма закрепления нагрузки (Utilization clamping), позволяющего придерживаться минимального или максимального диапазонов частот, в зависимости от активных на CPU задач. Представленный механизм ускоряет задачи, которые напрямую влияют на качество взаимодействия с пользователем, через запуск этих задач как минимум в нижней границе "запрошенной" частоты. Низкоприоритетные задачи, не сказывающиеся на работе пользователя, запускаются c использованием верхнего лимита "разрешённой" частоты. Лимиты задаются через атрибуты sched_uclamp_util_min и sched_uclamp_util_max в системном вызове sched_setattr().
Добавлена поддержка технологии управления энергопотреблением Intel Speed Select, доступной на некоторых серверах с процессорами Intel Xeon. Указанная технология позволяет устанавливать настройки производительности и пропускной способности разделов для разных ядер CPU, что позволяет сделать более приоритетной производительность для задач, выполняемых на определённых ядрах, жертвуя производительностью на других ядрах;
Процессам в пространстве пользователя предоставлена возможность ожидания в течение небольшого времени без использования циклов при помощи инструкции umwait. Данная инструкция, вместе с инструкциями umonitor и tpause, будет предложена в готовящихся к выпуску чипах Intel "Tremont", и позволит реализовывать задержки, эффективные с точки зрения энергопотребления и не влияющие на производительность других потоков при использовании Hyper Threading;
Для архитектуры RISC-V добавлена поддержка больших страниц памяти (huge pages);
В механизм трассировки "kprobes" добавлена возможность разыменования указателей ядра в пространство пользователя, что может применяться, например, для оценки содержимого структур, передаваемых в системные вызовы. Также добавлена возможность установки проверок на этапе загрузки.
В файл конфигурации добавлена опция PREEMPT_RT для работы в режиме реального времени. Сам код для поддержки режима реального времени пока не добавлен в ядро, но появление опции является хорошим знаком, что многолетняя эпопея по интеграции патчей Realtime-Preempt близится к финалу;
Добавлен системный вызов clone3() c реализацией более расширяемого варианта интерфейса clone(), допускающего указание большего числа флагов;
Добавлен обработчик bpf_send_signal(), позволяющий BPF-программам отправлять сигналы произвольным процессам;
Для событий perf в окружении гипервизора KVM добавлен новый механизм фильтрации событий, позволяющий администратору определить типы событий, допустимые или не допустимые для мониторинга на стороне гостевой системы;
В механизм верификации eBPF-приложений добавлена возможность обработки программ с циклами, если выполнение цикла ограничено и не может привести к превышению лимита на максимальное число инструкций;
Дисковая подсистема, ввод/вывод и файловые системы
Для файловой системы XFS реализована возможность многопоточного обхода inode (например, при проверке квот). Добавлены новые ioctl BULKSTAT и INUMBERS, предоставляющие доступ к возможностям, появившимся в пятой редакции формата ФС, таким как время рождения inode и возможность задания параметров BULKSTAT и INUMBERS для каждой группы AG (Allocation Groups);
В Ext4 добавлена поддержка пустот в каталогах (не привязанных блоков). Обеспечена обработка флага "i" (immutable) для открытых файлов (запрет записи в ситуации, если флаг был установлен в момент, когда файл уже был открыт);
В Btrfs обеспечено определение быстрой реализации crc32c на всех архитектурах;
В CIFS с кода для поддержки smbdirect снят признак экспериментальной разработки. В SMB3 добавлена возможность использования криптоалгоритмов в режиме GCM. Добавлена новая опция монтирования для извлечения параметров режима из записей ACE (Access Сontrol Entry). Оптимизирована производительность вызова open();
В F2FS добавлена опция для ограничения сборщика мусора при работе в режиме checkpoint=disable. Добавлен ioctl для удаления диапазонов блоков из F2FS, что позволяет реализовать корректировку размера раздела на лету. Добавлена возможность размещения в F2FS файла подкачки с обеспечением прямого ввода/вывода. Для всех пользователей добавлена поддержка закрепления файла и выделения блоков для подобных файлов;
В интерфейс для асинхронного ввода/вывода io_uring добавлена поддержка асинхронных операций sendmsg() и recvmsg();
В файловую систему UBIFS добавлена поддержка сжатия с использованием алгоритма zstd и возможность верификации подписанных образов ФС;
В ФС Ceph добавлена поддержка меток безопасности SELinux для файлов;
Для NFSv4 реализована новая опция монтировния "nconnect=", определяющая число установленных с сервером соединений. Трафик между этими соединениями будет распределяться с использованием балансировки нагрузки. Кроме того, сервером NFSv4 теперь создаётся каталог /proc/fs/nfsd/clients с информацией о текущих клиентах, включая сведения об открытых ими файлах;
Виртуализация и безопасность
В состав ядра включён гипервизор для встраиваемых устройств ACRN, который написан с оглядкой на готовность для выполнения задач реального времени и пригодность к использованию в критически важных системах. ACRN обеспечивает минимальные накладные расходы, гарантирует низкие задержки (low latency) и адекватную отзывчивость при взаимодействии с оборудованием. Поддерживается виртуализация ресурсов CPU, ввода/вывода, сетевой подсистемы, операций с графикой и звуком. ACRN может применяться для запуска нескольких изолированных виртуальных машин в электронных блоках управления, приборных панелях, автомобильных информационных системах, потребительских IoT-устройств и другой встраиваемой техники;
В User-mode Linux добавлен режим "путешествия во времени", позволяющий замедлить или ускорить время в виртуальном окружении UML для упрощения отладки связанного со временем кода. Кроме того добавлен параметр time-travel-start, позволяющий стартовать системные часы с указанного момента в epoch-формате;
Добавлены новые опции командной строки ядра "init_on_alloc" и "init_on_free", при указании которых включается обнуление выделяемых и освобождаемых областей памяти (заполнение нулями при malloc и free), что позволяет усилить безопасность за счёт дополнительных накладных расходов на инициализацию;
Добавлен новый драйвер virtio-iommu с реализацией паравиртализированного устойства, позволяющего отправлять IOMMU-запросы, такие как ATTACH, DETACH, MAP и UNMAP, поверх транспорта virtio без эмуляции таблиц страниц памяти;
Добавлен новый драйвер virtio-pmem, представляющий доступ к устройствам хранения, отражённым в физическое адресное пространство, таким как NVDIMM;
Реализована возможность прикрепления криптографических ключей к пользовательскому или сетевому пространству имён (ключи становятся недоступны за пределами выбранного пространства имён), а также защиты ключей при помощи ACL;
В криптоподсистему добавлена поддержка очень быстрого алгоритма некриптографичекого хэширования xxhash, скорость которого упирается в производительность памяти;
Сетевая подсистема
Обеспечена обработка адресов IPv4 в диапазоне 0.0.0.0/8, который ранее был недоступен для использования. Введение данной подсети позволит распределить ещё 16 млн адресов IPv4;
В Netfilter для nftables добавлена поддержка механизмов аппаратного ускорения фильтрации пакетов за счёт применения добавленного в драйверы Flow Block API. На сторону сетевых адаптеров могут выноситься целые таблицы правил со всеми цепочками. Включение производится через привязку флага NFT_TABLE_F_HW к таблице. Поддерживаются простые метаданные протоколов 3 и 4 уровней, действия принять/отбросить, сопоставления по IP и сетевым портам отправителя/получателя и типу протокола;
Добавлена возможность прикрепления BPF-программ к системным вызовам setsockopt() и getsockopt(), что, например, позволяет прикрепить свои обработчики доступа к этим вызовам. Кроме того, добавлена новая точка вызова (hook), при помощи которой можно организовать вызов BPF-программы один раз за каждый интервал RTT (round-trip-time, время пинга);
Оборудование
Добавлена поддержка x86-совместимых процессоров компании Zhaoxin, развиваемых в результате совместного проекта VIA Technologies и муниципалитета Шанхая. Семейство CPU ZX построено на базе архитектуры x86-64 Isaiah, продолжающей развитие технологий VIA Centaur;
В подсистему DRM (Direct Rendering Manager), а также в графические драйверы amdgpu и i915, добавлена поддержка разбора, обработки и отправка через HDMI-порт метаданных HDR (расширенный динамический диапазон), позволяющего использовать HDR-панели и экараны, способные отображать дополнительные диапазоны яркости;
В драйвер amdgpu добавлена начальная поддержка GPU AMD NAVI (RX5700), которая включает базовый драйвер, код для взаимодействия с экранами (DCN2), поддержку GFX и вычислений (GFX10), SDMA 5 (System DMA0), средства управления питанием и мультимедийные кодировщики/декодировщики (VCN2). В amdgpu также улучшена поддержка карт на базе GPU Vega12 и Vega20, для которых добавлены дополнительные возможности управления памятью и энергопотреблением;
В драйвер amdkfd (для дискретных GPU, такие как Fiji, Tonga, Polaris) добавлена поддержка карт на базе GPU VegaM;
В DRM-драйвере для видеокарт Intel для чипов Icelake реализован новый мултисегментный режим гамма-коррекции. Добавлена возможность вывода через DisplayPort в формате YCbCr4:2:0. Добавлены новые прошиви GuC для SKL, BXT, KBL, GLK и ICL. Реализована возможность отключения питания экрана в асинхронном режиме. Добавлена поддержка сохранения и восстановления контекста рендеринга для чипов Ironlake (gen5) и gen4 (Broadwater - Cantiga), что позволяет из пространства пользователя восстанавливать состояние GPU при перехода от выполнения одних пакетных операций к другим;
В драйвере Nouveau обеспечено определение чипсета NVIDIA Turing TU116;
Расширены возможности DRM/KMS-драйвера для ускорителей экранных операций ARM Komeda (Mali D71), добавлена поддержка масштабирования, разделения/слияния слоёв, поворота, отложенной записи, AFBC, SMMU и форматов кодирования цвета Y0L2, P010, YUV420_8/10BIT;
В драйвер MSM добавлена поддержка серии A540 GPU Adreno, применяемой в процессорах Qualcomm, а также поддержка DSI-контроллера MSM8998 для Snapdragon 835;
Добавлены драйверы для LCD-панелей Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS, Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 и VXT VL050-8048NT-C01;
Добавлен драйвер для задействования средств ускорения декодирования видео, доступных в SoC Amlogic Meson;
В драйвере v3d (для GPU Broadcom Video Core V, используемого в Raspberry Pi) появилась поддержка диспетчеризации вычислительных шейдеров;
Добавлен драйвер для SPI-клавиатур и трекпадов, применяемых в современных моделях ноутбуков Apple MacBook и MacBookPro;
Добавлена/a> дополнительная защита ioctl-вызовов, связанных с драйвером floppy, а сам драйвер помечен как оставленный без сопровождения ("orphaned"), что подразумевает прекращение его тестирования. Драйвер пока сохраняется в ядре, но его корректная работа не гарантируется. Драйвер рассматривается как устаревший, так как для его тестирования трудно найти работающее оборудование - все актуальные внешние накопители, как правило, используют интерфейс USB.
Добавлен cpufreq-драйвер для плат Raspberry Pi, позволяющий динамически управлять изменением частоты процессора;
Добавлена поддержка новых ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) и Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), а также плат:
Purism Librem5,
Aspeed BMC,
Microsoft Olympus BMC,
Kontron SMARC,
Novtech Meerkat96 (i.MX7),
ST Micro Avenger96,
Google Cheza (Qualcomm SDM845),
Qualcomm Dragonboard 845c (Qualcomm SDM845),
Hugsun X99 TV Box (Rockchip RK3399),
Khadas Edge/Edge-V/Captain (Rockchip RK3399),
HiHope RZ/G2M,
NXP LS1021A-TSN.

Одновременно Латиноамериканский Фонд свободного ПО сформировал вариант полностью свободного ядра 5.3 - Linux-libre 5.3-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске отключена загрузка блобов в драйверах qcom, hdcp drm, allegro-dvt и meson-vdec. Обновлён код чистки блобов в драйверах и подсистемах amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, звуковом драйвере ддя skylake, а также в документации к микрокоду.
vladimir59 вне форума   Ответить с цитированием
Старый 12.11.2019, 19:46   #45
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Arch Linux изменил организацию установки пакетов с ядром Linux


Разработчики Arch Linux сообщили об изменениях в организации установки пакетов с ядром Linux. Все официальные пакеты с ядром (linux, linux-lts, linux-zen и linux-hardened) теперь не будут фактически устанавливать образ ядра в каталог /boot.

Установка и удаление образов ядра будет производиться скриптом mkinitcpio (хуки для обработки операций установки ядра пока добавлены только в mkinitcpio, но в будущем появятся и в dracut).

Изменение позволит сделать пакеты с ядром более самодостаточными и увеличить гибкость процесса загрузки, сохранив при этом обратную совместимость (переход к новой организации не требует от пользователя каких-либо ручных действий).
vladimir59 вне форума   Ответить с цитированием
Старый 04.12.2019, 16:18   #46
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

15 уязвимостей в USB-драйверах, поставляемых в ядре Linux
04.12.2019 08:53


Андрей Коновалов из компании Google опубликовал отчёт о выявлении очередных 15 уязвимостей (CVE-2019-19523 - CVE-2019-19537) в USB-драйверах, предлагаемых в ядре Linux. Это третья порция проблем, найденных при проведении fuzzing-тестирования USB-стека в пакете syzkaller - ранее данный исследователь уже сообщал о наличии 29 уязвимостей.

На этот раз в списке включены только уязвимости, вызванные обращением к уже освобождённым областям памяти (use-after-free) или приводящие к утечке данных из памяти ядра. Проблемы, которые могут использоваться для отказа в обслуживании в отчёт не включены. Уязвимости потенциально могут быть эксплуатируемы при подключении к компьютеру специально подготовленных USB-устройств. Исправления для всех упомянутых в отчёте проблем уже включены в состав ядра, но некоторые не вошедшие в отчёт ошибки пока остаются неисправленными.

Наиболее опасные уязвимости класса "use-after-free", которые могут привести к выполнению кода атакующего, устранены в драйверах adutux, ff-memless, ieee802154, pn533, hiddev, iowarrior, mcba_usb и yurex. Под CVE-2019-19532 дополнительно сведены 14 уязвимостей в HID-драйверах, вызванные ошибками, допускающими запись за пределы границы буфера (out-of-bounds write). В драйверах ttusb_dec, pcan_usb_fd и pcan_usb_pro найдены проблемы, приводящие к утечке данных из памяти ядра. В коде USB-стека для работы с символьными устройствами выявлена проблема (CVE-2019-19537), вызванная состоянием гонки (race condition).

Также можно отметить выявление четырёх уязвимостей (CVE-2019-14895, CVE-2019-14896, CVE-2019-14897, CVE-2019-14901) в драйвере для беспроводных чипов Marvell, которые могут привести к переполнению буфера. Атака может быть совершена удалённо через отправку определённым образом оформленных кадров при соединении с беспроводной точкой доступа злоумышленника. В качестве наиболее вероятной угрозы отмечается удалённый отказ в обслуживании (крах ядра), но не исключается и возможность выполнения кода в системе.
vladimir59 вне форума   Ответить с цитированием
Старый 30.12.2019, 14:47   #47
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Оценка числа примечаний TODO и FIXME в коде ядра Linux
30.12.2019 09:17

В исходных текстах ядра Linux присутствует около 4 тысяч комментариев с описанием требующих исправления недоделок, планов и отложенных на будущее задач, идентифицированных по наличию в тексте выражения "TODO". Большинство комментариев с "TODO" присутствуют в коде драйверов (2380). В криптоподсистеме таких комментариев - 23, специфичном для архитектуры x86 коде - 43, ARM - 73, коде для других архитектур - 114, в коде блочных устройств, файловых систем и сетевой подсистеме - 606.

Выражение FIXME, обычно идентифицирующее код, который требует улучшения или вызывает сомнение, встречается в комментариях 1860 раз. Интересно, что в ядре 4.2 отмечен значительный скачок TODO-комментариев, число которых увеличилось сразу примерно на 1000 (вероятно, это связано с интеграцией в состав ядра драйвера AMDGPU, который включает около 400 тысяч строк кода). Также от версии к версии продолжает увеличиваться число комментариев со словом "workaround", но наблюдается уменьшение комментариев "fixme" и "hack".



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

vladimir59 вне форума   Ответить с цитированием
Старый 10.01.2020, 11:01   #48
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Линус Торвальдс пояснил, в чём проблемы реализации ZFS для ядра Linux
10.01.2020 09:24

В ходе обсуждения тестов планировщика задач, один из участников дискуссии привёл пример того, что несмотря на заявления о необходимости сохранения совместимости при разработке ядра Linux, недавние изменения в ядре нарушили корректную работу модуля "ZFS on Linux". Линус Торвальдс ответил, что принцип "не ломать пользователей" относится к сохранению внешних интерфейсов ядра, используемых приложениями в пространстве пользователя, а также самого ядра. Но он не охватывает отдельно развиваемые сторонние надстроки над ядром, не принятые в основной состав ядра, авторы которых на свой страх и риск сами должны отслеживать изменения в ядре.

Что касается проекта "ZFS on Linux", то Линус не рекомендовал пользоваться модулем zfs из-за несовместимости лицензий CDDL и GPLv2. Ситуация такова, что из-за лицензионной политики компании Oracle шансы, что ZFS когда-нибудь сможет войти в основной состав ядра очень малы. Предлагаемые для обхода лицензионной несовместимости прослойки, транслирующие доступ к функциям ядра для внешнего кода, являются сомнительным решением - юристы продолжают спорить о том, приводит ли реэкспортирование GPL-функций ядра через обёртки к созданию производной работы, которую требуется поставлять под лицензией GPL.

Единственным вариантом, при котором Линус согласился бы принять код ZFS в основное ядро, называется получение от компании Oracle официального разрешения, заверенного главным юристом, а лучше самим Ларри Эллисоном. Промежуточные решения, такие как прослойки между ядром и кодом ZFS, недопустимы, с учётом агрессивной политики Oracle в отношении интеллектуальной собственности на программные интерфейсы (как пример, разбирательство с Google по поводу Java API). Кроме того, Линус считает стремление использовать ZFS лишь данью моде, а не техническими преимуществами. Тесты производительности, которые изучал Линус, не свидетельствуют в пользу ZFS, а отсутствие полноценного сопровождения не гарантирует стабильность в долгосрочной перспективе.

Напомним, что код ZFS распространяется под свободной лицензией CDDL, которая несовместима с GPLv2, что не позволяет добиться интеграции ZFS on Linux в состав основной ветки ядра Linux, так как смешивание кода под лицензиями GPLv2 и CDDL недопустимо. Для обхода данной лицензионной несовместимости проектом "ZFS on Linux" было решено распространять продукт целиком под лицензией CDDL в виде отдельно загружаемого модуля, который поставляется отдельно от ядра.

Возможность распространение готового модуля ZFS в составе дистрибутивов вызывает споры у юристов. Юристы организации Software Freedom Conservancy (SFC) считают, что поставка в дистрибутиве бинарного модуля ядра образует комбинированный с GPL продукт с требованием распространения итоговой работы под GPL. Юристы компании Canonical не согласны и утверждают, что поставка модуля zfs допускается, если компонент поставляется в виде самодостаточного модуля, отдельно от пакета с ядром. Canonical отмечает, что дистрибутивы давно используют подобный подход для поставки проприетарных драйверов, таких как драйверы NVIDIA.

Другая сторона парирует, что проблема совместимости с ядром в проприетарных драйверах решается поставкой небольшой прослойки, распространяемой под лицензией GPL (в ядро грузится модуль под лицензией GPL, который уже загружает проприетарные компоненты). Для ZFS подобную прослойку можно подготовить только в случае предоставления лицензионных исключений от компании Oracle. В Oracle Linux несовместимость с GPL решается подоставлением компанией Oracle лицензионного исключения, снимающего требование по лицензированию комбинированной работы под CDDL, но это исключение не действует для других дистрибутивов.

Обходным манёвром является поставка в дистрибутиве только исходных текстов модуля, которая не приводит к связыванию и рассматривается как поставка двух отдельных продуктов. В Debian для этого задействована система DKMS (Dynamic Kernel Module Support), при которой модуль поставляется в исходных текстах и собирается на системе пользователя, непосредственно после установки пакета.
vladimir59 вне форума   Ответить с цитированием
Старый 27.01.2020, 14:10   #49
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

Релиз ядра Linux 5.5
27.01.2020 08:41

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.5. Среди наиболее заметных изменений: возможность назначения сетевым интерфейсам альтернативных имён, интеграция криптографических функций из библиотеки Zinc, возможность зеркалирования на более чем 2 диска в Btrfs RAID1, механизм отслеживания состояния Live-патчей, фреймворк unit-тестирования kunit, повышение производительности беспроводного стека mac80211, возможность доступа к корневому разделу через протокол SMB, верификация типов в BPF.

В новую версию принято 15505 исправлений от 1982 разработчиков, размер патча - 44 Мб (изменения затронули 11781 файлов, добавлено 609208 строк кода, удалено 292520 строк). Около 44% всех представленных в 5.5 изменений связаны с драйверами устройств, примерно 18% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - файловыми системами и 3% c внутренними подсистемами ядра.

Основные новшества:

Дисковая подсистема, ввод/вывод и файловые системы
Для файловой системы Btrfs добавлена поддержка алгоритмов расчёта контрольных сумм xxhash64, blake2b и sha256. В реализации RAID1 обеспечена возможность зеркалирования данных на три (raid1c3) или четыре (raid1c4) устройства (ранее зеркалирование было ограничено двумя устройствами), что позволяет сохранить данные при одновременной потере 2 или 3 устройств. Например, при зеркалировании трёх накопителей в RAID1 обеспечивается надёжность на уровне RAID6, достигается более высокая производительность, но требуется на 33% больше дискового пространства;
Реализована возможность использования SMB/CIFS для корневого раздела. В CIFS также добавлена поддержка системного вызова flock() и многоканальной передачи данных (для передачи данных в рамках одного сеанса могут устанавливаться несколько сетевых соединений);
В реализации клиента к файловой системе NFS появилась поддержка ускорения операций между разными устройствами (передача файлов с одного NFS-сервера на другой без копирования на сторону клиента);
Из файловой системы XFS на уровень VFS вынесен код "iomap", который теперь можно использовать и в других ФС для обеспечения надёжного прямого ввода/вывода. Поддержка "iomap" уже добавлена в Ext4. В XFS также осуществлён переход на новый API для монтирования ФС и переработан near-режим сканирования экстентов, что позволило решить проблему с задержками при операции tail.
В Ext4 обеспечена возможность использования блоков меньшего размера при шифровании (ранее шифрование осуществлялось только блоками, размер которых совпадал с размером страниц памяти (4096));
В F2FS реализован режим закрепления файла с выравниванием по границе 2MB для размещения в полностью корректном сегменте, что гарантирует отсутствие дальнейшего перераспределения данного файла сборщиком мусора;
В ФС hugetlbfs добавлена возможность создания файлов с флагом O_TMPFILE;
Системный вызов statx() теперь может применяться для определения защиты файла с использованием fs-verity;
Добавлена поддержка мониторинга состояния датчиков температуры устройств NVMe c использованием API hwmon (поддерживается в libsensors и команде "sensors"), доступ к которому не требует повышенных привилегий (ранее сведения о температуре отражались в "smart log", который был доступен только для root).
Виртуализация и безопасность
В рамках проекта по интеграции в ядро VPN WireGuard, в штатный Crypto API перенесены многие функции из криптографической библиотеки Zinc, в том числе быстрые реализации алгоритмов ChaCha20 и Poly1305;
В криптоподсистему добавлена поддержка хэш-функции blake2b, обеспечивающей очень высокую производительность вычисления хеша при сохранении надёжности на уровне SHA-3, а также сокращённый вариант Blake2s.
В Crypto API добавлена реализация эллиптических кривых Curve25519, предложенных Дэниелом Бернштейном;
Добавлены хуки для подключения через LSM-модули и SELinux обработчиков доступа к системному вызову perf_event_open();
В гипервизоре KVM на архитектуре x86 обеспечена возможность обработки вложенных пятиуровневых таблиц страниц памяти и добавлена поддержка инструкции XSAVES для процессоров AMD. Для процессоров ARM64 добавлена возможность передачи гостевой системе информации о времени (stolen-time), которое гостевая система не выполнялась;
В AppArmor добавлена начальная поддержка хранения результирующих raw-правил в сжатом виде (применяется алгоритм deflate). Для управления уровнем сжатия предложен sysctl "apparmor.rawdata_compression_level";
Память и системные сервисы
Добавлен механизм отслеживания состояния Live-патчей, упрощающий комбинированное применение нескольких live-патчей к работающей системе. Очередной live-патч может определить изменения, добавленные ранее применёнными патчами, убедиться в совместимости с ними и проверить, что применяемый патч ранее не был установлен;
Расширены возможности подсистемы eBPF. Упрощена разработка переносимых BPF-программ на языке Си - в libbpf реализован принцип: скомпилировал один раз - запускается везде. Предложена начальная реализация механизма верификации BTF (BPF Type Format), который может использоваться в ядре для проверки типов в псевдокоде BPF. Указанная возможность задействована для BPF-программ, вызываемых при срабатывании точек трассировки (tracepoints), и используется для проверки указателей в передаваемых при вызове аргументах. Кроме того, добавлен механизм "BPF trampoline", позволяющий практически свести к нулю накладные расходы при передаче вызовов между ядром и программами BPF;
Продолжено усовершенствование интерфейса асинхронного ввода/вывода io_uring. В том числе добавлена возможность изменения набора файлов без необходимости их повторной регистрации, поддержка определения произвольного размера цикличного буфера завершённых операций (CQ), возможность указания абсолютных значений таймаута и поддержка системных вызовов, создающих файловые дескрипторы (например, вызов accept()). Добавлена новая команда IORING_OP_CONNECT для асинхронного выполнения вызовов connect();
В системный вызов clone3() c реализацией расширяемого варианта интерфейса clone(), допускающего указание большего числа флагов, добавлен флаг CLONE_CLEAR_SIGHAND для очистки всех обработчиков сигнала в создаваемом процессе. Привилегированные процессы через clone3() теперь могут выбирать PID-идентификатор для нового процесса в каждом пространстве имён;
Изменён алгоритм балансировки нагрузки в планировщике задач CFS (Completely Fair Scheduler), который теперь учитывает метрики PELT (Per-Entity Load Tracking);
Добавлен новый драйвер "hmem" с реализацией поддержки памяти специального назначения (EFI Specific Purpose Memory), определённой в спецификации EFI 2.8 для системных прошивок. Подобная память может создаваться для определённых приложений, например, которым требуется особенно высокая пропускная способность. Драйвер может экспортировать данную память как устройство или как часть системного пула памяти;
Добавлен фреймворк для unit-тестирования KUnit;
Удалён системный вызов sysctl(), который много лет назад был объявлен устаревшим, не собирался по умолчанию (требовал указания настройки CONFIG_SYSCTL_SYSCALL) и не поддерживался в Glibc (вызов sysctl() предоставлялся для совместимости с BSD-системами, а для изменения параметров применялся интерфейс /proc/sys);
Добавлен механизм для симуляции событий трассировки, который можно использовать для тестирования ПО, используемого для отладки и трассировки. Так же реализована поддержка запуска отдельного обработчика для трассировки событий в ядре, независимого от обработчика трассировки в пространстве пользователя;
В kcov (debugfs-интерфейс для анализа покрытия кода ядра) добавлено отслеживание выполнения фоновых потоков в ядре;
Сетевая подсистема
Добавлен механизм для назначения альтернативных имён сетевым интерфейсам, позволяющий одновременно применять для одного интерфейса сразу несколько имён (в том числе применять несколько шаблонов udev). Размер имени может достигать 128 символов (ранее имя сетевого интерфейса было ограничено 16 символами). Для прикрепления дополнительного имени нужно использовать команду "ip link prop add" (например, "ip link prop add enx00e04c361e4c altname someothername"). Реализация основана на прикреплении к интерфейсу дополнительных свойств и в будущем может быть расширена другими параметрами, не ограничивающимися альтернативными именами;
В подсистеме mac80211 реализованы лимиты для очередей эфирного времени (AQL, Airtime Queue Limits), позволяющие оптимизировать управление очередями Wi-Fi и повысить эффективность работы алгоритма управляемой задержки (CoDel, Сontrolled Delay) с драйверами, поддерживающими вынос операций (offloading) на сторону прошивки и оборудования;
В сетевой протокол TIPC (Transparent Inter-process Communication), предназначенный для организации межпроцессного взаимодействия в кластере, добавлена поддержка шифрования и аутентификации всех сообщений;
Для сокетов с адресацией AF_VSOCK, предназначенных для сетевого взаимодействия приложений гостевых систем и хостов, реализована возможность одновременного использования нескольких видов транспорта (vsock-transport, vmci-transport, vhost-transport и virtio-transport). В том числе разные виды транспорта можно назначать для обмена в направлениях guest->host и host->guest. Возможность может оказаться полезной для организации взаимодействия во вложенных виртуальных машинах, использующих разные гипервизоры;
Обеспечено кэширование успешных результатов проверки входящих пакетов в таблице маршрутизации, при групповой обработке очереди поступающих пакетов, в условиях когда не применяется маршрутизация в зависимости от адреса источника и все пакеты в группе имеют один и тот же адрес назначения. Оптимизация позволила повысить пропускную способность на 17% при тестировании UDP-флудом на один адрес назначения;
Реализованы 64-разрядные счётчики числа пакетов (qdisc), но для сохранения совместимости пользователю при запросе статистики в структуре gnet_stats_basic по-прежнему возвращаются 32-разрядные значения (для запроса 64-разрядных счётчиков добавлен флаг TCA_STATS_PKT64);
Реализация протокола SCTP расширена возможностями, определёнными в RFC 7829 (поддержка алгоритма Quick Failover);
В подсистему netfilter добавлена возможность использования масок в "hash:net,iface", что позвляет указывать в правилах префикс интерфейса вместо его полного имени. В цепочках POSTROUTING появилась поддержка сопоставлений с входящим интерфейсом (iif). Реализована возможность применения механизмов аппаратного ускорения (offload) при обработке flowtable (механизм выбора пути перенаправления пакетов), а также при сопоставлении входящего интерфейса и VLAN. Добавлена поддержка сопоставления с C-VLAN;
Аппаратные архитектуры
Для архитектуры x86 реализована поддержка пятиуровневых страниц памяти, позволяющих существенно увеличить возможный размер ОЗУ;
Для архитектуры ARM64 реализована полная функциональность подсистемы ftrace, включая доступ к аргументам отслеживаемых функций;
Для архитектуры MIPS добавлена поддержка kcov для анализа статистики о покрытии кода ядра;
На системах x86 обеспечена эмуляция системного вызова iopl(), позволяющего выставить уровень привилегий ввода/вывода. Ранее при выставлении наивысшего уровня привилегий, процесс помимо неограниченного доступа к порту ввода/вывода, также мог отключить прерывания, что могло применяться во вредоносных целях. Реализованная эмуляция блокирует возможность отключения и включения прерываний при помощи iopl();
Для архитектуры RISC-V реализована поддержка механизма фильтрации системных вызовов seccomp(), в том числе с возможностью использования фильтров вместе с BPF;
Добавлена поддержка систем RISC-V без блока управления памятью (MMU, Memory-Management Unit);
Для архитектуры xtensa реализована поддержка загрузки с использованием ядер, запускаемых по месту (XIP, execute-in-place, выполнение с исходного носителя, без копирования в ОЗУ);
Добавлена начальная поддержка процессоров Loongson-3A R4;
Оборудование
В DRM-драйвер для видеокарт Intel добавлена поддержка чипов семейства Jasper Lake, улучшена поддержка чипов Tiger Lake. Реализована возможность вывода через Display Port в режиме HDR (High Dynamic Range). Добавлена настройка DRM_I915_UNSTABLE для включения экспериментальных изменений, нарушающих совместимость API/ABI. Для чипов Gen12+ включена поддержка технологии защиты от копирования HDCP 1.4 и 2.2 (High-bandwidth Digital Content Protection). Добавлена поддержка механизма Display State Buffer (DSB), предоставляющего движок DMA, который можно запрограммировать для пакетной загрузки данных из памяти без привлечения CPU;
В драйвере amdgpu добавлена поддержка технологии защиты от копирования HDCP 1.4. Реализована возможность импорта и экспорта dma-buf без применения вспомогательных DRM-обработчиков. Для GPU Vega 20 обеспечена поддержка RAS (Reliability Availability Serviceability). Добавлена поддержка MSI-X. Для GPU Navi добавлена возможность разгона (OverDrive) через sysfs. Для GPU Arcturus добавлена поддержка EEPROM и задействованы VCN-движки для ускорения кодирования видео. Добавлена поддержка ASIC Dali, основанного на Raven2. Добавлены PCI-идентификаторы для карт на базе GPU Navi12 и Navi14. Включена поддержка движков кодирования VCN2.5;
В драйвер amdkfd (для дискретных GPU, таких как Fiji, Tonga, Polaris) добавлена поддержка карт на базе GPU Navi12, Navi14 и Renoir. Обеспечена возможность работы на архитектуре POWER;
В драйвер adreno добавлена поддержка GPU Adreno 510;
В драйвер tegra добавлена поддержка DisplayPort для чипов Tegra 210, 186 и 194;
В virtio-gpu добавлена поддержка mmap;
В подсистему DRM (Direct Rendering Manager) добавлен режим быстрого отключения (unmapping) VRAM-буферов в GEM, не приводящий к изменению таблицы страниц памяти;
В звуковой подсистеме появилась поддержка механизма WoV (wake-on-voice), применяемого для вывода из ждущего режима некоторых моделей Chromebook на базе SoC Mediatek;
Добавлен новый HID-драйвер для игровых клавиатур Logitech (G15, G15 v2);
Добавлена поддержка рабочих станций SGI Octane/Octane2;
Добавлена поддержка ARM SoC Broadcom BCM2711, Amlogic Meson A1 и G12, Freescale S32V234, Marvell Armada AP807/AP807-quad, Marvell Armada CP115, Realtek RTD1293 и RTD1296, Rockchip RK3308;
Добавлена поддержка ARM-плат и платформ Raspberry Pi 4, Luxul XWC-2000, FriendlyARM NanoPi Duo2, Amlogic Ugoos am6, Atmel at91 Overkiz Kizbox2/3, Marvell Espressobin, NXP i.MX8MN, i.MX8QXP Colibri, S32V234 EVB, Netronix E60K02, Kobo Clara HD, Kontron N6311/N6411, Renesas Salvator-XS, Rockchip Beelink A1, Renesas HiHope RZ/G2N, Marvell CN913x, Droid Bionic xt875, NetCom Plus 1xx/2xx/4xx/8xx, Aspeed Rainier, Aspeed Tacoma.

Одновременно латиноамериканский Фонд свободного ПО сформировал вариант полностью свободного ядра 5.5 - Linux-libre 5.5-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске отключена загрузка блобов в драйверах для Ethernet-адаптеров Realtek RTL815[23] с интерфейсом USB, беспроводных адаптерах WFX wf200, звуковых кодеках IDT Clockmatrix и RT5677. Обновлён код чистки блобов в драйверах и подсистемах wilc1000, brcmstb_dpfe, r8169, iwlwifi, драйвере dmi для сенсорных экранов, xhci-tegra, i915 и mlxsw (Mellanox Spectrum ASIC).
vladimir59 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
alex2151 (27.01.2020)
Старый 30.01.2020, 14:57   #50
Зам.Админ
 
Аватар для vladimir59
 
Регистрация: 06.10.2011
Сообщений: 45,438
Сказал(а) спасибо: 48,506
Поблагодарили 50,365 раз(а) в 31,162 сообщениях
Репутация: 151105
По умолчанию

В ядро Linux 5.6 принят код с поддержкой VPN WireGuard и расширения MPTCP (MultiPath TCP)
29.01.2020 22:32

Линус Торвальдс принял в состав репозитория, в котором формируется будущая ветка ядра Linux 5.6, патчи с реализацией VPN-интерфейса от проекта WireGuard и начальной поддержкой расширения MPTCP (MultiPath TCP). Ранее необходимые для работы WireGuard криптографические примитивы были перенесены из библиотеки Zinc в состав штатного Crypto API и включены в состав ядра 5.5. С особенностями WireGuard можно познакомиться в прошлом анонсе включения кода WireGuard в ветку net-next.

MPTCP представляет собой расширение протокола TCP, позволяющее организовать работу TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Для сетевых приложений подобное агрегированное соединение выглядит как обычное TCP-соединение, вся логика разделения потоков выполняется силами MPTCP. Multipath TCP может использоваться как для расширения пропускной способности, так и для увеличения надёжности. Например, MPTCP можно применять для организации передачи данных на смартфоне с использованием одновременно линков WiFi и 3G, или для сокращения расходов за счёт подключения сервера с использованием нескольких дешёвых линков вместо одного дорогого.
vladimir59 вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Рекламные ссылки:


Текущее время: 16:31. Часовой пояс GMT +2.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Администрация форума не несёт ответственности за содержание сообщений, оставляемых пользователями форума.
При копировании и/или использовании материалов форума прямая гиперссылка на форум обязательна!