Byeo

The Design and Implementation of Open vSwitch 1 본문

프로그래밍 (Programming)/논문 (Paper)

The Design and Implementation of Open vSwitch 1

BKlee 2023. 9. 4. 21:39
반응형

 해당 포스트는 NSDI '15 (Networked System Design and Implementation) https://www.usenix.org/system/files/conference/nsdi15/nsdi15-paper-pfaff.pdf 를 번역해서 정리한 포스트입니다.

0. 초록

 해당 논문은 하이퍼바이저 플랫폼을 위한 multi-layer 가상 스위치인 open source Open vSwitch의 디자인과 구현을 설명한다. Open vSwitch는 가상 환경 네트워킹을 위한 de novo (새로운) 디자인이며, 이를 통해 기존의 전통 스위칭 구조에서 벗어나는 결과를 가져왔다. 본문에서는 Open vSwitch가 하이퍼바이저의 자원을 보존하고 작업을 최적화를 위해 적용한 발전된 flow classification과 caching 기법을 설명한다. 그리고 과거 7년간 Open vSwitch를 사용하고 발전시키면서 얻은 지표들을 이용해 Open vSwitch의 성능을 평가한다.

 

1. 서론

 가상화는 과거 15년간 (2015년 기준 논문) 컴퓨팅을 하는 방법을 뒤흔들어 놓았다. 예를 들어, 빠른 서비스 제공을 위함, 수많은 클라우드들의 확산, disaster recovery 기간 동안 가용성을 향상시키는 목적 등을 위해서 많은 데이터센터들은 가상화 시스템으로 완전 대체하였다. 가상화가 많은 종류의 작업들에 적용될 수 있지만, 가상 머신의 수는 서버의 개수를 이미 초과했고, 여전히 증가하고 있다. 

 

 서버 가상화의 확산은 데이터센터 네트워킹에 근본적인 변화를 가져왔다. 대부분의 네트워크 인터페이스가 물리에서 벗어난 가상의 새로운 네트워크 접근 계층이 탄생했고, 이에 따라 first hop 스위치는 점차 하이퍼바이저 안에 위치하게 되었다. 초기의 하이퍼바이저는 주로 기초 네트워크의 연결 제공에 관련이 있었다. 실제로 물리 L2 네트워크를 확장하는 방식으로 ToR switch를 모방하여 하이퍼바이저 안에 넣은 것이다. 하지만 가상화 시스템이 점차 커져감에 따라 물리 네트워크를 모방하는 것은 한계가 분명했다: 새로운 작업에 대해 물리 네트워크를 준비하고 재구성하는 것이 서비스 제공을 늦췄고, 물리 L2와 작업이 엮여있는 것은 mobility와 scalability를 심각하게 악화시켰기 때문이다. 

 

 이러한 문제를 타파하고자 네트워크 가상화가 등장했다 (e.g., VLAN). 네트워크 가상화에서는 가상 스위치가 VM에게 서비스를 제공하기 위한 핵심 요소가 되었다. 이는 데이터센터 네트워크의 물리 네트워크를 그대로 두고 하이퍼바이저간 IP tunnel을 통해 통신하게 한다. 이러한 접근은 가상 네트워크 (Overlay network)가 실제 물리 네트워크 (Underlay network)와 독립되도록 만든다. 그리고 일반 CPU와 같은 general-purpose 프로세서를 사용할 수 있기에 가상 스위치는 VM과 해당 장치, 그리고 관리자에게 논리적인 네트워크 추상화를 제공할 수 있다. (네트워크를 설정하는데 별다른 물리적인 설정 없이 논리적인 설정만으로도 제어가 가능하다는 의미로 파악된다.)

 

 Virtual networking의 복잡성 증가와 네트워크 가상화의 시급함, 기존 virtual switch가 갖고 있던 한계는 OpenvSwitch가 빠르게 유명해지게 만드는 역할을 했다. 오늘날 OpenvSwitch는 Linux에서 대부분의 하이퍼바이저 (Xen, KVM)과 도커와 호환된다.

 이 논문에서는 OpenvSwitch가 갖고 있는 성능과 관련된 부분, progrmmable한 디자인, 그리고 구현을 설명한다. 특성화를 통해 빠른 성능을 보여주던 기존의 hardware 혹은 software 기반의 switch와는 다르게, OpenvSwitch는 유연하고 넓은 범용성을 위해 디자인되었다. 이는 별도의 특성화 없이 빠른 성능을 달성할 수 있으며, 다양한 플랫폼에 적용이 가능하다. 그래서 많은 사람들이 의문점을 가질, "범용성을 유지하면서 어떻게 좋은 성능을 달성할 수 있었는가?" 에 대하여 논문에서 답할 예정이다.

 

2. 디자인 제약 및 근거

 Virtual switch의 운영 환경은 전통적인 네트워크 환경과 굉장히 다르다. 그 다름으로부터 오는 디자인 챌린지와 한계, 그리고 여기서 오는 OpenvSwitch만의 특별한 디자인 근거를 아래에서 간단히 소개한다. 

 

Resource Sharing

 전통적인 네트워크 장비들의 성능 목표는 worst-case의 조건에서도 회선 속도 (line-rate)를 달성하기 위해 하드웨어 자원을 아예 전부 사용하는 방식을 추구했었다. 하지만 virtual switch에서 자원은 굉장히 중요하다. Switch가 worst-case에서도 회선 속도를 달성할 수 있는지 여부는 다음의 문제이며, 가장 중요한 것은 유저의 작업을 처리하는 하이퍼바이저가 잘 돌 수 있도록 자원이 가능한 최대가 되어야 한다는 점이다. 이는 기존 물리 네트워크 환경과 다른, 가상 환경이 worst-case보다 일반적인 환경에서 최적화되어야 하는 이유이다. 물론 이 말이 worst-case를 고려하지 않아도 된다는 의미는 아니다. Port scan, peer-to-peer rendezvous servers, network monitoring 등의 실제 상황에서 worst-case가 발생할 수 있고, 적절하게 처리되어야 할 것이다.

 

 이러한 배경은 CPU 사용량을 줄이고 forwarding rate를 늘리기 위해 "flow caching과 다양한 형태의 caching을 매우 공격적으로 사용하도록" 디자인 철학을 이끌었다.

 

Placement

 Virtual switch를 network의 끝단에 놓는 것 (end-host에 놓는 것으로 이해)은 단순화와 복잡함을 동시에 발생시킨다. VIrutal Switch가 하이퍼바이저 및 VM과 운명을 공유하는 것은 기존의 많은 네트워크 문제들을 제거하지만 scaling을 어렵게 한다. 하나의 virtual switch가 많은 하이퍼바이저들과 IP 터널을 맺고, 그 속의 virtual switch들과 peer를 맺는 것은 매우 일상이다. 그리고 virtual switch는 같은 노드의 VM이 boot, migrate, shutdown 등의 이벤트에 따라 forwarding state 수정 메시지를 계속 받을 것이다. 따라서 수천개의 하이퍼바이저가 있는 상황에서는 수많은 네트워크 상태 업데이트가 발생할 것이고, 이는 "Open vSwitch의 분류 알고리즘을 O(1)에 수정이 가능하도록" 디자인되었다.

 

SDN 등의 사용 사례와 생태계

 Open vSwitch는 기존의 다른 virtual switch와는 다른 디자인을 갖도록 만든 3가지 독특한 원인이 있다:

 1) Open vSwitch는 태생이 OpenFlow switch이다. 이 둘을 완전히 하나로 묶은 것은 아니고, 기존의 openFlow를 사용할 수 있도록 수직적으로 통합되었다. 이는 각자의 data path model을 갖고 있는 다른 virtual switch와 대조된다. 기존의 virtual switch들은 ASIC과 유사하게 처리 과정이 고정되어 있고, 설정이 가능하도록 노출시킨 범위 내에서만 조작이 가능하다.

 

 2) OpenFlow의 유연함은 SDN 초창기에 필수였다. 하지만 점차 네트워크 가상화와 같이 packet 처리 과정이 복잡해지고 packet 분류를 위한 작업의 부담이 기존의 virtual switch에서 본 것 보다 상당히 커졌다. Open vSwitch는 하이퍼바이저 자원 사용을 최소화하기 위하여 flow caching을 적극적으로 사용했다.

 

 3) 다른 주요 virtual switch들은 소스코드가 공개되어 있지 않고 하나의 환경에서 구동되는 것과는 다르게, open vSwitch는 오픈소스이고 다양한 플랫폼을 지원한다. Open vSwitch의 환경은 OS와 하이퍼바이저를 결정하는 user가 고를 수 있다. 이러한 점은 Open vSwitch의 디자인이 상당히 modular하고 이식성이 좋도록 만들었다.

 

 

반응형
Comments