FCIA-What's New in FC-NVMe-2
FCIA-What's New in FC-NVMe-2
FCIA-What's New in FC-NVMe-2
Live Webcast
October 15, 2020
11:00 AM PT/2:00 PM ET
About the Presenters
Mark Jones
Craig W. Carlson Marcus Thordal
Director Technical Marketing,
Senior Technologist with Marvell, Broadcom
Broadcom
Vice Chair T11, Chair T11 FC-NVMe- Principal Solution Architect
FCIA Board of Directors
2 Working Group,
FCIA Board of Directors
About the Fibre Channel Industry Association (FCIA)
• Background
• Fibre Channel Terminology
• Fibre Channel Basics
• The problem(s)…
• But, I thought it was reliable?
• The solution J
• Sequence level error recovery (SLER) example diagrams
• Summary
Background
Background
FRAME
FC
Payload CRC
Header
Sequences
• Multiple frames can be bundled into a “Sequence”
• A Sequence can be used to transfer a large amounts of data
• possibly up to multi-megabytes (instead of 2112 bytes for
a single frame)
SEQUENCE
*not to scale
The Problem
The Problem(s) –
Host Initiator Target
Read NVMe_CMND
X • First FC-NVMe
or
X NVMe_RSP (NVMeoFC) standard
specified no capability
NVMe Terminate ABTS-LS to recover from an error
Timeout Association
BA_ACC or BA_RJT during an Exchange i.e.,
Disconnect (Association) big hammer
Disconnect (Association) – NVMeoFC association is
NVMe_ACC terminated if any
NVMe_ACC NVMeoFC connection
Create Create (Association) for the NVMeoFC
Association NVMe_ACC association is
terminated
Create (I/O Connection)
NVMe_ACC
The Problem(s) –
REC
REC Timeout
REC timeout occurs after LS_RJT The LS_RJT indicates the
transmitting the FCP_CMND Exchange is unknown.
and a REC ELS is sent to FCP_CMND (Space)
determine the status of the
Exchange. Per FCP-4 standard the Space
command is retransmitted in a
new Exchange.
Houston, We Have a Problem…
Software/hardware bugs
Need I say more?
• Perform all steps needed to recover from error(s) within the Exchange J
• Thus SLER – Sequence level error recovery
– FLUSH request & response Basic Link Services (BLSs)
• *No BA_ACC for either
• *Sequence Initiative bit meaning changed – see FC-FS-6
– Sequence Retransmission request & response (NVMe_SR/NVMe_SR_RSP)
Information Units (IUs)
• Generalized for other FC-4 protocols to use
– RED Basic Link Service
• Earlier indication of error sent from Target
– Capability negotiated via Process Login (PRLI)
The Solution for Fibre Channel
• RED BLS
– Sent by Target Port to Initiator Port to indicate a Sequence error was
detected in an open Exchange
– After sending RED the Target Port waits for FC-4 specific event before
further processing of the Exchange
• For NVMeoFC – the FC-4 specific event is an NVMe_SR IU
– No Payload
– No Reply Sequence
Sequence Level Error Recovery
(SLER) Example Diagrams
Long Running Command
X NVMe_RSP
Flush Timeout
FLUSH
X NVMe_XFER_RDY
Flush Timeout
FLUSH
NVMe_DATA
X NVMe_DATA
NVMe_RSP
The NVMe_RSP is NVMe_SR
received and the initiator NVMe_SR_RSP
NVMe_Port detects a
Sequence error. NVMe_DATA
NVMe_DATA
The target NVMe_Port
The initiator NVMe_Port retransmits the data from
NVMe_RSP
has Sequence Initiative Relative Offset zero, and the
and transmits an NVMe_RSP.
NVMe_SR IU specifying
the data be resent.
Lost Read Data
Host Initiator Target
Read NVMe_CMND
NVMe_DATA
X NVMe_DATA
The initiator NVMe_Port
detects a Sequence error. FLUSH
A FLUSH BLS with the HT FLUSH_RSP The FLUSH_RSP
bit set to one is sent to NVMe_SR transfers Sequence
transfer Sequence Initiative NVMe_SR_RSP
Initiative to the initiator
back to the initiator NVMe_Port.
NVMe_DATA
NVMe_Port for error The target NVMe_Port
NVMe_DATA
recovery. retransmits the data from
NVMe_RSP
The initiator NVMe_Port Relative Offset zero, and
transmits an NVMe_SR IU the NVMe_RSP.
specifying the data be resent.
Sequence Level Error Recovery (SLER) –
Example RED
Host Initiator Target
Write NVMe_CMND
NVMe_XFER_RDY
NVMe_DATA
After receiving the RED NVMe_DATA X
BLS, the initiator RED After detecting a
NVMe_Port transmits an NVMe_SR Sequence error the target
NVMe_SR IU specifying NVMe_SR_RSP
transmits a RED BLS.
the NVMe_XFER_RDY be NVMe_XFER_RDY
resent. The target NVMe_Port
NVMe_DATA
retransmits the
The initiator NVMe_Port NVMe_DATA
NVMe_XFER_RDY with
retransmits the data.
Relative Offset set to zero.
Summary and Conclusion
Summary