introduction to openstack · • basic introduction to sdn ... • built-in open vswitch, and a...

43
Network Virtualization Tewfiq El Maliki, HES-SO

Upload: hatuyen

Post on 31-Aug-2018

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Network Virtualization

Tewfiq El Maliki, HES-SO

Page 2: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Centralization

of Control

Separation

of Control

Plane

Page 3: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Academic approach

• « Academics get paid for being clever not for being right » Don Norman

• Engineers get paid for not being wrong

• Economics are paid for whatever they are wrong to hire engineers

3

Page 4: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Plan

• Basic introduction to SDN

• What we initialy thought

• What we think now

• What are the opportunities rised from these changes

4

Page 5: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Control, Data, Mangement – Plane

5

Page 6: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

MPLS

6

Page 7: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Virtualization

• Networks consist of: Host Interface - L2 Links - L2 Bridges -

• L2 Networks - L3 Links - L3 Routers - L3 Networks – Data

• Centers – Global Internet

• Each of these needs to be virtualized

7

Page 8: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Virtual Bridging

• Vendors: S/W NICs in Hypervisor w Virtual Edge Bridge (VEB)(overhead, not ext manageable, not all features)

• Switch Vendors: Switch provides virtual channels for inter-VM Communications using virtual Ethernet port aggregator

• (VEPA): 802.1Qbg (s/w upgrade)

• NIC Vendors: NIC provides virtual ports using Single-Route I/O virtualization (SR-IOV) on PCI bus

• Ref: P. Thaler, et al., “IEEE 802 Tutorial: Edge Virtual Bridging,” Nov 2009, 54 slides,

8

Page 9: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Edge Virtual Bridge (EVB)

• Network Port Profile: Attributes to be applied to a VM

• Application Open Virtualization Format (OVF) packages may or may not contain network profile

• After VM instantiation, generally networking team applies a port profile to VM

• Distributed Management Task Force (DMTF) has extended OVF format to support port profiles

• Resource allocation profile

• Resource capability profile

• vSwitch profile, etc.

• Ref: R. Sharma, et al., “VSI Discovery and Configuration,” Jan 2010,http://www.ieee802.org/1/files/public/docs2010/bg-sharma-evb-VSI-discovery-0110-v01.pdf

9

Page 10: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Single Root I/O Virtualization (SR-IOV)

• Ref: Intel, “PCI-SIG SR-IOV Primer,” Jan 2011,

http://www.intel.com/content/dam/doc/application-note/pci-sig-sr-iov-

primer-sr-iov-technology-paper.pdf

10

Page 11: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

VM vMotion

• vMotion from VMware allows live migration of VMs.

• VM keeps the same networking context.

• Same MAC address, IP address, and VLAN at its new home.

• Need to extend the VLAN broadcast domain to new home

• After relocation, VM sends a “reverse ARP” to all switches so that they learn its new location.

• Address Resolution Protocol (ARP):• “What is the MAC address of IP address 192.168.0.3?”

• Reverse Address Resolution Protocol (Reverse ARP):

• “MAC address of IP address 192.168.0.3 is 0080:2560:3240”

• If a VM moves to a new data center, to avoid tromboning• a default gateway should be available at the new home.

• HSRP and VRRP allow multiple routers to have the same VIP.

11

Page 12: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Bridge Combining

• Problem:

• Number of VMs is growing very fast

• Need switches with very large number of ports

• Easy to manage one bridge than 100 10-port bridges

• How to make very large switches ~1000 ports?

• Solutions: Multiple pswitches to form a single switch

1. Distributed Virtual Switch (DVS)

2. Virtual Switching System (VSS)

3. Virtual PortChannels (vPC)

4. Fabric Extension (FEX)

5. Virtual Bridge Port Extension (VBE)

12

Page 13: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Virtual Bridge Port Extension (VBE)

• IEEE 802.1BR-2012 standard for fabric extender functions

13

Page 14: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Fabric extender FEX

Ref: P. Beck, et al., “IBM and Cisco: Together for a World Class Data Center,” IBM

Red Book, 2013, 654 pp., ISBN: 0-7384-3842-1,

http://www.redbooks.ibm.com/redbooks/pdfs/sg248105.pdf

14

Page 15: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Network Virtualisation Techniques

Source : SLW Uni15

Page 16: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Acronyms

A-VPLS Advanced Virtual Private LAN Service

Access-EPL Access Ethernet Private Line

Access-EVPL Access Ethernet Virtual Private Line

ADC Application Delivery Controllers

ARP Address Resolution Protocol

BPE Bridge Port Extension

CDCP S-Channel Discovery and Configuration Protocol

DMTF Distributed Management Task Force

DVS Distributed Virtual Switching

ECP Edge Control Protocol

EDCP Edge Discovery and Configuration Protocol

EPL Ethernet Private Line

EVB Edge Virtual Bridging

EVP-Tree Ethernet Virtual Private Tree

EVPL Ethernet Virtual Private Line

EVPLAN Ethernet Virtual Private Local Area Network

EVPN Ethernet Virtual Private Network

FEX Fabric Extender

GRE Generic Routing Encapsulation

H-VPLS Hierarchical Virtual Private LAN Service

HSRP Hot Standby Router Protocol

IO Input/Output

IOV Input/Output Virtualization

IPoMPLSoE IP over MPLS over Ethernet

IPSec Internet Protocol Security

L2TPv3 Layer 2 Tunneling Protocol Version 3

LAG Link Aggregation

LISP Locator ID Split Protocol

MAC Media Access Control

MPLS-TP Multiprotocol Label Switching Transport

MPLS Multi-Protocol Label Switching

MR-IOV Multi-Root I/O Virtualization

NIC Network Interface Card

NIC Network Interface Card

NVGRE Network Virtualization using GRE

NVO3 Network Virtualization Over L3

OTV Overlay Transport Virtualization

OVF Open Virtual Disk Format

PB Provider Bridge

PBB-EVPN Provider Backbone Bridging with

Ethernet VPN

PBB-TE Provider Backbone Bridge with Traffic

Engineering

PBB Provider Backbone Bridge

PCI-SIG Peripheral Component Interconnect

Special Interest Group

PCI Peripheral Component Interconnect

PCIe Peripheral Component Interconnect Express

PF Physical Function

pM Physical Machine

pNIC Physical Network Interface Card

PW Pseudo Wire

PWoGRE Pseudo Wire Over Generic Routing

Encapsulation

PWoMPLS Pseudo Wire over Multi-Protocol Label

Switching

SMLT Split Multi-link Trunking

SNIA Storage Networking Industry

Association

SR-IOV Single Root I/O Virtualization

STP Spanning Tree Protocol

STT Stateless Transport Tunneling

T-MPLS Transport Multiprotocol Label

Switching

TRILL Transparent Interconnection of Lots of

Link

VBE Virtual Bridge Extension

VDC Virtual Device Context

VDP VSI Discovery and Configuration

Protocol

VEB Virtual Edge Bridge

VEPA Virtual Ethernet Port Aggregator

VF Virtual Function

VIP Virtual IP

VLAN Virtual Local Area Network

VM Virtual Machine

vNIC Virtual Network Interface Card

vPC Virtual PathChannel

VPLS Virtual Private LAN Service

VPN Virtual Private Network

vPort Virtual Port

VRF Virtual Routing and Forwarding

VRRP Virtual Routing Redundancy Protocol

VSI Virtual Station Interface

VSS Virtual Switch System

VXLAN Virtual eXtensible Local Area Network

16

Page 17: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

SDN Roots

• Separate Control and data plan

• Commercial management

• Effort to tame internal datacenter networks

• Academic projects to revamp network mgt

• SDN = OpenFlow

17

Page 18: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Why Was SDN

• Networks are hard to manage

• Networks are hard to evolve

• Networks not designed according to formal principles

18

Page 19: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Abstraction

• How to built a system working well

• Break down (Modularity based on abstraction)

• If you can’t manage, evolve or understand a system you can’t have

good abstraction

19

Page 20: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Control Plane & Data Plane

• Data : Process packets with local forwarding State

• Forward State + Packet header

-> Forwarding decision

• Control Plane : compute the forwarding state

• Distributed protocols, manual configuration, etc

20

Page 21: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Data control abstraction: Layers

• Layers key success of Internet : innovation by layers

21

Page 22: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Control Plan : No Abstractions

• No modularity but mechanisms

• Determine the topology is the goal

22

Page 23: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Control Plane

23

Page 24: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

SDN Orchestration

24

Page 25: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

What = Why We need SDN

25

Page 26: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Original Definition of SDN

26

Page 27: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Goal of SDN

• Virtualization : Use network without worrying about where it is physically located, how it is organized

• Orchestration : Manage 1000s of devices

• Programmable : Should be able to change behavior

• Dynamic Scaling : Should be able to change size quantity

• Automation : Lower OpEx

• Visibility : Monitor resources, connectivity

• Performance: Optimize network device utilization

• Multi-tenacy: Sharing expensive infrastructure

• Services Integration

• Openness : Full choice of Modular plug-ins

• Unified management of computing, networking and storage

27

Page 28: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

SDN is …

28

Page 29: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

SDN new Definition

29

Page 30: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

SDN 2.0: OpenDaylight style SDN

• Multi-Protocol

30

Page 31: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

OpenFlow

31

Page 32: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

History and evolution

32

Page 33: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Four Innovation NFV

• Ref: ETSI, “NFV – Update White Paper,” Oct 2013,

http://www.tid.es/es/Documents/NFV_White_PaperV2.pdf (Must read)

33

Page 34: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Network Function Virtualization NFV

• Fast standard hardware ->Software based Devices Routers, Firewalls,

Broadband Remote Access Server (BRAS) -> A.k.a. white box

implementation

• Function Modules (Both data plane and control plane) ->DHCP

(Dynamic Host control Protocol), NAT (Network Address Translation),

Rate Limiting,

34

Page 35: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

NFV and SDN Relationship

• Concept of NFV originated from SDN

• First ETSI white paper showed overlapping Venn diagram

• It was removed in the second version of the white paper

• NFV and SDN are complementary.

• One does not depend upon the other.

• You can do SDN only, NFV only, or SDN and NFV.

• Both have similar goals but approaches are very different.

• SDN needs new interfaces, control modules, applications. NFV

requires moving network applications from dedicated hardware

to virtual containers on commercial-off-the-shelf (COTS)

hardware

• Virtualization alone provides many of the required features

• Not much debate about NFV.35

Page 36: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Mobile Network Functions

• Switches, e.g., Open vSwitch

• Routers, e.g., Click

• Home Location Register (HLR),

• Serving GPRS Support Node (SGSN),

• Gateway GPRS Support Node (GGSN),

• Combined GPRS Support Node (CGSN),

• Radio Network Controller (RNC),

• Serving Gateway (SGW),

• Packet Data Network Gateway (PGW),

• Residential Gateway (RGW),

• Broadband Remote Access Server (BRAS),

• Carrier Grade Network Address Translator (CGNAT),

• Deep Packet Inspection (DPI),

• …. 36

Provider Edge (PE) Router,

Mobility Management Entity (MME),

Element Management System (EMS)

Page 37: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Afterwards of 5 years

• We are right

• But misconceptions

• Modularity take time to find it

• Control program configured all network switches

• Switches relatively homogenous in role/function

• Network comprised entrirely of hadware switch

• Network dataplane is fairly simple

37

Page 38: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Control Plane and Virtualization

38

Page 39: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Three important logical interfaces

39

Page 40: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Edge and core Switches

40

Page 41: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

OSGi Bundles

41

Page 42: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Mininet Simple Topology Emulator

42

Page 43: Introduction to OpenStack · • Basic introduction to SDN ... • Built-in Open vSwitch, and a OpenFlow capable switch • Command line launcher and Python API for creating

Mininet

• Widely used open source network emulationenvironment

• Can simulate a number of end-hosts, switches, routers, links on a Linux

• Used for rapid prototyping of software define networks

• Built-in Open vSwitch, and a OpenFlow capable switch

• Command line launcher and Python API for creatingnetworks of varying sizes, • e.g., mn –topo tree,depth=2,fanout=3

• Useful diagnositc commands like iperf, ping, and othercommands in a host• 0e.g., mininet> h11 ifconfig –a

• Mininet code for several popular commercial switchesare available.

Ref: https://github.com/mininet/mininet 43