尽管业务需求每年都会对网络提出越来越多的期望,然而在过去的十年里,路由系统底层基础设施的基本软件架构几乎没有变化。 传统路由器的操作系统是在今天大多数动态 IP 应用尚未开发出来之前设计出来的,而当时的设计受到当时的硬件/软件技术的制约。
当有新兴需求出现时,传统路由器的单一软件架构的局限性立刻体现出来了。为了试图紧跟所有这些新兴需求,传统操作系统的代码库成长为庞然大物,约束了支持动态 IP 流量所需要的智能和敏捷。 现在,由于这个已经过于庞大的代码库集成了越来越多的服务,因此以前路由器的操作系统对这些服务的控制变得越来越虚弱。
传统的操作系统设计会有一个整体式代码库,其中的所有路由功能均相互缠绕、分享相同的 CPU 周期。过于庞大、缠绕混合的架构会带来固有的处理冲突,这会影响到路由器的安全性、稳定性和性能。举例来说,相互分享、缠绕混合的架构使得路由器的包转发功能要消耗所有的处理资源,控制和服务功能不得不等待,需要更多的周期才能完成。
由于这一原因,分布式拒绝服务(DDOS)攻击期间传统路由器的控制端口经常会被锁定。关于混合架构的处理经常局限性还有另外一个例子:大多数企业会明显过载其网络设计能力,而不是使用可行的 QOS 机制。 在传统路由器操作系统中,由于不能有效地管理处理资源,因此激活这些 QOS 工具会严重地降低吞吐量性能。
图2 混合传统操作系统的架构


混合架构同样也无法隔离故障,于是小问题会很快变成大范围的停机。 诸如有一个小故障:一项任务出现了内存泄漏或内存错误,将会导致重写另一项任务的代码或数据结构。 这类错误会导致更多的任务失败,最终是整个操作系统的崩溃。 唯一恢复这类故障的方法是,重新启动整个路由器。
另外,路由器本质上是复杂的,难以配置和维护,它需要大量的时间和很高的专业技术水平。 例如,传统的 CLI 需要多个步骤或命令才能执行一些基本的功能,而且对那些导致安全漏洞或性能退化的简单错误只有最基本的保护措施。一项特性/功能如何影响到另一项特性/功能,这要求考虑到很多细节;因此网络的变动要求更认真的前期设计、工程设计和实现,这都会导致应用的首发日期滞后数月。
混合架构的另一项挑战是,新特性的开发和为了支持所有可能平台排列而导致的大量操作系统的镜像。整个软件架构变得如此庞大,使其失去了灵活性、可伸缩性和系统稳定性。修改变得特别难以进行--因为仅仅是添加一项新特征,就会影响到整个代码库。另外,因为需要更正重要的网络问题或添加重要的新特性,所以代码的规模和复杂性也决定了厂商发布新软件版本的速度。
尽管在上一个十年里,传统系统试图紧跟所有这些不断变化的需求,但"每个特性或修订都有一个版本"的传统方式只会带来更多的挑战。传统路由器代码的补丁包可以根据平台、接口及版本指定,这样企业级设备将会有5000多种可用的软件版本。一些企业运行着多达100种不同的软件版本。为每个设备找出合适的版本以满足特定的需求,这本身就是一件令人望而生畏的工作。
考虑到传统路由器操作系统中明显的软件复杂性,企业通常会尽可能地避免软件维护,因为即便像添加一项特性这样的简单操作也会影响到整个代码库。 如果确实需要补丁和升级,将需要花费数月的时间来评估、测试不同的版本以确保系统的稳定性和互操作性。由于软件升级的麻烦,企业也通常会订购比实际需要更多的特性和内存,以避免将来改动时的混乱。
新一代操作系统--JUNOS简介
现代 IP 应用需要一种智能网络,可以安全满足关于安全性、工作时间、性能和灵活运营等不同需求的集合。 应对这些挑战需要一种植根于软件模块化和现代编程技术的新设计方法。
Juniper 网络公司的 JUNOS 操作系统通过目的导向构建,可保护目前动态IP流量的安全并满足网络要求。 Juniper 网络公司路由器在受保护系统资源上运行模块化的 JUNOS软件,克服了传统路由器操作系统的众多设计缺陷。
Juniper 网络公司的路由产品在电信运营商群体中以其高级的系统设计和运营设计而闻名。 今天,90% 以上的 Internet 流量都要流经 Juniper 网络公司的路由器。 现在,由于商业环境的不断变化,使得企业的网络应用也在发生不断变化,为了支持不断变化的网络应用,企业的网络也需要不断改进。而越来越多的企业要求自己的网络能提供与运营商基础设施提供的相同服务级别。Juniper 网络公司将其高级 JUNOS 操作系统由T系列、M系列路由器扩展至J系列路由器平台以便让企业网络也能达到和运营商网络相同的级别。
Juniper 网络公司的系统架构为路由平台的设计和开发带来了一系列本质变化。 Juniper 网络公司的路由器利用一种严格的分工,提供了任何其他平台都无法比拟的智能和性能。 模块化的系统架构使得企业能够满足新一代 IP 基础设施的不同需求。
开发方法基于 4 大重要设计原则。
- 受保护的处理--始终可用的资源确保了路由器的稳定性和控制
- 模块化的软件架构--清晰地分隔开相互独立的软件功能
- 新一代 CLI--高级的配置/诊断工具
- 单版本链--通过严格发布过程开发出来的通用代码
在下一节中,我们将结合这些主要设计原则所带来的许多优势,对其逐一进行详细介绍。
受保护的处理资源--Juniper 网络公司的平台通过严格的分工保证了各项功能的资源,避免其互相影响。模块化设计将包转发功能、服务处理功能和控制功能完全分开。
图3 模块化系统架构--Juniper 路由器


这种世界级架构由 3 大独立系统组件组成,即路由引擎、转发引擎和服务引擎。每个引擎都有着自己专用的 ASIC 或指派的 CPU 资源(连同受保护的内存),因此处理冲突将不再是问题。
- 路由引擎--管理系统的所有路由/控制功能,包括对等关系的维护、路由协议的处理以及路由表/转发表的创建和更新等。
- 包转发引擎--接收包,执行路由查找,并向输出接口发送包。
- 服务引擎--提供高级的包处理服务,诸如网络地址转换(NAT)、加密、状态防火墙过滤器、审计和实时性能监控等。