1.一种基于NTB硬件和SCSI通信协议的通信方法,其特征在于,包括:
步骤S101:发送端接收上层应用的SCSI命令;
步骤S102:所述发送端将所述SCSI命令打包成第一NTB数据包;
步骤S103:NTB将所述第一NTB数据包拷贝至接收端;
步骤S104:所述接收端对接收到的所述第一NTB数据包进行解包,得到所述SCSI命令,并依据所述SCSI命令进行相应的响应,并将响应信息打包成第二NTB数据包;
步骤S105:NTB将所述第二NTB数据包拷贝至所述发送端;
步骤S106:所述发送端对所述第二NTB数据包进行解包,得到所述响应信息,并依据所述响应信息进行相应的响应,实现通信。
2.如权利要求1所述的通信方法,其特征在于,当所述SCSI命令为读命令时,所述SCSI命令包括待读数据的偏移和长度,则所述依据所述SCSI命令进行相应的响应,并将响应信息打包成第二NTB数据包的过程具体为:
所述接收端依据所述SCSI命令获取待读数据,并将所述待读数据打包成第二NTB数据包;
则所述发送端对所述第二NTB数据包进行解包,得到所述响应信息,并依据所述响应信息进行相应的响应的过程具体为:
所述发送端接对接收到的所述第二NTB数据包进行解包,得到所述SCSI所需的待读数据。
3.如权利要求2所述的通信方法,其特征在于,该方法还包括:
所述接收端依据所述SCSI命令获取待读数据,并将所述待读数据以及第一反馈信息打包成第二NTB数据包,其中,所述第一反馈信息包括所述待读数据的长度。
4.如权利要求1所述的通信方法,其特征在于,当所述SCSI命令为写命令时,所述SCSI命令包括待写数据的偏移和长度,则步骤S101与步骤S102之间还包括:
所述发送端准备要写入的待写数据;
则所述依据所述SCSI命令进行相应的响应,并将响应信息打包成第二NTB数据包的过程具体为:
所述接收端依据所述SCSI命令为所述待写数据分配缓冲区,分配完成后准备反馈SCSI命令,并将所述反馈SCSI命令打包成第二NTB数据;
则所述发送端对所述第二NTB数据包进行解包,得到所述响应信息,并依据所述响应信息进行相应的响应的过程具体为:
所述发送端对所述第二NTB数据包进行解包,得到所述反馈SCSI命令后,将所述待写数据打包成第三NTB数据包,以便所述NTB将所述第三NTB数据包拷贝至接收端以及所述接收端对接收到的所述第三NTB数据包解包,得到所述待写数据,并将所述待写数据存储至所述缓冲区。
5.如权利要求4所述的通信方法,其特征在于,所述接收端对接收到的所述第三NTB数据包解包,得到所述待写数据,并将所述待写数据存储至所述缓冲区后,该方法还包括:
所述接收端将第二反馈信息打包成第四NTB数据包,其中,所述第二反馈信息包括所述待写数据的长度;
所述NTB将所述第四NTB数据包拷贝至所述发送端;
所述发送端对所述第四NTB数据包解包,得到所述第二反馈信息。
6.如权利要求1所述的通信方法,其特征在于,步骤S101之前还包括:
所述发送端初始化所述SCSI命令。
7.如权利要求1-6任一项所述的通信方法,其特征在于,所述NTB通过CPU采用内存拷贝的方式来拷贝NTB数据包。