1. 初始化和連接發現(initialization and device discovery)
常見的FC連接拓撲有三類:網絡連接,點對點連接,環形連接。這里跟蹤網絡連接和點對點連接。
1.1 有FC交換機情況
步驟1至3必選,其他步驟可以按以下描述執行,也可以其他方式執行。(注:前5步是與FC交換機打交道,第6步的PLOGI已開始涉及initiator端和target端打交道)
(1)執行Fabric Login(FLOGI);
(2)Login with Name Server;
(3)向Name Server注冊信息:
- FC-4 TYPE
- FC-4 Features
(4)注冊SCN(State Change Notification)(參考FC-LS-4);
(5)下發一個GID_FF(參考FC-GS-8)查詢,參數Domain_ID范圍和Area_ID范圍字段都設置為0,FC-4 Feature字段設置為0x04,Type字段設置為0x28(0x28是FC-NVMe指定的,如果FCP的SCSI相關則填寫0x08)。此查詢獲得支持對應協議(NVME或SCSI)的一個Port ID的列表,和一個Discovery Service(NVMe over Fabrics情況);
(6)使用Type 0x28和FC-4 Feature Bits 0x04發起的GID_FF查詢,交換機給的CT_IU中,返回的所有每一個Port ID:
- i)NVMe層初始一個會話
- 1)初始化NVMe_Port確保與FC target端NVMe_Port有一個login。
- i)發送PLOGI;
- ii)使用type為0x28發送PRLI;
- 2)FC-NVMe層創建一個association和發起一個Admin Queue connection:
- i)發送Create Association NVMe_LS到Discovery Service subsystem。
- 3)NVMe層下發一個NVMe over Fabrics的Connection命令(這是新創建傳輸層的Admin Queue connection)。此Connection命令用於創建Admin Queue。
- 4)NVMe層可以通過傳輸層Admin Queue連接,請求更多的NVMe over Fabrics命令。
- 5)對於NVMe Discovery Service,無I/O隊列。
- 6)NVMe層下發Get Log Page命令,Log ID設置為0x70,從Discovery Service讀取Discovery Log Entries。
- 7)NVMe層可以繼續與Discovery Service交互也可以終止。
- i)發送NVMe_Disconnect LS到Discovery Service將終止association關聯關系。
- ii)target端收到此LS回應此LS response。
- iii)傳輸層相關所有連接終止。
- iv)如果initiator NVMe_Port與target NVMe_Port無其他association關聯了,則login可以終止(發送 LOGO到target)。
- 1)初始化NVMe_Port確保與FC target端NVMe_Port有一個login。
(7)向Name Server下發GID_FF查詢,Domain_ID Scope和Area_ID Scope字段都設置為0,FC-4 Feature Bits字段設置為0x01,Type字段設置為0x28。此查詢獲得一個支持NVMeoFC協議的Port ID列表,以及所支持的NVMe over Fabrics Target Port Function。
(8)運行期間,如果NVMe選擇與某NVMe subsystem通信,NVMe層使用FC-NVMe層建立與NVM subsystem的會話:
- i)。。。vii) 此處連接與前邊過程類似,只是比連接Discovery Service多了創建I/O隊列的connect(略)。
(9)Initiator端可以中止association。
1.2 點對點連接(無交換機的情況)
(1)N_Port_Name大者發起PLOGI;
(2)initiator端發起PRLI(如果NVMe_Port則設置Type為0x28);
(3)如果target端不支持(PRLI未成功)則通信停止。
(4)如果target端支持,並返回標識所支持特性的Feature位。
(5)運行期間,NVMe層可以選擇更多的通信。(其他步驟略)
附圖: