OpenFlow
OpenFlow to protokół komunikacyjny umożliwiający zdalny dostęp do warstwy przekazywania pakietów (ang. forwarding plane) przełącznika sieciowego lub rutera[1].
Zasady działania OpenFlow
Uczestnicy komunikacji
Protokół OpenFlow rozdziela warstwy przekazywania pakietów urządzeń sieciowych i kontroli sieci. Warstwa przekazywania pakietów realizowana jest przez urządzenia nazywane w tym kontekście przełącznikami, a warstwę kontroli realizują tzw. kontrolery. W celu osiągnięcia postulowanej w ramach SDN centralizacji warstwy kontroli, każdy kontroler na ogół będzie sterował wieloma przełącznikami. Danym przełącznikiem może natomiast sterować wiele kontrolerów w celu uzyskania odporności na awarie oraz równoważenia obciążenia.
Sterowanie w przypadku OpenFlow oznacza, że to kontroler definiuje w jaki sposób przełącznik powinien przetwarzać trafiające do niego pakiety. Na podstawie wytycznych otrzymanych wcześniej od kontrolera, przełącznik powinien już samodzielnie przetworzyć większość pakietów. Dzięki takiemu podejściu przetwarzanie komunikatów może wykorzystywać zaawansowane algorytmy w kontrolerze przy zachowaniu wysokiej wydajności przetwarzania poszczególnych pakietów.
Oprócz kontrolera, przełącznik, podobnie jak typowe urządzenia sieciowe, współpracuje z innymi urządzeniami sieciowymi (jak przełączniki i rutery) oraz komputerami (hostami).
Porty
OpenFlow operuje na abstrakcyjnych portach umożliwiających wymianę pakietów ze światem zewnętrznym. Portami w OpenFlow mogą być zarówno fizyczne porty, w które wyposażony jest przełącznik, jak i pomocnicze porty logiczne lub specjalne pseudo-porty pozwalające realizować zaawansowane operacje na pakietach.
Portem jest w szczególności kanał komunikacji przełącznika z kontrolerem pozwalający przełącznikowi przekazać wybrane pakiety do kontrolera w celu analizy, a kontrolerowi - na wysłanie do innych urządzeń lub hostów pakietu za pośrednictwem przełącznika.
Tabele przepływów
Wytyczne do przekazywania pakietów przez przełączniki są reprezentowane w postaci pozycji przepływu (ang. flow entry), a tworzenie, modyfikowanie i usuwanie pozycji przepływu wykonywane przez kontroler stanowi najważniejsze zastosowanie protokołu OpenFlow. Każda taka pozycja wspiera przekazywanie strumienia pakietów o określonych cechach, a wiele pozycji zgrupowanych jest w jednej bądź wielu tabelach przepływów (ang. flow table).
Tabela przepływów wykorzystywana jest w momencie nadejścia do przełącznika nowego pakietu. Przełącznik przegląda wówczas właściwą tabelę w celu wyszukania najlepszej pojedynczej pozycji przepływu z uwzględnieniem cech pakietu pasującego do danej pozycji oraz priorytetów poszczególnych pozycji w tabeli. Po wybraniu takiej pozycji przepływu, przełącznik wykonuje na pakiecie instrukcje określone w wybranej pozycji.
Wybór pozycji przepływu dokonywany jest poprzez porównanie wartości pól zawartych w pakiecie z wartościami pól wskazanymi w danej pozycji. Pozycja przepływu określa dokładną wartość, jaką musi mieć właściwe pole w pakiecie, aby dopasowanie było możliwe albo wskazuje, że dane pole może mieć dowolną wartość. Dla niektórych pól możliwe jest również określenie masek dopasowania wskazujących, jaka część wartości pola jest istotna z punktu widzenia dopasowania pakietu do pozycji przepływu.
Tabele przepływów mogą dodatkowo zawierać wskazanie, jak przełącznik powinien zareagować na pakiet, w przypadku braku dopasowania pakietu do żadnej z pozycji w tabeli. Jeśli wykorzystuje się wiele tabel przepływów, to działania związane z poszczególnymi tabelami tworzą potok (ang. pipeline) następujących po sobie faz przetwarzania danego pakietu.
Akcje
Przetwarzanie pakietów realizowane przez przełącznik jest definiowane za pomocą akcji, z których najważniejszą jest przekazanie pakietu do określonego portu przełącznika. Akcje mogą jednak określać również inne atomowe czynności, takie jak odrzucenie pakietu, skierowanie go do kolejki lub zmiana wartości jego atrybutów. Akcje na pakiecie mogą być wykonywane na bieżąco w miarę jego przetwarzania w ramach potoku lub zbierane w postaci zbioru czynności do łącznego wykonania na koniec przetwarzania pakietu.
Oprócz akcji do wykonania na pakiecie, możliwe jest również zdefiniowanie instrukcji, których najważniejszym zastosowaniem jest sterowanie przebiegiem przetwarzania pakietu w ramach potoku.
Pozostałe składowe protokołu
Protokół OpenFlow pozwala również:
- odczytywać wartości liczników powiązanych z poszczególnymi pozycjami przepływu, tabelami przepływów etc. w celu monitorowania ruchu w sieci,
- tworzyć mierniki i kolejki, dzięki którym można definiować zachowania przełącznika realizujące jakość usług sieciowych,
- definiować grupy jako dodatkowe fazy przetwarzania pakietów w potoku z odrębnymi zestawami akcji do wykonania na tych pakietach, dzięki czemu złożone algorytmy przetwarzania można wyrażać w sposób zwięzły.
Historia
Open Networking Foundation (ONF) to organizacja zorientowana na propagowanie i promowanie koncepcji software-defined networking (SDN)[2], zarządzająca standardem OpenFlow[3].
ONF definiuje OpenFlow jako pierwszy standard interfejsu komunikacyjnego określego pomiędzy warstwą kontrolną (ang. control plane) a warstwą przekazywania pakietów w architekturze SDN. OpenFlow umożliwia zarówno bezpośredni dostęp do oraz wpływanie na warstwę przekazywania pakietów w urządzeniu sieciowym takim jak przełączniki lub rutery i to zarówno fizyczne jak i wirtualne (oparte o hipernadzorcę). Brak otwartego standardu dostępu do warstwy przekazywania komunikatów doprowadził do tego, że współczesne urządzenia sieciowe uważane są za monolityczne, zamknięte i podobne do systemów klasy mainframe. Protokół taki jak OpenFlow jest niezbędny aby przenieść funkcję kontroli sieci z zamkniętych urządzeń producentów do lokalnie zarządzanego oprogramowania otwartego[4].
Innymi słowy, OpenFlow pozwala aby trasa pakietów poprzez sieć telekomunikacyjną była określana przez oprogramowanie działające w tzw. kontrolerze. Takie oddzielenie kontroli od przekazywania pakietów pozwala na bardziej zaawansowanie zarządzanie ruchem niż byłoby możliwe przy wykorzystaniu list kontroli dostępu (ACL) i protokołów trasowania. Twórcy OpenFlow uważają go za element umożliwiający budowę SDN.
Znaczna liczba producentów przełączników sieciowych i ruterów w tym Big Switch Networks[5], Brocade Communications[6], Arista Networks, Cisco, Force10, Extreme Networks, IBM, Juniper Networks, Digisol, Larch Networks, Hewlett-Packard, NEC oraz MikroTik[7] ogłosiła zamiar wsparcia OpenFlow bądź już dostarcza odpowiednie urządzenia. OpenFlow jest wykorzystywany głównie pomiędzy przełącznikiem a kontrolerem za pośrednictwem bezpiecznego kanału komunikacyjnego.
Rozwój
Wersja 1.1 protokołu OpenFlow została ogłoszona 28 lutego 2011 a dalszy rozwój standardu był zarządzany przez ONF[8]. W grudniu 2011 zarząd ONF zatwierdził wersję 1.2 OpenFlow i opublikował ją w lutym 2012[9]. Bieżąca wersja OpenFlow to 1.3.2 (stan na sierpień 2013)[10].
W maju 2011 Indiana University w powiązniu z ONF uruchomił Laboratorium Interopercyjności SDN aby testować jak produkty SDN pochodzące od różnych dostawców współpracują ze sobą[11].
W lutym 2012 Big Switch Networks udsotępniło kontroler OpenFlow projekt Floodlight na licencji otwartego oprogramowania Apache[12], a w listopadzie tego roku ogłosiło zestaw produktów SDN opartych o OpenFlow, na który składają się komercyjny kontroler oraz aplikacje wirtualnego przełącznika oraz do monitoringu[13].
W grudniu 2012 Hewlett-Packard zadeklarowało wsparcie stanadru OpenFlow w szesnastu swoich przełącznikach ethernetowych[14].
W kwietniu 2012 Urs Hölzle z Google opisał jak wewnętrzna sieć jego firmy została przebudowana od podstaw w okresie poprzednich dwóch lat w oparciu o prototokół OpenFlow, co pozwoliło na osiągnięcie znacznych korzyści w zakresie wydajności[15].
W styczniu 2013 NEC ujawnił wirtualny przełącznik dla hipernadzorcy Hyper-V Microsoftu w ramach Windows Server 2012 zaprojektowanego tak aby wprowadzić do tych środowisk SDN i wirtualizację sieci oparte o OpenFlow[16].
- ↑ Nick McKeown et al.: OpenFlow: Enabling innovation in campus networks. ACM Communications Review, 2008-04. [dostęp 2009-11-02].
- ↑ Kate Greene. TR10: Software-Defined Networking. , marzec/kwiecień 2009. [dostęp October 7, 2011].
- ↑ Open Networking Foundation: SDN Defined. Open Networking Foundation.
- ↑ Software-Defined Networking (SDN): The New Norm for Networks. Open Networking Foundation.
- ↑ Cade Metz: You Can’t Have Google’s Pluto Switch, But You Can Have This. Wired, March 26, 2013.
- ↑ Pavel Radda: Brocade Leads OpenFlow Adoption to Accelerate Network Virtualization and Cloud Application Development. Reuters, 2011-03-22. [dostęp 2011-11-29].
- ↑ MikroTik homepage. 29 stycznia 2013.
- ↑ Open Networking Foundation Press Release. 2011-03-11.
- ↑ Open Networking Foundation - OpenFlow v1.2.
- ↑ Open Networking Foundation - OpenFlow v1.3.2.
- ↑ SDN Interoperability Lab
- ↑ Bernard Cole: Big Switch releases open source controller for OpenFlow. EE Times, February 2, 2012. [dostęp 2012-02-02].
- ↑ Sean Michael Kerner: Big Switch Emerges with Commercial SDN Portfolio. Enterprise Networking Planet, 2012-11-13.
- ↑ Colin Neagle: HP takes giant first step into OpenFlow: HP is announcing its first effort to support OpenFlow standard on its Ethernet switches. Network World, 2 lutego 2012. [dostęp 28 kwietnia 2013].
- ↑ Levy, Steven, "Going With the Flow: Google’s Secret Switch to the Next Wave of Networking", Wired, April 17, 2012. Retrieved 2012-04-17
- ↑ Jim Duffy: NEC rolls out OpenFlow for Microsoft Hyper-V: NEC virtual switch adds IPv6 support to SDN controller. Network World, 22 stycznia 2013. [dostęp 28 kwietnia 2013].