
Minu jagatud seotud artiklite jaoks võrgu automatiseerimise kohta vaadake kataloogi "NetDevOps nullist"
Viimastel aastatel on globaalse pilvandmetöötluse valdkonna pideva arengu ja äritegevuse pideva kasvuga jätkuvalt arenenud ka võrgutehnoloogia ning esile on kerkinud SDN-tehnoloogia. Algsest põhiideest – Openflow’l põhinevast edastamise ja juhtimise eraldamisest – jätkavad inimesed laienemist SDN-i laienduses on praegu võimalik jõuda üksmeelele, et Openflow ei ole enam vajalik tingimus (aga edastamise ja juhtimise eraldamine on endiselt põhitingimus) ja võrgu programmeeritavus on aeglaselt muutunud üheks oluliseks kriteeriumiks SDN-i arhitektuuri mõõtmisel.
Traditsiooniliste võrguseadmete programmeeritavad toimingud põhinevad üldiselt CLI ja SNMP protokollidel. Olenemata sellest, kas skriptid või võrguhaldustarkvara, on need kõik selle põhjal välja töötatud, et saavutada lai valik võrgu programmeeritavust, millest täna räägime. võimalusi, realiseerides seeläbi paljude stsenaariumide automatiseerimise. Mõned seadmed toetavad mõne veebiliidese konfigureerimist ja üldise konfiguratsiooni asendamist xml-i kaudu. Need on väga haruldased ja neid ei kirjeldata selles artiklis üksikasjalikult.
CLI
CLI (Command-line Interface) realiseerib inimese ja arvuti suhtlust käsurea kaudu. See on võrgutöötajate jaoks vajalik oskus. Inimesed avavad iga päev seadmes tarkvara SSH või Telneti, seejärel kleebivad konfiguratsiooni, salvestavad selle ja jõustuvad. Ühel päeval tüdinesid inimesed sellisest kordamisest ja kasutasid programmi, mis genereeris automaatselt konfiguratsiooniskripte, logis seadmesse partiidena sisse ja väljastas konfiguratsioonid, mis jõustusid, realiseerides automatiseerimise. See on võrgu programmeeritav meetod. Räägime eelistest, mis on väga kooskõlas inimeste mõtlemise, ideede ja olemasolevate tehniliste süsteemidega. Kuid lõppkokkuvõttes eelistab see lähenemisviis inimesi võrguseadmete asemel. Sellel on järgmised puudused:
-Käsukomplektides on tootjate vahel suuri erinevusi. Mitte ainult tootjatel, vaid ka sama mudeli erinevatel tarkvaraversioonidel võivad olla väga erinevad erinevused.
-Arendajad peavad olema kursis käsukomplekti ja selle kasutamisega. Konfiguratsiooni tasemel on turvariske. Näiteks muutus port, mida tahtsin avada, ühe käeliigutusega pordi sulgemiseks...
-Edastusprotokollidele (SSH ja Telnet) pole kohustuslikke nõudeid ning on olemas tootmise turvariskid.
- Konfiguratsioonide sõelumise ja genereerimise protsess on äärmiselt keeruline. Paljudel juhtudel saavad kirja pandud tavareeglid olla vaid lõpmatult lähedal "tõele", kuid mitte kogu "tõele".
- Tehingut ei toimu ja konfiguratsioon võib osaliselt jõustuda ja osa mitte jõustuda.
-Automatiseeritud kontrollimehhanism puudub ja see sõltub täielikult inimestest. Näiteks tahan testida, kas genereeritud skript on õige. On olemas viis, kuid see on väga raske ja sageli raske lihtsalt rakendada.
- Andmete modelleerimisest pole aimugi
CLI on alati inimese ja arvuti suhtluse viis. See võib anda võrgule programmide kaudu teatud programmeeritavuse, kuid lõppude lõpuks pole see meetod, mis on oma olemuselt võrgus programmeeritav. Praeguse pilvandmetöötluse ja SDN-i laine tingimustes ei sobi see võrgus suuremahuliseks automatiseeritud juurutamiseks ning selle programmeeritavus on piiratud. Väljastpoolt tulijatel on raske mõista arengu raskust.
SNMP
SNMP (SNMP, Simple Network Management Protocol), see protokoll võib toetada võrguhaldussüsteeme, et jälgida, kas võrku ühendatud seadmetes on olukordi, mis põhjustavad juhtkonna tähelepanu. See koosneb võrguhaldusstandardite komplektist, sealhulgas rakenduskihi protokollist, andmebaasiskeemist ja andmeobjektide komplektist.
Vikipeedia sisu puhul tõstame esile võrguhalduse, jälgimise ja andmeobjektid. Seda kasutatakse võrgu haldamiseks, seda saab konfigureerida ja koguda ning seda kasutatakse peamiselt jälgimiseks. Sellel on andmemodelleerimine, et struktureerida mõned võrguseadmete moodulid, omadused ja olekuandmed. Seda kasutatakse peamiselt võrguhaldussüsteemide jaoks (enamasti seireks). Seejärel räägime selle puudustest:
- Halb loetavus. Inimene-masin eelistab "masinat". See ei ole kasutamisel loetav ja ka modelleerimisandmed pole loetavad. See kasutab ASN.1 superkomplekti.
- Turvalisus on piiratud. Seal on kolm versiooni: v1, v2c ja v3 ning turvalisust täiustatakse järjest. Kõige tavalisem on aga v2c, mille turvalisus on piiratud. V3 versioon on disainilt väga turvaline, kuid see pole universaalne. . .
- Varundamise, taastamise või tagasipööramise mehhanismi pole. Meil on käsurea varundamiseks ka show run ja muud meetodid, kuid snmp. . .
- Väga vähe kirjutab. Loe palju, kirjuta vähe, kasutatakse enamasti jälgimiseks.
- Kogutavate andmeüksuste arv on piiratud ja kogu seadme konfiguratsiooni pole võimalik hankida. Sageli leiame, et saame selle kogumiseks kasutada cli-d, kuid me ei saa selle kogumiseks kasutada snmp-d.
- Esineb tulemuslikkuse kitsaskoht. Kogutavate andmete ülempiir on 64 000 ja kogumise detailsus on liiga suur. Suurtes ja keerulistes võrkudes võib selleks kuluda minuteid või kauem. See tõstab esile ka olulise punkti. Meie nõuded granulaarsusele on samuti väga ranged. Paljudel juhtudel loodame koguda sadama liiklust iga paari sekundi tagant. Suurtes võrkudes arvan, et traditsiooniline võrguhaldustarkvara on… Kui veel ühte lauset laiendada, siis praegune meetod on telemeetria (nt gRPC), mis suudab saavutada mikrosekundi taseme ja mõned nõuavad tarkvara ja riistvara kombinatsiooni. See pole veel populaarne, kuid tulevikus peab see olema trend. Mis puutub sellesse, millal see tulevikus tuleb…
- Alates selle sünnist on SNMP-d palju kasutatud võrguseire valdkonnas, et saada jälgimiseks andmeid. Konfiguratsioonivõimaluste puudumine ja keerukus on viinud selle vähese kasutamiseni võrgukonfiguratsioonis. Programmeeritav kirjutuskaitstud võrk.
Netconf protokoll ja YANG mudel
Milliseid võrguhaldusprotokolle vajame võrgu programmeeritavuse paremaks realiseerimiseks ja automatiseerituse taseme parandamiseks järgmise põlvkonna võrkude ees?
IETF pakkus 2002. aastal RFC3535-s välja järgmised ideed (tegelikult on neid 33. Interneti-info ja autori teadmiste põhjal kirjutasin järgmised ideed):
1. Võrgu konfigureerimiseks on programmeeritav liides
2. Sama konfiguratsiooni saab kasutada erinevatel tootjatel ja mudelitel
3. Vajadus ühtlustada hea loetavusega modelleerimiskeel
4. Täitke vigade kontrollimise ja taastamise funktsioonid
5. Tehing
Kui teil on idee, siis lihtsalt viige see ellu. 2006. aastal pakkus IETF välja Netconfi protokolli, mis lahendas RFC3535 tõstatatud probleemid. Esialgne Netconf sätestas ainult protokolli põhiraamistiku ja toimingud ning määratles lahendused, mis võtsid arvesse mõningaid RFC3535 probleeme. See ei näinud ette ühtset modelleerimiskeelt. Seetõttu toetasid mõned varasemate tootjate seadmed ainult mõnda Netconfi põhitoimingut ega kasutanud ühtset alumist kihti. Andmete modelleerimise keel.
RFC6020 ilmus 2010. aastal, pakkudes välja YANG mudeli modelleerimiskeele ja meetodi selle kombineerimiseks NETCONF-iga. Üks definitsioon on andmemodelleerimiskeel, mis ühendab aluseks oleva ressursiloogika tootjate vahel, ja teine definitsioon on ühtne käsukomplekt iga tootja toimingute jaoks konfiguratsiooniandmete ja olekuandmetega. YANG mudeliga loodud andmeeksemplarid pakitakse Netconfi protokolli. Edastamine, need kaks kombineeritakse üksteisega, et luua uue ajastu jaoks uus universaalsete programmeeritavate võrguliideste komplekt, mis põhineb YANG-mudelil ja mida juhib Netconf protokoll.
Pärast 2016. aastat integreeriti Netconfi protokoll tihedalt YANG mudeliga ja sai populaarseks. Siiani, kui vaatame mõningaid SDN-i arhitektuuritarkvara aspekte, oleme neid kahte terminit enam-vähem kuulnud.
YANG ja Netconf, üks on staatiline ja teine dünaamiline, nagu yin ja yang. Need kaks on tuletanud järgmise ajastu võrgu programmeeritava maailma. (Kui vaatame githubis YANGi ladu, avastame ka, et selle ikoon on Tai Chi ning seos selle nime ja "Yangi" vahel paljastab mõnevõrra algse disaineri disainiideed).
Järgmisena räägime lühidalt YANG mudelist ja Netconfi protokollist. Räägime esmalt andmemodelleerimiskeelest YANG, et näha, kuidas see kirjeldab selle võrgumaailma digitaalset kaksikut.
YANG mudel
Dokumendis RFC6020 on avapeatükis selgelt öeldud YANG, võrgukonfiguratsiooniprotokolli andmete modelleerimiskeel. See on lühend sõnast Yet Another Next Generation (Yang) andmemodelleerimiskeel. See on modelleerimiskeel, mida kasutatakse võrgukontseptsioonide kirjeldamiseks.
Toetab loendite, sõnaraamatute ja veelgi keerukamate andmestruktuuride määratlemist, toetab piiranguid, loendeid, viidete importi, versioonihaldust ja nimeruume. Ruumipuuduse tõttu anname lühikese selgituse. Üksikasjaliku teabe saamiseks võite vaadata:
See suudab seda võrguseadet kirjeldada väga lihtsalt struktureeritud keeles. Näiteks pordi määratluse jaoks:
Professionaalse operatiiv- ja hoolduspersonalina, kellel on natuke võrgu põhitõdesid ja veidi programmeerimise põhitõdesid, saate pordi määratlusest suhteliselt selgelt aru. See on loendi struktuur ja neid võib olla mitu. Üks selle atribuutidest on liidese nimi (ka võti). , kordumatu, mittekorduv), samuti kiiruse atribuut ja dupleksatribuut, mis mõlemad on stringid.
YANG mudel kirjeldab paljusid võrguseadme atribuute, sealhulgas konfiguratsiooni olekut ja tööolekut.
Sel viisil kirjeldab YANG mudel võrgumaailma struktureeritud keele abil. Huvi korral saate lugeda ülaltoodud Interneti-blogi postitust, millel on väga põhjalik kirjeldus.
Seda saab väga hästi teisendada XML-andmeteks ja pakkida edastamiseks Netconfi protokolli (selgitame seda hiljem):

Samas on hankijate erinevuste tasandamiseks Google’i juhitud Openconfig andmemudeli standardiseerinud. Ametlikul veebisaidil näeme loosungit "Kasutajate poolt kujundatud tarnija-neutraalne, mudelipõhine võrguhaldus", mis on kujundatud kasutajate ja platvormidevaheliselt. Müüjate levinud mudelipõhine võrguprogrammeerimine (tõlgime selle kõigepealt nii). Lihtsamalt öeldes tähendab see erinevate tootjate vahelise modelleerimise ühesuguseks muutmist, et teatud andmete seadistamisel ei peaks iga tootja privaatset yang-mudelit ükshaaval läbi vaatama. Kuid Internetis on alati privaatprotokollid ja erinevad tootjad loovad alati uusi ja paremaid privaatprotokolle "parema kasutajakogemuse" ja "parema äristrateegia" jaoks (see on tõesti võrgutootjate algpatt). Pildil on mõned sagedamini kasutatavad openconfig yangi mudeli teostused.


Pildi järgi otsustades arvan, et neid on päris palju ja üldkasutatavad konfiguratsioonid on suhteliselt komplekteeritud. Kuid praktikas sõltub see sellest, kas tootja toetab ka neid yang-mudeleid. Põhimõtteliselt toetatakse teatud teema kõrgemate versioonide seadmeid. Kodumaiseid pole ma veel lähemalt vaadanud.
Võrgud ei saa olla täpselt samad. Võrgu käitamise ja hoolduse arendusega tegelevale insenerile on õnn sama eesmärgini jõudmine!
openconfigi leiate aadressilt https://github.com/openconfig/public/tree/master/release/models
Privaatseid yang-mudeleid leiate erinevatelt ametlikelt veebisaitidelt.
Netconf protokoll
Pärast yang-mudelist rääkimist räägime Netconfi protokollist. Yang-mudel määratleb võrgumaailma digitaalse kirjelduse ja Netconf defineerib andmete hankimise (get) ja kohandamise (konfiguratsiooni).
Netconf kapseldab yang-mudeliga kirjeldatud maailma andmed, et realiseerida võrgumaailma haldamine.

Yangi andmed kapseldatakse xml-i ja seejärel hallatakse Netconfi protokolli kaudu. See on suurepärase kihilise ideega protokoll, mis kirjeldab protokolli mõningaid detaile hierarhiliselt. Vaatame ülaltoodud pilti.
-Edastamine: Netconf edastatakse SSH-protokolli kaudu, on ühendusele orienteeritud ja sellel on turvagarantiid.
- Sõnum: tehke RPC kaudu võrguseadmele kaugkõne, võrguhaldur väljastab RPC-päringu ja võrguseade jätkab rpc-reply saatmist.
-Kasutus: see on Netconfi hing. See toetab get (konfiguratsiooni- ja käitamisandmed), get-config (konfiguratsiooniandmete hankimine ja seadmel võib olla mitu konfiguratsiooniandmeid, üks töötab, üks käivitamine, mitu kandidaatkandidaati), redigeerimine -config (võrguseadme parameetrite seadistamine, toetab lisamist, kustutamine ja muutmine), delete-config, copy-config (konfiguratsiooni kopeerimine sihtkohta, sihtkohaks võib olla ftp, fail või töötav konfiguratsioon jne), lukustada\unlock (lukustada konfiguratsioon, et vältida konfiguratsioonikonflikte või tõrkeid, mis on põhjustatud mitme protsessiga toimingud) ja nii edasi.
-Andmed: andmed on XML-i pakitud yang-andmed. Sarnaselt ülalkirjeldatud pordiga on struktureeritud andmeid lihtne programmeerida. Kasutatakse konfigureeritavate või kustutatavate või hankitavate andmete kirjeldamiseks.
Need on Netconfi neli kihti. Juhtots ja võrguseade suhtlevad Netconfi kaudu traditsioonilise ssh-protokolli kaudu, kasutades Netconfi alamsüsteemi ja vaikeport on 830. Nagu allpool näidatud:

See joonis näitab interaktsiooni töötlemata ssh-ga, kuid tegelikult rakendame seda protsessi programmeerimise kaudu. Programmeerimise rakendamise meetodit demonstreerin teile hiljem.
Netconf konfigureerib võrguseadmed. Interaktsiooniprotsess on ligikaudu järgmine:

See pilt on nii madal, et näete ka, et see on minu joonistatud... Minu arusaam Netconfist on nagu ülalpool. Arvan, et Internetis on palju pilte, mis pole õiged, ja paljud serveriagendi käitumised pole õiged. Seda tunnen ma seadmesse sisse logides intuitiivselt ja loomulikult vastab see üks-ühele ametlikule dokumentatsioonile.
Võime vaadata mõnda Netconfi näidet:
Tere, loo link.

Nägime mitmeid märksõnu, Netconfi versiooni, toetatud YANG mudelit, seansi ID-d. Samas näitab tere, millises nimeruumis me tegutseme. Sel juhul on tegemist Netconfi vastava versiooniga.
Hangi konfiguratsioon

Üks get-cofigi parameeter on allikas, kust saadakse konfiguratsiooniandmed (töötamine, käivitamine või muu). Teine parameeter on filter, st millised andmed saadakse millise yang-mudeli poolt kirjeldatud andmemudelist. See vastab võrguseadme algselt saadetud võimalusele. Edu korral tagastatakse vastavad konfiguratsiooniandmed.
Hankige konfiguratsiooni- või tööandmeid

Sarnaselt get-configiga, kuid saadakse jooksev konfiguratsioon (isiklik arusaam) või käitatavad andmed. Filtrit saab määrata.
Kopeeri konfiguratsioon

Kopeerimisel on kaks parameetrit: allikas ja sihtkoht. Edukas vastus on ok-sildiga.
Muuda konfiguratsiooni

Konfiguratsiooni muutmisel määra redigeeritav andmeüksus, võimekuse nimeruum ja vastav silt. Näiteks dhcp seadistamiseks, mida kirjeldab yang mudel http://tail-f.com/ns/example/dhcp.
Lõpetage seanss elegantselt

Just sellist sõnumit edastatakse ssh-s edasi-tagasi. Me lihtsalt eraldame osa sõnumist, et hõlbustada kõigi arusaamist.
Seejärel lisage lihtsalt viideteks sisu.
-Netconf põhineb seansil ja igal õnnestumisel on seansi ID.
-Igal päringul on sõnumi ID, kui see järk-järgult suureneb
-Andmete konfiguratsiooni saab lukustada, eksklusiivselt kasutada ja lukustada.
-Netconf on tehingupõhine ja toimingud on kas kõik rakendatud või mitte ühtegi. Samal ajal on ametliku veebisaidi dokumentatsiooni kohaselt see tehingulisus N võrguseadme konfigureerimiseks, see tähendab, et ühekordne konfiguratsiooni polümorfism võib toetada tehinguid. Aga ma pole seda veel teinud…
-Netconf toetab tellimust. Seadme jõudluse osas on suurusjärk umbes 5 seanssi. Saan tellida teatud andmeüksuse ja seade teavitab mind, kui see muutub.
-Võime, ma saan sellest nii aru. Võrguseade saadab Netconfi ja YANG mudeli versiooni ning juhtterminal saadab Netconfi versiooni. Ainult siis, kui Netconfi versioon vastab neile kahele, saame jätkata. See on minu intuitiivne tunne. Igasugune nõuanne on teretulnud.
-Operatsioonid, nagu saada redigeerimine, määravad muudetavad andmed, mida saab filtri abil filtreerida.
-copy-config toetab täieliku konfiguratsioonikomplekti kopeerimist kuskilt kuhugi. Kusagil võib olla FTP-fail, töötav, käivitatav ja seadme kandidaatkonfiguratsioonid.
-Netconf toetab ka konfiguratsiooni kontrollimist, kasutades valideerimistoimingut.
See artikkel loodab endiselt teadust populariseerida ja ma ei lasku detailidesse. Saate lugeda vastavaid RFC protokolle, mis tegelikult pole väga pikk.
Praktikas saame mõne avatud lähtekoodiga tarkvara, näiteks pythoni ncclienti, põhjal hõlpsasti võrguseadmeid automaatselt konfigureerida ja võrgu programmeeritavuse saavutada. See on Netconfi ja YANG mudeli missioon.
Võrgutöötajad loevad hästi vormindatud YANG-mudeli määratlusi ja kasutavad Netconfi määratletud toimingute põhjal võrguseadmetes programmeeritavate toimingute tegemiseks asjakohaseid programmeerimiskeeli. Sel viisil sepistatakse tee võrgu programmeeritavuseni.
Laiendame ja kujutame ette, et YANG mudel on määratlenud võrguseadme andmestruktuuri. Saame seda kasutada Netconfi kaudu. Kas seda saab kasutada ka muude protokollide kaudu?
Vastus on jah. Tegelikult on Netconfist tuletatud palju muid protokolle, näiteks RESTConf. Nagu allpool näidatud,

YANG-mudel (avalik ja native) määratleb andmestruktuuri, mille kohal on uued võrguhaldusprotokollid, Netconf, RESTCon, gRPC jne. Sel viisil saame kasutada võrguseadmeid HTTP RESTful API-l põhineva RESTConfi kaudu, samuti saame opereerida võrku seadmeid SSH-l põhineva Netconfi kaudu või saame kasutada võrguseadmeid HTTP2-l põhineva gRPC kaudu.0. Need kõik põhinevad hea andmestruktuuriga YANG-il. Modelleerige, kirjutage vastavad andmed, kapseldage need xml-i või json-i, et programmeerida võrguseadmeid. See on võrgu programmeeritavuse tulevik. Täpselt öeldes on see mudelipõhine programm, mudelipõhine võrguprogrammeeritavus. Võrguinsenerid keskenduvad järk-järgult käsukomplekti asemel seadme parameetritele ja konfigureerivad võrguparameetrid vastavat andmemudelit lugedes.
Lõpus kirjutan, miks ma peaksin selle avaliku konto avama. Õppisin kooliajal arvutiteadust ja tehnoloogiat. Peale töökohale sisenemist tegelesin võrguoperatsiooni ja hooldustöödega. Sellele mõeldes võib põhjus, miks mind meeskondadesse jagati, peituda selles, et olin Võrgutehnoloogia uurimisinstituudi magistrant (manual naljakas). Olin algusest peale seotud võrguoperatsioonidega. Hilisemas käitamise ja hoolduse etapis kasutati CLI-l põhinevaid tööriistu töö lihtsustamiseks ja efektiivsuse tõstmiseks. Hiljem arendati tööriistu järk-järgult BS-struktuuriga veebirakendusteks. Nad puutusid pidevalt kokku uute tehnoloogiatega ja jätkasid uute funktsioonide rikastamist.
Õnneks jõudsid nad avatud lähtekoodiga tehnoloogia ja SDN-i arengule järele ning järk-järgult läksin NetDevOpsi tööle ning kasutasin oma programmeerimisoskusi meeskonna töö- ja hooldusvõimaluste parandamiseks. Mulle meeldis ka selle koodirea kirjutamine. Kirjutamise edenedes avastatakse tasapisi, et NetDevOps peaks olema oskus, mis peaks tulevikus olema igal võrguinseneril (igaüks valab õli tulle), et saavutada nii kõrgetasemeline planeerimine kui ka kiire juurutamine. Vaadates tagasi mõningasele internetis leiduvale infole, siis ausalt öeldes on Hiinas seda väga vähe ja kodumaine õhkkond pole kuigi tugev. Paljud kodumaised tarkvarad põhinevad vanal CLI-l ja snmp-l ning kõik kasutavad endiselt tööks tekstitööriistu ja SSH-tööriistu. Nii et ma loodan, et masaab õpetada teistele kala püüdmist, jagada oma kogemusi (pits) ja oskusi rohkemate võrgu haldamise ja hoolduse inseneridega, ja annan endast parima. Xiao Chu ütles, et saate oma töökoormuse vähendamiseks midagi õppida ning kaugemasse tulevikku keskendudes võib kodumaise võrgu toimimine ja hooldus tõeliselt areneda automatiseerimise suunas.
Tulevikus salvestan mõned videod ja kirjutan mõned artiklid. Dokumendi kirjutamine tundub tõesti raske. Olete oodatud tellima, koguma, vajutama like ja vaatama.
lisa: Netconfi tavalised toimingud

DWDM OTN-lahenduse disain ja hinnapakkumine, palun ühendage minuga, Taylor Huang















































