본문 바로가기

네트워크/Network 가상화

VXLAN - Part 1

Last Update : 2014.04.28


 

새롭게 지난 주말부터 정리를 시작한 VXLAN입니다.

수정이 필요한 부분은 말씀해주시면, 확인 후 수정하도록 하겠습니다.


 

 

VXLAN

  〮 물리적인 환경의 제약이 없이 Layer 2 Segment를 확장한다.

  〮 VM 이동 후에도 기존 IP 주소를 지속적으로 사용.

  〮 표준화된 방법으로 Overlay를 구성할 수 있게하여,  다양한 Vendor들의 Ecosystem을 구축할 수 있음.

    ※ Cisco,Vmware, F5, Broadcom, Brocade, Arista etc

  〮 기존 Layer 2가 12bit의 VLAN ID로 4094 VLAN을 지원, VXLAN은 24bit의 VNID로 1600만개의 VXLAN을 지원한다.

  〮 기존 Layer2 VLAN은 STP 사용하여 Loop방지를 하기 때문에 Blocking 등으로 인해 미사용하는 구간이 발생한다.

    반면에 VXLAN은 Layer 3 기반의 Routing과 ECMP, Link Aggregation 프로토콜로 모든 경로를 다 사용할 수 있다.

 〮  MAC in IP/UDP 방식으로 Encapsulation. (캡슐화 역할을 vSwitch에서 제공)

      - Encapsulation을 vSwitch(Software VTEP)에서 뿐만 아니라, Physical Switch(Hardware VTEP)에서도 제공할 수도 있으며,

        이 둘 간에는 상호 연동/호환이 가능하다.

 〮 Multicast 기반으로 Tunneling을 하기 때문에 기존 Network망에서의 별도의 구성이 필요 없다.

 〮 50Byte의 Overhead 발생. 향후 160Byte까지 확장 고려로, MTU를 1660Byte로 고려해야 하며 Jumbo Frame 설정 권고

 〮 Multicast(IGMP /PIM)이 지원이 되야하고, Layer 3 Routing Protocol이 동작하고 있는 Network Infrastructure여야 한다

      - Encapsulation을 Physical Switch에서 제공해도 되지만, 이 경우에는 VXLAN 구간의 모든 Physical 구간에 VXLAN을

       지원하는 Physical Switch가 필요로 하게 되어, 해당 장비의 종속성을 띄게 된다.

 

 

VXLAN 사용 이유

 〮 가상화 환경에서는 VM별로 vNIC을 사용하기 때문에 다수의 MAC Address가 생성되게 된고, 이로 인해 단일 Layer2

   Domain에서 Table 관리의 한계가 올 수 있음.

     → VXLAN으로 모든 MAC Address를 Switch에서 가지지 않고, vSwitch에서만 소유하도록 함.

    ※ Core Network에서의 Mac Address 확장성 이슈 해결

 〮 VXLAN은 End-Point Device에서만 제공 가능하여도 가능하기 때문에 보다 Vendor에 유연성을 제공한다.

 

 

 

VXLAN 구성 요소

  〮 VXLAN Segment

     - L2 / L3 환경에서의 VM간의 L2 환경을 구현한 Network 범위

     - VXLAN Layer 2 overlay network over which VMs communicate

  〮 VXLAN Overlay Network

     - VXLAN segment를 L2/L3 네트워크에서 구현

     - another term for VXLAN Segment

  〮 VNI (VXLAN Network Identifier)

     - VXLAN Segment ID

  〮 VXLAN Gateway

     - VXLAN과 Non-VXLAN간의 트래픽 전송

     - an entity which forwards traffic between VXLAN and non-VXLAN environments

  〮 VTEP (VXLAN Tunnel End Point)

     - VXLAN의 터널 지원하는 End Device.  vSwitch.

     - Local Host와 연결된 Interface와 VXLAN의 Encapsulation/De-capsulation을 역할을 Core와 연결된 IP Interface가 있다.

     - VXLAN Tunnel End Point - an entity which originates and/or terminates VXLAN tunnels

 

 

VXLAN Header

 

 


 

 Flag (8bits)

 〮 유효한 VXLAN Network ID(VNI)가 설정된 경우 1로 설정되며, 나머지 7bit는 Reserved Filed로 0으로 설정하여 전송하며

   수신 시에는 해당 bit는 무시한다.  [ RRRR1RRR ]

 

VNI (VXLAN Segmemnt Identifier) (24bits)

 〮 VXLAN Overlay Network에 대한 식별자이며, VM들은 동일한 VXLAN Overlay에 있어야 통신이 가능하다.

 〮 VM은 서로 다른 VXLAN Overlay Networks 간에는 통신할 수 없다.

 〮 1600만개의 Segmaent가 동작하도록 허용.

 

Reserved (24bits & 8bits)

 〮 Reserved Filed로 0으로 설정하여 전송하며 수신 시에는 해당 bit는 무시한다.

 

 

 

Source Port (16bits)

 〮 UDP Source Port는 내부 Packet의 Filed로 Hash하여 계산하는 것을 권고하는 데, 예를 들어 내부 Packet의 Header를

   Hash하는 것이다. 이것은 VXLAN overlay를 통한 VM간의 ECMP/Load balancing을 할 수 있게 한다.

 〮 UDP Source Port는 Dynamic/Private Port의 범위인 49152-65535[RFC 6335]의 값이 나오도록 하는 것이 좋다

 

VXLAN Port (16bits)

〮 IANA는 VXLAN UDP Port로 4789를 지정하였으며, 이는 Destination UDP Port로 사용된다. (Vendor에 따라 다를 수 있다)

 

UDP Length(16bits)

 

CheckSum (16bits)

 〮 UDP Checksum field는 0으로 전송되어야 하며, 0으로 전송된 경우에 Decapsulation된다.

   만약 0이 아닌 Checksum 값이 확인이 되는 경우에는 Drop되게 된다.

 

 

 

IP Header (72bits)

 〮 Version / IHL / Type of Service / Total Length / Identification / Flags / Fragment Offset / Time to Live

 

Protocol (8bits)

 〮 0x11(17) = UDP packet

 

Header Checksum (16bits)

 

Source IP  (32bits)

 〮 VTEP의 Source IP로 설정

 

Destination IP (32bits)

 〮 Destination의 VTEP IP Address로 설정.

 〮 unknown unicast 혹은 Broadcast/Multicast Address의 경우에는 Multicast Group을 사용하여 전송한다.

 

 

Destination MAC Address (48bits)

 〮 동일한 Subnet인 경우에는 Destination VTEP의 MAC Address로 설정.

 〮 다른 Subnet인 경우에는 Router와 같은 Next Hop Device의 MAC Address로 설정

 

Source MAC Address (48bits)

 〮 Source VTEP MAC address

 

VLAN (16bits)

 〮 VXLAN 구현을 위한 옵션이며, Default로는 802.1Q Ethertype 0x8100과 연관된 VLAN ID Tag로 설정된다.

 

Ethertype (16bits)

 〮 0x0800