扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在上篇文章中,我向您简要介绍了JUNOS软件架构,告诉您这个软件的内核基于FreeBSD。为了将FreeBSD内核转变成JUNOS内核,瞻博网络开发人员逐行研究FreeBSD代码,删除了所有不需要的组件和驱动程序,并重写了某些代码来满足瞻博网络内部的风格要求,同时根据需要对代码进行了注释,然后添加了瞻博网络特定的“元素”。
经过这个处理流程(当瞻博网络决定将FreeBSD更新添加到JUNOS时,偶尔会重复这个过程),JUNOS内核虽然基于FreeBSD,但却不再是FreeBSD,而是现在的JUNOS内核,与瞻博网络所有的其他内部代码一样遵从相同的管理和变化控制流程。
随后,这个内核将作为基础和通用组件用于构建JUNOS,进而引发出JUNOS另一个重要特征:模块化操作系统。
为什么说模块性非常重要
JUNOS将不同的功能组件分隔在不同模块中,称为daemon。例如,运行所有路由协议的路由协议Daemon (RPD);控制所有接口的设备控制Daemon (DCD);控制机箱硬件的机箱Daemon及管理Demon等。
每个模块都运行在受保护的专用内存中,不能使用属于其他模块的内存,从而防止了各种内存泛滥和其他类似错误。内核负责监管所有活动,管理模块间的通信以及模块与物理系统之间的通信。
此类模块化架构的优势在于,如果软件错误或某些网络事件导致系统出现功能问题,问题通常只限于支持此类功能的模块,不会导致整个系统故障中断。因此,当软件错误、严重的配置错误或针对OSPF的恶意协议攻击造成RPD无法正常运行时,系统的其他组件仍可正常运行,您仍可接入产品纠正问题。
同样,您只需修复单一模块的故障即可,无需关闭整个系统并替换整个OS,您可只替换并重启故障模块,无需重启整个系统。
您也可通过添加新模块向操作系统中添加重要的新功能组件,从而大幅度减少新特性开发期间必须开展的回归测试次数。
当您为模块外通信运行带边界的代码集和既定接口时,模块性也至关重要,它支持少数的工程师团队轻松地管理并熟悉代码。当需要实施变化时,工程师将能够全面了解变化的影响;当发现问题时,工程师能够快速找到并修复问题。
所有这些特征都意味着模块化操作系统更可靠、更稳定。
IOS与模块性
思科IOS在创建时考虑到了不同的实际网络环境,因此不具备模块性。但我们有理由相信思科将会推出模块化操作系统以供大多数路由器广泛使用——无论是称为IOS还是其他名称。
IOS-XR便是其中一例。这款操作系统是完全模块化的软件,提供众多与JUNOS相似的功能。然而,IOS-XR的问题在于它仅局限于CRS和GSR路由器,不支持规模更小的平台。
随后思科推出了ION,但这个模块化IOS同样仅局限于某些平台。
我曾询问过思科的Russ White他们是否计划推出模块化IOS。他回答说:“问题不在于‘我们是否计划推出其他的IOS模块化方案,而是在于IOS开发人员会从现有的5,968个方案中选择哪一个?’”
我觉得他的回答非常巧妙;他的意思是思科无疑准备推出模块化IOS,只是现在尚未选出最合适的方案。考虑到运行IOS的平台及IOS版本的多样化,这将是一项极具挑战性的工作。与其说迁移到“模块化OS”是从单片化到模块化的跳跃,不如说这是一次进化历程。
JUNOS版本模式
IOS的多样性是一直困扰思科系统公司和思科用户的长期问题,而JUNOS却采用了线性版本:对于任何版本,都为所有路由平台(E系列和Netscreen除外,这些在JUNOS开发之后面市的产品很难兼容JUNOS)提供单一映像,同时不提供单独的特性包。如果您需要IPv6、MPLS或IP组播功能,一个映像便可满足您的全部需求。
瞻博网络还严格遵守不向现有版本中添加新特性的原则,只通过新版本提供新特性。
这一“为所有平台提供单一映像、通过单一映像提供所有特性,以及不在生产版本中开发新特性”的原则大幅简化了内部代码管理和新特性回归测试工作,同时还允许瞻博网络客户实施更安全、更简单的升级。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。