iSCSI协议结构算法
如同任何一个协议同样,iSCSI也有一个清晰的层次结构,根据OSI模型,iSCSI的协议栈自顶向下一共能够分为五层,如图所示:网络
SCSI层:根据应用发出的请求创建SCSI CDB(命令描述块),并传给iSCSI层;同时接受来自iSCSI层的CDB,并向应用返回数据。并发
.iSCSI层:对SCSI CDB进行封装,以便可以在基于TCP/IP协议的网络上进行传输,完成SCSI到TCP/IP的协议映射。这一层是iSCSI协议的核心层。 函数
.TCP层:提供端到端的透明可靠传输。性能
.IP层:对IP报文进行路由和转发。 代理
.Link层:提供点到点的无差错传输ip
3.2 iSCSI 流量控制与超时重发资源
流量控制是指发送方控制发送数据帧到网络的速率。发送方发送的速率—般是传送路径上的交换机、路由器或接收方可用的缓冲区大小的函数。iSCSI则采用 TCP/lP协议的端到端的流量控制机制,以可变发送窗口的方式进行流量控制。发送窗口在链接创建时由双方面定,但在通讯过程当中,接收方可根据本身的资源 使用状况,随时动态地调整自已的接收窗口(可增大或减少),而后告诉对方,使发送方的发送窗口和本身的接收窗口一致。路由
iSCSI采用的是TCP的自适应超时重发算法,可根据网络的状况动态调整。这种算法记录每个报文段发出的时间以及收到相应的确认报文段的时间,这两个 时间之差就是报文段的往返时延RTT,当发送—个数据段时,启动相应的定时器,若是定时器超时确认报文段尚未到达,就触发数据配发机制。若是超时以前得 到确认,就记录新的往返时延,将各个报文段的往返时延样本进行加权平均获得新的报文段的平均往返时延RTT,显然定时器设置的重发时间应大于平均的往返时 延RTT。在实际应用中,RTT的算法还很复杂,目前通常采用的是Karm算法。get
3.3 iSCSI发现机制
iSCSI发起端为了和iSCSI目标端创建iSCSI会话,iSCSI须要知道ISCSI目标端的IP地址,TCP端口号和名字三个信息。iSCSI发现的目的是为了让iSCSI发起端获取一条到iSCSI目标端的通路。iSCSI有三种发现机制:
⑴ 静态配置:在iSCSI发起端已经知道iSCSI目标端的IP地址TCP端口号和名字信息时,iSCSI发起端不须要执行发现。iSCSI发起端直接经过 IP地址和TCP端口来创建TCP链接,使用iSCSI目标端的名字来创建iSCSI会话。这种发现机制比较适合比较小的iSCSI体系结构
⑵ SendTarget发现:在iSCSI发起端知道iSCSI目标端的IP地址和TCP端口的状况下,iSCSI使用IP地址和TCP端口号创建TCP连 接后创建发现对话。iSCSI发起端发送SendTarget命令查询网络中的存在的iSCSI信息。这种方法主要用于网关设备,iSCSI发起端被静态 配置链接到指定的iSCSI设备。iSCSI发起端和iSCSI网关设备创建对话并发送SendTarget请求给iSCSI网关设备。iSCSI网关设 备返回一系列和它相连的ISCSI目标端的信息。iSCSI发起端选择一个目标端来创建对话。
⑶ 零配置发现:这种机制用于iSCSI发送设备彻底不知道ISCSI目标端的信息的状况下。iSCSI发起端利用现有的IP网络协议SLP(Service Location Protocol for Discovery,服务定位协议)。iSCSI目标端使用SLP来注册,iSCSI发起端能够经过查询SLP代理来得到注册的iSCSI目标端的信息。 当iSCSI目标端加入到网络中的时候,拓扑结构也随之改变。虽然这种方法增长了实现的复杂性,但它不须要从新配置发起端便可找到新的目标端。
流量控制机制对网络的适应性
iSCSI是基于窗口的发送机制,因为发送方能够根据网络的拥塞状况动态地调整发送速率,所以iSCSI的流量控制机制对网络的适应性更好,尤为在网络传输延迟较大的网络中。
超时重发机制的灵活性
在TCP/IP协议中,TCP使用自适应重传算法以适应互连网络时延的变化。它的要点是:TCP监视每一条链接的性能,并计算出报文的往返时间 RTT(Round Trip Time)。当链接的性能变化时,TCP随即修改RTT(也就是说它能自动适应时延的变化)。RTT(Round Trip Time)被发送方用来决定是否重传报文。