![]() |
TL;DR – Today, Fibre Channel provides an NVMe over Fabrics Discovery mechanism, Ethernet does not. This blog post describes an investigation that was performed to determine if an enhancement to the NVMe over Fabrics Discovery protocol was needed in order for it to support a Network Centric connectivity model as described below. The investigation determined that a multi-layer discovery technique was called for and that FC already provided the required Discovery mechanisms; Ethernet currently does not. Before I continue I need to thank Dave Peterson (Broadcom) for his assistance with the FC Discovery portion of this investigation. Management modelsIn order for NVMe over Fabrics (NVMe-oF) to be widely adopted, I believe it must integrate into existing workflows and management tools (e.g., provisioning and monitoring) that existing enterprises use when managing external (e.g., Array based) storage. As of today, there are three primary approaches that can be utilized for this purpose:
For more information about the “Network Centric” and End-node Centric” management models as well as the scalability attributes of each, please refer to FC and FCoE versus iSCSI – “Network-centric” versus “End-Node-centric” provisioning Since NVMe over Fabrics will need to scale (e.g., beyond a single rack) I believe it makes sense for the Transports to at least support a “Network Centric” management model. In addition, since NVMe over Fabrics will need to co-exist with SCSI and SCSI-FCP, it makes sense to follow a layered discovery approach that is similar to what has been done for discovery with those protocols. The Network Centric management modelIn order to support the “Network Centric” management model, this blog post breaks discovery into two different layers; NVMe and Transport Specific. This separation will allow for the existing NVMe Discovery process to remain intact while allowing each Transport to leverage existing transport specific approaches for the discovery of Transport Addresses that support a specific feature (i.e., a Discovery Service). This concept is illustrated in the diagram below. The Network Centric approach and how the layered approach will impact each transport is described below. Transport Specific Discovery In order to automate the discovery of end devices (e.g., Arrays) that support NVMe over Fabrics, I believe a “centralized”, Transport Specific, Discovery Service is needed. Furthermore, this Discovery Service will need to be able to provide a list of Transport Specific addresses that provide an NMVe Discovery Controller (e.g., that reside on each NVMe Subsystem). Side note: Transport Specific Discovery is totally optional. Outside of expected behavior, the implementation details regarding a particular Transport Specific Discovery Service will probably not be defined in the NVMe over Fabrics specification. Although this may seem obvious to some of you, it’s important to explicitly state that each of the protocols would need to handle Transport Specific Discovery in a Transport independent way, for example: Fibre ChannelThe Transport Specific Discovery Service for FC is the Name Server and is defined in the Fibre Channel standard FC-GS. The Discovery Service capability is returned to the Host port in response to “Get N_Port Identifier for the specified FC-4 Feature” (GID_FF) with the FC-4 feature of 28h specified and the FC-4 Discovery Service Feature bit set to 1. When the FC Transport Discovery process is complete, the Host port will have a list of all FC WWPNs and N_Port IDs that provide an NVMe Discovery Controller. This requires that each VN_Port properly register its FC-4 features. IPTransport Specific Discovery for IP could be provided in a number of ways, including:
IBFor IB I’m going to let Mellanox figure this one out. :-) NVMe Registration and DiscoveryAfter the Transport Specific Discovery process has completed, the Host Software can use the Fabric Connect command and specify the well-known Discovery Service NQN as the destination. For each Transport Specific address that registered as a Discovery Service and was discovered via the Transport Specific Discovery service, the host software will obtain a Discovery Log page as defined in section 5 of the NVMe over Fabrics 1.0 specification. As shown in the diagram above, this Discovery Service can either be physically located in the same enclosure as the Controller used for IO (e.g., within the same Array enclosure) or it could be centrally located and accessible over an out-of-band network connection (e.g., to support a rack of JBOF). In order to support both of these cases, the information that is registered with the NVMe Discovery Service must allow for a Discovery Log page to be fully populated. Since this is the case, the Register Discovery Log Page command should contain one or more Discovery log pages. The Register Discovery Log Page command can be used to directly register a log page but other methods not defined in the NVMe over Fabrics specification may also be used (i.e., when the Discovery Service is located within a storage array). The format of the Register Discovery Log Page command is also TBD. State Change Notification With FC, State Change Notification has proven to be amazingly important for operational concerns. Essentially, you need to know when a device goes away ASAP and RSCN allows for this. Similar to the approach used with Discovery, the mechanisms used to provide State Change Notification should also be layered into Transport specific and NVMe specific. Transport Specific Each Transport may support a mechanism to indicate that a change has occurred in the transport that may affect connectivity. Fibre Channel – Fibre Channel provides Asynchronous state change notification via Registered State Change Notification (RSCN) IP – I am honestly not sure what could be done here short of adding this functionality to an iSNS like centralized controller. IB – Again, I’ll defer to Mellanox. NVMe Specific State change notification can also be provided between NVMe host software and each controller through the use of the following approaches:
All three of these approaches will need to be defined. ConclusionAs we’ve said before, NVMe over Fabrics needs a bit more work before it will be ready for use by the majority of our Enterprise Customers. Along these lines, I believe that Discovery and State Change Notification are features that will be critically important to you as you start to evaluate different Transports. Thanks for reading! |
