Giải mã phân mảnh và lắp ráp lại IP: Mylinking™ Network Packet Broker xác định các gói IP bị phân mảnh

Giới thiệu

Chúng ta đều biết nguyên lý phân loại và nguyên lý không phân loại của IP và ứng dụng của nó trong truyền thông mạng. Phân mảnh và lắp ráp lại IP là một cơ chế quan trọng trong quá trình truyền gói tin. Khi kích thước của một gói tin vượt quá giới hạn Đơn vị truyền tối đa (MTU) của một liên kết mạng, phân mảnh IP sẽ chia gói tin thành nhiều mảnh nhỏ hơn để truyền. Các mảnh này được truyền độc lập trong mạng và khi đến đích, chúng được lắp ráp lại thành các gói tin hoàn chỉnh bằng cơ chế lắp ráp lại IP. Quá trình phân mảnh và lắp ráp lại này đảm bảo rằng các gói tin kích thước lớn có thể được truyền trong mạng đồng thời đảm bảo tính toàn vẹn và độ tin cậy của dữ liệu. Trong phần này, chúng ta sẽ xem xét sâu hơn về cách thức hoạt động của phân mảnh và lắp ráp lại IP.

Phân mảnh và lắp ráp lại IP

Các liên kết dữ liệu khác nhau có đơn vị truyền tải tối đa (MTU) khác nhau; ví dụ, liên kết dữ liệu FDDI có MTU là 4352 byte và MTU của Ethernet là 1500 byte. MTU là viết tắt của Maximum Transmission Unit (Đơn vị Truyền tải Tối đa), dùng để chỉ kích thước gói tin tối đa có thể được truyền qua mạng.

FDDI (Giao diện Dữ liệu Phân tán Sợi quang) là một tiêu chuẩn mạng cục bộ (LAN) tốc độ cao sử dụng cáp quang làm môi trường truyền dẫn. Đơn vị Truyền Tối đa (MTU) là kích thước gói tin tối đa có thể được truyền bởi giao thức tầng liên kết dữ liệu. Trong mạng FDDI, kích thước của MTU là 4352 byte. Điều này có nghĩa là kích thước gói tin tối đa có thể được truyền bởi giao thức tầng liên kết dữ liệu trong mạng FDDI là 4352 byte. Nếu gói tin cần truyền vượt quá kích thước này, nó cần được phân mảnh để chia gói tin thành nhiều mảnh phù hợp với kích thước MTU để truyền và lắp ráp lại tại máy thu.

Đối với Ethernet, MTU thường có kích thước 1500 byte. Điều này có nghĩa là Ethernet có thể truyền các gói tin có kích thước lên đến 1500 byte. Nếu kích thước gói tin vượt quá giới hạn MTU, gói tin sẽ được phân mảnh thành các mảnh nhỏ hơn để truyền đi và được lắp ráp lại tại đích. Việc lắp ráp lại gói tin IP đã phân mảnh chỉ có thể được thực hiện bởi máy chủ đích, và bộ định tuyến sẽ không thực hiện thao tác lắp ráp lại.

Chúng ta đã nói về các phân đoạn TCP trước đó, nhưng MSS là viết tắt của Maximum Segment Size (Kích thước Phân đoạn Tối đa), và nó đóng một vai trò quan trọng trong giao thức TCP. MSS đề cập đến kích thước của phân đoạn dữ liệu tối đa được phép gửi trong một kết nối TCP. Tương tự như MTU, MSS được sử dụng để giới hạn kích thước của các gói tin, nhưng nó thực hiện điều này ở tầng vận chuyển, tầng giao thức TCP. Giao thức TCP truyền dữ liệu của tầng ứng dụng bằng cách chia dữ liệu thành nhiều phân đoạn dữ liệu, và kích thước của mỗi phân đoạn dữ liệu được giới hạn bởi MSS.

MTU của mỗi liên kết dữ liệu là khác nhau vì mỗi loại liên kết dữ liệu được sử dụng cho các mục đích khác nhau. Tùy thuộc vào mục đích sử dụng, các MTU khác nhau có thể được lưu trữ.

Giả sử bên gửi muốn gửi một datagram lớn 4000 byte để truyền qua liên kết Ethernet, do đó datagram cần được chia thành ba datagram nhỏ hơn để truyền. Điều này là do kích thước của mỗi datagram nhỏ không thể vượt quá giới hạn MTU, tức là 1500 byte. Sau khi nhận được ba datagram nhỏ, bên nhận sẽ ghép chúng lại thành datagram lớn 4000 byte ban đầu dựa trên số thứ tự và độ lệch của mỗi datagram.

 Phân mảnh và lắp ráp lại IP

Trong truyền dẫn phân mảnh, việc mất một phân mảnh sẽ làm mất hiệu lực toàn bộ gói tin IP. Để tránh điều này, TCP đã giới thiệu MSS, trong đó việc phân mảnh được thực hiện ở lớp TCP thay vì ở lớp IP. Ưu điểm của phương pháp này là TCP kiểm soát chính xác hơn kích thước của mỗi phân đoạn, giúp tránh các vấn đề liên quan đến phân mảnh ở lớp IP.

Đối với UDP, chúng tôi cố gắng không gửi gói dữ liệu lớn hơn MTU. Điều này là do UDP là giao thức truyền tải không kết nối, không cung cấp độ tin cậy và cơ chế truyền lại như TCP. Nếu chúng tôi gửi một gói dữ liệu UDP lớn hơn MTU, nó sẽ bị phân mảnh bởi lớp IP để truyền đi. Khi một trong các phân mảnh bị mất, giao thức UDP không thể truyền lại, dẫn đến mất dữ liệu. Do đó, để đảm bảo truyền dữ liệu đáng tin cậy, chúng ta nên cố gắng kiểm soát kích thước của các gói dữ liệu UDP trong phạm vi MTU và tránh truyền dữ liệu bị phân mảnh.

Mylinking™ Network Packet Brokercó thể tự động xác định các loại giao thức đường hầm VxLAN/NVGRE/IPoverIP/MPLS/GRE, v.v., có thể được xác định theo hồ sơ người dùng theo đầu ra luồng đường hầm của các đặc điểm bên trong hoặc bên ngoài.

○ Có thể nhận dạng các gói nhãn VLAN, QinQ và MPLS

○ Có thể xác định VLAN bên trong và bên ngoài

○ Có thể xác định các gói tin IPv4/IPv6

○ Có thể xác định các gói tin đường hầm VxLAN, NVGRE, GRE, IPoverIP, GENEVE, MPLS

○ Có thể xác định các gói tin IP bị phân mảnh (Hỗ trợ xác định phân mảnh IP và hỗ trợ lắp ráp lại phân mảnh IP để triển khai lọc tính năng L4 trên tất cả các gói tin phân mảnh IP. Triển khai chính sách đầu ra lưu lượng.)

Tại sao IP bị phân mảnh và TCP bị phân mảnh?

Vì trong quá trình truyền tải mạng, tầng IP sẽ tự động phân mảnh gói dữ liệu, nên ngay cả khi tầng TCP không phân mảnh dữ liệu, gói dữ liệu vẫn sẽ được tầng IP tự động phân mảnh và truyền tải bình thường. Vậy tại sao TCP lại cần phân mảnh? Chẳng phải là quá mức cần thiết sao?

Giả sử có một gói tin lớn không được phân đoạn ở lớp TCP và bị mất trong quá trình truyền tải; TCP sẽ truyền lại gói tin đó, nhưng chỉ trong toàn bộ gói tin lớn (mặc dù lớp IP chia dữ liệu thành các gói nhỏ hơn, mỗi gói có độ dài MTU). Điều này là do lớp IP không quan tâm đến việc truyền dữ liệu một cách đáng tin cậy.

Nói cách khác, trên liên kết truyền tải đến mạng của máy, nếu lớp truyền tải phân mảnh dữ liệu, lớp IP sẽ không phân mảnh dữ liệu. Nếu quá trình phân mảnh không được thực hiện ở lớp truyền tải, thì quá trình phân mảnh có thể diễn ra ở lớp IP.

Nói một cách đơn giản, TCP phân đoạn dữ liệu để lớp IP không còn bị phân mảnh nữa, và khi xảy ra việc truyền lại, chỉ những phần nhỏ dữ liệu đã bị phân mảnh mới được truyền lại. Bằng cách này, hiệu suất và độ tin cậy của việc truyền tải có thể được cải thiện.

Nếu TCP bị phân mảnh, thì lớp IP có bị phân mảnh không?

Trong phần thảo luận ở trên, chúng tôi đã đề cập rằng sau khi phân mảnh TCP tại máy gửi, không có phân mảnh nào xảy ra ở lớp IP. Tuy nhiên, có thể có các thiết bị lớp mạng khác trên toàn bộ liên kết truyền tải có thể có đơn vị truyền tải tối đa (MTU) nhỏ hơn MTU tại máy gửi. Do đó, mặc dù gói tin đã được phân mảnh tại máy gửi, nó vẫn tiếp tục bị phân mảnh khi đi qua lớp IP của các thiết bị này. Cuối cùng, tất cả các phân mảnh sẽ được lắp ráp tại máy nhận.

Nếu chúng ta có thể xác định MTU tối thiểu trên toàn bộ liên kết và gửi dữ liệu ở độ dài đó, sẽ không xảy ra hiện tượng phân mảnh, bất kể dữ liệu được truyền đến nút nào. MTU tối thiểu này trên toàn bộ liên kết được gọi là MTU đường dẫn (PMTU). Khi một gói tin IP đến bộ định tuyến, nếu MTU của bộ định tuyến nhỏ hơn độ dài gói tin và cờ DF (Không phân mảnh) được đặt thành 1, bộ định tuyến sẽ không thể phân mảnh gói tin và chỉ có thể loại bỏ nó. Trong trường hợp này, bộ định tuyến sẽ tạo ra thông báo lỗi ICMP (Giao thức Tin nhắn Điều khiển Internet) có tên là "Cần phân mảnh nhưng DF đã được đặt". Thông báo lỗi ICMP này sẽ được gửi trở lại địa chỉ nguồn với giá trị MTU của bộ định tuyến. Khi người gửi nhận được thông báo lỗi ICMP, họ có thể điều chỉnh kích thước gói tin dựa trên giá trị MTU để tránh tình trạng phân mảnh bị cấm một lần nữa.

Phân mảnh IP là điều cần thiết và nên tránh ở lớp IP, đặc biệt là trên các thiết bị trung gian trong liên kết. Do đó, trong IPv6, việc phân mảnh các gói tin IP bởi các thiết bị trung gian đã bị cấm và việc phân mảnh chỉ có thể được thực hiện ở đầu và cuối liên kết.

Hiểu biết cơ bản về IPv6

IPv6 là phiên bản 6 của Giao thức Internet, kế thừa IPv4. IPv6 sử dụng độ dài địa chỉ 128 bit, có thể cung cấp nhiều địa chỉ IP hơn so với độ dài địa chỉ 32 bit của IPv4. Điều này là do không gian địa chỉ IPv4 đang dần cạn kiệt, trong khi không gian địa chỉ IPv6 rất lớn và có thể đáp ứng nhu cầu Internet trong tương lai.

Khi nói về IPv6, ngoài không gian địa chỉ rộng hơn, nó còn mang lại khả năng bảo mật và khả năng mở rộng tốt hơn, nghĩa là IPv6 có thể mang lại trải nghiệm mạng tốt hơn so với IPv4.

Mặc dù IPv6 đã tồn tại từ lâu, nhưng việc triển khai trên toàn cầu vẫn còn tương đối chậm. Nguyên nhân chủ yếu là do IPv6 cần phải tương thích với mạng IPv4 hiện có, đòi hỏi phải chuyển đổi và di chuyển. Tuy nhiên, với sự cạn kiệt địa chỉ IPv4 và nhu cầu IPv6 ngày càng tăng, ngày càng nhiều nhà cung cấp dịch vụ Internet và tổ chức đang dần chuyển sang IPv6, và dần hiện thực hóa hoạt động kép của IPv6 và IPv4.

Bản tóm tắt

Trong chương này, chúng ta đã tìm hiểu sâu hơn về cách thức hoạt động của phân mảnh và lắp ráp lại IP. Các liên kết dữ liệu khác nhau có Đơn vị truyền tối đa (MTU) khác nhau. Khi kích thước của một gói vượt quá giới hạn MTU, phân mảnh IP sẽ chia gói thành nhiều mảnh nhỏ hơn để truyền và lắp ráp lại chúng thành một gói hoàn chỉnh bằng cơ chế lắp ráp lại IP sau khi đến đích. Mục đích của phân mảnh TCP là làm cho lớp IP không còn phân mảnh nữa và chỉ truyền lại dữ liệu nhỏ đã bị phân mảnh khi xảy ra quá trình truyền lại, nhằm cải thiện hiệu suất và độ tin cậy của truyền. Tuy nhiên, có thể có các thiết bị lớp mạng khác trên toàn bộ liên kết truyền tải có MTU có thể nhỏ hơn MTU của bên gửi, do đó gói vẫn sẽ bị phân mảnh lại ở lớp IP của các thiết bị này. Cần tránh phân mảnh ở lớp IP càng nhiều càng tốt, đặc biệt là trên các thiết bị trung gian trong liên kết.


Thời gian đăng: 07-08-2025