openvswitch ko minus open vswitch
play

openvswitch.ko minus Open vSwitch Joe Stringer, VMware - PowerPoint PPT Presentation

openvswitch.ko minus Open vSwitch Joe Stringer, VMware http://garfieldminusgarfield.net/post/26843739 2 Software-Defined Networking 3 Flows Classify a set of packets that have some common criteria Not all flows are created equal


  1. openvswitch.ko minus Open vSwitch Joe Stringer, VMware

  2. http://garfieldminusgarfield.net/post/26843739 2

  3. Software-Defined Networking 3

  4. Flows Classify a set of packets that have some common criteria ● Not all flows are created equal ● ● Granularity => Power => Performance? ○ If possible, one lookup ● 4

  5. How we described flow-based policy in Linux Generic Netlink Families ● Shared flow table resource (datapath) ● ○ Need a bounding box for which set of flows apply Associate rx/tx ports ● Define the flow ● ○ Packet fields, metadata that can be matched on Describe how to handle packets when flow table empty ● 5

  6. Datapath family datapath0 datapathN Flow Flow Table Table datapath0 datapathN # ovs-dpctl add-dp datapath0 6

  7. Virtual port (vport) family datapath0 Flow Table vport vport tunnel internal netdev device # ovs-dpctl add-if datapath0 <netdev> 7

  8. Flow family Flow datapath in_port(p0), match+actions } eth(), eth_type(0x0806), Flow arp() Table output(p1) Flow mask Masks Flow identifier p0 p1 pN # ovs-dpctl add-flow datapath0 “in_port(0),eth(),eth_type(0x0806),arp()”, 1 8

  9. Flow family: lookup hit 1 Flow Key Table in_port(p0), 2 eth(src=01:23:45:67:89:f0, dst=ff:ff:ff:ff:ff:ff), Matching flow -> actions eth_type(0x0806), arp(sip=192.168.0.1, tip=192.168.0.2,op=1,...), 9

  10. Masked tuple matching (megaflow) eth(src=x,dst=y),ip(dst=1.2.3.0) eth(src=x,dst=y),ip(dst=1.2.3.1) } eth(src=x,dst=y),ip(dst=1.2.3.2) eth(src=x,dst=y),ip(dst=1.2.3.3) eth(src=x/ff:ff:ff:ff:ff:ff,dst=y/ff:ff:ff:ff:ff:ff), ip(dst=1.2.3.0/255.255.255.248) eth(src=x,dst=y),ip(dst=1.2.3.4) eth(src=x,dst=y),ip(dst=1.2.3.5) eth(src=x,dst=y),ip(dst=1.2.3.6) eth(src=x,dst=y),ip(dst=1.2.3.7) 10

  11. Flow family: lookup hit (megaflow) 1 Flow Unmasked key Table in_port(p0), 3 eth(src=01:23:45:67:89:f0, dst=ff:ff:ff:ff:ff:ff), Matching flow -> actions Masked key eth_type(0x0806), arp(sip=192.168.0.1, tip=192.168.0.2,op=1,...), 2 Mask list 11

  12. Flow family: Lookup miss * netlink socket 1 2 3 Key Upcall Flow in_port(1), packet Table eth(), metadata eth_type(0x1234) * netlink socket may be set to ‘0’, indicating default drop 12

  13. Packet family: userspace upcall SDN control User Kernel Flow Downcall Upcall flow key packet mask packet metadata actions metadata actions ufid 13

  14. Packet family: Execute User Kernel Downcall modified packet packet metadata actions 14

  15. OVS Netlink API Summary Datapath family ● Shared flow table ○ Access to stack ○ Place to hang ports ○ Virtual port (vport) family ● Access for rx/tx with the datapath ○ ● Flow family Describe forwarding behavior ○ Packet family ● ○ Handle packet+metadata to/from userspace 15

  16. Notable Megaflows ● Improvements ● Traffic Isolation NetFilter integration ● Recirculation ● 16

  17. Megaflows Optimizations Ktps Flows Masks CPU % (TCP_CRR) (user / kernel) Megaflows disabled 37 1,051,884 1 45 / 40 No optimizations 56 905,758 3 37 / 40 With priority sorting 57 785,124 4 39 / 45 With prefix tracking 95 13 10 0 / 15 With staged lookup 115 14 13 0 / 15 All optimizations 117 15 14 0 / 20 From “The Design and Implementation of OVS”, Ben Pfaff et al., NSDI ’15 17

  18. Notable improvements: Upcall hashing netlink netlink netlink socket socket socket Virtual port 18

  19. Notable improvements: conntrack 2 actions 1 ct() ... NetFilter Flow Table 19

  20. Notable improvements: recirculate 2 actions 1 ct() recirc(0x1) NetFilter Flow 3 Table 20

  21. CLI tools ● openvswitch.ko Open vSwitch (ovs-vswitchd) ● MidoNet ● ● Weave Net Kernel API users Indigo Virtual Switch ● 21

  22. CLI tools - datapath / vport # modprobe openvswitch # ovs-dpctl show # ovs-dpctl add-dp myDP system@myDP: # ip li add dev dummy0 type dummy lookups: hit:0 missed:177 lost:177 # ovs-dpctl add-if myDP dummy0 flows: 0 # ip li add dev dummy1 type dummy masks: hit:0 total:0 hit/pkt:0.00 # ovs-dpctl add-if myDP dummy1 port 0: myDP (internal) port 1: dummy0 port 2: dummy1 22

  23. CLI tools - flow # ovs-dpctl add-flow "in_port(1),eth(),eth_type(0x806),arp()" 2 # ovs-dpctl add-flow "in_port(2),eth(),eth_type(0x806),arp()" 1 # ovs-dpctl add-flow "in_port(1),eth(),eth_type(0x800),ipv4(proto=1),icmp()" 2 # ovs-dpctl add-flow "in_port(2),eth(),eth_type(0x800),ipv4(proto=1),icmp()" 1 # ovs-dpctl dump-flows in_port(2),eth_type(0x0806), packets:0, bytes:0, used:never, actions:1 in_port(1),eth_type(0x0806), packets:0, bytes:0, used:never, actions:2 in_port(2),eth_type(0x0800),ipv4(proto=1), packets:0, bytes:0, used:never, actions:1 in_port(1),eth_type(0x0800),ipv4(proto=1), packets:0, bytes:0, used:never, actions:2 23

  24. Open vSwitch Daemon http://openvswitch.org/assets/featured-image.jpg 24

  25. MidoNet https://www.midonet.org/i/graphic.png 25

  26. Weave Net https://www.weave.works/wp-content/uploads/d989f137a913d15c6ab2afe14149d8acfd180db3.png 26

  27. Indigo Virtual Switch http://www.bigswitch.com/sites/default/files/_/switch_light_archictecture.png 27

  28. Common threads: integration Lightweight Tunneling ● Netfilter ● ● XFRM QoS ● Hardware offloads ● 28

  29. Common threads: complexity Desired configuration is orders of magnitude more complex than kernel API ● Dozens of tables ○ Thousands of priorities ○ Compile hundreds of lookups into a single* lookup ● ○ Lower per-packet costs for complex pipelines * or small integer when subsystem input is required 29

  30. Summary SDN has driven openvswitch.ko development ● logically centralized packet forwarding behaviour ○ OVS Netlink API provides generally useful primitives ● Variety of users ● OVS, MidoNet, WeaveNet, IVS ○ Allows userspace to integrate with other kernel functionality ● Minimize kernel code complexity ● 30

  31. http://garfieldminusgarfield.net/post/37998316 31

  32. fin joe@ovn.org

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