1.2. ĐIỀU KHIỂN LƯU LƯỢNG VÀ ĐIỀU KHIỂN TẮC NGHẼN
1.2.2 ĐIỀU KHIỂN LƯU LƯỢNG VÀ ĐIỀU KHIỂN TẮC NGHẼN TRONG GIAO THỨC TCP
1.2.2.1 Giao thức TCP
TCP là giao thức trao đổi số liệu có kết nối, đảm bảo tin cậy và chính xác giữa hai thực thể cuối trong mạng. Việc thiết kế và thực hiện giao thức TCP phức tạp. Bởi vì, TCP phải làm nhiệm vụ quản lý đúng số tuần tự tính theo byte của dòng số liệu. Ngoài ra, nó còn phải làm nhiệm vụ tối ưu hóa dải thông của mạng bằng cách giám sát và điều khiển lưu lượng số liệu từ thực thể gửi tới thực thể nhận [1].
Để đảm bảo trao đổi số liệu tin cậy và chính xác giữa các thực thể cuối, TCP thực hiện các cơ chế: đối thoại khi thu phát; kiểm tra số liệu thu, phát;
kiểm tra số tuần tự; và điều khiển lưu lượng.
Khi gửi một gói số liệu, bên gửi phải lưu lại gói tin vừa gửi vào trong bộ đệm chờ biên nhận. Bên nhận phải thông báo nhận đúng sau một khoảng thời gian nhất định. Nếu sau khoảng thời gian đó bên gửi vẫn chưa nhận được
biên nhận đúng thì gói số liệu được coi là bị mất (do tắc nghẽn hoặc lỗi truyền) và được phát lại.
Để có thể kiểm tra số liệu truyền đi trên đường truyền có bị lỗi truyền hay không. Người ta sử dụng các thuật toán kiểm tra dữ liệu, theo đó các số liệu kiểm tra (checksum) được truyền cùng với số liệu phát. Khi thu nhận gói số liệu, bên nhận áp dụng thuật toán kiểm tra và các số liệu kiểm tra được gửi kèm theo số liệu để xác định số liệu vừa thu có bị lỗi hay không. Nếu có lỗi, thực thể thu thông báo kết quả nhận sai cho thực thể phát và yêu cầu phát lại gói số liệu hỏng.
TCP phải làm nhiệm vụ sắp xếp lại các gói số liệu do tầng IP chuyển lên. Vì các gói IP đến đích không theo đúng trật tự khi phát (giao thức IP là giao thức không hướng kết nối) nên thực thể TCP khi nhận phải lập lại trật tự các gói số liệu thu, hủy các gói số liệu trùng lặp khi cần và chuyển các gói số liệu đó theo đúng trật tự phát cho các ứng dụng.
Để có thể đồng bộ việc phát và thu các gói số liệu, trong những trường hợp bên phát có khả năng phát nhanh hơn khả năng nhận của bên thu. Người ta sử dụng bộ đệm cho cả thực thể thu và nhận, thực thể nhận chỉ cho phép thực thể phát gửi một lượng số liệu đủ với vùng đệm thu của minh, để đảm bảo bên phát nhanh không làm tràn bộ đệm bên thu chậm.
Để nhiều tiến trình trên một máy tính có thể đồng thời sử dụng các thiết bị truyền thông bằng giao thức TCP, giao thức này cung cấp một tập địa chỉ gọi là các cổng (port) trên mỗi máy tính. Địa chỉ cổng kết hợp với địa chỉ mạng (địa chỉ IP) tạo thành socket. Mỗi một socket có thể được nhiều kết nối sử dụng đồng thời [2].
Hình 1.6 Một ví dụ về thuật toán tránh tắc nghẽn trên Internet 1.2.2.2 Các cơ chế điều khiển lưu lượng và điều khiển tắc nghẽn
Cơ chế cửa sổ động
Cơ chế cửa sổ động là một trong các phương pháp điều khiển lưu lượng số liệu trong mạng thông tin máy tính. Độ lớn cửa sổ chính bằng số gói số liệu được gửi liên tục mà không cần chờ thông báo trả lời về kết quả nhận các gói số liệu đó. Độ lớn cửa sổ quyết định hiệu suất trao đổ số liệu trong mạng.
Nếu chọn độ lớn cửa sổ cao thì có thể gửi được nhiều số liệu trong cùng một đơn vị thời gian. Nhưng khi việc truyền số liệu có lỗi thì lượng gói số liệu phải gửi lại lớn và vì vậy hiệu quả sử dụng đường truyền thấp.
Giao thức TCP cho phép thay đổi độ lớn của cửa sổ một cách động, phụ thuộc vào độ lớn bộ đệm thu của thực thể TCP nhận. Để thực hiện cơ chế cửa sổ động, TCP đảm bảo:
- Trả lời về số tuần tự thu tiếp theo trong trường biên nhận, nghĩa là khẳng định tổng số Byte nhận đúng cho đến thời điểm gửi gói tin trả lời này;
- Thông báo về tổng số Byte nhận đúng có thể nhận được, tương ứng với độ lớn bộ nhớ đệm thu.
Cơ chế phát lại thích nghi
Để đảm bảo kiểm tra phát hiện và khắc phục lỗi trong việc trao đổ số liệu qua mạng diện rộng, được kết nối từ nhiều mạng khác nhau, TCP phải có cơ chế đồng hồ kiểm tra phát (time-out) và cơ chế phát lại (retransmission) mềm dẻo, thay đổi phụ thuộc vào thời gian trễ thực của môi trường truyền dẫn cụ thể, cũng như số chặng mà gói tin đi qua. Thời gian trễ toàn phần RTT(Round-trip-time), được xác định từ thời điểm bắt đầu phát gói số liệu cho đến khi nhận được biên nhận của gói số liệu đó. Nó là yếu tố quyết định giá trị của đồng hồ kiểm tra phát (Tout).
Cơ chế phát lại thích nghi dựa trên việc xác định thời gian trễ toàn phần RTT theo thời gian. Bằng việc sử dụng các hàm xác định thời gian của hệ điều hành, hoàn toàn xác định được thời gian trễ toàn phần của một kết nối TCP tại các mốc thời gian nhất định. Có thể tính thời gian trễ toàn phần RTT theo công thức sau đây:
RTT = (* Old_RTT) + (1-)*New_RTT, trong đó 0<1.
Từ đó, có thể tính thời gian kiểm tra phát Tout theo công thức:
Tout = * RTT, với = 2.
Cơ chế điều khiển tắc nghẽn số liệu
Hiện tượng tắc nghẽn số liệu được thể hiện trước hết ở việc gia tăng thời gian trễ RTT của một gói số liệu (bất kỳ) khi chuyển qua mạng. Để hạn chế khả năng dẫn đến tắc nghẽn số liệu trong mạng, người ta điều khiển lưu lượng số liệu trao đổi trên mạng theo thuật toán bao gồm các pha như sau:
Pha bắt đầu chậm (Slow Start), Pha tránh tắc nghẽn (Congestion Avoidance),
Pha phát lại nhanh (Fast Retransmission) và khôi phục nhanh (Fast Recovery) [1].
- Pha bắt đầu chậm
Giai đoạn này nhằm mục đích giảm bớt sự bùng nỗ của lưu lượng khi bắt đầu phát dữ liệu vào kênh truyền. Thuật toán bắt đầu chậm định nghĩa thêm khái niệm "cửa sổ tắc nghẽn" (congestion window), hay còn gọi là cửa sổ phát, cho thực thể TCP phát. Khi thiết lập kết nối TCP, cửa sổ phát được gán giá trị là một gói số liệu. Thực thể TCP bắt đầu phát với cửa sổ tắc nghẽn là một. Mỗi khi nhận được thông báo trả lời ACK không lặp, giá trị cửa sổ phát được tăng thêm một (nói một cách khác giá trị cửa sổ phát tăng gấp đôi), cho đến khi cửa sổ phát đạt đến một giá trị ngưỡng - giá trị ước lượng dung lượng còn lại của mạng trong một thời điểm nhất định. Đến đây, thực thể phát cần biết rằng độ lớn cửa sổ phát đã quá lớn, và cần phải có điều chỉnh phù hợp.
- Pha tránh tắc nghẽn
Khi kích thước cửa sổ phát đã đạt ngưỡng, cửa sổ phát sẽ tăng chậm hơn, cụ thể: cửa sổ phát sẽ được tăng lên một khi nhận được biên nhận của tất cả các gói tin trong cửa sổ. Khi phát hiện thấy có gói số liệu bị mất, chứng tỏ tắc nghẽn đã xảy ra trong mạng.
Đặc trưng của hiện tượng tắc nghẽn số liệu là thời gian trễ RTT tăng.
Những nguyên nhân chính dẫn đến sự gia tăng giá trị RTT là: hiện tượng mất gói số liệu tại một hệ định tuyến nào đó trong mạng (do thiếu bộ nhớ nhận chẳng hạn), dẫn đến hết giờ (time-out) và thực thể phải thực hiện phát gói số liệu bị mất; hoặc thực thể phát nhận được nhiều lần các thông báo trả lời ACK cho cùng một gói tin, điều đó cho biết tại trạm nhận, các gói số liệu đến không đúng thứ tự phát. Vì vậy, người ta thường dùng hai cơ chế phát hiện
tắc nghẽn là: sự hết giờ (time-out) và bên phát nhận ba biên nhận lặp liên tiếp [2].
- Pha phát lại nhanh
Thông thường, thực thể TCP thực hiện phát lại một gói số liệu khi nhận được thông báo NAK (thu sai) hoặc được đồng hồ quản lý phát lại kích hoạt (time-out). Thuật toán phát lại nhanh (Fast Retransmission) cho phép thực thể phát thực hiện phát lại không cần chờ đồng hồ “time-out”, trong trường hợp nhận được nhiều hơn hai thông báo ACK lặp lại (duplicated ACK) [2].
Thông báo ACK lặp lại được tạo ra trong trường hợp thực thể nhận thông báo gói số liệu đến không đúng theo thứ tự phát (out-of-order) và nêu số thứ tự gói số liệu chờ nhận. Trong thực tế, thường chỉ cần từ một đến hai thông báo ACK lặp lại là đủ để gói số liệu “bị lạc” đến và được xử lý đúng thứ tự. Nếu thực thể phát nhận được nhiều hơn ba thông báo ACK lặp lại thì điều đó đồng nghĩa với việc gói số liệu bị mất (packet loss) và trong trường hợp này, gói số liệu đó được phát lại ngay mà không chờ đến time-out, sau đó quay về giai đoạn khởi động chậm với cửa sổ phát bằng một. Trong các phiên bản TCP ra đời sau (Reno, New-Reno,...), sau khi phát lại nhanh thì thực hiện khôi phục nhanh (Fast Recovery) tức là giảm cửa sổ phát xuống còn một nửa - chứ không phải là một như giai đoạn khởi động chậm. Sau đó mỗi khi nhận một biên nhận lặp bên phát sẽ gửi một gói số liệu. Đến khi nhận được biên nhận không lặp, còn được gọi là "biên nhận khôi phục" thì mới ra khỏi giai đoạn khôi phục nhanh và hoạt động bình thường trở lại.