school of computing national university of singaporetbma/teaching/cs4226y... · openflow switch...

23
Wang Zixiao School of Computing National University of Singapore Programming Assignment CS 4226: Internet Architecture

Upload: others

Post on 03-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Wang Zixiao School of Computing

National University of Singapore

Programming Assignment

CS 4226: Internet Architecture

Page 2: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Variety of SDN Controllers

• NOX/POX • Ryu • Floodlight • OpenDaylight • Pyretic • Frenetic • Procera • RouteFlow • Trema

Page 3: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

POX: Overview

• A platform for building network control applications using Python

• Supports OpenFlow v. 1.0

• Advantages: o Widely used, maintained, supported o Relatively easy to read and write code

• Disadvantages: Performance

Page 4: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Learn through an example

• Implement a switch o What is a switch? o What is a hub?

Page 5: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Simple hub• Ethernet is a broadcast medium

o Hub is a flooding device

Page 6: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Example: Simple Switch

• Switch layer 2: o A multiple port bridge o learn about the MAC addresses on each ports o passes MAC frames destined to those ports.

Page 7: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

A

A’

B

B’ C

C’

1 2

345

6

Self-learning, forwarding: exampleA A’

Source: ADest: A’

MAC addr interface TTLswitch table

(initially empty)A 1 60

A A’ A A’ A A’ A A’A A’

• frame destination, A’, location unknown:➔ flood

A’ A

• destination A location known:

A’ 4 60

➔ selectively send on just one link

Page 8: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

OpenFlow

OpenFlow O

penFlow

Review

Control Plane

Data Plane

Listener Control Logic Messager

1

Parse packet and execute control logicFirst packet arrives at switchNo flow table match“PacketIn” event firedPacket sent to controllerCompose and send messageWrite flow table entrySecond packet arrives at switchFlow table matchAction

PacketIn

Msg

Entry 1

2

POX

Mininet

Page 9: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane
Page 10: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

How it works?

• Step 1: Register event listeners to handle specific events (e.g. ConnectionUp, PacketIn)

• Step 2: Parse packet and execute control logics

• Step 3: Compose and send the OpenFlow message to the switch

ControllerListenerEvent

def launch ():

1- core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

2- core.registerNew (Tutorial)

Class Tutorial(EventMixin): //EventMixin is the class that raises events

def __init__(self): self.listenTo(core.openflow) core.openflow_discovery.addListeners(self) //then implement all handlers you need….

Page 11: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Events

• Packet-in: For packets that do not have a matching flow entry

• Flow-Removed: For flow entries whose timeout expires

• Port-status: When port configuration state changes

• Connection-up: Upon connection startup

Page 12: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

How it works?

• Step 1: Register event listeners to handle specific events (e.g. ConnectionUp, PacketIn)

• Step 2: Parse packet and execute control logics

• Step 3: Compose and send the OpenFlow message to the switch

ControllerListener Control LogicEvent

def _handle_PacketIn (self, event): packet = event.parsed dst_port = table.get(packet.dst)

def _handle_ConnectioUp (self, event) : log.debug(“Switch %s has come up.”, dpid_to_str(event.dpid))

Every switch connected to the controller has an id named dpid (data path id).

Page 13: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

How it works?

• Step 1: Register event listeners to handle specific events (e.g. ConnectionUp, PacketIn)

• Step 2: Parse packet and execute control logics

• Step 3: Compose and send the OpenFlow message to the switch

Listener Control Logic MessagerEvent Msg

msg = of.ofp_flow_mod() <- This instructs a switch to install a flow table entry

msg.match.dl_src = packet.src another example is:

msg.match.dl_dst = packet.dst _packet_out()

msg.actions.append(of.ofp_action_output(port = dst_port))event.connection.send(msg)

Page 14: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Match

• in_port • dl_src, dl_dst • nw_src, nw_dst • nw_proto • tp_src, tp_dst

Page 15: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Match

msg = of.ofp_flow_mod() msg.match.dl_src = packet.src msg.match.dl_dst = packet.dst

Manual Match

msg.match = ofp_match.from_packet(packet, in_port)

Packet Match

Page 16: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Actions

• ofp_action_output()

• ofp_action_enqueue()

• ofp_action_dl_addr()

• ofp_action_nw_addr()

Page 17: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Example: Simple Switchdef launch ():

core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

def _handle_PacketIn (event):

packet = event.parsed

dst_port = table.get(packet.dst)

msg = of.ofp_flow_mod()

msg.match.dl_src = packet.src

msg.match.dl_dst = packet.dst

msg.actions.append(of.ofp_action_output(port = dst_port))

event.connection.send(msg)

Step 1: Register event listener

Page 18: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Example: Simple Switchdef launch ():

core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

def _handle_PacketIn (event):

packet = event.parsed

dst_port = table.get(packet.dst)

msg = of.ofp_flow_mod()

msg.match.dl_src = packet.src

msg.match.dl_dst = packet.dst

msg.actions.append(of.ofp_action_output(port = dst_port))

event.connection.send(msg)

Step 2: Parse the packet and execute control logics

Page 19: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Example: Simple Switchdef launch ():

core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

def _handle_PacketIn (event):

packet = event.parsed

dst_port = table.get(packet.dst)

msg = of.ofp_flow_mod()

msg.match.dl_src = packet.src

msg.match.dl_dst = packet.dst

msg.actions.append(of.ofp_action_output(port = dst_port))

event.connection.send(msg)

Step 3: Compose and send OpenFlow message

Page 20: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Network slicing

• Divide the production network into logical slices o Each slice controls its own packet forwarding

• Enforce strong isolation between slices o Actions in one slice do not affect another

Page 21: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Example1: FlowVisor

• FlowVisor a transparent proxy between switches and multiple controllers

• FlowVisor enforces isolation between each slice

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

FlowVisor

Slice 1 Controller

Slice 2 Controller

Slice 3 Controller

OFOF

OF OF

OF

OF OF

OF

Page 22: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

OpenFlow Switch

Example2: QoS-related Network Slicing

• Multiple queues for multiple classes • Guaranteed minimum bandwidth • Queue configuration is not part of the openflow • Configuration defines packet treatment • Openflow maps flows to queues Ref:http://archive.openflow.org/wk/index.php/Slicing

Controller

OF Q1 Q2 Q3 Q4 Q5DQ IF1

IF2

IF1IF3

IF4

Page 23: School of Computing National University of Singaporetbma/teaching/cs4226y... · OpenFlow Switch OpenFlow Switch OpenFlow Switch enFlow enFlow enFlow Review Control Plane Data Plane

Your project

• It is not FlowVisor • It is not multiple queues (e.g., QoS) • Special case where multiple bandwidth is provided • Separate traffics into two slices and assign to

different interfaces (not different controller not different queues)

• Try to keep it simple.