Phân mảnh và hợp nhất các gói IP

Một phần của tài liệu Các giao thức định tuyến cổng nội trong mạng IP (Trang 40 - 44)

Các gói dữ liệu IP phải đợc nhúng trong khung dữ liệu ở tầng liên kết dữ liệu t- ơng ứng, trớc khi chuyển tiếp trong mạng. Quá trình nhận một gói dữ liệu IP diễn ra ng- ợc lại. Ví dụ, với mạng Ethernet ở tầng liên kết dữ liệu, quá trình chuyển một gói dữ liệu diễn ra nh sau. Khi gửi một gói dữ liệu IP cho mức Ethernet, IP chuyển cho mức liên kết dữ liệu các thông số địa chỉ Ethernet đích, kiểu khung Ethernet (chỉ dữ liệu mà Ethernet đang mang là của IP) và cuối cùng là gói IP. Tầng liên kết số liệu đặt địa chỉ Ethernet nguồn là địa chỉ kết nối mạng của mình và tính toán giá trị Checksum. Trờng type chỉ ra kiểu khung là 0x0800 đối với dữ liệu IP. Mức liên kết dữ liệu sẽ chuyển khung dữ liệu theo thuật toán truy nhập Ethernet.

Một gói dữ liệu IP có độ dài tối đa 65536 byte, trong khi hầu hết các tầng liên kết dữ liệu chỉ hỗ trợ các khung dữ liệu nhỏ hơn độ lớn tối đa của gói dữ liệu IP nhiều lần (ví dụ độ dài lớn nhất của một khung dữ liệu Ethernet là 1500 byte). Vì vậy cần thiết phải có cơ chế phân mảnh khi phát và hợp nhất khi thu đối với các gói dữ liệu IP.

Độ dài tối đa của một gói dữ liệu liên kết là MTU (Maximum Transmit Unit). Khi cần chuyển một gói dữ liệu IP có độ dài lớn hơn MTU của một mạng cụ thể, cần phải chia gói số liệu IP đó thành những gói IP nhỏ hơn để độ dài của nó nhỏ hơn hoặc bằng MTU gọi chung là mảnh (Fragment). Trong phần tiêu đề của gói dữ liệu IP có thông tin về phân mảnh và xác định các mảnh có quan hệ phụ thuộc để hợp thành sau này.

Ví dụ: Ethernet chỉ hỗ trợ các khung có độ dài tối đa là 1500 byte. Nếu muốn gửi một gói dữ liệu IP gồm 2000 byte qua Ethernet, phải chia thành hai gói nhỏ hơn, mỗi gói không quá giới hạn MTU của Ethernet.

IP dùng cờ MF (3 bit thấp của trờng Flags trong phần đầu của gói IP) và trờng Flagment Offset của gói IP (đã bị phân đoạn) để định danh gói IP đó là một phân đoạn và vị trí của phân đoạn này trong gói IP gốc. Các gói cùng trong chuỗi phân mảnh đều có trờng này giống nhau. Cờ MF bằng 1 nếu là gói đầu của chuỗi phân mảnh và 0 nếu là gói cuối của gói đã đợc phân mảnh.

Quá trình hợp nhất diễn ra ngợc lại với quá trình phân mảnh. Khi IP nhận đợc một gói phân mảnh, nó giữ phân mảnh đó trong vùng đệm, cho đến khi nhận đợc hết các gói IP trong chuỗi phân mảnh có cùng trờng định danh. Khi phân mảnh đầu tiên đợc nhận, IP khởi động một bộ đếm thời gian (giá trị ngầm định là 15s). IP phải nhận hết các phân mảnh kế tiếp trớc khi đồng hồ tắt. Nếu không IP phải huỷ tất cả các phân mảnh trong hàng đợi hiện thời có cùng trờng định danh.

Khi IP nhận đợc hết các phân mảnh, nó thực hiện hợp nhất các gói phân mảnh thành các gói IP gốc và sau đó xử lý nó nh một gói IP bình thờng. IP thờng chỉ thực hiện hợp nhất các gói tại hệ thống đích của gói.

Original IP packet 04 05 00 2000 1 1 1 1 0 0 0 0 05 06 checksum 128.82.23.12 192.12.2.5 DATA 1980 byte Fragment 04 05 00 1500 1 1 1 1 1 0 0 0 05 06 checksum 128.82.23.12 192.12.2.5 DATA 1480 byte

Fragment 04 05 00 520 1 1 1 1 0 0 0 0 05 06 checksum 128.82.23.12 192.12.2.5 DATA 500 byte

Hình 1.20 Nguyên tắc phân mảnh gói dữ liệu

Kích thớc của gói tin , MTU

Khi truyền dữ liệu, giao thức IP gửi các gói tin xuống tầng dới để truyền dữ liệu đi trong mạng. Tại tầng dới, tầng liên kết dữ liệu, gói tin sẽ đợc bọc ra ngoài một phần header của tầng này và chuyển tiếp xuống tầng vật lý để gửi đi. ở tầng vật lý, các gói tin lại đợc bọc bằng một phần header của tầng vật lý. Do đó cần thiết phải lựa chọn một kích thớc của gói tin IP, sao cho nó có thể thích hợp với các gói tin ở tầng dới và truyền đi trong mạng dễ dàng.

Hình 1.21 Mô tả phân đoạn

Hình 1.21 Miêu tả việc phân đoạn. Gateway G1 phân đoạn các gói tin từ A tới B, gateway G2 phân đoạn gói tin gửi từ B sang A.

Đối với mỗi mạng, có một giới hạn về kích thớc dữ liệu có thể truyền đi trong một gói tin trên tầng vật lý. Ví dụ nh trong mạng Ethernet, giới hạn này là 1500 bytes, trong khi mạng PRONET cho phép tới 2044 bytes. Giới hạn này đợc gọi là đơn vị truyền tối đa MTU (Maximum Transfer Unit). Một vài mạng chỉ cho phép MTU là 128

Phạm Văn Hiến - Đ01VT Net 2 MTU=620 G2 G1 Trạm A TrạmB Net 1 MTU=1500 Net 3 MTU=1500 36

bytes. Nếu ta giới hạn kích thớc của gói tin IP để phù hợp với kích thớc nhỏ nhất của gói tin trên tầng vật lý thì sẽ không hiệu quả khi IP hoạt động trên mạng có MTU lớn. Còn nếu ta chọn kích thớc của gói tin IP theo kích thớc lớn nhất của gói tin trên tầng vật lý thì gói tin này sẽ không phù hợp với các mạng có MTU nhỏ.

Do lý do ở trên, thay vì thiết kế một gói tin có kích thớc cố định, giao thức IP sẽ chọn một kích thớc gói tin thích hợp và dùng một cơ chế cho phép chia nhỏ gói tin thành các phần nhỏ để đi qua mạng mà có MTU nhỏ. Các phần này gọi là các phân đoạn (fragment), quá trình chia nhỏ gói tin gọi là quá trình phân đoạn (fragmentation). Hình 1.21 cho ta thấy quá trình phân đoạn xuất hiện tại gateway, nơi nối giữa hai mạng, một mạng có MTU lớn và một mạng có MTU nhỏ.

Hai trạm A và B tại hai mạng Net1 và Net3 đều có MTU là 1500. Do vậy khi gửi dữ liệu qua nhau, hai trạm sẽ dùng gói tin có kích thớc là 1500. Hai mạng Net1 và Net3 thông qua mạng Net2 có MTU là 600. Do vậy các gói tin gửi từ A sang B sẽ bị phân đoạn tại gateway G1. Còn các gói tin gửi từ B sang A sẽ bị phân đoạn tại gateway G2.

Kích thớc của một phân đoạn đợc chọn sao cho nó vừa khít với một gói tin tại mạng đó. Sau khi đợc phân đoạn, các phân đoạn sẽ đợc lắp ráp lại với nhau (reassembled) để tạo lại gói tin gốc tại đích.

Giao thức IP không giới hạn kích thớc của một gói tin. Bên gửi IP có thể chọn bất kỳ kích thớc nào mà nó nghĩ là thích hợp. Việc phân đoạn và lắp ráp lại sẽ đợc làm tự động mà không cần bên nhận phải thực hiện một xử lý đặc biệt nào. Theo đặc tả của IP RFC 791 [22], gateway phải chấp nhận đợc các gói tin có kích thớc lên đến MTU của mạng. Gateway thờng có thể chấp nhận đợc các gói tin có kích thớc lên tới 576 byte.

Cấu trúc của một phân đoạn gồm có phần header và phần dữ liệu. Phần header chứa thông tin giống hệt phần header của gói tin ngoại trừ trờng cờ FLAG, mà chỉ ra rằng nó là một phân đoạn. Phần dữ liệu chứa đựng các phần nhỏ dữ liệu của gói tin.

Nối kết các phân đoạn

Trong giao thức TCP/IP khi một gói tin bị phân đoạn, các phân đoạn của nó sẽ di chuyển độc lập trên mạng theo các hớng các nhau để tới đợc đích cuối cùng. Tại đích các phân đoạn này đợc nối kết lại thành gói tin gốc.

Việc để các phân đoạn di chuyển độc lập trong mạng cho tới khi nó tới đích có một vài nhợc điểm. Thứ nhất là bởi vì các phân đoạn không đợc nối kết lại ngay sau khi đi qua mạng có MTU nhỏ mà đợc giữ nguyên nên khi đi qua mạng có MTU lớn thì tính hiệu quả sẽ thấp. Thứ hai là nếu bất kỳ một phân đoạn nào bị mất, gói tin sẽ không thể đợc nối kết. Tại bên nhận khi nhận đợc phân đoạn đầu tiên, nó khởi động đồng hồ đếm. Nếu thời gian đã hết trớc khi tất cả các phân đoạn tới đích, bên nhận sẽ xóa tất cả các phân đoạn đã đợc nhận trớc đó. Việc mất một phân đoạn bất kỳ sẽ làm mất gói tin tơng ứng và phải truyền lại toàn bộ các phân đoạn. Điều này làm tăng xác suất mất gói tin.

Tuy có một vài nhợc điểm nhng phơng pháp này cho thấy nó vẫn hoạt động tốt. Nó cho phép các phân đoạn di chuyển một cách độc lập và không bắt buộc các gateway phải cất giữ và nối kết các phân đoạn.

Một phần của tài liệu Các giao thức định tuyến cổng nội trong mạng IP (Trang 40 - 44)

Tải bản đầy đủ (DOC)

(113 trang)
w