Network

Network Overlay와 VXLAN

이쿠우우 2020. 11. 21. 14:25
반응형

 

 

 

Network Overlay

 

기존의 Traditional Deployment 시대에서 

점차 Virtualized, Container Deployment 시대로 발전하면서 Cloud 시대가 왔음.

이에 따라 Host의 수가 몇배로 많아졌고 할당되고 관리되어야하는 IP와 MAC도 증가함.

즉 Deployment 기술의 발전과 동시에 네트워크 기술도 같이 발전함.

시대가 발전하면서 나온 네트워크 기술 중 대표적인것이 Network Overlay이고

Network Overlay 기술 중 가장 주목받은 기술이 바로 VXLAN 임.

 

 

Network Overlay란?

 

관리하는 Subnet이 많아지지고 연결되어 있는 host의 수가 증가면

포워딩, 스위칭, 라우팅 등등 네트워크를 구성하기가 굉장히 복잡함.

이런 상황에서 나오는 단점을 해결하기 위해 

물리 네트워크 위에 성립 되는 가상의 컴퓨터 네트워크 구축한 것이 Network Overlay.

실제 노드 간의 네트워크 위에 별도로 Flat한 네트워크를 구성해서

물리적 네트워크망은 고려하지 않고 host와 host간의 연결만 생각해서 구현한

가상의 Network 망을 구축하는 것.

 

쉽게 비유를 하자면

서울에서 부산까지 가는데

차로 가게 되면

기존의 도로망 체제를 유지하면서

신호등도 거치고 여러 톨게이트를 거쳐야해서 복잡한데

비행기를 타면

김포공항에서 부산행 비행기 티켓을 끊고 한방에 가는 것과 같은 원리

 

Network Overlay 문제점.

 

Network Overlay 는 MAC Over IP/UDP 기술을 기반으로 만들어졌는데

이에 따라 기존의 L2 Switch의 VLAN방식을 사용해서 구성하면 

Cloud 환경에서 문제가 발생할 수 있음.

 

[첫번째. MAC Address 문제]

MAC address를 ARP Table에 저장하고 이 정보로 host 대 host로 통신을 하는데

Cloud Server를 도입하게 되면 host 또는 Container의 수가 몇배로 증가하게 되면서

기존의 VLAN에서 수용할 수 있는 Mac의 한계를 초과하게 됨.

그래서 기존의 VLAN과 같은 네트워크 기술을 사용해서 Network Overlay를 구축하게 된다면

Virtualized, Container, Cloud 환경에서 Mac address가 부족한 문제가 발생할 수 있음.

 

[두번째. VLAN 생성 문제]

VLAN는 12bits의 VLAN ID를 제공해서

최대 4096개의 VLAN을 생성할 수 있는데 예약된 VLAN ID를 제외하면

실제적으로 4000개 정도를 생성할 수 있음

하지만 Cloud 환경에서는 4000개 보다 많은 Subnet을 사용해서 

VLAN을 생성할 수 있는 수를 초과하게 되는 상황이 발생할 수 있음.

 

[두번째. VLAN Trunk 문제]

VLAN 방식을 사용하게 되면 각 VLAN별 VLAN Trunk를 구성해줘야하는데

Cloud나 Kubernetes와 같은 Container Orchestration을 사용하게되면

Subnet도 지속적으로 변경, 재성성 될 수 있기 때문에

이러한 L2 Switch 적인 VLAN Trunk 기술로는 

유연하게 변경되는 Cloud 환경에 대처할 수 없음.

 

 


 

 

VXLAN

 

VXLAN이란?

 

VLAN에 X (eXtensible)을 더한 것으로 L2 Network 의 확장성을 의미함

VXLAN Header + UDP + IP 기반으로 전송.

VXLAN Header는 24bit VXLAN Network ID로 구성됨.

학습하지 못한 목적지 VM MAC은 VXLAN기술 기반으로 IP Mulicast를 이용하여

목적지 VM MAC 주소가 있는 스위치에 전송.

(Broadcast, Multicast Unknown destination)

VM MAC은 VXLAN기반의 Encapsulation된 패킷을 받아서 목적지 VM ARP Table을 학습하는 방식.

학습한 목적지 VM MAC은 P2P Tunnel로 직접 해당 스위치와 통신.

 

Network Overlay 문제점을 VXLAN으로 해결

 

[첫번째. MAC Address 문제 해결]

모든 MAC address를 L2 Switch의 ARP Table에만 저장하지 않고

가상화 vSwitch에서만 MAC Address를 저장해서 해당 Table를 정보를 확인한 후 

패킷을 Forwarding해서 문제를 해결

 

[두번째. VLAN 생성 문제 해결]

기존의 VLAN는 12Bits의 VLAN ID를 제공해서 4000개 정도의 VLAN을 생성할 수 있었다면

VXLAN은 24Bits의 VLAN ID를 사용할 수 있어서 약 16,000,000 개를 생성 수 있음.

 

[두번째. VLAN Trunk 문제 해결]

VXLAN은 Multicast 기반으로 알아서 Tree를 구성하기 때문에 Trunk가 필요 없음.

 

 

 

VXLAN의 네트워크 구조

 

네트워크 구조 예시환경 : VM 안에 생성된 Container 환경

 

ens192    : VM에 할당된 네트워크 인터페이스

VTEP       : VXLAN  Tunnel End Point

vSwitch    : Virtual Switch

veth0       : Virtual Ethernet

eth0        : Container에 linux network namespace에 할당된 네트워크 인터페이스

 

veth 란?

Virtual Ethernet.

linux namespace를 할당 받으면

network namespace도 생성되는데

network namespace에는 오직 veth만 할당 받을 수 있음

veth는 항상 쌍으로 생성이 되는데

한쪽에서 입력된 데이터는 다른쪽에서 수신할 수 있음

해당 Container가 할당받은 veth 경우는

한쪽은 물리적인 네트워크 인터페이스와 연결되어있고

다른 한쪽은 linux network namespace 와 연결되어

Container와 host간에 통신이 가능해짐

 

 

vSwitch란?

vSwitch ( Virtual Switch )는 기존의 Switch 역할을 그대로 수행하지만

말그대로 가상의 Switch로 

실제 물리적으로 존재하는 네트워크 인터페이스가 아닌 가상의 인터페이스임.

VXLAN을 통해 알아오는 모든 MAC 정보는 

이 vSwitch 의 ARP Table에 저장됨.

vSwitch가 있기 때문에 MAC주소로 host : host 통신이 가능해지는 것.

 

 

 

 

 

VTEP 이란?

VXLAN Tunnel End Point

VXLAN 의 핵심적인 역할을 수행함.

패킷을 UDP를 사용하여 실제 네트워크를 통해 전송하기 위해 

MAC in IP/UDP의 L3패킷으로 encapsulated (캡슐화)하는 작업을 진행하고

반대로 받은 encapsulated (캡슐화)된 패킷을 Termination 하는 작업을 수행함.

 

이름 그대로  Encapsulated과 Termination의 End Point역할을 수행함

 

 

 

 

 


 

 

이러한  VXLAN은 

Kubernetes의 Flannel CNI 의 기반이 되는 기술로 사용됨.

이어서 다음글인

Flannel CNI Networking 분석에서

Flannel 을 분석하며 자세히 설명함.

 

 

 

 

 

 

 

 

 


 

참고

 

[ VXLAN ]

https://youngmind.tistory.com/entry/Network-Overlay-VXLAN-%EB%B6%84%EC%84%9D-1

https://blog.naver.com/PostView.nhn?blogId=lunaeye&logNo=221160549927&parentCategoryNo=&categoryNo=1&viewDate=&isShowPopularPosts=false&from=postView

 

 

 

 

 

 

 

반응형