Bachelor's Thesis

Configuration API of the libnetconf2 Library According to the ietf-netconf-server YANG model

Final Thesis 960.3 kB

Author of thesis: Bc. Roman Janota

Acad. year: 2023/2024

Supervisor: Ing. Jiří Matoušek, Ph.D.

Reviewer: doc. Ing. Tomáš Martínek, Ph.D.

Abstract:

The aim of this thesis is to propose and implement a new application programming interface for the libnetconf2 library, which allows for configuration of a NETCONF server based on the ietf-netconf-server YANG model. The approach begins with an analysis of both the library and the model, followed by their comparison. Based on the results of the comparison, I then designed a new configuration interface, which takes YANG data describing the NETCONF server configuration as input. The proposed solution enables configuring the server in two ways. The former approach preserves the existing configuration and adjusts it based on a special operation attribute. The latter approach entirely replaces the previous configuration with the new one. The proposed solution comprises of two phases --- the creation and the application of configuration data. The focus then shifts to implementation, identifying flaws in the design that arose during implementation, and testing, which was initially done using my own test suite and then using an existing open-source NETCONF server called netopeer2. Additionally, this thesis describes my contribution to an open-source project libssh as well as to the ietf-netconf-server YANG model draft itself. The primary outcome of this work is the the ability for users of the libnetconf2 library to configure their NETCONF server in a standardized manner, as well as the ability to share the NETCONF server configuration in the form of configuration data. The new configuration interface is now part of the libnetconf2's main branch.

Keywords:

configuration, API, libnetconf2, NETCONF, YANG

Date of defence

11.06.2024

Result of the defence

Defended (thesis was successfully defended)

znamkaAznamka

Grading

A

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A.

Topics for thesis defence

  1. Diagram 5.1 - kolize v názvech v rámci stromu. Do jaké míry je zaručeno, že stejné názvy nikdy nebudou ve stejné úrovni stromu? Pokud to nelze zaručit, jakým způsobem by jste váš algoritmus upravil?
  2. Na jakém stroji jste vaši implementaci testoval? Jaké testy jste použil?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

doc. Ing. Petr Matoušek, Ph.D., M.A. (předseda)
Dr. Ing. Petr Peringer (člen)
Ing. Matěj Grégr, Ph.D. (člen)
doc. Ing. Michal Španěl, Ph.D. (člen)
Ing. Lukáš Kekely, Ph.D. (člen)

Supervisor’s report
Ing. Jiří Matoušek, Ph.D.

V rámci bakalářské práce bylo vytvořeno nové konfigurační API open-source knihovny libnetconf2 a toto rozhraní bylo úspěšně integrováno do produkční verze uvedené knihovny, která je využívána i velkými telekomunikačními operátory. Řešení bakalářské práce probíhalo na pravidelné bázi a bylo ukončeno v dostatečném předstihu tak, aby bylo možné řádně zkonzultovat její výstupy. Nad rámec zadání student přispěl i do dalších relevantních open-source projektů. S prací studenta jsem tudíž velmi spokojen a navrhuji hodnocení bakalářské práce stupněm výborně / A.

Evaluation criteria Verbal classification
Informace k zadání

Cílem bakalářské práce byla realizace nového konfiguračního API široce využívané open-source knihovny libnetconf2, která je vyvíjena sdružením CESNET. Náročnost zadání spočívala především v požadavku na vysokou kvalitu implementačních výstupů bakalářské práce, bez které by nebylo možné je integrovat do knihovny, jež je produkčně využívána komerčními společnostmi, včetně velkých telekomunikačních operátorů. I přes tuto náročnost byly všechny body zadání úspěšně naplněny.

Práce s literaturou

Student si sám aktivně dohledával studijní materiály a v rámci bakalářské práce využíval relevantní zdroje (především RFC dokumenty).

Aktivita během řešení, konzultace, komunikace

Po celou dobu řešení bakalářské práce byl student aktivní, průběžně posouval úkoly související s bakalářskou prací kupředu a pravidelně konzultoval svůj postup s odborným konzultantem Mgr. Michalem Vaškem ze sdružení CESNET,

Aktivita při dokončování

Práce byla dokončena v dostatečném předstihu, což umožnilo detailně zkonzultovat všechny její části.

Publikační činnost, ocenění

Výstupy bakalářské práce byly úspěšně integrovány do veřejného repozitáře open-source knihovny libnetconf2. Nad rámec zadání byly v rámci řešení bakalářské práce navrženy opravy chyb v open-source projektu libssh a změny v návrhu modelu ietf-netconf-server. Oba tyto příspěvky již byly příslušnými komunitami přijaty a začleněny.

Points proposed by supervisor: 92
Display more

Grade proposed by supervisor: A

Jedná se o velmi zdařilou bakalářskou práci. Student zde prokázal rozsáhlé znalosti a zkušenosti v oblasti návrhu a implementace software. Vytvořené výstupy jsou na velmi vysoké úrovni a používané v praxi. Student se navíc osobně podílel na vylepšení ietf-netconf modelu, včetně identifikace chyb v knihovně libssh. Jedinou výtku mám k technické zprávě, která je pro čtenáře hůře pochopitelná a má určité nedostatky na jazykové úrovni. S ohledem na tyto skutečnosti navrhuji hodnocení stupněm velmi dobře (B).

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: průměrně obtížné zadání

Cílem práce bylo navrhnou a implementovat konfigurační rozhraní síťového zařízení dle modelu ietf-netconf-server. Zadání považuji za průměrně obtížné.

Prezentační úroveň technické zprávy

Struktura technické zprávy je v pořádku. K textu zprávy mám však následující výhrady:

  • horší pochopitelnosti textu pro čtenáře,
  • chybí mi definice problému v návrhové části,
  • v části implementace se pak autor dodatečně vrací k dodefinování některých částí řešené úlohy.
70
Formální úprava technické zprávy

Typografická stránka práce je na dobré úrovni. Výhrady bych měl k jazykové stránce práce. Student místy používá skoro hovorový způsob vyjadřování. Některé kapitoly popisují spíše proces vývoje namísto samotného technického řešení.

65
Realizační výstup

Výstupem práce jsou kódy v jazyce C popisující konfigurační API knihovny libnetconf2. Tyto kódy jsou publikovány ve formě open-source, jsou plně funkční a student na ně získal dokonce i zpětnou vazbu od samotných uživatelů.

100
Využitelnost výsledků

Jedná se o práci kompilačního charakteru, která je však na velmi vysoké úrovni a již se používá i v praxi.

Rozsah splnění požadavků zadání

Evaluation level: zadání splněno a práce obsahuje podstatná rozšíření

Zadání práce bylo splněno ve všech bodech. Student se nad rámec zadání podílel i na vylepšení samotného ietf-netconf modelu, což znamenalo komunikaci přímo s autory. Navíc v průběhu vývoje identifikoval závažné chyby v knihovně libssh, které se následně podařilo odstranit.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Práce s literaturou

Převážná část literárních zdrojů se odkazuje na specifikace typu RFC, což je pro tento typ práce obvyklé a zpravidla i dostačující. 

85
Topics for thesis defence:
  1. Diagram 5.1 - kolize v názvech v rámci stromu. Do jaké míry je zaručeno, že stejné názvy nikdy nebudou ve stejné úrovni stromu? Pokud to nelze zaručit, jakým způsobem by jste váš algoritmus upravil?
Points proposed by reviewer: 85
Display more

Grade proposed by reviewer: B