Кажется, совсем не так давно, а для кого-то, может быть, еще в прошлую пятницу, золотым стандартом технологического стека сетей хранения данных был Fibre Channel: SCSI, FCP, FC. Неудивительно: Fibre Channel разрабатывался целенаправленно для хранения данных. Но уже к середине 2000-х на сцене появляется новый стандарт — протокол iSCSI, реализованный поверх TCP/IP и Ethernet. Почему? Fibre Channel был всем хорош, кроме своей цены и зависимости от нескольких производителей сетевого оборудования.
C появлением новых высокопроизводительных компонент хранения данных и исчерпания масштабирования производительности традиционных интерфейсов, в том числе SAS, рождается стандарт NVMe — протокол, который работает поверх PCIe. NVMe, повторяя путь SCSI на заре эры SAN, реализуют в сетях хранения как набор стандартов NVME-oF (Over Fabric) для различных транспортных протоколов: FC, RDMA, TCP. Начиная с версии 3.2 в TATLIN.UNIFIED реализована поддержка NVMe over TCP наравне с Fibre Channel и iSCSI.
Меня зовут Александр Пищулин, я инженер в отделе оптимизации быстродействия СХД в YADRO. В статье я постараюсь дать представление о реализации NVMe over TCP в системах, построенных на базе ядра Linux, c фокусом на производительность. Также поделюсь результатами тестирования протокола в TATLIN.UNIFIED GEN2.