命名资料网路

命名资料网路（Named Data Networking，NDN）是一个未来的互联网架构（Future Internet Architecture），灵感来自多年在网路使用上的实证研究，导致人们逐渐意识到，现今的互联网架构中在旧有的 IP 协定上悬而未决的问题 。
NDN根源于一个Van Jacobson在2006年首次公开展示的专案计划「」(CCN)。NDN的目标在于检视如何依据Jacobson的提议，从现今以主机为中心的网路架构IP演进到以资料为中心的网路架构NDN。一般相信这项概念上的简单转变，将对人们如何设计、开发、部署和使用网路以及应用程式产生深远的影响
网际网路目前主要用作信息散布的平台，但这并非 IP 的强项。因此，未来互联网的“瘦腰”（thin waist）架构应当基于命名资料，而非以数字定址的主机。基本原则是，通信网路应该允许用户专注于他或她需要的资料，也就是所谓的「内容」（content），而不必指定资料要取自哪个实际位置，也就是所谓的「主机」（host）。由于当前的互联网中，绝大多数（“高达流量的90％”）的网路使用方式都是由单一来源传播到多个用户, 命名资料网路的许多机制均具有广泛的优势潜力，例如内容快取，以减少拥塞并提高传递速度，简化网路设备配置，以及在资料层级就直接内建网路安全性。
背景.
现今的互联网沙漏架构（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封包格式请看： NDN Packet Format Specification.
路由器架构.
为了实现兴趣封包和资料封包的转发功能，每个NDN路由器有三个资料结构和一个转发策略。
当兴趣封包到达时，NDN路由器会先查询内容暂存中是否有符合的资料，如果有相符的资料的话，路由器会直接透过兴趣封包传来的介面回传资料封包，否则路由器会在PIT中查询兴趣封包的名字，如果有相同的条目在PIT中的话，路由器会在该PIT的条目中简单记录兴趣封包的来源介面，但如果在PIT中没有相同的条目的话，路由器将会基于FIB中的讯息和路由器的转发策略向资料生产者转发兴趣封包，当路由器收到很多来自下游节点中相同名字的兴趣封包时，它只会向上游的资料生产者转发第一个兴趣封包。
当资料封包到达时，NDN路由器会先查询相符的PIT条目并向列在PIT条目所有的下游介面转发资料，然后在PIT中移除该条目并将此资料暂存在内容暂存中，资料封包总是沿著兴趣封包的相反路径回传，而且不会遗失封包。在每条连结中，一个兴趣封包会返回一个资料封包，提供了流平衡的机制。为了取得包含多个封包的大物件，兴趣封包提供了一个类似TCP ACKs用来控制流量的角色：被资料消费者控制的细粒度的反馈回路。
兴趣封包和资料封包都不携带任何主机或介面位置，路由器是基于封包中携带的名字来转发兴趣封包给资料生产者，并基于兴趣包在每个节点所建立的PIT状态讯息向消费者转发资料封包。兴趣封包与资料封包交换的对称性减少了hop-by-hop的控制回路（不要与对称路由或路由搞混），并消除了在资料传输中任何需要来源与目的节点的概念，不像IP的端到端的封包传送方式。.
名字.
设计原理.
NDN的名字在网路中是不透明的，这可以让每个应用程式去选择适合的命名方式。因此，命名能够随网路独立地演进。
结构.
NDN的设计假设为有层次化的结构命名，例如，由UCLA生产的影片可能被命名为 /ucla/videos/demo.mpg，其中「/」以文本表示法描绘了名字的构件，与URL相似，这种层次化的结构有很多的潜在好处：
指定名字.
为了得到动态产生的资料，消费者必须能够为想要的资料建构名字，而不是用先前看过的名字或资料。方法有以下两种：
目前研究正在探索如何让应用程式去选择名字，让这个名字可以促进应用程式的开发和网路的传递。研究的目标是去发展和精进目前存在的原理及命名的指导方针，在系统库中将其加入命名的方式，用来实行简化未来应用程式的开发。
命名空间.
可以被全球得到的资料一定有全球唯一的名字，但用于当地通讯的名字只需要当地路由(或当地广播)来寻找符合的资料。单独的资料名称在很多范围和上下文中是有意义的，范围从「房间里的电灯开关」到「世界上所有的国家名字」。
命名空间的管理不是NDN架构中的一部分，就像位址空间的管理也不是IP架构中的一部分。然而，命名则是NDN应用程式设计中最重要的部分，让应用程式开发者和使用者去设计他们自己的命名空间作为资料交换有几项好处：
路由.
解决IP问题的方法.
NDN路由器和转发封包都是以名字为基础运作，也因此而解决了三个由IP架构中位址所产生的问题：
协定.
NDN网路可以使用传统的路由演算法，例如：链状路由演算法和距离向量演算法。代替宣告IP的前缀中，NDN路由器宣告名字的前缀让他可以覆盖路由器愿意服务的资料。传统的路由协定，比如OSPF和BGP，都可以适用于将名字视为不透明的序列组件来对名字前缀进行路由，并对兴趣封包中的名字针对FIB表做出基于组件的最长前缀匹配。
PIT状态.
每个路由器的PIT表支援跨越NDN资料面的转发，记录了每个待定的兴趣封包和来源介面，并在收到相符的资料或超时发生后移除兴趣封包。这种每跳每个封包状态与IP的无状态资料面不同，基于FIB中的讯息和效能测量，在每个路由器中的转发策略模组会做出以下正确的决定：
兴趣封包.
如果路由器决定兴趣封包不能被满足，例如：上游连结是关闭的，FIB表中也没有转发的条目或极端的塞车情况发生，路由器会发送一个NACK给传送兴趣封包的下游邻居。这样的NACK可能触发接收路由器去转发兴趣封包到其它介面来寻找替代的路径。PIT状态使路由器可以去辨认和丢弃循环的封包，允许他们自由地向相同资料产生者使用多样的路径。封包不能在NDN中循环，代表不需要在IP中有生存时间或其它措施和位址的相关协定来解决这些问题。
安全.
概述.
相对于TCP/IP将安全的责任交给端节点，NDN本身就可以透过资料生产者对每个资料封包签名来确保资料的安全，资料生产者的签名能确保资料的完整性，并可以知道资料来源，让消费者可以借由如何得到资料及哪里得到资料来提高对资料的信任度。NDN网路也支援细粒度(fine-grained)的信任，允许消费者推测关于公钥的拥有者是否是在特定环境中特定资料的一个可接受的发布者。第二个主要的研究是设计和开发可用的机制来管理使用者的信任，这里有两个不同类型的信任机制：
应用层的安全.
NDN的资料中心安全有固定的应用程在内容访问控制及其础建设的安全方面，应用程可以加密资料和分配密钥当命名封包使用相同命名架构去分配密钥时，有效的限制资料安全周长在单个应用程式中。为了验证资料封包的签名，应用程式可以取得适当的密钥，确认封包中密钥的位置区域，就像任何其它的内容。但信任管理，例如，如何确认在应用程式中特定的封包所提供的密钥的真实性，是一个主要的研究挑战。 一致的实验方法，NDN的信任管理研究由应用层的开发和使用来驱动：先解决特定问题，然后定义出共同模式。例如，NLSR的安任需求需要开发一个简单的层次化信任模组，利用最低层级的密钥(接近root)，密钥用名字发布来当作最高层级中的密钥，该名字反应了他们之间的关系。在这个信任模组中，命名空间与层次结构的信任代表的相配，例如，/root/site/operator/router/process。在分层架构中特定命名发布的密钥，授权他们可以签名特定的资料封包并限制他们的范围。这个范例可以简单地延伸到其它真实世界信任趋向于层次化模式的应用程式，像我们建构的管理系统(BMS)中。因为NDN在控制应用程式中留下了信任模组，更有弹性和表现力的信任关系，比如ChronoChat，激发了信任网路模组实验的积极性，这个安全模组是在目前的聊天室中参与者可以透过新的签名来介绍新的参与。未来的应用程式将实现一个交叉验证模组(SDSI)，这个模组将提供更多的验证，让资料和密钥名字可以是独立的，这将更简单地适应各种真实世界的信任关系。
路由安全.
此外，NDN处理网路路由和控制讯息，比如所有NDN的资料或要求签名，这些为安全路由协定抵抗攻击提供了坚固的基础，例如，欺骗和篡改。NDN使用多路径的转发和自适转发策略模组，减缓了前缀被劫持的攻击，因为路由可以侦测到劫持后的异常现象，并透过替代路径来取得资料，由于NDN封包引用的是内容而不是设备，所以恶意地指向特定设备变得更加棘手，虽然减缓机制可以针对其他NDN的特定攻击，例如，兴趣封包泛洪的DoS攻击。此外，待定兴趣表中关于先前的要求封包，可以为如何处理兴趣封包做出明智的决定，有以下几个安全的优点：