티스토리 뷰

VXLAN 은 vSwitch 의 역활이 굉장이 중요하다. 

실제 MAC in IP/UDP 의 첨병 역할을 vSwitch가 제공해주기 때문이다. 물론 상단의 물리적 스위치가 이러한 역활을 해주어도 되겠지만, 이러한 경우 물리적 스위치가 VXLAN 을 지원해야 하기 때문에 물리적 종속성으로 인해 인캡슐레이션 지점과 터미네이션 지점 모두 이러한 기술을 지원해야 하는 스위치가 존재해야한다.


네트워크의 물리적인 제약을 뛰어넘기 위해 제공되는 기술적 목표를 무색하게 하는 방식이다. 그러므로 vSwitch 의 역활을 이러한 공동의 이상적 목표를 실현하기 위해 매우 중요한 역활을 한다.




네트워크 Side, server / 가상화 side 에서 바라본 VXLAN 의 가장 특이한 Point 는 바로 VTEP 이라는 용어 이다. 


VTEP = VXLAN Tunnel End Point 라는 의미 그대로 VXLAN Tunnel 종단 역활을 수행한다. 그러니깐 인캡슐레이션과 터미네이션 의 end point 역활을 수행한다.

 end point 란 데이타 센터의 브로드캐스트 도메인에 속해있는 서버를 뜻한다. 자세한 것은 구글링을 통해 알아보자.


과거의 IPSec 또는 GRE 의 Tunnel 인터페이스 정도로 이해하면 네트워크 Side 에서는 이해가 쉬우리라고 필자는 생각한다.

server side 에서는 VMware ESX 에서 vmknic을 mgmt, vmotion, storage 용도 이외에 VXLAN 을 위한 vmknic 을 설정하는 방식이라고 볼 수 있으며, Xen 에서는 Dom 0 에 추가적인 인터페이스가 생성된다고 보면되고, HyperV에서는 Parents OS 에 VXLAN 인터페이스가 생성된다고 보면된다.

물론 현재 마이크로소프트의 하이퍼V 는 NV-GRE 를 지지하지만 새로운 하이퍼V 3.0 에서는 기본적으로 Nexus 1000v 가 설치가 가능하기 때문에 구현하기에는 그리 어렵지 않고, 실제 시스코는 2013년 초 에 MS 하이퍼V 플랫폼에서도 지원 예정이다.


자, 그럼 Network side, server side 의 모든 사람들이 이해했으니까....


VTEP 의 역활에 집중하도록 하자.





디폴트 적으로 VXLAN 에서는 멀티캐스트의 역활이 엄청나게 중요하다.

왜냐, 기존의 고정된 IP network 망에서는 기존의 유니캐스트 망을 사실상 네트워크의 L2/L3 규칙들이 모두 점하고 있으므로, 이러한 기술적 제작을 뛰어넘기 위해 멀티캐스트 망을 차용해서 사용한다.

즉, 각각의 가상서버들이 목적지를 알지 못하는 경우 모르는 유니캐스트/브로트캐스트 메세지 등을 전송하게 되는데, 이러한 메세지들을 모두 멀티캐스트 망을 사용하는 방식이다. 

따라서 VTEP 들 간에 IP any source 멀티캐스트 그룹 의 버스를 통해 새로운 망을 생성한다.

물론 일반적인 네트워크 망에서는 특별한 구성 없이도 접속이 가능하다. 왜냐하면 대부분의 L2 스위치 는 IGPM Snooping 이 활성화 되어 있기 때문이다.

당연히 L3 를 넘나드는 구성이 필요하다면, IP 멀티캐스트가 활성화 되어 있어야한다.




그럼 위에서 설명한 내용을 다음 이미지를 통해서 정리해보자.



여기서 꼭 머리속에 남아야할 것들이 4가지 있다.

첫번째, VXLAN 에서의 핵심은 VTEP 이다.

두번째, VXLAN은 현재 Nexus 1000v VEM 에서 동작한다.

세번째, VXLAN은 vmknic 과 같은 관리 포인트, 즉 VMware 의 kernel 사이드, Xen 의 Dom0 관리 Side, HyperV의 Parents side 에 구성된다.

네번째, VTEP는 Traffic의 인캡슐레이션, 터미네이션 지점이다. 

여기서 인캡슐레이션 되어 터널링으로 넘어가는 방법은 GRE 나 IPSec 같은 방식이 아닌 멀티캐스트 기반이다.



이제 부터 시작이다.




위의 이미지에서 청녹색이 보이는가 


청녹색의 Original L2 frame 만 원본 프레임이고 나머지는 VXLAN 을 위한 헤더 이다. 


진한 보라색이 바로 가장 중요한 VXLAN 에 대한 모든 정보가 담겨 있다.


출발지에서 VXLAN Header 를 생성하여 출발시킨다. 8바이트 사이즈 이다.


VXLAN 헤더 에는 VNI 라는 24비트 VLAN 을 생성할 수 있다.

일반적인 VLAN ID 가 16비트의 기반이라면, VXLAN의 VNI 에서 표현되는 VLAN 은 24비트의 기반으로, 16,000,000 개의 VLAN 을 생성 할 수 있다.


정말 엄청난 규모라고 생각한다. 


가장 중요한 VXLAN 헤더 이외에는 전통적인 방식의 UDP 헤더,  IP 헤더, MAC 헤더 등이 생성된다.






원본 Frame 에 비해 50바이트의 헤더가 더 생성이 되므로 당연히 오버헤드가 발생하며, 이것은 fragment 가 발생하거나 또는 권고로 vSwitch 등에서 Jumbo Frame 설정등으로 구성하면 된다.

이러한 VXLAN은 멀티캐스트 기반으로 터널링을 하기 때문에 기존 네트워크 망에서 별도의 구성이 필요없다.


그렇다면 실제 동작방식의 플로우는 어떻게 동작할까?


의외로 간단하다. 그리고 이러한 동작방식을 이해한다면 정말 이상적이다 라는 생각이 머리 속에 떠오를 것이다.

어느 분이 생각을 하셨는지 정말로 똑똑한 것 같다는 생각이 든다.





1. mac : 111 인 VM 은 ip 2.2 VM 으로 가고 싶지만 arp table 이 없다. 따라서 arp request 를 날린다. (ARP broadcast)

2. arp request는 vSwitch(이하 N1KV) 에 mac table 을 뒤져보지만 없다. 따라서 VTEP 멀티캐스트 버스를 통해 모두에게 arp request 를 날린다.

3. 다른 호스트의 VM 이 응답한다. 일단 vSwitch 에 요청이 온 IP 1.1, mac 111 VM의 table 을 등록한다.

4. 그리고 유니캐스트로 해당 VM 에 화답한다.

5. IP 1.1 mac 111 VM 의 vSwitch 를 화답해 오는 프레임의 VM2 MAC 222 IP 2.2 를 vSwitch에 등록한다.

6. 그 후로 그 VM 둘은 유니캐스트로 뜨거운 밤을 보내게 된다.


정말 심플하다.


멀티캐스트 인에이블 네트워크 라는 터널링을 통해 예전과 똑같은 L2동작방식을 취한다.

마치 뒤에서 콩까는 사람같고, 복잡한 도로를 포기하고, 지름길로 쌩 가버리는 느낌이다.




자 다음에는 VXLAN 구성시 고려사항에 대해서 알아보도록 하자.

'self training > nw' 카테고리의 다른 글

NAT  (0) 2022.12.23
What_is_wireshark_filtering_eq  (0) 2018.09.21
VXLAN 에 대해서 -개념, 왜?  (0) 2016.05.27
QoS 정리  (0) 2016.05.24
패킷트레이서 개념 및 UI  (0) 2016.05.09
댓글