27
2015.05.14. 1 Software Defined Networking Szabó Flórián Ákos | Majoros Tamás - SDN definíciója - Control és Data plane szétválasztása - Az SDN alapú hálózati architektúra bemutatása - Hogyan volt eddig? - Miért szükséges a változás? - Hogyan lesz ezután (SDN-nel)? - Az SDN előnyei - Az OpenFlow protokoll rövid bemutatása - SDN Controller-ek rövid bemutatása - Egy már létező SDN implementáció: Google B4 - Gyakorlati példák - Mininet példa - L2-es tanuló Switch - Elosztott L2-es Tűzfal - Application Load Balancer Tartalom

Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

Embed Size (px)

Citation preview

Page 1: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

1

Software Defined

Networking

Szabó Flórián Ákos | Majoros Tamás

- SDN definíciója- Control és Data plane szétválasztása- Az SDN alapú hálózati architektúra bemutatása- Hogyan volt eddig?- Miért szükséges a változás? - Hogyan lesz ezután (SDN-nel)?- Az SDN előnyei- Az OpenFlow protokoll rövid bemutatása- SDN Controller-ek rövid bemutatása- Egy már létező SDN implementáció: Google B4- Gyakorlati példák

- Mininet példa- L2-es tanuló Switch- Elosztott L2-es Tűzfal- Application Load Balancer

Tartalom

Page 2: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

2

Az SDN-ről dióhéjban

Egy újfajta hálózati architektúra, amely olyan eszközökből áll,

amelyek gyártófüggetlen módon programozhatóak, s ezáltal

az eszközök vezérlése (Control plane) és a tényleges

forgalomtovábbítás (Data Plane) szétválasztódik.

Ez gyakorlatilag azt jelenti, hogy a gyártó csak a vasat adja el

és az azon futó szoftver, amely a hálózat vezérléséért felel,

nyíltan programozható, vezérelhető és ami nagyon fontos,

hogy ezáltal automatizálhatóvá válik!

Az SDN-ről dióhéjban

Koncepció: az SDN legyen dinamikus, menedzselhető,

költséghatékony, alkalmazkodjon a mai alkalmazások

dinamikus természetéhez és nagy sávszélesség-igényéhez.

Szétválasztja a hálózat vezérlő és továbbító funkcióit,

lehetővé teszi, hogy a hálózati vezérlő közvetlenül

programozható legyen és a mögöttes infrastruktúrát

különválasszuk az alkalmazásoktól és a hálózati

szolgáltatásoktól

Page 3: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

3

•Agilis: a szétválasztás lehetővé teszi a hálózati adminisztrátor

számára, hogy a hálózati konfigurációt a folyamatosan változó

igények kielégítése érdekében dinamikusan módosítsa

•Központilag menedzselhető: az „agy”, a hálózat intelligenciája

a kontrollerekben van centralizálva, globális képet látnak a

hálózatról

•Nyílt szabványokon alapuló és gyártófüggetlen:

egyszerűsödik a hálózat kialakítása és működtetése, mert több

különböző gyártóspecifikus eszköz és protokoll helyett az SDN

kontrollerek irányítják a hálózatot

Az SDN-ről dióhéjban

Information Control Messages

•Control/Management plane:Döntéshozás a forgalomtovábbítás módjáról

•Data/Forwarding plane:A Control Plane által meghatározott instrukciók szerint az eszközön áthaladó forgalom

továbbítása

•A Control plane és Data plane közti kommunikációt az OpenFlow protokoll biztosítja

Hogyan lehet ezt elérni?

Control plane

Data plane

►SDN: a gyártó nem

telepíti fel az eszközökre

egyesével a saját zárt

szoftverét, hanem

implementálja az

OpenFlow protokollt,

aminek segítségével az

eszköz menedzselhető

lesz távolról egy ún.

Controller segítségével.

Page 4: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

4

(kép forrása: http://www.commscope.com/Blog/SDN--The-Problem-Solver/)

Hogyan volt eddig?

Hálózatok építésénél nem csak azt kellett figyelembe venni, hogy milyen

igényeket kell tudnia kiszolgálni a megvett eszközöknek, hanem azt is

hogy melyik gyártótól lehet megvenni és mennyiért? Cisco, Juniper, Hp,

Dell, Nortel, Motorola, stb. …

A vásárláskor eldől hogy melyik gyártó szoftveréhez láncolja magát a

vevő. Ez nem szerencsés, mert a gyártó aki az eszközt előállítja nem

feltétlenül képes a legjobb szoftvert is megírni rá, ami lassítja az

innovációt és drágítja az eszközöket.

Mivel a Control Plane minden egyes eszközön elosztott módon szerepel,

az eszközök komplexek, azokat leggyakrabban egyesével, parancssoros

eléréssel kell konfigurálni. Egy adatközpontban például egy-egy új policy

bevezetésekor akár több száz eszközt kell újrakonfigurálni amely lassú

és magában hordozza az emberi hiba lehetőségét.

Page 5: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

5

•A változás szükségességét tekintve több forrást megjelölhető:

•Végfelhasználók számának rohamos növekedése

•Szerver virtualizáció, felhő alapú szolgáltatások terjedése

•Big data alkalmazások sávszélesség igényeink kielégítése

A legtöbb hálózat hierarchikus felépítésű (Core, Distribution és

Access layer), amely a kliens-szerver alapú forgalom dominanciája

esetén még viszonylag jól működött, viszont ez a fajta felépítés

manapság egyre gyakrabban nem megfelelő a

vállalatok/felhasználók dinamikus számítási és adattárolási

igényeinek

Nem utolsó sorban a hálózatok akkora méreteket kezdenek ölteni,

amit „kézzel” (értsd: automatizáció nélkül) egyre nehezebb kezelni

Miért van szükség változásra?

Az eszközök nyilván nem fognak egyik napról a másikra

lecserélődni, vagy megtanulni SDN (OpenFlow) nyelven „beszélni”,

ez a váltás fokozatosan fog végbemenni.

Először a hibrid eszközök fognak megjelenni, amelyek még

tartalmazzák a jelenlegi tradicionális Control plane funkciókat,

valamint opcionálisan képesek lesznek egy SDN vezérlőtől

fogadni utasításokat.

Idővel viszont meg fognak jelenni azok az eszközök amelyek már

kizárólag az SDN controllertől fogják kapni az instrukciókat.

Ezeknek az eszközöknek a konfigurációja már nem egyesével

hanem központilag a kontrolleren keresztül fog történni

automatizmus és emberi felügyelet mentén

Hogyan lesz az SDN-nel?

Page 6: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

6

Az SDN előnyei: Erőforrás gazdálkodás

A tradicionális hálózatok esetében, az OSI modell 7. rétegében

futó alkalmazásoknak nincs rálátása hogy az őket kiszolgáló

hálózaton hogyan alakul az éppen elérhető szabad kapacitás, ami

miatt általánossá vált a hálózatok túlterheltsége.

Ezzel szemben, egy SDN környezetben, az OSI modell 7.

rétegében futo alkalmazás kapcsolatba tud lépni az SDN

Controllerrel, azzal közölni tudja a hálózaton forgalmazni kívánt

becsült adatmennyiségét és a Controller figyelembe véve fel tudja

„konfigurálni” a hálózati eszközöket a forgalmi igény megfelelő

kielégítésére.

Az SDN előnyei: Automatizáció

Az SDN architektúra és megfelelő absztrakció felhasználásával olyan

szoftver-csomagok fejlesztése válik lehetővé, amelyek segítségével a

fizikai hálózati infrastruktúra képes az azt igénybe vevő

alkalmazások/userek igényeihez alkalmazkodni és nem pedig

fordítva.

Northbound API: az SDN Controller által egy API (pl REST), amelyen

keresztül a hálózat vezérelhetővé válik az alkalmazások számára.

Southbound API: ezalatt tipikusan az OpenFlow protokollt értjük,

amellyel az SDN Controller képes vezérelni az eszközöket.

Elképzelhető hogy bizonyos fejlesztők SDN Controller-jei az OpenFlow protokoll

mellett egy saját maguk által kifejlesztett protokollt is alkalmaznak (ami viszont már

ellent mond a gyártófüggetlenség elvének).

Page 7: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

7

Northbound vs Southbound API

Kép forrása: http://deliveryimages.acm.org/10.1145/2510000/2500473/figs/uf2.jpg

Az SDN előnyei: Multivendor környezet

központi vezérlése

Egy OpenFlow protokollt használó SDN Controller képes akármelyik

gyártó eszközét vezérelni, mindameddig az eszközben implementálva

van / támogatott az OpenFlow protokoll megfelelő verziója. Ahelyett

hogy az eszközöket gyártónként külön csoportokban kezelnék, az

SDN architektúrán alapuló hálózatot egy központi Controller

segítségével lehet menedzselni, amelynek köszönhetően

egyszerűsödik sok munkafolyamat.

Fontos megjegyezni, hogy az SDN nem egyenlő az OpenFlow

protokollal. Maga az OpenFlow csak egy lehetséges mód az SDN

architektúra bevezetésére, emellett gyártóspecifikus megoldások is

elképzelhetőek a jövőben, amely viszont már ellent mondana a

gyártófüggetlenség követelményével!

Page 8: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

8

Az SDN előnyei: Megbízhatóság,

biztonság

Az SDN-nek köszönhetően lehetőség van magasszintű konfigurációs

sémák és policy-k definiálására, amelyet a Controller fog lefordítani a

fizikai hálózat függvényében és érvényesíteni az OpenFlow protokoll

segítségével.

Mivel az SDN Controllernek teljes rálátása és irányítása van a

hálózat fölött a szükséges ACL, forgalmi, QoS és biztonsági

megszorítások érvényesítése lényegesen egyszerűbb feladat, mint a

tradícionális hálózatok esetében.

Nagyvállalatok esetében ez komoly operációs költségcsökkenést,

dinamikusabb hálózatot, kevesebb hibás konfigurációt és konzisztens

biztonsági előírásokat eredményezhet, amely komoly motiváció

lehet az SDN bevezetésére.

Az SDN előnyei: Egyszerűbb hardver

Az SDN koncepciójából adódóan talán ez az ami legnyilvánvalóbb amikor az SDN

előnyeiről van szó. Azzal, hogy az eddig minden eszközön megtalálható Control

Plane-t leválasztjuk és csak a forgalom továbbításával foglalkozó Data Plane marad

az eszközben, az eszközök komplexitása nagyban csökken, aminek közvetlen

következménye az árcsökkenés, amely nagyvállalati szinten komoly

megtakarításokat eredményezhet. Nem mellesleg, az eszközök áramfogyasztása

is csökkenni fog, mert nem kell többet a Controle Plane szoftvert futtatnia.

Hozzá kell tenni, hogy az árcsökkenésben az is közrejátszik, hogy az eddig az

eszközök árának jelentős részét képező gyártói szoftver licenszre nincs ezentúl

szükség, mert nem tartalmaz az eszköz ilyen szoftvert

A tradicionális hálózatok esetében, a forgalom irányításával kapcsolatos

intelligencia elosztott módon van jelen, minden eszközben, amelynek

következtében meglehetősen komplexszé válnak, ezzel szemben Egy SDN

környezetben a forgalomirányításért felelős intelligencia központosított egy

logikailag centralizált SDN Controller-en.

Page 9: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

9

Az OpenFlow protokollról

TLS/SSL

csatorna

Kommunikációs protokoll, amely arra szolgál hogy a Controller és

az OpenFlow képes hálózati eszköz egymással kommunikálni

tudjon (Control messages)

v 1.0 a legelső használható verzió, kezdetleges funkciók

v 1.5 a jelenlegi legújabb verzió, folyamatos fejlesztés alatt

Ahogyan azt az eredeti OpenFlow specifikáció is említi, maga az

OpenFlow nem követeli meg az IP protokoll használatát,

egyedüli követelmény hogy a hardverben implementált flow tábla

képes legyen egyezés keresésére a csomag fejrész mezőiben

(http://archive.openflow.org/documents/openflow-wp-latest.pdf)

(Open Networking Foundation - opennetworking.org)

Az OpenFlow protokoll

Page 10: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

10

(Kép forrása: http://www.cisco.com/web/solutions/trends/open_network_environment/docs/cisco_one_webcastan_introduction_to_openflowfebruary142013.pdf

Az OpenFlow protokoll evolúciója

1.0: 1 flow tábla, 12 csomag fejrész alapján illeszt, aktívan már nem fejlesztik

1.1: több flow tábla, VLAN és MPLS támogatás, virtuális port, inkompatibilis az 1.0-val

1.2: bitmaszkolás, csomag újraírás, IPv6 támogatás, multi-Controller opció hozzáadása

1.3: Provider Backbone Bridge (PBB) támogatás

1.4: alap TCP port 6653, Optikai portok támogatása, Flow monitorozás

Header Fields Counters Actions

Header fields: 12 különböző protokollmező alpaján lehet egyezéseket keresni:

src/dst-MAC, src/dst-IP address, src/dst-TCP/UDP port number, IN_PORT,

VLAN ID, VLAN priority, TOS, IP protocol, Eth_TYPE

Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

mindenre csomagra illeszkedik.

Counters: minden alkalommal amikor egy csomag illeszkedik egy adott flow

tábla bejegyzésre és aszerint továbbítódik az adott bejegyzés számlálója

inkrementálásra kerül.

Actions: meghatározza, hogy ha egy csomag illeszkedi az adott Flow tábla

bejegyzésre, akkor mi a teendő a csomaggal, példa:

OpenFlow 1.0 – Flow tábla

Page 11: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

11

Az OpenFlow 1.1-es verziójának megjelenésével az eszközök mostmár képesek

több flow táblát kezelni az eddig egy darab helyett

Létrehozták a pipelineing-ot, amelynek következtében utasítások sorozatát

lehet végre hajtani minden egyes csomagob (Action set segítségével). Példák:

TTL csökkentése, új header csatolása a csomaghoz.

Az Action set akkor kerül végrehajtásra, amikor a csomag végighaladt a

pipelineon.

OpenFlow 1.1 – Pipeline processing

Az OpenFlow 1.0-ás verziója még nem támogatta az IPv6-ot, ami

elég nagy negatívuma azoknak az eszközöknek, amelyeket a gyártók

ezzel a verzióval adtak ki.

2011 decemberében megjelent az OpenFlow 1.2-es verziója amely

már támogatja az alábbi IPv6-os protokollmezőket felhasználó flow

tábla bejegyzéseket:

•IPv6 forrás és cél cím

•Protokoll szám

•Forgalmi osztály (Traffic Class)

•ICMPv6 type & code

•Neighbour Discovery fejléc mezők

•IPv6 Flow címkék

Az OpenFlow 1.3-as specifikációba beépítették az IPv6 Extension

Header fejlécmezők támogatását is

OpenFlow (1.2) és IPv6

Page 12: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

12

Az OpenFlow protokoll folyamatos fejlesztés alatt áll, legújabb verziója az 1.5-ös,

valamint már a következő, 2.0-ás verzió is kidolgozás alatt áll

Az 1.4-es verzió legfontosabb újításai:

•Header fields: 13 kötelező és további opcionális fejlécmezők (pl: IP DSCP, IP ECN,

SCTP protokoll, ICMPv4/6, ARP, MPLS, PBB

•Bundles: segítségével a Controller több műveletet egy csoportba (bundle-be) tud

szervezni és ezeket vagy egytől egyig sikeresen végighajtja vagy egyiket sem

(atomi tranzakció)

•Optikai portok támogatása, aminek a segítségével lehetővé válik az FCoE (Fiber

Channel over Ethernet) használata.

•Flow táblák szinkronizálása (több Controllere is lehet egy eszköznek)

•Meter tables: per-flow számlálók, QoS implementálásához fontos

•Lehetősége van az OpenFlow switcheknek értesítő üzenetet küldenie a Controller

számára ha valamilyen válrozás történt (CLI-n konfigolták, etc)

•Az alapértelmezett portot átdefiniálja: TCP 6653-ra

OpenFlow 1.4 és tovább

Match Fields Priority Counters Instructions Timeouts Cookies

Az 1.4-es OpenFlow specifikáció az alábbi portokat definiálja:

Standard port: ki és bemenő forgalom továbbítására alkalmas portok, amelyek

számlálókkal rendelkeznek és csoportosíthatók. Pl: fizikai, logikai és a LOCAL port.

Fizikai port: egy eszköz hardveresen jelen lévő portja, amely megfeleltethető a

switcheken egy ki/bemenő forgalmat kezelő portoknak.

Logikai port: magasabb szintű absztrakt portok, amelyek nem feleltethetők meg

direktben fizikai portoknak. Pl: link-aggregációs portok, tunnel interfészek, loopback.

Előre lefoglalt portok: az OpenFlow specifikáció által meghatározott általános célt

szolgáló portok, például: ALL, CONTROLLER, TABLE, IN_PORT, LOCAL,

NORMAL, FLOOD

A NORMAL és a FLOOD portok csak OpenFlow-Hibrid eszközökön érhetők el!

OpenFlow 1.4 - Portok

Page 13: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

13

Olyan szoftvercsomag, amely egy szerveren futva képes a hozzá

kapcsolt OpenFlow protokollt használó hálózati eszközöket

vezérelni.

A kezdetleges Controller-ek még csak egyszerű hálózati funkciók

programozására adnak lehetősége, azonban egyes cégek már

komplett hálózati operációs rendszereket fejlesztenek amelyek

bonyolult megoldásokat képesek implementálni az eszközökön.

Az egyszerűbb Controller-eket különböző programnyelveken lehet

programozni: POX(Python), NOX(C++), Beacon(Java),

Ryu(Python), Floodlight(Java)

SDN / OpenFlow Controller

A Controller szoftver, viselkedése szerint, két fajta lehet:•Proaktív a Controller akkor, ha az előzetes információk alapján a

Flow tábla bejegyzéseket előre legenerálja és beilleszti a megfelelő

eszközök Flow táblájába

•Reaktív a Controller akkor, ha nem illeszt be előre flow

bejegyzéseket az eszközök Flow táblájába. Ekkor, ha olyan csomag

érkezik egy OpenFlow switch-hez, amely nem illeszkedik egyetlen

Flow tábla bejegyzésre sem (mert üres), a switch letárolja a

memóriájában a csomagot, a fejlécét pedig elküldi egy üzenetben a

Controller-nek, amely a fejléc információk szerint eldönti hogy milyen

flow bejegyzést kell készíteni a csomag megfelelő továbbításáért és

ezt visszajuttatja a switch-hez, valamint arra utasítja a switch-et hogy

a letárolt eredeti csomagot küldje ki a szabály szerint.

Proaktív vs Reaktív Operációs mód

Page 14: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

14

A Controller-ekkel szemben támasztott legfőbb elvárások:

•A hálózat állapotának nyilvántartása és vezérlése (Database)

•Magasszintű modell ami a hálózati eszközök közötti kapcsolatokat

leképezi, szabályokat deklarál

•REST API ami a Controller által nyújtott szolgáltatásokat elérhetővé

teszi az alkalmazások számára (Northbound API)

•Biztonságos TSL/SSL csatorna fenntartása minden egyes eszközzel

•Eszköz, topológia, szolgáltatás felderítő és útvonalválasztó modul

SDN/OpenFlow Controller-ek

Kezdetleges OpenFlow Controller-ek

NOX:

•Open source, Nicira networks fejlesztette ki

•C++ nyelven programozható, ezért gyors, hatékony (alacsony szintű hozzáférés)

•Hátránya hogy nehézkes a használata, erős programozási háttér kell hozzá

•Csak az OpenFlow 1.0-ás verziót támogatja

•Modulokat tartalmaz topológia felderítésre, metódusokat lehet regisztrálni bizonyos

eseményekhez.

•Egyetemi fejlesztők/kutatók körében volt elsősorban népszerű

POX:

•Open source, Nicira networks fejlesztette ki

•Célja egy fejlesztő/felhasználóbarát Controller létrehozása volt, ez részben sikerült

is, köszönhetően a Python programozási nyelvnek.

•Csak az OpenFlow 1.0-ás verzióját támogatja

•Újrafelhasználható modulok definiálására van lehetőség

Page 15: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

15

Beacon:•Open source, David Erickson a kifejlesztője, célja kutatási projektek támogatása

•A Java programozási nyelvet használja, több platformon is képes futni

•Moduláris felépítésű, amelyek futás közben cserélhetőek. Jó pár előre megírt és

igen hasznos modult tartalmaz.

•Képes több-magos processzorokon párhuzamosításra, ezért jobb a teljesítménye

•Beépített webes felhasználói felülettel rendelkezik, ami nagy előrelépés volt.

Floodlight:•Open Source, Big Switch Networks által fejlesztett, 2012-ben,

•A Beacon Controller továbbfejlesztett változata.

•Ugyancsak Java alapokon, fontos előrelépés hogy REST API-n keresztül szinte

minden része vezérelhető, így elérhető az alkalmazások számára.

•Webes felhasználói felületet is tartalmaz

Kezdetleges OpenFlow Controller-ek

•Linux Foundation által koordinált, komoly gyártói háttértámogatást

élvez: Cisco, Juniper, IBM

•Ugyancsak a Java programozási nyelvet használja, ezért szinte

mindenhol képes futni

•Dinamikusan betölthető modulokat tartalmaz elődjeihez hasonlóan

•Ugyancsak REST API-n keresztül vezérelhető az alkalmazások által

•Tartalmaz egy Service Abstraction Layer-t, amely ún. pluginok által

képes különböző (Southbound) protokollok kezelésére (OpenFlow

1.0, 1.3, YANG, DOCSIS, PacketCable) és intelligens döntések

meghozatalára (mikor melyiket kell használni)

Egy fejlettebb OpenFlow Controller: OpenDayLight

Page 16: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

16

Packet Flow

Software Defined Wide Area Network - Backbone

Egy valós példa: Google B4

Page 17: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

17

A WAN kapcsolatokról általánosan elmondható, hogy drágák, ezért ha egy cég

előfizet egy szolgáltatónál X sávszélességre, akkor az a legszerencsésebb, ha ezt

amennyire csak lehet ki is használja.

A Google Adatközpontjait összekötő WAN linkek, az OpenFlow bevezetése előtti

átlagos kihasználtság 30-50%-os volt. Az OpenFlow bevezetáse után közel 100%-os

lett, aminek következtében jelentős anyagi megtakarításokat értek el (kevesebb

bérelt vonal szükséges).

A Google DC-k közötti WAN linkeken haladó forgalom 3 típusba sorolható:

-Hozzáférés felhasználói adatokhoz (kis % de nagy prioritás, kis latency)

-Távoli adattárházakban tárolt fájlok elérése (közepes %, prioritás, latency)

-Nagyméretű backup műveletek (nagy %, nagy latency tűrés, kis prioritás).

A fentiek figyelembe vételével, és annak tudatában hogy a Google teljesen saját

maga tud rendelkezni a DC-i között folyó forgalom szabályozásával, egy olyan

OpenFlow implementációval álltak elő, amely közel 100%-os kihasználtságot tud

elérni a WAN kapcsolatokon, amely jelentős költségmegtakarítást jelent.

Egy valós példa: Google B4

Hogyan néz ki mindez a

gyakorlatban?

Page 18: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

18

Mininet

•Virtuális hálózati emulátor, nagyon jól használható egyéni fejlesztésre, oktatásra és

kutatásra egyaránt.

•Egy Mininet virtuális hálózat elemei:

•munkaállomások (host-ok)

•switchek

•controller(ek)

•a fentieket összekötő virtuális kapcsolatok (linkek)

•A munkaállomások standard Linux-ot futtatnak, a switchek pedig képesek az

OpenFlow protokoll használatára, amely az SDN-nel kapcsolatos kutatásokban

nagyon népszerűvé tette a Mininet-et.

•A beépített CLI interfész segítségével a felépített virtuális hálózat valós időben

menedzselhető

•A virtuális topológia felépítésére kétféle mód létezik:

•Beépített, paraméterezhető terminál paranccsal előre meghatározott (fa …)

•Vagy a Python API-n keresztül, tetszőleges topológia

•Forrás: www.mininet.org

Hogyan működik a Mininet

•Processz alapú virtualizáció segítségével tud számos (~4096) virtuális

hosztot és controllert futtatni egyetlen OS kernelen belül.

•Linux namespaces, kernel 2.2.26, segítségével különálló processzek saját

hálózati interfésszel, routing és ARP táblákkal rendelkeznek,

•A switchek és a host-ok virtuális ethernet interfészeken keresztül

kapcsolódnak

•A Mininet előnyei:•Gyors - Másodpercek alatt felépül egy virtuális hálózat

•Skálázható - Nagy méreteket tud szimulálni egyetlen PC, laptop…

•Olcsó hardveren is 2 Gbps-os sávszélesség elérésére is képes

•Könnyen telepíthető

•Olcsó és állandóan rendelkezésre áll

•Gyorsan újrakonfigurálható és újraindítható

•Valós, módosítatlan kódot futtat

•Könnyen csatlakoztatható fizikai hálózatokhoz

•Interaktív felületet biztosít (CLI)

•Wireshark segítségével könnyen nyomon követhető a virtuális forgalom

Page 19: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

19

•A Mininetet legegyszerűbben úgy lehet elkezdeni használni, hogy a

www.mininet.org oldalról egy mindent tartalmazó Virtuális Gépet (VM)

le kell tölteni és elindítani, ami előre telepítve tartalmaz mindent

•A $-al kezdődő parancsokat a Mininet VM-en belüli terminálban kell

kiadni, míg a ’mininet>’ kezdetű parancsokat a Mininet CLI-ben.

•Az alap terminál parancs, a ’$ sudo mn’, egy két host-ból, egy

switchből és egy referencia Controllerből álló virtuális hálózatot hoz

létre.

•A ’$ sudo mn’ parancs kiadása után azonban lehetőség van különböző

parancssori argumentumokkal személyre szabni a virtuális hálózatot:

•--controller ref VAGY --controller=remote,ip=127.0.0.1,port=6633

•--mac

•--topo tree,depth=2,fanout=3

•--topo mytopo --custom ~/mininet/custom/mininet-topologia.py

Mininet gyorstalpaló

Mininet Python API

net = Mininet()

h1 = net.addHost( 'h1' )

h2 = net.addHost( 'h2' )

s1 = net.addSwitch( 's1' )

c0 = net.addController( 'c0' )

net.addLink( h1, s1 )

net.addLink( h2, s1 )

net.start()

CLI( net )

Ennek a módszernek is létezik többféle variánsa, attól függően hogy milyen

szinten van megvalósítva a Mininet topológia felépítése. Az alábbi 2

kódrészlet egy alacsony szintű és egy magas szintű módszer a topológia

felépítésére.

class SingleSwitchTopo(Topo):

"Single switch connected to n hosts."

def __init__(self, n=2, **opts):

Topo.__init__(self, **opts)

switch = self.addSwitch('s1')

for h in range(n):

# Each host gets 50%/n of system CPU

host = self.addHost('h%s' % (h + 1), cpu=.5/n)

# 10 Mbps, 5ms delay, 10% loss, 1000 packet queue

self.addLink(host, switch)

net = Mininet( topo=SingleSwitchTopo( 2 ) )

net.start()

CLI( net )

Page 20: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

20

Mininet CLI parancsok

A Mininet CLI-be való belépés után az alábbi hasznos parancsok

állnak a rendelkezésre:•dump: csomópontonként részletesen kilistázza az interfészeket, IP címeket, PID-et, stb

•pingall: végigfut minden egyes csomóponton és meg ping-el minden egyes másik

csomópontot. Hasznos a csomópontok közötti általános hálózati kapcsolat

ellenőrzésére.

•iperf: két csomópont között elérhető sávszélesség tesztelésére

•dpctl: OpenFlow switch-ek flow táblájának manuális kezelése/lekérdezése

•link <host_A> <host_B> up/down: csomópontok közötti interfészek fel/le kapcsolása.

•xterm <host>: xterm ablak nyitása adott csomópontra.

•nodes: kilistázza a virtuális topológia elemeit

•net: kilistázza a topológia elemei között létező kapcsolatokat.

•<host_név> <parancs>: ezzel a formátummal tetszőleges host-on tetszőleges parancs

futtatható. Példa: ’h1 ifconfig -a’

Mininet Fa topológia (1)

Page 21: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

21

Mininet Fa topológia (2)

Fa struktúrájú topológiát legegyszerűbben az alábi

$ sudo mn –topo tree,fanout=3,depth=3

paranccsal lehet létrehozni, azonban ekkor nincs lehetőség a core,

distribution és access linkek paramétereinek beállítására.

A következő példa egy ilyen Mininet hálózat felépítését ismerteti.

coreLink = {'bw':50, 'delay':'5ms'}

distrLink = {'bw':30, 'delay':'10ms'}

accessLink = {'bw':10, 'delay':'15ms'}

A topológia többi elemét pedig 3 darab egymásba ágyazott for ciklus

segítségével hozzáadjuk a self.addSwitch() és a self.addHost() függvények

segítségével. Ezen elemek összekötése a self.addLink() függvénnyel

történik, amely 3 paramétert fogad:

self.addLink(’mit’, ’mivel’, **coreLink | **distrLink | **accessLink)

Első példa: Layer 2-es Learning witch (reaktív)

Page 22: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

22

Első példa: Layer 2-es Learning witch (reaktív)

Mi is egy Layer 2-es switch alap működési elve? Megtanulja a MAC címeket amiket lát és

ebből egy táblázatot épít amely alapján forgalmazza a csomagokat. Ha ebben nem talál

valamit akkor FLOOD-ol.

A POX Controller könyvtárában a Mininet VM-en erre két példa is található, az egyszerűbb az

l2_pairs.py néven található meg.

A megvalósítás lényege, hogy (switch, MAC cím) párokat képez le egy portszámra, amiket

eltárol.

Ha az OpenFlow switch olyan csomagot kap, amelyhez nincs Flow bejegyzése akkor ezt

elküldi a Controller-nek amely a következő logika alapján kezeli azt:

1.Megtanulja a portot a forrás MAC alapján

2.Megpróbálja megállapítani a cél port-ot a táblázata alapján

1.Ha sikertelen, akkor FLOOD-olja a csomagot.

2.Ha sikeres akkor kiküld a switch-nek két FLOW bejegyzést, amely az oda-vissza

forgalmat fogja engedélyezni a két MAC cím között. Valamint a FLOW bejegyzések

kiküldése mellett utasítja a switch-et hogy az eredeti bufferelt csomagot is küldje ki.

Második példa: Elosztott L2-es Tűzfal

Page 23: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

23

•A fenti L2-es Switch példa kiegészítve egy új funkcióval. A Controller-nek egy

csv fileban meg tudjuk adni, hogy mely MAC címek nem kommunikálhatnak

egymással, létrehozva ezzel egy elosztott tűzfalat.

•Működése annyiban tér el, hogy a Controller a firewall-policies.csv fileból

beolvassa a MAC-eket és a flow táblába beírja az ezeket tiltó bejegyzéseket,

mindezt PROAKTÍVAN

•Ezután ha a mininet parancssorban egy pingall-t kiadunk akkor látható lesz,

hogy a le nem tiltott MAC-ek tudják egymás pingelni, a letiltottak pedig nem.

•A megírt Controller topológia független, mivel minden OpenFlow eszközre

beírja a megfelelő flow bejegyzéseket, viszont pontosan emiatt nem a lehető

legoptimálisabb, mert nem csak azokon a switch-eken tiltja le a MAC címeket,

amelyekhez ténylegesen csatlakoznak.

Második példa: Elosztott L2-es Tűzfal

Második példa: Elosztott L2-es Tűzfal

•A letiltáshoz egyszerűen olyan flow bejegyzést illeszt be, ahol az action=” ”

rész üresen marad, ezáltal eldobásra kerül minden arra illeszkedő csomag.

•A CSV formátuma:

id,forras_MAC,cel_MAC

1,00:00:00:00:00:01,00:00:00:00:00:08

2,00:00:00:00:00:02,00:00:00:00:00:07

A tűzfal modul működése:

1.CSV beolvasása induláskor egy tömbbe (SRC,DST) párokként

2.Amikor egy OpenFlow switch csatlakozik a Controller-re lefut a

_handle_ConnectionUP event, amelynek keretében proaktívan kiküldi az

eszközre a megadott MAC címeket blokkoló flow bejegyzéseket.

Page 24: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

24

Második példa: Elosztott L2-es Tűzfal

Harmadik példa: Application Level Load Sharing

Page 25: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

25

Page 26: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

26

Köszönöm a figyelmet!

Kérdések?

Page 27: Software Defined Networking - irh.inf.unideb.huirh.inf.unideb.hu/~almasi/mimsc/pdf/12_SDN.pdf · Ha egy flow tábla bejegyzés adott Header Field-je üres, akkor az azt jelenti hogy

2015.05.14.

27

Források, linkek

Coursera – SDN kurzus: https://www.coursera.org/course/sdn1

ONF: https://www.opennetworking.org/

Mininet: http://mininet.org/walkthrough/

Google B4 paper: http://cseweb.ucsd.edu/~vahdat/papers/b4-sigcomm13.pdf