클라우드 전문정보
제목 | [2부] 오픈스택으로 바라보는 클라우드 네트워크 기술 - 오픈스택 네트워크의 발전 | ||
---|---|---|---|
등록일 | 2023-11-30 | 조회수 | 1435 |

오픈인프라 한국 커뮤니티 / 김관영 부회장
그로메트릭 / 김관영 대표
오픈스택은 가상 머신을 관리하는 Nova와 오브젝트 스토리지를 관리하는 Swift라는 2개 컴포넌트를 시작으로, 2010년 7월부터 현재까지 지속적인 발전을 거듭하고 있다. 클라우드 컴퓨팅의 진화는 네트워크 인프라 기술에도 많은 변화와 발전을 가져왔다. 이번 글에서는 오픈스택 내에서 네트워크 기능이 어떻게 발전하여 효율적인 네트워크 관리와 서비스 품질 향상을 위해 진화했는지를 살펴보고자 한다.
[참고] 본 기고는 2015년 1월, 오픈스택 한국 커뮤니티 밋업에서 최영락 3기 대표께서 공유하였던 “OpenStack 네트워크와 SDN”에 설명한 내용을 기반으로 현재(2023년 11월)를 기준으로 하여 최신 내용을 업데이트하였습니다.
1. 오픈스택에서의 네트워크 관리와 초기 Nova-network
클라우드에서 네트워크 리소스를 관리하는 관점에서, 오픈스택은 IP 주소 할당, 방화벽 설정 등 가상 머신에 대한 기본 네트워크 관리를 고려하고 있다. IP 주소는 Fixed와 Floating IP로 구분*되며, 방화벽 기능은 네트워크 보안 그룹으로 추상화되어 관리된다.
초기에 오픈스택은 클라우드 및 네트워크에 대한 요구 사항을 오픈 소스 철학에 따라 신중하게 고려가 이루어졌으며, 이 부분이 설계에 반영되어 있다고 할 수 있겠다.
- Fixed IP 및 Floating IP: 오픈스택 환경 내에서 가상 머신에 고정된 IP 주소를 할당하는 Fixed IP와 외부 네트워크와 통신이 가능한 대역의 IP 주소를 동적으로 할당 또는 해제하는 Floating IP라는 개념을 통해 IP 주소를 관리
- 네트워크 보안 그룹: 네트워크 프로토콜 (TCP, UDP) 및 포트 번호에 따라 가상 머신 간 트래픽을 제어하고 보안을 강화
오픈스택이 처음 등장했을 때, S3와 Nova로 구성된 초기 컴포넌트에서 네트워크 관리는 Nova-network를 통해 제공되었다. Nova-network에서는 다음과 같은 3가지 모드로 네트워크를 지원한다.
- Flat 모드 (FlatManager): DHCP를 포함한 클라우드 인프라 레벨에서 지원하는 네트워크 기능을 그대로 사용하도록 설정하는 가장 단순한 네트워크 구성 모드
- Flat DHCP 모드 (FlatDHCPManager): 리눅스 운영체제에서 지원하는 DHCP 서버 (Dnsmasq) 기능을 활용하여 IP 주소에 대한 동적 관리를 오픈스택에서 담당하고, 다른 네트워크 기능에 대해서는 클라우드 인프라에서 지원하는 네트워크 기능을 활용
- VLAN DHCP 모드 (VLANManager): L2 스위치에서 지원하는 1Q VLAN 태깅을 오픈스택에서 직접 활용하여 VLAN으로 구분된 여러 개의 가상 네트워크 기능을 직접적으로 활용하며, 다른 네트워크에서 VLAN으로 구성한 네트워크에 접근하기 위해 cloudpipe라는 VPN 가상 인스턴스를 이용

[그림1. Nova-network에서 지원하는 네트워크 연동 모드]
그림1에서는 리눅스 운영체제에서 지원하는 브릿지(Bridge)로 위 3가지 네트워크 모드를 구성한 다이어그램을 보여준다. br0 및 br1으로 불리는 구성 요소는 브릿지를 통해 생성이 이루어진 가상 네트워크 인터페이스이며, vif0 및 vif1은 가상 머신 인스턴스에서 사용하는 가상 네트워크 인터페이스를 나타낸다.
클라우드가 점차 발전함에 따라 네트워크 장비를 통해 최적화된 네트워크 기능을 사용하기도 하며, 리눅스에서 지원하는 여러 소프트웨어 네트워크 기능을 활용하여 클라우드에서 가상 머신과 가상 네트워크 리소스를 서브넷 및 NAT, iptables와 같은 포트 포워딩 기능과 맞물려 관리하는 방향 모두 발전이 이루어졌다.
이에 따라 네트워크 복잡성과 관리 효율성 및 비용이라는 관점에서 trade-off를 잘 판단하는 것이 중요해졌다.
2. Nova-network 의 한계와 Neutron의 등장
점차 클라우드에서 관리가 이루어지는 네트워크 규모가 크고 복잡해지면서 기존 Nova-network에서 지원하는 3가지 모드만을 통해 클라우드 네트워크를 관리하기에는 한계가 있었다.
이러한 한계점을 해결하기 위해 당시 다음과 같은 새로운 리눅스 및 네트워크 기술이 등장하였다.
- 네트워크를 포함한 리눅스 네임스페이스 (Namespace) 기능: 리눅스 운영체제 핵심인 커널이 발전하면서 등장한 네임스페이그 기술은 특정 프로세스에 대해 시스템 리소스를 논리적으로 격리(isolation)하는 기능으로, 이 기능은 Docker와 같은 컨테이너 기술이 발전하는데 자원을 제어하는 cgroup과 함께 핵심 기능에 해당한다. 이 중, 네트워크 네임스페이스 기능을 통해 클라우드 리소스를 관리하는 리눅스 운영체제에서 프로세스 별로 네트워크 기능을 구분하여 관리하는 것이 가능해졌으며, 오픈스택에서도 해당 기능을 활용하고자 하는 움직임이 증가하였다.
- 소프트웨어 정의 네트워킹 (SDN) 및 소프트웨어 스위치 기능 (OpenvSwitch): SDN (Software Defined Networking)은 기존 하드웨어 스위치에서 직접 관리하던 원본 IP 주소 및 포트 번호, 도착지 IP 주소 및 포트 번호, 네트워크 프로토콜의 5개를 단위로하는 네트워크 플로우를 소프트웨어로 직접 정의하여 관리하는 개념을 의미한다. 해당 관리를 표준화하기 위한 방향으로 OpenFlow라는 표준이 등장하기도 하였는데, 이 때 등장한 OpenvSwitch는 지금은 VMware에 인수된 Nicira라는 회사에서 SDN을 지원하기 위한 상용 네트워크 스위치 기능을 오픈 소스로 공개한 소프트웨어이다.
2012년 9월 발표된 오픈스택 Folsom 릴리스에서는 기존 Nova-network을 대체하는 독립적인 네트워크 구성 요소를 포함한다.
이 구성 요소는 Quantum이라는 이름으로 발표되었는데, 상표권에 대한 이슈로, 이후 Neutron이라는 이름을 사용하였고, 오픈스택 네트워크 관리를 담당하는 핵심 구성 요소로서 오늘날과 같은 발전을 거듭하게 된다.
Neutron 구성 요소가 기존 Nova-network와 차별화된 또 다른 대표적인 특징으로는 상용 네트워크 벤더 하드웨어에서 지원하는 다양한 네트워크 가상화 기술을 지원한다는 데에 있다.
Nova-network에서 지원하는 VLAN의 경우, 이론상 VLAN 태깅을 위해 사용하는 태그 번호를 12비트만을 사용하여 4096개만을 지원한다.
해당 숫자가 많다고 생각할 수도 있겠으나, 점차 복잡해지는 클라우드 네트워크 인프라를 다루기 위해서는 다른 네트워크 가상화 기술을 오픈스택에서 수용하는 것이 필요하였다.
Neutron에서는 GRE(Generic Routing Encapsulation) 및 VxLAN(Virtual Extensible LAN) 등과 같은 여러 네트워크 가상화 기술을 지원할 뿐만 아니라, 상용 네트워크 벤더 하드웨어와의 통합을 위한 여러 구성 또한 지원하였다.
이를 통해 상용 네트워크 하드웨어와 연동하여 네트워크 이중화를 안정적으로 구성하는 등의 이점을 가질 수 있었다. 그림2는 Python으로 작성된 오픈 소스 SDN 컨트롤러인 Ryu를 오픈스택과 연동한 설치 구성도를 보여준다.

[그림2. 오픈스택 Neutron + Ryu SDN 컨트롤러 구성도 (출처: [3])]
3. Neutron ML2 등장
2013년 10월 출시된 Havana 릴리스에서는 Neutron 구성 요소에서 ML2 (Modular Layer 2)를 지원한다고 발표하였다.
이 기능은 오픈스택과 연동이 이루어지는 여러 네트워크 구성 요소들을 플러그인 형태로 각 기능을 모듈화하여 지원하도록 하였다. 구체적으로는 다음 2가지 드라이버 종류로 나누어 모듈화를 지원한다.
- Type 드라이버: 네트워크 프로토콜에 따른 지원을 유형화하여 드라이버 형태로 지원한다. Local, Flat, VLAN, GRE 터널링, VXLAN 네트워크 유형 등이 있다.
- Mechanism 드라이버: 네트워크 구현이 의존적인 부분을 드라이버 단위로 관리한다. Linux Bridgge 및 OpenVSwith와 같은 소프트웨어 구현 뿐만 아니라 다양한 하드웨어 벤더와의 호환성을 위해 드라이버 형태로 지원한다.

[그림3. Neutron ML2 다이어그램 (출처: [3]]
이를 통해 클라우드를 구축하는 입장에서는 가상 머신에서 지원하는 네트워크 연결 방식을 선택할 수 있을 뿐만 아니라, 네트워크 복잡성과 관리 효율성 및 비용 관점에서 오픈스택에서 지원하는 어떤 타입과 메커니즘 드라이버를 선택할 수 있게 되었다.
이는 오픈스택이 네트워크에 대한 유연성과 확장성을 크게 확장시켰으며, 시장에서 요구하는 다양한 네트워크 요구 사항을 오픈스택이 수용함에 따라 오픈스택을 기반으로 프라이빗 클라우드 뿐만 아니라 퍼블릭 클라우드를 직접 구축하는 사례 또한 국내외 증가하였다.
4. DVR(Distributed Virtual Router)과 추가 네트워크 프로젝트의 발전
오픈스택은 시장에서 요구되는 여러 네트워크 기술에 대해 공개적인 방식을 통해 자유로운 논의를 충분히 거쳐 오늘날과 같이 계속 발전을 이루었다.
여러 주목할만한 발전 중에 본 글에서는 DVR을 대표적으로 언급하고자 한다. 2014년 10월 발표된 Juno 릴리스에 포함된 분산 가상 라우터에 해당하는 DVR 기능은 네트워크 트래픽을 분산시켜 가상 머신 간의 직접적인 통신을 가능케 하는 기술이다.
DVR 등장 이전에는 L3에 해당하는 IP 라우팅 기능이 네트워크 노드에서 직접 담당하여, 해당 노드에 네트워크 트래픽 부하가 집중되는 어려움이 있었다.
DVR 기능은 이를 가상 머신이 동작하는 Compute node에서 직접 트래픽을 처리할 수 있도록 지원함으로써 네트워크의 효율성이 향상되고 가상 머신 간 높은 성능을 유지하면서 간편한 네트워크 관리를 가능하게 하였다.

[그림4. Neutron DVR 기능 다이어그램]
뿐만 아니라 Neutron 이외에 독립적인 네트워크 기능을 지원하는 여러 추가 컴포넌트가 등장하여 발전하였다. 현재 오픈스택에서 로드 밸런서에 해당하는 네트워크 기능은 Octavia라는 컴포넌트에서 지원하며, 도메인 주소를 변환하는 DNS 기능에 대해서는 Designate라는 독립적인 컴포넌트에서 지원하고 있다.
이와 같이 Nova-network를 통해 등장한 오픈스택 네트워크 관리 기술은 Neutron 컴포넌트의 등장과 ML2, DVR과 같이 시장에서 요구하는 다양한 네트워크 요구 사항을 지원하는 방향으로 계속 발전이 이루어졌으며, Octivia(LBaaS) 및 Designate(DNSaaS) 등과 같은 다양한 독립적인 컴포넌트를 통해 네트워크 기능을 지원하고 있다.
이러한 발전은 오픈스택을 클라우드 환경에서 높은 성능과 유언성을 갖춘 대표 오픈 소스 플랫폼으로 자기매김하는데 큰 역할을 하였다.
다음 글에서는 클라우드 솔루션 관점에서 오픈스택 네트워크를 살펴보고자 한다.
* 본 글에서는 Fixed와 Floating IP 주소를 한글 번역하지 않고 영문 그대로 표기하였는데, 한글로 번역할 경우 일반적으로 컴퓨터 네트워크에서 언급하는 DHCP 여부에 따른 고정 IP (Static IP)와 유동 IP (Dynamic IP) 개념과 혼선이 있을 수 있기 때문이다. Fixed IP는 오픈스택에서 가상 머신 생성부터 종료 시점까지 계속 고정적으로 유지가 되는 IP 주소이며, Floating IP는 가상 머신에 외부 네트워크와의 연동 등을 위해 필요할 때 할당(attach) 또는 해제(detach)를 하는 방식으로 관리하는 IP 주소임을 참고하자.
참 고 문 헌
- https://lwn.net/Articles/580893/
- https://wiki.openstack.org/wiki/Network/neutron-renaming
- http://www.slideshare.net/janghoonsim/openstack-networking-31379537
저작권 정책
K-ICT 클라우드혁신센터의 저작물인 『오픈스택으로 바라보는 클라우드 네트워크 기술』은 K-ICT 클라우드혁신센터에서 오픈인프라 한국 커뮤니티 김관영 부회장에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권정책에 따라 이용할 수 있습니다. 다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.