Software Defined
Networking
Lukáš Rypl
Twitter: @LukasRypl

2. - 3. 11. 2013
Klasický model
logika v boxu
virtualizace serverů X síť nestíhá
nepřímé ovlivňování funkcí

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

2 / 11
Klasický model
logika v boxu
virtualizace serverů X síť nestíhá
nepřímé ovlivňování funkcí
Historie
telco - cca 1980 AT&T Network Control Point
cca 1990 - Active Networks - kód v paketu
(scriptlety)
2004 - Routing Control Protocol - počítá
směrovací tabulky pro celou síť
2008 - OpenFlow
Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

2 / 11
OpenFlow

Nick Feamster: Software Defined Networking. Coursera 2013

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

3 / 11
Jak to funguje

data plane: match + action
control plane
northbound interface (NBI)

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

4 / 11
Co přináší SDN
Dobré věci:
centrální správa toku dat sítí
rychlejší deploy síťových služeb díky API
nezávislost na výrobci HW

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

5 / 11
Co přináší SDN
Dobré věci:
centrální správa toku dat sítí
rychlejší deploy síťových služeb díky API
nezávislost na výrobci HW
Horší věci:
Single point of failure = controller
NBI je zatím nepřenosné
network admin se stává vývojářem

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

5 / 11
Přehled controllerů
NOX - C++
POX - Python (jen OF 1.0)
Ryu - Python (+OpenStack)
FloodLight - Java (+REST API)
Open DayLight - Java (+REST, OSGi, Service
Abstraction Layer)
...

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

6 / 11
POX

def handle ConnectionUp(event):
msg = of.ofp_flow_mod()
msg.actions.append(of.ofp_action_output(port=of.OFPP_FLOOD))
event.connection.send(msg)
def launch():
core.openflow.addListenerByName("ConnectionUp",_handle_ConnectionUp)

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

7 / 11
SDN programovací jazyky
Frenetic
Select(packets) * GroupBy([srcmac]) * SplitWhen([inport])

Pyretic - skládání a registrace zpracování
>> sekvenční zpracování
+ paralelní kompozice
(match(dstip=10.1.1.1) >> fwd(1)) + (match(dstip=10.1.1.2) >> fwd(2))
self.query = packets(1,[’srcmac’, ’switch’])
self.query.register_callback(learn_new_MAC)

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

8 / 11
SDN další NBI
Chybí standard

Open Network Foundation https://www.opennetworking.org/images/stories/downloads/working-groups/charter-nbi.pdf
Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

9 / 11
Testbed
Mininet
net = Mininet( controller=Controller )
net.addController( ’c0’ )
h1 = net.addHost( ’h1’, ip=’10.0.0.1’ )
h2 = net.addHost( ’h2’, ip=’10.0.0.2’ )
s3 = net.addSwitch( ’s3’ )
net.addLink( h1, s3 )
net.addLink( h2, s3 )
net.start()
CLI( net )

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

10 / 11
Pro zájemce doporučuji

Nick Feamster - Georgia Institute of Technology
https://www.coursera.org/course/sdn
May 2014

Lukáš Rypl (jOpenSpace2013)

Software Defined Networking

2. - 3. 11. 2013

11 / 11

Software Defined Networking intro

  • 1.
  • 2.
    Klasický model logika vboxu virtualizace serverů X síť nestíhá nepřímé ovlivňování funkcí Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 2 / 11
  • 3.
    Klasický model logika vboxu virtualizace serverů X síť nestíhá nepřímé ovlivňování funkcí Historie telco - cca 1980 AT&T Network Control Point cca 1990 - Active Networks - kód v paketu (scriptlety) 2004 - Routing Control Protocol - počítá směrovací tabulky pro celou síť 2008 - OpenFlow Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 2 / 11
  • 4.
    OpenFlow Nick Feamster: SoftwareDefined Networking. Coursera 2013 Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 3 / 11
  • 5.
    Jak to funguje dataplane: match + action control plane northbound interface (NBI) Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 4 / 11
  • 6.
    Co přináší SDN Dobrévěci: centrální správa toku dat sítí rychlejší deploy síťových služeb díky API nezávislost na výrobci HW Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 5 / 11
  • 7.
    Co přináší SDN Dobrévěci: centrální správa toku dat sítí rychlejší deploy síťových služeb díky API nezávislost na výrobci HW Horší věci: Single point of failure = controller NBI je zatím nepřenosné network admin se stává vývojářem Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 5 / 11
  • 8.
    Přehled controllerů NOX -C++ POX - Python (jen OF 1.0) Ryu - Python (+OpenStack) FloodLight - Java (+REST API) Open DayLight - Java (+REST, OSGi, Service Abstraction Layer) ... Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 6 / 11
  • 9.
    POX def handle ConnectionUp(event): msg= of.ofp_flow_mod() msg.actions.append(of.ofp_action_output(port=of.OFPP_FLOOD)) event.connection.send(msg) def launch(): core.openflow.addListenerByName("ConnectionUp",_handle_ConnectionUp) Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 7 / 11
  • 10.
    SDN programovací jazyky Frenetic Select(packets)* GroupBy([srcmac]) * SplitWhen([inport]) Pyretic - skládání a registrace zpracování >> sekvenční zpracování + paralelní kompozice (match(dstip=10.1.1.1) >> fwd(1)) + (match(dstip=10.1.1.2) >> fwd(2)) self.query = packets(1,[’srcmac’, ’switch’]) self.query.register_callback(learn_new_MAC) Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 8 / 11
  • 11.
    SDN další NBI Chybístandard Open Network Foundation https://www.opennetworking.org/images/stories/downloads/working-groups/charter-nbi.pdf Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 9 / 11
  • 12.
    Testbed Mininet net = Mininet(controller=Controller ) net.addController( ’c0’ ) h1 = net.addHost( ’h1’, ip=’10.0.0.1’ ) h2 = net.addHost( ’h2’, ip=’10.0.0.2’ ) s3 = net.addSwitch( ’s3’ ) net.addLink( h1, s3 ) net.addLink( h2, s3 ) net.start() CLI( net ) Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 10 / 11
  • 13.
    Pro zájemce doporučuji NickFeamster - Georgia Institute of Technology https://www.coursera.org/course/sdn May 2014 Lukáš Rypl (jOpenSpace2013) Software Defined Networking 2. - 3. 11. 2013 11 / 11