当人们提到网络可扩展性的话题时,就会感觉世界就像起火了一样,生命受到了威胁。因此我必须仔细解释这些问题,告诉大家天不会掉下来,生命也没有受到威胁。
而且正由于存在这么多问题,所以我想告诉你们技术界正在做什么工作,一些你们可以借鉴的策略,以及我们的一些观点。我会谈及路由与地址的增长历史,一些典型的应用。回顾历史上为适应这种增长采取的种种策略,审视现有硬件、成本条件对增长趋势的限制,探讨可以改进现有互联网的方法,等等。这些问题可以说是历史的问题,也可以说是现行的问题。
IPv6与IPv4的路由和编址
目前IP地址、前缀、路由的增长态势在很长一段时期内不会改变,这是一个核心问题。并且,用IPv6取代IPv4是维持当前增长趋势的惟一途径。未来几年我们有机会用IPv6取代IPv4,而中国走在了前列,并在往那个方向推进。因此技术界面临的问题是,如果我们采用了IPv6,我们有机会改变现状吗?我们可以使网络更廉价吗?一些现存的问题或者需求可以解决吗?网络将更可信,更可运营吗?
图1 全球路由增长趋势
让我们来看看互联网发展历史中路由的发展变化。图1是从bgp.potaroo.net/cidr/下载下来的全球路由表图。从图中可以看到,1988年6月,全球网络有173条路由。到1991~1992年间,我们发现用来分配IP地址空间的方法将把地址用尽,因此改变了原有的方法。地址空间在20世纪90年代之前的增长都是线性的,之后开始超指数增长。
1992年互联网开始商用,我们开始把研究成果用于商业服务,路由以很高的倍数迅速增长。
因此,20世纪90年代后半叶起,互联网用户开始膨胀。这种迅速的增长源自DWDM的使用,网络运营商可以使用更大的带宽进行互连,而且到同一个目标的路由不再只有一条。由于可以有多条路由,所以可以对路由进行优化,或者把流量分割到多条路由上去。于是就产生了流量工程。
路由条目继续以超线性速度增长。在2001年10月,我们的骨干网上有283,000条路由,从图中可以看出路由前缀数大幅增长。其中大约有1/3是用于流量工程的。
这样存在的问题是什么呢?有两个基本的问题。一方面,人们把大的前缀划分成了很多小前缀,用来做路由优化、分摊流量等流量工程的工作,从而导致类似的路由大大增多。另一方面,我们经常给网络边缘的所有系统都分配前缀,以至于如今我们有约30,000个自治域。我们把前缀分配给这些自治域的不同位置,所以17.4万多个骨干网路由都与配置的地址相关,而且大部分路由路径都包含这3万个自治域。我们试图给所有的东西都分配前缀,但有太多的“所有的东西”,以致有太多的路由信息需要携带。
尽管这些是有办法解决的,但终归有一个权衡的问题。因为有越多的信息要交换,就有越多的信息需要储存和处理。这对于内存来说是很大的压力。此外,对于散热以及能耗也是一个挑战。新的数据中心往往对电力有很高的要求,因为路由器需要很大的电力。所以技术界关心是否有其他的方法可以提高系统的可扩展性,包括怎样更好地分配地址前缀,以及流量工程。
图2 路由前缀的发展趋势
图3 IANA关于地址池的使用趋势
如果我们使用IPv6,我们就可以重新分配地址空间。我们就会有更多的前缀,这是件很好的事情。由于才开始几年,所以我们还没有足够的数据去分析出大的趋势。对于其未来走势,完全取决于个人的看法,所以我在图2上展示了不同的曲线,有线性的,平方的,超指数的,立方的。其中立方的是增长最快的。无论如何,增长肯定是超线性的。现有的数据证明它不可能是线性的,我们的问题是它将来会是什么样的?
图3关于地址空间的研究数据来自于运营研究团体,上面反映出来的地址及发布路由的增长速度是人们意想不到的。到2006年,我们的骨干网上有18万条路由,11.9万个CIDR聚合。我们预计从现在开始三年以后这些数字会翻倍。按照这样的趋势,预计12年后,路由表里会有50万条记录。如果我们开辟一个IPv4前缀的市场,会有人愿意来买卖IPv4的前缀。而如果是IPv6的话,14年之后预计有250万条路由。
未来网络的可扩展性问题
IETF正在研究和推行的一个项目是NIMROD体系结构。它的设计原理是将系统的标识和系统的定位符分开。在现有系统中,如果想给某人发邮件,就需要访问相应的网站。我们用系统的IP地址来标识这个系统在网络中的位置,利用http协议将这个系统与应用程序结合起来,并将它翻译成IP地址。因此IP地址同时扮演着系统定位符和标识符的角色。在IPv4中,大多数系统只有一个IP地址,这样做是合情合理的。而在IPv6体系中,一个系统一般有多个地址,地址对告诉我们系统间的路由。
NIMROD的思想是用一个实体ID来标识系统,并用一个IP地址来定位这个系统。因此我们所说的定位符与标识符的分离,其实是把电脑与用来路由的网络接口区分开来。
因此,NIMROD的工作原理是从网络(可以是商业网络、局域网络、家庭网络等),向外发布“MAPS”,“MAPS”是一系列的定位符(前缀)或者“MAPS”,而路由将这些“MAPS”连接起来,就像把图里的点连接起来一样。系统之间的会话其实是端点间的会话,严格地说是端点间通过定位符的会话。作为定位标识的IP地址,在会话的过程中可能变化,而且可能变化多次。
我们可以把它与现有的IPv6头进行类比,把一个数据包头放在另一个包头里,但却不叫隧道,也不是LISP,因为它是端到端的,是移动的IP。当你在开车的时候,车上移动电脑的地址标识符会不停地变化,而它的“家”地址并不变化。因此NIMROD也有点像移动IP,拥有一个“家”地址和活动地址。其中一个告诉你谁在跟你通讯,另一个告诉你他在哪里。
具有战略意义的Multi-homing
所谓Multi-homing,就是我们的端网络同时接入多个ISP。比如我同时连接CERNET和商业网络。你有两种方式来获得地址,一种是向CHINANET或APNIC申请网段,与运营商无关(Providor Independent);另一种是从ISP那里获取地址,比如从CERNET、中国电信,或者其他任何你可以接入的运营商那里获得地址(Provider Aggregatable)。这就是目前实际应用中的Multi-homing的定义。
IETF五年前开始研究Multi-homing的体系结构,定义了未来互联网对Multi-homing的需求。然而,要同时实现这些需求是很困难的,挑战还是相当大的。首先我们要提供冗余。使用Multi-homing的一大理由就是让网络连接更加健壮,当然现有的Multi-homing已经可以做到。其次,用户希望地址有移动性,即便在更换运营商时,仍然可以拥有原来的地址,这涉及到一个重新编址的问题。尽管我们已经有相应的技术和运营方案来实现快速的重新编址,但如果可以实现不需要重新编址,这将是非常有趣的。同时,你希望利用一些类似过滤的方法使自己不受到网络攻击的伤害,希望在定位符变化的环境下依然正常工作,作为路由器希望路由可扩展,作为主机希望应用程序运行良好,等等。因此对于IETF来说,Multi-homing有很多需求。
然而如果我们用Multi-homing的视角来看现有的体系结构,以美国为例,一个Multi-homing实体可以看成一家公司、一所学校、一座房子,一个实体可服务1.8万人。如果包含中国,估计这个比例是1:50000。预计2050年全球将有100亿人口,假设每1000个地址使用一个前缀,那么就有1000万个前缀。这意味着我们需要更多的存储、更多的能源、更强的散热需求、更高的运营成本。我们或许有好办法来解决,或许可以找到便宜的解决方案。
幸好目前的体系结构和一些解决方案可以满足我们的部分需求。如果我们使用运营商分配的IP地址,地址是不可移动的。而如果我们获得独立于运营商的地址,那么地址就可能是可移动的,而且能进行数据包过滤,以及实现ISP之间的合作。然而,问题是这些地址分配方案都带来了大量的前缀。
IETF提出SHIM6。SHIM6采用ISP分配地址(PA)的方案,每台电脑都可以拥有每个服务提供商的地址。这对于ISP来说有直接的好处,但对于边际网络,比如个人电脑或者小企业来说,这增加了操作的复杂度。因为任何时候你想与Multi-homeing的对端通讯,你都要为不同的ISP完成路由。于是他们会跟IETF说那不是我们想要的。然而,IETF之所以看好SHIM6,是因为它可以很好地控制路由和地址空间,他给ISP带来了很多前缀,用户可以方便地实现Multi-homing而不需要给边际网络实体编址。
SHIM6确实有一些问题,这也是有人会反对它的原因。比如说它的地址是不可移动的。性能只能部分地被预测,当地址变化的时候,TCP/UDP的会话会中断,当然STCP除外。
还有一件我们正在做的事情,往往被人称作城域网编址。我并不喜欢这个命名,因为它让人将它与一个城市、政府或者国家联系起来,而事实上并非如此。它的理念其实是:所有的人在使用一个地址池的时候,需要在不同的ISP按人群进行分类。这里的人群可以是住得比较近的一些人,也可以用其他的分类方法。这样,每个ISP都使用同样的地址空间,ASP往外发布的前缀是分配给自己区域使用的前缀,这样,路由就可以有很强的扩展性。比如地球上有100亿的人口,每100万人用一个前缀(prefix),那么最终只需要10万个前缀就够了。现在有4.5万条前缀,这对于目前的骨干网来说是没有问题的,因此基于交换的Multi-homing具有很强的扩展性。
人们热议这个方案的原因是它把目前的协议反转过来了。在目前的协议里,数据的接收方为内容付费,而这种方案改成向发送方收费,那么垃圾邮件的制造者就为发送垃圾邮件而付费,而整体的运营成本会受益。
综合分析之前提到的各项需求,这种Multi-homing方式确实解决了大部分问题,所以我认为这件事需要认真地推行下去。
修改IPv6的地址格式
目前IPv6地址由64位的全球及站点的网络标识和64位的身份标识组成,其中包含了网络提供商等信息。而新的提议是1997年由Mike O’Dell提出的,将现有的IPv6地址格式改成{GSE}格式。其中G是高48位的全球位置标识,S是次16位作为站点子网标识,剩下的后64位E是全球惟一的端点标识。它的思想是把高64位全球及站点标识成为可以被边界网络改变的。当一个数据包到达网络边界的时候,那么我们可以换成一个本地(域)使用的地址,而当这个包返回的时候,这个域的地址被作为源地址。这实际上是说在这个ISP里我们只使用这个ISP的地址,当然可以同时使用SHIM6。这样我们就不需要给边缘网络编址,而在端系统上改东西是很容易的。因此GSE允许IP地址在数据传输的过程中被更改,这对于IPv6地址来说是一个很大的变化。那么这样的想法在实际运营中会怎么样呢?
比如我在一个网络中有一台电脑,它与另一个网络中的一台电脑有开放连接,但是碰巧他们使用了有问题的的IP地址,也就是说路由很差,那么对端在返回包的时候可能从另一个出口出来,从而选择了不同的路由。而这个包的发起者在下一次发送的时候,也根据路由动态调整策略选择了另一条更好的路由,这样就可以大大提高IP的连通性。
也就说一个数据包在穿越网络过程中,它的路由是可能变化的。那么它在返回源机器的时候,有可能看起来不像是原来的那台机器,因为IP变化了。这就需要搞清楚端点接口上不同IP地址之间的关系,这就回到了NIMROD提到的定位符与标识符的分离,这些信息可以存放在IPv6地址GSE模型中的低64位中。
这样做的价值是什么呢?如果我们有了GSE编址,就可以在实现ID/LOC分离的同时,不需要为ID和LOC的映射建立新的数据库,就可以实现可扩展的Multi-Homing,同时可以在数据包传输途中重新编址,那么网络的连通性就会大大提高。
然而GSE也带来其他一些问题,比如它不是后向兼容的,需要对tcp6/udp6进行修改,特别是用64位地址进行TCP连接;纯粹主义者会认为GSE是对端到端原则的违背;“暴露”的EID可能成为潜在的安全隐患;EID到EID+RG的映射会加大域名解析系统的复杂性……
另外,GSE也有移动性问题。两人各有一部手机,可以互相通话。如果两台手机同时切换基站,那么通讯就有可能中断。因此我们需要解决一个问题,就是怎样使通讯从凌乱的网络切换中恢复过来,这对运营者来说是一个需要解决的问题。还有,举一个GSE模型中最简单的例子,我通过后64位EID告诉你我的身份,那么怎样确保它是全球惟一的?这些都是需要解决的问题。
(本文译自Fred Baker在第十五届CERNET学术年会上的演讲。翻译:洪丹)
Fred Baker
他曾任1996年至2001年IETF的主席。自20世纪七十年代末以来,他一直活跃在网络和通信业。他目前是思科公司的一名研究员。
他曾主持了一系列的IETF工作组,包括Bridge MIB , DS1/DS3 MIB,ISDN MIB,PPP Extensions,IEPREP,和IPv6业务,并在1996~2002年担任IETF的IAB(互联网体系架构)成员。他曾参与撰写和修改了约40个RFC。涉及的主题包括网络管理、OSPF和RIPv2路由,服务质量(同时使用综合服务和区分服务模型)、合法侦听、互联网的优先服务等。此外,他还一直担任国际互联网协会(ISOC)2002~2008年董事会成员,从2002年到2006年担任ISOC主席。他也是美国联邦通信委员会技术咨询理事会的前成员。
目前他主持IETF IPv6工作组。
来源:《中国教育网络》2008年12月刊
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。