본문 바로가기

Cloud Native/Research_OpenStack

OpenStack DVR - East/West Traffic Flow

OpenStack DVR - East/West Traffic


OpenStack의 Neutron은 VM간의 통신을 위한 서비스를 제공한다.


이번 포스팅에서는 VM간의 통신 중 East/West Traffic을 살펴보고자 한다.


East/West Traffic은 데이터 센터에서 같은 Tenant에 속하는 2개 이상의 Segment (즉, 서로다른 서브넷 네트워크)에 존재하는 VM 사이의 통신에서 발생한다.


좀 더 쉽게 이야기 하자면


OpenStack을 통하여 서로다른 서브넷 네트워크를 2개 이상 생성하고 각 서브넷마다 VM이 동작한다고 할 경우 DVR은 서로 다른 서브넷 네트워크를 연결하는 역할을 담당한다.


이 경우에 DVR로 연결된 서로 다른 서브넷 네트워크에 존재하는 VM 사이에 Traffic은 모두 DVR에서 관리한다. (East/West Traffic)



OpenStack Topology - East/West case



OpenStack의 Horizon을 통하여 서로 다른 서브넷을 생성하고 각 서브넷 마다 VM을 할당한 뒤 DVR을 만들어 통신한다.


<OpenStack DVR - East/West Traffic Topology>


이때 생성되는 Router는 모두 DVR 이다. (Neutron.conf 등에 이미 설정하였다.)



DVR 생성


DVR은 VM이 생성되는 Compute Node에 생성되어 Traffic 처리를 담당하게 된다.


<OpenStack DVR - Compute Node 1>


<OpenStack DVR - Compute Node 2>


상기 그림과 같이 VM이 생성된 Compute Node(node01/node02)의 DVR을 확인하면 모두 동일함을 확인할 수 있다.

즉, OpenStack에서 Router를 생성하면 DVR이 생성되는 Compute Node에서는 Router Namespace를 활용하여 interface를 생성한다. (해당 interface에 대한 MAC/IP등의 정보를 서로 공유하여 동일하게 생성)


<OpenStack DVR Namespace - Compute Node 1>


<OpenStack DVR Namespace - Compute Node 2>


상기 그림에서 qrouter-3d14a2af-cf37-46d5-88a8-926aee62efea는 node01/node02에 동일하게 생성되었으며 인터페이스에 설정된 IP/MAC 등도 동일하다. (qr-xxxx 확인)

또한 이렇게 생성된 DVR Namespace는 서브넷 간의 통신을 위한 Table이 설정되어 있다.


<OpenStack DVR ARP Table - Compute Node 1>

Compute Node 01의 Table은

  • DHCP: 100.0.0.3
  • Compute Node 01에 생성된 VM: 100.0.0.2 / 100.0.20.2
  • Compute Node 02에 생성된 VM: 100.0.10.2


<OpenStack DVR ARP Table - Compute Node 2>

Compute Node 02의 Table은

  • DHCP: 100.0.10.3 / 100.0.0.3
  • Compute Node 01에 생성된 VM: 100.0.0.2 / 100.0.20.2
  • Compute Node 02에 생성된 VM: 100.0.10.2


결과적으로 DVR이 생성된다는 것은 관련된 노드에 Namespace를 생성하고 Table이 구성된다는 것으로 생각할 수 있다.



East/West Traffic Flow



상기 Topology에서 vm03(100.0.20.2)은 Compute Node 02(node02)에 vm01(100.0.0.2), vm02(100.0.10.2)는 Compute Node 01(node01)에 생성되어 있다.

또한 DVR은 서로 다른 서브넷인 net01, net02, net03 을 걸쳐서 생성되어 있다.

이 경우 vm03에서 다른 VM(vm01, vm02)로 발생하는 Traffic은 DVR을 통하여 전달된다. (East/West Traffic)


<OpenStack DVR - East/West Traffic Flow>


위 그림으로 설명을 하자면...

vm03에서 vm02로 발생하는 Traffic은 vm03이 생성된 Compute Node의 Router Namespace(qrouter-3d14a2af-cf37-46d5-88a8-926aee62efea)에 도달하게 된다.

vm03이 존재하는 Compute Node의 Router에서는 도착한 패킷에 대하여 Table에 매칭되는 것이 있는지 확인하게 되는데 해당 Table에는 모든 VM들에 대한 Table이 이미 구성되어 있기 때문에 매칭 룰을 확인하게 된다.

즉, src (vm03) 및 dest (vm02)에 대한 매칭 rule이 존재하기 때문에 이를 참조한다. (qr-61134c0d-4d, fa:16:3e:12:37:77)

매칭 룰에 의하여 vm02의 Router Namespace의 interface에 대한 MAC이 설정된다. (qr-61134c0d-4d에 대한 vm02 Router Namespace의 MAC은 fa:16:3e:cb:59:c9, Compute Node 02 - DVR Namespace 참조)

매칭 룰에 의해 src의 MAC이 변경되면 그 이후 Overlay Network(VXLAN/GRE) 구간을 거치게 되는데 이 때의 src MAC은 Compute Node 02의 MAC 이다.

해당 패킷이 vm02가 존재하는 Compute Node 01에 도달하면 Overlay 구간의 src MAC을 벗겨내고 vm02와의 통신이 완료된다.

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

OpenStack with networking-sfc (devstack)  (6) 2016.03.23
OpenStack REST 확인  (0) 2015.10.19
OpenStack DVR - SlideShare  (0) 2015.06.29
OpenStack DVR – DNAT Traffic  (0) 2015.06.29
OpenStack DVR – SNAT Traffic  (0) 2015.06.29