FC连接过程(较简略)
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层可以选择更多的通信。(其他步骤略)
附图: