Ngày nay nhu cầu truyền thụng tin ngày càng tăng trong khi tài nguyờn của mạng cú giới hạn dẫn đến hiện tượng nghẽn mạng là điều khú trỏnh khỏi. Để giải quyết vấn đề này cú hai cỏch để khắc phục đú là: Tăng tài nguyờn của mạng và điều khiển để trỏnh tắc nghẽn mạng, tuy nhiờn việc tăng tài nguyờn mạng đũi hỏi chi phớ đầu tư lớn và cụng việc khụng thường xuyờn. Trong khi đú việc điều khiển trỏnh tắc nghẽn mạng cú thể sử dụng cỏc giao thức, cỏc thuọ̃t toỏn để điều khiển trong mạng. Vỡ vọ̃y, vấn đề xem xột để lựa chọn giao thức định tuyến kết hợp với giao thức truyền tin trờn mạng MANET trong điều khiển tắc nghẽn nõng cao hiệu năng mạng ngày càng trở nờn cấp thiết [6].
2.1. Phõn tớch hoạt động của TCP và TFRC trong quỏ trỡnh điều khiển trỏnh tắc nghẽn nghẽn
Trong quỏ trỡnh truyền, thụng tin thường xảy ra hiện tượng tắc nghẽn tại cỏc nỳt mạng do lưu lượng vượt quỏ khả năng xử lý của mạng. Khi tắc nghẽn xảy ra dữ liệu bị trễ được lưu lại trong hàng đợi hay bộ đệm tại cỏc nỳt chuyển mạch. Hiện tượng này là nguyờn nhõn gõy ra trễ trong quỏ trỡnh truyền tin và cú thể dẫn đến bị mất một số thụng tin khi phớa phỏt khụng xỏc định được trạng thỏi của dữ liệu đó được gửi đi. Nếu lượng thụng tin vẫn được đưa vào hàng đợi một cỏch liờn tục mà mạng khụng xử lý kịp thời thỡ cỏc gúi tin khụng cũn chỗ để lưu lại trong hàng đợi và sẽ bị xúa. Do đú cỏc gúi tin bị xúa này phải được phỏt lại, dẫn đến lóng phớ khả năng sử dụng tài nguyờn mạng. Bờn cạnh đú lượng thụng tin sử dụng trờn mạng quỏ lớn sẽ làm giảm tốc độ xử lý của mạng và gõy trễ trong quỏ trỡnh truyền tin. Để trỏnh hiện tượng tắc nghẽn “cổ chai” như trỡnh bày trờn, cần cú phương phỏp để giảm bớt lượng thụng tin khi trạng thỏi thụng qua của mạng chưa sẵn sàng. Việc ỏp dụng một phương phỏp nào đú để điều khiển lưu lượng mạng khụng cú nghĩa là đảm bảo mạng khụng bị trễ. Tuy nhiờn
với một thuọ̃t toỏn điều điều khiển tắc nghẽn sẽ đảm bảo một độ trễ cho phộp đối với từng dịch vụ. Đõy chớnh là chức năng của thuọ̃t toỏn điều khiển tắc nghẽn.
2.1.1. Vấn đề truyền tin và giải quyết tắc nghẽn của TCP
Hiện nay TCP vẫn là giao thức truyền tin được sử dụng phổ biến nhất. Điều khiển trỏnh tắc nghẽn trong TCP dựa trờn thuọ̃t toỏn tăng cộng giảm nhõn (AIMD).
Khi một kết nối được thiết lọ̃p, độ lớn cửa sổ truyền ban đầu là thấp, sau đú tăng dần lờn nhằm trỏnh tắc nghẽn. Quỏ trỡnh sẽ tăng liờn tục cho đến khi w đạt đến giỏ trị tối đa, tức là khi gặp lỗi hoặc khi nhọ̃n được gúi bỏo nhọ̃n ACK yờu cầu phỏt lại hoặc quỏ thời gian chờ tối đa cho phộp. Khi đú, độ lớn cửa sổ phỏt sẽ được giảm và quỏ trỡnh truyền lại bắt đầu một chu kỳ mới [1].
Việc trỏnh tắc nghẽn cú thể căn cứ vào thời gian khứ hồi gúi tin RTT (Round Trip Time: thời gian bắt đầu phỏt gúi dữ liệu cho đến khi nhận được trả lời) hoặc lượng dữ liệu đưa vào mạng để biết tắc nghẽn sắp xảy ra nếu khụng can thiệp. Nếu hàng đợi bộ định tuyến (Router) tăng, thời gian đợi tăng và RTT tăng, căn cứ vào RTT hiện tại sẽ biết được tắc nghẽn sắp xảy ra. Xỏc định RTT trung bỡnh, nếu RTTht > RTTtb thỡ giảm cwnd(1/8). Ngược lại thỡ tăng cửa sổ tắc nghẽn cwnd lờn một gúi cực đại.
Khởi động chọ̃m Trỏnh tắc nghẽn
Giỏ trị ngưỡng
(ssth)
Giỏ trị mong muốn Giỏ trị tối đa Segment bị mất Segment bị mất Segment bị mất
Độ lớn cw
nd
Thời gian
1
Cơ chế bắt đầu chọ̃m (Slow-start): Lỳc khởi động nỳt gửi khụng thể gửi toàn bộ số liệu ứng với cửa sổ quy định (advertised window) vỡ sợ cỏc router trờn mạng khụng thể nhọ̃n kịp số gúi dữ liệu tối đa ồ ạt và dẫn đến tắc nghẽn. Nhưng ngược lại, khụng thể tăng tuyến tớnh, vỡ như thế sẽ quỏ lõu và cần tăng nhanh đến cửa sổ tắc nghẽn, nhờ cơ chế bắt đầu chọ̃m nú tăng theo lũy tiến chứ khụng phải tuyến tớnh. Lỳc bắt đầu phỏt với cwnd=1, mỗi khi nhọ̃n được thụng bỏo trả lời ACK (bỏo nhọ̃n), cwnd được tăng thờm gấp đụi (1, 2, 4, 8, 16...) cho đến khi xuất hiện tỡnh trạng tắc nghẽn dữ liệu, thể hiện qua việc gia tăng giỏ trị thời gian trễ RTT. Giai đoạn khởi động chọ̃m kết thỳc khi cửa sổ w đạt đến ngưỡng nhất định.
Cơ chế trỏnh tắc nghẽn (Congestion Avoidance): TCP phỏt với MaxWindow w = min {cwnd, rwnd}.
Trong đú: - cwnd: (Congestion window): xỏc lọ̃p trờn cơ sở mức tắc nghẽn thấy được trờn mạng.
- rwnd: (Receive window) cửa sổ thu cho phộp.
Khi cú hiện tượng tắc nghẽn, thể hiện ở Time-out hoặc Duplicated ACK, đặt giỏ trị cửa sổ là w/2 (khụng nhỏ hơn 2 đơn vị gúi dữ liệu) lưu giữ trong trường ssthresh và đặt cwnd=1 đơn vị gúi dữ liệu (giảm theo cấp số nhõn để thoỏt nhanh trỏnh tắc nghẽn).
Khi nhọ̃n được thụng bỏo ACK (giảm tắc nghẽn)
Nếu cwnd < ssthresh, thuọ̃t toỏn bắt đầu chọ̃m thực hiện: giỏ trị cwnd được tăng một đơn vị gúi dữ liệu với mỗi thụng bỏo ACK nhọ̃n được.
Nếu cwnd = ssthresh thuọ̃t toỏn trỏnh tắc nghẽn được thực hiện: giỏ trị cwnd được tăng 1/cwnd với mỗi thụng bỏo ACK nhọ̃n được (tăng tuyến tớnh để khụng rơi lại vào tắc nghẽn).
Cơ chế phỏt lại nhanh (Fast Retransmission): TCP thực hiện phỏt một gúi dữ 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). Nếu chờ time-out mới phỏt lại gõy ra số gúi phỏt lại nhiều (hoặc đũi hỏi bộ đệm phớa thu lớn để giữ tạm cỏc gúi sai số thứ tự), điều đú dễ gõy ra tắc nghẽn. Cơ chế phỏt lại nhanh cho phộp phỏt lại khụng cần chờ time-out, trong trường hợp nhọ̃n được hơn ba thụng bỏo ACK lặp lại (duplicated ACK), nghĩa là cú gúi dữ liệu bị mất, cần phỏt lại.
Cơ chế phục hồi nhanh (Fast Recovery): Khi xảy ra time-out là bắt đầu lại “Slow Start”, quỏ trỡnh “Slow Start” là khụng cần thiết. Ta cú thể bắt đầu ngay quỏ trỡnh tuyến tớnh từ threshold lỳc time-out (phục hồi nhanh).
Khi time-out hoặc nhọ̃n được ba thụng bỏo ACK lặp lại, trạm phỏt thiết lọ̃p ssthresh = cwnd/2 (khụng nhỏ hơn hai đơn vị gúi dữ liệu) và phỏt lại gúi dữ liệu mất, tăng cwnd = cwnd + 3*smss. Điều này cho phộp tăng “nhõn tạo” cửa sổ phỏt cwnd tương ứng ba gúi dữ liệu như được nhọ̃n trong bộ đệm của trạm nhọ̃n.
Với mỗi thụng bỏo ACK lặp lại, tăng cwnd = cwnd + 1*smss, tương ứng với một gúi dữ liệu được phỏt vào mạng. Thực hiện phỏt một gúi dữ liệu, nếu thoó món: w = min {cwnd, rwnd}. Khi nhọ̃n được thụng bỏo trả lời ACK khụng bị lặp lại, nghĩa là một gúi dữ liệu mới đó được nhọ̃n đỳng, thực thể TCP thiết lọ̃p lại giỏ trị cwnd được giữ trong trường ssthresh và thực hiện việc phỏt bỡnh thường trở lại với qui tắc:
w = min {cwnd, rwnd}
Cơ chế phục hồi nhanh trỏnh cho lưu lượng dữ liệu trong kết nối TCP khụng bị thay đổi đột ngột và đảm bảo thụng lượng dữ liệu được phự hợp.
2.1.2. Giao thức truyền tin TFRC
Giao thức truyền tin TFRC [3], [4] sử dụng cơ chế điều khiển tắc nghẽn dựa vào quỏ trỡnh điều khiển thụng lượng. Trong khi điều khiển tắc nghẽn AIDM được thực hiện tương ứng với một dấu hiệu tắc nghẽn, điều khiển tắc nghẽn dựa vào quỏ trỡnh điều khiển thụng lượng là một biểu thức tớnh tốc độ gửi tối đa như một hàm của tỉ lệ sự kiện mất gúi trong khoảng thời gian ngắn. Thiết bị phỏt điều chỉnh tốc độ gửi được ước tớnh bởi biểu thức tớnh thụng lượng này, tương ứng với thụng tin phản hồi từ mỏy thu.
Điều khiển tắc nghẽn dựa trờn quỏ trỡnh điều khiển thụng lượng tăng tốc độ gửi chọ̃m hơn tương ứng với việc giảm tỉ lệ sự kiện mất gúi để sử dụng băng thụng sẵn cú nhằm duy trỡ một tốc độ gửi tương đối ổn định trong khi vẫn hạn chế được tắc nghẽn. Để thực hiện được điều này, điều khiển tắc nghẽn dựa trờn quỏ trỡnh điều khiển thụng lượng thực hiện cõn bằng việc hạn chế sử dụng tối đa băng thụng cú sẵn theo cỏch thức của TCP.
Cỏc ưu điểm thiết kế truyền thống cho điều khiển tắc nghẽn dựa trờn quỏ trỡnh điều khiển thụng lượng cho cỏc lưu lượng unicast gồm cú:
- Mỏy thu gửi bản tin phản hồi lại cho mỏy phỏt ớt nhất một lần mỗi RTT nếu nú nhận được cỏc gúi trong khoảng thời gian đú.
- Nếu mỏy phỏt khụng nhận được phản hồi sau một vài RTT, mỏy phỏt sẽ giảm tốc độ gửi của nú và cuối cựng ngừng hoàn toàn việc gửi.
TFRC sử dụng cơ chế điều khiển tắc nghẽn dựa vào quỏ trỡnh điều khiển thụng lượng, được thiết kế cho cỏc luồng unicast hoạt động trong mụi trường Internet và hoạt động cựng với cỏc lưu lượng TCP. Cơ chế này cú thể được sử dụng trong một giao thức truyền tải như RTP, UDP hay DCCP. TFRC hoạt động bảo đảm cụng bằng về băng thụng với cỏc luồng TCP, ở đú một luồng nếu tốc độ gửi của nú tương đương với tốc độ gửi của một luồng TCP dưới cỏc điều kiện như nhau. Tuy nhiờn, TFRC cú sự thay đổi thụng lượng theo thời gian thấp hơn so với TCP, điều này giỳp nú phự hợp hơn với cỏc ứng dụng như điện thoại hoặc luồng đa phương tiện.
Do cú thụng lượng ổn định hơn TCP khi hoạt động cụng bằng về băng thụng nờn TFRC đỏp ứng chọ̃m hơn TCP đối với việc thay đổi băng thụng cú sẵn. Do đú TFRC chỉ nờn được sử dụng khi ứng dụng cú yờu cầu về thụng lượng ổn định đặc biệt là trỏnh việc giảm một nửa tốc độ gửi của TCP khi cú một gúi bị rơi.
TFRC được thiết kế cho cỏc ứng dụng sử dụng kớch thước gúi cố định và thay đổi tốc độ gửi của chỳng theo gúi/giõy khi cú tắc nghẽn. TFRC là một cơ chế phớa thu với cỏc tớnh toỏn thụng tin điều khiển tắc nghẽn (vớ dụ tỉ lệ sự kiện mất gúi) trong dữ liệu bờn thu hơn là trong dữ liệu bờn phỏt.
Cơ chế hoạt động của giao thức TFRC
TFRC là một cơ chế dựa vào mỏy thu (receiver-based) [3], [4] với cỏc tớnh toỏn thụng tin điều khiển xung đột tại mỏy thu tốt hơn là tại mỏy phỏt. Đối với cơ chế điều khiển tắc nghẽn của nú, TFRC trực tiếp sử dụng một biểu thức tớnh thụng lượng cho tốc độ gửi cho phộp như một hàm của tỉ lệ sự kiện mất gúi, round-trip time và kớch thước gúi. Núi chung, cơ chế điều khiển tắc nghẽn của TFRC (hỡnh 2.2) như sau:
- Mỏy thu đo tỉ lệ sự kiện mất gúi (the loss event rate) và truyền thụng tin đú cho mỏy phỏt.
- Mỏy phỏt cũng sử dụng cỏc bản tin phản hồi đú để đo RTT.
- Tỉ lệ sự kiện mất gúi và RTT sau đú được chuyển vào biểu thức tớnh thụng lượng của TFRC để đưa ra tốc độ truyền cú thể chấp nhận được.
- Mỏy phỏt sau đú điều chỉnh tốc độ truyền phự hợp với tốc độ tớnh toỏn.
Hỡnh 2.2. Cơ chế hoạt động của giao thức TFRC 2.1.2.1. Biểu thức tớnh thụng lượng
Trờn cỏc mạng hiện nay, sự tồn tại của cỏc luồng lưu lượng TCP là một tất yếu. Vỡ vọ̃y giao thức TFRC chỉ thực sự được sử dụng rộng rói khi nú đảm bảo hoạt động tương thớch với cỏc lưu lượng TCP. Một luồng tương thớch TCP là một luồng mà ở trạng thỏi ổn định khụng sử dụng băng thụng nhiều hơn so với một luồng TCP thụng thường chạy trong cỏc điều kiện như nhau. Đối với cỏc lưu lượng best- effort hoạt động cựng TCP trờn Internet hiện nay, để trở nờn tương thớch với TCP, lựa chọn đỳng đắn cho biểu thức điều khiển là một hàm tương ứng TCP mụ tả tốc độ gửi ở trạng thỏi ổn định của TCP. Nếu chỳng ta sử dụng một hàm đỏp ứng kộm linh hoạt hơn nhiều khi đú lưu lượng kộm linh động hơn cú thể bị giảm khi hoạt động cựng lưu lượng TCP trong một hàng đợi FIFO. Trong thực tế, khi hai loại lưu lượng hoạt động trong một hàng đợi FIFO, hiệu suất cú thể chấp nhọ̃n được cho hai loại lưu lượng chỉ cú kết quả nếu hai loại lưu lượng cú cỏc hàm đỏp ứng tương tự nhau.
TFRC sử dụng biểu thức thụng lượng của TCP như một hàm của tỉ lệ sự kiện mất gúi và RTT. Tuy nhiờn, cần chỳ ý rằng biểu thức tớnh thụng lượng TCP đó sử dụng phải trả lời hoạt động truyền lại sau thời gian timeout, điều này làm ảnh hưởng lớn đến thụng lượng TCP làm tỉ lệ mất gúi cao hơn. Chỳng ta cũng chỳ ý rằng cỏc giả thiết ẩn trong biểu thức thụng lượng về tham số tỉ lệ sự kiện mất gúi phải là một sự
phự hợp để thực hiện đo tỉ lệ mất gúi hoặc tỉ lệ sự kiện mất gúi. Biểu thức thụng lượng sử dụng trong TFRC như sau [3], [4]:
Trong đú:
X là tốc độ truyền (byte/s) S là kớch thước gúi (byte) R là round-trip time (s)
p là tỉ lệ sự kiện mất gúi (cú giỏ trị từ 0 đến 1) t_RTO là giỏ trị timeout cho việc truyền lại TCP (s) b là số lượng gúi được chấp nhọ̃n bằng 1 TCP ACK đơn
Mỏy phỏt và mỏy thu cựng sử dụng cỏc số thứ tự cho việc đo RTT. Mỗi lần mỏy thu gửi phản hồi nú lặp lại số thứ tự từ gúi dữ liệu gần nhất, cựng với thời gian từ lỳc gúi đú được nhọ̃n. Trong cỏch này, mỏy phỏt đo RTT qua mạng. Mỏy phỏt khi đú dàn xếp việc đo RTT sử dụng một trung bỡnh dịch chuyển cú trọng số tăng theo hàm mũ (EWMA). Trọng số này quyết định tớnh đỏp ứng của tốc độ truyền thay đổi theo RTT. Mỏy phỏt cũng nhọ̃n được tỉ lệ sự kiện mất gúi p trong cỏc bản tin phản hồi từ mỏy thu ớt nhất một lần/RTT.
Mỏy phỏt cú thể nhọ̃n được giỏ trị timeout truyền lại t_RTO sử dụng thuọ̃t toỏn TCP thụng thường: t_RTO = SRTT +4*RTTvar
Trong đú:
RTTvar là sự thay đổi của RTT SRTT là ước tớnh RTT
Tuy nhiờn, trong thực tế t_RTO chỉ ảnh hưởng nghiờm trọng đến tốc độ gửi khi tỉ lệ mất gúi là rất cao. Khụng giống với TCP, TFRC khụng sử dụng giỏ trị này để quyết định việc truyền lại cú an toàn khụng và vỡ vọ̃y họ̃u quả của việc tớnh sai là khụng quỏ nghiờm trọng. Trờn thực tế, dựa trờn những dự đoỏn với t_RTO = 4R thỡ TFRC cú thể hoạt động cụng bằng với TCP [4].
Cỏc thụng số s (kớch thước gúi), p (tỉ lệ sự kiện mất gúi) và R (round-trip time) cần được đo hoặc tớnh toỏn bởi một hoạt động của TFRC. Trong cỏc phiờn bản sau, cỏc biểu thức TCP khỏc nhau cú thể thay thế cho biểu thức này. Yờu cầu là biểu thức thụng lượng phải là một xấp xỉ hợp lý của tốc độ gửi của TCP cho điều khiển tắc nghẽn đảm bảo hoạt động của cỏc luồng lưu lượng này trờn mạng.
2.1.2.2. Cỏc loại gúi tin
Nội dung của cỏc gúi dữ liệu được gửi bởi mỏy phỏt và cỏc gúi phản hồi được gửi bằng mỏy thu. Do TFRC sẽ được sử dụng với một giao thức truyền tải nờn ở đõy khụng chỉ ra cỏc định dạng gúi vỡ chỳng phụ thuộc vào chi tiết của giao thức truyền tải đó sử dụng.
Cỏc gúi dữ liệu
Mỗi gúi dữ liệu được gửi bởi mỏy phỏt dữ liệu chứa thụng tin sau đõy:
- Một số thứ tự (sequence number): Số này được tăng lờn một sau mỗi lần một gúi dữ liệu được truyền. Trường này phải đủ lớn sao cho khụng tồn tại hai gúi khỏc nhau cú cựng số thứ tự chứa trong hồ sơ gúi gần đõy của mỏy thu tại cựng thời điểm.
- Một thời gian mẫu (timestamp) chỉ ra thời điểm gúi được gửi. Mỗi gúi cú số thứ tự và sẽ cú thời gian mẫu tương ứng (thường được đo bằng mili giõy). Thời gian mẫu này được sử dụng bởi mỏy thu để quyết định những lần mất gúi nào thuộc về cựng sự kiện mất gúi. Thời gian mẫu cũng được mỏy thu gửi lại, cho phộp mỏy phỏt ước lượng RTT đối với cỏc mỏy phỏt mà khụng lưu cỏc thời gian mẫu của cỏc gúi dữ liệu đó phỏt. Ngoài ra, mỏy phỏt cũng cú thể lưu cỏc timestamp của cỏc gúi dữ liệu đó