sdnds tw-meetup-2

38
meetup #2 OpenvSwitch 初探 pichuang@sdnds-tw

Upload: fei-ji-siao

Post on 02-Dec-2014

646 views

Category:

Internet


2 download

DESCRIPTION

介紹 OpenvSwitch Componets 和 debugging OpenvSwitch

TRANSCRIPT

Page 1: Sdnds tw-meetup-2

meetup #2

OpenvSwitch 初探 pichuang@sdnds-tw

Page 2: Sdnds tw-meetup-2

About me

❖ pichuang a.k.a. ⼩小⾶飛機!

❖ 救⽕火員型研究⽣生!

❖ NCTU CSCC TA!

❖ NCTU Wireless Internet Lab!

❖ http://roan.logdown.com!

❖ http://fbl.me/pichuang

Page 3: Sdnds tw-meetup-2

OpenvSwitch Introduction

❖ Production Quality!

❖ Multi Layer virtual switch!

❖ L2 - L4!

❖ Support OpenFlow protocol!

❖ Written in platform-independent C

Page 4: Sdnds tw-meetup-2

OpenvSwitch Features❖ VLAN tagging and trunking (802.1q)!

❖ Standard Spanning Tree Protocol (802.1d)!

❖ Link Aggregation Control Protocol (802.3ad)!

❖ Port mirror!

❖ RSPAN!

❖ SPAN

Page 5: Sdnds tw-meetup-2

❖ Flow monitor!

❖ sFlow!

❖ NetFlow!

❖ IP Flow Information Export (IPFIX)!

❖ QoS Control!

❖ Tunneling Protocol!

❖ VXLAN!

❖ GRE!

❖ IPSEC!

❖ Support Intel® DPDK!

❖ Support Linux Kenrel 3.11 ~ 3.14

Page 6: Sdnds tw-meetup-2

OpenvSwitch Overview

datapath!ovs kernel module

ovs-vswitchd ovsdb-server

OpenFlow Controller

Kernel space

User space

Remote

unix socket

netlink

OpenFlow protocol

Page 7: Sdnds tw-meetup-2

kmod_openvswitch

datapath!ovs kernel module

ovs-vswitchd ovsdb-server

OpenFlow Controller

Kernel space

User space

Remote

unix socket

netlink

OpenFlow protocol

Page 8: Sdnds tw-meetup-2

❖ a.k.a “datapath"!

❖ Fast Path lookup!

❖ Strict match!

❖ Similar to linux bridge !

❖ Hook network device handle!

❖ Extract Flow key!

❖ jhash3!

❖ Implement tunneling protocol!

❖ Megaflow (Wildcard table)

Page 9: Sdnds tw-meetup-2

ovs-dpctl❖ Manage datapath command!

❖ ovs-dpctl show!

❖ ovs-dpctl dump-flows!

❖ ovs-dpctl add-flow!

❖ ovs-dpctl -h!

!

❖ ovs-dpctl-top (python)

Page 10: Sdnds tw-meetup-2

ovs-vswitchd

datapath!ovs kernel module

ovs-vswitchd ovsdb-server

OpenFlow Controller

Kernel space

User space

Remote

unix socket

netlink

OpenFlow protocol

Page 11: Sdnds tw-meetup-2

❖ OpenvSwitch core component!

❖ Talk to datapath via netlink!

❖ Communicate with ovsdb-server via unix socket!

❖ Implement various protocols!

❖ like OpenFlow protocol!

❖ Include exactly table(Fast lookup) and wildcard table (Slow lookup)

Page 12: Sdnds tw-meetup-2

ovs-ofctl❖ Manage ovs-vswitchd command!

❖ ovs-ofctl dump-flows <bridge name>!

❖ ovs-ofctl show <bridge name>!

❖ ovs-ofctl dump-tables <bridge name>!

❖ ovs-ofctl -h

Page 13: Sdnds tw-meetup-2

ovs-appctl❖ Manage logging level!

❖ ovs-appctl vlog/list!

❖ ovs-appctl vlog/set {module name}:{console, syslog, file}:{off, emer, err, warn, info, dbg}!

❖ Generate packet for trace!

❖ ovs-appctl ofproto/trace <bridge name>!

❖ http://goo.gl/tWbZXH

Page 14: Sdnds tw-meetup-2

ovsdb-server

datapath!ovs kernel module

ovs-vswitchd ovsdb-server

OpenFlow Controller

Kernel space

User space

Remote

unix socket

netlink

OpenFlow protocol

Page 15: Sdnds tw-meetup-2

❖ ovs-vswitchd configuration is stored on disk!

❖ The OVSDB management protocol (RFC 7047)!

❖ vswitch.ovsschema!

❖ JSON Format

Page 16: Sdnds tw-meetup-2

ovs-vsctl❖ Manages ovs-vswitchd configuration !

❖ ovs-vsctl show!

❖ …!

❖ ovs-vsctl -h

Page 17: Sdnds tw-meetup-2

ovsdb-tool❖ Open vSwitch database management utility!

❖ ovsdb-tool create conf.db vswitch.ovsschema!

❖ ovsdb-tool query!

❖ ovsdb-tool -h

Page 18: Sdnds tw-meetup-2
Page 19: Sdnds tw-meetup-2

ovs-ctl❖ OpenvSwitch Startup Script!

❖ /usr/share/openvswitch/scripts/ovs-ctl!

❖ ovs-ctl start!

❖ ovs-ctl stop!

❖ ovs-ctl -h

Page 20: Sdnds tw-meetup-2

Match Flow

Page 21: Sdnds tw-meetup-2

Flow match

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly flow table

OpenFlow Controller

unknown packet

upcall (netlink)Kernel space

OpenFlow PACKET_IN

Page 22: Sdnds tw-meetup-2

Flow install

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly flow table

OpenFlow Controller

install flow entryKernel space

OpenFlow PACKET_OUT

execute actions

packet out

Page 23: Sdnds tw-meetup-2

Debugging OpenvSwitch

Page 24: Sdnds tw-meetup-2

OpenvSwitch Setting

Page 25: Sdnds tw-meetup-2

Daemon❖ Start!

❖ ovs-ctl start!

❖ custom init script !

❖ Check!

❖ ovs-ctl status!

❖ ps aux |grep ovs

Page 26: Sdnds tw-meetup-2

Logging

❖ ovsdb-tool show-log [-mmm]!

❖ cat /var/log/openvswitch/{ovsdb-server,ovs-vswitchd}.log

Page 27: Sdnds tw-meetup-2

ovs-vsctl show

❖ Controller!

❖ Connection methods: tcp, ssl!

❖ OpenFlow protocol: 6633, 6653!

❖ is_connected: true!

❖ fail_mode!

❖ secure, standalone

Page 28: Sdnds tw-meetup-2

ovs-ofctl

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly flow table

OpenFlow Controller

Kernel space

Page 29: Sdnds tw-meetup-2

ovs-ofctl show <bridge name>❖ Features Reply!

❖ dpid!

❖ ofport <-> interface

Page 30: Sdnds tw-meetup-2

ovs-dpctl

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly

OpenFlow Controller

Kernel space

Page 31: Sdnds tw-meetup-2

ovs-dpctl show❖ hit!

❖ hit existing entry!

❖ missed!

❖ send to userspace!

❖ drop!

❖ flows

Page 32: Sdnds tw-meetup-2

Flow

Page 33: Sdnds tw-meetup-2

ovs-ofctl

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly flow table

OpenFlow Controller

Kernel space

Page 34: Sdnds tw-meetup-2

ovs-ofctl dump-flows <bridge name>❖ xid!

❖ check fields!

❖ duration, idle_age, priority, in_port!

❖ actions

Page 35: Sdnds tw-meetup-2

ovs-dpctl

datapath flow table

ovs-vswitchd wildcard flow table

ovs-vswitchd exactly

OpenFlow Controller

Kernel space

Page 36: Sdnds tw-meetup-2

ovs-dpctl dump-flows❖ packets!

❖ used!

❖ actions

Page 37: Sdnds tw-meetup-2

ovs-appctl bridge/dump-flows <br>❖ Include hidden flow!

❖ Send packet to OpenFlow Controller

Page 38: Sdnds tw-meetup-2

Thank you