Public IaaS를위한 - OSS

29
2019 OpenTechnet | 1 Public IaaS를 위한 OpenStack 개선 전략 NHN 클라우드인프라개발랩 | 박성우 [email protected]

Transcript of Public IaaS를위한 - OSS

Page 1: Public IaaS를위한 - OSS

2019 OpenTechnet | 1

Public IaaS를위한OpenStack 개선전략

NHN클라우드인프라개발랩 | 박성우

[email protected]

Page 2: Public IaaS를위한 - OSS

2019 OpenTechnet | 2

CONTENTS

1. NHN TOAST

2. DHCP

3. DVR-SNAT

4. TOR Controller

5. Plans

Page 3: Public IaaS를위한 - OSS

2019 OpenTechnet | 3

1. NHN TOAST

Page 4: Public IaaS를위한 - OSS

42019 OpenTechnet | 4

・ 2015년 Public IaaS Cloud 서비스시작

・ OpenStack 기반으로상용

・ CentOS 7 + KILO로시작

・ Network 구성은 DVR, DVR-SNAT을이용

<TCC: NHN이자체 기술력으로 설계/건축한 도심형 데이터센터>

Page 5: Public IaaS를위한 - OSS

52019 OpenTechnet | 5

Issues

Linux-OVS Data Plane ・ Linux Kernel 을통과하면속도저하가발생한다.

・ qrouter 성능이좋지않다.

・ ovs 성능이충분하지않다.

・ DVR은필연적으로 br-int에서 BUM에의한 loop을발생시킬수있다.

・ Local VLAN이충돌하는것을회피해야한다.

Neutron-DVR ・ Namespace는 building 속도를저하시킨다.

・ 전체 Node 수가증가할수록 RPC 증가로 Neutron 성능 저하를일으킨다.

・ DVR은전체적인 RPC 양이증가한다.

・ ovs rule 이상대적으로증가한다.

Page 6: Public IaaS를위한 - OSS

2019 OpenTechnet | 6

ControllerProvisioningData Plane

Page 7: Public IaaS를위한 - OSS

72019 OpenTechnet | 7

구현사항

Implements

・ Neutron Plugin

・ Neutron ML2 Mechanism Driver

・ NOVA Compute VIF Driver

・ Linux Bridge, SRIOV

・ OVS-ASAP2

・ Agent

・ Compute

・ TOR

・ SNAT

・ DHCP

・ Peering Gateway

・ML2, L3

・ CLI

・ Virtual Switch

Neutron

Plugin

ML2 Mech

driver

DVR-SNAT

Peering Gateway

vSwitch

DHCP Agent

Neutron

DBNeutron

DB

TOR Agent

vSwitch

NOVA Compute

VIF Driver

Network Agent

NOVA Compute

VIF Driver

Network Agent

NOVA Compute

VIF Driver

Network Agent

NOVA Compute

VIF Driver

Network Agent

vSwitch

Page 8: Public IaaS를위한 - OSS

82019 OpenTechnet | 8

TOAST vSwitch

Implements

・ Neutron 전용 vSwitch

・ Functions

・ QRouter

・ DVR-SNAT

・ DHCP

・ Peering Gateway

・ VxLAN, VLAN

・ Python Client를이용하여 TCP제어

・ JSONPython-

Toastswitchclient

DPDK Environment

DHCP

Bridge

DVR-SNAP

Bridge

TOR-QROUTER

Bridge

L4 LoadBalancer

Bridge

Firewall/ACL

Bridge

DPDK PHY

Page 9: Public IaaS를위한 - OSS

92019 OpenTechnet | 9

2. DHCP

Page 10: Public IaaS를위한 - OSS

102019 OpenTechnet | 10

Neutron DHCP Agent

DHCP

・ namespace 생성

・ ovs port 생성

・ flow 추가

・ dnsmasq in namesapce

・ metadata-proxy in namespace

Neutron

DHCP Agent

Neutron

Openvswitch Agent

DNSMasq

Metadata-Proxy

DHCP

Interface

namespace namespace

DNSMasq

Metadata-Proxy

DHCP

Interface

Metadata Agent

Page 11: Public IaaS를위한 - OSS

112019 OpenTechnet | 11

DHCP-vSwitch

DHCP

・ namespace 생성

・ ovs port 생성

・ flow 추가

・ dnsmasq in namesapce

・ metadata-proxy in namespace

Agent

DHCP, ML2, Metadata

DPDK Environment

DHCP

Snat proxy

Segment

DHCP

Snat proxy

Segment

DHCP

Snat proxy

Segment

Overlay switch

Link local

by vni

VxLAN

Page 12: Public IaaS를위한 - OSS

122019 OpenTechnet | 12

DHCP Flows

Agent

DHCP, ML2, Metadata

DPDK Environment

DHCP

Snat proxy

Segment

DHCP

Snat proxy

Segment

DHCP

Snat proxy

Segment

Overlay switch

Link local

by vni

VxLAN

・ DHCP Request는직접응답

・ Metadata Connection

・ Host 마다 Link Local 주소할당

・ SNAT 수행후 Agent 내 proxy로전달

DHCP

Page 13: Public IaaS를위한 - OSS

132019 OpenTechnet | 13

설명 Neutron DHCP Agent DPDK Based

T1 Cache -> vSwitch Sync. - 21sec

T2 Neutron Network Fetching

29min 29sec 55sec

T3 Cache -> vSwitch Sync.

Synchronization

DHCP

・ CPU 2.4Ghz, 4 vCPU, Memory 6GB

・ Neutron Network 1000개

・ 300개 Network에만 10개씩 HOST = 3000개 HOST

・ Ubuntu 16.04

Page 14: Public IaaS를위한 - OSS

142019 OpenTechnet | 14

3. DVR-SNAT

Page 15: Public IaaS를위한 - OSS

152019 OpenTechnet | 15

Neutron L3 Agent

DVR-SNAT

・ snat namespace 생성

・ qrouter namespace 생성

・ ovs port 생성

・ flow 추가

・ SNAT iptables in namesapce

Neutron

L3 Agent

Neutron

Openvswitch Agent

qr qbr

qrouter

namespace

qrouter

namespace

qr sg

OVS

Iptables SNAT

Page 16: Public IaaS를위한 - OSS

162019 OpenTechnet | 16

SNAT-vSwitch

DVR-SNAT

・ SNAT Agent에서 host 정보를

segment 단위로동기화

・ SNAT Router, QRouter 생성

・ Outbounding router

・ Active-Standby

・ Maintenance Migration

Agent

L2, ML2, SNAT

TCP

DPDK Environment

Outbouding

router

Overlay switch

Snat router

Snat router

QRouter

QRouter

segmentsegmentsegment

by vni

VxLAN

Page 17: Public IaaS를위한 - OSS

172019 OpenTechnet | 17

SNAT Flows

DVR-SNAT

・ SNAT

・ Routing

・ SNAT - Connection Tracking

・ Traffic Count

Agent

L2, ML2, SNAT

TCP

DPDK Environment

Outbouding

router

Overlay switch

Snat router

Snat router

QRouter

QRouter

segmentsegmentsegment

by vni

VxLAN

Page 18: Public IaaS를위한 - OSS

182019 OpenTechnet | 18

설명 Neutron L3 Agent DPDK Based

T1 Cache -> vSwitch Sync. - 43sec

T2 Neutron Router Fetching 14min 39secNetwork = 100Host = 1000

59sec

T3 Cache -> vSwitch Sync. 13sec

Synchronization

DVR-SNAT

・ CPU 2.4Ghz, 4 vCPU, Memory 6GB

・ Neutron Network 1000개

・ 300개 Network에만 10개씩 HOST = 3000개 HOST

・ 단 Neutron L3 Agent는성능문제로 100개만수행

・ Ubuntu 16.04

Page 19: Public IaaS를위한 - OSS

192019 OpenTechnet | 19

4. TOR Controllers

Page 20: Public IaaS를위한 - OSS

202019 OpenTechnet | 20

Nova Compute

TOR Controller

・ ovs port 생성

・ flow 추가

・ qrouter in namesapce

・ fip network in namespace

・ Local VLAN 으로네트워크구분

hypervisor

OVS

LOCAL VLAN

VM VM

VM

QRouter QRouter

FIP

Page 21: Public IaaS를위한 - OSS

212019 OpenTechnet | 21

TOR Agent

TOR Controller

・ 각 Compute Node는 TOR Agent에 API 요청

・ read에대해서는바로응답.

・ write에대해서는 Neutron으로전달.

・ distributed controller 역할

・ L3 function

・ qrouter 구성

・ Floating IP 처리

・ L2 function

・ segment구성및 VxLAN Tunnel 구성

QRouter

QRouter

vSwitch

Agent

TOR L2 Switch

VM VM

VM VM

VxL

AN

LO

CA

L V

LA

N

Page 22: Public IaaS를위한 - OSS

222019 OpenTechnet | 22

Flows

TOR Controller

・ EW Traffic

・ vSwitch 에서 VxLAN encap

・ NS Traffic

・ vSwitch QRouter를 통해 전달

・ Floating IP는 QRouter에서 DNAT

・ FIP, VTEP에 대해서 BGP

QRouter

QRouter

vSwitch

Agent

TOR L2 Switch

VM VM

VM VMV

xL

AN

LO

CA

L V

LA

N

QRouter

QRouter

vSwitch

Agent

TOR L2 Switch

VM VM

VM VM

Page 23: Public IaaS를위한 - OSS

232019 OpenTechnet | 23

Direction Linux-OVS QRouter DPDK Based QRouter

Subnet to Subnet 200K ~ 400Kpps30Mpps @ 6vCPU5Mpps/Core

Mellanox PF pci-passthrouch

Floating IP -20Mpps @ 4vCPU5Mpps/Core

Mellanox VF pci-passthrouchon ASAP2

Performance

TOR Controller

・ CPU 2.4Ghz, Memory 6GB @Ubuntu 18.04 KVM

・ NIC Mellanox ConnectX-5 25G x2

Page 24: Public IaaS를위한 - OSS

242019 OpenTechnet | 24

5. Plans

Page 25: Public IaaS를위한 - OSS

252019 OpenTechnet | 25

Implementing Neutron Components

Plans

・ Distributed Firewall

・ Distributed Layer 4 Load Balancer using DPDK

・ Amphora Cluster Manager - octavia

・ Layer 2 Direct Server Return

・ Full L3 Architecture

・ Compute - VxLAN

Page 26: Public IaaS를위한 - OSS

262019 OpenTechnet | 26

Implementing Neutron Components

Plans

・ Distributed Firewall on TOP of RACK

・ Distributed L4 Load Balancer on TOP of RACK

・ Amphora Cluster Manager - OctaviaLB

Agent

vSwitch

TOR L2 Switch

VM VM

VM VM

Firewall LB

TOR L2 Switch

VM VM

VM VM

Agent

vSwitch

SRIOV/VxLAN SRIOV/VxLAN

Firewall

Page 27: Public IaaS를위한 - OSS

272019 OpenTechnet | 27

Optimizing Flows

Plans

・ Layer 2 Direct Server Return

・ Full L3 Architecture

・ EW traffic - HW assist

・ NS traffic - DPDK assist

LBAgent

vSwitch

VM VM

VM VM

Firewall LB

VM VM

VM VM

Agent

vSwitch

SRIOV/VxLAN SRIOV/VxLAN

Firewall

TOR L2 SwitchTOR L2 Switch

Page 28: Public IaaS를위한 - OSS

2019 OpenTechnet | 28

Q&A

Page 29: Public IaaS를위한 - OSS

2019 OpenTechnet | 29

THANK YOU