引言
Internet正快速地成为公共数据网的选择。这个结论可以通过用户需求和新应用的快速增长,主流应用的增加,和重要业务的增长来证实。由于客户们开始希望类似于公共电话交换网(PSTN)服务的可靠性和有效性,Internet服务提供商(ISP)正在尽力地维持控制,以应付高速增长和不断增加的复杂性。
传统路由器厂商也开始把目光集中到Internet核心网的吉位、特位,甚至“任何位”的包转发性能上来。数字巨大得几乎难以理解。不过,任何一个熟悉网络行业的人都不会对此感到惊奇,因为非凡应用集成电路(ASIC)和密波分复用(DWDM)技术的最新发展必然会使其一一实现。在上面讨论中我们似乎忘记了一个重要的元素,那就是控制这个基本的问题。提供了所有的带宽和转发能力,ISP们如何在进入光Internet时代的同时对他们的网络进行控制和治理呢?
速度可以杀人!假如你在迪斯尼的Autotopia上以15m.p.h的速度玩赛车,控制是非常重要的,但你并不会受到伤害。另一方面,假如你发现自己在Indianapolis500上,那么,高性能的刹车,轮胎,和驾驶所提供的控制,对您的生存将是非常重要的。
这篇文章将假设我们已进入光Internet时代,高性能的转发引擎已经现实。
Juniper网络公司已专为高性能和高速增长的Internet服务提供商开发出了一套JUNOSInternet软件。这篇文章将讨论Juniper网络公司的JUNOS软件系统总体设计和一些相关的性能,JUNOS软件已预备好服务于现在的Internet,并对将来发展的控制奠定了坚实的基础。当我们对一个路由软件进行评价时,对其软件结构,路由协议,策略定义语言,流量工程能力,用户界面,系统安全性,和网络治理性能的检验是非常重要的。上述的每一个特性都将决定该软件可以为ISP提供成功进入Internet下一阶段成长所需控制的能力。
Internet路由软件的体系结构
一个软件的结构决定了系统将被如何设计及不同组成部分间如何进行连接和相互操作。许多关心路由协议和路由器配置的网络专家并不会花费时间去分析提供系统运行基础的下层结构。正如我们将会了解到的,软件结构在决定网络的控制,稳定性,性能,可治理性,和复杂软件系统的可扩展性上将作为一个重要的角色。
传统路由器软件结构的局限性
为全面理解传统路由器软件结构在今天的服务提供商网络中所面临的挑战,我们很有必要去了解这些软件系统的源头和发展。最初,路由器软件结构假设底层的硬件仅有一个CPU,这块CPU不仅负责提供实时的包转发,同时也要提供路由计算,建立路由更新,治理用户界面,和支持网络治理(图1)。这种对单一CPU的依靠,决定了传统路由器操作系统被开发和实现的框架。
图1:典型的传统路由软件体系结构
因为传统路由系统是在假设它们将支持对时间敏感的任务(即,包转发)的前提下被开发的,设计者必须要开发一个具有实时操作系统单元的运行环境。即使他们意识到普通的操作系统可以提供极高的系统可靠性和稳定性,但同时他们也知道,一个多进程系统中所固有的由于内存治理及工作的重复而导致的性能低效性。这些传统路由系统的设计人员决定,他们将通过合并代码和避免重复的方式来增强整个系统的性能,即使这意味着将要建立一个单一的,非模块化的代码库。
以一种历史的观点来看,在那时的技术条件下,这个决定可能是一个最好的折中办法。但是,为达到预期的效果,传统的路由系统也导致了惊人的费用,包括:
· 假设非模块化程序的某一部分出现故障。例如,一个任务的内存发生泄漏,或有一个错误使它对另外一个任务的代码或数据结构进行写操作。这些类型的错误将很轻易地使其它任务失败,最终导致整个操作系统崩溃。恢复这类故障的唯一途径是重新启动整个系统。
· 这个单一的非模块化程序需要在实时的方式下运行,以支持包转发的需求。最初,这些操作系统将包转发作为整个系统中优先权最高的任务。这意味着,假如路由器的转发业务非常繁忙时,将没有足够的CPU周期留给系统用来完成有关的对等更新,问候时间响应,或路由表计算。这样便为网络带来不稳定性,因为路由和控制任务将不能及时地完成,从而导致路由邻接和线路协议的丢失。
· 整个的软件结构将变得非常巨大,从而使其失去了灵活性,可伸缩性,和稳定性。修改将变得非常困难,因为增加一个新功能可能会影响整个代码库。例如,是否包含了所有与实现可靠实施有关的部分?所含的代码是否必要,是否会含有导致系统崩溃的程序错误?另外,代码的长度与复杂程度将决定厂家修正敏感的互联网络问题和增加一些重要的新功能的速度。最后,测试一个非模块化的代码库是非常困难的。没有任何一个实验室能够真正模拟出全球Internet网络上的真实环境,因此,测试只是针对巨型代码库的需要而更为复杂一些,然后,对于程序的子集进行隔离测试。这个挑战可通过任何精心设计的测试进程来解决。
随着我们步入Internet的黄金时代,基于实时的,非结构化代码库的传统路由软件结构在支持快速出现的新功能和Internet核心网所需的稳定运行上,都显得力不从心。现在,在高性能光接口上实时地转发业务要求配置基于硬件的转发引擎。因此,下一代的路由软件不再需要对包转发和高级系统功能之间的资源竞争进行处理。基于硬件的转发引擎的效率,答应路由软件运行在一个能够提供更高的可靠性,可伸缩性,有效性,和可为敏感的重要任务应用提供高性能的普通操作系统环境之中。
源于FreeBSD的JUNOS
FreeBSD为开发支持高速增长的Internet下一代路由体系提供了基础。FreeBSD是为在普通的英特尔处理器上运行而非凡设计的。它非常稳定,并继续了那些从二十世纪七十年代初期便开始工作在Internet上的早期产品的成熟的网络功能,它包含了一个非常优秀的代码库以支持内核,文件系统,用户计费和安全性。
但是,Juniper网络公司加强并重写了一部分FreeBSD,因为它最初是被设计运行在主机系统上的,只支持几种有限的网络接口。而另一方面,路由器具有更多种类的物理接口和子接口,并具有一个更大的路由表。另外,大部分的网络代码被去除或以行业级的工具来代替,以支持来自Internet的巨大压力。
Juniper网络公司的工程队伍具有多年的Internet路由经验,并且在不受传统路由体系约束的情况下,从最底层开始开发和设计路由体系。这就意味着,他们可以优化其数据结构,计划大量的虚电路,并对巨型路由表的存储及查询进行设计。他们可以自由地使用最新开发出的支持流量工程和不同服务等级的技术,着力设计合适的用户界面和强有力的策略定义语言。
Juniper网络公司的软件体系
Juniper网络公司软件体系的最基础的设计思路是将控制功能与包转发功能分离。路由引擎治理系统的路由和控制功能,并运行从FreeBSD得到的内核。包转发引擎在硬件上运行,专门用于包转发。这两相功能的完全分离,使路由器可以提供高性能和高可靠性的操作系统。
包转发引擎
包转发引擎负责提供所有的包转发功能。这代表了进入系统的业务量的99%。包转发引擎由几个可处理所有类型的数据包并专用于Internet核心网的ASIC组成。包转发引擎的设计和功能将在后面讨论。
图2:路由引擎和包转发引擎
路由引擎
路由引擎负责执行整个系统的路由处理。它通过一个能够提供充足计算周期的处理器,在任何网络环境下提供所需的功能。路由引擎运行着一个经过Juniper网络公司的工程队伍修改过的FreeBSD版本,使其能够在高负荷条件下稳定运行。
路由协议,接口治理,机箱治理,SNMP治理,系统安全性,和用户界面都作为一个子系统在操作系统内协调工作。每个程序执行一个独立的进程,完全在自己的内存保护下运行。这便减少了一些失控应用干扰其它的应用或内核的机会。
图3:JUNOS软件概念性结构
JUNOS路由表包含了从相邻路由器获得的和静态配置的路由信息。转发表是从路由表得到的,它包含一个用于协调带有输出端口的报头或标记的IP报头和多协议标记交换(MPLS)标记的索引。包转发引擎使用转发表中的内容而不是路由表中的内容进行转发决定。
JUNOS体系的优势
基于将控制与转发平台分离的路由体系的实现,使Juniper网络公司可以在普通操作系统之上运行路由引擎。这是一个非常要害的设计特点,它使JUNOS具有很高的可靠性、可维护性和性能。
保护内存确保运行的可靠性
每个用户进程都在其自己的保护内存空间中运行。这样便确保了一个子系统故障不会影响其它在保护内存下执行的子系统的运行。在这些独立的操作之间,Juniper网络为内部进程通信建立了整洁的,良好定义的接口。这种结构使软件系统具有很好的可靠性。
专门为ISP网络设计
Juniper网络公司专注于为高速增长的Internet骨干网提供产品。这意味着Juniper网络公司的产品不会运行在企业环境下,也不致为满足不同非凡应用需求而建立非结构化的代码库。
增强的网络稳定性
Juniper网络公司的软件体系使得传输的包永远不会通过路由引擎进行处理。对于那些被要求送至路由引擎的业务,链接保持和路由协议更新将被赋予最高的优先权,以确保无论系统的负载情况如何,邻接永远不会断开。这种控制业务的优先权防止了网络中的级联故障,因为它确保了无论系统发生什么情况,链接和路由邻接都一直保持运行。
路由协议
路由协议的稳定实施是成功治理一个服务提供商网络的重要因素。稳定性和高性能是内部网关协议(IGP)在服务提供商网络内治理业务流量的基本性能。外部网关协议(EGP)的牢固性和可伸缩性对于在不同服务提供商网络之间的链接和控制是非常重要的。
行业级的路由协议
一些网络专家们在评价路由协议实施的可靠性时,将互操作性作为一个单独的因素。他们很关心软件是否符合Internet工作组(IETF)标准和软件在多个厂家产品环境中的操作情况。互操作性是每个厂商都应满足的一个重要元素,但它只应作为诸多需要仔细衡量的部分中的一个因素。还有其它一些要害的元素隐藏在软件之下,并不会被评价者立即发现。但是,正是这些隐藏的因素在决定路由协议在Internet中执行的能力时起重要的作用。
区别行业级路由协议与不完善实施的要害要素是稳定性和可扩展性。稳定性和可扩展性并不因故障而发生;它们必须在项目一开始就被设计到软件体系当中去。在某个方面,路由协议的设计可与飞机的设计做以比较。一些飞机,如CessnaSkylane,主要考虑飞行安全性的需求。另一些飞行器,如F-22,具有敏锐的视觉,高速,及灵活。它们都是固定机翼的飞行器,但它们在不同的运行环境中用于不同的功能。
稳定性设计
稳定性主要关心在大型网络中承受运行压力和连续长时间无故障工作的能力。对于任何路由协议的实施,都有许多设计要点在决定系统稳定性的过程中起重要作用:
· 工程师在猜测和编写对不同类型故障进行响应的代码时的远见。其包括协议错误,如畸形包,意外的对等关系,如传输过多的请求/更新,和在网络感到压力时CPU资源被耗尽。
· 开发者提供正确调节器的技巧,以使得路由器可与多种不同情况相配合。
· 工程师在编写代码时自发地遵循爱因斯坦的格言“使事情尽可能地简单,但不过于简单”。这样可产生一个易于理解的,快速的和稳定的代码库。
可扩展性设计
扩展性主要关心网络实现与不断扩张的网络环境同步成长的能力。有许多因素在决定路由协议实施过程中的可伸缩性起着重要作用:
· 支持的最大端口数
· 路由表查询的速度
· 路由表中可存储的最大路由数
· 每个路由器可支持的最大OSPF或IS-IS邻接数或BGP对等体数
· 路由器链接状态表中可存储的最大OSPF的LSA数或IS-IS的LSP数
· 答应网络治理员方便有效地控制输入,输出,和修改大量路由信息用的策略控制语言的能力
JUNOS路由协议实施
Juniper网络公司的实现是行业级的,全功能的,并且与有关的IETF指标和实现的基本配置兼容。每个ISP的网络设计都不相同,因此,不同形式的压力施加在路由协议上。通过过去一年里在大型ISP骨干网中的成功运行,证实了Juniper网络公司路由协议实施的特点和稳定性。
内部网关协议:IS-IS和OSPF
Juniper网络公司的IS-IS和OSPF实施与IETF指标兼容。另外,Juniper网络公司的 IS-IS和OSPF与ISP使用的添加(add-on)功能兼容,并证实了其与配置库具有互操作性。
外部网关协议:BGP-4
Juniper网络的BGP-4实施与IETF指标及配置库实施兼容。它支持TCP的MD5认证选项,组,路由摆动阻尼,结网组,路由反射,联合,和对等体组。
多点传送协议
JUNOS软件从最底层开始进行开发以支持IP多点传送。Juniper网络公司提供的实施包括:Internet组治理协议(IGMP),距离向量多点传送路由协议(DVMRP),协议独立的多点传送-稀疏模式(PIM-SM),服务宣告协议(SAP),和服务描述协议(SDP)等。 Juniper网络公司已经,并将继续在IETF设计和开发这些标准和下一代建议中扮演重要角色。
Juniper网络公司的工程队伍
Juniper网络公司的软件工程队伍能够对所有主要的Internet路由软件提供最好的实施,包括OSPF,IS-IS,和BGP-4。这种专业经验使得Juniper网络公司不仅能够处理流行的路由协议,而且也致力于那些正在被IETF开发的协议。JUNOS中实施的质量反应了我们队伍中那些参与大量Internet手稿和RFC工作人员的经验和专业技能。
Juniper网络公司有选择地组建了自己的工程师队伍以提供在重要任务环境下的具有扩展能力的骨干网路由协议。Juniper网络公司确信,没有任何其它的路由厂商和新生力量可与这只工程队伍相比较。Juniper网络公司的软件专家们将继续提供标准上的领先,使那些需要能够了解,设计,发布,并支持与Internet飞速增长有关的协议的伙伴的客户得到好处。
路由策略定义语言
路由策略定义语言将决定哪条路由可被路由表接收,哪条路由可被广播到对等体,哪些属性的修改即要在输入进行又要在输出进行。策略定义语言所提供的控制对于骨干网是非常要害的,因为它是控制网络如何被使用的基本工具。策略语言决定了通过Internet的路径,并在对通过服务提供商网络时进行的路径选择起重要作用。
输入策略作为路由选择处理的一部分,对进入本地路由表的信息进行治理并处理属性。由对等体来的信息只有在通过输入策略的过滤规则后,才会在路由选择的处理过程中予以考虑。输出策略治理则向远端的对等体广播的路由信息。路由只有在通过输出策略的过滤规则后才会被发布。
图4:路由信息的接收和发布
例如,假设大型ISP为第二级ISP提供接入,二级ISP将向大型ISP广播几百条路由信息。大型ISP可通过定义策略规则,只接收它希望得到的来自小型ISP的路由。当小型ISP新增一个客户时,它通知大型ISP,它将转发一组额外的报头。ISP通过修改它的路由策略过滤规则,接收来自小型ISP的信息,更新路由表。
图5:策略过滤的例子
JUNOS策略定义语言
路由策略定义语言的一个要害话题是,当网络治理员治理上千条路由的策略时,它的难易程度如何。JUNOS策略定义语言与编程语言相似。它答应通过许多不同的属性(如IP报头,AS路径,MED,组,本地优先,IS-IS级,和OSPF区域)标识路由来定义策略,然后基于这些属性进行非凡的操作(如,接受,拒绝,和修改)。因为策略语言很象编程语言,它实际上非常普通,可以随时间的过去而增加一些新的属性和新的操作。这便意味着,它即可以满足今天的需求,又有能支持将来的需求。
优化查询
当对特定的路由与策略规则进行比较时,我们很轻易发现策略的实施将优化查询和识别处理的性能。策略的执行要求每条路由更新的报头与配置的策略比较,以决定对该路由采取什么操作。在Internet中,对等体交换处将包含数千条路由,因此,必须要有一个快速的查询算法。
采用线性查询(O(n))以识别路由对策略的匹配比起使用树型查询(O(logn))要多花费很长的时间。传统路由软件通过访问列表进行查询,是线性的。因为Juniper网络公司从最底层开始设计其软件,JUNOS使用了树型查询。这是JUNOS策略定义语言在90年代晚期,而不是在80年代晚期被开发的一个明显的增强性能之处。
图6:线性查询与树型查询的比较
测试策略配置
假如没有办法在策略被应用到实际网络前对其进行测试,强大而灵活的策略定义语言就象是一把双刃剑。网络治理人员希望能够在不影响业务且不更改客户要求的设置的情况下对他们的路由策略进行测试。
对于JUNOS,它能够定义一个策略,然后通过策略引擎运行具有一系列属性的报头,以测试其结果。假如策略测试正确,网络治理员将重新配置系统并将策略应用于对等体。
流量工程
ISP必须提供一个能够承载其客户业务的网络。假如这个要求不能满足,客户将更换其他提供商。在一个很低的级别上,满足这一需求将要求ISP在一定范围内提供一定数量的线路和带宽。换句话说,ISP必须配置一个能使客户连接到其网络的物理拓扑。
一旦物理拓扑存在,则必须处理将业务映射到拓扑上的任务。过去,将业务映射到物理拓扑上去并不是以一种科学的方法来实现的。映射只是通过基于产品的路由配置来完成。这种无计划映射的弱点通常是通过过量提供带宽来解决的。随着ISP网络越来越大,线路上支持的IP变得越来越快,客户的需求变得越来越高时,将业务映射到物理拓扑上越来越需要以一种不同的方式来实现。被提供的载荷必须以一种控制和有效的方式被支持。这种将业务映射到物理拓扑上的过程称作流量工程,是目前在ISP和IETF中的一个热门话题。
Internet骨干网流量控制的发展
在90年代初期,当ISP网络由T1(1.5Mbps)和T3(45Mbps)链路组成时,流量工程通过使用路由量度值来实现。基于量度的控制在那时是足以胜任的,因为无论从路由器的数量,链接的数量还是业务量上,那时的Internet骨干网都要比今天的规模小得多。
图7描述了基于量度的流量控制是如何运行的。假设A发送了大量的业务到C和D。如图7所示的量度值,A-B和B-C的链路可能会发生阻塞,因为,A-C和A-D的业务流都将通过这些链路。假如C-D链路上的量度值变为3,A-D的业务流将转移到A-D链路上,但A-C的业务流仍留在A-B-C链路上。结果,“热点”在没有中断网络上任何事物的情况下被处理了。这是一个通过使用IGP量度值进行有效流量控制的例子。
图7:基于量度的流量控制
ISP在路由核心网和ATM核心网间做出抉择
大约在1994年或1995年,ISP网络上的负荷已超过T3速率。那时,只有在ATM交换机上才具有OC-3(155Mbps)接口,路由器平台并没有类似的接口。ISP必须要作出决定:是继续留在路由核心网上,还是转移到ATM核心网上。每个ISP都基于几个问题的答案而决定了他们将来的方针:
· ISP对传统路由器厂商在短期内为其产品开发出OC-3和OC-12的接口是否有足够的信心?
· ISP是否认为带宽的缺乏会给他们的业务带来很大的威胁,进而急需作出决定,即使方案将要对其网络的核心部分进行完全地检修?
正如我们将要看到的,那些选择了向ATM核心网转移的ISP们继续成长。同时,那些停留在传统路由器核心网的ISP们则因为OC-3速率的SONET路由器接口推出较晚以及其较低的性能,而使其成长面临更大的挑战。在后面的几节里,我们将讨论每种选择的优点和缺点。
路由核心网中基于量度的流量控制
前面已经讨论过,路由量度的使用在90年代初期提供了一个基础的流量控制工具。但是,随着运营商网络的数量和复杂性不断增加,基于量度的流量控制变得越来越复杂,以至于它失去了其可用性的一面。网络治理人员可以继续通过调整链接量度值来避免阻塞,但是,在对网络的一部分量度值进行调整的同时,判定该调整是否会影响网络的其它部分而产生新的问题将变得越来越困难。
路由核心网中没有 “流量工程”的情况
假如只有使用IGP量度值一种方法来进行流量控制,很可能会在网络中产生一些链路很少被使用,而其它链路严重阻塞的情况。这种状况对ISP来说很不经济,因为所有的中继线都有开销,即便它们未被充分使用。
图8:ISP网络拓扑的例子
图8描述了一个模拟的ISP网络拓扑。在旧金山POP与华盛顿特区POP之间有几条潜在路径。假设路由协议为业务在旧金山和华盛顿特区间所选取的最短路径是旧金山-芝加哥-华盛顿特区这条路由。同时,假设有大量的业务从旧金山发往芝加哥,而且也有大量业务从芝加哥发往华盛顿特区。结果大量的从旧金山流向华盛顿特区业务将与旧金山至芝加哥和芝加哥至华盛顿特区的业务竞争。假如网络只能通过IGP量度值进行链路选择,则这种情况将经常发生。依靠于IGP量度值建立的路径将吸引大量业务。这将导致阻塞和低性能,未能对整个网络的带宽进行有效利用。
路由核心网的优点与缺点
相对于转移到ATM核心网,维持原来的路由核心网有一些优点:
· 在路由核心网中,物理拓扑与逻辑拓扑是一致的,避免了ATM网络中的“N2”问题。将在下面章节讨论的“N2”问题在新增加一个边缘节点时所表现出来的复杂性是非常明显的。
· 在路由核心网中没有信元税。假设有20%的开销用于ATM的组帧及实现包尺寸分配,这意味着对于155Mbps的OC-3链路,124Mbps将被用于传输数据,31Mbps将用于ATM开销。但是,当你考虑一条2.488Gbps的OC-48链路,1.99Gbps用于数据,498Mbps将被用于ATM开销(几乎是一个OC-12)。由于没有信元税,在路由核心网中则意味着被提供的带宽将更有效地被利用。
· 具有无连接操作特性的路由核心网在故障条件下将显示出更好的适应性。在基于 ATM链路的网络中,作为备份的永久虚电路(PVC)必须在故障发生前被配置并安装到交换机中。因为网络中的任何节点都有发生故障的潜在可能性,因此,很难设计出与IP内建的可恢复性相似的备份PVC。
相对于这些优点,传统的路由核心网还具有一些缺点:
· 在一个路由核心网中,业务负载并没有在网络链接中均匀地分配,造成网络资源使用的低效率。一些链路发生阻塞,同时另一些链接未被充分使用。这种情况在疏松连接的网络中可能还可以满足需求,但在一个具有丰富连接的网络中,对于业务在路径中的分配进行控制,使负荷在链路中均匀分配就变得非常重要了。
· 基于量度的流量控制并不能为流量工程提供一个满足的方案。由于ISP网络的连接变得越来越丰富(即,更大,更密的结网,更多的备份),对网络某部分的量度值进行调整是否会引起网络其它部分的问题,变得越来越难以判定。
ATM核心网中基于PVC的流量控制
当IP在ATM网络上运行时,路由器环绕在ATM网络的四周。每个路由器通过一组穿过ATM物理拓扑而设置的PVC与其它路由器进行通信。路由器并没有与下层网络直接相关的物理拓扑信息。两个路由器之间的PVC就象连接两个路由器之间的简单点到点电路一样,路由器所了解的只有这些。图9说明了ATM核心网中的物理拓扑与ATM核心网中的逻辑拓扑的区别。
图9:ATM物理拓扑与逻辑拓扑的比较