| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA -> 正文阅读 |
|
[网络协议]iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA |
iSCSI iSCSI(Internet Small Computer System Interface)是一种将流行的SCSI协议扩展到TCP/IP网络,从而创建了基于IP的存储局域网SAN的块存储协议,它也是大道云行FASS全闪软件定义存储内置支持的块存储协议之一。 iSCSI具有非常坚实的基础:SCSI、TCP和IP,因此在过去20年内得到了极广泛的应用,现在很多操作系统以及Hypervisor都具有内置的支持。Linux Kernel 3.1版本在其内核态的Linux SCSI Target(一般称为LinuxIO,缩写为LIO)加入了iSCSI Target的支持。 作为一种纯软件的解决方案,iSCSI具有非常低的成本,它不需要改动已有的系统,包括硬件及软件,同时对iSCSI存储网络的管理实际上就是对于IP/以太网络的管理。当然,在需求性能的情况下,iSCSI也可以使用硬件实现方案或者硬件加速方案。 ?iSER? iSER(iSCSI Extensions for RDMA)是iSCSI协议的进化,它利用了RDMA(Remote Direct Memory Access,远程内存直接访问)的优势提升iSCSI协议的性能,它也是大道云行FASS全闪软件定义存储内置支持的块存储协议之一。 iSER可以高效地将iSCSI命令转换为RDMA事务,而RDMA具有三个广为人知的优势: #01:Zero copy/零复制,使用传统网络协议栈需要进行多次数据复制,而使用RDMA,数据可以直接发送到网卡,或者从网卡直接接收,降低内存带宽占用。 #02:Kernel bypass/内核旁路,传统的内核态网络协议栈需要进行多次切换进出操作系统内核,带来大量上下文切换开销,RDMA可以在用户态进行数据传输,开销大为降低。 #03:No CPU involvement/无CPU参与,硬件实现网络传输堆栈,除了不需要软件实现占用CPU周期之外,还避免了对CPU内部Cache的争用。 因此,与iSCSI相比,iSER可以达到很高的性能同时具有很低的延迟,实际上iSER可以认为是一种硬件方案,它需要支持RDMA的以太网卡:iWARP或者RoCE,其中iWARP基于TCP/IP协议,而RoCE基于UDP/IP协议,由于四层传输协议TCP和UDP的不同,使用两种不同方案的iSER客户端和服务器端无法协同工作。 此外,对于iSER RoCE而言,它还具有RoCE网络带来的额外要求:无损以太网络,包括PFC、ECN在内的特性以及相应的管理能力。相对而言,iSER iWARP只需要对应的网卡就可以简单运行在所有的标准以太网络上。 Linux Kernel 3.10版本在内核态Linux SCSI Target中加入iSER Target的支持。 NVMe over TCP NVMe over TCP(缩写为NVMe/TCP)是大道云行FASS软件1.5.0版本加入的新协议,它是NVMe over Fabrics(缩写为NVMe-oF)众多实现方案之一。与iSCSI有些类似,它将NVMe-oF能力扩展到TCP协议栈上,同样其也是一种纯软件的方案。与iSCSI很不一样的是,它基于全新NVMe架构,而iSCSI基于强大但古老的SCSI架构,它们具有显著的差别: 区别点 在硬件规范上,NVMe设备可以支持最多64k(65,535)个硬件队列对(每对队列包括发送队列和完成队列),每个队列对深度可以达到最大64k(65,535)。相对地,SCSI终端设备的队列数量为1,队列深度为256,SCSI发起端的规格因人而异,一般为单个队列,深度为1k(1000)左右,多队列的硬件实现极少。 在软件上,NVMe原生协议栈设计为每一个硬件队列对映射到一个CPU核心,不同的队列之间没有锁,不需要同步。SCSI协议实现因操作系统而异,但一般地,较早期的SCSI协议仅具备一个软件队列,并且在这个队列上具有一个大锁,这限制了SCSI协议的性能。 NVMe/TCP和iSCSI分别继承了这两者的优点和缺点 在NVMe/TCP中,每一个硬件队列对都被映射到一个TCP流上,并(尽力)分配到一个独立的CPU核心上,运用多核心处理器增强了总体性能,而较早期的iSCSI一般采用的是单进程、单TCP流的设计,只能运用一个CPU核心——直到Linux Kernel 3.17之前。 NVMe/TCP于2018年出现,Linux Kernel 5.0版本(以及Kernel 4.21版本)对NVMe/TCP进行了支持。大道云行FASS全闪软件定义存储使用了独特的用户态高性能NVMe/TCP Target。 值得一提的是,Linux Kernel进化对NVMe/NVMe-oF/SCSI/iSCSI的性能提升: Linux Kernel 3.13中引入了blk-mq(Linux Multi-Queue Block IO Queueing Mechanism),Linux块存储从此真正进入了多队列时代,NVMe架构也因此获益,但SCSI架构还得继续等待。 Linux Kernel 3.17中引入了scsi-mq(多队列的SCSI层),其实它被设计为也可以支持老的blk-sq(单队列的块设备层),但需要使用blk-mq才能实现多队列,直到此时,iSCSI/SCSI才得到一个显著的提升。 Linux Kernel 5.0中blk-mq变成默认选项,这一点对现实的影响可能非常显著,因为在此之前,用户需要进行设置才能够发挥设备的最佳性能。 NVMe over RDMA 于2011年发布1.0版本的NVMe(Non-Volatile Memory Express)本来是一种专为高速直联闪存存储设计的协议,如前面所述,可以支持64k的队列数量和64k的队列深度,在2016年推出的NVMe-oF规范将NVMe扩展为一种存储网络,最开始为RDMA传输协议设计,后来加入了FC(Fibre Channel)协议。 NVMe over RDMA(可以缩写为NVMe/RDMA,但一般使用NVMe-oF术语时默认的就是NVMe/RDMA)将高性能的NVMe架构与高性能的RDMA相结合,得到的是一种极高性能的存储网络。 NVMe/RDMA与NVMe/TCP的关系就类似于iSER与iSCSI的关系,NVMe/RDMA与iSER类似,属于一种硬件方案,特别的一点是,NVMe/RDMA还包括了对InfiniBand的支持(InfiniBand上运行的SCSI称为SRP)。NVMe/RDMA的运用条件与iSER也比较类似:需要支持RDMA的网卡. 同时,对于NVMe/InfiniBand和NVMe/RoCE而言,还需要支持InfiniBand的网络,或者具备PFC和ECN的无损以太网络,而NVMe/iWARP只需要普通的以太网络就可以运行。 Linux Kernel 4.8版本对NVMe-oF提供了支持,大道云行FASS全闪软件定义存储使用了独特的用户态高性能NVMe/RDMA Target,具有零复制和内核旁路的特点。 总结 iSCSI、iSER、NVMe/TCP、NVMe/RDMA,它们分属SCSI和NVMe两种体系架构,并各自提供了纯软件或者基于RDMA硬件的设计。 在使用RDMA硬件加速的情况下,iSER和NVMe/RDMA都能提供很高的性能,而纯软件的方案iSCSI和NVMe/TCP其性能相对硬件版本略低但无须付出任何硬件成本。 SCSI架构(iSCSI/iSER),与NVMe架构(NVMe-oF,包括TCP和RDMA)对比,NVMe架构具有着根本性的优势:每一个IO所需要的指令数量以及上下文切换数量都更低,不管是对客户端和服务器端都更为高效,从而会具有更优异的性能表现,但iSCSI独有的一个好处是可以支持较老的操作系统内核,用户不需要任何修改即可使用。 大道云行FASS全闪软件定义存储同时提供了上述四种块存储协议的支持,可以给用户提供非常灵活的性能/成本选项。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 11:17:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |