20150511 jun lee_openstack neutron 분석 (최종)

83
OpenStack Neutron 분석 2015. 05. 11 ㈜파이오링크 SDN개발실 이준 ([email protected])

Upload: rootfs32

Post on 07-Aug-2015

375 views

Category:

Technology


19 download

TRANSCRIPT

Page 1: 20150511 jun lee_openstack neutron 분석 (최종)

OpenStack Neutron 분석

2015. 05. 11

㈜파이오링크

SDN개발실 이준 ([email protected])

Page 2: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Contents

Backgrounds

OpenStack Neutron Overview

History of OpenStack Neutron

Details of OpenStack Neutron

- Concept of OpenStack Networking

- OpenStack Networking Architecture

- OpenStack Neutron Network

- OpenStack Neutron Plugins and Agents

OpenStack Networking Deployment Use Cases

SDN Controller with OpenStack Neutron

Summary

References

2

Page 3: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Backgrounds

3

Page 4: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Backgrounds

Terminology in OpenStack Neutron

- OpenStack: Cloud 환경에서 Computing, Storage, Network 등 자원을 관리하는 Cloud OS

• Open Source Software 프로젝트의 집합 (Nova, Swift, Cinder, Neutron, Horizon, Keystone …)

- Nova: VM (Virtual Machine) Instance 를 구축하고 관리

- Neutron: Virtual Network 관리

- Keystone: 인증서비스 제공

- Horizon: Dashboard 구성, VM 설치 및 관리 모니터링 등을 지원

- Tenant: 사용자에 대한 논리적인 그룹, OpenStack 에서 Resource 는 사용자에게 직접 할당되지

않고 Tenant 단위로 할당

- Fixed IP: Virtual Instance 를 생성할 때 사용하는 Private IP

• Host 내부에서 만 통신 가능

• VM 이나 External Network 와 통신 시 SNAT 필요 (L3 Agent 에서 수행)

- Floating IP: Virtual Instance 를 외부에서 사용 가능하도록 해주는 Public IP

- Network Virtualization: Network 를 Virtual Machine 처럼 생성해서 사용하는 것

4

Page 5: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Backgrounds

5

OpenStack Basic Architecture for Networking Service

Compute Node Controller

Node

Controller Node Network Node

OpenStack 에서 Networking Service 제공을 위해, Network Node, Compute Node, Controller Node 로 구성

Page 6: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

6

Page 7: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

7

Concept of OpenStack Neutron

Nova

Neutron

VM VM VM

User

Create VMs

Create Network and

Attach Port to VM

Network 1 Network 2

Nova (Compute Node)에서는 VM Instance 를 생성하는 역할을 담당

Neutron 에서는 Network Virtualization Service를 제공: Virtual Network 를 생성하고 관리하는 역할을 담당

Virtual Network 를 설정하고 VMs 을 연결할 수 있는 추상화된 API 를 제공 (소프트웨어 기반의 Network Service 제공)

Virtual Switch 와 Physical Switch 를 연결

다양한 Networking 관련 기술 및 장비를 지원하기 위해 Plugin 방식을 사용

Page 8: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

Concept of OpenStack Neutron: Network Virtualization

8

Tenant View

Physical View

Data Center Network

Hypervisor

Phy server1

VM

A1

VM

B1

Hypervisor

Phy server2

VM

A2

Hypervisor

Phy server3

VM

B2

VM

A1

VM

A2

Network A

VM

B1

VM

B2

Network B

하나의 물리 네트워크상에 독립적인 서로 다른 Virtual Network 를 운용할 수 있는 기술을 의미

Neutron 을 통해 OpenStack 에서 다양한 형태의 Virtual Network Topology 구성이 가능 함

Page 9: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

Concept of OpenStack Neutron: Architecture

9

외부에서 Virtual Network 를 생성하고 제어가 가능하도록 REST API 형태로 외부에 공개

Neutron Server 는 외부 요청을 처리하고, DB 에 작업상태를 수시로 업데이트

Neutron Server 를 통해 전달된 요청은 Keystone과 연결된 모듈을 통해 인증과 접근권한을 확인

- 인증된 메시지만 설정된 Neutron Plugin 으로 전달

외부에 공개되는 API 는 Core API 와 Extension API 로 구분 가능

- Core-plugins: L2 Network, L3 Subnet, 포트제어, IP 주소관리 와 같이 기본적인 역할을 하는 Plugin

- Service-plugins: Load balancing, firewall, VPN 과 같은 부가적인 네트워크 서비스를 제공하는 Plugin

Neutron Neutron Server

API Clients

Core Neutron API Extension API

Authentication & Authorization via OpenStack Keystone

Neutron Pluggable Backend

REST API

Core-plugins

Service-plugins

DB

Horizon GUI Neutron CLI

ML2 OVS Cisco LB FW VPN L3 service

Page 10: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

10

Concept of OpenStack Neutron: Core API

VM1

10.0.0.2

Network1

10.0.0.0/24

VM2

10.0.0.3 Nova

Neutron

Virtual Server

Virtual Interface (VIF)

Virtual Port

Virtual Network

Network, Subnet, Port 들의 추상화를 통해 해당 객체를 제어할 수 있는 API 제공

- Network: 독립된 L2 Network Segment 를 의미 함 (Layer2 Broadcast Domain, VLAN 개념과 유사함)

- Subnet: Network 에서 사용하는 IP주소 범위를 의미함, 각 Network 는 Multiple subnets 사용 가능

- Port: L2 Network 에 연결되는 지점을 의미 함, Port 에는 MAC 주소와 Fixed IP 주소가 할당 됨

Subnet

Page 11: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

Concept of OpenStack Neutron: Core API 예제

- Networking API v2.0 사용

- Networks: List, show information for, create, update, and delete networks

• POST /v2.0/networks // Network 생성

• GET /v2.0/networks/{network_id} // Network 정보 조회

- Subnets: List, show information for, create, update, and delete subnet resources

• POST /v2.0/subnets // Subnet 생성

• GET /v2.0/subnets/{subnet_id} // Subnet 정보 조회

- Ports: List, show information for, create, update, and delete ports

• POST /v2.0/ports // Port 생성

• GET /v2.0/ports/{port_id} // Port 정보 조회

11

Page 12: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

12

Concept of OpenStack Neutron: Core API Details

Horizon Neutron Nova

Create Network

Network-id

Create Subnet

Subnet-id

Create Port

Port-id

Create a VM with Port = Port-id

Neutron 을 통해 Network, Subnet, Port 등을 생성하고 Nova 를 통해 VM 을 생성

Figure: Create a VM Flow

Page 13: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

Concept of OpenStack Neutron: Extension API 예제

- Networking API v2.0 사용

- Load-Balancer-as-a-Service (LBaaS)

• POST /v2.0/lb/vips // load balancer VIP 생성

• GET /v2.0/lb/vips/{vip_id} // VIP 정보 조회

• POST /v2.0/lbaas/pools // load balancer pool 생성

• GET /v2.0/lbaas/pools/{pool_id} // load balancer pool 정보 조회

- Virtual-Private-Network-as-a-Service (VPNaaS)

• POST /v2.0/vpnservices // VPN Service 생성

• GET /v2.0/vpnservices/{service_id} // VPN Service 상세정보 조회

• POST /v2.0/vpn/ipsecsiteconnections // IPSec connection 생성

• GET /v2.0/vpn/ipsecsiteconnections/{connection_id} // IPSec connection 정보 조회

13

Page 14: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

14

Concept of OpenStack Neutron: Plugin Architecture

Neutron

Plugin

Network Controller

(Agent)

Network Appliance /

Software Switch

Plugin Plugin Plugin

Network

Controller

Network

Controller

Network

Controller

Type A Type B Type B

Application

Select a plugin to use

Neutron API

OpenStack Neutron 은 다양한 Vendor 의 요구사항을 수용하기 위해 Plugin – Agent 구조로 되어 있음

Plugin 은 명령을 전달하는 역할 / Agent 는 명령어를 전달받아 실제 장비나 Software 에 명령어 실행

Plugin Architecture 장점: 기본적으로 제공되는 기능이 부족하다면, Third Party 에서 원하는 기능을 추가 할 수 있음

PIOLINK 에서도 Neutron Plugin 의 LBaaS Driver 개발 경험 있음 (뒤 슬라이드에서 설명)

Page 15: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Neutron Overview

15

Concept of OpenStack Neutron: Plugin Architecture

Controller Node

Neutron Server

REST API 제공

Messaging

Plugin 은 명령을 전달하는 역할 / Agent 는 명령어를 전달받아 실행

- Agent 에서는 실제 장비 또는 가상장비에 설정 이나 Virtual Network 생성 등을 수행

Neutron 에 다양한 Plugin 이 존재 함 (각 Vendor 들의 상용제품 포함)

Network Node

Compute Node

L3 Agent

L2 Agent

DHCP Agent

L2 Agent

Virtual Router 생성

Virtual L2 Switch 생성

Fixed IP 주소 할당

Virtual L2 Switch 생성

Message

Queue

Adv Services

Plugin

LB, VPN 등 설정

Page 16: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

16

Page 17: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Release

17

Release Name Release Date Included Components

Austin Oct 12, 2010 Nova, Swift

Bexar Feb 3, 2011 Nova, Glance, Swift

Cactus Apr 15, 2011 Nova, Glance, Swift

Diablo Sep 22, 2011 Nova, Glance, Swift

Essex Apr 5, 2012 Nova, Glance, Swift, Horizon, Keystone

Folsom Sep 7, 2012 Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder

Grizzly Apr 4, 2013 Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder

Havana Oct 17, 2013 Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer

Icehouse Apr 17, 2014 All above, Trove

Juno Oct 16, 2014 All above

Kilo Apr 30, 2015 All above, Sahara

Liberty Oct 15, 2015 (Under Discussion)

Diablo, Essex 에서는 Quantum 이 실험적으로, Folsom 부터 Quantum 이 공식 프로젝트로 포함 되었음

Havana 부터는 상표권 문제로 Quantum 대신 Neutron 이라는 이름으로 변경 (Quantum = Neutron)

Page 18: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Networking Service

- OpenStack 의 Networking Service 는 Quantum 출현 전후로 변화가 생김

- OpenStack Austin ~ Essex

• OpenStack 초기 배포 버전의 경우 Nova 프로젝트의 Nova-Network 를 통해

사용자 or 사용자 그룹에게 기본적인 L2 Virtual Network 만을 제공

- OpenStack Folsom ~

• Nova-Network 의 여러 가지 기술적 제약사항과 확장 가능성을 고려하여 독립된

Networking Service 필요성이 제기 됨

• Quantum/Neutron 을 통해 VM에 대한 Multi-tenant Network 연결 서비스 와

다양한 Network 기반 Service 제공 가능

• Quantum/Neutron 을 통해 Switching, Routing, Load Balancing, VPN 등

Data Center 에서 사용되는 다양한 기술을 제공이 가능 함

18

Page 19: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Nova Network

- Nova 는 OpenStack 에서 VM 을 관리하는 하위 프로젝트 명

- 초기에는 VM 을 관리하는 Nova 에서 Network 도 함께 관리 하였음

• 초기에는 VM Instance 와 Network 가 동시에 관리되어야 한다고 생각

- Nova 구성 요소 내 Nova Network 라는 하위 구성 요소를 두고 설계되어 발전

• Nova Network 는 OpenStack 에서 Network Resource 를 관리

- Nova Network 에서는 아래 3가지 Mode 를 지원

• Flat Mode

• Flat DHCP Mode

• VLAN DHCP Mode

19

Page 20: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Nova Network: Flat Mode

20

VM VM VM

Bridge

G/W

eth0

가장 간단한 Networking 구조

모든 VM Instance 가 하나의 bridge 에 연결되어 고정 IP를 부여 받음

VM 이 Booting 시 Network Configuration (/etc/network/interface)에 저장된 정보를 통해 IP 할당

Page 21: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Nova Network: Flat DHCP Mode

21

VM VM VM

Bridge

G/W

eth0

Flat Mode 와 마찬가지로 모든 VM Instance 가 하나의 Bridge 에 연결

dnsmasq 를 통해 IP를 할당 받음

dnsmasq: DNS, DHCP 서버 역할을 하는 OpenSource

dnsmasq

Page 22: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Nova Network: VLAN DHCP Mode

22

VM VM VM

Bridge

G/W

eth0

dnsmasq Bridge

G/W

dnsmasq

vlan 100 vlan 101

VM Instance를 Public 영역에 노출시키지 않음 (VPN 을 통해 접근 가능)

Project 별로 VLAN 과 Bridge를 생성 (Project 는 Private IP 대역을 얻음)

VM Instance 는 Project 가 할당 받은 Private IP중 하나를 얻음

Nova VPN (CloudPipe): 사용자가 VLAN 밖에서 VLAN 내의 VM Instance 에 접근하기 위해 사용하는 VPN Instance

OpenStack 초기 Version 에서는 Tenant 를 Project 라고 표현 하였음

Page 23: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Quantum/Neutron 의 출현 배경

- 기술적 제약

• Cloud Computing Service 가 확산되면서 아래와 같은 기술이 요구됨

- Multi tenancy 지원

» Data Center 내에서 User or Tenant 가 생성한 Network 가 독립된 Network 처럼 동작 하는 것

» VLAN, Tunneling, MPLS (Multi-Protocol Label Switching) 기술 등을 통해 제공 가능

- Dynamic Network Provisioning

» Tenant Network 구성을 위해 Resource 를 할당하고 설정하는 일을 자동화 하는 기술

- VM Migration

» 서비스 품질 보장을 위해 생성한 VM 을 다른 서버로 이전(Migration)하는 기술

» 서비스 연속성 보장을 위해 IP 주소 등 Network 설정이 그대로 유지되어야 함

• 상용 Vendor 하드웨어 구성과 연계를 위한 통합된 Network Virtualization 방안 필요

• Nova Network 에서는 일부 기본적인 기술만을 지원

- Multi tenancy 지원

» VLAN을 이용하여 4094개의 Multi Tenant Network 구성 가능

» Data Center 의 규모가 확대되고 VM 수가 증가함에 따라 더욱더 많은 Tenant Network 구성이 요구됨

- Dynamic Network Provisioning

» Tenant Network 구성을 위한 Resource 를 할당하고 설정을 관리자가 수작업을 통해 해야 함

23

Page 24: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack Quantum/Neutron 의 출현 배경

- Tenant 제어의 한계

• 기업에서 Cloud Computing 환경 도입 시 이미 운용 중이던 복잡한 Infra를 가급적 그대로 유지하길 원함

• Cloud Computing 환경에서 기존 Infra 를 그대로 재현하기 위해서는 아래와 같은 기술이 필요 함

- Multi tier Network 생성

» Multi tier Network 웹 서비스 제공 시 성능향상 및 보안 성을 높이기 위해 웹 서버, 응용 서버, 데이터베이스 서버를 각각 분

리하여 다 계층 으로 구성하는 방법

- IP 주소 관리

» Data Center 내에서 동일한 IP 주소를 중복해서 사용 가능하도록 지원

- Network 서비스 장비의 추가 및 설정

» Load Balancer, Firewall 등 다양한 Network Service 장비를 Tenant 별로 쉽게 추가하고 제어할 수 있도록 지원

- 원격 서버 또는 장비와의 VPN (Virtual Private Network)연결

» Cloud Infra 밖의 원격 서버나 장비와 VPN 연결을 통해 안전한 Virtual Private Network 환경 구축 지원

24

Page 25: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

25

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

quantum Server

quantum

*-plugin-agent

Network Node

quantum

*-plugin-agent

quantum

L3 Agent

quantum

DHCP Agent

- OpenStack Folsom

최초로 Quantum 이 공식 프로젝트로 포함 (Quantum 이전 Diablo, Essex 에서는 시험적으로 포함되어 있었음)

L3 Subnet 을 제어할 수 있는 API 추가 (L2 관련 API 기존에 지원), 서로 다른 L2 네트워크에서 Fixed IP 중복 사용 가능하도록 변경

Provider Network, L3 forwarding, SNAT, Floating IP 관리 등 L3 네트워크 제어가 가능하도록 기능 확장

Multiple Router 를 지원 가능 하도록 변경

Neutron 신규 Plugin 추가: Open vSwitch, Cisco, Linux Bridge, Nicira NVP, Ryu, NEC

Page 26: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

26

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

quantum Server

quantum

*-plugin-agent

Network Node

quantum

*-plugin-agent

quantum

L3 Agent

quantum

DHCP Agent

- OpenStack Grizzly

quantum

Metadata agent

Multiple Network 지원 (복수의 Network Node 를 배치하여 Network Service 장애 위험 최소화, High Availability 지원 가능)

HA Proxy를 기반으로 Load Balancer (LBaaS) 서비스 제공

L3/L4 Packet filtering 기능 추가, Meta plugin 실험적으로 추가

Neutron 신규 Plugin 지원: Big Switch, Brocade, Hyper-V, Plum Grid, Midonet, 기존 Plugin 개선: Nicira NVP, Ryu

Page 27: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

27

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

neutron server

neutron

*-plugin-agent

Network Node

neutron

*-plugin-agent

neutron

L3 Agent

neutron

DHCP Agent

- OpenStack Havana

Code Name: Quantum 에서 Neutron 으로 변경 됨

Load Balancer (LBaaS) 기능 개선, VPN (VPNaaS), Firewall (FWass) 등의 Service 추가

ML2 Plugin 개념이 처음으로 나옴

Page 28: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

28

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

neutron server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

- OpenStack Icehouse

ML2 Plugin

ML2 Plug-in

DHCP Agent

Neutron 안정화 와 Testing 에 초점, ML2 Plugin 이 기본 Plugin 으로 채택

Neutron 신규 Driver/Plugin 추가: IBM SDN-VE, Nuage, OneConvergence, OpenDaylight

Load Balancing Service Driver 추가: Embrace, NetScaler, Radware

Neutron 신규 VPN Dirver 추가 (Cisco CSR)

Page 29: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

29

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

- OpenStack Juno

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

Distributed Virtual Router 지원, Tenant Network 에 IPv6 지원, L3 Agent 에 HA 지원 및 성능 향상

Neutron 신규 Plugin 추가

- A10 Networks LBaaS driver, Arista L3 route plugin, Brocade L3 routing plugin, Cisco APIC ML2 Driver, Cisco CSR L3 routing plugin, Freescale SDN ML2 Mechanism

Driver, Nuage Networks ML2 Mechanism Driver, SR-IOV capable NIC ML2 Mechanism Dirver, OpenContrail Neutron Plugin

Page 30: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

History of OpenStack Neutron

OpenStack 배포 Version 별 Quantum/Neutron 특징

30

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

- OpenStack Kilo

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

Subnet allocation, ML2 Hierarchical Port Binding, 신규 LBaaS Version 2 API, OVS ML2 Driver 를 위한 Port Security, IPv6 관련 API 추가

Neutron 신규 Plugin 추가

- A10 Networks LBaaS driver, Brocade LBaaS V2 Driver, Brocade ML2 driver for MLX and ICX switches, Brocade L3 routing plugin for MLX switch, Brocade Vyatta vRouter L3

Plugin, Brocade Vyatta vRouter Firewall Driver, Brocade Vyatta vRouter VPN Driver, Cisco CSR VPNaaS Driver, Dragonflow SDN based Distributed Virtual Router L3 Plugin,

Freescale FWaaS Driver, Intel Mcaffe NGNW FWaaS Driver, IPSEC Strongswan VPNaaS Driver

Page 31: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

31

Page 32: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

Concept of OpenStack Networking

- Data Center 에서 사용되는 다양한 기술을 가상화 하고 프로그래밍 가능한 형태로

사용할 수 있도록 제공하는 것!

32

Page 33: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Networking Architecture

33

Network Node Compute Node

Controller Node

Internet

Controller Node

OpenStack Networking 은 독립된 형태의 서비스

OpenStack Networking 구성은 한 개의 Controller Node, 한 개의 Network Node, 적어도 한 개의 Compute Node 가 필요

- 각 Node 별 Network Interface 개수와 구성은 서로 다름

OpenStack Networking 에서는 Switching, Routing, Load Balancing, Firewall, VPN 등 Data Center 에서 사용되는 다양한

기술을 제공

Page 34: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

34

OpenStack Networking Architecture

Network Node Compute Node

Controller Node

Internet

Controller Node

VM 01 VM 02

Neutron Server

OpenStack Networking Architecture 에서 각 Node 역할은 다음과 같음

- Network Node: DHCP Server, Virtual Router 등 Network

- Compute Node: 생성된 VM Instance 가 위치하는 Node, Compute Service 와 Neutron Plugin

- Controller Node: 모든 OpenStack API 서비스를 제공

Page 35: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Networking Architecture

35

Network Node Compute Node

Controller Node

Management

Data

External API

Internet

OpenStack Networking Architecture 에서는 네 종류의 Network 를 정의

- Management Network: 서비스를 구성하는 Node 간 통신에 사용 (Messaging Service, Database Service)

- API Network: Cloud 사용자와 서비스에게 OpenStack API 를 제공하는 용도로 사용

- External Network: Neutron Router 를 통해 외부 네트워크에서 접근

- Data Network: Instance 간 데이터를 주고받는 Network

• (특정 Node 에 대해서만 로컬 Network 를 구성하거나 flat 또는 VLAN tagging으로 구성 가능)

Controller Node

Page 36: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Networking Architecture

36

Compute Node Controller

Node

Management

Data

External API

Internet

Three nodes Architecture 에서 각 Node 에 위치하는 Neutron 프로세스

Controller Node 의 Neutron Server 를 통해 API 를 제공 (외부에서 Network 관련 설정이 가능하도록)

Neutron Server 는 REST API를 통해 들어오는 요청사항을 처리하도록 기존에 설정된 Neutron Plugin 에 전달

Neutron Server 에서 제공하는 REST API를 통해 다양한 Networking 기술을 쉽게 이용 가능 함

Controller Node

Neutron Server

Neutron Plugin

Neutron

Plugin Agent

Neutron

Layer2 Agent (OVS)

Network Node

Neutron

Plugin Agent

Neutron

L3 Agent

Neutron

DHCP Agent

Neutron Layer2

Agent (OVS)

Page 37: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Network

- Neutron 에서 제공하는 Network Type 은 아래와 같음

• Local

- 다른 Network 나 Node 와 독립적으로 존재

- 같은 Compute Node 의 동일한 Network 에 있는 Instance 간 통신만 가능

• Flat

- VLAN tagging 을 적용하지 않거나 Network 과 분리되지 않은 형태

• VLAN

- 802.1q tagging 을 이용하여 Network 를 분리

- VLAN 간 Routing 을 위해서 Router 필요

• VXLAN 과 GRE

- OVS Plugin 을 이용 Overlay Network 를 구성

- Cloud 내의 모든 Host 에 대한 P2P Tunnel 을 생성

37

Page 38: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Network

- Neutron 에서 Instance 에 대한 연결을 제공하는 두 종류의 Network 가 존재 함

• Provider Network: 관리자가 생성한 Network

- Data Center 의 Physical Network 에 직접 Mapping

- Flat 과 VLAN 을 주로 사용 (Local, GRE 사용 가능하나 일반적으로 사용하지 않음)

• Tenant Network: 사용자가 생성한 Network

- Tenant 에 속한 Instance 간 연결을 위해 필요

- Default 설정에서는 Tenant Network 는 다른 Tenant Network 나 Tenant 안에 있는 다른 Network와 격리

38

Compute Node

Tenant Network 1

VM1

VM2

Tenant Network 2

VM3

VM4

Network Node

Provider Network Neutron Router

Page 39: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

39

OpenStack Neutron Plugins and Agents

Compute Node Controller

Node

Management

Data

External API

Internet

Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

OpenStack 각 Node 에 설치되는 Neutron 프로세스는 Plugin 과 Agent 로 구성되어 있음

Neutron Server 는 Centralized Controller 역할을 수행

- 실제 Network 관련 command 나 configuration 은 Compute Node 와 Network Node 에서 수행

Page 40: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

40

OpenStack Neutron Plugins and Agents

Neutron Server

Neutron Core

plugins

Neutron Service

plugins

Core API Network, Port, Subnet

Resource and Attribute Extensions API Provider Network, Port Binding, Router, Quotas, Security Groups, Agent Scheduler, LBaaS, FWaaS VPNaaS …

Message Queue

DHCP Agent

L3 Agent

IP Tables on

Network Node

L2 Agent

OVS on

Compute Node

Neutron Plugin

Controller Node

Plugin: 외부에서 호출한 REST API에 따라 해당하는 Plugin을 수행, Core Plugin 과 Service Plugin 으로 구분

- Core Plugin: L2 connectivity 와 IP Address Management 등 기본적인 을 담당

- Service Plugin: Routing (L3), Firewall, Load Balancing 등 서비스 관련 기능을 담당

Agent

- Neutron Server 로 부터 명령을 수신하여 (via plugin or directly) 실제 Networking 관련 동작을 구현하는 entity

ML

2

OV

S

Cis

co

Nexu

s

Mo

re V

end

or

Plu

gin

s

Loa

d B

ala

nce

r

Fire

wa

ll

VP

N

L3 s

erv

ice

s

Page 41: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

41

OpenStack Neutron Plugins and Agents

Controller Node

Management

Data

External API

Internet

Controller Node Network Node

Neutron Server

ML2 Plugin

Compute Node

OVS Agent

OVS Switch

VM VM

1

2

3

4

① REST API 를 통해 Request 를 Neutron Server 가 수신

② Plugin 을 통해 RPC 메시지를 Compute Node 의 OVS Agent 로 전달

③ Compute Node 의 OVS Agent 는 RPC 메시지 수신

④ OVS Agent 는 OVS Switch configure 수행

Page 42: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

42

OpenStack Neutron Plugins and Agents : Open vSwitch Layer 2 Agent

Compute Node Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

VM Instance 와 다른 Network Resource 에 L2 연결을 제공 (L2 Switching 제공)

Monolithic Plugin 으로 다른 Networking Plugin 과 동시사용 불가

VLAN, VXLAN, GRE 등을 지원하여 독립된 Tenant Network 생성이 가능

Page 43: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

43

OpenStack Neutron Plugins and Agents: Layer 3 Agent

Compute Node Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

L2 Network 에 연결되는 Router 를 Configuration 하는 역할

Linux IP Stack 과 iptables 를 사용하여 L3 forwarding, NAT 동작을 구현

Network Namespace 를 이용하여 Multiple Independent Virtual Router 생성 (Overlapping IP)이 가능

Network Namespace 개념은 다음 슬라이드에서 설명

Page 44: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents : Network Namespace

- OpenStack 은 Multi Tenancy 를 지원하도록 설계 되었음

• User 별로 Compute 와 Network Resource를 구성한 Group 을 중복생성 가능

- Network Namespace 를 통해, 각 Tenant Network 별로 Router, Firewall, Network Interface Device

를 별도로 구성 가능

• qdhcp namespace: DHCP 역할 (l2 agent)

• qrouter namespace: Router 역할 (l3 agent)

• qlbass namespace: Load Balancer 역할 (Advanced Service)

44

Hardware

Linux Kernel Global Namespace (net interfaces, routing tables, IP Stack, IPtables)

Tenant1

Namespace1

(net interfaces,

routing tables,

iptables)

Tenant2

Namespace2

(net interfaces,

routing tables,

iptables)

TenantN

NamespaceN

(net interfaces,

routing tables,

iptables)

Page 45: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

45

OpenStack Neutron Plugins and Agents : DHCP Agent

Compute Node Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

Virtual Network 에 위치하고 있는 VM 에 IP 를 할당해주는 역할

DHCP Server 로 사용하기 위해 dnsmasq 를 사용 함

dnsmasq: small network 에서 DNS, DHCP Server 로 사용 가능한 free software

Page 46: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

46

OpenStack Neutron Plugins and Agents : Metadata Agent

Compute Node Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plugin

ML2 Plug-in

DHCP Agent

Metadata Agent

VM Instance 부팅 과정에 필요한 IP 주소나 Instance 관련 정보를 제공

Page 47: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

47

OpenStack Neutron Plugins and Agents : ML2 Plug-in

Compute Node Controller Node

Neutron Server

Layer 2 Agent (OVS)

Network Node

ML2 Plug-in

Layer 2 Agent (OVS)

Layer 3 Agent

ML2 Plug-in

ML2 Plug-in

DHCP Agent

Metadata Agent

ML2: Modular Layer2

Havana Version 에 처음 포함, Ice House Version 에 기본 Plugin 으로 채택 (기존 Monolithic Plugin 대체하기 위해)

Data Center 에서 주로 사용되는 여러 가지 L2 networking 기술을 동시에 사용할 수 있게 해주는 framework

OVS 나 LinuxBridge Agent 와 연동하여 동작

새로운 L2 Networking 기술을 추가하는 방법 간소화

Page 48: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents: ML2 Plugin

48

- Before ML2: Compute Node 에 다른 Agent 설치 시 연동 불가능

- After ML2: Compute Node 에 다른 Agent 설치 시에도 연동 가능

Neutron Server

Compute Node A

Open vSwitch

Plugin

Open vSwitch

Agent

Neutron Server

Compute Node B

Linux Bridge

Plugin

Linux Bridge

Agent

Compute Node A

Open vSwitch

Agent

Compute Node B

Linux Bridge

Agent

Neutron Server

ML2

Plugin

or

Page 49: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents: ML2 Plugin Structure

49

GR

E

Typ

e D

rive

r

VL

AN

Typ

e D

rive

r

VX

LA

N

Typ

eD

rive

r

Aris

ta

Cis

co

Nexu

s

Hyp

er-V

Lin

uxb

ridg

e

Op

en

vS

witc

h

Ta

il-F N

CS

Type Driver Mechanism Driver

Havana Release 에 공식적으로 포함됨

Layer 2 에서 핵심 기능들을 Vendor 및 구현 기능별로 구분 하였음

OpenStack 에서 제공하는 ML2 Plugin 은 Type Driver 와 Mechanism Driver 구조로 되어 있음

Type Driver: Network Type (GRE, VLAN, VXLAN)

Mechanism Driver: Network Implement (Vendor Specific)

ML2 도입에 따라 Vendor 하드웨어와의 통합이 증가

Page 50: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

50

OpenStack Neutron Plugins and Agents: Service Plug-in

- Load Balancer as a Service (LBaaS)

• Open Source 인 HA Proxy 를 통해 구현 (Grizzly 에 처음 포함)

• Multi Vendor 지원 추가 (Havana 에 포함)

• HW 기반 LB 와 SW기반 LB가 서로 연동할 수 있도록 Driver 사용

- Virtual Private Network as a Service (VPNaaS)

• Havana, Icehouse 버전에서 실험적으로 제공

•Open Source 인 OpenSwan 을 통해 구현 (Default Driver)

• Site-to-Site configuration 지원

- Firewall as a Service (FWaaS)

• Service Plugin + Agent + Drivers (Iptables or v Armour)

• firewall policy 적용을 위해 Virtual Router 에 Iptables 를 설정하는 방식

• Vendor specific service can be included

Page 51: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents: Service Plugin (LBaaS, VPNaaS)

51

Compute Node Controller

Node

Controller Node

Neutron Server

Network Node

Service Plugin

Service Agent

Message Processing

Driver A Driver B

Device Type A Device Type B

Advanced Service 지원 구조: Plugin + Agent + Driver 구조

Third Party 에서 Driver 를 추가하여 새로운 장비를 지원하도록 기능추가 가능 (Cisco, Brocade … etc)

Page 52: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

52

OpenStack Neutron Plugins and Agents : LBaaS Service Plugin

Compute Node Controller

Node

Internet

Controller Node

Neutron Server

Network Node

Layer 3 Agent

LBaaS Agent

HAProxy

VM VM

LBaaS Agent 에서 HAProxy 를 이용하여 Load Balancing 기능 제공

Page 53: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

53

OpenStack Neutron Plugins and Agents : VPNaaS Service Plugin

Internet

Network Node Compute Node Network Node Compute Node

Layer 3 Agent

VM

Layer 3 Agent

VM

IPSec VPN

Router

VPN Driver

Router

VPN Driver

site1 site2

L3 Agent 에서 Site to Site IPSec VPN 기능 지원

Page 54: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

54

OpenStack Neutron Plugins and Agents : FWaaS Service Plugin

Compute Node Controller

Node

Internet

Controller Node

Neutron Server

Network Node

VM VM Layer 3 Agent

Router

Firewall Driver

L3 Agent 에서 Iptables 를 이용하여 Firewall Policy 정책 적용

Page 55: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

55

OpenStack Neutron Plugins and Agents : PIOLINK LBaaS Service Plugin

Compute Node Controller

Node

Internet

Controller Node

Neutron Server

Network Node

Layer 3 Agent

LBaaS Agent

PIOLINK Driver

VM VM

PIOLINK Load Balancer

PIOLINK 에서 개발한 LBaaS Driver

OpenStack Neutron 을 이용하여 PAS-K 제품 설정 가능 함

PAS-K 를 이용하여 Compute Node 내 VM Instance (Web Server) 로 Traffic 을 균등하게 분배

Page 56: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents: LinuxBridge Plugin

- bridge 와 8021q Kernel Module 을 사용, Instance 와 Network Resource 를 Virtual Switch 에 연결

하고 Traffic 을 전달

- Linux Bridge 기반으로 Network 구성 시 아래와 같은 Virtual Networking Device 사용

• Tap Device: KVM 과 같은 Hypervisor 에 Virtual Interface 구현에 사용 (Guest OS의 Network Interface 역할)

• VLAN Interface: ethx.<vlan> 이름을 사용, Kernel에서 tagging 된 Packet을 주고받을 수 있음

• LinuxBridge: 여러 Network Interface를 연결하는 Virtual Interface (동일 VLAN 을 연결)

56

eth0

eth1

MGMT & API

Network

External

Network

eth0

MGMT & API Network에

대한 단일 IP주소

brqYYY

(LinuxBridge)

tap0xxxx

tap1xxxx

VM0

eth0

VM1

eth0

K

V

M eth1.

100

<Figure: Compute Node 에서 Network Architecture>

Page 57: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

57

LinuxBridge Plugin 을 이용한 Virtual Network 구성 #01 (One tenant, two networks, one router )

Compute Node (Logical View) Network Node (Logical View)

DHCP

Server

DHCP

Server

Network Node 에 의해 구성

Compute Node 에 의해 구성

Page 58: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

58

LinuxBridge Plugin 을 이용한 Virtual Network 구성 #01 (One tenant, two networks, one router )

Compute Node Network Node

Page 59: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

59

LinuxBridge Plugin 을 이용한 Virtual Network 구성 #02 (Two tenant, two networks, two routers )

Compute Node (Logical View) Network Node (Logical View)

Network Node 에 의해 구성

Compute Node 에 의해 구성

DHCP

Server

DHCP

Server

Page 60: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

60

LinuxBridge Plugin 을 이용한 Virtual Network 구성 #02 (Two tenant, two networks, two routers )

Compute Node Network Node

Page 61: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

OpenStack Neutron Plugins and Agents: OVS Plugin

- Open vSwitch : Software 기반 스위치, Virtual Network bridge 와 flow rule 을 사용하

여 Packet 을 forwarding (OpenFlow Protocol 지원)

- OVS 의 핵심 Component

• Kernel Module: 스위치의 Data plane 역할, Packet 에 대한 처리작업 수행

• OVS Daemon: ovs-vswitchd Linux process, Kernel Moudle 의 동작을 제어

• Database Server: Virtual Switch 의 설정을 관리

61

Page 62: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

62

MGMT & API

Network External

Network

qbr0xxxx

(Linux Bridge) qbr1xxxx

(Linux Bridge)

tap0xxxx tap1xxxx

br-int(OVS 통합 Bridge)

qvo0xxxx qvo1xxxx

Int-br-ethX

VM0

eth0

VM1

eth0

br-eth1(OVS Provider Bridge)

phy-br-ethX

ethX

KVM

qvb1xxxx qvb0xxxx

eth0

MGMT & API Network에

대한 단일 IP주소

eth0

OpenStack Neutron Plugins and Agents: OVS Plugin

- OVS 기반으로 Network 구성 시 아래와 같은 Virtual Networking Device 사용

• Tap Device: Virtual Interface 구현에 사용

• Linux Bridge: 여러 Network Interface 를 연결하는 Virtual Interface (동일 VLAN을 연결)

• Virtual Ethernet Cable: Network Cable 역할, 다양한 Network Resource 를 연결 (OVS bridge – linuxbridge 연결, linuxbridge 간연결)

- OVS bridge-linuxbridge 연결(qvbYYY, qvoYYY” pair 를 사용)

• OVS Bridge: Switch 역할을 수행

• OVS Patch Port: OVS bridge 간 연결을 위해 사용 (int-br-ethX, phy-br-ethX)

Page 63: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

63

OVS Plugin 을 이용한 Virtual Network 구성 #01 (One tenant, two networks, one router)

Compute Node Network Node

Network Node 에 의해 구성

Compute Node 에 의해 구성

DHCP

Server

DHCP

Server

Page 64: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

64

OVS Plugin 을 이용한 Virtual Network 구성 #01 (One tenant, two networks, one router)

Compute Node Network Node

Network Node 에 의해 구성

Compute Node 에 의해 구성

Page 65: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

65

OVS Plugin 을 이용한 Virtual Network 구성 #02 (Two tenant, two networks, two routers )

Compute Node (Logical View) Network Node (Logical View)

Network Node 에 의해 구성

Compute Node 에 의해 구성

DHCP

Server

DHCP

Server

Page 66: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Details of OpenStack Neutron

66

OVS Plugin 을 이용한 Virtual Network 구성 #02 (Two tenant, two networks, two routers )

Compute Node Network Node

Network Node 에 의해 구성

Compute Node 에 의해 구성

Page 67: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

67

Page 68: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

Single Flat Network

68

Shared Net

30.0.0.0/22

Tenant A

VM1

Tenant B

VM1

Tenant A

VM2

Tenant C

VM1

30.0.0.1

Physical Router

Nova Network 의 FlatDHCP 와 유사

VM 에 Single NIC 설정, VM 간 네트워크 동일

Fixed IP 주소 할당, Floating IP 는 지원되지 않음

Physical Network 에 Mapping 되는 Provider Network

30.0.0.2 30.0.0.3 30.0.0.4 30.0.0.5

Page 69: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

69

Multiple Flat Networks

Shared Net1

30.0.0.0/24

Tenant A

VM1

Tenant B

VM1

Shared Net2

30.0.1.0/24

Shared Net3

30.0.2.0/24

Tenant A

VM2

Tenant D

VM1 Tenant C

VM1

Physical Router

30.0.0.1

30.0.1.1

30.0.2.1

Single Flat Network 와 유사

Tenant 가 Multiple Shared Network 가능

30.0.0.2 30.0.0.3 30.0.1.2 30.0.1.3 30.0.2.2 30.0.2.3

하나의 VM 이 여러 개의 Shared Network 에 속할 수 있는 것이 특징

Page 70: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

70

Mixed Flat and Private Networks

Shared Net

30.0.0.0/22

Tenant A

VM1

Tenant A

VM2

Tenant B

VM1

Tenant C

VM1

30.0.0.1

Physical Router

Tenant C

VM2

Tenant A – Private Net

10.0.0.0/24

Tenant C – Private Net

10.0.0.0/24

Flat Network 에서 확장된 형태, VM 에 Multiple NIC 설정, Tenant 별로 Private Network 구성 가능,

VM 이 gateway 역할을 통해 Private Network 에 routing, NAT, load balancing 과 같은 서비스 제공 가능

10.0.0.2

30.0.0.2

10.0.0.3

30.0.0.3 30.0.0.4

10.0.0.2

30.0.0.5

10.0.0.3

Tenant 별로 Private Network 구성 가능

Page 71: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

71

Provider Router with Private Networks

Tenant A – Private Net

10.0.0.0/24

Tenant C – Private Net

10.0.1.0/24

Tenant A

VM1

Tenant A

VM2

Tenant C

VM1

Tenant C

VM2

Provider Router

Shared Net

30.0.0.0/22

10.0.0.1 10.0.1.1

30.0.0.2

30.0.0.1

Physical Router

각 Tenant 들이 하나 이상의 Private Network 생성이 가능, Private Network 는 Provider Router 를 통해 외부와 연결

Floating IP 를 이용하여 각 VMs 들에게 Public 주소를 할당 (External Network 에서 접속 가능)

SNAT/DNAT 가능, Tenant 간 Provider Router 를 통한 통신 가능 (대규모 Private Cloud 에서 사용)

SNAT 를 수행 Private Network 에서 External Network 로 접속이 가능하도록 L3 Connectivity 를 제공 함

10.0.0.2 (30.0.0.3) 10.0.0.3 (30.0.0.4) 10.0.1.2 (30.0.0.5) 10.0.1.3

Public IP

Page 72: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

OpenStack Networking Deployment Use Cases

72

Per-Tenant Routers with private networks

Tenant A – Private Net

10.0.0.0/24

Tenant C – Private Net1

10.0.0.0/24

Tenant A

VM1

Tenant A

VM2

Tenant C

VM1

Tenant C

VM2

Tenant C – Private Net2

10.0.1.0/24

Tenant C

VM3

Tenant C

VM4

Tenant A

Router

Tenant C

Router

Shared Net

30.0.0.0/22

30.0.0.1

Physical Router

10.0.0.1

30.0.0.2 30.0.0.3

10.0.0.1 10.0.1.1

각 Tenant 들이 하나 이상의 Router 를 갖고 있음, 각 Tenant 는 Private Network 를 생성하고 Router를 통해 외부와 연결

Multi-tier applications, SNAT 지원 가능

Public Cloud 에 사용

10.0.0.2 (30.0.0.4) 10.0.0.3 (30.0.0.5)

동일한 IP 대역을 중복해서 사용 가능!

10.0.0.2 (30.0.0.6) 10.0.0.3 (30.0.0.7) 10.0.1.2 10.0.1.3

Public IP

Page 73: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

73

Page 74: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

OpenDaylight Helium Architecture

74

OpenDaylight 에서는 OpenStack 과 연동하기 위한 feature들을 제공

Page 75: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

75

OpenDaylight Helium Architecture

OpenStack Neutron Service

OVSDB VTN Plugin2OC

OVSDB OpenFlow Plugin2OC

Neutron APIs

OpenStack Service: OpenStack Service 에게 Northbound API를 제공 (REST API 형태)

VTN Manager: Virtual Tenant Manager

OVSDB Neutron

Plugin2OC: Southbound plugin to OpenContrail Platform

OpenStack (via Neutron)

Southbound Interfaces

and Protocol Plugins

Controller Platform

And Services

Neutron APIs

Application and

Orchestration Services

Page 76: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

OpenStack Neutron: ML2 Plugin Structure

76

OpenStack 에서도 OpenDaylight 과 연동하기 위한 feature를 제공

SDN 의 장점인 Network Flexibility 가 OpenStack 에 반영 중

SDN 을 활용하여 기존 하드웨어 활용 및 Network 장비와 연계를 통한 유연한 SDN Infra 를 확보하고자 노력

OpenStack 과 SDN 연동 시 장점

- Physical & Virtual Network 제어 가능

- Tenant 별 Network 제어 가능 (Flow Management)

GR

E

Typ

e D

rive

r

VL

AN

Typ

e D

rive

r

VX

LA

N

Typ

eD

rive

r

Aris

ta

Cis

co

Nexu

s

Hyp

er-V

Lin

uxb

ridg

e

Op

en

vS

witc

h

Ta

il-F N

CS

Type Driver Mechanism Driver

Ope

nD

aylig

ht

Page 77: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

OpenDaylight with OpenStack Neutron

77

OpenDaylight API (REST API)

ML2 Plugin

OpenStack Service

OpenStack Neutron

OpenDaylight Driver

OVSDB VTN Plugin2OC

OpenStack ML2 Plugin 의 OpenDaylight Driver 를 통해 OpenDaylight 와 연동 가능

Page 78: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

SDN Controller with OpenStack Neutron

OpenDaylight with OpenStack Neutron

78

Controller Node Controller Node

Neutron Server

Network Node

Layer 3 Agent

DHCP Agent

OVS

Compute Node

VM VM

OVS

Compute Node

VM VM

OVS ML2 Plugin/

ODC Driver

Physical Switch

Network

Controller Node OpenDaylight

Neutron API

OVSDB Plugin

REST API Call

Neutron 과 OpenDaylight 연동을 통해 Data Center 내의 Physical Switch 와 Virtual Switch 제어

Page 79: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Summary

79

Page 80: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

Summary

OpenStack 은 처음 Nova 에서 제공하는 Networking Service 를 사용

기술적 제약사항으로 Networking Service 만을 위한 Quantum 프로젝트 시작

상표권 문제로 인해 Quantum 에서 Neutron 으로 Code Name 변경

OpenStack Neutron 은 Cloud 환경에서 Networking Service 를 제공

- Software 기반의 Networking Service 를 제공

Neutron 을 이용하여 Cloud 환경에서 유연하게 Networking 변경작업이 가능

Virtual Network 생성 및 관리 (Network, port, Subnet 생성 및 관리)

Neutron 을 통해 Physical / Virtual Network 자원을 관리 함

- L2 Switch, L3 Switch, Load Balancer, VPN, Firewall 등

Neutron 의 Plugin Architecture 를 이용하여 자유롭게 확장 가능

SDN Controller 와 연동하여 사용 가능

80

Page 81: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

References

81

Page 82: 20150511 jun lee_openstack neutron 분석 (최종)

© PIOLINK, Inc. SDN No.1

References

OpenStack Overview Havana, Edgar Magana, October 2013

OpenStack Neutron and SDN

OpenStack 클라우드 네트워크 기술 분석, 2013 Electronics and Telecommunications Trends

Network Virtualization with OpenStack Quantum, OpenStack Quantum Hacker

From Nova-Network to Neutron and Beyond: A Look at OpenStack Networking

OpenStack Networking Technical Deep Dive

OpenStack meetup-pune-aug22-overview

OpenStack Neutron

Software Defined Network in OpenStack

OpenStack and the Transformation of the Data Center

OpenStack: Inside Out

82

Page 83: 20150511 jun lee_openstack neutron 분석 (최종)

감사합니다. ㈜파이오링크

서울시 금천구 가산디지털2로 98

(가산동 550-1) IT캐슬 1동 401호

TEL: 02-2025-6900

FAX: 02-2025-6901

www.PIOLINK.com

83