Академический Документы
Профессиональный Документы
Культура Документы
Abstract—Bài báo cáo về giao thức Selective repeat ARQ bộ. Nó cung cấp các phương tiện chức năng và thủ tục để truyền
trong lớp Data-link control. Trong bài này tập trung tìm dữ liệu giữa các thực thể mạng và có thể cung cấp phương tiện
hiểu về giao thức, mô phỏng và đánh giá hiệu quả của các để phát hiện và có thể sữa các lỗi có thể nảy sinh tại tầng vật lý.
cơ chế của giao thức, đồng thời so sánh hiệu quả của giao
Nhiệm vụ của liên kết dữ liệu là gửi thông tin từ nơi này đến
thức so với các giao thức khác.
một số nơi khác. Tại tầng này, một nút mạng không cần phải có
Keywords: ARQ, selective repeat, data-link, ACK, NACK, khả năng gửi tới mọi nút khác, mà chỉ cần gửi được tới một số
error detecting codes nút khác. Tầng liên kết dữ liệu cung cấp dịch vụ chuyển dữ liệu
qua các liên kết vật lý. Việc chuyển đó có thể đáng tin cậy hoặc
không đáng tin cậy; nhiều giao thức liên kết dữ liệu không có
I. GIỚI THIỆU MÔ HÌNH OSI VÀ LỚP DATA LINK acknowledgement (các thông điệp báo rằng đã nhận được một
CONTROL frame và đã chấp nhận frame đó), một số giao thức liên kết dữ
liệu thậm chí còn không có bất cứ dạng checksum nào để kiểm
Mô hình OSI (Open Systems Interconnection Reference tra lỗi truyền. Trong các trường hợp đó, các giao thức ở các tầng
Model, viết ngắn là OSI Model hoặc OSI Reference Model) –
cao hơn phải cung cấp các chức năng điều khiển khiển lưu
tạm dịch là Mô hình tham chiếu kết nối các hệ thống mở – là
lượng (flow control), kiểm lỗi, và xác nhận và truyền lại
một thiết kế dựa vào nguyên lý tầng cấp, lý giải một cách trừu
(acknowledgments and retransmission).
tượng kỹ thuật kết nối truyền thông giữa các máy vi tính và thiết
kế giao thức mạng giữa chúng. Mô hình này được phát triển
thành một phần trong kế hoạch kết nối các hệ thống mở (Open
Systems Interconnection) do ISO và IUT-T khởi xướng. Nó còn
được gọi là Mô hình bảy tầng của OSI[1].
Cơ chế go-back-N đã nêu ở trên đạt hiệu suất cao chỉ trong
các trường hợp tỷ lệ lỗi bit của kênh truyền thấp. Ngược lại nếu
Sender Receier
Network Network
getFromN wLayer() getFromN wLayer()
Data frame ACK or NAKframe
Control:(seqNr|ackNr )
Data link Protocol:(ACK or NAK) Data link
Data packet
getFromP hys Layer() putToPh ysLayer() Trailer:(error detection) getFromP hys Layer() putToPhysLayer()
Physical Physical
Channel
SeqNum 0 1 2 3 4 1 5 6 7 8 6 9 10 11
S
Time
R ReqNum 0 1 1 1 1 1 5 6 6 6 6 9 10 11
Network layer 0 1 2 3 4 5 6 7 8 9 10 11
Hình 7: Mô hình các trường hợp phát lại trong Selective repeat ARQ
Mất gói tin trong hình bên dưới có thể thấy trong trường hợp Mất gói, lỗi gói ACK, trường hợp này xảy ra khi gói tin
của frame số 1. Gói tin bị mất trên kênh truyền và không thể tới ACK bị lỗi trong quá trình truyền. Trong hình có thể thấy
được bên nhận. Bên nhận không làm gì cho tới khi frame tiếp trường hợp này rơi vào ACK frame chứa RN=9. Trường hợp
theo được truyền tới. Lúc này SN (Sequence number) số thứ tự này không hề gặp khó khăn trong cơ chế SRP. Như trong hình
của gói tin, là 2, nhưng RN (Request Number) số thứ tự của ACK frame chứa RN = 10 đã được tiếp nhận bởi bên phát. Mà
frame cần nhận tiếp theo là 1. Vì thế bên nhận sẽ phát hiện ra theo nguyên tắc hoạt động của cơ chế, RN=10 chỉ thay đổi khi
có lỗi xảy ra khi truyền frame 1. Và gửi NAK frame báo lỗi các frame với SN<10 đã được nhận thành công. Thật vậy, quan
frame số 1. Đồng thời frame 2 được đưa vào bộ đệm để xử lý sát trong hình ta thấy RN chỉ thay đổi khi các frame có số thứ
sau. Giá trị RN lúc này cũng không thay đổi cho tới khi frame tự nhỏ hơn RN đã được chuyển lên lớp network theo đúng trật
1 được phát lại và được nhận mà không có lỗi. Lúc này bên tự. Như vậy khi nhận được ACK frame có RN = 10 thì bên phát
nhận sẽ đưa các frame trong bộ đệm tới lớp network theo thứ tự sẽ hiểu là các frame SN<10 đã chuyển thành công và có thể tiếp
tăng dần từ RN=1. Các frame tiếp theo sẽ được đưa vào một tục quá trình truyền mà không cần quan tâm có nhận được ack
cách đúng thứ tự và không trùng lặp. 9 hay không.
Lỗi gói tin, trường hợp này xảy ra ở frame số 6 trong hình C. Hiệu suất của phương pháp Selective repeat ARQ, so
.Gói tin tới được đích nhưng bị lỗi do quá trình truyền. Bên nhận sánh với các phương pháp khác
lúc này sẽ gửi báo lỗi về cho phía phát. Sau đó lại tiếp tục nhận
Hiệu suất của cơ chế ARQ được tính bằng tỷ lệ tốc độ truyền
các frame tiếp theo một cách bình thường. Nhưng lúc này RN
nhận thực tế (Reff) so với lý thuyết (R). Với Reff được tính theo
sẽ giữ nguyên giá trị 6 cho tới khi nhận được frame 6 không lỗi.
công thức[2]:
Lúc này bên nhận lúc này mới lần lượt đưa các frame trong bộ
đệm tới lớp network theo thứ tự tăng dần từ RN=6. 𝑅𝑒𝑓𝑓 =
𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑏𝑖𝑡𝑠 𝑑𝑒𝑙𝑖𝑣𝑒𝑟𝑒𝑑
=
𝑛𝑓 −𝑛𝑜
(1)
𝑡𝑜𝑡𝑎𝑙 𝑡𝑖𝑚𝑒 𝑡𝑜 𝑑𝑒𝑙𝑖𝑣𝑒𝑟 𝐸(𝑋)
𝑛𝑓 −𝑛𝑜 𝑛
Với E(X) thời gian truyền trung bình, nf là số bit dữ liệu, no 1− 𝑜
𝐸(𝑋) 𝑛𝑓
là số bit phát hiện lỗi. ƞ𝐺𝐵𝑁 = = ∙ (1 − 𝑃𝑓 ) (4)
𝑅 1+(𝑁−1)𝑃𝑓
Từ các công thức (3), (4), (5) ta có thể so sánh được hiệu
suất của ba cơ chế phát lại với tỷ lệ lỗi bit. Đồ thị mô phỏng lại
quan hệ hiệu suất và BER của kênh truyền được vẽ bằng matlab
Hình 8: Biểu đồ thời gian quá trình truyền tin cơ chế ARQ với giá trị kích thước 1 frame = 1024 bit ta có đồ thị như hình
9.
Nếu không có lỗi xảy ra thì giá trị E(X) = t0. Giá trị t có thể
thấy được qua hình là: Hình 9 cho thấy khi tỷ lệ lỗi bit tăng lên thì tất cả các cơ chế
phát lại hiển nhiên sẽ giảm hiểu suất truyền tải. Có thể thấy cơ
𝑡0 = 2(𝑡𝑝𝑟𝑜𝑝 + 𝑡𝑝𝑟𝑜𝑐 ) + 𝑛𝑓 ⁄𝑅 + 𝑛𝑎 ⁄𝑅 (2) chế SRP ít bị ảnh hưởng nhất bởi sự tăng lên của giá trị BER.
Với na là số bit của bản tin ack, còn R là băng thông hệ Cơ chế SW là cơ chế có hiệu nhất, nhưng với giá trị thời
thống. Áp dụng cách tính từ công thức (1) ta tìm được hiệu suất gian frame đi trên kênh truyền tprop càng nhỏ thì hiệu suất càng
của các cơ chế phát lại như sau: cao. Giá trị N = 5 và N = 50 đại diện cho tỷ lệ tprop và tf với (N-
1) = 2 tprop / tf . Giá trị N này tương đương với kích cửa sổ trong
Với cơ chế Stop and Wait, coi t0 = Tout ta có: giao thức GBN và SR. Cơ chế GBN cũng cho thấy giá trị N
𝐸(𝑋) = (1 − 𝑃𝑓 )𝑡0 + 𝑃𝑓 (𝐸(𝑋) + 𝑇𝑜𝑢𝑡 ) =
𝑡0 càng nhỏ thì hiệu suất càng ít bị ảnh hưởng bởi BER. Có thể
(1−𝑃𝑓 )
nhận xét rằng.
𝑛𝑓 −𝑛𝑜 𝑛𝑜
1−
𝐸(𝑋) 𝑛𝑓
ƞ𝑆𝑊 = = 𝑛𝑎 2(𝑡𝑝𝑟𝑜𝑝 +𝑡𝑝𝑟𝑜𝑐 )
∙ (1 − 𝑃𝑓 ) (3)
𝑅 1+ + ∙𝑅
𝑛𝑓 𝑛𝑓
BER → 1 thì ƞGBN ~ ƞSR ,
Với cơ chế Go back-N ta tìm được: BER → 0 thì ƞGBN ~ ƞSW .
𝑡𝑓 +𝑃𝑓 (𝑁−1)𝑡𝑓
𝐸(𝑋) = (1 − 𝑃𝑓 )𝑡𝑓 + 𝑃𝑓 (𝐸(𝑋) + 𝑁𝑡𝑓 ) =
(1−𝑃𝑓 )
Và chắc chắn ƞSR là lớn nhất trong mọi trường hợp.
Handling of Handling of
FrameArrival và CkSumError có thể thấy trong hình 12
event Time-out receiver site
sender site
Các rẽ nhánh của của sơ đồ thuật toán chính là các trường
event
event
hợp có thể gặp của cơ chế SRP. Ở bên phát ta thấy có 4 nhánh
Notification from
Notification from
physical layer physical layer chính là các sự kiện tới từ lớp khác.
Hình 10: Mô hình hóa cơ chế xử lý Nhánh thứ nhất, khi có yêu cầu gửi từ lơp network bên phát
start
sẽ tạo một frame, lưu vào bộ đệm rồi gửi frame đi, đồng thời
bật timer tương ứng với thứ tự frame lên.
Sw= W -1;
Sf = 0;
Sn = 0; Nhánh thứ hai, khi nhận được frame truyền tới từ lớp
physical. Lúc này sẽ rẽ nhánh ra hai trường hợp khác: nếu bản
F waitEvent(); tin nhận được là NAK và nằm trong cửa sổ gửi thì gửi lại frame
T với số thứ tự tương ứng; nếu nhận được một frame ACK có số
event == event == event ==
thứ tự cũng nằm trong cửa sổ gửi thì xóa bỏ bộ đệm của tất cả
F F
các frame đã gửi và dịch vị trí cửa sổ.
F
NwLayerReq FrameArrival TimeOut
T T T
d = getFromNwLayer();
r = getFromPhysLayer();
seq = getNumTimeout();
Nhánh thứ ba, khi nhận được một timeout. Bên phát sẽ gửi
s = makeFrame(d, Sn);
putToBuffer(s);
d = getFromBuffer(seq%w);
s = makeFrame(d, seq);
lại frame trong bộ đệm với số thứ tự của time-out và khởi động
putToPhysLayer(s);
Sn=Sn+1; r.kind == NAK F r.kind == ACK F
startTimer(seq);
lại timer cho frame đó. Lưu ý là trường hợp này có ưu tiên xử
startTimer(Sn);
T
lý thấp hơn hai trường hợp còn lại.
T
Sn-Sf >= Sw F
r.ack between(
Sf ,Sn)?
F Nhánh thứ tư, khi kích thước bộ đệm vượt giới hạn, tức là
r.ack between(
Sf ,Sn)?
F
T
T
chệnh lệch cạnh trên và cạnh dưới cửa sổ lớn hơn hoặc bằng
T
disableNwLayer();
kích thước cửa sổ. Lúc này bộ đệm đã đầy và không thể lưu
Sf <= r.ack F
d = getFromBuffer(r.ack%w);
thêm frame nào nữa vì thế cần báo cho lớp network không tiếp
T
s = makeFrame(d, Sn);
putToPhysLayer(s);
enableNwLayer(); tục gửi dữ liệu xuống.
startTimer(r.ack); purgeBuffer(Sf%w);
stopTimer(Sf);
Sf = Sf+1; Ở bên nhận, nhánh thứ nhất tương ứng với sự kiện có một
Hình 11:Sơ đồ thuật toán cơ chế SRP bên gửi frame được gửi tới và không gặp lỗi. Lúc này bên nhận kiểm tra
xem frame nhận được có đúng thứ tự hay không.
start
bit trạng thái bộ đệm. Đi từ Rn tới vị trí cuối bộ đệm nếu lần
r = getFromPhysLayer(); r.seq between(Rn,Rw) &&
F
!markBuffer[r.seq%w]
T
T
lượt các bit đều là 1 thì sẽ đưa các dữ liệu tương ứng từ bộ đệm
r.seq != Rn &&
nakSent == false
F
putToBuffer(r); lên lớp network. Vòng lặp khi gặp 1 bit 0 sẽ dừng việc kiểm tra
bộ đệm, lúc này giá trị mới cửa cạnh cửa sổ sẽ dịch lên bằng số
markBuffer[r.seq%w]=1;
s = makeFrame(nak,Rn);
markBuffer[ F
lượng packet dữ liệu đã được đưa tới lớp network.
putToPhysLayer(s); ackNeed == true F
Rn%w] == 1
nakSent = true;
T
T IV. KẾT LUẬN
d = getFromBuffer(Rn%w);
putToNwLayer(d); s = makeFrame(ACK,Rn);
purgeBuffer(Rn%w);
Rn=Rn+1;
putToPhysLayer(s);
nakSent = false; Qua sự so sánh hiệu suất truyền tải của cơ chế Selective
Repeat với các cơ chế ARQ khác ta kết luận rắng, cơ chế SRP
Rw=Rw+1; ackNeed = false;
ackNeed=true;
cho hiệu suất tốt hơn cả. Nhưng các trường hợp tính toán trong
Hình 12: . Sơ đồ thuật toán cơ chế SRP bên nhận báo cáo này chưa thể đầy đủ và đúng cho mọi trường hợp. Giả
sử như hệ thống có kênh truyền rất dài, hoặc có thời gian xử lý
quá
nhanh, hoặc kích thước dữ liệu là quá nhỏ dẫn tới thời gian
truyền frame trên kênh truyền quá lớn so với thời gian xử lý.
Điều này dẫn tới việc kích thước cửa sổ sẽ không thể lấp đầy
khe thời gian truyền tin. Hiệu suất lúc này cũng sẽ tụt giảm rất
nhiều. Báo cáo này chưa thể nêu được vấn đề đó.
Ta cũng thấy được sự phức tạp của thuật toán xử lý của cơ
chế này, so với hai cơ chế ARQ còn lại thì cơ chế SRP phức tạp
hơn rất nhiều. Đồng thời hệ thống cũng cần phải cung cấp một
bộ đệm đủ lớn để phục vụ quá trình xử lý. Dẫn tới chi phí cho
cơ chế này rất cao. Có lẽ cũng vì điều này mà trong các hệ thống
phổ biến hiện nay ta vẫn thường thấy cơ chế Go-Back-N thay
vì Selective Repeat.
Ngoài ra còn có nhiều cơ chế mở rộng khác của SRP mà báo
cáo này chưa nói tới SACK (selective ACKs), một cơ chế phát
lại ACK theo nhóm. Hay các cơ chế để xác định time-out phù
hợp, cũng như kích thước cửa sổ phù hợp để khởi tạo cơ chế
ARQ trước khi bắt đầu truyền tải.
REFERENCES