iT邦幫忙

1

網路自動化 (Network Automation) 的一些想法

  • 分享至 

  • xImage
  •  

前言

這篇文章比較像我個人心得,不會有技術分享的部份。我會跟大家分享一些網路自動化概念。

網路自動化的標準架構

理論上也許會有,但實務上想告訴大家目前應該沒有統一的標準或實作法。我們可以想一想自家管理的「網路」跟別人家的「網路」架構一樣嗎?即使採用相似的CLOS或3-tier架構,使用的設備廠牌也會有所不同。再來每個網管部門對於實施自動化偏好的技術或工具也不相同;所以現階段網路自動化還是處於每間公司「我說的算」的情況。舉例來說:

  • 我前公司使用Python+Jenkins把建立Checkpoint firewall policy的工作給自動化。寫程式的同事離職後就沒人維護了;因為其他業務也沒有自動化的急迫性,所以自動化的應用也僅限於此。

  • 一般提到自動化,大家第一個反應一般是Ansible,偏偏我老板對Ansible感冒;所以我們用Nornir加上自已開發幾隻Python程式來處理特定問題。

重要:找到一套符合自已部門的網路自動化(架構|方法|程式|軟體)

Intent-Based Networking, IBN

往下談之前,我們來聊聊IBN;以往我們日常的工作會是這個樣子:

c3550(config)#int fa0/2
c3550(config-if)#switchport trunk encapsulation dot1q
c3550(config-if)#switchport mode trunk
c3550(config-if)#switchport trunk allowed vlan remove 5-10,12
c3550(config-if)#switchport trunk allowed vlan add 7
c3550(config-if)#end

如果每天執行一次或二次或許不會覺得厭煩## ;但如果每天有十張類似的需求單,這就對工程師造成很大的負擔,並更容易發生人為的錯誤 (Human error)。Intent-Based Networking的概念是我們預先定義好網路的「狀態」,比如:

  • Enable port-secuirity on office switch(uplink除外)。
  • 交換機埠的敘述必須合規特定格式。

接下來由「控制器」負責和網路設備溝通,把你定義的「狀態」發佈到你的網路上。而「控制器」可以是:

  • 函式庫:如Python library Netmiko, Netplam, Capirca, Scrapli。
  • 框架:如Nornir和Ansible。
  • 套裝軟體:如Cisco ACI和Juniper Apstra。

最後我們來看上述的例子演進成:

  • All office switch enable port-security,server farm switch則沒有。
  • 有工程師的commit失敗了,原因是交換機埠的敘述不合規必須更正。

從一萬公尺高空看網路自動化架構

我們對IBN有一些概念之後,我們來看看網路自動化的HLD(High-Level Design)。注意!這張圖只是協助大家了解一般的概念,並不是所有的自動化都是這樣實作的。

  1. 我們會維護一個SSOT(Single Source of Truth)系統來定義網路的「狀態」。目前最熱門的套件是Netbox
  2. 我們會對「控制器」的「API」發出命令,最常見的協定為Rest,JSON-RPC,XML-RPC。
  3. 「控制器」從SSOT取得Network status。
  4. 「控制器」代替我們去存取設備。因為設備支援的協定不同,所以「控制器」可以用SSH, gNMI, netCONF等等去連結設備。
  5. 設備回傳資料給「控制器」,一般為JSON|YAML|XML三種格式。
  6. 「控制器」回傳給使用者,這邊控制器可以整合諸如新世代的網管工具。

https://ithelp.ithome.com.tw/upload/images/20230809/20152488oSvdVFo58I.jpg

結論

謝謝大家耐心讀完,這篇文章只能代表我個人的觀點和解讀。如果你有不同的實作方式,很歡迎加入討論;畢竟有不同的觀點也能提點我更進一步的思考。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言