@ fnii.cn

登录邮箱

张北川 Named Data Networking

发表日期:2015年12月11日      共浏览 706 次      编辑:


我今天讲的是可重叠,是我们最近过去几年很大的项目,一直在做关于未来互联网架构的工作。这个NDN是美国NSF在过去五六年支持未来互联网架构的项目之一。时间有限,很当技术上的问题很难讲清楚,我主要是讲一下大概的NDN的最基本的概念,为什么要做这个事情,以及现在NDN项目研究的一些大的方面的进展。

并不是说我们为了想创造一个新的架构而创造新的架构,是为了适应网络的发展。我们看过去一两百年通信网络的发展,昨天几位原本也都提到,可以看到三个不同的阶段,最开始的阶段就是电话网,要从一端到另一端,就是打电话,从19世纪一直到今天,这个电话功能基本上就是这一个。从19世纪最开始的时候,当时没有任何通信网络,你要想建立一个电话网络,关键之一,要把这个网络建起来,整个电话网络要想象开始是用手动来做这个交换的时候,实际上这个电话号码告诉你在某一个地方插哪里,把这个事情做完以后,实际上已经建立一个网络的回路,然后就可以通话,电话号码是告诉你这个网络号,按照这个电话号码建立这么一条路径。到了70年代,我们发明因特尔,从做的事情上来讲,和电话网络非常不一样的,从设计思路来讲,大家当时想象,我们只有这个电话网络,从一个用户端到一个主机端之间怎么通信,最后的解决方案是不一样的,但是解决的问题是一样的。到了今天大家看到物联网,还有各种各样的大数据的发展,端到端之间的通信,通信模式已经在改变了,今天打开笔记本电脑上网,实际上并不是想要去某一个具体的地方,并不是两端的通信,实际上要拿到一个网站,拿到一个文件,你所关心的是这个信息,并不关心从哪里来,不知道具体从哪里来,它实际上是最根本的推动,是我们这个通信技术,最开始只有电话所以建立电话网络,今天推动我们互联网基本架构前进的东西,并不是我们在座的人想建立一个新的网络,将来也许过五年,这楼里面所有的东西都是联网的,是因为最底层的根本的发展要推动我们推动互联网架构的前进。

对应三个不同的阶段,我们看互联网,我们看网络的发展,具体的网络,各种各样的线段,网络做的一件事情,把所有具体的资源都管好,然后告诉用户或者告诉应用,这个是可以用的一个抽象的东西,比如电话,它给你的东西,这是个号码,你可以拨这个号码,到最后给你的是可以和这个号码连接的一端打电话。具体要根据这个号码在网络中间建立一个路径。在PC阶段,因特尔是我给你的这个不是和对方打个电话,而是把你连到一个具体的路径上,是端到端的,你不用告诉走哪条路,所以就是中间我画的云,从用户端只要告诉网络,具体要去哪一个IP,网络会有路由协议,有交换协议,想办法把你的包传到目的地,如果中间有一路坏了,可以单独再找。

NDN更进一步,我把这个思路,最终的服务器都挪到中间的云里面。你不仅不会告诉我走哪条路取这个信息,关键在于你想要什么信息。比如说我到这个楼里面,我要是想知道这个具体的温度,到处都是温度的传感器,这件事情在现有的网络架构里面,IP这个架构不好做,可以做,但是比较麻烦,我到这个楼里面怎么知道那个IPI温度传感器的IP地址呢,我需要知道它的IP地址,它需要知道我的IP地址,这个就比较麻烦。NDN是说我如果把这个网络建好了,我就发一个请求,我想要知道这个房间的温度,任何一点它有这个信息,它就把这个信息传给我,不仅不需要知道具体怎么拿这个信息,而且也不需要具体知道这个信息从哪里来。

为什么觉得IP和我们现在的应用模式不匹配?我们需要有更好的NDN的模式更加匹配用户和应用呢?最简单的例子,把你的笔记本电脑打开,我要去新浪的新闻,在IP情况下,我要去新浪新闻,它会发具体的数据包,里面有具体的IPI,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,它最重要的研究已经结束,大家看到很多厂商已经有了设备。要想对未来网络的设计有根本性大的促进,有这个影响,你的工作应该是在左边,当你的技术在左边的时候,它会更理想化。

这就是我的报告。如果大家感兴趣,这是我们的网站,上面有所有的文章,设计,也欢迎大家登陆。谢谢。