专利名称:用于在网络设备端口处执行静止数据加密的方法和装置的利记博彩app
技术领域:
本发明涉及网络技术。更具体而言,本发明涉及用于在网络设备端口
处执行静止数据(data at rest)加密的机制。
背景技术:
数据的安全通常通过数据的加密来获得。虽然数据的加密通常是为了 在数据的传送中保证数据的安全,但是数据一经存储后为了保证其安全也 可对数据进行加密。对存储介质上存储的数据进行的加密通常称为静止数 据(EAR)的加密。具体而言,存储介质上存储的数据在其被存储后仍保 持被加密的。存在很多方法可以加密静止数据。
一种由多个产品实施的执行静止数据的加密的方法是在如下网络设备 处加密数据,所述网络设备负责加密从源网络设备接收的数据然后将加密 的数据提供到存储介质。在诸如存储区域网(SAN)之类的支持多个存储 设备的网络中,网络设备通常负责加密从多个源接收的数据。在这类网络 设备内,加密通常由硬件加速的加密器执行。由于这种单一加密器必须服 务于多个源,因此网络设备的性能受限。
加密静止数据的另一种常用方法是在生成数据的源网络设备处或者在 将存储数据的存储介质处执行加密。在这些方法中,加密用软件执行,因 为硬件加速会严重影响加密源网络设备或存储介质的成本。
虽然这些方法可以提供数据加密的可行解决方案,但是这些方法负担 的吞吐量有限而成本较高。例如,现有网络设备加密数据的吞吐量为每秒 数百兆比特。虽然这些方法足够服务于有限数目的存储介质,但是目前没 有能够负担对多千兆位SAN中存储介质的整个集合的线速(wire-speed) 保护的用于存储静止数据的普遍保护的解决方案。
对于那些想要加密所有存储器的用户,现有解决方案不足以满足该需求。具体而言,在网络设备处执行加密的现有解决方案不能扩展以满足该 需求,而在源或目的地网络设备处执行加密的解决方案经济上不可行。
鉴于上述问题,希望开发一种可扩展的经济的方法来加密静止数据。
发明内容
公开了用于执行静止数据的加密的方法和装置。这是通过在诸如交换 机之类的网络设备的端口处对写入存储器的数据执行加密来部份地完成 的。通过这种方式,静止数据的加密由网络设备端口支持。
在下面的描述中,数据和命令被描述为以帧的形式发送。但是,要注 意的是这些示例仅作说明之用。因此,数据和命令也可以分组的形式发 送。从而,术语"帧"和"分组"可互换使用。
根据本发明的一个方面,诸如交换机之类的网络设备的端口执行静止 数据的加密。具体而言,当网络设备在向诸如盘之类的存储介质写入期间 从主机接收数据时,数据由网络设备端口加密然后加密的数据被发送到存 储介质。更具体而言,当包含数据的帧由网络设备的端口之一接收时,端 口从帧中获得数据。端口加密该数据,生成包含加密数据的修正帧,并将 修正帧发送到它的目的地。目的地可以是诸如盘或磁带的存储介质。
根据本发明的另一方面,诸如交换机之类的网络设备的端口执行静止 数据的解密。具体而言,当主机尝试从存储介质中读取数据时,网络设备 端口从存储介质接收加密数据,对数据进行解密,并将解密的数据发送到 主机。更具体而言,当包含数据的帧由网络设备的端口之一接收时,端口 从帧中获得数据。端口解密该数据,生成包含解密的数据的修正帧,并将 修正帧发送到它的目的地(例如,请求数据的主机)。
根据本发明的另一方面,本发明关于可用来在诸如交换机之类的网络 设备的端口中执行和/或发起所公开的任意一种方法的系统。该系统包括一 个或多个处理器以及一个或多个存储器。至少一个存储器和处理器适于提 供至少某一上述方法操作。在另一个实施例中,本发明关于执行所公开的 方法的计算机程序产品。该计算机程序产品具有至少一个计算机可读介质 和存储在至少一个计算机可读产品内的用于执行至少某一上述方法操作的计算机程序指令。
本发明的以上及其他特征和优点将在通过示例方式说明本发明原理的 本发明的下述说明及附图中更详细地展示。
图1是说明示例性传统存储区域网的框图。
图2是根据本发明的一个实施例说明静止数据的加密或解密可在网络 设备端口处执行的系统的框图。
图3根据本发明的一个实施例说明可维护的示例性密钥表。
图4根据本发明的一个实施例说明可维护的示例性事务(transaction)
图5是说明SCSI写的事务流程图。
图6是根据本发明的一个实施例说明处理写命令的方法的处理流程图。
图7是根据本发明的一个实施例说明向存储介质写数据的方法的处理 流程图。
图8是说明SCSI读的事务流程图。
图9是根据本发明的一个实施例说明处理读命令的方法的处理流程图。
图10是根据本发明的一个实施例说明从存储介质读数据的方法的处 理流程图。
图11是可实施本发明实施例的路由器的示意图。
具体实施例方式
现在详细参考本发明的具体实施例。该实施例的示例在附图中说明。 虽然将连同该具体实施例描述本发明,但是应该理解,不希望将本发明限 制于一个实施例。相反,希望涵盖所附权利要求定义的本发明的精神和范 围内包含的修改、变更和等同物。下面的描述中,为了提供对本发明的完 整理解,提出多个具体细节。实施本发明可能不需要这些具体实施例的某些或全部。在其他示例中,为了不至于不必要地模糊本发明,未详细描述 公知的处理操作。
本发明的实施例支持在网络设备端口处加密静止数据。通过这种方 式,可以加密数据然后将加密的数据存储到与网络设备分开的存储介质上
(例如磁盘、磁带)。类似地,网络设备端口还执行静止数据的解密, 由此使得存储介质上存储的加密数据可被取得。
本发明的公开实施例可在诸如交换机之类的网络设备中实施。注意, 由这类交换机接收和发送的帧和/或分组拥有由诸如以太网或光纤通道
(Fibre Channel)之类的标准协议指定的帧格式。因此,通常用于生成这 类帧的软件和硬件可被本发明使用。根据本发明,可使用额外的硬件和/或 软件来修改和/或生成与标准协议兼容的帧。本领域技术人员将理解如何开 发必要的硬件和软件来使静止数据按下面描述的那样被加密。
另外,本发明的公开实施例逐端口实施。换言之,多端口网络设备
(例如,交换机)令公开的功能在其一个或多个端口上分别实现。各个端 口具有专用逻辑来处理用于由各个端口处理的分组或帧的所公开的功能。 这使得处理能力可以逐端口地与交换机的确切需要严格匹配。
为了支持静止数据的加密和静止数据的解密,由诸如交换机之类的网 络设备生成修正帧,以分别发送到存储设备(在加密静止数据的情况下) 或主机(在解密静止数据的情况下),如下面将要详细描述的那样。很明 显,适当的网络设备应配备适当的软件和/或硬件以执行所公开的功能。当 然,不是存储区域网内的所有网络设备都需要配备所公开的功能。而是, 所选择的交换机和/或端口可配备或适配所公开的功能。类似地,在各种实 施例中,这类功能可通过选择各种模式来使能或禁止。并且,希望将所选 择的网络设备端口配置为能够连续地或者只在使能状态中执行所公开的功 能的端口。
公开实施例可在其中有服务器或其他主机访问存储设备以读或写数据 的网络中实施。可实施公开实施例的一种类型的网络是存储区域网
(SAN)。通常,存储区域网是代表更大用户网络互连不同数据存储设备
和相关数据主机的高速专用网络。
10图1说明示例性传统存储区域网。更具体而言,在存储区域网102
内,可将一组主机(例如服务器或工作站)104、 106、 108连接到一池存 储设备(例如盘)。在SCSI用语中,主机可视为"发起者",存储设备 可视为"目标"。存储池例如可通过一组存储阵列或盘阵列110、 112、 114来实现。每个盘阵列110、 112、 114还对应一组盘。在本示例中,第 一盘阵列110对应盘116、 118,第二盘阵列112对应盘120,第三盘阵列 114对应盘122、 124。常常希望能够将存储器(例如盘)通过盘阵列 110、 112、 114动态且不可见地分配给主机104-108中的每一个,而不是 使所有主机104-108能够访问所有盘116-124。换言之,物理存储器(例如 物理盘)可以通过虚拟存储器(例如虚拟盘)的概念来分配。这使人能以 实现存储器的动态透明分配的方式来将异类的发起者连接到分布式的异类 的目标集合(存储池)。
很多商务存储区域网运行SCSI协议来访问存储站点。通常,存储区 域网使用光纤通道(FC-PH ANSI X3.230-1994, Fibre Channel - Physical and Signaling Interface)作为较低层协议,并在光纤通道协议之上运行SCSI。 注意,本发明不限于这些协议中的任意一个。例如,光纤通道协议可替换 为以太网、Infmiband等协议。此外较高层协议不需要包含SCSI。例如, 主机可使用其他协议来访问存储器。另外要注意,本文使用的SCSI指代 FC上的SCSI、 iSCSI (IP上的SCSI)、并行SCSI (并行电缆上的 SCSI)、串行SCSI (串行电缆上的SCSI)中的任意实现,以及SCSI的 所有其他具体实现。
在下面的描述中,参考使用光纤通道协议发送的SCSI READ和 WRITE命令公开了所描述的实施例。但是,公开实施例仅用于说明。因 此,公开实施例还可使用其他协议来实施。
当主机向存储设备写数据时,数据加密被执行,然后存储数据。类似 地,当主机从存储设备读取加密数据时,数据被解密。在下面的描述中, 这些加密和解密功能由与存储设备分开的诸如交换机或路由器之类的网络 设备的端口来执行。
图2是根据本发明的一个实施例说明其中静止数据的加密和解密可在网络设备端口处执行的系统的框图。主机202可能想将数据存储到存储介
质204中,或者从存储介质204中取得数据。当主机202通过其主机总线 适配器(HBA) 206发送数据时,数据由网络设备端口 207加密然后被发 送到存储介质204,在存储介质204处由其HBA 208接收。类似地,当主 机202从存储介质204取得数据时,数据通过存储介质204的HBA 208发 送,由网络设备端口 207解密,然后被主机202通过其HBA206接收。
如图所示,当网络设备端口 207从主机202接收诸如读或写命令之类 的命令时,端口 207通过解析器210解析该命令以从命令中(例如从头 部)获得并存储信息,从而该信息接下来可被用于使存储或取得的相应数 据视情况而定被加密或解密。该信息可存储在诸如下面参考图4描述的事 务表中。然后将命令不加改变地发送到存储介质204。
为了防止事务表充满,网络设备(例如交换机)可利用发给主机202 的适当消息(例如SCSI错误代码)对读或写命令做出响应。例如,指示 设备暂时不可用和/或稍后再尝试事务的消息可以信号形式告知主机202。
在主机202发送命令且假设事务表未充满之后,数据或者由主机202 发送或者由主机202取得。具体而言,在主机202发送写命令后,主机 202发送由存储介质204存储的数据。例如,当包含数据的写数据帧由端 口 207从主机202接收时,解析器210解析该写数据帧以从该写数据帧的 头部获得信息。然后该头部信息可用于査找和取得与先前收到的写命令相 对应的适当信息。该信息可能指示数据将被加密,还包括可能提供给加密 模块212的加密/解密密钥以及其他信息。
一旦数据被加密且包含加密数据的修正帧(例如写数据帧)由端口 207生成,修正帧可由格式器214格式化然后被发送到存储介质204。具 体而言,诸如循环冗余校验(CRC)或用于验证数据完整性的校验和值之 类的签名可能已添加到由端口 207接收的帧。但是,该签名对应于接收的 数据而非加密的数据。从而,格式器214可用与修正帧相对应的签名替换 原始签名,使得加密数据的完整性可被存储介质204验证。
类似地,在主机202发送读命令后,主机202 (例如,通过读数据 帧)从存储介质204接收数据。然后这一包含数据的帧可被解析以获得头部信息,从而使与对应的读命令有关的信息能被查找和取得。例如,当端
口 207从存储介质204接收到读数据帧时,解析器215解析该读数据帧以 获得头部信息,以便它能够查找和取得对应于读命令的适当信息。该信息 可能指示数据待解密,也可能包含可提供给解密模块216的加密/解密密钥 和其他信息。
一旦数据被解密(例如,通过解密模块),端口 207便生成可被格式 器218格式化的修正帧(例如,读数据帧),然后修正的读数据帧被发送 到主机202。具体而言,若由端口 207接收的读数据帧中出现签名,则格 式器218可用与该读数据帧相对应的签名替换原始签名,使得解密的数据 的完整性可被主机202验证。
要注意虽然说明了两种不同的解析器和格式器,但是该示例仅是说明 性的。因此,单个解析器可用于处理从主机和盘二者接收的帧。类似地, 单个格式器可用于格式化读帧以及写帧。
为了在存储数据之前加密数据并且解密存储的数据,加密/解密密钥可 与每个存储介质相关联。例如,可使用密钥表来存储用于多个存储介质的 密钥。图3根据本发明的一个实施例说明可维护的示例性密钥表302。如 图所示,每个密钥304可与一个特定的存储介质306 (例如盘)相关联。 并且,盘可包含任意数目的LUN,并具有与不同LUN相关联的不同密 钥。如下面将参考图4进一步详细描述的那样,特定事务期间发送的用于 加密/解密数据的密钥可以与与该事务相关的源标识符(S—ID)、目的地标 识符(D—ID)和/或逻辑单元(LUN) —起记录于事务表中。因此存储介 质306 (例如盘)上的区域可用唯一密钥来加密/解密。密钥表302可由网 络设备(例如交换机)或由网络设备的每个端口来维护。密钥发现、创建 和管理可通过本发明的范围之外的各种方式来实现。
一旦为每个存储介质建立了密钥,可能希望周期性修改密钥以保证数 据安全。这可能包括在密钥和事务表中适当地存储新密钥。为使盘上存储 的数据能用旧密钥解密并用新密钥加密,二个密钥都应在交换机处维护直 至不再需要。例如,可维护两个不同的密钥表,其中一个表存储旧密钥而 另一个表存储新密钥。要注意一旦配置了新密钥,盘上存储的加密数据优选地用新密钥加 密。换言之,该数据可用旧密钥解密而用新密钥加密。这可在盘在线或离 线时完成。
若密钥/数据移植在盘在线时执行,可运行后台任务来逐块解密和加密 盘上的数据,直至所有数据都已用该盘的新密钥加密。这可通过例如在起
始LBA处启动块替换并维护指示如下LBA的指针或变量来完成所述 LBA将己用旧密钥加密的数据与已用新密钥加密的数据分开。
或者,可令盘离线来执行密钥/数据移植。例如,可使用第二盘来存储 已用新密钥加密的数据。更具体而言,已用旧密钥加密的数据可从第一盘 取出、用旧密钥解密、用新密钥加密并在第二盘中存储。还利用新密钥对 第二盘执行新的写入。然后第二盘替换第一盘。例如,第二盘上的加密数 据可被复制到第一盘,由此替换已用旧密钥加密的数据。
如上所述,当诸如读或写命令之类的命令由网络设备端口接收时,该 命令被解析且从该命令中获得的信息(例如命令头部)被存储以使后面的 数据能被适当地加密或解密。例如,该信息可存储于事务表中。
图4是根据本发明的一个实施例可维护的示例性事务表。如图所示, 事务表402可存储多个条目。每个条目可存储从帧头部获得的主机标识符 (Host—ID) 404,原始交换标识符(OX—ID) 406 (即交换或事务标识 符),逻辑块地址(LBA) 408,从诸如图3所示的密钥表302之类的数 据结构中获得的密钥(K) 410,从帧头部获得的部分块尺寸412 (帧包含 部分块的情况下),和/或指示对于写命令数据将被加密或对于读命令数据 将被解密的加密/解密指示符414。加密/解密利用密钥410来执行,还可通 过将LBA用作细微差别(nuance)来执行。Host—ID 404可存储源标识符 或目的地标识符。例如,对于写数据帧,Host—ID 404存储从写数据帧头部 获得的源标识符。但是,对于读数据,Host—ID 404存储从读数据帧头部获 得的目的地标识符。OX一ID 406可从光纤通道头部获得,LBA 408可从 SCSI帧头部获得。在帧包含部分块的情况下,部分块尺寸412可用来存储 发送数据的尺寸。类似地,可设置加密/解密指示符414来指示命令是读还 是写命令,分别指示该数据将被解密或加密。或者,与读和写命令相对应的条目可存储于分开的表中。根据一个实施例,事务表402由网络设备的 每个端口维护。若事务表充满且出现新的事务,相应的读或写命令可能被 拦截,使得错误消息被发送到读或写命令的发送者。例如,错误消息可指 示设备暂时不可用,应稍后再尝试该事务。
为了说明本发明的实施例在写期间的应用,在SCSI写期间执行的步 骤示于图5。如图所示,由主机执行的步骤用竖直线502表示,而由盘执 行的步骤用竖直线504表示。如图5所示,主机在506中向盘发送 SCSI—WRITE命令。SCSI—WRITE命令指定要写入盘的数据量。当盘准备 好接收数据时,盘在508中向主机发送转移就绪(XFR—RDY)消息。然 后主机在510、 512中在一个或多个写数据(WDATA)消息中转移数据。 然后盘在514中向主机发送响应(RSP),以确认成功转移数据。
图6是根据本发明的一个实施例说明处理写命令的方法的处理流程 图。当写命令由网络设备(例如交换机)的端口接收时,该命令在602中 被解析以获得标识写命令的源和目的地以及其他信息的字段。例如,源标 识符(例如S一ID)、原始交换标识符(OXJD)和目的地标识符(例如 D一ID)可从诸如光纤通道头部的头部获得。此外,在命令为SCSI命令的 情况下,逻辑单元(LUN)和逻辑块地址(LBA)可从SCSI头部获得。 然后用来加密由主机发送的将存储于磁盘的数据的密钥可在604中获得。 根据一个实施例,使用S—ID、 D—ID和LUN索引如图3所示的密钥表以识 别适当的密钥。如上面参考图3所描述的那样,密钥表可包含先前配置的 密钥和/或新的替代密钥。然后如图4所示的事务表中的条目在606中被填 充。在本示例中,用密钥、主机标识符(S—ID) 、 OX—ID和LBA填充条 目。此外,可设置加密/解密(例如写/读)指示符来指示密钥用于在写期 间加密发送数据。写命令在608中不加改变地发送到目的地。盘(例如 HBA)在610中接收写命令并发送XFR—RDY消息。
在处理了写命令后,随后在事务期间发送的数据可被加密并存储于存 储介质。图7是根据本发明的一个实施例说明向存储介质写数据的方法的 处理流程图。当网络设备端口通过写数据(WDATA)帧以SCSI写的形式 接收数据时,WDATA帧在702中被解析以识别相应的加密密钥。例如,
15WDATA帧可被解析以获得主机标识符(S_ID)和OX一ID。然后如图4所 示的事务表中的相应条目在704中被识别。具体而言,可使用主机标识符
(S一ID)和OX一ID来识别事务表中的条目。从事务表的条目中,用于加 密数据的密钥可被识别。此外,LBA也可被识别。
根据一个实施例,加密引擎执行逐块加密。换言之,加密引擎处理完 整的块(例如,由盘操作系统定义)。因此,为了加密数据,数据块和密 钥在706中被提供给加密引擎。更具体而言,完整的块在呈送给加密引擎 之前可先被收集(例如,在单个分组携带不完整数目的块的情况下)。此 外,指示数据块的起始地址的LBA也可提供给加密引擎,从而使加密引 擎能够利用密钥和LBA来加密该块。具体而言,块在盘中的逻辑位置
(例如LBA)可用作数据加密的细微差别,使得即便两个块包含同样的未 加密数据也能生成唯一的加密数据。每块数据可通过这种方式来加密。
一旦数据被加密,加密结果就可在708中提供给格式器。然后格式器 可在710中适当地生成包含头部的帧(例如光纤通道)、包含加密数据的 有效载荷(例如SCSI)以及签名。各种机制可用于在不通过额外比特增加 帧尺寸的前提下保证数据的完整性。例如,可实施块密码的扩展码簿
(XCB)工作模式来保证数据的完整性。XCB工作模式使得盘块能在不扩 大每块尺寸的前提下被加密。用于实施块密码的XCB工作模式的各种方 法和装置公开于Mcgrew等人2005年8月10日递交的题为"Enciphering
Method"的第_号美国专利申请,该申请通过引用结合于此用于各种目
的。作为另一个示例,J. Viega等人2005年6月发表的题为"The Use of Galois/Counter Mode (GCM) in IPSec Encapsulating Security Payload (ESP)" 的RFC 4106中公开的Galois/Counter模式(GCM)可用于加密磁带,该 RFC通过引用结合于此用于各种目的。然后,生成的帧在712中被发送到 它的目的地。
当数据被写入存储介质时,存储数据的地址通常随着数据的存储而递 增。根据一个实施例,在714中,地址(例如LBA)按己被发送数据量来 递增并在事务表中被更新。
当指示所有数据都已被接收的响应由盘发送并于716由端口接收时,事务表可做相应的更新。为了识别事务表中的适当条目,主机标识符
(D—ID)禾n OX一ID于718从响应中获得。然后在720中利用主机标识符 和OX—ID识别事务表中的相应条目。接着可在722中将该条目删除或标 记为不再有效。
为了说明本发明的实施例在读期间的应用,SCSI读期间执行的步骤示 于图8。如图所示,由主机执行的步骤用竖直线802表示,而由盘执行的 步骤用竖直线804表示。如图8所示,主机在806中发送SCSI—READ命 令给盘。如808、 810所示,盘在一个或多个读数据(RDATA)帧中发送 数据。当请求的所有数据都已被发送时,盘于812向主机发送响应 (RSP)。
图9是根据本发明的一个实施例说明处理读命令的方法的处理流程 图。当网络设备(例如交换机)的端口收到读命令时,它于902解析该读 命令以获得标识读命令的源和目的地以及其他信息的字段。例如,源标识 符(例如S_ID)、原始交换标识符(OX_ID)和目的地标识符(例如 D—ID)可从诸如光纤通道头部的头部获得。此外,在命令为SCSI命令的 情况下,逻辑单元(LUN)和逻辑块地址(LBA)可从SCSI头部获得。 然后用于解密盘存储的数据的密钥可在904中获得。根据一个实施例,使 用S—ID、 D—IS禾卩LUN索引如图3所示的密钥表以识别适当的密钥。如图 4所示的事务表中的条目在906中被填充。在本示例中,用密钥、主机标 识符(S—ID) 、 OXjD和LBA填充条目。此外,可设置加密/解密(例如 写/读)指示符来指示密钥用于在读期间解密接收的数据。读命令在908中 不加改变地发送到目的地。盘(例如HBA)在910中接收读命令。
在处理并发送了读命令后,事务期间发送的数据可从存储介质中读取 并发送到主机。图10是根据本发明的一个实施例说明从存储介质中读数 据的方法的处理流程图。当网络设备端口以SCSI读的形式接收数据时, 读数据帧(RDATA)在1002中被解析以识别相应的解密密钥。例如, RDATA帧可被解析以获得主机标识符(D—ID)和OX—ID。然后如图4所 示的事务表中的相应条目在1004中被识别。具体而言,可使用主机标识 符(D一ID)和OX一ID来识别事务表中的条目。从事务表的条目中,用于解密数据的密钥可被识别。此外,LBA也可被识别。
根据一个实施例,解密引擎执行逐块解密。换言之,解密引擎处理完
整的块。因此,为了解密数据,数据块和密钥在1006中被提供给解密引
擎。更具体而言,完整的块在呈送给解密引擎之前可先被收集(例如,在
单个分组携带不完整数目的块的情况下)。此外,LBA也可提供给解密引 擎,从而使解密引擎能够利用密钥和LBA来解密该块。每块数据可通过 这种方式来解密。
一旦数据被解密,解密结果就可在1008中提供给格式器。然后格式 器可在1010中适当地生成包含头部的帧(例如光纤通道)、包含解密数 据的有效载荷(例如SCSI)以及签名。各种机制可用于在不通过额外比特 增加帧尺寸的前提下保证数据的完整性,如上文关于加密所提出的那样。 然后,生成的帧在712中被发送到它的目的地。
在从存储介质取得数据时,取得数据的地址通常随着数据的取得而递 增。根据一个实施例,地址(例如LBA)按已取得数据量来递增并在 1014处在事务表中被更新。
当指示所请求的数据已被获取的响应由盘发送并于1016由端口接收 时,事务表可做相应的更新。为了识别事务表中的适当条目,主机标识符 (D—ID)禾H OX—ID于1018从响应中获得。然后在1020中利用主机标识 符和OX一ID识别事务表中的相应条目。接着可在1022中将该条目删除或 标记为不再有效。
根据一个实施例,当读或写命令失败时,事务表中的相应条目被删除 或标记为无效。然后可以与新的交换相关联地发送新的写或读命令。与该 新交换相关的信息如上所述被存储于事务表的条目中直至读或写完成。
上述示例是参考完整数目的数据块的存或取来描述的。可以想到单个 块可能在两个不同帧而非单个帧中发送。例如,若一个块包含512字节, 则该块的256字节可在一帧中发送,剩余256字节可在第二帧中发送。一 个简单示例是在两帧中发送5块数据,每帧中发送2.5个块。
根据一个实施例,可使用临时缓冲器来存储部分块直至收到正确数目 的字节。部分块中的字节数可在上面参考图4提出的事务表条目中指示。当已收到的字节数大于等于一个块时,可将部分块相串联以便完整的块可 被加密并发送。结果,交换机可发送与交换机收到的帧数目不同的帧。
在诸如光纤通道网络之类的基于信用(credit)的系统中,初始时刻通
常在每端口基础上分配多个缓冲器。然后根据所分配的缓冲器的使用发出 光纤通道信用。通常,当存储介质向交换机返回信用时,交换机将信用传 递给主机。该信用管理功能假设诸如交换机之类的网络设备接收的帧的数 目等于该交换机发送的帧的数目。
如上所述,根据本发明的各种实施例,诸如交换机之类的网络设备接 收的帧的数目可能不等于交换机由于生成新帧而发送的帧的数目。结果, 已发出的信用的数目将不对应交换机发送的帧的数目,因此也不对应消耗 的缓冲器的数目。根据一个实施例,交换机可担任修改信用管理的"代 理"。换言之,当包含完整块的帧由交换机从包含部分块的两个或多个帧 中生成时,交换机可保存信用并将信用传递给主机。通过这种方式,可修 改信用管理系统以支持部分块的发送。
虽然上面参考公开的实施例描述的网络设备被描述为交换机,但是该 网络设备仅是说明性的。因此,可实施诸如路由器之类的其他网络设备来 接收、处理、修改和/或生成带有诸如上述功能之类的功能的分组或帧用于 在存储区域网中传输。因此可实施其他类型的网络设备来执行所公开的交 换功能。
本发明的装置(例如,交换机或路由器)可针对所需目的而专门构 建,或者可以是由存储器中存储的计算机程序选择性激活或重新配置的通 用可编程机器。本文出现的处理不与任何路由器或其他装置内在相关。在 优选实施例中,实施本发明的实施例的任何装置可以是专用路由器,如加
州San Jose的Cisco Systems公司有售的1700、 1800、 2500、 2600、 3200、 3600、 4000、 4500、 4700、 7200、 9000和7500型号的专用路由器 模型。这些机器的一般结构见下面的描述。
通常,本发明的技术可在软件和/硬件上实施。例如,它可在操作系统 内核中、单独的用户进程中、绑入网络应用程序的库程序包中、专用机器 上或者网络接口卡上实施。在本发明的具体实施例中,本发明的技术在诸
19如操作系统之类的软件中或者在操作系统上运行的应用程序中实施。
本发明的软件或软/硬件混合路由优化系统优选地在由存储器中存储的 计算机程序选择性激活或重新配置的通用可编程机器上实施。这类可编程 机器可以是设计为处理网络流量的网络设备。这类网络设备通常具有多个 网络接口,例如包括帧中继、ISDN和无线接口。这类网络设备的具体示 例包括路由器和交换机。例如,本发明的漫游系统可以是专用路由器,如
加州San Jose的Cisco Systems公司有售的350, 1100, 1200, 1400, 1600, 2500, 2600, 3200, 3600, 4500, 4700, 7200, 7500, 9000和12000型号的专用路 由器模型。这些机器中有些机器的一般结构见下面的描述。在替代实施例 中,加密系统可在诸如个人计算机或工作站之类的通用网络主机上实施。 另外,本发明可以在用于网络设备或通用计算设备的卡(例如接口卡)上 至少部分地实施。
现在参考图11,适于实施本发明的路由器1110包括主中央处理单元 (CPU) 1162、接口 1168和总线1115 (例如PCI总线)。当在适当的软 件或固件的控制下运作时,CPU 1162负责如路由表计算和网络管理之类的 路由任务。它还可负责更新移动绑定和来宾表等。它优选地在包括操作系 统(例如Cisco Systems公司的互连操作系统(IOS ))和任何适当的应 用软件在内的软件的控制下完成所有这些功能。CPU 1162可包含一个或多 个处理器1163,如来自Motorola微处理器家族或MIPS微处理器家族的处 理器。在替代实施例中,处理器1163是专门设计为控制路由器1110的操 作的硬件。在具体实施例中,存储器1161 (如非易失性RAM和/或 ROM)也构成CPU 1162的一部分。但是,存在很多能将存储器连接到系 统的不同方法。
接口 1168通常作为接口卡(有时称为"线路卡")提供。通常,它 们控制数据分组在网络上的发送和接收,有时支持与路由器1110 —起使 用的其他外设。可提供的接口有以太网接口、帧中继接口、线缆接口、 DSL接口、令牌环接口等。此外,可提供各种甚高速接口,如快速令牌环 接口、无线接口、以太网接口、千兆以太网接口、 ATM接口、 HSSI接 口、 POS接口、 FDDI接口等。通常,这些接口可包括适合与适当介质通信的端口。在有些情况下,它们还可包括独立的处理器,并且在有些情况 下包含易失性RAM。独立处理器可控制如分组交换、介质控制和管理之 类的通信密集型任务。通过为通信密集型任务提供单独的处理器,这些接 口使主微处理器1162能有效地执行路由计算、网络诊断、安全功能等。
虽然图11示出的系统是本发明的一个具体路由器,但它绝不是可以 实施本发明的唯一路由器结构。例如,具有单个处理器来处理通信和路由 计算等的结构常被使用。另外,其他类型的接口和介质也可与路由器一起 使用。
无论网络设备的配置如何,它都可以采用配置为存储程序指令的一个
或多个存储器或存储器模块(包括存储器1161),所述程序指令用于本文
描述的用于漫游、路由优化和路由功能的通用网络操作和机制。所述程序 指令例如可控制操作系统和/或一个或多个应用程序的操作。 一个或多个存 储器还可配置为存储表格,如移动绑定、注册和关联表等。
由于这类信息和程序指令可用来实施本文描述的系统/方法,因此本发 明涉及包含用于执行本文描述的各种操作的程序指令、状态信息等的机器 可读介质。机器可读介质的示例包括但不限于诸如硬盘、软盘和磁带之类
的磁介质,诸如CD-ROM之类的光介质,诸如可光读的磁盘之类的磁光 介质,以及诸如只读存储设备(ROM)和随机存取存储器(RAM)之类 专门用于存储和执行程序指令的硬件设备。本发明还可具体化为载波在诸 如无线电、光线、电线等适当介质上传输的计算机可读介质。程序指令的 示例同时包括诸如由编译器产生的机器码和包含可由计算机使用解释器运 行的较高层代码的文件。
虽然为了澄清理解详细描述了上述发明,但是很明显可在所附权利要 求的范围内进行某些变更和修改。并且,虽然描述的示例主要提到光纤通 道网络,但是本发明可与其他协议一起使用。因此,应将描述的实施例视 为说明性而非限制性的,且本发明不应限于本文给出的细节,而是由所附 权利要求及其等同物的完整范围所限定。
权利要求
1.一种在具有多个端口的网络设备中加密数据的方法,包括由所述多个端口之一接收包含数据的帧,所述帧具有包含源地址和目的地地址的头部;由所述多个端口之一从所述帧中获得所述数据;由所述多个端口之一加密所述数据以生成加密数据;由所述多个端口之一生成包含所述加密数据的修正帧以生成包含所述加密数据的修正帧;以及由所述多个端口之一将所述包含加密数据的修正帧发送到所述目的地地址。
2. 如权利要求1所述的方法,其中所述网络设备是交换机。
3. 如权利要求1所述的方法,其中所述源地址标识主机且所述目的地 地址标识存储介质,所述方法还包括从所述主机接收写命令帧并将所述写命令帧发送到所述存储介质,其 中接收写命令帧和发送写命令帧先于接收所述包含数据的帧执行。
4,如权利要求3所述的方法,还包括从所述存储介质接收信用;以及当所述修正帧被生成并发送时,将所述信用发送到所述主机。
5. 如权利要求3所述的方法,还包括从一组密钥表之一中取得与所述存储介质相关的密钥,所述一组密钥 表包括第一密钥表和第二密钥表,所述第一密钥表存储用于多个存储介质 中的每一个的第一密钥,所述第二密钥表存储用于所述多个存储介质中的 每一个的第二密钥。
6. 如权利要求1所述的方法,其中发送所述修正帧通过传输协议来执 行,其中所述传输协议是光纤通道或iSCSI。
7. 如权利要求1所述的方法,其中所述帧是包含一组块的SCSI帧。
8. 如权利要求1所述的方法,其中生成修正帧包括 将签名附加到所述修正帧,其中所述签名对应于所述加密数据。
9. 如权利要求7所述的方法,还包括在接收所述包含数据的帧之前接收命令帧,所述命令帧包含写命令; 解析所述命令帧以获得源标识符、目的地标识符、LUN、交换标识符 和逻辑块地址;识别与所述源标识符、目的地标识符和LUN相对应的密钥; 在事务表中填充条目,以使得所述条目包括所述密钥、含有所述源标 识符的主机标识符、所述交换标识符和所述逻辑块地址;以及 将所述命令帧发送到所述目的地标识符。
10. 如权利要求9所述的方法,还包括设置指示符,所述指示符指示所述命令帧包含写命令,从而指示所述 数据将被加密。
11. 如权利要求9所述的方法,还包括 从所述包含数据的帧中获得所述源标识符和交换标识符;在所述事务表中识别条目,所述条目具有从所述包含数据的帧中获得的交换标识符以及含有所述源标识符的主机标识符;获得所述事务表条目中与所述源标识符和交换标识符相对应的密钥和 逻辑块地址;利用所述密钥和逻辑块地址加密所述数据以生成加密数据。
12. 如权利要求11所述的方法,还包括 更新所述事务表条目中的逻辑块地址。
13. 如权利要求11所述的方法,还包括当收到响应或所述写命令失败时,从所述事务表中删除所述条目。
14. 如权利要求11所述的方法,其中所述包含数据的帧是包含一组块 的SCSI帧,并且其中所述利用密钥和逻辑块地址加密数据针对所述一组 块中的一个块执行一次。
15. 如权利要求7所述的方法,其中加密所述数据包括加密所述一组块中的一个块。
16. —种在具有多个端口的网络设备中解密数据的方法,包括由所述多个端口之一接收包含数据的帧,所述帧具有包含源地址和目的地地址的头部;由所述多个端口之一从所述帧中获得所述数据;由所述多个端口之一解密所述数据以生成解密数据;由所述多个端口之一生成包含所述解密数据的修正帧以生成包含所述解密数据的修正帧;以及由所述多个端口之一将所述包含解密数据的修正帧发送到所述目的地地址。
17. 如权利要求16所述的方法,其中所述源地址标识存储介质且所述 目的地地址标识主机,所述方法还包括从所述主机接收读命令帧并将所述读命令帧发送到所述存储介质,其 中接收所述读命令帧和发送所述读命令帧先于接收所述包含数据的帧执 行。
18. 如权利要求16所述的方法,其中所述网络设备是交换机。
19. 如权利要求16所述的方法,其中发送所述修正帧通过传输协议来 执行,其中所述传输协议是光纤通道或iSCSI。
20. 如权利要求16所述的方法,其中所述帧是包含一组块的SCSI
21. 如权利要求16所述的方法,其中生成所述修正帧包括 将签名附加到所述修正帧,其中所述签名对应于所述解密数据。
22. 如权利要求20所述的方法,还包括在接收所述包含数据的帧之前接收命令帧,所述命令帧包含读命令; 解析所述命令帧以获得源标识符、目的地标识符、LUN、交换标识符 和逻辑块地址;识别与所述源标识符、目的地标识符和LUN相对应的密钥; 在事务表中填充条目,以使得所述条目包括所述密钥、含有所述源标 识符的主机标识符、所述交换标识符和所述逻辑块地址;以及 将所述命令帧发送到所述目的地标识符。
23. 如权利要求22所述的方法,还包括设置指示符,所述指示符指示所述命令帧包含读命令,从而指示所述数据将被解密。
24. 如权利要求22所述的方法,还包括 从所述包含数据的帧中获得所述目的地标识符和交换标识符; 在所述事务表中识别条目,所述条目具有从所述包含数据的帧中获得的所述交换标识符以及含有所述目的地标识符的主机标识符;获得所述事务表条目中与所述目的地标识符和所述交换标识符相对应的所述逻辑块地址和所述密钥;利用所述密钥和逻辑块地址解密所述数据以生成所述解密数据。
25. 如权利要求24所述的方法,还包括 更新所述事务表条目中的逻辑块地址。
26. 如权利要求24所述的方法,还包括当收到响应或所述读命令失败时,从所述事务表中删除所述条目。
27. 如权利要求24所述的方法,其中所述包含数据的帧是包含一组块 的SCSI帧,并且其中所述利用密钥和逻辑块地址解密数据针对所述一组 块中的一个块执行一次。
28. 如权利要求20所述的方法,其中解密所述数据包括 解密所述一组块中的一个块。
29. 如权利要求1所述的方法,还包括 在接收所述包含数据的帧之前接收命令帧;以及 当事务表充满时,响应于所述命令帧发送错误消息。
30. —种具有多个端口的网络设备,所述网络设备适合于加密数据, 包括用于由所述多个端口之一接收包含数据的帧的装置,所述帧具有包含源地址和目的地地址的头部;用于由所述多个端口之一从所述帧中获得所述数据的装置;用于由所述多个端口之一加密所述数据以生成加密数据的装置;用于由所述多个端口之一生成包含所述加密数据的修正帧以生成包含所述加密数据的修正帧的装置;以及用于由所述多个端口之一将所述包含加密数据的修正帧发送到所述目的地地址的装置。
31. —种具有多个端口的网络设备,所述网络设备适合于解密数据, 包括处理器;以及存储器,所述处理器和存储器中的至少一个被配置用于 由所述多个端口之一接收包含数据的帧,所述帧具有包含源地址和目的地地址的头部;由所述多个端口之一从所述帧中获得所述数据;由所述多个端口之一解密所述数据以生成解密数据;由所述多个端口之一生成包含所述解密数据的修正帧以生成包含所述解密数据的修正帧;以及由所述多个端口之一将所述包含解密数据的修正帧发送到所述目的地 地址。
全文摘要
公开了用于在诸如交换机之类的网络设备端口处执行静止数据加密的方法和装置。具体而言,当数据在写入诸如盘之类的存储介质期间从主机被接收时,数据由端口加密然后加密的数据被发送到存储介质。类似地,当主机尝试从存储介质中读取数据时,网络设备端口从存储介质接收加密数据,对数据进行解密,并将解密的数据发送到主机。通过这种方式,静止数据的加密和解密由网络设备端口支持。
文档编号H04L9/00GK101554009SQ200680023522
公开日2009年10月7日 申请日期2006年10月30日 优先权日2005年10月31日
发明者乔纳森·帕尔兰, 帕万·阿格利瓦, 法彼奥·R·麦诺, 盈·黄, 雷蒙德·J·克洛特 申请人:思科技术公司