Giao thức tại máy gửi

Một phần của tài liệu đồ án: Giao thức điều khiển tốc độ tránh nghẽn TFRC (Trang 30 - 34)

CHUƠNG II : GIAO THỨC ĐIỀU KHIỂN TỐC ĐỘ TRÁNH NGHẼN TFRC

2.2 Giao thức tại máy gửi

Máy phát gửi một luồng gói dữ liệu đến máy thu theo tốc độ đã điều khiển. Mỗi lần nhận được một bản tin phản hồi, máy phát tính một giá trị mới cho tốc độ gửi cho phép sử dụng hàm tương ứng từ biểu thức thông lượng dựa trên thông tin chứa trong thông báo phản hồi. Nếu tốc độ gửi thực Xactual là nhỏ hơn X, máy phát có thể tăng tốc độ gửi của nó. Nếu Xactual lớn hơn X, máy phát giảm tốc độ gửi của nó xuống X. Nếu máy phát không nhận một thông báo phản hồi trong hai RTT, nó giảm tốc độ gửi của nó đi một nửa. Điều này đạt được nhờ một bộ định thời gọi là bộ định thời không phản hồi.

Giao thức tại máy gửi thực hiện theo các bước sau đây:

• Đo kích thước gói trung bình đã gửi

• Các hoạt động của máy gửi khi nhận được một gói phản hồi

• Các hoạt động của máy gửi khi bộ định thời không phản hồi kết thúc

• Chống dao động (tùy chọn)

2.2.1 Đo kích thước gói

Tham số s (kích thước gói) thơng thường được biết đến đối với một ứng dụng. Có thể có hai trường hợp:

+ Kích thước gói thay đổi một cách tự nhiên tùy thuộc vào dữ liệu. Trong trường hợp này, mặc dù kích thước gói thay đổi nhưng sự thay đổi đó khơng được xét đến để thay đổi tốc độ truyền. Vì vậy hồn tồn có thể sử dụng một ước lượng kích thước gói trung bình, s.

+ Ứng dụng cần phải thay đổi kích thước gói hơn là thay đổi số lượng các gói trên mỗi giây để thực hiện điều khiển tắc nghẽn. Trường hợp này thơng thường là các gói ứng dụng audio, ở đó mỗi gói cần thiết được đặc trưng bởi một khoảng thời gian cố định. Đối với các ứng dụng như vậy cần phải có một cách khác hồn thiện hơn để đo tham số này.

Chúng ta khơng xét đến trường hợp thứ hai. Ở đây chúng ta giả thiết rằng máy phát có thể ước lượng kích thước gói, và điều khiển tắc nghẽn đó được thực hiện bởi việc cân đối số lượng các gói được gửi mỗi giây.

2.2.2 Khởi tạo tại máy gửi

Để khởi tạo tại máy gửi, giá trị của X được thiết lập là 1 gói/s và thời gian khơng phản hồi được thiết lập để kết thúc sau 2 giây. Giá trị khởi đầu cho R (round-trip time) và t_RTO chưa có cho đến khi chúng được thiết lập như mô tả dưới đây. Giá trị khởi đầu của tld (time last doubled) - thời gian gấp đôi cuối cùng trong pha bắt đầu chậm, được thiết lập là -1 [1].

2.2.3 Hoạt động của máy phát khi nhận được một gói phản hồi

Thiết bị phát biết tốc độ gửi hiện tại của nó, X, và duy trì một ước lượng của RTT hiện tại, và một ước lượng của khoảng timeout, t-RTO.

Khi máy phát nhận được một gói phản hồi tại thời điểm t_now, nó sẽ thực hiện các bước sau:

1) Tính một mẫu round trip mới (round trip sample) R_sample = (t_now – t_recvdata) – t_delay 2) Cập nhật ước lượng RTT

Nếu khơng nhận được phản hồi nào trước đó R = R_sample;

Else

TFRC khơng nhạy cảm với giá trị chính xác của hằng số bộ lọc q, nhưng chúng ta đề xuất một giá trị mặc định là 0.9

3) Cập nhật khoảng timeout: t_RTO = 4*R

4) Cập nhật tốc độ gửi như sau: If (p>0)

Tính X_calc sử dụng biểu thức thơng lượng TCP. X = max (min (X_calc, 2*X_recv), s/t_mbi); Else

If (t_now – tld >= R)

X = max (min (2*X, 2*X_recv), s/R); tld = t_now;

Nếu p == 0 khi đó máy gửi là pha bắt đầu chậm, ở đó nó xấp xỉ gấp đơi tốc độ gửi sau mỗi RTT cho đến khi xuất hiện mất gói. Số hạng s/R sinh ra một tốc độ gửi nhỏ nhất trong pha bắt đầu chậm của một gói/mỗi RTT. Tham số t_mbi là 64 giây đại diện cho khoảng thời gian giữa các gói lớn nhất khi xuất hiện sự vắng mặt liên tiếp của phản hồi. Do đó, khi p>0 bên phát gửi ít nhất một gói/64 giây.

5) Thiết lập lại bộ định thời không phản hồi để kết thúc sau max (4*R, 2*s/X) giây.

2.2.4 Kết thúc thời gian không phản hồi

Nếu thời gian không phản hồi kết thúc, máy phát phải thực hiện những hoạt động sau:

1) Giảm tốc độ gửi di một nửa. Nếu máy phát nhận phản hồi từ máy thu, điều này được thực hiện bằng cách thay đổi việc sao chép ngầm X_recv (tốc độ nhận) của máy phát. Hầu hết tốc độ gửi bị giới hạn tại hai lần X_recv, việc thay đổi X_recv hạn chế tốc độ gửi hiện tại, nhưng cho phép máy phát thực hiện Slow- start, gấp đơi tốc độ gửi mỗi RTT của nó, nếu các bản tin phản hồi tiếp tục thơng báo khơng có mất gói.

If (X_calc > 2*X_recv)

X_recv = max (X_recv/2, s/(2*t_mbi)); Else

X_recv = X_calc/4;

Số hạng s/(2*t_mbi) hạn chế backoff để gửi một gói/64 giây trong trường hợp vắng mặt liên tiếp của phản hồi.

Nếu bộ định thời khơng phản hồi kết thúc khi máy phát chưa có mẫu RTT, và chưa nhận được bất kì phản hồi nào từ máy thu, khi đó bước 1 có thể được bỏ qua và tốc độ gửi giảm đi một nửa.

X = max (X/2, s/t_mbi)

3) Restart bộ định thời không phản hồi để kết thúc sau max(4*R, 2*s/X) giây. Khi máy phát ngừng gửi dữ liệu, máy thu sẽ ngừng gửi phản hồi. Điều này sẽ dẫn đến việc kết thúc bộ định thời không phản hồi và giảm X_recv. Nếu máy phát bắt đầu gửi lại, X_recv sẽ giới hạn tốc độ truyền và một pha bắt đầu chậm thông thường sẽ xuất hiện cho đến khi tốc độ truyền đạt đến X_calc.

Nếu máy phát là rỗi khi thời gian không phản hồi này được thiết lập và X_recv là nhỏ hơn 4 gói/RTT, khi đó X_recv nên giảm đi một nửa nếu bộ định thời kết thúc. Điều này đảm bảo tốc độ gửi cho phép không bao giờ bị giảm nhỏ hơn hai gói/RTT trong giai đoạn rỗi.

2.2.5 Chống các dao động

Để chống dao động trong các môi trường ghép kênh thống kê mức thấp, cần thiết phải thay đổi tốc độ truyền của máy phát để tránh tắc nghẽn bằng việc giảm tốc độ truyền khi trễ hàng đợi (và do RTT) tăng. Để làm được việc này, máy phát duy trì một ước lượng của RTT dài hạn và thay đổi tốc độ gửi của nó phụ thuộc vào việc mẫu gần nhất của RTT khác giá trị này như thế nào. Mẫu dài hạn là R_sqmean, và nó được thiết lập như sau:

Nếu khơng có phản hồi nào được nhận trước đó R_sqmean = sqrt (R_sample); Else

R_sqmean = q2*R_sqmean + (1-q2)*sqrt (R_sample);

Do đó R_sqmean đưa ra giá trị trung bình động theo trọng số hàm mũ của căn bậc hai của các mẫu RTT. Hằng số q2 được thiết lập tương tự như q, RFC 3448 đề xuất một giá trị mặc định là 0,9.

Máy phát tính tốc độ truyền cơ bản X từ hàm thơng lượng. Khi đó nó tính một tốc độ truyền tức thời đã thay đổi X_inst như sau:

Nếu sqrt (R_sample) lớn hơn R_sqmean khi đó hàng đợi đang tăng và do đó tốc độ truyền cần phải giảm đối với hoạt động ổn định.

Sự thay đổi này không phải luôn luôn là cần thiết, đặc biệt nếu mức độ ghép kênh thống kê trong mạng là cao. Tuy nhiên, nếu thực hiện sự thay đổi này sẽ làm cho TFRC hoạt động tốt hơn trong các môi trường ghép kênh thống kê mức thấp. Nếu không thực hiện chống dao động, RFC 3448 đề xuất sử dụng một giá trị q nhỏ chẳng hạn như cho q xấp xỉ hoặc bằng 0.

2.2.6 Kế hoạch truyền gói

Khi TFRC thực hiện truyền với tốc độ cơ bản và khi các hệ thống hoạt động thông thường không thể lập lịch các sự kiện một cách chính xác, cần phải biết về việc gửi các gói dữ liệu sao cho duy trì tốc độ gửi trung bình chính xác dù lập lịch của hệ thống hoạt động theo quy tắc hay bất quy tắc. Do đó, một vịng gửi thơng thường sẽ tính khoảng cách giữa các gói chính xác, t_ipi như sau:

t_ ipi = s/X_inst;

Khi một máy phát bắt đầu gửi lần đầu tại thời điểm t_0, nó tính t_ipi và tính một thời gian gửi định danh t_1 = t_0 + t_ipi cho gói 1. Khi ứng dụng trở nên rỗi, nó kiểm tra thời gian hiện tại t_now và khi đó các yêu cầu sắp xếp lại sau (t_ipi – (t_now – t_0)) giây. Khi ứng dụng được lập lịch lại, nó kiểm tra thời gian hiện tại t_now một lần nữa. Nếu (t_now > t_1 – delta) khi đó gói 1 được gửi.

Một t_ipi mới có thể được tính và được sử dụng để tính một thời gian gửi định danh t_2 cho gói 2: t2 = t_1 + t_ipi. Khi đó q trình lặp lại, với mỗi lần thời gian gửi của một gói thành cơng được tính từ thời gian gửi định danh của gói trước đó.

Trong một số trường hợp, khi thời gian gửi định danh t_i của gói kế tiếp được tính, nó có thể là trường hợp mà t_now > t_i – delta. Trong một trường hợp như vậy, gói sẽ được gửi ngay lập tức. Tham số delta cho phép sự linh hoạt trong thời gian gửi của một gói. Nếu hệ thống đang vận hành có thời gian lập lịch granularity của t_gran giây, khi đó delta thường được thiết lập thành:

delta = min (t_ipi/2, t_gran/2); Ở đó t_gran thường được cho là 10ms trên nhiều hệ thống Unix.

Một phần của tài liệu đồ án: Giao thức điều khiển tốc độ tránh nghẽn TFRC (Trang 30 - 34)

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

(77 trang)
w