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;
31
- 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),
32
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
33
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.
34
1.3 Cỏc cơ chế cải thiện hiệu suất TCP trong mạng khụng đồng nhất
1.3.1 Cỏc cơ chế cải thiện hiệu suất TCP trong mạng cú đường truyền khụng dõy
Trong mạng cú đường truyền khụng dõy, sự mất gúi số liệu chủ yếu là do lỗi đường truyền hoặc do sự chuyển cuộc gọi gõy trễ quỏ dài, chứ khụng phải là do tắc nghẽn trờn mạng. Người ta đó đề xuất nhiều phương phỏp giải quyết vấn đề này, chỳng cú thể được chia làm hai loại chớnh. Loại thứ nhất bao gồm cỏc giải phỏp che giấu phần mạng hay làm mất gúi số liệu do lỗi đường truyền, sao cho bờn gửi chỉ phỏt hiện được những sự mất gúi số liệu do tắc nghẽn. Loại thứ hai bao gồm cỏc giải phỏp cải tiến TCP bằng cỏc cơ chế thụng bỏo rừ ràng về nguyờn nhõn mất gúi số liệu, giỳp cho TCP cú thể phõn biệt được cỏc kiểu mất gúi số liệu khỏc nhau.
1.3.1.1 Cơ chế che giấu phần mạng hay làm mất gúi số liệu do lỗi đường truyền
Phương phỏp che giấu sự mất gúi số liệu khụng phải do tắc nghẽn, khụng cho bờn gửi của kết nối TCP phỏt hiện ra. Theo cỏch tiếp cận này, vỡ vấn đề xảy ra cú tớnh cục bộ, cho nờn giải quyết nú theo cỏch cục bộ, tầng Giao vận khụng cần phải nhận thấy cỏc đặc điểm của cỏc đường truyền riờng lẻ. Cỏc giao thức theo cỏch tiếp cận này cố gắng làm cho cỏc đường truyền gõy nhiều lỗi thể hiện ra như thể cỏc đường truyền cú chất lượng cao, nhưng cú dải thụng sử dụng được nhỏ hơn. Kết quả là bờn gửi của kết nối TCP hầu như chỉ nhận thấy sự mất gúi số liệu do tắc nghẽn mạng.
Cỏc giải phỏp ở tầng Liờn kết dữ liệu
Cỏc kỹ thuật khắc phục lỗi phổ biến nhất ở tầng Liờn kết dữ liệu thường cú hai dạng như sau:
35
Phỏt hiện lỗi/ Khắc phục lỗi: phương phỏp này người ta thờm một lượng thụng tin vào dữ liệu, theo một số thuật toỏn nhất định, sao cho bờn nhận cú thể phỏt hiện hoặc tự sửa lại dữ liệu bị lỗi cho đỳng.
Yờu cầu phỏt lại tự động (Automatic Repeat reQuest - ARQ): khi phỏt hiện ra một lỗi trong dóy dữ liệu đến, bờn nhận yờu cầu bờn gửi gửi lại.
Bằng cỏch kết hợp kỹ thuật phỏt hiện lỗi và kỹ thuật yờu cầu phỏt lại tự động trong giao thức tầng Liờn kết dữ liệu, người ta cú thể biến tầng Liờn kết dữ liệu khụng tin cậy thành một tầng tin cậy.
Cỏc giải phỏp ở tầng Giao vận
Cỏc giải phỏp này cố gắng nõng cao chất lượng đường truyền bằng cỏch phỏt lại cỏc gúi số liệu bị lỗi ở mức giao thức TCP. Người ta sẽ tạo một agent TCP trờn bộ định tuyến ở đầu vào của đường truyền gõy nhiều lỗi, agent này sẽ giữ bản sao của mọi gúi số liệu từ bộ định tuyến đi vào đường truyền này. Nếu nhận được biờn nhận của một gúi số liệu, agent sẽ loại bỏ bản sao của gúi số liệu đú khỏi bộ nhớ đệm của nú, cũn nếu biết rằng gúi số liệu bị mất, agent này sẽ thay mặt cho bờn gửi phỏt lại gúi số liệu. Cú hai cơ chế thực hiện agent, đú là TCP giỏn tiếp (Indirect TCP – I-TCP) và Snoop TCP.
TCP giỏn tiếp (Indirect TCP):
Theo cơ chế này, kết nối TCP từ người gửi sẽ kết thỳc tại đầu vào đường truyền hay gõy ra lỗi, nơi đặt agent TCP, agent sẽ biờn nhận cỏc gúi số liệu mà nú nhận được và chịu trỏch nhiệm gửi nú đến đớch. Trờn đường truyền khụng dõy, nơi cú tỉ suất lỗi bớt cao và thất thường, một kết nối TCP được tinh chỉnh cho phự hợp với đặc điểm của đường truyền này (thớ dụ SACK TCP) sẽ thiết lập. Ngoài kết nối TCP, tại đõy, cũng cú thể sử dụng một giao thức giao vận khỏc.
36
Nhược điểm của I-TCP là khụng tuõn thủ cơ chế điều khiển lưu lượng “đầu cuối-đầu cuối” trong giao thức TCP, nỳt trung gian (nỳt gắn agent TCP) gửi biờn nhận thay cho bờn nhận, do đú biờn nhận cú thể được bờn gửi nhận trước khi gúi số liệu thực sự đến bờn nhận. Ngoài ra I-TCP cũng gõy khú khăn cho cỏc trạm cơ sở (BS), vỡ chỳng phải chuyển một lượng lớn thụng tin trạng thỏi khi xảy ra việc chuyển cuộc gọi.
Snoop-TCP:
Cơ chế thực hiện agent TCP này tụn trọng ngữ nghĩa “end-to-end”. Agent nằm giữa hai mạng khụng chia đụi kết nối TCP, nú chỉ giữ bản sao cỏc gúi số liệu chứ khụng tự sinh ra cỏc biờn nhận. Cỏc biờn nhận khụng phải là biờn nhận lặp sẽ được agent chuyển tiếp tới bờn gửi, cũn cỏc biờn nhận lặp sẽ bị chặn lại. Khi nhận được biờn nhận lặp thứ ba, hoặc khi agent đó chờ hết thời gian hết giờ cục bộ, gúi số liệu tương ứng sẽ được agent phỏt lại. Thời gian hết giờ cục bộ này phải được xỏc định phự hợp với đường truyền khụng dõy chỉ cú một chặng, nú đương nhiờn là nhỏ hơn thời gian hết giờ mà bờn gửi (nguồn) sử dụng. Giải phỏp này cũng cú nhược điểm tương tự giải phỏp phỏt lại ở tầng Liờn kết dữ liệu, đú là việc nú cú thể cản trở cỏc cơ chế kiểu “đầu cuối - đầu cuối”. Về thực chất giải phỏp Snoop-TCP cũng giống giải phỏp phỏt lại ở tầng Liờn kết dữ liệu, chỳng che giấu mọi sự mất gúi số liệu gõy ra bởi đường truyền. Cả hai giải phỏp này đều đũi hỏi khụng cú sự mất gúi số liệu do tắc nghẽn trờn đường truyền giữa Snoop agent và đớch [2].
1.3.1.2 Thụng bỏo rừ ràng về nguyờn nhõn mất gúi số liệu
Việc cải thiện chất lượng cỏc đường truyền Internet khụng che giấu được tất cả cỏc mất mỏt khụng phải do tắc nghẽn. Nguyờn nhõn thứ nhất là, mặc dự cỏc mất mỏt gúi số liệu kiểu này tập trung trờn cỏc đường truyền khụng dõy, nhưng chỳng cũng cú thể xuất hiện ở mọi nơi trong mạng và cú lẽ
37
khụng thể che giấu hết cỏc lỗi này. Thứ hai là, cỏc cơ chế kiểu cục bộ, chẳng hạn như giải phỏp thờm thụng tin khắc phục lỗi (FEC) cho gúi số liệu cũng khụng thể khụi phục được cỏc gúi số liệu bị mất. Khi đú giải phỏp cải thiện hiệu suất TCP bằng một số cơ chế làm cho bờn gửi nhận thấy được sự tồn tại của cỏc chặng khụng dõy và những sự mất mỏt gúi số liệu khụng phải do tắc nghẽn mạng sẽ trỏnh cho bờn gửi khỏi kớch hoạt cỏc thuật toỏn điều khiển tắc nghẽn khi xảy ra mất gúi số liệu khụng do tắc nghẽn.
Thụng bỏo rừ việc mất gúi số liệu - ELN (Explicit Loss Notification):
Người ta đó đề xuất hai cỏch tiếp cận, cỏch thứ nhất là thụng bỏo rừ ràng nơi xảy ra việc mất gúi số liệu khụng phải do tắc nghẽn bằng tớn hiệu ELN. Bờn gửi phản ứng lại bằng cỏch phỏt lại gúi số liệu bị mất mà khụng giảm kớch thước cửa sổ của nú. Người ta cũng đề xuất việc sử dụng một tớn hiệu giống hệt như vậy để dừng ngay việc điều khiển tắc nghẽn ở bờn gửi khi xuất hiện sự đứt kết nối do việc chuyển cuộc gọi trong mạng tế bào. Cỏi khú của việc thực hiện giải phỏp này là nếu cú gúi số liệu bị hỏng, nú sẽ bị loại ngay tại tầng Liờn kết dữ liệu trước khi được chuyển lờn cho tầng giao vận, vỡ thế khú cú thể nhận được thụng tin ELN.
Thụng bỏo rừ về tắc nghẽn - ECN (Explicit Congestion Notification):
Cỏch tiếp cận thứ hai là cải tiến sự điều khiển lưu lượng của giao thức TCP chứ khụng phải là việc khụi phục lại sau khi cú sự mất gúi số liệu khụng phải do tắc nghẽn. Cỏc giải phỏp được người ta đề xuất nhằm phục mục đớch tỏch việc phỏt hiện tắc nghẽn khỏi vấn đề mất mỏt gúi số liệu. Bằng cỏch bổ sung một số cơ chế vào trong mạng hoặc bổ sung vào bờn nguồn, tắc nghẽn sẽ bị phỏt hiện và thụng lượng sẽ được giảm trước khi xảy ra tràn bộ đệm trong mạng. Một trong cỏc giải phỏp như vậy được thực hiện trong phiờn bản Vegas
38
Với ECN, cỏc bộ định tuyến sẽ gửi một tớn hiệu chỉ rừ sự tắc nghẽn trong mạng cho bờn gửi của kết nối TCP, chứ khụng loại bỏ gúi số liệu. Nếu tất cả mọi nguồn gửi, đớch nhận và bộ định tuyến đều phục tựng cơ chế này (Vegas hoặc ECN), sự mất gúi số liệu do tắc nghẽn sẽ được giảm đi đỏng kể. Do đú, cỏc sự mất mỏt cũn lại cú thể được xem chủ yếu gõy ra bởi vấn đề khỏc, chứ khụng phải là tắc nghẽn; bờn gửi chỉ cần phỏt gúi số liệu mà khụng phải giảm kớch thước cửa sổ. Sự biến mất của cỏc mất mỏt do tắc nghẽn cú thể dẫn tới việc xỏc định lại thuật toỏn điều khiển tắc nghẽn của giao thức TCP, để cho nú phản ứng nhẹ hơn với việc mất gúi số liệu.
Cỏc mạng ngày nay khụng cú hành trạng lý tưởng như vậy. Bởi vỡ khụng cú phản hồi từ mạng, nờn việc phỏt hiện tắc nghẽn sớm, trước khi nú xảy ra, tại bờn gửi, sẽ khụng thực hiện được; dẫn đến sự mất gúi số liệu do tắc nghẽn là khụng thể trỏnh được. Nếu chỳng ta muốn thực hiện cơ chế điều khiển tắc nghẽn tại nguồn, dựa trờn cỏc thụng tin rừ ràng nhận được từ mạng, như trong ECN, thỡ điều chắc chắn là sẽ khụng dễ dàng, vỡ trong mạng, sẽ luụn cú một số bộ định tuyến khụng tuõn theo mệnh lệnh cung cấp cho bờn nguồn cỏc thụng tin nú yờu cầu. Điều này là một thực tế, bởi vỡ trờn Internet, hiện cú hàng chục, thậm chớ hàng trăm nghỡn bộ định tuyến, thuộc nhiều chủ sử hữu khỏc nhau, khụng ai cú thể buộc cỏc chủ sở hữu này thay đổi cơ chế hoạt động của cỏc bộ định tuyến của họ.
Tuy nhiờn, để đảm bảo chất lượng dịch vụ (QoS) trờn Internet, cần phải thực hiện cỏc cơ chế điều khiển lưu lượng như trờn, trong đú trong tương lai,