티스토리 뷰

OpenStack

SDN and OVN(Open Virtual Network)

naleejang 2020. 7. 22. 09:47

지난 포스팅에서 SDN에 대해서 알아보았습니다.

SDN이 무엇인지,.. 왜 SDN이 나왔는지 말입니다. SDN은 기존에 네트워크 장치에서 직접 제어되던 네트워크 트래픽을 네트워크 장치가 아닌 별도의 네트워크 프로그램에 의해 제어하기 위해 나온 개념입니다. 따라서, 소프트웨어로 정의된 네트워크라는 의미로 Software Defined Network 를 줄여 SDN이라고 부릅니다. 

 

이런 SDN 솔루션은 매우 다양합니다. 저는 이중에서도 이번에 레드햇 오픈스택 16에 포함된 OVN(Open Virtual Network)에 대해 알아볼까 합니다. 사실 다른 SDN 솔루션들은 이름만 들어봤지 실제를 본적이 없어서 설명을 하고 싶어도 할 수가 없어요.

OVN(Open Virtual Network)은 레드햇 오픈스택 16(Train) 버전에서 기본 네트워킹 기능으로 포함되었으며, OpenVswitch를 기반으로 하는 오픈소스 SDN 솔루션입니다. 어떤 문서를 살펴보면 OVN은 자연스럽고 원활하며 확장 성이 매우 빨라져서 클라우드 클러스터를 보다 유연하게 변경 가능하게 하며 다운 타임없이 필요에 따라 리소스를 재구성 할 수 있다고 나와 있습니다. 이 부분은 사실 제가 직접 해보지는 않아서 뭐라 말할수는 없지만, 뭔가 더 좋아졌다고 하니 앞으로 기대는 해 볼만한 네트워크 기능인것 같습니다. 아래 그림은 Open vSwitch가 제공하는 기능들을 그림으로 표현한 것입니다. 아마도 OVN은 SDN에서 네트워크 컨트롤러에 해당하며, Open vSwitch를 제어하는 역할을 하는것처럼 보입니다. Open vSwitch는 밑단에서 OVN의 명령어 따라 네트워크를 생성해주는 역할을 하는것이지요~!! 어떻게 보면 클라우드 환경에서 제대로 된 가상 네트워크 환경이 구현이 된 것 같습니다. 

[오픈스택 16에서 OVN 구성 컴포넌트]

OVN을 기본 구성으로 오픈스택 16 버전을 설치하면 아래와 같이 컨트롤러 노드에는 ovn-controller, ovn-northd, neutron-api 가 컨테이너로 실행되며, ovsdb-server와 ovs-vswitchd 가 프로세스로 동작합니다. 컴퓨트 노드에는 ovn-metadata-agent와 ovn-controller가 컨테이너로 실행되며, 컨트롤러 노드와 마찬가지로 ovsdb-server와 ovs-vswitchd가 프로세스로 실행됩니다. Open vSwitch를 기본 네트워크 에이전트로 사용했던 오픈스택 13(Queens) 버전에서는 네트워크가 생성이 되면, 컨트롤러 노드에 해당 가상 네트워크가 생성된 반면, OVN을 기본으로 하는 오픈스택 16(Train) 버전에서는 해당 컴퓨트 노드에 인스턴스가 생성될때 가상 네트워크가 컴퓨트 노드에 neutron-ovnmeta-* 로 시작하는 가상 네트워크가 생성됩니다.

컨트롤러 노드에서 컨테이너 목록을 조회하면 아래와 같이 ovn-controller, ovn-northd, neutron_api 컨테이너가 실행중인것을 확인할 수 있습니다.

[root@ctrl1 ~]# podman ps | grep -v nova | grep ovn
9ed35415952d  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-ovn-northd:16.0              /bin/bash /usr/lo...  8 minutes ago  Up 8 minutes ago         ovn-dbs-bundle-podman-0
d4e47c1f8413  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-ovn-controller:16.0          kolla_start           5 days ago     Up 9 minutes ago         ovn_controller
cc53a90b939a  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-neutron-server-ovn:16.0      kolla_start           5 days ago     Up 9 minutes ago         neutron_api

물론 컴퓨터 노드에서 ovn 관련 컨테이너를 검색해 보면 아래와 같이 neutron-haproxy-ovnmetra-*, ovn_metadata_agent, ovn_controller 컨테이너가 실행중인 것을 확인할 수 있습니다.

[root@com1 ~]# podman ps | grep ovn
b4d020e20e4b  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-neutron-metadata-agent-ovn:16.0  /bin/bash -c HAPR...  2 seconds ago  Up 2 seconds ago         neutron-haproxy-ovnmeta-85ad33aa-8c8c-4230-8b2d-e59ab698d5ec
261a403dc824  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-neutron-metadata-agent-ovn:16.0  kolla_start           5 days ago     Up 4 minutes ago         ovn_metadata_agent
a48ce1ec8997  dir.ctlplane.localdomain:8787/rhosp-rhel8/openstack-ovn-controller:16.0              kolla_start           6 days ago     Up 4 minutes ago         ovn_controller

 

OVN은 다음과 같은 컴포넌트들로 구성이 됩니다. 어떤 컴포넌트들로 구성되어 있는지 살펴보도록 하겠습니다.

 

OVN ML2 plugin

OpenStack 특정 네트워킹 구성을 플랫폼에 독립적인 OVN 논리 네트워킹 구성으로 변환하는 플러그인으로 일반적으로 Controller 노드에서 실행됩니다.

 

OVN Northbound (NB) database (ovn-nb)

OVN ML2 플러그인에서 논리 OVN 네트워킹 구성을 저장하며, 일반적으로 컨트롤러 노드에서 실행되는 데이터베이스로 TCP 포트 6641에서 수신 대기합니다.

 

OVN Northbound service (ovn-northd)

논리적 네트워킹 구성을 OVN NB DB에서 논리적 데이터 경로 흐름으로 변환하고 이를 OVN Southbound DB에 저장하며, Controller 노드에서 실행됩니다.

 

OVN Southbound (SB) database (ovn-sb)

변환 된 논리 데이터 경로 흐름을 저장하며, 일반적으로 컨트롤러 노드에서 실행되는 데이터베이스로 TCP 포트 6642에서 수신 대기합니다.  

 

OVN controller (ovn-controller)

OVN SB DB에 연결하고 Open vSwitch 컨트롤러 역할을하여 네트워크 트래픽을 제어하고 모니터링하며, OVNController가 정의 된 모든 컴퓨트 노드에서 실행됩니다.

 

OVN metadata agent (ovn-metadata-agent)

메타 데이터 API 요청을 프록시하는데 사용되는 OVS 인터페이스, 네트워크 네임 스페이스 및 HAProxy 프로세스를 관리하기위한 haproxy 인스턴스를 생성합니다.

 

이렇게 OVN northbound database와 southbound database가 실행중인 컨트롤러 노드의 iptables를 확인해 보면 6641 포트와 6642 포트가 OVN DB 로 사용되고 있음을 확인할 수 있습니다.

[root@ctrl1 ~]# iptables -nL | grep -e 6641 -e 6642
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 3125,6641,6642 state NEW /* 121 OVN DB server ports ipv4 */

 

이렇게 해서 SDN의 종류와 SDN의 한 종류인 OVN에 대해서 알아봤습니다. 다음 포스팅에서는 OVN에서 네트워크가 어떻게 생성되는지 어떻게 해서 인스턴스까지 네트워크가 연결되는지를 그림과 함께 알아보도록 하겠습니다. 그럼, 다음 포스팅에서 다시 만나요~!!  

'OpenStack' 카테고리의 다른 글

OpenvSwitch 와 Open Virtual Network  (2) 2021.04.18
OVN Network Creating Process  (0) 2020.07.27
SDN - Software Defined Network  (0) 2020.07.17
보안 그리고 암호화 알고리즘  (3) 2019.10.04
How to operate containerized OpenStack  (1) 2019.10.02
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함