是什麼NETCONF,什麼是模型驅動(YANG)!

现任明教教主
1粉絲
2024年10月14日
是什麼NETCONF,什麼是模型驅動(YANG)!
好我們準備開始了
準備開始了
我把這個路線給打開
好吧
可以啊
一切都正常
好
我們來開始進入到第三大部分
今天我們至少應該把LightComp全部講完
應該RestComp呢
看情況我覺得可能也差不多吧
好吧
但是主要是
主要是LightComp
要把它完全講完
好吧
好我們來看一下LightComp
好
說一下我們的整個LightDevOps主要的項目
主要項目就是
主要項目是這一個
就這個LightDevOps2023
那麼這是在內部系統的這麼一個項目
我相信大家呢也應該都下載到了
好吧
那麼還有兩個項目啊
另外兩個還有兩個啊
還有兩個呢
就是最後的CICD的兩個項目
每一個是一個項目
也就說一共三個項目
好吧
那麼CICD沒辦法
CICD們呢必須獨立數據
後面你看到就知道了
它是需要獨立項目的
所以說他們這個8.1和8.2是兩個項目
好吧
其餘全部都是這一個項目裏面的
全部全部都扔到這個大項目的DevOps2023裏面
好吧
OK名字就是2023
但是我這東西一直都改了
今天早上還改了的
我需要呢大家
每次這個我上完課
特別是整個大課上完
比如說整個LearnDevOps上完
那麼建議你呢重新去Pull一下
把最新的代碼呢都下載下來
我每一次都改
好吧
每一次都會更新一定的代碼
好吧
都是有變化的
特別今天的話這個NetConf的話
這個這個央碎的這個部分啊是改了的
以前央碎的是我自己Build的鏡像
現在呢換了一個更新版本的央碎的
OK
所以這個是這是至少今天我把這個部分改了的
反正一直都會改吧
我代碼是一直都會改
好吧
每天早上都會對今天晚上的課進行備課
那整個過程就會改一些東西
好吧
好
再看一下
我們講過了SNMP
我們講過了
REST API
我們講過REST API
好吧
SOAP是太老的就不講了
好吧
今天呢我們來介紹這個NetConf
然後呢
可能今天呢也會講到REST Conf
OK
呃
我建議大家
我非常建議大家去看一下
呃
DevNet CCNA那本書我曾經讀過
應該在你們的網盤裏面有
當然了
我建議你們能看原版可能會更好一些
那麼建議呢
看看第12章
第12章裏面呢就跟NetConf啊
REST Conf啊相關的東西
好吧
它叫模型驅動的編程
模型驅動
好吧
那麼其實這個模型呢主要是樣的這個數據結構
模型驅動啊
今天我覺得你要重點的瞭解幾個詞
一個叫NetConf這個詞
一個叫樣這個詞
REST Conf呢
講到的話你也可以瞭解一下
好吧
但是樣其實是最終核心
OK
我說一下NetConf啊
那麼NetConf呢其實呢是
和SNMP不久後就出現了
就SNMP出來之後在這邊啊
這個我說現在給大家說這個話
其實就是這本書裏面的原文
好吧
那麼大概的原文吧
這肯定不是一字一句的對應上啊
那麼原文大概這麼說
就是說SNMP出來之後呢
那麼不久啊就被認爲有問題
它的問題主要是兩個吧
一個呢就是它的這個寫入功能
幾乎算沒有
我們也感受過了
它的寫入就是修改配置這個功能
那麼不是說沒有
但是幾乎也沒有
好吧
寫入功能比較爛
幾乎沒有
幾乎沒有辦法通過SNMP來配置我們的網絡設備
這個很難
還有一個呢
它的這個數據結構用了一個叫MIB的東西
MIB呢
並不是那種經典的結構化語言
它的使用起來它不方便
OK
所以說呢
我們後面呢我們的NETCONF
其實真正用的這個數據結構呢
是XML
是這個XML
OK
那麼RESTCONF呢
可以是XML也可以是JSON
XML也可以是JSON
OK
好吧
好
然後呢它的MIB呢
就被替換成爲一樣的數據模型
後面一會我們會一點一點來講
好吧
就說呢
RESTCONF呢主要的更新
就說呢
首先
它的SNMP的寫入功能就沒有
那麼RESTCONF不是
RESTCONF是功能非常完整的
不僅是讀取
配置
讀取
這些指標信息
配置
都是完整功能
什麼都不缺
什麼都是好的
好吧
而且呢在數據傳輸的時候
用的我們所熟悉的XML
或者說呢JSON這種數據結構
咱們處理產生都比較方便
OK
而且專門爲這個數據結構
那麼設計了一個樣的數據模型
後面我們也會講
好吧
今天呢我們重點是NETCONF
然後呢也會講RESTCONF
其實還缺一個系列的協議
好吧
其實還缺一個系列的協議
那麼
那個我設計了一下
我應該在開源自動化軟件裏面
去把那個部分加上去
以前呢沒太認真講
這一次呢要認真講
但是呢我不準備在這加
我準備在開源自動化軟件裏面加
就是既開頭的一系列協議
那些協議其實可能還更重要一些
就是GRPC啊GMI啊
那一套東西
我們會在開源自動化軟件裏面
再會講那一套東西
好吧
今天呢先把NETCONF RESTCONF先聊了
然後再聊G系列那一套協議
那套協議還挺多的
好吧
而且最近呢我也爲那個G那相關的協議
做過一次進化論
大家也可以提前看看
那麼講的東西呢
跟那個也差不了太多
好吧
那麼這次呢會把它正式拉入我們的政客裏面
好
我非常建議啊
大家去看看書
嗯
好多書還是真的值得你去讀一讀的
好吧
好
NETCONF繼續啊
好
我們看看NETCONF
啊
就是說呢
網絡配置協議的CONF
啊
與網絡設備建立一個安全的管理繪畫
這個沒什麼可說的
好吧
它的TCP的啊
它是SSH
它的它是用SSH加密的
它是用SS加
SSH加密的
它是TCP的
好吧
它的默認端口號呢
是TCP的830號端口
那麼所以說呢建立繪畫也沒啥可說的
好吧
它能幹什麼呢
能夠操縱配置數據
也就是說呢
它能夠配配置我們的網絡設備啊
也可以讀取我們的網絡設備的配置啊
就是可以配我們網絡設備也可以讀網絡設備的配置配置是可以讀的配置是可以改的啊
這是一個好
第二個
獲取運行狀態啊
就說呢
它也能夠去提取你的那些什麼CPU利用率啊
內存利用率啊
各種指標啊
也都可以
LEDCONF都可以
既可以去讀配置
也可以去讀指標
還可以去修改配置都是可以的
指標當然不能修改吧
對吧
CPU利用率應該修改嘛
修改不了
好吧
讀取運行狀態
讀取各種各樣的指標啊
讀取設備配置
修改設備配置都是可以的
好吧
LEDCONF呢
它自己它只是一個傳輸協議而已
好吧
那麼它並沒有決定具體的數據的格式
就是數據的格式呢
並沒有
好吧
OK你也可以這麼理解
就是SNMP呢
其實也就是一個傳輸協議
那麼重點呢
裏面的那些數據的格式主要是由MIB來決定的
主要由MIB來決定的
對吧
那麼LEDCONF呢
也類似LEDCONF真的是可以對比到SNMP的
那麼它也是個傳輸協議
它並沒有決定數據的格式
那麼誰來決定了數據的格式呢
是由這個樣起到了這個作用
它來決定了數據是什麼樣的一個格式
是什麼樣的一個結構
好吧
其實重點要覺得還是這個樣
好吧
LEDCONF都不大重要
因爲這個樣注意啊
這個樣既給LEDCONF提供數據結構
也給RESCONF提供數據結構
也給那個GRPC
GNMI提供數據結構
好吧
所以說呢
他們的這什麼叫做模型驅動
注意啊
你會發現你在讀書的時候
它是模型驅動的
主要就在這個樣
這個數據模型
就是這個樣
這個數據模型所驅動的編程和協議
好吧
所以說呢
核心是這個樣
這個數據模型
它決定了數據的結構
那麼這個數據結構
在傳輸的時候呢
可以是XML的
可以是JSON的
可以用LEDCONF傳
也可以用RESCONF傳
也可以用GRPC傳
你理解我的意思嗎
GRPC也有
GRPC還有它的這個數據結構
好吧
GRPC有谷歌他們家的一個私有的數據結構
好吧
也在這邊啊
就是他們的核心是這個樣的數據模型
這個所謂的模型驅動
就是一樣的數據模型驅動的
好吧
那麼就是數據模型是一樣的
數據結構是一樣的
那麼至於這個數據呢
是呈現爲XML的這種形式
還是JSON這種形式
還是谷歌他們家的那個私有的形式
這個不重要
到底你是用LEDCONF傳
還是用RESCONF的HTTP傳
還是用GRPC來傳
這個也不重要
好吧
我可能上來說這個說不定會暈
這最重要的就是核心的
樣這個數據模型
模型驅動的
好吧
這個最重要的模型驅動的
是樣數據模型驅動的
那它可以表現成爲XML的數據
那麼用LEDCONF傳
可以表現成爲JSON的數據
用RESCONF傳
也可以表現成爲這個GRPC
谷歌他們家的一個私有的數據結構
用GRPC傳也可以
所以說呢
他們都是外在表現形式
那麼重要的是模型驅動的
樣數據模型驅動的
所以說樣有多重要
你應該明白了
好吧
好
什麼叫做數據
這樣的數據
就是建模
模型語言
你看樣是一個什麼東西呢
是一個數據建模語言
什麼叫做數據建模
它爲LEDCONF數據建模
當然不一定
就是說它做數據建模
它這個建了模之後
好吧
既LEDCONF也可以用
RESCONF也可以用
GRPC也可以用
好吧
這就不重要
反正我是決定這個建模用的
好
它提供了一種標準的可編程的方式
來書寫配置數據
收集設備的統計和運行數據
就說呢
有了樣子後
那麼數據就標準化了
標準化了
而且可編程了
標準化就是說
注意啊
這個LEDCONF
RESCONF
還有這個樣
都是標準協議
這是標準的
好吧
這是標準的
所以說呢
這樣的話
大家有一個標準的一個建模的一個語言
好吧
然後呢
它可以用樣來產生具體的數據
XML數據
Jason的數據都可以
好吧
它是建模的
但至於表現成爲什麼樣的一種數據
XML數據
Jason數據
這無所謂
你們決定就可以了
好吧
好
可能很多人不知道說什麼叫建模語言
我覺得我給你講一下
數據模型是一種溢於理解和達成一致的方法
用於描述建模
往往就是說
爲什麼東西建模
給什麼東西建個模
好吧
我們舉個最簡單的例子
給人類給人建個模
好吧
就是我怎麼來描述這個人
我給人建個模
那麼最簡單的給人建個模的話
首先呢
你應該去通過幾個方面來描述一個人呢
性別男的女的當然吧
LGBT可能就有點麻煩了
反正我覺得差不多就男的女的吧
好吧
我覺得差不多就倆男的女的就差不多了啊
反正中國覺得男女就行了啊
然後呢
還有高度
人有高啊
有矮對吧
體重
瘦和胖
頭髮顏色顏色
好吧
眼睛顏色等等等等
當然粗獷的大概就這個意思了
好吧
當然你還可以繼續的更深度的去再建模
把人類的每個細節都描述清楚
但是意思吧
就這個意思
就說哎
比如說我要對人類建個模
那大概就是性別呀
體重啊
頭髮顏色呀
眼睛顏色等等這些
基本上有了這些數據之後
基本上哎
你就可以描述這個人啊
就他什麼性別啊
身高什麼
基本上你大概也就會有一定的印象
這個人大概是一個什麼樣的情況
好吧
OK看一下啊
這就是樣的數據模型
比如說list
又是這個類型
我們後面也會講list的話
就是user的話
表示就是
用戶吧
對吧
list的user的話
就是有很多用戶啊
不是他一個啊
用戶可多了
好吧
那麼你怎麼去描述一個用戶呢
那麼大概應該會有名字
他叫什麼名字啊
他的一個唯一ID
他的一個全名
他的用戶名和全名
好吧
當然了
你還可以說有一個巴拉巴拉愛電話郵件等等
反正你都建模吧
你可以自己去設計
好吧
你可以按照你自己的想法去設計
OK
所以這就是樣
這個數據建模語言的
這麼一個格式
當然你可以設計的
你可以去創建你自己的一樣
好吧
OK
但一般情況下呢
我們可能不會自己創建
一般不會也可以
好吧
一般不會自己去創建一個樣
所以一般我們確實不會做這個事情的
OK
但是其實也可以
但一般我們就說啊
思科給我們提供了一樣
華爲給我們提供了一樣
OK
那我們基本上就mib一樣
那我們一般不會自己創建mib吧
你說能不能自己創建一個呢
也許也可以
我沒有做過
好吧
就說mib嘛
一般都是廠商給我們提供
我們用就可以了
你說我們自己能不能創建樣絕對可以
mib我覺得也可以
反正我沒有玩過
好吧
樣肯定是可以的
好吧
OK
這就是樣的建模語言
它就長
它的格式就這樣
它是怎麼建模呢
爲用戶建模
那麼用戶呢
應該有名字
用戶應該有AID
用戶應該有全名
然後關鍵key是LAM
什麼意思呢
就是它的list嘛
就是很多很多用戶
那麼LAM是key
也就是說呢
名字是唯一的
其實按理說的話
應該UID唯一會比較合理一些
是吧
當然了
我這個key呢
就是LAM是唯一的
也就是說呢
你可以創建很多個用戶
你看很多個用戶
好吧
但是呢
他們的LAM是key
那麼LAM就必須是唯一的
key是必須要提供的
而且key是必須唯一的
理解嗎
OK好
你看這是一個user
這是一個user
OK
那麼這是什麼結構呢
這是xml的數據
這是建模語言
注意
這是建模
樣是一個建模語言
他建了一個模
說用戶是一個list
就可以有很多用戶
然後呢
用戶呢
可以有名字
可以有VID
可以有全名
那麼LAM是建
建是必須唯一的
好吧
那好
緊接着呢
我們就產生了
就說
那好
那麼我們就來
那既然你都建了模了
那麼我們就產生一個一個的具體的實例的數據
那麼比如說啊
這是一個用戶
他的VID
他的全名
這是一個用戶
他的VID的全名
那麼形式呢
可以是xml的
沒問題
好吧
當然了
letconf呢
主要是xml的
letconf不叫主要
letconf就得是xml的
那麼比如說後面我們的resconf就可以是json的
json你也可以想想嘛
json也沒有問題嘛
json不就是個類似於像字典的東西嗎
是吧
就說了一樣是一個
你可以認爲我們再做個類比
一樣就是個類
然後呢
xml呢
就是由這個類產生的
嵌入了具體的數據
所產生的具體的實例
你一定要把這個搞清楚了
好吧
我開始最開始學的時候
我認爲xml啊
我就會給學生說啊
這這就是一樣的數據
這不是一樣的數據
好吧
這是xml的數據
這是xml的左邊是一樣
它建模
好吧
右面是具體的數據
xml的也行
json的也行
甚至呢
後面那個grcc的那個那個格式
那谷歌他們自己家那個格式也行
表現成爲什麼
無所謂
反而我們是建模的
ok
所以說你一定要了解
我在說明啊
就是樣式整個叫模型驅動的編程的核心
他對任何一個比如說他可以接口建模呀
路由表建模呀
cpu建個模呀
對吧
他他他建模可多了
就是把把你整個網絡設備的各種各樣的東西都給你建模啊
比如接口接口應該啊
接口類型啊
接口號啊
接口下單到下單接口IP地址啊
接口怎麼雙公賣雙公
把他就給你給建模好吧
那麼思科呢
可能有思科的樣
他思科的建了
因爲思科的產品可能跟華爲的產品他有點不一樣
但當然的這就是反正的地方啊
那他建一個模啊
華爲建一個模
當然也有公有的樣
也有公開的ok
後面我們會說一下openconfig
他也算是一個公開的一個樣
那這樣的話
大家也都可以用統一的這個數據建模的這麼一個模型
大概理解什麼意思了吧
一樣是整個的核心
他對數據進行建模
用戶建模
接口建模
CPU建模
反正巴拉巴拉反正網絡和各種各樣的東西吧
這不都可以建模嗎
對吧
ok
建好模之後呢
他表現成爲什麼樣的數據
這個不重要
好吧
xml也行
netconf呢
得是xml的
好吧
那個resconf呢
json也行
xml也行
好吧
jrcc呢
就jrcc在谷歌那個那個數據形式也行
這不重要
那是表現形式
但是呢
這個一樣是一樣的
大家都用的樣
不管你是xml
是json
還是谷歌那個數據格式
不管你用netconf傳輸
而netconf是tcp的830端口ssh加密
還是用resconf就是傳輸就是http
用sso加密
就是https傳輸也行
好吧
那麼用那個jrcc
jrcc有自己的協議
也行
這都不重要
好吧
但是我們樣是整個的所謂的模型驅動的核心
懂了吧
我相信這個應該這這這次應該怎麼跟你說明白了的
好吧
一樣數據建模語言
它就是類似於這樣的一個代碼
好吧
他用這個來建模
一般我們不太需要搞
我們一般不玩這個不不創建什麼
一般來的廠商做好了
我們就調用它
然後呢
我們填上具體的數據就變成了xml的或者json的
然後呢
我們再用那些什麼netconf
resconf達到網絡設備上面去就齊活
懂吧
OK
他他比較牛的地方在於呢
他可以通過這東西配網絡設備
他也可以通過中心的讀取網絡設備配置
他還可以通過中心的讀取網絡設備的運行狀態
CPU連連連連連都可以
都是一樣來建的模
OK
可以啊
好
當然又回到我們現在呢
講的當然核心是一樣核心是一樣
好吧
那麼他有幾種傳輸協議
那麼現在呢
先講netconf這個傳輸協議
那麼再講resconf這個協議
再講grpc這個協議
我個人認爲啊
netconf
用的不那麼多
好吧
我覺得他也挺麻煩的
好吧
我其實不愛用的東西
但是呢
他是最最原始的一個協議
好吧
那麼我更推薦
那麼netconf網上我一直不推薦
那麼以前呢
可能上一輪課我更推薦resconf
我覺得resconf不錯
現在其實更推薦
對啊
現在其實可能更推薦是G系列那個grpc上面一號
好吧
因爲據我的跟那些大廠那些哥們聊
他們現在幾乎都用grpc那套
谷歌那套東西
好吧
ok
用用那套用的比較多
我看用netconf和resconf用的不那麼多
好吧
反正netconf算是這幾個協議裏面最不大推薦的
當然了
我們的課呢
是一點一點講
大家都應該瞭解
因爲很多
比如說像華爲啊
他的那些配網絡設備
很多時候還是resconf和netconf的
好吧
ok
好
我們來介紹
雖然說這個我都給你說明白了
但是呢
我們還是一點一點的講
我們來看netconf
netconf首先
他傳輸協議是tcp是830端口是ssh加密的
他就是ssh加密的
好吧
好
然後呢
這是他裏邊傳輸的數據
這是裏邊他傳輸的數據
ok
好
他其實呢
就是netconf rpc看到嗎
就是rpc
rpc是什麼東西呢
rpc
rpc就是一個就是一個遠程調用
好吧
ok
那我我我還記得我開始說的嗎
resconf呢
就是restful restful改良後的
那種restful這個方法論
那麼按照restful這種方法論設計的API叫rest API
好吧
如果說你不按照這個restful這個方法論所設計的API
那你就叫rpc唄
野路子叫rpc
好吧
那所以rpc呢
大家也也不陌生
好吧
rpc反正就是反正就是restful的那個設計的
那那就是rest API
那不是他的
那你也不是也是個遠程調用遠程通訊嗎
對吧
那就叫rpc就得了
好吧
那麼rpc也就是沒有什麼路子
就是野路子
ok
好
你看你看那外層是個rpc
好
然後呢
再看裏面
這個地方呢
它可以是有有主要有主要有三種
一個叫edit config
你看啊
你看這個地方標籤
最外層的標籤rpc開rpc閉
然後呢
再往裏面是edit config開edit config閉
那麼這個標籤呢
主要有三種
注意其實也不止
但主要就這三種
一個叫edit config很好理解
改配置
還有一個呢
就get config去得到配置
還有一個叫get就得到指標
CPU內存就那些東西
好吧
最經典的三個指標
ok
這是一個好
然後緊接着呢
好
比如說edit config
這個地方有個target
你改你改什麼
改running config
那就直接修改了
運行配置
其實你還其實還可以改到candidate config
就是那個類似於startup config
startup config這個東西
也可以改
好吧
但一般我們改running config
好
然後呢
下面就是config
config裏面呢
就是你看這個部分
就這個native這塊
開native decrypt
這個就是一個由樣的數據模型
所產生的xml的數據
由樣的數據模型
實例化產生的一個xml的數據
xml數據就是由這個config裏面這一塊
就包含在config這個裏面這一塊
就是由樣數據模型
填入數據之後
產生的具體的xml的數據了
懂吧
OK
那麼外面裏面就是這個就是這個數據
xml的數據
外面是tcp傳輸的830號端口
ssh加密的
也就叫做letconfig了
好吧
OK
這就是letconfig的一個完整的一個這麼一個封裝
OK
大概有點印象了
好吧
xml的數據是用樣的數據模型所產生的具體的xml的數據
所以xml不是樣
你要搞清楚
開始我也沒搞清楚
xml不是樣
xml是用樣這個數據模型填入具體數據之後
產生的實例數據的實例
好吧
這纔是一樣
以語言
一般我們也不寫
但是一般都是用廠商提供的
當然你也是可以寫的
在後面我們在講nso的時候
我也簡單會給你們說說
也能寫
好吧
也能寫
好吧
好
這個圖就比較清楚了
看啊
一樣的數據模型
OK
它對真實的數據
比如接口的數據
比如說cpu的這些數據都給建模
所有的資源都給建模
只是說
可能華爲的那個模型
可能跟思科的模型
那它不大一樣
但是也有公有的模型
好吧
反正就要建模建模各種什麼都建模
建成一樣的模型
OK
然後它傳的時候呢
可以是xml
由netcomp傳
json或者xml
由rescomp傳
那麼由grpc
它自己的協議
由grpc來傳
谷歌rpc
OK
表現形式
數據格式不一樣
傳輸協議也不一樣
但是核心是一樣的數據模型
可以理解
OK
關於grpc呢
我們後面會細講
好吧
不在netcomp裏面講
在開源自動化軟件裏面講
因爲開源自動化軟件裏面呢
我講幾個grpc的工具
好吧
所以在開源自動化軟件裏面講grpc
這應該是去年年初的時候
我自己去研究的一些
grpc我研究了很多
進化論我做了很多研究
好吧
這個錄像的應該是對grpc的一個
更加底層的一個開發的研究
我開發了一個grp的server
開發了一個grp的client
然後實驗了一個通訊
但是可能不一定有多大的用處
好吧
但是呢
如果說你想了解grpc更加底層的工作原理的話
也想開發一個grp的client和grp的server的話
可以瞭解一下
好吧
好
那這是最基本的介紹
下面呢
我們來介紹yansuite
