区域访问控制表项维护方法及装置
技术领域
本发明涉及光纤通道(FC,Fiber Channel)技术领域,尤其涉及光纤通道网络架构(Fabric)网络中的区域(Zone)访问控制表项维护方法及装置。
背景技术
FC协议是存储网络中应用最广泛的一种协议,目的是提供比以太网和传输控制协议(TCP,Transmission Control Protocol)/因特网协议(IP,Internet Protocol)更高速、高效的大数据传输性能。
FC协议中,虚拟存储区域网络(VSAN,Virtual Storage Area Network)的划分实现了将一个物理连通的存储网络分割成多个逻辑上的虚拟存储网络。每个VSAN相互隔离,并独立提供服务,增强了网络的适应性、安全性,使其能够为用户提供更有效的服务。对VSAN内的N端口成员进一步划分区域(Zone),使不同Zone内的成员相互隔离,达到访问控制的目的。用户可以灵活的在VSAN内部任意建立Zone,并可以在Zone内根据不同目的添加任意N端口成员。一个设备可以同时属于多个Zone。在Zone中可以使用N端口的全球唯一名字(WWN,World Wide Name)、光纤通道标识(FCID,Fiber Channel Identification)等对成员进行标识。
图1为现有的Zone应用组网示意图,如图1所示,一个VSAN包括3台服务器(Server)和3个磁盘阵列(Disk),它们共同接入一个Fabric网络中,将该VSAN划分为3个Zone。其中:
Zone 1包括Server 1、Disk 1;
Zone 2包括Server 2、Disk 1、Disk 2、Disk 3;
Zone 3包括Server 3、Disk 3。
从配置上看:一个Zone可以包括多个N端口成员;而一个特定的N端口成员也可以属于多个Zone,如Disk 1、Disk 3;
从访问权限看:Server 2可以访问所有磁盘,而Server 1只能访问Disk 1,同样Server 3只能访问Disk 3。
按照协议规定,Zone数据库是按照Zone集合(Set)、Zone、Zone成员(member)三级基本对象进行组织的。Zone Set对象是Zone对象的集合;Zonemember对象是指Zone内的N端口成员。图2给出了现有的Zone数据结构示意图,如图2所示,每个VSAN内可以配置多个Zone Set对象,每个Zone Set对象内可以包括多个Zone对象,同样每个Zone对象可以包括多个Zone member对象。为了配置方便,Zone成员配置还支持使用别名,即Zone Alias对象,别名相当于一个Zone member对象的集合,可以将其作为一个整体使用。
虽然每个VSAN内可以配置多个Zone Set,但只有一个可以激活,称为激活(Active)Zone Set,即最终N端口成员的访问控制都在Active Zone Set内进行匹配。Active Zone Set需要通过命令显式在本地设备上激活,再通过扩散报文向整个Fabric网络进行同步,使其在全网范围内保持一致。
Fabric网络中的交换机会针对当前已登录的N端口节点,生成硬件驱动访问控制表项;这样,后续对于Zone成员之间的交互报文不需要上CPU(Central Processing Unit,中央处理单元)进行软件转发的过滤处理,可以直接按硬件驱动访问控制表项匹配和转发,最大效率利用硬件资源。
目前实际组网应用中,有两种最典型的Zone配置:1、创建一个Zone并添加所有成员,再将Zone加入Zone Set并激活,称为多对多配置;2、以每两个成员为一组,创建一个Zone,再将所有Zone加入Zone Set并激活,称为一对一配置。两种典型配置最终都会生成N到N的节点硬件驱动访问控制表项(N为当前Zone成员规模)。图3为现有的Fabric网络中的访问控制示意图,如图3,每一条连线都对应正反两条需要下发硬件驱动的访问控制表项。
在实际组网应用中,N端口节点向交换机登录后会进行名字服务注册。名字服务注册信息的其中两项内容:FC-4类型(Type)信息和FC-4特征(Feature)信息,分别表示当前节点所支持的FC-4上层协议类型,以及该协议类型对应的协议特征。一般服务器和网卡在向交换机登录后都会注册名字服务支持光纤通道协议(FCP,Fiber Channel Protocol)这种FC-4协议,表示支持FC协议族特性,同时会注册FCP的FC-4 Feature值,服务器一般注册Feature为Initiator,标识自己为访问发起者;存储设备一般注册为Target,标识自己为访问对象。
对于部分设备来说,即使节点不会自己注册FCP的Feature消息,交换机也能主动向设备发起探测,获取FCP Feature值并保存。因此FCP Feature可以比较可靠地作为Fabric网络中区分设备是服务器等访问发起者还是磁盘存储等访问对象的依据。
发明内容
本发明提供Zone访问控制表项维护方法及装置,以减少下发到硬件驱动中的访问控制表项。
本发明的技术方案是这样实现的:
一种区域Zone配置和访问控制表项维护方法,该方法包括:
光纤通道网络架构Fabric网络中的交换机发现一个区域集合Zone Set被激活;
所述交换机接收任一N端口节点发来的名字服务注册消息,从该消息中读取该节点的特征值,若该值为访问发起者Initiator,则查询激活Zone Set内的所有访问对象Target,将该Initiator与查询到的每个Target分别构建成一个Zone,将新构建的所有Zone加入激活Zone Set;若该值为Target,则查询本Zone Set内的所有Initiator,将该Target与查询到的每个Initiator分别构建成一个Zone,将新构建的所有Zone加入激活Zone Set;
所述交换机针对新构建的每个Zone分别生成访问控制表项,将表项下发到硬件驱动。
所述方法进一步包括:
当所述交换机发现一个N端口节点从Fabric网络中退出时,将该节点对应的所有访问控制表项从硬件驱动中删除。
所述交换机将该节点对应的所有访问控制表项从硬件驱动中删除的同时进一步包括:
所述交换机将该节点对应的所有Zone配置删除。
所述方法进一步包括:
当所述交换机发现一个Zone被删除时,删除硬件驱动中该Zone对应的访问控制表项。
一种Fabric网络中的Zone访问控制表项维护装置,该装置包括:
Zone创建模块:发现一个Zone Set被激活,接收任一N端口节点发来的名字服务注册消息,从该消息中读取该节点的特征值,若该值为Initiator,则查询激活Zone Set内的所有Target,将该Initiator与查询到的每个Target分别构建成一个Zone,将新构建的所有Zone加入激活Zone Set;若该值为Target,则查询本Zone Set内的所有Initiator,将该Target与查询到的每个Initiator分别构建成一个Zone,将新构建的所有Zone加入激活Zone Set;
访问控制表项维护模块:针对新构建的每个Zone分别生成访问控制表项,将表项下发到硬件驱动。
所述访问控制表项维护模块进一步用于,当发现一个N端口节点从Fabric网络中退出时,将该节点对应的所有访问控制表项从硬件驱动中删除。
所述访问控制表项维护模块进一步用于,当将该节点对应的所有访问控制表项从硬件驱动中删除的同时,将该节点对应的所有Zone配置删除。
所述访问控制表项维护模块进一步用于,当发现一个Zone被删除时,删除硬件驱动中该Zone对应的访问控制表项。
所述装置位于Fabric网络中的交换机上。
可见,本发明可以大大减少下发到硬件驱动中的访问控制表项,节省底层硬件资源。
附图说明
图1为现有的Zone应用组网示意图;
图2为现有的Zone数据结构示意图;
图3为现有的Fabric网络中的访问控制示意图;
图4为本发明实施例提供的Zone配置和Zone控制表项的维护方法流程图;
图5为采用本发明后Fabric网络中的访问控制示意图;
图6为本发明实施例提供的Zone控制表项维护装置的组成示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
发明人对现有的Zone配置及Zone访问控制表项的生成及维护方法进行分析,发现其缺点如下:
一、底层硬件表项太多,占用硬件资源较多
在现有方案中,任意两个成员都存在硬件驱动访问控制表项,导致大量的硬件表项被占用,使得Zone访问控制方案的可用性受到硬件限制比较大,当设备底层硬件规格较小时,Zone支持的成员规格也被严重制约。
二、可扩展性不强,Zone管理精细度欠缺
现有方案中,使用Zone的多对多配置时,所有Zone成员被添加进入一个Zone,虽然配置比较单一,但可扩展性和管理精细度都不足。后续如果想改变Zone成员之间的访问关系,特别是想对现有成员加上新的访问限制时,现有Zone已无法支持,只能手动删除Zone成员再将其添加到新Zone,扩展性和可操作性较差。
三、配置极度复杂
现有方案中,使用Zone的一对一配置时,每两个成员需要配置一个Zone,这样节点之间的访问规则是比较严密的,用户也可以手动通过控制激活哪些Zone组成的Zone Set来实现按需的访问控制。但与此同时带来了管理成本和复杂度急剧上升的问题,每两个成员需要配置一个Zone导致当前网络管理员需要创建大量的Zone,并且手动将成员按需分对,添加到Zone中。当登录节点很多,Zone成员数量规格巨大时,对于网络管理员的工作产生巨大的难度,并且十分容易出现人为配置错误的情况。
同时,目前的方案中,当节点已经从Fabric网络离线时,底层硬件驱动访问控制表项会随之删除,但是本地的Zone配置是不会动态删除的,相当于一直存在一条已经无用的Zone成员配置。也增加了配置的复杂性。
同时,发明人发现,对于图3所示的Fabric网络的典型组网来说,在实际应用中,一般访问交互仅发生在服务器和存储设备之间,通常情况下,服务器和服务器之间或者存储设备和存储设备之间其实是不存在访问需求的。交换机可以从节点名字服务注册信息的FCP Feature一项获取当前节点的类型信息,即只有Initiator和Target之间存在互相访问的需求,需要添加Zone的允许访问规则,而Initiator相互之间或是Target相互之间是不需要添加Zone访问规则的。
因此基于此,发明人提出一种方案:只在Initiator和Target之间自动生成Zone配置和硬件驱动访问控制表项,从而从实际角度最节省地进行Zone配置,极大地降低硬件资源消耗和Zone管理复杂度。
图4为本发明实施例提供的Zone配置和Zone控制表项的维护方法流程图,如图4所示,其具体步骤如下:
步骤401:用户在Fabric网络中的交换机上输入Zone Set名字,并激活该Zone Set。
在实际应用中,也可以在交换机上设置一个默认的智能匹配Zone Set,用户可以选择激活该Zone Set。
当一个Zone Set被激活后,此后生成的Zone都默认为该Zone Set的Zone成员。
步骤402:N端口节点登录交换机后,向交换机发出名字服务注册消息,该消息中携带FC-4 Type信息和FC-4 Feature信息,其中,FC-4 Feature信息为Initiator或者Target,以表示本节点为Initiator还是Target。
步骤403:交换机接收该名字服务注册消息,从该消息中读取FC-4Feature信息,判断为Initiator还是Target,若为Initiator,执行步骤404;若为Target,执行步骤405。
步骤404:交换机查询本地Active Zone Set中所有N端口节点的FC-4Feature信息,获得所有的Target,将该Initiator与查询到的每个Target构建成一个Zone,针对每个Zone生成对应的Zone配置,转至步骤406。
Zone配置的内容包括:该Zone内的成员信息。该Zone自动加入步骤401中激活的Zone Set。
步骤405:交换机查询本地Active Zone Set中所有N端口节点的FC-4Feature信息,获得所有的Initiator,将该Target与查询到的每个Initiator构建成一个Zone,针对每个Zone生成对应的Zone配置。
该Zone自动加入步骤401中激活的Zone Set。
步骤406:交换机将新构建的每个Zone的访问控制表项下发到硬件驱动中。
本步骤中,Zone的控制表项中的访问规则包括:本Zone内的两个成员之间允许访问,本Zone内的成员与非本Zone内的成员之间禁止访问,等等。例如:Zone的成员包括:Initiator A和Target B,则该Zone的控制表项包括:A、B之间允许访问,若还存在其他Zone,则该Zone的控制表项还包括:A与其他Zone内的成员之间禁止访问,B与其他Zone内的成员之间禁止访问。
步骤407:当交换机发现一个N端口节点从Fabric网络中退出时,将该节点对应的所有Zone的访问控制表项从硬件驱动中删除,同时将该节点对应的所有Zone配置删除。
本步骤可以保证交换机上存在的Zone配置都是生效配置,不会存在多余的无用配置,保证当前Zone配置直接有效。
另外,用户也可以根据需要,动态调整Zone Set中的Zone。例如:当想要新增节点访问规则时,例如限制并非所有服务器都能访问所有存储设备时,只要删除对应成对的服务器和存储设备所在的Zone配置即可,当交换机感知到一个Zone配置被删除时,删除硬件驱动中对应的访问控制表项。
从图4所示流程可以看出,只在Initiator与Target之间创建Zone,而Initiator之间、或者Target之间不创建Zone也不向硬件驱动下发访问控制表项。
图5为采用本发明后Fabric网络中的访问控制示意图,如图5所示,与图3相比,节省了大量的访问控制表项。以图3和图5组网为例进行对比,具体如下表所示。
表1 现有方案与本发明方案的比较分析
如表1所示,基于现有组网,完成一对一配置,每个服务器和存储设备之间创建Zone、添加Zone成员,需要三次操作,完成多对多配置,创建Zone需要一次操作,每个服务器和存储设备添加Zone成员各需要一次操作;当新增一个存储设备或服务器时,如果是一对一配置,需要三次操作,如果是多对多配置需要一次配置。而使用本发明方案时,创建Zone、添加Zone成员都是自动完成。
对于底层硬件驱动访问控制表项来说,本发明方案相比现有方案也节省很多。总计仅为现有方案的四分之一左右,且每次新增节点时新增的表项只有现有方案的一半。
图6为本发明实施例提供的Fabric网络中的Zone访问控制表项维护装置的组成示意图,如图6所示,其主要包括:Zone创建模块61和访问控制表项维护模块62,其中:
Zone创建模块61:发现一个Zone Set被激活,接收任一N端口节点发来的名字服务注册消息,从该消息中读取该节点的FC-Feature值,若该值为Initiator,则查询激活Zone Set内的所有Target,将该Initiator与查询到的每个Target分别构建成一个Zone,针对每个Zone生成对应的Zone配置,将新构建的所有Zone加入激活Zone Set;若该值为Target,则查询本Zone Set内的所有Initiator,将该Target与查询到的每个Initiator分别构建成一个Zone,针对每个Zone生成对应的Zone配置,将新构建的所有Zone加入激活ZoneSet。
访问控制表项维护模块62:针对Zone创建模块61新构建的每个Zone分别生成访问控制表项,将表项下发到硬件驱动。
访问控制表项维护模块62进一步用于,当发现一个N端口节点从Fabric网络中退出时,将该节点对应的所有访问控制表项从硬件驱动中删除,同时,将该节点对应的所有Zone配置删除。
访问控制表项维护模块62进一步用于,当发现一个Zone被删除时,删除硬件驱动中该Zone对应的访问控制表项。
图6所示装置可位于Fabric网络中的交换机上。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。