📦 Giải mã cấu trúc gói tin VXLAN – Làm thế nào Layer 2 có thể chạy trên Layer 3?
Một trong những điểm "ma thuật" của VXLAN là:
Nhờ vậy, hai máy chủ ở hai Data Center khác nhau vẫn có thể hoạt động như đang ở cùng một VLAN, mặc dù bên dưới chỉ là mạng IP.
Cấu trúc tổng thể (xem hình)
Hay nói cách khác:
Đây chính là cơ chế MAC-in-UDP Encapsulation.
1. Outer MAC Header
Đây là Frame Ethernet mới được tạo ra.
Nó chỉ phục vụ cho việc truyền trong mạng Underlay.
Bao gồm:
Điểm quan trọng:
Đây không phải MAC của máy nguồn và máy đích.
Mà là MAC của:
Nói cách khác:
2. Outer IP Header
Tiếp theo là IP Header.
Đây là địa chỉ IP của:
3. UDP Header
VXLAN hoạt động trên UDP.
Destination Port luôn là
4789
Đây là cổng chuẩn được IANA quy định cho VXLAN.
Vì sao VXLAN dùng UDP?
Nếu sử dụng IP Protocol riêng, các thiết bị mạng sẽ rất khó cân bằng tải.
UDP mang lại nhiều lợi ích:
Đó là lý do VXLAN sử dụng UDP thay vì tạo một giao thức IP mới.
Source Port
Source Port không cố định.
Thông thường VTEP sẽ tạo giá trị này bằng cách hash:
của gói tin gốc.
Điều này giúp:
ECMP
có nhiều giá trị hash khác nhau để phân bố lưu lượng lên nhiều đường truyền.
Nếu tất cả các gói VXLAN đều có cùng Source Port thì toàn bộ traffic có thể chỉ đi trên một đường duy nhất.
4. VXLAN Header
Đây là phần quan trọng nhất.
Kích thước:
8 Bytes
Trong đó đáng chú ý nhất là:
VNI
VNI (VXLAN Network Identifier)
Đây là trường dài 24 bit.
Nó thay thế VLAN ID truyền thống.
Trong Ethernet:
VLAN ID = 12 bit
4096 VLAN
VXLAN:
VNI = 24 bit
≈16.7 triệu Segment
Chính vì vậy hình minh họa ghi:
16M possible segments
Đây là ưu điểm lớn nhất của VXLAN.
Nó giải quyết giới hạn:
4094 VLAN
trong Data Center truyền thống.
5. Original Layer 2 Frame
Đây là Frame Ethernet ban đầu.
Nó được giữ nguyên.
Ví dụ:
Dst MAC
Src MAC
802.1Q VLAN
IP Packet
TCP
Application Data
VXLAN không sửa đổi Frame này.
Chỉ đơn giản là:
Khi đến VTEP phía bên kia:
Máy chủ hoàn toàn không biết rằng gói tin vừa đi qua mạng Layer 3.
Vì sao hình có ghi "Hash of inner L2/L3/L4 Header"?
Đây là một chi tiết rất hay.
Switch sẽ lấy thông tin của:
để tạo giá trị hash.
Ví dụ
Server1 → Server5
TCP 443
↓
Hash
↓
UDP Source Port
Nhờ đó:
đều có thể cân bằng tải rất hiệu quả.
Nếu không có cơ chế này thì toàn bộ traffic VXLAN có thể chỉ đi qua một liên kết duy nhất, gây lãng phí băng thông của các đường còn lại.
Quá trình đóng gói VXLAN
Giả sử:
VM1
↓
Leaf1 (VTEP)
↓
IP Fabric
↓
Leaf2 (VTEP)
↓
VM2
Quy trình diễn ra như sau:
Bước 1: VM1 tạo Frame Ethernet bình thường.
Bước 2: Leaf1 (VTEP) thêm:
Bước 3: Gói tin được truyền qua mạng IP (Underlay).
Bước 4: Leaf2 nhận gói VXLAN và gỡ bỏ các lớp bọc bên ngoài.
Bước 5: Frame Ethernet gốc được khôi phục và chuyển đến VM2.
Đối với hai máy ảo, toàn bộ quá trình này hoàn toàn trong suốt (transparent). Chúng chỉ thấy mình đang giao tiếp qua một mạng Ethernet thông thường, mặc dù dữ liệu thực tế đã được vận chuyển qua một hạ tầng IP Layer 3.
Điểm cần nhớ
Đây chính là cơ chế giúp VXLAN mở rộng mạng Layer 2 trên hạ tầng Layer 3, đồng thời khắc phục giới hạn 4094 VLAN của Ethernet truyền thống và trở thành nền tảng của các Data Center hiện đại như Cisco ACI, VMware NSX, EVPN-VXLAN và các hạ tầng Cloud quy mô lớn.
Một trong những điểm "ma thuật" của VXLAN là:
Đóng gói (Encapsulate) toàn bộ Frame Ethernet gốc vào bên trong một gói UDP/IP để truyền qua mạng Layer 3.
Nhờ vậy, hai máy chủ ở hai Data Center khác nhau vẫn có thể hoạt động như đang ở cùng một VLAN, mặc dù bên dưới chỉ là mạng IP.
Cấu trúc tổng thể (xem hình)
Hay nói cách khác:
Frame Ethernet gốc được "bọc" thêm một lớp Ethernet, IP và UDP mới trước khi đi qua mạng.
Đây chính là cơ chế MAC-in-UDP Encapsulation.
1. Outer MAC Header
Đây là Frame Ethernet mới được tạo ra.
Nó chỉ phục vụ cho việc truyền trong mạng Underlay.
Bao gồm:
- Destination MAC
- Source MAC
- EtherType
Điểm quan trọng:
Đây không phải MAC của máy nguồn và máy đích.
Mà là MAC của:
- Switch
- Router
- Next Hop
- Gateway trong mạng Underlay
Nói cách khác:
Outer MAC chỉ giúp gói tin đi qua mạng IP.
2. Outer IP Header
Tiếp theo là IP Header.
Đây là địa chỉ IP của:
- Source VTEP
- Destination VTEP
3. UDP Header
VXLAN hoạt động trên UDP.
Destination Port luôn là
4789
Đây là cổng chuẩn được IANA quy định cho VXLAN.
Vì sao VXLAN dùng UDP?
Nếu sử dụng IP Protocol riêng, các thiết bị mạng sẽ rất khó cân bằng tải.
UDP mang lại nhiều lợi ích:
- ECMP
- Load Balancing
- Hashing
- Hardware Offload
Đó là lý do VXLAN sử dụng UDP thay vì tạo một giao thức IP mới.
Source Port
Source Port không cố định.
Thông thường VTEP sẽ tạo giá trị này bằng cách hash:
- MAC
- IP
- TCP
- UDP
của gói tin gốc.
Điều này giúp:
ECMP
có nhiều giá trị hash khác nhau để phân bố lưu lượng lên nhiều đường truyền.
Nếu tất cả các gói VXLAN đều có cùng Source Port thì toàn bộ traffic có thể chỉ đi trên một đường duy nhất.
4. VXLAN Header
Đây là phần quan trọng nhất.
Kích thước:
8 Bytes
Trong đó đáng chú ý nhất là:
VNI
VNI (VXLAN Network Identifier)
Đây là trường dài 24 bit.
Nó thay thế VLAN ID truyền thống.
Trong Ethernet:
VLAN ID = 12 bit
4096 VLAN
VXLAN:
VNI = 24 bit
≈16.7 triệu Segment
Chính vì vậy hình minh họa ghi:
16M possible segments
Đây là ưu điểm lớn nhất của VXLAN.
Nó giải quyết giới hạn:
4094 VLAN
trong Data Center truyền thống.
5. Original Layer 2 Frame
Đây là Frame Ethernet ban đầu.
Nó được giữ nguyên.
Ví dụ:
Dst MAC
Src MAC
802.1Q VLAN
IP Packet
TCP
Application Data
VXLAN không sửa đổi Frame này.
Chỉ đơn giản là:
"Bọc" nguyên Frame vào bên trong UDP.
Khi đến VTEP phía bên kia:
- Gỡ bỏ VXLAN Header
- Gỡ UDP
- Gỡ IP
- Khôi phục nguyên Frame Ethernet
Máy chủ hoàn toàn không biết rằng gói tin vừa đi qua mạng Layer 3.
Vì sao hình có ghi "Hash of inner L2/L3/L4 Header"?
Đây là một chi tiết rất hay.
Switch sẽ lấy thông tin của:
- Inner MAC
- Inner IP
- Inner TCP/UDP
để tạo giá trị hash.
Ví dụ
Server1 → Server5
TCP 443
↓
Hash
↓
UDP Source Port
Nhờ đó:
- ECMP
- Spine-Leaf
- Fabric
đều có thể cân bằng tải rất hiệu quả.
Nếu không có cơ chế này thì toàn bộ traffic VXLAN có thể chỉ đi qua một liên kết duy nhất, gây lãng phí băng thông của các đường còn lại.
Quá trình đóng gói VXLAN
Giả sử:
VM1
↓
Leaf1 (VTEP)
↓
IP Fabric
↓
Leaf2 (VTEP)
↓
VM2
Quy trình diễn ra như sau:
Bước 1: VM1 tạo Frame Ethernet bình thường.
Bước 2: Leaf1 (VTEP) thêm:
- Outer Ethernet Header
- Outer IP Header
- UDP Header (Destination Port 4789)
- VXLAN Header chứa VNI
Bước 3: Gói tin được truyền qua mạng IP (Underlay).
Bước 4: Leaf2 nhận gói VXLAN và gỡ bỏ các lớp bọc bên ngoài.
Bước 5: Frame Ethernet gốc được khôi phục và chuyển đến VM2.
Đối với hai máy ảo, toàn bộ quá trình này hoàn toàn trong suốt (transparent). Chúng chỉ thấy mình đang giao tiếp qua một mạng Ethernet thông thường, mặc dù dữ liệu thực tế đã được vận chuyển qua một hạ tầng IP Layer 3.
Điểm cần nhớ
- Outer MAC: Dùng để chuyển tiếp trong mạng Underlay.
- Outer IP: Chứa địa chỉ IP của hai VTEP.
- UDP Port 4789: Cổng chuẩn của VXLAN.
- VXLAN Header: Chứa VNI dài 24 bit, hỗ trợ khoảng 16,7 triệu mạng logic.
- Original Layer 2 Frame: Được giữ nguyên và chỉ được đóng gói, không bị thay đổi.
Đây chính là cơ chế giúp VXLAN mở rộng mạng Layer 2 trên hạ tầng Layer 3, đồng thời khắc phục giới hạn 4094 VLAN của Ethernet truyền thống và trở thành nền tảng của các Data Center hiện đại như Cisco ACI, VMware NSX, EVPN-VXLAN và các hạ tầng Cloud quy mô lớn.