4 .] 3 New-Reno TCP
5.3.2 Snoop ACKs
Thủ tục snoop_ack() giám sát và xử lý các biên nhận (ACKs) do M H gửi trờ lại rà thực hiện các hành động khác nhau tuỳ thuộc vào loại và số biên nhận nó nhận lược (có ba loại biên nhận). Lưu đồ thuật toán của thủ tục snoop一ack() được thể
ìiện trcn hình 5.6; nó hoạt độns như sau:
1- Trường hợp ch iu tỊỊ: Bien nhạn mới. đây là tnrờno hợp phổ biến, khi kết nối
lâu như không có lôi và người sử dụng di chuyên ít. nó báo hiệu sự tăng cùa dãy
- I l l -
G i ả i p h ỏ n g b ộ đ ệ m : xoá tất cả các gỏi số liệu đã được biên nhận khỏi bộ đệm
của snoop—data().
Cập nhật ước lượng th ờ i gian khứ hôi: ước lượng cho thời gian khứ hôi của
đường truyền không dây cũns được cập nhật một cách thông minh, nó không được thực hiộn dôi với từnẹ eói sô liệu, mà chỉ dược thực hiện với một oỏ\ sô liệu trono
mỗi cửa sổ gửi và chỉ được cập nhật nếu trong cửa sổ dỏ không phải phát lại gói số
liệ u nào. Điều kiện thứ hai vừa nêu là cần thiết bởi vì nói chung, không có cách náo
f \ \ f
xác định được một biên nhận ià cho gói sô liệu phát đi lân đâu hay cho chính gói sô liệu đó ở lần phát lại.
•p f 1 •
C h u y ê n t i ê p b i ê n n h ộ n c h o ngư ời gửi', việc cuôi cùng là chuyên tiêp biên nhận
tới cho n íirờ i gửi - FH,
Bien nhận lặp đầu tiẽ ti
Bien nhận mới? (New ack?)
S n ơ ữ p a c k ộ
Bien nhân đi đến
Loại bỏ
(Discard) No
Biên nhận g iả mạo
Loai bỏ (Discard) No Biên ỉỉhận ỉặp kế tiếp Ves 1. Giải phóng bộ đệm 2. Cập nhật ước lượng
thòi gian khứ hồi 3. Chuyến tiếp bien nhận
tới người gửi
Trường hợp chung
1. Nêu gói tin có trong bộ nhớ đệm: Phát lại
+ với quyên ưu tiên cao
Yes + loại bỏ biên nhân lặp 2 Nêu không: cho biên
nhận lặp đi qua, về FH
2. Bien nhận giả mạo: là biên nhận cho gói số liệu có số thứ tự nhỏ hơn số thứ
, r f
tự gỏi SÔ liệu đã được biên nhận sau cùne mà snoop agent thây, tình huông này hiểm khi xảy ra. Biên nhận này sẽ bị loại bỏ và việc xử lý các gói số liệu sẽ tiếp tục.
f
3. Biên nhận lặp: là bien nhận hoàn toàn giông với một biên nhận tích luỹ cao
ề \ r \
nhcit dà nhận được trước dó. Khi bién nhận lặp đâu tiên đên snoop_ack(), điêu đó
« ______ 9 r r ^ ẽ
nói lên răng M H không nhận được gói sô liệu cỏ sô thứ tự kê tiêp sô thứ tự chỉ ra tronç bien nhận lặp. Tuy nhiên, nếu Snoop asent tiếp tục nhận được các biên nhận lặp nữa, điều đó nói len ràng M H đã nhận được một số gói số liệu có thứ tự tiếp theo gói số liệu mà nó không nhận được. Lý do là vì, M H sẽ gửi một biên nhận lặp cho mỗi gói số liệu nó nhận được nhưng không đúng thứ tự. M ộ t trong các hành độns sau đây sẽ xảy ra tuỳ thuộc vào kiêu của biên nhận lặp và vào trạng thái hiện thời của snoop_data():
Biên nhận lặp đầu tiên (F irst one? = Yes): nếu gỏi số liệu cần phát lại không cỏ
tronạ bộ nhớ đệin của Snoop agent, thi nó sẽ phải được FH phát lại, do đó Snoop agent cần chuyển tiếp biên nhận lặp cho FH, bởi vì FH (thực thể gửi của kết nối TCP) cần có các thông tin trạng thái, dựa trên số biên nhận lặp nhận được dể quyết
• • •
định việc phát lại một gói sô liệu. Nêu Snoop agent cỏ gói sô liệu tương írns với biên nhận lặp này trong bộ nhớ đệm, thi nó cần phát lại gói số liệu đó và loại bỏ ^iên nhận lặp.
Biên nhận lặp kế íiếp (F irst one? = No): trường hợp này xảy ra khi một biên
ihận lặp nữa đên. Lúc này, gỏi sô liệu bị mât đã được phát lại khi biên nhận lặp thứ ihất dến. Nếu ước lượng số cực đại các biên nhận lặp cho cùng ẹói số liệu này bằng chông, biên nhận lặp này được loại bỏ ngay. Trong thực tế, gói số liệu được phát lại tôn Mí I trước hâu hêt các gói sô liệu có sô thứ tự sau nó, bời vì nó được phát lại với ]u\en ưu tien cao hơn, do đó. BS sè nhạn thấy sự tăng trons dãy biên nhận. Việc )hát lại các gói số liệu với quyền ưu tiên cao hơn ạiúp nâng cao hiệu năni> với mọi
Phút lạỉ một cách thông m inh k h i nhận được biên nhận lặp đâu tiên
Để làm cho số biên nhận lặp càng ít càng tốt, ngay sau khi phát hiện ra sự mất gói số liệu (khi nhận được biên nhận lặp đầu tiên), nỏ cẩn phải được phát lại càng
t s ỹ
nhanh càng tôt với quyên ưu tiên cao hơn các gỏi sô liệu bình thường. Có thê thực hiện dược điêu này băng cách tô chức hai hàng đợi tại tâng Liên kêt dữ liệu, một hàns dại cho các sói số liệu bình thirừns, từ FH mới đến, còn harm đợi kia chứa (bản sao) các gói số liệu đã được phát lại, có quyền ưu tiên cao hơn. Điều đó iàin cho các gói sổ liệu cỉirợc phát lại đến MH sớm hơn. làm giảm sổ biên nhận lặp và dân CÌCÌÌ tăns thônơ lượn2. Snoop_ack() bám sát sô lân phát lại cục bộ của một gỏi SÔ liệu và sẽ đặt lại cho sô này băng không khi nhận được chính gói sô liệu đó do bên gửi phát lại sau khi I1Ó bị hết giờ hoặc vào chế độ phát lại nhanh.