《2022年网络操作系统的发展历程 .pdf》由会员分享,可在线阅读,更多相关《2022年网络操作系统的发展历程 .pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、白皮书网络操作系统的发展历程Juniper Networks,Inc.China北京市东城区东长安街1号东方经贸城西三办公楼15层1508 室邮编:100738 电话:(86)10-文档编号:200264-002SC 08/2008JUNOS软件:网 络行业中最先进的架构方法名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.2网络操作系统的发展历程目录概述3介绍3网络操作系统的起源和发展3第一代 OS:单片式架构 4第二代 OS:控制面板模块性4第三代 OS:灵活性、可扩展性和持续运行5OS设计的基
2、本考虑因素5商用 OS与开源 Donor OS 6功能分割与进程调度6内存模式6调度原则6虚拟内存/抢占调度编程模式7常见的内核设计8单模块与微内核的网络操作系统设计9JUNOS 软件的内核10JUNOS 软件中的进程调度11JUNOS 软件的路由协议进程12可扩展性14缩减 14扩展 15架构和基础设施16并行化16灵活性和可移植性17模块化程度19开放架构19产品维护19自治愈20故障排除21质量和可靠性21系统完整性21版本流程总结23最终产品的质量和稳定性24结语25JUNOS 软件与众不同的原因25特性 25可预测性:2004 C2008 之间发行的 JUNOS 软件版本25关于瞻博
3、网络26图表列表图1.典型抢占调度模式的顺序7图2.抢占调度模式中出现的资源管理冲突7图3.JUNOS 软件 9.0版本的通用设计结构10图4.JUNOS 软件中的多级 CPU调度 12图5.层级式协议栈的运行13图6.典型的 CPU时间捕获截图(摘录自 NEC 8800 产品文件)16图7.通用操作系统环境中的产品合并18名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程3概述本文将讨论运营商级网络操作系统(OS)设计中固有的要求和面临的挑战。我们将以瞻博网络操作系统JUNO
4、S?软件的主要功能为例来演示OS设计的发展历程,主要强调功能与架构决策之间的关系。本文将从不同角度讨论设计现代化网络操作系统的挑战,包括灵活性、支持众多平台的能力、不间断运行以及并行化等。此外,本文还将讨论已经发现的架构挑战、折中性和机会,以及构建先进网络操作系统的最佳业务实践。介绍现代化网络设备是由硬件和软件组成的复杂实体。因此,仅凭设计高效的硬件平台并不能提供经济高效、持久运行的产品。控制平面在开发特性及确保设备可用性方面发挥着至关重要的作用。我们很容易就能发现CPU主板及转发平面的速度提升,而软件的结构变化通常却难以察觉。虽然供应商常在宣传资料中提到了大量的运营商级特性,但这些特性的运行
5、体验却存在着较大差异。那些部署过多个软件版本的产品最能体现出因为选择不同OS而造成的性能差异。现在,仍有大量的路由器和交换机在一开始部署陈旧的单模块软件,然后再迁移到更为完善的设计。这种做法对稳定性和运行效率的积极影响显而易见。但是,从一个网络操作系统迁移到另一个网络操作系统将带来众多挑战,包括特性集不兼容、运行体验不一致,以及软件质量不一致等。这些潜在挑战使供应商迫切需要构建一款强大的控制平面,以支持现在和将来市场上的硬件产品及其特性。开发灵活、使用持久、高质量的网络OS使您能够在将来通过平滑演进来满足新需求,其高度能够支持您进行扩展和缩减,其广度使您能够将它们部署在多个平台上,其深度又支持
6、您集成丰富的新特性和新功能,这一切都需要充裕的时间、巨大的投资以及深入的技术知识。编写 JUNOS 软件早期版本的工程师大多来自其他公司,曾从事过网络软件构建工作,对于如何构建软件以及需要对哪些软件领域进行改进拥有一手经验。通过不断摸索,这些工程师发现了解决构建旧式操作系统时所遇局限性问题的新方法,从而在一开始就将众多创新成果融入到JUNOS 软件之中。此外,为了确保我们的产品能够预测并满足下一代市场要求,我们会对JUNOS 软件开展定期评估,以便根据需要对软件进行修改,从而维护一贯的可靠性、高性能和永续性。网络操作系统的起源和发展现代化的网络操作系统是满足POSIX要求的软件平台中最高级的专
7、业化分支,很少需要从头开发,这主要是因为从产品构思到产品面市,如果完全从头开发一流的操作系统成本显然太高。通过部署通用 OS架构,网络供应商能够将精力集中在特定路由的代码上,加快新产品的上市速度,并借鉴多年的技术和研发成果来设计新颖的(donor)产品。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.4网络操作系统的发展历程例如,表 1列出了面向路由器的一些操作系统及其起源(“第几代”一列将在下文详细解释)。表1.路由器操作系统的起源供应商路由器 OSDonor OSDonor OS的所有人第几代
8、Donor OS 网站Juniper Networks,Inc.JUNOS 软件FreeBSD互联网社区2,3www.freebsd.orgCiscoIOS-XRQNXQNX Software SCiscoIOSn/a专用1n/aCiscoIOS-XEIOS,Linux混合(ASR)1.5n/aCisco模块化 IOSIOS,QNX混合(6500)1.5n/aAlcatel-LucentSR OSVxWorksWindRRedbackSEOSNetBSD互联网社区bsd.orgForce10FTOSNetBSD互联网社区bsd.orgExtremeExtremeWARELinux互联网社区2w
9、ww.xoslinux.org总的来说,路由器中的网络操作系统历经3代的开发历程,每代操作系统都有着截然不同的架构和设计目标。第一代OS:单片式架构通常情况下,面向路由器和交换机的第一代网络操作系统都是运行在平坦内存空间的专用映像,这个内存空间通常由闪存或ROM直接提供。这些操作系统虽然提供多个进程来支持协议、数据包处理和管理工作,但这些进程却以一种多任务处理的协作模式运行,彼此争用资源,除非有些进程自愿放弃 CPU。所有的第一代网络操作系统都拥有一个共性:降低在嵌入式硬件上运行全规模商用操作系统的风险。内存管理、防护和内容交换几乎或根本不存在,它们的主要目标是减少空间占用,加快运行速度。但是
10、,第一代网络操作系统却推动了网络的商业化,使供应商纷纷将产品部署在网络上。这些系统的缺陷在于一系列资源管理和故障隔离相关的问题;一个失控(runaway)进程能够轻松耗尽整个处理器资源或导致整个系统故障停机。在由陈旧软件控制的数据网络中,这种故障可谓是司空见惯,引发故障的原因包括软件错误、恶意流量以及操作错误等。传统的第一代平台虽然已被逐渐应用到最低端的电信产品中,但在如今的全球网络中仍然可以见到。第二代OS:控制面板模块性20世纪 90年代中期,数据网络在全球迅速发展,为现有网络和路由器的容量带来了巨大挑战。当时,嵌入式平台运行全规模商用操作系统已成为不争的事实,至少在高端硬件领域是这样的,
11、但问题是:这些操作系统不能通过令人满意的速度维持数据包转发性能。市场迫切需要突破性的解决方案。于是,对控制平面和转发平面实施硬分割的概念油然而生。不久,瞻博网络成功推出了业界第一款由应用特定型集成电路(ASIC)驱动的路由平台“M40”,这种方法自此得到广泛的采纳和应用。经证实,完全在硬件中转发数据包是一种可行的方案,为瞻博网络JUNOS 软件牵头的下一代网络操作系统开发扫除了障碍。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程5今天,最初的M40 路由器几乎已被完全淘汰。
12、但是,这款产品的传统概念却被许多类似的设计所沿用,它们的蓝图也已成为业界公认的第二代参考架构。第二代网络操作系统不提供数据包交换功能,而是将注意力完全集中在了控制平面功能上。不同于第一代产品,第二代OS能够全面利用多任务处理、多线程、内存管理和内容操作的能力,从而大幅度减少了系统级故障。过去几年安装的大多数核心及边缘路由器都在运行第二代操作系统上。现在,正是这些系统负责在互联网和公司网络中传输大批流量。但是,第二代操作系统却因缺乏软件上的数据转发平面而无法支持不具备单独(硬件)转发平面的低端设备。此外,某些客户因为兼容性问题而无法迁移出旧式软件,仍在使用传统的软件特性。这些局限性推动了过渡OS
13、(第 1.5代OS)的产生。在这个版本的操作系统中,第一代单模块映像作为进程运行在第二代调度程序及内核上,从而将传统特性与全新的软件概念结合在一起。“第1.5代”产品旨在提供一定的发展空间,并将功能循序渐进地迁移到新代码中,同时维护原始代码库的特性。虽然这是一次有趣的工程尝试,但1.5代产品的特性不如第一代产品丰富,运行不如第二代产品高效,令人们对它们的长期价值深感怀疑。第三代OS:灵活性、可扩展性和持续运行虽然第二代 OS的设计非常成功,但在过去10年中还是不断遇到新的挑战。激烈的竞争迫使企业降低运行成本,一致性要求又使网络软件必须足够灵活,以便能够重新部署在网络设备中,覆盖绝大部分的端到端
14、数据包传输路径。从太比特位的路由器到二层交换机和安全设备,广告词中声称的“一流”不再代表产品能够提供卓越体验市场迫切需要真正的“网络”操作系统。此类系统还必须支持持续运行,以便路由代码或系统升级期间出现的软件问题不会影响网络的正常运行。迎接这个挑战所需的可用性及融合要求远远不是第二代路由器凭借硬件冗余所能满足的。第三代操作系统的另一个主要目标是零故障停机(计划内和意外停机)。根据前几代设计的经验教训,在 OS之间迁移是一项非常困难的任务,因此第三代操作系统还应提供对客户完全透明的迁移路径。它们不能像传统软件设计的淘汰流程那样支持革命性的升级体验,而是必须支持演进性的升级体验。OS设计的基本考虑
15、因素为操作系统选择适当的基础(原型)非常重要,这将决定整个软件设计流程、最终产品质量和可服务性。因此,OEM供应商有时会在开发过程中从一个原型迁移到另一个原型,以期实现最佳效果。总的来说,从专用代码库到商用代码库以及从商用代码库到开源软件是最常见的迁移情况。无论最初的选择是什么,当网络设备供应商开发自己的代码时,他们都会离最初的初衷越来越远,这一点不仅适用于协议特定型应用开发,还适用于系统开发。控制平面冗余、不中断业务运行的软件升级以及多机箱操作等扩展都需要对原始设计的各个层次进行关键性的改变。但是,网络供应商非常希望从donor OS(源操作系统)中获得自己不擅长的内容,如改进内存管理、调度
16、、多核及对称多处理(SMP)支持和主机硬件驱动器等。通过应用合理的工程原则,业界同行对donor OS(源操作系统)越是关注,相关网络产品就能越快地受益于新代码和新技术。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.6网络操作系统的发展历程这种关系通常能够解释表1中显示的另一个显著市场趋势过去10年间,在路由市场上出现的每五个网络操作系统中就有两个将商用OS作为构建基础。瞻博网络的主要操作系统JUNOS 软件堪称这一业界趋势的范例。JUNOS 软件的内核基础来自开源软件系统“FreeBSD UN
17、IX OS”。瞻博网络大幅度修改了JUNOS 软件的内核及基础架构,以便提供高级特性和独有特性,如状态复制、不间断路由和不中断业务运行的软件升级等,这些都是donor OS不提供的特性。但是,JUNOS 软件树仍可与 FreeBSD 代码库保持同步,以便提取最新的系统代码、设备驱动器和开发工具集,从而使瞻博网络工程师能够集中精力完成网络具体的开发任务。商用OS与开源 Donor OSDonor OS 日益得到普及的主要原因在于它并不只是仅仅提高软件性能,而是通过先进技术来提高产品的灵活性及可用性,避免客户被锁定在单一供应商框架和路线图中,从而增强对产品发展的控制能力,并充分受益于独立开发商的创
18、新成果。JUNOS 软件中的优势是显而易见的,它成为了将控制平面与数据转发平面从物理上分割开的第一款商用产品。瞻博网络对原始BSD系统架构的特定扩展依赖于多核CPU,使 JUNOS 软件这个利用同一代码库构建的系统镜像成为既能支持纯低端软件系统,又能支持太比特位的高端硬件平台的唯一操作系统。如果没有整个互联网社区提供支持,我们不可能开发出这项技术,也根本无法提供这种体验。领先的个人、大学及商业机构之间的密切协作使JUNOS 软件始终位于操作系统开发的最前沿。这在两方面得到了体现:瞻博网络在获益的同时也推动了免费软件的发展,瞻博网络FreeBSD/MIPS 端口就是其中一例。功能分割与进程调度多
19、处理及功能分割和调度几乎是所有软件设计的基本原则,也包括网络操作系统软件。由于CPU和内存是共享资源,因此,所有正在运行的线程和进程都必须通过可控的有序方式来访问它们。虽然许多软件都是围绕着实现这个目标而设计的,但内存模式和调度原则却是最重要的考虑因素。在下一章节中,我们将简要介绍内存、CPU循环及系统性能和稳定性之间的复杂关系。内存模式内存模式决定进程(线程)是否运行在通用内存空间中。如果是,切换线程的开销将非常低,不同线程中的代码可以通过直接内存指针来共享数据。它的缺点在于失控进程可以破坏不属于它的内存。在更为复杂的内存模式中,线程能够运行在自己的虚拟机中,每当需要运行下一个线程时,操作系
20、统都会切换上下文。这种上下文切换导致线程间不再可能进行直接通信,而是需要管道、文件和共享内存池等特殊的进程间通信(IPC)结构提供帮助。调度原则调度选择主要在协作模式与抢占(preemptive)模式之间进行,用于规定线程切换是否自愿发生(图 1)。协作多任务处理模式允许线程完成全部的运行任务,而抢占设计则确保每个线程都能访问CPU,不受其他线程状态的影响名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程7虚拟内存/抢占调度编程模式对于正确构建的功能模块而言,采用抢占调度模式的
21、虚拟内存是最佳的设计方案,因为这些模块之间的交互受到限制,并且被定义得很好。这项技术是第二代OS设计的主要优势之一,也是确保现代化网络操作系统的稳定性和强大性能的基础。但是,它也有自己的缺点。我们先不考虑环境转换相关的成本,只考虑A线程与 B线程之间的交互(图2),这两个线程都在使用共同的资源 R。由于线程无法在抢占模式中检测出相关的调度信息,因此,它们通常会以不同顺序和不同频率访问R。例如,R资源的访问顺序可能是A-B-A-A-B。如果线程 B修改了资源 R,那么线程 A的每次访问将得到不同结果不存在任何可预测性。例如,如果R是内部网关协议(IGP)下一跳,B是IGP进程,A是BGP进程,那
22、么 BGP路由安装可能会因相关下一跳在路由表修改期间被修改而导致失败。协作多任务处理模式中就永远不会出现这种情况,因为IGP进程只在完成下一跳维护之后才释放CPU。线程 B线程 A中断导致线程 A暂停运行选择让线程 A运行线程 B抢先线程 A所利用的资源线程 A恢复运行系统闲置,线程A和线程 B准备运行线程A线程B资源 R被线程 B读取资源 R被线程 A读取线程 A的资源 R视图不一致线程B修改资源 R线程 A使用资源 R,认为 R是当前资源图1.典型抢占调度模式的顺序图2.抢占调度模式中出现的资源管理冲突名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 26 页 -Copyrig
23、ht?2008,Juniper Networks,Inc.8网络操作系统的发展历程软件设计人员所了解对这一设计理念进行了充分了解和认真研究,他们开发出了资源锁定和原语同步等特殊解决方案,并已应用到了最近面市的几乎所有操作系统上。但是,IPC的效力很大程度上取决于不同进程间的交互数量。当交互进程数据增加时,IPC的运行次数也会随之增加。在设计精准的系统中,IPC运行次数要与进程数量(N)成一定比例。在存在大量IPC活动的系统中,您可将这个比例调整为N2。IPC规模呈指数增长将会呈现负面影响,这不仅是因为相关开销有所增加,还因为意外的进程交互数量有所增加,但是软件工程师可能不会注意到这一点。在实际
24、操作中,一旦重大事件触发密集的交互时,IPC成规模地过度增长就可能导致系统级“IPC崩溃”。例如,拔出线卡通常会对接口管理、IGP、外部网关协议和流量工程产生影响。如果不对进程间交互加以妥善牵制,这个事件可能就会导致出现死锁和死循环等现象,同时多个线程彼此等待,路由表维护和IGP计算等虚拟系统运行也会临时中断。此类缺陷体现了不合理的模块化部署,在此,类似的功能组件或者高度交互的功能组件不能作为一个进程或一个线程发挥作用。此时,您可能会提出这样一个问题:“系统的模块化程度会不会过高?”根据以往的经验,答案通常是肯定的。过度模块化将带来长期的问题,包括代码复杂性、相互锁定和不必要的进程间依存等。虽
25、然这些问题都没有严重到必须停止开发工作,但将对特性速度和扩展参数产生一定影响。复杂的进程交互还将使您越来越难以为此类网络操作系统编写程序。另一方面,如果不相关的进程通过共享内存池和协作可重启性彼此影响,那么协作多任务处理在共享内存范例方面显然也并不理想。第一代操作系统中最常见的问题是:一些相对来说不重要的进程(如 SNMP或网络统计数据)中的轻微错误会导致系统级的故障停机。如果此类错误出现在受保护的、可独立重启的系统代码片段中,那么您将能够轻松地将问题隔离在这个代码片段中。这使我们得出一个重要结论。在软件设计中,不存在任何适用于所有情况的通用原则。从一个完美主义者的角度来说,代码设计应该采用最
26、高效的模式,并对网络OS的不同部分应用不同的策略,以便实现架构和功能的最佳组合。这种方法在JUNOS 软件中得到了鲜明体现。JUNOS软件严格遵循功能分割原则,以便能够高效地将协作多任务处理模式和抢占调度模式结合使用,具体取决于功能模块间的IPC牵制程度。常见的内核设计内核通常不提供任何立竿见影或可创收的功能,而是发挥一种类似“管家”的作用,如内存分配和硬件管理,以及其他系统级任务。内核线程可能是整个系统中最常运行的任务。因此,内核必须足够强大,并且尽量不影响其他进程。过去,在内存管理和流程调度方面,内核架构很大程度上决定着整个系统的运行结构,因此被认为是一项重要的设计差分因素。名师资料总结-
27、精品资料欢迎下载-名师精心整理-第 8 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程9一直以来,关于使用轻量级内核架构还是复杂内核架构的纷争从未停止过,但是,当大多数操作系统最终从功能上与各自的内核隔离开之后,这种纷争总算有了结果。一旦许多内核配置都能提供软件分配功能时,研究人员和商用产品开发人员便可自由尝试不同的设计了。例如,最初的 Carnegie-Mellon Mach微内核本意是替换BSD UNIX 中的内核,随后却被用在多个不同的操作系统中,包括mkLinux 和GNU FSF 项目。同样,某些软件项目最初只是单纯
28、基于微内核的系统,随后却被单模块设计广泛采用。“最开始先部署小型内核,然后将系统功能迁移到用户空间进程中”的基本方法逐渐不再为人们所采用。这主要是因为运行在单独内存空间中、被频繁被执行的系统任务之间需要额外的环境转换,从而产生一定的系统开销。此外,虽然所有系统进程均可重启,但这项优势经证明价值并不高,尤其是在嵌入式系统中。鉴于系统代码均已经过严格测试,只限于调度、内存管理和少数设备驱动器,因此,内核子系统出错的潜在原因多半是硬件故障而非软件错误。这意味着当存储器问题与硬件故障(例如,大容量存储设备或系统内存槽出现了不能纠正的故障)相关时,仅仅重启发生故障的磁盘驱动器不太可能帮助路由引擎保持运行
29、。另一个有趣的现象是,虽然几乎全部的操作系统供应商都在广泛研究单模块和轻量级内核,但几乎没有任何人付诸实施。例如,Apple Mac OS X最初基于微内核架构,但现在却在类似BSD的子系统上运行系统进程、驱动器和操作环境。Microsoft NT 及其衍生操作系统也经历了多次变化,将图形和I/O子系统等关键性能组件反复添加并移出系统内核,在稳定性、性能和可预测性之间找到了最佳均衡点。这些变化使NT最终成为了一款混合操作系统。另一方面,FSF、FreeBSD 和NetBSD 等免费软件开发社区大多都采用单模块设计(如Linux内核),逐渐将模块化引入到选定的内核片段中(如设备驱动器)。那么,内
30、核架构的选择对路由和控制功能有什么影响呢?单模块与微内核的网络操作系统设计在网络世界,单模块和微内核设计各有千秋。但是,日益增长的系统内核要求很快对所有的经典实施构成了威胁。例如,任何单模块或微内核OS实施单凭自身的力量都无法同时支持实时转发平面、状态和无状态转发模式,以及广泛的状态复制功能。我们可通过两种方式解决这个问题。首先,网络 OS在设计上就存在着适应产品种类有限的局限性。例如,如果OS并非设计用于中低级路由平台,一些需求就得不到满足。对于基于流的转发设备,如安全设备,这种工艺上的限制会使网络操作系统更加贴近通用操作系统但要以影响某些产品系列为代价。但这种做法要求不同类型的网络设备必须
31、维护其操作系统及独特的代码库和协议栈,从而对代码的成熟性及客户体验产生负面影响。第二,网络 OS能够发展为一种专业化设计,将多个经典实施方法的架构和优势结合起来。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.10网络操作系统的发展历程这种定制内核架构会使网络OS进一步远离 donor OS,因此会给开发带来困难,但最终将能够实现特性一致性、代码成熟性和客户运行体验卓越性等优势。瞻博网络的JUNOS 软件设计选择的就是这种方法。JUNOS 软件的内核根据正式的标准,JUNOS软件的内核可完全定制(
32、图3)。软件内核的最上端是可被视为微内核的代码片段,负责实时数据包运行和内存管理,以及系统运行中断和CPU资源使用等工作。在它的正下方是传统内核,由调度程序、内存管理器和设备驱动器组成,这些组件位于一个包内,看上去更像是单模块设计。最后一层是用户级(POSIX)进程,一般负责为通常驻留在经典单模块路由器操作系统中的内核及功能提供服务。其中某些进程支持复合使用,或运行在外部CPU(或数据包转发引擎)上。如 JUNOS 软件中的定期问候管理、内核状态复制和受保护的系统域(PSD)等。整个结构严格采用层级形式,各基本层的运行与顶部层次无关。这种高度虚拟化的设计使JUNOS软件内核同时具备灵活性和高速
33、度。但是,即便是最先进的内核结构也不是可创收的网元资产。正常运行时间是用来评估系统稳定性和质量的唯一可测量指标。因此,JUNOS 软件相比其他设计之间的根本优势集中在可靠性上面。图3.JUNOS 软件 9.0 版本的通用设计结构RT核心BSD 内核实时域PFE-kernel其他实时线程实时统计数据转发线程系统日志PFEman其他的POSIX进程采样收集器BSD内核线程防火墙编译器告警管理器QoS管理器机箱管理接口管理通用路由非实时域实时域名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系
34、统的发展历程11结合瞻博网络业界领先的不间断主用路由和系统升级功能,内核状态复制可作为持续运行的坚实基础。实际上,JUNOS 软件的冗余模式设计同时可保护数据面板的稳定性以及路由协议的临接。通过不中断业务运行的软件升级功能,基于JUNOS 软件的网络将能够避免因部署新特性或安装错误修复包而导致的故障中断,从而实现真正持续的网络运行。若想实现持续运行,控制平面和转发平面的完整性在故障切换或系统升级期间绝对不能受到影响,无论是少量的改动还是重大的版本变化。运行 JUNOS 软件的产品将不会在意外故障或计划内升级期间丢失或延迟任何路由更新。在所有情况下,尤其是维护期间确保持续运行是一个远大目标,它体
35、现了瞻博网络卓越的网络创新能力,也是瞻博网络区别于其他网络供应商的独到之处。JUNOS 软件中的进程调度JUNOS 软件的创新没有止步在内核级别,而是扩展到了整个系统运行的方方面面。我们曾提到过,JUNOS 软件中的调度程序分为两层,最上面的一层是主用调度程序,通过软件数据层面来确保实时处理入站数据包。这层调度程序本身也在实时运行,可确保在转发路径中满足服务质量(QoS)要求。第二层(非实时)调度程序驻留在JUNOS 软件的基本内核中,类似于FreeBSD 调度程序,负责在系统中调度系统和用户进程,以便运行抢占多任务处理模式。此外,某些多线程用户级进程中还存在第三层调度程序,线程运行在协作多任
36、务处理模式中。当复合进程分配到CPU 时,会把它看作虚拟CPU,线程将根据执行流量和原子运行顺序进出处理器。这种方法使您能将线程更紧密地结合在一起,以便在协作多任务处理环境运行中,同时避免陷入大量的 IPC和资源锁定活动中(图4)。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.12网络操作系统的发展历程资源分割是多级调度模式中的另一个有趣现象。不同于第一代设计,带有软件转发平面的JUNOS软件系统不会因为数据包超载而被冻结,这是因为一级调度程序将会不停地为控制平面分配CPU周期。JUNOS 软
37、件的路由协议进程路由协议进程daemon(RPD)是 JUNOS 软件系统中最复杂的进程,不仅包括面向路由协议的大部分实际代码,还拥有自己的调度程序和内存管理器。RPD中的调度程序实施协作多任务处理模式,每条线程负责在自动运行完成后释放CPU资源。这种设计允许多个紧密相关的线程共存(无需IPC负担)和扩展(无需承担交互及相互锁定风险)。RPD中的线程采用高度模块化设计,也可作为单独的POSIX进程在外部运行例如,确定定期协议的运行数量。在早期的RPD版本中,每个协议负责自己的临近管理和控制活动。而现在,大多数保活进程都驻留在PRD之外的双向转发检测协(BFD)daemon 和定期数据包管理进程
38、daemon(PPMD)中,从而在路由引擎与线路卡之间进行分配。RPD可凭借这种独特的功能将抢占和协作多任务处理模式的优势结合在一起,支持业界可扩展性最高的路由栈。实时微内核I级调度II级调度实时非实时转发代码内核POSIX进程(简单)内核线程POSIX进程(复合)线程线程线程III级调度图4.JUNOS 软件中的多级 CPU 调度名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程13类似于 RPD的复合进程具有公认的高效率,但有时也会因无法提供组件间保护而遭到批评。据说,出
39、现故障的线程将导致整个协议栈重启。虽然这种说法有根有据,但我们能够将这个错误对性能的影响与其他备选结构轻松比较,在其他备选结构中,每个路由协议都运行在专用的内存空间中。假设路由器为企业的VPN客户提供服务,最终的可创收产品是能够在远程站点之间提供持续接入能力的产品。顶层的BGP进程负责创建转发表条目。这些条目最终将被编入数据包路径ASIC中,用于实际的报头查找和转发。如果BGP进程出现错误并重启,那么就可能导致转发表条目失效,必须进行清空,从而停止传输客户流量。但BGP依赖堆叠中的低层协议来执行流量工程和拓扑信息收集任务,在OSPF 或RSVP 不存在的情况下无法创建转发表。如果任何进程重启,
40、BGP都将受到影响(图 5)。这样,在共享内存空间中运行BGP、OSPF和RSVP 的优势就可以得到体现,因为空间中的协议能够访问通用数据,但无需承受与IPC相关的开销。图5.层级式协议栈的运行接口状态时间信息流接口管理器拓扑OSPFVPN下一跳RSVP-TEVPN FIBBGP在相反情况下,多个路由协议在同一个级别中合法运行,彼此不受影响,如单播BGP和协议独立式组播(PIM)。虽然它们都依赖于有关互连和IGP已知型网络的可接入性信息,但一个协议发生故障不会对另一个协议产生影响。例如,即使组播转发因PIM故障而停止,转发到BGP已知型远程网络的单播也不会受到影响。在这种情况下,路由代码的组播
41、和单播部分都将更好地单独保存在不同的受保护域中,不会彼此影响。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.14网络操作系统的发展历程通过对意外故障进行深入考察,我们了解到软件和硬件问题都是导致意外发生的原因。存在缺陷的内存插槽与引用故障指针的软件会产生相同的后果系统极可能会重启进程。总的来说,确保持续运行存在四重挑战:?第一,不应影响到现有的转发项目。进程重启不应影响穿过路由器的流量。?第二,现有的转发条目不应失效。路由器在拓扑发生变化(或缺乏)时不应将流量指错方向。?第三,协议运行应保持低
42、开销,并得到合理牵制。不应出现超负荷使用CPU和死锁问题,以防对节点的稳定性产生负面影响。?第四,不应影响到路由协议对等体。网络应保持稳定性。我们再次看到,通过特定方式构建软件几乎无法解决任何软件问题。虽然路由线程能够以协作、抢占或混合任务模式运行,但故障恢复仍需使用外部检查点设施来完成状态恢复工作。如果您已将关键路由信息复制到其他地方,并且能够立即恢复这些信息,那么故障对用户流量和协议对等都应该是透明的。通过即时恢复实现的透明性是所有NSR设计的基本理念,也是支撑现代化瞻博网络RPD实施的主要概念。瞻博网络工程师并非将注意力集中在一项技术或一个结构上,而是致力于根据“适者生存”的原则发展 J
43、UNOS 软件协议栈,朝着实现真正的不间断运行、可靠性和可用性目标前进。瞻博网络JUNOS 软件使用状态复制、检查点和IPC来降低软硬件故障的影响。JUNOS 软件的控制平面旨在维持高速度、全状态、长时间的正常运行,即使在最恶劣的网络环境下也不例外。为了适应瞬息万变的现实条件和实践应用,瞻博网络将继续发展JUNOS 软件的路由架构,根据一流软件设计的需要添加或删除线程,使其变得更为先进。瞻博网络的软件始终能够不断地适应运行环境的变化,正如本段内容所述,我们正不断将新的观点和新概念融合到JUNOS 软件中,使其逐渐完善。可扩展性JUNOS 软件能够通过扩展和缩减来适应不同规模的平台。这种能力对于
44、支持大量不同网元的“网络OS”至关重要。在下个章节,我们将重点介绍这个网络领域的挑战和机会。缩减缩减是指网络操作系统通过减少容量来适应低端硬件,创建一致的用户体验并确保整个网络上的所有设备都提供相同级别的永续性和可靠性,从高端到低端路由平台。实现这个目标需要网络设计人员克服许多挑战,不仅需要在不同的硬件架构上提供高效的代码,还要满足低端系统的独特要求,如资源限制、成本及独特的安全性和运行模式。此外,许多低端路由器、防火墙和交换机至少都需要CPU为数据包转发或服务提供一定的协助,从而引发了对软件转发路径的需求。提取任意的第二代路由器OS并在低端系统上加以执行是一项艰巨的任务,这也说明了为什么除瞻
45、博网络以外,没有任何供应商发售运行有相同OS(基于第二代或更高设计原则)的低端和高端系统。名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.网络操作系统的发展历程15但是,为企业提供运营商级OS对您而言也会有所收获。这种做法不仅能够在整个网络上实现统一管理、兼容性以及前期购置成本的节省,从而为客户带来立竿见影的优势,还能改进最初的OS设计。为了使OS 适用于低端设备而进行的“加速”操作中,代码得到了广泛审查,代码架构也得到了优化,不重要的片段也从代码中删除或重新设计。此外,多变市场的独特要求(如安
46、全性、以太网和大型企业)能够在众多环境中对软件进行张力测试,从而加固了总体设计。当软件适应新的角色和应用时,扩展局限将会延伸至多个领域。最后,低端系统的发售量通常远远超过高端系统。在实地使用的系统数量越多,发现非明显错误的几率越大,但特定错误对在全球已售出产品的平均影响也越低。1所有这些因素都有助于改进产品,无论是面向运营商还是大型企业。公平地说,自瞻博网络J系列产品面市以来,满足缩减要求一直是JUNOS 软件开发人员的灵感源泉。市场对高效基础架构的需求推动了JUNOS Software SDK等创新计划的发展,并最终为“通过单一 OS来推动整个网络发展”这个理念的诞生奠定了基础,开创了网络行
47、业之先河。扩展提到支持多机箱、数兆兆位路由器,人们通常会想到向上扩展和高端等字眼,对JUNOS 软件也是如此。但是,对于配备全硬件转发平面的现代化路由器而言,其软件的性能极限通常会受到控制平面容量的挑战。例如,与一个320 兆位、提供 8,000 条低速链路及大量IGP和BGP临点的路由器相比,一个 1.6兆兆位、提供 80个面向核心的万兆以太网接口的路由器会对控制平面施加更小的压力。扩展能力的高低取决于多个因素,其中模块化水平是最重要的因素之一。正如上文所述,如果不能妥善控制模块间交互,将导致辅助运行出现大幅度增长,使整个系统陷入僵局。设计目标、相关架构决策和复杂程度是扩展能力的另一个影响因
48、素。例如,如果路由器的设计不支持5,000 个MPLS LSP 电路,您仍旧可以配置这个数字,但将会影响运行的可靠性和可预测性。因此,通过改造基础架构来修复这个问题非常重要。实际可行的多维扩展的作用就相当于Dhrystone2基准,比如一个路由系统如何证明它对客户具有商业上的吸引力。在您与供应商讨论扩展时,最好让他们能坚持其声称的扩展极限。例如,能够在一个路由器上配置 10万个逻辑接口并不意味着此类配置是可行的,因为不同前端可能会出现问题,从而减慢用户命令响应速度、导致软件超时和协议临接丢失。供应商的承诺只表示其宣传的极限是经过例行检查和测试的,而新特性的开发则要根据相关的市场需求来定。JUN
49、OS 软件致力于提供高可扩展性。全球有多个规模最大的网络都在利用JUNOS 软件的高可扩展能力,在同一个设备上支持数千个BGP 和IGP 对等体。同样,基于JUNOS 软件的核心路由器能够支持数千条MPLS 标签交换路径(LSPs)。JUNOS 软件在瞻博网络T系列平台上支持业界领先的插槽密度,是业界公认的能够提供最高可扩展性的网络操作系统。1此说法假设使用了完备的系统测试方法论,从来不将具有致命缺陷的产品传递给客户,且出现大规模软件问题的几率相对较低。2 Reinhold Weicker 开发的简短复合基准程序,旨在成为系统(整数)编程的代表。名师资料总结-精品资料欢迎下载-名师精心整理-第
50、 15 页,共 26 页 -Copyright?2008,Juniper Networks,Inc.16网络操作系统的发展历程架构和基础设施本章将介绍与并行化、灵活性和可移植性相关的架构和基础架构,以及开放架构。并行化多核 CPU开发领域的不断进步,以及能够在一个系统中运行多个路由处理器的能力,为提高路由器控制平面的效率奠定了坚实基础。但是,您很难在性能与价格之间找到最佳均衡点。不同于超级计算机的数据挖掘和计算任务,处理网络更新并不是一项静态工作。您将遇到大量不可预知的拓扑变化,并需要将这些变化应用到多个CPU上。在路由器和交换机中,网络状态变化是一个异步过程(随事件同步发生),从而导致不能根