CHUƠNG II : GIAO THỨC ĐIỀU KHIỂN TỐC ĐỘ TRÁNH NGHẼN TFRC
2.3 Tính tỉ lệ sự kiện mất gói
2.3.4 Cơ chế history Discounting
Do phương pháp khoảng thời gian mất gói trung bình lấy trung bình qua một số khoảng thời gian mất gói hơn là lấy qua một vài gói đến. Phương pháp này với các trọng số cố định đáp ứng nhanh và hợp lý khi nghẽn tăng đột ngột, nhưng nó chậm khi đáp ứng với việc giảm đột ngột tỉ lệ mất gói được đặc trưng bởi một khoảng thời gian lớn tính từ sự kiện mất gói cuối cùng. Để cho phép một đáp ứng theo thời gian hơn với một nghẽn giảm liên tục, chúng ta phát triển cơ chế history discounting với phương pháp khoảng thời gian mất gói trung bình, cho phép máy thu TFRC thay đổi các trọng số trong phương pháp trung bình có trọng số với các trường hợp đặc biệt của
một khoảng thời gian dài nào đó tính từ gói bị rớt cuối cùng, để khấu trừ các trọng số được đưa ra đối với các khoảng thời gian mất gói trước đó. Cơ chế history discounting chỉ được đưa ra bởi TFRC sau khi khoảng thời gian mất gói gần nhất s0 là lớn hơn hai lần so với khoảng thời gian mất gói trung bình. Khả năng cho phép các trọng số đáp ứng chung hơn trong trung bình có trọng số này chưa được khai thác.
Cơ chế history discounting tùy chọn cho phép máy thu TFRC cân bằng các trọng số, tập trung nhiều hơn vào mối quan hệ trọng số trên khoảng thời gian mất gói gần nhất khi khoảng thời gian mất gói gần nhất lớn hơn hai lần khoảng thời gian mất gói trung bình đã tính từ đó cho phép đáp ứng hơn với thời gian hơn với sự vắng mặt đột ngột của nghẽn.
Để thực hiện cơ chế history discounting, một hệ số khấu trừ DF_i được gán với mỗi khoảng thời gian mất gói L_i với i > 0, ở đó mỗi hệ số khấu trừ là một số thực. Mảng discount duy trì hồ sơ của việc khấu trừ đối với mỗi khoảng thời gian mất gói. Ngay khi bắt đầu, các giá trị của DF_i trong mảng discount được khởi đầu là 1:
for (i = 1 to n) { DF_i = 1; }
History discounting cũng sử dụng một hệ số khấu trừ thông thường DF cũng là một số thực, nó cũng được khởi đầu là 1. Trước tiên, cách các hệ số discount được sử dụng trong việc tính khoảng thời gian mất gói trung bình được đưa ra, sau đó là mơ tả cách các hệ số discount được thay đổi theo thời gian.
Như đã mơ tả trong phần 2.3.3 việc tính khoảng thời gian mất gói trung bình sử dụng n khoảng thời gian mất gói trước đó I_1, I_2, …., I_n và khoảng thời gian mất gói I_0 đại diện cho số lượng các gói đã nhận từ sự kiện mất gói sau cùng. Việc tính khoảng thời gian mất gói trung bình sử dụng các hệ số discount là một sự thay đổi nhỏ của thủ tục trong phần 2.3.3 như sau:
I_tot0 = I_0 * w_0 I_tot1 = 0; W_tot0 = w_0 W_tot1 = 0; for (i = 1 to n-1) {
I_tot0 = I_tot0 + (I_i * w_i * DF_i * DF); W_tot0 = W_tot0 + w_i * DF_i * DF; }
for (i = 1 to n) {
I_tot1 = I_tot1 + (I_i * w_(i-1) * DF_i); W_tot1 = W_tot1 + w_(i-1) * DF_i; }
p = min(W_tot0/I_tot0, W_tot1/I_tot1);
Thông thường hệ số khấu trừ, DF được cập nhật trên mỗi gói đến như sau: đầu tiên, máy thu tính I_mean trung bình trọng số của các khoảng thời gian mất gói I_1, ….., I_n:
I_tot = 0; W_tot = 0; for (i = 1 to n) {
W_tot = W_tot + w_(i-1) * DF_i; I_tot = I_tot + (I_i * w_(i-1) * DF_i); }
I_mean = I_tot / W_tot;
I_mean trung bình trọng số được so sánh với I_0, số lượng các gói nhận được từ khi sự kiện mất gói cuối cùng. Nếu I_0 lớn hơn hai lần I_mean, khi đó khoảng thời gian mất gói mới lớn hơn đáng kể so với khoảng thời gian mất gói cũ, và hệ số discount thơng thường DF được cập nhật để giảm trọng số liên quan trên các khoảng thời gian trước đó, như sau:
if (I_0 > 2 * I_mean) { DF = 2 * I_mean/I_0; if (DF < THRESHOLD) DF = THRESHOLD; } else DF = 1;
Một giá trị ngưỡng khác 0 đảm bảo rằng các khoảng thời gian mất gói từ một thời gian sớm hơn của sự tắc nghẽn cao không bị khấu trừ hoàn toàn. Chúng ta đề xuất một ngưỡng 0.5. Chú ý rằng với mỗi gói mới đến, I_0 sẽ tăng thêm và hệ số discount DF sẽ được cập nhật.
Khi một sự kiện mất gói mới xuất hiện, khoảng thời gian hiện tại thay đổi từ I_0 sang I_1, khoảng thời gian mất gói I_i thay đổi thành khoảng thời gian I_(i+1) và khoảng thời gian mất gói I_n bị mất đi. Hệ số discount DF trước đó phải được nhập vào mảng discount. Do DF_i mang hệ số discount kết hợp với khoảng thời gian mất gói I_i, mảng DF_i cũng phải được thay đổi. Nó được thực hiện như sau:
DF_i = DF * DF_i; } for (i = n-1 to 0 step -1) { DF_(i+1) = DF_i; } I_0 = 1; DF_0 = 1; DF = 1;
Đây là mơ tả hồn thiện về cơ chế history discounting – một cơ chế tùy chọn mà mục đích duy nhất của nó là cho phép TFRC đáp ứng nhanh hơn đối với những lần khơng có tắc nghẽn một cách đột ngột.