Skip to main content
Opgelet

Het is van essentieel belang om de theorie goed te begrijpen zodat je de praktische opdrachten in het labo succesvol kan uitvoeren !!!

Inleiding

In de vorige labosessies hebben we meestal onze configuraties manueel ingevoerd.
Uiteraard is dit in productieomgevingen niet altijd haalbaar of wenselijk. Moderne bedrijfstoepassingen zijn enorm dynamisch (als voorbeeld schaalbaarheid) en een statische netwerkinfrastructuur is nefast voor de gebruikerservaring.
Network programmability maakt consistente en dynamische infrastructuurconfiguraties mogelijk door implementaties te automatiseren en maakt gebruik van zowel hardware als software om een agile network infrastructure mogelijk te maken.
Uiteindelijk zal agile network infrastructure de oplossing zijn voor deze moderne bedrijfstoepassingen.
Hieronder vind je enkele mogelijke oplossingen om de configuratie en monitoring van netwerkapparatuur te automatiseren.
Deze lijst is absoluut niet volledig en dit is ook zeker niet de bedoeling.

Tool Command Language (Tcl)

Tcl was een vrij populaire taal om bepaalde taken te automatiseren.
Hoewel Tcl nog steeds ondersteund wordt, komt Tcl nog zelden voor.
In onderstaande figuur zie je het resultaat van een zeer eenvoudig voorbeeld.

Tcl voorbeeld

Netmiko (SSH Python bibliotheek)

Netmiko is een multi-vendor bibliotheek om CLI connections met netwerkapparatuur te verwezenlijken.
Meer informatie nodig? Klik hier.

NETCONF

Het Network Configuration Protocol (NETCONF) is een network management protocol. Het wordt vaak als de opvolger van Simple Network Management Protocol (SNMP) beschouwd.
NETCONF staat beschreven in RFC 6241 en is een Internet Engineering Task Force (IETF) standaard protocol.
NETCONF communiceert met netwerkapparatuur via YANG data models en gebruikt XML voor data encoding.
Daarnaast verzekert NETCONF zich van veilige communicatie via Secure Shell (SSH) of Transport Layer Security (TLS).

NETCONF gebruikt 3 verschillende configuratie data stores:

  • Running (verplicht)
  • Candidate (optioneel)
  • Startup (optioneel)

Courante taken die uitgevoerd worden via NETCONF zijn:

  • Het verzamelen van statussen
  • Het wijzigen van configuraties
  • Het versturen waarschuwingen
  • Het back-uppen van configuraties
  • Het testen van configuraties

Onderstaande figuur toont de interactie tussen netwerkapparatuur en management applicaties.

NETCONF

De uitgewisselde informatie in NETCONF wordt capabilities genoemd.
In onderstaande tabel verkrijg je een overzicht van de verschillende NETCONF protocol opdrachten.

OpdrachtBeschrijving
getHaal de actieve configuratie en status op.
get-configHaal een specifieke configuratie op.
edit-configWijzig een specifieke configuratie.
copy-configKopieer een specifieke configuratie.
delete-configWis een specifieke configuratie.
lockSluit een volledige configuration data store af
unlockGeef een volledig configuration data store terug vrij
close-sessionSluit een NETCONF-sessie af
kill-sessionSluit een NETCONF-sessie af (agressief)

RESTCONF

RESTCONF is een HTTP gebaseerd network management protocol en wordt beschreven in RFC 8040.
Net zoals bij NETCONF maakt RESTCONF gebruik van het data stores en opdrachten die gedefinieerd zijn in YANG data models.
Daarnaast gebruikt RESTCONF XML of JSON om data te encoderen en voorziet zo REST-like APIs die programmatorisch toegang geven tot netwerkapparatuur.
HTTP-opdrachten GET, POST, PUT, PATCH en DELETE worden doorgestuurd naar een RESTCONF API om toegang te krijgen tot informatie van netwerkapparatuur die worden weergegeven door YANG-gegevensmodellen.
Met deze basisopdrachten kan de actieve configuratie worden bekeken en gewijzigd door een RESTCONF-client.
RESTCONF is niet bedoeld om NETCONF te vervangen, maar eerder bedoelt om een HTTP-interface aan te bieden die de REST-principes volgt en compatibel is met het NETCONF data store model.
Netwerkapparatuur kan zowel NETCONF als RESTCONF gelijktijdig aanbieden.

In het algemeen is NETCONF flexibeler en complexer dan RESTCONF. Hieronder vind je enkele verschillen:

  • RESTCONF ondersteunt geen canidate data store. (Wijzigingen in de canidate data store worden namelijk onmiddellijk toegepast)
  • RESTCONF kan niet overweg met een afgesloten data store. (Lock en unlock hebben geen gevolg)
  • RESTCONF ondersteunt geen gelijktijdige transacties op meerdere netwerkapparaten.

In onderstaande tabel verkrijg je een mapping van de opdrachten (NETCONF versus RESTCONF).

NETCONFRESTCONF
edit-configPOST
get-configGET
edit-config (nc:operation = "creat/replace")PUT
edit-config (nc:operation = "delete")DELETE

De RFC 8040 beschrijft dat een RESTCONF URI syntax is /restconf/<resource-type>/<yang-module:resource>.
Waarbij <resource-type> en <yang-module:resource> variabelen zijn en de waarden verkregen worden via specifieke YANG model bestanden.
Het basisformaat van een RESTCONF URL is https://<hostURL>/restconf<resource><container><leaf><options>.
Alles na het woord restconf is hierbij optioneel.