1. MTU là gì?
MTU (Maximum Transmission Unit) là kích thước tối đa của một gói dữ liệu có thể được truyền qua một interface mà không cần bị phân mảnh. Nói cách khác, MTU xác định gói dữ liệu lớn nhất mà một thiết bị mạng có thể gửi đi trong một lần truyền.
Ví dụ:
- Trên mạng Ethernet thông thường, MTU mặc định là 1500 bytes.
- Nếu bạn truyền một gói dữ liệu lớn hơn 1500 bytes, nó có thể bị phân mảnh hoặc bị loại bỏ tùy vào cấu hình mạng.
2. Cấu trúc của một gói dữ liệu và MTU
Một gói tin trong mạng bao gồm các phần sau:
- Header (header): Chứa thông tin điều khiển (địa chỉ nguồn, đích, checksum, v.v.)
- Payload (dữ liệu): Chứa nội dung thực tế của gói tin
- Trailer (đuôi gói): Chứa thông tin kiểm tra lỗi (tùy vào giao thức sử dụng)
Tổng kích thước của gói tin = Header + Payload + Trailer phải nhỏ hơn hoặc bằng MTU để không bị phân mảnh.
3. Các giá trị MTU phổ biến.
Dưới đây là một số giá trị MTU mặc định trên các giao thức mạng:
Giao thức | MTU (bytes) |
---|---|
Ethernet tiêu chuẩn | 1500 |
Ethernet với Jumbo Frames | 9000 |
PPPoE (DSL) | 1492 |
MPLS | 1508 |
VXLAN | 1450 |
GRE Tunnel | 1476 |
4. Tại sao MTU quan trọng?
MTU ảnh hưởng trực tiếp đến hiệu suất mạng. Nếu MTU quá nhỏ, gói tin sẽ bị chia nhỏ thành nhiều phần, làm tăng độ trễ và overhead. Nếu MTU quá lớn mà thiết bị trung gian không hỗ trợ, gói tin có thể bị drop.
Ví dụ:
- Nếu bạn truyền một gói 5000 bytes trên mạng có MTU 1500, gói tin sẽ bị chia thành 4 gói nhỏ hơn. Nếu một gói bị mất, toàn bộ dữ liệu cần phải được gửi lại.
- Nếu bạn truyền dữ liệu qua VPN hoặc tunnel, MTU của bạn có thể nhỏ hơn 1500 do phải chứa thêm header của VPN/GRE.
5. Các vấn đề liên quan đến MTU
5.1. Phân mảnh gói tin (Packet Fragmentation)
Nếu một gói tin lớn hơn MTU, nó có thể bị chia nhỏ thành nhiều gói nhỏ hơn, dẫn đến:
- Hiệu suất kém do phải xử lý nhiều gói nhỏ.
- Gói bị mất nếu một phần của gói tin bị thất lạc.
- Quá tải CPU do thiết bị phải lắp ghép lại các gói tin bị phân mảnh.
5.2. MTU Path Discovery (PMTUD)
Một số giao thức như TCP sử dụng PMTUD (Path MTU Discovery) để tự động điều chỉnh MTU phù hợp với mạng trung gian. Nếu một router không hỗ trợ hoặc chặn ICMP, PMTUD có thể không hoạt động và gây ra lỗi MTU black hole (mất gói tin mà không có cảnh báo).
5.3. Jumbo Frames
Jumbo Frames là các gói tin có MTU lớn hơn 1500 bytes (thường là 9000 bytes). Chúng có thể tăng hiệu suất mạng LAN và lưu trữ (iSCSI, Ceph, v.v.), nhưng cần đảm bảo toàn bộ thiết bị trên đường truyền hỗ trợ Jumbo Frames.
6. Dữ liệu lớn được truyền qua mạng như thế nào?
Nếu bạn gửi một file movie.mp4 dung lượng 10GB qua mạng có MTU = 1500 bytes, thì dữ liệu không đi nguyên khối mà sẽ được chia thành nhiều gói tin nhỏ phù hợp với MTU của mạng. Hãy cùng phân tích cách nó được xử lý.
Lấy ví dụ một file 10GB không đi qua mạng như một khối duy nhất mà sẽ được chia thành các phần nhỏ hơn. Quá trình này diễn ra qua các bước sau:
- Phần mềm (ứng dụng) sẽ chịu trách nhiệm chia nhỏ file thành các chunk (mảnh dữ liệu nhỏ)
- Ví dụ: Giao thức TCP/IP chia nhỏ dữ liệu thành các Segment.
- Nếu dùng UDP, dữ liệu được chia thành các Datagram.
- Mỗi Segment sẽ được đóng gói vào các gói tin IP
- Kích thước tối đa của một gói tin IP bị giới hạn bởi MTU (Maximum Transmission Unit) của mạng.
- Trong trường hợp MTU = 1500 bytes, mỗi gói tin IP có kích thước tối đa:
1500 bytes (MTU) - 20 bytes (IP Header) - 20 bytes (TCP Header) = 1460 bytes dữ liệu thực tế.
- Nghĩa là 10GB dữ liệu sẽ được chia thành hàng triệu gói tin có kích thước 1460 bytes mỗi gói.
- Các gói tin được gửi đi qua mạng
- Mỗi gói tin có số thứ tự (Sequence Number) để đảm bảo chúng được sắp xếp đúng thứ tự ở phía nhận.
- Nếu một gói tin bị mất, TCP sẽ yêu cầu gửi lại (retransmission).
- Thiết bị nhận ghép lại các gói tin thành file gốc
- Khi tất cả các gói tin đến nơi, TCP sẽ lắp ráp lại theo đúng thứ tự để khôi phục file movie.mp4.
Dưới đây là sơ đồ logic thể hiện cách dữ liệu lớn (file 10GB) được truyền qua mạng với MTU = 1500 bytes.
+-------------------------------+
| ỨNG DỤNG (SCP/FTP/HTTP...) |
+-------------------------------+
|
v
+-------------------------------+
| Chia nhỏ dữ liệu thành CHUNK |
| (TCP: Segment, UDP: Datagram) |
+-------------------------------+
|
v
+---------------------------------------------+
| Đóng gói vào gói tin IP |
| - MTU = 1500 bytes |
| - TCP Header = 20 bytes, IP Header = 20 bytes |
| - Payload thực tế = 1460 bytes |
+---------------------------------------------+
|
v
+---------------------------------------------+
| Gửi từng gói tin qua mạng |
| - Gán số thứ tự (Sequence Number) |
| - Nếu mất gói → TCP yêu cầu gửi lại |
+---------------------------------------------+
|
v
+---------------------------------------------+
| Thiết bị nhận nhận gói tin |
| - Kiểm tra thứ tự gói tin |
| - Nếu gói tin bị mất → Yêu cầu gửi lại |
+---------------------------------------------+
|
v
+---------------------------------------------+
| Lắp ráp lại các gói tin thành file gốc |
| - TCP sắp xếp lại theo thứ tự đúng |
| - Dữ liệu hợp nhất thành file hoàn chỉnh |
+---------------------------------------------+
🔹 Mô tả ngắn gọn
1️⃣ Ứng dụng gửi file → Chia thành các chunk nhỏ.
2️⃣ TCP hoặc UDP chia thành các Segment hoặc Datagram.
3️⃣ IP đóng gói thành gói tin (giới hạn bởi MTU).
4️⃣ Gói tin đi qua mạng, nếu bị mất thì TCP sẽ gửi lại.
5️⃣ Thiết bị nhận ghép các gói tin lại thành file gốc.
👉 Nếu MTU lớn hơn (Jumbo Frame 9000), số gói tin giảm đi, giúp truyền nhanh hơn.
🔹 Ví dụ thực tế: Gửi file 10GB qua SCP hoặc HTTP
Giả sử bạn gửi file movie.mp4 (10GB) qua SCP hoặc HTTP:
- Nếu MTU = 1500 bytes → Dữ liệu được chia thành khoảng 7 triệu gói tin.
- Nếu mạng có mất gói (packet loss), TCP sẽ phải gửi lại các gói tin bị mất, làm giảm tốc độ truyền tải.
- Nếu mạng hỗ trợ MTU lớn hơn (Jumbo Frame 9000 bytes), số lượng gói tin cần gửi giảm đi rất nhiều, giúp tốc độ truyền tải nhanh hơn.
🔹 Tại sao MTU ảnh hưởng đến tốc độ truyền file?
- MTU lớn → Ít gói tin hơn → Giảm overhead
- Nếu MTU lớn hơn (VD: 9000 bytes với Jumbo Frame), mỗi gói tin mang nhiều dữ liệu hơn, giúp tốc độ truyền nhanh hơn.
- MTU nhỏ → Nhiều gói tin hơn → CPU xử lý nhiều hơn
- Khi MTU nhỏ, số lượng gói tin cần xử lý tăng lên, làm tăng tải cho CPU và Router/Switch trung gian.
- MTU quá lớn có thể gây vấn đề nếu thiết bị trung gian không hỗ trợ
- Nếu bạn gửi gói tin lớn hơn MTU của mạng mà không có cơ chế phân mảnh hợp lý, gói tin có thể bị drop.
👉 Nếu bạn muốn truyền file lớn nhanh hơn, hãy xem xét:
- Tăng MTU nếu có thể (VD: 9000 bytes trên mạng LAN)
- Dùng các giao thức taối ưu như rsync, FTP, hoặc TCP BBR để tăng tốc độ truyền. 🚀
Bản này so sánh cách SCP, FTP, rsync chia nhỏ dữ liệu
Công cụ | Giao thức | Cách chia nhỏ dữ liệu |
---|---|---|
SCP | TCP (SSH) | Dùng TCP, tự động chia nhỏ dữ liệu theo MSS (Maximum Segment Size) |
FTP | TCP | Chia nhỏ file theo Block Size (mặc định ~4KB hoặc do user cấu hình) |
rsync | TCP | Chia file theo Block & Delta Algorithm để tối ưu băng thông |
7. Kết luận
📌 Dữ liệu lớn (VD: file 10GB) không đi qua mạng như một khối duy nhất, mà được chia nhỏ thành hàng triệu gói tin nhỏ theo MTU của mạng.
📌 MTU càng lớn thì tốc độ truyền tải càng nhanh, nhưng cần đảm bảo tất cả thiết bị trong mạng hỗ trợ kích thước đó.
📌 Nếu MTU không đủ lớn và DF bit bật, gói tin sẽ bị drop thay vì tự động phân mảnh.
📌 Client (hoặc Server gửi) chịu trách nhiệm chia nhỏ dữ liệu, KHÔNG phải Router/Switch.
📌 Router chỉ kiểm tra kích thước gói tin, nếu quá lớn thì drop hoặc yêu cầu gửi lại.
📌 Nếu MTU nhỏ, Client cần tự chia nhỏ dữ liệu trước để tránh lỗi mất gói.
Việc hiểu và cấu hình MTU đúng cách sẽ giúp hệ thống mạng hoạt động ổn định, giảm độ trễ và tăng hiệu suất truyền tải dữ liệu.