Tìm hiểu về VXLAN.
1. Tổng quan về VXLAN.
1.1. Vấn đề với VLAN.
Trong những nơi quản lý một hệ thống mạng, máy chủ lớn như datacenter, việc sử dụng VLAN sẽ có nhiều hạn chế:
- VLAN chỉ hỗ trợ 12 bit cho VLAN_ID nên nó bị giới hạn số lượng là 4096 VLAN_ID –> Không đủ VLAN cho datacenter để quản lý một số lượng lớn máy chủ chia sẻ cùng kiến trúc mạng L2/L3.
- Số lượng máy chủ vật lý, máy ảo lớn –> bảng địa chỉ MAC trên các switch rất lớn và có thể quá tải.
- Sử dụng STP để chống loop trong mạng –> dẫn đến chặn hầu hết các đường dự phòng, hạn chế tăng băng thông.
- Các VLAN cũng bị hạn chế về khoảng cách và triển khai
Dẫn đến sự ra đời của VXLAN.
1.2. VXLAN là gì?
- VXLAN (Virtual eXtensible LANs): Là công nghệ cung cấp dịch vụ để kết nối Ethernet tới các thiết bị cuối như VLAN nhưng có nhiều tính năng mở rộng hơn. So với VLAN, VXLAN được mở rộng hơn về quy mô và khả năng triển khai của chúng.
- Trong VLAN(802.1q) chỉ dành ra 12 bit để xác định vlan_ID. Trong khi đó VXLAN sử dụng 24 bit để xác định VLAN_ID, tức khoảng 16 triệu VLAN_ID. Điều này cung cấp đủ không gian để triển khai các quy mô mạng trong vài năm tới.
- VXLAN là một sự triển khai Layer 2 phủ lên một mạng Layer 3 đã tồi tại. Nó sử dụng đóng gói MAC-in-UDP để cung cấp phương tiện mở rộng segment Layer 2 thông qua hệ thống mạng.
1.3. Các khái niệm trong VXLAN?
1.3.1. VNI.
- VXLAN là một mạng overlay layer 2 trên mạng lớp 3. Mỗi lớp mạng như vậy được gọi là một VXLAN segment. Các máy trong cùng một VXLAN segment, mới có thể giao tiếp với nhau. Các VXLAN segment được xác định bằng một thông số gồm 24bit được gọi là VXLAN Network Identifier (VNI) cho phép tối đa khoảng 16 triệu VXLAN segment tồn tại trong cùng một domain.
- VNI xác định phạm vi của inner MAC frame sinh ra bởi máy ảo VM. Do đó, bạn có thể overlapping địa chỉ MAC thông qua segment như không bị lẫn lộn các lưu lượng bởi chúng đã bị cô lập bởi VNI khác nhau. VNI nằm trong header được đóng gói với inner MAC sinh ra bởi VM.
1.3.2. Encapsulation và VTEP
- VXLAN là công nghệ overlay qua lớp mạng. Overlay network có thể được định nghĩa như một mạng logic mà được tạo trên một nền tảng mạng vật lý có sẵn. VXLAN tạo ra một mạng logic layer 2 trên lớp mạng IP. Dưới đây là 2 khái niệm trong mạng overlay:
- Encapsulate: Là công nghệ giúp đóng gói tin thông thường với một header mới. Ví dụ trong công nghệ overlay IPSec VPN, đóng gói gói tin IP thông thường vào một IP header khác.
- VTEP: Virtual Tunnel End Point thiết lập liên lạc giữa hai đầu tunnel.
- Khi bạn áp dụng vào với công nghệ overlay trong VXLAN, bạn sẽ thấy VXLAN sẽ đóng gói một frame MAC thông thường vào một UDP header. Và tất cả các host tham gia vào VXLAN thì hoạt động như một tunnel end points. Chúng gọi là Virtual Tunnel Endpoints (VTEPs)
- Các VTEP là các node mà cung cấp các chức năng Encalsulation và De-encapsulation. Chúng biết rõ được làm thế nào mà VTEPs encap và de-encap lưu lượng từ bất kì máy ảo kết nối với một mạng VXLAN dựa trên mạng vật lý layer 2. VXLAN học tất cả các địa chỉ MAC của máy ảo và việc kết nối nó tới VTEP IP thì được thực hiện thông qua sự hỗ trợ của mạng vật lý. Một trong những giao thức được sử dụng trong mạng vật lý là IP multicast. VXLAN sử dụng giao thức của IP multicast để cư trú trong bảng forwarding trong VTEP.
Do sự đóng gói (encapsulation) này, VXLAN có thể được gọi là thiết lập đường hầm (tunneling) để kéo dài mạng lớp 2 thông qua lớp 3. Điểm cuối các tunnel này - (VXLAN Tunnel End Point hoặc VTEP) nằm trong hypervisor trên server máy chủ của các VM. Do đó, VNI và VXLAN liên quan tới các khái niệm đóng gói header tunnel được thực hiện bởi VTEP - và trong suốt với VM.
Lưu ý: VTEP có thể nằm trên switch hoặc server vật lý và có thể được thực hiện trên phần mềm hoặc phần cứng.
1.3.3. VXLAN frame format.
Frame Ethernet thông thường bao gồm địa chỉ MAC nguồn và MAC đích, Ethernet type và thêm phần VLAN ID(nếu có). Các frame được đóng gói trong VXLAN sex có thêm các header sau:
- VXLAN header: 8 byte bao gồm các trưVXLAN header: 8 byte bao gồm các trường quan trọng sau:
- Flags: có 8 bit trong đó, bit thứ 5 được đặt là 1 để chỉ ra rằng VNI có giá trị, các bit còn lại được thiết lập là 0.
- VNI: gồm 24 bit, dùng để cung cấp định danh cho VXLAN segment. Các VM trong các VXLAN khác nhau sẽ không thể giao tiếp với nhau. 24 bit có cung cấp địa chỉ cho 16 triệu VXLAN segment.
- Outer UDP Header: port nguồn của Outer UDP được gán tự động và sinh ra bởi VTEP và port đích thông thường được sử dụng là port 4789 hay được sử dụng (có thể chọn port khác).
-
Outer IP Header: Cung cấp địa chỉ IP nguồn của VTEP nguồn kết nối với VM bên trong. Địa chỉ IP outer đích là địa chỉ IP của VTEP nhận frame.
- Outer Ethernet Header: cung cấp địa chỉ MAC nguồn của VTEP có khung frame ban đầu. Địa chỉ MAC đích là địa chỉ của hop tiếp theo được định tuyến bởi VTEP. Outer Ethernet header có thể được gắn tag theo chuẩn 802.1q trong quá trình vận chuyển trong mạng.
2. Cách hoạt động của VXLAN.
VXLAN hoạt động dựa trên việc gửi các frame thông qua giao thức IP Mutilcast. Trong quá trình cấu hình VXLAN, cần cấp phát địa chỉ IP multicast để gán với VXLAN sẽ tạo. Mỗi địa chỉ IP multicast sẽ đại diện cho một VXLAN. Sau đây sẽ tìm hiểu hoạt động chi tiết cách frame đi qua VTEP và đi qua mạng vật lý trong VXLAN triển khai trên một mạng logic với mô hình như sau:
2.1. VM gửi request tham gia vào group multicast
Giả sử một mạng logic trên 4 host như hình. Topo mạng vật lý cung cấp một VLAN 2000 để vận chuyển các lưu lượng VXLAN. Trong trường hợp này, chỉ IGMP snooping và IGMP querier được cấu hình trên mạng vật lý. Một vài bước sẽ được thực hiện trước khi các thiết bị trên mạng vật lý có thể xử lý các gói tin multicast.
-
IGMP Packet flows:
-
1) Máy ảo VM (MAC1) trên Host 1 được kết nối tới một mạng logical layer 2 mà có VXLAN 5001 ở đó.
-
2) VTEP trên Host 1 gửi bản tin IGMP để join vào mạng và join vào nhóm multicast 239.1.1.100 để kết nối tới VXLAN 5001.
-
3) Tương tự, máy ảo VM (MAC2) trên Host 4 được kết nối tới mạng mà có VXLAN 5001.
-
4) VTEP trên Host 4 gửi bản tin IGMP join vào mạng và join vào nhóm multicast 239.1.1.100 để kết nối tới VXLAN 5001.
Host 2 và Host 3 VTEP không join nhóm multicast bởi vì chúng không có máy ảo chạy trên nó và cần kết nối tới VXLAN 5001. Chỉ VTEP nào cần tham gia vào nhóm multicast mới gửi request join vào nhóm
-
-
Multicast Packet flow:
-
1) Máy ảo VM (MAC1) trên Host 1 sinh ra một frame broadcast.
-
2) VTEP trên Host 1 đóng gói frame broadcast này vào một UDP header với IP đích là địa chỉ IP multicast 239.1.1.100
-
3) Mạng vật lý sẽ chuyển các gói tin này tới Host 4 VTEP, vì nó đã join vào nhóm multicast 239.1.1.100. Host 2 và 3 VTEP sẽ không nhận được frame broadcast này.
-
4) VTEP trên Host 4 đầu tiên đối chiếu header được đóng gói, nếu 24 bit VNI trùng với ID của VXLAN. Nó sẽ decapsulated lớp gói được VTEP host 1 đóng vào và chuyển tới máy ảo VM đích (MAC2).
-
2.2. VTEP học và tạo bảng forwarding
Ban đầu, mỗi VTEP sau khi đã join vào nhóm IP multicast đều có một bảng forwarding table như sau:
Các bước sau sẽ được thực hiện để VTEP học và ghi vào bảng forwarding table:
-
Đầu tiên, một bản tin ARP request được gửi từ VM MAC1 để tìm địa chỉ MAC của máy ảo đích nó cần gửi tin đến VM MAC2 trên Host 2. ARP request là bản tin broadcast.
Host 2 VTEP – Forwarding table entry
-
1) VM trên Host 1 gửi bản tin ARP request với địa chỉ MAC đích là “FFFFFFFFFFF”
-
2) VTEP trên Host 1 đóng gói vào frame Ethernet broadcast vào một UDP header với địa chỉ IP đích multicast và địa chỉ IP nguồn 10.20.10.10 của VTEP.
-
3) Mạng vật lý sẽ chuyển gói tin multicast tới các host join vào nhóm IP multicast “239.1.1.10”.
-
4) VTEP trên Host 2 nhận được gói tin đã đóng gói. Dựa vào outer và inner header, nó sẽ tạo một entry trong bảng forwarding chỉ ra mapping giữa MAC của máy VM MAC1 ứng với VTEP nguồn và địa chỉ IP của nó. VTEP cũng kiểm tra VNI của gói tin để quyết định sẽ chuyển tiếp gói tin vào trong cho máy ảo VM bên trong nó hay không.
-
5) Gói tin được de-encapsulated và chuyển vào tới VM mà được kết nối tới VXLAN 5001.
-
-
Hình sau minh họa cách mà VTEP tìm kiếm thông tin trong forwarding table để gửi unicast trả lời lại từ VM từ VTEP 2:
-
1) Máy ảo VM MAC2 trên Host 2 đáp trả lại bản tin ARP request bằng cách gửi unicast lại gói tin với địa chỉ MAC đích là địa chỉ MAC1
-
2) Sau khi nhận được gói tin unicast đó, VTEP trên Host 2 thực hiện tìm kiếm thông tin trong bảng forwarding table và lấy được thông tin ứng với MAC đích là MAC 1. VTEP sẽ biết rằng phải chuyển gói tin tới máy ảo VM MAC 1 bằng cách gửi gói tin tới VTEP có địa chỉ “10.20.10.10”.
-
3) VTEP tạo bản tin unicast với địa chỉ đích là “10.20.10.10” và gửi nó đi.
-
-
Trên Host 1, VTEP sẽ nhận được gói tin unicast và cũng học được vị trí của VM MAC2 như hình sau:
Host 1 VTEP – Forwarding table entry
-
1) Gói tin được chuyển tới Host 1
-
2) VTEP trên Host 1 nhận được gói tin. Dựa trên outer và inner header, nó tạo một entry trong bảng forwarding ánh xạ địa chỉ MAC 2 và VTEP trên Host 2. VTEP cũng check lại VNI và quyết định gửi frame vào các VM bên trong.
-
3) Gói tin được de-encapsulated và chuyển tới chính xác VM có MAC đích trùng và nằm trong VXLAN 5001.
-
Các bước trên là quá trình hoạt động trong VXLAN.
Tham khảo thêm mô hình multiple VXLAN sau: https://blogs.vmware.com/vsphere/2013/05/vxlan-series-multiple-logical-networks-mapped-to-one-multicast-group-address-part-4.html