728x90
반응형
MacVLan 개념


  • MacVLan은 브릿지가 없다. 대신 서브 인터페이스라는 개념이 등장하여 사용
  • 호스트 머신에 물리적인 NIC인 eth0은 당연히 존재하며 eth0에서 여러 개의 하위 인터페이스를 만듬으로써 동시에 여러개의 mac 주소를 가질 수 있도록 구축한다. 그렇게 되면 생성된 하위 인터페이스들에 여러개의 컨테이너들이 연결되면서 VLAN을 구성할 수 있다.
  • 하나의 네트워크 인터페이스 카드를 가상화함으로써 여러 개의 MAC주소를 생성하는 것




MacVLan 구조


  • macvlan은 부모 인터페이스(parent)와 서브 인터페이스(slave)로 나눈다. 
  • 부모 인터페이스는 가상화될 주체, 즉 실제 물리적인 NIC인 eth0이 되고 거기서 생성된 서브 인터페이스들은 mac0, mac1, mac2가 된다.
  • macvlan으로 생성된 인터페이스를 지칭할 때는 mac0@eth0과 같이 표현 (mac0은 서브 인터페이스, eth0이 부모 인터페이스)



MacVLan 구동 방식


  • 호스트(eth0)와는 통신이 안되지만 다른 서브 인터페이스간 통신은 되는 방식
  • 호스트와 통신이 안되는 것은 원래 macvlan에서 안되는 것이고 다른 서브 인터페이스간의 통신이 되는 것은 다른 방식(bridge 등)들과 차이를 가진다
  • macvlan 방식은 부모 인터페이스에 간단한 브릿지를 둬서 다른 서브 인터페이스로 향하는 트래픽을 밖으로 내보내지 않고 바로 전달하는 방식 (내부 컨테이너끼리 통신을 하는 경우)
  • 모든 서브 인터페이스의 맥 주소를 알고 있는 상태이므로 브릿지에서 Mac Learning(맥 추가) 작업도 필요없고 루핑을 방지하기 위한 STP알고리즘도 필요 없다고 함




MacVLan 생성


- 사용법

# docker network create -d macvlan --subnet=서브넷 --gateway=게이트웨이 -o parent=부모 인터페이스 macvlan 별칭


- 사용예제

# docker network create -d macvlan --subnet=10.0.10.0/24 or 255.255.248.0 --gateway=10.0.10.1 -o parent=eth0 my_macvlan



MacVLan을 컨테이너에서 사용할 경우


  • docker0 브릿지는 존재하지만 사용되지 않는다.
  • 각 컨테이너들의 네트워크 인터페이스는 서브 인터페이스가 되고 호스트의 인터페이스가 부모 인터페이스가 된다.
  • 아래의 그림은 위쪽의 설명한 그림과 조금 다른데 이런 경우는 호스트 인터페이스를 직접 부모 인터페이스로 삼은 경우




MacVLan의 장단점


- 장점

  1. 높은 대역폭
  2. 낮은 CPU 점유율


- 단점

  1. 부모 인터페이스가 죽으면 서브 인터페이스도 모두 죽음
  2. 호스트와 통신 불가능
  3. 복잡한 네트워크 구성 불가능


  • 번외로 기본 도커 브릿지인 docker0과 macvlan의 속도 테스트 결과 docker0은 초당 22GB, macvlan은 초당 27GB가 나왔다고는 한다. 각 테스트 환경마다 다르니 참고


반응형

'Docker' 카테고리의 다른 글

Docker 기본 구성  (2) 2018.11.14
Docker 사용중인 OS를 docker image로 만들기  (0) 2018.08.24
Docker Network - Bridge  (0) 2018.08.24
Docker Nvidia Docker 구성 (Centos 7)  (2) 2018.08.24

+ Recent posts