《Cisco IOS XR技术精要》一4.4 理解二级提交模型

简介:

本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第4章,第4.4节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.4 理解二级提交模型

Cisco IOS XR技术精要
Cisco IOS XR中使用了二级提交模型的思想。在单级提交模型中,输入到路由器中的每条命令都会立刻生效。这种配置模型存在一些弊端,首先是用户无法对输入的命令进行审核确认,如果不小心输入了错误的命令,错误命令将会当即生效,造成业务影响。其次是当用户使用脚本或整段配置“刷”配置时,可能大多数的配置都是重复或无用的配置,而且,重复配置可能会导致系统处于不稳定的状态。

在二级提交模型中。在一级配置阶段,用户输入的配置放入target config中,而不会影响路由器的running config。在这一阶段,系统可以检查命令的语法,用户可以检验配置的命令是否正确,从而保证target config的正确性。在二级配置阶段(又叫提交[commit]阶段)中,所有target config将被提交,合并成为路由器running config的一部分。

二级提交进程有助于应用大量配置;并帮助完成大量配置生效后的后续操作如命令验证、检查点、日志等。二级提交进程减少了进程间通信(IPC)的负载,从而提高了系统性能。

图4-5说明了二级配置模型的结构。


2ad94595e1ac8f9e9c7a307cb823937480bb8a2c

4.4.1 生成target config

实际上,running config中的配置是用户输入的target config多次累积下来的结果。换句话说,用户想要对当前配置做修改所执行的命令会存放在target config中。每个用户都有自己唯一的target config,对其他用户不可见。不过,基于每个用户的target config实例生成的路由器running config,对每个用户都是可见的。

用户可以在不影响当前路由器配置的条件下,查看或修改target config,或是将target config以文件形式备份出来1,IOS XR中的running config是无法直接编辑的。所有对running config的配置变更都必须将target config提交之后才能生效。

当用户进入配置模式之后,系统会隐式地生成一个唯一的target config。这个target config不是running config的一个副本,而是在running config基础上用户新配置的、仍未提交的配置。用户可以通过show configuration命令查看当前会话的target config。还可以使用show configuration merge命令查看当前会话的target config与running config合并后的结果。

例4-3给出了生成target config所必须的步骤。

例4-3 生成target config


0f892a217506649fbb1785df7ea15f73f9b4e5c4

4.4.2 commit操作

提交(commit)操作是指使用commit命令提交target config并生成新running config的过程,如图4-6所示。默认情况下的commit命令是不对配置做任何检验的,换句话说,commit操作可能会因为配置语义的问题导致提交失败。


5fd288e0b29baea02b146687edb8bad7ff6118c5

每次成功commit操作将触发以下动作。

1.执行commit之前,首先会锁住配置会话。

2.将配置变更保存到commit变更数据库中,创建回退点。

3.向配置历史中添加commit变更条目。

4.使用Syslog生成配置变更通告。

5.最后将target config合并到running config中,commit操作完成。

6.解锁配置会话。

每次输入并提交新配置后,Cisco IOS XR会向配置历史中添加一条commit变更条目,并使用Syslog生成一条配置变更通告,如例4-4所示。

例4-4 Commit阶段的日志通告信息


5a617a4e7cdbc60acaf04a0d70f718aa91c6328a

commit操作默认会分配一份commit变更ID,允许用户基于此ID查看配置变更细节。例4-4中的1000000057就是最后一次配置commit所生成的commit变更ID。通过这一ID,可以查看某次commit操作中所执行的配置变更。

例4-5中,使用命令show configuration commit changes < commit-change-id >基于ID查看例4-4中commit的配置变更。

例4-5 查看例4-4中commit操作的配置变更


f2f882b6c86401710ee6af0f334cd7304fdde1cf

target config的提交方式既可以是“一意孤行”的,也可以是“尽力而为”的。前文介绍过,使用“一意孤行”这种默认commit方式(commit命令不加任何选项),会将所有变更的配置一并提交上去。如果某条命令验证失败,commit操作将会回退,并向配置代理返回一条错误消息。

使用“尽力而为”方式(commit best-effort),系统仅会将验证通过的配置变更提交。当然,如果某条命令验证失败,也会向配置代理返回一条错误消息,不过commit操作不会回退。用户可以使用许多commit命令选项,如例4-6所示。

例4-6 commit操作可用选项


e9d0a37d016eac0c064e7bfc42e944f200ca4d27

commit操作阶段,配置管理器会在后台锁住配置会话,以防其他配置代理对配置进行变更。路由器会在commit操作结束后,对running config配置会话解锁。关于commit命令的可用选项后文可能不会一一进行介绍,更多命令配置信息请登录Cisco.com进行查询。

例4-7给出了commit操作中comment选项(对配置变更添加描述信息)和label选项(为commit手动分配一个ID)的用法。这两个选项可使回退操作更加方便 2。

例4-7 使用label和comment选项的commit操作


dfbf24bd257969c8cf33b16ce81f612cdc8effcf

1.commit操作confirmed选项
命令commit confirmed可使target config试验性地提交,而不是作为永久配置。用户可以在commit confirmed后添加一个回退计时器,在配置提交一段时间后,使系统配置自动回退到提交前的系统状态。也可以在回退计时器到期之前,再次输入commit confirmed,将配置提交成永久配置。配置模式支持confirmed提交操作,回退计时器单位可以是秒或分钟。admin模式下不支持confirmed提交。

在例4-8中,用户将系统主机名临时从R1修改成CRS1-3,持续时间30秒。30秒后,配置将自动回退到先前的主机名R1。

例4-8 使用confirmed选项的commit操作


8ca346b46b0a50ec9025eabdd219c0bd4bff47ab

2.commit失败
配置可能会由于配置语义验证不通过而导致配置提交失败。如果在默认提交操作中发生提交失败,target config不会应用到running config上。在IOS XR中,提交失败的信息可以通过show configuration failed命令查看,如例4-9所示。通过命令输入可以查看提交失败的原因及应对办法(如提示的话)。

例4-9 未定义class sample_class所导致的提交失败


eb3a61c3fb6f895ad1544f9f72fa8cae1de36f6c

3.启动阶段的配置失败
在系统启动时,用户可能也会遇到一些配置失败的情况。尤其是在对路由器的IOS XR软件版本进行升级或降级操作之后。

可能的配置失败有以下几种原因。

语法错误(Syntax Errors):语法错误是由parser(分析程序)检验出来的,会提示CLI命令不支持。这种错误通常是由于命令输入错误或是当前的软件版本支持不支持该命令所导致。
语义错误(Semantic Errors):语义错误是启动阶段由系统后台检验出来的。例4-9就是语义错误的一例。语义错误是某个配置组件不能正常工作所导致的,常见原因是配置不一致或配置元素无法调用。
应用错误(Apply Errors):当配置通过了语义检查并确认成为running config的一部分之后,有可能后台组件无法更新其工作状态,这种问题被称为应用错误。
用户可以使用命令show configuration failed startup来查看启动阶段的失败配置,如例4-10所示。

例4-10 启动阶段的配置失败


6919ff7c887205c702060b7afcd86ef270cfbbc8

1译者注:备份target config的命令为save configuration device:directory-path,或showconfiguration | file filename。
2译者注:IOS XR中有一种向配置文件中添加注释(comment)的方法,用法是在配置之前先输入一行以感叹号!开头的注释信息,例如:
RP/0/RP0/CPU0:CRS(config)#!this is a test configuration-20130512-by-powerfoo
RP/0/RP0/CPU0:CRS(config)#hostname TEST
RP/0/RP0/CPU0:CRS(config)#commit
提交配置后,命令show run可以看到添加的注释信息。尽管注释需要commit才能生效,但这个注释信息是不会显示在show configuration commit list detail命令中的,请读者区分这个“配置注释”与本节介绍的“commit注释”的区别。此外,删除配置注释的命令为clear comment,而不是传统的no方式。

相关文章
|
2月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
2月前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术深度对比
【10月更文挑战第18天】 在智能手机操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两种系统的技术特点、优势以及它们之间的主要差异,帮助读者更好地理解这两个平台的独特之处。
59 0
|
1月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
29 2
|
1月前
|
存储 安全 算法
深入探索iOS系统安全机制:保护用户隐私的前沿技术
本文旨在探讨苹果公司在其广受欢迎的iOS操作系统中实施的先进安全措施,这些措施如何共同作用以保护用户的隐私和数据安全。我们将深入了解iOS的安全架构,包括其硬件和软件层面的创新,以及苹果如何通过持续的软件更新来应对新兴的安全威胁。此外,我们还将讨论iOS系统中的一些关键安全功能,如Face ID、加密技术和沙箱环境,以及它们如何帮助防止未经授权的访问和数据泄露。
|
1月前
|
监控 iOS开发 开发者
iOS性能优化:深入函数调用栈与符号化技术
在iOS开发中,函数调用栈是理解程序执行流程和优化性能的关键。当应用出现性能问题或崩溃时,能够准确地读取和解析调用栈信息对于快速定位问题至关重要。本文将探讨iOS中的函数调用栈,以及如何通过符号化技术进行有效的性能调优。
32 3
|
1月前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
99 2
|
1月前
|
安全 搜索推荐 Android开发
揭秘iOS与安卓系统的差异:一场技术与哲学的较量
在智能手机的世界里,iOS和Android无疑是两大巨头,它们不仅定义了操作系统的标准,也深刻影响了全球数亿用户的日常生活。本文旨在探讨这两个平台在设计理念、用户体验、生态系统及安全性等方面的本质区别,揭示它们背后的技术哲学和市场策略。通过对比分析,我们将发现,选择iOS或Android,不仅仅是选择一个操作系统,更是选择了一种生活方式和技术信仰。
|
2月前
|
安全 Android开发 iOS开发
iOS与安卓:技术生态的双雄争霸
在当今数字化时代,智能手机操作系统的竞争愈发激烈。iOS和安卓作为两大主流平台,各自拥有独特的技术优势和市场地位。本文将从技术架构、用户体验、安全性以及开发者支持四个方面,深入探讨iOS与安卓之间的差异,并分析它们如何塑造了今天的移动技术生态。无论是追求极致体验的苹果用户,还是享受开放自由的安卓粉丝,了解这两大系统的内在逻辑对于把握未来趋势至关重要。
|
2月前
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
2月前
|
安全 Android开发 iOS开发
安卓vs iOS:探索两种操作系统的独特魅力与技术深度###
【10月更文挑战第16天】 本文旨在深入浅出地探讨安卓(Android)与iOS这两种主流移动操作系统的特色、优势及背后的技术理念。通过对比分析,揭示它们各自如何塑造了移动互联网的生态,并为用户提供丰富多彩的智能体验。无论您是科技爱好者还是普通用户,都能从这篇文章中感受到技术创新带来的无限可能。 ###
58 2