이 방법들은 근본적으로 다른 일을하고 있습니다. 이유를 이해하려면 계층화 된 네트워킹 모델을 이해해야합니다. 여기서는 레이어 1, 2 및 3이 중요합니다.
- 레이어 1은 물리적 레이어입니다. 사용할 수있는 케이블, 해당 케이블의 전압 및 전류 패턴이 1과 0을 나타내는 것, 케이블의 각 끝에있는 장치가 작동하는 비트 전송률 등을 협상하는 방법 등을 지정합니다.
- 레이어 2는 링크 레이어입니다. 이것은 케이블의 각 끝에서 서로 대화하는 언어를 지정합니다. 이 계층의 이더넷 장치에는 프레임 및 MAC 주소와 같은 것이 있습니다.
- 계층 3은 네트워크 계층입니다. 이는 계층 2에서 직접 연결할 수없는 장치가 다른 장치에 직접 계층 2 링크를 사용하여 세 번째 장치에 도달하는 방법을 지정합니다.이 계층의 장치에는 IP 주소와 라우팅 테이블이 있습니다.
MACVLAN / MACVTAP
MACVLAN은 고유 한 MAC 주소를 사용하여 가상 계층 2 또는 링크 계층 장치를 작성하여 계층 1 또는 물리 계층을 기존 장치와 공유합니다. 가장 분명하게 이해할 수있는 경우는 이더넷 장치를 네트워크에 연결하고 해당 이더넷 장치를 기반으로 MACVLAN 장치를 만드는 경우입니다. 이제 서로 다른 MAC 주소를 가진 두 개의 이더넷 "장치"가 있지만 둘 다 동일한 케이블을 통해 프레임을 전송합니다. MACVTAP에 대해 조금 더 이야기하겠습니다.
MACVLAN 인터페이스는 기존 이더넷 인터페이스와 여러 가지 방식으로 상호 작용할 수 있습니다. 특히 다른 인터페이스의 주소 인 인터페이스 중 하나에 프레임이 나타나는 경우 :
- 에서 개인 모드, 프레임은 폐기된다 두 인터페이스가 서로 통신 할 수 없으며 외부 장치와 만 통신 할 수 없습니다.
- 에서는 VEPA 모드, 상기 프레임은 다른 프레임과 같은 물리 계층을 통해 전송된다. 장치를 스위치에 꽂아 프레임이 도착한 포트와 동일한 포트로 다시 전송해야한다고 판단 할 수있을 정도로 영리한 스위치에 연결 한 경우 장치를 전송 한 동일한 물리적 계층에서 수신 한 다음 계층 2가 수신합니다. MAC을 사용하여 원하는 네트워크 인터페이스로 보냅니다.
- 에서는 다리 가 다른 경우를위한 프레임이 하나 개의 장치에 표시 모드, 이는 볼 체크하고, 만약 그렇다면, 그것은 1 층을 거치지 않고가 전송된다.
- 몇 가지 더 모호한 모드도 있습니다.
MACVLAN 인터페이스에는 중요한 제한 사항이 있습니다. 학습을 처리 할 수 없습니다. 따라서 MACVLAN 인터페이스를 두 번째 물리적 장치에 연결할 수 없으며 첫 번째 물리적 장치를 통해 두 번째 물리적 장치에 도달 할 수있을 것으로 기대합니다. 이것은 원래 이더넷 인터페이스에서는 작동하지만 MACVLAN 인터페이스에는 연결되어 있지 않습니다.
TUN / TAP
TAP 인터페이스는 새로운 가상 계층 2 장치이지만 계층 1이 연결되어 있지 않습니다. 대신, 프로그램은 물리 계층을 나타내는 파일 디스크립터를 얻을 수 있습니다. 그런 다음 원시 이더넷 프레임 데이터를 해당 파일 디스크립터에 쓸 수 있으며 커널은 실제 물리적 인터페이스에서 수신하는 다른 이더넷 패킷처럼 처리합니다.
TAP 인터페이스의 가장 큰 장점은 물리 계층이 사용자 모드에 있다는 것입니다. 적절한 권한을 가진 소프트웨어는 이더넷 프레임을 원하는 방식으로 생성하여 커널이 실제 물리적 인터페이스와 동일하게 취급하는 방식으로 밀어 넣을 수 있습니다. 이것은 VPN 및 터널링과 같은 것들에 매우 유용합니다. 사용자 공간에서 원하는 종류의 터널링 소프트웨어를 작성할 수 있으며 프레임을 네트워킹 스택으로 가져 오기 위해 커널 공간에 개입 할 필요가 없습니다. TAP 장치를 만들고 파일 설명자에 프레임을 쓰면됩니다.
TUN 장치는 TAP 장치와 유사하지만 레이어 2 대신 레이어 3에서 작동하며 사용자 모드 소프트웨어는 원시 이더넷 프레임 대신 원시 IP 패킷을 파일 디스크립터에 써야합니다.
MACVTAP 장치로 돌아 가면 MACVLAN과 TAP 인터페이스가 혼합되어 있습니다. TAP 인터페이스와 마찬가지로 사용자 모드 프로그램은 파일 디스크립터를 가져 와서 원시 이더넷 프레임을 쓸 수 있습니다. MACVLAN 인터페이스와 마찬가지로 이러한 프레임은 실제 이더넷 장치의 물리적 계층을 통해 전송됩니다. 이를 통해 TAP 장치를 사용하여 MACVLAN 장치를 대신 사용하도록 작성된 소프트웨어를 쉽게 조정할 수 있습니다.
VNet
이것은 개념적으로 TUN / TAP 네트워킹과 유사하지만보다 발전된 제어 평면 (이를 사용하는 사용자 모드 소프트웨어는 인터페이스를보다 유연하게 구성 할 수 있음)과보다 최적화 된 데이터 평면 (가상 네트워크 장치를 통해 데이터를 더 많이 이동할 수 있음)을 가지고 있습니다 효율적으로).
이들 모두 유사한 기능을 수행하지만 기능이 약간 다릅니다. 모두 VM을 이더넷 네트워크에 연결하는 데 사용할 수 있습니다.
- 가상화 제품은 게스트에서 이더넷 프레임을 가져와 TAP 장치의 파일 설명자에 쓸 수 있습니다. 해당 TAP 장치에는 호스트가 고유 한 IP 주소를 할당하거나 이더넷 인터페이스와 함께 브리지에 종속되어 호스트의 IP 주소를 공유하거나 NAT를 사용하여 트래픽을 전달하도록 iptables를 구성 할 수 있습니다.
- 가상화 제품은 게스트의 이더넷 프레임을 MACVTAP 장치의 파일 디스크립터에 쓸 수 있습니다. 그런 다음 이더넷 장치의 물리 계층에서 직접 전송되어 VM에 "실제"이더넷 장치를 효과적으로 제공합니다 (브리지와 같은 다른 유형의 네트워크 인터페이스에 대해 MACVLAN / MAVTAP 장치를 생성 할 수 있음).
- 가상화 제품은 게스트의 virtio 드라이버를 호스트의 virtio 드라이버에 연결하여 매우 효율적인 네트워킹을 수행 할 수 있습니다.