CN113994321A - 使用虚拟输出队列映射结构上nvme分组 - Google Patents
使用虚拟输出队列映射结构上nvme分组 Download PDFInfo
- Publication number
- CN113994321A CN113994321A CN201980097393.3A CN201980097393A CN113994321A CN 113994321 A CN113994321 A CN 113994321A CN 201980097393 A CN201980097393 A CN 201980097393A CN 113994321 A CN113994321 A CN 113994321A
- Authority
- CN
- China
- Prior art keywords
- network
- nvme
- commit
- queue
- switch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了一种用于远程应用主机使用的网络基础设施设备(例如,网络交换机),该设备集成固态驱动(SSD)存储,使用非易失性存储器快速(NVMe)数据传送协议。提供了使用针对映射到SSD存储的多个提交队列的直接速率控制(RC)反馈的网络交换机的高可用性配置。结构上NVMe(NVMe‑oF)是网络架构上的NVMe协议的实现。可以使用出口队列拥塞核算(与单个出口输出相关联)与从针对集成的SSD设备的远程主机接收输入/输出命令的源节点之间的直接RC反馈信号来控制对网络结构上的SSD的访问。在一些实现中,直接RC反馈信号使用基于硬件的信号。在一些实现中,直接RC反馈信号在网络交换机的内部交换结构内的硬件逻辑(硅芯片逻辑)中被实现。
Description
背景技术
公司中的一些信息技术部门已经开始构建其计算机基础设施以尽可能地由软件定义。通常,这种软件定义的基础设施有时依赖于超融合基础设施(HCI),在HCI中,不同的功能组件集成到单个设备中。HCI的一个方面是硬件组件可以虚拟化为计算机硬件基础设施的软件定义的和逻辑上隔离的计算、存储和网络表示。硬件资源的HCI和虚拟化可以允许计算资源的灵活分配。例如,配置变化可以被应用于基础设施,而底层硬件只是简单地适应新的软件实现的配置。一些公司可能会进一步使用HCI以通过完全以软件定义计算机的能力规范来实现虚拟化计算机。每个虚拟化计算机(例如,由软件定义的)然后可以利用一个或多个物理计算机(例如,底层硬件)的一部分。虚拟化的一个公认结果是,可以在整个组织之中更高效地利用物理计算、存储和网络容量。
NVM快速(NVMe)是一种数据传送协议,其通常用于通过外围组件互连快速(PCIe)通信总线与固态驱动(SSD)通信。存在很多不同类型的数据传递协议用于计算机系统中的不同用途。每个传递协议在速度和性能方面可以表现出不同的特性,因此每个协议可以适用于不同的用途。NVMe是数据协议的一个示例,其可以被用于实现主机系统与SSD之间的高速数据传送。NVMe通常被用于需要对SSD进行高性能读取和写入操作的计算机。利用能够在进一步利用HCI硬件的软件定义的基础设施内支持高性能读取和写入的基于NVMe的存储可以表示基础设施网络的有用且适应性强的配置。
用于运行结构上NVMe(NVMe-oF)的规范于2014年启动。该规范的一个目标是将NVMe扩展到诸如以太网、光纤通道和InfiniBand等结构或任何其他合适的存储结构技术上。经由NVMe-oF通过网络结构对SSD驱动的访问可以允许软件定义的存储容量(例如,较大硬件存储容量的一部分)针对访问进行扩展。这种针对访问的扩展可以:a)允许访问大量NVMe设备;以及b)延长设备之间的物理距离(例如,在数据中心内)。扩展可以包括增加另一计算设备可以访问NVMe存储设备的距离。由于存储目标的性质,存储协议通常是无损协议。如果用于存储的协议是有损的(有损是无损的对立面),正确的数据存储很可能会表现出令人无法接受的缓慢(例如,由于分组传输重试),甚至可能出现损坏(例如,数据不准确)和因此不能在真实世界的计算机环境中使用。因此,网络结构上的NVMe-oF业务被实现为无损的。NVMe-oF网络分组可以在网络上与其他业务一起传输。因此,中间设备(例如,提供主机设备与存储设备之间的网络结构的网络交换机)上的NVMe-oF业务可能与其他类型的数据位于同一物理传递介质(例如,光缆或电缆)上。
附图说明
当与附图一起阅读时,从以下详细描述可以更好地理解本公开。需要强调的是,根据行业标准惯例,各种特征并非按比例绘制。事实上,功能属性的维度或位置可以基于设计、安全性、性能或计算机系统领域中已知的其他因素重新定位或组合。此外,对于某些功能,无论是在内部还是相互之间,处理顺序都可以改变。即,某些功能可能无法使用串行处理来实现,因此可能以不同于所示的顺序或可能彼此并行地执行。对于各种示例的详细描述,现在将参考附图,在附图中:
图1是表示根据一个或多个公开实现的诸如交换机/路由器等网络基础设施设备的示例的功能框图;
图2A是表示根据一个或多个公开实现的高可用性交换机的示例的功能框图;
图2B是表示根据一个或多个公开实现的作为存储能力增强交换机的示例的包括集成在高可用性交换机内的SSD的高可用性交换机的示例的功能框图;
图3是表示根据一个或多个公开实现的主机应用与NVMe存储设备之间的通信的逻辑层的框图,并且该框图包括NVMe的本地数据通信总线实现的抽象考虑因素以及这些抽象考虑因素对于NVMe的基于网络的实现如何不同的表;
图4是表示根据一个或多个公开实现的关于将来自多个源节点(通过结构节点)的入口输入映射到与目标SSD相关联的目标NVMe队列对(包括直接反馈控制循环)的内部交换结构连接的高级别示例的框图,其中SSD设备集成在诸如网络交换机/路由器等网络基础设施设备中;
图5是描绘根据一个或多个公开实现的用以经由直接反馈控制循环自动应用速率控制的示例方法的示例过程流程图,该直接反馈控制循环可以被集成到在具有集成SSD设备的网络基础设施设备上本地实现的通信结构中;
图6是根据一个或多个公开实现的示例计算设备,该计算设备具有硬件处理器和存储在机器可读介质(例如,磁盘、存储器、固件、或可能直接在硬件逻辑中实现的指令)上的可访问机器可读指令,该可访问机器可读指令可以被用以实现图5的示例方法;
图7表示根据一个或多个公开实现的计算机网络基础设施,该计算机网络基础设施可以被用以实现所公开的NVMe-oF队列映射的全部或部分以将SSD存储集成到网络基础设施设备中;以及
图8示出了可以被用以实现本公开的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程的计算机处理设备。
具体实施方式
现在将公开以下要求保护的主题的说明性示例。为了清楚起见,本说明书中并未针对每个示例实现描述实际实现的所有特征。应当理解,在开发任何这样的实际示例时,可能会做出很多实现特定决策以实现开发人员的特定目标,例如遵守系统相关和业务相关约束,这将因实现而异。此外,应当理解,这样的开发工作(即使复杂且耗时)对于受益于本公开的本领域普通技术人员来说也将是例行工作。
如以下更详细地解释的,本公开提供网络附加存储的实现,其中存储设备可以直接集成到网络基础设施组件中。在一个示例实现中,SSD可以集成到高可用性网络交换机的线卡中。线卡表示网络交换机的插件组件,该网络交换机在单个(或直接连接)机箱内具有集成的通信结构。在典型场景中,线卡被用于为网络交换机提供附加的网络端口。然而,本领域普通技术人员在受益于本公开时将能够认识到,将存储(特别是SSD上的NVMe存储)集成到网络交换机中可以提供优于先前可用的网络附加存储实现的若干好处。例如,提供用SSD存储设备替换网络端口的线卡可以允许网络交换机利用虚拟队列将多个入口输入映射到与SSD相关联的单个出口输出。此外,针对直接与内部网络交换机通信结构通信的组件实现速率控制(RC)和队列管理能力可以提供更高效和更可靠的存储能力。另外,直接在与交换通信结构相关联的硅(例如,硬件逻辑)中实现控制流元素可以表示关于网络附加存储的现有能力的更大改进。
网络附加存储设备的容错和高可用性(HA)能力可以使用直接在网络交换机内的存储实现来增强,部分原因是,远程主机应用与与该远程主机应用通信的存储设备之间的跳(hop)(例如,中间设备)的数目可以减少。简单来说,根据一些公开实现,存储设备(例如,网络交换机内的NVMe SSD)已经被重新定位到相对于远程主机应用“更近”的位置。具体地,减少了在远程主机应用与存储设备之间穿越的物理网络的量(也可以减少中间设备的数目)。贯穿本公开更详细地解释了用于改进计算机系统和计算机网络的功能的这些改进和其他能力。
附加到网络基础设施的存储设备可以同时被很多不同的远程设备同时访问。然而,在给定的时刻,可以只允许单个远程设备写入存储设备内的特定位置。因此,可以实现多对一映射以允许对存储设备的明显并发访问。允许多个入口输入与单个出口输出交互的一个示例可以依赖于多个虚拟输出队列到单个出口输出的映射。在某些情况下,多个输入网络端口可以向单独的虚拟队列提供输入,这些输入然后被映射到单个物理输出网络端口。在该示例中,每个单独的虚拟队列可以被分配物理网络输出端口能够支持的物理带宽的一部分。可以使用软件控制和其他速率控制(RC)机制来控制每个虚拟队列的流速,使得物理端口不会过载超出其功能能力。
一些虚拟队列实现可以包括服务质量(QoS)属性,使得较高优先级业务优先于较低优先级业务被分配带宽。因此,如果在运行时出现瓶颈(拥塞)情况,则较低优先级业务将被延迟(或丢弃)以支持较高优先级业务。在丢弃分组(然后,如果可能,稍后从这些丢弃的分组中恢复)的网络中,可能发生分组丢失的通信流被称为“有损”通信流。“有损”通信流的反面称为“无损”通信流。在无损通信流中,数据分组到达其预定目的地而没有明显的分组丢失。
为了在固有无损通信技术(例如,以太网)上达到无损通信流,可以使用用于带宽的超额订阅(或超额分配)的不同技术。在一个示例中,被设计为支持1MB/s的通信速度的数据流可以被分配5MB/s的带宽。因针对该示例通信流而分配的带宽是其被设计为使用的带宽的五倍,所以数据拥塞的几率可以大大降低并且产生无损通信流。当然,在大多数情况下,这种超额分配将表示在大多数时候将保持空闲状态的计算机资源的保留,以允许这些资源按需可用。超额订阅技术的一个缺点是其中多个通信流在网段内类似地被超额分配的场景。这种对很少使用的资源的分配可以导致该网段的利用率不是最佳的(例如,将存在浪费带宽以支持超额分配)。
网络结构和诸如内部交换结构等其他通信结构上的NVMe-oF业务被设计为无损的,假定读取和写入预期是无损的。任何计算机的用户都可以理解,将数据读取和写入计算机的驱动或其他存储设备应当会导致所有读取和写入成功处理。例如,当将数据保存到磁盘的操作由于写入被认为是可选的(例如,在通信流中丢失)而被丢弃时,大学生不太可能接受其学期论文缺页。
用于执行读取和写入操作(本文中统称为“数据传送”操作)的NVMe-oF网络分组可以暴露于网络基础设施设备,诸如必须具有处理NVMe-oF业务而不会丢失NVMe-oF网络分组的能力的网络交换机或路由器。网络基础设施设备可以使用诸如优先级流控制(PFC)标准802.1Qbb等方法来支持无损端口队列。由于需要将NVMe-oF网络分组与非NVMe-oF网络分组分开,在网络设备中使用无损队列可以较困难。与NVMe-oF网络分组不同,非NVMe-oF网络分组可以形成对网络分组丢失更具弹性的网络数据流,因此可以不使用无损队列。在这种情况下,无损队列是一个临时存储位置,网络分组可以存储在该存储位置,直到它们被传输到接收器并且传输被确认。无损队列可以利用更多的计算能力或存储器资源以在可以具有有限量的计算和存储器资源的网络基础设施设备中操作。对可能具有有限可用计算资源的网络基础设施设备中的所有网络分组使用无损队列可能是不可行的。
当前将NVMe-oF网络分组与非NVMe-oF网络分组分离的方法可以在被配置为允许NVMe-oF网络分组被没有丢失地处理的网络基础设施设备上处理。将NVMe-oF网络分组与非NVMe-oF网络分组分离的一种方法可以是将网络基础设施设备配置为假定源自特定互联网协议(IP)地址或具有特定目的地IP地址的网络分组是NVMe-oF分组。例如,网络交换机中的集成SSD可以具有关联的IP地址以进行无损处理。来自定义为NVMe-oF网络分组的源的IP地址的网络分组可以被路由到无损队列,而非NVMe-oF网络分组可以被路由到可以不需要提供无损处理的其他队列。随着NVMe-oF网络分组的新的源被添加到网络,或者NVMe-oF网络分组的现有源被移除,网络基础设施设备可以进行调节以正确地处理源自新的或已更新的IP地址的网络分组。对于要通过网络结构经由NVMe-oF访问的NVMe设备的大规模部署,响应于网络变化而手动更新网络基础设施设备的配置可能是不可取的。因此,可以实现用于使用虚拟输出队列在网络交换机内集成SSD的公开技术,以支持基于网络基础设施内在没有人工干预的情况下检测到的其他变化的自动配置变化。例如,可以实现设备的即插即用型自动调节配置。
网络基础设施设备可以被编程(例如,使用软件控件或更优选地使用用于速率控制的硬件反馈循环)以在对应SSD能够接受另外的通信时允许无损队列接受该另外的通信。如下面参考图4更详细地讨论的,可以实现基于每个队列和源速率控制(RC)的直接硬件反馈控制机制。因此,SSD处的拥塞或SSD的不可用性(例如,由于SSD的故障或移除)可以导致缺少信号被提供给源输入,使得源输入自动对目标(即,SSD)无法接受另外的通信做出反应(例如,存储读取请求或存储写入请求形式的数据传输操作)。总体而言,这可以增强HA能力,因为源输入可以自动将数据重定向到不可用的SSD的另一仍然可用的备份设备。HA设备的典型配置被设计为包括可能遇到故障的子设备的至少一个主/备份对。因此,更高级别HA设备不会因为单个子设备故障而影响与其在公司基础设施网络内的规则相关的操作能力。例如,具有所公开的反馈循环因此增强了HCI网络交换机的HA能力。还可以实现定时机制以允许其中子设备没有发生故障但只是暂时变得忙碌的瞬时拥塞场景。在这种情况下,所公开的RC机制可以提供允许在稍微延迟之后与关联设备另外的通信的信号。很多不同的实现都是可能的,并且可以取决于不同的设计考虑因素,包括正在实现的数据存储的类型或上述QoS技术。
现在参考图1,以框图示出了诸如交换机/路由器105等网络基础设施设备100。通常,路由器具有两种类型的网络元件组件,该网络元件组件被组织到被示出为控制平面110和数据平面115的分开的平面上。此外,典型的交换机/路由器105可以包括处理资源和本地数据存储120。取决于特定交换机/路由器105的能力,可以存在不同类型的处理资源和本地存储(用于内部设备使用)。一般而言,更高容量的交换机/路由器105实现将包括大量处理资源和存储器,而更简单(例如,低容量)设备将包含较少内部资源。如贯穿本公开所述,不应当将用于内部设备使用的本地存储与用于网络使用的可附加或集成存储设备(例如,SSD)混淆。
控制平面110(例如,在路由器中)可以用于维护路由表(或单个综合路由表),该路由表列出了应当使用哪个路由来转发数据分组、以及通过哪个物理接口连接(例如,输出端口160到169)。控制平面110可以通过使用内部预配置指令(称为静态路由)或通过使用路由协议动态学习路由来执行该功能。静态和动态路由可以存储在一个或多个路由表中。控制平面逻辑然后可以从表中剥离非必要指令并且构建转发信息库(FIB)以用于数据平面115使用。
路由器还可以使用转发平面(例如,数据平面115的一部分),该转发平面包含用于来自不同端口或不同目的地地址的信息的不同转发路径(例如,转发路径A 116或转发路径Z 117)。通常,路由器在传入(例如,端口150-159)和传出接口连接(例如,端口160-159)之间转发数据分组。路由器使用分组报头包含的信息将数据分组转发到正确的网络类型,该信息与由控制平面110提供的FIB中的条目相匹配。端口通常是双向的,在本示例中示出为“输入”或“输出”以说明通过路由路径的消息流。在一些网络实现中,路由器(例如,交换机/路由器105)可以具有用于不同类型的物理层连接的接口,诸如铜缆、光纤或无线传输。单个路由器也可以支持不同的网络层传输标准。每个网络接口可以用于使得数据分组能够从一个传输系统被转发到另一传输系统。路由器也可以用于连接称为子网的两个或更多个计算机设备逻辑组,每个逻辑组具有不同的网络前缀。
也在图1中示出,双向箭头107指示控制平面110和数据平面115可以以协调方式工作以实现交换机/路由器105的整体能力。类似地,双向箭头125指示处理和本地数据存储资源120可以与控制平面110接口以为分配给控制平面110的能力提供处理和存储支持。双向箭头130指示处理和本地数据存储资源120也可以根据需要与数据平面115相接口。
如图1所示,控制平面110包括若干示例功能控制框。取决于网络设备100(例如,交换机/路由器105)的特定实现的能力,附加控制框是可能的。框111指示控制平面110可以具有关于当前在网络设备100上执行的控制代码的软件版本的关联构建信息。此外,该软件版本可以包括用于确定网络设备100及其关联的控制代码如何执行不同功能的配置设置。
软件和设备本身的很多不同配置设置都是可能的,并且描述每个都超出了本公开的范围。然而,所公开的将SSD集成到交换机中的实现以及NVMe-oF网络分组的对应处理可以在网络基础设施设备100的一个或多个子系统中实现。另外,在诸如图2A-2B所示的一些实现中,网络基础设施设备100(例如,交换机/路由器105或HA交换机200A和200B)可以由不同HA配置的多个设备组成。网络基础设施设备100中的一个或多个设备可以被配置为实现NVMe-oF网络分组和反馈循环的自动检测和路由,以提供用于将多个虚拟输出队列映射到该网络基础设施设备100内的单个SSD(或端口)的RC。
继续图1中,框111指示交换机/路由器105(作为网络基础设施设备100的示例)和控制平面110可以知道不同类型的路由信息和连接信息。框112指示可以从控制平面110访问信息存储并且信息存储酌情包括转发表或NAT信息。框113指示控制平面110也可以知道转发决策和其他处理信息。虽然图1示出了控制平面110内的这些逻辑能力,但是它们实际上可以在控制平面110之外实现,但可访问控制平面110。
现在参考图2A,在框图200A中示出了高可用性交换机205A的示例。高可用性交换机205A被示出为具有两个控制器。控制器1(210)被标识为“活动”控制器,控制器2(215)被标识为“备用”控制器。如下文更详细地解释,诸如高可用性交换机205等高可用性交换机可以具有任何数目的控制器并且通常具有至少两个。在某些配置中,控制器与专用活动控制器和专用备用控制器形成主/备份对。在主/备份配置中,主设备执行所有网络功能,并且如果达到故障转移条件,备用设备将等待变为活动状态。故障转移可以是自动的或手动的,并且可以针对更高级别HA设备内的不同组件来实现。一般来说,概念上的高级别故障转移是指活动和备用组件切换角色,使得备用设备变为活动设备,活动设备(有时在重新启动或更换之后)变为备用设备。在集成到网络交换机的SSD设备的情况下,一个SSD可以充当冗余SSD对中的主设备,这些SSD与数据写入保持同步,使得当(出于多种原因)主SSD不可用时自动,冗余对的备份设备可以接管(例如,备份设备是热备份设备)。
高可用性交换机205A还包括多个通信卡(例如,卡槽1(221)、卡槽2(222)、卡槽3(223)和卡槽N(225)),通信卡每个均可以具有被配置为支持网络通信的多个通信端口。诸如卡槽1(221)等卡槽也可以被称为“线卡”并且具有多个双向通信端口(以及管理端口(未示出))。卡槽1(221)被示出为具有端口1-1(241)和端口1-2(242),并且可以表示插入高可用性交换机205A的背板(例如,通信总线)的插槽(例如,通信总线连接)中的“卡”。其他连接和连接类型也是可能的(例如,电缆连接、NVMe设备等)。此外,在图2A中,卡槽2(222)被示出为具有端口2-1(243)和端口2-2(244);卡槽3(223)被示出为具有端口3-1(245)、3-2(246)和端口3-N(247);卡槽N(225)被示出为具有端口X(248)和端口Y(249)。
为了支持交换机中的控制器(例如,活动和/或备用控制器)与连接到该交换机的客户端设备之间的通信,可以在给定交换机上执行多个通信客户端应用。在交换机上执行的客户端应用可以帮助与所连接的客户端的通信和交换机上的硬件配置(例如,线卡的端口)。在某些情况下,客户端应用被称为“侦听器”,部分原因是,它们“侦听”通信或命令,然后处理接收到的内容。针对高可用性交换机205A,示例客户端应用是客户端1(230-1),客户端1(230-1)被示出为支持从活动控制器或备用控制器到通过卡槽1(221)连接的设备的通信。
图2A中的第二示例客户端应用是客户端2(230-2),客户端2(230-2)被示出为支持从任一控制器到卡槽2(222)和卡槽3(223)两者的通信。最后,客户端Z(230-Z)被示出为支持从两个控制器到卡槽N(225)的通信。框图200中从备用控制器2到客户端应用的虚线指示备用控制器可以经由客户端应用通信耦合到通信卡槽,但是由于其备用状态,可以不传输意义重大的数据。框图200中从活动控制器1到客户端应用的实线指示可能发生更多通信的活动状态。在一些示例中,单个客户端可以被配置为支持多于一个(或甚至是一个的一部分)通信卡槽(线卡),如图所示,客户端2(230-2)并发支持卡槽2(222)和卡槽3(223)两者。客户端支持的卡槽数目的上限可以是基于交换机的性能特征或其他因素及其内部设计的实现决策。
参考图2B,框图200B将HA交换机205B示出为上述HA交换机205A的变体。如图所示,在区域255(由虚线框勾勒出的轮廓)中,HA交换机205B集成多个SSD组件,这些SSD组件可以被用于为远程设备提供网络附加存储。如图所示,可以使用SSD设备代替HA交换机205B的通信端口。具体地,通信卡槽2(252)集成SSD 2-1(250-1)和SSD 2-2(250-2)。取决于实现规范,SSD 2-1(250-1)可以与SSD 2-2(250-2)配对作为存储设备的冗余对,或者可以彼此独立实现。由于SSD 2-1(250-1)和SSD 2-2(250-2)都在卡槽2(252)上,因此可能需要提供冗余对,其中冗余对的主设备和备份设备不在同一线卡上。具体地,SSD可以与不同线卡上的SSD配对以实现冗余。任何一种实现都是可能的。在同一线卡上具有输入和输出(或冗余对)的一个可能好处是,同一线卡上的设备之间的通信不必穿过机箱结构(即,设备间通信将是线卡结构本地的)。当然,可以考虑不同的实现标准来确定给定应用解决方案的最佳实现。
还如示例HA交换机205B中所示,线卡可以与任何数目的集成的SSD组件通信。具体地,区域255示出,SSD 3-1、SSD 3-2和SSD3-N(均以元件附图标记251表示)可以与卡槽3(253)集成(或连接到其)。在该示例中,客户端2(230-2)可以适应于与具有集成SSD组件的线卡通信,并且其他计算设备(例如,在区域255之外)可能不知道区域255内的详细实现。即,所公开的集成在HA交换机205B内的SSD组件的实现可以对外部设备和HA交换机205B的其他组件是透明的。尽管客户端2(230-2)在框图200B中被示出为潜在的软件(或固件)模块,但是客户端2(230-2)的功能可以完全(至少部分)在HA交换机205B的硬件逻辑(即,基于硅的逻辑)内实现。考虑到本公开的益处,本领域普通技术人员将认识到,可以使用软件、固件和硬件逻辑的很多不同实现来实现为网络交换机提供集成SSD(具有RC控制循环)的公开技术。
现在参考图3,示出了表示主机应用与NVMe存储设备之间的通信的逻辑层300的框图。图3还包括表1(350),表1(350)列出了根据一个或多个公开实现的NVMe的本地数据通信总线实现的抽象考虑因素以及这些抽象考虑因素对于NVMe的基于网络的实现(例如,NVMe-oF)如何不同。所有设备(无论该设备是本地的还是远程的)都可以具有用于寻址该设备的NVMe限定名称(NQN)。
逻辑层300包括表示远程应用的顶层305,远程应用可以利用NVMe存储来存储数据作为该应用处理的一部分。在该上下文中,远程应用是指从存储主机应用的数据的存储设备远程(例如,通过网络)执行的主机应用。作为本地应用或远程应用执行的主机应用可以具有多个内部抽象,并且不知道在应用执行读取或写入操作时更新的实际存储物理位置。
层310指示与NVMe-oF存储交互的应用可以与主机侧传输抽象层接口,该主机侧传输抽象层可以以类似于用于与本地附加存储接口的设备驱动的方式将其自身呈现给应用。主机侧传输抽象可以提供结构通信或网络连接通信,以代表应用执行读取或写入操作。层315指示主机发起的命令(例如,可以包括用于写入的数据)可以从层310转变到层320,并且响应命令(例如,对主机发起的命令的响应,如读取请求)可以在相对的方向上转变。层315可以是本地总线通信实现,或者可以基于网络协议以与远程物理存储(例如,跨网络远程)相接口。
当跨网络进行通信时,可以自动提供用于传输的可能的数据封装以实现网络通信效率。层320指示设备控制器(本地或远程)可以从层315接收信息并且接口到存储设备。例如,层315可以包括在第一方向上流向物理设备的数据请求(例如,读取或写入)和在第二方向上流动以从物理设备返回到应用的响应命令(例如,数据)。在一些公开实现中,在层320处表示的该设备控制器可以包括经由交换机通信结构的通信以将虚拟队列(可能很多)映射到单个设备(例如,SSD)。层325表示NVMe SSD或存储由远程应用获取或提供的实际数据的其他NVMe存储设备。
表1(350)示出了通过本地总线与NVMe存储通信的实现与与NVMe存储远程通信的实现(例如,NVMe-oF)的不同抽象考虑因素。如图所示,当通信是到本地NVMe设备(例如,连接到通信总线而不是通过网络的设备)时,设备标识符(即,对于SSD)可以包括总线/设备/功能属性,而在远程通信中,设备标识符可以由上面引用的NQN表示。远程数据访问与本地数据访问的排队基础也可以有所不同。在本地实现中,可以利用存储器排队机制,而对于远程存储实现,排队可以利用发现和连接命令作为执行网络通信操作的一部分。在本地实现中,发现技术可以包括数据总线枚举(例如,在数据总线上查找设备),而远程实现可以包括使用基于网络/结构的消息来发现可用的存储设备。对于数据传送,本地实现可以使用物理存储器页面地址(PRP)或分散收集列表(SGL)以向存储设备提供数据,而远程实现可以利用带有附加密钥的SGL来实现数据传送操作。这些只是潜在差异的示例,该潜在差异被说明以解释抽象层可能存在差异(有时是稍微的)以使应用程序的数据访问尽可能透明。即,应用程序不需要知道实际数据物理存储在哪里并且可以正常运行而不管实际实现细节。这些抽象层可以进一步允许系统管理员实现实际物理硬件的软件配置并且从而允许在向组织提供应用服务方面具有更大的灵活性。
参考图4,示出了示例框图,该示例框图示出了一个可能的内部路由概览400,概览400可以由网络基础设施设备(诸如具有如图2B所示的集成SSD组件的HA交换机205B)使用。在该示例中,节点的概念可以用于描述网络基础设施设备的逻辑子系统或在网络基础设施设备内部或外部实现的逻辑处理框的概念。在该示例中,多个源节点435可以接收网络分组并且充当源节点435中包含的多个队列的入口输入。源节点435中的每个队列可以与速率控制(RC)逻辑485耦合。每个源节点435可以经由结构负载平衡器(FLB)490连接到多个结构节点440。在该示例中,结构节点440可以表示线卡上的芯片,该线卡还包含用于网络通信的端口或用于为远程应用提供存储的集成SSD组件(例如,多队列SSD 482)。
从源节点435到多个结构节点440的连接形成多个备选路径455,其中网络分组可以被发送到结构节点440。结构节点440还可以具有接收从源节点435发送的网络分组的多个内部队列。结构节点440还可以具有将所接收的分组路由到结构节点440内部的队列的负载平衡机制(例如,负载平衡器(LB)495)。结构节点440可以共同耦合到目的地节点450(例如,被实现以包括NVMe提交/完成队列对470)。耦合可以通过诸如交叉连接通信总线465所示的连接机制来实现。目的地节点450可以实现为多个NVMe提交/完成队列对470并且具有出口输出481以接口到一个或多个多队列SSD 482。为了简洁和清楚的目的,图4中仅示出了两个源节点435、结构节点440和目的地节点450,但是可以有很多不同类型的节点,该节点可以根据本公开的概念来配置以提供集成的内部交换结构,以进一步为诸如交换机/路由器105或HA交换机205A或205B等网络基础设施设备提供网络附加存储,如上所述。
在一些示例实现中,NVMe协议可以被用作经由PCIe总线或经由NVMe-oF到SSD(例如,多队列SSD 482)的接口。每个多队列SSD 482可以具有64K的队列对,其中每对包括用于读取和写入的提交队列和用于数据传送状态的完成队列。简单地说,每对具有用于命令的提交队列和用于响应的完成队列。此外,由于64K队列对可以比任何特定实现所需要的队列对多,因此某些实现将SSD组件的单个队列对与处理设备上的对应核心相匹配。因此,在处理设备具有96个核心的情况下,这96个核心中的每个可以表示源节点435。因此,如果以图4的风格说明了96个实现的队列对的这个示例,N将等于96,并且来自NVMe队列对450的96个实例中的每个实例的每个多队列SSD 482的出口输出481将有96个实例。
为了确保无损队列处理并且改进HA实现,每个NVMe队列对450被示出为包括被称为出口队列拥塞核算480的子组件。出口队列拥塞核算480表示出口队列的拥塞的度量,该拥塞的度量用于确定特定出口队列何时(或是否)无法维持预期性能以完成数据传输请求。例如,如果特定出口队列超过排队(即,进行中)请求的阈值数目,则该阈值超过可以表示性能问题的指示。备选地,如果特定出口队列在预定时间段内没有完成大量未完成请求,则拥塞可能成为问题。
如直接反馈控制460所示,出口队列拥塞核算480可以通信耦合到每个NVMe队列对450的输入RC 485。在图4中,为了清楚起见,并未示出反馈控制460的所有实例。然而,可以在每个出口队列拥塞核算480实例与RC 485的每个实例之间实现反馈控制460。出口队列拥塞核算480的每个实例可以被用于监测在SSD 482处接受新网络分组的能力。例如,可以向很多对应RC 485实例提供信号以指示传输可用于出口输出481。备选地,如果没有提供可用性信号,则可以向RC 485通知到该NVMe队列对的传输应当被延迟或重新路由到另一队列。因此,如果存储设备不可用(例如,由于故障、移除、拥塞等),RC 485可以立即意识到不可用。相应地,到目的地的分组传输将仅与该目的地的RC 485处的可用性信号结合发生。
使用RC控制反馈460的这种类型的实现不应当与在一些网络中使用的基于信用的实现混淆,部分原因是,图4的RC控制反馈460表示每队列直接反馈控制机制。在一些实现中,RC控制反馈460可以使用设置在基于硅的交换结构内的直接连接或直接有线连接来实现以在出口队列拥塞核算480与RC 485之间提供硬件信号。最后,根据一些实现,可以为如图所示的虚线轮廓内所示的所有组件提供内部交换结构连接性499。即,与内部交换结构连接相对应的虚线框的轮廓内所示的所有组件可以具有与网络基础设施设备(例如,交换/路由器105、HA交换机205A或HA交换机205B)内部的通信结构的直接连接(或者在该通信结构内被实现或者被实现为该通信结构的一部分)。虚线框的确切位置在图4中是近似的并且仅用于说明目的。
在一个示例实现中,包括内部交换结构性499的网络基础设施设备可以从经由网络通信耦合到网络基础设施设备的远程应用接收第一网络传输。第一网络传输可以是使用结构上非易失性存储器快速(NVMe-oF)协议的数据传送操作(例如,与获取或存储数据相关联)。在接收到网络传输之后(或作为其一部分),从网络传输获取的信息可以被入队以形成一个或多个提交命令以用于使用网络基础设施设备的内部交换结构性499进行路由和处理。内部交换结构499可以使用软件来配置或者使用硬件逻辑来实现。每个提交命令然后可以关联于与内部交换结构499和NVMe存储设备(例如,多Q NVMe SSD482)两者相接口的NVMe存储驱动的提交队列(例如,NVMe队列对1 450,如图4所示)。提交命令与提交队列的关联可以使用虚拟输出队列来被实现,每个虚拟输出队列包括NVMe存储驱动的完成队列。参见例如图4的NVMe队列对1 450到NVMe队列对N 450。
继续该示例,可以在网络基础设施设备处接收第二网络传输。第二网络传输可以在第一网络传输的处理已经完成之后被接收,或者可以在第一网络传输正在被处理(例如,在用于处理的队列中)的同时发生。当大量数据或少量数据的大的数目被同时处理时(例如,沉重的数据传送负载),更有可能发生提供数据传送操作的多个网络传输的重叠处理。因此,可能需要控制多个并发处理的数据传送操作的流程。本公开技术包括使用出口拥塞核算与相关联的源节点(例如,内部交换结构性499的输入)之间的直接速率控制(RC)反馈信号来控制第二网络传输(和所有其他后续网络传输)的流程。以这种方式,源节点输入可以被引导到可用队列以进行处理(与被引导到具有积压的队列相反)。一个示例被示出为图4所示的直接反馈控制信号460。如下面参考图5所解释的,RC可用性信号可以指示队列对可用并且缺乏可用性信号可以指示队列对不可用(例如,忙或不可操作)。注意,如果存储设备遇到故障,由于缺少与故障设备相关联的队列对的可用性信号,本公开技术可以将后续数据传送操作无缝地路由到不同设备。因此,本公开技术可以解决性能改进以及改进的数据传送操作的可用性。
参考图5,作为示例方法500,提供了过程流程图,该过程流程图描述应用于将多个虚拟输出队列(出口输入)路由到与SSD相关联的单个出口输出的逻辑的示例。从框510开始,交换机(或其他网络基础设施设备)在交换机内部建立连接性结构以从SSD组件存储和检索数据。在该示例中,用于与SSD组件接口的协议是NVMe,NVMe可以与NVMe-oF网络分组相关联。框520指示:在源节点队列处接收到输入。决策530指示:可以做出速率控制(RC)可用性的确定。在一些实现中,RC可用性可以由来自RC控制反馈循环的信号确定,如上文参考图4讨论的。如果RC可用性是肯定的(决策530的“是”分支),则流程继续到框570,其中通过内部交换结构连接从源节点向适当关联的NVMe队列对提供输入。NVMe队列对进一步与出口输出和SSD组件相关联。
备选地,如果在决策530处不存在RC可用性信号(决策530的“否”分支),则不同实现可以实现无损通信流和高可用性支持。一种可能的实现在框540处指示,其中输入可以在接收到RC可用性信号之前保持一段时间。这种可能实现进一步由可配置重试循环535反映,其中可以在决策530处执行多次重试以检查RC可用性信号。框550指示:如果重试循环(或初始源输入)尚未经由框570被处理,则输入命令和数据可以可选地被重定向到不同源输入节点(并且最终重定向到不同出口输出)。框560指示:信息可以可选地在正在向不可用目的地提供输入命令或数据的远程设备的“上游”提供,从而可以通知上游应用可以将另外的通信重定向到不同目的地。
上面针对图5描述的可选动作中的每个可以基于可以由系统管理员提供的配置信息来选择,并且可以进一步基于整体网络的运行时信息和设备性能进行调节。在一些实现中,配置选项可以指示:没有重试(如重试循环535所指示的)将被执行并且输入应当基于没有RC可用性信号(如决策530处所指示的)被立即阻塞。此外,在体验最佳吞吐量的系统中,可以不调用任何可选操作(例如,RC可用性信号持续存在)。
现在参考图6,示出了根据到一个或多个公开的示例实现的示例计算设备600,计算设备600具有硬件处理器601和存储在机器可读介质和/或硬件逻辑602上的可访问机器可读指令,该可访问机器可读指令可以用于执行自动NVMe-oF网络分组路由。作为示例,图6示出了被配置为执行方法500的流程的计算设备600。然而,计算设备600还可以被配置为执行本公开中描述的其他方法、技术、功能或过程的流程。在图6的这个示例中,机器可读存储介质602包括引起硬件处理器601执行上面参考图5讨论的框510-570的指令。方法500的不同实现是可能的,包括在芯片上配置的用于结合所公开技术的整体实现来实现方法500的全部或部分以在网络基础设施设备内提供集成SSD的硬件逻辑。
机器可读存储介质(诸如图6的602)可以包括易失性和非易失性的可移除和不可移除的介质,并且可以是包含或存储可执行指令、数据结构、程序模块、或处理器可访问的其他数据的任何电子、磁性、光学或其他物理存储设备,例如固件、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、非易失性随机存取存储器(NVRAM)、光盘、固态驱动(SSD)、闪存芯片等。机器可读存储介质可以是非瞬态存储介质,其中术语“非瞬态”不包括瞬态传播信号。
图7表示根据一个或多个公开的实施例的计算机网络基础设施700,计算机网络基础设施700可以用于实现所公开的自动NVMe-oF网络分组路由技术的全部或部分以将存储直接集成在网络基础设施设备内。网络基础设施700包括本公开的实施例可以在其中操作的一组网络。网络基础设施700包括客户网络702、网络708、蜂窝网络703和云服务提供商网络710。在一个实施例中,客户网络702可以是本地专用网络,诸如包括各种网络设备(包括但不限于交换机、服务器和路由器)的局域网(LAN)。
这些网络中的每个可以包含有线或无线可编程设备,并且使用任何数目的网络协议(例如,TCP/IP)和连接技术(例如,网络或)进行操作。在另一实施例中,客户网络702表示企业网络,该企业网络可以包括或通信耦合到一个或多个局域网(LAN)、虚拟网络、数据中心和/或其他远程网络(例如,708、710)。在本公开的上下文中,客户网络702可以包括使用诸如上述方法和技术的一个或多个高可用性交换机或网络设备。具体地,计算资源706B和/或计算资源706A可以被配置为并入存储设备(例如,707A和707B)的网络基础设施设备。
如图7所示,客户网络702可以连接到一个或多个客户端设备704A-E并且允许客户端设备704A-E经由网络708(例如,互联网)彼此通信和/或与云服务提供商网络710通信。客户端设备704A-E可以是计算系统,诸如台式计算机704B、平板计算机704C、移动电话704D、膝上型计算机(示出为无线)704E、和/或总体上示出为客户端设备704A的其他类型的计算系统。
网络基础设施700还可以包括通常被称为物联网(IoT)的其他类型的设备(例如,边缘IOT设备705),该设备可以被配置为经由网络发送和接收信息以访问云计算服务或与远程Web浏览器应用交互(例如,以接收配置信息)。
图7还示出了客户网络702包括本地计算资源706A-C,本地计算资源706A-C可以包括服务器、接入点、路由器、或被配置为提供本地计算资源和/或促进网络和设备之间的通信的其他设备。例如,本地计算资源706A-C可以是一个或多个物理本地硬件设备,诸如上面概述的HA交换机。本地计算资源706A-C还可以促进其他外部应用、数据源(例如,707A和707B)和服务与客户网络702之间的通信。
网络基础设施700还包括用于与移动通信设备一起使用的蜂窝网络703。移动蜂窝网络支持移动电话和很多其他类型的移动设备,诸如膝上型电脑等。网络基础设施700中的移动设备被示出为移动电话704D、膝上型计算机704E和平板计算机704C。诸如移动电话704D等移动设备可以在移动设备移动时与一个或多个移动提供商网络交互,通常与多个移动网络塔720、730和740交互以连接到蜂窝网络703。
图7示出了客户网络702耦合到网络708。网络708可以包括当今可用的一个或多个计算网络,诸如其他LAN、广域网(WAN)、互联网和/或其他远程网络,以便在客户端设备704A-D与云服务提供商网络710之间传送数据。网络708内的每个计算网络可以包含在电和/或光域中操作的有线和/或无线可编程设备。
在图7中,云服务提供商网络710被示出为能够经由客户网络702和网络708与客户端设备704A-E通信的远程网络(例如,云网络)。云服务提供商网络710充当向客户端设备704A-E和/或客户网络702提供附加计算资源的平台。在一个实施例中,云服务提供商网络710包括具有一个或多个服务器实例714的一个或多个数据中心712。云服务提供商网络710还可以包括表示可以受益于本公开的技术的可扩展计算资源的一个或多个帧或集群(和集群组)。此外,云服务提供商通常提供近乎完美的正常运行时间可用性,并且可以使用所公开的技术、方法和系统来提供该级别的服务。
图8示出了可以用于实现本公开的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程、或与其一起使用的计算设备800。例如,图8所示的计算设备800可以表示客户端设备或物理服务器设备,并且取决于计算设备的抽象级别,包括(多个)硬件或虚拟处理器。在某些情况下(没有抽象),如图8所示的计算设备800及其元件每个涉及物理硬件。备选地,在某些情况下,一个、多个或所有元素可以使用模拟器或虚拟机作为抽象级别来实现。在任何情况下,无论离物理硬件有多少抽象级别,处于其最低级别的计算设备800都可以在物理硬件上实现。
还如图8所示,计算设备800可以包括:一个或多个输入设备830,诸如键盘、鼠标、触摸板或传感器读出器(例如,生物特征扫描仪);以及一个或多个输出设备815,诸如显示器、音频扬声器或打印机。一些设备也可以被配置为输入/输出设备(例如,网络接口或触摸屏显示器)。
计算设备800还可以包括可以通信耦合到处理器805的通信接口825,诸如可以包括有线通信组件和/或无线通信组件的网络通信单元。网络通信单元可以利用各种专有或标准化网络协议中的任何一种(诸如以太网、TCP/IP,仅举几个协议)以实现设备之间的通信。网络通信单元还可以包括利用以太网、电力线通信(PLC)、WiFi、蜂窝和/或其他通信方法的一个或多个收发器。
如图8所示,计算设备800包括处理元件,诸如包含一个或多个硬件处理器的处理器805,其中每个硬件处理器可以具有单个或多个处理器核。如上所述,多个处理器核中的每个可以与NVMe队列对配对以促进本公开的实现。在一个实施例中,处理器805可以包括至少一个共享高速缓存,该共享高速缓存存储由处理器805的一个或多个其他组件使用的数据(例如,计算指令)。例如,共享高速缓存可以是存储在存储器中以由构成处理器805的处理元件的组件更快访问的本地高速缓存数据。在一个或多个实施例中,共享高速缓存可以包括一个或多个中级高速缓存,诸如级别2(L2)、级别3(L3)、级别4(L4)或其他级别的高速缓存、最后一级高速缓存(LLC)或其组合。处理器的示例包括但不限于中央处理单元(CPU)、微处理器。虽然图8中未示出,但是构成处理器805的处理元件还可以包括一种或多种其他类型的硬件处理组件,诸如图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、和/或数字信号处理器(DSP)。
图8示出了存储器810可操作且通信地耦合到处理器805。存储器810可以是被配置为存储各种类型的数据的非瞬态介质。例如,存储器810可以包括一个或多个存储设备820,包括非易失性存储设备和/或易失性存储器。诸如随机存取存储器(RAM)等易失性存储器可以是任何合适的非永久性存储设备。非易失性存储设备820可以包括一个或多个磁盘驱动、光驱、固态驱动(SSD)、分接驱动、闪存、只读存储器(ROM)、和/或被设计为在断电或关机操作之后的一段时间内保持数据的任何其他类型的存储器。在某些情况下,如果所分配的RAM不足以容纳所有工作数据,则非易失性存储设备820可以用于存储溢出数据。非易失性存储设备820还可以用于存储在程序被选择以执行时加载到RAM中的程序。
本领域普通技术人员知道,软件程序可以针对各种软件平台和/或操作系统以各种计算语言开发、编码和编译,并且随后由处理器805加载和执行。在一个实施例中,软件程序的编译过程可以将用编程语言编写的程序代码转换成另一种计算机语言,使得处理器805能够执行该程序代码。例如,软件程序的编译过程可以生成可执行程序,该可执行程序为处理器805提供编码指令(例如,机器代码指令)以完成特定的、非通用的、特别的计算功能。
在编译过程之后,编码的指令然后可以作为计算机可执行指令或过程步骤从存储设备820、从存储器810加载到处理器805和/或嵌入在处理器805内(例如,经由高速缓存或板载ROM)。处理器805可以被配置为执行所存储的指令或过程步骤,以便执行指令或过程步骤以将计算设备转换成非通用的、特定的、专门编程的机器或装置。所存储的数据(诸如由存储设备820存储的数据)可以在计算机可执行指令或过程步骤的执行期间被处理器805访问以指示计算设备800内的一个或多个组件。
用户接口(例如,输出设备815和输入设备830)可以包括显示器、位置输入设备(诸如鼠标、触摸板、触摸屏等)、键盘或其他形式的用户输入和输出设备。用户接口组件可以通信耦合到处理器805。当输出设备是显示器或包括显示器时,显示器可以以各种方式实现,包括通过液晶显示器(LCD)或阴极射线管(CRT)或发光二极管(LED)显示器,诸如有机发光二极管(OLED)显示器。本领域普通技术人员知道,计算设备800可以包括图8中未明确示出的本领域公知的其他组件,诸如传感器、电源和/或模数转换器。
贯穿本说明书和权利要求使用某些术语来指代特定的系统组件。如本领域技术人员将理解的,不同方可以以不同名称来指代组件。本文档不打算区分名称不同但功能不同的组件。在本公开和权利要求中,术语“包括(including)”和“包括(comprising)”以开放式方式使用,因此应当解释为“包括但不限于……”。此外,术语“耦合(couple)”或“耦合(couples)”旨在表示间接或直接有线或无线连接。因此,如果第一设备耦合到第二设备,则该连接可以通过直接连接或通过经由其他设备和连接的间接连接来进行。陈述“基于”旨在表示“至少部分基于”。因此,如果X基于Y,则X可以是Y和任何数目的其他因素的函数。
以上讨论旨在说明本公开的原理和各种实现。一旦完全理解上述公开内容,很多变化和修改对于本领域技术人员来说将变得很清楚。意图在于,将以下权利要求解释为包括所有这样的变化和修改。
Claims (19)
1.一种方法,包括:
在网络基础设施设备处接收从经由网络而通信耦合到所述网络基础设施设备的远程应用提供的第一网络传输,所述第一网络传输与使用结构上非易失性存储器快速(NVMe-oF)协议的第一数据传送操作相关联;
将所述第一网络传输入队到一个或多个提交命令以提供给所述网络基础设施设备的内部交换结构,所述一个或多个提交命令关联于与所述内部交换结构和NVMe存储设备相接口的NVMe存储驱动的多个相应的提交队列,其中所述多个相应的提交队列被映射到至少所述NVMe存储驱动的第一虚拟输出队列和第二虚拟输出队列,所述第一虚拟输出队列被映射到所述NVMe存储驱动的第一完成队列,并且所述第二虚拟输出队列被映射到所述NVMe存储驱动的第二完成队列;
在所述网络基础设施设备处接收第二网络传输,所述第二网络传输与使用NVMe-oF协议的第二数据传送操作相关联;以及
使用出口队列拥塞核算与接收所述第一网络传输或所述第二网络传输中的至少一项的源节点之间的直接速率控制(RC)反馈信号来控制所述第二网络传输的流被入队和处理。
2.根据权利要求1所述的方法,其中所述直接RC反馈信号是基于硬件的信号。
3.根据权利要求2所述的方法,其中所述基于硬件的信号使用在所述内部交换结构内实现的硬件逻辑被实现。
4.根据权利要求1所述的方法,其中所述网络基础设施设备是网络交换机。
5.根据权利要求1所述的方法,其中所述网络基础设施设备是高可用性网络交换机。
6.根据权利要求5所述的方法,其中所述高可用性网络交换机提供对包括所述NVMe存储设备的多个集成固态驱动的高可用性访问。
7.根据权利要求1所述的方法,其中所述第一网络传输在所述网络基础设施设备的第一端口处被接收,并且所述第二网络传输在所述网络基础设施设备的不同于所述第一端口的第二端口处被接收。
8.一种网络交换机,包括:
第一输入端口,用以从第一远程主机接收第一多个提交命令,所述第一多个提交命令基于非易失性存储器快速(NVMe)协议;
第一多个提交队列,在所述第一多个提交队列中所述第一多个提交命令被入队,所述第一多个提交队列经由内部交换结构被映射到单个出口输出以利用集成的基于NVMe的存储设备提供数据传送操作;
第一完成队列和第二完成队列,每个完成队列与所述第一多个提交队列中的相应的一个提交队列相关联,其中多个响应命令被入队以用于使用NVMe协议传输到所述第一远程主机;以及
NVMe存储驱动,用以经由所述内部交换结构将来自所述第一多个提交队列的所述第一多个提交命令接口到所述集成的基于NVMe的存储设备,其中针对所述第一多个提交队列的控制流包括所述单个出口输出与所述第一多个提交队列之间的直接速率控制(RC)反馈。
9.根据权利要求8所述的网络交换机,其中所述NVMe存储驱动用以通过基于来自所述直接RC反馈的信号确定所述第一完成队列和所述第二完成队列中的至少一项是否可用来控制所述提交命令的流。
10.根据权利要求9所述的网络交换机,其中所述NVMe存储驱动用以通过以下方式控制所述提交命令的流:
响应于确定所述第一完成队列可用,从第一虚拟输出队列获取提交命令;或者
响应于确定所述第二完成队列可用,从第二虚拟输出队列获取所述提交命令。
11.根据权利要求10所述的网络交换机,其中所述NVMe存储驱动用以:
将从所述第一虚拟输出队列或所述第二虚拟输出队列获取的所述提交命令出队;以及
通过利用所述集成的基于NVMe的存储设备执行数据传送操作来实施所述提交命令。
12.根据权利要求11所述的网络交换机,其中所述NVMe存储驱动用以:
响应于确定从所述第一虚拟输出队列获取的所述提交命令已经被处理,在所述第一完成队列中将响应于所述提交命令的响应命令入队;或者
响应于确定从所述第二虚拟输出队列获取的所述提交命令已经被处理,在所述第二完成队列中将所述响应命令入队。
13.根据权利要求9所述的网络交换机,其中:
来自所述第一完成队列或所述第二完成队列的信息使用NVMe协议经由响应网络消息被提供给所述远程主机。
14.根据权利要求8所述的网络交换机,还包括:
第二输入端口,用以从第二远程NVMe主机接收第二多个提交命令;
第三输出端口,用以向所述第二远程NVMe主机传输响应命令;
第二多个提交队列,在所述第二多个提交队列中经由所述第二输入端口接收的所述第二多个提交命令被入队;
第三虚拟输出队列,与所述第二多个提交队列相关联并且被映射到所述第一完成队列;以及
第四虚拟输出队列,与所述第二多个提交队列相关联并且被映射到所述第二完成队列,
其中所述NVMe存储驱动用以使用出口队列拥塞核算和与所述第一完成队列和所述第二完成队列中的相应的一个完成队列相关联的直接RC反馈来控制所述提交命令的所述流。
15.根据权利要求8所述的网络交换机,还包括:
多个集成的基于NVMe的存储设备的高可用性(HA)配置,其中所述多个集成的基于NVMe的存储设备的对针对每对的相应的成员提供冗余。
16.根据权利要求15所述的网络交换机,其中所述多个集成的基于NVMe的存储设备的所述对中的至少一对包括在所述网络交换机的第一线卡上的第一SSD和在所述网络交换机的第二线卡上的第二SSD,与所述第二线卡相比,所述第一线卡插入到所述网络交换机的不同的卡槽内。
17.一种非瞬态计算机可读介质,包括存储在其上的计算机可执行指令,所述计算机可执行指令在由网络交换机中的处理器执行时,使所述处理器:
在网络基础设施设备处接收从经由网络而通信耦合到所述网络基础设施设备的远程应用提供的第一网络传输,所述第一网络传输与使用结构上非易失性存储器快速(NVMe-oF)协议的数据传送操作相关联;
将所述第一网络传输入队到一个或多个第一提交命令以提供给所述网络基础设施设备的内部交换结构,所述一个或多个第一提交命令关联于与所述内部交换结构和NVMe存储设备相接口的NVMe存储驱动的多个相应的提交队列,其中所述多个相应的提交队列被包括在所述NVMe存储驱动的第一虚拟输出队列和第二虚拟输出队列中,所述第一虚拟输出队列被映射到所述NVMe存储驱动的第一完成队列,并且所述第二虚拟输出队列被映射到所述NVMe存储驱动的第二完成队列;
在所述网络基础设施设备处接收第二网络传输,所述第二网络传输与使用NVMe-oF协议的数据传送操作相关联;以及
使用出口队列拥塞核算与接收所述第一网络传输或所述第二网络传输中的至少一项的源节点之间的直接速率控制(RC)反馈信号来控制所述第二网络传输的流被入队到所述一个或多个提交命令。
18.根据权利要求18所述的非瞬态计算机可读介质,其中所述直接RC反馈信号是基于硬件的信号。
19.根据权利要求19所述的非瞬态计算机可读介质,其中所述基于硬件的信号利用在所述网络交换机的内部交换结构内实现的硬件逻辑被实现。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/038892 WO2020263223A1 (en) | 2019-06-25 | 2019-06-25 | Mapping nvme-over-fabric packets using virtual output queues |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113994321A true CN113994321A (zh) | 2022-01-28 |
Family
ID=74060649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980097393.3A Pending CN113994321A (zh) | 2019-06-25 | 2019-06-25 | 使用虚拟输出队列映射结构上nvme分组 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11997024B2 (zh) |
CN (1) | CN113994321A (zh) |
DE (1) | DE112019007502T5 (zh) |
WO (1) | WO2020263223A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768701B2 (en) * | 2019-09-17 | 2023-09-26 | Western Digital Technologies, Inc. | Exception analysis for data storage devices |
US11818046B2 (en) * | 2021-01-26 | 2023-11-14 | Samsung Electronics Co., Ltd. | Coordinated congestion control in network-attached devices |
US11805171B2 (en) * | 2021-03-04 | 2023-10-31 | Dell Products L.P. | Automated ethernet layer 3 (L3) connectivity between non-volatile memory express over fabric (NVMe-oF) hosts and NVM-oF subsystems using bind |
US11818031B2 (en) | 2021-03-04 | 2023-11-14 | Dell Products L.P. | Automated internet protocol (IP) route update service for ethernet layer 3 (L3) IP storage area networks (SANs) |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7343413B2 (en) | 2000-03-21 | 2008-03-11 | F5 Networks, Inc. | Method and system for optimizing a network by independently scaling control segments and data flow |
US6842424B1 (en) * | 2000-09-05 | 2005-01-11 | Microsoft Corporation | Methods and systems for alleviating network congestion |
US20070100979A1 (en) | 2005-11-01 | 2007-05-03 | Savvis Communications Corporation | Virtualized utility service platform |
US8009566B2 (en) | 2006-06-26 | 2011-08-30 | Palo Alto Networks, Inc. | Packet classification in a network security device |
US20080148270A1 (en) | 2006-12-15 | 2008-06-19 | International Business Machines Corporation | Method and implementation for storage provisioning planning |
US8161167B2 (en) | 2007-08-28 | 2012-04-17 | Cisco Technology, Inc. | Highly scalable application layer service appliances |
US8424053B2 (en) | 2008-07-01 | 2013-04-16 | International Business Machines Corporation | Method of dynamically updating network security policy rules when new network resources are provisioned in a service landscape |
US9264341B2 (en) | 2009-07-24 | 2016-02-16 | Broadcom Corporation | Method and system for dynamic routing and/or switching in a network |
US8705342B2 (en) | 2010-10-15 | 2014-04-22 | Brookhaven Science Associates, Llc | Co-scheduling of network resource provisioning and host-to-host bandwidth reservation on high-performance network and storage systems |
US9160678B2 (en) | 2013-04-15 | 2015-10-13 | International Business Machines Corporation | Flow control credits for priority in lossless ethernet |
US9483431B2 (en) * | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US9785355B2 (en) * | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US9461967B2 (en) | 2013-07-18 | 2016-10-04 | Palo Alto Networks, Inc. | Packet classification for network routing |
US9634944B2 (en) | 2013-10-24 | 2017-04-25 | Dell Products, Lp | Multi-level iSCSI QoS for target differentiated data in DCB networks |
US9455915B2 (en) * | 2013-12-12 | 2016-09-27 | Broadcom Corporation | Hierarchical congestion control with congested flow identification hardware |
US9798636B2 (en) * | 2014-06-23 | 2017-10-24 | Liqid Inc. | Front end traffic handling in modular switched fabric based data storage systems |
US9692560B1 (en) * | 2014-07-10 | 2017-06-27 | Qlogic Corporation | Methods and systems for reliable network communication |
US9747249B2 (en) | 2014-12-29 | 2017-08-29 | Nicira, Inc. | Methods and systems to achieve multi-tenancy in RDMA over converged Ethernet |
KR102309798B1 (ko) | 2015-04-16 | 2021-10-06 | 삼성전자주식회사 | Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법 |
US10572180B1 (en) | 2015-11-09 | 2020-02-25 | Seagate Technology Llc | Method and apparatus to perform a function level reset in a memory controller |
US10275160B2 (en) | 2015-12-21 | 2019-04-30 | Intel Corporation | Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller |
US10423568B2 (en) * | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
US10769098B2 (en) | 2016-04-04 | 2020-09-08 | Marvell Asia Pte, Ltd. | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access |
US10210123B2 (en) * | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US10142243B2 (en) * | 2016-09-12 | 2018-11-27 | Citrix Systems, Inc. | Systems and methods for quality of service reprioritization of compressed traffic |
US10536385B2 (en) * | 2017-04-14 | 2020-01-14 | Hewlett Packard Enterprise Development Lp | Output rates for virtual output queses |
US11102294B2 (en) * | 2017-06-09 | 2021-08-24 | Samsung Electronics Co., Ltd. | System and method for supporting energy and time efficient content distribution and delivery |
US10579567B2 (en) * | 2017-06-28 | 2020-03-03 | Western Digital Technologies, Inc. | Queue depth management for host systems accessing a peripheral component interconnect express (PCIe) device via a PCIe switch |
US10459640B2 (en) | 2017-09-29 | 2019-10-29 | Netapp, Inc. | High availability storage access using quality of service based path selection in a storage area network environment |
US11502948B2 (en) | 2017-10-16 | 2022-11-15 | Mellanox Technologies, Ltd. | Computational accelerator for storage operations |
US10466906B2 (en) | 2017-12-19 | 2019-11-05 | Western Digital Technologies, Inc. | Accessing non-volatile memory express controller memory manager |
US10846155B2 (en) | 2018-10-16 | 2020-11-24 | Samsung Electronics Co., Ltd. | Method for NVMe SSD based storage service using RPC and gRPC tunneling over PCIe + |
US11144226B2 (en) | 2019-04-11 | 2021-10-12 | Samsung Electronics Co., Ltd. | Intelligent path selection and load balancing |
-
2019
- 2019-06-25 WO PCT/US2019/038892 patent/WO2020263223A1/en active Application Filing
- 2019-06-25 CN CN201980097393.3A patent/CN113994321A/zh active Pending
- 2019-06-25 DE DE112019007502.0T patent/DE112019007502T5/de active Pending
- 2019-06-25 US US17/413,997 patent/US11997024B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
DE112019007502T5 (de) | 2022-09-22 |
WO2020263223A1 (en) | 2020-12-30 |
US11997024B2 (en) | 2024-05-28 |
US20220045969A1 (en) | 2022-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230006934A1 (en) | Multi-path transport design | |
CN110249596B (zh) | 用于saas应用的基于qos的分类和优先级排序的学习技巧 | |
US11997024B2 (en) | Mapping NVMe-over-fabric packets using virtual output queues | |
US11010198B2 (en) | Data processing system having a hardware acceleration plane and a software plane | |
US10257066B2 (en) | Interconnect congestion control in a storage grid | |
US8644139B2 (en) | Priority based flow control within a virtual distributed bridge environment | |
US20130138836A1 (en) | Remote Shared Server Peripherals Over an Ethernet Network For Resource Virtualization | |
WO2014022168A1 (en) | System and method for virtual ethernet interface binding | |
US11777804B2 (en) | Automatic system provisioning for NVME-over-fabric storage | |
WO2017210209A1 (en) | Keepalive scheduler in a network device | |
US11403319B2 (en) | High-availability network device database synchronization | |
US11848989B2 (en) | Separate routing of NVMe-over-fabric packets and non-NVMe packets | |
US10423333B2 (en) | System and method for scalable processing of abort commands in a host bus adapter system | |
US20190004910A1 (en) | Automatic failover permissions | |
US20230421451A1 (en) | Method and system for facilitating high availability in a multi-fabric system | |
CN118056191A (zh) | 具有可配置传输的多平面、多协议存储器交换机构造 | |
US11296987B2 (en) | Congestion management mechanism | |
JP2021189462A (ja) | ストレージ装置 | |
US11500678B2 (en) | Virtual fibre channel port migration | |
US20240031295A1 (en) | Storage aware congestion management | |
US11336592B2 (en) | Flexible link level retry for shared memory switches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |