尽管层次命名增强了网络的可扩展性,使名称具有较强的可聚合能力,减小了路由表,然而,层次名称却具有语义性,这在一定程度上限制了文件名称的生命周期。例如,当名称为/lab/thu/icn.jpg对应的文件失效时,采用层次命名的路由将无法找到数据源文件。另外,同一名称的文件可能被多级网络缓存,此时文件名称却无法聚合,路由表需要若干条记录分别保存文件的位置信息,反而降低了路由表记录的聚合度。为了避免上述问题,DONA [3] 、NetInf [4] 和PSIRP [5] 提出采用扁平与自认证(Flat and Self-Certifying)的方法对内容文件进行命名,即直接计算文件位置与文件内容的组合哈希值,并将获得的结果作为文件名。因此,扁平名称通常由一系列不规则的数字或字符组成。扁平文件名称直接由位置与内容决定,不再具有语义性且文件名称具有全局唯一标识。尽管如此,由于扁平名称不具有语义性,无法实现信息名称的可聚合,因此,扁平命名方法并不能较好地支持网络路由的可扩展性。
DONA(Data-Oriented Network Architecture)项目主张完全重新设计互联网名字解析系统。DONA提出使用一种扁平且自认证的命名方案,并使用分层组织的名字解析完成三个主要目标:可靠性和低延迟、名字持续性和内容可追溯性。
DONA中的每个内容都关联着一个发布实体,叫作Principle(拥有者)。DONA中的名字格式为P:L,其中P是拥有者公钥的加密哈希值,而L是拥有者赋予的标签。拥有者对L的唯一性和粒度负责。P:L名字是全局唯一且持久的。
每个关联的元数据包含完整的公钥信息和签名的数字摘要。名字中的P部分确保了内容的出处,数字摘要确保了内容的完整性。任何存储有效副本的主机都能够作为数据源提供服务。验证公钥的工作交由内容接收者完成,主要通过如下两种途径来完成。
(1)在一个众所周知的特殊标签下存储拥有者的公钥。
(2)依赖PKI或者WoT(Web of Trust)设施进行密钥验证。
名字解析结构为RH(Resolution Handler)结构,RH位于域内,每个域都拥有一个RH。RH之间的关系服从域间的关系。所有的RH形成了一种分层结构,如图2-3所示。DONA采用了Register和Find两类分组。Register分组在RH结构中注册服务器信息,Find分组解析并路由数据。解析设施提供一个非常简单的接口,包括两种操作:Find(P:L)和Register(P:L)。Find(P:L)用来定位目标P:L,而Register(P:L)用来设置RH的必要状态以有效路由后续的 Find消息。RH之间的路由直接基于名字完成,而且网络运营商能够像 BGP (Border Gateway Protocol)一样定义全局和局部路由策略。当 Find消息被转发时,每跳的域地址都会追加到该消息上。一旦 Find消息被解析,内容就能够沿着路径反向发送传递给客户端,或者DONA能够使用IP路由将发现的内容返回给客户端。
图2-3 DONA的名字解析过程
DONA解析和路由过程在 RH结构中完成。首先,服务器通过 Register分组向 RH注册信息,RH建立信息表。需求端发送Find(P:L)分组,RH收到Find后,根据信息表查找P:L,若下一跳是信息副本,则发送给信息副本;若不是,则转发给下一跳RH,如此循环,直到最近信息副本,信息按照原路径返回。DONA底层网络仍采用IP网络,但是口地址只作为一种本地化标识。
图2-3描述了不同 RH的注册表,以及内容 P 2 :L 1 的 Register和 Find消息传输路径,其中,该内容被分别附属于 RH1和 RH7的两个客户端应用 C1和 C5所注册。注册表存储三元组<P:L,下一跳RH,距离>。当在注册表中不存在该名字的记录,或者新的Register来自于一个更近的副本时,每个RH都转发Register消息给它的提供者RH(即父 RH)。来自C1的C5的Register消息分别沿着路径C1→RH1→RH0 和C5→RH7→RH3→RH0传输,而且为有效发现网络中最近的内容副本建立了必要的状态。在收到一个Find消息之后,如果在注册表中有一个匹配项,那么该Find消息被转发给下一跳RH,否则该Find消息被转发给它的父RH。该机制保证了发现最近的注册副本,这在图2-3的Find消息转发例子中显而易见。在可扩展性方面,DONA根据RH在分层结构中的位置施加名字解析任务,不具有可靠性,因为Tier-1层的RH需要存储网络中的所有名字。
DONA的优点如下。
(1)信息命名结构具有持久性、全局唯一性和自我验证性,解决了移动问题、安全问题。当数据移动时,名字不随宿主主机地址改变而改变,解决了移动性问题。DONA返回的数据格式是三元组(Public Key、Signature、Data),计算Public Key的Hash值与P是否匹配,同时验证Signature与Public Key是否匹配,若都匹配,则证明数据源可信,P:L具有自我验证性,安全性能更优。
(2)名字解析RH结构兼具名字解析和路由功能,对比DNS,具有高效性。RH结构不同于DNS,RH结构更灵活,在解析过程中完成路由功能。同时,RH中缓存数据,其解析和传输效率高于DNS,鲁棒性更强。
DONA最大的问题是可扩展性问题。由于采用扁平化名字,聚合难度大,同时数据量又远远大于 IP地址,路由表膨胀问题严重,尤其是顶层路由器可扩展问题更加严重。
Network of Information(NetInf)是欧盟FP7项目4WARD和SAIL的一部分。4WARD项目更多关注命名和内容搜索,而SAIL项目关注网络传输问题。NetInf使用与DONA类似的扁平和自认证名字。
NetInf没有明确底层网络是否采用IP网络,只是提出了基于名字的路由及信息名字到信息位置的解析,并没有明确具体信息位置采用的形式。NetInf提出了信息模型,如图2-4所示,定义了三种对象,即信息对象(Information Object,IO)、数据对象(Data Object,DO)和位对象(Bit Object,BO);建立了三种对象之间的关系,即信息对象可以包括信息对象和数据对象,数据对象可以包括位对象,为信息的聚合提供了思路。与DONA类似,NetInf中的名字采用T:P:L定义信息名字,T为类型,即IO、DO、BO;P是拥有者公钥的哈希值;而L是拥有者所选择的一个标签。对于一个静态内容,L是内容自身的哈希值。但是对于一个动态内容,一个固定的ID用来作为L,而一个数字签名(存储在元数据中)确保了内容的完整性。NetInf提出捆绑使用内容的公有−私有密钥对,单一拥有者可以使用多个公有−私有密钥对。拥有者认证和标识是由存储在元数据中的公钥链信息决定的。这一特征启用了匿名性,完成了内容的安全发布。
NetInf将解析和路由合二为一,保证了信息传输的高效性。NetInf使用一种基于多层DHT(Distributed Hash Table)的名字解析服务MDHT(Multilevel DHT),该服务提供基于名字的任播路由。如图2-5所示,MDHT是一种多层嵌套的分层DHT,利用分域请求模式最小化自治域内(Intra-AS)的路由延迟。图2-5中,三个DHT被分布嵌套在访问节点(Access Node,AN)层、接入节点(Point Of Presence,POP)层和自治系统(Autonomous System,AS)层。每个DHT都允许各自的DHT算法,而且任何节点都能够参与多个DHT。域内路由和转发是依据局部DHT算法的规则完成的,域间路由是通过在局部DHT中找到一个同时参与更高层DHT的节点完成的。
内容X的注册过程如图2-5(a)所示。主机T k 在三个不同层注册内容X:AN、POP和AS。AN存储了两种映射:一是内容X是否属于主机T k ,二是主机T k 是否能够在地址k中被找到,k可以是一个IP地址或访问节点C的一个私有地址。POP和AS层的DHT将内容X映射到访问节点C。图2-5(b)描述了名字解析和内容X的数据传输路径。查找内容X的主机T 0 首先在局部AN中进行查找,如果没有找到,那么在局部POP中进行查找,然后在AS层的DHT中查找。如果在AS层中查找失败,那么T 0 将在解析交换(Resolution Exchange,REX)系统中查找名字,该系统是一个用来管理注册、更新和全局名字聚合的独立实体。REX系统生成的聚合绑定被AS层DHT缓存,以减轻REX系统的负载。
图2-4 IO、DO、BO之间的关系
图2-5 NetInf中的MDHT内容注
NetInf定义了信息名字、信息位置和主机身份,实现了三种身份位置分离机制,保证了移动性、多归属(Multihoming)等。NetInf仍处于设计阶段,更偏向理论研究,如何实现名字聚合,如何将信息名字应用到解析过程和路由过程等仍需要明确。
PSIRP(Publish Subscribe Internet Routing Paradigm)为CCN提出了一种全新的路由架构,将现有基于“发送−接收”的互联网转变为“发布−订阅”模式。PURSUIT项目的主要目标之一是开发互联网规模的、可部署的PSIRP体系组件。PURSUIT [6] 是欧盟最近启动的FP7项目,并作为对以前FP7项目PSIRP的继续拓展。
PSIRP 使用与 DONA 相同的命名方案,内容名字叫作资源标识符(Resource Identifiers,RIds)。PURSUIT继续使用相同的命名方案。内容持续性是通过使用特殊的网络实体(位于网络边缘的数据源)来确保的,数据源周期性更新网络中的内容发布状态。
PSIRP网络是基于范围(Scopes)概念组成的,其中范围是由范围标识符(Scope Identifiers,SIds)表示的。范围控制了访问权限、认证、可达性、有效性、复制、持续及内容的上行资源。内容发布和内容请求是基于<SId,RId>对完成的。该机制的一个隐含假设是内容发布者将要发布,而订阅者将要订阅他们信任范围中的内容。
PSIRP的相关内容我们在1.2.2节已经介绍,此处不再重复。