OpenStack Summit Tokyo OpenStack Summit Tokyo의 Keyword는… 컨테이너(Docker, Kuryr, Kubernetes) 그러나 빛나는 것이 또 있더라… SDN기술연구실 신용윤
OpenStack Summit Tokyo
OpenStack Summit Tokyo의 Keyword는…
컨테이너(Docker, Kuryr, Kubernetes)
그러나 빛나는 것이 또 있더라…
SDN기술연구실 신용윤
DRAGONFLOW
제발 우리와 다른 길을 가라…
OpenFlow를 활용한 L3 Flow 제어…
배경
• Network Node Bottleneck
– 모든 inter-subnet traffic은 Network Node를 통해야 함
– 대부분의 WE(West-East) Application traffic은 Subnet 사이에서 발생
– 가상 라우터
• Linux network namespace 사용
• 사전 구성 (필요하지 않아도 생성)
문제점
• Single Virtual Network에서 VM간의 통신
문제점
• Multi Virtual Network에서 VM간의 통신
DVR (Distribute Virtual Router)
• Proactive approach
– Flow 사전 구성 (Routing/ARP Tables)
• Linux namespace
– 모든 같은 가상 네트워크에 속한 컴퓨트 노드에 복제
• 네임 스페이스 동기화
DragonFlow
• Fully distributed virtual router for Neutron– Lightweight SDN Controller
• OVS forwarding engine의 Data plane에 OF flows(match, action) 서비스 로직 구현
– Performance/Scale 개선 및 Virtual Router 관리 단순화• 병목 현상 제거, single point failure 해결
• 현재 2가지 버전– Centralized Version (Kilo Release)
• Network Node: L3 Controller Agent
– Distributed Version (~ing)• Compute Node: Dragonflow Controller
Centralized DragonFlow
• OpenStack Juno
Hybrid OF Switch
• L3 Controller Agent
– 각 OVS에 구성된 VM에 대한 port 정보 확인
– VM에 대한 port가 아닌 경우 Normal L2 Switch 전송
L3 Installed pipeline
• Virtual Router using flows
– All L2 flows offloaded to the normal path
• Table0 (Metadata)
– action이 NORMAL인 DHCP 포트가 가상네트워크 마다 생성
– 가상네트워크에 생성되는 모든 인터페이스에 대한 Table
• Table51 (ARP)
– ARP에 대한 테이블 구성으로 각 가상네트워크의 라우터 인터페이스에 대한 MAC 반환
• Table52 (L3, DragonFlow)– NORMAL: metadata와 목적지가 같은 네트워크에 대한 내부 L2 네트워크 [match: metadata=0x1f42(net1), nw_dst=10.1.0.0/24(net1)]
– CONTROLLER: metadata와 목적지가 같은 네트워크에 대한 L3 네트워크 [match: metadata=0x1f43(net2), nw_dst=10.1.0.0/24(net1)]
Flow Rule
1.cookie=0x0, duration=3063.423s, table=0, n_packets=0, n_bytes=0, priority=1000,in_port=8 actions=NORMAL2.cookie=0x0, duration=3063.423s, table=0, n_packets=0, n_bytes=0, priority=1000,in_port=7 actions=NORMAL3.cookie=0x0, duration=3063.422s, table=51, n_packets=0, n_bytes=0, send_flow_rem
priority=100,arp,metadata=0x1f42,arp_tpa=10.1.0.1,arp_op=1 actions=set_field:2->arp_op,move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],set_field:fa:16:3e:c0:8d:8b->eth_src,set_field:fa:16:3e:c0:8d:8b->arp_sha,set_field:10.1.0.1->arp_spa,IN_PORT4.cookie=0x0, duration=3063.423s, table=51, n_packets=0, n_bytes=0, send_flow_rem
priority=100,arp,metadata=0x1f43,arp_tpa=10.2.0.1,arp_op=1 actions=set_field:2->arp_op,move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],set_field:fa:16:3e:c5:02:4d->eth_src,set_field:fa:16:3e:c5:02:4d->arp_sha,set_field:10.2.0.1->arp_spa,IN_PORT5.cookie=0x0, duration=3063.423s, table=52, n_packets=0, n_bytes=0,
priority=20,ip,metadata=0x1f43,nw_dst=10.1.0.0/24 actions=CONTROLLER:655356.cookie=0x0, duration=3063.421s, table=52, n_packets=0, n_bytes=0,
priority=30,ip,metadata=0x1f42,nw_dst=10.1.0.0/24 actions=NORMAL7.cookie=0x0, duration=3063.423s, table=52, n_packets=0, n_bytes=0,
priority=20,ip,metadata=0x1f42,nw_dst=10.2.0.0/24 actions=CONTROLLER:655358.cookie=0x0, duration=3063.423s, table=52, n_packets=0, n_bytes=0,
priority=30,ip,metadata=0x1f43,nw_dst=10.2.0.0/24 actions=NORMAL
• DragonFlow– Neutron을 통하여 변경된 모든 구성에 대하여 Proactive Flow Rule 설정
• Table40
– Classifier에 대한 테이블 구성
Flow Rule
cookie=0x0, duration=260870.502s, table=40, n_packets=0, n_bytes=0, priority=1 actions=goto_table:52cookie=0x0, duration=260870.502s, table=40, n_packets=0, n_bytes=0,
priority=100,dl_dst=ff:ff:ff:ff:ff:ff actions=NORMALcookie=0x0, duration=260870.502s, table=40, n_packets=6, n_bytes=252, priority=1000,arp
actions=goto_table:51
cookie=0x0, duration=153.339s, table=0, n_packets=27, n_bytes=2462, priority=1000,in_port=11 actions=write_metadata:0x1f42/0xffff,goto_table:40cookie=0x0, duration=149.796s, table=0, n_packets=23, n_bytes=2182, priority=1000,in_port=12
actions=write_metadata:0x1f43/0xffff,goto_table:40
cookie=0x1008000000019, duration=5.704s, table=52, n_packets=1, n_bytes=98, idle_timeout=300, priority=100,ip,metadata=0x1f43,in_port=12,dl_src=fa:16:3e:cf:4b:ed,dl_dst=fa:16:3e:c5:02:4d,nw_src=10.2.0.3,nw_dst=10.1.0.3 actions=dec_ttl,set_field:fa:16:3e:c5:02:4d->eth_src,set_field:fa:16:3e:00:17:e6->eth_dst,output:11cookie=0x1008000040051, duration=5.708s, table=52, n_packets=1, n_bytes=98, idle_timeout=300,
priority=100,ip,metadata=0x1f42,in_port=11,dl_src=fa:16:3e:00:17:e6,dl_dst=fa:16:3e:c0:8d:8b,nw_src=10.1.0.3,nw_dst=10.2.0.3 actions=dec_ttl,set_field:fa:16:3e:c0:8d:8b->eth_src,set_field:fa:16:3e:cf:4b:ed->eth_dst,output:12
ARP Table=51
Distributed DragonFlow
• 분산 DB 솔루션을 사용하여 컴퓨트 노드에 분포된 DragonFlow와 동기화
– Network DB Layer 구성
– 각 컴퓨팅 호스트의 br-int만 사용하여 L2, L3 OF Flow Rule
Pluggable DB Layer
• 모든 로컬 컨트롤러에 가상 네트워크 토폴로지를 동기화 하기 위한 DB 프레임워크– 로컬 컨트롤러는 DB에 자신을 등록
– HA/Redundancy/Clustering 필요
– SLA, Performance, latency 요구
Pluggable Database
• Network DB Layer– DragonFlow Neutron Plugin/Compute Node DragonFlow Controller/응용 프로그램
모두 사용가능
– DB 운영을 위한 DB Driver API 호출
Selective Distribution
• 각 Compute Node의 컨트롤러간 동기화
– 관련 데이터만 동기화
• 동기화 관련 부하를 줄임
Selective Proactive Distribution
Roadmap
• Containers
• Distributed SNAT/DNAT
• Reactive DB
• Topology Service Injection / Service Chaining
• Smart NICs
• Hierarchical Port Binding (SDN ToR)
• Inter Cloud Connectivity (Boarder GW/L2 GW)
• Fault Detection
TRICIRCLE
제발 우리와 다른 길을 가라…
OpenStack over OpenStack!!!
OpenStack Cascading이 새로운 이름으로…
OpenStack to manage OpenStacks
• Current Production Architecture
– OpenStack Cascading
배경
• 현재의 OpenStack은 ‘Single’ 개념
• Multi-Site 기반의 OpenStack은
– 사이트간 개념이 추가되어야 함
– 일관성 있는 접근이 필요함
– 하위 사이트의 다양한 환경을 디자인 하여야 함
needs
• Global management of cloud resources
– Images, VMs, volumes, networks
– Across multiple OpenStack clouds
• Single resource utilization dashboard
• Cross-site virtual networks (L2 & L3)
• Single identity Management
– Single cloud account
– Federated Keystone
Tricircle
• Management Orchestration for Multiple site OpenStack
Lunch Instance demo
Tricircle v2.0
• Architecture
Tricircle OpenStack Adapter
• Aggregated by Availability Zones
Tricircle Top Service
• Top Service
Tricircle Bottom Site Service
• Bottom Site Service
Cross-Site Router
• 1 Site Router
– 효율적이지 못함
– Not Cross-site 모델
– 다른 Solution 필요
• Cross-site Router
– 동일한 Router 생성• IP/MAC 까지 동일
Tricircle Cross-site L2/L3 Connectivity