Các quy tắc Backoff và sao chép

Một phần của tài liệu LUẬN VĂN:BẢO ĐẢM CÔNG BẰNG LUỒNG TRONG CÁC MẠNG AD HOC KHÔNG DÂY docx (Trang 65 - 68)

Mỗi trạm giữ một trong các biến sau:

1. my_backoff : giá trị backoff tại trạm này. 2. Với mỗi bộ đệm ở xa :

 local_backoff: giá trị backoff tại trạm này được đánh giá bởi trạm ở xa

 remote_backoff: đánh giá giá trị backoff cho một trạm ở xa.

 exchange_seq_number (ESN) : Một chuỗi số được sử dụng trong việc trao đổi gói tin với trạm ở xa.

Khi một bộ đệm P nghe thấy một gói tin, khác hơn một RTS, từ Q đến R, P cập nhật đánh giá của nó về các mức tranh chấp của Q và R bởi sự sao chép các giá trị local_backoff và remote_backoff được mang trong gói tin, tương ứng. Thêm vào đó, P cũng sao chép giá trị backoff của Q và của chính nó, giả sử rằng Q là trạm xung quanh mà tại đó backoff của Q được cho là phản chiếu lại mức độ tắc nghẽn xung quanh láng giềng. Các gói tin RTS bị lờ đi bởi vì chúng có thể không mang các giá trị backoff chính xác. Chính xác hơn:

packet (local_backoff, remote_backoff, ESN) if packet = = RTS, ignore

else

backoff (của Q) = local_backoff; if (remote_backoff ! = I_DONT_KNOW)

backoff (của P)= remote_backoff; my_backoff = local_backoff;

Khi một bộ đệm P nhận được một gói tin từ bộ đệm Q đến P, nếu exchange_seq_number có giảm, hoặc gói tin được khởi tạo một sự truyền mới hoặc một thủ tục bắt tay thành công. Trong trường hợp này, các giá trị backoff được mang trong gói tin sẽ là các giá trị chính xác. Do P cập nhật các giá trị backoff nó sở hữu và của Q, giảm ESN và khởi động lại retry_count. Ở đây local_backoff của P là một biến được dùng tạm thời khi cố gắng thay đổi với Q; giá trị của nó đồng bộ với my_backoff của P khi một thủ tục bắt tay thành công.

Trái lại, nếu một gói tin là một sự truyền lại của một gói tin cũ, P giả sử xung đột xuất hiện tại điểm kết thúc của Q, và tăng giá trị backoff của Q tương ứng. Vì tổng các giá trị backoff của hai điểm kết thúc sẽ độc lập như nhau tại mỗi điểm kết mà xung đột xuất hiện, P cập nhật giá trị backoff của nó như sự khác biệt giữa tổng số và giá trị backoff của Q (khi P đánh giá)

packet (local_backoff, remote_backoff, ESN) If (ESN > ESN (đối với Q))

backoff (của Q) = local_backoff;

if (remote_backoff ! = I_DONT_KNOW) local_backoff (của P) = remote_backoff; my_backoff = remote_backoff;

else

local_backoff (của P) = my_backoff; ESN (của P đối với Q) = ESN+ 1;

retry_count (của P với Q) = 1; else /* một gói tin được truyền lại*/

backoff (của Q)= local_backoff + retry_count * ALPHA; if (remote_backoff != I_DONT_KNOW)

local_backoff (của P) = (local_backoff + remote_backoff) – backoff (của Q); else

local_backoff (của P) = my_backoff; retry_count + +;

Khi bộ đệm P gửi một gói tin tới bộ đệm Q, nó gán các giá trị tham số trong gói tin, local_backoff, remote_backoff, và ESN theo cách sau đây:

If (packet = RTS) /* hoặc nó cần phải bắt đầu một gói mới*/ local_backoff (được sử dụng trong giao tiếp với Q) = my_backoff; remote_backoff = backoff (của Q);

local_backoff = local_backoff (được sử dụng với Q); Gửi gói tin với local_backoff, remote_backoff, ESN;

Khi một bộ đệm P hết thời gian trong một gói tin tới bộ đệm Q: Backoff (của Q) + = retry_count * ALPHA;

If trong phạm vi max_retry_count,

backoff (của Q) = I_DONT_KNOW;

Một phần của tài liệu LUẬN VĂN:BẢO ĐẢM CÔNG BẰNG LUỒNG TRONG CÁC MẠNG AD HOC KHÔNG DÂY docx (Trang 65 - 68)