Tạm biệt nỗi lo cấu hình VXLAN thủ công
Nếu bạn từng ‘vật lộn’ với việc cấu hình static VXLAN cho từng node hoặc đau đầu vì traffic ARP flood làm nghẽn mạng, BGP EVPN (Ethernet VPN) chính là câu trả lời. Sau 6 tháng vận hành thực tế cho cluster KVM quy mô 20 node, mình đã đúc kết được quy trình chuẩn để dựng mô hình Lab EVPN-VXLAN tinh gọn nhất.
Hãy bắt đầu với kịch bản thực tế: 2 server Ubuntu 22.04 đóng vai trò VTEP (VXLAN Tunnel End Point). Mục tiêu là giúp các máy ảo (VM) ở hai node khác nhau thông được Layer 2 với nhau qua ‘đường ống’ BGP EVPN thay vì kéo dây cáp vật lý.
Bước 1: Cài đặt và kích hoạt FRRouting
FRR là một routing suite cực mạnh, biến Linux server thành một router chuyên nghiệp. Thao tác cài đặt rất đơn giản:
sudo apt update && sudo apt install frr -y
# Kích hoạt daemon BGP để trao đổi routing
sudo sed -i 's/bgpd=no/bgpd=yes/' /etc/frr/daemons
sudo systemctl restart frr
Bước 2: Thiết lập interface VXLAN
Trên Node 1 (IP: 10.0.0.1) và Node 2 (IP: 10.0.0.2), chúng ta tạo một bridge để gom các VM và interface VXLAN lại.
# Thực hiện trên Node 1
sudo ip link add br0 type bridge
sudo ip link set br0 up
sudo ip link add vxlan10 type vxlan id 10 dstport 4789 local 10.0.0.1 nolearning
sudo ip link set vxlan10 master br0
sudo ip link set vxlan10 up
Lưu ý quan trọng: Option nolearning là bắt buộc. Chúng ta sẽ giao phó việc học địa chỉ MAC cho giao thức BGP, không để kernel Linux tự học theo cách truyền thống nhằm tránh loop và tối ưu hiệu năng.
Bước 3: Cấu hình BGP EVPN qua FRR
Truy cập vào shell điều khiển vtysh và dán đoạn cấu hình sau. Thay vì cấu hình hàng chục tunnel mesh, bạn chỉ cần vài dòng lệnh:
conf t
router bgp 65001
neighbor 10.0.0.2 remote-as 65001
address-family l2vpn evpn
neighbor 10.0.0.2 activate
advertise-all-vni
exit-address-family
exit
Ngay khi lệnh được thực thi, Node 1 và Node 2 sẽ tự động ‘chào hỏi’ và trao đổi bảng MAC/IP. Mạng overlay lúc này đã sẵn sàng hoạt động.
Tại sao EVPN lại vượt trội hơn VXLAN thuần túy?
Trong kiến trúc VXLAN truyền thống, cơ chế “Flood and Learn” khiến mọi yêu cầu ARP broadcast phải gửi đi khắp các tunnel. Với hệ thống lớn khoảng 500 VM, lượng traffic rác này có thể chiếm tới 20-30% băng thông đường truyền vật lý.
BGP EVPN giải quyết triệt để vấn đề này bằng cách chuyển đổi việc học địa chỉ sang Control Plane. Thay vì flood gói tin, các VTEP dùng BGP để thông báo cho nhau vị trí chính xác của từng MAC address. Kết quả là traffic broadcast giảm đến 95%, giúp hạ băng thông tiêu thụ và giảm độ trễ (latency).
Các thành phần bạn cần nhớ:
- VTEP: Điểm đầu/cuối của đường hầm (chính là server Linux của bạn).
- VNI (VXLAN Network Identifier): Định danh mạng, hỗ trợ tới 16 triệu ID, vượt xa giới hạn 4096 của VLAN truyền thống.
- Anycast Gateway: Cho phép đặt cùng một IP Gateway trên tất cả các node, giúp VM di chuyển giữa các node (Live Migration) mà không mất kết nối.
Kinh nghiệm xương máu: ‘Cạm bẫy’ MTU
Lỗi phổ biến nhất khi triển khai EVPN-VXLAN là hiện tượng: Ping gói tin nhỏ thì thông, nhưng tải file lớn hoặc truy cập web là rớt kết nối. Thủ phạm chính là MTU (Maximum Transmission Unit).
Mỗi gói tin VXLAN sẽ ‘cõng’ thêm 50 bytes header. Nếu interface vật lý vẫn để mặc định 1500 bytes, gói tin tổng sẽ vọt lên 1550 bytes và bị switch vật lý drop ngay lập tức.
Lời khuyên từ thực tế:
- Hãy cấu hình MTU trên interface vật lý (eth0/bond0) lên ít nhất 1550, hoặc lý tưởng nhất là 9000 (Jumbo Frame).
- Kiểm tra trạng thái đồng bộ MAC bằng lệnh:
vtysh -c "show evpn mac vni 10". - Đừng quên kích hoạt
zebratrong file/etc/frr/daemonsđể quản lý bảng định tuyến chính xác.
Triển khai EVPN-VXLAN với FRRouting giúp bạn sở hữu một hệ thống mạng linh hoạt như các nền tảng Public Cloud lớn (AWS, Azure) nhưng với chi phí bằng 0. Nếu bạn đang xây dựng Private Cloud hoặc Cluster chạy Container, đây là công nghệ rất đáng để đầu tư thời gian tìm hiểu.

