본문 바로가기

Cloud Native/Overview_OpenStack

OpenStack DVR Overview

What is OpenStack DVR?

DVR... 무슨 의미니?


OpenStack의 10번째 버전인 JUNO 가 Release된 지도 꽤 시간이 흘렀다.


얼마전 Kilo가 Release 되었는데 OpenStack의 Release 속도를 보면 기겁할 정도다.


OpenStack Juno 버전에서 소개된 DVR에 대해서 알아보고자 한다.



DVR (Distributed Virtual Router)



네트워크 노드에 집중되었던 가상 라우터를 가상 머신이 생성되는 컴퓨트 노드에 분산배치하여 네트워크 노드로의 트래픽 집중을 해결하고 네트워크 노드에 장애가 발생하는 경우 VM 간 또는 외부 통신을 일정부분 보완하는 내용이다.

요컨데, 네트워크 노드의 단일 장애점(SPOF: Single Point Of Failure) 및 트래픽 집중 문제를 해결하기 위한 기술이다.



DVR 관련 설치 및 설정


각 컴퓨트 노드에 가상 라우터가 분산배치 되어야 하기 때문에 네트워크 노드 및 컴퓨트 노드에 L3 Agent가 설치된다.

Juno 버전을 다운로드 받으면 자연스럽게 설치되는 내용이다.

DVR을 활성화 하기 위하여 설정을 하여야 하는데 크게 3부분으로 나뉜다.


  • L3 Plugin
    • Neutron의 기본 설정 파일
    • neutron.conf 에서 router_distributed 설정 값을 True
  • L3 Agent
    • l3_agent.ini 에서
    • 네트워크 노드인 경우: agent_mode 설정 값을 dvr_snat 으로 설정
    • 컴퓨트 노드인 경우: agent_mode 설정 값을 dvr로 설정
    • router_delete_namespace 설정 값을 True로 설정
  • L2 Agent
    • ml2_conf.ini 에서
    • enable_distributed_routing 설정 값을 True로 설정
    • l2_population 설정 값을 True로 설정
    • 테넌트 네트워크 유형을 VxLAN 또는 NVGRE로 설정



Namespace


DVR 환경은 Linux Namespace를 활용한다.

네트워크 및 컴퓨트 노드에 각각 설치된 L3 Agent에 의해 다양한 Namespace가 생성된다.


<OpenStack DVR Overview - Namespace>


임의의 테넌트에 대해 하나의 가상 라우터가 생성되는 경우 모든 네트워크 및 가상 머신이 생성되는 컴퓨트 노드에 가상 라우터에 대한 Router Namespace 가 생성된다.

아래 그림에서

  • Router Namespace: qrouter-3d14a2af-cf37-46d5-88a8-926aee62efea
  • 가상 인터페이스: qr-xxx


<OpenStack DVR Overview - Router Namespace>


이 Router Namespace 내부에 서브넷 간 라우팅을 위한 라우팅 테이블이 설정된다.


<OpenStack DVR Overview - ARP Table>


가상 네트워크에 VM이 생성되면 VM이 속한 컴퓨트 노드 및 네트워크 노드에 동일한 Router Namespace가 생성된다.

이러한 경우 동일한 테넌트의 서로 다른 서브넷 간의 연결은 네트워크 노드의 Router Namespace를 경유하지 않고 컴퓨트 노드의 Router Namespace를 통해 컴퓨트 노드 간 직접 통신을 한다. (east-west Routing)

DVR 환경에서는 하나의 가상 라우터에 대하여 SNAT Namespace가 네트워크 노드에 추가된다.

아래 그림에서

  • SNAT Namespace: snat-cc857096-450e-4c57-9ed1-38a90fb6a85e
  • 가상 인터페이스: sg-xxx (snat interface) / qg-xxx (External Device)


<OpenStack DVR Overview - SNAT Namespace>


SNAT Namespace는 VM이 공인 IP(즉, Floating IP)를 가지지 않는 경우 외부에 접속을 하기 위하여 소스 네트워크 주소 변환(SNAT: Source NAT)을 진행하며 이를 위한 네트워크 주소 변환 규칙이 정의되어 있다.

 DVR 환경에서 VM이 Floating IP를 갖는 경우 VM이 생성된 컴퓨트 노드에 목적지 주소 변환(DNAT: Destination NAT)을 위한 FIP Namespace가 생성된다.

아래 그림에서

  • FIP Namespace: fip-62e976f8-2dc2-48af-950f-925d52b4e43b
  • DVR_fip-namespace.png


FIP(Floating IP) Namespace는 컴퓨트 노드에 VM이 Floating IP를 갖는 경우 생성되는데 가상 포트를 통하여 Router Namespace와 연결된다.

즉, VM에 할당된 Floating IP에 대한 모든 트래픽을 Router Namespace로 전달하는 테이블을 가지고 있다.

Floating IP에 해당하는 DNAT 기능은 FIP Namespace가 아닌 Router Namespace에서 담당한다.

특징적으로 DVR 환경에서 생성한 가상 라우터는 하나의 서브넷에 대하여 2개의 포트가 생성된다.


<OpenStack DVR Overview - Topology>


하나는 서브넷의 게이트웨이 포트인 qr-xxx 로서 Router Namespace에서의 라우팅을 위한 포트하고 다른 하나는 sg-xxx 로서 SNAT Namespace에서 할당하는 포트이다.



앞으로 설명


앞으로 DVR 환경에서의 동작 방식을 다음과 같은 순서로 포스팅 할 것이다.




'Cloud Native > Overview_OpenStack' 카테고리의 다른 글

OpenStack 'Mitaka'  (0) 2015.07.15
OpenStack M naming 철회  (0) 2015.07.09
OpenStack M 릴리즈 네이밍을 반대합니다.  (0) 2015.07.07