네트워크 가상화란 하드웨어 종속적이었던 네트워크를 소프트웨어 기반의 네트워크로 바꾸는 것이다.
이를 통해 네트워크 기능, 하드웨어 리소스, 소프트웨어 리소스를 하드웨어와 독립적으로 하나의 가상 네트워크로 제공할 수 있다.
앞서 공부했던 VLAN과 SDN이 네트워크 가상화의 예시다.
기존 네트워크 인프라와 비교하며 네트워크 가상화가 어떻게 이루어지는지 알아보자.

기존의 레거시 인프라는 물리적인 스위치와 디바이스가 직접적으로 연결되어 각 기기간 통신을 이루는 구조다.
각 서버는 NIC(Network Interface Card)를 통해 외부 네트워크와 연결되고, NIC는 스위치를 통해 종단 간 통신이 이루어지도록 한다.
Application을 호스팅 하기 위해선 물리적인 서버와 네트워크 장비가 필요했고, 스위치는 종단 간 효율적인 패킷 통신을 지원하기 위한 장비다.

VM(가상 머신) 환경에서는 물리적 하드웨어를 가상화해 여러 OS와 Application이 하드웨어를 공유할 수 있도록 한다.
이 작업은 하이퍼바이저(Hypervisor)가 수행한다.
가상머신과 하이퍼바이저가 무엇인지 간단하게만 말하자면
가상머신(VM)
가상머신은 물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이서 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상환경이다.
하이퍼바이저(Hypervisor)
하이퍼바이저는 프로세서, 메모리, 스토리지와 같은 컴퓨팅 리소스를 풀링하여 VM에 재할당하는 소프트웨어다.
/Red Hat
하이퍼바이저는 물리적 NIC와 같은 역할을 하는 vNIC(가상 NIC)를 각 VM에 하나 이상 생성하여 가상 네트워크의 동적 구현을 허용하도록 하고, VM간 통신이 가능하도록 한다.
또한 서버의 물리적 NIC를 하이퍼바이저의 가상화된 네트워크 인프라에 연결해 외부 네트워크와의 통신을 가능하도록 한다.
하이퍼바이저에 독립적인 vSwitch가 존재하고 각 vSwitch는 해당 하이퍼바이저에 속한 VM에만 연결된다.
이때 vSwitch란 가상 네트워크에서 VM을 위해 제공되는 스위치다.
호스트 운영체제에서 소프트웨어로 제공하기 때문에 가상 스위치라고 불리며 vNIC를 물리적 NIC에 연결하고, 로컬 통신을 위해 vNIC를 다른 서버의 vNIC에 연결한다.

앞서 살펴본 구조와는 달리 개별적으로 존재했던 가상 스위치가 하나의 분산 가상 스위치로 대체되었다.
모든 하이퍼바이저와 연결되기 때문에 VM이 다른 하이퍼바이저에 있는 VM과 직접 통신할 수 있게 된다.
즉, 서버 간 bridging이 가능하도록 한다.
이를 통해 서버간의 VM 마이그레이션 혹은 Virtual Interface의 마이그레이션을 간단하게 만들 수 있다.
Open vSwitch는 오픈 소스 Apache 2 라이선스에 따라 라이선스가 부여된 멀티레이어 소프트웨어 스위치입니다.
/ https://www.openvswitch.org
즉, 가상화 환경에서 사용되는 오픈 소스 가상 스위치로, 네트워크를 효율적으로 처리하고 관리하기 위해 설계되었다.
대부분의 코드가 플랫폼에 독립적인 C로 작성되어 다른 환경으로 쉽게 이식될 수 있으며, KVM 및 VirtualBox를 비롯한 여러 Linux 기반 가상화 기술을 지원한다.
그렇다면 왜 OVS를 사용할까?
OVS는 인스턴스 간 느린 네트워크 상태와 빠른 네트워크 상태를 모두 구성 및 마이그레이션 할 수 있다.
예를 들어 VM 종단 간 관련 구성뿐만 아니라 모든 라이브 네트워크 상태를 마이그레이션 할 수 있다.
또한 네트워크 제어 시스템이 환경 변화에 따라 대응하고 적응할 수 있도록 해준다.
네트워크 상태 데이터베이스인 OVSDB를 통해 오케스트레이션 소프트웨어가 네트워크의 다양한 측면을 감시하고 변경 시 대응할 수 있게 되는것이다.
분산 가상 스위치에는 네트워크 패킷에 태그를 추가하거나 조작하여 네트워크 내에서 논리적 컨텍스트를 유지하는 경우가 많다.
OVS는 오케스트레이션을 위해 원격 프로세서에서 엑세스할 수 있는 태깅 규칙을 지정하고 유지하게 해준다.
이러한 태깅 규칙은 최적화된 상태로 저장되므로 무거운 네트워크 디바이스와 결합할 필요도 없다.
OVS의 포워딩 경로는 기존 하드웨어 스위치 또는 NIC 등 하드웨어 칩셋에 패킷 처리를 오프로딩(외부 플랫폼으로 전송) 할 수 있다.
따라서 제어 경로를 통해 순수 소프트웨어 구현 또는 하드웨어 스위치를 모두 제어할 수 있다.
References
https://www.openvswitch.org
https://suyeon96.tistory.com/50