存储开关流量带宽控制的制作方法

文档序号:7634965阅读:593来源:国知局
专利名称:存储开关流量带宽控制的制作方法
相关申请交叉引用下述申请被交叉引用并通过引用将其全部内容组合于本说明书中2002年1月18日申请的、题为“用于存储区域网络的存储开关”的美国专利申请10/051,321;2002年1月18日申请的、题为“提高存储网络的服务质量”的美国专利申请10/051,339;2002年1月18日申请的、题为“存储区域网络中的负载均衡”的美国专利申请10/051,053。
发明
背景技术
领域本发明涉及存储开关中的带宽控制。
背景技术
存储区域网络(SAN)在近些年非常盛行。SAN由存储网络工业协会(SNIA)定义为其主要目的是在计算机系统和存储元件之间及存储元件与存储元件之间传输数据的网络。存储区域网络(SAN)高速专用网络(或子网络),其使不同种类的数据存储设备与代表较大用户网络的相关数据服务器互连。与如使用SCSI连接将存储设备直接连到服务器不同,与用常规接口如以太网(例如NAS系统)将存储设备添加到LAN中不同,SAN实质上形成独立的网络,其不趋于具有与其直连SCSI和NAS对应物一样的带宽限制,并增加可配置性和可扩缩性。
在SAN环境中,存储设备(如磁带机和RAID阵列)及服务器通常经不同的开关和设备互连。到开关和设备的连接通常为光纤管路。这种结构通常使SAN上的任何服务器均可与任何存储设备通信,反之亦然。其还提供另外的从服务器到存储设备的路径。换言之,如果特定服务器很慢或完全不可用,SAN上的另一服务器可提供对存储设备的存取。SAN还使可镜像数据,制作多份可用拷贝,因而在数据可用性方面提供更高的可靠性。当需要更多的存储器时,另外的存储设备可被添加到SAN中,而无须连接到特殊的服务器;而是,新设备可被简单地添加到存储网络并可从任何点进行存取。
当典型的SAN设备执行某些交换时,由于有大量的服务器(多于3个)并由于每一设备有多个端口(通常2个或4个),需要单独的开关将许多服务器连到多个设备。然而,典型的开关几乎没有内置智能并仅转发数据给所选设备。
未决专利申请10/051,321公开了一种设备,其通过引入存储开关而解决了许多使用SAN所存在的问题。开关能够在启动器和目标器之间发送数据,而无须像先前SAN中使用的设备那样要求缓冲数据。例如,相较典型的网络开关,一些存储开关可没有引起更多等待时间的发送数据包。启动器和目标器之间的这样的无缓冲数据传送必须由执行互连的开关可靠且有效地处理。存储开关的一个例子可在2002年1月18日申请的、题为“存储系统中的虚拟化”的美国专利申请10/051,396中找到。
启动器通常连到开关并通过开关访问一个或多个虚拟的和物理的目标器。通过开关连接引起的一个问题是端口上的带宽过载。由于在SAN中数据损耗是不可接受的,因此必须在部件上提供相对于虚拟目标器的带宽管理。

发明内容
概略地说,本发明属于用在保存和存取数据的系统中的方法。该系统包括至少一启动器、至少一目标器、及至少一具有端口的开关。该方法包括步骤确定在物理端口是否出现拥塞;及基于每一目标器的最小和最大带宽设置控制所述至少两个目标器中的每一目标器的带宽使用。
另一方面,控制步骤包括拒绝另外的从启动器到两个目标器中至少之一的指令。
在另一实施例中,本发明是用在保存和存取数据的系统中的方法。该系统包括至少一启动器、至少两个目标器、及至少一具有端口的开关。在该实施例中,所述方法包括监视从所述至少两个目标器中的每一个到端口的流量带宽;根据每一目标器的最小和最大带宽设置确定哪一目标器可以使用端口资源;及在确定步骤的基础上通过拒绝给目标器的附加指令而控制对所述目标器的访问。
另一方面,确定步骤包括根据来自所述至少两个目标器中的每一个的流量的加权向每一目标器赋予优先级。另外,赋予加权步骤包括使用两种速率、三种颜色标记标识流量。
在另一实施例中,本发明是用在保存和存取数据的系统中的方法。该系统包括至少一启动器、至少一目标器、至少一虚拟逻辑单元、至少一物理逻辑单元、及至少一具有端口的开关,端口通过开关访问每一物理逻辑单元。在该实施例中,所述方法包括监视因来自相关物理逻辑单元的流量而由所述至少两个虚拟目标器中的每一个耗用的带宽;根据从虚拟目标器返回的流量加权确定哪一目标器可以使用端口资源;及根据目标器的加权通过拒绝给目标器的附加指令而限制对所述虚拟目标器的访问。
另一方面,确定步骤包括为每一虚拟目标器记录争用计数。
在另一实施例中,本发明是具有至少一物理端口的存储开关,物理端口提供对至少一目标器的访问。该开关包括与端口联系的负载平衡电路,其包括保存每一目标器的记录的存储器,所述记录包括虚拟逻辑单元的最小和最大带宽分配;该开关还包括与端口联系的处理电路,其包括用于所述至少两个目标器中的每一个的带宽监视器,处理电路维护每一目标器使用的带宽的加权记录,且如果物理端口拥塞,根据记录拒绝给至少一目标器的附加指令。
在另一实施例中,本发明是存储网络。存储网络包括启动器、至少一目标器和开关。开关包括连到启动器的至少一端口,该开关提供对目标器的访问,该开关包括至少一与端口相关联的处理器,其具有包括所述至少两个目标器中的每一个的带宽分配的记录。处理器包括用于指示处理器进行下述工作的代码监视所述至少两个目标器中的每一个耗用的带宽、根据从目标器返回给端口的流量加权确定哪一目标器可以使用端口资源、及根据目标器加权通过拒绝给目标器的附加指令而控制对所述目标器的访问。
另一方面,本发明是监视存储开关中的带宽的方法,开关包括至少一物理端口,经该物理端口连接至少一目标器和至少一启动器。所述方法包括步骤确定物理端口上是否出现拥塞;根据每一目标器的最小和最大带宽设置对启动器和目标器之间的带宽使用赋予加权。
本发明可使用硬件、软件、或硬件和软件的结合实现。用于本发明的软件保存在一个或多个处理器可读存储介质上,包括硬盘驱动器、CD-ROM、DVD、光盘、软盘、磁带机、RAM、ROM或其它适当的存储设备。在另一实施例中,部分或所有软件可用专用硬件代替,包括常规集成电路、门阵列、FPGA、PLD、及专用计算机。
本发明的这些及其它目标和优点从下面结合附图提出的本发明的优选实施例的描述中变得更清楚。


图1为根据一实施例的存储开关的一般原理框图;图2a-2c为存储区域网络的一般原理框图,其示出了虚拟目标器的示例性提供;图3为根据一实施例的存储开关的一般原理框图;图4为根据一实施例的用于存储开关中的线路卡的一般原理框图;图5为根据本发明实施例的步骤的流程图;
图6a为图示具有多个虚拟逻辑单元的存储区域网络经存储开关上的单一物理端口与启动器通信的框图;图6b为图示本发明的计量系统的类似于图6a的原理框图;图7a为图示本发明的一般实施方式的流程图;图7b为根据本发明的第一方法控制开关内的带宽的流程图;图8为图示包括特殊方法的第二实施例的流程图,其用于确定本发明系统中的节流控制。
具体实施例方式
图1所示为包括根据一实施例的存储开关的示例性系统100。系统100包括多个启动设备如服务器102。应该意识到的是,可以使用更多或更少的服务器,且除了服务器102之外或用以代替服务器102,实施例可包括任何适当的物理启动器。尽管没有示出,服务器还可连到LAN。如图所示,每一服务器102被连到存储开关104。然而,在其它实施例中,每一服务器102可连到比所呈现的所有存储开关104少的存储开关。尽管在一实施例中,连接是光纤通路或吉比特以太网(根据iSCSI协议携载信息包),在服务器和开关之间形成的连接可使用任何协议。其它实施例可使用Intel公司定义的Infiniband协议或其它协议或连接。
在一些实施例中,一个或多个开关104中的每一个连到城域网(MAN)或宽域网(WAN)108,如因特网。在大多数实施例中,存储开关104和WAN108之间形成的连接通常使用因特网协议(IP)。尽管在图中示出为直接连到MAN/WAN108,其它实施例可使用路由器(未示出)作为开关104和MAN/WAN108之间的媒介。
另外,各自的管理站110连到每一存储开关104、每一服务器102、和每一存储设备106。尽管管理站被图示为不同的计算机,应该理解的是,管理每一类设备的软件可全部都在同一计算机上。
这样的存储开关104,除了其开关功能以外,还可提供虚拟化和存储服务(如镜像)。这样的服务可包括那些通常由传统体系结构中的设备提供的服务。
此外,根据本发明实施例的存储开关的智能被分布给每一开关端口。这种分布式智能虑及系统可扩缩性和可用性。分布式智能使根据实施例的开关能够以“网速”处理数据,也就是说,与典型的网络开关相比,存储开关104不会引起更多的数据包等待时间。因此,该开关的“网速”通过连接到特定端口进行测量。因而,在一具有OC-48连接的实施例中,存储开关可跟上OC-48速度(2.5位每毫微秒)。以OC-48速度移动的两千字节信息包(10位每字节)仅需8毫秒即可输入开关。一千字节的信息包仅需4毫秒。100字节的最小信息包仅需400毫微秒。
不同存储区域网络包括图1所示的网络的更多信息可在下述专利申请中找到2002年1月18日申请的、题为“存储系统中的虚拟化”的美国专利申请10/051,396;2002年1月18日申请的、题为“用于存储区域网络的存储开关”的美国专利申请10/051,321。
“虚拟化”通常指将用户预订的虚拟目标器空间映射到一个或多个物理存储目标器设备上的空间。术语“虚拟的”和“虚拟目标器”源于下述事实每一预订分配的存储空间可在连到存储开关104的一个或多个物理存储目标器设备上的任何地方。物理空间可被提供为“虚拟目标器”,其可包括一个或多个“逻辑单元”(LU),在此也被称为“虚拟逻辑单元”(VLU)。每一虚拟目标器由用一个或多个LU号(LUN)标识的一个或多个LU组成,LU频繁使用于iSCSI和FC协议中。每一逻辑单元通常由一个或多个盘区组成,盘区即为物理设备上的存储空间的连续片。因而,虚拟目标器可占用整个存储设备(一个盘区)、单一存储设备的一部分(一个或多个盘区)、或多个存储设备的一部分(多个盘区)。物理设备、LU、盘区数量、及它们的准确位置对订户而言均是非实质的和不可见的。
存储空间可来自多个不同的物理设备,在不同的实施例中,每一虚拟目标器可属于一个或多个“池”,在此有时称为“域”。在一实施例中,只有同一域的用户才被允许共享他们域中的虚拟目标器。还可形成域系,其包括几个域作为成员。使用域系可使多个域的用户的管理容易,例如,如果一个公司具有五个域但选择停止服务,只需采取一个行动即可停用整个域系。域系的成员也可以是其它域的成员。
图2a-2c示出了在存储区域网络中提供虚拟目标器的一个例子。图2的系统包括三个物理设备1061、1062和1063,总共具有六个LU-LU1、LU2、LU3、LU4、LU5、LU6。在图2a中,每一物理设备连到开关并放置在可由两个启动器X和Y存取的池中,即“X-Y用户池”。
如果启动器X和启动器Y中的每一个均要求一个虚拟目标器,则在一实施例中,提供LU以形成虚拟目标器VT1和VT2,其中VT1包括盘区LU1-3,VT2包括盘区LU4-6,如图2b所示。VT1被放置在服务器X用户域中,VT2放在服务器Y用户域中。启动器X将可以使用VT1,但不能使用VT2;同理,启动器Y可使用VT2,但不可使用VT1。
例如,如果启动器Y要求具有所有6个LU的镜像虚拟目标器M,则VT1和VT2可被生成为虚拟目标器M的组成部分。VT1和VT2可被放在开关的非域中(物理目标器不可由用户直接访问的域),同时M可被使得可由Y存取,如图2c所示。作为M的组成部分,VT1和VT2将不可被单独存取。VT1由LU1-3组成(物理设备1061),VT2由LU4-6组成(物理设备1062和1063)。当接收到向虚拟目标器M写数据的请求时,开关104将发送输入数据给VT1(物理设备1061)和VT2(物理设备1062和/或1063),因而在至少两个物理位置保存数据。
图3所示为根据本发明实施例的存储开关104的原理框图。关于存储开关如存储开关104及其运行的详细情况的更多信息可在2002年1月18申请的、题为“用于存储区域网络的存储开关”的美国专利申请10/051,321中找到。在一实施例中,存储开关104包括多个线路卡302、304和306、多个矩阵卡(fabric card)308、和两个系统控制卡310,每一卡均将在下面详细描述。尽管示出了示例性的存储开关,应该意识到的是,根据不同的实施例,也可使用多种其它实施方式和构造。
系统控制卡。两个系统控制卡(SCC)310中的每一个连到每一线路卡302、304、306。在一实施例中,这样的连接由I2C信号形成,其在本领域是公知的,并通过以太网与SCC连接。SCC控制加电并监视各个线路卡及矩阵卡和I2C连接。在以太网连接上使用卡间通信,SCC还启动各个存储设备如快照和复制。
此外,SCC维护数据库312,其跟踪存储开关及连接到开关的虚拟目标器和物理设备如服务器和存储设备的配置信息。另外,数据库保留关于使用、错误及存取数据的信息以及关于虚拟目标器和用户的不同域及域系的信息。数据库的记录在此可被称为“对象”。每一启动器(如服务器)和目标器(如存储设备)具有全球唯一标识符(WWUI),其在本领域中是公知的。数据库被保存在SCC内的存储设备中,在一实施例中,所述存储设备由闪存构成,尽管在各个实施例中也可使用其它存储设备。
存储开关104可由管理站110通过SCC310使用以太网连接到达。因而,SCC还包括另外的以太网端口以用于连接到管理站。管理站的管理员可发现存储设备或虚拟目标器的添加或去除,以及查询和虚拟地更新保存在SCC数据库312中的任何对象。
矩阵卡。在开关104的一实施例中,有三个矩阵卡308,尽管其它实施例可具有更多或更少的矩阵卡。在一实施例中,每一矩阵卡308连到线路卡302、304、306中的每一个并用于将所有线路卡连在一起。在一实施例中,当所有线路卡均被填充时,每一矩阵卡308可处理最大流量。在一实施例中,由每一线路卡处理的这样的流量负载高达160Gbps,尽管其它实施例可处理更高或更低的最大流量。如果一个矩阵卡308失效,其余两个卡依然具有足够的带宽用于最大可能开关流量在一实施例中,每一线路卡产生20Gbps的流量,10Gbps输入和10Gbps输出。然而,在正常情况下,所有三个矩阵卡同时使用。数据流量将从每一线路卡发送给三个矩阵卡中可容纳该数据的任一矩阵卡。
线路卡。线路卡构成到服务器和存储设备的连接。在一实施例中,存储开关104支持高达16个线路卡,尽管其它实施例可支持不同数量的线路卡。另外,在一实施例中,使用了三种不同类型的线路卡吉比特以太网(GigE)卡302、光纤通路(FC)卡304、和WAN卡306。其它实施例可包括更多或更少类型的线路卡。GigE卡302用于以太网连接,在一实施例中连接到或iSCSI服务器或iSCSI存储设备(或其它基于以太网的设备)。FC卡304用于光纤通路连接,连接到或光纤通路协议(FCP)服务器或FCP存储设备。WAN卡306用于连到MAN或WAN。
图4所示为用于根据一实施例的存储开关104中的一般线路卡400的原理框图。线路卡400仅为示例的目的进行呈现。根据各实施例,也可使用其它线路卡和设计。图中示出了所有类型的线路卡如GigE302、FC304或WAN306均具有的那些元件。在其它实施例中,可使用其它类型的线路卡使用其它协议如Infiniband连接到设备。
端口。每一线路卡400包括多个端口402。端口构成线路卡连接到或服务器或存储设备的连接。在图示的实施例中示出了8个端口,但在其它实施例中可使用更多或更少的端口。例如,在一实施例中,每一GigE卡可支持高达8个1Gb以太网端口,每一FC卡可支持高达或8个1Gb FC端口或4个2Gb FC端口,每一WAN卡可支持高达4个0C-48端口或两个OC-192端口。因此,在一实施例中,最大可能连接为128个端口每开关104。在一实施例中,每一线路卡的端口均为全双工通信制,并连接到或服务器或其它客户和/或连到存储设备或子系统。
此外,每一端口具有相关联的存储器403。尽管只示出了一个存储设备连到一个端口,应该理解的是,每一端口可具有其自己的存储设备,或者所有端口均被连接到同一存储设备。在此示出只有一个存储设备连接到一个端口是为了清楚起见。
存储处理器单元。在一实施例中,每一端口与存储处理器单元(SPU)401关联。在一实施例中,SPU快速处理数据流量以允许网速运行。在一实施例中,每一SPU包括几个元件信息包聚集和分类引擎(PACE)404、信息包处理单元(PPU)406、SRAM405、CAM407。同样,其它实施例可使用更多或更少的元件或可结合元件以获得相同的功能。例如,一些实施例可在SPU中包括PACE和PPU,但SPU可与其它SPU共享存储元件。
PACE。每一端口连到信息包聚集和分类引擎(PACE)404。如图所示,PACE404将两个端口聚集为单一数据通路,由此其具有两倍的带宽。例如,PACE404将两个1Gb端口聚集为一个2Gb数据通路。PACE可将每一接收到的信息包分类为控制信息包或数据包。控制信息包经网桥416发送给CPU414进行处理。如下所述,数据包被发送给包处理单元(PPU)406,并添加了本地首部。在一实施例中,本地首部为导致64字节(16字节首部和48字节净荷)的数据“存储单元”的16字节。本地首部用于携带信息并由开关104内部使用。在信息包离开开关之前删除本地首部。因而,“存储单元”可以是开关中本地使用的传输单位,其包括本地首部和原始信息包(在一些实施例中,原始TCP/IP首部也被从原始信息包剥离)。但是,不是本发明的所有实施例均将产生本地首部或具有不同于外部信息包的“内部信息包”(单元)。因此,在此使用的术语“信息包”可指“内部”或“外部”信息包。
分类功能有助于使开关能够以网速执行存储虚拟化和协议变换功能,而不用使用传统系统的保存-转发模式。每一PACE具有专门的到PPU如PPU 4061的通路,同时在图示实施例中所有四个PACE共享到CPU414的通路,在一实施例中其为104MHz/32(3.2Gbps)比特数据通路。
包处理单元(PPU)。每一PPU如PPU4061在传输过程中执行虚拟化和协议变换,即存储单元不被缓冲以进行这样的处理。其还实现其它基于开关的存储服务功能,将在随后描述。在一实施例中,PPU能够以OC-48速度或2.5Gbps的速度移动输入和输出双向的存储单元,在其它实施例中,其可以OC-192或10Gbps的速度移动存储单元。在一实施例中,PPU包括输入PPU4061i和输出PPU4061e,二者同时运行。输入PPU4061i从PACE4041接收输入数据并将数据发送给流量管理器408i,输出PPU4061e从流量管理器408e接收数据并将数据发送给PACE4041。尽管在图4中只有一个PPU4061具有输入PPU4061i和输出PPU4061e应该理解的是,在一实施例中,所有PPU406均将包括输入PPU和输出PPU,图4中仅示出只有一个PPU具有输入和输出PPU是为了清楚起见。
在每一端口可同时建立大量存储连接(如服务器到虚拟目标器的连接)。但是,每一连接对虚拟目标器是唯一的并可由TCP控制块索引(在iSCSI连接的情况下)和端口号唯一地确定。当建立连接时,线路卡400的CPU414通过向PPU406发送虚拟目标器描述符(VTD)以进行连接而将使用中的虚拟目标器通知给PPU406。VTD包括关于连接和虚拟目标器的所有有关信息,即PPU将需要对数据进行适当地运算,如执行虚拟化、变换及各种存储服务。VTD源自SCC数据库中的对象并通常包含保存在SCC数据库中的相关对象中的信息子集。
类似地,在本发明的一实施例中,使用物理目标器描述符(PTD)。PTD描述实际的物理设备、其各个LU、或其各个盘区(LU的连续部分或整个LU),并将包括类似于用于VTD那样的信息。同样,与VTD相似,PTD源自SCC数据库中的对象。
在一实施例中,为保存VTD和PTD并能快速访问它们,PPU如PPU4061被连接到SRAM4051和CAM4071。SRAM4051可保存VTD和PTD数据库。VTD标识符(VTDID)的列表或地址及PTD标识符(PTDID)也可被保存在PPU CAM4071中以能快速访问VTD。VTDID使用TCP控制块索引和LUN进行索引。PTDID使用VTD ID进行索引。此外,对于IP路由服务,CAM4071包含路由表,当添加或去除路由时其由CPU进行更新。
在不同的实施例中,每一PPU将按如图所示那样与其自己的CAM和SRAM设备连接,或者所有PPU均将被连到同一CAM和/或SRAM(未示出)。
对于每一对PPU的未完成的请求(如读或写),在PPU SRAM407中建立任务控制块以跟踪请求的状态。有输入任务控制块(ITCB)和输出任务控制块(ETCB),ITCB跟踪由输入PPU上的存储开关接收的请求的状态,ETCB跟踪由输出PPU上的存储开关发出的请求的状态。对于每一虚拟的目标器连接,可有大量同时发生的请求,因而有许多任务控制块。当请求开始时分配任务控制块,当请求结束时释放任务控制块。
流量管理器。在每一线路卡400上有两个流量管理器(TM)408其中一个TM408i用于输入流量,另一TM408e用于输出流量。在一实施例中,输入TM从所有4个SPU接收存储单元,其为64字节数据单元形式。在这样的实施例中,每一数据单元具有16字节的本地首部和48字节的净荷。首部包含FlowID,其告诉TM存储单元的目的端口。在一些实施例中,在将存储单元转发给TM之前,SPU还可将TM首部附加到存储单元。在一些实施例中,或TM或SPU还可将存储单元再分为更小的存储单元以通过矩阵卡传输。
在一实施例中,输入TM经128位104Mhz接口410将数据单元发送给矩阵卡。其它实施例可以125Mhz或其它速度运行。输出TM从矩阵卡接收数据单元并将它们传送给四个SPU。
输入和输出TM均具有大缓冲器412以排队存储单元从而便于传送。输入和输出TM的缓冲器412为64MB,其可为开关内的内部流控制而排队大量信息包。存储单元不被缓存在高速缓存或缓冲的开关设备中。因为在这些系统中,没有传送级确认。存储单元仅被暂时缓冲以保持开关内的流控制。存储单元保持其原始顺序且在TM没有存储单元的高级处理。当矩阵卡的输出流与输入流一样快时,SPU通常快速地将存储单元发送给输入TM。因此,存储单元快速移到输出TM。另一方面,由于输出端口被塞满或正被多个输入线路卡馈送,输出TM可被备份。在这种情况下,在输出存储单元的首部中设置标志以通知输出SPU快速采取行动。输出TM还发送请求给输入SPU以启动在提供存储器存取服务质量中使用的流控制功能。值得注意的是,与因特网上的通信流量不同,对于存储流量,丢失信息包或存储单元是不可接受的。因此,只要缓冲器中的存储单元数量超出指定的阈值,SPU可启动其流控制功能以减慢输入流量从而避免缓冲器溢出。
网络连接(Fabric Connection)。网络连接410将TM的256位并行信号(128位输入和128位输出)以160Gbps转换到底板的16位串行接口中(8位输入和8位输出)。因而,底板在插脚的16分之一运行,但速度上快16倍。这种转换使能以合理的成本构造高可用性底板,且不用成千上万的连接插脚和导线。此外,在一实施例中,由于有三个矩阵卡,在一实施例中,每一线路卡上有三个高速连接器,其中每一连接器分别将8位信号连到三个矩阵卡中的相应矩阵卡。当然,其它实施例可能不需要三个网络连接410。
CPU。在每一线路卡上有处理器(CPU)614,在一实施例中其为PowerPC 750 Cxe。在一实施例中,CPU414用3.2Gb总线经总线控制器415和网桥416连到每一PACE。此外,CPU414还连到每一PPU、CAM和TM,然而,在一些实施例中,该连接是40Mbps的较慢速度。3.2Gb和40Mb通路均允许CPU与线路卡中的大多数设备通信并读和写线路卡上每一设备的内部寄存器、下载微码、及发送和接收控制信息包。
每一线路卡上的CPU负责在加电时初始化每一芯片并在无论哪里需要微码时将微码下载到SPU及每一端口。一旦线路卡在运行状态,CPU处理控制流量。对于建立虚拟目标器连接需要的信息,CPU从SCC请求信息,其继而从SCC数据库中的适当对象获得信息。
线路卡中的区别-端口。在一实施例中,每一类线路卡如GigE、FC或WAN中的端口均是不同的,因为每一线路卡支持一种类型的端口。在其它实施例中,其它线路卡端口可被设计为支持其它协议如Infiniband。
GigE端口。吉比特以太网端口连到iSCSI服务器和存储设备。当GigE端口携载所有类型的以太网流量时,根据本发明的一实施例,通常将由存储开关104以网速处理的唯一网络流量是TCP/IP包内的iSCSI信息包数据单元(PDU)。但是,在其它实施例中,在以太网连接上传送的根据其它协议(如网络文件系统(NFS))的信息包可在GigE端口进行接收并由SPU和/或CPU处理。
GigE端口接收和传送TCP/IP段以用于虚拟目标器或iSCSI设备。为建立对虚拟目标器的TCP连接,线路卡CPU414和SCC310均被涉及。当接收TCP信息包时,在执行初始联络之后,TCP控制块被产生并保存在GigE端口存储器403中。VTD也被从SCC数据库的对象取回并保存在CPU SDRAM405中以用于验证连接并理解虚拟目标器的配置。TCP控制块确定特定TCP会话或信息包属于其的iSCSI连接,在一实施例中,还包含TCP段数量、状态、窗口大小、及关于连接的其它可能信息。此外,TCP控制块通过索引进行识别,其在此称为“TCP控制块索引”。该连接的VTD可被产生并保存在SPU SRAM405中。CPU通过取回保存在其SDRAM中且最初从SCC数据库获得的VTD信息而产生VTD。VTD ID被建立在SPU CAM407中的VTD ID列表中,以便快速定位到VTD。VTD ID与TCP控制块索引有关系并由其进行索引。
当端口接收iSCSI PDU时,其实际上用作连接的端头,但其后开关启动与目标器的新连接。在输入侧接收信息包之后,端口使用TCP控制块索引将iSCSI PDU传送给PACE,其确定特殊的TCP连接。对于非TCP信息包或TCP信息包不包含iSCSI PDU,端口接收和传送信息包,但不充作连接端头。通常,端口402与PACE404通信,通过使用TCP控制块索引接收或发送iSCSI信息包。当信息包的TCP控制块索引是-1时,其标识非iSCSI信息包。
FC端口。FC端口连到服务器和FC存储设备。FC端口表现为连接服务器的光纤通路存储子系统(即目标器),也就是说,如本领域所理解的,其呈现大量允许启动器(如服务器)执行进程登入(PLOGI或PRLI)从而建立连接的虚拟目标器设备的池。FC端口接受GID扩展链路服务(ELS)并返回可为该启动器(如服务器)存取的目标器设备列表。
当连到光纤通路存储设备时,端口表现为光纤通路F端口,意为如本领域所公知的,其接受来自存储设备的交换机登录并通过接受和处理GID请求而提供名服务功能,换言之,端口将表现为存储设备的启动器。
此外,FC端口可连到另一现有的SAN网络,在这种情况下,其表现为具有许多到另一网络的LU的目标器。
在端口初始化时,线路卡CPU可经历发送交换机登录、进程登入、GID及接收它们。SCC支持将FC ELS转换为iSNS请求和响应的应用。因此,在SCC中的同一数据库可跟踪FC启动器(如服务器)和目标器(如存储设备),只要它们是iSCSI启动器和目标器即可。
当建立FC连接时,与GigE端口不同,FC端口不需要创建TCP控制块或其等价物。所有必须的信息均可从FC首部获得。但是,VTD(通过确定帧的目的地的D ID索引)仍需以类似于在GigE端口处描述的方式建立。
FC端口可被配置为1Gb或2Gb。当为1Gb端口时,两个端口均被连到同一PACE,如图4中所示;但在一实施例中,当配置为2Gb端口时,端口流量和可被SPU容纳的流量应匹配以避免SPU拥塞。在一实施例中,端口使用POS/PHY接口连到PACE。每一端口可被单独配置,即一个PACE可具有两个1Gb端口,另一PACE具有一个2Gb端口。
WAN端口。在包括WAN线路卡的实施例中,在一实施例中,WAN线路卡支持OC-48和OC-192连接。因而,有两种类型的WAN端口OC-48和OC-192。对于OC-48,每一SPU有一个端口。尽管还有分类功能,但在PACE中没有聚集功能。WAN端口连到SONET并像GigE端口那样工作,其传送和接收网络信息包如ICMP、RIP、BPG、IP和TCP。在一实施例中,WAN端口用VPN和IPSec支持网络安全性,其需要另外的硬件构件。
由于OC-192导致更快的网速,在支持OC-192的实施例中将要求更快的SPU。
基于开关的存储操作本领域一般技术人员均具有iSCSI和FC协议的一般知识。然而,对于关于iSCSI的更多信息,指2001年11月19日因特网工程任务组(IETF)的因特网草案及进行中的工作-“draft-ietf-ips-iSCSI-09.txt”,其通过引用组合于此。对于关于光纤通路(FC)的更多信息,指1995年12月4日的“信息系统—用于SCSI的dpANS光纤通路协议”,修订012(美国国家标准机构提出的草案),其通过引用组合于此。此外,二者还在2002年1月18日申请的、题为“存储区域网络的存储开关”的美国专利申请10/051,321中有所描述。
虚拟化不同信息包类型的示例性的输入和输出进程在未决申请10/051,321、10/051,339和10/051,053中描述。应该理解的是,根据不同的实施方式,可使用很多用于不同信息包类型的进程。
在一实施例中,在输入的信息包被PPU分类为数据或控制流量之后,PPU可在没有数据缓冲的情况下执行数据包的虚拟化。对于每一接收到的信息包,PPU确定信息包的类型(如指令、R2T/XFER RDY、写数据、读数据、响应、任务管理/异常中止),其后执行或输入(信息包输入开关的情况)或输出(信息包离开开关的情况)算法以将虚拟目标器变换为物理目标器,反之亦然。因而,虚拟化功能分布在输入和输出端口之间。为还使能网速处理,虚拟描述符被与CAM结合使用以将请求位置映射到存取位置。此外,对于每一信息包,可以有特殊的考虑。例如,信息包去往的虚拟目标器可被间隔几个不连续的盘区,可被镜像,或者同时进行前述两个操作。
指令值息包一输入为开始去往或来自虚拟目标器的传送任务,由分别在iSCSI PDU或FCP IU中的iSCSI或FC启动器发送SCSI指令。当在PPU接收到这样的信息包时(在分类之后),接下来PPU CAM被检查以确定是否存在有效的VTD ID,在iSCSI启动器的情况下其使用TCP控制块索引和逻辑单元号(LUN),在FC启动器的情况下其使用S ID(帧源的标识)和LUN。在每种情况下,LUN均可在各自的iSCSI PDU或FCPIU中找到。如果没有发现有效的VTD ID,则响应信息包被发送回启动器。如果发现有效的VTD,则检查无效参数,步骤508。如果存在无效参数,则响应信息包被发送回到iSCSI或FC启动器。
任务索引(Task Index)连同输入任务控制块(ITCB)一起分配。任务索引指向或确定ITCB。ITCB保存FlowID(从VTD获得)、VTD ID、指令序号或CmdSN(来自iSCSI信息包本身)、以及启动器(始发者)标识(如在iSCSI PDU中发送的initiator_task_tag或FCP帧首部中的OX_ID)。OX_ID是交换机的始发者(启动器)标识。ITCB保存在PPU SRAM中。当然,在任何给定时间可以有许多进行中的指令,这样,PPU可在任何特定时间保存多个ITCB。每一ITCB将由其各自的任务索引引用。
VTD跟踪到特定虚拟目标器的未完成指令的数量,这样,当建立ITCB时,其递增未完成指令的数量。在一些实施例中,VTD建立任一特定虚拟目标器允许的未完成指令的最大数。FlowID、VTD ID和任务索引均被复制到本地首部。FlowID告诉流量管理器目的地线路卡和端口。之后,任务索引将由输出端口返回以确定特定的信息包任务。最后,信息包被发送给流量管理器继而路由交换机,从而其最终到达输出PPU。
指令信息包—输出在指令PDU或IU已通过交换结构之后,其将到达PPU,去往输出端口。PPU试图确定信息包所去往的物理设备。为此,来自本地首部的VTD ID被用于搜索PTD ID(物理目标器描述符标识符)的PPUCAM。VTD ID与同特定输出PPU相关的特定PTD ID有关系并对其索引。与VTD类似,PTD保存在PPU SRAM中,且还包含类似于在VTD中发现的信息。如果搜索不成功,则假设这是由CPU直接发送的指令信息包,不需要PPU进行另外的处理,从而使得PPU根据本地首部中的FlowID将该信息包传给适当的输出端口。如果搜索成功,PTD ID将确定虚拟目标器将被映射到其的物理目标器(包括盘区),且其与当前处理该信息包的特定输出线路卡通信。
之后,PPU分配任务索引和输出任务控制块(ETCB)。在实施例中,用于输出的任务索引与用于输入的相同。任务索引还确定ETCB。此外,ETCB还保存指令所需的任何其它控制信息,包括iSCSI PDU的CmdSN或FCP IU的交换序列。
使用PTD的内容,PPU将来自虚拟目标器的SCSI块地址转换为物理设备的块地址。将虚拟目标器的块地址增加到盘区的开始块偏移量可提供这种转换。之后,PPU产生适当的iSCSI CmdSN或FCP序列ID,并将它们放在iSCS IPDU或FCP帧首部中。如果需要(在一些实施例中,在输入PPU从FCP首部读必要的信息之后,其将删除那些信息,尽管其它实施例将其完整的留下并在该步骤仅更新或改变必要的字段)或为了发送给iSCSI目标器的信息包,PPU可构建FCP帧首部,TCP控制块索引被从PTD复制到本地首部中。此外,PPU提供iSCSI或FCP首部需要的任何标记或其它变量。之后,完成的iSCSI PDU或FCP帧被发送给PACE,其继而去除本地首部并将信息包传给适当的端口。
R2T或XFER RDY—输入在指令已按如上所述发送给目标器存储设备之后,指令是写指令,当存储设备准备好接受写数据时,将从存储设备接收R2T PDU或XFER_RDY IU。PPU通过使用信息包内的initiator_task_tag或OX_ID确定相应的ETCB。如果由于无效的initiator_task_tag或OX_ID而使PPU不能确定有效的ETCB,则丢弃信息包。否则,一旦ETCB被确定,PPU从ETCB取回输入任务索引(如果不同于输出任务索引)和VTD ID。PPU还从PTD取回FlowID,其也由PTD ID在ETCB中确定。FlowID向流量管理器指示原始启动器(输入)端口的线路卡。FlowID、VTD ID和任务索引被复制到信息包的本地首部。最后,信息包被发送给流量管理器和交换结构。
R2T或XFER RDY—输出在R2T或XFER_RDY信息包从交换结构出现之后,其由PPU在其被传回启动器(发起特定任务的原始指令的设备)的途中接收。任务索引确定对应于PPU的ITCB,从该ITCB可获得原始initiator_task_tag和VTD ID。R2T/XFER_RDY希望的数据传送长度或BURST_LEN字段保存在ITCB中。本地首部被FCP D_ID或TCP连接的TCP控制块索引更新。应注意,所保存的来自原始信息包的S_ID,其保存在ITCB中,变为D_ID。如果需要,构建FCP帧首部或更新其字段。目的地端口号在本地首部中指明,其代替FlowID并与initiator_task_tag一起放在SCSI PDU中,或对于FC连接,RX_ID和OX_ID放在FCP帧中。RX_ID字段是交换机的应答者(目标器)标识。PPU还放置需要放在PDU或FCP首部中的任何其它标记或变量。信息包被转发给PACE,其从本地首部确定输出端口。之后,本地首部被去除,并转发给适当的端口进行传送。
如果指令被拆分到两个或更多个盘区,如指令在一盘区开始并在另一盘区结束,则PPU必须保存第二盘区的R2T或XFER_RDY,直到第一盘区的数据传送结束为止,因而确保从启动器连续传送数据。此外,第二盘区的R2T或XFER_RDY的数据偏移量将需要进行修改,其通过增加传送给第一盘区的数据量实现。
写数据包—输入在启动器接收R2T或XFER_RDY信息包之后,其返回写入数据信息包。当从启动器接收到写入数据iSCSI PDU或FC IU时,信息包属于其的ITCB必须被确定。通常,ITCB可使用RX_ID或target_task_tag进行确定,在一些实施例中,其与任务索引相同。SPU还确定所接收的信息包状况良好。然而,在一些情况下,启动器将传送主动提供的数据在接收R2T或XFER_RDY之前发送的数据。在这种情况下,PPU必须通过搜索特定虚拟目标器的所有未完成任务而发现ITCB。但如果未发现ITCB,则丢弃信息包。如果发现ITCB,将被传送的总数据量在ITCB中更新。FlowID和任务索引被添加到信息包的本地首部。之后,信息包被转发给流量管理器并最终转发给交换结构。
写数据包—输出当从交换结构(经流量管理器)接收到写入数据信息包时,需要确定信息包的ETCB。通常,ETCB可使用本地首部中的任务索引进行确定。一旦发现ETCB,通过使用ETCB内的信息,PPU产生适当的iSCSIDataSN或FCP序列ID,以及PDU或FCP帧首部的任何其它标记或变量如数据偏移量。本地首部用来自PTD的TCP控制块索引或FCP D_ID更新。端口号也被添加到本地首部。完成的iSCSI PDU或FCP帧被发送给PACE,其去掉本地首部并将信息包转发给适当的端口。
读数据包—输入在接收读指令之后,目标器设备将以读出数据信息包响应,其将在PPU接收(在经历PACE中的分类之后)。之后,使用OX_ID或initiator_task_tag确定信息包的ETCB。PPU还使用序号验证信息包是否被整齐接收或验证数据偏移量呈升序。如果信息包不整齐,则读指令被错误地终止。然而,如果数据包整齐,则从ETCB和VTD取回VTD ID、任务索引和FlowID并复制到本地首部。信息包被发送给流量管理器并最终发送给交换结构。
如果读出数据信息包跨越盘区边界,则必须修改第二盘区的信息包的数据偏移量。该偏移量通常在输出侧执行,如下所述,因为FlowID将确定来自第二盘区的信息包。此外,为确保连续返回的数据,对第二盘区的读出指令将不被发送,直到读第一盘区结束为止。
读数据包—输出当PPU从交换结构接收到读出数据信息包时,通常使用本地首部中的任务索引确定信息包的ITCB。PPU可从该ITCB取回initiator_task_tag或OX_ID。使用ITCB中所保存的数据,PPU产生适当的iSCSI DataSN或FCP序列ID以及PDU或FCP帧首部的其它标记或变量。本地首部用来自VTD的TCP控制块索引或FCP S_ID更新。然而,应注意,对于回到启动器的信息包,来自原始信息包的S_ID将被用作D_ID。输出端口号也被添加到本地首部。之后,信息包被发送给PACE,其去掉本地首部并将信息包转发给适当的端口。
响应信息包—输入响应信息包将从目标器设备接收。之后,使用信息包的initiator_task_tag或OX_ID确定信息包的ETCB。在一些实施例中,initiator_task_tag或OX_ID将与任务索引一样。如果没发现ETCB,则丢弃信息包。然而,如果发现ETCB,则任务索引连同VTD ID和FlowID被复制到信息包的本地首部。信息包被发送给流量管理器并最终发送给交换结构。最后,由于响应信息包发出任务完成的信号,用于该任务的ETCB被释放。
响应信息包—输出在响应信息包已通过交换结构之后,其将由输出PPU接收。使用来自本地首部的任务索引确定信息包的ITCB。如果没有发现ITCB,则丢弃信息包。如果发现ITCB,则虚拟目标器的未完成指令计数在VTD中递减。PPU从ITCB中的信息产生LUN、iSCSI ExpStatSN或FCP序列ID,如果需要,构建或更新适当的FCP首部。PPU还为PDU或FC帧首部构建其它标记或变量。PPU用从VTD取回的TCP控制块索引或FCP S_ID(其变成D_ID)更新本地首部。信息包被转发给PACE,其去掉本地首部并将信息包转发给适当的端口。PPU释放ITCB。
存储池如图2所示,在其物理结构中,根据本发明实施例的系统包括连到一个或多个服务器202和一个或多个物理设备206即存储设备或子系统的开关204。每一物理目标器由一个或多个逻辑单元(LU)207组成。虚拟目标器将最终由这些LU形成。
然而,在虚拟目标器可被产生或“提供”之前,开关需要“意识到”所连接的和/或可由其存取的物理存储设备及这些物理存储设备的特性。因而,在本发明的一实施例中,当存储设备或启动器设备连接到开关或向开关登记时,开关必须知道新设备的性能特征。在一实施例中,开关包括实用程序,其可测量存储器存取时间、数据传送率、高速缓存支持、到设备的备用通路的数量、RAID支持、及物理设备的LU允许的最大指令。在一些实施例中,一旦设备连到开关,实用程序将自动发现设备并自动收集所需信息,而没有任何用户或其它干涉。在一些这样的实施例中,当到端口的信号线上有干扰或复位时,开关将“发现”设备的添加/去除。一旦设备被“发现”,不同的询问被发送给设备以收集关于性能特征的信息。例如,可发送读/写指令以测量传送率或检查存取时间。另外,在一些实施例中,性能特征的获得可通过使管理员在管理站210输入性能特征而实现,其中,这些特征将继而被提供给开关204。
开关向用户提供以定义服务质量(QoS)政策的多个组成部分的能力。通过QoS政策,用户可选择为启动器和目标器保存和取回数据的条件。在一实施例中,QoS政策由三个要素定义提供虚拟目标器、提供启动器连接、及定义用户域。但是一些实施例可能不需要所有三个要素来定义QoS政策。例如,一些实施例仅需要提供虚拟目标器和提供启动器连接,但不需要用户域。其它实施例可使用完全不同的要素定义QoS政策。
提供虚拟目标器一旦物理设备的LU在可存取池中(即不是“非池”),则可从那些LU创建虚拟目标器。为提供虚拟目标器,在本发明的一实施例中,用户将为虚拟目标器选择几个特征,包括-大小(如按吉字节计算);-存储池,尽管在一实施例中用户可仅从用户被允许存取的存储池选择;-希望的可用性,如始终可用(数据关键且必须未曾被接受)、通常可用等;-虚拟目标器的WWUI;-备份池;
-用户鉴别数据;-镜像成员的数量;-镜像成员的位置(如本地或远程)。
在本发明的其它实施例中,也可选择不同的、另外的或较少的特征。
之后,开关分析所选池的可用资源以确定是否可形成虚拟目标器,具体地,开关确定满足虚拟目标器的大小要求的多个LU(或LU的部分)是否可用。如果是,则用一个或多个盘区创建虚拟目标器,且虚拟目标器对象被形成在确定虚拟目标器、其盘区及其特征的SCC数据库中。用户为四个虚拟目标器选择的特征的例子如下表1中所示表1—虚拟目标器


除了提供新虚拟目标器以外,根据本发明实施例的开关还可用新的或不同的信息修改现有的虚拟目标器或当不再需要虚拟目标器时将它们删除。
在一实施例中,QoS政策通常由虚拟目标器(如所提供的)、启动器连接(如所提供的)、及用户域定义。因而,参考上表1,表中的前三项—“启动器ID”、“虚拟目标器ID”和“用户域ID”—将固有地描述QoS政策,因为启动器连接和虚拟目标器的属性已在这些项目被提供时定义。例如,启动器连接的最小和最大带宽已被确定(见表2和3)。用户域通过确定启动器连接或虚拟目标器连接是否更慢并将QoS强加给二者中较慢那个而帮助确定政策。当然,如上所述,不是所有实施例都需要用户域。同样,其它实施例可使用较上表1中所示的那些参数更多、更少或不同的参数定义SLA。
图5总结了在一实施例中,为能提供QoS而提供虚拟目标器和连接的步骤。如图所示,在步骤502,根据本发明实施例的开关发现并确定与开关通信的物理设备的特征。在步骤504,开关对那些设备进行分类,在步骤506,将那些设备与特定的存储池关联。在步骤508,开关将接收启动器连接的信息,并在步骤510提供连接及在SCC数据库中创建对象。之后,在步骤512,开关还将接收虚拟目标器的参数并在步骤514根据那些参数提供虚拟目标器,如果资源可用,在SCC数据库中创建对象。应注意,步骤508-514可以任何顺序执行,图5中所示的顺序仅是示例性的。在提供虚拟目标器之后,在步骤516,创建用户域且虚拟目标器放在该用户域中或虚拟目标器放在先前存在的用户域中。用户还可尝试访问先前提供的虚拟目标器(因此,步骤514对每一连接并不是必须的)。最后,在步骤518,根据本发明的实施例的开关接收SLA/QoS参数。
实施开关中的带宽分配在一实施例中,可用许多虚拟逻辑单元提供每一虚拟目标器,并为通过单一物理端口存取的每一逻辑单元指明最小和最大带宽分配。在单一启动器通过开关上的单一物理端口向两个或多个虚拟逻辑单元写数据或从其读数据时,两个或多个物理逻辑单元可回复并使物理端口拥塞。图6a示出了单一启动器经开关204上的单一物理端口250存取两个虚拟逻辑单元(VLU)的示例性情形。每一VLU连到一个或多个物理逻辑单元(PLU)。在只示出了两个VLU的同时,每一VLU与一个PLU通信,应该理解的是,大量VLU和PLU可通过物理端口250通信。
启动器102可包括两个应用程序,应用程序1和应用程序2,每一应用程序存取相应的虚拟逻辑单元。应用程序1通过虚拟化的逻辑单元VLU1存取物理逻辑单元206a,应用程序2通过虚拟化的逻辑单元VLU2存取物理逻辑单元206b。每一VLU由用户按如上所述配置以最小和最大带宽。再次说明,该带宽可被配置为可用物理端口容量的百分比。根据本发明,用户可对每一逻辑单元带宽管理的带宽参数赋值。例如,假设VLU1提供对要求高带宽存取的数据的存取,VLU2提供对非关键数据的存取且不要求高带宽。在这种情况下,可配置开关以保证低等待时间数据相较非关键数据而言更有权使用物理端口的资源。
为实现这种带宽控制,本发明的系统监视每一VLU使用的带宽并调节对每一VLU的存取以控制物理端口250上的所有带宽。在一实施例中,如图6a中所示,系统使用流量标记标志从PLU通过VLU而通过物理端口250的流量。通常,当来自物理逻辑单元(例如PLU2)的流量到达虚拟逻辑单元(在这种情况下为VLU2)时,如果带宽高于给定虚拟逻辑单元的最大允许带宽,多余的字节量将被记录在虚拟逻辑单元中。这样的流量允许传给应用程序,但过多信息用于调节到VLU的连接,直到带宽降到设定水平为止。当启动器向VLU2发出新指令时,如对物理逻辑单元的读指令,指令中的传送长度将被用于抵消(减少)先前记录的过多量。该新指令及随后的指令被拒绝,直到VLU超出其共享带宽的全部超额量已被抵消为止。例如,在FCP SCSI的情况下,用TASK_SET_FULL状态FCP响应拒绝指令,直到全部超额量已被抵消为止。如果从物理逻辑单元到虚拟逻辑单元的流量的带宽低于允许的最小带宽,则没有超额量记录在虚拟逻辑单元上(在该例子中为VLU2)。
本发明的带宽平衡算法的该概括阐述将在下面详细描述。
为每一VLU配置带宽的能力引起两种带宽管理配置情况,在此通常称为静态情况和动态情况。如果用户设定VLU的带宽,使得一个VLU被限定到总物理端口带宽的非常低的百分比,来自其它逻辑单元的流量将被保证可使用大百分比的端口带宽。在这种静态情况下,端口的全部资源未被利用。例如,如果VLU2的最大带宽被限定到端口容量的20%,VLU2将永远不会超出端口容量的20%,即使没有流量移动通过VLU1也是如此。因此,端口资源被浪费。
当每一VLU被配置以最小和最大带宽且由端口存取的所有VLUS的所有最大带宽的和超出物理端口容量的100%,则存在动态情况。在该动态情况下,如果两个VLU均以其最大允许带宽接收流量,则端口250的端口容量将被超出,系统必须调节来自相应PLU的流量。假设VLU1具有70%的最小带宽和100%的最大带宽,VLU2具有10%的最小带宽和100%的最大带宽。由于VLU1具有70%的最小带宽,所以希望任何平衡均照顾VLU1。
根据本发明,在每一VLU的流量被监视和标志,且通过VLU的流量通过拒绝从启动器到端口250的VLU的指令而被节流,直到通过VLU之一的带宽下降低于设定水平为止。
本发明的一般方法如图7a中所示。如图所示,在步骤702,监视物理端口的流量以确定端口是否被拥塞。在步骤704,如果流量拥挤,则在步骤706通过拒绝给通过端口250通信的相应VLU的指令而调节流量,以防止拥塞并根据带宽配置区分通过端口存取的优先顺序。这一直持续,直到在端口上检测不到流量拥塞为止。
图7b示出了节流步骤706的一种实施方式。如图所示,在步骤710,当从每一PLU返回到存储开关的流量(通常以位秒(bps)或字节秒表示)到达VLU时其带宽被监视。之后,执行一系列的节流控制确定步骤705以确定从PLU抵达每一VLU的带宽是否超出允许的最大值。如果是,该事实用于调低来自与VLU通信的PLU的流量。如果到达VLU的流量带宽低于允许值,则数据被简单地传送给启动器。在步骤720,如果带宽超出VLU的最大带宽,则在步骤730,任何超额量均由PPU记录在VLU中。在步骤730,该流量被允许传给启动器,且在步骤765,指令被转发给PLU。
在步骤750,在接收下一冒犯VLU的指令的基础上,在步骤760系统将确定VLU已超出其带宽且在步骤770端口将拒绝指令并将带宽降低指令中所请求的数据量。例如,如果VLU1被分配300兆字节/秒的带宽,且在步骤710确定流量将为330兆字节/秒,则在步骤730,在冒犯期间读的字节超额量(30兆字节/秒乘以时间)在步骤730被记录。在步骤750,当随后接收到读VLU1的指令时,该指令将被拒绝(步骤760将为真),但在步骤770,读指令中请求的字节量将从超额量中扣除。在步骤760,该拒绝和缩减将继续发生,直到VLU1不再亏欠带宽为止,在步骤765,下一指令将被转发给PLU。
如下面进一步详细阐述的,为虑及最小和最大带宽设置的任何配置,使用加权方案确定在给定时间哪一VLU需要节流。此外,由于最小和最大带宽必须被包括在加权进程中,双速率三色标记器(trTCM)系统被用于计量通过每一VLU的流量。
图6b示出了双速率三色标识系统的概念,其使用两桶每VLU来计量和标识每一VLU的流量。图8示出了使用该trTCM标识的本发明的加权系统。
加权系统使用争用计数的概念平衡VLU的最小和最大带宽设置。通常,代替收集和测量实际的流量字节,争用计数根据流量颜色和VLU允许的最大带宽与随机数的比较而产生。在同一开关端口250上的所有VLU的最小争用计数用于确定VLU的超额量。之后,该VLU的争用计数被减去超额量。
为确定争用计数,trTCM标记计量信息包流并将帧标为或绿色、黄色或红色。如果信息包超出峰值信息率,在该例子中为最大带宽,则其被标为红色。否则,根据其是超过还是没超过约定的信息率,在该例子中为最小带宽,其被标为黄色或绿色。计量器计量每一信息包并将信息包和计量结果传给标记器。在SSC中,PPU执行计量和标识功能以及端口250处的指令调节。争用计数保存在每一VLU的VTD中。通常,trTCM通过对四个流量参数设定值而进行配置,在该例子中,四个流量参数为最大带宽MaxBW及其相关峰值突发量(burst size)、最小带宽MinBW及其相关峰值突发量。突发量按字节进行测量。
如图6b中所示,计量器按照每流两个令牌桶220、222、224和226进行确定。一个桶(如桶220、224)被配置用于最小带宽,一个桶(如桶222、226)被配置用于最大带宽。在trTCM的一种实施方式中,令牌桶MaxBW的最大大小为最大突发量,且MinBW令牌桶的最大大小为其突发量。在开始,令牌桶均被设为“满”且记号计数等于相应的突发量。其后,记号计数被增加一最大带宽速率每秒,直到达到最大突发量,最小带宽桶的记号计数被增加最小带宽乘以每秒,直到达到最小突发量。在该配置中,低速率令牌桶被配置为用于最小带宽,高速率令牌桶被配置用于最大带宽。流经两种令牌桶的流量被标为绿色,因而被保护。流经高速率令牌桶但不流经低速率令牌桶的流量被标为黄色,并用于确定争用计数。因此,不流过任一令牌桶的流量被标为红色。该量被记录并用于产生争用计数,争用计数用于节流随后的流量。更具体地,当大小为B字节的信息包在时间T到达时,如果最大带宽桶中的记号计数减去信息包的大小的结果小于0,则信息包被标为红色。如果最小带宽桶中的记号计数减去信息包的大小的结果小于0,则信息包被标为黄色,且最大带宽桶被减少B字节;否则信息包为绿色,最小带宽和最大带宽桶均被减少B字节。应意识到的是,也可使用这种标记方案的其它配置,且本说明仅是一个示例性的实施例。此外,其它相对于最大信息率监视两种速率的标记方案也可使用。
图8详细示出了实施图7的步骤705的节流控制和带宽测量的一实施例。在步骤820,在流量在步骤710从PLU1到达VLU之后,流量突发量被读出,且根据trTCM对流量进行计量和标识。
在两个带宽均设为100%的例子中,将没有红色流量。例如,如果两个VLU之一具有小于100%的带宽,则部分流量将被标为红色。对于具有更高最小带宽的VLU,只有较少的信息包会被标为黄色。因此,在上述例子中,VLU1提供对低等待时间数据的存取,并被设置为MinBW为物理端口容量的70%,MaxBW为物理端口容量的100%,VLU2MaxBW=100%,MinBW=10%;VLU2将引起较大数量的黄色标记帧。如下所指出的,只有黄色信息包影响争用计数,因而影响赋予特定端口的优先级加权。
接下来,在步骤830,确定流量是红色、绿色还是黄色。如果在步骤830确定流量是绿色,则不对信息包采取任何行动。如果在步骤830流量被标为黄色,则在步骤850,对流量是否是争用计数进行分类。在步骤850,VLU的最大带宽发送值归一化为8位值。之后,为流中的每一帧产生随机8位值。该随机8位值与归一化的最大带宽值进行比较。如果随机数大于归一化的最大带宽值,则黄色帧被视为争用帧。在步骤870,系统将争用计数加到VLU记录。具体地,在步骤870,VLU的争用计数被增加帧的大小。这样,最大带宽设置越高,在步骤870增加的争用计数越少。类似地,最小带宽越高,出现的黄色帧越少,因而争用计数越少。这使得具有较高最小和最大带宽设置的VLU被节流的机会更少。如果在步骤830流量是红色,其将在步骤840被自动加到VLU的超额量。
在图6b中的物理端口250处提供了另外的测量桶。该令牌桶测量访问物理端口的所有VLU的总流量。单速率令牌桶用于测量带宽控制。当总流量超过物理端口容量时,则选择具有最大数量争用计数的VLU进行节流。
表2-6阐释了执行步骤760和770以确定哪一VLU具有争用计数的超额量从而确定哪一VLU应在步骤770进行节流的一种实施方式。表2示出了启动器VLU1和VLU2的示例性争用计数数量。
表2

在表2中,VLU2较VLU1具有更高的争用计数数量。因此,VLU2将被节流请求数据的大小,直到其争用计数降低到低于VLU1为止。同一端口上的所有VLU的最小争用计数被用于增加到VLU的超额量。之后,该VLU的争用计数被减少该超额量。例如,假设总带宽高于端口容量,如表2中所示,VLU1具有60争用计数,VLU2上的流量具有300争用计数。当单速率桶确定端口被拥塞时,超额量将是同一端口上的所有VLU的最小争用计数,其在表2中为60。因此,计数状态将如表3中所示。
表3


当在步骤750接收到下一指令时,VLU2的指令将被拒绝,且超额量被减少该指令中所请求的大小。例如,假如指令是读指令且读指令要读40字节,则使得VLU2的超额量将被减少40字节,如表4中所示。
表4

超额量将继续由随后的指令抵消,直到其变为0或负为止,如表5中所示。
表5

在流量被节流之后,如果总带宽小于端口容量,则不再需要将争用计数转换为超额量。然而,争用计数可随着时间的消逝而陈化。随着时间的过去,根据trTCM算法的原理,如果没有拥塞,争用计数逐渐降低到0。表6示出了非拥塞期间的状态。
表6

只要拥塞在端口250继续,如步骤760和770所详细示出的,当前的争用计数均将用在算法中。应理解的是,前面提及的“计数”和带宽的数量均仅是示例性的。如果拥塞再次出现,将重复表2-6的循环。
前述关于本发明的详细描述均为说明和描述的目的而给出。本发明并不限于实例的情况。其不仅应用于FCP和iSCSI读,而且用于FCP和iSCSI写。拥塞的端口可以是连到启动器的端口,也可以是连到目标器的端口连接器。流量可从启动器到目标器,也可从目标器到启动器,因为流量可在输入端口或输出端口进行监视。在此的描述并不是穷尽的,也不是将本发明限定为在此公开的准确形式。根据上面的示教,可进行许多修改和改变。选择所描述的实施例是为了最佳阐释本发明的原理及其实际应用从而使本领域的其它技术人员能在不同的实施情况下使用适于预期特定用途的各种修改最好地使用本发明。本发明的范围由所附权利要求确定。
权利要求
1.用在保存和存取数据的系统中的方法,系统包括至少一启动器、至少两目标器、及至少一具有端口的开关,所述方法包括确定在物理端口处是否出现拥塞;及根据每一目标器的最小和最大带宽设置控制至少两目标器中的每一个的带宽使用。
2.根据权利要求1的方法,其中控制步骤包括拒绝从启动器到两目标器中的至少一个的附加指令。
3.根据权利要求1的方法,其中控制步骤包括监视从两目标器中的每一个传给端口的流量,当两目标器中的任一个超过最大带宽时,记录数据量。
4.根据权利要求3的方法,其中监视步骤包括增加数据量,所增加的量为过量带宽期间读的数据量。
5.根据权利要求3的方法,其中监视步骤包括当接收到给目标器的指令时减少数据量,所减少的量为所记录的被拒绝的多余数据量。
6.根据权利要求1的方法,其中确定步骤包括监视物理端口拥塞情况并在物理端口被拥塞时实施所述控制步骤。
7.根据权利要求1的方法,其中所述控制步骤包括监视来自所述两目标器中的每一个的带宽以确定带宽是否超过目标器的最大允许带宽。
8.根据权利要求1的方法,其中所述控制步骤包括当从目标器到端口的流量超过目标器的最大允许带宽时向每一目标器赋予加权并拒绝给所述两目标器之一的指令。
9.根据权利要求8的方法,其中赋予加权步骤包括在与目标器相关的记录中记录带宽超额量。
10.根据权利要求9的方法,其中记录带宽超额量的步骤包括记录字节数。
11.根据权利要求9的方法,其中拒绝附加指令的步骤包括确定指令所请求的字节数,并将所记录的带宽超额量减少所请求的字节数。
12.根据权利要求9的方法,其中赋予加权的步骤包括根据双速率标记标识从目标器到端口的流量。
13.根据权利要求12的方法,其中赋予加权的步骤包括使用双速率三色标识系统标识流量。
14.根据权利要求13的方法,其中加权步骤包括将所有红色标记的流量记录为带宽超额。
15.根据权利要求9的方法,其中加权步骤包括如果最大带宽的归一化值的比较超出随机数,则将所有黄色流量记录为带宽超额。
16.根据权利要求15的方法,其中所记录的超额是黄色流量帧的帧大小。
17.根据权利要求15的方法,其中到所述至少两目标器中具有较大带宽超额的那一目标器的指令被拒绝,直到其超出量小于所述至少两目标器中的另一目标器的超出量为止。
18.用在保存和存取数据的系统中的方法,系统包括至少一启动器、至少两目标器、及至少一具有端口的开关,所述方法包括监视从所述至少两目标器中的每一个到端口的流量带宽;根据每一目标器的最小和最大带宽设置确定哪一目标器可以使用端口资源;及通过根据确定步骤拒绝给目标器的附加指令而控制对所述目标器的存取。
19.根据权利要求18的方法,其中所述确定步骤包括根据所述至少两目标器中的每一个的流量加权而赋予每一目标器优先级。
20.根据权利要求19的方法,其中赋予加权的步骤包括使用双速率三色标记器标识流量。
21.根据权利要求20的方法,其中赋予加权的步骤包括将所有红色标记的流量记录为带宽超额。
22.根据权利要求20的方法,其中赋予加权的步骤包括,如果最大带宽的归一化值的比较超出随机数,则将所有黄色流量记录为带宽超额。
23.根据权利要求20的方法,其中所记录的超额是帧大小。
24.根据权利要求20的方法,其中到所述至少两目标器中具有较大带宽超额的那一目标器的指令被拒绝,直到其超出量小于所述至少两目标器中的另一目标器的超出量为止。
25.根据权利要求18的方法,其中每一目标器包括与至少一相应物理逻辑单元通信的至少一虚拟目标器。
26.根据权利要求25的方法,其中监视步骤包括监视从每一所述物理逻辑单元通过相应虚拟逻辑单元的流量。
27.根据权利要求26的方法,其中控制步骤包括拒绝从启动器到虚拟目标器的指令。
28.用在保存和存取数据的系统中的方法,系统包括至少一启动器、至少两虚拟逻辑单元、至少两物理逻辑单元、及至少一具有端口的开关,端口通过开关存取每一物理逻辑单元,所述方法包括监视所述至少两虚拟目标器中的每一个因来自相关物理逻辑单元的流量而耗用的带宽;根据从虚拟目标器返回的流量的加权确定哪一目标器可以使用端口资源;及通过根据目标器的加权拒绝给目标器的附加指令而限制对所述虚拟目标器的存取。
29.根据权利要求28的方法,其中确定步骤包括记录每一虚拟目标器的争用计数。
30.根据权利要求29的方法,其中产生争用计数的步骤包括使用双速率三色标记器标识从物理目标器到虚拟目标器的流量。
31.根据权利要求30的方法,其中产生争用计数的步骤包括将所述双速率之一设定为虚拟目标器的最大带宽,所述双速率中的另一个设定为虚拟目标器的最小带宽。
32.根据权利要求30的方法,其中如果虚拟目标器的最大带宽的归一化值大于为与归一化值比较而产生的随机数,则标记为黄色的流量被记录为争用计数。
33.根据权利要求32的方法,其中所记录的争用计数的数量为帧大小。
34.根据权利要求30的方法,其中标记为绿色的流量被记录为争用计数的减少。
35.根据权利要求30的方法,其中所述拒绝给目标器的附加指令的步骤是基于所记录的每一虚拟目标器的争用计数的比较。
36.根据权利要求30的方法,其中虚拟目标器的具有争用计数超额量的指令被拒绝。
37.根据权利要求36的方法,其中争用计数超额量是存取端口的所有虚拟目标器的争用计数的最小数量。
38.根据权利要求37的方法,其中超额量被减少虚拟目标器的被拒绝指令中所请求的字节数。
39.具有至少一物理端口的存储开关,物理端口提供对至少两目标器的存取,所述存储开关包括与端口联系的负载平衡电路,包括保存每一目标器的记录的存储器,记录包括目标器的最小和最大带宽分配;及与端口联系的处理电路,包括所述至少两目标器中的每一个的带宽监视器,处理电路维护每一目标器使用的带宽的加权记录,如果物理端口被拥塞,其根据记录拒绝给至少一目标器的附加指令。
40.根据权利要求39的开关,其中处理电路包括争用计数发生器和双速率三色计量器和标记器。
41.根据权利要求40的开关,其中争用计数发生器响应于双速率三色标记器标识的流量颜色增加两目标器之一的争用计数记录。
42.根据权利要求40的开关,其中如果标识的颜色为黄色且最大带宽分配的归一化值大于与其比较的随机数,则增加争用计数。
43.根据权利要求40的开关,其中如果标记的颜色为黄色且最大带宽分配的归一化值小于与其比较的随机数,则减少争用计数。
44.根据权利要求40的开关,其中如果标识的颜色为绿色,则减少争用计数。
45.根据权利要求40的开关,其中如果标识的颜色为红色,则增加争用计数。
46.根据权利要求39的开关,其中每一目标器包括与至少一相应物理逻辑单元通信的至少一虚拟目标器。
47.根据权利要求46的开关,其中处理电路包括指令拒绝器,其响应于加权记录拒绝从启动器到虚拟目标器的指令。
48.存储网络,包括启动器;至少两目标器;包括至少一连到启动器的端口的开关,开关提供对目标器的存取,开关包括至少一与端口相关联的处理器,其具有包括所述至少两目标器中的每一个的带宽分配的记录,及用于指示处理器进行下述工作的代码监视所述至少两目标器中的每一个耗用的带宽;根据从目标器返回到端口的流量的加权确定哪一目标器可以使用端口资源;及通过根据目标器的加权拒绝给目标器的附加指令而控制对所述目标器的存取。
49.根据权利要求48的网络,其中所述指示处理器监视带宽的代码包括当从目标器到端口的流量超过目标器的最大允许带宽时向每一目标器赋予加权的代码。
50.根据权利要求49的网络,其中所述指示处理器赋予加权的代码包括基于双速率标记标识从目标器到端口的流量的代码。
51.根据权利要求50的网络,其中所述指示处理器赋予加权的代码包括指示处理器使用双速率三色标识系统标识流量的代码。
52.根据权利要求50的网络,其中所述指示处理器赋予加权的代码包括指示处理器将所有红色标记的流量记录为带宽超额的代码。
53.根据权利要求50的网络,其中所述指示处理器赋予加权的代码包括,如果最大带宽的归一化值的比较超过随机数,则指示处理器将所有黄色流量标识为带宽超额的代码。
54.根据权利要求50的网络,其中所述指示处理器赋予加权的代码包括指示处理器将所记录的超额量记录为帧大小的代码。
55.根据权利要求50的网络,其中所述指示处理器控制存取的代码包括指示处理器拒绝给所述至少两目标器中具有较大带宽超额的那一目标器的指令的代码,直到其超出量小于所述至少两目标器中的另一目标器的超出量为止。
56.用于监视存储开关中的带宽的方法,开关包括至少一物理端口,其经物理端口连接至少一目标器和至少一启动器,该方法包括确定物理端口上是否出现拥塞;根据每一目标器的最小和最大带宽设置对启动器和目标器之间的带宽使用赋予加权。
57.根据权利要求56的方法,其中赋予加权的步骤包括使用双速率三色标记器监视来自目标器的带宽的步骤。
58.根据权利要求57的方法,其中赋予加权的步骤包括将所有红色标记的流量记录为带宽超额。
59.根据权利要求57的方法,其中赋予加权的步骤包括,如果最大带宽的归一化值的比较超出随机数,则将所有黄色流量记录为带宽超额。
60.根据权利要求59的方法,其中所记录的超额是帧大小。
61.根据权利要求59的方法,其中给至少两目标器中具有较大带宽超额的那一目标器的指令被拒绝,直到其超出量小于所述至少两目标器中的另一目标器的超出量为止。
62.根据权利要求56的方法,其中赋予加权的步骤包括确定所有目标器的最小超出量并增加最小超出量作为超额量。
63.根据权利要求56的方法,其中带宽使用是读出指令的结果。
64.根据权利要求56的方法,其中带宽使用是写指令的结果。
全文摘要
包括处理器的开关和监视存储开关中的带宽的方法。开关包括至少一物理端口,其经物理端口连接至少一目标器和至少一启动器。监视方法可包括步骤确定物理端口上是否出现拥塞,根据每一目标器的最小和最大带宽设置对启动器和目标器之间的带宽使用赋予加权。开关还包括根据每一目标器的最小和最大带宽设置控制所述至少两个目标器中的每一个的带宽使用的步骤。
文档编号H04L12/56GK101019355SQ200580013832
公开日2007年8月15日 申请日期2005年4月26日 优先权日2004年4月30日
发明者张超, 罗伯特·托尔·弗雷 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1