@ fnii.cn

登录邮箱

张北川 命名数据网络(NDN)

发表日期:2013年12月13日      共浏览 4134 次      编辑:

大家好!

非常高兴在这里和大家就未来互联网发展创新进行交流,非常感谢谢老师和孙老师的邀请和精心安排。我今天主要介绍一下我们在未来互联网架构上的工作,简称NDN。我们是从2006年,当时基本的思想,基本的设计都是通过横很多年的运营和网络设计各个方面的经验总结出来的,但是局限于在一个公司内部。在2010年UCLA的张丽霞老师,他组织了一个,把名字改叫NDN。这个项目有12个学校和不同研究所加入,是一个很大的项目。不仅仅是我们理论的人在做NDN的工作,经过几年的发展,NDN有了一个很大的,并且不断增长的空间。在NDN上工作不仅是我们项目上的人,还有其他的学者和专家,在北美、欧洲、亚太地区,不仅是学术界,在工业界,比如说思科、华为还有其他公司也在做这方面的研究。本身是一个新的网络体系结构,在解释到底什么是NDN之前,我们先问一下什么是网络结构,网络在中间可以做很多事情,网络结构应该是最根本的东西。最底层你有很多不同的联路,这样呢给应用层上面看到的就是一个完全互联互通的英特,可以做用户想做的事情,如果问什么是网络的根本架构除了纷繁复杂的以外,还有网络层提供给应用层最根本的做什么事情,互联网从昨天的电话网络,到今天的IP网络,还有从我们观点看到明天是NDN,为什么这么说呢?我们看一下具体的在传统电话网络。你给一个电话号码,这个电话号码是这个电话网络最根本的。他是告诉这个网络怎么建立一个回路,并不是说你的电话,你的手机是哪一个号码,是告诉网络,根据这个号码建立一个回路,就像最原始的,插线根据是什么呢?根据这个电话号码,所以你电话号码是一个标识网络里的具体路径,这个路径建立起来了,你打电话的人和接收电话的人就可以通信了,有什么问题呢?问题在于如果任何一个点在这个路径上断掉,你这个通信就没法进行了,因为网络来讲,他只知道根据电话号码建立一个路径,他不知道别的路径。

把这个数据包传到最终的点,我不关心你走哪条路径,路径网络自己来选,你用新的路由设计,各种各样的路由协议都可以,但是作为用户来讲,作为应用程序来讲我不关心,所以从这一点上来讲,IP的是说给我一个,我把这个送到你要去那个点,在这个进化下一步是NDN,我把最后那个点也做到这个小的窗口里面去。我是说某一种数据,这个数据是用网络的名字来标识的,所以我给你一个包,这个包里面不会告诉你去哪儿拿,但是有一个名字,这个名字告诉你我要给你什么数据,网络可以去任何一个点拿这个数据,怎么都无所谓,只要满足我应用程序的要求。从进化过程来看,网络的功能越来越和想要做的事情不停暗示,不需要再把自己想要做的事情翻译成网络所理解的路径或者点,直接把自己要的内容的名字放下去,网络根据这个名字提供服务,这样两个好处,一个是应用程序很简单,不需要关心网络怎么工作,另一个网络可以更好的应用程序来服务。这是从大的结构讲,为什么我们说NDN是一个对网络整体架构的一个自然而然的进化。具体一点,这是IP,我们大家都知道很多。最重要的就是Address,NDN就不一样,NDN有两种数据包,不仅仅是一个数据包,是两种。一个是兴趣包,一个就是数据包,这两个包里面都没有,应用程序产生的,层次化的,把名字放在数据包里面,网络根据  数据包找内容,传回来内容是在这个里面。这里面也有同样的内容,除了名字互相暗示以外,这个数据包回来还有一个数字签名,这样的话,我可以在接收端可以验证这个数据是不是我真正想要的签名。这个是NDN,不再是说把一个数据包送到一个固定点,而是说拿到你想要的数据传回来。

举一个具体的例子,大家可以对比一下在NDN下面操作的不同,比如说在IP底下,最左边是一个应用程序,想去右边拿到一个百度的网页,在应用程序来讲我是有名字的,我要转化,转化以后我会发一个请求包,最后到其中一个,虽然百度有好几个地址,但是我这个只能到其中一个,因为这是IP所做的事情,具体到一个点。如果是三个点的话,是不同的。如果这个荡掉了怎么办?我的事情做完了,那怎么办?要做事情,要检查问题,当然小的网站可以有,但是大的网站绝不允许这样。所以在IP底下我们就要放一个在这个前面,他接收信息以后,会在应用层上面看URL,通过URL进行转发。我需要有数据分发网络,从用户程序来讲,实际都是看的,在应用层URL这个名字,就是为了从网络层,你才把它转化成addrs。如果我们有NDN的话,NDN网络层直接用名字做路由转发。用户程序直接把名字放在请求包里面,网络中间可以直接拿这个名字进行路由转发,网络可以给其中任何一个请求,都可以回来数据。我们知道IP在六七十年代设计的时候,怎么用也用不完,可以单独找到自己的一点,不移动,具体在某一个网络就在那一个网络,不具体移动。今天我们应用程序和几十年前是完全不一样了,关于假设也全都支离破碎了。如果我从一个地方走到另外一个地方,我们直接拿应用层上的名字作为网络层的标识,就可以把addr有关的问题就避免了。直接用他们内容的名字进行通讯。你不一定要去某一个点,这样的话你可以有更好的,假如我想发一个百度网页请求,假如说在座前一分钟拿到百度的网页转给我,不需要去别的地方,在内部就可以。我拿到以后比较名字,这个名字确实是百度的名字,我再看它的签名,确实是百度的签名,我就知道这个就是我要的数据,不需要跑到别的地方去。任何地方都可以做在现有的IP底下进行绑定的,如果你不关心的话,比在IP底下做要容易和方便很多。你必须在网络中加很多的东西,你还要设计整个CDN,在真正的CDN里面有很复杂的。拿到一个请求,然后这个请求会走很多路,最后找到具体哪一个,很复杂的一套体系。下面来了一个人,我可以比较这个名字我知道我这个内容满足他的要求,在IP底下就很难。IP底下我看到的不是这个名字,我看到的是每一个具体的连接。所以前面的人是从他的IP的连接,后面的人是从另外一个,是不同的连接,虽然他们要的是同样的数据,但是从网络层来讲我看不到。用NDN来讲,他把应用层的名字放在网络层里面,网络层就可以知道他们要的是同样的数据,所以在这个例子里面我在,不管我有多少用户,只有两个窗口出去,本身就支持这些东西。在网络里面有了储存,可以支持很多其他的事情。最简单的,我有一个包掉了,可能是因为拥塞,可能是因为我去了别的地方,所以在NDN我看它是从哪里掉的,以前走的路没有白费。比较网络和储存,横轴是时间,纵轴是单位,他们每年都在不断往下降,而且降的很快,在底下那条线是直线下降的。如果我们有NDN这样的网络,这个数据可以从本地的里面取,需要放带宽的时候放带宽,可以提供更好的服务。

下一个NDN的好处,我觉得是非常重要的一个,就是NDN从根本上改变了IP的Data,在ip底下拿到一个把它转发出去就完了。不会记住任何事情,如果这个数据包绕了一圈又回来了,有一个回路,这个还是不知道,还会接着转发。所以在IP里面是很大的问题,但是在NDN里面是不一样的。数据包回来的时候他知道曾经请求了数据,通过这个记住一定的状态,让data往回走。我发一个请求过去我发一个IP,在IP五层面有没有数据包回来,是不是从这个路径回来,我不知道,有数据包回来有可能,没有数据包回来也有可能。这个包成功不成功,有没有拿到我想要的东西,我在数据层面上我是什么都不知道。但是在NDN底下我发一个包,这个包是应该从原路返回的,我就可以在数据层面看,过了一段时间,这个数据包是不是从原路返回,不从原路返回就出错了,出什么错我不知道,但是在这一个链上我知道是错了。我知道在这一条链路上出问题了,我拿到数据的时候我知道这一个链路成功了,我也知道他花了多长时间拿到这个数据,我也知道它的好坏。我如果需要我可以试不同的链子,每一个SP我都可以发一些请求,看他们回来,哪一个工作,哪一个不工作,如果工作的话你看花多长时间,我可以在数据层面上看到,然后再来做决定。我可以根据数据层面来决定。数据层面变得功能更强大。你必须要非常小心,没有回路。成功还是不成功,我就看我这五条,怎么拿到这个数据的我不关心,只要他及时给我数据那就最好。最开始我们知道七十年代他们设计七八项要求,后来他们说这些要求我们不能都满足,我一定要分类,前三个要求我一定要满足的非常好,后面几个差不多就可以了,中间一定要非常简单,支持下面各种各样的链路技术,这个都非常好。这个是后面附加的,造成了一个什么结果呢?我们现在的网络上面,比如说我去一个银行网站,拿到我的银行详细,我之所以相信这是我的银行信息,是因为我他们进行了互相的接触。人家为什么相信这是建行的信息呢?我没有那个愿意相信我确实是从建行拿来的,NDN的理念是什么呢?你内容本身要不能依赖这些东西。内容本身拿到的,任何人收到了都可以进行验证。我做到的NDN这一层,所以在开发任何NDN程序的时候,你都首先要想我怎么做,而不是先把应用程序开好了,后期再加上去,不行的,你必须一开始就考虑安全问题。比如说谷歌他们提供很多的,他们也在建立自己的铺设自己的光纤,他们在做自己的事情。他们也在自己的内部网络,建立他们的网络,可以互联到一起,NDN架构底下有这种变化非常自然,不管是从网络里拿来的还是从磁盘里那来得,对于NDN来讲都是一样的。你并不关心是从网络里拿到的,还是从设备里那来得。

并不是为了开发网络架构,而是从开发应用程序,怎么服务应用程序这个角度开发应用架构,在某种网络环境下现有IP还没有成熟的时候,这种情况下NDN可以不可以提供一个简单易行,从这个角度来讲,选择应用程序进行开发。像IP一样,在可以在P2P上面,在任何底层都可以做,然后逐渐发展。我们现在有一个项目内部,连接了十几个学校,并且有五个节点。

NDN是要保留现有IP的细腰结构,但是要把这个细腰从IP转化成NDN,但是这并不是一个替换过程。在我这个图里画,都可以作为NDN在上面一步一步的发展起来。更多的信息我就把网站列在这儿,大家可以看到更多的信息。