现有CCN命名方案分为层次命名、扁平命名和属性命名。三种命名方案都能够支持聚合,从而提高了路由表的可扩展性。NDN对分层名字进行前缀聚合,实现可扩展性。CBCB使用属性值对裁剪广播树中多余的分支。CBCB中将带有共同属性的 Predicates组合,从而减少路由表项数量。DONA使用的扁平名字,以及NetInf/MDHT和PURSUIT使用的P:L能够在发布层进行聚合。但是,DONA中的聚合不是非常有效,其在更高层RH中遭遇负载增加的问题。扁平名字更适合基于 DHT的查找服务,如 NetInf/MDHT和PURSUIT,其存储负载在解析节点之间均匀分布。PURSUIT也在Scope层的名字中完成另外的聚合。
对内容名字使用加密哈希隐藏了底层内容的语义,使得名字很难被记忆。这一问题使得DONA中的自认证名字,以及NetInf和PURSUIT的P:L名字不够友好。另外,CBCB和NDN的命名方案更为友好,因为使用分层结构和基于属性的分割使得名字更容易被记忆,而且提供了更多关于内容语义的信息。但是这种友好性带来一些挑战,即如何确保全局唯一性、安全绑定和可信性 [8] 。
鉴于层次命名和扁平命名两种方法的关联性,下面对二者进行对比。
这两种命名方法都要对下面三个实体建立两两绑定,目的是增强安全性。
(1)RWI(Real-World Identity):即“真实身份”,是真实世界中的人或组织名称。
(2)Name:即“名字”,是提交到网络中用于进行内容索取时的名字,由发布者负责。DONA用Principle指代内容发布者这一角色,不仅创建、提供内容,更要证实、担保内容。可以看出,在CCN体系中更重视内容源头的合法性。
(3)Public Key:即“公钥”,每个内容发布者都关联一对公钥和私钥,订阅者使用公钥核实RWI确实签署了内容。将RWI-Public Key和Public Key-name这两对绑定称为可信机制。
如图2-7所示,层次命名的内在绑定是 RWI-Name,扁平命名的内在绑定是Public Key-Name。两种方法都需要一种外部认证来提供另一种绑定,层次命名需要的是Public Key-Name绑定,扁平命名需要的是RWI-Public key绑定。表2-1和表2-2分别对两种方法的安全性和绑定性进行了比较。
图2-7 基本绑定
表2-1 层次命名与扁平命名方法的安全性比较
表2-2 层次命名与扁平命名方法的绑定比较
分层命名需要PKI(Public-Key Infra Structure)提供绑定Public Key-Name,而PKI需要根可信认证(Root Trust Authority)和策略的通用授权。
分层命名和扁平命名方法均具有各自的优缺点。在形式上,分层命名比扁平命名更便于人的理解、记忆,并且其可聚合的特点也有利于控制路由规模,但后者在安全性、灵活性方面则比前者更具优势。