· 假设非模块化程序的某一部分出现故障 。例如 , 一个任务的内存发生泄漏 , 或有一个错误使它对另外一个任务的代码或数据结构进行写操作 。这些类型的错误将很轻易地使其它任务失败 , 最终导致整个操作系统崩溃 。恢复这类故障的唯一途径是重新启动整个系统 。
· 这个单一的非模块化程序需要在实时的方式下运行 , 以支持包转发的需求 。最初 , 这些操作系统将包转发作为整个系统中优先权最高的任务 。这意味着 , 假如路由器的转发业务非常繁忙时 , 将没有足够的CPU周期留给系统用来完成有关的对等更新 , 问候时间响应 , 或路由表计算 。这样便为网络带来不稳定性 , 因为路由和控制任务将不能及时地完成 , 从而导致路由邻接和线路协议的丢失 。
· 整个的软件结构将变得非常巨大 , 从而使其失去了灵活性 , 可伸缩性 , 和稳定性 。修改将变得非常困难 , 因为增加一个新功能可能会影响整个代码库 。例如 , 是否包含了所有与实现可靠实施有关的部分?所含的代码是否必要 , 是否会含有导致系统崩溃的程序错误?另外 , 代码的长度与复杂程度将决定厂家修正敏感的互联网络问题和增加一些重要的新功能的速度 。最后 , 测试一个非模块化的代码库是非常困难的 。没有任何一个实验室能够真正模拟出全球Internet网络上的真实环境 , 因此 , 测试只是针对巨型代码库的需要而更为复杂一些 , 然后 , 对于程序的子集进行隔离测试 。这个挑战可通过任何精心设计的测试进程来解决 。
随着我们步入Internet的黄金时代 , 基于实时的 , 非结构化代码库的传统路由软件结构在支持快速出现的新功能和Internet核心网所需的稳定运行上 , 都显得力不从心 。现在 , 在高性能光接口上实时地转发业务要求配置基于硬件的转发引擎 。因此 , 下一代的路由软件不再需要对包转发和高级系统功能之间的资源竞争进行处理 。基于硬件的转发引擎的效率 , 答应路由软件运行在一个能够提供更高的可靠性 , 可伸缩性 , 有效性 , 和可为敏感的重要任务应用提供高性能的普通操作系统环境之中 。
源于FreeBSD的JUNOS
FreeBSD为开发支持高速增长的Internet下一代路由体系提供了基础 。FreeBSD是为在普通的英特尔处理器上运行而非凡设计的 。它非常稳定 , 并继续了那些从二十世纪七十年代初期便开始工作在Internet上的早期产品的成熟的网络功能 , 它包含了一个非常优秀的代码库以支持内核 , 文件系统 , 用户计费和安全性 。
但是 , Juniper网络公司加强并重写了一部分FreeBSD , 因为它最初是被设计运行在主机系统上的 , 只支持几种有限的网络接口 。而另一方面 , 路由器具有更多种类的物理接口和子接口 , 并具有一个更大的路由表 。另外 , 大部分的网络代码被去除或以行业级的工具来代替 , 以支持来自Internet的巨大压力 。
Juniper网络公司的工程队伍具有多年的Internet路由经验 , 并且在不受传统路由体系约束的情况下 , 从最底层开始开发和设计路由体系 。这就意味着 , 他们可以优化其数据结构 , 计划大量的虚电路 , 并对巨型路由表的存储及查询进行设计 。他们可以自由地使用最新开发出的支持流量工程和不同服务等级的技术 , 着力设计合适的用户界面和强有力的策略定义语言 。
Juniper网络公司的软件体系
Juniper网络公司软件体系的最基础的设计思路是将控制功能与包转发功能分离 。路由引擎治理系统的路由和控制功能 , 并运行从FreeBSD得到的内核 。包转发引擎在硬件上运行 , 专门用于包转发 。这两相功能的完全分离 , 使路由器可以提供高性能和高可靠性的操作系统 。
推荐阅读
- 小议ISDN路由器
- 图 故障分析:不能路由的路由表
- 7750业务路由器特性
- 如何给路由器设置用户?
- 如何实现路由器线路负载均衡?
- 图解 软件路由器coyote linux安装使用指南
- SNMP管理框架及其在Cisco路由器上的实现
- 在思科路由器上保存超大的配置文件
- 路由器的概念、功能及发展趋势
- 路由器:性能的较量