29
1/29 "Shortest path forwarding using OpenFlow" Iwan Hoogendoorn & Joris Soeurt Supervisor: Ronald van der Pol Wednesday 8 February 2012

Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

1/29  

"Shortest  path  forwarding  using  OpenFlow"  Iwan  Hoogendoorn  &  Joris  Soeurt  Supervisor:  Ronald  van  der  Pol  

Wednesday  8  February  2012  

Page 2: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

2/29  

Research  Ques/on  

In  what  way  can  shortest  path  bridging  be  implemented  using  OpenFlow?  

Page 3: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

3/29  

Agenda  

Approach  

Spanning  Tree  

TRILL  /  802.1aq  (SPB)  differences  

TRILL  -­‐  specific  

802.1aq  (SPB)  -­‐  specific  

OpenFlow  

Rou/ng  module  

Iwan  Hoogendoorn  Part-­‐Time  UvA  student  Full-­‐Time  Cisco  Employee  

Joris  Soeurt  Full-­‐Time  UvA  student  

Page 4: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

4/29  

Approach  

•  Implement  a  (basic)  shortest  path  bridging  algorithm  using  OpenFlow  – First  see  how  TRILL  /  802.1aq  implement  this  

•  Discovered  exis/ng  rou/ng  module  – No  annota/on  in  code  (wriUen  in  C)  – Very  liUle,  outdated  documenta/on    

•  Explored  and  tested  this  module  •  Created  improvement  proposal  

Page 5: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

5/29  

Spanning  Tree  –  Why  –  What  does  it  do?    

“The  Spanning  Tree  Protocol  (STP)  is  a  network  protocol  that  ensures  a  loop-­‐free  topology  for  any  bridged  Ethernet  local  area  network.”  W

ikipedia  

Radia  Perlm

an  

Page 6: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

6/29  

Spanning  Tree  

Page 7: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

7/29  

TRILL/802.1aq  –  Why  beUer?  

TRILL  à  IETF  &  802.1aq  à  IEEE    

IS-­‐IS  topology  discovery  

 TRILL  –  unicast  traffic  –  hop  by  hop  

TRILL  –  broadcast,  mul/cast,  unknown  –  pre-­‐calculated  distribu/on  trees  

802.1aq  (SPB)  –  all  traffic  –  trees  calculated  up  front    

Page 8: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

8/29  

TRILL  -­‐  concept  

RBridges  +  addi/onal  TRILL  headers  

IS-­‐IS  topology  discovery  

 4  MAC  learning  techniques  

Unicast  vs.  mul/cast,  broadcast,  unknowns  

Page 9: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

9/29  

TRILL  -­‐  diagram  

FRAME

A3 C1 FRAME EOuter MAC

TRILL Header

A

C3 D3 FRAME EA

D2 E2 FRAME EA

FRAME

Page 10: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

10/29  

802.1aq  (SPB)  -­‐  Types  

SPB-­‐V   SPB-­‐M  

SPB  

Enterprise  Network  •Plug  &  Play  •Easy  to  operate  •Unknown  addresses    

Access  Network  •Reliability  •Bandwidth  efficiency    •Unknown  or  managed        addresses  

Metro  Core  Network  •Reliability  •Auto-­‐discovery  •Load  sharing  •Managed  addresses    

MAC  learning    in  control  plane  

MAC  learning    in  data  plane  

(MAC-­‐in-­‐MAC)  (Q-­‐in-­‐Q)  

Page 11: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

11/29  

802.1aq  (SPB)  -­‐  concept  

Root

A  

B  D  

G  

C  

F  

E  

Blocked Ports

Ø  Each  bridge  is  the  “root”  of  a  separate  shortest  path  tree  instance  

Ø  Bridge  G  is  the  root  of  the  green  tree  

Ø  Bridge  E  is  the  root  of  the  blue  tree  

Ø  Both  trees  are  ac/ve  AND  symmetric  at  all  /mes  

A  

B  D  

G  

C  

F  

E  

Root

Root

Root Root

Root

Root

Root

E  

A  

B  D  

G  

C  

F  

E  

A  

B  D  

G  

C  

F  Root

Root

A  

B  D  

G  

C  

F  

E  

Root

Blocked Ports

Page 12: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

12/29  

Introduc/on  to  OpenFlow  

•  Vendors  generally  don’t  like  to  make  their  firmware  open  to  outsiders.  

•  No  possibility  to  test  new  algorithms  •  Stanford  computer  scien/st  Nick  McKeown  and  colleagues  developed  a  standard  called  OpenFlow    

Page 13: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

13/29  

Introduc/on  to  OpenFlow  

•  Control  and  dataplane  completely  seperated  •  Control  plane:  Controller  

– NOX  •  Open  source  •  Python  programmable  

•  Data  plane:  OpenFlow  aware  switches  •  Communica/on  via  standardized  API.  

Page 14: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

14/29  

Opera/on  of  OpenFlow  Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐02  

Src  MAC   Dst  MAC   Src  IP   Dst  IP   In  port   AcAon  Src  MAC   Dst  MAC   Src  IP   Dst  IP   In  port   AcAon  00-­‐00-­‐01   00-­‐00-­‐02   1   Out  2  

Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐02  

What  should  I  do?   Create  rule,    acAon  =  out  port  2  

Flow  table  on  switch  

Page 15: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

15/29  

Key  features/advantages  

•  You  are  not  limited  by  the  func/onality  of  the  proprietary  firmware  of  vendors.  

•  Compu/ng  power  of  a  server    •  Strength  of  a  programming  language  •  You  can  implement  any  forwarding  algorithm  you  want.  

Page 16: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

16/29  

Tes/ng…  •       6  OpenWrt  switches  with  custom  firmware  

•  Data  gathered  – Wireshark  on  controller  –  Tcpdump  on  hosts  –  NOX  console  output  

•  Informa/on  deduced  –  Communica/on  –  Innerworking  –  Link  failover  –  Path  determina/on  

Page 17: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

17/29  

Parts  of  “rou/ng”  module  

•  Discovery  module  – Controller  learns  topology  

•  Spanning  tree  module  – For  broadcast/mul/cast/unknown  unicast  frames  – Frames  are  flooded  

•  Shortest  path  module  – For  unicast  frames  – Frames  are  “routed”  

Page 18: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

18/29  

Opera/on  of  discovery  (1)  LLDP    

Sent  on:  SW5,  port  1  

LLDP    Sent  on:  SW5,  port  1  

Received  on:  SW6,  port  3  Switch  5   Switch  6  

Page 19: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

19/29  

Spanning  tree  module  

port-­‐mod  port  1,  flood  =  1  port  2,  flood  =  1  port  3,  flood  =  0  port  4,  flood  =  0  

port-­‐mod  port  1,  flood  =  1  port  2,  flood  =  1  port  3,  flood  =  0  port  4,  flood  =  1  

port-­‐mod  port  1,  flood  =  1  port  2,  flood  =  0  port  3,  flood  =  1  port  4,  flood  =  1  

port-­‐mod  port  1,  flood  =  0  port  2,  flood  =  0  port  3,  flood  =  1  port  4,  flood  =  0  

port-­‐mod  port  1,  flood  =  1  port  2,  flood  =  1  port  3,  flood  =  0  port  4,  flood  =  1  

port-­‐mod  port  1,  flood  =  1  port  2,  flood  =  0  port  3,  flood  =  0  port  4,  flood  =  1  

port  mod  port  mod  

port  mod  port  mod  port  mod  

port  mod  

Page 20: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

20/29  

Broadcast  /  mul/cast  /  unknown  

•  Rule  with  ac/on  =  flood  •  Frames  are  flooded  out  all  ports,  except  for….    

– Origina/ng  port  – Port  with  flood  flag  set  to  disabled  

 

Page 21: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

21/29  

Opera/on  of  flooding  (first  frame)  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

What  should  I  do?  

Create  rule,    acAon  =  Flood  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

What  should  I  do?  Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

What  should  I  do?  

Create  rule,    acAon  =  Flood  Create  rule,    acAon  =  Flood  

What  should  I  do?  

Create  rule,    acAon  =  Flood  

What  should  I  do?  

Create  rule,    acAon  =  Flood  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

What  should  I  do?  

Create  rule,    acAon  =  Flood  

Page 22: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

22/29  

Opera/on  of  flooding  (next  frames)  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

Src:  00-­‐00-­‐01  Dst:  FF-­‐FF-­‐FF  

Page 23: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

23/29  

Unicast  

•  Controller  knows  loca/on  of  hosts  (registered  by  authen/cator  module)  

•  Can  program  complete  path  in  advance  

Page 24: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

24/29  

Opera/on  of  unicast  (first  frame)  

Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐04  

What  should  I  do?  

Create  rule,    acAon  =  port  2  Create  rule,    acAon  =  port  4  Create  rule,    acAon  =  port  1  

Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐02  

What  should  I  do?  

Create  rule,    acAon  =  port  3  Create  rule,    acAon  =  port  2  Create  rule,    acAon  =  port  1  

Page 25: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

25/29  

Opera/on  of  unicast  (next  frames)  

Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐04  

Src:  00-­‐00-­‐01  Dst:  00-­‐00-­‐02  

Page 26: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

26/29  

Shortcomings  &  improvement  

•  “Rou/ng”  module  – Loadbalancing  algorithm  not  op/mal  – Link  failover  not  op/mal  –  Instable  (loops)  

•  Improvement  proposal  – Pseudocode  

 

Page 27: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

27/29  

Comparison  

•  Centralized  instead  of  distributed  – No  IS-­‐IS  needed  – But,  shortest  path  algorithm  needed  

•  No  standard  (like  IETF  /  IEEE)  •  Spanning  tree  programmed  to  port  property  

Page 28: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

28/29  

Conclusion  

•  Powerful  but  not  yet  powerful  enough?  – S/ll  in  development  (1.2  in  March,  1.3  in  April)  – Version  1.2:  

•  failover  group  •  master/slave  controller  

•  OpenFlow  is  generic,  802.1aq  /  TRILL  are  specific  

Page 29: Shortestpath)forwarding)using) OpenFlow1/29 "Shortestpath)forwarding)using) OpenFlow" Iwan)Hoogendoorn)&)Joris)Soeurt) Supervisor:)Ronald)van)der)Pol) Wednesday(8(February(2012

29/29  

Ques/ons?