Điều khiển luồng

Một phần của tài liệu hệ thống giao thức mạng (Trang 33 - 37)

Điều hiển nhiên là nút phát ở một đầu của một đường truyền dữ liệu không thể truyền khung với tốc độ nhanh hơn so với tốc độ nút nhận khung mà đầu kia của đường dẫn có thể tiếp nhận. Điều này có thể khắc phục bằng cách điều khiển luồng.

Thiết bị thu không sẵn sàng

Một phương pháp đơn giản để điều khiển luồng là cho nút nhận gửi một khung máy thu-không-sẵn sàng (RNR) tới nút phát bất cứ khi nào mà nó không thể nhận thêm khung. Điều này làm cho nút phát ngừng việc truyền khung dữ liệu. Nút phát có thể định kỳ gửi khung yêu cầu (ENQ) để hỏi các nút nhận về tình trạng của nút. Khi nút nhận có thể nhận được khung trở lại, nó đáp ứng các khung ENQ với một máy thu đã sẵn sàng (RR) chứ không phải là một khung RNR và việc truyền tải khung dữ liệu được nối lại.

NHÓM 5 – KTVTA-K51 34

Dừng và chờ

Một phương pháp khác là sử dụng giao thức kiểm soát lỗi như một cơ chế điều khiển luồng thay thế. Trong cơ chế dừng và chờ ARQ nút nhận được có thể chỉ đơn giản là giữ lại một khung ACK để ngừng việc truyền tải ngay cả khi không có khung lỗi xuất hiện. Thường thì nút phát sẽ gửi các khung ENQ sau khi giai đoạn thời gian chờ đã trôi qua và nút nhận có thể đáp ứng với khung ACK được giữ lại nếu nó đã sẵn sàng để nhận được nhiều khung hơn. (Nút truyền ở trong tình trạng này thì không phân biệt được một khung ACK đã bị mất)

Cửa sổ trƣợt

Trong một chương trình ARQ các khung liên tục được đánh số tuần tự. Rõ ràng trong thực tế việc đánh số không thể tăng vô hạn, vì vậy k bits sẽ được phân bổ cho một số miền trong khung. Ngay cả trong việc thực hiện thừa nhận cộng dồn cũng có một giới hạn về số lượng khung hình có thể được truyền khi không nhận được một ACK (Trong dừng-và-chờ là giao thức này số 1). Do đó, một cửa sổ được định nghĩa là phạm vi xác định của số khung có thể truyền. Hình 18.17 minh họa một cửa sổ như vậy, nơi mà mặt nạ có thể xoay, mở rộng hay thu hẹp như mong muốn. Các gia số biên dưới giảm đi mỗi lần một khung được truyền, trong khi gia số biên trên tăng khi các khung được nhận.

Khung gửi đi có chứa một số thứ tự gửi, N(S), trong khi các khung hoặc báo nhận từ nút đích có chứa một số thứ tự nhận, N(R). Hoạt động điều khiển luồng bằng cách sử dụng cửa sổ trượt được minh họa trong hình 18.18.

Nút A duy trì một danh sách các số khung được phép được gửi, trong khi nút B duy trì một danh sách tương tự của số khung có thể được nhận. Hình vẽ cho thấy cách các cửa sổ có thể di chuyển, như là các khung hình đầu tiên được truyền. Bảng 18.7 cho ta một cái nhìn chi tiết hơn về các thao tác bao gồm cả các ảnh hưởng khi một khung bị mất. Để đơn giản hóa các hình minh họa, ta chọn k = 2 để việc tính toán được thực hiện theo modul-4, và cửa sổ mở tối đa N = 3

NHÓM 5 – KTVTA-K51 35

Hình 18.17 Cửa sổ trượt

Hình 18.18 Nguyên tắc điều khiển luồng

Bảng 18.7 Trình tự điều khiển luồng cho cửa sổ mở N = 3

Cửa sổ gửi Truyền dẫn Cửa sổ nhận

012 012 12 Khung 0  12 2 Khung 1  2 230  ACK 2 230 30 Khung 2  30 0 Khung 3 (mất) 30 - Khung 0  30 301  ACK 3 301 01 Khung 3  01 1 Khung 0  1 123  ACK 1 123

NHÓM 5 – KTVTA-K51 36

Node B có dung lượng bộ đệm của N khung, và do đó trong phạm vi an toàn mà tại đó bộ đệm B không bị tràn, nút A có thể gửi N khung dữ liệu đến mà không cần sự đồng ý từ trạm B,. Tuy nhiên, trước đó nút B cho phép luồng các khung được duy trì mà không cần phải chờ đợi.

Do đó, trong ví dụ này, nút A gửi khung số 0 và 1. Sau đó node B trả lời với một bản tin báo nhận, trong đó bao gồm một con trỏ đến số khung được chấp nhận tiếp theo. Ngụ ý rằng tất cả các khung với số lượng đến giá trị này đã được nhận thành công, bản tin báo nhận lưu trữ đã được sử dụng. Khi các khung được nhận chính xác, danh sách khung tại hai nút sẽ so sánh với nhau. Một khung bị mất hoặc bị hỏng sẽ được một cơ chế phục hồi lại và cho phép các trình tự được nối lại chính xác. Nếu bộ đệm nhận đã đầy thì bản tin báo nhận sẽ không được gửi đi và các nút phát ngừng truyền khung dữ liệu cho đến khi được xác nhận lại một cách rõ ràng.

Các báo nhận thường được kèm thêm trong một khung dữ liệu. Nếu các khung dữ liệu thuận tiện không có sẵn thì khung điều khiển đại diện cho RR hoặc RNR có thể được sử dụng cho phù hợp.

Điều khiển luồng có thể được thực hiện không chỉ ở cấp độ liên kết ( điều khiển luồng bước nhảy) mà còn ở cấp độ cao hơn của giao thức ngăn xếp ( điều khiển luồng từ đầu đến cuối ). Ví dụ như điểm đích DTE có thể cần phải kiểm soát tỷ lệ mà các gói dữ liệu được đưa vào một mạch ảo.

Tác động điều khiển của cửa sổ trƣợt trên các đƣờng dẫn trễ dài

Xem xét những gì xảy ra với các ví dụ về đường dẫn vệ tinh (trường hợp 1, phần 18.3.2) khi dùng 5 bit có sẵn để cửa sổ trượt điều khiển luồng. Khi thời gian truyền khung dài hơn nhiều so với thời gian khung thì tham số a ( tỷ lệ thời gian tối thiểu của khung ) sẽ lớn hơn và kích thước cửa sổ trong giao thức cửa sổ trượt điều khiển luồng phải đủ để đối phó với điều này. Xem xét lần lượt các giao thức ARQ được thảo luận trong phần 18.3.2. Kích thước tối đa của cửa sổ ít nhất phải lớn hơn M. (Nếu kích thước của cửa sổ ít hơn số lượng khung dữ liệu trong hệ thống tại một thời điểm thì hiệu suất có thể được phục hồi bằng cách tăng chiều dài của khung dữ liệu.)

Nói đến ví dụ, đối với giao thức lùi lại N dành cho hệ thống thông tin 64 bit, a = 37.18 do đó, để cho việc lưu trữ đầy đủ thì dung lượng bộ đệm phải có ít nhất 38 khung.

NHÓM 5 – KTVTA-K51 37

lưu trữ M bị hạn chế đến 31

Việc truyền dẫn sẽ phải dừng lại sau khi 31 khung dữ liệu đã được truyền, cho đến khi bản tin báo nhận thông báo là đã nhận được. Trong mỗi chu kỳ của khung được truyền, đường dẫn ra có thể hoạt động trong 31/38 phần thời gian, yếu tố này làm giảm hiệu quả của giao thức ARQ.

Để phục hồi công suất, giá trị của a phải bằng 31. Chiều dài khung phải được mở rộng đến 500/(31-3) = 17,86 ms , tương ứng với 17,86 x 9,6 = 171,5 bit. Vì khung mào đầu có 88 bit nên trường dữ liệu này phải có ít nhất 171-88 = 83 bit.

Ví dụ này cho thấy các thông số có thể được điều chỉnh để có được hiệu suất tối ưu. Chiều dài của khung dữ liệu cũng bị ảnh hưởng bởi khả năng lỗi, nó một hàm của xác suất lỗi bit.

Một phần của tài liệu hệ thống giao thức mạng (Trang 33 - 37)