네트워킹 가상화
가상 머신들은 외부 세상과 통신하기 위해서는 반드시 물리적인 네트워크 인터페이스 카드(NIC)를 이용해야 한다. 호스트 시스템에 장착된 NIC에게 패킷을 전달하여 외부 세상과 통신해야 하지만 각각의 가상 머신들이 전부 자신만의 물리적인 NIC를 필요로 한다면 호스트 시스템에 장착해야 하는 NIC 개수는 가상 머신의 개수만큼 필요하다는 이야기이다. 이를테면 30개의 가상 머신이 작동되고 있는 x86 서버 시스템에 물리적인 NIC가 30개 장착이 되어야 한다는 것이다.
그러나 이것은 가상화 사상에 맞지도 않을뿐더러 현실성도 없는 이야기이다. 네트워킹 가상화는 바로 이러한 문제를 해결하기 위한 것이다. 즉, 모든 가상 머신들은 자신만의 가상 네트워크 어댑터를 가지고 호스트 시스템의 물리적인 NIC를 공유하여 사용하게 된다. 이러한 네트워킹 가상화의 간단한 구성은 다음을 통해 이해할 수 있다.
이 그림에서 가장 큰 핵심 요소는 바로 가상 스위치(Virtual Switch)라 할 수 있다. 게스트 운영체제의 애플리케이션에서 패킷을 보내고자 한다면 그러한 요청은 기본적으로 게스트 운영체제 안의 적절한 네트워크 스택(stack)에 의해 네트워크 어댑터 드라이버로 전달되지만, 운영체제 안에 설치된 가상 네트워크 어댑터 드라이버는 네트워크 패킷을 물리적인 NIC에 바로 전달하는 것이 아니라 VMkernel이 생성하여 운영하고 있는 가상 스위치에게 전달해 주고 가상 스위치는 전달받은 패킷을 적절한 주소로 다시 보내준다. 이때 가상 스위치는 소프트웨어적으로만 작동되기 때문에 가상 머신과의 물리적 연결이 필요 없으며, 사실상 일반적인 물리적인 스위치 구조에서 발생할 수 있는 케이블 미디어에서 발생하는 충돌 문제(Collision)나 오버헤드(Overhead) 자체가 존재하지 않는다는 장점이 있다. 가상 네트워킹 환경을 구성하는 각 요소들을 살펴보면 다음과 같다.
• 가상 NIC - 각각의 가상 머신들은 가상 스위치와 통신을 하기 위해 가상의 네트워크 인터페이스 카드를 갖추게 되는데, 이러한 가상 NIC는 각각 고유한 자신만의 MAC 주소를 갖게 되며 가상 스위치와 Auto Negotiation으로 연결을 하게 된다. 각각의 가상 머신에게 할당되는 가상 MAC 주소는 실제로 가상 머신이 생성되고 거기에 가상 NIC를 부여할 때마다 생성된다. 이때 그 MAC 주소는 아래의 범위에서 랜덤 하게 생성되어 부여된다.
00:05:59
00:0C:29
00:1C:14
00:50:56
위의 OUI(Organizationally Unique Identifier) 주소는 엄연히 VMware에서 IEEE에 정식으로 등록을 하였으며, 이는 IEEE 홈페이지에서 확인할 수 있다. 최종적으로는 이러한 OUI 주소값과 함께 ESX 서버가 설치된 시스템의 SMBIOS UUID 값 그리고 해당 가상 머신의 이름을 이용한 해시 값을 조합하여 가상 MAC 주소가 생성된다. 가상 NIC의 드라이버는 특별히 설정하지 않는 한 거의 모든 게스트 운영체제가 자체적으로 가지고 있는 AMD PCNET 드라이버는 최대 10 Mbps의 속도만을 제공할 뿐이다. 그렇기 때문에 항상 가상 머신을 생성한 이후에는 특별한 이유가 없는 한 반드시 VMware tools를 설치하여야 한다.
• 가상 스위치 - ESXi 서버에서는 모든 가상 머신들이 물리적인 네트워크 인터페이스 카드를 통해 외부와 통신하기 위해 가상 스위치를 만들게 된다. 이 가상 스위치는 엄연히 MAC 주소 값을 가지고 프레임을 전달해 주는 OSI Layer 2 기반의 스위치로서 VLAN 기능을 지원해 주고, 몇 가지 보안과 관련한 기능까지 갖추고 있어 기본적인 물리적 스위치와 매우 유사하다. 이것은 100% CPU 파워로만 작동되는 소프트웨어 스위치이기에 물리적인 구성 환경에서 발생할 수 있는 케이블 연결에 따른 오버헤드나 충돌 등의 문제가 전혀 발생하지 않는 장점이 존재하지만, 그렇다고 해서 하드웨어 기반의 기존 L2 스위치와 완전히 똑같은 기능을 갖춘 일반 스위치로 동일시 여겨서는 곤란하다.
• 포트 그룹(Port Group) - 포트 그룹은 가상 스위치에서 관리하는 일종의 논리적인 그룹 단위이며, 실제로 가상 머신이 가상 스위치에 연결하고자 할 경우에는 가상 스위치에 생성된 포트 그룹을 지정해주어야 한다. 포트 그룹은 크게 가상 머신용 포트 그룹, VMkernel용 포트 그룹의 종류로 나누어진다. 하나의 가상 스위치에는 복수의 포트 그룹이 존재할 수 있다. 예를 들어, 가상 머신이 가상 스위치를 통해 외부와 통신하기 위해서는 가상 머신용 포트 그룹과 연결되어야 한다. 마찬가지로, VMkernel용 포트 그룹은 VMotion이나 NFS 마운트, iSCSI 등의 연결과 같이 VMkernel에서 외부 네트워크 연결이 필요할 경우 생성해야 할 포트 그룹이다. 관리자들은 가상 스위치 전체를 하나의 포트 그룹 전용으로 설정할 수도 있으며 하나의 가상 스위치에 여러 형태의 포트 그룹을 혼용하여 사용할 수도 있다. 그러나 물리적인 NIC는 반드시 단 하나의 가상스위치에만 연결할 수 있으며 두 개 이상의 가상 스위치에 교집합처럼 연결될 수 없다. 따라서 물리적인 NIC에 여유가 없는 경우라면 소수의 가상 스위치에 포트 그룹을 세분화하여 사용할 수도 있지만, 그 반대로 물리적인 NIC가 여유가 있다면 포트 그룹별로 가상 스위치를 따로 생성하여 각각 물리적인 NIC를 할당하여 사용할 수 있다.
• 물리적 NIC - 호스트에 장착된 물리적 NIC는 가상 스위치와 맞물려 일종의 업링크 포트처럼 인식된다. 가상 스위치는 가상 머신용 포트 그룹에 연결된 각각의 가상 머신들의 네트워크 프레임을 물리적 NIC가 연결된 업링크 포트로 전달하여 외부 세상과 연결시켜 준다. 물리적 NIC는 VMkernel에서 PCI 버스 장치 순서대로 vmnicX라는 장치명으로 인식하는데, Linux로 말하자면 eth0, eth1과 같은 식이다.
• 물리적 네트워크 - 당연히 가상 머신이 최종적으로 외부 세계와 통신하기 위해서는 물리적인 스위치 또는 라우터가 존재하여야 하지만, 이러한 물리적 네트워크 환경과 ESXi 서버를 연결하면서 가장 크게 고려해야 하는 사항들은 바로 네트워크 이중화 구성과 대역폭 확장, 그리고 VLAN 구성과 관련한 부분들이다.
'⫸VMware' 카테고리의 다른 글
VMware 네트워킹 - 표준 가상 스위치 (0) | 2022.10.05 |
---|---|
VMware 리소스 가상화 - 스토리지 가상화 (0) | 2022.10.05 |
VMware 리소스 가상화 - 메모리 가상화 구현 기술 (0) | 2022.10.04 |
VMware 리소스 가상화 - 메모리 가상화 (0) | 2022.10.03 |
VMware 리소스 가상화 - CPU 가상화 (0) | 2022.10.03 |