免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5907 | 回复: 4
打印 上一主题 下一主题

[存储网络] iSCSI协议一致性测试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 09:55 |只看该作者 |倒序浏览
iSCSI协议一致性测试
ITC

2009-12-15



Table of Contents
SCSI和iSCSI协议
iSCSI一致性测试
iSCSI一致性测试的常见类型
iSCSI一致性测试工具的要求
现有的iSCSI一致性测试工具

iSCSI是流行的SAN(Storage area network)协议。本文简单介绍了iSCSI协议一致 性测试,以及相关的测试工具。

SCSI和iSCSI协议

SCSI(Small Computer System Interface)是用于与I/O设备,尤其是存储设备进行交互的协议簇。SCSI客户端,即“initiator”,向服务器端(即“target”)的逻辑单元发送 SCSI命令以请求服务。“SCSI transport”将SCSI协议的客户端-服务器端映射到特定的互联系统。Initiator是SCSI transport的一端,target是另一端。
iSCSI(Internet Small Computer System Interface)协议使用TCP/IP作为SCSI transport。通过在TCP/IP上传输SCSI数据包,iSCSI提供了一种可互操作的解决方案,它利用了现有的Internet基础设施和管理工具,并且突破了距离限制。与需要专用线缆的传统光纤不同,iSCI可以在现有的网络系统上运行。由于其可扩展性和经济效益,iSCSI已经成为流行的 SAN(Storage area network)协议。iSCSI在IETF RFC 3720 iSCSI中定义,并在IETF RFC 5048 iSCSI Corrections and Clarifications RFC中更新。

iSCSI一致性测试

在iSCSI协议中,SCSI的传输层从传统的可靠总线移到了不可靠的TCP/IP网络。这一变化同时也导致相当程度的复杂性被引入了iSCSI协议:

  • 需要Login/Logout过程。
  • 在Login过程中需要协商Security/Operational参数。
  • Login过程可能使用CHAP或其它认证方法。
  • 可能需要多session/connection。
  • 可以实现多个错误恢复级别。
  • ...

由此可见,尽管iSCSI的经济效益优于传统协议,其协议本身仍比较复杂。

从协议批准时起,iSCSI逐渐获得了终端用户和存储厂商的接受。现在市场上已经有了众多的iSCSI initiator/target实现,这些实现在功能上和协议一致性上都有所区别。

一致性测试可以帮助我们衡量一个系统是否符合特定的标准。它通常由第三方组织(有时是标准化组织自身)执行,从而保证更大程度的兼容性。通过测试的产品则可以宣称自己符合特定的标准,并得到了第三方组织的认证。对于iSCSI协议(或者其他数据网络和存储协议),新罕布什尔大学互操作实验室(The University of New Hampshire InterOperability Laboratory,UNH-IOL)是一个主要的中立第三方实验室,它提供iSCSI一致性测试的测试套件。

以下摘自UNH-IOL的iSCSI一致性测试套件:

这些测试是用来衡量一个iSCSI产品是否符合IETF RFC 3720 iSCSIIETF RFC 5048 iSCSI Corrections and Clarifications RFC的规定。通过套件中的所有测试并不保证被测设备能够与其它iSCSI产品成功地互操作。但是有了IOL的测试基础,这些测试在一定程度上保证了被测设备在很多iSCSI环境中可以正常运转。


iSCSI一致性测试主要包含以下方面:
  • Login Phase一致性
    • 测试协商的key-value对
    • 测试各种标志:CSG, NSG, C bit, T bit
    • ...
  • Full Feature Phase一致性
    • 测试序号(CmdSN, DataSN, R2TSN)
    • 测试SCSI Command/Response, Task Management Function Request/Response, Text Request/Response, NOP-In/NOP-Out, SNACK Request
    • ...
  • CHAP一致性
    • 测试CHAP字段: CHAP_A, CHAP_C, CHAP_I, CHAP_N, CHAP_R
  • 多连接一致性
    • 测试连接建立、断开、参数协商、序号和任务管理的多连接支持
  • 错误恢复一致性
    • 测试Initiator/Target的错误恢复支持



iSCSI一致性测试的常见类型


为了衡量被测设备是否遵循iSCSI协议,我们主要做以下两种测试:
  • 做正确的事情,观察被测设备的行为是否正常。 这时的主要任务是向被测设备发送一系列正确的iSCSI PDU,并验证被测设备回应了正确的PDU及字段。
  • 做错误的事情,观察被测设备是否能检测到错误并做相应处理。 这时,我们必须修改发送给被测设备的PDU序列(如修改命令的CmdSN、设置错误的data digest...),并验证被测设备是否能根据协议作出反应(如发送Reject PDU、断开连接...)。


iSCSI一致性测试中常见的几个方面如下:
  • iSCSI功能测试 测试一个iSCSI任务是否能正确执行(Task Management Function, NOP-In/NOP-Out Ping, multiple connections management...)。
  • PDU格式错误 例如,如果iSCSI Command PDU中的W位和F位同时被置位就是一个错误。
  • PDU session/stage错误 例如,在login stage或discovery session中出现了一个SCSI Command PDU就是一个错误。
  • Header/Data digest错误 Digest错误会导致Target/Initiator发送Reject/SNACK PDU。
  • 序号错误 CmdSN/StatSN/DataSN/R2T,这些序号都有不同的作用范围和规则。
  • 协商错误 Text参数的格式为key=value,后接一个空(“0x00”)结束符。每个text参数都有自己的有效阶段和协商规则。例如,FirstBurstLength不能超过MaxBurstLength,SendTargets只能在Full Feature Phase出现,等等。
  • 数据长度错误 发送的数据长度太大或太小。
  • PDU丢失 丢掉一个incoming PDU然后发送SNACK请求,或者丢掉一个outgoing PDU然后重发。


上述的大部分情况可以通过修改外发PDU的内容来实现。例如,要模拟一个data digest错误,我们只需修改PDU的DataDigest字段。


iSCSI一致性测试工具的要求

iSCSI一致性测试工具可以看成是iSCSI Initiator模拟器(用来测试iSCSI Target),或是iSCSI Target模拟器(用来测试iSCSI Initiator)。好的iSCSI一致性测试工具应当符合以下要求:


  • 可执行的测试脚本
    每个测试用例需要一个可执行的测试脚本。它应当根据测试用例描述编写,测试用例描述定义了PDU序列和检查点。
  • iSCSI Engine核心
    iSCSI Engine核心负责与被测设备间iSCSI PDU的发送与接收。一方面,它从测试脚本接受输入,发送PDU或验证检查点;另一方面,它应当在一定程度上理解iSCSI协议,从而实现必要的自动化。例如iSCSI PDU(协商阶段的Login/Text Request、Nop-Out ping response)及字段(ITT、TTT、CmdSN、data、digest...)的自动生成。
  • PDU格式合法性验证
    对于接收到的PDU,iSCSI Engine核心应当进行合法性验证以发现格式错误的PDU。
  • 可以修改PDU的内容
    我们一般通过向被测设备发送修改过的PDU来模拟PDU格式错误。
  • 可以丢弃PDU
    可以通过丢弃PDU来模拟传输中丢失的PDU。
  • 可以维护多session/connection。
    与错误恢复相似,多sesion/connection是iSCSI协议的高级部分。
  • 测试结果与日志
    测试用例执行成功或失败应当有明确的指示。分析执行过程需要详细的log。如果有图形界面来分析PDU记录文件就更好了。
  • 批处理系统
    批处理系统用来管理测试套件和测试用例,从而大量的测试脚本可以在无人干预的情况下自动运行。

现有的iSCSI一致性测试工具

以下列出的iSCSI一致性测试工具可以在Internet上搜索到:
  • UNH-IOL 测试服务
    iSCSI联盟提供服务从交互性和一致性两方面测试iSCSI产品和软件。需要成为其成员以使用最新的测试设备和IOL测试工具。
  • iSWAT
    iSWAT测试方案是IP存储网络程序员的iSCSI协议测试和分析工具。它是市场上首款综合各种专业功能的软件,提供了单一且功能强大的测试环境。
    这款商业软件的特点如下:
    • iSCSI数据流的生成与监控
    • Initiator和Target测试模块
    • 错误注入命令和报告生成
    • 内置的iSCSI错误检测和自动恢复
    • SCSI驱动的target以及target模拟
    • 包含许多示例脚本
    • 交互式与脚本驱动测试模式
    • 实现了SCSI和iSCSI命令集

  • iSCT
    iSCT是一个强大的iSCSI Initiator模拟器,用来测试iSCSI target的一致性。该软件用Python实现,包含与UNH-IOL相似的测试套件,可以自动运行所有测试用例的批处理系统,以及模拟 WireShark界面的GUI协议分析器。该工具的优点:
    • 跨平台,因为用Python实现
    • 图形界面内置测试模式
    • 被测设备自动检测与配置
    • 内置图形协议分析器
    • 详尽的测试报告

  • iSCSISim
    iSCSISim是一个通用的开源iSCSI target测试工具。完全用Python实现,该工具的功能包括SCSI Command插入、错误注入、和恢复测试、内置的测试结果验证。该工具还支持命令序列和任务管理,并可以通过代理方法模拟connection丢失。

论坛徽章:
0
2 [报告]
发表于 2009-12-30 11:20 |只看该作者
这么底层 这么专业 看不太懂

论坛徽章:
0
3 [报告]
发表于 2009-12-30 12:55 |只看该作者
好文章,很全面。
请问LZ可以转载么?

论坛徽章:
0
4 [报告]
发表于 2009-12-30 14:12 |只看该作者

回复 #3 tubocurarine 的帖子

Hi tubocurarine, 欢迎转载,谢谢。

论坛徽章:
0
5 [报告]
发表于 2010-01-05 00:12 |只看该作者
好贴,收藏
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP