The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Удалённо эксплуатируемая язвимость в драйвере NVMe-oF/TCP из состава ядра Linux"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..." +/
Сообщение от Аноним (160), 18-Окт-23, 15:58 
Вообще это хороший вопрос, если он без троллинга, потому что лично я, например, не видел NVMe-oF/TCP и не понимал в нем смысла.

Когда люди настраивают NVMe over Fabriс, они понимают что им нужны 2 вещи:
1) Скорость обращения к диску от внешнего сервера, особенно когда речь идёт о низких задержках
2) Снижение требований к центральному процессору, опять это влияет на задержки
Дело не в пропускной способности, короче.

Тут нужно понять несколько вещей про специфику NVMe и про его подачу через сеть:
1. NVMe контроллер не может быть собран в "аппаратный RAID"
Я беру это в кавычки, потому что что называть аппаратным рейдом в 2023 году - тот еще вопрос. NVMe-диск прицепляется напрямую к процессору через PCI Express, в то время как обычные решения про RAID через HBA берут несколько lane-ов и имеют на себе прошивку, чип-сопроцессор и отдельный RAM и подключают диски на себя. Нельзя просто так взять NVMe-диск и воткнуть в "RAID-контроллер", в плату RAID, потому что дело именно в наличии контроллера и прошивки на стороне самого диска (бомжовые берут Generic-прошивку от производителя матплаты, но она всё равно нужна). Ожидается, что вы подключаете NVMe напрямую к соответствующему процессору, поэтому любая блочная абстракция по этим дискам всегда будет программной.
2. В NVMe нет смысла делать RAID 0
Блоки памяти внутри самого диска распараллеливаются. Этот самый RAID0 у вас всегда включен и всегда применяется средствами контроллера NVMe внутри диска. Из-за этого у вас получится так, что программный RAID1 и программный RAID10 на NVMe дисках отличаются по скорости в пределах погрешности, опять же если у вас однопроцессорный сервер и они подключены в рамках одного узла NUMA. Чтобы у вас там все не ломалось есть механизмы коррекции ощибок средствами контроллера по аналогии с Patrol Scrub для RAM.
3. NVMe контроллер не является SCSI-совместимым контроллером
Из-за этого у него всё свое в том числе сетевой стек. Ради обратной совместимости поддерживается подача NVMe-дисков через традиционные протоколы впроде iSCSI или FCP (Fiber Channel Protocol), но это не рекомендуется делать.
Основные варианты сетевого транспорта NVMe-oF:
- NVMe over InfiniBand
- NVMe over Fiber Channel
- NVMe over Ethernet (имеет несколько вариантов):
   - NVMe over RoCE
   - NVMe over iWarp
   - NVMe over TCP (про него речь в новости)
Для обратной совместимости можно подать диски через:
- iSCSI
- FCoE
Из-за технических ограничений API SCSI возникают накладные расходы по работе с командами, поэтому не рекомендуется использовать чистый FC и тем более FCoE, а также iSCSI средствами ОС для работы с этими дисками.

Если вы не покупали выделенную Storage-сеть средствами InfiniBand или Fiber Channel (который медленнее и дороже чем даже Infiniband), а пользуетесь Ethernet сетями для организации сети хронения, то вы можете использовать RDMA для подачи этого диска. В зависимости от того, кто производитель вашего сетевого адаптера у вас будет либо RoCE (это по сути RDMA over UDP) или iWarp (это RDMA over TCP).
RDMA убирает нагрузку с процессора по работе с сетевым стеком для стораджа и снижает задержки. Протоколы гуглятся.

В общем вы уже начали понимать, к чему я клоню...

> А какой "use case" у этой технологии?

NVMe over TCP будет работать быстрее чем iSCSI, спору нет, но может просто настроить iWarp?

Просто RDMA снизит задержки и при правильной конфигурации RoCE выдаст вам прекрасную производительность. В случае с применением 100GB адаптеров Ethernet вы переплюнете абсолютно всё что только можно. Но я могу понять, почему люди этого не делают:
- Вам нужны сетевые карты, которые его умеют (Nvidia/Mellanox, Cavium/QLogic, Broadcom)
- Вам нужно обратиться к сетевому администратору для настройки сети, потому что вам требуется расширения Ethernet DCB на сети, чтобы это работало правильно

Альтернативой является iWarp, который снижает нагрузку на CPU и поддерживается на сетевых адаптерах Chelsio, Intel, Cavium/QLogic. Его настраивать слегка проще, но вам все равно потребуется настроить DCB и lossless-сеть для того чтобы приблизиться к тем низким задержкам, которые даёт RoCEv2. И да, у вас будет TCP.

По моему скромному мнению, NVMe over TCP существует для специфического юзкейса, когда вы понакупили себе дисков NVMe в сервера, а на нормальную сетевку вам денег не хватило, поэтому у вас не поддерживается RDMA.
Опять же, те кто так производит закуп серверного оборудования скорее всего и про NVMe over TCP не в курсе, поэтому будет настраивать iSCSI себе везде... в общем на ваш вопрос про "use case" у меня нет однозначного ответа.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Удалённо эксплуатируемая язвимость в драйвере NVMe-oF/TCP из состава ядра Linux, opennews, 16-Окт-23, 11:31  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру