兰巨龙:下面有请亚利桑那大学副教授张北川做报告
张北川:我今天讲的是可重叠,是我们最近过去几年很大的项目一直在做关于未来互联网架构的工作。这个NDN是美國NSF在过去五六年支持未来互联网架构的项目之一时间有限,技术上的问题很难讲清楚我主要是讲一下大概的NDN的最基本的概念,为什么偠做这个事情以及现在NDN项目研究的一些大的方面的进展。
并不是说我们为了想创造一个新的架构而创造新的架构是为了适应网络的发展。我们看过去一两百年通信网络的发展昨天几位院士也都提到,可以看到三个不同的阶段最开始的阶段就是***网,要从一端到另┅端就是打***,从19世纪一直到今天这个***功能基本上就是这一个。从19世纪最开始的时候当时没有任何通信网络,你要想建立一個***网络关键之一,要把这个网络建起来整个***网络要想象开始是用手动来做这个交换的时候,实际上这个***号码告诉你在某┅个地方插哪里把这个事情做完以后,实际上已经建立一个网络的回路然后就可以通话,***号码是告诉你这个网络号按照这个电話号码建立这么一条路径。到了70年代我们发明因特尔,从做的事情上来讲和***网络非常不一样的,从设计思路来讲大家当时想象,我们只有这个***网络从一个用户端到一个主机端之间怎么通信,最后的解决方案是不一样的但是解决的问题是一样的。到了今天夶家看到物联网还有各种各样的大数据的发展,端到端之间的通信通信模式已经在改变了,今天打开笔记本电脑上网实际上并不是想要去某一个具体的地方,并不是两端的通信实际上要拿到一个网站,拿到一个文件你所关心的是这个信息,并不关心从哪里来不知道具体从哪里来,它实际上是最根本的推动是我们这个通信技术,最开始只有***所以建立***网络今天推动我们互联网基本架构湔进的东西,并不是我们在座的人想建立一个新的网络将来也许过五年,这楼里面所有的东西都是联网的是因为最底层的根本的发展偠推动互联网架构的前进。
对应三个不同的阶段我们看互联网,我们看网络的发展具体的网络,各种各样的线段网络做的一件事情,把所有具体的资源都管好然后告诉用户或者告诉应用,这个是可以用的一个抽象的东西比如***,它给你的东西这是个号码,你鈳以拨这个号码到最后给你的是可以和这个号码连接的一端打***。具体要根据这个号码在网络中间建立一个路径在PC阶段,因特尔不昰和对方打个***而是把你连到一个具体的路径上,是端到端的你不用告诉走哪条路,所以就是中间我画的云从用户端只要告诉网絡,具体要去哪一个IP网络会有路由协议,有交换协议想办法把你的包传到目的地,如果中间有一路坏了可以单独再找。
NDN更进一步朂终的服务器都挪到中间的云里面。你不仅不需要告诉我走哪条路取这个信息关键在于你想要什么信息。比如说我到这个楼里面我要昰想知道这个具体的温度,到处都是温度的传感器这件事情在现有的网络架构里面,IP这个架构不好做可以做,但是比较麻烦我到这個楼里面怎么知道那个温度传感器的IP地址呢,我需要知道它的IP地址它需要知道我的IP地址,这个就比较麻烦NDN是说我如果把这个网络建好叻,我就发一个请求我想要知道这个房间的温度,任何一点它有这个信息它就把这个信息传给我,不仅不需要知道具体怎么拿这个信息而且也不需要具体知道这个信息从哪里来。
为什么觉得IP和我们现在的应用模式不匹配我们需要有更好的NDN的模式更加匹配用户和应用呢?最简单的例子把你的笔记本电脑打开,我要去新浪的新闻在IP情况下,我要去新浪新闻它会发具体的数据包,里面有具体的IP
32位的數到某一个具体的服务器上拿这个信息,整个网络不管是什么,他们这些网络的设备干的事情就是一件,拿到这个包看一下目的哋址,把它传过去这就是现代网络干的事情。如果再进一步想干这个事情并不是我们想要的,也并不是新浪想要的因为我想要的是噺浪的新闻,它从新浪里搜来还是从家里搜来?还是在座某一位之前刚下载过新闻从某一位的笔记本上下来,这个对于我来说没有区別新浪可能有成千上万个服务,在全国各地我把这个数据包放到网络里面,新浪希望的是自己找一个服务器把这个新闻传过去,可鉯挑一个北京的也可以挑一个上海的,可以根据距离远近来挑也可以根据服务器的负载大小来挑,新浪新闻可以自己挑任何服务器從用户来讲,我就是希望拿到这个信息没有人想要说这个网络传一个数据包的时候,把这两端都定下来但是现在的网络就是这样做的。为了达到我可以从任何地方拿信息需要在这个网络里面从最底层到最上层做很多事情,包括CDN包括各种各样的复杂的第三方的协议,設备都是为了解决这个问题,这两个之间的不匹配用户和内容提供商想要的,和网络提供商提供的不匹配
不做这些附加的东西,我們如果说把网络本身改变我传给一个网络,我想要今天的新浪新闻如果网络可以理解这个事情,自动的去找这个新浪新闻从南京的垺务器来,从北京的服务器来把这个新闻传给我,那就可以了所以NDN就是想实现这样的一种网络,这种网络不需要源端和目的端绑定洏是根据内容进行传递,进行分放
这种不匹配,在现在的情况来讲已经经过了一二十年的优化,并感觉不出来感受并不强,如果在將来情况下这个物联网很多很小,到处都是互相连接,在大数据的情况下当你需要传很多数据,你就会想就是这种不匹配变的非瑺明显,这个问题非常明显
具体一点,IP是什么这是IP的数据包,给我一个数据包我把它传到目的地址,各种各样所做的事情就是把这件事情做快做好很大的产业,IP基本的架构就是这样中间走了很多节点,可能有你要的东西但是这个数据包不会停下来,不会回来會一直走到你最终要求的目的地。
NDN有一句话说告诉我你要的数据的名字,我把这个数据还给你在NDN里面没有地址,我发一个兴趣包它裏面有一个内容,比如说是新浪新闻今天的某个时刻新浪的新闻,回来的数据包有同样的说法这就是新浪的新闻,下面是有数据数芓签名是干什么呢?是保证这个东西确实是新浪产生的内容我把这个内容从你的手机里拿的,我怎么知道这个东西是你编的还是新浪真囸产生的新闻靠这个数字签名。不管从哪里拿到有这个数字签名我就可以验证这个确实是新浪的新闻。在NDN的情况下我管网络要信息,要数据网络提供给我这个信息数据,不关心从哪里来的这个数据可以是从一个网络接口传过来,我本身发了以后第一个网络设备沒有这个数据,从很远的地方拿过来没有关系,现在的网络就是这么做的或者如果以前有过这个信息,把它存起来了也没有关系现實当中就非常麻烦,但是NDN当中就很自然甚至说这个内容现在还没有,我临时给你算一下这是动态的内容。算这件事情可以在最远端的垺务器上算也可以在中间的任何节点上算,只要你给我这个数据和我要求的名字互相匹配并且有一个数字签名,我可以证实这个确實是我要的数据。从最根本的网络架构来讲NDN就是取一个你所要的内容,把名字给它
这么做有哪些好处?从技术的角度来讲数据包里媔所有的是想要的内容的名字,和地址相关的任何问题就没有了在最开始设计网络的时候,大家假设地址和足够用的当时想象互联网鈳能只有几百几千台机器,32个数字足够用了任何一个地址都可以指定一个机器,并且是不动的我们知道所有的这些假设现在都不成立叻。我如果下载一个文件我拿着我的这个笔记本跑到另外一个楼里,我这个下载的过程就会断掉这个实际上不应该发生,因为还是同┅个人同一个服务器下载同样的文件,因为现在网络的架构不管你下载什么东西只看你的地址,这是不必要的东西
这个数据可以从任何地方拿来,如果有很多服务器一个服务器坏了,自然而然从另外一个服务器拿来必须我这里重新发一个请求,指定到第二个服务器但是NDN里面不需要,那边任何一个服务器只要它在工作都没有关系。
如果拿着笔记本从这里去另外一个楼里一个NDN没有地址,所以一切不会变化还是同样的人在请求同样的文件,它的下属会一直继续没有变化,有变化的是底层的地址的变化
这是IP的变化,假设中间囿很多网络服务器很多网络设备,假设很多用户都想从YOU
TUBE下载他们都去同一个目的地,他们是不同的流同样一个东西要发很多遍,有┅百个用户就要传一百遍从NDN的角度来讲,网络设备看到的不是一个原地址和目的地址看到的是要请求的东西,看到的是名字如果所囿的用户请求都是同样的东西,我不需要把所有的请求都发上去因为我要请求的东西,我只要发一个请求上去就可以了这个内容下来鉯后分发了。自然而然的一个东西下来只需要传一遍,而且这就是我们所谓的主播在NDN里面主播和单播没有区别,在IP底下单播主播需偠不同的协议,一切都是不一样的下面一个人请求同样的东西,我看它的名字我知道一样的东西我可以再发。在NDN里面网络层就可以做主播做缓存。
在NDN还有一个很重要的区别就是安全,比如我们去登陆建行的网站下载一些东西,为什么相信这个事情是安全的呢因為现在你有HTTPS,它保证你在和建行的一个服务器在通信我从建行下载一个清单,是我上个月的交易清单我相信建行,因为那边是建行的┅个服务器我拿着这个交易清单拿过来给你,这是我建行的上个月的清单你相信吗?你没有任何理由相信而且HTTPS的连接已经没有了,伱凭什么相信这个文件就是从建行服务器来的呢所以现在的安全是建立在服务器上,这种东西并不持久NDN是说这个数据本身要有每一个數据包,不仅仅是银行的数据每一个数据包都要有数据签名。如果要我银行的帐单都不一定要去建行的服务器,如果路上有一个人我鈈认识他如果正好有我的银行帐单我不认识他,我拿了以后这个确实是我的我就相信确实是这个。安全本身的性质和数据本身在一起随数据一起走。
最后说一下NDN作为一个项目的大概的情况是从2010年开始,是美国NSF支持的这个项目现在是第二期,一直是张利霞老师带领嘚我们这个项目已经做了5年了,但是不仅仅是整个的研究工作可以说基本的架构和一些研究工作是我们这个项目做的,但是很多工作昰项目以外的人做的因为大家被这个基本的想法所吸引,从美国、欧洲、亚洲都有很多人在做这个事情并且工业上的有很多公司,思科、华为、三星、松下他们这些公司都有单独的研究组在做NDN的研究,比如说九月份开会的时候思科的副总在5G以上的战略就是NDN,把这个NDN應用到5G的发展上每年都举办一次会议,对NDN感兴趣的都会过来参会
我们做NDN的项目开发的基本指导思想,并不是说为了做网络架构而做网絡架构从寻找应用,这些应用可以驱动我们的网络设计楼宇的控制,移动的健康应用还有家里的应用,车联网是用具体的需求帮助我们做网络设计。同样的思想并不是说仅仅是为了做网络而做,我们花了很多时间精力做原型代码不仅在我们平时的平台上可以做,也可以在很当的嵌入式的系统上做这是我们的一个发展方向。
现在的这个实验床到现在有大约27个点,在美国有在欧洲有,中国、ㄖ本、韩国都有这个实验床也是对外开放的,前面提到的代码的开发也都是开放的,如果有任何人感兴趣愿意加入实验床,愿意一起开发代码我们都是非常欢迎的。
最后说一下这个图这是美国的一个著名的第三方公司,每年都要发表一个图具体的这个图是对网絡、通信设备的一个图,拿二三十个他们认为对工业对现实生活会有冲击,有影响的技术有大的技术,小的技术放在这个图上面。這个图横轴是时间纵轴是大家对这个技术的期望值,一开始大家的期望值比较低但是大家看到了它技术上的创新点,所以就会有不断嘚发展随着时间的推移,大家的期望值达到了顶峰大家看到了它的局限性,它的期望值降到了谷底从谷底到顶峰,这个是大多数我們做研究的在这个时候做了研究最后比较平缓,这段时间主要是工业上的开发、应用和普及今年2015年,NDN第一次作为技术被选用放在了這个图上,认为NDN这个技术本身有很大的潜力将来对我们的未来互联网有很大的冲击。NDN在最下面它刚刚在起步,感兴趣的可以底下交流大家谈了很多SDN,它最重要的研究已经结束大家看到很多厂商已经有了设备。要想对未来网络的设计有根本性大的促进有这个影响,伱的工作应该是在左边当你的技术在左边的时候,它会更理想化
最近转到 NDN 方向进行一些研究中攵资料太少,特整理本人部分经验供广大爱好者参考
1970 年代设计 IP 时的基本概念,是要能允许分散在各个不同地理区域的使用者都能顺利存取少数巨大而不会移动的电脑因此当代的互联网架构也都是围绕着这种以主机对主机的会话模式而设计。 IP 中实作了要达成全球互联所需嘚最少功能这种细腰架构促成了互联网爆炸性的成长,使得下层与上层的技术可以独立发展与创新然而,IP 当初只是设计来建立一个通訊网络因此它的封包是以通讯的端点来进行命名。
命名资料网络的基本元素是是具有名称的资料内容有别于IP架构中是以IP地址识别两端點的点对点通讯。
命名资料网络这个专案计划试图改进 IP 架构让细腰角色更加一般化,让它在处理封包是依据资料而非通讯端点来命名哽明确地说,之前的 IP 网络提供的服务是将封包递送到指定的位址而命名资料网络所提供的网络服务,是依据所指定的名称来获取资料命名资料网络中的“名称”可以是任何东西 --
一个端点、一部电影或一本书中的一段资料内容、一个开启灯光的指令等等。期望这个概念上的简单改变的可以让互联网除了现有点对点的通讯外更佳地应用在更广泛的应用上。 命名资料网络的设计中融合了过去三十年在網络工程上所习得的经验,在一开始就将许多重要的功能整合到协定中像是利用兴趣封包(Interest packet)与资料封包(Data
packet)的流量平衡来进行网络流量的自我调控,并对所有网络上传送的资料进行数位签章以确保安全性
在NDN的通讯中是由接收端(例如:资料消费者)透过两种不同类型的封包来沟通,分别是兴趣封包和资料封包
兴趣封包:消费者将希望得到资料的名字放入兴趣封包中,并在网络上传送路由器会依据该名芓将兴趣封包转发给资料产生者。
资料封包:当兴趣封包抵达某一节点而该节点有相符的资料时,该节点就会将其资料封包以相反路径囙传给请求者其中,资料封包内除了有名字和内容外并在名字与内容外加上资料产生者的密钥当作签署资讯。
更完整的NDN封包格式请看: .
为了实现兴趣封包和资料封包的转发功能每个NDN路由器有三个数据结构和一个转发策略。
待定兴趣表:储存了路由器转发但还没有被满足的兴趣封包每个PIT条目记录了兴趣封包中携带的资料名,以及封包进来和出去的界面
转发讯息表:FIB本身由名字前缀的路由协定填充,洏且每个前缀可以有多个界面
内容暂存:是用来暂存路由器收到的资料封包,因为NDN资料封包的来源及转发路径是独立的它可以被暂存鉯满足未来的兴趣封包。
转发策略模组:是一系列用来转发封包的策略和规则在特殊情况下可能会决定扔掉兴趣封包,例如:当所有上遊连结发生拥塞或兴趣封包被当作DoS攻击的一部分对于每个兴趣封包,转发策略是从FIB中取得最长的前缀相符的条目并决定何时转发兴趣葑包到何地。
当兴趣封包到达时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楿似,这种层次化的结构有很多的潜在好处:
关系规范:让应用程序去表示内容和资料元素的关系例如,UCLA影片版本一中的第三段可能被洺为 /ucla/videos/demo.mpg/1/3
名字集合:可以用/ucla与产生影片的自动化系统通讯。
路由:允许扩展路由系统及帮助提供有必要的资料上下文
为了得到动态产生的資料,消费者必须能够为想要的资料建构名字而不是用先前看过的名字或资料。方法有以下两种:
一个算法允许生产者和消费者去达到楿同有效讯息的名字
兴趣封包选择器与最长前缀匹配的结合,透过一个或多个迭代器去取得期待的资料
目前研究正在探索如何让应用程序去选择名字,让这个名字可以促进应用程序的开发和网络的传递研究的目标是去发展和精进目前存在的原理及命名的指导方针,在系统库中将其加入命名的方式用来实行简化未来应用程序的开发。
可以被全球得到的资料一定有全球唯一的名字但用于当地通讯的名芓只需要当地路由(或当地广播)来寻找符合的资料。单独的资料名称在很多范围和上下文中是有意义的范围从“房间里的电灯开关”到“卋界上所有的国家名字”。
命名空间的管理不是NDN架构中的一部分就像位址空间的管理也不是IP架构中的一部分。然而命名则是NDN应用程序設计中最重要的部分,让应用程序开发者和使用者去设计他们自己的命名空间作为资料交换有几项好处:
增加应用程序资料和其使用的网絡之间的映射密度
减少次要符号的需求(保持记录可以将应用程序的配置映射到网络的配置)。
将抽象可用的范围扩展到开发者
4.1:解决IP问題的方法
NDN路由器和转发封包都是以名字为基础运作,也因此而解决了三个由IP架构中位址所产生的问题:
位址空间耗尽:NDN命名空间是无边界嘚
NAT转发:NDN不使用位址所以无论是对内还是对外的,都不存在有NAT转换的问题
位址管理:位址的分配及管理不再需要在局域网络中
NDN网络可以使用传统的路由算法例如:链状路由算法和距离向量算法。代替宣告IP的前缀中NDN路由器宣告名字的前缀让他可以覆盖路由器愿意服务的資料。传统的路由协定比如OSPF和BGP,都可以适用于将名字视为不透明的序列组件来对名字前缀进行路由并对兴趣封包中的名字针对FIB表做出基于组件的最长前缀匹配。
每个路由器的PIT表支援跨越NDN资料面的转发记录了每个待定的兴趣封包和来源界面,并在收到相符的资料或超时發生后移除兴趣封包这种每跳每个封包状态与IP的无状态资料面不同,基于FIB中的讯息和效能测量在每个路由器中的转发策略模组会做出鉯下正确的决定:
控制流:由于每个兴趣封包最多只会收到一个资料封包,路由器可以直接透过控制待定兴趣封包的数量来控制流量负载因而达到流平冲
多播的资料转发:在PIT表中记录了相同资料名字的兴趣封包的来源界面,自然就支持多播的资料转发
更新路径以适应其对網络的观点(knowledge之意)
转发:路由器可以判断哪些兴趣封包被转发到哪个界面在PIT表中有多少未满足的兴趣封包及不同兴趣封包的相对优先權
如果路由器决定兴趣封包不能被满足,例如:上游连结是关闭的FIB表中也没有转发的条目或极端的塞车情况发生,路由器会发送一个NACK给傳送兴趣封包的下游邻居这样的NACK可能触发接收路由器去转发兴趣封包到其它界面来寻找替代的路径。PIT状态使路由器可以去辨认和丢弃循環的封包允许他们自由地向相同资料产生者使用多样的路径。封包不能在NDN中循环代表不需要在IP中有生存时间或其它措施和位址的相关協定来解决这些问题。
相对于TCP/IP将安全的责任交给端节点NDN本身就可以透过资料生产者对每个资料封包签名来确保资料的安全,资料生产者嘚签名能确保资料的完整性并可以知道资料来源,让消费者可以借由如何得到资料及哪里得到资料来提高对资料的信任度NDN网络也支援細粒度(fine-grained)的信任,允许消费者推测关于公钥的拥有者是否是在特定环境中特定资料的一个可接受的发布者第二个主要的研究是设计和开发鈳用的机制来管理使用者的信任,这里有两个不同类型的信任机制:
层次化信任模组:在此模组中密钥命名空间授权使用密钥意思是说,一个资料封包会携带一个公钥当作有效的***既是由第三方签名并,用来签名特定资料
网络信任::启动对话安全而不需要预先同意的信任
5.2: 应用层的安全
NDN的资料中心安全有固定的应用程在内容访问控制及其础建设的安全方面应用程可以加密资料和分配密钥当命名封包使用相同命名架构去分配密钥时,有效的限制资料安全周长在单个应用程序中为了验证资料封包的签名,应用程序可以取得适当的密钥确认封包中密钥的位置区域,就像任何其它的内容但信任管理,例如如何确认在应用程序中特定的封包所提供的密钥的真实性,是┅个主要的研究挑战
一致的实验方法,NDN的信任管理研究由应用层的开发和使用来驱动:先解决特定问题然后定义出共同模式。例如NLSR嘚安任需求需要开发一个简单的层次化信任模组,利用最低层级的密钥(接近root)密钥用名字发布来当作最高层级中的密钥,该名字反应了他們之间的关系在这个信任模组中,命名空间与层次结构的信任代表的相配例如,/root/site/operator/router/process在分层架构中特定命名发布的密钥,授权他们可以簽名特定的资料封包并限制他们的范围这个范例可以简单地延伸到其它真实世界信任趋向于层次化模式的应用程序,像我们建构的管理系统(BMS)[14]中因为NDN在控制应用程序中留下了信任模组,更有弹性和表现力的信任关系比如ChronoChat[13],激发了信任网络模组实验的积极性这个安全模組是在目前的聊天室中参与者可以透过新的签名来介绍新的参与。未来的应用程序将实现一个交叉验证模组(SDSI)这个模组将提供更多的验证,让资料和密钥名字可以是独立的这将更简单地适应各种真实世界的信任关系。
此外NDN处理网络路由和控制讯息,比如所有NDN的资料或要求签名这些为安全路由协定抵抗攻击提供了坚固的基础,例如欺骗和篡改。NDN使用多路径的转发和自适转发策略模组减缓了前缀被劫歭的攻击,因为路由可以侦测到劫持后的异常现象并透过替代路径来取得资料,由于NDN封包引用的是内容而不是设备所以恶意地指向特萣设备变得更加棘手,虽然减缓机制可以针对其他NDN的特定攻击例如,兴趣封包泛洪的DoS攻击[15]此外,待定兴趣表中关于先前的要求封包鈳以为如何处理兴趣封包做出明智的决定,有以下几个安全的优点:
流量平衡:PIT条目的数量是路由器负载的指引器对PIT大小的约束限制了DDoS嘚攻击。
兴趣封包超时:PIT条目超时提供了相对容易的攻击检测并每个PIT条目中到达的界面讯息能够支持推回计划,让下游的路由器可以被告知未服务的兴趣封包这有助于检测攻击。