
Voor gerelateerde artikelen die ik heb gedeeld over netwerkautomatisering, verwijzen wij u naar de catalogus "NetDevOps from Scratch"
De afgelopen jaren, met de voortdurende ontwikkeling van het mondiale cloud computing-veld en de voortdurende groei van het bedrijfsleven, is de netwerktechnologie zich ook blijven ontwikkelen en is de SDN-technologie opgekomen. Vanuit het oorspronkelijke kernidee van scheiding van forwarding en control op basis van Openflow breidt men zich steeds verder uit. In de uitbreiding van SDN kan men momenteel tot een consensus komen dat Openflow niet langer een noodzakelijke voorwaarde is (maar de scheiding van forwarding en control wel nog steeds een kernvoorwaarde), en netwerkprogrammeerbaarheid is langzaamaan een van de belangrijke criteria geworden voor het meten van een SDN-architectuur.
Programmeerbare bewerkingen van traditionele netwerkapparatuur zijn over het algemeen gebaseerd op CLI- en SNMP-protocollen. Of het nu gaat om scripts of netwerkbeheersoftware, ze worden allemaal op deze basis ontwikkeld om het brede scala aan netwerkprogrammeerbaarheid te bereiken waar we het vandaag over gaan hebben. mogelijkheden, waardoor de automatisering van veel scenario's wordt gerealiseerd. Sommige apparaten ondersteunen de configuratie van sommige webinterfaces en de vervanging van de algehele configuratie via XML. Deze zijn zeer zeldzaam en worden in dit artikel niet in detail beschreven.
CLI
CLI (Command-line Interface) realiseert interactie tussen mens en computer via de opdrachtregel. Het is een noodzakelijke vaardigheid voor netwerkwerkers. Mensen openen elke dag de software SSH of Telnet op het apparaat, plakken vervolgens een configuratie, slaan deze op en worden van kracht. Op een dag werden mensen dit soort herhalingen beu en gebruikten ze een programma om automatisch configuratiescripts te genereren, in batches op het apparaat in te loggen en configuraties uit te voeren om ze van kracht te laten worden, waardoor automatisering werd gerealiseerd. Dit is een netwerkprogrammeerbare methode. Laten we het hebben over de voordelen, die zeer consistent zijn met het denken, de ideeën en de bestaande technische systemen van mensen. Maar uiteindelijk bevoordeelt deze aanpak mensen boven netwerkapparaten. Het heeft de volgende nadelen:
-Er zijn enorme verschillen in commandosets tussen fabrikanten. Niet alleen fabrikanten, maar ook verschillende softwareversies van hetzelfde model kunnen zeer verschillende verschillen hebben.
-Ontwikkelaars moeten bekend zijn met de opdrachtenset en hoe deze te gebruiken. Er zijn beveiligingsrisico's op configuratieniveau. Met een handbeweging veranderde de poort die ik wilde openen bijvoorbeeld in het sluiten van de poort...
-Er zijn geen verplichte vereisten voor transmissieprotocollen (SSH en Telnet) en er zijn productieveiligheidsrisico's.
-Het proces van het parseren en genereren van configuraties is uiterst ingewikkeld. In veel gevallen kunnen de reguliere geschreven regels slechts oneindig dicht bij de ‘waarheid’ liggen, maar niet de hele ‘waarheid’.
-Er is geen sprake van transactionaliteit, en een configuratie kan gedeeltelijk in werking treden en een deel niet in werking treden.
-Er is geen geautomatiseerd inspectiemechanisme en het is volledig afhankelijk van mensen. Ik wil bijvoorbeeld testen of het gegenereerde script correct is. Er is een manier, maar deze is erg moeilijk en vaak moeilijk eenvoudig te implementeren.
-Geen idee van datamodellering
CLI is altijd een manier van mens-computerinteractie. Het kan het netwerk bepaalde programmeermogelijkheden geven via programma's, maar het is tenslotte geen methode die inherent netwerkprogrammeerbaar is. Onder de huidige golf van cloud computing en SDN is het niet geschikt voor grootschalige geautomatiseerde implementatie in het netwerk, en is de programmeerbaarheid ervan beperkt. Het is voor buitenstaanders moeilijk om de moeilijkheid van ontwikkeling te begrijpen.
SNMP
SNMP (SNMP, Simple Network Management Protocol), dit protocol kan netwerkbeheersystemen ondersteunen om te controleren of de op het netwerk aangesloten apparaten zich in een situatie bevinden die de aandacht van het management vraagt. Het bestaat uit een reeks netwerkbeheerstandaarden, waaronder een applicatielaagprotocol, een databaseschema en een reeks gegevensobjecten.
Voor een stukje inhoud op Wikipedia benadrukken we netwerkbeheer, monitoring en data-objecten. Het wordt gebruikt om het netwerk te beheren, kan worden geconfigureerd en verzameld en wordt voornamelijk gebruikt voor monitoring. Het beschikt over datamodellering om sommige modules, kenmerken en statusgegevens van netwerkapparatuur te structureren. Het wordt voornamelijk gebruikt voor netwerkbeheersystemen (meestal monitoring). Laten we het dan hebben over de tekortkomingen ervan:
-Slechte leesbaarheid. Het geeft de voorkeur aan de "machine" in mens-machine. Het is niet leesbaar wanneer het wordt gebruikt, en de modelleringsgegevens zijn ook niet leesbaar. Het maakt gebruik van een superset van ASN.1.
-De beveiliging is beperkt. Er zijn drie versies: v1, v2c en v3, en de beveiliging wordt achtereenvolgens verbeterd. De meest voorkomende is echter v2c, die beperkte beveiliging biedt. De v3-versie is zeer veilig ontworpen, maar is niet universeel. . .
-Er is geen back-up-, herstel- of terugdraaimechanisme. We hebben ook show run en andere methoden om een back-up te maken van de opdrachtregel, maar snmp. . .
-Zeer weinig schrijft. Veel lezen, weinig schrijven, meestal gebruikt voor monitoring.
-De gegevensitems die kunnen worden verzameld zijn beperkt en de configuratie van het gehele apparaat kan niet worden verkregen. Vaak ontdekken we dat we cli kunnen gebruiken om het te verzamelen, maar we kunnen snmp niet gebruiken om het te verzamelen.
-Er is een prestatieknelpunt. De bovengrens van de verzamelde gegevens is 64 KB en de granulariteit van de verzameling is te groot. In grote en complexe netwerken kan dit minuten of langer duren. Dit benadrukt ook het belangrijke punt. Ook onze eisen aan granulariteit zijn zeer streng. Vaak hopen we elke paar seconden havenverkeer te verzamelen. In grote netwerken denk ik dat traditionele netwerkbeheersoftware... Om nog een zin uit te breiden: de huidige methode is telemetrie (zoals gRPC) die het microsecondeniveau kan bereiken, en sommige vereisen een combinatie van software en hardware. Het is nog niet populair, maar in de toekomst moet het een trend worden. En wanneer dit in de toekomst zal gebeuren...
-Sinds zijn geboorte wordt SNMP op grote schaal gebruikt op het gebied van netwerkmonitoring om gegevens voor monitoring te verkrijgen. Het gebrek aan en de complexiteit van configuratiemogelijkheden hebben ertoe geleid dat er weinig gebruik van wordt gemaakt bij netwerkconfiguratie. Alleen-lezen netwerk programmeerbaar.
Netconf-protocol en YANG-model
Wat voor soort netwerkbeheerprotocollen hebben we, met het oog op de volgende generatie netwerken, nodig om netwerkprogrammeerbaarheid beter te realiseren en het automatiseringsniveau te verbeteren?
De IETF stelde in 2002 de volgende ideeën voor in RFC3535 (eigenlijk zijn het er 33). Op basis van online informatie en de kennis van de auteur heb ik de volgende ideeën geschreven):
1. Er is een programmeerbare interface voor netwerkconfiguratie
2. Dezelfde configuratie kan door alle fabrikanten en modellen worden gebruikt
3. Noodzaak om een modelleertaal te verenigen met een goede leesbaarheid
4. Voltooi foutcontrole- en herstelfuncties
5. Transactioneel
Als je een idee hebt, voer het dan gewoon uit. In 2006 stelde de IETF het Netconf-protocol voor, waarmee de problemen van RFC3535 werden opgelost. De oorspronkelijke Netconf bepaalde alleen het basisframework en de werking van het protocol, en definieerde oplossingen die rekening hielden met enkele problemen van RFC3535. Er werd geen uniforme modelleringstaal voorgeschreven. Daarom ondersteunde de apparatuur van sommige vroege fabrikanten slechts enkele basisbewerkingen van Netconf en maakte geen gebruik van een uniforme onderlaag. Taal voor gegevensmodellering.
RFC6020 werd uitgebracht in 2010 en stelde de modelleertaal YANG Model voor en een methode om deze te combineren met NETCONF. Eén definitie is een datamodelleringstaal die de onderliggende resourcelogica tussen fabrikanten verenigt, en de andere definitie is een uniforme opdrachtenset voor de bewerkingen van elke fabrikant op configuratiegegevens en statusgegevens. De gegevensinstanties die door het YANG-model zijn gemaakt, zijn verpakt in het Netconf-protocol. Bij transmissie worden de twee met elkaar gecombineerd om een nieuwe set universele netwerkprogrammeerbare interfaces voor het nieuwe tijdperk te bouwen, gebaseerd op het YANG-model en aangedreven door het Netconf-protocol.
Na 2016 werd het Netconf-protocol nauw geïntegreerd met het YANG-model en werd het populair. Als we tot nu toe naar enkele softwareaspecten van de SDN-architectuur kijken, hebben we deze twee termen min of meer gehoord.
YANG en Netconf, de een is statisch en de ander dynamisch, net als yin en yang. De twee hebben de netwerkprogrammeerbare wereld van het volgende tijdperk afgeleid. (Als we naar het YANG-magazijn op github kijken, zullen we ook ontdekken dat het icoon Tai Chi is, en het verband tussen de naam en "Yang" onthult enigszins de ontwerpideeën van de oorspronkelijke ontwerper).
Vervolgens zullen we het kort hebben over het YANG-model en het Netconf-protocol. Laten we het eerst hebben over de datamodelleringstaal YANG om te zien hoe deze de digitale tweelingbroer van deze netwerkwereld beschrijft.
YANG-model
In het RFC6020-document staat in het openingshoofdstuk duidelijk YANG, een datamodelleringstaal voor het netwerkconfiguratieprotocol. Het is de afkorting van Yet Another Next Generation (Yang) Data Modeling Language. Het is een modelleringstaal die wordt gebruikt om netwerkconcepten te beschrijven.
Ondersteunt de definitie van lijsten, woordenboeken en zelfs complexere datastructuren, ondersteunt beperkingen, opsommingen, referentie-importen, versiebeheer en naamruimten. Vanwege de ruimte geven wij een korte toelichting. Voor gedetailleerde informatie kunt u verwijzen naar:
Het kan dit netwerkapparaat heel eenvoudig in een gestructureerde taal beschrijven. Voor de definitie van een poort bijvoorbeeld:
Als professioneel bedienings- en onderhoudspersoneel, met een beetje basiskennis van netwerken en een beetje basiskennis van programmeren, kunt u de definitie van een poort relatief duidelijk begrijpen. Het is een lijststructuur en er kunnen er meerdere zijn. Een van de attributen is interfacenaam (ook een sleutel). , uniek, niet-herhaalbaar), evenals het snelheidsattribuut en duplexattribuut, die beide strings zijn.
Veel kenmerken van een netwerkapparaat worden beschreven door het YANG-model, inclusief de configuratiestatus en bedrijfsstatus.
Op deze manier beschrijft YANG Model de online wereld met behulp van gestructureerde taal. Als u geïnteresseerd bent, kunt u de bovenstaande internetblogpost lezen, die een zeer diepgaande beschrijving bevat.
Het kan heel goed worden omgezet in XML-gegevens en worden verpakt in het Netconf-protocol voor verzending (we zullen dit later uitleggen):

Tegelijkertijd heeft Openconfig, geleid door Google, het datamodel gestandaardiseerd om de verschillen tussen leveranciers te verkleinen. Op de officiële website zien we de slogan "Vendor-neutraal, modelgestuurd netwerkbeheer ontworpen door gebruikers", dat is ontworpen door gebruikers en platformonafhankelijk. Leveranciersgemeenschappelijke, modelgestuurde netwerkprogrammering (laten we het eerst op deze manier vertalen). Simpel gezegd komt het erop neer dat de modellering tussen verschillende fabrikanten hetzelfde is, zodat u bij het configureren van bepaalde gegevens niet het privé-yang-model van elke fabrikant één voor één hoeft te doorzoeken. Maar het internet heeft altijd privéprotocollen, en verschillende fabrikanten zullen altijd nieuwe en betere privéprotocollen creëren voor een "betere gebruikerservaring" en een "betere bedrijfsstrategie" (dit is in werkelijkheid de erfzonde van netwerkfabrikanten). De afbeelding toont enkele van de meest gebruikte openconfig yang-modelimplementaties.


Afgaande op de foto denk ik dat het er behoorlijk veel zijn, en dat de veelgebruikte configuraties relatief compleet zijn. Maar in de praktijk hangt het ervan af of de fabrikant deze yang-modellen ook ondersteunt. Sommige apparaten met een hogere versie van een bepaald onderwerp worden in principe ondersteund. De binnenlandse heb ik nog niet nader bekeken.
Netwerken kunnen niet precies hetzelfde zijn. Voor een ingenieur die zich bezighoudt met de ontwikkeling van netwerkbeheer en -onderhoud is het een zegen om hetzelfde doel te kunnen bereiken!
openconfig is te vinden op https://github.com/openconfig/public/tree/master/release/models
Op verschillende officiële websites kun je privé Yang-modellen vinden.
Netconf-protocol
Laten we, nadat we over het Yang-model hebben gesproken, het hebben over het Netconf-protocol. Het Yang-model definieert de digitale beschrijving van de netwerkwereld, en Netconf definieert de verwerving (get) en aanpassing (config) van gegevens.
Netconf kapselt de gegevens van de wereld in die worden beschreven door het yang-model om het beheer van de netwerkwereld te realiseren.

Yang-gegevens worden ingekapseld in XML en vervolgens beheerd via het Netconf-protocol. Het is een protocol met een geweldig gelaagd idee, waarbij enkele details van het protocol op een hiërarchische manier worden beschreven. Laten we naar de afbeelding hierboven kijken.
-Transmissie: Netconf wordt verzonden via het SSH-protocol, is verbindingsgericht en heeft veiligheidsgaranties.
-Bericht: bel op afstand naar het netwerkapparaat via RPC, de netwerkbeheerder geeft een rpc-verzoek uit en het netwerkapparaat hervat het rpc-antwoord.
-Operatie: Dit is de ziel van Netconf. Het ondersteunt get (configuratie- en lopende gegevens), get-config (configuratiegegevens ophalen, en een apparaat kan meerdere configuratiegegevens hebben, één actief, één opgestart, meerdere kandidaat-kandidaten), edit -config (configureer netwerkapparaatparameters, ondersteunt toevoeging, verwijderen en wijzigen), delete-config, copy-config (kopieer de configuratie naar de bestemming, de bestemming kan ftp, bestand of actieve configuratie zijn, enz.), lock\unlock (vergrendel de configuratie om configuratieconflicten of fouten veroorzaakt door bewerkingen met meerdere processen) enzovoort.
-Gegevens: gegevens zijn Yang-gegevens verpakt in XML. Net als de poort die we hierboven beschreven, zijn gestructureerde gegevens eenvoudig te programmeren. Wordt gebruikt om de gegevens te beschrijven die moeten worden geconfigureerd, verwijderd of verkregen.
Dit zijn de vier lagen van Netconf. Het besturingseinde en het netwerkapparaat communiceren via Netconf, via het traditionele ssh-protocol, met behulp van het Netconf-subsysteem, en de standaardpoort is 830. Zoals hieronder weergegeven:

Deze figuur demonstreert de interactie met behulp van onbewerkte ssh, maar in feite implementeren we dit proces door middel van programmeren. Ik zal de programmeerimplementatiemethode later aan u demonstreren.
Netconf configureert netwerkapparaten. Het interactieproces verloopt grofweg als volgt:

Deze afbeelding is zo laag dat je ook kunt zien dat hij door mij is getekend... Mijn begrip van Netconf is zoals hierboven. Ik denk dat er veel afbeeldingen op internet zijn die niet kloppen, en dat veel gedragingen van de serveragent niet correct zijn. Dit is wat ik intuïtief voel als ik inlog op het apparaat, en het komt uiteraard één-op-één overeen met de officiële documentatie.
We kunnen enkele Netconf-voorbeelden bekijken:
Hallo, bouw een link.

We zagen verschillende trefwoorden, Netconf-versie, ondersteund YANG-model, sessie-ID. Tegelijkertijd geeft hello aan in welke naamruimte we werken. In dit geval is het de overeenkomstige versie van Netconf.
Configuratie verkrijgen

Eén parameter van get-cofig is source, waar de configuratiegegevens worden verkregen (draaiend, opstarten of anders). Een andere parameter is filter, dat wil zeggen welke gegevens worden verkregen uit het gegevensmodel dat door welk yang-model wordt beschreven. Dit komt overeen met de mogelijkheid die oorspronkelijk door het netwerkapparaat werd verzonden. Als dit lukt, worden de bijbehorende configuratiegegevens geretourneerd.
Ontvang configuratie- of hardloopgegevens

Vergelijkbaar met get-config, maar wat wordt verkregen is het uitvoeren van configuratie (persoonlijk begrip) of het uitvoeren van gegevens. Filter kan worden opgegeven.
Configuratie kopiëren

De kopieerbewerking heeft twee parameters: bron en bestemming. Het succesvolle antwoord is met de ok-tag.
Configuratie bewerken

Wanneer u de configuratie bewerkt, specificeert u het gegevensitem dat moet worden bewerkt, de naamruimte van de mogelijkheid en het bijbehorende label. Dit is bijvoorbeeld om DHCP te configureren, dat wordt beschreven door het Yang-model http://tail-f.com/ns/example/dhcp.
Sluit de sessie netjes af

Het is dit soort bericht dat in ssh heen en weer wordt verzonden. We extraheren slechts een deel van de boodschap om het begrip voor iedereen te vergemakkelijken.
Voeg vervolgens eenvoudig wat inhoud toe ter referentie.
-Netconf is gebaseerd op sessie en elk succes heeft een sessie-ID.
-Elk verzoek heeft een bericht-ID, zolang deze geleidelijk groter wordt
-Gegevensconfiguratie kan worden vergrendeld, exclusief en via vergrendeling worden bediend.
-Netconf is transactioneel en bewerkingen zijn allemaal geïmplementeerd of niet. Tegelijkertijd is deze transactionaliteit volgens de officiële websitedocumentatie bedoeld voor de configuratie van N netwerkapparaten, dat wil zeggen dat eenmalig configuratiepolymorfisme transactionaliteit kan ondersteunen. Maar ik heb het nog niet gedaan...
-Netconf ondersteunt abonnementen. In termen van apparaatprestaties is de orde van grootte ongeveer 5 sessies. Ik kan me abonneren op een bepaald gegevensitem en het apparaat laat het mij weten wanneer dit verandert.
- Vermogen, zo begrijp ik het. Het netwerkapparaat verzendt de versie van Netconf en YANG Model, en de besturingsterminal verzendt de versie van Netconf. Pas als de Netconf-versie overeenkomt met de twee kunnen we verder. Dit is mijn intuïtieve gevoel. Elk advies is welkom.
-Bewerkingen zoals get edit specificeren de gegevens die moeten worden gewijzigd, die kunnen worden gefilterd met behulp van filter.
-copy-config ondersteunt het kopiëren van een complete set configuraties van ergens naar ergens. De ergens kan een FTP-bestand zijn, actieve, opstart- en kandidaatconfiguraties op het apparaat.
-Netconf ondersteunt ook verificatie van de configuratie, met behulp van de validate-bewerking.
Dit artikel hoopt nog steeds de wetenschap te populariseren, en ik zal niet in details treden. Je kunt de relevante protocollen van RFC lezen, die eigenlijk niet heel lang zijn.
In de praktijk kunnen we, op basis van sommige open source-software, zoals de ncclient van Python, netwerkapparaten eenvoudig automatisch configureren en netwerkprogrammeerbaarheid bereiken. Dit is de missie van Netconf en YANG Model.
Netwerkpersoneel leest de goed opgemaakte YANG-modeldefinities en gebruikt relevante programmeertalen om programmeerbare bewerkingen op netwerkapparaten uit te voeren op basis van de bewerkingen gedefinieerd door Netconf. Op deze manier wordt de weg naar netwerkprogrammeerbaarheid gebaand.
Laten we dit uitbreiden en ons voorstellen dat het YANG-model de datastructuur van het netwerkapparaat heeft gedefinieerd. We kunnen het bedienen via Netconf. Kan het ook via andere protocollen worden bediend?
Het antwoord is ja. In feite zijn veel andere protocollen afgeleid van Netconf, zoals RESTConf. Zoals hieronder weergegeven,

YANG-model (openbaar en native) definieert de datastructuur, waarboven nieuwe netwerkbeheerprotocollen, Netconf, RESTCon, gRPC, enz. Zijn. Op deze manier kunnen we netwerkapparaten bedienen via RESTConf op basis van HTTP RESTful API, we kunnen ook netwerkapparaten bedienen apparaten via Netconf op basis van SSH, of we kunnen netwerkapparaten bedienen via gRPC op basis van HTTP2.0. Ze zijn allemaal gebaseerd op YANG met een goede datastructuur. Modelleer, schrijf de bijbehorende gegevens, kapsel deze in xml of json in om netwerkapparaten te programmeren. Dit is de toekomst van netwerkprogrammeerbaarheid. Om precies te zijn is het Model Driven Program, modelgebaseerde netwerkprogrammeerbaarheid. Netwerkingenieurs concentreren zich geleidelijk op de parameters van het apparaat in plaats van op de commandoset, en configureren de netwerkparameters door het overeenkomstige datamodel te lezen.
Aan het einde schrijf ik: waarom zou ik dit openbare account openen? Ik heb informatica en technologie gestudeerd toen ik op school zat. Nadat ik de werkplek had betreden, hield ik me bezig met netwerkbeheer en onderhoudswerkzaamheden. Als ik erover nadenk, kan de reden waarom ik in teams was verdeeld, zijn dat ik een afgestudeerde student was aan het Network Technology Research Institute (handleiding grappig). Vanaf het allereerste begin was ik betrokken bij netwerkoperaties. In de latere fase van bediening en onderhoud werden tools gebruikt om het werk te vereenvoudigen en de efficiëntie te verbeteren op basis van CLI. Later werden de tools geleidelijk ontwikkeld tot BS-gestructureerde webapplicaties. Ze werden voortdurend blootgesteld aan nieuwe technologieën en bleven nieuwe functies verrijken.
Gelukkig konden ze de ontwikkeling van open source-technologie en SDN inhalen, en geleidelijk stapte ik over naar NetDevOps-werk en gebruikte ik mijn programmeervaardigheden om de werkings- en onderhoudsmogelijkheden van het team te verbeteren. Ik vond het ook leuk om deze regel code te schrijven. Naarmate het schrijven vordert, komt men er langzamerhand achter dat NetDevOps een vaardigheid zou moeten zijn die elke netwerkingenieur in de toekomst zou moeten hebben (iedereen gooit olie op het vuur), zodat ze zowel een planning op hoog niveau als een snelle implementatie kunnen realiseren. Als ik terugkijk op wat informatie op internet, is er eerlijk gezegd heel weinig in China en is de binnenlandse sfeer niet erg sterk. Veel huishoudelijke software is gebaseerd op de oude CLI en snmp, en iedereen gebruikt nog steeds teksttools en SSH-tools voor zijn werk. Dus ik hoop dat ikkan anderen leren vissen, mijn ervaring (pits) en vaardigheden delen met meer netwerkbeheer- en onderhoudsingenieurs, en doe mijn best. Xiao Chu zei dat je iets kunt leren om je werkdruk te verminderen, en door je te concentreren op de verre toekomst kunnen het beheer en onderhoud van binnenlandse netwerken echt evolueren naar automatisering.
In de toekomst zal ik enkele video's opnemen en enkele artikelen schrijven. Het voelt erg inspannend om een document te schrijven. Je bent van harte welkom om je te abonneren, te verzamelen, op like te klikken en te kijken.
bijlage: Algemene bewerkingen van Netconf

DWDM OTN-oplossingsontwerp en kostenofferte, neem contact op met mij, Taylor Huang















































