扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
引言
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网络公司的软件体系使得传输的包永远不会通过路由引擎进行处理。对于那些被要求送至路由引擎的业务,链接保持和路由协议更新将被赋予最高的优先权,以确保无论系统的负载情况如何,邻接永远不会断开。这种
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。