用于串流存储装置中的高效内容高速缓冲存储的系统和方法
技术领域
本发明大体上涉及内容中心网络(CCN)。更具体来说,本发明涉及用于CCN中的高效内容高速缓冲存储的系统和方法。
背景技术
因特网和电子商务的增殖持续激发网络行业中的革命性改变。当今,从在线电影观看到每日新闻递送、零售销售和即时消息接发,大量的信息交换是在线进行的。越来越多数目的因特网应用程序也在变成移动的。然而,当前因特网在主要基于位置的寻址方案上操作。两种最普遍存在的协议:因特网协议(IP)和以太网协议,都是以基于位置的地址为基础。也就是说,内容的消费者仅可通过从与物理对象或位置接近地相关联的地址(例如,IP地址或以太网媒体接入控制(MAC)地址)明确请求内容而接收所述内容。此限制性寻址方案正变得逐渐更不足以满足不断改变的网络需求。
最近,行业中已经提出内容中心网络(CCN)架构。CCN带来内容输送的新方法。并非在应用级将网络业务视为内容在其上行进的端到端对话,而是基于内容的唯一名称来请求或返回内容,且网络负责将内容从提供者路由到消费者。应注意,内容包含可在通信系统中输送的数据,包含例如文本、图像、视频和/或音频等任何形式的数据。消费者和提供者可为在计算机旁的人或在CCN内部或外部的自动过程。一条内容可指代整个内容或内容的相应部分。举例来说,报纸文章可能由体现为数据包的多条内容表示。一条内容也可与元数据相关联,所述元数据以例如验证数据、创建日期、内容所有者等信息来描述或增强所述条内容。
在CCN中,内容对象和兴趣是由其名称识别,通常是阶层式结构化可变长度识别符(HSVLI)。当在CCN节点处接收到对一条内容的兴趣时,检查本地内容高速缓冲存储器以查看正请求的内容是否存在。另外,CCN节点可选择性高速缓冲存储流行的内容对象以增加网络响应速率。
发明内容
本发明的一个实施例提供用于将内容数据高速缓冲存储到内容中心网络CCN中的串流存储装置的系统。所述系统维持存储器内索引表。所述索引表中的相应条目指定所述串流存储装置中的磁盘位置。在操作期间,所述系统接收内容包,基于所述内容包中包含的一或多个标头字段计算用于所述内容包的索引,将所述计算的索引映射到所述存储器内索引表中的对应条目,将所述内容包写入到所述串流存储装置中,且基于所述内容包写入到的磁盘位置更新所述存储器内索引表中的所述经映射条目。
在此实施例的一个变型中,系统维持经配置以参考待决磁盘操作的存储器内操作缓冲器。
在此实施例的另一变型中,存储器内操作缓冲器包含识别所述串流存储装置中的同一块上的待决磁盘操作集合的链接列表。
在此实施例的一个变型中,所述一或多个标头字段包含以下各项中的至少一者:相似性散列和转发散列。
在另一变型中,计算索引涉及将相似性散列和转发散列的组合散列为较短长度串。
在此实施例的一个变型中,系统维持经配置以指向用于写入内容包的下一可用磁盘位置的尾指针,且在所述串流存储装置中写入内容包之后更新所述尾指针。
在此实施例的一个变型中,串流存储装置包含多个磁盘,且索引表中的相应条目包含磁盘编号和块编号。
在此实施例的一个变型中,系统接收兴趣包,计算兴趣包的索引,将兴趣包的索引映射到存储器内索引表中的条目,从映射到兴趣的索引的条目提取磁盘位置,读取存储在所提取磁盘位置处的内容数据,且返回所述内容数据作为对兴趣包的响应。
在另一变型中,系统增加与内容数据相关联的流行性等级,且响应于确定与内容数据相关联的流行性等级高于预定等级,系统将内容数据移动到串流存储装置内的流行扇区以防止内容数据将来被覆写。
附图说明
图1图解说明根据本发明的实施例的网络的示范性架构。
图2呈现说明根据本发明的实施例的SH-FH组合与磁盘位置之间的示范性映射的图。
图3呈现说明根据本发明的实施例的示范性磁盘块的格式的图。
图4呈现说明根据本发明的实施例的含有内容对象片段的示范性磁盘块的图。
图5呈现呈现根据本发明的实施例的CCN启用节点的示范性架构的图。
图6呈现说明根据本发明的实施例的用于串流存储装置中的内容高速缓冲存储的示范性数据结构的图。
图7A呈现说明根据本发明的实施例的串流存储装置的示范性第一时间初始化过程的流程图。
图7B呈现说明根据本发明的实施例的在干净关闭之后的示范性初始化过程的流程图。
图7C呈现说明根据本发明的实施例的在不正常关闭之后的示范性初始化过程的流程图。
图8呈现说明根据本发明的实施例的处理兴趣的过程的流程图。
图9呈现说明根据本发明的实施例的块读取过程的图。
图10呈现说明根据本发明的实施例的处理串流存储装置中的接收内容对象的过程的图。
图11呈现说明根据本发明的实施例的在响应于兴趣的DMA读取之后的示范性检验过程的图。
图12呈现说明根据本发明的实施例的在响应于内容对象的DMA读取之后的示范性系统过程的图。
图13图解说明根据一实施例的用于串流存储装置中的内容高速缓冲存储的示范性系统。
在图式中,相同参考数字指代相同图式元件。
具体实施方式
概述
本发明的实施例提供用于在串流存储装置中高速缓冲存储内容数据且产生存储器内索引表以允许快速内容检索的系统和方法。更具体来说,内容对象的CCN名称或对应散列函数经向下散列到较小大小的索引串,其用以对存储器内高速缓冲存储器表编索引。存储器内高速缓冲存储器表中的条目识别内容对象经高速缓冲存储的对应位置。由于磁盘存取等待时间,系统建立存储器内操作缓冲器以在兴趣和内容对象等待处理时保持所述兴趣和内容对象。
一般来说,CCN使用两个类型的消息:兴趣和内容对象。兴趣携载内容对象的阶层式结构化可变长度识别符(HSVLI),也称为“名称”,且充当针对所述对象的请求。如果网络元件(例如,路由器)接收到对同一名称的多个兴趣,那么其可聚合那些兴趣。沿着关于匹配内容对象的兴趣的路径的网络元件可高速缓冲存储且返回所述对象,从而满足所述兴趣。内容对象遵循兴趣到所述兴趣的起源的反向路径。除了其它信息之外,内容对象含有同一HSVLI、对象的有效负载和用以将HSVLI绑定到有效负载的密码信息。
本发明中使用的术语大体上如下界定(但其解译不限于此):
“HSVLI”:阶层式结构化可变长度识别符,也称为名称。其是名称组件的有序列表,其可为可变长度八位位组串。以人可读形式,其可以例如ccnx:/path/part的格式表示。不存在主机或查询串。如上所述,HSVLI涉及内容,且它们能够表示用于内容的有组织结构且至少部分对人有意义是合意的。HSVLI的个别组件可具有任意长度。此外,HSVLI可具有明确定界的组件,可包含任何字节序列,且不限于人可读字符。最长前缀匹配查找在以HSVLI转发包时是重要的。举例来说,指示对“/parc/home/bob”的兴趣的HSVLI将匹配“/parc/home/bob/test.txt”和“/parc/home/bob/bar.txt”两者。在名称组件的数目方面,最长匹配被视为最佳的,因为其是最特定的。
“兴趣”:对内容对象的请求。兴趣指定HSVLI名称前缀和其它任选的选择器,所述选择器可用以在具有相同名称前缀的多个对象当中进行挑选。名称匹配兴趣名称前缀和选择器的任何内容对象满足所述兴趣。
“内容对象”:响应于兴趣而发送的数据对象。其具有经由密码签名而绑定在一起的HSVLI名称和内容有效负载。任选地,所有内容对象具有由内容对象的SHA-256摘要组成的隐式终端名称组件。在一个实施例中,隐式摘要不在线上传送,但在需要时在每一跃点处计算。
“相似性散列”:在兴趣中,名称和称为选择器的几个字段限制了匹配所述兴趣的可能内容对象。它们结合在一起唯一地识别所述兴趣中的查询。相似性散列是在这些字段上的散列。具有相同SH的两个兴趣被视为相同查询。
“转发散列”:转发散列(FH)表示沿着匹配兴趣名称的数据路径的各种转发装置(例如,路由器、交换器等)中的路由表中的最长匹配前缀。FH是基于兴趣包的名称的一或多个组件而计算。一般来说,兴趣包的源节点可基于名称组件的最高层级阶层(其中最高阶层是“/”)计算FH。
如之前所提到,HSVLI指示一条内容,经阶层式结构化,且包含从最一般层级到最特定层级排序的连续组件。相应HSVLI的长度不是固定的。在内容中心网络中,不同于常规IP网络,包可由HSVLI识别。举例来说,“abcd/bob/papers/ccn/news”可为内容的名称且识别对应包,即,在名为“ABCD”的组织处针对名为“Bob”的用户的来自“ccn”论文收集的“新闻”文章。为了请求一条内容,节点通过所述内容的名称来表达(例如,广播)对所述内容的兴趣。对一条内容的兴趣可为根据所述内容的名称或识别符对所述内容的查询。在网络中可用的情况下,内容从存储所述内容的任何节点路由回到网络。路由基础结构将兴趣智能地传播到很可能具有所述信息的前瞻性节点且随后沿着所述兴趣穿越的路径携载可用的内容返回。
图1图解说明根据本发明的实施例的网络的示范性架构。在此实例中,网络180包括节点100到145。网络中的每一节点耦合到一或多个其它节点。网络连接185是此类连接的实例。网络连接展示为实线,但每一线也可表示可将一个节点耦合到另一节点的子网络或超网络。网络180可为内容中心的本地网络、超网络或子网络。这些网络中的每一者可经互连以使得一个网络中的节点可到达其它网络中的节点。网络连接可为宽带、无线、电话、卫星或任何类型的网络连接。节点可为计算机系统、表示用户的端点和/或可产生兴趣或发源内容的装置。
根据本发明的实施例,消费者可产生对一条内容的兴趣且随后将所述兴趣发送到网络180中的节点。所述条内容可由可位于网络内部或外部的出版商或内容提供者存储在网络180中的节点处。举例来说,在图1中,对一条内容的兴趣在节点105处发源。如果所述内容在所述节点不可用,那么所述兴趣流动到耦合到所述第一节点的一或多个节点。举例来说,在图1中,兴趣流动(兴趣流150)到并不具有可用的所述内容的节点115。接着,所述兴趣从节点115流动(兴趣流155)到再次并不具有所述内容的节点125。所述兴趣随后流动(兴趣流160)到确实具有可用的所述内容的节点130。内容的所述流随后反向地回溯其路径(内容流165、170和175)直到其到达递送所述内容的节点105。在所述内容流中可涉及例如验证等其它过程。
在网络180中,在内容持有者(节点130)与兴趣产生节点(节点105)之间的路径中的任何数目的中间节点(节点100到145)可参与在内容在网络上行进时高速缓冲存储所述内容的本地副本。高速缓冲存储通过隐式地共享对本地高速缓冲存储内容的存取而减少对位于接近其它订户处的第二订户的网络负载。
如先前所描述,在CCN中,期望具有高速缓冲存储内容的本地副本的中间节点。这要求中间节点具有大存储容量,因为穿过网络的内容流的量可为巨大的。另外,内容数据流的速度可较高,因为快速CCN路由器能够每秒处理数千万的内容包。举例来说,100Gbps(每秒千兆位)线卡可每秒处理超过4百万对象(假定兴趣和对象的大小各自是1500字节)。因此,需要快速高效的高速缓冲存储机制。
在本发明的一些实施例中,允许在正接收内容数据(例如视频文件)时高速缓冲存储它们且允许新数据覆写旧数据的串流存储装置用于内容高速缓冲存储。为了在高速下高速缓冲存储大量数据,所述串流存储装置可包含多个大容量(例如250GB或1TB)磁盘,其可包含磁性硬盘驱动器或固态驱动器(SSD)。应注意,通过实施多个磁盘,并行串流可用以实现高处理量。典型磁盘可实现多达150MB/秒的持久处理量。举例来说,(加利福尼亚库珀蒂诺市的希捷技术公司的注册商标)3.5″视频硬盘驱动器可维持146MB/秒的速度的读取和写入。为了以12.5GB/秒存储数据,系统需要并行地在100个磁盘上写入数据。固态驱动器(SSD)可提供较高处理量。为了存储相同的12.5GB/秒数据,可需要仅大约50个SSD。
除并行操作之外,为了确保高速,实施高效的编索引机制。在一些实施例中,产生存储器内高速缓冲存储器表,其具有指向对应高速缓冲存储内容包的磁盘位置的条目。此外,为了确保快速表查找,以充分短的串对存储器内高速缓冲存储器表编索引。当网络中实施散列转发时,每一内容对象或兴趣包含散列标头,所述散列标头包含相似性散列(SH)和转发散列(FH)。计算相似性散列以唯一地识别一条内容,且相似性散列可为内容包中的名称和一或多个字段的散列。转发散列是基于兴趣包的名称的一或多个组件而计算。散列转发、相似性散列和转发散列的详细描述可参见由发明人马可·E·莫斯科和迈克尔·F·普拉斯在2013年10月29日申请的标题为“用于具有阶层式结构化可变长度识别符的包的基于散列的转发的系统和方法”的第14/065,961号(代理人案号PARC-20130997US01)美国专利申请案。
在一些实施例中,SH和/或FH可在每一跃点计算(如果这些值尚未包含在包标头中)。系统还可使用除了所陈述SH和FH之外的值用于编索引目的。举例来说,系统可仅通过内容对象的内容对象散列而高速缓冲存储内容对象,所述内容对象散列是整个内容对象的SHA 256散列且仅通过散列值响应于要求数据的兴趣。
SH和FH的组合可唯一地识别兴趣和响应于兴趣的内容对象。虽然可能使用此类组合对存储器内高速缓冲存储器表编索引,但此类组合可包含长位串,从而消耗索引查找时间。举例来说,SH和FH各自可为128位长,且其组合(通过串联)将为256位长,这可使表查找的计算代价较大。在一些实施例中,为了简化表查找过程,将SH-FH组合向下散列到较短长度索引。举例来说,256位SH-FH组合可向下散列到34位串,其可随后用以对存储器内高速缓冲存储器表编索引。也可能使用甚至更短的串作为索引,例如具有28与32位之间的长度的串。高速缓冲存储器表中的条目指示存储于串流存储装置中的内容对象的位置。举例来说,条目可包含磁盘编号、块编号以及指示由对应内容对象占据的块的数目的计数。高速缓冲存储器条目中还可包含额外字段。应注意应使用抗冲突散列函数来散列SH-FH组合以确保攻击者无法容易地致使系统覆写现有内容。在一些实施例中,所述系统使用CRC-64-ECMA-182的较低位来散列SH-FH组合。应注意此散列函数计算极快速,且在硬件中可用。例如FVN-1a散列算法或SipHash或其它硬件支持散列函数等其它类型的算法也可用以计算索引。
图2呈现说明根据本发明的实施例的SH-FH组合与磁盘位置之间的示范性映射的图。在图2中,将256位SH-FH组合串202(包含内容对象的SH和FH字段)向下散列到较短长度索引204。在一些实施例中,较短长度索引204可在28与32位长之间。较短长度索引204映射到高速缓冲存储器表206中的条目,例如条目208。高速缓冲存储器表206中的每一条目可包含磁盘编号字段210(可为8位长)、块编号字段212(可为28位长)以及块计数字段214(可为4位长)。磁盘编号字段210指示对应内容对象位于哪一磁盘(例如磁盘216)。块编号字段212指示在磁盘内内容对象占据的是从哪一块(例如块218)开始。块计数字段214指示内容对象占据的块的总数。应注意,每次将新内容对象高速缓冲存储到串流存储装置中时,高速缓冲存储器表206中的对应条目(基于SH-FH组合)经更新。更具体来说,高速缓冲存储器条目中的磁盘编号字段和块编号字段经更新以反映内容对象高速缓冲存储到的位置。
为了确保传入内容包在串流存储装置中连续高速缓冲存储,所述系统维持尾指针220,其指示将使用的下一可用块。在一些实施例中,尾指针包含磁盘编号和块编号。当将新内容对象写入到串流存储装置中时,系统查找当前尾指针,使用尾指针更新高速缓冲存储器表中的对应条目,且根据存储内容对象需要的块的数目向前移动尾指针。应注意,以磁盘大小为模来递增尾指针。当到达磁盘的末端(以块计)时,尾指针绕回到磁盘的开始。在图2中所示的其中使用多个磁盘的实例中,所述绕回可包含磁盘编号。或者,尾指针可先在磁盘上递增,随后作为较慢的循环在磁盘上的块上递增。在尾指针绕回时,系统需要首先读取一块且确定所述块是否由索引条目(高速缓冲存储器表中的条目)使用。如果是,那么系统在将新索引条目写入到包含磁盘块标头的所指示位置之前使索引条目无效。这是针对为连续内容对象写入的每一块而完成。
图3呈现说明根据本发明的实施例的示范性磁盘块的格式的图。在图3中,磁盘块300包含磁盘块标头字段302和数据字段304。磁盘块标头字段302进一步包含索引字段306、SH字段308、FH字段310和编号字段312。索引字段306包含SH-FH组合的向下散列索引,SH字段308包含相似性散列,FH字段310包含转发散列,且编号字段312包含块序列(如果内容对象占据多个连续块)。举例来说,编号字段312中的数字“2”指示当前块是从内容对象的开始(块“0”)计数的第三块。在一些实施例中,块大小是4KB(千字节)。举例来说,对于多达64KB的CCN内容对象,将需要16个4KB块,从而需要高速缓冲存储器表条目中的4位块计数字段。也可能具有其它块大小。
图4呈现说明根据本发明的实施例的含有内容对象片段的示范性磁盘块的图。在图4中,磁盘块400包含磁盘块标头字段402和数据字段404。磁盘块标头字段402类似于磁盘块标头字段302,且包含索引字段、SH字段、FH字段和编号字段。数据字段404包含以接收次序写入的许多内容对象片段。应注意每一片段包含例如CCN标头406的CCN标头,和例如CCN片段数据字段408的CCN片段数据字段。片段不需要依序写入。应注意此处我们假定没有片段大于磁盘块大小减磁盘块标头大小。如果CCN片段横跨多个磁盘块,那么可能需要对高速缓冲存储算法的稍微修改。CCN中的内容对象的片段标头的详细描述可参见由发明人马可·E·莫斯科在2013年10月30日申请的标题为“用于内容中心网络中的最小路径MTU发现的系统和方法”的第14/067,857号(代理人案号PARC-20130874US01)美国专利申请案。
为了确保高速读取和写入,在一些实施例中,系统在例如随机存取存储器(RAM)的快速存储器中维持索引表(或高速缓冲存储器表)。或者,系统可使用经页交换到所述RAM的基于磁盘的索引。存储器内索引需要足够大以覆盖串流存储装置中的所有4KB块,意味着存储器内高速缓冲存储器表需要包含足够数目的索引条目。对于具有多达1TB(百万兆字节)容量的串流存储装置,将需要256,000,000的索引条目。如果每一条目是40位长,那么高速缓冲存储器表将需要10.24GB的RAM。对于具有16TB串流存储装置的系统,将需要160GB的RAM。在一些实施例中,系统可包含100个磁盘,各自具有250GB容量,因此提供25TB的总存储容量。如先前所描述,并行使用100个磁盘可提供超过12.5GB/秒的串流速度。
图5呈现呈现根据本发明的实施例的CCN启用节点的示范性架构的图。在图5中,CCN启用节点500包含包处理模块502、散列模块504、磁盘管理模块506、高速缓冲存储器表508和磁盘存取模块510。包处理模块502负责处理所接收的包,其为兴趣或内容对象。在一些实施例中,CCN启用节点500实施散列转发,且包处理模块502从所接收包的标头提取相似性散列和转发散列。散列模块504负责将SH-FH组合串向下散列到较短长度索引串。在一些实施例中,散列模块504可使用某些抗冲突散列函数,例如CRC-64-ECMA-182的较低位和FVN-1a算法。磁盘管理模块506负责维持将索引映射到磁盘位置的高速缓冲存储器表508。此外,磁盘管理模块506控制存取适当磁盘位置用于读取和写入操作的磁盘存取模块510。在一些实施例中,当写入到串流存储装置时,磁盘存取模块510将磁盘块标头添加到每一内容数据块。应注意,还可能需要例如包缓冲器或操作缓冲器等其它数据结构来实现内容数据的高速缓冲存储且图5中不包含所述数据结构。
由于磁盘存取(读取或写入)等待时间,需要操作缓冲器来在执行兴趣和内容对象的磁盘操作之前保持所述兴趣和内容对象。在一些实施例中,为了确保高速,还在快速存储器中维持操作缓冲器。此存储器内操作缓冲器可实施为循环缓冲器或自由列表。更具体来说,操作缓冲器保持指向包缓冲器的指针以允许依序执行等待同一磁盘块的多个操作。
图6呈现说明根据本发明的实施例的用于串流存储装置中的内容高速缓冲存储的示范性数据结构的图。在图6中,将从包提取的256位SH-FH组合串602向下散列到较短长度索引604。在图6中所示的实例中,索引604是34位长,意味着多达17,179,869,184个表条目是可能的。在一些实施例中,所述34位索引是从CRC-64-ECMA-180摘要提取。较短长度索引604映射到索引表606中的条目,例如条目608。在图6中所示的实例中,高速缓冲存储器表606中的每一条目至少56位长,具有10位磁盘编号字段610、26位块编号字段612、4位块计数字段614、15位操作索引字段616和1位证实字段618。磁盘编号字段610、块编号字段612和块计数字段614类似于字段210、212和214。操作索引(opindex)字段616存储可为连续存储器的操作缓冲器620的15位索引。证实字段618指示高速缓冲存储器表条目是否有效。在一些实施例中,系统实际上在64位字中存储高速缓冲存储器表以对准表条目与CPU高速缓冲存储器行。使用64位字,高速缓冲存储器表606将需要128GB的RAM。
操作缓冲器620中的每一条目对应于待决的读取或写入操作。在一些实施例中,例如条目622的操作缓冲器条目包含包指针字段624(可为15位长)、索引字段626(可映射到散列表606中的条目)、下一操作索引字段628和编号字段630。包指针字段624存储指向包缓冲器640中的包的指针,其允许32,768个过程中的包。下一操作索引字段628存储指向操作缓冲器620中等待同一磁盘操作的下一条目的单独链接列表指针(如果多个操作正等待存取同一磁盘块)。编号字段630类似于编号字段312,指示由同一内容对象占据的块当中的块的序号。在图6中所示的实例中,两个操作缓冲器条目(条目622和条目632)在等待同一磁盘块;两者具有相同索引但不同编号字段,意味着它们属于同一内容对象的不同块。存储于下一操作索引字段628中的指针指向条目632,其等待SH-FH索引条目的第二块。
图3中已展示索引表606中的条目(也被称作索引条目)与磁盘位置(磁盘编号和块编号)之间的映射。图6中所示的磁盘块具有与图4中所示的磁盘块格式相似的格式。在图6中所示的实例中,每一磁盘具有250GB的容量。应注意,即使物理硬盘驱动器可大于250GB,它们也可经分割为250GB虚拟磁盘,其中每一者被指派其自身的磁盘编号。应注意应交错磁盘编号以使得连续编号寻址不同的物理磁盘。对于标准4KB块大小,每一磁盘可容纳多达64,000,000个索引条目,因此需要至少26位长的索引。在图6中所示的实例中,10位磁盘编号字段意味着系统中可存在多达1023个磁盘(磁盘编号字段中的0x3FF是无效条目)。26位块计数字段允许每磁盘64,000,000个块,且4位块编号字段允许每内容对象多达16个4KB块。对于以200,000个对象/秒(假定64KB对象)操作的实例系统,这是大约60,000秒(16小时)的存储装置。34位索引足以提供多达17,179,869,184个表条目,占据128GB的RAM。包含68位长的条目的操作缓冲器也位于RAM中,需要额外的RAM空间。
操作缓冲器620中的每一条目对应于待决的读取或写入操作。在一些实施例中,例如条目622的操作缓冲器条目包含包指针(PKT-PTR)字段624(可为15位长)、索引字段626(映射到索引表606中的条目)、下一操作索引字段628和编号字段630。包指针字段624存储指向包缓冲器640中的包的指针,其允许多达32,768个过程中的包。下一操作索引字段628存储指向操作缓冲器620中等待同一磁盘操作的下一条目的单独链接列表指针(如果多个操作正在同一磁盘块上等待)。编号字段630类似于编号字段312,指示由内容对象占据的所有块当中的块的序号。在图6中所示的实例中,两个操作缓冲器条目(条目622和条目632)正等待同一磁盘块,且形成操作链。两个条目具有同一索引(=47)但不同编号字段(分别为0和1),意味着它们属于同一内容对象的不同块。存储于下一操作索引字段628中的指针指向条目632,其等待SH-FH索引条目的第二块。
图3中已展示索引表606中的条目与磁盘位置(由磁盘编号和块编号界定)之间的映射。图6中所示的磁盘块具有与图4中所示的磁盘块格式相似的格式。在图6中所示的实例中,每一磁盘具有250GB的容量。应注意,即使物理硬盘驱动器可大于250GB,它们也可经分割为250GB虚拟磁盘,其中每一者被指派其自身的磁盘编号。应注意应交错磁盘编号,因此连续编号寻址不同的物理磁盘。对于标准4KB块大小,每一磁盘可包含64,000,000个索引条目,因此需要至少26位的索引。在图6中所示的实例中,10位磁盘编号字段意味着系统中可存在多达1023个磁盘(磁盘编号字段中的0x3FF是无效条目)。26位块计数字段允许每磁盘64,000,000个块,且4位块编号字段允许每内容对象多达16个4KB块。对于以200,000对象/秒(假定64KB对象)操作的实例系统,这提供大约60,000秒(16小时)的存储。34位索引足以提供多达17,179,869,184个表条目,其占据128GB的RAM。需要额外RAM空间来容纳包含68位长的条目的操作缓冲器。
在一些实施例中,串流存储装置可包含专用于流行内容的存储扇区。应注意,一旦内容对象经标记为流行(基于请求的次数或其它准则),便可将其移动到串流存储装置中的特别扇区(例如特定磁盘或特定块集合)。此类特别扇区内存储的内容具有较长保持时间。换句话说,所述特别扇区并不与串流存储装置的其余部分一样频繁地被覆写。在一些实施例中,特别扇区内存储的内容可保持存在数天、数周或有时永久地保持。在一些实施例中,所述系统可确保尾指针的任何前进都不会到达此类特别扇区,因此防止这些特别扇区在尾指针前进的情况下被覆写。
为了促进直接存储器存取(DMA)磁盘读取,DMA缓冲器含有指向存储器内索引(在图6中所示的实例中为34位长)的指针。索引条目含有指向待决操作缓冲器的指针(opindex)。在一些实施例中,除图6中所示的56位索引条目外,系统使用64位字对准索引条目。在一些实施例中,系统可使用更紧凑的索引表示,例如40位索引条目,具有9位磁盘编号、26位块编号、4位计数和1位证实。在此情形中,使DMA缓冲器指向第一待决操作且使较小的待决操作表指向34位索引表可为有意义的。应注意,此替代方案要求等待同一块的额外操作不添加到列表的头部。
图7A呈现说明根据本发明的实施例的串流存储装置的示范性第一时间初始化过程的流程图。在第一时间初始化期间,系统分配存储器内高速缓冲存储器表(操作702)。系统将所有条目中的磁盘编号设定为指示无效条目的0x3FF(或在使用9位磁盘编号字段的情况下为0x1FF)(操作704)。随后,系统将待决操作索引设定为指示无效条目的0x7FFF(操作706);以及将尾指针设定为磁盘0、块0(操作708)。
图7B呈现说明根据本发明的实施例的在干净关闭之后的示范性初始化过程的流程图。在干净关闭之后的初始化期间,系统从磁盘高速缓冲存储器读取存储器内高速缓冲存储器表(操作712),且基于从磁盘高速缓冲存储器获得的信息设定尾指针(操作714)。
图7C呈现说明根据本发明的实施例的在不正常关闭之后的示范性初始化过程的流程图。在不正常关闭之后的初始化期间,系统从磁盘高速缓冲存储器的流行扇区构建存储器内高速缓冲存储器表,同时忽略所有其它内容对象(操作722),且将尾指针设定为磁盘0、块0(操作724)。
图8呈现说明根据本发明的实施例的处理兴趣的过程的流程图。在操作期间,系统接收兴趣包和指向包缓冲器中的包的包指针(操作802),且计算较短长度索引(操作804)。在一些实施例中,较短长度索引是基于包标头中包含的SH和FH字段来计算。系统随后基于计算的索引从存储器内高速缓冲存储器表获得对应索引条目(操作806),且确定所述索引条目中包含的磁盘编号是否为0x3FF(操作808)。如果是,那么这是高速缓冲存储器未中,系统正常转发兴趣(操作810)。否则,系统确定索引条目中的证实位是否经设定(操作812)。如果为否,那么并非所有片段都可用于对应内容对象,系统正常转发兴趣(操作810)。
否则,系统分配操作缓冲器且将包指针插入到操作缓冲器中(操作814)。系统随后确定操作索引是否为0x7FFF(操作816)。如果为否,那么已经存在待决操作,系统丢弃兴趣且释放操作缓冲器(操作818)。如果是,那么系统调度块读取以从串流存储装置检索对应内容对象(操作820)。
图9呈现说明根据本发明的实施例的块读取过程的图。在操作期间,系统首先确定当前块是否为内容对象的第一块(操作902)。如果是,那么系统在操作缓冲器的索引字段中插入计算的索引(操作904),且产生操作链(操作906)。应注意产生操作链包含将“next_operation_index”指向自身以指示当前操作缓冲器是所述链中的最后缓冲器,将操作缓冲器编号设定为0,且以指向操作缓冲器的指针设定所接收DMA块。否则,系统为每一块分配新操作缓冲器(操作908),且将其添加到操作链(操作910)。应注意系统将用于随后块的索引和包指针设定为第一操作缓冲器的索引和包指针,且根据正读取的序列设定“编号”。系统随后调度磁盘读取(操作912)。一旦读取所有块,系统便解散操作链(操作914)。
图10呈现说明根据本发明的实施例的处理串流存储装置中的接收内容对象的过程的图。在操作期间,系统接收内容对象和指向包缓冲器中的包的包指针(操作1002)。应注意,有可能所接收的内容包是内容对象的片段。片段应具有完整的SH和FH字段。系统计算较短长度索引且基于计算的索引从存储器内高速缓冲存储器表获得索引条目(操作1004)。系统确定所述索引条目中的证实旗标是否经设定(操作1006)。如果是,那么内容对象的所有片段已经接收,系统丢弃内容对象(操作1008)。否则,系统确定用于所述索引条目的磁盘编号是否为0x3FF(操作1010)。如果是,那么这是高速缓冲存储器未中,系统分配操作缓冲器且在操作缓冲器中插入包指针(操作1012)。
随后,系统确定存储内容对象所需要的存储块的数目且设定索引条目中的计数字段(操作1014)。在一些实施例中,可基于包标头中包含的TLV字段确定包长度。在一些实施例中,在其中应用分段的情形中,系统可通过将总片段计数(由片段标头指示)乘以片段最大发射单元(MTU)来做出包长度的最坏情况估计。应注意,需要的块数目可被计算为包长度除以块大小(例如4KB)。系统随后确定磁盘上可用的连续块的数目(从当前尾指针开始)是否小于计算的“计数”数目(操作1016)。如果是,那么系统使尾指针前进直到足够数目的连续块可用(操作1018)。在一些实施例中,尾指针包含磁盘编号字段和块编号字段,且磁盘编号字段可为将前进的第一者。可使用不同算法来确定如何使尾指针前进。在一些实施例中,尾指针不可前进到其中高速缓冲存储流行内容的扇区。
系统随后设置DMA读取(操作1020)。应注意,设置DMA读取涉及设置指向索引的DMA缓冲器。系统随后将操作缓冲器中的编号字段设定为0且调度第一块的磁盘读取(操作1022)。应注意,此磁盘读取操作的目的是读取正被覆写的内容对象且使其无效。
如果磁盘编号不是0x3FF,那么内容对象(或其至少部分)处于高速缓冲存储器中,系统调度用于块的磁盘读取(1024)。应注意,在此情形下尾指针不前进。在一些实施例中,在DMA读取期间,系统首先确定操作索引是否为0x7FFF。如果是,那么系统以此操作缓冲器填入操作索引,且调度从第一块(块0)的磁盘读取。否则,存在其它待决写入操作(证实字段未设定),系统在操作缓冲器中将编号字段设定为0且将操作缓冲器插入到操作链的末端。应注意,这可导致具有等待同一块上的读取的不同包指针的多个操作缓冲器条目。
一旦系统完成DMA读取(如图8和10中所示的经调度DMA读取),系统便可基于DMA读取结果执行以下操作。举例来说,对于响应于兴趣的DMA读取,系统可确定所检索内容数据(块读取)是否有效。另一方面,对于响应于内容对象的DMA读取,系统可确定是否覆写磁盘上的现有数据(块读取)。
图11呈现说明根据本发明的实施例的在响应于兴趣的DMA读取之后的示范性检验过程的图。一旦用于操作链的DMA读取完成,系统便从DMA块查找索引(操作1102)。应注意,索引包含在磁盘块标头中,如图3到4中示出。并且应注意,使随后的操作反复通过由操作链指向的所有操作缓冲器条目。对于编号字段匹配于操作缓冲器条目中的编号字段的每一块,系统检验索引条目是否有效、检验位是否经设定以及SH-FH字段是否匹配(操作1104)。为了确定SH-FH字段是否匹配,系统对DMA块中的SH-FH组合进行散列且将散列与兴趣的索引进行比较。如果是,那么系统返回磁盘数据(从块读取减磁盘标头提取)作为内容对象或内容对象的片段(操作1106)。应注意,磁盘数据是良好形成的CCN对象或对象片段,且在将其沿着兴趣反向路径返回到请求者之前将不需要进一步过程。并且,应注意,片段是按它们写入到磁盘中的次序来返回,且因此可能是无序的。系统随后从链移除操作缓冲器(操作1108)。否则,这是未中(数据并不匹配兴趣),系统使索引条目无效,且正常转发兴趣(操作1110)。应注意,如果系统执行流行性测量,那么系统可在一旦磁盘数据返回时递增块的流行性等级(操作1112)。如先前论述,经常请求的内容具有较高机会移动到“流行”磁盘扇区,在该处所述内容不大可能被覆写。内容流行性的确定的详细描述可参见由发明人马可·E·莫斯科在2014年3月10日申请的标题为“用于内容中心网络中对内容流行性进行分级的系统和方法”的第TBA号(代理人案号PARC-20130999US01)美国专利申请案。
图12呈现说明根据本发明的实施例的在响应于内容对象的DMA读取之后的示范性系统过程的图。一旦用于操作链的DMA读取完成,系统便从DMA块查找索引(操作1202)。使随后操作反复通过由操作链指向的所有操作缓冲器条目。对于编号字段匹配于操作缓冲器条目中的编号字段的每一块,系统检验DMA块的SH-FH字段是否匹配新索引(操作1204)。应注意,可存在具有匹配编号字段的多个条目。新索引指代正写入的内容对象的索引。如果为否,那么磁盘上的内容正被覆写,系统查找由磁盘块指向的旧索引(操作1206)。应注意,覆写应仅当新内容对象的块0被写入时发生。基于旧索引,系统确定是否存在待决操作(操作1208)。应注意这些应仅为读取操作。如果是,那么系统以当前尾指针在高速缓冲存储器表中重新写入新索引条目(更新磁盘字段和块字段),且重试DMA读取(操作1210)。这意味着系统已决定在其它某处写入新内容,因为当前块正被读取(最可能服务于兴趣)。否则,系统使旧索引条目无效,且如同SH-FH匹配新索引那样继续操作(操作1212)。
如果DMA块中的SH-FH匹配新索引,那么系统随后检查内容包中包含的CCN标头以确定由包指针指向的片段是否存在于操作链中(操作1214)。如果是,那么其为重复,系统丢弃所述包且移除操作缓冲器条目(操作1216)。如果为否,那么系统确定是否存在更多块(操作1218)。如果是,那么系统调度用于下一块的读取且更新编号字段(操作1220)。如果没有更多块,那么系统将(由包指针指向的)包附加到块中具有用于其的足够空间的一个块且更新编号字段(操作1222)。在针对原始编号字段匹配所有内容对象条目之后,系统调度用于任何经更新块的磁盘写入(操作1224)。一旦磁盘写入完成,系统便移除操作缓冲器且释放包(操作1226)。系统在内容对象的最后片段经写入之后设定证实位(操作1228)。
图13图解说明根据一实施例的用于串流存储装置中的内容高速缓冲存储的示范性系统。用于串流存储装置中的内容高速缓冲存储的系统1300包括处理器1310、存储器1320和存储装置1330。存储装置1330通常存储可加载到存储器1320中且由处理器1310执行以执行上文提到的方法的指令。在一个实施例中,存储装置1330中的指令可实施索引模块1332、操作缓冲器模块1334和磁盘存取模块1336,其全部可通过各种装置彼此连通。
在一些实施例中,模块1332、1334和1336可部分地或完全在硬件中实施且可为处理器1310的部分。此外,在一些实施例中,系统可不包含单独的处理器和存储器。实际上,除执行其特定任务之外,模块1332、1334和1336单独地或协同地可为通用或专用计算引擎的部分。
存储装置1330存储将由处理器1310执行的程序。具体来说,存储装置1330存储实施用于例如串流存储装置1340的串流存储装置中的内容高速缓冲存储的系统的程序(应用程序)。在操作期间,应用程序可从存储装置1330加载到存储器1320中且由处理器1310执行。因此,系统1300可执行上述功能。系统1300可耦合到任选的显示器1380、键盘1360和指向装置1370,并且还经由一或多个网络接口耦合到网络1382。
此具体实施方式中所描述的数据结构以及代码通常存储在计算机可读存储媒体上,所述计算机可读存储媒体可以是能存储计算机系统可用的代码和/或数据的任何装置或媒体。计算机可读存储媒体包含但不限于易失性存储器、非易失性存储器、磁性以及光学存储装置,例如磁盘驱动器、磁带、CD(压缩光盘)、DVD(数字通用光盘或数字视频光盘)、或能够存储目前已知或稍后开发的计算机可读媒体的其它媒体。
在具体实施方式部分中所描述的方法和过程可以代码和/或数据形式体现,所述代码和/或数据可以存储于如上文所描述的计算机可读存储媒体中。当计算机系统读取并且执行存储于计算机可读存储媒体上的代码和/或数据时,计算机系统执行以数据结构以及代码形式体现且存储在计算机可读存储媒体内的方法以及过程。
此外,本文中所描述的方法以及过程可以包含在硬件模块或设备中。这些模块或设备可以包含但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用处理器或共享处理器、和/或目前已知或稍后开发的其它可编程逻辑装置。当激活硬件模块或设备时,这些硬件模块或设备执行其内部所包含的方法和过程。