Beruflich Dokumente
Kultur Dokumente
hOp://en.wikipedia.org/wiki/File:Hurricane_Isabel_from_ISS.jpg
=>
=>
Open vSwitch
Open vSwitch
Linux Bridge
X (na5ve in OVS)
using vlan
X (na5ve in OVS)
using ifenslave
X (na5ve in OVS)
using ifenslave
X (na5ve in OVS)
VXLAN
support
in
3.7
Kernel
+
iproute2
X (na5ve in OVS)
Using
advanced
trac
control
X (na5ve in OVS)
e.g.
using
ipt_ne>low
hOp://openvswitch.org/features/
hOps://github.com/homework/openvswitch/blob/master/WHY-OVS
MGMT
eth1
eth0
user
kernel
Cong/State DB
Congura5on
Data
Interface
(ovsdb,
CLI,
)
ovsdb-server
ovs-vswitchd
Tunnel
Ports
(to
Linux
IP
Stack)
WEB
WEB
APP
APP
MGMT
Controller
Cluster
eth1
eth0
TCP
6633
OpenFlow
TCP
6632
OVSDB
user
kernel
Cong/State DB
ovsdb-server
ovs-vswitchd
WEB
WEB
APP
APP
hOp://upload.wikimedia.org/wikipedia/commons/f/f8/Blind_men_and_elephant3.jpg
Control
plane
Distributed
protocols
used
OSPF,
STP,
etc.
Populates
the
data
plane
with
forward.
entries
Internal
API
Data plane
Hardware
specic
Bound
by
ASIC/TCAM
limits
in
physical
devices
Controller
Control
plane
Central
management
of
forwarding
tables
Populates
the
data
plane
with
forwarding
entries
using
OpenFlow
as
an
external
southbound
interface
Control plane
Data plane
Hardware
specic
Bound
by
ASIC/TCAM
limits
in
physical
devices
hOp://www.noxrepo.org
hOp://www.projec>loodlight.org
hOp://www.opendaylight.org
Commercial
Controllers
Commercial
con5nua5on
of
NOX
with
a
focus
on
Network
virtualiza5on
using
Overlays
Commercial
version
of
Floodlight
controller
by
BigSwitch
Networks
with
a
focus
on
OpenFlow
controlled
Switch
Fabrics
hOps://openow.stanford.edu/display/Beacon/Home
etc
Network VirtualizaEon,
an SDN ApplicaEon
Q: Do you have the same visibility and control over network behavior?
Q: Could two tenants decide to use the same RFC 1918 private IP space?
Q: Could you clone a network (IPs, MACs, and all) and deploy a second copy?
Q: Can two VMs be on the same L2 logical network, while in dierent physical L2 networks?
Q: Can a VM migrate without disrup5ng its security policies, packet counters, or ow state?
Q: Does the applica5on depend on a feature in the physical switch specic to a vendor?
Q: If a physical device died and was replaced, would applica5on details need to be known?
Network
(Neutron)
Provides
UI
for
other
projects
Provides
network
connecDvity
Compute
(nova)
Block
Storage
(cinder)
Provides
Images
Provides
volumes
Provides
AuthenDcaDon
and
Service
Catalog
for
other
Projects
Iden5ty
(keystone)
Image
repo
(glance)
Stores
Images
as
Objects
Object
Storage
(Swix)
Inspired by
nova-api
(OS,EC2,Admin)
nova-console
(vnc/vmrc)
nova-compute
nova-cert
Hypervisor
(KVM, Xen,
etc.)
Nova
DB
Queue
novaconsoleauth
nova-metadata
nova-scheduler
nova-volume
nova-network
Network-Providers
(Linux-Bridge or OVS with
brcompat, dnsmasq, IPTables)
Flat
&
Flat
DHCP
direct
bridging
of
Instance
to
external
eth.
Interface
with
and
w/o
DHCP
VLAN
based
Every
tenant
gets
a
VLAN,
DHCP
enabled
Volume-Provider
(iSCSI, LVM, etc.)
Neutron
API Extension"
Extension
API
implementa5on
is
op5onal
"
Plugin API"
"
Vendor/User Plugin"
Maps
abstrac5on
to
implementa5on
on
the
Network
(Overlay
e.g.
NSX
or
physical
Network)
Makes
all
decisions
about
*how*
a
network
is
to
be
implemented
Can
provide
addi5onal
features
through
API
extensions.
Extensions
can
either
be
generic
(e.g.
L3
Router
/
NAT),
or
Vendor
Specic
"
Neutron
Core API"
Function"
Plugin"
Core
"
L3
"
FW
"
Core Plugin
"
Core
L3
"
"
Core
Plugin
"
FW
"
FW
plugin
"
Core
"
Core
Plugin
"
L3
"
L3
plugin
"
FW
"
FW
plugin
"
GRE
VXLAN
VLAN
etc.
Arista
OVS
Linux Bridge
etc.
Cisco
Mechanism
Drivers"
Type
Drivers"
Type Manager"
!
# ls /usr/share/pyshared/neutron/plugins/ml2/drivers/!
cisco
l2pop
mechanism_ncs.py mech_hyperv.py
mech_openvswitch.py
type_gre.py
type_tunnel.py type_vxlan.py __init__.py mech_agent.py mech_arista
mech_linuxbridge.py type_flat.py type_local.py type_vlan.py!
"
Neutron-
Network-Node
Neutron-Server
+
OVS-Plugin
N.-L3-Agent
NAT
&
oaDng
-IPs
WAN/
Internet
N.-DHCP-Agent
iptables/
rouDng
iptables/
rouDng
dnsmasq
dnsmasq
Compute Node
External
Network
(or
VLAN)
nova-compute
nova-compute
N.-OVS-Agent
ovsdb/
ovsvsd
N.-OVS-Agent
N.-OVS-Agent
ovsdb/
ovsvsd
hypervisor
VM
VM
ovsdb/
ovsvsd
hypervisor
VM
VM
br-int
br-int
br-int
br-ex
IP
Stack
Compute Node
br-tun
br-tun
IP Stack
IP Stack
L2
in
L3
(GRE)
Tunnel
Layer
3
Transport
Network
br-tun
NSX
Controller
Cluster
Compute Node
Compute Node
nova-compute
nova-compute
Neutron-Server
+
NVP-Plugin
N.-DHCP-Agent
ovsdb/
ovsvsd
dnsmasq
dnsmasq
ovsdb/
ovsvsd
VM VM
VM VM
ovsdb/
ovsvsd
br-int
br-int
br-int
WAN/
Internet
hypervisor
hypervisor
br-0
br-0
IP
Stack
IP Stack
IP Stack
Management
Network
NSX
L3GW
+
NAT
br-0
NSX Service-Node
L2 in L3 (STT) Tunnel
hOps://www.ickr.com/photos/17258892@N05/2588347668/lightbox/
Thank You!
And
have
a
great
Conference
Backup Slides
!
# Interface to first compute node!
!
Port "gre-172.16.0.11"!
Interface "gre-172.16.0.11"!
type: gre!
options: !
{in_key=flow, local_ip="172.16.0.10",
out_key=flow, remote_ip="172.16.0.11"}!
!
# Interface to second compute node!
!
Port "gre-172.16.0.12"!
Interface "gre-172.16.0.12"!
type: gre!
options: !
{in_key=flow, local_ip="172.16.0.10",
out_key=flow, remote_ip="172.16.0.12"}!
!
# Patch from br-tun table to br-int table!
!
Port patch-int!
Interface patch-int!
type: patch!
options: {peer=patch-tun}!
!
# patch from br-int table to br-tun table!
!
Port patch-tun!
Interface patch-tun!
type: patch!
options: {peer=patch-int}!
Note: The dhcp namespace will be created when the rst instance boots
UNKNOWN !
UNKNOWN !
Iface!
qg-f9d1f494-7f!
qr-a86dfa2b-9c!
qg-f9d1f494-7f!
Now we will boot two cirros Instances, and connect those to the virtual network we created earlier
hOps://wiki.openstack.org/wiki/Ovs-ow-logic
(1 references)!
destination
anywhere
anywhere
anywhere
anywhere
anywhere
anywhere
(2 references)!
destination
anywhere
--
anywhere
anywhere
anywhere
anywhere
anywhere
(1 references)!
destination
anywhere
anywhere
!
state INVALID!
state RELATED,ESTABLISHED!
tcp multiport dports tcpmux:65535!
!
udp multiport dports 1:65535!
udp spt:bootps dpt:bootpc!
!
udp spt:bootpc dpt:bootps!
anywhere
!
udp spt:bootps dpt:bootpc!
state INVALID!
state RELATED,ESTABLISHED!
!
!
MAC FA:16:3E:43:C6:20!
!
(1 references)!
destination
anywhere
anywhere
anywhere
anywhere
anywhere
anywhere
(2 references)!
destination
anywhere
--
anywhere
anywhere
anywhere
anywhere
anywhere!
(1 references)!
destination
anywhere
anywhere
!
# Inbound rule to Instances!
!
state INVALID!
state RELATED,ESTABLISHED!
tcp multiport dports tcpmux:65535!
!
udp multiport dports 1:65535!
udp spt:bootps dpt:bootpc!
!
# Default outbound allow dhcp!
!
udp spt:bootpc dpt:bootps!
anywhere
!
udp spt:bootps dpt:bootpc!
state INVALID!
state RELATED,ESTABLISHED!
!
# Port Security Rule only
allow Instance MAC outbound!
!
MAC FA:16:3E:43:C6:20!
!
# Router IP!
# configured floating-ip!