1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

82 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 3,39 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

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++

Trang 11

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

Trang 12

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]

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, J-Sim, 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ô

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

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

Trang 17

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

Trang 18

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

Trang 19

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

• 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

Trang 20

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

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)

Trang 21

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

Trang 22

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++

Trang 23

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:

nhất Công cụ định nghĩa các

Trang 24

Hỗ trợ giám sát Đồ họa Đồ họa Đồ họa

Các module dành cho các

Tính linh hoạt của các mô

Bình thường

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

Sự thừa nhận của khoa

Loại giấy phép của phần

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

Trang 25

• 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

Trang 26

II Công cụ mô phỏng mạng OMNeT++

2.1 Giới thiệu chung

OMNeT++ [3][4], viết tắt của Objective Modulear Network Testbed in C++, là một chương trình mô phỏng sự kiện rời rạc, với các module phân cấp lồng nhau và giao tiếp với nhau bằng các gói tin message được gửi qua các kênh truyền OMNeT++ là một hệ thống công cụ cơ bản để viết các kịch bản mô phỏng chứ không cung cấp các thành phần đặc biệt cho việc mô phỏng mạng máy tính, mạng hàng đợi, kiến trúc hệ thống hay bất kỳ lĩnh vực nào khác Tuy nhiên cũng có nhiều mô hình mô phỏng đã được xây dựng sẵn từ trước ví dụ như internet, Ipv6, mạng di động,… Việc lập trình trên OMNeT++ được thực hiện với C++

OMNeT++ có một số ưu điểm như có cấu trúc tốt, có tính module cao, không chỉ giới hạn trong việc mô phỏng các giao thức mạng Tuy nhiên OMNeT++ cũng vẫn tồn tại một số nhược điểm, ví dụ như còn khá mới và có ít mô hình mô phỏ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 mô 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.1.1 Các thành phần chính của OMNeT++

OMNeT++ bao gồm các thành phần chính sau:

• Thư việ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)

Trang 27

• 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ụ vẽ đồ thị kết quả vector ở đầu ra (Plove) với giao diện đồ họa

• Công cụ mô tả kết quả vô hướng ở đầu ra (Scalars) với giao diện đồ họa

• 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

2.1.2 Ứng dụng của OMNeT++

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, thường được sử dụng trong các ứng dụng chủ yếu như:

• Mô hình hoạt động của các mạng thông tin

• Mô hình giao thức

• Mô hình hoá các mạng kiểu hàng đợi

• Mô hình hoá các hệ thống đa bộ vi xử lý (multiprocesser) hoặc các hệ thống phần cứng theo mô hình phân tán khác (distributed hardware systems)

• Đánh giá kiến trúc phần cứng

• Đánh giá hiệu quả hoạt động của các hệ thống phức tạp

2.1.3 Một số nền tảng mô phỏng được phát triển từ OMNeT++

OMNeT++ chỉ cung cấp một nền tảng cơ sở hạ tầng phục vụ cho việc mô phỏng chứ không hỗ trợ đặc biệt về mô phỏng mạng hay bất cứ lĩnh vực nào khác Việc ứng dụng

mô phỏng ở các lĩnh vực khác nhau được cung cấp bởi những mô hình mô phỏng khác nhau, hầu hết đều là mã nguồn mở Các mô hình đó được phát triển hoàn toàn độc lập với OMNeT++ và có những chu kỳ phát triển riêng Một số nền tảng mô phỏng được phát triển dựa trên OMNeT++ bao gồm:

Trang 28

• Mobility Framework – mô phỏng mạng không dây và mạng di động

• INET Framework – Mô phỏng các mạng có dây và không dây TCP/IP

• Castalia – Mạng cảm biến không dây

• MiXiM – Mô phỏng mạng di động và mạng không dây

• OverSim – mô phỏng các mạng overlay peer-to-peer (dựa trên INET)

Hình 6: Một số nền tảng được phát triển dựa trên OMNeT++

Một số các chương trình mô phỏng chuyên dụng khác được phát triển từ OMNeT++

• NesCT – Mô phỏng TinyOS

• Consensus Positif and MAC Simulator – Các mạng cảm biến

• SimSANs – Các mạng vùng lưu trữ (Storage Area Network)

• CDNSim – Mạng phân phối nội dung (Content Distribution Network)

• X-Simulator – Kiểm tra các giao thức đồng bộ

• FIELDBUS – Mô phỏng các mạng điều khiển

• PAWiS Power Aware Wireless Sensor Networks Simulation

Mặc dù OMNeT++ là một công cụ mô phỏng mạnh mẽ, tuy nhiên nó cũng thiếu những

hỗ trợ trực tiếp và một mô hình chính xác cho việc mô phỏng giao tiếp không dây MiXim ra đời nhằm mục đích bổ sung những thiếu sót này, góp phần mở rộng thêm các nền tảng mô phỏng hiện có đối với mạng không dây và di động trong OMNeT++ MiXim cung cấp những mô hình chi tiết cho kênh không dây (suy giảm tín hiệu,…), kết nối không dây, các mô hình di động, các mô hình vật cản và nhiều giao thức thông tin liên lạc đặc biệt là ở tầng MAC Ngoài ra, MiXim còn cung cấp các hiển thị đồ họa

Trang 29

thân thiện với người dùng về các mạng di động và mạng không dây trong OMNeT++,

hỗ trợ gỡ rối và thậm chí định nghĩa các kịch bản mạng không dây phức tạp Mặc dù vẫn đang trong quá trình phát triển, MiXim hiện đã là một công cụ mạnh mẽ giúp cho việc phân tích hoạt động của các mạng không dây Trong luận văn này, người thực hiện sử dụng nền tảng MiXim để xây dựng một bộ công cụ hỗ trợ cho việc mô phỏng các giao thức định tuyến địa lý, tập trung vào 2 giao thức GPSR và BoundHole

2.2 Tổng quan về 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ế [5]:

• Các module lồng nhau có cấu trúc phân cấp

• Các module là các đối tượng cụ thể của các kiểu module

• Các module trao đổi thông tin bằng các message qua các kênh

• Các tham số của module có thể thay đổi một cách linh hoạt

• Sử dụng ngôn ngữ mô tả topology

2.2.1 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 gói tin 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 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

Trang 30

Hình 7: Các module đơn giản và kết hợp

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, 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++

2.2.2 Kiểu module

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

Trang 31

2.2.3 Message, cổng, liên kết

Các module trao đổi thông tin bằng việc gửi các message Trong thực tế, message có dạng khung (frame) hoặc là các gói tin (packet) được truyền đi trong mạng Các message có thể có cấu trúc phức tạp tuỳ ý Các module đơn giản có thể gửi các message đi một cách trực tiếp đến vị trí nhận hoặc gửi đi theo một đường dẫn định sẵn thông qua các cổng và các liên kết

“Thời gian mô phỏng cục bộ” (local simulation time) của một module tăng lên khi module nhận được một message Message có thể đến từ một module khác hoặc đến từ cùng một module (self-message)

Cổng (gate) là các giao tiếp vào ra của module Message được gửi đi qua các cổng ra

và được nhận vào thông qua các cổng vào

Mỗi kết nối (connection) hay còn gọi là liên kết (link) được tạo bên trong một mức đơn trong cấu trúc phân cấp của các module: bên trong một module kết hợp, một kết nối có thể được tạo ra giữa các cổng tương ứng của hai module con, hoặc giữa cổng của module con với cổng của module kết hợp

Hình 8: Các kết nối

2.2.4 Mô hình truyền gói tin

Một kết nối có thể có ba tham số đặc trưng Những tham số này rất thuận tiện cho các

mô hình mô phỏng mạng thông tin nhưng không hữu dụng lắm cho các kiểu mô hình khác Ba tham số này bao gồm:

• Độ trễ đường truyền (propagation delay) tính bằng s - giây

Trang 32

• Tỉ số lỗi bit, được tính bằng số lỗi/bit

• Tốc độ tryền dữ liệu, được tính bằng số bit/s

Các tham số này là tuỳ chọn Giá trị của các tham số này có thể khác nhau với mỗi kết nối, phụ thuộc vào kiểu của liên kết (hay còn gọi là kiểu của kênh truyền - channel type)

Độ trễ đường truyền là tổng thời gian đến của message bị trễ đi khi truyền qua kênh Tỉ

số lỗi bit ảnh hưởng đến quá trình truyền message qua kênh Tỉ số này là xác suất các bit bị truyền sai Do đó xác suất để một message độ dài n bit truyền đi chính xác là:

P (message gửi đi được nhận chính xác) = (1 - ber)n

trong đó ber là tỉ số lỗi bit và n là số bit của message

Các message truyền đi đều có một cờ lỗi, cờ này sẽ được thiết lập khi việc truyền message có lỗi

Tốc độ truyền dữ liệu được tính theo đơn vị bit/s, và nó được sử dụng để tính thời gian

để truyền một gói tin Khi tham số này được sử dụng, quá trình gửi message đi trong

mô hình sẽ tương ứng với bit đầu tiên được truyền đi và message được tính là đến nơi sau khi bên nhận đã nhận được bit cuối cùng

Hình 9: Truyền message

Trang 33

Các tham số có kiểu số có thể được dùng để cấu hình topology rất dễ dàng Nằm trong các module kết hợp, các tham số này có thể được dùng để chỉ ra số module con, số cổng giao tiếp và cách các kết nối nội bộ được tạo ra

2.2.6 Lập trình thuật toán trong OMNeT++

Các module đơn giản có thể chứa các thuật toán là các hàm của C++ Sự linh hoạt và sức mạnh của C++, kết hợp với các thư viện mô phỏng của OMNeT++ tạo điều kiện dễ dàng cho người sử dụng tạo ra các thuật toán cần thiết Các lập trình viên mô phỏng có thể chọn lựa việc mô tả theo sự kiện hay theo tiến trình, có thể dễ dàng sử dụng những khái niệm của lập trình hướng đối tượng (như đa hình, kế thừa) và thiết kế các mẫu thử (pattern) để mở rộng chức năng của quá trình mô phỏng

Các đối tượng mô phỏng (message, module, queue ) được thể hiện qua các lớp của C++ Một số lớp cơ bản trong thư viện mô phỏng của OMNeT++:

• Module, cổng, liên kết

• Các tham số

• Message

• Các lớp Container (mảng, hàng đợi )

Trang 34

• Các lớp Data Collection

Các lớp này có thể được sử dụng như những công cụ cho phép người dùng có thể duyệt qua tất cả các đối tượng khi chạy thử mô hình, đồng thời hiển thị thông tin về chúng như tên của đối tượng, tên lớp, các biến trạng thái và nội dung bên trong Đặc điểm này cũng cho phép tạo ra các mô hình mô phỏng có giao diện đồ hoạ (GUI) với phần cấu trúc bên trong được che đi

2.3 Xây dựng mô hình mô phỏng trong OMNeT++

Phần này sẽ trình bày cụ thể các bước trong việc sử dụng công cụ OMNeT++ để thực hiện xây dựng các mô hình mô phỏng một số giao thức định tuyến

2.3.1 Mô hình lập trình OMNeT++

Mô hình lập trình của OMNeT++ gồm các đặc điểm sau:

• Các đối tượng được mô phỏng được thể hiện dưới dạng module

 Các module đó có thể là module đơn giản hay module phức hợp

 Các module giao tiếp với nhau thông qua các message (gửi trực tiếp hoặc thông qua các cổng)

 Một module được mô tả bởi:

- File mô tả giao diện (file NED)

- Lớp mô tả hành vi (các lớp C++)

• Các module, cổng và link liên kết có thể được tạo ra theo cách:

 Tĩnh – Tại thời điểm bắt đầu việc mô phỏng (trong file NED)

 Động – Trong quá trình mô phỏng

Các module này được xây dựng theo một mô hình phân cấp như trong hình dưới:

Trang 35

Hình 10: Mô hình phân cấp của các module trong OMNeT++

Node là một module phức hợp, bao gồm các module con đại diện cho các tầng của giao thức mạng, ví dụ như các module application, module network và module mô phỏng card mạng NIC

Card giao diện mạng NIC lại là một module phức hợp, bao gồm module đơn giản MAC và module phức hợp Phy

2.3.2 Gỡ rối và theo dấu

OMNeT++ hỗ trợ việc gỡ rối và theo dấu thông qua các chức năng như:

• Ghi lại các dữ liệu vector và dữ liệu vô hướng trong các file đầu ra

• Tạo số ngẫu nhiên với các seed khác nhau

• Trợ giúp theo dấu và gỡ rối (hiển thị thông tin về các hoạt động của module, các chức năng snapshot, breakpoint)

• Việc mô phỏng có thể được cấu hình dễ dàng bằng file ini

• Hỗ trợ thực hiện chạy cùng một chương trình mô phỏng với các thông số khác nhau

• Có 2 chế độ chạy mô phỏng:

 Chế độ dòng lệnh: tối thiểu các hiển thị I/O, hiệu suất cao

Trang 36

 Giao diện tương tác: Cửa sổ Tcl/Tk, cho phép quan sát việc mô phỏng và thay đổi các thông số trong khi đang chạy mô phỏng

2.3.3 Xây dựng mô hình mô phỏng

Quá trình xây dựng một mô hình mô phỏng được thực hiện như sau:

• Một mô hình OMNeT++ sẽ được xây dựng từ các thành phần (module) giao tiếp với nhau thông qua việc trao đổi các gói tin (message) Các module có thể kết hợp lại với nhau, ví dụ như một số module kết hợp lại để tạo thành module phức hợp Khi tạo ra các module, ta cần phải thiết kế hệ thống theo cấu trúc phân cấp của hệ thống module thông tin liên lạc

• Định nghĩa cấu trúc mô hình thông qua ngôn ngữ NED Ta có thể chỉnh sửa các file NED thông qua trình soạn thảo văn bản hoặc thông qua trình soạn thảo đồ họa phát triển trên nền Eclipse của OMNeT++ Simulation IDE

• Các thành phần hoạt động của mô hình (các module đơn giản) được lập trình bằng C++, sử dụng nhân mô phỏng và thư viện các lớp

• Xây dựng file cấu hình omnetpp.ini phù hợp để lưu các thông tin cấu hình và các thông số của mô hình File cấu hình này có thể mô tả một vài cấu hình chạy mô phỏng với các thông số khác nhau

• Thực hiện xây dựng và chạy chương trình mô phỏng Quá trình này sẽ kết hợp các đoạn mã giữa nhân mô phỏng và các giao diện người dùng được cung cấp bởi OMNeT++ Có 2 chế độ chạy là chế độ dòng lệnh và chế độ giao diện đồ họa người dùng

• Các kết quả thu được được lưu vào trong 2 file với các định dạng vô hướng hoặc vector Các kết quả này có thể được hiển thị thông qua công cụ phân tích Analysis Tool của Simulation IDE Các file kết quả được lưu dưới dạng văn bản, nhờ đó cũng có thể được xử lý bằng các công cụ phân tích khác như Matlab

Trang 37

Việc thực hiện xây dựng mô hình mô phỏng được mô tả như ở sơ đồ dưới đây:

Hình 11: Thực hiện mô hình mô phỏng [6]

Xây dựng mô hình mô phỏng được bắt đầu bằng việc xây dựng kiến trúc mô hình mô phỏng, thông qua việc tạo ra các file ned mô tả các module và topo mạng

Tiếp đó là thêm vào các hành vi bằng cách tạo ra các lớp C++ tương ứng với các file ned đó

Sau đó ta có thể thiết lập các thông số trong file omnet.ini Các thông số này giúp ta có thể chạy kịch bản mô phỏng với các thông số khác nhau mà không cần biên dịch lại Sau khi xây dựng được mô hình mô phỏng ta có thể thực hiện việc biên dịch, chạy và phân tích các kết quả đầu ra

Trang 38

Hình 12: Quá trình thực hiện xây dựng kịch bản mô phỏng trong OMNeT++

2.3.4 Xây dựng kiến trúc mô hình thông qua các file mô tả NED

• Sơ đồ topo của một mô hình mô phỏng đƣợc mô tả bằng cách sử dụng ngôn ngữ NED

• Việc chỉnh sửa có thể đƣợc thực hiện bằng giao diện GNED hoặc các trình biên tập text editor

Hình 13: Giao diện GNED

Trang 39

Các thành phần trong file mô tả NED bao gồm:

• Điều khiển Import

• Định nghĩa các kênh (Channel)

Hình 14: Điều khiển import và định nghĩa các kênh

• Định nghĩa các module đơn giản và module phức hợp

Hình 15: Định nghĩa các module đơn giản và module phức hợp

• Định nghĩa mạng (Network)

Hình 16: Định nghĩa mạng

Trang 40

2.3.5 Tạo file cấu hình omnetpp.ini

File cấu hình omnetpp.ini thường được tạo ra riêng biệt với file NED bởi các lí do sau:

• File NED được sử dụng để định nghĩa topo mạng hoặc các module, là một phần của mô tả mô hình mô phỏng

• Ini file định nghĩa

2.3.6 Sản phẩm đầu ra của việc mô phỏng

• Chương trình mô phỏng có thể xuất ra các file chứa thông tin vector hoặc thông tin

vô hướng

 omnetpp.vec và omnetpp.sca

 Chức năng ghi lại kết quả cần được lập trình trong các module đơn giản

• Một file đầu ra vector có thể chứa nhiều thông số

 Chuỗi các cặp nhãn thời gian, các giá trị

 Chứa các thông tin như: Chiều dài hàng đợi theo thời gian, độ trễ gói tin truyền giữa 2 đích, số gói tin bị mất trên kênh truyền

 Các thông số vector đầu ra có thể được cấu hình trong file omnetpp.ini Có thể chọn ghi hoặc không đối với từng thông số vector, hoặc giới hạn việc lưu lại các thông số này trong một khoảng thời gian xác định

• File chứa thông tin đầu ra vô hướng chứa các thông tin thống kê tổng hợp: Số lượng gói được gửi đi, số gói mất, thời gian trễ trung bình, thông lượng đỉnh

Ngày đăng: 28/02/2021, 00:03

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5] András Varga and OpenSim Ltd (2011), OMNeT++ User Manual version 4.3 [6] José Daniel García Sánchez, introduction to simulation with omnet Sách, tạp chí
Tiêu đề: OMNeT++ User Manual version 4.3" [6] José Daniel García Sánchez
Tác giả: András Varga and OpenSim Ltd
Năm: 2011
[1] Jianli Pan (2008), A Survey of Network Simulation Tools: Current Status and Future Developments Khác
[2] Murat Miran Koksal (2008), A Survey of Network Simulators Supporting Wireless Networks Khác
[4] Christian Timmerer (2013), An Introduction to OMNeT++ 4.3 Khác
[7] Brad Nelson Karp (2000), Geographic Routing for Wireless Networks Khác
[8] Brad Karp, H. T. Kung (2000), GPSR: Greedy Perimeter Stateless Routing for Wireless Networks Khác
[9] Qing Fang, Jie Gao, Leonidas J. Guibas (2005), Locating and Bypassing Holes in Sensor Networks Khác
[10] Nguyễn Phi Lê, Nguyễn Đức Trọng, Nguyễn Khanh Văn (2014), Load Balanced Routing with Constant Stretch for Wireless Sensor Network with Holes Khác

🧩 Sản phẩm bạn có thể quan tâm

w