Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Programowalne sieci komputerowe (SDN) — wprowadzenie

Poznaj podstawowe pojęcia z obszaru programowalnych sieci komputerowych (SDN) oraz główne nurty prac związanych z technologiami ze świata sieci programowalnych.

Zajmując się współczesną inżynierią sieci, często można natknąć się na termin programowalne sieci komputerowe (ang. Software-Defined Networking — SDN). W skrócie, SDN oznacza takie projektowanie rozwiązań sieciowych, aby można było nimi sterować i zarządzać dynamicznie i automatycznie za pomocą odpowiedniego oprogramowania. Takie podejście ma więcej wspólnego z pracą w chmurze obliczeniowej (ang. cloud computing) niż z tradycyjnym sposobem realizacji sieci komputerowych. Zmiana tradycyjnego podejścia na bardziej nowoczesne, zwinne oraz zapewniające większą elastyczność jest istotą prac nad SDN. 

Trudno się więc dziwić temu, że programowalne sieci komputerowe zyskują coraz większą popularność. Są one odpowiedzią na obecne wyzwania stawiane przez środowiska wirtualizacji i konteneryzacji hostów oraz usług. Coraz więcej firm projektuje swoją infrastrukturę, korzystając z tej technologii. Dlatego w tym krótkim wprowadzeniu postanowiłem wyjaśnić podstawowe pojęcia z obszaru SDN i opisać główne nurty obecnie prowadzonych prac związanych z technologiami ze świata sieci programowalnych.


Ewolucja programowalnych sieci komputerowych

Ewolucja sieci ma dużo wspólnego z ewolucją komputerów. W pierwszych latach ery komputerowej, komputery były zamkniętymi rozwiązaniami zwanymi czarnymi skrzynkami (ang. black boxes), w których system operacyjny, aplikacje i sprzęt były ze sobą ściśle zintegrowane. Ponadto były one również chronione przez prawa własności intelektualnej zabraniające wprowadzania jakichkolwiek modyfikacji. To podejście do architektury komputerów było przeszkodą we wprowadzaniu innowacji i ograniczało zakres funkcjonalności i tym samym grupę potencjalnych użytkowników.

Jednak pewnego pięknego dnia ktoś wpadł na pomysł, aby rozdzielić sprzęt, system operacyjny i aplikacje, jednocześnie umożliwiając komunikację między nimi za pośrednictwem otwartych i jawnych interfejsów. W ten sposób zamiast jednej monolitycznej czarnej skrzynki, można było kupić oddzielnie u różnych dostawców sprzęt, system operacyjny i oprogramowanie. Stało się również możliwe tworzenie własnych komponentów i integrowanie ich w celu stworzenia nowych, innowacyjnych rozwiązań.

Odejście od idei czarnych skrzynek zrewolucjonizowało rynek IT i otworzyło go na nowe grupy klientów i dostawców rozwiązań. Więcej firm mogło oferować swoje produkty, które można było łatwo zintegrować z dostępnymi na rynku produktami innych dostawców. Co najważniejsze, nowe i innowacyjne rozwiązania można było szybko wdrażać i skalować. (patrz Rys. 1)


Rys. 1 Ewolucja komputerów

Jeśli przyjrzymy się aktualnej sytuacji w dziedzinie sieci, to okaże się, że przypomina ona stan, w którym architektura komputerów znajdowała się 30 lat temu. Dzisiaj to grupa wyspecjalizowanych firm świadczy usługi sieciowe, które oparte są na urządzeniach sieciowych bardzo podobnych do pierwszych komputerów: czarne skrzynki, których nikt nie może modyfikować chronione przez prawa własności intelektualnej rozwijane przez jednego producenta. Jest oczywiste, że przy tego typu infrastrukturze wprowadzanie innowacji jest niezmiernie trudne i czasochłonne.

Z tego punktu widzenia SDN stanowi taką sama rewolucyjną zmianę w świecie sieci, jaka wydarzyła się w architekturze pierwszych komputerów wiele lat temu. Zamiast rozwiązania typu wszystko-w-jednym, lepiej jest rozdzielić poszczególne elementy i użyć ich oddzielnie (patrz Rys. 2). Będą się one ze sobą komunikować za pomocą dobrze zdefiniowanych i standaryzowanych otwartych interfejsów. W ten sposób różni dostawcy sprzętu i oprogramowania mogą niezależnie od siebie rozwijać swoje komponenty, które następnie można łatwo zintegrować w produkt najlepiej odpowiadający potrzebom klientów.

Takie podejście skraca również znacząco czas wprowadzania innowacji na rynek. Dostawcy i użytkownicy zaczynają ze sobą konkurować w dostarczaniu coraz lepszych rozwiązań, które wyróżnią ich ofertę spośród ofert dostępnych na rynku. W ten sposób mogą oni zdobyć przewagę nad konkurencją i promować nowe pomysły. Ten proces przypomina mocno rynek nowych aplikacji komputerowych, których setki i tysiące pojawiają się każdego dnia.


Rys. 2 Ewolucja sieci


Rozdział control plane od data plane

Kluczowe są tutaj dwa pojęcia: control plane, czyli płaszczyzna sterowania i data plane, czyli warstwa przetwarzania danych. W tradycyjnej infrastrukturze sieciowej, która jest najczęściej stosowana obecnie, mamy do czynienia z zestawem czarnych skrzynek z dedykowanym sprzętem, systemem operacyjnym i funkcjonalnościami, gdzie control i data plane są zintegrowane. To wszystko jest dostarczane przez dostawcę usług sieciowych. Taką infrastrukturą bardzo trudno się zarządza (patrz Rys. 3).


Rys. 3 Tradycyjne podejście do architektury sieci

Przy zastosowaniu programowalnej sieci komputerowej warstwa sprzętowa (data plane) nadal musi istnieć. Tam właśnie przetwarzane są pakiety danych. Natomiast warstwa kontrolna (control plane) funkcji sieciowych zostaje przeniesiona do oprogramowania. Warstwa kontrolna definiuje sposób działania warstwy sprzętowej. Jak pokazano na Rys. 4, w warstwie sprzętowej potrzebujemy tylko agentów stanowiących interfejs między sprzętem a mózgiem sieci — kontrolerem (ang. SDN controller).

W podejściu tradycyjnym lokalny kontroler był instalowany na każdym urządzeniu sieciowym, a teraz został zunifikowany i przeniesiony do warstwy wyżej. Funkcje sieciowe potrzebne w danym momencie można zainstalować w tego typu kontrolerze, który komunikuje się z warstwą sprzętową. Sprzęt zaś zachowuje się tak, jak zostało to zdefiniowane w aplikacji kontrolera (w granicach swoich fizycznych możliwości).

Takie podejście ma bardzo dużo korzyści z punktu widzenia administratora sieci (patrz Rys. 4). Przede wszystkim ma on bardzo dobry widok stanu całej sieci, co pozwala mu podejmować lepsze decyzje, np. dotyczące równoważenia obciążenia (ang. load balancing) i lepszego rozdzielania ruchu sieciowego. Poza tym zamiast konfigurować setki urządzeń sieciowych, musi on skonfigurować tylko jeden panel sterowania. Zmniejsza to znacząco ryzyko popełnienia błędu. Sama konfiguracja jest przetwarzana i weryfikowana automatycznie, co eliminuje błędy ludzkie.

Aby mieć pewność, że konfiguracja jest w 100% wolna od błędów, można przeprowadzić dokładniejsze testy, korzystając z całego spektrum nowoczesnych metodologii testowania. Niezawodność sieci i weryfikację wprowadzanych zmian mogą poprawić rozwiązania znane ze świata wytwarzania oprogramowania, takie jak metodologia CI/CD (ang. continuous integration/continuous deployment) i wielopoziomowe testy automatyczne. W takiej architekturze nowe funkcjonalności i zmiany w infrastrukturze sieci można wdrażać bez konieczności organizowania przestojów.


Rys. 4 Rozdział control plane od data plane


Korzyści biznesowe z zastosowania SDN-ów

Architektura sieci tworzona przy pomocy programowalnych sieci komputerowych oferuje także wiele korzyści stricte biznesowych. Pierwszym głównym powodem, dla którego firmy inwestują w rozwój technologii SDN są oczywiście pieniądze. SDN pomaga zmniejszyć koszty operacyjne i wydatki kapitałowe (OPEX i CAPEX). Po drugie taka sieć jest stabilniejsza i jednocześnie bardziej elastyczna, co pozwala na szybsze wprowadzanie aktualizacji i zmian. Ponieważ automatyzacja w wielu punktach eliminuje czynnik ludzki, zmniejszeniu ulega liczba błędów i skraca się czas przestojów. Administratorzy sieci SDN mają pełen wgląd w jej topologię, co pozwala na lepszą i automatyczną alokację ruchu sieciowego, szczególnie w okresach szczytu.

Programowalne sieci komputerowe umożliwiają również pełne wykorzystanie możliwości kosztownego sprzętu sieciowego, co w przypadku tradycyjnej architektury było możliwe tylko przez krótkie okresy. Ostatnią rzeczą, jaką warto podkreślić, jest to, że SDN daje ważną przewagę technologiczną w obszarze rozwiązań sieciowych. Standardowo wprowadzenie nowej funkcjonalności sieciowej jest bardzo czasochłonne i wymaga znacznych nakładów finansowych. Czas wprowadzenia na rynek jest jeszcze dłuższy, jeśli w sieci jest wielu dostawców. Dzięki SDN firma może szybciej wypuszczać na rynek innowacje, co z kolei przełoży się na jej przewagę nad konkurencją. To właśnie z tego powodu giganci technologiczni, tacy jak Google, Amazon i Facebook już teraz wdrożyli programowalne sieci komputerowe w swoich środowiskach produkcyjnych. 

W tym kontekście bardzo znamienna jest historia protokołu VXLAN. W 2011 r. organizacja Internet Engineering Task Force (IETF) koordynująca wdrażanie nowych standardów sieciowych otrzymała wniosek o przyjęcie protokołu VXLAN jako standardu. Trzy lata trwał proces opiniowania tego wniosku i dopiero 2014 r. powstała wersja gotowa do wprowadzenia na rynek. Twórcy protokoły VXLAN, firmy VMware i Cisco i ich klienci musieli czekać trzy lata, aż ich innowacyjne rozwiązanie zostanie zaakceptowane jako nowy standard sieciowy.

Z kolei pozostali producenci urządzeń sieciowych mogli zacząć długi i skomplikowany proces wdrażania tego protokołu dopiero w momencie, gdy uzyskali pewność, że stanie się on standardem i jego podstawowe elementy się nie zmienią. Żadna firma nie może sobie pozwolić na tak długi okres oczekiwania i jednocześnie pozostać na rynku. Jeśli zaś takie innowacyjne rozwiązanie nie stanie się standardem, nikt nie będzie w stanie go używać bez uzależniania się od jego dostawcy. Do tej pory radzono sobie z tym problemem, przenosząc innowacje z sieci do aplikacji, często kosztem ich wydajności i funkcjonalności. Jest to jedno z głównych wyzwań, z którymi ma sobie poradzić technologia SDN.


Technologia SDN dla centrów danych

Przyjrzyjmy się teraz przykładowi architektury SDN dla jednego centrum danych (patrz Rys. 5) Jest to tradycyjna topologia, gdzie na serwerach (ang. compute nodes) pracują wirtualne maszyny (ang. Virtual Machines — VM). Białe prostokąty na rysunku oznaczają elementy sieciowe, a fioletowe pokazują agentów sterujących warstwą sprzętową. Wszystkim zarządzają aplikacje, działające w klastrze kontrolera SDN. Ta warstwa sterująca automatycznie konfiguruje sprzęt według bieżących potrzeb, np. gdy punkty końcowe w sieci chcą się ze sobą skomunikować, kontroler SDN automatycznie konfiguruje warstwę sprzętową, aby umożliwić (lub zablokować) taką komunikację, w zależności od przyjętych reguł. 


Rys. 5 Przykład technologii SDN w jednym centrum danych

Co zrobić w sytuacji, gdy mamy więcej niż jedno centrum danych i wiele różnych typów control plane, które nie są ze sobą kompatybilne (patrz Rys. 6)? W takim wypadku potrzebny jest tzw. orkiestrator SDN, czyli oprogramowanie koordynujące pracę kontrolerów SDN. Obecnie na rynku dostępnych jest kilka rozwiązań open source, ale żadne z nich nie dojrzało jeszcze do wdrożeń produkcyjnych. Istnieją jednak rozwiązania komercyjne gotowe do takiego zastosowania. Orkiestrator SDN może komunikować się z różnymi typami lokalnych kontrolerów SDN (sterujących sieciami w pojedynczych centrach danych), aby zarządzać łącznością i sieciami globalnie, w wielu centrach danych.


Rys. 6 Technologia SDN do zarządzania połączeniami wielu centrów danych


Dlaczego technologia SDN nie jest jeszcze wszechobecna?

Jeśli więc programowalne sieci komputerowe stanową tak dobrą alternatywę dla tradycyjnych rozwiązań, dlaczego wszystkie firmy ich jeszcze nie wdrożyły? Odpowiedź jest prosta: ponieważ wymaga to dużych nakładów zarówno finansowych, ale również w postaci czasu i pracy, szczególnie w przypadku szkolenia pracowników z obsługi nowej technologii. Myślę, że jest jeszcze jedna, dużo poważniejsza, trudność.

Wdrożenie sieci SDN w sieci produkcyjnej wymaga przejścia od standardowego modelu operacyjnego sieci do procesu bardziej przypominającego procesy wykorzystywane w tworzeniu i wdrażaniu oprogramowania. Oznacza to zmianę sposobu myślenia o sieciach. To stanowi barierę psychologiczną, którą często trudno jest pokonać. Poza tym, aby w pełni wykorzystać zalety sieci SDN, potrzebny jest sprzęt, który będzie przynajmniej częściowo kompatybilny. Jego zakup lub dostosowanie również może wymagać pewnych nakładów.

Duże firmy wolą stabilność i pewność sprawdzonych rozwiązań, dlatego często patrzą z nieufnością na nowe, rewolucyjne technologie. Jeśli przy wdrażaniu sieci SDN coś pójdzie nie tak, działalność całej firmy może być zagrożona. Wiadomo, że nikt nie zacznie tworzyć całej infrastruktury SDN od zera. Bardziej prawdopodobne jest podejście wykorzystujące tzw. brownfield deployments. Takie wdrożenia polegają na tym, że nowy element infrastruktury oparty na nowej technologii jest zintegrowany z już istniejącymi rozwiązaniami.

Rozwiązanie SDN powinno być na tyle elastyczne, aby komunikować się ze starymi sieciami i również nimi sterować. Ponadto trzeba wziąć pod uwagę, że każda automatyzacja ma sens tylko wtedy, gdy jest wykorzystywana w odpowiednio dużej skali. Nakład wysiłku organizacyjnego i finansowego sprawia, że programowalne sieci komputerowe nie są rozwiązaniem dla małych organizacji lub dla małych rynków.

Dodatkowo trzeba rozwiązać jeden ważny problem sprzętowy. Prace nad programowalną warstwą przetwarzania danych (ang. programmable data plane), która umożliwiłaby wykorzystanie całego potencjału technologii SDN, nie są jeszcze w fazie gotowości produkcyjnej (z pojedynczymi wyjątkami opisanymi poniżej). Obecnie dostępne rozwiązania open source umożliwiające instalację programowalnych funkcji sieciowych na urządzeniach sieciowych (chodzi o programmable data plane) nie są tak dopracowane, jak same kontrolery SDN.

Nie zmienia to faktu, że dużo się w tym temacie dzieje i możemy wymienić kilka obiecujących rozwiązań open source będących odpowiedzią na to wyzwanie. Na przykład firma Barefoot Networks zaproponowała język programowania P4 w celu zdefiniowania standardowego języka do opisu funkcji data plane działających na układach typu Merchant Silicon. Standard P4 został szybko przyjęty przez producentów sprzętu sieciowego i jest obecnie wspierany przez Open Networking Foundation. Tego rodzaju układy przełączników kompatybilne z językiem P4 są produkowane przez największych dostawców sprzętu, takich jak: Broadcom, Mellanox, Netronome oraz Barefoot Networks.


Jakie rozwiązanie są obecnie dostępne?

 Załóżmy, że chcemy wykorzystać SDN w naszej firmie. Jakie rozwiązania dostępne są na rynku? Aby skutecznie wdrożyć programowalne sieci komputerowe potrzebny jest odpowiedni sprzęt, na którym można zainstalować system operacyjny open source lub ma on wbudowane mechanizmy komunikacji z kontrolerem SDN (np. protokół OpenFlow). Musimy mieć też możliwość zainstalowania na tym systemie operacyjnym agenta, który będzie komunikował się z warstwą sterowania. Potrzebny jest oczywiście również kontroler SDN. Na szczęście organizacja Open Networking Foundation (ONF) zapewnia te wszystkie komponenty z wyjątkiem sprzętu.

Dobrym przykładem w pełni funkcjonalnego rozwiązania SDN opartego na komponentach open source jest projekt Trellis, który został niedawno z sukcesem wdrożony w środowisku produkcyjnym operatora telekomunikacyjnego Comcast. Fundacja obecnie pracuje nad projektem Startum, systemem operacyjnym open source niezależnym od sprzętu (a dokładniej od układów Merchant Silicon, czyli programowalnego odpowiednika układów ASIC) przeznaczonym dla programowalnych sieci komputerowych, który będzie można zainstalować na przełączniku sprzętowym typu „white box”. Fundacja ONF opracowała również standardowy protokół komunikacji między kontrolerem a sprzętem.

Przełączniki sieciowe dostarczane są przez wielu producentów w modelu „brite box”, tzn. jako produkty oznaczone marką. Te przełączniki są gotowe do użycia w sieciach produkcyjnych i zostały opracowane przez doświadczonych producentów. Można ich używać z otwartymi systemami operacyjnymi dostarczanymi przez inne firmy programistyczne, np. system NOS firmy Pica8 może współpracować ze sprzętem sieciowym firm takich jak Edge-core, Dell i innych.

Przechodząc do wysokopoziomowych komponentów oprogramowania, dostępna jest również integracja interfejsów północnych (ang. northbound interface) kontrolera, które stanowią element integrujący kontrolery orkiestratorem. Warto tutaj wspomnieć dwa tego typu rozwiązania: XOS, orkiestrator SDN do sieci mobilnych, korporacyjnych i dostępowych (jest to część platformy CORD, nad którą pracuje fundacja ONF) i ONAP (będący częścią Linux Foundation Networking), wysokopoziomowy orkiestrator i menedżer cyklu życia. ONAP jest obecnie mocno rozwijany przez społeczność telekomunikacyjną i badawczą, jednak nie jest jeszcze na tyle dojrzałym produktem, aby można go było bezpiecznie wdrażać w sieciach produkcyjnych. 


Produkcyjne wdrożenia programowalnych sieci komputerowych

Szybki przegląd aktualnych wdrożeń rozwiązań SDN pozwolił na sporządzenie pokaźnej listy. Na pierwszym miejscu trzeba wymienić komercyjne rozwiązanie SDN firmy VMWare — NSX. Według tego, co podaje firma, do końca 2018 r. było ono używane przez ponad 1700 firm, z czego prawie 400 o dochodzie przekraczającym miliard dolarów rocznie. Facebook, Amazon i Google mają swoje własne programowalne sieci komputerowe. Google współpracuje dodatkowo z fundacją ONF przy rozwiązaniach open source. Z kolei firma Equinix oferuje rozwiązanie umożliwiające tworzenie prywatnego połączone z jednego kontynentu na drugi w ciągu zaledwie kilku minut.

Firma Comcast we wrześniu 2019 r. wdrożyła kompletny system SDN (programowalny control plane oraz data plane) o nazwie Trellis. Wykorzystanie produktów open source do obsługi wrażliwych sieci produkcyjnych pozwala zaoszczędzić znaczne sumy pieniędzy, ponieważ koszty rozwiązań sieciowych mogą być astronomiczne. Jeśli chodzi o programowalną przestrzeń danych (ang. programmable data plane), to ciekawą informacją jest to, że Cisco używa czip Tofino firmy Barefoot Network w swoich przełącznikach serii Nexus 3400. Czip tego typu jest wyposażony w standardowy interfejs open source P4, którym można sterować z wyższej warstwy sterującej.


Przyszłość SDN-ów

Największym wyzwaniem związanym z programowalnymi sieciami komputerowymi jest bariera psychologiczna związana z wdrożeniami produkcyjnymi. Nikt nie chce podejmować zbyt dużego ryzyka i czeka na to, aż konkurenci wykonają pierwszy krok. Duże firmy pracują obecnie nad wdrożeniami bazującymi na oprogramowaniu open source. Jeśli zakończą się one sukcesem, ich śladem na pewno pójdą większe i mniejsze firmy. Bardzo wymowny jest tutaj fakt, że jeden z największych producentów sprzętu sieciowego zdecydował się na wykorzystanie układów Merchant Silicon, które uchodzą za symbol wolności data plane.

Z drugiej strony duże firmy telekomunikacyjne wdrażają programowalne sieci komputerowe oparte na technologiach open source, a dostawcy usług chmurowych już od lat korzystają z własnych SDN-ów. Wszystko to sprawia, że technologia SDN jest nieuniknionym krokiem w rozwoju sieci. Każda korporacja, firma telekomunikacyjna, dostawca usług internetowych, słowem wszystkie duże firmy pewnego dnia dokonają migracji swojej infrastruktury sieciowej do programowalnych sieci komputerowych.


O Autorze

Michał w CodiLime zajmuje się technologiami SDN i NFV (Network Function Virtualization — wirtualizacja funkcji sieciowych). Jego pasją jest łączenie światów sieci i oprogramowania. Zrealizował wiele projektów SDN/NFV w globalnych centrach rozwojowych i pracował nad projektami SDN opartymi na technologiach open source. Po godzinach świeżo upieczony tata, miłośnik literatury fantasy i audiofil.