用于处理数据中心网络中的数据对象的在计算机系统中实现的方法和计算机实现的系统的制作方法
【专利摘要】本申请通常涉及用于数据中心网络中的命名数据网络的有效名称管理。在各种例子中,用于数据中心网络中的命名数据网络的有效名称管理可采用系统、方法和/或算法的形式实现。
【专利说明】用于处理数据中心网络中的数据对象的在计算机系统中实现的方法和计算机实现的系统
【技术领域】
[0001]本发明通常涉及用于数据中心网络中的命名数据网络的有效名称管理。
[0002]在各种例子中,数据中心网络中的命名数据网络的有效名称管理可采用系统、方法和/或算法的形式实现。
【背景技术】
[0003]命名数据网络(在此有时也称为“NDN”)是(例如,来自用户或代理的)请求使用诸如字母数字字符的名称(相对于传统IP网络中的机器地址)被路由到数据实体(或数据对象)的范例。在NDN范例中,用户(或消费者)向数据生产者请求命名数据(这种请求有时被称为“interest”)。根据请求中的数据的名称,用户的请求通过一个或多个路由器(可能通过一个或多个NDN代理)向数据生产者转发。然后,数据生产者用所请求的数据进行响应。
[0004]图1示出传统命名数据网络体系结构100的例子。如在该例子所看到的,用户101A、IOlB 和 IOlC 经由代理 105A、105B、105C、105D、105E、105F、105G 和 / 或 105H 与生产者103AU03B和103C进行交互。
[0005]仍参照图1,在各种实体之间的通信(例如,请求、响应、数据对象)(用实体间的实线表示)可以是双向的。另外,通信可以通过因特网、内部网、局域网、广域网和/或任意其它所期望的通信信道执行。
[0006]应当注意,尽管图1示出各种实体进行通信,但应当理解,图1实际上是指由每个实体所拥有、租用、操作、使用、持有和/或控制的计算机系统等进行的通信。
[0007]然而,在这种NDN体系结构100中,用于路由的名称可能较长,并通常以复杂方式结构化。基于这些名称来路由请求或者匹配它们可能会相当昂贵(例如,在处理器操作方面),特别是在以高吞吐量实现时。
【发明内容】
[0008]如在此描述的,提供了数据中心网络中命名内容(B卩,数据对象)的有效处理(例如,路由)。在一个实施例中,步骤可包括:定义可变(或任意)名称长度的第一名称空间和固定名称长度的第二名称空间;识别第一名称空间中能够(例如,在数据中心中)创建的所有可能名称的集合;定义从第一名称空间到第二名称空间的映射;将来自第一名称空间的请求(例如,请求分组)中的名称(例如,根据映射)转换成第二名称空间中的名称;以及使用转换后的名称(即,第二名称空间中的名称)来路由请求(例如,请求分组)。
[0009]如在此描述的,提供了将第一名称空间中的可变长度(或任意长度)名称映射到第二名称空间中的固定尺寸名称。在一个实施例中,步骤可包括:确定(并生成)表征第一名称空间中的名称集合的最长前缀树;折叠(collapse)最长前缀树的分支以最小化非分支路径的数量;使用折叠后的最长前缀树的结构以确定如何将第二名称空间中的名称划分成段(并将第二名称空间中的名称划分成段);以及使用折叠后的最长前缀树的结构以确定第二名称空间的每个段的长度。
[0010]在一个实施例中,提供了一种在计算机系统中实现的方法,用于处理数据中心网络的数据对象,其中,数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联。该方法包括:由计算机系统识别第一名称空间中在数据中心网络中存在的所有名称的集合;定义从第一名称空间到第二名称空间的映射;由计算机系统接收包括数据对象的名称的请求;以及由计算机系统转换请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称。
[0011]在另一个实施例中,提供了一种在计算机系统中实现的方法,用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定尺寸名称,该方法包括:由计算机系统生成表征第一名称空间中的名称集合的最长前缀树;由计算机系统折叠最长前缀树的分支以减少非分支路径的数量;由计算机系统将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;以及由计算机系统确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0012]在另一个实施例中,提供了一种计算机可读存储介质,其有形地体现可由计算机执行的用于处理数据中心网络中的数据对象的程序指令,其中,数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,程序指令在执行时实现下列步骤:由计算机识别第一名称空间中在数据中心网络中存在的所有名称的集合;由计算机定义从第一名称空间到第二名称空间的映射;由计算机接收包括数据对象的名称的请求;以及由计算机转换请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称。
[0013]在另一个实施例中,提供了一种计算机可读储存介质,其有形地体现可由计算机执行的用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定长度名称的程序指令,程序指令在执行时实现下列步骤:由计算机生成表征第一名称空间中的名称集合的最长前缀树;由计算机折叠最长前缀树的分支以减少非分支路径的数量;由计算机将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;以及由计算机确定每个段的长度,其中,每个段的长度至少部分地基于折置后的最长如缀树的结构确定。
[0014]在另一个实施例中,提供了一种计算机实现的系统,用于处理数据中心网络中的数据对象,其中,数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,该系统包括:输入单元,其被配置为接收请求,其中,请求包括数据对象的名称;识别单元,其被配置为识别第一名称空间中在数据中心网络中存在的所有名称的集合;定义单元,其可与识别单元进行通信,并被配置为定义从第一名称空间到第二名称空间的映射;转换单元,其可与输入单元和定义单元进行通信,并被配置为转换请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称;以及输出单元,其与转换单元进行通信,并被配置为输出第二名称空间中的转换后的名称。
[0015]在另一个实施例中,提供了一种计算机实现的系统,用于将第一名称空间的任意长度名称映射到第二名称空间的固定尺寸名称,该系统包括:生成单元,其被配置为生成表征第一名称空间中的名称集合的最长前缀树;折叠单元,其与生成单元进行通信,并被配置为折叠最长前缀树的分支以减少非分支路径的数量;划分单元,其与折叠单元进行通信,并被配置为将第二名称空间划分为多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;确定单元,其与折叠单元和划分单元进行通信,并被配置为确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定;以及输出单元,其与划分单元和确定单元进行通信,并被配置为输出划分后的段和划分后的每个段的长度。
【专利附图】
【附图说明】
[0016]根据以下结合附图的详细描述,本发明的各种目的、特征和优点对于本领域的普通技术人员将变得显而易见,其中:
[0017]图1描述传统的命名数据体系结构的框图;
[0018]图2描述根据本发明的实施例的示例性树结构;
[0019]图3描述根据本发明的实施例的另一个示例性树结构;
[0020]图4描述根据本发明的实施例的方法的框图;
[0021]图5描述根据本发明的实施例的方法的框图;
[0022]图6A描述根据本发明的实施例的系统的框图;
[0023]图6B描述根据本发明的实施例的系统的框图;
[0024]图7描述根据本发明的实施例的系统的框图;
[0025]图8描述根据本发明的实施例的系统的框图。
【具体实施方式】
[0026]为了说明的目的,术语“数据对象”意在指代指定长度的字节序列。这种数据对象例如可以是用户可请求的单个可寻址内容。在另一个例子中,数据对象可以是文件的一部分、或者文件、或者文件集合、或者动态生成的字节序列。在另一个例子中,数据对象可以是音频文件、视频文件或者网页。在另一个实例中,数据对象可以是大文件的一部分(例如,电影文件可被分成多个部分,其中每个部分可单独被寻址和下载)。
[0027]为了说明的目的,术语“数据中心”用于指代或者集中式或者分布式的位置,其用于驻留服务器和其它计算装置以连接到诸如因特网的外部网络。术语“数据中心网络”意在指代将数据中心中的所有服务器和计算装置彼此互连并连接到诸如互联网的外部网络的所有可能网络的子集。数据中心和数据中心网络的上述定义在本领域是通用的。然而,为了本申请的目的,可以采用更一般的方式定义数据中心。在本申请中的数据中心用于指代通过网络连接的一组计算设备,其中,在任何时间存储在数据中心中的所有数据对象的名称对于这组计算设备中的某个实体是已知的。
[0028]为了说明的目的,术语“名称空间”意在指代可根据已建立的协定集合定义的所有可能名称的集合。例如,名称空间可以被定义为包括根据在因特网标准RFC2396中定义的协定集合而被定义为通用资源标识符(URI)的任意名称。名称空间的另一个例子是根据在因特网标准RFC1034中定义的协定集合而被定义为域名的所有名称的集合。名称的特性通过定义名称空间的协定建立。名称空间可以定义任意长度的名称,或者名称空间可以定义固定长度的名称。[0029]为了说明的目的,术语“树”或“树状结构”意在指代不包含循环的数据结构。树被定义为节点和链路的集合,其中一个节点被指定为根节点,节点与其它节点之间使用链路连接,以使得从根节点到任意其它节点只有一条路径。该结构对于精通计算机网络领域的人是熟知的。
[0030]为了说明的目的,术语“最长前缀树”或“最长前缀树状结构”意在指代一种树状结构,其中,节点是名称的集合,并且节点被安排成使得从根节点到指定节点的路径仅包括与特定节点在名称上有共同前缀的节点,即,这些节点的名称以某个共享子串开始,另外,该路径上的每个节点在其名称上与指定节点的名称共享最长可能前缀。
[0031 ] 为了说明的目的,术语“路径”意在指代在包括节点和链路的图形结构中的链路集合,其允许通过沿着链路的集合而从一个节点到达另一个节点。
[0032]为了说明的目的,术语“最长路径”意在指代比满足相同特性的任意其它特征更长的路径。
[0033]为了说明的目的,术语“节点”意在指代在称为图或树的数据结构中的单元,其在本领域是熟知的。
[0034]如在此描述的,在一个实施例中,应用于数据中心网络的命名数据网络系统的体系结构包括三个构造:(a) “名称用户”,其请求内容,即数据对象(通常代表外部请求);(b)“名称生产者”(其通常创建具有新名称的内容,即数据对象);(C) “名称代理”(其路由与名称相关的请求)。
[0035]在一个例子中,对于每个数据对象有两个名称空间。第一名称空间包括用于数据对象的长名称。每个长名称可采用各种方式编码,但在各种例子中,每个长名称将具有通用资源标识符(URI)的通用结构或分层结构名称。这种名称可通常以a/b/c/d的形式表示,其中a、b、c和d每一个都表示可变长度的字符串。
[0036]第二名称空间包括用于数据对象的固定长度名称。作为例子,该第二名称空间可包括具有诸如128比特长名称的结构的名称(在该例子中,这种名称空间可容纳多达2128个名称)。固定尺寸的名称更容易用于查找和路由(例如,在信息代理之间)目的的处理。128比特长的名称通常比可在特定数据中心网络中存在的数据对象的数量的任意合理估计大几个数量级。在本申请中,术语“长名称”用于属于第一(可变长度)名称空间的名称,术语“短名称”用于属于第二(固定长度)名称空间的名称,因为可变长度名称空间中的名称通常趋向于比固定长度名称空间中的名称长。然而,这并不意味着第一名称空间中的所有名称都总是比第二名称空间中的所有名称长。
[0037]在一个实施例中,第一名称空间(具有可变长度或“长”名称)到第二名称空间(具有固定长度或“短”名称)的映射以及对网络操作的相关支持如下所述:
[0038]1.获得当前在第一名称空间(S卩,与特定数据中心网络相关联的第一名称空间)中使用的所有可能名称(即,具有无限制长度的名称)的集合。2.定义从第一名称空间到第二名称空间(即,与特定数据中心网络相关联的第二名称空间)的映射。3.使用所定义的映射将任何进入请求的长名称(在第一名称空间中)转换成短名称(在第二名称空间中)。4.在请求路由和/或搜索内容(即数据对象)中使用转换后的名称(即,在第二名称空间中)。
[0039]定义映射的步骤可在各种时间点调用。在一个例子中,映射的定义可在每次新的数据对象名称被引入系统(即,数据中心网络)时发生。在另一个例子中,时间可被划分成时期(epoch),映射再定义可在时期的开始进行。在另一个例子中,时间可被划分成时期,映射再定义可在时期的结束进行。在另一个例子中,一旦新名称的阈值已经达到和/或时间间隔已经过去,则映射定义可进行修改。
[0040]任何期望的算法可用于从可变长度或“长”名称空间映射到固定长度或“短”名称空间。在一个特定例子中,可使用下面的算法:
[0041]1.在特定数据中心中存在的所有长名称被安排在树状结构中,以使得从树根到表示特定名称的节点的路径拼写出它的长名称。该树结构是在名称被安排在树中以便最大化匹配它们的最长前缀时形成的。2.树被缩短,以使得任何不具有分支的路径被压缩成单个节点。3.确定树中的最长路径的长度。然后,短名称空间被划分成对应数量的部分(即,短名称空间被划分成多个部分,其等于树中的最长路径中的节点的数量)。4.短名称空间的每个部分的长度通过识别可容纳从该节点或者树中的任何其它对等(平行)节点发出的分支的最小比特数量来确定。
[0042]对于包括四个名称的例子,上述过程被示例性表示为:
[0043]/abc/efg/ijk/lmn
[0044]/abc/efg/ijk/uvw
[0045]/ab/efg
[0046]/ab/uv/jk
[0047]如果使用分割线(参见上面的步骤I)并在创建树状结构中设法匹配最长前缀(参见上面的步骤I)来将名称安排成树状结构,则结果会是看起来如图2所示的树。更具体地,节点201是根节点,节点203是“ab/”节点,节点205是“abc/”节点,节点207是“efg”节点,节点209是“uv/”节点,节点211是“efg/”节点,节点213是“jk”节点,节点215是“ijk/”节点,节点217是“lmn”节点,节点219是“uvw”节点.[0048]如果树的没有任何分支的部分被折叠(参见上面的步骤2),并且如果最长前缀在每一层被合并到共同祖先节点中(参见上面步骤2),则结果会是看起来如图3所示的树。更具体地,节点301 “/ab”节点,节点303是“/efg”节点,节点305是“/uv/jk”节点,节点307是“c/efg/ijk”节点,节点309是“lmn”节点,节点311是“uw”节点.[0049]对于该例子,以这种方式创建的最长树分支具有深度3,因此,在该例子中,短姓名空间需要被划分成三组。在树的最后一个分支深度级,在该例子中,任何节点的最大孩子数是2 (参见节点309和311),因此,第三组仅需要一个比特长度以表示分支。在下一级,有三个孩子(参见节点303、305和307),因此需要2个比特来表示,最顶一级仅有一个节点,其可完全从名称空间中取出。因此,这个树可以在固定尺寸的名称空间中表示,其中固定尺寸是三个比特或更长(三个比特可用于表示总共8个名称,而具有大尺寸名称空间使得在仅有4个有效名称(如在该例子中)时容易保持结构)。
[0050]在上面的例子中,在树的每个深度仅有一个具有孩子的节点。一般第,在任何深度将有多个具有孩子的节点,在确定在该级对结构命名所需要的比特数量时需要考虑孩子数量的最大值。
[0051]采用128比特固定尺寸(或者甚至32比特固定尺寸)的示例性名称尺寸,很可能具有在任何时间比在特定数据中心中的有效名称的数量大几个数量级的名称空间。因此,上述的方法应当能够定义大多数情况下的映射。在其中结构不能以这种方式定义的那些情况下,树中的某些节点可以被压缩,例如,如果仅有2个比特可用于定义名称,则以“/lmn” (节点309)和“/uw”(节点311)结尾的端节点可被合并。任何具有前缀/abc/efg/i jk的名称可被映射到同一个短名称,而关联列表可用于识别哪个特定命名数据对象正被引用。该例子的请求将在它的报头中具有短名称,并在有效载荷中具有表明正被寻找的特定数据对象的附加字段。
[0052]短名称中的不同级的边界(即,长名称中分割线的对应部分)可以采用各种方式识别。在一个例子中,短名称中每一级的比特数在数据中心中所有名称到对应短名称的映射发生时预先确定,并且这些比特数可以被分发给网络中在路由请求和/或匹配中使用短名称的所有实体并由其采用。在另一个例子中,与短名称的长度具有相同长度的掩码比特可用于识别用于短名称中每一级的比特数,其中掩码比特用作O和I的交替模式。例如,1110010001...表示将被分别用于短名称中的第I级、第2级、第3级、第4级…的3比特、2比特、I比特、3比特等 。在另一个例子中,每一级的比特数可以被明确地添加在短名称比特的结尾。例如,如果用于每一级的最大比特数是7,则3比特数的二进制编码(O至7)被添加在短名称的结尾,作为可选字段。
[0053]上述的算法被设计成考虑特定数据中心中当前可用的名称集合,并对该集合产生最小可能数量的比特。当在短名称空间中有额外的比特可用时,这些比特可采用各种方式分配给在上述算法中生成的树的不同级别。确定附加自由比特的数量的一种方法可以是根据过去的历史预测名称空间的不同部分中名称的增长率。作为预测的例子,可以查看在名称过去的一些时间段已经增长的速率(例如,在过去的三十天每一天增加的新名称的数量),并使用其平均值以预测新名称将被添加的速率。其它更复杂的用于根据过去的历史预测名称的增长率的算法在本领域是已知的。在这一点,各种已知的算法,例如,霍尔特-温特(Holt-Winters)算法或ARIMA (自回归移动平均)模型,可用于预测在名称空间的不同部分中的增长率,并分配额外的比特以考虑预期增长的相对数量。
[0054]在此描述的是其中名称的压缩仅对原始名称空间中的长名称进行并且名称的匹配根据最长前缀进行的方法。然而,在其它例子中,其它因素可被合并到该压缩中,例如,有关名称的位置的信息可用于确定是否压缩名称。作为例子,如果已知名称“/abc/efg”和名称“/abc/uvw”位于特定数据中心的同一个机器(即计算机)上,则即使它们具有不同的次级前缀,也可以进行结合。因此,除了名称之外的其它因素可以被包括以确定何时将原始名称空间树的某些节点折叠成更小的节点。
[0055]在此描述的是其中名称根据在每个时期的痕迹(scratch)计算的方法。一种变形是计算名称,以使得现有名称的映射不会改变(可能的最大程度)。这可例如通过将新名称添加到现有的压缩名称的树中,然后执行先前已经描述的比特压缩/分配步骤来进行。在另一个例子中,该递增更新可在新名称在一个时期创建时进行,然后,在几个时期之后,根据痕迹重新计算名称映射以获得使用最少可能数量的比特的映射。
[0056]现在参照图4,示出了在计算机系统(或网络)中实现的方法,其用于处理数据中心网络中的数据对象,其中,数据中心网络已与可变(或任意)名称长度的第一名称空间和固定名称长度的第二名称空间相关联。如图4所示,该方法包括:步骤401-由计算机系统识别第一名称空间中可在数据中心网络中创建的所有可能名称的集合;步骤403-定义从第一名称空间到第二名称空间的映射;步骤405-由计算机系统接收包括数据对象的名称的请求;步骤407-由计算机系统转换该请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称;步骤409-由计算机系统使用第二名称空间中的转换后的名称来路由请求。
[0057]在一个例子中,任何步骤可以按所述的顺序执行,或者这些步骤可以按另一种顺序执行。
[0058]现在参照图5,示出了在计算机系统(或网络)中实现的方法,其用于将第一名称空间中的可变长度(或者任意长度)名称映射到第二名称空间中的固定尺寸名称。如图5所示,该方法包括:步骤501-由计算机系统生成表征第一名称空间中的名称集合的最长前缀树;步骤503-由计算机系统折叠最长前缀树的分支以减少非分支路径的数量;步骤505-由计算机系统将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;步骤507-由计算机系统确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0059]现在参照图6A,示出了一种计算机实现的系统601,其用于处理数据中心网络的数据对象,其中,数据中心网络已与可变名称(或任意)长度的第一名称空间和固定名称长度的第二名称空间相关联。如图6A所示,系统601可包括:输入单元603,其被配置为接收请求,其中该请求包括数据对象的名称;识别单元605,其被配置为识别第一名称空间中可在数据中心网络中创建的所有可能名称的集合(能够识别第一名称空间中可在数据中心网络中创建的所有可能名称的集合的数据可通过输入单元603接收);定义单元607,其与识别单元进行通信,并被配置为定义从第一名称空间到第二名称空间的映射;转换单元609,其与输入单元和定义单元进行通信,并被配置为转换请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称;输出单元611,其与转换单元进行通信,并被配置为输出第二名称空间中的转换后的名称。
[0060]仍然参照图6A,系统601还可包括路由单元(例如,参见图7的控制器750),其可操作地与输出单元进行通信,并被配置为使用第二名称空间中的转换后的名称来路由请求。
[0061]仍然参照图6A,任何通信可经由网络执行。这种网络可以包括因特网、内部网、局域网、广域网和/或任何其它期望的通信信道。
[0062]现在参照图6B,示出了一种计算机实现的系统650,其用于将第一名称空间中的可变长度(或任意长度)名称映射到第二名称空间中的固定尺寸名称。如图6B所示,系统650包括:生成单元652,其被配置为生成表征第一名称空间中的名称集合的最长前缀树(生成单元652可接收数据以便生成表征第一名称空间中的名称集合的最长前缀树);折叠单元654,其与生成单元进行通信,并被配置为折叠最长前缀树的分支以减少非分支路径的数量;划分单元656,其与折叠单元进行通信,并被配置为将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;确定单元658,其可与折叠单元和划分单元进行通信,并被配置为确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定;输出单元660,其可与划分单元和确定单元进行通信,并被配置为输出划分后的段和划分后的每个段的长度(输出可用于使用第一和/或第二名称空间来处理请求)。
[0063]仍然参照图6B,任何通信可以通过网络执行。这种网络可以包括因特网、内部网、局域网、广域网和/或任何其它期望的通信信道。
[0064]现在参照图7,示出了根据实施例的示例性命名数据网络体系结构700。如该例子所示,用户 701A、701B 和 701C 通过交换机(或路由器)705A、705B、705C、705D、705E、705F、705G和/或705H与生产者703A、703B和703C进行交互。
[0065]另外,控制器750可包括用于提供路由、名称管理(包括例如名称空间定义、名称识别、映射定义、转换、树生成、树折叠、名称空间段划分和名称空间段长度确定,如在此所描述的)、策略和/或安全的机制。
[0066]仍然参照图7,各种实体之间的通信(例如,请求、响应、数据对象)(用实体间实线表示)可以是双向的。另外,各种实体与控制器750之间的通信可以是双向的(应当注意,控制器750可与任何期望数量的用户、交换机、路由器和/或生产者进行通信)。另外,通信可通过因特网、内部网、局域网、广域网和/或任何其它期望的通信信道实现。
[0067]应当注意,尽管图7示出了各种实体进行通信,但应当理解,图7实际上是指由每个实体所拥有、租用、操作、使用、持有和/或控制的计算机系统等进行的通信。
[0068]现在参照图8,该图示出了根据本发明的实施例的计算系统800的硬件配置。如图所示,该硬件配置具有至少一个处理器或中央处理单元(CPU)811。CPU811可通过系统总线812互连到随机存取存储器(RAM)814、只读存储器(R0M)816、输入/输出(I/O)适配器818(用于将诸如磁盘单元821和磁带驱动器840的外围设备连接到总线812)、用户接口适配器822 (用于将键盘824、鼠标826、扬声器828、麦克风832和/或其它用户接口设备连接到总线812)、用于将系统800连接到数据处理网络、因特网、内部网、局域网(LAN)等的通信适配器834和用于将总线812连接到显示设备838和/或打印机839 (例如,数码打印机等)的显不适配器836。
[0069]在一个实施例中,提供了一种在计算机系统中实现的方法,其用于处理数据中心网络中的数据对象,其中数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,该方法包括:由计算机系统识别第一名称空间中在数据中心网络中存在的所有名称的集合;定义从第一名称空间到第二名称空间的映射;由计算机系统接收包括数据对象的名称的请求;由计算机系统转换该请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称。
[0070]在一个例子中,该方法还包括:使用第二名称空间的转换后的名称路由对数据中心网络中的数据对象的请求。
[0071]在另一个例子中,定义的步骤包括:由计算机系统生成表征第一名称空间中的名称集合的最长前缀树;由计算机系统折叠最长前缀树的分支以减少非分支路径的数量;由计算机系统将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段。
[0072]在另一个例子中,该方法还包括:由计算机系统确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0073]在另一个例子中,该方法还包括:由计算机系统确定每个段的长度,其中,每个段的长度至少部分地根据第一名称空间中名称的预测增长来确定。
[0074]在另一个例子中,可变长度的第一名称空间中的请求中的名称采用(a) URI结构和(b)分层结构中的至少一个的形式。[0075]在另一个例子中,当前在数据中心中存在的名称集合还包括被预测在未来某个时间在数据中心中存在的名称集合。
[0076]在另一个例子中,计算机系统还执行定义可变名称长度的第一名称空间。
[0077]在另一个例子中,计算机系统还执行定义固定名称长度的第二名称空间。
[0078]在另一个例子中,定义从第一名称空间到第二名称空间的映射由计算机系统执行。
[0079]在另一个实施例中,提供了一种在计算机系统中实现的方法,其用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定尺寸名称,该方法包括:由计算机系统生成表征第一名称空间中的名称集合的最长前缀树;由计算机系统折叠最长前缀树的分支以减少非分支路径的数量;由计算机系统将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;由计算机系统确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0080]在一个例子中,折叠最长前缀树的分支以减少非分支路径的数量包括折叠最长前缀树的分支以最小化非分支路径的数量。
[0081]在另一个例子中,第二名称空间被划分成的段的数量至少部分地基于折叠后的最长前缀树中的最长路径的长度。
[0082]在另一个例子中,第二名称空间被划分成的段的数量等于折叠后的最长前缀树中的最长路径的长度。
[0083]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于能够容纳从折叠后的最长前缀树的节点发出的分支的比特数。
[0084]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于第一名称空间中名称的预测增长。
[0085]在另一个实施例中,提供了一种计算机可读存储介质,其有形地体现可由计算机执行的用于处理数据中心网络中的数据对象的程序指令,其中,数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,其中程序指令在执行时实现下列步骤:由计算机识别第一名称空间中在数据中心网络中存在的所有名称的集合;由计算机定义从第一名称空间到第二名称空间的映射;由计算机接收包括数据对象的名称的请求;由计算机转换该请求中的名称,其中,至少部分地基于所定义的映射,该请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称。
[0086]在一个例子中,程序指令在执行时还实现使用第二名称空间中的转换后的名称来路由请求的步骤。
[0087]在另一个例子中,定义的步骤包括:由计算机系统生成表征第一名称空间中的名称集合的最长前缀树;由计算机系统折叠最长前缀树的分支以减少非分支路径的数量;由计算机系统将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段。
[0088]在另一个例子中,程序指令在执行时还实现以下步骤:确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0089]在另一个例子中,程序指令在执行时还实现以下步骤:确定每个段的长度,其中,每个段的长度至少部分地基于第一名称空间中的名称的预测增长来确定。[0090]在另一个实施例中,可变长度的第一名称空间中的请求中的名称采用(a) URI结构和(b)分层结构中的至少一个的形式。
[0091]在另一个例子中,当前在数据中心中存在的名称集合还包括被预测在未来某个时间在数据中心中存在的名称集合。
[0092]在另一个实施例中,提供了一种计算机可读储存介质,其有形地体现可由计算机执行的用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定长度名称的程序指令,其中程序指令在执行时实现下列步骤:由计算机生成表征第一名称空间中的名称集合的最长前缀树;由计算机折叠最长前缀树的分支以减少非分支路径的数量;由计算机将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;由计算机确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0093]在一个例子中,折叠最长前缀树的分支以减少非分支路径的数量包括折叠最长前缀树的分支以最小化非分支路径的数量。
[0094]在另一个例子中,第二名称空间被划分成的段的数量至少部分地基于折叠后的最长前缀树中的最长路径的长度。
[0095]在另一个例子中,第二名称空间被划分成的段的数量等于折叠后的最长前缀树中的最长路径的长度。
[0096]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于能够容纳从折叠后的最长前缀树的节点发出的分支的比特数。
[0097]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于第一名称空间中名称的预测增长。
[0098]在另一个实施例中,提供了一种计算机实现的系统,其用于处理数据中心网络中的数据对象,其中数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,该系统包括:输入单元,其被配置为接收请求,其中该请求包括数据对象的名称;识别单元,其被配置为识别第一名称空间中在数据中心网络中存在的所有名称的集合;定义单元,其可与识别单元进行通信,并被配置为定义从第一名称空间到第二名称空间的映射;转换单元,其可与输入单元和定义单元进行通信,并被配置为转换请求中的名称,其中,至少部分地基于所定义的映射,请求中的名称从第一名称空间中的名称转换成第二名称空间中的名称;输出单元,其可与转换单元进行通信,并被配置为输出第二名称空间中的转换后的名称。
[0099]在一个例子中,该系统还包括路由单元,其可与输出单元进行通信,并被配置为使用第二名称空间中的转换后的名称来路由请求。
[0100]在另一个例子中,定义单元通过以下操作定义映射:生成表征第一名称空间中的名称集合的最长前缀树;折叠最长前缀树的分支以减少非分支路径的数量;将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段。
[0101]在另一个例子中,该系统还包括确定单元,其被配置为确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
[0102]在另一个例子中,该系统还包括确定单元,其被配置为确定每个段的长度,其中,每个段的长度至少部分地基于第一名称空间中的名称的预测增长来确定。
[0103]在另一个实施例中,可变长度的第一名称空间中的请求中的名称采用(a) URI结构和(b)分层结构中的至少一个的形式。
[0104]在另一个例子中,当前在数据中心中存在的名称集合还包括被预测在未来某个时间在数据中心中存在的名称集合。
[0105]在另一个实施例中,提供了一种计算机实现的系统,其用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定尺寸名称,该系统包括:生成单元,其被配置为生成表征第一名称空间中的名称集合的最长前缀树;折叠单元,其可与生成单元进行通信,并被配置为折叠最长前缀树的分支以减少非分支路径的数量;划分单元,其可与折叠单元进行通信,并被配置为将第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,第二名称空间被划分成多个段;确定单元,其可与折叠单元和划分单元进行通信,并被配置为确定每个段的长度,其中,每个段的长度至少部分地基于折叠后的最长前缀树的结构来确定;输出单元,其可与划分单元和确定单元进行通信,并被配置为输出划分后的段和划分后的每个段的长度。
[0106]在一个例子中,折叠最长前缀树的分支以减少非分支路径的数量包括折叠最长前缀树的分支以最小化非分支路径的数量。
[0107]在另一个例子中,第二名称空间被划分成的段的数量至少部分地基于折叠后的最长前缀树中的最长路径的长度。
[0108]在另一个例子中,第二名称空间被划分成的段的数量等于折叠后的最长前缀树中的最长路径的长度。
[0109]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于能够容纳从折叠后的最长前缀树的节点发出的分支的比特数。
[0110]在另一个例子中,第二名称空间被划分成的每个段的长度至少部分地基于第一名称空间中的名称的预测增长。
[0111]在各种例子中,任何步骤可以按所述的顺序执行,或者步骤可以按另一种顺序执行。
[0112]在各种例子中,实施例可在以下的环境中使用:(a)云:传递模型:平台即服务(PaaS) ; (b)云:配置模型:私有;(C)云:配置模型:公共;(d)云:启动技术;(e)融合通信:协议(例如,网络);和/或(f)软件:内容应用。
[0113]如在此所描述的,提供了用于利用固定长度命名的数据网络名称的集合来访问数据中心中的数据的机制。在一个例子中,提供了用于将所有(当前使用的)有效的可变长度命名的数据网络名称的集合映射到固定长度名称的集合并使用固定长度命名的数据网络名称来路由和/或搜索内容。
[0114]在这一点,尽管名称集合一般是无限的,但数据中心网络具有数据中心网络中可被访问的所有(当前使用的)名称的集合是预先已知的优点。因此,在任何时候,仅提供有效名称的有限集合。然后,这可用于确定可变长度的名称与固定尺寸名称之间的映射,其仍保持唯一性(以及大量的结构)。
[0115]如在此所描述的,各种实施例提供了可快速处理的名称结构,其保持可变长度分层结构化名称的灵活性。[0116]如在此所描述的,各种实施例提供了处理内容感知网络/命名数据网络中的可变长度名称。
[0117]如在此所描述的,提供了用于将单个可变长度名称的每个实例映射到固定长度名称的一个实例的机制。映射可以进行以使得原始可变长度名称的分层结构被保持(因此,允许有效、简洁和一般的方式使用固定名称)。
[0118]如在此所描述的,提供了用于压缩共同前缀中的共同性的机制(其可适合于如路由查找的操作)。
[0119]如在此所描述的,提供了用于使用在特定数据网络中提供的不同名称的结构以压缩前缀的机制(导致紧凑的名称空间)。
[0120]如在此所描述的,提供了用于将可变长度分层名称转换成固定长度名称以用于在内容感知路由的上下文中在命名数据网络中执行查找操作的机制。
[0121]如在此所描述的,提供了用于将可变长度名称转换成多个固定长度名称以用于在内容感知路由的上下文中在命名数据网络中执行查找操作。
[0122]在另一个例子中,请求采用至少一个请求分组的形式。
[0123]在另一个例子中,请求被接收为多个请求分组。
[0124]在另一个例子中,固定长度的第二名称空间中的转换后的名称的长度在32与128比特之间。
[0125]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0126]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0127]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0128]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0129]可以以任意程序设计语言或者一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,或者一种过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0130]在此可以将参照根据本发明实施例的方法、系统和/或计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0131]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0132]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0133]应当指出的是前面已经概括了本发明的某些目标和实施例。本发明可以被用于许多应用。从而,尽管说明书是针对特定安排和方法,但本发明的目的和概念适合于和可应用于其他安排和应用。本领域熟练技术人员应当清楚,在不脱离本发明精神和保护范围的情况下,可以对所公开的实施例进行修改。所描述的实施例应当被解释为仅表示本发明的某些特征和应用。通过以泵领域熟知的不同的方式应用所公开的发明或修改本发明,其它有益效果也可以被实现。另外,这里所公开的所有例子意在表示,而非限制。
【权利要求】
1.一种在计算机系统中实现的方法,用于处理数据中心网络中的数据对象,其中,所述数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,所述方法包括: 由所述计算机系统识别所述第一名称空间中在所述数据中心网络中存在的所有名称的集合; 定义从所述第一名称空间到所述第二名称空间的映射; 由所述计算机系统接收包括数据对象的名称的请求;以及 由所述计算机系统转换所述请求中的所述名称,其中,至少部分地基于所定义的映射,所述请求中的所述名称从所述第一名称空间中的名称转换成所述第二名称空间中的名称。
2.如权利要求1所述的方法,还包括:使用所述第二名称空间中的转换后的名称来路由对所述数据中心网络中的数据对象的请求。
3.如权利要求1所述的方法,其中,所述定义的步骤包括: 由所述计算机系统生成表征所述第一名称空间中的名称集合的最长前缀树; 由所述计算机系统折叠所述最长前缀树的分支以减少非分支路径的数量; 由所述计算机系统将所述第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,所述第二名称空间被划分成所述多个段。
4.如权利要求3所述的方法,还包括:由所述计算机系统确定每个所述段的长度,其中,每个所述段的长度至少部分地基于折叠后的最长前缀树的结构确定。`
5.如权利要求3所述的方法,还包括:由所述计算机系统确定每个所述段的长度,其中,每个所述段的长度至少部分地基于所述第一名称空间中名称的预测增长确定。
6.如权利要求1所述的方法,其中,可变长度的第一名称空间中的所述请求中的所述名称采用(a) URI结构和(b)分层结构中的至少一个的形式。
7.如权利要求1所述的方法,其中,当前在所述数据中心网络中存在的名称集合还包括被预测在未来某个时间在所述数据中心网络中存在的名称集合。
8.一种在计算机系统中实现的方法,用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定尺寸名称,所述方法包括: 由所述计算机系统生成表征所述第一名称空间中的名称集合的最长前缀树; 由所述计算机系统折叠所述最长前缀树的分支以减少非分支路径的数量; 由所述计算机系统将所述第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,所述第二名称空间被划分成所述多个段;以及 由所述计算机系统确定每个所述段的长度,其中,每个所述段的长度至少部分地基于折叠后的最长前缀树的结构来确定。
9.如权利要求8所述的方法,其中,折叠所述最长前缀树的分支以减少非分支路径的数量包括:折叠所述最长前缀树的分支以最小化非分支路径的数量。
10.如权利要求8所述的方法,其中,所述第二名称空间被划分成的段的数量至少部分地基于折叠后的最长前缀树中的最长路径的长度。
11.如权利要求10所述的方法,其中,所述第二名称空间被划分成的段的数量等于折叠后的最长前缀树中的最长路径的长度。
12.如权利要求8所述的方法,其中,所述第二名称空间被划分成的每个段的长度至少部分地基于能够容纳从折叠后的最长前缀树的节点发出的分支的比特数。
13.如权利要求8所述的方法,其中,所述第二名称空间被划分成的每个段的长度至少部分地基于所述第一名称空间中名称的预测增长。
14.一种计算机实现的系统,用于处理数据中心网络中的数据对象,其中,所述数据中心网络已与可变名称长度的第一名称空间和固定名称长度的第二名称空间相关联,所述系统包括: 输入单元,其被配置为接收请求,其中所述请求包括数据对象的名称; 识别单元,其被配置为识别所述第一名称空间中在所述数据中心网络中存在的所有名称的集合; 定义单元,其与所述识别单元进行通信,并被配置为定义从所述第一名称空间到所述第二名称空间的映射; 转换单元,其与所述输入单元和所述定义单元进行通信,并被配置为转换所述请求中的所述名称,其中,至少部分地基于所定义的映射,所述请求中的所述名称从所述第一名称空间中的名称转换成所述第二名称空间中的名称;以及 输出单元,其与所述转换单元进行通信,并被配置为输出所述第二名称空间中的转换后的名称。
15.如权利要求14所述的系统,还包括:路由单元,其与所述输出单元进行通信,并被配置为使用所述第二名称空间中的转换后的名称来路由所述请求。
16.如权利要求14所述的系统,其中,所述定义单元通过以下操作定义映射: 生成表征所述第一名称空间中的`名称集合的最长前缀树; 折叠所述最长前缀树的分支以减少非分支路径的数量;以及 将所述第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,所述第二名称空间被划分成所述多个段。
17.如权利要求16所述的系统,还包括:确定单元,其被配置为确定每个所述段的长度,其中,每个所述段的长度至少部分地基于折叠后的最长前缀树的结构确定。
18.如权利要求16所述的系统,还包括:确定单元,其被配置为确定每个所述段的长度,其中,每个所述段的长度至少部分地基于所述第一名称空间中名称的预测增长确定。
19.如权利要求14所述的系统,其中,可变长度的第一名称空间中的所述请求中的所述名称采用(a) URI结构和(b)分层结构中的至少一个的形式。
20.如权利要求14所述的系统,其中,当前在所述数据中心网络中存在的名称集合还包括被预测在未来某个时间在所述数据中心网络中存在的名称集合。
21.一种计算机实现的系统,用于将第一名称空间中的任意长度名称映射到第二名称空间中的固定长度名称,所述系统包括: 生成单元,其被配置为生成表征所述第一名称空间中的名称集合的最长前缀树; 折叠单元,其与所述生成单元进行通信,并被配置为折叠所述最长前缀树的分支以减少非分支路径的数量; 划分单元,其与所述折叠单元进行通信,并被配置为将所述第二名称空间划分成多个段,其中,至少部分地基于折叠后的最长前缀树的结构,所述第二名称空间被划分成所述多个段;确定单元,其与所述折叠单元和所述划分单元进行通信,并被配置为确定每个所述段的长度,其中,每个所述段的长度至少部分地基于折叠后的最长前缀树的结构确定;以及 输出单元,其与所述划分单元和所述确定单元进行通信,并被配置为输出划分后的段和划分后的每个段的长度。
22.如权利要求21所述的系统,其中,折叠所述最长前缀树的分支以减少非分支路径的数量包括:折叠所述最长前缀树的分支以最小化非分支路径的数量。
23.如权利要求21所述的系统,其中,所述第二名称空间被划分成的段的数量至少部分地基于折叠后的最长前缀树中的最长路径的长度。
24.如权利要求23所述的系统,其中,所述第二名称空间被划分成的段的数量等于折叠后的最长前缀树中的最长路径的长度。
25.如权利要求21所述的系统,其中,所述第二名称空间被划分成的每个段的长度至少部分地基于能够容纳从折叠后的最长前缀树的节点发出的分支的比特数。
26.如权利要求21所述的系统,其中,所述第二名称空间被划分成的每个段的长度至少部分地基于所述第一名称空间`中名称的预测增长。
【文档编号】G06F17/30GK103870267SQ201310625383
【公开日】2014年6月18日 申请日期:2013年11月28日 优先权日:2012年12月17日
【发明者】R·B·迪奥马哈尼, 高凤晙, 李康源, V·帕帕斯, R·拉哈文达, D·C·维尔马 申请人:国际商业机器公司