《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說明了二級配置模型的結構。
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
4.4.2 commit操作
提交(commit)操作是指使用commit命令提交target config并生成新running config的過程,如圖4-6所示。默認情況下的commit命令是不對配置做任何檢驗的,換句話說,commit操作可能會因為配置語義的問題導致提交失敗。
每次成功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階段的日志通告信息
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操作的配置變更
target config的提交方式既可以是“一意孤行”的,也可以是“盡力而為”的。前文介紹過,使用“一意孤行”這種默認commit方式(commit命令不加任何選項),會將所有變更的配置一并提交上去。如果某條命令驗證失敗,commit操作將會回退,并向配置代理返回一條錯誤消息。
使用“盡力而為”方式(commit best-effort),系統僅會將驗證通過的配置變更提交。當然,如果某條命令驗證失敗,也會向配置代理返回一條錯誤消息,不過commit操作不會回退。用戶可以使用許多commit命令選項,如例4-6所示。
例4-6 commit操作可用選項
commit操作階段,配置管理器會在后臺鎖住配置會話,以防其他配置代理對配置進行變更。路由器會在commit操作結束后,對running config配置會話解鎖。關于commit命令的可用選項后文可能不會一一進行介紹,更多命令配置信息請登錄Cisco.com進行查詢。
例4-7給出了commit操作中comment選項(對配置變更添加描述信息)和label選項(為commit手動分配一個ID)的用法。這兩個選項可使回退操作更加方便 2。
例4-7 使用label和comment選項的commit操作
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操作
2.commit失敗
配置可能會由于配置語義驗證不通過而導致配置提交失敗。如果在默認提交操作中發生提交失敗,target config不會應用到running config上。在IOS XR中,提交失敗的信息可以通過show configuration failed命令查看,如例4-9所示。通過命令輸入可以查看提交失敗的原因及應對辦法(如提示的話)。
例4-9 未定義class sample_class所導致的提交失敗
3.啟動階段的配置失敗
在系統啟動時,用戶可能也會遇到一些配置失敗的情況。尤其是在對路由器的IOS XR軟件版本進行升級或降級操作之后。
可能的配置失敗有以下幾種原因。
語法錯誤(Syntax Errors):語法錯誤是由parser(分析程序)檢驗出來的,會提示CLI命令不支持。這種錯誤通常是由于命令輸入錯誤或是當前的軟件版本支持不支持該命令所導致。
語義錯誤(Semantic Errors):語義錯誤是啟動階段由系統后臺檢驗出來的。例4-9就是語義錯誤的一例。語義錯誤是某個配置組件不能正常工作所導致的,常見原因是配置不一致或配置元素無法調用。
應用錯誤(Apply Errors):當配置通過了語義檢查并確認成為running config的一部分之后,有可能后臺組件無法更新其工作狀態,這種問題被稱為應用錯誤。
用戶可以使用命令show configuration failed startup來查看啟動階段的失敗配置,如例4-10所示。
例4-10 啟動階段的配置失敗
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方式。
總結
以上是生活随笔為你收集整理的《Cisco IOS XR技术精要》一4.4 理解二级提交模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Adobe Illustrator C
- 下一篇: 《敏捷迭代开发:管理者指南》—第2章2.