说一说iSCSI 流量控制与超时重发

iscsi 流量控制与超时重发服务器网卡
流量控制是指发送方控制发送数据帧到网络的速率。发送方发送的速率般是传送路径上的交换机、路由器或接收方可用的缓冲区大小的函数。iscsi则采用tcp/lp协议的端到端的流量控制机制,以可变发送窗口的方式进行流量控制。发送窗口在连接建立时由双方面定,但在通信过程中,接收方可根据自己的资源使用情况,随时动态地调整自已的接收窗口(可增大或减小),然后告诉对方,使发送方的发送窗口和自己的接收窗口一致。
iscsi采用的是tcp的自适应超时重发算法,可根据网络的情况动态调整。这种算法记录每一个报文段发出的时间以及收到相应的确认报文段的时间,这两个时间之差就是报文段的往返时延rtt,当发送个数据段时,启动相应的定时器,如果定时器超时确认报文段还没有到达,就触发数据配发机制。如果超时之前得到确认,就记录新的往返时延,将各个报文段的往返时延样本进行加权平均得到新的报文段的平均往返时延rtt,显然定时器设置的重发时间应大于平均的往返时延rtt。在实际应用中,rtt的算法还很复杂,目前一般采用的是karm算法。
33 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目标端加入到网络中的时候,拓扑结构也随之改变。虽然这种方法增加了实现的复杂性,但它不需要重新配置发起端即可找到新的目标端。
4 fc 与iscsi协议的比较
本文主要从下面几个方面对两个协议进行比较
41 流量控制机制对网络的适应性
fc采用基于信用的流量控制机制,当接受者有足够的缓存接受发信者的数据时,接受者把credit(信用度)分配给发信者。它根据发送者的请求分配credit,仅当发送者没有用完它的credit时,它才可以发送数据。在manwan中,发送者必须要等待很长时间来获得接受者的确认消息(以向网络发送新的数据)。这种基于信任的流量控制机制降低了网络的利用率。
iscsi是基于窗口的发送机制,由于发送方可以根据网络的拥塞情况动态地调整发送速率,因此iscsi的流量控制机制对网络的适应性更好,尤其在网络传输延迟较大的网络中。
42 超时重发机制的灵活性
在tcp/ip协议中,tcp使用自适应重传算法以适应互连网络时延的变化。它的要点是:tcp监视每一条连接的性能,并计算出报文的往返时间rtt(round trip time)。当连接的性能变化时,tcp随即修改rtt(也就是说它能自动适应时延的变化)。rtt(round trip time)被发送方用来决定是否重传报文。而fibre channe]使用的是静态的超时重发机制,不会根据网络的情况动态地加以改变,因此发送方可能过早或过迟地出现超时,这对改善网络的综合性能不利。相对而言,iscsi可以动态地自适应于网络的当的情况,可以改善网络的综合性能,从这个角度看,iscsi应该优于fibre channel,更加适合目前的网络情况
43 cpu对数据封装的负担大小
在存储环境中,发出的块i/0请求的大小一般介于4k到64k之间。以8k的块i/0请求为例,已经知道在iscsi中以太网帧的大小是15k,在fc中,fc的帧大小是2k。因此8k的块io请求必须被分成多个小的段,以适应不同的传输帧大小。在fc中,分段和重组操作是在网卡中实现的,因此减轻了主机cpu的负担。对于iscsi协议,由于分段与重装是有cpu来完成的,因此增加了cpu的负担。44 是否能保证数据安全传送
在安全性方面,因为iscsi的一个设计标准是它在不受信任的广域环境中的使用,iscsi规范允许使用多种安全方法。位于iscsi层下的加密方案(例如,ipsec),不需要在iscsi端设备之间进行协商,它们对于高层应用程序来说是透明的。对于其他的认证实现(如,kerberos或者公钥私钥的交换),iscsi登录过程为两个端设备协商两者都支持的安全类型提供了文本字段。如果协商成功,iscsi设备之间的pdu交换将由所使用的安全程序根据适当的安全确认需求而被格式化。isns(internet storage name server)服务器也可以协助此过程(如作为公钥的仓库)。
光纤通道是工作在第二层的协议,原本并没有建立相应的安全机制以及安全通用协议,只不过是基于逻辑上的数据通道绑定。文章部分资料来自于csdn博客:fc协议与iscis协议详解 作者:sinovocorp