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

Nghiên cứu các môi trường công cụ mô phỏng giao thức mạng thế hệ mới

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 (3.26 MB, 82 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------

Trần Anh Đức

NGHIÊN CỨU CÁC MÔI TRƢỜNG CÔNG CỤ MÔ PHỎNG
GIAO THỨC MẠNG THẾ HỆ MỚI

LUẬN VĂN THẠC SĨ KỸ THUẬT
CÔNG NGHỆ THÔNG TIN

NGƢỜI HƢỚNG DẪN KHOA HỌC
TS. Nguyễn Khanh Văn

Hà Nội – Năm 2015


LỜI CẢM ƠN
Trƣớc tiên em xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô
giáo trong trƣờng đại học Bách Khoa Hà nội nói chung và các thầy cô giáo
trong viện công nghệ thông tin và truyền thông nói riêng đã tận tình giảng
dạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu trong suốt
thời gian qua.
Đặc biệt em xin gửi lời cảm ơn đến TS Nguyễn Khanh Văn, ngƣời thầy
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hƣớng dẫn em trong suốt quá trình
chuẩn bị và làm luận văn tốt nghiệp. Trong thời gian làm việc với thầy, em
không chỉ tiếp thu thêm nhiều kiến thức bổ ích mà còn học hỏi đƣợc nhiều
kinh nghiệm thực tiễn trong nghiên cứu khoa học. Đó là những điều vô cùng
cần thiết cho em trong quá trình học tập và công tác sau này.
Em cũng xin gửi lời cảm ơn tới ThS Nguyễn Phi Lê, cô đã hƣớng dẫn


và giúp đỡ em rất nhiều trong suốt thời gian thực hiện luận văn.
Và cuối cùng em xin gửi lời cảm ơn tới gia đình, bạn bè đã động viên,
giúp đỡ cũng nhƣ các lãnh đạo và đồng nghiệp tại cơ quan đã hỗ trợ tạo điều
kiện giúp em trong suốt thời gian theo học.

Trần Anh Đức

i


Mục lục
LỜI CẢM ƠN .............................................................................................................................. i
DANH MỤC CÁC BẢNG ........................................................................................................ iv
DANH MỤC CÁC HÌNH........................................................................................................... v
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ........................................................... vii
MỞ ĐẦU .................................................................................................................................... 1
I. Giới thiệu chung về môi trƣờng công cụ mô phỏng giao thức mạng ...................................... 3
1.1. Các khái niệm cơ bản trong mô phỏng mạng máy tính ................................................... 3
1.1.1. Mô phỏng mạng và các công cụ mô phỏng ............................................................... 3
1.1.2. Công cụ mô phỏng thƣơng mại và công cụ mô phỏng mã nguồn mở ....................... 3
1.2. Một số công cụ mô phỏng mạng hiện tại ......................................................................... 4
1.2.1. Công cụ mô phỏng mạng OPNET ............................................................................. 5
1.2.2. Công cụ mô phỏng mạng NS2 (Network Simulator 2) ............................................. 7
1.2.3. Công cụ mô phỏng mạng NS3 (Network Simulator 3) ........................................... 10
1.2.4. Công cụ mô phỏng mạng OMNeT++...................................................................... 12
1.3. So sánh tổng quan OPNET, OMNeT++ và NS-2 .......................................................... 15
1.4. Lựa chọn chƣơng trình mô phỏng mạng thích hợp ........................................................ 16
II. Công cụ mô phỏng mạng OMNeT++ .................................................................................. 18
2.1. Giới thiệu chung ............................................................................................................. 18
2.1.1. Các thành phần chính của OMNeT++ ..................................................................... 18

2.1.2. Ứng dụng của OMNeT++ ....................................................................................... 19
2.1.3. Một số nền tảng mô phỏng đƣợc phát triển từ OMNeT++ ..................................... 19
2.2. Tổng quan về OMNeT++ ............................................................................................... 21
2.2.1. Cấu trúc phân cấp của các module .......................................................................... 21
2.2.2. Kiểu module ............................................................................................................ 22
2.2.3. Message, cổng, liên kết ........................................................................................... 23
2.2.4. Mô hình truyền gói tin ............................................................................................. 23
2.2.5. Tham số ................................................................................................................... 25
2.2.6. Lập trình thuật toán trong OMNeT++ ..................................................................... 25

ii


2.3. Xây dựng mô hình mô phỏng trong OMNeT++ ............................................................ 26
2.3.1. Mô hình lập trình OMNeT++ .................................................................................. 26
2.3.2. Gỡ rối và theo dấu ................................................................................................... 27
2.3.3. Xây dựng mô hình mô phỏng .................................................................................. 28
2.3.4. Xây dựng kiến trúc mô hình thông qua các file mô tả NED ................................... 30
2.3.5. Tạo file cấu hình omnetpp.ini .................................................................................. 32
2.3.6. Sản phẩm đầu ra của việc mô phỏng ....................................................................... 32
III. Xây dựng bộ công cụ hỗ trợ mô phỏng các giao thức định tuyến địa lý ............................ 33
3.1. Tổng quan về bộ công cụ hỗ trợ mô phỏng các giao thức định tuyến địa lý ................. 33
3.1.1. Mục đích thực hiện bộ công cụ hỗ trợ mô phỏng .................................................... 33
3.1.2. Bộ công cụ hỗ trợ mô phỏng các giao thức định tuyến địa lý ................................. 34
3.2. Mô phỏng giao thức định tuyến GPSR .......................................................................... 39
3.2.1. Giới thiệu chung về giao thức GPSR ...................................................................... 39
3.2.2. Module UpdateNbTable .......................................................................................... 41
3.2.3. Module GPSRNetwLayer ........................................................................................ 44
3.2.4. Thực hiện mô phỏng giao thức định tuyến GPSR ................................................... 50
3.3. Mô phỏng thuật toán BoundHole ................................................................................... 52

3.3.1. Giới thiệu chung về thuật toán xác định hố mạng BoundHole ............................... 52
3.3.2. Module Tent ............................................................................................................ 53
3.3.3. Thuật toán BoundHole ............................................................................................ 55
3.3.4. Module BoundHole ................................................................................................. 59
3.3.5. Thực hiện mô phỏng giao thức định tuyến BoundHole .......................................... 63
3.4. Mô phỏng thuật toán xấp xỉ hố ...................................................................................... 66
3.4.1. Mô tả thuật toán xấp xỉ hố ....................................................................................... 66
3.4.2. Mô phỏng thuật toán xấp xỉ hố CorePolygonDetermination................................... 67
3.4.3. Thực hiện mô phỏng thuật toán xấp xỉ hố ............................................................... 70
IV. Kết luận............................................................................................................................... 73
TÀI LIỆU THAM KHẢO ........................................................................................................ 74

iii


DANH MỤC CÁC BẢNG
Bảng 1: Một số công cụ mô phỏng mạng máy tính .................................................................... 4
Bảng 2: So sánh OMNeT++, OPNET, NS2 ............................................................................. 16
Bảng 3: Các thông số trong giao thức định tuyến GPSR.......................................................... 44
Bảng 4: Các góc tắc đƣợc xác định thông qua thuật toán Tent ................................................ 64

iv


DANH MỤC CÁC HÌNH
Hình 1: Kiến trúc phân cấp trong OPNET .................................................................................. 7
Hình 2: Giao diện bộ mô phỏng NS-2 ...................................................................................... 10
Hình 3: Giao diện công cụ mô phỏng NS3 ............................................................................... 11
Hình 4: Môi trƣờng thử nghiệm NS3........................................................................................ 12
Hình 5: Giao diện GUI của OMNeT++ .................................................................................... 15

Hình 6: Một số nền tảng đƣợc phát triển dựa trên OMNeT++ ................................................. 20
Hình 7: Các module đơn giản và kết hợp ................................................................................. 22
Hình 8: Các kết nối ................................................................................................................... 23
Hình 9: Truyền message ........................................................................................................... 24
Hình 10: Mô hình phân cấp của các module trong OMNeT++ ................................................ 27
Hình 11: Thực hiện mô hình mô phỏng .................................................................................... 29
Hình 12: Quá trình thực hiện xây dựng kịch bản mô phỏng trong OMNeT++ ........................ 30
Hình 13: Giao diện GNED........................................................................................................ 30
Hình 14: Điều khiển import và định nghĩa các kênh ................................................................ 31
Hình 15: Định nghĩa các module đơn giản và module phức hợp ............................................. 31
Hình 16: Định nghĩa mạng........................................................................................................ 31
Hình 17: Cấu trúc bộ công cụ hỗ trợ mô phỏng các thuật toán định tuyến địa lý .................... 35
Hình 18: Module WirelessNodeBattery ................................................................................... 36
Hình 19: 2 module nút mạng GPSRNode và BoundholeNode ................................................. 37
Hình 20: Các lớp hỗ trợ giúp lƣu các thông số cần thiết trong bộ công cụ mô phỏng ............. 38
Hình 21: Các gói tin đƣợc sử dụng trong bộ công cụ hỗ trợ mô phỏng giao thức định tuyến địa
lý ............................................................................................................................................... 39
Hình 22: Module hỗ trợ mô phỏng giao thức định tuyến địa lý GPSR .................................... 41
Hình 23: Khởi tạo nút mạng ..................................................................................................... 42
Hình 24: Tạo và gửi gói tin quảng bá NeighborUpdatePkt ...................................................... 42
Hình 25: Thuật toán RNG ......................................................................................................... 43
Hình 26: Hàm RNG .................................................................................................................. 43
Hình 27: Thuật toán truyền tin tham lam: x gửi gói tin đến nút y gần D nhất trong các nút láng
giềng của x và trƣờng hợp không thể sử dụng truyền tin tham lam để gửi gói tin đến D ........ 45
Hình 28: Thuật toán truyền tin tham lam .................................................................................. 45
Hình 29: Chuyển từ truyền tin tham lam sang truyền tin vành đai ........................................... 46
Hình 30: Theo quy tắc tay phải, gói tin sẽ đƣợc truyền theo đƣờng x -> w -> v -> D ............. 47
Hình 31: Quy tắc tay phải ......................................................................................................... 47
Hình 32: Hàm FaceChange ....................................................................................................... 48
Hình 33: Thuật toán GPSR ....................................................................................................... 49


v


Hình 34: Sơ đồ mô phỏng mạng GPSR .................................................................................... 50
Hình 35: Cửa sổ theo dõi quá trình mô phỏng Tkenv .............................................................. 50
Hình 36: Số lƣợng gói tin GPSR gửi đi tại nút nguồn và nhận đƣợc tại các nút mạng khác ... 51
Hình 37: Số lƣợng gói tin quảng bá NeighborUpdatePkt gửi đi và nhận đƣợc tại các nút mạng
.................................................................................................................................................. 51
Hình 38: Module hỗ trợ mô phỏng giao thức định tuyến BoundHole ...................................... 52
Hình 39: p là một nút tắc mạnh................................................................................................. 53
Hình 40: Xây dựng bảng các nút láng giềng sắp xếp theo chiều ngƣợc chiều kim đồng hồ .... 54
Hình 41: Thực hiện thuật toán Tent xây dựng bảng các góc tắc .............................................. 55
Hình 42: Vùng cấm của nút ti và xác định nút ti+1 .................................................................... 56
Hình 43: Xác định nút tiếp theo cần truyền gói tin đến ............................................................ 57
Hình 44: Trƣờng hợp 1: node tj không nằm trong vùng truyền tin của cả 2 node ti và ti+1 ....... 58
Hình 45: Trƣờng hợp 2: node ti không nằm trong vùng truyền tin của cả 2 node tj và tj+1. ...... 58
Hình 46: Hàm checkIntersection giúp xác định và loại bỏ các cạnh giao nhau trong hố mạng 59
Hình 47: Khởi tạo và gửi gói tin BoundHole messenger packet đến nút láng giềng ở mặt trái
góc tắc ....................................................................................................................................... 60
Hình 48: Gói tin quay lại nút khởi tạo, hoàn thành một vòng khép kín ................................... 61
Hình 49: Mã giả cho việc thực hiện supressed start trong BoundHole .................................... 62
Hình 50: Cập nhật bảng ingressTable và xác định có tiếp tục gửi gói tin đi không ................. 62
Hình 51: Sơ đồ mạng mô phỏng thuật toán xác định hố mạng BoundHole ............................. 63
Hình 52: Cửa sổ OMNeT++/Tkenv .......................................................................................... 64
Hình 53: Số lƣợng các gói tin quảng bá NeighborUpdatePkt gửi và nhận tại mỗi nút mạng .. 65
Hình 54: Số lƣợng các nút mạng trong hố mạng ...................................................................... 65
Hình 55: Xác định đa giác 8 đỉnh ngoại tiếp hố mạng ............................................................. 67
Hình 56: Xác định đƣờng chéo dài nhất trong hố mạng ........................................................... 68
Hình 57: Xác định 2 điểm Hj Hk có khoảng cách đến HpHq lớn nhất ....................................... 68

Hình 58: Xác định các đƣờng thẳng song song và vuông góc với HpHq .................................. 69
Hình 59: Xác định giao của các đƣờng thẳng ........................................................................... 69
Hình 60: Xác định đƣờng thẳng HpHr đi qua Hp và tạo với HpHq 1 góc π/4 ............................ 69
Hình 61: Xác định giao điểm của 2 hình chữ nhật XYUV và X’Y’U’V’ ................................ 70
Hình 62: Đầu vào mô phỏng là một hố mạng có 10 đỉnh ......................................................... 71
Hình 63: Đầu ra mô phỏng là một đa giác với 8 đỉnh............................................................... 71
Hình 64: Biểu diễn các giá trị thuật toán xấp xỉ hố trong excel ............................................... 72

vi


DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

OMNeT++

Objective Modulear Network Testbed in C++

OPNET

OPtimized Network Engineering Tool

NS

Network Simulator

NED

NEtwork Description

IDE


Integrated Development Environment

vii


MỞ ĐẦU
Kỹ thuật mô phỏng là một kỹ thuật hiện đại vô cùng quan trọng. Nó có thể đƣợc áp
dụng trong nhiều ngành khoa học, thiết kế khác nhau, hoặc những lĩnh vực ứng dụng
khác với nhiều mục đích. Hệ thống mô phỏng máy tính có thể tạo ra mô hình các vật
thể giả thiết và các hoạt động tƣơng tác đối với chúng trên máy tính, qua đó giúp ta
nghiên cứu các chức năng và sự vận hành của hệ thống. Phầm mềm mô phỏng sử dụng
các biến khác nhau để dự đoán các trạng thái của hệ thống đƣợc mô phỏng. Việc mô
phỏng máy tính có thể đƣợc sử dụng để hỗ trợ cho việc mô hình hóa và phân tích trong
rất nhiều hệ thống tự nhiên. Các lĩnh vực ứng dụng đặc biệt bao gồm vật lý, hóa học,
sinh học, và cả các hệ thống liên quan đến con ngƣời nhƣ kinh tế, tài chính hoặc thậm
chí cả khoa học xã hội. Một ứng dụng quan trọng khác của mô phỏng đƣợc áp dụng
trong việc thiết kế ví dụ nhƣ thiết kế trong xây dựng dân dụng, kỹ thuật công trình, kỹ
thuật chế tạo máy, và kỹ thuật máy tính. Trong đó, ứng dụng của kỹ thuật mô phỏng
vào lĩnh vực mạng máy tính, ví dụ nhƣ sử dụng để mô phỏng lƣu lƣợng mạng, vẫn còn
tƣơng đối mới.
Mô phỏng mạng máy tính chính là việc sử dụng các công nghệ phần mềm để thực hiện
việc mô phỏng các hệ thống hoặc thuật toán mạng, trong đó lĩnh vực ứng dụng đã đƣợc
thu hẹp hơn so với việc mô phỏng tổng quát, các yêu cầu cũng đƣợc đƣa ra cụ thể hơn.
Ví dụ nhƣ mô phỏng mạng máy tính sẽ tập trung nhiều vào tính hợp lệ và việc thực
hiện các giao thức hoặc thuật toán phân phối hơn so với việc tập trung vào các đặc
điểm trực quan hoặc quan sát theo thời gian thực của hệ thống mô phỏng. Ngoài ra, các
công nghệ mạng đang phát triển một cách vô cùng nhanh chóng với nhiều tổ chức khác
nhau đang cùng tham gia trong quá trình thực hiện việc nghiên cứu và phát triển. Các
tổ chức đó đã đem lại những công nghệ và các sản phẩm khác nhau, chạy trên các nền

tảng phần mềm khác nhau trên mạng Internet. Đó là lí do tại sao việc mô phỏng mạng
máy tính thƣờng yêu cầu một cấu trúc nền mở cho phép việc mở rộng để có thể tích

1


hợp thêm các gói mô phỏng khác, giúp đóng góp xây dựng nên một nền tảng mô phỏng
mạng ngày càng hoàn thiện hơn.
Mạng Internet có một đặc điểm chính là có cấu trúc với các thành phần mạng (TCP/IP)
cho phép các công nghệ ở các tầng khác nhau có thể đƣợc thi hành theo những cách
khác nhau mà chỉ cần có một giao diện đồng bộ với các tầng lân cận. Do đó các công
cụ mô phỏng mạng phải có khả năng tích hợp tính năng này và cho phép các gói mở
rộng khác trong tƣơng lai có thể đƣợc thêm vào và vận hành một cách trong suốt mà
không gây ảnh hƣởng đến những chức năng hay thành phần hiện có trong hệ thống.
Các công cụ mô phỏng mạng đƣợc sử dụng trong nhiều lĩnh vực khác nhau, từ nghiên
cứu hàn lâm, đến phát triển công nghiệp, hay nhƣ trong những quy trình đảm bảo chất
lƣợng thiết kế, mô phỏng, kiểm nghiệm, phân tích hiệu năng của các giao thức mạng.
Tóm lại, một công cụ mô phỏng mạng sẽ bao gồm một phạm vi lớn các công nghệ và
giao thức mạng, giúp ngƣời sử dụng có thể xây dựng những mạng máy tính phức tạp từ
những khối cấu trúc cơ bản, ví dụ nhƣ các nút mạng hay các đƣờng kết nối. Với sự
giúp đỡ của các công cụ này, ta có thể thiết kế nhiều kiểu kiến trúc mạng khác nhau
nhƣ các thiết bị cuối, hub, cầu nối mạng, các bộ định tuyến, các thiết bị liên kết quang,
các thiết bị di động,… Trong thực tế, việc triển khai một hệ thống mạng bao gồm nhiều
máy tính, router và các đƣờng truyền dẫn để kiểm thử một giao thức mạng hoặc nghiên
cứu một thuật toán nào đó là vô cùng tốn kém. Các công cụ mô phỏng ra đời giúp hạn
chế chi phí đồng thời tiết kiệm thời gian thực hiện những công việc này. Chúng cũng tỏ
ra đặc biệt hữu dụng trong việc cho phép những nhà thiết kế hệ thống mạng có thể
kiểm thử những giao thức mạng mới hoặc thay đổi những giao thức mạng hiện tại một
cách có kiểm soát. Luận văn này sẽ trình bày những nghiên cứu tổng quát về một số
môi trƣờng công cụ mô phỏng giao thức mạng, đồng thời tập trung nghiên cứu sâu hơn

trong việc mô phỏng một số giao thức mạng định tuyến địa lý sử dụng nền tảng mô
phỏng MiXim trong OMNeT++.

2


I. Giới thiệu chung về môi trƣờng công cụ mô phỏng giao thức mạng
Trong phần này, luận văn sẽ giới thiệu một cách tổng quan về các hệ thống mô phỏng
mạng hiện tại, bao gồm những đặc điểm, chức năng chính cũng nhƣ một số những ƣu
điểm và nhƣợc điểm của các công cụ mô phỏng mạng đó
1.1. Các khái niệm cơ bản trong mô phỏng mạng máy tính
1.1.1. Mô phỏng mạng và các công cụ mô phỏng
Nhìn chung, các công cụ mô phỏng mạng cố gắng thực hiện việc mô hình hóa một
mạng máy tính trong thế giới thật. Nguyên tắc chủ yếu là nếu một hệ thống có thể đƣợc
mô hình hóa, ta có thể thay đổi các đặc tính của mô hình và từ đó phân tích các kết quả
tƣơng ứng. Việc thiết lập một mô hình mô phỏng là rẻ hơn nhiều so với việc triển khai
trong thực tế. Ngoài ra, thực hiện mô phỏng giúp ta có thể áp dụng đƣợc nhiều kịch
bản khác nhau để phân tích với chi phí thấp hơn nhiều so với việc thay đổi các mạng
trong thực tế.
Các công cụ mô phỏng mạng không phải là hoàn hảo, chúng không thể mô hình hóa
một cách hoàn toàn tất cả chi tiết của một mạng thực tế. Tuy nhiên, các mô hình hóa tốt
thƣờng mô phỏng đủ gần với các mạng thực tế, giúp các nhà nghiên cứu hiểu rõ hơn về
mạng trong các quá trình kiểm tra cũng nhƣ ảnh hƣởng từ những sự thay đổi đến hoạt
động của mạng.
1.1.2. Công cụ mô phỏng thƣơng mại và công cụ mô phỏng mã nguồn mở
Các công cụ mô phỏng mạng khác nhau có thể đƣợc phân loại dựa trên một vài tiêu
chuẩn, ví dụ nhƣ phân loại theo sản phẩm thƣơng mại hay miễn phí, hoặc phân loại
theo mức độ phức tạp của công cụ mô phỏng.
Một số các công cụ mô phỏng mạng máy tính đã đƣợc thƣơng mại hóa, có nghĩa là các
phần mềm này sẽ không đƣợc cung cấp mã nguồn hoặc các gói thành phần đến những

ngƣời sử dụng phổ thông một cách miễn phí. Ngƣời dùng phải trả tiền để có thể sử
dụng phần mềm hoặc đặt mua những gói đặc biệt phù hợp theo yêu cầu của mình. Một

3


ví dụ điển hình cho dạng này là công cụ mô phỏng OPNET. Các công cụ mô phỏng
dạng thƣơng mại có những ƣu điểm và nhƣợc điểm riêng. Ƣu điểm là chúng thƣờng có
những bộ tài liệu hoàn thiện và đƣợc cập nhật thƣờng xuyên, đƣợc duy trì một cách ổn
định bởi một đội ngũ chuyên môn của công ty cung cấp. Các phần mềm mô phỏng mã
nguồn mở thƣờng tỏ ra yếu thế về mặt này khi không có đủ đội ngũ chuyên môn làm
việc với hệ thống tài liệu. Vấn đề này sẽ càng trở nên nghiêm trọng khi các phiên bản
mới đƣợc đƣa ra với nhiều những tính năng mới, ngƣời sử dụng sẽ gặp khó khăn trong
việc theo dõi hoặc hiểu các đoạn code trƣớc đó nếu không có các tài liệu thích hợp.
Ngƣợc lại, các hệ thống mô phỏng mã nguồn mở cũng có lợi thế của riêng mình. Đó là
mọi thứ đều rất mở và tất cả mọi ngƣời hoặc mọi tổ chức có thể đóng góp xây dựng
hoặc giúp tìm ra các lỗi. Giao diện các công cụ này cũng thƣờng đƣợc thiết kế mở cho
việc nâng cấp trong tƣơng lai, giúp cho các phần mềm mô phỏng mã nguồn mở có tính
linh hoạt và đƣợc cập nhật các công nghệ mới một cách nhanh chóng hơn so với các
phần mềm mô phỏng thƣơng mại. Một số ví dụ tiêu biểu về phần mềm mô phỏng mã
nguồn mở bao gồm OMNeT++, NS2, NS3,…[1][2]
Phân loại

Công cụ mô phỏng mạng máy tính

Thƣơng mại

OPNET, QualNet

Mã nguồn mở NS2, NS3, OMNeT++, SSFNet, J-Sim

Bảng 1: Một số công cụ mô phỏng mạng máy tính
1.2. Một số công cụ mô phỏng mạng hiện tại
Hiện nay có rất nhiều các công cụ mô phỏng mạng với những đặc tính khác nhau trên
nhiều phƣơng diện, ví dụ nhƣ OPNET, NS-2, NS-3, OMNeT++, REAL, SSFNet, JSim, QualNet… Trong luận văn này sẽ không phân tích hết toàn bộ các công cụ mô
phỏng mà chỉ chọn ra một vài loại, thực hiện một số phân tích và so sánh giúp ta có
đƣợc cái nhìn rõ ràng hơn về chúng. 4 công cụ mô phỏng mạng đƣợc trình này trong
luận văn này bao gồm OPNET, NS2, NS3, và OMNeT++. Trong số các công cụ mô

4


phỏng mạng đó, OPNET là một phần mềm thƣơng mại và có chút khác biệt so với các
công cụ mô phỏng mạng còn lại do đó sẽ đƣợc giới thiệu đầu tiên. NS2 là công cụ mô
phỏng mạng thông dụng nhất trong các nghiên cứu hàn lâm do nó là một phần mềm mã
nguồn mở với các thƣ viện thành phần phong phú. Rất nhiều những tổ chức phi lợi
nhuận đã đóng góp phát triển các thƣ viện thành phần này và phƣơng pháp phát triển
công cụ mô phỏng NS2 đã đƣợc chứng minh là vô cùng thành công. NS3 đƣợc phát
triển dựa trên NS2, tuy nhiên nó không phải là một bản nâng cấp của NS2 mà là một
công cụ mô phỏng hoàn toàn riêng biệt. NS3 đã thiết kế lại rất nhiều cơ chế hoạt động
dựa trên những kinh nghiệm thành công và thất bại của NS2 trƣớc đó. OMNeT++ là
một công cụ mô phỏng mạng quan trọng khác có thế mạnh về giao diện đồ họa và thiết
kế phần lõi theo cấu trúc module. OMNeT++ cũng là một công cụ mô phỏng mạng mã
nguồn mở và đƣợc biết đến rộng rãi trong các nghiên cứu khoa học.
1.2.1. Công cụ mô phỏng mạng OPNET
OPNET là chƣơng trình mô phỏng trên nền Windows đƣợc sử dụng rộng rãi. Nó đƣợc
xây dựng dựa trên ngôn ngữ C++ và cung cấp môi trƣờng ảo cho việc mô hình hóa,
phân tích và dự đoán hiệu năng mạng, giúp mô hình hóa chính xác các ứng dụng, các
máy chủ và nhiều công nghệ mạng. Các giao thức và thiết bị mới thƣờng xuyên đƣợc
cập nhật nhằm theo kịp xu hƣớng phát triển nhanh chóng của công nghệ mạng.
OPNET đƣợc sử dụng bởi các tổ chức thƣơng mại, tổ chức chính phủ và trƣờng đại

học trên toàn thế giới với nhiều tính năng đa dạng. Các tính năng đó bao gồm:
- Tạo và chỉnh sửa các mạng và các nút mạng.
- Tạo và chỉnh sửa các tiến trình đang chạy trên các nút đó.
- Phân tích kết quả mô phỏng và tạo biểu đồ hiệu năng.
- Định nghĩa các tiến trình toán học trong việc dùng các công cụ phân tích.
Các tính năng này làm cho OPNET hoạt động linh hoạt và cung cấp khả năng mô
phỏng hầu nhƣ mọi loại hình mạng truyền thông. Việc tạo sơ đồ mô phỏng topo mạng

5


có thể đƣợc thực hiện một cách đơn giản và dễ dàng bằng cách sử dụng các thành phần
kéo & thả và các cài đặt định trƣớc. OPNET có thể thực hiện việc quản lí một mạng
với hàng trăm nút mạng. Tuy nhiên, đối với ngƣời mới bắt đầu, việc học cách sử dụng
OPNET một cách triệt để nhằm triển khai một giao thức mới có đôi chút khó khăn,
ngƣời dùng cần làm quen với phƣơng pháp và ngôn ngữ hƣớng đối tƣợng nhƣ C++
cũng nhƣ là kiến thức cơ bản về mạng.
Phƣơng pháp mô hình hóa trong OPNET đƣợc tổ chức theo cấu trúc phân cấp. Ở cấp
độ thấp nhất, các mô hình tiến trình Process đƣợc xây dựng thành các máy trạng thái
(FSM - Finite State Machine). Trạng thái và các sự thay đổi có thể đƣợc cụ thể hóa một
cách rõ ràng thông qua việc sử dụng hình vẽ các lƣu đồ chuyển dịch trạng thái, với các
điều kiện xác định diễn biến trong mỗi trạng thái đƣợc lập trình bởi Proto-C, một ngôn
ngữ tƣơng tự C.
Môi trƣờng phần mềm của công cụ OPNET đƣợc gọi là Modeler, dàng riêng cho việc
nghiên cứu và phát triển mạng. Nó cũng có thể đƣợc sử dụng một cách linh hoạt để
nghiên cứu các mạng truyền thông, các thiết bị, giao thức và ứng dụng. Do là một công
cụ mô phỏng đƣợc thƣơng mại hóa, OPNET mang đến những hộ trợ về giao diện trực
quan khá mạnh mẽ cho ngƣời sử dụng. Các giao diện soạn thảo đồ họa có thể đƣợc sử
dụng để xây dựng các topo mạng và thực thể từ tầng ứng dụng cho đến tầng vật lý. Kỹ
thuật lập trình hƣớng đối tƣợng đƣợc sử dụng để tạo ánh xạ liên kết giữa thiết kế đồ

họa và việc vận hành của các hệ thống thực.
OPNET hoạt động dựa trên một cơ chế đƣợc gọi là hệ thống sự kiện rời rạc, có nghĩa là
các hành vi của hệ thống có thể đƣợc mô phỏng bằng cách mô hình hóa các sự kiện
trong hệ thống theo thứ tự kịch bản đƣợc tạo lập. Cấu trúc phân cấp đƣợc sử dụng để tổ
chức hệ thống mạng. Cũng giống nhƣ các công cụ mô phỏng khác, OPNET cũng cung
cấp các công cụ cho phép ngƣời sử dụng định nghĩa định dạng gói tin trong giao thức.
Các công cụ lập trình đƣợc sử dụng để thực hiện nhiệm vụ việc định nghĩa sự chuyển
tiếp các trạng thái, định nghĩa mô hình mạng và xử lý các module.
6


OPNET là một công cụ mô phỏng mạng phổ biến đƣợc sử dụng trong việc nghiên cứu
và phát triển mạng. Giao diện đồ họa GUI và các công cụ lập trình của OPNET tỏ ra
hữu dụng trong việc cho phép ngƣời sử dụng xây dựng hệ thống cần mô phỏng.

Hình 1: Kiến trúc phân cấp trong OPNET
1.2.2. Công cụ mô phỏng mạng NS2 (Network Simulator 2)
Chƣơng trình mô phỏng mạng NS có nguồn gốc từ trƣờng đại học Canada
U.C.Berkely/ LBNL, NS là một chƣơng trình mô phỏng sự kiện rời rạc hƣớng đối
tƣợng có mục tiêu nhằm tiến hành nghiên cứu các hoạt động mạng và là một phần mềm
miễn phí. NS-2 đƣợc thừa nhận và sử dụng rộng rãi trong cộng đồng nghiên cứu hoạt
động mạng, giúp thử nghiệm các ý tƣởng mới, các giao thức, các thuật toán phân
phối… và luôn nhận đƣợc sự đóng góp quan trọng từ các nhà nghiên cứu.

7


NS-2 không chỉ thích hợp cho việc mô phỏng mà còn có thể sử dụng để kết hợp
chƣơng trình mô phỏng vào trong mạng thực tế. Những đối tƣợng trong chƣơng trình
mô phỏng có khả năng đƣa lƣu lƣợng mạng trong thực tế vào trong chƣơng trình mô

phỏng và đƣa một phần lƣu lƣợng trong chƣơng trình mô phỏng vào trong mạng thực
tế.
Nhƣng tiếc rằng, với kiến trúc phần mềm của NS2, việc thêm các thành phần mới hoặc
chỉnh sửa những điểm hạn chế là không dễ dàng. Điều này có nghĩa là về khả năng
thực hiện kiểm tra thuật toán hay các kịch bản mô phỏng mới thì NS-2 yếu thế so với
các phần mềm mô phỏng khác. Ngoài ra theo nhƣ các báo cáo thì NS-2 có tốc độ tính
toán khá chậm.
Kiến trúc của NS-2 bám sát mô hình OSI. Mô hình mạng OSI này đặc trƣng cho quan
hệ của các thành phần mạng, bao gồm các nút và các liên kết, các bộ phát lƣu lƣợng
loại đơn lƣu lƣợng hoặc đa lƣu lƣợng, các bộ phát kiểu thống kê và các kiểu điển hình
khác nhƣ FTP và telnet. Hoạt động mạng và giao thức truyền tải đƣợc mô phỏng bởi
thao tác gán các tác nhân thích hợp vào các nút có liên quan. Mã nguồn của NS2 đƣợc
phân chia thành 2 bộ phận: C++ đóng vai trò lõi chƣơng trình và OTCL dành cho việc
cấu hình và các đoạn mã mô phỏng.
Việc thực hiện và mô phỏng NS2 bao gồm 4 bƣớc:
(1) Thực hiện các giao thức bằng cách thêm một tổ hợp giữa mã C++ và mã Tcl vào
trong mã nguồn của NS-2.
(2) Mô tả việc mô phỏng bằng kịch bản OTcl;
(3) Chạy chƣơng trình mô phỏng
(4) Phân tích các tệp tin bám vết đã đƣợc tạo ra. Việc thực hiện một giao thức mới
đòi hỏi phải bổ xung thêm mã C++ cho chức năng của các giao thức này, điều
này tƣơng tự nhƣ việc cập nhật thêm các từ khóa cho các file cấu hình NS-2
Otcl một cách hợp lệ, giúp phân biệt các giao thức mới và các tham số mặc định

8


của nó. Đoạn mã C++ miêu tả các tham số và các phƣơng thức, tạo nên tính sẵn
sàng thực thi khi thực hiện kịch bản OTcl.
Quá trình mô phỏng đƣợc cấu hình, điều khiển và vận hành thông qua việc sử dụng

giao diện đồ họa đƣợc cung cấp bởi lớp mô phỏng OTcl. Lớp này cung cấp các thủ tục
để tạo và quản lý các topo mạng, khởi tạo định dạng các gói và lựa chọn lịch làm việc,
đồng thời lƣu giữ các chỉ dẫn bên trong mỗi phần tử của topo. Ngƣời sử dụng tạo ra
các tôp mạng bằng cách sử dụng các nút và các liên kết trong OTcl.
Các topo mạng gồm các bộ định tuyến, các liên kết và kênh truyền, có thể đƣợc tạo ra
bằng cách liệt kê các nút mạng và các đƣờng nối các nút trong một tập tin topo hoặc sử
dụng một vài bộ tạo nút mạng đƣợc xây dựng cho NS-2. (Tiers và GT-ITM)
Để thu thập dữ liệu đầu ra hay dữ liệu vết trong một chƣơng trình mô phỏng, NS-2 sử
dụng hai loại thông tin vết. Loại thứ nhất là các bản ghi của mỗi gói tin khi nó tới, đi,
hoặc bị loại khỏi đƣờng truyền, hàng đợi; Loại thứ 2 là thông tin giám sát – chính là
các bản ghi thông số của các chỉ số quan trọng nhƣ số gói tin và byte tới, đi… Chƣơng
trình NAM là một Tcl/Tk dựa trên công cụ hoạt ảnh động, có thể sử dụng để theo dõi
các tập tin ghi sự kiện trong quá trình xử lý, phân tích và thực hiện lại quá trình mô
phỏng (thậm chí NAM có thể sử dụng với mọi chƣơng trình mô phỏng miễn là có các
định dạng dữ liệu phù hợp).
NS-2 là phần mềm mô phỏng phổ biến nhất đƣợc sử dụng cho việc nghiên cứu trong
các lĩnh vực về mạng Ad hoc. NS-2 đƣợc trang bị đầy đủ tiện ích cho các giao thức,
các mô hình, các thuật toán, các công cụ thêm vào. Bởi vậy, xét khả năng chấp nhận về
mặt khoa học, cũng nhƣ số lƣợng các công cụ/ module và giá thành thì NS2 có lẽ là
một lựa chọn lý tƣởng.

9


Hình 2: Giao diện bộ mô phỏng NS-2
1.2.3. Công cụ mô phỏng mạng NS3 (Network Simulator 3)
Tƣơng tự nhƣ NS2, NS3 là một công cụ mô phỏng mạng mã nguồn mở mô phỏng theo
chuỗi các sự kiện rời rạc với mục đích chính là tập trung vào hỗ trợ việc học tập và
nghiên cứu.
NS3 đƣợc thiết kế để thay thế phần mềm mô phỏng NS2 hiện đang phổ biến, nhƣng

NS3 không phải là một bản nâng cấp của NS2 mà là một chƣơng trình mô phỏng mới
và không tƣơng thích ngƣợc với NS2.

10


Hình 3: Giao diện công cụ mô phỏng NS3
NS3 đƣợc phát triển từ một số các công cụ mô phỏng mạng, bao gồm NS2, YANS và
GTNets. Điểm khác biệt chính giữa NS3 và NS2 bao gồm:


Khác biệt về lõi phần mềm: phần lõi của NS3 đƣợc viết bằng C++ với các giao
diện sử dụng Python (trong khi NS2 sử dụng ngôn ngữ OTcl). Một số mẫu thiết
kế ƣu việt bằng C++ cũng đƣợc sử dụng



Tập trung vào tính thực tế: các thực thể giao thức đƣợc thiết kế gần giống với
các máy tính thực



Tích hợp phần mềm: hỗ trợ việc tích hợp từ nhiều phần mềm mã nguồn mở và
giảm việc phải viết lại các mô hình mô phỏng.



Hỗ trợ giao diện trực quan: sử dụng các máy ảo hạng nhẹ. Hình dƣới là một ví
dụ về môi trƣờng thử nghiệm cho NS3


11


Hình 4: Môi trường thử nghiệm NS3


Kiến trúc tìm vết: NS3 đang phát triển một nền tảng framework giúp thu nhập
thống kê và tìm vết, cho phép lựa chọn đầu ra mà không cần phải xây dựng lại
phần lõi mô phỏng.

Thông qua việc so sánh giữa NS2 và NS3, ta có thể tổng kết lại những đặc điểm chính
của NS3 nhƣ ở dƣới đây:


Phân chia theo module, có phần lõi đã đƣợc tài liệu hóa



Sử dụng ngôn ngữ lập trình C++ và Python



Căn chỉnh với hệ thống thật



Tích hợp phần mềm




Tích hợp môi trƣờng thử nghiệm và có giao diện đƣợc trực quan hóa



Hệ thống thuộc tính



Các mô hình nâng cấp

1.2.4. Công cụ mô phỏng mạng OMNeT++
OMNeT++ [3] là một chƣơng trình mã nguồn mở, với thành phần cơ bản đƣợc xây
dựng trên nền tảng C++. OMNeT++ cung cấp một thƣ viện mô phỏng C++ và hỗ trợ
giao diện đồ hoạ (cho phép chỉnh sửa mạng bằng hình vẽ, hỗ trợ hình ảnh động).

12


Chƣơng trình mô phỏng này có thể đƣợc sử dụng để: thực hiện mô phỏng lƣu lƣợng
trong mạng viễn thông, tạo mô hình các giao thức, xây dựng mô hình các hàng đợi
trong mạng, xây dựng các bộ vi xử lý đa nhiệm và các hệ thống phân tán khác, kiểm tra
lại kiến trúc phần cứng, đánh giá khía cạnh về hiệu suất của các hệ thống phần mềm
phức tạp. Nói chung OMNeT++ có thể tạo ra mô hình bất kì một hệ thống nào bằng
cách sử dụng các thành phần mô phỏng, thực hiện giao tiếp với nhau thông qua việc
gửi các bản tin. Điểm khác biệt của OMNeT++ so với các phần mềm mô phỏng đã
đƣợc đề cập đến ở trên là OMNeT++ không chỉ đƣợc thiết kế chuyên cho mạng viễn
thông, mà còn tổng quát hơn nhiều. Số lƣợng các module và các giao thức (mạng) đi
kèm trong OMNeT++ hạn chế hơn các chƣơng trình mô phỏng đã đề cập trƣớc đây khá
nhiều.
Một mô hình OMNeT++ của một hệ thống (vd: một mạng network…) bao gồm các

module phân cấp lồng nhau. Độ sâu của việc lồng ghép các module này là không có
giới hạn, nó cho phép ngƣời sử dụng ánh xạ đến cấu trúc logic trong thực tế bằng các
mô hình cấu trúc trong mô phỏng. Các module giao tiếp với nhau thông qua việc
truyền những thông báo có cấu trúc dữ liệu phức tạp tùy ý. Các module có thể gửi các
thông báo trực tiếp đến đích hoặc gửi theo một đƣờng dẫn đã đƣợc định trƣớc thông
qua các cổng hay các kết nối với các đặc tính đƣợc gán sẵn (băng thông, độ trễ và tỉ lệ
lỗi). Các module có thể chứa các thông số đƣợc sử dụng để tùy chỉnh hoạt động của nó,
giúp tạo nên tính linh hoạt trong topo mạng.
Các module tầng thấp nhất trong module phân cấp sẽ chứa các thuật toán và đƣợc viết
bởi ngƣời sử dụng. Trong quá trình thực hiện mô phỏng, các module đơn này sẽ chạy
song song với các module khác.
Để viết một vài module đơn, đòi hỏi ngƣời sử dụng phải biết lập trình C++. OMNeT++
có định hƣớng thiết kế hƣớng đối tƣợng chặt chẽ, ngƣời dùng có thể dùng các khái
niệm của lập trình hƣớng đối tƣợng một cách tự do để mở rộng chức năng của chƣơng
trình mô phỏng.
13


Chƣơng trình mô phỏng OMNeT++ có nhiều giao diện ngƣời dùng, phục vụ cho các
mục đích khác nhau nhƣ: gỡ rối, trình diễn hay thực thi các khối công việc. Giao diện
đồ họa giúp cho ngƣời sử dụng có thể quan sát chi tiết bên trong các mô hình, cho phép
thực hiện việc bắt đầu/ kết thúc mô phỏng và can thiệp vào mô hình bằng cách thay đổi
các biến hoặc các đối tƣợng. Thƣ viện đồ họa đƣợc liên kết với các chƣơng trình gỡ
rối/bám vết, cho phép ngƣời dùng có thể nhìn thấy đƣợc đối tƣợng đồng thời có thể
chỉnh sửa đối tƣợng đó trong giao diện đồ họa thông qua cửa sổ kiểm soát.
OMNeT++ cũng hỗ trợ mô phỏng song song thông qua việc sử dụng các thƣ viện giao
tiếp MPI hoặc PVM3. Trong trƣờng hợp tổng quát, OMNeT++ giống với PARSEC
(Parallel Simulation Environment for Complex Systems), nhƣng mềm dẻo, linh hoạt và
có môi trƣờng phong phú hơn.
OMNeT++ có một tập hợp đa dạng các lớp đại diện cho cấu trúc dữ liệu (vd: hàng đợi,

mảng…), các lớp thu thập dữ liệu, lớp xác xuất và lớp thống kê (vd: Các biểu đồ cột,
các phân phối theo luật số mũ), các lớp phát hiện nhanh và các lớp phát hiện kết quả
chính xác. Các file đầu ra là các file text mà sau một vài quá trình xử lí đơn giản, có thể
đƣợc chuyển thành các tập tin mang tính thống kê toán học chuẩn.
OMNeT++ chứa các bộ giao thức internet bao gồm: IP, TCP, UDP, RTP và một vài
giao thức hỗ trợ cho chất lƣợng dịch vụ cơ bản liên quan đến mạng vô tuyến. Đây là
một module mô phỏng các tầng thấp hơn của mạng GSM, một vài module mở đầu
dành cho các nút có tính chuyển động, sự lan truyền sóng vô tuyến, các thuật toán định
tuyến (AODV) và sự truyền thông vô tuyến nói chung. Hình dƣới là một ví dụ về giao
diện đồ họa của OMNeT++

14


Hình 5: Giao diện GUI của OMNeT++
1.3. So sánh tổng quan OPNET, OMNeT++ và NS-2
Một số đặc điểm của các chƣơng trình mô phỏng mạng OMNeT++, OPNET, NS2
đƣợc so sánh tổng quan nhƣ trong bảng dƣới đây:
Đặc điểm của các
chƣơng trình mô phỏng OPNET
OMNeT++
mạng
Các kiểu mô phỏng đƣợc
Sự kiện rời rạc
Sự kiện rời rạc
hỗ trợ
Song song/ phân
Nền tảng tính toán
Song song
tán

Các topo

Cấu trúc phân cấp Cấu trúc phân cấp

Công cụ định nghĩa các
Đồ họa
topo
Bộ sinh dữ liệu lƣu lƣợng Có
Quá trình tạo lƣu lƣợng


15

NS2

Sự kiện rời rạc
Phân tán
Cấu trúc thống
nhất

Đồ họa

Kịch bản cấu hình









Hỗ trợ giám sát
Các module dành cho các
tầng trong mô hình OSI
Tính linh hoạt của các mô
hình
Mô hình dành cho sự
truyền sóng
Tính có thể sửa đổi và mở
rộng
Độ co giãn
Tính dễ sử dụng

Đồ họa

Đồ họa

Đồ họa


















không





Khó thay đổi



Khó với những
ngƣời mới bắt Bình thƣờng
đầu

Khó thay đổi
Khó với những
ngƣời mới bắt
đầu

Sự thừa nhận của khoa
Đƣợc thừa nhận
Đƣợc thừa nhận
Đƣợc thừa nhận
học
Loại giấy phép của phần

Thu phí
Miễn phí
Miễn phí
mềm
Bảng 2: So sánh OMNeT++, OPNET, NS2 [2]
1.4. Lựa chọn chƣơng trình mô phỏng mạng thích hợp
Có một điều chắc chắn rằng, không có chƣơng trình mô phỏng nào đã đƣợc xem xét ở
trên là thực sự đáp ứng đƣợc toàn bộ các yêu cầu đặc trƣng phù hợp với các kế hoạch
và các mục tiêu riêng lẻ. Tuy nhiên, chƣơng trình mô phỏng tốt nhất là chƣơng trình có
khả năng kết hợp hài hòa các khía cạnh với nhau, ví dụ nhƣ số lƣợng các thành phần
đƣợc xây dựng từ trƣớc, khả năng module hóa, khả năng mở rộng, khả năng chỉnh sửa,
giá thành ...vv.
Cụ thể, một chƣơng trình mô phỏng tốt thƣờng đi kèm với các yếu tố sau:


Gồm một tập hợp lớn các mô hình, giao thức và thuật toán đƣợc xây dựng từ
trƣớc



Có mức độ thừa nhận cao từ cộng đồng khoa học

16




Có khả năng mở rộng tốt




Thiết kế phần mềm tốt và có tính module cao



Thỏa mãn tính tiện lợi, tính có thể sửa đổi đƣợc



Có sự tiên tiến về đồ hoạ và các công cụ toán học dành cho việc xây dựng, thử
nghiệm, giám sát và xử lý bổ sung



Có tài liệu hƣớng dẫn cụ thể



Khả năng thực hiện song song và/hoặc phân tán



Khả năng xác định một mô hình 3D thực tế cho môi trƣờng



Chi phí hợp lí trong các trƣờng hợp ngân sách bị giới hạn

17



×