báo cáo được viết dạng bài báo ieee có code mô phỏng bằng verilog chạy trên phần mềm ISE có code đánh giá hiệu năng mathlab . bài viết được đánh giá cao khi bảo vệ bài tập lớn. ................................................................................................................................ Tìm hiểu hoạt động số chế tự động truyền lại GoBackN ARQ lớp datalink control chứng minh hiệu chế Thực hiện: Giáo viên hướng dẫn: TS Nguyễn Thành Chuyên Abstract—Bài báo cáo giao thức GoBackN repeat ARQ lớp Datalink control
Trang 1Tìm hiểu hoạt động của một số cơ chế tự động truyền lại Go-Back-N ARQ tại lớp data-link control và chứng minh
sự hiệu quả của các cơ chế+code phía dưới
Thực hiện: Giáo viên hướng dẫn: TS Nguyễn Thành Chuyên
Abstract—Bài báo cáo về giao thức Go-Back-N
repeat ARQ trong lớp Data-link control Trong bài
này tập trung tìm hiểu về giao thức, mô phỏng và
đánh giá hiệu quả của các cơ chế của giao thức,
đồng thời so sánh hiệu quả của giao thức so với các
giao thức khác.
Keywords: ARQ, Go-Back-N, data-link, ACK,
NACK, error detecting codes
I GIỚI THIỆU MÔ HÌNH OSI VÀ TẦNG DATA
LINK
Mô hình OSI (Open Systems Interconnection
Reference Model, viết ngắn là OSI Model hoặc OSI
Reference Model) – tạm dịch là Mô hình tham chiếu kết
nối các hệ thống mở – là một thiết kế dựa vào nguyên
lý tầng cấp, bao gồm 7 lớp mạng Mỗi tầng sẽ có nhiệm
vụ và chức năng riêng giúp tín hiệu được truyền đi luôn
được bảo mật tuyệt đối cũng như nhanh chóng và thuận
tiện hơn 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 1: Mô hình OSI
Tầng liên kết dữ liệu (Data Link Layer) là tầng thứ
2 trong mô hình bảy tầng OSI, được thể hiện trong Hình
1 Nhiệm vụ của lớp liên kết là xác định cơ chế truy cập
thông tin trên mạng, đóng gói và phân pháp các gói tin Ngoài ra, lớp vật lý còn cung cấp các chuẩn kết nối trong quá trình truyền dữ liệu Nó đáp ứng các yêu cầu phục vụ g1ửi tới tầng vật lý Tầng liên kết dữ liệu cung cấp các phương tiện chức năng và thủ tục để truyền dữ liệu giữa các thực thể mạng và có thể cung cấp phương tiện để 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ý Tầng liên kết dữ liệu cung cấp sự phối hợp giữa các thiết bị để không xảy ra xung đột
Thông tin cần ít nhất hai thiết bị cùng làm việc, một gởi và một thu Quá trình này luôn cần được kiểm soát điều phối để có được quá trình trao đổi tốt nhất Kiểm soát liên kết dữ liệu là dịch vụ được cung cấp bởi tầng liên kết dữ liệu để cung cấp truyền dữ liệu đáng tin cậy trên phương tiện vật lý Một chức năng quan trọng khác trong tầng kết nối dữ liệu là kiểm soát lưu lượng và kiểm soát lỗi
Hình 2: Cấu trúc tầng Data link
Hạng mục đường dây (line discipline): điều phối các
hệ thống kết nối, xác định thiết bị nào được phát và thiết bị nào được thu
Kiểm soát lưu lượng (flow control): điều phối lượng
thông tin có thể được truyền trước khi nhận được tin chấp nhận Đồng thời cũng cung cấp tín hiệu chấp nhận
từ máy thu, kết nối với quá trình kiểm soát lỗi
Kiểm tra lỗi tức là phát hiện và sửa lỗi (error control): Cho phép máy thu báo cho máy phát về các
Trang 2bản tin bị mất hay bị hỏng nhằm điều phối việc truyền
lại dữ liệu của máy phát
II TỔNG QUAN LỚP KIỂM TRA LỖI
(ERROR CONTROL) Trong lớp kết nối dữ liệu, từ kiểm tra lỗi ban đầu được
hiểu là các phương pháp phát hiện và truyền lại dữ liệu
ARQ: Automatic Repeat Request
Sửa lỗi trong lớp kết nối dữ liệu được thiết lập rất
đơn giản: Nếu phát hiện lỗi khi truyền thì bên thu gởi
về tín hiệu không xác nhận NAK (negative
acknowledgment) và frame được gởi lại Quá trình này
được gọi là yêu cầu tự động lặp lại (ARQ)
Sửa lỗi trong lớp kết nối dữ liệu dùng cơ sở yêu cầu
tự động lặp lại (ARQ), tức là việc truyền lại dữ liệu
trong ba trường hợp: frame bị hỏng, frame bị thất lạc,
và tín hiệu chấp nhận bị thất lạc
Hình 3: Cấu trúc Error Control
Stop and Wait ARQ: Là dạng điều khiển lưu lượng
truyền dạng ngừng và chờ được mở rộng để có thể
truyền dữ liệu trong trường hợp frame gởi đi bị thất lạc
hay bị hỏng
Sliding Window ARQ: mỗi phần của truyền (các gói
trong các lớp liên kết dữ liệu) được gán một số thứ tự
liên tiếp duy nhất và người nhận sử dụng các số để đặt
các gói nhận theo đúng thứ tự, loại bỏ các gói trùng lặp
và xác định các gói bị thiếu Có nhiều cơ chế dùng để
kiểm tra lỗi khi truyền dữ liệu liên tục, có hai giao thức
thông dụng là: go-back-n ARQ và selective-reject ARQ,
cả hai phương pháp này đều dựa trên phương pháp điều
khiển lưu lượng dùng cửa sổ trượt
III CƠ CHẾ HOẠT ĐỘNG SLIDNG WINDOW ARQ
Với cơ chế phát của Sliding Window ARQ, phía
phát sẽ được phát nhiều hơn một khung thông tin trước
khi nhận được báo ACK nhận từ phía thu Số khung
thông tin cực đại mà phía phát có thể phát (ký hiệu là
W) được gọi là kích thước cửa sổ Mỗi khi phát xong
một khung thông tin, phía phát giảm kích thước cửa sổ
đi 1, khi kích thước cửa sổ bằng 0, phía phát sẽ không
được phát thêm khung thông tin nào Mỗi khi phía thu nhận được một khung thông tin đúng và xử lý xong, phía thu sẽ gửi lại một báo nhận ACK cho phía phát Khi nhận được báo nhận này, phía phát sẽ tăng kích thước cửa sổ W lên 1
Để có thể phân biệt các khung trên đường truyền, các khung cần được đánh số thứ tự Nếu dùng k bit để đánh
số thì tổng số khung được đánh số sẽ là (từ 0 đến ) và
do đó, kích thước cửa sổ tối đa Wmax = (về mặt lý thuyết)
Ví dụ:
Sử dụng 3 bit để đánh số thứ tự cho các khung thông tin Lúc này kích thước cửa sổ cực đại sẽ là 7
Quan sát sơ đồ mô tả trên hình 4 dưới đây:
Tại thời điểm ban đâu, cả phía phát và thu đều có kích thước cửa sổ là W=7 Sau khi phía phát đã phát được ba khung (F0, F1, F2) và chưa nhận được ACK, phía phát giảm kích thước cửa sổ xuống còn W=4 thể hiện dữ liệu còn lại trong khung là F3 đến F6
Ở phía thu, sau khi đã nhận đúng và xử lý xong ba khung F0, F1 và F2 thì sẽ gửi lại ACK3 cho phía phát ACK3 nhằm ám chỉ rằng: “Phía thu đã nhận và xử lý xong các khung cho đến F2 và phía thu đang sẵn sàng nhận khung 3” Phía thu đồng thời tăng kích thước cửa
sổ bên thu lên 7, bao các khung từ F3 cho đến F1 Phía phát sau khi nhận được ACK3 sẽ tăng kích thước cửa sổ thêm 3 đơn vị Lúc này cửa sổ phía phát W = 7 và bao các khung từ F3 đến F1 và lấy thêm khung 3 dữ liệu kế tiếp F7 đến F1 Giả sử lúc này phía phát thực hiện phát các khung từ F3 đến F6 Sau khi phát, phía phát sẽ giảm kích thước cửa sổ đi 4 (W = 3), lúc này cửa sổ chỉ còn bao các khung F7, F0 và F1
Phía thu gửi lại ACK4, báo rằng nó đã nhận và xử lý xong khung F3, ACK4 và phía phát được phép phát tối
đa là 7 khung bắt đầu từ F4 Tuy nhiên khi ACK4 về đến phía phát thì phía phát đã thực hiện phát các khung F4, F5 và F6 rồi, như vậy, phía phát sẽ chỉ còn phát
Trang 3được tối đa là 4 khung bắt đầu từ F7.
Hình 4: Sơ đồ mô tả hoạt động của Sliding Window ARQ
Trong trường hợp lý tưởng (không có lỗi xảy ra) thì cơ
chế cửa sổ trượt đảm bảo số khung thông tin từ phía
phát đến phía thu không vượt quá kích thước cửa sổ
Khi có lỗi xảy ra, việc truyền lại các khung lỗi của cơ
chế cửa sổ trượt được thực hiện theo hai cách khác
nhau:
Go-back-N: phía phát sẽ thực hiện phát lại khung
thông tin bị sai và tất cả các khung thông tin khác đã
được truyền, tính từ khung bị sai
Selective repeat: phía phát sẽ chỉ phát lại các khung
thông tin bị sai
IV PHÂN TÍCH CƠ CHẾ PHÁT LẠI GO-BACK-N
ARQ Trong phương pháp cửa sổ trượt go-back-n ARQ, nếu
một frame bị thất lạc hay hỏng, tất cả các frame được
phát lại kể từ tín hiệu xác nhận cuối cùng được gửi đi
Có 3 dạng phát lại: Hư Frame data, mất Frame data,
mất Frame Khung
Mất ACK: Khung ACK bị lỗi – ACK bị lỗi có thể xảy
ra một trong hai trường hợp:
+ Phía thu nhận được khung 2 và gửi ACK3 về phía
phát và ACK này bị mất trên đường truyền Giả sử
trước khi time-out của khung 2 xảy ra, phía phát nhận
được ACK5 thì phía phát hiểu rằng khung 2, khung 3,
khung 4 đã được nhận đúng Người ta nói cơ chế của
Go-back-N sử dụng cummulative ACK (nghĩa là các
ACK sau cũng đồng thời báo nhận cho các khung trước
đó) Nếu trong khoảng thời gian time-out của khung 2,
phía phát không nhận được ACKn (n>2) nào cả thì sau
time-out, phía phát sẽ phải phát lại khung 2 (và tất cả các khung sau đó)
Hình 5: Trường hợp mất ACK
+ Khung NAK bị lỗi – trong trường hợp NAK bị lỗi, nghĩa là khung 2 bị lỗi, lúc này phía thu sẽ không nhận thêm một khung nào sau khung 2 (và cũng sẽ không gửi báo nhận) Với trường hợp này phía phát bắt buộc phải chờ đến time-out và thực hiện phát lại khung 2
Mất Frame dữ liệu:
Giao thức cửa sổ trượt đòi hỏi các frame dữ liệu phải được chuyển đi tuần tự Nếu một trong số các frame này bị nhiễm nhiễu và bị thất lạc trong khi truyền, thì frame đến sau sẽ bị máy thu loại Máy thu kiểm tra số nhận dạng của mỗi frame, phát hiện ra là một số frame
đã bị bỏ qua, và gởi về tín hiệu NAK cho frame thất lạc đầu tiên Frame NAK thông báo yêu cầu gởi lại mà không chỉ ra là frame đã bị thất lạc hay hỏng Thiết vị phát sẽ phát lại frame do NAK yêu cầu, cùng các frame
đã được chuyển đi sau frame vừa thất lạc
Hình 6: Trường hợp mất frame data
Trong hình trên, dữ liệu 0 và 1 thu được nhưng dữ liệu
2 thì bị thất lạc Frame kế tiếp sẽ đến máy thu là frame
3 Máy thu đang chờ frame 2 nên frame 3 bị xem là lỗi,
bị loại và gởi về thông báo NAK 2, cho biết các frame 0
và 1 đã được chấp nhận nhưng frame 2 thì bị sai (bị thất lạc trong trường hợp này) Trong thí dụ trên, do máy phát đã phát dữ liệu 4 trước khi nhận được NAK 2, dữ
Trang 4liệu 4 đến đích nhưng bị loại Một khi máy phát nhận
được tín hiệu NAK 2, thì chuyển tất cả các frame còn bị
kẹt lại (2, 3 và 4)
Hư Frame:
Việc gì xảy ra nếu các frame 0, 1, 2 và 3 đã được gửi đi,
nhưng tín hiệu xác nhận đầu tiên lại là NAK 3?
NAK có hai ý nghĩa:
(1) một xác nhận về tất cả các frame nhận được trước
khi có frame bị hỏng
(2) tín hiệu không xác nhận đối với frame hiện tại
Nếu NAK đầu tiên là NAK 3, có nghĩa là các frame dữ
liệu 0, 1, và 2 đã được nhận tốt Chỉ cần gửi lại frame số
3
Ngay vừa khi máy thu phát hiện lỗi, thì máy ngừng tiếp
nhận các frame cho đến khi frame bị hỏng được thay
thế xong Trong trường hợp này thì dữ liệu 3 xuất hiện
hỏng và bị loại, cùng các dữ liệu 4 Dữ liệu 0, 1 và 2, đã
được nhận trước khi có frame bị hỏng, đã được chấp
nhận, bằng cách gởi về máy phát frame NAK 3 Như
thế cần gởi lại các frame 3 và 4
Hình vẽ dưới đây cho một thí dụ trong đó 6 frame được
gởi đi trước khi phát hiện ra lỗi ở frame 3 Trường hợp
này máy thu gởi về tín hiệu ACK 3 cho biết các frame
0, 1 và 2 đã được chấp nhận Trong hình thì ACK 3 đã
được gửi trước khi dữ liệu 3 đến Phát hiện lỗi tại frame
3, tín hiệu NAK được gởi tức thì và các frame 4 và 5 bị
loại khi chúng đến Thiết bị phát gởi lại cả ba frame (3,
4 và 5) do từ xác nhận trước đó, và quá trình tiếp tục
Máy thu đã loại các frame 4 và 5 (cùng các frame tiếp
theo) cho đến khi nhận tốt được frame 3
Hình 6: Trường hợp hư frame data
Một số chú ý của cơ chế hoạt động ARQ Go-back-N
Trong trường hợp phía thu có khả năng xử lý W khung thông tin thì không cần bộ đệm Phía thu chỉ nhận và xử
lý thông tin theo đúng thứ tự (dựa trên số thứ tự đánh trên các khung) Phía thu chuyển các gói thông tin lên lớp cao hơn theo thứ tự Phía thu sẽ không nhận khung i+1 nếu chưa nhận được khung i Điều này là nguyên nhân khiến phía thu không cần phải có bộ đệm Phía phát phải lưu tối đa là W khung thông tin trong bộ đệm
để chờ ACK
Hiệu suất của phương pháp Go-back-N ARQ, so sánh với các phương pháp khác
Hiệu suất của cơ chế ARQ được tính bằng tỷ lệ tốc
độ truyền nhận thực tế () so với lý thuyết (R) Với Reff được tính theo công thức [2]:
(1) Với E[] thời gian truyền trung bình, là số bit dữ liệu, là số bit phát hiện lỗi
Hình 7: Biểu đồ thời gian quá trình truyền tin cơ chế ARQ
Nếu không có lỗi xảy ra thì giá trị E[] = Giá trị t có thể thấy được qua hình là:
(2) Với là số bit của bản tin ACK, còn R là băng thông
hệ thống Áp dụng cách tính từ công thức (1) ta tìm được hiệu suất của các cơ chế phát lại như sau:
Hình 8: Biểu đồ thời gian quá trình truyền tin Stop and Wait
Với cơ chế Stop and Wait, coi = Ta có:
Trang 5
là xác suất việc truyền nhân thông tin bị lỗi 1 frame
(3)
Với cơ chế Go-back-N ta tìm được:
Với cơ chế Selective repeat ta tìm được:
(5) 1-=exp(-p x )
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à p của kênh truyền
được vẽ bằng matlab với giá trị kích thước = 1250
byte= 10000 bits, , R=1Mbps, với p= {0 ;;},W=11
Bảng 1: Hiệu suất ba cách truyền tin ARQ[3]
Ta có đồ thị như hình 9
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ơ chế SW là cơ chế có hiệu nhất, nhưng với giá trị thời gian frame đi trên kênh truyền tprop càng nhỏ thì hiệu suất càng cao Giá trị W = 3 và W = 11 đại diện cho tỷ lệ tprop và tf với (W-1) = 2 tprop / tf Giá trị N này tương đương với kích cửa sổ trong giao thức GBN và
SR Cơ chế GBN cũng cho thấy giá trị W càng nhỏ thì
hiệu suất càng ít bị ảnh hưởng bởi BER.Và chắc chắn
Hình 9: Quan hệ các cơ chế ARQ với tỷ lệ lỗi bit
Sơ đồ thuật toán cơ chế Go-back-N ARQ
Để làm rõ hơn cơ chế phát Go-back-N ta xây dựng
thuật toán điều khiển cho bên phát và bên nhận Mô
hình thuật toán bên gửi được mô tả trong hình
Hình 3: Mô hình hóa cơ chế xử lý
Hình 11: Sơ đồ thuật toán cơ chế Go-back-N bên gửi (gửi)
Trang 6Hình 12: Sơ đồ thuật toán cơ chế Go-back-N bên gửi (nhận)
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 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 network, lớp physical và sự
kiện time-out có thể thấy trong sơ đồ thuật toán hình 11
và hình 12
Hình 13: Sơ đồ thuật toán cơ chế Go-back-N bên
nhận
Bên nhận chỉ có duy nhất nguồn sự kiện tới từ lớp
Physical với hai loại sự kiện: FrameArrival và
Các thành phần trong sơ đồ thuật toán chính là các
trường hợp có thể gặp của cơ chế Go-back-N Ở bên
phát ta thấy có 4 biểu đồ chính là các sự kiện tới từ lớp khác
Nhánh thứ nhất, khi có yêu cầu gửi từ lơp network bên phát 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
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 tin nhận được là NAK và nằm trong cửa
sổ gửi thì gửi lại tất cả các frame trong window nếu nhận được một frame ACK có số thứ tự cũng nằm trong
Trang 7cửa sổ gửi thì xóa bỏ bộ đệm của tất cả các frame đã
gửi và dịch vị trí cửa sổ
Nhánh thứ ba, khi nhận được một timeout Bên phát
sẽ gửi lại frame trong bộ đệm với số thứ tự của time-out
và khởi động lại timer cho frame đó Lưu ý là trường
hợp này có ưu tiên xử lý thấp hơn hai trường hợp còn
lại
Nhánh thứ tư, khi kích thước bộ đệm vượt giới hạn,
tức là chệnh lệch cạnh trên và cạnh dưới cửa sổ lớn hơn
hoặc bằng kích thước cửa sổ Lúc này bộ đệm đã đầy và
không thể lưu thêm frame nào nữa vì thế cần báo cho
lớp network không tiếp tục gửi dữ liệu xuống
Ở bên nhận, với sự kiện có một 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
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 đã đượ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 nhận được có nằm
trong cửa sổ nhận không, nếu có thì lưu vào bộ đệm, rồi
trở về vòng lặp đợi sự kiện
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 bit trạng thái bộ đệm Đi từ Rn tới vị trí
cuối bộ đệm nếu lần lượt các bit đều là 1 thì sẽ đưa các
dữ liệu tương ứng từ bộ đệm 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ố lượng
packet dữ liệu đã được đưa tới lớp network
Kết quả mô phỏng
Mô phỏng truyền 100 frames data theo cơ chế
Go-back-N với kích thước cửa sổ W=7, thời gian = 7
clock, time-out = 5 clock, time-prop=3 clock, time-proc
=0 clock,
Hình 14: Kết quả gửi đi frames đầu tiên
Hình 15: Kết quả mô phỏng - xử lý lỗi mất ACK
Trang 8Hình 16: Kết quả mô phỏng - xử lý lỗi mất frame data
P1
Hình 17: Kết quả mô phỏng - xử lý lỗi mất frame data
P2
Hình 18: Kết quả mô phỏng - xử lý lỗi time-out P1
Hình 19: Kết quả mô phỏng - xử lý lỗi time-out P2
Trang 9Hình 20: Kết quả truyền đi frames cuối cùng
Kết quả mô phỏng thành công khi mà kết quả thu
được đúng với kết quả đã tính trước, dữ liệu được
chuyển đến đích một cách nguyên vẹn và được sửa sai
bằng cơ chế phát lại của Go-back-N Do việc mô phỏng
chỉ mang tính kiểm tra sự truyền dữ liệu và sửa sai cũng
như chưa chọn đượ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 mà ta không
tiến hành việc tính hiệu suất Go-back-N tại đây
V KẾT LUẬN
Qua sự so sánh hiệu suất truyền tải của cơ chế
Go-back-N với các cơ chế ARQ khác ta kết luận rắng, cơ
chế Go-back-N cho hiệu suất tương đối so với Stop and
wait và Selective repeat Nhưng các trường hợp tính toán trong 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ế Go-Back-N là cơ chế phức tạp nhất trong ARQ Nhưng đồng thời hệ thống cũng cần ít bộ đệm trong quá trình xử lý Dẫn tới chi phí không quá 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
REFERENCES
[1] https://vi.wikipedia.org/wiki/Mô_hình_OSI, lần cuối truy cập 8/12/2019
[2] D Bertsekas and R Gallager, “Data Networks – 2th ed,” Prentice Hall, 1992
https://slideplayer.com/slide/15392363/, lần cuối truy cập 9/12/2019
Trang 10Code mô phỏng hiệu suất matlab
p=[0 :10^(-7): 10^(-3)];
R=1000000;
n0=200;
na=200;
nf=10000;
t=0.1;
L=t*R/nf;
W=L+1;
t1=0.001;
L1=t1*R/nf;
W1=L1+1;
Pf=1-exp(-p.*nf);
ngbn=(1-n0/nf)*(1-Pf)./(1+Pf.*(W-1));
nsw=(1-n0/nf)*(1-Pf)./(1+na/nf+L);
ngbn1=(1-n0/nf)*(1-Pf)./(1+Pf.*(W1-1));
nsw1=(1-n0/nf)*(1-Pf)./(1+na/nf+L1);
nsr=(1-n0/nf)*(1-Pf)./1;
plot(p,nsw,'b.-',p,ngbn,'r-',p,nsr,'g ',p,nsw1,'k.-',p,ngbn1,'m-');
xlabel('p') ;
ylabel('efficiency ARQ') ;
legend ('nsw= Stop and wait|W=11',' ngbn = Go-back-N|W=11',' nsr= Selective Repeat', 'nsw= Stop and wait|W=3',' ngbn = Go-back-N|W=3');
xlim([0 5*10^(-4)]);
Code chạy trên verilog phần mềm ISE
`timescale 1ns / 1ps
module TB_HTVT;
reg clk;
integer source[0:99],destination[0:99];
integer count_s,count_d,count;
integer window[0:6],ACK[0:6];
integer size_win;
reg mode_around,mode_stop;