Az SDN a hagyományos hálózatok problémáira nyújt megoldást. Nézzük meg ezeket egy példán keresztül.
Látható, hogy az igények növekedésével egyre több az eszköz, illetve a vállalat bizonyos szolgáltatásokat a felhőbe helyezett át.
A fejlődés során a következő problémák merülnek fel:
Ez a hagyományos, decentralizált hálózatkezelés egyik alapvető problémája: a vezérlés és az adatforgalom ugyanabban a síkban történik, ami nehézkessé és rugalmatlanná teszi a rendszert. Ezekre a problémákra mind megoldást kínál az SDN. (Software-defined Networking)
Az SDN egy olyan megközelítés, amely absztrakció segítségével dinamikus és programozhatóan hatékony hálózatkonfigurációt tesz lehetővé. Ez a módszer a hagyományos hálózatkezelés helyett a felhőalapú rendszerekre hasonlít. Az SDN célja, hogy javítsa a hagyományos hálózatok statikus architektúráját, például azáltal, hogy szétválasztja az adatcsomagok továbbítását (adatsík, innentől data plane) az útvonalkezeléstől (vezérlősík, innentől control plane). A control plane egy vagy több központi vezérlőt tartalmaz, amelyek az SDN "agyának" tekinthetők. Bár a központosítás előnyökkel jár, vannak hátrányai is, például a biztonság, a skálázhatóság és a rugalmasság terén.
A technológia egyik korai és egyben legismertebb implementációja az OpenFlow, viszont ma már sok gyártó saját implementációval dolgozik, pl. a Cisco is.
A model-driven programmability (innentől MDP) a hálózati automatizáció egyik fő eleme. Az MDP az eszközök konfigurálásához a hagyományos, eszköz-specifikus konfigurációk/scriptek helyett általános modelleket definiál, melyek leírják, hogy az adott eszköznek/rendszernek hogyan, milyen paraméterekkel kell működnie.
Az MDP legfontosabb építőelemei a modellek, ilyen a YANG (RFC 7950), amely egységes formában írja le a különböző eszközök képességeit, konfigurációit és állapotukat. Ezek a modellek sablont nyújtanak a hálózat kezeléséhez és konfigurációjához.
Azáltal, hogy az MDP absztrakciót nyújt a hálózatról, így elrejti azok komplex részleteit, a mérnökök egy magasabb szintű, könnyen olvasható dokumentum formájában tervezhetik meg a hálózat működését. Így könnyebb hálózati folyamatokat automatizálni, kevesebb az emberi beavatkozás, így a hibalehetőség is.
A hálózati eszközök kezelésére több protokollt is létrehoztak, a legismertebbek a NETCONF, RESTCONF és a gRPC.
A NETCONF (RFC 6241) egy IETF által definiált protokoll, amely lehetővé teszi, hogy egy eszköz egy API-t biztosítson, amelyen keresztül alkalmazások küldhetnek vagy fogadhatnak teljes vagy részleges konfigurációs adatokat.
Az RFC szerint a NETCONF lehetővé teszi:
A NETCONF jelentős előrelépés az SNMP-hez képest, mivel nemcsak figyel, kérdez vagy hibát jelez, hanem tényleges eszközkonfigurációkat is kezel.
A NETCONF távoli eljáráshívásokat (RPC, Remote Procedure Call) használ: az kliens XML formátumban adja meg az RPC-t, és biztonságos, kapcsolat-orientált kapcsolaton (SSH) keresztül továbbítja a kiszolgálónak. A kiszolgáló szintén XML formátumban küld választ az RPC-re.
A NETCONF 4 fő rétegből áll:
A RESTCONF (RFC 8040) egy olyan konfigurációs protokoll, ami a NETCONF elvein működik, ugyanúgy YANG modelleket használ, viszont a HTTP-n alapszik. A konfigurációs adatbázis kezeléséhez HTTP műveleteket használ.
A YANG (RFC 6020, RFC 7950) a NETCONF-hoz létrehozott adatmodellező nyelv. Fő feladata a konfigurációs adatok és állapot adatok modellezése, amelyekhez a NETCONF, RPC-k és Notification-ök férnek hozzá. A NETCONF művelet és tartalom rétegeit modellezi a nyelv.
A YANG modellek többféle formában is leírhatók az adott felhasználás igénye szerint: