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의 장단점
- 장점
- 높은 대역폭
- 낮은 CPU 점유율
- 단점
- 부모 인터페이스가 죽으면 서브 인터페이스도 모두 죽음
- 호스트와 통신 불가능
- 복잡한 네트워크 구성 불가능
- 번외로 기본 도커 브릿지인 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 |