公开/公告号CN102281263A
专利类型发明专利
公开/公告日2011-12-14
原文格式PDF
申请/专利权人 杭州华三通信技术有限公司;
申请/专利号CN201010208336.9
发明设计人 陈乾业;
申请日2010-06-13
分类号H04L29/06(20060101);
代理机构11018 北京德琦知识产权代理有限公司;
代理人谢安昆;宋志强
地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地
入库时间 2023-12-18 04:04:27
法律状态公告日
法律状态信息
法律状态
2017-05-03
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/06 变更前: 变更后: 申请日:20100613
专利权人的姓名或者名称、地址的变更
2014-10-22
授权
授权
2012-03-07
实质审查的生效 IPC(主分类):H04L29/06 申请日:20100613
实质审查的生效
2011-12-14
公开
公开
技术领域
本发明涉及网络通信技术领域,特别涉及一种建立iSCSI会话的方法和 iSCSI发起方。
背景技术
Internet小型计算机系统接口(iSCSI)是一种基于TCP/IP的传输协议, 在客户端和存储系统之间采用TCP/IP封装并可靠的传输SCSI命令,一个 iSCSI协议的典型应用环境如图1所示。在客户端设置iSCSI发起方 (Initiator),在存储系统设置iSCSI目标方(Target),iSCSI发起方和iSCSI 目标方之间首先建立TCP连接,然后在TCP连接上建立iSCSI会话(Session), SCSI报文交互是在TCP连接上建立的iSCSI会话上进行的。其中,在iSCSI 协议中规定的iSCSI会话有两种:发现会话(Discovery Session)和普通会话 (Normal Session),Discovery Session用于iSCSI发起方发现iSCSI目标方, Normal Session用于iSCSI发起方和iSCSI目标方之间处理SCSI命令与数据, 这两种会话的建立过程是相同的。
在现有技术中,建立iSCSI会话之前首先要针对该iSCSI会话建立TCP 连接,之后该iSCSI会话独占这些TCP连接,也就是说,每次建立iSCSI会 话时都需要建立TCP连接,不同的iSCSI会话需要占用不同的TCP连接。
然而,由于一个iSCSI会话常常需要独占一个或多个TCP连接,当iSCSI 发起方需要同iSCSI目标方建立多个iSCSI会话时,就需要建立很多TCP连 接,iSCSI会话的数据越大,TCP连接的数目也相应越大。这样,TCP/IP的 网络数据传输需要占用大量的带宽和主机CPU资源,导致服务器的大部分资 源都用于处理TCP连接。另外,iSCSI发起方与存储系统之间的物理链路只 有有限条,这些有限条物理链路被大量TCP连接占用,容易导致链路拥塞, 影响传输效率。
发明内容
本发明提供了一种建立iSCSI会话的方法和装置,以便于节约带宽和主 机CPU资源。
一种建立iSCSI会话的方法,该方法包括:
A、iSCSI发起方建立与iSCSI目标方的iSCSI会话时,判断当前所述iSCSI 发起方与iSCSI目标方之间是否存在用于iSCSI会话的传输控制协议TCP连接, 如果是,执行步骤B;如果否,执行步骤C;
B、在已经存在的用于iSCSI会话的TCP连接上建立iSCSI会话,结束流程;
C、iSCSI发起方进行iSCSI发起方到iSCSI目标方的等价路径探测;
D、在探测到的等价路径上分别建立用于iSCSI会话的TCP连接;
E、在步骤D建立的TCP连接上建立iSCSI会话。
一种iSCSI发起方,该iSCSI发起方包括:iSCSI会话建立单元、连接判断 单元、路径探测单元和连接建立单元;
所述iSCSI会话建立单元,用于在建立所述iSCSI发起方与iSCSI目标方的 iSCSI会话时,向所述连接判断单元发送判断通知;接收到第一建立通知后,在 已经存在的用于iSCSI会话的传输控制协议TCP连接上建立iSCSI会话;接收 到第二建立通知后,在所述连接建立单元建立的TCP连接上建立iSCSI会话;
所述连接判断单元,用于接收到所述判断通知后,判断当前所述iSCSI发起 方与iSCSI目标方之间是否存在用于iSCSI会话的TCP连接,如果否,向所述 路径探测单元发送探测通知,如果是,向所述iSCSI会话建立单元发送第一建立 通知;
所述路径探测单元,用于接收到探测通知后,进行所述iSCSI发起方到所述 iSCSI目标方的等价路径探测;
所述连接建立单元,用于在所述路径探测单元探测到的等价路径上分别建立 用于iSCSI会话的TCP连接,向所述iSCSI会话建立单元发送第二建立通知。
由以上技术方案可以看出,本发明中iSCSI发起方在建立iSCSI会话时, 如果已经存在用于iSCSI会话的TCP连接,则在已经存在的TCP连接上建 立iSCSI会话,如果尚未存在用于iSCSI会话的TCP连接,则通过等价路径 探测过程,在探测到的等价路径上建立用于iSCSI会话的TCP连接,在建立 的TCP连接上建立iSCSI会话。即所有iSCSI会话通过共享同一组TCP连接 的方式,减少iSCSI会话占用的TCP连接,从而充分利用网络带宽,节约主 机因维护TCP连接而占用的主机CPU资源。另外,用于iSCSI会话的TCP 连接数量的减少节约了物理链路,减少了物理链路的拥塞现象,提高传输效 率。
附图说明
图1为iSCSI协议的典型应用环境示意图;
图2为本发明提供的主要方法流程图;
图3为本发明实施例提供的详细方法流程图;
图4为本发明实施例提供的建立iSCSI会话的流程图;
图5为本发明实施例提供的等价路径探测流程图;
图6为本发明实施例提供的一个组网示意图;
图7为本发明提供的iSCSI发起方的结构示意图;
图8为现有技术和本发明中各层的关系示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体 实施例对本发明进行详细描述。
本发明提供的主要方法如图2所示,可以包括以下步骤:
步骤201:iSCSI发起方建立iSCSI会话时,判断当前是否存在用于iSCSI 会话的TCP连接,如果是,执行步骤202;否则,执行步骤203。
步骤202:在已经存在的用于iSCSI会话的TCP连接上建立iSCSI会话, 结束流程。
步骤203:iSCSI发起方进行iSCSI发起方到iSCSI目标方的等价路径探 测;
步骤204:在探测到的等价路径上分别建立用于iSCSI会话的TCP连接。
步骤205:在建立的TCP连接上建立iSCSI会话。
下面结合具体实施例对上述方法进行详细描述。图3为本发明实施例提 供的详细方法流程图,如图3所示,该方法可以包括以下步骤:
步骤301:iSCSI发起方建立iSCSI会话时,判断当前是否存在用于iSCSI 会话的TCP连接,如果否,执行步骤302;如果是,执行步骤306。
本步骤中,iSCSI发起方在建立iSCSI会话之前,首先判断是否已经存 在共享的TCP连接可用于建立iSCSI会话,如果已经存在,则将要建立的 iSCSI会话直接建立在已经存在的用于iSCSI会话的TCP连接上,即执行步 骤306,而不必重新建立独占的TCP连接。如果不存在,则执行步骤302。
步骤302:iSCSI发起方选择一个业务端口与iSCSI目标方建立一条TCP 连接,并在该TCP连接上建立iSCSI会话。
在本发明中,如果不存在用于iSCSI会话的TCP连接,可以直接开始等 价路径探测过程,并在探测到的等价路径上建立用于iSCSI会话的TCP连接, 然后在TCP连接上建立iSCSI会话。但更优地,为了保证iSCSI会话能够及 时建立,在本发明初始建立iSCSI会话时,iSCSI发起方可以按照步骤302 中所述,首先选择一个业务端口与iSCSI目标方建立一条TCP连接,从而保 证iSCSI会话的运行。在iSCSI会话运行期间,可以在后台同时执行以下步 骤,即进行等价路径探测和TCP连接组建立的过程。
其中,上述选择的业务端口可以是预设的业务端口,也可以是当前未被 使用的任一业务端口。在选择该业务端口时,可以同时预留该业务端口之后 的N-1个业务端口用于后续TCP连接的建立。N为预设的最大等价路径数目, 该N的值可以根据具体的网络结构设定,也可以设置为一个经验值。
在建立TCP连接后,iSCSI发起方会在本地建立和维护一个TCP连接信 息表,该TCP连接信息表的表项内容可以如表1所示,包括:连接标识(CID)、 源端口号、目的端口号、延时信息和连接状态。
表1
在TCP连接上建立iSCSI会话的过程在后续进行详细描述。
步骤303:iSCSI发起方进行到iSCSI目标方所在存储设备的等价路径探 测。
具体等价路径的探测过程将在后续进行具体描述。
步骤304:iSCSI发起方在探测到的M条等价路径中除了在步骤302已 经建立TCP连接的路径之外的其他路径上分别与iSCSI目标方建立TCP连 接。
TCP连接的具体建立过程在后续进行详细描述。
在建立了用于iSCSI会话的TCP连接后,将各TCP连接的信息记录在 TCP连接信息表中,并为各TCP连接分配CID,可以如表2所示。
表2
在表1和表2中所示的延时信息和连接状态的确定方式本发明并不做限 定,可以由连接状态检测模块采用现有方式确定。iSCSI发起方根据连接状 态检测模块检测出的路径延时和连接状态对上述TCP连接信息表进行维护。
步骤305:将运行的iSCSI会话添加建立在步骤304建立的M条TCP连 接上,结束流程。
步骤306:在用于iSCSI会话的TCP连接上建立iSCSI会话,结束流程。
其中,上述步骤302、步骤305和步骤306中在TCP连接上建立iSCSI 会话的过程可以如图4所示,包括以下步骤:
步骤401:iSCSI发起方通过建立的TCP连接向iSCSI目标方发送会话 建立(Login)请求,其中该Login请求的CID字段中携带该TCP连接的CID 值。
另外,可以在该Login请求的预留字段中标识该iSCSI会话使用已有的 TCP连接。
与现有技术相同,Login请求中还会包含请求建立的iSCSI会话标识 (SID)。
步骤402:iSCSI目标方接收到Login请求后,在本地将SID与CID进 行绑定,回复会话建立响应(Login Response)。
iSCSI目标方如果确定该Login请求的预留字段中标识该iSCSI会话使用 已有的TCP连接,则从Login请求中获取携带的SID和CID,将SID与已有 的CID进行绑定。
步骤403:iSCSI发起方接收到Login Response后,将TCP连接信息表 中的CID与建立的iSCSI会话的SID进行绑定,用于在该CID标识的TCP 连接上进行绑定的SID标识的iSCSI会话。
至此,该TCP连接上的iSCSI会话的建立过程结束。在后续步骤305和 306中,会出现在多个TCP连接上建立iSCSI会话,此时,仅需要逐一针对 多个TCP连接执行图4所示的步骤,将多个TCP连接的CID分别与要建立 的iSCSI会话的SID进行绑定。
上述步骤303中,具体的等价路径探测过程可以如图5所示,主要包括 以下步骤:
步骤501:iSCSI发起方从预先指定的N个路径探测端口分别发送目的 端口为存储设备的不可达端口的UDP报文,其中设置该UDP报文的TTL为 1。
本步骤中指定的N个路径探测端口可以是iSCSI发起方所在网络设备上 没有被使用的一系列端口,例如端口30000+1、端口30000+2、......、端口 30000+N。
该UDP报文在网络中传输时,iSCSI发起方的下一跳路由器接收到该 UDP报文后,由于TTL值为1,将UDP报文丢弃,并向iSCSI发起方返回 ICMP超时报文。
在后续其他TTL值的UDP报文传输中,路由器接收到该UDP报文后, 如果该TTL值不为1,则将TTL的值减1后继续转发给下一跳,如果TTL 值为1,则返回ICMP超时报文。如果存储设备接收到该UDP报文,则返回 ICMP端口不可达报文。假设存储设备的不可达端口为35000,则UDP报文 的目的端口为35000,只有存储设备接收到该UDP报文后会返回ICMP端口 不可达报文。
步骤502:iSCSI发起方判断接收到的是ICMP超时报文还是ICMP端口 不可达报文,如果接收到ICMP超时报文,执行步骤503;如果接收到的是 ICMP端口不可达报文,则执行步骤505。
步骤503:根据ICMP超时报文的源地址和接收该ICMP超时报文的路 径探测端口,记录该路径探测端口对应的ICMP超时报文的返回路径。
步骤504:iSCSI发起方从接收到该IGMP超时报文的路径探测端口发送 目的端口为存储设备的不可达端口的UDP报文,该UDP报文携带加1后的 TTL值,转至步骤502。
另外,在本步骤中,iSCSI发起方将TTL值加1后,可以判断该TTL值 是否达到预设的探测路由最大跳数(MaxHops),如果是,则结束接收到该 IGMP超时报文的路径探测端口的UDP报文发送;否则继续从接收到该IGMP 超时报文的路径探测端口发送UDP报文。
步骤505:根据ICMP端口不可达报文的源地址和接收该ICMP端口不 可达报文的路径探测端口,记录该路径探测端口对应的IGMP端口不可达报 文的返回路径,结束该路径探测端口的UDP报文发送。
待所有路径探测端口结束UDP报文发送后,将记录的各路径进行相同 路径合并,确定出等价路径。
上述针对各路径探测端口的检测过程可以同时执行,也可以逐一执行。 即可以同时从各路径探测端口发送UDP报文进行等价路径检测,也可以逐一 从各路径探测端口发送UDP报文,在结束一个路径探测端口的UDP报文发 送后开始下一路径探测端口的UDP报文发送。
图5所示上述流程的原理主要是:路由器根据UDP报文的源地址、源 端口、目的地址和目的端口在不同路径上转发,因此,同一源端口号的报文 始终走同一条路径,通过不断增加TTL的值,便可以获知从iSCSI发起方到 存储设备的各路径。举一个例子,如图6所示,预设最大等价路径数目N为 8,存储设备的不可达端口为35000,假设iSCSI发起方从端口30001、端口 30002、端口30003、......、端口30008八个端口发送UDP报文。
以其中的端口30001为例。iSCSI发起方从端口30001发送目的端口为 35000、TTL为1的UDP报文,到达路由器A后,路由器A返回源地址为路 由器A地址的ICMP超时报文。iSCSI发起方记录端口30001的下一跳为路 由器A,即路径为:主机H-路由器A。
iSCSI发起方再从端口30001发送目的端口为35000、TTL为2的UDP 报文,到达路由器C后,路由器C返回源地址为路由器C地址的ICMP超时 报文。iSCSI发起方记录端口30001的路径为:主机H-路由器A-路由器C。
iSCSI发起方从端口30001发送目的端口为35000、TTL为3的UDP报 文,到达路由器G后,路由器G返回源地址为路由器G地址的ICMP超时 报文。iSCSI发起方记录端口30001的路径为:主机H-路由器A-路由器C- 路由器G。
iSCSI发起方从端口30001发送目的端口为35000、TTL为4的UDP报 文,到达存储设备S后,存储设备S返回源地址为存储设备S地址的ICMP 端口不可达报文。iSCSI发起方记录端口30001的路径为:主机H-路由器A- 路由器C-路由器G-存储设备S。至此iSCSI发起方停止从端口30001发送 UDP报文。
同样,从其他路径探测端口也会探测出到达存储设备的路径,将各端口 探测出的相同的路径进行合并,并确定探测出的等价路径。假设探测出的等 价路径为M条,M≤N。将探测出的M条等价路径的信息记录在路径信息表 中,如表3所示,每个表项可以包含:路径编号、路径经由设备和路径状态。
表3
通过图3所示的流程,不同的iSCSI会话可以共享同一组TCP连接,且 一个iSCSI会话可以建立在一个或两个以上TCP连接上。如果一个iSCSI会 话建立在两个以上TCP连接上,则iSCSI发起方可以针对该iSCSI会话在两 个以上TCP连接上进行流量均衡。
其中,流量均衡策略可以基于各TCP连接的延时状况,或者基于各TCP 连接的业务量状况,或者延时状况和业务量状况的组合,也可以结合其他参 考因素。例如,可以根据L=T×a1+R×a2+W×a3确定各TCP连接的流量 均衡权重值L,其中,T为TCP连接的延时,R为该TCP连接的读业务量, W为该TCP连接的写业务量,a1、a2和a3分别是延时、读业务和写业务的 权重值。根据确定的各TCP连接的流量均衡权重值来分配TCP连接的iSCSI 会话流量,流量均衡权重值较大可以给该TCP连接分配较少的iSCSI会话流 量,流量均衡权重值较小可以给该TCP连接分配较多的iSCSI会话流量。
如果iSCSI会话所在的其中一条路径出现故障,即路径信息表中该路径 状态从激活(Active)转换为故障(Failed),则在该路径上的TCP连接的 连接状态也随之转换为Failed。此时,可以重新进行iSCSI发起方到存储设 备的等价路径探测,如果本次等价路径探测结果相对于之前的等价路径探测 结果(即路径信息表中的等价路径)出现新增路径,则在新增的路径上建立 TCP连接,将该TCP连接加入用于iSCSI会话的TCP连接,并将该TCP连 接的信息记录在TCP连接信息表中。iSCSI发起方会将Failed状态的TCP连 接上的iSCSI会话切换到新增的TCP连接上,该切换机制是iSCSI协议中已 有的机制,不再具体赘述。
以上是对本发明所提供的方法进行的详细描述,下面对本发明所提供的 iSCSI发起方进行详细描述。图7为本发明提供的iSCSI发起方的结构示意图, 如图7所示,该iSCSI发起方包括:iSCSI会话建立单元700、连接判断单元710、 路径探测单元720和连接建立单元730。
iSCSI会话建立单元700,用于在建立iSCSI发起方与iSCSI目标方的iSCSI 会话时,向连接判断单元710发送判断通知;接收到第一建立通知后,在已经 存在的用于iSCSI会话的TCP连接上建立iSCSI会话;接收到第二建立通知后, 在连接建立单元730建立的TCP连接上建立iSCSI会话。
连接判断单元710,用于接收到判断通知后,判断当前iSCSI发起方与iSCSI 目标方之间是否存在用于iSCSI会话的TCP连接,如果否,向路径探测单元720 发送探测通知,如果是,向iSCSI会话建立单元700发送第一建立通知。
路径探测单元720,用于接收到探测通知后,进行iSCSI发起方到iSCSI目 标方的等价路径探测。
连接建立单元730,用于在路径探测单元720探测到的等价路径上分别建立 用于iSCSI会话的TCP连接,向iSCSI会话建立单元700发送第二建立通知。
另外,连接判断单元710,还可以用于在判断的结果为否时,向连接建立单 元730发送初始建立通知。
连接建立单元730,还用于接收到初始建立通知后,选择一个业务端口与 iSCSI目标方建立一条TCP连接,向iSCSI会话建立单元700发送第三建立通知。
iSCSI会话建立单元700,还用于接收到第三建立通知时,在连接建立单元 730建立的一条TCP连接上建立iSCSI会话。
在上述实现中,连接建立单元730除了选择的一个业务端口之外预留N-1 个业务端口;在路径探测单元720探测到的等价路径上分别建立用于iSCSI会话 的TCP连接时,使用预留的N-1个业务端口中的M-1个业务端口。
其中N为预设的最大等价路径数目,M为路径探测单元探测到的等价路径 数目,M≤N。
其中,上述连接建立单元730建立用于iSCSI会话的TCP连接后,将建立 的TCP连接的信息记录在TCP连接信息表中。TCP连接的信息可以包括:为 TCP连接分配的连接标识CID、TCP连接的源端口号、目的端口号、延时信息 和连接状态。
具体地,iSCSI会话建立单元700可以包括:预处理子单元701、请求发送 子单元702和会话绑定子单元703。
预处理子单元701,用于在建立iSCSI发起方与iSCSI目标方的iSCSI会话 时,向连接判断单元710发送判断通知。
请求发送子单元702,用于接收到第一建立通知或第二建立通知后,通过已 经建立的用于iSCSI会话的TCP连接向iSCSI目标方发送会话建立Login请求, 其中该Login请求携带TCP连接的CID以及请求建立的iSCSI会话的标识SID。
会话绑定子单元703,用于接收到iSCSI目标方回复的Login Response后, 在本地将CID与SID进行绑定,用于在该CID所标识的TCP连接上进行与该 CID绑定的SID所标识的iSCSI会话。
更进一步地,路径探测单元720可以具体包括:路径探测子单元721和路径 处理子单元722。
其中,路径探测子单元721包括:端口探测模块7211、报文收发模块7212、 TTL值设置模块7213和路径记录模块7214。
端口探测模块7211,用于对预先指定的N个路径探测端口分别进行处理, 将处理到的当前路径探测端口信息提供给报文收发模块7212,并触发报文收发 模块7212发送UDP报文。
报文收发模块7212,用于受到触发后,从当前路径探测端口发送目的端口 为iSCSI目标方所在存储设备的不可达端口的UDP报文;从当前路径探测端口 接收IGMP超时报文或IGMP端口不可达报文。
TTL值设置模块7213,用于在报文收发模块7212从当前路径探测端口初始 发送UDP报文时,将该UDP报文的TLL值设置为1,之后报文收发模块7212 每从当前路径探测端口发送一次UDP报文,将UDP报文的TTL值加1。
路径记录模块7214,用于在报文收发模块7212接收到IGMP超时报文时, 根据IGMP超时报文的源地址,记录当前路径探测端口对应的IGMP超时报文 的返回路径,触发报文收发模块7212发送UDP报文;在报文收发模块7212接 收到IGMP端口不可达报文时,根据IGMP端口不可达报文的源地址,记录当 前路径探测端口对应的IGMP端口不可达报文的返回路径,触发报文收发模块 7212结束从当前路径探测端口发送UDP报文。
路径处理子单元722,用于待报文收发模块7212结束所有路径探测端口的 UDP报文发送后,将路径记录模块7214记录的各路径进行相同路径合并,确定 出等价路径。
更优地,该iSCSI发起方还可以包括:流量均衡单元740,用于在iSCSI会 话建立在两个以上TCP连接上时,根据两个以上TCP连接的延时状况和/或业 务量状况,针对该iSCSI会话在两个以上TCP连接上进行流量均衡。
更进一步地,该iSCSI发起方还可以包括:会话维护单元750,用于当其中 一条用于iSCSI会话的TCP连接出现故障时,向路径探测单元720发送探测通 知;如果路径探测单元720的探测结果中出现新增路径,则触发连接建立单元 730在新增路径上建立TCP连接,并将出现故障的TCP连接上的iSCSI会话切 换到在新增路径上建立的TCP连接上。
由以上描述可以看出,本发明中iSCSI发起方在建立iSCSI会话时,如 果已经存在用于iSCSI会话的TCP连接,则在已经存在的TCP连接上建立 iSCSI会话,如果尚未存在用于iSCSI会话的TCP连接,则通过等价路径探 测过程,在探测到的等价路径上建立用于iSCSI会话的TCP连接,在建立的 TCP连接上建立iSCSI会话。即所有iSCSI会话通过共享同一组TCP连接的 方式,减少iSCSI会话占用的TCP连接,从而节约网络带宽和主机因维护 TCP连接而占用的主机CPU资源。另外,用于iSCSI会话的TCP连接数量 的减少节约了物理链路,减少了物理链路的拥塞现象,提高传输效率。
图8为现有技术和本发明所提供的方法对应的各层的关系示意图,其中 (a)为现有技术的各层关系示意图,不同的iSCSI会话占用不同的TCP连 接组,(b)为本发明的各层关系示意图,所有的iSCSI会话共享同一组TCP 连接。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明保护的范围之内。
机译: ISCSI会话,ISCSI主机设备和用于ISCSI发起程序的配置程序的TCP连接数控制方法
机译: iSCSI会话,iSCSI主机设备的TCP连接号控制方法以及iSCSI发起程序的构成程序
机译: 协议转换系统,协议转换器,iSCSI代理和iSCSI会话配置方法