Tải bản đầy đủ (.pdf) (36 trang)

TÌM HIỂU VÀ LẬP TRÌNH GIAO THỨC TRUY CẬP MẠNG NGẪU NHIÊN CSMACA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (845.96 KB, 36 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THƠNG

ĐỒ ÁN I
TÌM HIỂU VÀ LẬP TRÌNH GIAO THỨC TRUY CẬP MẠNG
NGẪU NHIÊN CSMA/CA
Giáo viên hướng dẫn: TS. Phùng Thị Kiều Hà
Hà Mạnh Lam
Doãn Xuân Khang

Điện tử 07 - K60
CN Điện tử 01 - K61

Hà Nội, 01/2019


KẾ HOẠCH THỰC HIỆN
Thời gian

Kế hoạch

04/10/2018

Nhận đề tài

05/10-01/11/2018

Đọc hiểu tài liệu, viết báo cáo slide hàng tuần

02/11-15/12/2018


Hiểu đề tài, lập trình mơ phỏng giao thức, chỉnh sửa

16/12/2018- nay

Tiếp tục đọc hiểu, chỉnh sửa code, viết báo cáo

PHÂN CHIA CÔNG VIỆC
Thành viên thực hiện

Cơng việc

Cả nhóm

Đọc hiểu tài liệu, thảo luận

Lam (60%) + Khang (40%)

Chuẩn bị slide báo cáo hàng tuần

Lam (40%) + Khang (60%)

Hiểu code, chỉnh sửa code

Lam

Viết báo cáo, chỉnh sửa báo cáo

ĐIỂM ĐÁNH GIÁ CÁ NHÂN
Hà Mạnh Lam
Doãn Xuân Khang


ĐỒ ÁN I – CSMA/CA

1


MỤC LỤC
Kế hoạch thực hiện………………………………………………………

Trang

1

Phân chia công việc……………………………………………………...

Trang

1

Mục lục…………………………………………………………………..

Trang

2

Lời mở đầu……………………………………………………………….

Trang

3


Danh mục hình ảnh....................................................................................
Danh mục bảng biểu……………………………………………………..

Trang
Trang

4
4

Danh mục từ viết tắt………………………………………..……………

Trang

4

I: PROTOCOL…………………………………………………………

Trang

5

1: Khái niệm……………………………………………………………..

Trang

5

2: Hoạt động………………………………..............................................


Trang

5

3: Một số Protocol thông dụng…………………………………………..

Trang

6

II: CSMA/CA...........................................................................................

Trang

8

1: Đặt vấn đề…….……………………………………………………….

Trang

8

2: Khái niệm CSMA/CA………………………………………………...

Trang

8

2.1. Đa truy nhập, xung đột……………………………………………


Trang

8

2.2. CSMA……………………………………………………………...

Trang

9

2.3. CSMA/CA………………………………………………………....

Trang

11

3: Hoạt động…..…………………………………………………………

Trang

12

3.1. CSMA trong mạng không dây……………………………………..

Trang

12

3.2. Tránh va đập trong mạng không dây……………………………...
3.3. Các trường hợp gửi nhận gói tin giữa nguồn và đích …………….


Trang
Trang

13
15

III: LẬP TRÌNH MƠ PHỎNG GIAO THỨC……………………......

Trang

19

1: Mơ tả chung…………………………………………………………...

Trang

19

2: Logic thực hiện...……………………………………………………...

Trang

19

3: Code…………………….……………………………………………..

Trang

20


4: Kết quả thực hiện……………………………………………………...

Trang

28

IV: NHẬN XÉT………………………………………………………...

Trang

32

KẾT LUẬN……………………………………………………………...

Trang

34

TÀI LIỆU THAM KHẢO……………………………………………….

Trang

35

ĐỒ ÁN I – CSMA/CA

2



LỜI MỞ ĐẦU

Cuộc sống con người ngày càng hiện đại, kèm theo đó là sự phát triển thịnh vượng,
vượt bậc của khoa học công nghệ, giúp con người thuận tiện trong mọi công việc và đời
sống. Sự giao tiếp và truyền thông tin của con người ngày càng nhiều và trở nên rất quan
trọng. Nhờ sự phát triển của kỹ thuật, cơng nghệ mà ngày nay con người đã có thể truyền
dữ liệu, gửi thông tin, giao tiếp một cách dễ dàng.
Việc giao tiếp, truyền phát dữ liệu về cơ bản được chia làm 2 loại: Khơng dây và có dây.
Tuy nhiên, không phải việc truyền thông tin lúc nào cũng thực hiện được hay chính xác
tuyệt đối mà bị tác động bởi nhiều yếu tố như môi trường ( thời tiết…), xung đột tín hiệu
trên đường truyền…Vậy nên các quy tắc chuẩn hay Protocol được đưa ra để giải quyết vấn
đề này.
CSMA/CA là một trong những giao thức truyền tin giúp tránh sự xung đột dữ liệu trong
đường truyền. Trong đề tài này, chúng em sẽ khái quát về cách thức hoạt động của protocol
này và mô phỏng việc truyền gói tin giữa các host dựa trên hoạt động đó.
Học phần Đồ Án I đã giúp chúng em tìm hiểu thêm cũng như tiếp cận và kết nối lý
thuyết với thực tế hơn. Trong báo cáo cũng như quá trình thực hiện thiết kế mơ phỏng và
làm báo cáo cịn nhiều sai sót về độ chính xác và chất lượng. Vậy nhóm em rất mong nhận
được sự thơng cảm và đóng góp tích cực của cơ để rút kinh nghiệm, cải thiện kĩ năng và
có thêm kiến thức học tập trong học phần này.
Chúng em xin chân thành cảm ơn !

Hà Nội, ngày 22 tháng 12 năm 2018

ĐỒ ÁN I – CSMA/CA

3


DANH MỤC HÌNH ẢNH

Hình 1

Hoạt động truyền dữ liệu của protocol

Hình 2

Cơ chế truy nhập kênh 1-persistent CSMA

Hình 3

Cơ chế truy nhập kênh p-persistent CSMA

Hình 4

Cơ chế truy nhập kênh none-persistent CSMA

Hình 5

Cơ chế gửi gói tin trong CSMA mạng khơng dây

Hình 6

Cơ chế gửi - nhận trong CSMA mạng khơng dây

Hình 7

Tránh va đập trong mạng khơng dây

Hình 8


Sơ đồ mơ tả đầy đủ cơ chế CSMA/CA

Hình 9

Q trình gửi nhận thành cơng lần đầu

Hình 10

Q trình truyền với lỗi nhận bản tin CTS

Hình 11

Quá trình truyền với lỗi nhận data

Hình 12

Quá trình truyền với lỗi bản tin phản hồi ACK

Hình 13

Khảo sát giá trị Throughput và Time theo lambda

DANH MỤC BẢNG BIỂU
Bảng 1

DIFS theo các chuẩn kết nối không dây

Bảng 2

DIFS theo các chuẩn kết nối không dây


DANH MỤC TỪ VIẾT TẮT
CSMA
CD
CA
DIFS
SIFS
ACK
CTS
RTS
NAV

Carrier Sense Multiple Access
Collision Detection
Collision Avoidance
DCF Inter-Frame Space
Service Inter-Frame Space
Acknowledgement
Clear to send
Request to send
Network Allocation Vector

ĐỒ ÁN I – CSMA/CA

4


I: PROTOCOL
1. Khái niệm
Giao thức giao tiếp hay còn gọi là giao thức truyền thông, giao thức liên mạng, giao

thức tương tác, giao thức trao đổi thông tin (tiếng Anh là communication protocol) - trong
công nghệ thông tin gọi tắt là giao thức (protocol), tuy nhiên, tránh nhầm với giao thức
trong các ngành khác - là một tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữ liệu,
phát tín hiệu, chứng thực và phát hiện lỗi dữ liệu - những việc cần thiết để gửi thông tin
qua các kênh truyền thơng, nhờ đó mà các máy tính (và các thiết bị) có thể kết nối và trao
đổi thơng tin với nhau. Các giao thức truyền thông dành cho truyền thơng tín hiệu số trong
mạng máy tính có nhiều tính năng để đảm bảo việc trao đổi dữ liệu một cách đáng tin cậy
qua một kênh truyền thông không hồn hảo. Các giao thức có thể được thực hiện bằng phần
cứng, phần mềm hoặc kết hợp cả hai.
Một giao thức xác định:
-

Định dạng và thứ tự thông điệp trao đổi giữa hai hoặc nhiều thực thể giao tiếp

-

Các hành động trong quá trình truyền/ nhận

Các giao thức khác nhau thực hiện các nhiệm vụ giao tiếp khác nhau
Các giao thức còn được gọi là các nghi thức hoặc định ước của máy tính.
2. Hoạt động
Tồn bộ hoạt động truyền dữ liệu trên mạng phải được chia thành nhiều bước riêng biệt
có hệ thống. Ở mỗi bước, một số hoạt động sẽ diễn ra và không thể diễn ra ở bất kỳ bước
nào khác. Mỗi bước có những nguyên tắc và giao thức riêng.
Các bước phải được thực hiện theo một trình tự nhất quán giống nhau trên mỗi máy tính
mạng. Ở máy tính gửi, những bước này phải được thực hiện từ trên xuống. Ở máy tính
nhận, chúng phải được thực hiện từ dưới lên.

ĐỒ ÁN I – CSMA/CA


5


Hình 1: Hoạt động truyền dữ liệu của protocol
Cả máy tính gửi và máy tính nhận cần thực hiện từng bước theo cùng một cách để dữ
liệu lúc nhận sẽ không thay đổi so với lúc gửi. Chẳng hạn, hai giao thức có thể chia thành
nhiều gói và bổ sung thêm các thông tin thứ tự, thông tin thời lượng và thông tin kiểm lỗi,
tuy nhiên mỗi giao thức lại thực hiện việc này theo cách khác nhau. Do đó, máy tính dùng
giao thức này sẽ khơng thể giao tiếp thành cơng với máy tính dùng giao thức khác.

3. Một số Protocol thơng dụng
Có nhiều giao thức được sử dụng để giao tiếp hoặc truyền đạt thông tin trên Internet,
dưới đây là một số các giao thức tiêu biểu:
• TCP (Transmission Control Protocol): Là một trong các giao thức cốt lõi của bộ
giao thức TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có
thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói
tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy
và đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch
vụ Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một máy chủ.

ĐỒ ÁN I – CSMA/CA

6


• IP (Internet Protocol): Là một giao thức hướng dữ liệu được sử dụng bởi các máy
chủ nguồn và đích để truyền dữ liệu trong một liên mạng chuyển mạch gói.
• HTTP (HyperText Transfer Protocol): Cho phép trao đổi thơng tin (chủ yếu ở dạng
siêu văn bản) qua Internet, là một trong năm giao thức chuẩn của mạng Internet,
được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử

dụng dịch vụ (Web client) trong mơ hình Client/Server dùng cho World Wide WebWWW, HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức
nền tảng cho Internet).........
• FTP (File Transfer Protocol): Cho phép trao đổi tập tin qua Internet, thường được
dùng để trao đổi tập tin qua mạng lưới truyền thông dùng giao thức TCP/IP (chẳng
hạn như Internet - mạng ngoại bộ - hoặc Intranet - mạng nội bộ).
• SMTP (Simple Mail Transfer Protocol): Là một chuẩn truyền tải thư điện tử, cho
phép gởi các thông điệp thư điện tử (e-mail) qua Internet.
• POP3 (Post Office Protocol, phiên bản 3): Là một giao thức tầng ứng dụng, dùng
để lấy thư điện tử từ server mail, thông qua kết nối TCP/IP. POP3 và IMAP4
(Internet Message Access Protocol) là 2 chuẩn giao thức Internet thông dụng nhất
dùng để lấy nhận email. Hầu như các máy tính hiện nay đều hỗ trợ cả hai giao thức
• MIME (Multipurpose Internet Mail Extension): Là một tiêu chuẩn Internet về định
dạng cho thư điện tử. Hầu như mọi thư điện tử Internet được truyền qua giao thức
SMTP theo định dạng MIME. Vì gắn liền với chuẩn SMTP và MIME nên đơi khi
thư điện tử Internet cịn được gọi là thư điện tử SMTP/MIME, cho phép gởi kèm
các tập tin nhị phân, phim, nhạc,... theo thư điện tử.
• WAP (Wireless Application Protocol): Là một tiêu chuẩn cơng nghệ cho các hệ
thống truy nhập Internet từ các thiết bị di động như điện thoại, PDA. Mặc dù tiêu
chuẩn này chưa được chuẩn hóa trên tồn cầu, nhưng những ứng dụng của giao thức
này đã tác động rất lớn đến ngành công nghiệp di động và các lĩnh vực dịch vụ liên
quan. WAP là mang lại rất nhiều ứng dụng cho người sử dụng thiết bị đầu cuối di
động như E-mail, web, mua bán trực tuyến, ngân hàng trực tuyến …

ĐỒ ÁN I – CSMA/CA

7


II: CSMA/CA
1. Đặt vấn đề

CSMA/CD (Carrier Sense Multiple Access with Collision Detection) là giao thức
truyền thơng tin trong đó các thiết bị mạng tranh nhau sử dụng đường truyền, như trong
Ethernet chẳng hạn. Khi một thiết bị muốn truyền tin, nó phải lắng nghe xem có thiết bị
nào đang sử dụng đường truyền hay không. Nếu đường truyền đang rảnh (idle), nó sẽ truyền
dữ liệu lên đường truyền. Trong quá trình truyền tải, nó đồng thời lắng nghe, nhận lại các
dữ liệu mà nó đã gửi đi để xem có sự đụng độ với dữ liệu của các thiết bị khác hay không.
CSMA/CD được phát triển từ CSMA để tăng hiệu quả của phương thức CSMA, bằng
cách dừng việc truyền tín hiệu ngay khi phát hiện thấy xung đột, giảm thiểu thời gian chờ
để thực hiện việc truyền tiếp theo. (CSMA không kết thúc việc truyền dữ liệu nếu phát hiện
xung đột, những máy đang truyền sẽ tiếp tục truyền, những máy gây xung đột sau khi nhận
được thông báo sẽ dừng một khoảng thời gian trước khi cố gắng truyền tiếp).
Một cuộc đụng độ xảy ra nếu cả hai thiết bị cùng truyền dữ liệu một cách đồng thời.
Khi đụng độ xảy ra, mỗi thiết bị sẽ tạm dừng một khoảng thời gian ngẫu nhiên nào đó trước
khi thực hiện truyền lại dữ liệu bị đụng độ. Khi mạng càng bận rộn thì tần suất đụng độ
càng cao. Hiệu suất của mạng giảm đi một cách nhanh chóng khi số lượng các thiết bị nối
kết vào mạng tăng lên.
Giải pháp: Sử dụng cơ chế tránh xung đột trong quá trình truyền – Collision Avoidance.

2. Khái niệm CSMA/CA
2.1.

Đa truy nhập, xung đột

a) Đa truy nhập:
-

Là cơ chế truy nhập trong đó người sử dụng sử dụng chung một băng tần.

-


Nhiều người sử dụng có thể truy cập kênh truyền tại cùng một thời điểm.

• Ưu điểm: Khơng phải thiết lập kênh truyền trước khi gửi dữ liệu.
• Nhược điểm: Có sự tranh chấp tài nguyên đường truyền dẫn đến xung đột dữ liệu
trên đường truyền.
-

Đa truy nhập phù hợp cho cơ chế truyền không liên kết.
ĐỒ ÁN I – CSMA/CA

8


-

Khơng liên kết: Thiết bị mạng khi có nhu cầu có thể gửi trực tiếp dữ liệu lên mạng
(khơng cần phải thiết lập và huỷ bỏ kết nối).

b) Xung đột:
-

(Collision) Xung đột xảy ra khi 2 hay nhiều thiết bị mạng cùng truy nhập kênh
truyền tại cùng một thời điểm

2.2.

CSMA
CSMA( Carrier Sense Multiple Access – đa truy nhập cảm biến sóng mang ) là cơ
chế được đưa ra đầu tiên với yêu cầu nâng cao hiệu suất kênh bằng cách giảm va
đập, do đó đây là cơ chế kiểm tra trạng thái kênh truyền. Trước khi truy nhập kênh,

trạm có cơ chế kiểm tra trạng thái kênh truyền (Carrier sense). Nếu có sóng mang
(Carrier): Kênh truyền bận (có một trạm khác đang truy nhập kênh). Nếu khơng có
sóng mang: Kênh truyền rỗi.

Phân loại:
-

1-persistent CSMA

-

p-persistent CSMA

-

None-persistent CSMA

• persistent CSMA
-

Cơ chế truy nhập kênh

Hình 2: Cơ chế truy nhập kênh 1-persistent CSMA

ĐỒ ÁN I – CSMA/CA

9


-


Nhận xét:
+ Va đập xảy ra khi có từ 2 trạm cùng đợi và cùng truy nhập kênh truyền khi
kênh chuyển sang trạng thái rỗi.
+ Xác suất xảy ra va đập vẫn cao, đặc biệt khi tải lớn hoặc với gói dài.

• p-persistent CSMA
-

p-persistent CSMA khắc phục nhược điểm của 1-persistent CSMA.

-

p-persistent CSMA đưa ra khái niệm mini slot: với tms << ts, thông thường là
thời gian lan truyền tối đa của tín hiệu trên kênh (2 x round trip propagation
delay).

-

Cơ chế truy nhập kênh:
+ Khi kênh truyền rỗi, trạm truy nhập kênh với xác suất p.
+ Ngược lại, trạm đợi một mini slot với xác suất (1-p) sau đó kiểm tra trạng
thái kênh.

Hình 3: Cơ chế truy nhập kênh p-persistent CSMA
-

Nhận xét:
+ Va đập xảy ra khi có từ 2 trạm trở lên cùng truy nhập với xác suất p hoặc
tất cả các trạm cùng đợi với xác suất (1-p).

+ Với p càng nhỏ thì xác suất va đập càng thấp, tuy nhiên hiệu suất kênh
cũng giảm do thời gian kênh truyền không bị chiếm (idle) tăng.
+ Chọn p để cải thiện hiệu suất kênh:
𝑝=

1
𝑛

với n là số trạm truy cập kênh.

ĐỒ ÁN I – CSMA/CA

10


• None-persistent CSMA
-

Khái niệm “back-off”: Khi kênh truyền bận, một trạm sẽ trì hỗn truy nhập
kênh một khoảng thời gian ngẫu nhiên bằng số nguyên lần của mini slot.

-

Cơ chế truy nhập kênh:

Hình 4: Cơ chế truy nhập kênh none-persistent CSMA
-

2.3.


Nhận xét: Nếu thời gian back-off lớn, hiệu suất cũng giảm.

CSMA/CA
CSMA/CA ( Carrier Sense Multiple Access with Collision Avoidance) là cơ chế đa
truy cập (hoạt động như CSMA) nhưng tránh xung đột thuộc tầng vật lý kiểm soát
phương thức truy cập được sử dụng trong IEEE 802.11 (Wi Fi) mạng LAN không
dây (WLAN).
Điểm khác biệt ở đây là CSMA/CA sẽ chỉ truyền khi bên kia sẵn sàng nhận và không
truyền nhận dữ liệu nào khác trong lúc đó.
Điều này đặc biệt quan trọng đối với các mạng không dây, trong đó việc phát hiện
va chạm của CSMA/CD thay thế là không đáng tin cậy do vấn đề nút ẩn. Chúng ta
sẽ đi sâu vào làm rõ sự hoạt động của giao thức này để thấy được ưu điểm của nó
so với CSMA và CSMA/CD .

ĐỒ ÁN I – CSMA/CA

11


3. Hoạt động
3.1.

CSMA trong mạng không dây
-

Carrier Sense : Trước khi truyền, trước tiên một nút lắng nghe phương tiện
được chia sẻ (chẳng hạn như nghe tín hiệu khơng dây trong mạng không dây)
để xác định xem một nút khác có truyền hay khơng. Lưu ý rằng vấn đề nút
ẩn có nghĩa là một nút khác có thể đang truyền mà không bị phát hiện ở giai
đoạn này.


-

Nếu kênh truyền bận: Đợi đến khi kênh truyền rỗi (idle).

-

Sau đó đợi thêm một khoảng thời gian DIFS (DCF Inter-Frame Space – 34us)
cho trước (DIFS=RTT).

-

Back-off một số mini slot tBO ngẫu nhiên. Sau mỗi mini slot: t BO = tBO -1.

-

Nếu trong thời gian back-off kênh truyền lại bận thì trạm dừng đếm lùi và
bảo toàn giá trị tBO tại thời điểm dừng.

-

Sau khi kênh truyền chuyển sang trạng thái rỗi một khoảng thời gian DIFS,
trạm tiếp tục đếm lùi.

-

Nếu tBO = 0, truy nhập kênh và gửi gói.

Hình 5: Cơ chế gửi gói tin trong CSMA mạng khơng dây
-


Do kênh truyền vô tuyến là kênh không tin cậy:
+ Sau khi nhận được gói một khoảng SIFS (Service Inter-Frame Space), phía
thu sẽ trả lại phía phát một gói ACK.
+ SIFS < DIFS, gói ACK có độ ưu tiên cao hơn gói dữ liệu.

ĐỒ ÁN I – CSMA/CA

12


Hình 6: Cơ chế gửi - nhận trong CSMA mạng khơng dây

3.2.

Tránh va đập trong mạng khơng dây

• Mạng khơng dây không sử dụng cơ chế phát hiện va đập (CD) mà sử dụng cơ chế
tránh va đập (Collision Avoidance - CA).
• Collision Avoidance:
-

Trước khi phát: phía phát quảng bá bản tin RTS (Ready-To-Send).

-

Khi nhận được RTS, phía thu quảng bá bản tin CTS (Clear-To-Send). Giả sử
A gửi dữ liệu cho B, C khi nhận được CTS => C trì hoãn gửi dữ liệu cho B.

-


Trong RTS và CTS mang theo bản tin NAV (Network Allocation Vector)
chứa thời gian chiếm kênh của phía phát.

-

Các trạm khác dừng việc truy nhập kênh trong khoảng thời gian được chỉ ra
trong NAV.

Hình 7: Tránh va đập trong mạng không dây

ĐỒ ÁN I – CSMA/CA

13


ACK

Hình 8: Sơ đồ mơ tả đầy đủ cơ chế CSMA/CA
• RTS/CTS (u cầu gửi/ Xố để gửi): Để giảm bớt vấn đề của các nút ẩn (Các nút
ẩn trong mạng khơng dây là các nút nằm ngồi phạm vi của các nút khác hoặc tập
hợp các nút) bởi vì, ví dụ, trong một mạng khơng dây, Điểm truy cập chỉ phát hành
CTS - Xóa để gửi đến một nút tại một thời điểm. Tuy nhiên, việc triển khai 802.11
không dây thường không triển khai RTS / CTS cho tất cả các kênh truyền; họ có thể
tắt hồn tồn hoặc ít nhất là khơng sử dụng nó cho các gói nhỏ (chi phí hoạt động
của RTS, CTS và truyền tải quá lớn cho việc truyền dữ liệu nhỏ).
• SIFS - Short interframe space: Không gian liên khung ngắn, là lượng thời gian tính
bằng micrơ giây cần thiết cho giao diện không dây để xử lý khung nhận được và
phản hồi với khung phản hồi. Thời gian SIFS bao gồm độ trễ trong RF thu , độ trễ
PLCP và độ trễ xử lý MAC , phụ thuộc vào lớp vật lý được sử dụng. Trong các

mạng IEEE 802.11 , SIFS là khoảng cách giữa các khung hình trước khi truyền
khung ACK , khung Clear to send (CTS).
• Chuẩn 802.11 mơ tả giao thức DCF , điều khiển truy cập vào môi trường vật lý. Một
trạm phải cảm nhận trạng thái của mơi trường khơng dây trước khi truyền. Nếu nó
thấy rằng phương tiện liên tục không hoạt động trong khoảng thời gian DCF
Interframe Space (DIFS), thì nó được phép truyền một khung. Nếu kênh được tìm
thấy bận trong khoảng thời gian DIFS, trạm sẽ trì hỗn việc truyền phát.

ĐỒ ÁN I – CSMA/CA

14


Bảng 1: DIFS theo các chuẩn kết nối không dây

Bảng 2: SIFS theo các chuẩn kết nối không dây

3.3.

Các trường hợp gửi – nhận gói tin giữa nguồn và đích
Về cơ bản, có 3 trường hợp chính xảy ra trong q trình truyền phát gói tin giữa
phía phát (nguồn) và phía thu (đích):
• Thành cơng ngay lần đầu.
• Phía phát khơng nhận được bản tin CTS.
• Phía phát khơng nhận được bản tin ACK.

a) Gửi gói tin thành cơng ngay lần đầu

ĐỒ ÁN I – CSMA/CA


15


Hình 9: Q trình gửi nhận thành cơng lần đầu
-

Đầu tiên nút muốn truyền dữ liệu sẽ nghe ngóng đường truyền xem có nút
khác đang truyền hay khơng. Nếu khơng, nó sẽ đợi 1 khoảng thời gian DIFS
rồi gửi đi bản tin RTS (request to send) yêu cầu phía nhận chuẩn bị kết nối
để gửi dữ liệu đến.

-

Sau khoảng thời gian rất nhỏ SIFS, phía nhận gửi lại bản tin CTS xác nhận
kết nối với phía gửi dữ liệu để nhận dữ liệu.

-

Phía gửi sau khi nhận được tín hiệu CTS sẽ bắt đầu truyền dữ liệu đến phía
thu. Sau khi nhận được tồn bộ dữ liệu từ phía phát, phía thu gửi lại bản tin
ACK xác nhận đã nhận được dữ liệu.

-

Quá trình truyền dữ liệu kết thúc, hoặc phía phát và phía thu sẽ bắt đầu một
q trình gửi – nhận mới.

b) Phía phát khơng nhận được bản tin CTS
-


Khơng phải lúc nào phía thu cũng sẵn sàng nhận dữ liệu từ phía phát.

-

Sau khi gửi bản tin RTS, nếu phía thu khơng sẵn sàng nhận dữ liệu, nó sẽ
khơng gửi lại bản tin CTS. Hoặc do một nguyên nhân nào đó khiến cho bản
tin RTS bị mất, phía thu khơng nhận được u cầu gửi. Trong trường hợp đó,
phía phát sẽ tiếp tục chờ cho đến khi nhận được bản tin phản hồi. Nhưng
ĐỒ ÁN I – CSMA/CA

16


không thể chờ mãi, vậy nên một khoảng thời gian Time-out được tạo ra tính
từ khi gửi bản tin RTS để trong trường hợp chờ, phía phát sẽ chỉ chờ trong
khoảng thời gian này.

Hình 10: Quá trình truyền với lỗi nhận bản tin CTS
-

Khi hết Time-out, phía phát sẽ quay lại nghe ngóng đường truyền, chờ 1
khoảng DIFS và gửi lại tín hiệu RTS tới phía thu. Q trình lặp đi lặp lại cho
đến khi nhận được bản tin CTS.

c) Phía phát khơng nhận được bản tin ACK
-

Có 2 trường hợp phía phát khơng nhận được bản tin phản hồi ACK:
+ Dữ liệu (Data) bị lỗi hoặc mất trên đường truyền.
+ Bản tin phản hồi ACK bị mất trên đường truyền.


• Dữ liệu bị lỗi hoặc mất trên đường truyền
-

Sau khi nhận được bản tin CTS, phía phát gửi dữ liệu (chia nhỏ thành các gói
tin) cho phía thu, đồng thời đặt một Time-out. Nếu phía thu khơng nhận được
dữ liệu hoặc dữ liệu bị lỗi, nó sẽ khơng gửi lại bản tin phản hồi ACK. Khi đó,
phía phát sẽ căn cứ vào Time-out đã đặt và thực hiện truyền phát lại từ đầu.

ĐỒ ÁN I – CSMA/CA

17


Hình 11: Q trình truyền với lỗi nhận data
• Bản tin phản hồi ACK bị mất trên đường truyền
-

Cũng giống như trường hợp gói dữ liệu bị lỗi, khi bản tin phản hồi ACK
khơng được nhận bởi phía phát (lỗi mất gói, xung đột…), nó sẽ cho rằng phía
thu chưa nhận được dữ liệu và thực hiện truyền lại từ đầu sau khoảng thời
gian chờ Time-out.

Hình 12: Quá trình truyền với lỗi bản tin phản hồi ACK
ĐỒ ÁN I – CSMA/CA

18


III: LẬP TRÌNH MƠ PHỎNG GIAO THỨC

1. Mơ tả chung
Giao thức CSMA/CA mô phỏng sự kiện riêng biệt của mạng WLAN (Mạng cục bộ
khơng dây) với mơ hình hàng đợi M / M / 1. Mỗi máy chủ không dây có hàng đợi FIFO
(First In First Out) chứa các gói dữ liệu và liên lạc với các nút khác thông qua kênh
truyền chung được chia sẻ. Độ dài của khung dữ liệu (Data Frame) là một biến ngẫu
nhiên phân tán theo cấp số nhân trong phạm vi 0 và 1544 byte và khung ACK (xác
nhận) là 64 byte không đổi. Độ trễ lan truyền bị bỏ qua và tốc độ truyền, R là 11 msec.
2. Logic thực hiện
Có bốn loại sự kiện (event ) và các bước xử lý của chúng:
a) Arrival
-

Tạo sự kiện đến tiếp theo cho máy chủ hiện tại

-

Tạo một gói dữ liệu với đích ngẫu nhiên và máy chủ hiện tại làm nguồn

-

Chèn gói dữ liệu vào hàng đợi máy chủ hiện tại

b) Departure
-

Giải phóng trạng thái kênh

-

Tạo một gói tin ACK (xác nhận) và gửi lại cho máy chủ của nó


-

Chèn gói ACK (xác nhận) vào hàng đợi máy chủ hiện tại.

c) Sync
-

Kiểm tra trạng thái của kênh nếu kênh đang bận, đóng băng các bộ đếm
ngược (backoff counter) của máy chủ

-

Nếu kênh rảnh, đếm giảm dần bộ đếm

-

Bộ đếm đạt đến 0, tạo sự kiện departure mới để truyền gói, đánh dấu kênh
đang bận.

-

Trong khi truyền, tạo một sự kiện Time-out mới

-

Tạo bộ backoff counter mới cho máy chủ hiện tại (đặt lại hàng đợi)

-


Tạo sự kiện sync tiếp theo và cập nhật thời gian sync bằng cách cộng 0,01
ms

ĐỒ ÁN I – CSMA/CA

19


d) Time out
-

Truyền lại gói (nếu truyền thất bại), tăng bộ đếm truyền, n

-

Thiết lập một backoff mới trong phạm vi 0 và n * T

3. Code
a) Khởi tạo
• Khởi tạo Class packet
Chứa thơng tin độ dài gói tin, đích, nguồn, có phải là gói tin ACK hay khơng.
#ifndef PACKET_H_INCLUDED
#define PACKET_H_INCLUDED
#endif // PACKET_H_INCLUDED
#include<iostream>
class Packet //Lop Packet
{
int sourse;
int destination;
int packet_length; // do dai packet

bool isAck; // true : ACK , false: Packet
public:
Packet(int s, int des, int length,bool is)
{
sourse=s;
destination=des;
packet_length=length;
isAck=is;
}
};

• Khởi tạo Class event
Tạo 4 sự kiện như trên, chứa thông tin về thời gian diễn ra sự kiện, loại sự kiện
và HostId của sự kiện.
#ifndef EVENT_H_INCLUDED
#define EVENT_H_INCLUDED
#include <iostream>
using namespace std;
enum eventtype {
arrival , departure , syncEvent , timeout
};

ĐỒ ÁN I – CSMA/CA

20


class Event {
double eventTime;
eventtype eventType;

int eventHostId;
public:
Event();
Event(double etime, eventtype event, int hostId) {
eventTime = etime;
eventType = event;
eventHostId = hostId;
}
double getEventTime() {
return eventTime;
}
int getHost() {
return eventHostId;
}
void getInfo()
{
//cout<<" Event Time: "<if(eventType==arrival)
cout<<"Event Type: Arrival"<else if(eventType==departure)
cout<<"Event Type: Departure"<else if(eventType==syncEvent)
cout<<"Event Type: Sync Event"<else if(eventType==timeout)
cout<<"Event Type: Time out"<cout<<"Host ID: "<}
// bool getIsArrival() {
//
return arrival;

// }
eventtype getEventType() {
return eventType;
}
bool operator>(const Event &rhs) const {
return rhs.eventTime > eventTime;

ĐỒ ÁN I – CSMA/CA

21


}
bool operator==(const Event
return rhs.eventTime ==
}
bool operator>=(const Event
return rhs.eventTime >=
}

&rhs) const {
eventTime;
&rhs) const {
eventTime;

};
#endif // EVENT_H_INCLUDED

• Khởi tạo Class host
Chứa thơng tin HostId, backofftime, vị trí gói tin trong hàng đợi của host.

#ifndef HOST_H_INCLUDED
#define HOST_H_INCLUDED
#include<iostream>
#include <queue>
#endif // HOST_H_INCLUDED
class Host
{
public:
int hostId; // Dia chi host
double backoff; // thoi gian backoff
std::queue<Packet> hostQueue; // Hang doi host chua cac packet
Host();
Host(int id, double backoffTime)
{
backoff=backoffTime;
hostId=id;
hostQueue=std::queue<Packet>();
}
double getBackOff() // Tra ve thoi gian backoff
{
return backoff;
}
};

• Khởi tạo Class GEL (Global Event List)
Là 1 danh sách chứa tất cả các sự kiện, thực hiện việc nhập và sắp xếp sự kiện
trong list, loại bỏ sự kiện.

ĐỒ ÁN I – CSMA/CA


22


#ifndef GEL_H_INCLUDED
#define GEL_H_INCLUDED

#include<iostream>
#include<list>
#include "event.h"
using namespace std;
class GEL
//Global Event List contain Event
{
list<Event> GlobalEventList;
public:
GEL()
{
GlobalEventList=list<Event>();
}
void insert(Event event)
//insert event
{
if(GlobalEventList.size()==0)
{
GlobalEventList.push_front(event);
}
for(list<Event>::iterator itr=GlobalEventList.begin(); itr!=
GlobalEventList.end(); itr++)
{
if(itr->getEventTime()>=event.getEventTime())

{
GlobalEventList.insert(itr,event);
//arrange by time of event
}
}
GlobalEventList.push_back(event);
//default: push back event into list
}
Event removeFirst()
{
Event first=GlobalEventList.front();
GlobalEventList.pop_front();
//remove first event of list
return first;
}
}; // Sap xep theo event time
#endif // EVENT_H_INCLUDED

ĐỒ ÁN I – CSMA/CA

23


• Khởi tạo function
Tạo các tham số bằng cách sử dụng các hàm ngẫu nhiên.
#ifndef FUNCTION_H_INCLUDED
#define FUNCTION_H_INCLUDED
#endif // FUNCTION_H_INCLUDED
#include <iostream>
#include <math.h>

#include <cstdlib>
#include <ctime>
int randomDestination(int sourse)
{
int rad;
rad=rand()%10;
//value of Destination is in range of (0,9)
if(rad==sourse)
{
rad=randomDestination(sourse);
}
return rad;
}
double transmissionTime(double r)
{
return (r * 8) / (11 * pow(10,6));
//transmition time depends on r(bytes)
}
int dataLengthFrame() // Size of packet
{
double a;
a=rand()%1544;
//1544 is maxsize of packet
return a;
//a is randomized in range of (0,1544)
}
double generateRandomBackOff(double t)
{
double a;
a=t*rand()/RAND_MAX;

// random backoff time
return a;
}
double nedt(double a)
{
double b;
b=1.0*rand()/RAND_MAX;
//random nedt
return ((-1/a)*log(1-b));
}

ĐỒ ÁN I – CSMA/CA

24


×