
Za povezane članke, ki sem jih dal v skupno rabo o omrežni avtomatizaciji, glejte katalog »NetDevOps from Scratch«
V zadnjih letih se je z nenehnim razvojem področja globalnega računalništva v oblaku in nenehne rasti poslovanja še naprej razvijala tudi omrežna tehnologija in pojavila se je tehnologija SDN. Od prvotne osnovne zamisli o ločitvi posredovanja in nadzora, ki temelji na Openflowu, se ljudje še naprej širijo. Pri razširitvi SDN lahko ljudje trenutno dosežejo soglasje, da Openflow ni več nujen pogoj (toda ločitev posredovanja in nadzora je še vedno ključni pogoj), programljivost omrežja pa je počasi postala eno od pomembnih meril za merjenje arhitekture SDN.
Programabilne operacije tradicionalne omrežne opreme na splošno temeljijo na protokolih CLI in SNMP. Ne glede na to, ali gre za skripte ali programsko opremo za upravljanje omrežja, so vsi razviti na tej podlagi, da bi dosegli širok razpon programiranja omrežja, o katerem bomo govorili danes. zmogljivosti, s čimer se uresniči avtomatizacija številnih scenarijev. Nekatere naprave podpirajo konfiguracijo nekaterih spletnih vmesnikov in zamenjavo celotne konfiguracije prek xml. Ti so zelo redki in v tem članku ne bodo podrobno opisani.
CLI
CLI (vmesnik ukazne vrstice) realizira interakcijo med človekom in računalnikom prek ukazne vrstice. To je potrebna veščina za omrežne delavce. Ljudje vsak dan odprejo programsko opremo SSH ali Telnet v napravi, nato prilepijo konfiguracijo, jo shranijo in začne veljati. Nekega dne so se ljudje naveličali tovrstnega ponavljanja in so uporabili program za samodejno generiranje konfiguracijskih skriptov, prijavo v napravo v serijah in izdajo konfiguracij, ki začnejo veljati, s čimer so dosegli avtomatizacijo. To je omrežna programirljiva metoda. Pogovorimo se o prednostih, ki so zelo skladne z razmišljanjem ljudi, idejami in obstoječimi tehničnimi sistemi. Toda navsezadnje ta pristop daje prednost ljudem pred omrežnimi napravami. Ima naslednje pomanjkljivosti:
- Med proizvajalci so velike razlike v naborih ukazov. Ne le proizvajalci, tudi različne različice programske opreme istega modela imajo lahko zelo različne razlike.
-Razvijalci morajo poznati nabor ukazov in kako ga uporabljati. Obstajajo varnostna tveganja na ravni konfiguracije. Na primer, z zamahom roke se je vrata, ki sem jih želel odpreti, spremenila v zapiranje vrat ...
- Ni obveznih zahtev za prenosne protokole (SSH in Telnet), obstajajo pa tudi varnostna tveganja proizvodnje.
-Postopek razčlenjevanja in generiranja konfiguracij je izjemno zapleten. V mnogih primerih so napisana redna pravila lahko samo neskončno blizu "resnice", ne pa celotne "resnice".
- Ni transakcije in konfiguracija lahko delno začne veljati, delno pa ne.
- Ni avtomatiziranega inšpekcijskega mehanizma in je popolnoma odvisen od ljudi. Na primer, želim preizkusiti, ali je ustvarjeni skript pravilen. Obstaja pot, vendar je zelo težka in pogosto težko izvedljiva.
- Ni pojma o modeliranju podatkov
CLI je vedno način interakcije med človekom in računalnikom. Omrežju lahko omogoči določene zmožnosti programiranja prek programov, vendar navsezadnje to ni metoda, ki bi bila sama po sebi programljiva v omrežju. Pod trenutnim valom računalništva v oblaku in SDN ni primeren za obsežno avtomatizirano uvajanje v omrežju, njegova programirljivost pa je omejena. Zunanjim osebam je težko razumeti težavnost razvoja.
SNMP
SNMP (SNMP, Simple Network Management Protocol), ta protokol lahko podpira sisteme za upravljanje omrežja za spremljanje, ali so naprave, povezane v omrežje, v kakršni koli situaciji, ki povzroča pozornost vodstva. Sestavljen je iz niza standardov za upravljanje omrežja, vključno s protokolom aplikacijskega sloja, shemo baze podatkov in nizom podatkovnih objektov.
Za del vsebine v Wikipediji izpostavljamo upravljanje omrežja, nadzor in podatkovne objekte. Uporablja se za upravljanje omrežja, lahko ga je konfigurirati in zbirati ter se uporablja predvsem za spremljanje. Ima modeliranje podatkov za strukturiranje nekaterih modulov, značilnosti in podatkov o stanju omrežne opreme. Uporablja se predvsem za sisteme za upravljanje omrežja (večinoma spremljanje). Nato se pogovorimo o njegovih pomanjkljivostih:
-Slaba berljivost. Raje ima "stroj" v človek-stroj. Pri uporabi ni berljiv, prav tako niso berljivi podatki o modeliranju. Uporablja nadnabor ASN.1.
- Varnost je omejena. Obstajajo tri različice: v1, v2c in v3, varnost pa se izboljšuje zaporedno. Vendar je najpogostejši v2c, ki ima omejeno varnost. Različica v3 je po zasnovi zelo varna, vendar ni univerzalna. . .
-Ni mehanizma za varnostno kopiranje, obnovitev ali povrnitev. Imamo tudi show run in druge metode za varnostno kopiranje ukazne vrstice, vendar snmp. . .
- Zelo malo piše. Veliko beri, malo piši, večinoma za spremljanje.
- Podatki, ki jih je mogoče zbrati, so omejeni in ni mogoče pridobiti konfiguracije celotne naprave. Velikokrat ugotovimo, da lahko za zbiranje uporabimo cli, ne moremo pa uporabiti snmp.
- Obstaja ozko grlo pri delovanju. Zgornja meja zbranih podatkov je 64K, razdrobljenost zbiranja pa je prevelika. V velikih in kompleksnih omrežjih lahko traja nekaj minut ali dlje. To tudi poudarja pomembno točko. Tudi naše zahteve glede razdrobljenosti so zelo stroge. Velikokrat upamo, da bomo zbrali pristaniški promet vsakih nekaj sekund. Mislim, da je v velikih omrežjih tradicionalna programska oprema za upravljanje omrežja ... Če razširim še en stavek, trenutna metoda je telemetrija (kot je gRPC), ki lahko doseže mikrosekundno raven, nekatere pa zahtevajo kombinacijo programske in strojne opreme. To še ni priljubljeno, toda v prihodnosti mora biti trend. Glede tega, kdaj bo to prišlo v prihodnosti ...
-Od svojega rojstva se SNMP močno uporablja na področju nadzora omrežja za pridobivanje podatkov za nadzor. Zaradi pomanjkanja in zapletenosti konfiguracijskih zmogljivosti se le-ta le malo uporablja v konfiguraciji omrežja. Omrežje, ki ga je mogoče programirati samo za branje.
Protokol Netconf in model YANG
Kakšne protokole za upravljanje omrežja potrebujemo pred naslednjo generacijo omrežij, da bi bolje uresničili programljivost omrežja in izboljšali stopnjo avtomatizacije?
IETF je v RFC3535 leta 2002 predlagal naslednje ideje (pravzaprav jih je 33. Na podlagi spletnih informacij in avtorjevega znanja sem napisal naslednje ideje):
1. Na voljo je programabilni vmesnik za konfiguracijo omrežja
2. Enako konfiguracijo je mogoče uporabiti pri vseh proizvajalcih in modelih
3. Potreba po poenotenju jezikov za modeliranje z dobro berljivostjo
4. Popolne funkcije preverjanja napak in obnovitve
5. Transakcijski
Če imate idejo, jo le uresničite. Leta 2006 je IETF predlagal protokol Netconf, ki je rešil težave, ki jih je izpostavil RFC3535. Začetni Netconf je določal le osnovni okvir in delovanje protokola ter definiral rešitve, ki so upoštevale nekatere težave RFC3535. Ni določil enotnega modelirnega jezika. Zato je oprema nekaterih zgodnjih proizvajalcev podpirala samo nekatere osnovne operacije Netconfa in ni uporabljala enotne spodnje plasti. Jezik za modeliranje podatkov.
RFC6020 je bil izdan leta 2010 in je predlagal modelni jezik modela YANG in metodo njegove kombinacije z NETCONF. Ena definicija je jezik za modeliranje podatkov, ki poenoti osnovno logiko virov med proizvajalci, druga definicija pa je enoten nabor ukazov za operacije vsakega proizvajalca na konfiguracijskih podatkih in podatkih o stanju. Primerki podatkov, ustvarjeni z modelom YANG, so oviti v protokol Netconf. Prenos, oba sta združena med seboj, da zgradita nov nabor univerzalnih omrežnih programabilnih vmesnikov za novo dobo, ki temelji na modelu YANG in ga poganja protokol Netconf.
Po letu 2016 je bil protokol Netconf tesno povezan z modelom YANG in postal priljubljen. Doslej, ko gledamo nekatere vidike programske opreme arhitekture SDN, smo bolj ali manj slišali ta dva izraza.
YANG in Netconf, eden je statičen, drugi pa dinamičen, tako kot jin in jang. Oba sta izpeljala omrežni programabilni svet naslednje dobe. (Ko pogledamo skladišče YANG na githubu, bomo tudi ugotovili, da je njegova ikona Tai Chi, povezava med njegovim imenom in "Yang" pa nekoliko razkrije oblikovalske ideje prvotnega oblikovalca).
Nato bomo na kratko spregovorili o modelu YANG in protokolu Netconf. Najprej se pogovorimo o jeziku YANG za modeliranje podatkov, da vidimo, kako opisuje digitalnega dvojčka tega omrežnega sveta.
Model YANG
V dokumentu RFC6020 uvodno poglavje jasno navaja YANG, jezik za modeliranje podatkov za protokol za konfiguracijo omrežja. Je okrajšava za Yet Another Next Generation (Yang) Data Modeling Language. Je jezik za modeliranje, ki se uporablja za opis konceptov omrežja.
Podpira definicijo seznamov, slovarjev in še bolj zapletenih podatkovnih struktur, podpira omejitve, naštevanja, uvoze sklicev, upravljanje različic in imenske prostore. Zaradi prostornosti bomo podali kratko razlago. Za podrobne informacije se lahko obrnete na:
To omrežno napravo lahko zelo preprosto opiše v strukturiranem jeziku. Na primer, za definicijo pristanišča:
Kot poklicno operativno in vzdrževalno osebje, z malo osnov omrežja in nekaj osnov programiranja, lahko razmeroma jasno razumete definicijo vrat. To je struktura seznama in lahko jih je več. Eden od njegovih atributov je ime vmesnika (tudi ključ). , edinstven, neponovljiv), kot tudi atribut hitrosti in atribut dupleksa, ki sta niza.
Številne lastnosti omrežne naprave opisuje model YANG, vključno s stanjem konfiguracije in stanjem delovanja.
Na ta način model YANG opisuje spletni svet s strukturiranim jezikom. Če vas zanima, lahko preberete zgornjo objavo v spletnem dnevniku, ki ima zelo poglobljen opis.
Zelo dobro jih je mogoče pretvoriti v podatke XML in zaviti v protokol Netconf za prenos (pojasnili bomo kasneje):

Hkrati je Openconfig pod vodstvom Googla standardiziral podatkovni model, da bi izravnal razlike med ponudniki. Na uradnem spletnem mestu vidimo slogan "Vendor-neutral, model-driven network management designed by users", ki ga oblikujejo uporabniki in je zasnovan na več platformah. Vendor-common, model-driven network programming (najprej prevedimo tako). Preprosto povedano, to je, da je modeliranje med različnimi proizvajalci enako, tako da vam, ko konfigurirate določene podatke, ni treba pregledati zasebnega modela yang vsakega proizvajalca enega za drugim. Toda internet ima vedno zasebne protokole in različni proizvajalci bodo vedno ustvarjali nove in boljše zasebne protokole za "boljšo uporabniško izkušnjo" in "boljšo poslovno strategijo" (to je v resnici izvirni greh proizvajalcev omrežij). Slika prikazuje nekaj bolj pogosto uporabljenih implementacij modela openconfig yang.


Po sliki sodeč se mi zdi, da jih je kar veliko, pogosto uporabljene konfiguracije pa so relativno popolne. A v praksi je odvisno ali proizvajalec podpira tudi te jang modele. V osnovi so podprte nekatere višje različice naprav določenega predmeta. Domačih pa še nisem vzela pobližje.
Omrežja ne morejo biti povsem enaka. Za inženirja, ki se ukvarja z razvojem delovanja in vzdrževanja omrežja, je sreča, da lahko doseže isti cilj!
openconfig lahko najdete na https://github.com/openconfig/public/tree/master/release/models
Zasebne yang modele lahko najdete na različnih uradnih spletnih mestih.
Protokol Netconf
Po pogovoru o modelu yang, se pogovorimo o protokolu Netconf. Model yang določa digitalni opis omrežnega sveta, Netconf pa pridobivanje (get) in prilagajanje (config) podatkov.
Netconf enkapsulira podatke o svetu, ki jih opisuje model yang, da uresniči upravljanje omrežnega sveta.

Podatki Yang so enkapsulirani v xml in nato upravljani prek protokola Netconf. To je protokol z odlično večplastno idejo, ki opisuje nekatere podrobnosti protokola na hierarhični način. Poglejmo zgornjo sliko.
-Prenos: Netconf se prenaša prek protokola SSH, je usmerjen na povezavo in ima varnostna jamstva.
-Sporočilo: Opravite oddaljeni klic omrežni napravi prek RPC, upravitelj omrežja izda zahtevo rpc in omrežna naprava nadaljuje z rpc-odgovorom.
-Operacija: To je duša Netconfa. Podpira get (podatki o konfiguraciji in izvajanju), get-config (pridobivanje podatkov o konfiguraciji in naprava ima lahko več podatkov o konfiguraciji, en teče, en zagon, več kandidatov), edit -config (konfiguriraj parametre omrežne naprave, podpira dodajanje, brisanje in spreminjanje), delete-config, copy-config (kopiraj konfiguracijo na cilj, cilj je lahko ftp, datoteka ali tekoča konfiguracija itd.), lock\unlock (zakleni konfiguracijo, da preprečiš konflikte ali napake konfiguracije, ki jih povzroči večprocesne operacije) in tako naprej.
- Podatki: podatki so podatki, zaviti v xml. Tako kot vrata, ki smo jih opisali zgoraj, je tudi strukturirane podatke enostavno programirati. Uporablja se za opis podatkov, ki jih je treba konfigurirati, izbrisati ali pridobiti.
To so štiri plasti Netconfa. Nadzorni konec in omrežna naprava komunicirata prek Netconfa, prek tradicionalnega protokola ssh, z uporabo podsistema Netconf, privzeta vrata pa so 830. Kot je prikazano spodaj:

Ta slika prikazuje interakcijo z uporabo surovega ssh-ja, v resnici pa ta proces izvajamo s programiranjem. Kasneje vam bom predstavil način izvajanja programiranja.
Netconf konfigurira omrežne naprave. Postopek interakcije je približno naslednji:

Ta slika je tako nizka, lahko tudi vidite, da sem jo narisal jaz ... Netconf razumem tako kot zgoraj. Mislim, da je na internetu veliko slik, ki niso pravilne, in veliko vedenj agenta strežnika ni pravilnih. To je tisto, kar intuitivno čutim, ko se prijavim v napravo, in seveda se ena proti ena ujema z uradno dokumentacijo.
Ogledamo si lahko nekaj primerov Netconf:
Pozdravljeni, ustvarite povezavo.

Videli smo več ključnih besed, različico Netconf, podprt model YANG, ID seje. Hkrati hello označuje, v katerem imenskem prostoru delujemo. V tem primeru je to ustrezna različica Netconfa.
Pridobite konfiguracijo

Eden od parametrov get-cofig je vir, kjer se pridobijo konfiguracijski podatki (zagon, zagon ali drugo). Drugi parameter je filter, to je, kateri podatki so pridobljeni iz podatkovnega modela, ki ga opisuje kateri yang model. To ustreza zmogljivosti, ki jo je prvotno poslala omrežna naprava. Če bo uspešen, bodo vrnjeni ustrezni konfiguracijski podatki.
Pridobite podatke o konfiguraciji ali delovanju

Podobno kot get-config, vendar je pridobljena tekoča konfiguracija (osebno razumevanje) ali tekoči podatki. Filter je mogoče določiti.
Kopiraj konfiguracijo

Operacija kopiranja ima dva parametra, vir in cilj. Uspešen odgovor je z oznako ok.
Uredi konfiguracijo

Pri urejanju konfiguracije določite podatkovno postavko, ki jo želite urediti, imenski prostor zmožnosti in ustrezno oznako. Na primer, to je konfiguracija dhcp, ki je opisana z modelom yang http://tail-f.com/ns/example/dhcp.
Lepo zapri sejo

To je vrsta sporočila, ki se prenaša naprej in nazaj v ssh. Izluščimo samo del sporočila, da ga vsi razumejo.
Nato preprosto dodajte nekaj vsebine za referenco.
-Netconf temelji na seji in vsak uspeh bo imel ID seje.
-Vsaka zahteva ima ID sporočila, če le ta postopoma postaja večji
-Konfiguracija podatkov je lahko zaklenjena, ekskluzivna in upravljana prek ključavnice.
-Netconf je transakcijski in operacije so bodisi vse izvedene bodisi nobene. Hkrati je v skladu z uradno dokumentacijo na spletnem mestu ta transakcijska sposobnost za konfiguracijo N omrežnih naprav, kar pomeni, da lahko polimorfizem enkratne konfiguracije podpira transakcijskost. Ampak tega še nisem naredil…
-Netconf podpira naročnino. Kar zadeva zmogljivost naprave, je velikostni red približno 5 sej. Lahko se naročim na določen podatek in naprava me bo obvestila, ko se spremeni.
-Zmogljivost, tako razumem. Omrežna naprava pošlje različico Netconf in YANG Model, nadzorni terminal pa različico Netconf. Šele ko se različica Netconf ujema z obema, lahko nadaljujemo. To je moj intuitivni občutek. Vsak nasvet je dobrodošel.
-Operacije, kot je get edit, bodo podale podatke, ki jih je treba spremeniti in jih je mogoče filtrirati s filtrom.
-copy-config podpira kopiranje celotnega niza konfiguracij od nekje do nekje. Nekje je lahko datoteka FTP, zagnana, zagonska in kandidatna konfiguracija v napravi.
-Netconf podpira tudi preverjanje konfiguracije z operacijo potrditve.
Ta članek še vedno upa na popularizacijo znanosti in ne bom se spuščal v podrobnosti. Preberete lahko ustrezne protokole RFC, ki pravzaprav ni zelo dolg.
V praksi lahko na podlagi nekatere odprtokodne programske opreme, kot je pythonov ncclient, preprosto samodejno konfiguriramo omrežne naprave in dosežemo programljivost omrežja. To je poslanstvo Netconfa in modela YANG.
Omrežno osebje bere dobro oblikovane definicije modela YANG in uporablja ustrezne programske jezike za izvajanje programabilnih operacij na omrežnih napravah na podlagi operacij, ki jih definira Netconf. Na ta način je ustvarjena pot do programljivosti omrežja.
Razširimo in si predstavljajmo, da je model YANG definiral strukturo podatkov omrežne naprave. Upravljamo ga lahko prek Netconfa. Ali ga je mogoče upravljati tudi prek drugih protokolov?
Odgovor je pritrdilen. Pravzaprav je veliko drugih protokolov izpeljanih iz Netconfa, na primer RESTConf. Kot je prikazano spodaj,

Model YANG (javni in domači) definira podatkovno strukturo, nad katero so novi protokoli za upravljanje omrežja, Netconf, RESTCon, gRPC itd. Na ta način lahko upravljamo omrežne naprave preko RESTConf na podlagi HTTP RESTful API, lahko upravljamo tudi omrežje naprave prek Netconfa, ki temelji na SSH, ali pa lahko upravljamo omrežne naprave prek gRPC, ki temelji na HTTP2.0. Vsi temeljijo na YANG z dobro strukturo podatkov. Modelirajte, zapišite ustrezne podatke, jih enkapsulirajte v xml ali json za programiranje omrežnih naprav. To je prihodnost programiranja omrežja. Če smo natančni, gre za modelno usmerjen program, programiranje omrežja na podlagi modela. Omrežni inženirji se postopoma osredotočajo na parametre naprave namesto na nabor ukazov in konfigurirajo omrežne parametre z branjem ustreznega podatkovnega modela.
Na koncu napišem, zakaj naj odprem ta javni račun. Ko sem bil v šoli, sem študiral računalništvo in tehnologijo. Po vstopu na delovno mesto sem se ukvarjal z upravljanjem in vzdrževanjem omrežja. Če pomislim na to, je razlog, zakaj so me razdelili v skupine, morda ta, da sem bil podiplomski študent na Inštitutu za raziskovanje omrežne tehnologije (priročnik smešno). Že od samega začetka sem sodeloval pri delovanju omrežja. V poznejši fazi delovanja in vzdrževanja so bila uporabljena orodja za poenostavitev dela in izboljšanje učinkovitosti na osnovi CLI. Kasneje so se orodja postopoma razvila v BS-strukturirane spletne aplikacije. Nenehno so bili izpostavljeni novim tehnologijam in so še naprej bogatili nove funkcije.
Na srečo so dohiteli razvoj odprtokodne tehnologije in SDN, zato sem postopoma prešel na delo NetDevOps in uporabil svoje programerske sposobnosti za izboljšanje zmogljivosti delovanja in vzdrževanja ekipe. Užival sem tudi pri pisanju te vrstice kode. Ko pisanje napreduje, se postopoma odkrije, da bi moral biti NetDevOps veščina, ki bi jo moral v prihodnosti imeti vsak omrežni inženir (vsi prilivajo olja na ogenj), tako da lahko dosežejo načrtovanje na visoki ravni in hitro implementacijo. Če pogledam nazaj na nekaj informacij na internetu, če sem iskren, je na Kitajskem zelo malo in domače vzdušje ni zelo močno. Veliko domače programske opreme temelji na starem CLI in snmp, vsi pa za delo še vedno uporabljajo besedilna orodja in orodja SSH. Torej upam, da jazlahko druge naučim loviti ribe, delim svoje izkušnje (jame) in veščine z več inženirji za upravljanje in vzdrževanje omrežjain dam vse od sebe. Xiao Chu je dejal, da se lahko nekaj naučite, da zmanjšate svojo delovno obremenitev, in če se osredotočite na daljno prihodnost, se lahko delovanje in vzdrževanje domačega omrežja resnično razvije v smeri avtomatizacije.
V prihodnosti bom posnel nekaj videov in napisal nekaj člankov. Pisanje dokumenta se mi zdi zelo naporno. Vabimo vas, da se naročite, zbirate, kliknete všeček in gledate.
dodatek: skupne operacije Netconf

Zasnova rešitve DWDM OTN in ponudba stroškov, povežite se z mano, Taylor Huang















































