命名資料網路

背景

现今的互联网沙漏架构（hourglass architecture）以一个普世通用的网络层（network layer）为中心，也就是IP。在 1970 年代设计IP 时的基本概念，是要能允许分散在各个不同地理区域的使用者都能顺利存取少数巨大而不会移动的电脑，因此当代的互联网架构也都是围绕着这种以主机对主机的会话模式而设计。 IP 中实作了要达成全球互联所需的最少功能，这种细腰架构促成了互联网爆炸性的成长，使得下层与上层的技术可以独立发展与创新。然而，IP 当初只是设计来建立一个通讯网络，因此它的封包是以通讯的端点来进行命名。

随着电子商务、数位媒体、社交网络、智能手机等应用逐步地成长，互联网不再只是一个（像电话网络一般）点对点的通讯网络；目前互连网上大多数的用途是作为一个散布网络（distribution network）。散布网络比起通讯网络在功能上更加地一般化，因此借由传统点对点对点的通讯协定来试图解决散布的问题，不但复杂而且容易出错。
命名资料网络这个专案计划试图改进IP 架构，让细腰角色更加一般化，让它在处理封包是依据资料而非通讯端点来命名。更明确地说，之前的IP 网络提供的服务是将封包递送到指定的位址，而命名资料网络所提供的网络服务，是依据所指定的名称来获取资料。命名资料网络中的“名称”可以是任何东西－－ 一个端点、一部电影或一本书中的一段资料内容、一个开启灯光的指令等等。期望这个概念上的简单改变的可以让互联网除了现有点对点的通讯外，更佳地应用在更广泛的应用上。  命名资料网络的设计中，融合了过去三十年在网络工程上所习得的经验，在一开始就将许多重要的功能整合到协定中，像是利用兴趣封包（Interest packet）与资料封包（Data packet）的流量平衡来进行网络流量的自我调控，并对所有网络上传送的资料进行数位签章以确保安全性。

先期研究

命名资料网络的哲学始于1979年由Ted Nelson 率先提出，其后Brent Baccala 在 2002 年持续发扬光大。在 1999 年时，史丹佛在TRIAD 计划 中提出，使用一个物件的名称直接绕送到一个邻近的复本，即可避免再去名称服务器（DNS server）查询。在 2006 年，柏克莱的“资料导向网络架构”（Data Oriented Network Architecture，DONA）计划提出一个以内容为中心的网络架构，它进一步改善了TRIAD，在架构中加入了安全性（认证）的机制。Van Jacobson 在2006年至Google演讲有关网络的演进A New Way to Look at Networking，主张命名资料网络将是网络发展的下一步。在 2009年，PARC 在 CCNx 计划内宣布了他们的内容中心架构，该计划是由当时身为PARC 研究院士的Jacobson 所领导。2009年9月21日,PARC 发布了他们内容中心网络研究计划的互操作性规格，并且以GPL首次释出公开源代码（见 CCNx 计划网站）。有一个更加广义的网络研究方向叫“资讯中心网络”（information-centric networking ，ICN），许多不同的架构设计都由此发展出来，命名资料网络只是其中的一例。互联网研究任务小组（Internet Research Task Force，IRTF）在2012年成立了研究ICN 的工作小组。

现状

命名资料网络包含国家科学基本所赞助的16个计划主持人，涵盖12个校园，以及来自学术界与产业界研究社群与日渐增的兴趣 。 目前有许多关于命名资料网络的研究成果 被陆续发表，以及迅速成长的程式码 被贡献至相关社群。

设计原理

NDN的名字在网络中是不透明的，这可以让每个应用程序去选择适合的命名方式。因此，命名能够随网络独立地演进。

协定

NDN网络可以使用传统的路由算法，例如：链状路由算法和距离向量算法。代替宣告IP的前缀中，NDN路由器宣告名字的前缀让他可以覆盖路由器愿意服务的资料。传统的路由协定，比如OSPF和BGP，都可以适用于将名字视为不透明的序列组件来对名字前缀进行路由，并对兴趣封包中的名字针对FIB表做出基于组件的最长前缀匹配。

兴趣封包

如果路由器决定兴趣封包不能被满足，例如：上游连结是关闭的，FIB表中也没有转发的条目或极端的塞车情况发生，路由器会发送一个NACK给传送兴趣封包的下游邻居。这样的NACK可能触发接收路由器去转发兴趣封包到其它界面来寻找替代的路径。PIT状态使路由器可以去辨认和丢弃循环的封包，允许他们自由地向相同资料产生者使用多样的路径。封包不能在NDN中循环，代表不需要在IP中有生存时间或其它措施和位址的相关协定来解决这些问题。

应用层的安全

NDN的资料中心安全有固定的应用程在内容访问控制及其础建设的安全方面，应用程可以加密资料和分配密钥当命名封包使用相同命名架构去分配密钥时，有效的限制资料安全周长在单个应用程序中。为了验证资料封包的签名，应用程序可以取得适当的密钥，确认封包中密钥的位置区域，就像任何其它的内容。但信任管理，例如，如何确认在应用程序中特定的封包所提供的密钥的真实性，是一个主要的研究挑战。 一致的实验方法，NDN的信任管理研究由应用层的开发和使用来驱动：先解决特定问题，然后定义出共同模式。例如，NLSR的安任需求需要开发一个简单的层次化信任模组，利用最低层级的密钥(接近root)，密钥用名字发布来当作最高层级中的密钥，该名字反应了他们之间的关系。在这个信任模组中，命名空间与层次结构的信任代表的相配，例如，/root/site/operator/router/process。在分层架构中特定命名发布的密钥，授权他们可以签名特定的资料封包并限制他们的范围。这个范例可以简单地延伸到其它真实世界信任趋向于层次化模式的应用程序，像我们建构的管理系统(BMS)中。因为NDN在控制应用程序中留下了信任模组，更有弹性和表现力的信任关系，比如ChronoChat，激发了信任网络模组实验的积极性，这个安全模组是在目前的聊天室中参与者可以透过新的签名来介绍新的参与。未来的应用程序将实现一个交叉验证模组(SDSI)，这个模组将提供更多的验证，让资料和密钥名字可以是独立的，这将更简单地适应各种真实世界的信任关系。