Tải bản đầy đủ (.docx) (50 trang)

Bài tập lớn mạng máy tính mô phỏng hoạt động của giao thức CSMA

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 (1.46 MB, 50 trang )

Bài Tập Lớn Mạng Máy Tính
Đề Tài:Lập Trình Mô Phỏng Hoạt Động Giao Thức CSMA
GVHD:TS.
Hà Nội, 11/2016

Hà Nội, 12 / 2017
 


Mô phỏng hệ thống CSMA/CD

Lời nói đầu
Mạng máy tính phát sinh từ nhu cầu muốn chia sẻ, dùng chung tài nguyên và


cho phép giao tiếp trực tuyến cũng như các ứng dụng đa phương tiện trên mạng.
Giao tiếp trực tuyến bao gồm gửi và nhận thông điệp, thư điện tử… các ứng dụng
đa phuơng tiện có thể là phát thanh, truyền hình, điện thoại qua mang, hội thỏ trực
tuyến, nghe nhạc, xem phim… Sự kết hợp của máy tính với các hệ thống truyền
thông đã tao ra cuộc cách mạng trong vấn đề tổ chức khai thác và sử dụng hệ thống
máy tính. Mô hình tập trung dựa trên máy tính lớn được thay thế bởi mô hình các
máy tính đơn lẻ được kết nối lại để cùng thực hiện công việc, hình thành môi trường
làm việc nhiều người sử dụng phân tán, cho phép nâng cao hiệu quả khai thác tài
nguyên chung từ những vị trí địa lý khác nhau. Các mô hình như thế được gọi là
mạng máy tính. Với sư phát triển của khoa học và kỹ thuật hiện nay, các hệ thống
mạng máy tính đã phát triển một cách nhanh chóng và đa dạng cả về quy mô, hệ
điều hành và ứng dụng. Do vậy, việc nghiên cứu để vận hành và khai thác chúng

ngày càng trở nên phức tạp. Tuy nhiên, các mạng máy tính có cùng các điểm chung
và thông qua đó chúng ta có thể khảo sát, phân loại và đánh giá chúng. Vì vậy, trong
báo cáo này chúng em thực hiện việc khảo sát, mô phỏng và đánh giá hệ thống
CSMA/CD được sử dụng mạnh mẽ trong mạng Lan công nghệ Ethernet hiện nay.
Nhóm em xin chân thành cảm ơn thầy TS. Trần Quang Vinh đã tạo cơ hội cho
chúng em làm bài tập lớn và đã nhiệt huyết giúp đỡ nhóm em vượt qua những khó
khăn trong việc hoàn thiện bài tập lớn này. Trong quá trình làm bài tập lớn không
tránh khỏi những sai sót do thiếu kiến thức, kinh nhiệm và kỹ năng làm bài tập lớn
do đó nhóm em rất mong có thêm những nhận xét của thầy, chúng em xin chân
thành cảm ơn.
Trong bài báo cáo này nhóm em chia làm 4 phần chính, phần 1 nói kĩ về hệ
thống CSMA bao gồm lý thuyết cơ sở, các kiểu truy cập và tại sao phải sinh ra hệ

thống CSMA/CD đồng thời phân tích về giải thuật hệ thống CSMA/CD và đưa ra
hướng phân tích kết quả mô phỏng. Phần 2 chúng em sẽ nói sơ lược về phần mềm
mô phỏng Omnet++(Omnetpp) được sử dụng để mô phỏng lại hệ thống. Phần 3
chúng em sẽ phân tích hệ thống và đưa ra mô hình hóa, đồng thời sẽ đưa ra các khó
2|Page


Mô phỏng hệ thống CSMA/CD

khăn đã gặp và cách giải quyết như thế nào. Phần 4 nhóm em hướng dẫn chi tiết về
cách để có thể mô phỏng được hệ thống từ project bất kì đã được viết trước và thực
hiện việc build hệ thống. Phần cuối cùng của báo cáo bao gồm các tài liệu đã tham

khảo thể hiện sự tôn trọng đối với những nhà nghiên cứu.

3|Page


Mô phỏng hệ thống CSMA/CD

Mục lục

4|Page



Mô phỏng hệ thống CSMA/CD

Danh sách hình vẽ

5|Page


Mô phỏng hệ thống CSMA/CD

Danh sách bảng biểu

Danh sách các từ viết tắt

Kí hiệu hoặc Tên viết tắt

Ý nghĩa

CSMA

Carrier-sense multiple access

CSMA/CD

Carrier-sense multiple access with collision
detection


OMNeT++

Objective Modular Network Testbed in C++.
Thời gian xử lý truyền gói tin
Thời gian trễ kênh truyền

6|Page


Mô phỏng hệ thống CSMA/CD


Nội Dung
1. Mô hình giao thức CSMA/CD
2

Lý thuyết giao thức CSMA

CSMA (viết tắt của từ Carrier Sense Multiple Access) là giao thức đa truy nhập
cảm nhận sóng mang của Ethernet và hoạt động theo nguyên lý cơ bản “Nghe trước
nói sau” để tránh các va chạm khi truyền chung một kênh truyền. Các nút trên mạng
cục bộ của Ethernet được kết nối qua một kênh truyền quảng bá dùng chung, vì vậy,
khi một trạm gửi đi một frame, tất cả các trạm trên LAN đều nhận được frame. Khi
một trạm có bản tin cần gửi nó sẽ lắng nghe kênh truyền nếu thấy có sóng mang

nghĩa là kênh truyền đang bận nó sẽ đợi tới khi kênh truyền rảnh, ngược lại nó sẽ
truyền ngay lập tức. Tất cả các trạm đều sẽ nhận được bản tin, tuy nhiên sau khi
kiểm tra địa chỉ đích thấy không phải gửi cho mình bản tin sự tự động bị hủy.

1.2 Các kiểu mô hình truy cập của CSMA
CSMA thường sử dụng 3 loại mô hình truy cập kênh truyền bao gồm 1-persistent
CSMA, p-persistent CSMA và non-persistent CSMA.

1.2.1 1 - Persistent CSMA
Đối với mô hình này truy cập này, khi trạm có bản tin cần truyền nó sẽ lắng
nghe kênh truyền, nếu kênh truyền không có sóng mang (không bận) thì nó sẽ
truyền ngay lập tức. Ngược lại, nó sẽ lại đợi và kiểm tra kênh truyền liên tục cho tới

khi kênh truyền rảnh. Đây là mô hình được cài đặt trong hệ thống CSMA/CD bao
gồm cả Ethernet.

7|Page


Mô phỏng hệ thống CSMA/CD

Hình 1. Lưu đồ giải thuật 1-Persistent CSMA

1.2.2 P - persistent
Đối với mô hình này truy cập này, khi trạm có bản tin cần truyền nó sẽ lắng

nghe kênh truyền, nếu kênh truyền có sóng mang (kênh bận) thì hệ thống sẽ đợi tới
khi kênh truyền rảnh. Ngược lại hệ thống tạo một số ngẫu nhiên I nằm trong khoảng
từ [0,1] nếu I nhỏ hơn một giá trị p cho trước thì trạm sẽ gửi bản tin, ngược lại nó sẽ
đợi 1 mini slot time sau đó sẽ bắt đầu truyền lại.
Ở đây, giá trị mini slot time thường gấp đôi thời gian trễ kênh truyền bằng .
Theo như khảo sát đồ thị tính cực trị để hiệu suất kênh truyền cao nhất thì giá trị p
thường được lấy như sau:

1. n là số trạm trong mạng
2. p là xác suất để truy cập kênh

8|Page



Mô phỏng hệ thống CSMA/CD

Hình 2. Lưu đồ giải thuật p - persistent CSMA

1.2.3 None – Persistent
Mô hình này truy cập này khá giống với mô hình 1 – Persistent, khi trạm có bản
tin cần truyền nó sẽ lắng nghe kênh truyền, nếu kênh truyền không có sóng mang
(không bận) thì nó sẽ truyền ngay lập tức. Ngược lại, hệ thống sẽ lại đợi với một số
ngẫu nhiên nguyên lần mini slot time được định nghĩa ở trên, sau đó trạm tự động
bắt đầu thực hiện việc “nghe trước khi nói”.


9|Page


Mô phỏng hệ thống CSMA/CD

Hình 3. Lưu đồ giải thuật none - persistent CSMA

1.3 Sự kế thừa CSMA/CD từ hệ thống CSMA
1.3.1 Lý thuyết CSMA/CD
Trong hệ thống CSMA thì sẽ chỉ có thể phát hiện ra xung đột, như thế sẽ khó
có thể làm tăng hiệu suất của kênh. Do đó, hệ thống CSMA/CD ra đời có thêm cơ

chế xử lý xung đột.
Về mặt nguyên lý truy cập kênh truyền không khác CSMA và trong khi truyền
hệ thống sẽ vẫn luôn nghe sóng mang để phát hiện xung đột. Khi phát hiện thấy có
sóng mang (bị xung đột), thì hệ thống sẽ thực hiện việc xử lý gói tin bằng cách gửi
bản tin thông báo đồng thời sẽ đợi một khoảng thời gian ngẫu nhiên, sau khi hết
thời gian đợi nó sẽ bắt đầu truyền lại bản tin đó. Trường hợp bản tin sẽ bị hủy xảy ra
khi bị xung đột quá nhiều.

10 | P a g e


Mô phỏng hệ thống CSMA/CD


1.3.2 Giải thuật CSMA/CD

Hình 4. Lưu đồ giải thuật mô hình CSMA/CD [1]

Để có thể dễ dàng trình bày ta sẽ tách giải thuật ở hình trên thành 2 tiến trình chính
bao gồm tiến trình gửi tin và tiến trình xử lý xung đột.

1.3.3 Tiến trình gửi tin
Khi một trạm nhận được một gói tin và nó cần phải truyền đi thì nó sẽ thực hiện
các bước sau. Các bước này sẽ hoàn thiện khi bản tin truyền thành công trên kênh
truyền hoặc là nó được xác định xung đột trên kênh truyền để đưa tới tiến trình xử

lý xung đột.
Bước 1. Trạm có bản tin cần gửi không? Nếu có thì chuyển sang bước tiếp
Bước 2. Kiểm tra kênh truyền, nếu kênh truyền không bận thì chuyển sang
bước tiếp. Ngược lại nó sẽ đợi đến khi kênh truyền không bận, khoảng thời
gian lấy mẫu kênh truyền sau mỗi lần kiểm tra thường sẽ được tính toán dựa
trên tốc độ của kênh truyền. [2]
Bước 3. Bắt đầu truyền và đồng thời khởi tạo bộ giám sát nhận biết xung đột
khi truyền.

11 | P a g e



Mô phỏng hệ thống CSMA/CD

Bước 4. Có xung đột không? Nếu có thì chuyển sang tiến trình xử lý xung
đột.
Bước 5. Khởi tạo lại bộ đếm chuẩn bị cho lần gửi tiếp theo và kết thúc gói tin.

1.3.4 Tiến trình xử lý xung đột
Khi có hiện tượng xung đột khi đang truyền thì hệ thống sẽ tự động xử lý như sau:
Bước 1. Tiếp tục truyền nhưng với bản tin Jam thường là 4-6 byte [1] nhằm
mục đích cảnh báo xung đột cho toàn bộ trạm khác (trong bài này chọn
4byte). Sau đó chuyển sang bước 2.
Bước 2. Tăng bộ đếm xung đột.

Bước 3. Kiểm tra bộ đếm xung đột đã tới giá trị tối đa. Nếu tới thì hủy gói tin
và kết thúc, ngược lại chuyển sang bước 4.
Bước 4. Tính toán và đợi một khoảng thời gian ngẫu nhiên (backoff). Sau khi
đợi xong chuyển sang bước 5.
Bước 5. Quay lại tiến trình gửi tin.

1.3.5 Thuật toán binary exponential backoff
Trong hệ thống CSMA/CD khi xảy ra xung đột các trạm đang truyền tin sẽ
cùng nhau đợi một khoảng thời gian. Vậy câu hỏi ở đây là đợi như thế nào? Thuật
toán binary exponential backoff được sử dụng trong mạng Ethernet giải quyết vấn
đề này một cách hoàn hảo. Khi xảy ra xung đột khi đang truyền và trong bộ counter
đã đếm xung đột lên lần collision thứ n, thì trạm truyền sẽ chọn ngẫu nhiên một giá

trị K nguyên dương trong tập dữ liệu {0, 1, 2, …, } và giá trị lớn nhất của n là 10 và
số lần xung đột tối đa để hủy gói tin là 16 chuẩn Ieee 802.3 [2]. Như vậy khi số
xung đột khi một frame bị truyền đi truyền lại càng nhiều, thì giá K có khả năng
được chọn càng lớn và khi hơn 10 thì phạm vi giá trị K sẽ được giữ cố định. Trong
mạng Ethernet sau khi chọn giá trị được giá trị K, thời gian của trạm cần đợi sẽ là
(512 bit times là slot time đối với Ethernet [3] ). Ví dụ:
Giả thiết rằng một trạm cố gắng để truyền một frame cho lần đầu tiên và trong
lúc đang truyền nó nhận thấy bị xung đột. Lúc này thì giá trị K = 0 sẽ có xác xuất là
0.5 và K = 1 cũng sẽ có xác suất là 0.5. Nếu giá trị K = 0 được chọn, nó sẽ không
12 | P a g e



Mô phỏng hệ thống CSMA/CD

đợi và được chuẩn bị để gửi vào kênh truyền ngay lần tiếp theo. Ngược lại, nếu giá
trị

K = 1 được chọn nó sẽ đợi 512 bit times (ví dụ: 0.01us cho mạng 100Mbps

Ethernet) trước khi bắt đầu truyền lại frame vào kênh truyền. Sau lần thứ 2 xung
đột, giá trị K sẽ được chọn trong tập {0, 1, 2, 3}. Sau lần thứ 3 xung đột, K được
chọn trong tập {0, 1, 2, 3, 4, 5, 6, 7}.Sau lần thứ 10 xung đột K được chọn trong {0,
1, 2, 3, …., 1023}. Như vậy giá trị K có thể chọn được sẽ được tăng dần theo hàm
mũ với số lần xung đột và đây cũng là lý do nó có tên là binary exponential

backoff.

1.4 Đánh giá hiệu năng mô hình CSMA/CD
Khi một trạm cần chuyển một gói tin, trạm này nghiễm nhiên có thể truyền với
tốc độ lớn nhất của kênh truyền (Đối với mạng Ethernet có thể là 10Mbps,
100Mbps thậm chí là 1Gbps). Tuy nhiên, nếu nhiều trạm đều có gói tin để chuyển
thì hiệu suất của kênh truyền sẽ tất nhiên bị giảm. Chúng ta sẽ xác định hiệu suất
của mô hình CSMA/CD trong trường hợp tất cả các trạm đều có gói tin cần phải
chuyển trong một thời gian đủ dài để có thể đánh giá. Tuy nhiên trên lý thuyết ta có
công thức đánh giá hiệu suất của hệ thống như sau [4]

1.


là trễ lan truyền vật lý giữa hai trạm xa nhau nhất (giả sử truyền trong

500m, với vận tốc ánh sáng suy ra )
2. là thời gian để truyền một frame với độ dài tối đa vào kênh truyền mà
không bị xung đột (giả sử bản tin có kích thước 1500bit, truyền trong mạng
có tốc độ 10Mbps suy ra )
Như vậy, khi khoảng cách giữa các trạm càng xa hay nói cách khác càng tăng
thì sẽ làm cho xung đột xảy ra càng cao, đồng thời làm giảm hiệu năng kênh truyền.
Đối với thời gian truyền của frame với độ dài tối đa càng lớn làm cho hiệu suất
kênh truyền tiệm cận tới 1, tới một ngưỡng nào đó sẽ có thể coi bằng 0. Khi những
bit đầu tiên truyền đi thành công, thì với càng lớn thì thời gian chiếm dụng kênh

truyền của nó càng cao, do đó kênh truyền sẽ được sử dụng một cách hiệu quả. [4]
13 | P a g e


Mô phỏng hệ thống CSMA/CD

1.5 Một số công nghệ về công nghệ Ethernet trong mạng LAN
Ethernet là công nghệ mạng LAN cho phép truyền tín hiệu giữa các máy tính với
tốc độ 10Mb/s đến 10Gigabit/s. Trong các kiểu Ethernet thì kiểu sử dụng cáp xoắn
đôi là thông dụng nhất. Hiện nay, có khoảng 85% mạng LAN sử dụng Ethernet.
Năm 1980, Xẽo, tập đoàn Intel và tập đoàn Digital Equipment đưa ra tiêu chuẩn
Ethernet 10Mbps (tiêu chuẩn DIX) được cài đặt trên một sợi cable đồng trục dài tối

đa 500m. Các trạm nối vào Ethernet segment bằng cách “mắc dây” (tab) nối vào nó.
Các điểm đồi nối phải cách nhau ít nhất 2.5m Transceiver, một thiết bị nhỏ được
gắn trực tiếp vào điểm đầu nối, làm nhiệm vụ.

1.5.1 Các thông số của Ethernet
• Ethernet ban đầu
o Tốc độ truyền : 10Mbps
o Độ dài cực tiểu của khung 512bit = 64byte
o Thời gian của khe: 512bit/10 Mbps = 51.2us
o Chiều dài cực đại: 2500 + 4 trạm lặp
• Ethernet theo chuẩn 802.3(CSMA/CD)
o Thời gian của khe: 512 bit/lần

o Khoảng cách giữa các khung: 96us
o Giới hạn số lần thử: 16
o Giới hạn số lần quay lui: 10
o Độ dài cực đại của khung :1518 byte
o Độ dài cực tiểu của khung: 64 byte

1.5.2 Các công nghệ Ethernet
1. Công nghệ 10BASE2
Công nghệ 10BASE2 sử dụng cáp đồng trục gầy, hình thái bus. Trong trường
hợp mạng có nhiều segments, các repeaters sẽ được sử dụng để nối kết các
segments này lại. Dưới đây sẽ trình bày đặc điểm của công nghệ 10BASE2
• Các thiết bị đầu và cuối phải có trở kháng 50 ohm

• Khoảng cách tối thiếu 0.5m
• Khoảng cách PC tới đầu nối 4cm.
• Chiều dài tối đa 185m
• Dùng các bộ lặp nới rộng khoảng cách
14 | P a g e


Mô phỏng hệ thống CSMA/CD

• Nhỏ hơn, nhẹ hơn và mềm hơn
• Chi phí thấp, không yêu cầu bộ tập trung(HUB) và không cần phải
cấu hình hệ thống

• Mã hóa Manchester
• Đầu nối BNC hình T
• Chiều dài tối đa 185m, tối thiểu 0.5m
• Truyền bán song công, tốc độ truyền tối đa là 10Mbps
• Hỗ trợ tối đa 30 máy
2. Công nghệ 10BASE5
• Kết nối dạng BUS
• Tốc độ truyền 10Mbps trên bang cơ bản – baseband (không truyền









được song công). Sử dụng mã hóa Manchester
Chiều dài tối đa: 500m
Hỗ trợ tối đa 101 đoạn mạng theo chuẩn Ethernet
Tối đa có 1024 trạm nối vào mạng 10Base5
Tối đa có 100 bộ thu phát nối vào một đoạn mạng chiều dài 500m
Khoảng cách tối thiểu giữa hai bộ thu phát là 2.5m
Cuối mỗi đoạn cáp cần có bộ đầu-cuối (50ohm) để dập tín hiệu
Bộ lặp được sử dụng để mở rộng chiều dài mạng. Sử dụng tối đa 2 bộ


lặp giữa các thiết bị
3. Công nghệ Ethernet 100 Mbps
• Mạng Ethernet 100Mbps được gồm 2 chuẩn : Fast Ethernet (IEEE







802.3u) : 100Base-TX, 100Base-T4 và 100Base-FX

100BASE-TX và 100Base-FX sử dụng kỹ thuật mã hóa 4B/5B
100Base-T4 sử dụng kỹ thuật mã hóa 8B/6T
Phương thức điều khuyển truy nhập CSMA/CD
100Base-T4 sử dụng phương thức hoạt động bán song công
100Base-TX sử dụng phương thức hoạt động song công
100Base-FX sử dụng cả phương thức bán song công và hoạt động
song công

2. Phần mềm mô phỏng Omnet++
2

Giới thiệu

2.2.1 Omnet++ là gì?
OMNeT++ là viết tắt của cụm từ Objective Modular Network Testbed in C++.

OMNeT++ là một ứng dụng cung cấp cho người sử dụng môi trường để tiến hành

15 | P a g e


Mô phỏng hệ thống CSMA/CD

phỏng hoạt động của mạng. Mục đích chính của ứng dụng là mô phỏng hoạt động
mạng thông tin, tuy nhiên do tính phổ cập và linh hoạt của nó, OMNeT++ còn được

sử dụng trong nhiều lĩnh vực khác như mô phỏng các hệ thống thông tin phức tạp,
các mạng kiểu hàng đợi (queueing networks) hay các kiến trúc phần cứng...
OMNeT++ cung cấp sẵn các thành phần tương ứng với các mô hình thực tế. Các
thành phần này (còn được gọi là các module) được lập trình theo ngôn ngữ C++,
sau
đó được tập hợp lại thành những thành phần hay những mô hình lớn hơn bằng một
ngôn ngữ bậc cao (NED). OMNeT++ hỗ trợ giao diện đồ hoạ, tương ứng với các

hình cấu trúc của nó đồng thời phần nhân mô phỏng (simulation kernel) và các
module của OMNeT++ cũng rất dễ dàng nhúng vào trong các ứng dụng khác.

2.2.2 Các thành phần chính của Omnet++

• Thư viện phần nhân mô phỏng (simulation kernel)
• Trình biên dịch cho ngôn ngữ mô tả hình trạng (topology
description

language)

- NED (nedc)
• Trình biên tập đồ hoạ (graphical network editor) cho các file
NED (GNED)
• Giao diện đồ hoạ thực hiện mô phỏng, các liên kết bên trong
các


file

thực

hiện

mô phỏng (Tkenv)
• Giao diện dòng lệnh thực hiện mô phỏng (Cmdenv)
• Công cụ (giao diện đồ hoạ) vẽ đồ thị kết quả vector ở đầu ra
(Plove)
• Công cụ (giao diện đồ hoạ) mô tả kết quả vô hướng ở đầu ra
(Scalars)

• Công cụ tài liệu hoá các mô hình
• Các tiện ích khác
• Các tài liệu hướng dẫn, các ví dụ mô phỏng...

16 | P a g e


Mô phỏng hệ thống CSMA/CD

1 Mô hình trong Omnet++
Một mô hình trong OMNeT++ bao gồm các module lồng nhau có
cấu trúc phân cấp. Độ sâu của của các module lồng nhau là không

giới hạn, điều này cho phép người sử dụng có thể biểu diễn các
cấu trúc logic của các hệ thống trong thực tế bằng các cấu trúc mô
hình. Các module trao đổi thông tin với nhau thông qua việc gửi
các message (message). Các message này có thể có cấu trúc phức
tạp tuỳ ý. Các module có thể gửi các message này theo hai cách,
một là gửi trực tiếp tới địa chỉ nhận, hai là gửi đi theo một đường
dẫn được định sẵn, thông qua các cổng và các kết nối.
Các module có thể có các tham số của riêng nó. Các tham số này
có thể được sử dụng để chỉnh sửa các thuộc tính của module và để
biểu diễn cho topology của mô hình.
Các module ở mức thấp nhất trong cấu trúc phân cấp đóng gói
các


thuộc

tính.

Các

module này được coi là các module đơn giản, và chúng được lập
trình

trong


ngôn

ngữ

C++ bằng cách sử dụng các thư viện mô phỏng.

2.2.3 Ứng dụng
OMNeT++ là một công cụ mô phỏng các hoạt động mạng bằng
các module được thiết kế hướng đối tượng. OMNeT++ thường được
sử dụng trong các ứng dụng chủ yếu như:
1.
2.

3.
4.






hình hoạt động của các mạng thông tin
hình giao thức
hình hoá các mạng kiểu hàng đợi
hình hoá các hệ thống đa bộ vi xử lý (multiprocesser)


hoặc

17 | P a g e

các

hệ

thống



Mô phỏng hệ thống CSMA/CD

phần cứng theo mô hình phân tán khác (distributed hardware
systems)
5. Đánh giá kiến trúc phần cứng
6. Đánh giá hiệu quả hoạt động của các hệ thống phức tạp...

2.3 Tổng quan
2.3.1 Mô hình của Omnet++
OMNeT++ cung cấp cho người sử dụng những công cụ hiệu
quả để mô tả cấu trúc của các hệ thống thực tế.
1. Các module lồng nhau có cấu trúc phân cấp

2. Các module là các đối tượng cụ thể của các kiểu module
3. Các module trao đổi thông tin bằng các message qua các
kênh
4. Các tham số của module linh hoạt
5. Ngôn ngữ mô tả Topology
Một mô hình OMNeT++ bao gồm những phần sau:
• Ngôn ngữ mô tả topology - NED (file có phần mở rộng .ned):


tả

cấu


trúc

của module với các tham số, các cổng... Các file .ned có thể
được viết bằng bất kỳ bộ soạn thảo hoặc sử dụng chương
trình GNED có trong OMNeT++.
• Định nghĩa cấu trúc của các message (các file có phần mở
rộng

.msg):

Người


sử dụng có thể định nghĩa rất nhiều kiểu messsage và thêm
các

trường

dữ

liệu

cho chúng. OMNeT++ sẽ dịch những định nghĩa này sang các
lớp C++ đầy đủ.

• Mã nguồn của các module đơn giản. Đây là các file C++ với
phần
là .h hoặc .cc.

18 | P a g e

mở

rộng


Mô phỏng hệ thống CSMA/CD


Hệ thống mô phỏng cung cấp cho ta các thành phần sau:
• Phần nhân mô phỏng. Phần này chứa code để quản lý quá
trình



phỏng



các thư viện lớp mô phỏng. Nó được viết bằng C++, được

biên

dịch



được

đặt cùng dạng với các file thư viện (các file có phần mở rộng
là .a hoặc .lib).
• Giao diện người sử dụng. Giao diện này được sử dụng khi
thực


hiện

quá

trình

mô phỏng, tạo sự dễ dàng cho quá trình sửa lỗi, biểu diễn
(demonstration)
hoặc khi thực hiện mô phỏng theo từng khối (batch execution
of


simulations).

Có một vài kiểu giao diện trong OMNeT++, tất cả đều được
viết

bằng

C++,

được biên dịch và đặt cùng nhau trong các thư viện (các file



phần

mở

rộng

là .a hoặc .lib).

2.3.2 Hệ thống file
Sau khi cài đặt OMNet++, thư mục omnetpp trên hệ thống máy
của bạn nên chứa các thư mục con dưới đây: [5]


omnetpp/
bin/
nedtool...)
19 | P a g e

Thư mục gốc của OMNeT++
các công cụ trong OMNeT++ (GNED,


Mô phỏng hệ thống CSMA/CD

include/

lib/
bitmap/
doc/
manual/
tictoc-tutorial/
api/
nedxml-api/
src/
src/
nedc/
sim/
parsim/


tán

các file header cho mô hình mô phỏng
các file thư viện
các biểu tượng đồ hoạ
các file hướng dẫn, readme...
file hướng dẫn dạng HTML
giới thiệu sử dụng OMNeT++
API tham chiếu dạng HTML
API tham chiếu cho thư viện NEDXML
mã nguồn của tài liệu

mã nguồn của OMNeT++
nedtool, trình biên dịch message
phần nhân mô phỏng
các file dành cho việc thực hiện phân

netbuilder/ các file dành cho việc đọc động các file

NED

vector
hướng
test/


envir/
cmdenv/
tkenv/
gned/
plove/

mã nguồn cho giao diện người sử dụng
giao diện người dùng dòng lệnh
giao diện người sử dụng dựa trên Tcl/tk
công cụ soạn thảo file NED
công cụ vẽ và phân tích đầu ra dạng


scalars/

công cụ vẽ và phân tích đầu ra dạng vô

nedxml/
utils/

thư viện NEDXML
các tiện ích khác...
bộ kiểm thử lùi
bộ kiểm thử lùi cho thư viện mô phỏng

bộ kiểm thử lùi

core/
distrib/

Các quá trình mô phỏng mẫu được chứa trong thư mục samples:
samples/
aloha/

thư mục chứa các ví dụ mẫu
mô hình giao thức Aloha



Thư mục contrib chứa các chương trình có thể kết hợp với OMNeT+
+:
contrib/

20 | P a g e


Mô phỏng hệ thống CSMA/CD

octave


/

script của Octave dùng để xử lý kết

quả
emacs/

bộ đánh dấu cú pháp NED cho Emacs

Ngoài ra ta cũng có thể tìm thấy các thư mục khác như msvc/, chứa
các thành phần tích hợp cho Microsoft Visual C++...


2.3.3 Cấu trúc phân cấp của các Module
Một mô hình trong OMNeT++ chứa các module lồng nhau có
cấu trúc phân cấp, trao đổi thông tin với nhau bằng cách gửi các
message. Mỗi mô hình này thường biểu diễn cho một hệ thống
mạng. Module mức cao nhất trong cấu trúc phân cấp được gọi là
module hệ thống. Module này có thể chứa các module con, các
module con cũng có thể chứa các module con của riêng nó. Độ sâu
phân cấp đối với các module là không giới hạn, điều này cho phép
người sử dụng có thể dễ dàng biểu diễn một cấu trúc logic của một
hệ thống trong thực tế bằng cấu trúc phân cấp của OMNeT++.
Cấu trúc của mô hình có thể được mô tả bằng ngôn ngữ NED
của OMNeT++.


Hình 5. Ví dụ đơn giản về tổng hợp module [5]

21 | P a g e


Mô phỏng hệ thống CSMA/CD

Các module có thể chứa nhiều module con và được gọi là module kết hợp. Các
module đơn giản là các module có cấp thấp nhất trong cấu trúc phân cấp. Các
module
đơn giản chứa các thuật toán của mô hình. Người sử dụng triển khai các module

đơn
giản bằng ngôn ngữ C++, sử dụng các thư viện mô phỏng của OMNeT++.
Tất cả các module dù là đơn giản hay phức tạp đều là các đối
tượng cụ thể của các kiểu module. Trong khi mô tả các mô hình,
người sử dụng định nghĩa ra các kiểu module, các đối tượng cụ thể
của

các kiểu module này được sử dụng như các thành

phần của các kiểu module phức tạp hơn. Cuối cùng, người sử dụng
tạo


module

hệ

thống như một đối tượng cụ thể của kiểu module đã được định
nghĩa

trước

đó,

tất


cả

các module của mạng đều là module con (hoặc là con của module
con) của module hệ thống. Khi một kiểu module được sử dụng như
một khối dựng sẵn (building block), sẽ không thể phân biệt đó là
một module đơn giản hay phức tạp. Điều này cho phép người sử
dụng có thể tách các module đơn giản ra thành nhiều module đơn
giản được nhúng trong một module kết hợp, và ngược lại có thể
tập hợp các chức năng của một module kết hợp trong một module
đơn giản mà không ảnh hưởng gì đến các kiểu module đã được
người sử dụng định nghĩa.

Kiểu module có thể được lưu trữ trong một file riêng rẽ. Điều
này cho phép người sử dụng có thể nhóm các kiểu module lại và
tạo ra một thư viện thành phần.

22 | P a g e


Mô phỏng hệ thống CSMA/CD

3. Mô hình hóa hệ thống CSMA/CD
Mô hình hóa là phương pháp nghiên cứu bằng thực nghiệm trên mô hình của
một hiện tượng (quá trình, sự vật,…) thay vì nghiên cứu trực tiếp hiện tượng ấy ở

dạng tự nhiên (thực địa). Quá trình mô hình hóa bao gồm hai phần là chế tạo mô
hình và tiến hành thực nghiệm trên mô hình ấy (nguồn: Wikipedia).

2

Phân tích và mô hình hóa hệ thống

Để có thể phân tích được mô hình ta cần ánh xạ sang hệ thống và giải thuật
CSMA/CD được phân tích tại Mô hình giao thức CSMA/CD để đưa ra những giải
pháp và đưa ra mô hình cụ thể. Dưới đây nhóm em đưa ra những vấn đề cần giải
quyết
1. Mô hình hóa mô hình kênh truyền như thế nào? Làm thế nào để kiểm tra

được kênh truyền, khi đang truyền?
2. Tính toán được thời gian truyền tin như thế nào để thể hiện được sự tương
quan giữa các trạm?
3. Quá trình gửi tin sẽ được xử lý như thế nào và dừng việc truyền tin khi
phát hiện xung đột như thế nào?

3.2 Giải quyết vấn đề
3.2.1 Mô hình hóa các trạm

23 | P a g e



Mô phỏng hệ thống CSMA/CD
Hình 6. Mô hình bus topology (nguồn: Internet)

Để giải quyết bài toán về vị trí trong thực tế, với mô hình bus ta nhận thấy chỉ có
một chiều. Vì vậy ta sẽ lấy điểm cuối bên trái làm điểm gốc tọa độ và sinh số ngẫu
nhiên để tạo vị trí ngẫu nhiên trên kênh truyền, sau đó ta sẽ lấy thương của tọa độ
với độ dài lan truyền để lấy ra thời gian lan truyền từ gốc tọa độ tới trạm.

Hình 7. Code tạo vị trí ngẫu nhiên và tính khoảng cách tới điểm gốc

Sau khi ta tạo được vector khoảng cách của từng trạm đối với tọa độ gốc ta có thể
coi như đó là vector giá trị vị trí và thời gian lan truyền trong kênh là 1 đơn vị. Sau

khi có bảng vector vị trí của từng trạm, ta sẽ lập ma trận khoảng cách, ma trận này
sẽ tính toán khoảng cách từ một trạm bất kì tới trạm khác.

Hình 8. Code lập bảng ma trận khoảng cách giữa các trạm

24 | P a g e


Mô phỏng hệ thống CSMA/CD

3.2.2 Kênh truyền
Do trình mô phỏng Omnet++ chỉ hỗ trợ điểm tới điểm vì thế chúng em dùng một

trạm gọi là Receiver để nhận hết toàn bộ gói tin của tất cả các trạm khác đồng thời
thực hiện việc quản lý kênh truyền. Tất cả các trạm sẽ kiểm tra kênh truyền thông
qua trạm này. Nghĩa là khi một trạm muốn gửi tin thì sẽ bản tin cho trạm Receiver
này, sau đó trạm Receiver sẽ thực hiện việc kiểm tra kênh truyền và xử lý kênh
truyền.

3.2.3 Mô hình hóa quá trình gửi tin và phát hiện va chạm
Để tiện theo dõi em sẽ xử lý từng giai đoạn trong lưu đồ giải thuật

Để có thể truyền được gói tin, mỗi trạm sẽ thiết lập lại cờ trạng thái và giá trị
khởi tạo, sau đó sẽ tạo ngẫu nhiên một trạm bất kì không trùng với nó và tính toán
thời gian truyền cho công đoạn chuẩn bị. Sau đó sẽ kiểm tra kênh truyền bằng cách

xem trạng thái kênh thông qua Receiver nếu kênh truyền rảnh thì sẽ gửi gói tin lên
Receiver ngay lập tức với thời gian trễ lan truyền đã tính ở phần chuẩn bị, ngược lại
hệ thống sẽ lập lịch để lấy mẫu kênh truyền được tính bằng 96 bit thời gian xử lý
gói tin cho tới khi gửi được gói tin. Khi truyền được bản tin, trạm sẽ tự động đợi
một khoảng thời gian xử lý hết gói tin được tính toán phụ thuộc vào độ dài của gói
25 | P a g e


×