DCI-Box/White Box - Put prema budućoj mrežnoj programabilnosti: Netconf protokol i YANG model

Dec 13, 2023

Ostavite poruku

 

1

Za povezane članke koje sam podijelio o mrežnoj automatizaciji pogledajte katalog "NetDevOps from Scratch"

Posljednjih godina, s kontinuiranim razvojem globalnog područja računalstva u oblaku i stalnim rastom poslovanja, mrežna tehnologija se također nastavila razvijati, a pojavila se i SDN tehnologija. Od izvorne temeljne ideje o odvajanju prosljeđivanja i kontrole temeljene na Openflowu, ljudi se nastavljaju širiti U proširenju SDN-a ljudi trenutno mogu postići konsenzus da Openflow više nije nužan uvjet (ali odvajanje prosljeđivanja i kontrole jest još uvijek ključni uvjet), a mrežna programabilnost je polako postala jedan od važnih kriterija za mjerenje SDN arhitekture.

 

Programabilne operacije tradicionalne mrežne opreme općenito se temelje na CLI i SNMP protokolima. Bilo da se radi o skriptama ili softveru za upravljanje mrežom, svi su oni razvijeni na ovoj osnovi kako bi se postigao širok raspon mogućnosti programiranja mreže o kojoj ćemo danas govoriti. mogućnosti, čime se ostvaruje automatizacija mnogih scenarija. Neki uređaji podržavaju konfiguraciju nekih web sučelja i zamjenu cjelokupne konfiguracije kroz xml. Oni su vrlo rijetki i neće biti detaljno opisani u ovom članku.

 

CLI

CLI (Command-line Interface) ostvaruje interakciju između čovjeka i računala putem naredbenog retka. To je neophodna vještina za mrežne radnike. Ljudi otvaraju softverski SSH ili Telnet na uređaju svaki dan, zatim zalijepe konfiguraciju, spreme je i stupe na snagu. Jednog dana, ljudi su se umorili od ove vrste ponavljanja i upotrijebili su program za automatsko generiranje konfiguracijskih skripti, prijavu na uređaj u serijama i izdavanje konfiguracija koje bi stupile na snagu, ostvarujući automatizaciju. Ovo je metoda koja se može programirati putem mreže. Razgovarajmo o prednostima, koje su vrlo u skladu s ljudskim razmišljanjima, idejama i postojećim tehničkim sustavima. Ali u konačnici, ovaj pristup daje prednost ljudima u odnosu na mrežne uređaje. Ima sljedeće nedostatke:

 

-Postoje velike razlike u skupovima naredbi između proizvođača. Ne samo proizvođači, nego i različite verzije softvera istog modela mogu imati vrlo različite razlike.

- Programeri moraju biti upoznati sa skupom naredbi i kako ga koristiti. Postoje sigurnosni rizici na razini konfiguracije. Na primjer, jednim pokretom ruke port koji sam htio otvoriti pretvorio se u zatvaranje porta...

-Nema obveznih zahtjeva za protokole prijenosa (SSH i Telnet), a postoje i sigurnosni rizici proizvodnje.

-Proces parsiranja i generiranja konfiguracija iznimno je kompliciran. U mnogim slučajevima napisana regularna pravila mogu biti samo beskrajno blizu "istine", ali ne i cijele "istine".

-Ne postoji transakcija, a konfiguracija može djelomično stupiti na snagu, a dijelom ne.

-Ne postoji automatizirani mehanizam inspekcije i potpuno ovisi o ljudima. Na primjer, želim testirati je li generirana skripta ispravna. Postoji način, ali je vrlo težak i često ga je teško lako provesti.

- Nemam pojma o modeliranju podataka

 

CLI je uvijek način interakcije između čovjeka i računala. Mreži može dati određene mogućnosti programiranja putem programa, ali na kraju krajeva, to nije metoda koja je inherentno mrežno programabilna. Pod trenutnim valom računalstva u oblaku i SDN-a, nije prikladan za automatiziranu implementaciju velikih razmjera u mreži, a mogućnost programiranja mu je ograničena. Autsajderima je teško razumjeti težinu razvoja.

 

SNMP

SNMP (SNMP, Simple Network Management Protocol), ovaj protokol može podržati sustave za upravljanje mrežom kako bi nadgledali postoje li uređaji spojeni na mrežu u situacijama koje izazivaju pozornost uprave. Sastoji se od skupa standarda za upravljanje mrežom, uključujući protokol aplikacijskog sloja, shemu baze podataka i skup podatkovnih objekata.

 

Za dio sadržaja u Wikipediji ističemo upravljanje mrežom, nadzor i objekte podataka. Koristi se za upravljanje mrežom, može se konfigurirati i prikupljati, a uglavnom se koristi za nadzor. Ima modeliranje podataka za strukturiranje nekih modula, karakteristika i statusnih podataka mrežne opreme. Uglavnom se koristi za sustave upravljanja mrežom (uglavnom nadzor). Zatim razgovarajmo o njegovim nedostacima:

- Loša čitljivost. Više voli "stroj" u čovjek-stroj. Nije čitljiv kada se koristi, a podaci o modeliranju također nisu čitljivi. Koristi nadskup ASN.1.

- Sigurnost je ograničena. Postoje tri verzije: v1, v2c i v3, a sigurnost se poboljšava redom. Međutim, najčešći je v2c, koji ima ograničenu sigurnost. Verzija v3 vrlo je sigurna po dizajnu, ali nije univerzalna. . .

-Ne postoji mehanizam sigurnosne kopije, oporavka ili povrata. Također imamo show run i druge metode za sigurnosno kopiranje naredbenog retka, ali snmp. . .

- Jako malo piše. Puno čitati, malo pisati, uglavnom za praćenje.

- Podaci koji se mogu prikupiti ograničeni su i ne može se dobiti konfiguracija cijelog uređaja. Mnogo puta otkrijemo da možemo koristiti cli za prikupljanje, ali ne možemo koristiti snmp za prikupljanje.

-Postoji usko grlo u izvedbi. Gornja granica prikupljenih podataka je 64K, a granularnost prikupljanja je prevelika. U velikim i složenim mrežama to može potrajati nekoliko minuta ili dulje. Ovo također naglašava važnu točku. Naši zahtjevi za granularnošću također su vrlo strogi. Mnogo puta se nadamo da ćemo prikupljati lučki promet svakih nekoliko sekundi. U velikim mrežama, mislim da je tradicionalni softver za upravljanje mrežom... Da proširim još jednu rečenicu, trenutna metoda je telemetrija (kao što je gRPC) koja može postići razinu mikrosekunde, a neke zahtijevaju kombinaciju softvera i hardvera. Još nije popularan, ali u budućnosti mora biti trend. Kad će se to dogoditi u budućnosti…

-Od svog rođenja, SNMP se uvelike koristi u području nadzora mreže za dobivanje podataka za nadzor. Nedostatak i složenost konfiguracijskih mogućnosti doveli su do njihove male upotrebe u konfiguraciji mreže. Samo za čitanje mrežni programabilni.

 

Netconf protokol i YANG model

Suočavajući se sa sljedećom generacijom mreža, kakve protokole za upravljanje mrežom trebamo da bolje realiziramo mogućnost programiranja mreže i poboljšamo razinu automatizacije?

IETF je predložio sljedeće ideje u RFC3535 2002. godine (zapravo ih ima 33. Na temelju internetskih informacija i znanja autora, napisao sam sljedeće ideje):

1. Postoji programabilno sučelje za konfiguraciju mreže

2. Ista se konfiguracija može koristiti za sve proizvođače i modele

3. Potreba za unificiranjem jezika za modeliranje s dobrom čitljivošću

4. Potpune funkcije provjere pogrešaka i oporavka

5. Transakcijski

 

Ako imate ideju, samo je realizirajte. Godine 2006. IETF je predložio Netconf protokol, koji je riješio probleme koje je pokrenuo RFC3535. Početni Netconf samo je propisao osnovni okvir i operacije protokola, te definirao rješenja koja su uzela u obzir neke probleme RFC3535. Nije propisivao jedinstven jezik modeliranja. Stoga je oprema nekih ranih proizvođača podržavala samo neke osnovne operacije Netconfa i nije koristila objedinjeni donji sloj. Jezik modeliranja podataka.

 

RFC6020 objavljen je 2010. godine, predlažući jezik za modeliranje modela YANG i metodu njegove kombinacije s NETCONF-om. Jedna definicija je jezik za modeliranje podataka koji ujedinjuje temeljnu logiku resursa između proizvođača, a druga definicija je jedinstveni skup naredbi za operacije svakog proizvođača na konfiguracijskim podacima i statusnim podacima. Instance podataka stvorene YANG modelom omotane su u Netconf protokol. Prijenos, dva se međusobno kombiniraju kako bi se izgradio novi skup univerzalnih mrežnih programibilnih sučelja za novu eru temeljena na YANG modelu i vođena Netconf protokolom.

 

Nakon 2016. Netconf protokol je usko integriran s YANG modelom i postao je popularan. Do sada, kada gledamo neke aspekte softvera SDN arhitekture, manje-više smo čuli ova dva izraza.

 

YANG i Netconf, jedan je statičan, a drugi dinamičan, baš kao yin i yang. Njih dvoje su stvorili mrežni programabilni svijet sljedeće ere. (Kada pogledamo YANG skladište na githubu, također ćemo otkriti da je njegova ikona Tai Chi, a veza između njegovog imena i "Yang" donekle otkriva dizajnerske ideje originalnog dizajnera).

 

Zatim ćemo ukratko govoriti o YANG modelu i Netconf protokolu. Prvo razgovarajmo o jeziku za modeliranje podataka YANG da vidimo kako opisuje digitalnog blizanca ovog mrežnog svijeta.

 

Model YANG

U dokumentu RFC6020, uvodno poglavlje jasno navodi YANG, jezik za modeliranje podataka za protokol mrežne konfiguracije. To je skraćenica od Yet Another Next Generation (Yang) Data Modeling Language. To je jezik za modeliranje koji se koristi za opisivanje mrežnih koncepata.

 

Podržava definiranje popisa, rječnika i još složenijih struktura podataka, podržava ograničenja, nabrajanja, uvoz referenci, upravljanje verzijama i prostore imena. Zbog prostora dat ćemo kratko objašnjenje. Za detaljne informacije možete se obratiti na:

 

Može vrlo jednostavno opisati ovaj mrežni uređaj strukturiranim jezikom. Na primjer, za definiciju luke:

Kao profesionalno osoblje za rukovanje i održavanje, s malo osnova mreže i malo osnova programiranja, možete razumjeti definiciju priključka relativno jasno. To je struktura popisa, a može ih biti više. Jedan od njegovih atributa je ime sučelja (također ključ). , jedinstven, neponovljiv), kao i atribut brzine i dvostruki atribut, a oba su nizovi.

Mnogi atributi mrežnog uređaja opisani su YANG modelom, uključujući status konfiguracije i radni status.

Na taj način YANG model opisuje online svijet koristeći strukturirani jezik. Ako ste zainteresirani, možete pročitati gornji post na internetskom blogu, koji ima vrlo detaljan opis.

 

Može se vrlo dobro pretvoriti u XML podatke i zamotati u Netconf protokol za prijenos (kasnije ćemo to objasniti):

2

U isto vrijeme, kako bi se izjednačile razlike između dobavljača, Openconfig, predvođen Googleom, standardizirao je podatkovni model. Na službenoj web stranici vidimo slogan "Vendor-neutral, model-driven network management designed by users", koji su dizajnirali korisnici i više platformi. Uobičajeno mrežno programiranje na temelju modela (prevedimo to prvo ovako). Pojednostavljeno rečeno, to je učiniti modeliranje između različitih proizvođača istim, tako da kada konfigurirate određene podatke, ne morate pregledavati privatni yang model svakog proizvođača jedan po jedan. Ali Internet uvijek ima privatne protokole, a različiti proizvođači uvijek će stvarati nove i bolje privatne protokole za "bolje korisničko iskustvo" i "bolju poslovnu strategiju" (ovo je zapravo iskonski grijeh proizvođača mreža). Slika prikazuje neke od najčešće korištenih implementacija modela openconfig yang.

 

3

4

Sudeći po slici, mislim da ih ima dosta, a najčešće korištene konfiguracije su relativno kompletne. Ali u praksi to ovisi o tome podržava li proizvođač i te yang modele. Neki uređaji više verzije određenog predmeta su u osnovi podržani. Domaće nisam još pobliže pogledao.

 

Mreže ne mogu biti potpuno iste. Za inženjera koji se bavi razvojem rada i održavanja mreže, sreća je što može postići isti cilj!

 

openconfig možete pronaći na https://github.com/openconfig/public/tree/master/release/models

Privatne yang modele možete pronaći na raznim službenim web stranicama.

 

Netconf protokol

 

Nakon razgovora o yang modelu, razgovarajmo o protokolu Netconf. Yang model definira digitalni opis mrežnog svijeta, a Netconf definira prikupljanje (get) i podešavanje (config) podataka.

 

Netconf enkapsulira podatke svijeta opisanog yang modelom kako bi ostvario upravljanje mrežnim svijetom.

 

5

Yang podaci su kapsulirani u xml i zatim se njima upravlja kroz Netconf protokol. To je protokol sa sjajnom slojevitom idejom, koji opisuje neke detalje protokola na hijerarhijski način. Pogledajmo gornju sliku.

 

- Prijenos: Netconf se prenosi kroz SSH protokol, orijentiran je na povezivanje i ima sigurnosna jamstva.

-Poruka: uputite daljinski poziv mrežnom uređaju putem RPC-a, mrežni upravitelj izdaje rpc zahtjev, a mrežni uređaj nastavlja s rpc-odgovorom.

-Operacija: Ovo je duša Netconfa. Podržava get (podatke o konfiguraciji i pokretanju), get-config (dobivanje podataka o konfiguraciji, a uređaj može imati više podataka o konfiguraciji, jedan radi, jedan se pokreće, više kandidata kandidata), edit -config (konfigurirajte parametre mrežnog uređaja, podržava dodavanje, brisanje i izmjena), delete-config, copy-config (kopirajte konfiguraciju na odredište, odredište može biti ftp, datoteka ili pokrenuta konfiguracija, itd.), zaključaj\otključaj (zaključaj konfiguraciju radi sprječavanja sukoba konfiguracije ili kvarova uzrokovanih višeprocesne operacije) i tako dalje.

-Podaci: podaci su podaci zamotani u xml. Kao i priključak koji smo gore opisali, strukturirane podatke lako je programirati. Koristi se za opisivanje podataka koje treba konfigurirati ili izbrisati ili dobiti.

 

Ovo su četiri sloja Netconfa. Kontrolni kraj i mrežni uređaj komuniciraju kroz Netconf, kroz tradicionalni ssh protokol, koristeći Netconf podsustav, a zadani port je 830. Kao što je prikazano u nastavku:

 

6

Ova slika pokazuje interakciju korištenjem neobrađenog ssh-a, ali zapravo ovaj proces implementiramo kroz programiranje. Kasnije ću vam demonstrirati metodu implementacije programiranja.

 

Netconf konfigurira mrežne uređaje. Proces interakcije je otprilike sljedeći:

 

7

 

Ova slika je tako niska, također možete vidjeti da sam je ja nacrtao... Moje razumijevanje Netconfa je kao gore. Mislim da ima mnogo slika na Internetu koje nisu točne i da mnoga ponašanja agenta poslužitelja nisu ispravna. To je ono što intuitivno osjećam kada se prijavim na uređaj i naravno odgovara jedan na jedan službenoj dokumentaciji.

 

Možemo pogledati neke Netconf primjere:

Pozdrav, napravi vezu.

8

 

Vidjeli smo nekoliko ključnih riječi, verziju Netconfa, podržan YANG model, ID sesije. U isto vrijeme, hello označava u kojem prostoru imena radimo. U ovom slučaju, to je odgovarajuća verzija Netconfa.

Nabavite konfiguraciju

9

 

Jedan parametar get-cofiga je izvor, gdje se dobivaju podaci o konfiguraciji (izvršenje, pokretanje ili drugo). Drugi parametar je filter, odnosno koji se podaci dobivaju iz podatkovnog modela kojeg opisuje koji yang model. Ovo odgovara mogućnosti koju je izvorno poslao mrežni uređaj. Ako bude uspješno, bit će vraćeni odgovarajući konfiguracijski podaci.

Dobijte podatke o konfiguraciji ili radu

10

Slično get-config, ali ono što se dobiva je pokrenuta konfiguracija (osobno razumijevanje) ili pokrenuti podaci. Filter se može odrediti.

Kopiraj konfiguraciju

11

 

Operacija kopiranja ima dva parametra, izvor i odredište. Uspješan odgovor je s ok oznakom.

Uredi konfiguraciju

12

Prilikom uređivanja konfiguracije odredite podatkovnu stavku koju želite urediti, prostor naziva mogućnosti i odgovarajuću oznaku. Na primjer, ovo je konfiguracija dhcp-a, što je opisano yang modelom http://tail-f.com/ns/example/dhcp.

Lijepo zatvorite sesiju

13

Ova vrsta poruke se prenosi naprijed-natrag u ssh-u. Samo izdvajamo dio poruke kako bismo olakšali svačije razumijevanje.

Zatim jednostavno dodajte sadržaj za referencu.

-Netconf se temelji na sesiji, a svaki uspjeh će imati ID sesije.

-Svaki zahtjev ima ID poruke, sve dok postupno postaje veći

-Konfiguracija podataka može biti zaključana, isključiva i upravljati putem zaključavanja.

-Netconf je transakcijski, a operacije su ili sve implementirane ili nijedne. U isto vrijeme, prema dokumentaciji službene web stranice, ova transakcijska mogućnost je za konfiguraciju N mrežnih uređaja, odnosno jednokratni konfiguracijski polimorfizam može podržati transakcijsku vrijednost. Ali nisam to još učinio…

-Netconf podržava pretplatu. Što se tiče izvedbe uređaja, red veličine je oko 5 sesija. Mogu se pretplatiti na određenu podatkovnu stavku i uređaj će me obavijestiti kada se promijeni.

- Sposobnost, ja to tako shvaćam. Mrežni uređaj šalje verziju Netconfa i YANG modela, a upravljački terminal šalje verziju Netconfa. Tek kada se verzija Netconfa podudara s dvije, možemo nastaviti. To je moj intuitivni osjećaj. Svaki savjet je dobrodošao.

-Operacije kao što je get edit navest će podatke koje treba promijeniti, a koji se mogu filtrirati pomoću filtra.

-copy-config podržava kopiranje kompletnog skupa konfiguracija s nekog mjesta na neko drugo mjesto. Negdje može biti FTP datoteka, pokrenuta, pokrenuta i konfiguracija kandidata na uređaju.

-Netconf također podržava provjeru konfiguracije, koristeći operaciju validacije.

 

Ovaj se članak još uvijek nada popularizaciji znanosti i neću ulaziti u detalje. Možete pročitati relevantne protokole RFC-a, koji zapravo nije jako dugačak.

U praksi, na temelju nekog softvera otvorenog koda, kao što je pythonov ncclient, možemo jednostavno konfigurirati mrežne uređaje automatski i postići mrežnu programabilnost. Ovo je misija Netconfa i YANG modela.

 

Mrežno osoblje čita dobro formatirane definicije YANG modela i koristi relevantne programske jezike za izvođenje programabilnih operacija na mrežnim uređajima na temelju operacija definiranih od strane Netconfa. Na taj se način otvara put do mrežne programabilnosti.

 

Proširimo i zamislimo da YANG model definira strukturu podataka mrežnog uređaja. Možemo njime upravljati putem Netconfa. Može li se njime upravljati i putem drugih protokola?

 

Odgovor je da. U stvari, mnogi drugi protokoli su izvedeni iz Netconfa, kao što je RESTConf. Kako je prikazano dolje,

14

YANG model (javni i nativni) definira strukturu podataka, iznad koje su novi protokoli za upravljanje mrežom, Netconf, RESTCon, gRPC, itd. Na ovaj način možemo upravljati mrežnim uređajima putem RESTConfa na temelju HTTP RESTful API-ja, također možemo upravljati mrežom uređaje putem Netconfa temeljenog na SSH-u ili možemo upravljati mrežnim uređajima putem gRPC-a temeljenog na HTTP2.0. Svi se temelje na YANG s dobrom strukturom podataka. Modelirajte, napišite odgovarajuće podatke, enkapsulirajte ih u xml ili json za programiranje mrežnih uređaja. Ovo je budućnost mogućnosti programiranja mreže. Da budemo precizni, to je Model Driven Program, mrežna programabilnost temeljena na modelu. Mrežni inženjeri postupno se fokusiraju na parametre uređaja umjesto na skup naredbi i konfiguriraju mrežne parametre čitanjem odgovarajućeg podatkovnog modela.

 

Na kraju pišem zašto da otvorim ovaj javni račun. Studirao sam informatiku i tehnologiju dok sam bio u školi. Nakon ulaska na radno mjesto bavio sam se poslovima upravljanja i održavanja mreže. Razmišljajući o tome, razlog zašto sam bio podijeljen u timove mogao bi biti taj što sam bio diplomirani student na Institutu za istraživanje mrežnih tehnologija (smiješno u priručniku). Od samog sam početka bio uključen u mrežne operacije. U kasnijoj fazi rada i održavanja korišteni su alati za pojednostavljenje rada i poboljšanje učinkovitosti na temelju CLI-ja. Kasnije su alati postupno razvijeni u BS strukturirane web aplikacije. Stalno su bili izloženi novim tehnologijama i nastavili obogaćivati ​​nove funkcije.

 

Srećom, uhvatili su korak s razvojem tehnologije otvorenog izvornog koda i SDN-a, pa sam postupno prešao na NetDevOps rad i upotrijebio svoje programerske vještine kako bih poboljšao operativne sposobnosti tima i mogućnosti održavanja. Također sam uživao u pisanju ove linije koda. Kako pisanje napreduje, postupno se otkriva da bi NetDevOps trebao biti vještina koju bi svaki mrežni inženjer trebao imati u budućnosti (svi dolijevaju ulje na vatru), tako da mogu postići i planiranje na visokoj razini i brzu implementaciju. Gledajući unatrag neke informacije na internetu, da budem iskren, u Kini ima vrlo malo, a domaća atmosfera nije baš jaka. Mnogi domaći softveri temeljeni su na starom CLI-u i snmp-u, a svi još uvijek za rad koriste tekstualne alate i SSH alate. Stoga se nadam da jamogu podučiti druge kako loviti ribu, podijeliti svoje iskustvo (jame) i vještine s više inženjera za rad i održavanje mreže, i dajem sve od sebe. Xiao Chu je rekao da možete naučiti nešto kako biste smanjili svoje radno opterećenje, a fokusiranjem na daleku budućnost rad i održavanje domaće mreže uistinu se mogu razviti prema automatizaciji.

 

U budućnosti ću snimiti nekoliko videa i napisati nekoliko članaka. Doista je naporno napisati dokument. Slobodno se pretplatite, skupljajte, kliknite lajk i gledajte.

 

dodatak: Netconf uobičajene operacije

15

 

Dizajn DWDM OTN rješenja i ponuda troškova, molim da se povežete sa mnom, Taylor Huang

006 WhatsApp

1U- 2

2U----6

 

 

Pošaljite upit