引言
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核心网所需的稳定运行上,都显得力不从心。现在,在高性能光接口上实时地转发业务要求配置基于硬件的转发引擎。因此,下一代的路由软件不再需要对包转发和高级系统功能之间的资源竞争进行处理。基于硬件的转发引擎的效率,允许路由软件运行在一个能够提供更高的可靠性,可伸缩性,有效性,和可为敏感的重要任务应用提供高性能的普通操作系统环境之中。