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