
Za povezane članke koje sam podijelio o automatizaciji mreže, pogledajte katalog "NetDevOps od nule"
Posljednjih godina, uz kontinuirani razvoj globalnog područja računalstva u oblaku i kontinuirani rast poslovanja, mrežna tehnologija je također nastavila da se razvija, a pojavila se i SDN tehnologija. Od prvobitne osnovne ideje o razdvajanju prosljeđivanja i kontrole zasnovane na Openflow-u, ljudi nastavljaju da se šire. U proširenju SDN-a, ljudi trenutno mogu postići konsenzus da Openflow više nije neophodan uslov (ali razdvajanje prosljeđivanja i kontrole je i dalje osnovni uslov), a programiranje mreže je polako postalo jedan od važnih kriterijuma za merenje SDN arhitekture.
Programabilne operacije tradicionalne mrežne opreme su uglavnom zasnovane na CLI i SNMP protokolima. Bilo da su skripte ili softver za upravljanje mrežom, svi su razvijeni na ovoj osnovi kako bi se postigla široka lepeza programiranja mreže o kojoj ćemo danas govoriti. sposobnosti, čime se ostvaruje automatizacija mnogih scenarija. Neki uređaji podržavaju konfiguraciju nekih web sučelja i zamjenu cjelokupne konfiguracije putem xml-a. Oni su vrlo rijetki i neće biti detaljno opisani u ovom članku.
CLI
CLI (Interfejs komandne linije) ostvaruje interakciju čoveka i računara preko komandne linije. To je neophodna vještina za mrežne radnike. Ljudi otvaraju softver SSH ili Telnet na uređaju svaki dan, zatim zalijepe konfiguraciju, pohranjuju je i stupaju na snagu. Jednog dana, ljudi su se umorili od ovakve vrste ponavljanja i koristili su program za automatsko generiranje konfiguracijskih skripti, prijavljivanje na uređaj u serijama i izdavanje konfiguracija kako bi stupile na snagu, ostvarujući automatizaciju. Ovo je metoda koja se može programirati putem mreže. Hajde da pričamo o prednostima, koje su u skladu sa ljudskim razmišljanjima, idejama i postojećim tehničkim sistemima. Ali na kraju, ovaj pristup daje prednost ljudima u odnosu na mrežne uređaje. Ima sljedeće nedostatke:
-Postoje ogromne razlike u komandnim setovima između proizvođača. Ne samo proizvođači, već i različite verzije softvera istog modela mogu imati vrlo različite razlike.
-Programeri moraju biti upoznati sa skupom komandi i kako ga koristiti. Postoje sigurnosni rizici na nivou konfiguracije. Na primjer, pokretom ruke, port koji sam želio otvoriti pretvorio se u zatvaranje priključka...
-Ne postoje obavezni zahtjevi za protokole prijenosa (SSH i Telnet), a postoje i sigurnosni rizici u proizvodnji.
-Proces parsiranja i generisanja konfiguracija je izuzetno komplikovan. U mnogim slučajevima, napisana redovna pravila mogu biti samo beskonačno bliska "istini", ali ne i cijeloj "istini".
-Ne postoji transakcija, a konfiguracija može djelomično stupiti na snagu, a dio ne.
-Ne postoji automatizovani mehanizam inspekcije i potpuno zavisi od ljudi. Na primjer, želim testirati da li je generirana skripta ispravna. Postoji način, ali je vrlo težak i često teško implementiran.
-Nemam pojma o modeliranju podataka
CLI je uvijek način interakcije čovjeka i računara. On može dati mreži određene mogućnosti programiranja kroz programe, ali na kraju krajeva, to nije metoda koja je inherentno mrežno programibilna. Pod trenutnim talasom računarstva u oblaku i SDN-a, nije pogodan za masovnu automatizovanu implementaciju u mreži, a njegova programabilnost je ograničena. Autsajderima je teško razumjeti poteškoću razvoja.
SNMP
SNMP (SNMP, Simple Network Management Protocol), ovaj protokol može podržati sisteme za upravljanje mrežom za praćenje da li uređaji povezani na mrežu imaju bilo kakvu situaciju koja izaziva pažnju menadžmenta. Sastoji se od skupa standarda za upravljanje mrežom, uključujući protokol sloja aplikacije, šemu baze podataka i skup objekata podataka.
Za dio sadržaja na Wikipediji ističemo upravljanje mrežom, praćenje i objekte podataka. Koristi se za upravljanje mrežom, može se konfigurirati i prikupljati i uglavnom se koristi za nadzor. Ima modeliranje podataka za strukturiranje nekih modula, karakteristika i podataka o statusu mrežne opreme. Uglavnom se koristi za sisteme upravljanja mrežom (uglavnom za nadzor). Onda hajde da pričamo o njegovim nedostacima:
-Loša čitljivost. Preferira "mašinu" u čovjekovoj mašini. 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 postupno poboljšava. Međutim, najčešći je v2c, koji ima ograničenu sigurnost. Verzija v3 je vrlo sigurna po dizajnu, ali nije univerzalna. . .
-Ne postoji mehanizam za pravljenje rezervnih kopija, oporavak ili vraćanje. Imamo i show run i druge metode za pravljenje rezervne kopije komandne linije, ali snmp. . .
-Vrlo malo piše. Čitajte puno, pišite malo, uglavnom se koristi za praćenje.
- Stavke podataka koje se mogu prikupiti su ograničene, a konfiguracija cijelog uređaja se ne može dobiti. Mnogo puta otkrijemo da možemo koristiti cli da ga prikupimo, ali ne možemo koristiti snmp da ga prikupimo.
-Postoji usko grlo u performansama. 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 duže. Ovo takođe naglašava važnu tačku. Naši zahtjevi za granularnošću su također vrlo strogi. Mnogo puta se nadamo da ćemo prikupiti saobraćaj u luci svakih nekoliko sekundi. U velikim mrežama, mislim da je tradicionalni softver za upravljanje mrežom... Da proširimo još jednu rečenicu, trenutna metoda je telemetrija (kao što je gRPC) koja može postići mikrosekundni nivo, a neki zahtijevaju kombinaciju softvera i hardvera. Još nije popularan, ali u budućnosti mora biti trend. Što se tiče toga kada će ovo doći u budućnosti…
-Od svog rođenja, SNMP se uvelike koristio u oblasti nadgledanja mreže za dobijanje podataka za praćenje. Nedostatak i složenost konfiguracijskih mogućnosti doveli su do toga da se one ne koriste u mrežnoj konfiguraciji. Mreža koja se može programirati samo za čitanje.
Netconf protokol i YANG model
Suočavajući se sa sljedećom generacijom mreža, koje vrste protokola za upravljanje mrežom su nam potrebni da bolje realizujemo programiranje mreže i poboljšamo nivo automatizacije?
IETF je 2002. godine predložio sljedeće ideje u RFC3535 (u stvari ih ima 33. Na osnovu internetskih informacija i znanja autora, napisao sam sljedeće ideje):
1. Postoji programabilni interfejs za mrežnu konfiguraciju
2. Ista konfiguracija se može koristiti među proizvođačima i modelima
3. Potreba da se objedini jezik modeliranja sa dobrom čitljivošću
4. Kompletna provjera grešaka i funkcije oporavka
5. Transakcioni
Ako imate ideju, samo je implementirajte. 2006. IETF je predložio Netconf protokol, koji je riješio probleme koje je pokrenuo RFC3535. Početni Netconf je samo odredio osnovni okvir i operacije protokola i definisao rješenja koja su uzela u obzir neke probleme RFC3535. Nije predviđao jedinstven jezik modeliranja. Stoga je oprema nekih ranih proizvođača podržavala samo neke osnovne operacije Netconf-a, a nije koristila objedinjeni donji sloj. Jezik modeliranja podataka.
RFC6020 je objavljen 2010. godine, predlažući jezik modeliranja YANG modela i metodu njegovog kombinovanja sa NETCONF-om. Jedna definicija je jezik za modeliranje podataka koji objedinjuje osnovnu logiku resursa između proizvođača, a druga definicija je ujedinjeni skup naredbi za operacije svakog proizvođača nad konfiguracijskim podacima i podacima o statusu. Instance podataka koje kreira YANG model su umotane u Netconf protokol. Prijenos, dva se međusobno kombinuju kako bi se izgradio novi set univerzalnih mrežnih programabilnih interfejsa za novu eru baziranih na YANG modelu i vođenih Netconf protokolom.
Nakon 2016., Netconf protokol je usko integriran sa YANG modelom i postao je popularan. Do sada, kada pogledamo neke softverske aspekte arhitekture SDN, čuli smo ova dva termina manje-više.
YANG i Netconf, jedan je statičan, a drugi dinamičan, baš kao jin i jang. Njih dvoje su izveli 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. Hajde da prvo razgovaramo o jeziku za modeliranje podataka YANG da vidimo kako on opisuje digitalnog blizanca ovog mrežnog sveta.
YANG Model
U dokumentu RFC6020, početno 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 modeliranja koji se koristi za opisivanje mrežnih koncepata.
Podržava definiciju lista, rječnika i još složenijih struktura podataka, podržava ograničenja, nabrajanja, uvoz referenci, upravljanje verzijama i prostore imena. Zbog prostora daćemo kratko objašnjenje. Za detaljnije informacije možete pogledati:
Ovaj mrežni uređaj može vrlo jednostavno opisati strukturiranim jezikom. Na primjer, za definiciju porta:
Kao profesionalno osoblje za rad i održavanje, s malo osnova mreže i malo osnova programiranja, možete relativno jasno razumjeti definiciju porta. To je struktura liste i može biti višestruka. Jedan od njegovih atributa je ime interfejsa (također ključ). , jedinstveni, neponovljivi), kao i atribut brzine i atribut dupleksa, a oba su nizovi.
Mnogi atributi mrežnog uređaja opisani su YANG modelom, uključujući status konfiguracije i radni status.
Na ovaj način YANG model opisuje online svijet koristeći strukturirani jezik. Ako ste zainteresovani, možete pročitati gornji internet blog post, koji ima veoma detaljan opis.
Može se vrlo dobro pretvoriti u XML podatke i umotati u Netconf protokol za prijenos (objasnit ćemo to kasnije):

Istovremeno, kako bi se izjednačile razlike između dobavljača, Openconfig, predvođen Google-om, je standardizirao model podataka. Sa službene web stranice vidimo slogan "Upravljanje mrežom vođeno od strane dobavljača, dizajnirano od strane korisnika", koji su osmislili korisnici i na više platformi. Mrežno programiranje vođeno modelom zajedničkog dobavljača (prevedimo ga prvo na ovaj način). Pojednostavljeno rečeno, to je da modeliranje između različitih proizvođača bude isto, 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 će uvijek kreirati nove i bolje privatne protokole za "bolje korisničko iskustvo" i "bolju poslovnu strategiju" (ovo je zaista izvorni grijeh proizvođača mreža). Slika prikazuje neke od najčešće korištenih implementacija openconfig yang modela.


Sudeći po slici, mislim da ih ima dosta, a uobičajene konfiguracije su relativno kompletne. Ali u praksi zavisi od toga da li proizvođač podržava i ove yang modele. Neki uređaji viših verzija određene teme su u osnovi podržani. Domaće još nisam bolje pogledao.
Mreže ne mogu biti potpuno iste. Za inženjera koji se bavi upravljanjem mrežom i razvojem održavanja, sreća je da može postići isti cilj!
openconfig se može nać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, hajde da pričamo o Netconf protokolu. Yang model definira digitalni opis mrežnog svijeta, a Netconf definira akviziciju (dobivanje) i prilagođavanje (config) podataka.
Netconf inkapsulira podatke svijeta opisane yang modelom za realizaciju upravljanja mrežnim svijetom.

Yang podaci se inkapsuliraju u xml, a zatim se njima upravlja preko Netconf protokola. To je protokol sa sjajnom slojevitom idejom, koja opisuje neke detalje protokola na hijerarhijski način. Pogledajmo gornju sliku.
-Prenos: Netconf se prenosi preko SSH protokola, orijentisan je na vezu i ima sigurnosne garancije.
-Poruka: Uputite daljinski poziv mrežnom uređaju preko RPC-a, menadžer mreže izdaje rpc zahtjev, a mrežni uređaj nastavlja rpc-odgovor.
-Operacija: Ovo je duša Netconf-a. Podržava get (podaci o konfiguraciji i pokretanju), get-config (dobivanje konfiguracijskih podataka, a uređaj može imati više konfiguracijskih podataka, jedan pokrenut, jedan pokretan, više kandidata), edit -config (konfiguriraj parametre mrežnog uređaja, podržava dodavanje, brisanje i modifikacija), delete-config, copy-config (kopirajte konfiguraciju na odredište, odredište može biti ftp, datoteka ili pokrenuta konfiguracija, itd.), lock\unlock (zaključajte konfiguraciju kako biste spriječili konfiguracijske sukobe ili kvarove uzrokovane višeprocesne operacije) i tako dalje.
-Podaci: podaci su yang podaci umotani u xml. Kao i port koji smo opisali gore, strukturirane podatke je lako programirati. Koristi se za opisivanje podataka koje treba konfigurirati, izbrisati ili dobiti.
Ovo su četiri sloja Netconf-a. Kontrolni kraj i mrežni uređaj komuniciraju preko Netconf-a, preko tradicionalnog ssh protokola, koristeći Netconf podsistem, a podrazumevani port je 830. Kao što je prikazano ispod:

Ova slika pokazuje interakciju korištenjem sirovog ssh-a, ali u stvari mi implementiramo ovaj proces kroz programiranje. Kasnije ću vam demonstrirati metodu implementacije programiranja.
Netconf konfigurira mrežne uređaje. Proces interakcije je otprilike sljedeći:

Ova slika je tako niska, takođe možete vidjeti da sam je ja nacrtao... Moje razumijevanje Netconf-a je kao gore. Mislim da na Internetu ima mnogo slika koje nisu tačne i mnoga ponašanja agenta servera nisu tačna. To je ono što intuitivno osjećam kada se prijavim na uređaj, i naravno odgovara jedan na jedan sa zvaničnom dokumentacijom.
Možemo pogledati neke Netconf primjere:
Zdravo, napravi link.

Vidjeli smo nekoliko ključnih riječi, Netconf verziju, podržani YANG model, id sesije. U isto vrijeme, hello označava u kojem imenskom prostoru radimo. U ovom slučaju, to je odgovarajuća verzija Netconf-a.
Preuzmite konfiguraciju

Jedan parametar get-cofig-a je izvor, gde se dobijaju konfiguracioni podaci (pokretanje, pokretanje ili drugo). Drugi parametar je filter, odnosno koji se podaci dobijaju iz modela podataka koji je opisan kojim yang modelom. Ovo odgovara mogućnostima koje je izvorno poslao mrežni uređaj. Ako bude uspješan, bit će vraćeni odgovarajući konfiguracijski podaci.
Nabavite konfiguracijske ili tekuće podatke

Slično get-config, ali ono što se dobija je konfiguracija pokretanja (lično razumevanje) ili pokretanje podataka. Filter se može specificirati.
Kopiraj konfiguraciju

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

Prilikom uređivanja konfiguracije, navedite stavku podataka koju želite uređivati, imenski prostor mogućnosti i odgovarajuću oznaku. Na primjer, ovo je za konfiguraciju dhcp-a, koji je opisan yang modelom http://tail-f.com/ns/example/dhcp.
Graciozno zatvorite sesiju

To je ova vrsta poruke koja se prenosi naprijed-nazad u ssh. Mi samo izdvajamo dio poruke kako bismo svima olakšali razumijevanje.
Zatim jednostavno dodajte neki sadržaj za referencu.
-Netconf je baziran na sesiji, a svaki uspjeh će imati ID sesije.
-Svaki zahtjev ima ID poruke, sve dok se postepeno povećava
-Konfiguracija podataka može biti zaključana, isključiva i kojom se može upravljati putem zaključavanja.
-Netconf je transakcijski, a operacije su ili sve implementirane ili nikakve. Istovremeno, prema dokumentaciji službene web stranice, ova transakcija je za konfiguraciju N mrežnih uređaja, odnosno jednokratni konfiguracijski polimorfizam može podržati transakcionalnost. Ali nisam to još uradio…
-Netconf podržava pretplatu. Što se tiče performansi uređaja, red veličine je oko 5 sesija. Mogu se pretplatiti na određenu stavku podataka i uređaj će me obavijestiti kada se promijeni.
- Sposobnost, ovako ja to razumem. Mrežni uređaj šalje verziju Netconf-a i YANG modela, a kontrolni terminal šalje verziju Netconf-a. Tek kada se verzija Netconf-a poklopi s njima, možemo nastaviti. Ovo je moj intuitivni osjećaj. Svaki savjet je dobrodošao.
-Operacije kao što je get edit će odrediti podatke koje treba promijeniti, a koji se mogu filtrirati pomoću filtera.
-copy-config podržava kopiranje kompletnog skupa konfiguracija s nekog mjesta na neko mjesto. Negdje može biti FTP datoteka, konfiguracije pokretanja, pokretanja i kandidata na uređaju.
-Netconf također podržava verifikaciju konfiguracije, koristeći operaciju validacije.
Ovaj članak se i dalje nada popularizaciji nauke i neću ulaziti u detalje. Možete pročitati relevantne protokole RFC-a, što zapravo nije jako dugo.
U praksi, na osnovu nekog softvera otvorenog koda, kao što je python-ov ncclient, možemo lako automatski konfigurisati mrežne uređaje i postići mrežnu programibilnost. Ovo je misija Netconf 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 osnovu operacija koje je definirao Netconf. Na ovaj način se kuje put do programiranja mreže.
Proširimo i zamislimo da je YANG model definirao strukturu podataka mrežnog uređaja. Možemo njime upravljati preko Netconf-a. Može li se njime raditi i preko drugih protokola?
Odgovor je da. U stvari, mnogi drugi protokoli su izvedeni iz Netconf-a, kao što je RESTConf. Kao što je prikazano ispod,

YANG model (javni i native) definiše strukturu podataka iznad koje se nalaze novi protokoli za upravljanje mrežom, Netconf, RESTCon, gRPC, itd. Na ovaj način možemo upravljati mrežnim uređajima preko RESTConf baziranog na HTTP RESTful API-ju, možemo upravljati i mrežom uređaja preko Netconf-a baziranog na SSH-u, ili možemo upravljati mrežnim uređajima preko gRPC-a baziranog na HTTP2.0. Svi su bazirani na YANG-u sa dobrom strukturom podataka. Modelirajte, napišite odgovarajuće podatke, inkapsulirajte ih u xml ili json za programiranje mrežnih uređaja. Ovo je budućnost programiranja mreže. Da budemo precizni, to je program vođen modelom, programiranje mreže zasnovano na modelu. Mrežni inženjeri se postepeno fokusiraju na parametre uređaja umjesto na skup komandi i konfigurišu mrežne parametre čitanjem odgovarajućeg modela podataka.
Na kraju pišem zašto da otvaram ovaj javni nalog. Studirao sam informatiku i tehnologiju dok sam bio u školi. Nakon ulaska na radno mjesto bavio sam se radom mreže i održavanjem. Razmišljajući o tome, razlog zašto sam bio podijeljen u timove mogao bi biti taj što sam bio student na Istraživačkom institutu za mrežne tehnologije (priručnik smiješno). Od samog početka bio sam uključen u mrežne operacije. U kasnijoj fazi rada i održavanja korišćeni su alati za pojednostavljenje rada i poboljšanje efikasnosti na osnovu CLI. Kasnije su alati postepeno razvijeni u BS-strukturirane web aplikacije. Stalno su bili izloženi novim tehnologijama i nastavili da obogaćuju nove funkcije.
Srećom, uhvatili su korak sa razvojem tehnologije otvorenog koda i SDN-a, a ja sam postepeno prešao na NetDevOps rad i koristio svoje veštine programiranja da poboljšam rad i sposobnosti tima za održavanje. Također sam uživao u pisanju ove linije koda. Kako pisanje napreduje, postepeno 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 visokom nivou i brzu implementaciju. Osvrćući se na neke informacije na internetu, da budem iskren, u Kini je jako malo, a domaća atmosfera nije baš jaka. Mnogi domaći softveri su bazirani na starom CLI-u i snmp-u, a svi još uvijek koriste tekstualne alate i SSH alate za rad. Tako da se nadam da jamogu naučiti druge kako da pecaju, podijelim svoje iskustvo (jame) i vještine sa 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 mogu zaista evoluirati prema automatizaciji.
U budućnosti ću snimiti nekoliko videa i napisati neke članke. Zaista je naporno napisati dokument. Možete se pretplatiti, prikupiti, kliknuti like i pogledati.
dodatak: Netconf uobičajene operacije

Dizajn DWDM OTN rješenja i ponuda troškova, molimo povežite se sa mnom, Taylor Huang















































