Вы находитесь на странице: 1из 7

Tìm hiểu hoạt động của một số cơ chế tự động truyền lại

Selective Repeat ARQ tại lớp data-link control và chứng


minh sự hiệu quả của các cơ chế
Trần Hữu Duy Nguyễn Văn Cây Trần Văn Tình
MSSV: 20140749 MSSV: 20140405 MSSV: 20144516

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].

Hình 2: Cấu trúc lớp Data link


Tầng này được chia thành hai tầng con. Tầng con thứ nhất
là Điều khiển liên kết logic (Logical Link Control, viết tắt là
LLC). Tầng LLC ghép các giao thức hoạt động phía trên tầng
liên kết dữ liệu, và theo tùy chọn có thể cung cấp chức năng
điều khiển lưu lượng, acknowledgment, và khôi phục lỗi.
Tầng con thứ hai là điều khiển truy nhập (Media Access
Hình 1: Mô hình OSI
Control, viết tắt là MAC). Tầng con này quyết định tại mỗi thời
điểm ai sẽ được phép truy nhập môi trường truyền dẫn. Có hai
dạng điều khiển truy nhập môi trường: điều khiển phân tán và
Tầng liên kết dữ liệu (Data Link Layer) là tầng thứ 2 trong
điều khiển tập trung.
mô hình bảy tầng OSI, được thể hiện trong Hình 1. Nó đáp ứng
các yêu cầu phục vụ gửi tới tầng vật lý. Tầng này có nhiệm vụ II. CƠ CHẾ PHÁT LẠI ARQ
truyền dữ liệu giữa các nút mạng liền kề nhau trong một mạng
diện rộng hoặc giữa các nút trong cùng một segment mạng cục Khi truyền thông tin trong mạng, thông tin truyền từ phía
phát sang phía thu có thể bị sai lỗi hoặc mất. Trong trường hợp
thông tin bị mất, cần phải thực hiện truyền lại thông tin. Với gửi báo nhận lại cho phía phát. Phía phát sau khi nhận
trường hợp thông tin bị sai, có thể sửa sai bằng một trong hai được báo nhận sẽ phát khung thông tin tiếp theo. Ngược
cách: lại nếu phía thu khi nhận khung thông tin và phát hiện
sai sẽ gửi báo sai lại cho phía phát. Phía phát sau khi nhận
 Sửa lỗi trực tiếp từ bên thu: phía thu sau khi phát hiện lỗi được báo sai sẽ thực hiện phát lại khung thông tin.
có thể sửa lỗi trực tiếp ngay bên thu mà không yêu cầu
phát lại. Để có thể thực hiện được điểu này, thông tin
trước khi truyền đi phải được cài các mã sửa lỗi (bên
cạnh việc có khả năng phát hiện lỗi, cần có khả năng sửa
lỗi).
 Yêu cầu phía phát truyền lại: phía thu sau khi kiểm tra
và phát hiện có lỗi sẽ yêu cầu phía phát truyền lại thông
tin. Cơ chế ARQ.
Đặc điểm của hai phương pháp sửa lỗi trên:
Hình 4: Cơ chế Stop-and-Wait ARQ[4]
 Sửa lỗi trực tiếp bên thu (Forward Error Correction –
 Cơ chế phát lại theo nhóm (Go-back-N ARQ): Với cơ
FEC): chỉ cần truyền thông tin một lần, không yêu cầu
chế phát lại Go-back-N, phía phát sẽ được phát nhiều
phải truyền lại thông tin trong trường hợp có lỗi. Tuy
hơn một khung thông tin trước khi nhận được báo nhận
nhiên, số lượng bit thông tin có thể sửa sai phụ thuộc vào
từ phía thu. Số khung thông tin cực đại mà phía phát có
số loại mã sửa sai và số bit thông tin thêm vào cho mục
thể phát (ký hiệu là W) được gọi là kích thước cửa sổ.
đích sửa sai. Nhìn chung, số bit thông tin thêm vào càng
Mỗi khi phát xong một khung thông tin, phía phát giảm
lớn thì số bit có thể sửa sai càng nhiều, tuy nhiên hiệu
kích thước cửa sổ đi 1, khi kích thước cửa sổ bằng 0,
suất thông tin (số bit thông tin hữu ích trên tổng số bit
phía phát sẽ không được phát thêm khung thông tin nào
truyền đi) lại thấp.
nữa (điều này đảm bảo số khung thông tin đồng thời đến
 Sửa lỗi bằng cách truyền lại: khác với sửa lỗi trực tiếp phía thu không vượt quá W, và do đó, không vượt quá
bên thu, trong trường hợp sửa lỗi bằng cách truyền lại, khả năng xử lý của phía thu). Mỗi khi phía thu nhận
thông tin trước khi phát chỉ cần thêm các bit thông tin được một khung thông tin đúng và xử lý xong, phía thu
phục vụ cho mục đích phát hiện lỗi (số bit thêm vào ít sẽ gửi lại một báo nhận ACK cho phía phát. Khi nhận
hơn so với trường hợp sửa lỗi) do đó hiệu suất truyền được báo nhận này, phía phát sẽ tăng kích thước cửa sổ
thông tin cao hơn so với trường hợp trên. Tuy nhiên, W lên 1. Điều này đồng nghĩa với việc phía phát sẽ được
trong trường hợp có lỗi xảy ra với khung thông tin thì phát thêm một khung nữa, ngoài W khung đã phát trước
toàn bộ khung thông tin phải được truyền lại (giảm hiệu đó, vì phía thu đã xử lý xong một khung, và như vậy,
suất truyền tin). tổng số khung mà phía thu phải xử lý tại một thời điểm
 Với ưu nhược điểm của các phương pháp trên, sửa lỗi vẫn không vượt quá W.
bằng cách truyền lại thường được dùng trong môi trường
có tỷ lệ lỗi bit thấp (truyền dẫn hữu tuyến) trong khi sửa
lỗi bên thu thường được dùng trong trường hợp môi
trường truyền dẫn có tỷ lệ lỗi bit cao (vô tuyến).
A. Mô hình cơ chế phát lại ARQ

Hình 5: Mô hình cơ chế Go-back-N[4]

 Cơ chế phát lại có lựa chọn (Selective repeat ARQ):


Tương tự như cơ chế phát lại Go-back-N, cơ chế phát
lại có lựa chọn (selective repeat ARQ) cũng dựa trên
Hình 3: Mô hình cơ chế hoạt động của ARQ[4]
phương pháp cửa sổ trượt. Phía phát được phép phát tối
Các cơ chế phát lại được chia làm 3 loại chính: đa W khung thông tin (kích thước cửa sổ) trước khi
nhận được báo nhận. Điểm khác biệt giữa selective
 Cơ chế phát lại dừng và đợi (Stop-and-Wait ARQ): repeat và Go-back-N nằm ở cách hai phương thức này
Trong cơ chế phát lại theo phương pháp dừng và đợi xử lý khung thông tin bị lỗi, cơ chế hoạt động của
(Stop-and-Wait ARQ), phía phát sẽ thực hiện phát một phương pháp này và hiệu suất sẽ được phân tích chi tiết
khung thông tin sau đó dừng lại, chờ phía thu báo nhận. ở phần III.
Phía thu khi nhận đúng khung thông tin và xử lý xong sẽ
Trong nội dung bài báo cáo này sẽ tập trung vào phân tỷ lệ lỗi bit của kênh truyền cao, do phải phát lại cả một khung
tích và đánh giá cơ chế phát lại có lựa chọn (Selective dữ liệu (w frame) nếu xảy ra lỗi nên hiệu suất đạt được của cơ
reapeat ARQ) và so sánh với hai phương pháp còn lại. chế này sẽ rất thấp. Cơ chế selective repeat sẽ giải quyết vấn đề
này bằng cách chỉ phát lại duy nhất một frame bị lỗi thay vì phát
B. Các phương pháp phát hiện lỗi
lại nhiều frame như GBN.
Như đã đề cập ở phần trên, mã sửa lỗi (error-correcting
Cơ chế SRP (Selective Repeat Protocol) yêu cầu bên gửi và
codes) chỉ hiệu quả trong môi trường truyền không dây do xác
bên nhận có khả năng lưu trữ dữ liệu vào bộ đệm. Bên nhận sẽ
suất lỗi là khá lớn, ngược lại đối với các môi trường truyền ít
nhận cả những frame không đúng trình tự và lưu lại sau đó gửi
xảy ra lỗi hơn như quang hay cáp đồng trục thì việc sử dụng mã
báo lỗi NAK để bên phát phát lại gói tin bị lỗi. tương ứng bên
phát hiện lỗi (error-detecting codes) để phục vụ cho các cơ chế
phát có khả năng lưu trữ các gói đã gửi đi theo đúng trình tự,
phát lại ARQ là hiệu quả hơn. Trên thực tế có 3 loại mã phát
rồi phát lại nếu có yêu cầu.
hiện lỗi thường được sử dụng là[1]:
A. Mô hình hệ thống và nguyên lý hoạt động
 Parity.
 Checksums. Cơ chế SRP trong lớp data link hoạt động với mô hình như
 Cyclic Redundancy Checks (CRCs). hình 6. Lớp datalink trong mô hình OSI đặt giữa lớp Network
và lớp Physical, vì thế hoạt động của lớp data link nói chung và
Thông thường trong ARQ thường sử dụng CRCs. cơ chế ARQ nói riêng được xem xét từ quan hệ vào ra của ba
III. PHÂN TÍCH CƠ CHẾ PHÁT LẠI CÓ LỰA CHỌN lớp này. Ngoài ra kênh truyền chính là nguyên nhân gây ra lỗi
(SELECTIVE REPEAT ARQ) tin nên cần được xem xét tới ở đây.

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

Hình 6: Mô hình tổng quan hệ thống


Giả sử một yêu cầu gửi dữ liệu được chuyển tới lớp datalink gồm các loại data frame, ack frame, nak frame. Trường Trailer
từ lớp network. Lớp datalink sẽ tạo ra một frame bằng cách được lưu dãy bit của mã phát hiện lỗi. Trong ARQ thông thường
thêm vào các dãy bits mã hóa khác để thực hiện các chức năng sẽ là loại mã sửa sai CRC. Cũng có thể đó là check parity hay
của cơ chế. Như trong hình bên gửi bên gửi sẽ tạo ra một frame check sum, hoặc một mã phát hiện lỗi dạng phi tuyến nào đó
data bao gồm các trường: Control, Protocol, Trailer và Data. tùy vào hệ thống.
Trong đó data là dữ liệu được lấy từ lớp mạng, các trường còn
Sau khi frame được tạo ra, cơ chế SRP sẽ thực hiện lưu
lại được lớp datalink thêm vào.
frame trên vào bộ đệm. Sau đó gửi frame đó xuống lớp Physical
Trường Control và Protocol còn được ghép lại gọi là header, để thực hiện các chức năng khác, và cuối cùng là truyền đi trên
xuất hiện trong hình 1. Control bao gồm hai thông tin và kênh truyền. Kênh truyền tác động lên frame và gây ra các sai
sequence number, số thứ tự frame được phát đi, và ack number, hỏng tùy thuộc vào BER (Bit error ratio) - tỷ lệ lỗi bit tương
là số thứ tự mà bên gửi frame này đang cần nhận. Protocol được ứng của mỗi loại kênh truyền. Khi tới phía nhận, lớp Physical
sử dụng để mã hóa loại frame, với cơ chế selective repeat sẽ sẽ tiếp nhận và xử lý sau đó chuyển lên cho cho lớp datalink.
Frame sẽ được kiểm tra với đoạn mã trong trailer và sẽ phát thì bên nhận đưa frame đó vào bộ đệm để lưu lại. Sau cùng đưa
hiện ra sai hỏng nếu có. Đồng thời cũng so sánh giá trị của frame xuống lớp vật lý và truyền trở lại bên đã gửi dữ liệu.
sequence number trong trường control để biết được frame có tới
B. Các trường hợp phát lại trong cơ chế Selective repeat
đúng thứ tự hay không, nhờ đó cũng có thể biết các frame trước
ARQ
đó có bị mất trong quá trình truyền hay không.
Các trường hợp lỗi có thể gặp trong quá trình truyền tin là:
Nếu frame nhận được không bị lỗi và đúng thứ tự thì lớp
mất gói, gói tin tới đích nhưng bị lỗi, gói tin báo nhận bị lỗi.
data link sẽ chuyển dữ liệu trong trường data lên lớp network.
Các trường hợp này được mô tả trong hình 7 bên dưới. Hình 7
Đồng thời tạo ra một acknowledge frame với cấu trúc tương tự
mô tả quá trình truyền nhận các frame theo trục thời gian. Từ
data frame nhưng không có trường data và protocol sẽ là kiểu
mô tả trong hình có thể tìm được kích thước cửa sổ bằng 3, tổng
ack frame. Trường hợp frame nhận được bị lỗi, hoặc không lỗi
cộng có 11 frame dữ liệu đã được truyền thành công và có 3
nhưng không đúng trình tự thì bên nhận vẫn thực hiện tạo ra
trường hợp xảy ra lỗi.
một acknowledge frame nhưng với kiểu protocol là nak frame.
Nếu frame sai thứ tự nhưng hợp lệ và nằm không cửa sổ nhận

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

Transmit normally ACK


Retransmit NAK

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)𝑃𝑓

Với cơ chế Selective repeat ta tìm được:


𝑡𝑓
𝐸(𝑋) = (1 − 𝑃𝑓 )𝑡𝑓 + 𝑃𝑓 (𝐸(𝑋) + 𝑡𝑓 ) =
1 − 𝑃𝑓
𝑛𝑓 −𝑛𝑜
𝐸(𝑋) 𝑛𝑜
ƞ𝑆𝑅 = = (1 − ) ∙ (1 − 𝑃𝑓 ) (5)
𝑅 𝑛𝑓

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.

Hình 9: Quan hệ các cơ chế ARQ với tỷ lệ lỗi bit


D. Sơ đồ thuật toán cơ chế Selective Repeat ARQ Cơ chế xử lý của cả bên nhận và bên gửi đều đặt trong một
vòng lặp vô hạn, đợi một sự kiện diễn ra và sử lý yêu càu theo
Để làm rõ hơn cơ chế phát lại có chọn lọc SRP ta xây dựng
sự kiện đó. Với bên gửi, cần xử lý các loại sự kiện: tới từ lớp
thuật toán điều khiển cho bên phát và bên nhận. Mô hình thuật
network, lớp physical và sự kiện time-out. Cụ thể hơn ta có các
toán bên gửi được mô tả trong hình.
loại sự kiện: NwLayerReq, FrameArrival, Timeout có thể thấy
Request from
network layer
trong sơ đồ thuật toán hình 11 . Còn ở bên nhận chỉ có duy nhất
event
nguồn sự kiện tới từ lớp Physical với hai loại sự kiện:
repeat forever repeat forever

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

Rn = 0; Nếu frame không đúng thứ tự tức là frame Rn trước đó đã


được gửi và bị mất gói, tiếp tục kiểm tra xem báo lỗi cho Rn đã
Rw= W - 1;
nakSent = false;
ackNeed = false;
markBuffer[w] = {0};
được gửi chưa qua biến NakSent. Nếu chưa có báo lỗi được gửi
thì gửi NAK frame cho Rn. Sau đó tiếp tục kiểm tra xem frame
F waitEvent();
nhận được có nằm trong cửa sổ nhận không, nếu có thì lưu vào
T
bộ đệm, rồi trở về vòng lặp đợi sự kiện.
s = makeFrame(NAK,Rn);
event == F event == F putToPhysLayer(s);
FrameArrival ckSumError
nakSent = true; Nếu frame nhận được là đúng thứ tự tức Rn = Sn của frame
thì thực hiện lưu vào bộ đệm. Bước tiếp theo sẽ kiểm tra các
T T

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

[1] A.S. Tanenbaum and D.J. Wetherall, “Computer Networks


– 5th ed,” Prentice Hall, 2011.
[2] D. Bertsekas and R. Gallager, “Data Networks – 2th ed,”
Prentice Hall, 1992.
[3] E. Modiano, http://web.mit.edu/modiano/www
/6.263/lec3-4.pdf , “6.263/16.37J -- Data Communication
Networks” MIT course, lần cuối truy cập 18/12/2018.
[4] THIRU, http://www.myreadingroom.co.in/notes-and-
studymaterial/68-dcn/814-selective-repeat-arq-
protocol.html, internet forum, lần cuối truy cập
18/12/2018.
[5] Lin Cai, http://bbcr.uwaterloo.ca/~lcai/ece418/4-3.pdf ,
“E&CE 418 Communication Networks”, University of
Waterloo course, lần cuối truy cập 18/12/2018.

Вам также может понравиться