the frenetic network controller
play

The Frenetic Network Controller Arjun Guha, Nate Foster, Mark - PowerPoint PPT Presentation

The Frenetic Network Controller Arjun Guha, Nate Foster, Mark Reitblatt, Cole Schlesinger, and others: www.github.com/frenetic-lang/frenetic/contributors UMass Amherst Cornell Princeton 1 networks today hosts 2 networks today


  1. The Frenetic Network Controller Arjun Guha, Nate Foster, Mark Reitblatt, Cole Schlesinger, and others: www.github.com/frenetic-­‑lang/frenetic/contributors UMass Amherst Cornell Princeton 1

  2. networks today hosts 2

  3. networks today switches hosts 2

  4. networks today switches hosts servers 2

  5. networks today switches routers hosts servers 2

  6. networks today fi rewalls switches routers hosts servers 3

  7. networks today fi rewalls switches routers load balancers hosts servers 4

  8. networks today fi rewalls switches routers load balancers hosts wireless access points servers 4

  9. networks today fi rewalls switches routers load balancers hosts wireless authentication server wireless access points servers 5

  10. Each box: networks today • Runs specialized, vendor- de fi ned software • Con fi gured independently via a command-line interface fi rewalls Di ffi cult to con fi gure, di ffi cult to switches reason about routers load balancers hosts wireless authentication server wireless access points servers 5

  11. Recent Network Outages We discovered a miscon fi guration on this pair of switches that caused what's called a “bridge loop” in the network. A network change was […] executed incorrectly […] more “stuck” volumes and added more requests to the re-mirroring storm Service outage was due to a series of internal network events that corrupted router data tables Experienced a network connectivity issue […] interrupted the airline's fl ight departures , airport processing and reservations systems

  12. software-de fi ned networking (SDN) 7

  13. software-de fi ned OpenFlow Switch networking (SDN) OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch standardized, programmable network devices (“switches”) 7

  14. O p e n F l o w S w i t c h O p e n F O l o p w e n S F w l o i t w c h S w i t c h 8

  15. O p e n F l o w S w i t c h Key Features and Advantages of SDN O p e n F O l o p w e n • Standardized, programmable network devices S F w l o i t w c h S w i t c h easy to deploy new in-network features 8

  16. Controller O p e n F l o w S w i t c h Key Features and Advantages of SDN O p e n F O l o p w e n • Standardized, programmable network devices S F w l o i t w c h S w i t c h easy to deploy new in-network features • Logically centralized controller (beefy server) enables reasoning about whole-network behavior f : switch ⨉ port ⨉ packet ➞ { ( port 1 , packet 1 ), ..., ( port n , packet n ) } 8

  17. Lots of SDN Interest • By startups and established players can buy commercial hardware and software • 200+ attendees at HotSDN ’13 • Six (out of 40) papers at SIGCOMM’13 on SDN 9

  18. industry-standard SDN protocol 10

  19. industry-standard SDN protocol Java 10

  20. industry-standard SDN protocol Java Python C++ 10

  21. industry-standard SDN protocol Java Python C++ Haskell 10

  22. industry-standard SDN protocol Java Python C++ Haskell OCaml 10

  23. Example Controller Controller OpenFlow Switch Port 1 Port 2 Host 1 11 Host 2

  24. Example let ¡packet_in ¡(sw ¡: ¡switchId) ¡(xid ¡: ¡xid) ¡(pktIn ¡: ¡packetIn) ¡: ¡unit ¡= ¡ ¡let ¡actions ¡= ¡ ¡ ¡ ¡ ¡if ¡pktIn.port ¡= ¡1 ¡then ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡2)] ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡1)] ¡in ¡ ¡send_packet_out ¡sw ¡0l ¡ ¡ ¡ ¡{ ¡output_payload ¡= ¡pktIn.input_payload; ¡ ¡ ¡ ¡ ¡ ¡port_id ¡= ¡None; ¡ ¡ ¡ ¡ ¡ ¡apply_actions ¡= ¡actions ¡} Controller Controller OpenFlow Switch Port 1 Port 2 Host 1 11 Host 2

  25. Example let ¡packet_in ¡(sw ¡: ¡switchId) ¡(xid ¡: ¡xid) ¡(pktIn ¡: ¡packetIn) ¡: ¡unit ¡= ¡ ¡let ¡pk ¡= ¡parse_payload ¡pktIn.input_payload ¡in ¡ ¡let ¡actions ¡= ¡ ¡ ¡ ¡ ¡if ¡Packet.dlTyp ¡pk ¡= ¡0x800 ¡&& ¡Packet.nwProto ¡= ¡6 ¡&& ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡(Packet.tpDst ¡= ¡22 ¡|| ¡Packet.tpSrc ¡= ¡22) ¡then ¡ ¡ ¡ ¡ ¡ ¡[] ¡(* ¡no ¡action ¡(i.e., ¡drop) ¡SSH ¡packets ¡*) ¡ ¡ ¡ ¡else ¡if ¡pktIn.port ¡= ¡1 ¡then ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡2)] ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡1)] ¡in ¡ ¡send_packet_out ¡sw ¡0l ¡ ¡ ¡ ¡{ ¡output_payload ¡= ¡pktIn.input_payload; ¡ ¡ ¡ ¡ ¡ ¡ ¡port_id ¡= ¡None; ¡ ¡ ¡ ¡ ¡ ¡apply_actions ¡= ¡actions ¡} Controller Controller OpenFlow Switch Port 1 Port 2 Host 1 12 Host 2

  26. Example let ¡packet_in ¡(sw ¡: ¡switchId) ¡(xid ¡: ¡xid) ¡(pktIn ¡: ¡packetIn) ¡: ¡unit ¡= ¡ ¡let ¡pk ¡= ¡parse_payload ¡pktIn.input_payload ¡in ¡ ¡let ¡actions ¡= ¡ ¡ ¡ ¡ ¡if ¡Packet.dlTyp ¡pk ¡= ¡0x800 ¡&& ¡Packet.nwProto ¡= ¡6 ¡&& ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡(Packet.tpDst ¡= ¡22 ¡|| ¡Packet.tpSrc ¡= ¡22) ¡then ¡ ¡ ¡ ¡ ¡ ¡[] ¡(* ¡no ¡action ¡(i.e., ¡drop) ¡SSH ¡packets ¡*) ¡ ¡ ¡ ¡else ¡if ¡pktIn.port ¡= ¡1 ¡then ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡2)] ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡1)] ¡in ¡ ¡send_packet_out ¡sw ¡0l ¡ ¡ ¡ ¡{ ¡output_payload ¡= ¡pktIn.input_payload; ¡ ¡ ¡ ¡ ¡ ¡ ¡port_id ¡= ¡None; ¡ ¡ ¡ ¡ ¡ ¡apply_actions ¡= ¡actions ¡} Controller Controller OpenFlow Switch Port 1 Port 2 Host 1 12 Host 2

  27. Example let ¡packet_in ¡(sw ¡: ¡switchId) ¡(xid ¡: ¡xid) ¡(pktIn ¡: ¡packetIn) ¡: ¡unit ¡= ¡ ¡let ¡pk ¡= ¡parse_payload ¡pktIn.input_payload ¡in ¡ ¡let ¡actions ¡= ¡ ¡ ¡ ¡ ¡if ¡Packet.dlTyp ¡pk ¡= ¡0x800 ¡&& ¡Packet.nwProto ¡= ¡6 ¡&& ¡ Generic packet ¡ ¡ ¡ ¡ ¡ ¡ ¡(Packet.tpDst ¡= ¡22 ¡|| ¡Packet.tpSrc ¡= ¡22) ¡then parser ¡ ¡ ¡ ¡ ¡ ¡[] ¡(* ¡no ¡action ¡(i.e., ¡drop) ¡SSH ¡packets ¡*) ¡ ¡ ¡ ¡else ¡if ¡pktIn.port ¡= ¡1 ¡then ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡2)] ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡1)] ¡in ¡ ¡send_packet_out ¡sw ¡0l ¡ ¡ ¡ ¡{ ¡output_payload ¡= ¡pktIn.input_payload; ¡ ¡ ¡ ¡ ¡ ¡ ¡port_id ¡= ¡None; ¡ ¡ ¡ ¡ ¡ ¡apply_actions ¡= ¡actions ¡} Controller Controller OpenFlow Switch Port 1 Port 2 Host 1 12 Host 2

  28. Example let ¡packet_in ¡(sw ¡: ¡switchId) ¡(xid ¡: ¡xid) ¡(pktIn ¡: ¡packetIn) ¡: ¡unit ¡= ¡ ¡let ¡pk ¡= ¡parse_payload ¡pktIn.input_payload ¡in ¡ ¡let ¡actions ¡= ¡ ¡ ¡ ¡ ¡if ¡Packet.dlTyp ¡pk ¡= ¡0x800 ¡&& ¡Packet.nwProto ¡= ¡6 ¡&& ¡ Generic packet ¡ ¡ ¡ ¡ ¡ ¡ ¡(Packet.tpDst ¡= ¡22 ¡|| ¡Packet.tpSrc ¡= ¡22) ¡then parser ¡ ¡ ¡ ¡ ¡ ¡[] ¡(* ¡no ¡action ¡(i.e., ¡drop) ¡SSH ¡packets ¡*) ¡ ¡ ¡ ¡else ¡if ¡pktIn.port ¡= ¡1 ¡then ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡2)] ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡[Output ¡(PhysicalPort ¡1)] ¡in ¡ ¡send_packet_out ¡sw ¡0l ¡ ¡ ¡ ¡{ ¡output_payload ¡= ¡pktIn.input_payload; ¡ ¡ ¡ ¡ ¡ ¡ ¡port_id ¡= ¡None; ¡ ¡ ¡ ¡ ¡ ¡apply_actions ¡= ¡actions ¡} Controller OpenFlow Controller protocol parser OpenFlow Switch Port 1 Port 2 Host 1 12 Host 2

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend