Download SDN and Mininet - CSE Labs User Home Pages

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Network tap wikipedia , lookup

AppleTalk wikipedia , lookup

Net bias wikipedia , lookup

Spanning Tree Protocol wikipedia , lookup

TCP congestion control wikipedia , lookup

Internet protocol suite wikipedia , lookup

Parallel port wikipedia , lookup

Multiprotocol Label Switching wikipedia , lookup

Recursive InterNetwork Architecture (RINA) wikipedia , lookup

RapidIO wikipedia , lookup

Deep packet inspection wikipedia , lookup

Wake-on-LAN wikipedia , lookup

Real-Time Messaging Protocol wikipedia , lookup

UniPro protocol stack wikipedia , lookup

IEEE 1355 wikipedia , lookup

Cracking of wireless networks wikipedia , lookup

Transcript
Recall: Logically Centralized Control Plane
A distinct (typically remote) controller interacts with local
control agents (CAs) in routers to compute forwarding tables
Remote Controller
control
plane
data
plane
CA
CA
CA
CA
CA
1
Software Defined Networking (SDN)
Why a logically centralized control plane?
• easier network management: avoid router
misconfigurations, greater flexibility of traffic flows
• table-based forwarding (OpenFlow API) allows
“programming” routers
– centralized “programming” easier: compute tables centrally
and distribute
– distributed “programming” more difficult: compute tables as
result of distributed algorithm (protocol) implemented in
each and every router
• open (non-proprietary) implementation of control
plane
2
Generalized Forwarding and SDN
Each router contains a flow table that is computed and
distributed by a logically centralized routing controller
logically-centralized routing controller
control plane
data plane
local flow table
headers counters actions
1
0100 1101
3 2
values in arriving
packet’s header
3
OpenFlow Data Plane Abstraction
• flow: defined by header fields
• generalized forwarding: simple packet-handling rules
– Pattern: match values in packet header fields
– Actions: for matched packet: drop, forward, modify, matched
packet or send matched packet to controller
– Priority: disambiguate overlapping patterns
– Counters: #bytes and #packets
Flow table in a router (computed and distributed by
controller) define router’s match+action rules
4
OpenFlow Data Plane Abstraction
• flow: defined by header fields
• generalized forwarding: simple packet-handling rules
– Pattern: match values in packet header fields
– Actions: for matched packet: drop, forward, modify, matched
packet or send matched packet to controller
– Priority: disambiguate overlapping patterns
– Counters: #bytes and #packets
* : wildcard
1. src=1.2.*.*, dest=3.4.5.*  drop
2. src = *.*.*.*, dest=3.4.*.*  forward(2)
3. src=10.1.2.3, dest=*.*.*.*  send to controller
5
OpenFlow: Flow Table Entries
Rule
Action
Stats
Packet + byte counters
1.
2.
3.
4.
5.
Switch VLAN
Port
ID
Forward packet to port(s)
Encapsulate and forward to controller
Drop packet
Send to normal processing pipeline
Modify Fields
MAC
src
MAC
dst
Link layer
Eth
type
IP
Src
IP
Dst
IP
Prot
Network layer
TCP
sport
TCP
dport
Transport layer
6
Examples
Destination-based forwarding:
Switch MAC
Port src
*
*
MAC Eth
dst
type
*
*
Switch MAC
Port src
*
IP
Dst
IP
Prot
TCP
TCP
Action
sport dport
*
51.6.0.8
*
*
*
*
port6
IP datagrams destined to IP address 51.6.0.8 should
be forwarded to router output port 6
Firewall:
*
VLAN IP
ID
Src
MAC Eth
dst
type
*
*
VLAN IP
ID
Src
IP
Dst
IP
Prot
TCP
TCP
Forward
sport dport
*
*
*
*
*
22
drop
do not forward (block) all datagrams destined to TCP port 22
Switch MAC
Port src
*
*
MAC Eth
dst
type
*
*
VLAN IP
ID
Src
*
128.119.1.1
IP
Dst
IP
Prot
TCP
TCP
Forward
sport dport
*
*
*
*
drop
do not forward (block) all datagrams sent by host 128.119.1.1
7
OpenFlow Abstraction
 match+action: unifies different kinds of devices
 Router
• match: longest
destination IP prefix
• action: forward out
a link
 Switch
• match: destination
MAC address
• action: forward or
flood
• Firewall
–match: IP addresses
and TCP/UDP port
numbers
–action: permit or
deny
• NAT
–match: IP address
and port
–action: rewrite
address and port
8
OpenFlow Example
match
Example: datagrams from
hosts h5 and h6 should
be sent to h3 or h4, via s1
and from there to s2
action
IP Src = 10.3.*.*
forward(3)
IP Dst = 10.2.*.*
Host h6
10.3.0.6
1
s3
controller
2
3
4
Host h5
10.3.0.5
1
s1
s2
1
2
Host h1
10.1.0.1
4
2
3
ingress port = 1
IP Src = 10.3.*.*
IP Dst = 10.2.*.*
action
forward(4)
Host h4
10.2.0.4
3
Host h2
10.1.0.2
match
4
match
Host h3
10.2.0.3
action
ingress port = 2
forward(3)
IP Dst = 10.2.0.3
ingress port = 2
forward(4)
IP Dst = 10.2.0.4
9
Simple SDN Network
L2 Forwarding
Controller APIs
POX, Floodlight, …
Controller
Communication Protocol
Software or Hardware
Switch
Ethernet,IP,ARP,TCP,HTTP,…
Host1
Host2
10
Communication Protocol
(OpenFlow)
11
OpenFlow
(Main Components)
• Flow tables
– Matching
– Manipulation
– Counters
Controller
• Communication messages
– Controller to switch
– Asynchronous
– Symmetric
Secure Channel
Flow
Table
Flow
Table
Pipeline
12
Flow Tables
(Structure)
• A flow-table consists of
– a set of flow entries
Match fields
Counters
Instructions
– a table miss configuration
• Drop packet
• Send to controller
• Process using the next flow-table
13
Flow Tables
(Matching)
•
•
•
•
•
Physical  Ingress port
Metadata
L2  MAC src/dst, EtherType, VLAN, MPLS
L3  IP src/dst, IP proto, IP ToS, ARP code
L4  TCP/UDP src/dst, ICMP
14
Flow Tables
(Counters)
• Table counters
– e.g. Packet lookups/matches
• Flow counters
– e.g. packets/bytes received
• Port counters
– e.g. packets/bytes transmitted/received, drops
15
Flow Tables
(Actions)
• Output
– IN_PORT  send packet to ingress port
– CONTROLLER  encapsulate and send to controller
– FLOOD  send packet to ports except ingress port
• Drop
• Push/Pop VLAN/MPLS tag
• Set-Field
– IPv4 src/dst addresses
– MAC src/dst addresses
– TCP src/dst ports
16
Communication Messages
(Controller to Switch)
• Features
Switch replies with list of ports, ports speeds, supported tables and
actions
• Modify state
Add, delete, or modify flow tables
• Read state
Controller queries table, flow, or port counters
• Packet out
Used by controller to send packets out of a specified port on the switch
17
Communication Messages
(Asynchronous)
• Packet in
All packets that do not have a matching flow entry are encapsulated and
sent to the controller
• Flow removed
Sent to controller when flow expires due to idle or hard timeouts
• Port status
Generated if a port is brought down
18
SDN Controller
(POX)
19
POX
• SDN controller written in Python
• Many build-in modules
• Python APIs to enable user extensions
20
POX
(Built-in Modules)
• Hub
flood packets
• L2 forwarding
MAC learning
• L3 forwarding
IP learning
• …
21
POX
(Python APIs)
• Publish-Subscribe system
• A module can raise events
• A module can register for events provides by other
modules
• A module must have a launch function
22
POX
(Python APIs)
23
POX
(Python APIs)
24
Software Switch
(Open vSwitch)
25
Open vSwitch
(Features)
• Features
–
–
–
–
–
–
–
–
–
L2-L4 matching
VLANs with trunking
Tunneling protocols such as GRE
Remote configuration protocol
Multi-table forwarding pipeline
Monitoring via NetFlow, sFlow
Spanning Tree Protocol
Fine-grained QoS
OpenFlow support
• Runs in either
– Standalone mode
– OpenFlow mode
26
A Network in a Laptop
(Mininet)
27
Mininet
• Mininet is a system for rapidly prototyping large networks on
a single laptop
• Lightweight OS-level virtualization
– Isolated network namespace
– Constrained CPU usage on isolated namespace
• CLI and Python APIs
• Can
– Create custom topologies
– Run real programs
– Custom packet forwarding using OpenFlow
28
Mininet API Basics
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 )
net.stop()
#
#
#
#
#
#
net is a Mininet() object
h1 is a Host() object
h2 is a Host()
s1 is a Switch() object
c0 is a Controller()
creates a Link() object
c0
s1
h1
h2
10.0.0.1
10.0.0.2
Performance Modeling in Mininet
# Use performance-modeling link class
net = Mininet(link=TCLink)
# Limit link bandwidth and add delay
net.addLink(h2, s1, bw=10, delay='50ms')
controlle
r
s1
h1
h2
10.0.0.1
10.0.0.2
Mininet
(Examples)
31
References
• OpenFlow
http://www.openflow.org
• Open vSwitch
http://www.openvswitch.org
• POX
https://openflow.stanford.edu/display/ONL/POX+Wiki
• Mininet
http://mininet.org
• Floodlight OpenFlow Controller
http://www.projectfloodlight.org/floodlight/
32
Data Center Networks
• 10’s to 100’s of thousands of hosts, often closely
coupled, in close proximity:
– e-business (e.g. Amazon)
– content-servers (e.g., YouTube, Akamai, Apple, Microsoft)
– search engines, data mining (e.g., Google)
 challenges:
 multiple applications, each
serving massive numbers of
clients
 managing/balancing load,
avoiding processing, networking,
data bottlenecks
Inside a 40-ft Microsoft container,
Chicago data center
33
Data Center Networks
load balancer: application-layer routing
 receives external client requests
 directs workload within data center
 returns results to external client (hiding data
center internals from client)
Internet
Border router
Load
balancer
Access router
Tier-1 switches
B
A
Load
balancer
Tier-2 switches
C
TOR switches
Server racks
1
2
3
4
5
6
7
8
34
Data Center Networks
 rich interconnection among switches, racks:
• increased throughput between racks (multiple routing
paths possible)
• increased reliability via redundancy
Tier-1 switches
Tier-2 switches
TOR switches
Server racks
1
2
3
4
5
6
7
8
35