OpenFlow
OpenFlow to protokół komunikacyjny umożliwiający zdalny dostęp do płaszczyzny danych urządzenia sieciowego. Zamierzeniem twórców protokołu było wsparcie budowy sieci sterowanych programowo (ang. Software-defined network, SDN) dzięki standaryzacji oraz dopasowaniu do możliwości produkowanych urządzeń.
Zasady działania OpenFlow
Uczestnicy komunikacji

Protokół OpenFlow rozdziela płaszczyznę danych (ang. forwarding plane) przełączników sieciowych i ruterów[1] oraz sterowania (ang. control plane). Płaszczyzna danych realizowana jest przez urządzenia nazywane w tym kontekście przełącznikami OpenFlow, a płaszczyznę sterowania realizują kontrolery OpenFlow. W celu osiągnięcia postulowanej w ramach SDN centralizacji funkcji sterowania, 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 OpenFlow definiuje za pośrednictwem kanału OpenFlow, w jaki sposób przełącznik OpenFlow powinien przetwarzać trafiające do niego pakiety[2]. Na podstawie wytycznych otrzymanych od kontrolera, przełącznik samodzielnie przetwarza większość pakietów. Dzięki takiemu podejściu przetwarzanie komunikatów może wykorzystywać zaawansowane algorytmy w kontrolerze przy jednoczesnym zachowaniu wysokiej wydajności przetwarzania poszczególnych pakietów.
Przełączniki mogą pełnić tylko funkcje płaszczyzny danych (czysty przełącznik OpenFlow) albo łączyć funkcje płaszczyzn danych i sterowania (przełącznik hybrydowy). 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 nieumożliwiający 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 zlecane przez kontroler tworzenie, modyfikowanie i usuwanie pozycji przepływu stanowi podstawowe zastosowanie protokołu OpenFlow. Każda taka pozycja wspiera przekazywanie strumienia pakietów (przepływ) 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 odebranego pakietu 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 nagłówku pakietu lub metadanych z wartościami określonymi w danej pozycji. Pozycja przepływu określa dokładne wartości, jakie muszą mieć wybrane pola w nagłówku pakietu, aby dopasowanie było możliwe albo wskazuje, że dane pola mogą 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 którejkolwiek 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 (np. do kontrolera). Akcje mogą jednak określać również inne atomowe czynności, takie jak odrzucenie pakietu, skierowanie go do kolejki lub zmiana wartości jego pól lub metadanych. Akcje na pakiecie mogą być wykonywane na bieżąco tj. w miarę jego przetwarzania w ramach potoku bądź zbierane w postaci zbioru czynności do łącznego wykonania na koniec przetwarzania pakietu - bezpośrednio przed przekazaniem go do wybranego portu.
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 SDN[3], zarządzająca standardem OpenFlow[4].
ONF definiuje OpenFlow jako pierwszy standard interfejsu komunikacyjnego określego pomiędzy płaszczyzną sterowania a płaszczyzną danych w architekturze SDN. OpenFlow umożliwia zarówno bezpośredni dostęp do oraz wpływanie na płaszczyznę danych 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 płaszczyzny danych 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ę sterowania z zamkniętych urządzeń producentów do lokalnie zarządzanego oprogramowania otwartego[5].
Innymi słowy, OpenFlow pozwala aby trasa pakietów poprzez sieć telekomunikacyjną była określana przez oprogramowanie działające w kontrolerze. Takie oddzielenie sterowania 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[6], Brocade Communications[7], Arista Networks[8], Cisco, Dell[9],Force10, Extreme Networks, IBM, Juniper Networks, Digisol, Larch Networks, Hewlett-Packard, NEC oraz MikroTik[10] 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[11]. W grudniu 2011 zarząd ONF zatwierdził wersję 1.2 OpenFlow i opublikował ją w lutym 2012[12]. Bieżąca wersja OpenFlow to 1.3.2 (stan na sierpień 2013)[13].
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ą[14].
W lutym 2012 Big Switch Networks udsotępniło kontroler OpenFlow projekt Floodlight na licencji otwartego oprogramowania Apache[15], 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[16].
W grudniu 2012 Hewlett-Packard zadeklarowało wsparcie stanadru OpenFlow w szesnastu swoich przełącznikach ethernetowych[17].
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[18].
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[19].
- ↑ Nick McKeown et al.: OpenFlow: Enabling innovation in campus networks. ACM Communications Review, 2008-04. [dostęp 2009-11-02].
- ↑ Sieci sterowane programowo SDN oraz środowisko OpenFlow (dostęp płatny). Przegląd Telekomunikacyjny - Wiadomości Telekomunikacyjne, luty 2013. [dostęp 2013-08-31].
- ↑ 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].
- ↑ Arista dodaje do EOS wsparcie dla protokołów OpenFlow i OpenStack. networld.pl. [dostęp 2013-08-31].
- ↑ Dell Networking S6000 - przełącznik dla centrów danych. benchmark.pl. [dostęp 2013-08-31].
- ↑ 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].