1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu học tập Kỹ thuật mô phỏng: Phần 1

131 9 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

Tiêu đề Tài Liệu Học Tập Kỹ Thuật Mô Phỏng
Trường học Trường Đại Học Kinh Tế - Kỹ Thuật Công Nghiệp
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tài Liệu Học Tập
Định dạng
Số trang 131
Dung lượng 2,46 MB

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

Nội dung

(NB) Bài giảng cung cấp cho sinh viên tổng quan về kiến trúc của hệ mô phỏng Network Simulator, cách thức cài đặt và sử dụng Network Simulator, đồng thời phân tích và thảo luận một cách chi tiết về các đối tượng cơ bản như : Nút mạng, gói tin, module định tuyến, bộ đệm, liên kết,...nhằm giúp cho học viên làm chủ được hệ mô phỏng này. Nội dung của bài giảng bao gồm 11 chương và được chia thành 2 phần, mời các bạn cùng tham khảo.

Trang 1

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP

KHOA CÔNG NGHỆ THÔNG TIN

TÀI LIỆU HỌC TẬP

KỸ THUẬT MÔ PHỎNG

Đối tượng: HSSV trình độ Đại học, Cao đẳng

Ngành đào tạo: Dùng chung cho Khối ngành Công nghệ

Lưu hành nội bộ

Trang 2

- 1 -

M C L C

DANH M C VIẾT TẮT 5

LỜI NÓI ĐẦU 7

CHƯƠNG 1 MÔ PHỎNG MẠNG MÁY TÍNH 9

1.1 Mạng máy tính và kiến trúc phân tầng 9

1.1.1 Khái niệm phân tầng 9

1.1.2 Mô hình tham chiếu OSI và TCP/IP 11

1.2 Mô hình hệ thống 13

1.2.1 Tiếp cận theo phương pháp phân tích 13

1.2.2 Tiếp cận theo phương pháp mô phỏng 13

1.3 Khái niệm cơ bản về mô phỏng mạng máy tính 14

1.3.1 Định nghĩa chuẩn về mô phỏng 14

1.3.2 Các thành phần của mô phỏng 15

1.4 Mô phỏng phụ thuộc thời gian 16

1.4.1 Mô phỏng hướng thời gian 16

1.4.2 Mô phỏng hướng sự kiện 17

1.5 Ví dụ về mô phỏng mạng máy tính 19

CHƯƠNG 2 GIỚI THIỆU VỀ NS2 26

2.1 Giới thiệu 26

2.2 Kiến trúc cơ bản 27

2.3 Cài đặt 28

2.3.1 Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống nền Unix 28

2.3.2 Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống nền Windows 29

2.4 Thư mục và quy ước 29

2.4.1 Thư mục 29

2.4.2 Các quy ước 30

2.5 Chạy mô phỏng NS2 32

2.6 Các thành phần C++ trong NS2 và Công cụ Make 39

CHƯƠNG 3 LIÊN KÉT GIỮA OTCL VÀ C++ TRONG NS2 43

3.1 Khái niệm hai ngôn ngữ trong NS2 44

3.2 Tạo và huỷ một đối tượng ánh xạ TclObject 55

3.3 Liên kết các biến trong cây thông dịch và cây biên dịch 58

3.4 Các lệnh OTcl 60

3.5 Tạo đối tượng TclObject 66

3.6 Gọi lệnh TclCommand 67

Trang 3

- 2 -

3.7 Lớp EmbeddeđTcl 70

CHƯƠNG 4 MÔ PHỎNG ĐIỀU KHIỂN SỰ KIỆN TRONG NS2 72

4.1 Phân biệt Event-Driven và Time-Driven 72

4.1.1 Mô phỏng hướng thời gian 73

4.1.2 Bước nhảy thời gian trong mô phỏng hướng thời gian 73

4.1.3 Mô phỏng hướng sự kiện 74

4.2 Khái niệm mô phỏng NS2 75

4.3 Events và Handlers 75

4.3.1 Tổng quan về sự kiện và thẻ quản lý 75

4.3.2 Lớp NsObject 76

4.3.3 Lớp Packet và lớp AtEvent 77

4.4 Bộ lập lịch 78

4.4.1 Các thành phần chính của bộ lập lịch 79

4.4.2 Đóng gói dữ liệu và khái niệm đa hình 79

4.4.3 Các hàm chính của bộ lập lịch 80

4.4.4 Tính động của ID định danh sự kiện 81

4.4.5 Cơ chế Lập lịch-Thực thi (Scheduling-Dispatching) 82

4.4.6 Lập lịch cho sự kiện rỗng và sự kiện giả 83

CHƯƠNG 5 CÁC THÀNH PHẦN CHÍNH TRONG NS2 89

5.1 Các thành phần chính trong NS2 89

5.2 Cây phân lớp C++ 90

5.3 Phân lớp NSObjects 91

5.3.1.Lớp NsObject ……….91

5.3.2 Cơ chế chuyển tiếp gói tin của NsObject 92

5.4 Phân lớp Connector 92

5.4.1 Khai báo của lớp Connector 93

5.4.2 Lệnh cấu hình của lớp Connector trong OTcl 94

5.5 Cơ chế chuyển tiếp gói tin 96

CHƯƠNG 6 CÁC NÚT NHƯ ROUTERS VÀ COMPUTER HOSTS 99

6.1 Tổng quan về các nút trong NS2 99

6.1.1 Các thủ tục instproc của lớp Node 100

6.1.2 Nút mặc định và Giao tiếp cấu hình nút 102

6.2 Cơ chế định tuyến trong NS2 102

6.3 Tuyến đường logic 104

6.4 Phân lớp Classifier 105

6.5 Định tuyến 114

Trang 4

- 3 -

6.5.1 Tổng quan về module định tuyến 114

6.5.2 Lớp RoutingModule trong C++ 117

6.5.3 Lớp RtModule trong OTcl 119

6.5.4 Lớp BaseRoutingModule và RtModule/Base 120

6.6 Cấu hình các đối tượng Node 120

6.7 Khởi tạo nút 123

6.8 Cấu hình đường 127

CHƯƠNG 7 QUẢN LÝ VÙNG ĐỆM VÀ ĐƯỜNG LIÊN KẾT 131

7.1 Giới thiệu về đối tượng SimpleLink 131

7.1.1 Các thủ tục instproc để cấu hình đối tượng SimpleLink 132

7.1.2 Khởi tạo của Lớp SimpleLink 133

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

7.3 Quản lý vùng đệm 136

7.4 Một ví dụ mạng Two-Node 143

CHƯƠNG 8 PACKETS, PACKETS HEADERS, VÀ HEADERS FORMAT 145

8.1 Tổng quan về nguyên tắc tạo gói tin 145

8.2 Sắp xếp và phân bổ gói tin 150

8.2.1 Cấp phát gói tin 150

8.2.2 Thu hồi gói tin 153

8.3 Tiêu đề gói tin 155

8.3.1 Truy cập header gói tin ở Mức 1 156

8.3.2 Header gói tin thông dụng 157

8.3.3 Header gói IP 157

8.3.4 Loại gói tin 158

8.3.5 Header theo giao thức 161

8.4 Tải trọng dữ liệu 171

8.4.1 Tùy biến gói tin 174

8.4.2 Tự tạo các gói tin 174

CHƯƠNG 9 TỔNG QUAN VÀ TRIỂN KHAI UDP 178

9.1 Khái niệm cơ bản về UDP và TCP 178

9.1.1 Cơ bản về giao thức UDP 178

9.1.2 Cơ bản về giao thức TCP 178

9.2 Tác tử cơ bản 183

9.2.1 Chưong trình ứng dụng, tác tử và mạng cấp thấp 183

9.2.2 Cấu hình tác tử 185

9.2.3 Cơ chế bên trong của tác tử 186

9.2.4 Định nghĩa một tác tử mới tầng giao vận 189

Trang 5

- 4 -

9.3 UDP và tác tử NULL 190

CHƯƠNG 10 TCP 195

10.1 Tổng quan về tác tử TCP trong NS2 195

10.1.1 Thiết lập kết nối TCP 195

10.1.2 Truyền gói tin và cơ chế báo nhận 195

10.1.3 TCP Header 196

10.1.4 Định nghĩa TCP gửi và TCP nhận 197

10.2 TCP Receiver 202

10.2.1 Lớp Acker 202

10.2.2 Lớp TcpSink 205

10.3 TCP Sender 207

10.4 Chức năng truyền gói tin TCP 207

10.4.1 Hàm sendmsg(nbytes) 208

10.4.2 Hàm send_much(force, reason, maxburst) 209

10.4.3 Hàm output(seqno, reason) 211

10.4.4 Hàm sendone() 213

CHƯƠNG 11 TẦNG ỨNG D NG 215

11.1 Mối quan hệ giữa tầng ứng dụng và tầng giao vận 215

11.2 Phân tích phân lớp tầng ứng dụng 218

11.2.1 Các hàm của lớp Application và Lớp Agent 219

11.2.2 Các hàm public của lớp Application 219

11.2.3 Các hàm public có liên quan của Lớp Agent 220

11.2.4 Các lệnh OTcl của Lớp Application 221

11.3 Phần tử sinh lưu lượng 221

11.4 Lớp CBR Traffic: Một ví dụ về bộ sinh lưu lượng 228

11.5 Ứng dụng mô phỏng 230

11.5.1 (File Transfer Protocol) 230

11.5.2 Telnet 231

TÀI LIỆU THAM KHẢO 232

Trang 6

- 5 -

DANH M C VIẾT TẮT

CBR (Constant Bit Rate) Tốc độ bit cố định

CBQ (Class Based Queueing ) Hàng đợi dựa trên lớp

FTP (File Transfer Protocol) Giao thức truyền tập tin

HBT (High priority Best effort Traffic)

Lưu lượng nỗ lực tối đa có độ ưu tiên cao nhất

HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn bản

IEEE (Institute of Electrical and Electronic

MAC (Media Access Control) Điều khiển truy cập đường truyền MMS (MPLS Network Simulation) Mô phỏng mạng MPLS

MPLS (Multicast-Protocol Label Switching ) Chuyển mạch nhãn đa giao thức

NFS (Network FileSystems) Các tập tin hệ thống mạng

OSPF (Open Shortest Path First ) Đường dẫn ngắn nhất mở đầu tiên RED (Random Early Detection) Hàng đợi dò sớm ngẫu nhiên

RT (Realtime Traffic ) Lưu lượng thời gian thực

SBT (Simple Best Effort Traffic) Lưu lượng nỗ lực tối đa đơn giản

SPF (Shortest Path First ) Đường dẫn ngắn nhất đầu tiên

TCP (Transmission Control Protocol ) Giao thức điều khiển truyền

UDP (User Datagram Protocol) Giao thức gói người dùng

VBR (Variable Bit Rate) Tốc độ bit thay đổi được

Trang 7

- 6 -

WLAN (Wireless Local Area Network) Mạng cục bộ không dây

CBR (Constant Bit Rate) Tốc độ bit cố định

CBQ (Class Based Queueing ) Hàng đợi dựa trên lớp

FTP (File Transfer Protocol) Giao thức truyền tập tin

HBT (High priority Best effort Traffic)

Lưu lượng nỗ lực tối đa có độ ưu tiên cao nhất

HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn bản

Trang 8

- 7 -

LỜI NÓI ĐẦU

Cùng với sự phát triển của khoa học và kỹ thuật, Công nghệ thông tin ở nước ta trong những năm gần đây phát triển rất mạnh Lĩnh vực Truyền thông và Mạng máy tính cũng đã 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 nhu cầu và trình độ cao, những người hoạt động chuyên ngành Công nghệ thông tin cần luôn phải nâng cao trình độ để đáp ứng Tuy nhiên, các mạng máy tính cũng có cùng các điểm chung thông qua đó chúng ta có thể khảo sát, mô phỏng phân loại và đánh giá chúng Tuy nhiên để nghiên cứu, đánh giá về các hệ thống mạng truyền thông hiện có cũng như đề xuất về các hệ thống mới thì không phải nhà khoa học nào cũng có điều kiện triển khai bằng thực nghiệm trên các hệ thống thực tế Do đó, các công cụ mô hình hóa,

mô phỏng, phân tích đánh giá về hiệu năng mạng hiện nay đang là các công cụ trợ thủ giúp đắc lực trong các nghiên cứu đóng góp vào sự phát triển của lĩnh vực Truyền thông

và Mạng máy tính

Trong số các công cụ mô phỏng hệ thống mạng thì NS (Network Simulator) là một

hệ mô phỏng hướng sự kiện mã nguồn mở đang được sử dụng rộng rãi trong học tập và nghiên cứu Do là một hệ mô phỏng mã nguồn mở nên kể từ khi được giới thiệu vào năm

1989, NS đã phát triển một cách mạnh mẽ với sự đóng góp cỉa cộng đồng nghiên cứu quốc tế Hiện nay NS đã được tích hợp hầu hết các module mô phỏng các thành phần mạng như các giao thức định tuyến, các giao thức tầng vận chuyển, các giao thức tầng ứng dụng và đang là phần mềm được sử dụng rộng rãi nhất trong số các phần mềm mô phỏng mạng dùng cho nghiên cứu, học tập về lĩnh vực Truyền thông và mạng máy tính

Để đáp ứng với yêu cầu học tập của sinh viên chuyên ngành công nghệ thông tin, Trường Đại học Kinh tế - Kỹ thuật Công nghiệp tổ chức biên soạn bài giảng ―Kỹ thuật mô phỏng‖ Đây là một học phần chuyên sâu của sinh viên chuyên ngành Đại học và Cao đẳng Công nghệ thông tin Học phần cung cấp cho sinh viên tổng quan về kiến trúc của hệ

mô phỏng NS, cách thức cài đặt và sử dụng NS, đồng thời phân tích và thảo luận một cách chi tiết về các đối tượng cơ bản như : Nút mạng, gói tin, module định tuyến, bộ đệm, liên kết, nhằm giúp cho học viên làm chủ được hệ mô phỏng này Bài giảng được biên soạn theo đúng chương trình đào tạo và các quy định về cách trình bày của Nhà trường

Nội dung của bài giảng bao gồm 11 chương:

Chương 1: Giới thiệu với bạn đọc một số lý thuyết cơ bản về mạng máy tính và bài toán mô phỏng mạng Trọng tâm của chương là phương pháp mô phỏng hướng sự kiện được sử dụng để phát triển NS

Chương 2: Cung cấp các kiến thức tổng quan về NS như : Kiến trúc hai ngôn ngữ của NS, tổ chức thư mục NS, các quy ước được sử dụng, Cách cài đặt NS trên hệ điều hành Unix và Windows

Trang 9

Chương 6 đến chương 11, Sinh viên sẽ được tiếp cận với các module được sử dụng phổ biến nhất trong NS Module biểu diễn đối tượng nút mạng được phân tích trong chương

6 Liên kết giữa các nút mạng bằng đối tượng simpleLink được trình bày trong chương 7, Chương 8 sẽ cung cấp cho bạn đọc các kiến thức cơ bản nhất về đối tượng mô phỏng gói tin Packet Các toán tử dùng để tạo gói tin được biểu diễn bằng đối tượng Agent sẽ được đề cập tới trong chương 9 và chương 10 Chương 11 sẽ trình bàu về đối tượng Application dùng để

mô phỏng các yêu cầu truyền dữ liệu của người sử dụng

Mong rằng nội dung bài giảng sẽ giúp cho sinh viên và bạn đọc những kiến thức cần thiết, làm cơ sở để có thể đi sâu vào thiết kế, làm chủ NS Bài giảng được dùng để giảng dạy cho sinh viên ngành Công nghệ thông tin, xong cũng có thể giúp sinh viên các ngành điện tử, viễn thông của các trường đại học và bạn đọc cần tham khảo các vấn đề về

mô phỏng và đánh giá hiệu năng mạng bằng NS

Vì bài giảng được biên soạn lần đầu, chúng tôi đã rất cố gắng hoàn chỉnh, song không tránh khỏi thiếu sót Rất mong nhận được sự góp ý của bạn đọc để bài giảng được hoàn thiện hơn

Xin chân thành cám ơn!

Trang 10

tụ này

Chương này sẽ cung cấp cho bạn đọc một cách nhìn tổng quan về mạng truyền thông máy tính và những vấn đề cơ bản để mô phỏng chúng Mục 1.1 Giới thiệu về mạng máy tính với mô hình tham chiếu mô tả kiến trúc của mạng truyền thông máy tính Mục 1.2 Trình bày vắn tắt về phương pháp thiết kế và mô hình hóa các hệ thống mạng máy tính phức tạp Trong Mục 1.3 Các vấn đề cơ bản về mô phỏng mạng máy tính được đề cập đến Mục 1.4 Trình bày về các kỹ thuật phổ biến khi mô phỏng theo phương pháp mô phỏng theo thời gian Mục 1.5 đưa ra một ví dụ điển hình và Mục 1.6 sẽ tổng kết lại các vấn đề của chương

Mạng máy tính và kiến trúc phân tầng

Một mạng máy tính được định nghĩa là một tập các máy tính có kết nối với nhau để thu thập, xử lý và phân bố thông tin Thuật ngữ máy tính được hiểu tương đối rộng bao gồm các thiết bị như máy trạm, máy chủ, router, modem, các trạm cơ sở, các điểm mở rộng truy cập không dây, Các máy tính này được kết nối bởi các liên kết truyền thông như cáp quang, cáp đồng, hay các liên kết sóng vi ba, sóng vệ tinh, sóng radio Một mạng máy tính có thể được xây dựng bên trong một mạng máy tính khác hoặc kết nối với một mạng máy tính khác Internet là một ví dụ điển hình về mạng máy tính Trên thực tế, Internet là mạng của các mạng

1.1.1 Khái niệm phân tầng

Một mạng máy tính là một hệ thống rất phức tạp Để đơn giản hóa trong việc thiết

kế và triển khai một hệ thống như vậy, người ta đưa ra khái niệm phân tầng Sử dụng kiến trúc phân tầng, các chức năng của một hệ thống mạng máy tính được tổ chức như là một ngăn xếp các tầng Mối quan hệ ngang hàng (hay liên kết ảo) diễn ra giữa 2 tầng đồng mức của 2 nút truyền thông với nhau

Luồng dữ liệu sẽ đi theo chiều dọc trong một tầng từ tầng cao nhất xuống tầng thấp nhất bên nút gửi, tiếp theo sẽ đi qua đường truyền vật lý rồi đến tầng thấp nhất bên nút nhận, sau đó đi ngược lên đến tầng cao nhất bên nút nhận Mỗi tầng biểu diễn một phần đặc trưng được định nghĩa trước của hệ thống và cung cấp một số dịch vụ nào đó cho tầng phía trên Tầng trên truy cập xuống tầng dưới thông qua giao tiếp tầng (interface) Các dịch vụ thường định nghĩa những công việc sẽ được thực hiện theo thuật ngữ các

Trang 11

- 10 -

hoạt động mạng hoặc các nguyên tắc nhưng đặc biệt lại không chỉ ra cách thực hiện chúng như thế nào Vì vậy một giao thức sẽ định nghĩa chi tiết về việc một dịch vụ được thực hiện như thế nào Ví dụ, mạch truyền tại máy tính nguồn có thể sử dụng một giao thức riêng (chẳng hạn như một kỹ thuật mã hóa dữ liệu) tại tầng vật lý để truyền các bit thông tin tới máy tính nhận Mạch nhận sẽ sử dụng giao thức riêng này để giải mã thông tin nhận được trên cơ sở các quy tắc của giao thức Một trong các ưu điểm rất lớn của khái niệm phân tầng này là tính độc lập của tầng Điều này có nghĩa là một thay đổi trong một giao thức của một tầng nào đó không ảnh hưởng tới toàn bộ hệ thống miễn là các giao tiếp của tầng không thay đổi Ở đây, ta chú ý vào các thuật ngữ dịch vụ, giao thức và giao tiếp tầng để nhấn mạnh rằng sự tương tác giữa các thành phần này tạo nên khái niệm phân tầng

Môi trường truyền Hình 1.1: Biểu diễn một cách nhìn tổng quan về khái niệm phân tầng được sử

dụng để truyền thông giữa 2 máy tính đầu cuối với nhau

Trong sơ đồ này, các chức năng của mỗi một máy tính được chia thành 4 tầng Khi

có một liên kết ảo giữa các tầng trên 2 máy tính thi các tầng đó được gọi là các tầng ngang hàng (peer) Mặc dù không kết nối trực tiếp với nhau nhưng các tầng ngang hàng giao tiếp với nhau bằng cách sử dụng một giao thức nào đó được biểu diễn bởi mũi tên 2 chiều trong hình Như đã nói ở trên, cần có một tiến trình truyền thông thực sự truyền dữ liệu đi qua ngăn xếp các tầng

Giả sử một tiến trình của ứng dụng chạy ở Tầng 4 của nút nguồn sinh ra dữ liệu hoặc thông điệp muốn truyền tới nút đích Việc truyền thông bắt đầu bằng việc sinh ra thông diệp D rồi truyền xuống tầng 3 Tại tầng 3, dữ liệu được phân tách thành 2 gói là D1 và D2 cùng các thông tin điều khiển chứa trong phần header H3 của tầng 3 được gắn vào đầu của hai gói này Các thông tin điều khiển có thể là các số thứ tự, kích thước gói, thông tin kiểm soát lỗi Các thông tin này được tầng ngang hàng tương ứng bên nút đích đọc và sử dụng để khôi phục lại thông điệp D Dữ liệu kết quả (VD: H3+D1) do tầng thấp hơn tiếp tục quản lý và tiến trình gắn thêm thông tin điều khiển của các giao thức tầng dưới lại tiếp tục được thực hiện Tiến trình này tiếp tục cho đến khi thông điệp tới được tầng thấp nhất, tại đó việc truyền thông tin thực sự được thực hiện qua một môi trường vật lý Chú ý rằng, theo dòng tiến trình này, có thể cần có thêm các tiến trình phân tách

Trang 12

- 11 -

dữ liệu từ các tầng trên thành các gói nhỏ hơn cho các mục đích khác Khi thông điệp tới đích, tiến trình ngược lại sẽ diễn ra Khi dữ liệu di chuyển lần lượt qua các tầng theo chiều từ dưới lên trên ở bên nút đích, phần header của chúng sẽ được gỡ bỏ theo từng tầng tương ứng Nếu cần thiết, nhiều gói sẽ được ghép lại với nhau trước khi truyền lên tầng cao hơn Tiến trình này sẽ tiếp tục cho đến khi thông điệp nguyên thủy (D) được khôi phục tại tầng 4

1.1.2 Mô hình tham chiếu OSI và TCP/IP

Mô hình OSI (Open Systems Interconnection) là một mô hình tham chiếu đầu tiên

do ISO (Tổ chức tiêu chuẩn hóa quốc tế) phát triển để cung cấp một khung chuẩn nhằm

mô tả các ngăn xếp giao thức trong một mạng máy tính Nó bao gồm 7 tầng trong đó mỗi tầng được thiết kế để thực hiện một nhóm chức năng đã định nghĩa trước Các tầng trong

mô hình OSI bao gồm tầng vật lý, tầng liên kết dữ liệu, tầng mạng, tầng giao vận, tầng phiên, tầng trình diễn và tầng ứng dụng Mô hình OSI chỉ đưa ra chức năng của từng tầng trong nó mà không chỉ định một cách chính xác rằng những dịch vụ hoặc giao thức nào sẽ được sử dụng trong mỗi tầng Mặc dù mô hình này không được triển khai trong các hệ thống hiện tại nhưng tính triết lý của mô hình OSI lại thiết lập một nền móng vững chắc cho các nghiên cứu phát triển trong lĩnh vực mạng máy tính

Mô hình tham chiếu TCP/IP ((Transmission Control Protocol/Internet Protocol) là

mô hình dựa trên 2 giao thức cơ sở là TCP và IP được sử dụng cho Internet hiện nay Các giao thức này qua thực tế đã chứng minh được sức mạnh của mình và kết quả là chúng đã được sử dụng và triển khai rộng rãi trong rất nhiều hệ thống mạng máy tính Mô hình TCP/IP do ARPANET phát triển từ một nghiên cứu do Bộ quốc phòng Mỹ tài trợ và nó được xem là mô hình gốc của mọi hệ thống mạng máy tính Trong mô hình TCP/IP, ngăn xếp giao thức được chia thành 5 tầng: tầng vật lý, tầng liên kết dữ liệu, tầng mạng, tầng giao vận và tầng ứng dụng Mỗi tầng chịu trách nhiệm về một số dịch vụ nào đó và sẽ được mô tả ngắn gọn sau đây Chú ý rằng, tầng ứng dụng trong mô hình TCP/IP có thể được xem là sự kết hợp của tầng phiên, tầng giao vận và tầng ứng dụng trong mô hình OSI

Tầng giao vận

Mục đích của tầng Giao vậnlà vận chuyển các thông điệp từ tầng ứng dụng của nút nguồn tới tầng ứng dụng của nút đích Đe hoàn thành mục đích này, tại tầng Giao vậncó

Trang 13

- 12 -

định nghĩa 2 giao thức chuẩn Ịà TCP và UDP (User Datagram Protocol) Trong khi TCP được thiết kế với mục đích đảm bảo truyền thông hướng kết nối một cách tin cậy giữa 2 nút thì UDP hỗ trợ truyền thông không hướng kết nối không tin cậy TCP thích hợp với các ứng dụng yêu cầu độ chính xác cao hơn là thời gian truyền và ngược lại đối với giao thức UDP

Thông tin điều khiển thường liên quan tới thông tin điều khiển luồng và kiểm soát lỗi cần đưa vào trong thông điệp Tiến trình phân đoạn dữ liệu được diễn ra trước khi gắn thêm phần header vào thông điệp Sau khi phân đoạn dữ liệu lớn từ tầng ứng dụng, đơn vị

dữ liệu tại tầng này được gọi là segment

Tầng Mạng

Tầng này cung cấp dịch vụ định tuyến cho tầng giao vận Tầng mạng được thiết kế

để vận chuyển các đơn vị dữ liệu thường được gọi là các packet dọc theo các con đường

từ nút nguồn tới nút đích Để thực hiện chức năng định tuyến, các header chứa thông tin như địa chỉ mạng nguồn và địa chỉ mạng đích được gắn vào các đơn vị dữ liệu giao thức tại tầng giao vận để hình thành đơn vị dữ liệu giao thức tại tầng mạng

Tầng Liên kết dữ liệu

Đơn vị dữ liệu do tầng mạng tạo ra là packet thường được định tuyến qua nhiều liên kết truyền thông và các nút trung gian trước khi chúng thực sự tới được đích Để định tuyến thành công các packet từ nguồn tới đích, phải có các cơ chế truyền dữ liệu trên mỗi một liên kết vật lý từ nút này sang nút khác Một giao thức ở tầng liên kết dữ liệu có nhiệm vụ vận chuyển dữ liệu qua một liên kết truyền thông

Giao thức tầng liên kết dữ liệu có 3 chức năng chính Chức năng thứ nhất là điều khiển luồng dữ liệu liên quan đến tốc độ truyền trong một liên kết truyền thông Chức năng thứ hai là điều khiển lỗi để đảm bảo tính toàn vẹn dữ liệu khi truyền Chức năng thứ

ba là dồn kênh/tách kênh cho phép ghép nhiều luồng dữ liệu vào một liên kết truyền thông

và tách các luồng dữ liệu ra từ một liên kết truyền thông Việc lựa chọn giao thức tầng liên kết dữ liệu có thể thay đổi trên mỗi một liên kết truyền thông Ví dụ, các giao thức/công nghệ tầng liên kết dữ liệu được sử dụng rộng rãi bao gồm Ethernet, PPP , IEEE 802.11, ATM,

Tầng Vật lý

Tầng Vật lý giải quyết bài toán truyền các bit dữ liệu qua một liên kết truyền thông vật lý Mục đích chính của nó là đảm bảo các tham số truyền (chẳng hạn như mức hiệu điện thế, kỹ thuật điều chế) được thiết lập thích hợp để đạt được hiệu năng truyền phù hợp (chẳng hạn như đạt được hiệu năng về tỷ suất lỗi bit thích hợp)

Cuối cùng, cả 5 tầng trong mô hình TCP/IP vừa được mô tả ở trên đều là các tầng phổ biến trong mô hình OSI Như đã nói ở trên, mô hình OSI còn 2 tầng phía trên tầng giao vận là tầng phiên và tầng trình diễn Tầng phiên đơn giản chỉ làm nhiệm vụ cho phép những người dùng trên nhiều máy tính khác nhau có thể tạo các phiên truyền thông với

Trang 14

- 13 -

nhau Tầng trình diễn có nhiệm vụ cơ bản là giải quyết bài toán biểu diễn các loại dữ liệu khác nhau khi truyền qua mạng Ví dụ, một hệ thống quản lý mạng thu thập dữ liệu có định dạng khác từ các máy tính khác nhau thì cần phải chuyển đổi định dạng dữ liệu thu thập được về định dạng dữ liệu đồng nhất của nó

Mô hình hệ thống

Mô hình hóa hệ thống có thể hiểu như là việc biểu diễn một hệ thống thực tế theo một cách đơn giản nào đó Mô hình hóa hệ thống là một công việc cực kỳ quan trọng trong thiết kế và phát triển hệ thống bởi vì nó dự đoán trước được hệ thống sẽ thực thi bằng cách nào trước khi được triển khai trong thực tế Khi mô hình hóa, các tham số của

hệ thống có thể thay đổi, kiểm nghiệm và phân tích Điều quan trọng là nếu việc mô hình hóa được xây dựng hợp lý thì có thể giúp tiết kiệm chi phí và giá thành khi phát triển hệ thống Để mô hình hóa một hệ thống, người ta phải đưa ra các giả định làm đơn giản hóa

hệ thống Tuy nhiên khi càng đưa ra nhiều giả định đơn giản hóa thì hệ thống càng đơn giản nhưng hệ thống được mô hình hóa lại càng kém chính xác so với hệ thống thực

Theo truyền thống, có 2 cách tiếp cận mô hình hóa hệ thống: tiếp cận theo phương pháp phân tích và tiếp cận theo phương pháp mô phỏng

1.1.3 Tiếp cận theo phương pháp phân tích

Mô hình hóa hệ thống theo phương pháp phân tích thường bắt đầu bằng việc mô tả một hệ thống toán học với sự trợ giúp của các công cụ toán ứng dụng chẳng hạn như các

lý thuyết hàng đợi và lý thuyết xác suất, sau đó áp dụng các phương pháp số học để rút ra các kết quả phân tích từ mô hình toán học đã phát triển Khi hệ thống thực tế tương đối nhỏ và đơn giản, mô hình hóa theo phương pháp phân tích có thể là phương pháp phân tích phù hợp hơn so với phương pháp mô phỏng Trong trường hợp này, có thể dễ dàng vận dụng các công cụ toán học vào việc phân tích và các thuật giải số học vào mô hình này mà không yêu cầu quá nhiều thời gian và tài nguyên tính toán

Nếu được triển khai thành công, mô hình hóa hệ thống tiếp cận theo phương pháp phân tích sẽ có thể có tính hiệu quả cao về mặt giá thành và có thể đưa ra một cách nhìn nhận hấp dẫn về mối tương tác giữa các thành phần trong hệ thống Tuy nhiên nếu sử dụng nhiều giả định ban đầu làm đơn giản hóa hệ thống, mô hình hóa theo phương pháp phân tích có thể biểu diễn không chính xác về hệ thống thực

1.1.4 Tiếp cận theo phương pháp mô phỏng

Phương pháp mô phỏng được sử dụng rộng rãi vào mô hình hóa hệ thống ứng dụng trong nhiều lĩnh vực như: Nghiên cứu kỹ thuật, phân tích thương mại, lập kế hoạch sản xuất và thí nghiệm sinh học, .So với phương pháp phân tích, phương pháp mô phỏng thường yêu cầu ít kỹ thuật trừu tượng hóa hơn trong một mô hình (chẳng hạn như ít các giả định đơn giản hóa hơn), khi đó hầu hết các đặc tính chi tiết của hệ thống thực có thể đưa vào hệ thống mô hình hóa để mô tả hệ thống thực một cách chính xác nhất Khi hệ thống thực lớn và phức tạp, phương pháp mô hình hóa hệ thống bằng toán học không còn

Trang 15

Khái niệm cơ bản về mô phỏng mạng máy tính

Một quá trình mô phỏng ít hoặc nhiều đều là sự kết hợp của khoa học và nghệ thuật Trong khi phần khoa học yêu cầu kỹ năng lập trình máy tính và nắm bắt sử dụng các công cụ toán ứng dụng một cách thuần thục thì phần nghệ thuật lại yêu cầu kỹ năng phân tích và phát biểu một cách rõ ràng mô hình khái niệm, về cơ bản, các bước cần phải thực hiện trong một tiến trình mô phỏng được chia thành 3 tác vụ chính và mỗi một tác vụ

có một cấp độ quan trọng khác nhau

Theo Shannon, trong quá trình mô hình hóa hệ thống bằng phương pháp mô phỏng, nếu xét trên phương diện tài nguyên thời gian và năng lực, nên dành 40% để định nghĩa bài toán, thiết kế mô hình thích hợp và đưa ra tập các thử nghiệm sẽ thực hiện trên mô hình mô phỏng Tiếp theo, nên dành 20% cho việc lập trình các thành phần kết quả của bước 1 Cuối cùng 40% tài nguyên còn lại nên sử dụng để thực hiện việc kiểm tra/xác thực

mô hình mô phỏng, thực hiện các thử nghiệm với các tham số đầu vào đã được thiết kế trước (có thể tính chỉnh lại các thử nghiệm) và phân tích kết quả Chú ý rằng công thức này hoàn toàn không cứng nhắc Bất kỳ một tiến trình mô phỏng bất kỳ nào trong thực tế cũng có thể yêu cầu ít hoặc nhiều tài nguyên hơn phụ thuộc vào ngữ cảnh thực tế và bản thân người thực hiện việc mô phỏng

Một quá trình mô phỏng có thể được xem như là một dòng các tiến trình của các thực thể trong mạng (chẳng hạn như các nút, các gói tin) Khi những thực thể này di chuyển qua hệ thống, chúng tương tác, kết hợp với các thực thể khác, kích hoạt các sự kiện làm thay đổi trạng thái của hệ thống và kết thúc tiến trình Theo thời gian, một thực thể có thể cạnh tranh hoặc đợi các tài nguyên với các thực thể khác Điều này dẫn đến việc phải có một trinh tự thực thi một cách logic sao cho mọi hành động trong hệ thống đều được xảy ra theo nghĩa có thể hiểu và quản lý được chúng Một trình tự thực thi đóng một vai trò quan trọng trong việc giám sát một quá trình mô phỏng và đôi khi chúng được sử dụng để nhận biết loại mô phỏng

1.1.5 Định nghĩa chuẩn về mô phỏng

Theo Shannon, mô phỏng là ―tiến trình thiết kế một mô hình của hệ thống thực và

áp dụng các thí nghiệm với mô hình này nhằm mục đích hiểu được hành vi của hệ thống và/hoặc đánh giá các chiến lược cho hoạt động của hệ thống‖ Do bản chất của mạng máy tính là động nên trong thực tế người ta phát triển mô hình động

Trang 16

- 15 -

1.1.6 Các thành phần của mô phỏng

Các thành phần cấu thành của một mô phỏng bao gồm:

Thực thể (Entity)

Thực thể là các đối tượng tương tác với các đối tượng khác trong một chương trình

mô phỏng để gây ra những thay đổi về tình trạng của hệ thống Trong ngữ cảnh mạng máy tính, thực thể có thể là các nút mạng, các gói tin các luồng gói tin hoặc các đối tượng phi vật lý chẳng hạn như đồng hồ mô phỏng Để phân biệt các thực thể khác nhau, người ta sử dụng các thuộc tính định danh duy nhất thực thể chẳng hạn như độ dài gói tin, số thứ tự,

độ ưu tiên và phần thông tin điều khiển header

Bộ sinh số ngẫu nhiên

Một mô hình mô phỏng yêu cầu một bộ sinh số ngẫu nhiên (RNG) để tính ra các số

ngẫu nhiên trong hệ thống Các số ngẫu nhiên được sinh ra bằng cách lấy liên tiếp các số

từ một dãy xác định các số ngẫu nhiên giả cho đến khi số được lấy ra từ dãy được xem như là số ngẫu nhiên Trong hầu hết mọi trường hợp, dãy số ngẫu nhiên giả được xác định trước và được sử dụng bởi mọi bộ sinh số ngẫu nhiên

Trong những tình huống yêu cầu nhiều kết quả thống kê, một bộ RNG cần bắt đầu lấy số từ một vị trí khác (hạt giống - seed) trong cùng một dãy số ngẫu nhiên giả Nói cách

Trang 17

- 16 -

khác rất có thể kết quả của mọi lần chạy sẽ là giống nhau Khi triển khai trong thực tế, một

bộ RNG sẽ khởi tạo một hạt giống Một hạt giống sẽ xác định vị trí bắt đầu trong dãy số ngẫu nhiên giả mà trong đó bộ RNG sẽ bắt đầu lấy số Các mô phỏng khác nhau sẽ khởi tạo các giá trị hạt giống khác nhau do đó kết quả sinh ra sẽ khác nhau

Ví dụ trong mô phỏng mạng máy tính, tiến trình một gói tin đến, tiến trình đợi và tiến trình phục vụ thường được mô hình hóa bởi các tiến trình ngẫu nhiên Một tiến trình ngẫu nhiên được biểu diễn bởi một dãy các số ngẫu nhiên Các tiến trình ngẫu nhiên thường được thực hiện với sự trợ giúp của một bộ RNG

Bộ thu thập thống kê

Nhiệm vụ chính của một bộ thu thập thống kê là thu thập dữ liệu sinh ra từ một mô phỏng để suy ra ý nghĩa của dữ liệu thu thập được

Mô phỏng phụ thuộc thời gian

Loại hình mô phỏng chính được sử dụng hiện nay là mô phỏng theo thời gian trong

đó việc xử lý diễn ra theo trình tự thời gian Loại mô phỏng này duy trì một đồng hồ mô phỏng lưu trữ thời gian mô phỏng hiện tại Trong hầu hết mọi trường hợp, bộ mô phỏng sẽ chạy cho đến khi đồng hồ đạt đến một giá trị ngưỡng xác định trước

Mô phỏng theo thời gian có thể được chia thành 2 loại là mô phỏng hướng thời gian (time-driven simulation) và mô phỏng hướng sự kiện (event- drivent simulation) Một bộ mô phỏng hướng thời gian sẽ thực thi sự kiện vào các khoảng thời gian cố định Nói cách khác, nó sẽ hoạt động từ một khoảng thời gian này tới một khoảng thời gian khác và thực thi các sự kiện (nếu có) cho đến khi nó đạt tới một giới hạn nào đó Đối với một bộ mô phỏng hướng sự kiện, các sự kiện có thể diễn ra vào bất kỳ một thời điểm nào

Bộ mô phỏng sẽ di chuyển từ một sự kiện này tới một sự kiện khác và tiếp tục thực thi các

sự kiện (nếu có) cho đến khi quá trinh mô phỏng kết thúc

Điều quan trọng cần chú ý đối với loại mô phỏng theo thời gian là việc mô phỏng phải diễn ra theo trình tự thời gian Chú ý này là rất rõ ràng theo loại mô phỏng hướng thời gian Đối với loại mô phỏng hướng sự kiện, có 2 điểm quan trọng khi triển khai mô phỏng theo thời gian: Thứ nhất, mọi sự kiện mới được lập lịch trong danh sách sự kiện phải được gán một nhãn thời gian có giá trị lớn hơn hoặc bằng với giá trị nhãn thời gian của sự kiện hiện tại Nói cách khác không có sự kiện nào trong quá khứ được lập lịch thực hiện Thứ hai, sự kiện tiếp theo của bộ mô phỏng được thực thi phải là sự kiện có giá trị nhãn thời gian nhỏ nhất trong danh sách các sự kiện Điều này sẽ làm cho bộ mô phỏng phát triển theo hướng trình tự thời gian tiến và không bao giờ quay trở lại một sự kiện có trong quá khứ

1.1.7 Mô phỏng hướng thời gian

Trong các mô phỏng hướng thời gian, nhịp chạy của đồng hồ mô phỏng luôn tiến lên một cách chính xác bởi một đơn vị thời gian A xác định trước Sau mỗi nhịp chạy của đồng hồ, bộ mô phỏng sẽ tìm kiếm các sự kiện có thể diễn ra vào khoảng thời gian cố định

Trang 18

a, b, c đánh dấu thời điểm xảy ra các sự kiện Trong khoảng thời gian thứ nhất, không có

sự kiện nào xảy ra, trong khi khoảng thời gian thứ hai chứa sự kiện a Tuy nhiên sự kiện này chỉ được quản lý khi thời gian hệ thống có giá trị 2, tức là vào cuối khoảng thời gian thứ hai Nhược điểm của loại mô phỏng tiến triển theo thời gian được bộc lộ ra trong khoảng thời gian thứ năm, trong đó sự kiện b và c đều được coi là xảy ra vào thời điểm

5A Điều này dẫn đến thủ tục xác định xem sự kiện nào xảy ra trước để quản lý trước Một trong các giải pháp để giải quyết tình huống này là giảm giá trị khoảng thời gian A xuống

sao cho mỗi một khoảng thời gian chỉ xảy ra nhiều nhất là một sự kiện Tuy nhiên điều này lại tạo ra một gánh nặng tính toán lớn nên hệ thống thực hiện mô phỏng Do đó, loại

mô phỏng hướng thời gian được khuyến cáo không nên sử dụng trong các mô hình hệ thống có các sự kiện xảy ra vào các thời điểm ngẫu nhiên

Ví dụ 1.1 chương trình 1.1 minh họa mã lập trình mô phỏng hướng thời gian dòng

1 và 2 khởi tạo các biến trạng thái hệ thống và đồng hồ mô phỏng Dòng 3 biểu diễn điều

kiện dừng, đó là từ dòng 4 tới dòng 7 sẽ chạy khi đồng hồ mô phỏng (SimClock) nhỏ hơn một ngưỡng xác định trước (StopTime) Các dòng từ 4 đến 7 minh họa việc thu thập dữ

liệu thống kê, thực hiện các sự kiện và tăng giá trị đồng hồ mô phỏng tới thời gian sự kiện hiện tại

1.1.8 Mô phỏng hướng sự kiện

Mô phỏng hướng sự kiện được khởi tạo và chạy bằng tập các sự kiện Thông thường, phải thường xuyên duy trì và cập nhật danh sách chứa mọi sự kiện đã được lập

Trang 19

- 18 -

lịch qua tiến trình mô phỏng Nói theo ngôn ngữ kỹ thuật, vòng lặp chính trong chương trình mô phỏng thực sự phải chạy qua danh sách này và phải quản lý một sự kiện sau một

sự kiện khác cho đến khi danh sách các sự kiện trống hoặc điều kiện dừng được thỏa mãn

Cơ chế quản lý sự kiện được minh họa trong hình 1.3 Trong đó, sự kiện a, b và c được thực thi theo thứ tự Khoảng thời gian giữa 2 sự kiện là không cố định Bộ mô phỏng tiến triển từ một sự kiện này tới một sự kiện khác thay vì từ một khoảng thời gian này tới một khoảng thời gian khác như trong mô phỏng hướng thời gian Ngoại trừ cơ chế tiến triển của bộ mô phỏng, cơ chế mô phỏng hướng sự kiện tương đối giống với cơ chế mô phỏng hướng thời gian

Tới sự kiện

Hình 1.3 Bước nhảy thời gian trong mô phỏng hướng sự kiện Trong một mô phỏng hướng sự kiện, mọi sự kiện trong toàn bộ mô phỏng có thể không được tạo ra tại thời điểm ban đầu Khi bộ mô phỏng tiến triển, một sự kiện cỏ thể sinh ra một hoặc nhiều sự kiện khác Một sự kiện mới thường được chèn vào danh sách các sự kiện sắp xếp theo trình tự thời gian Mô phỏng tiến triển theo sự kiện sẽ bỏ qua các khoảng thời gian không hoạt động bằng cách tăng giá trị đồng hồ mô phỏng từ thời gian của sự kiện này tới thời gian của sự kiện khác Tiến trình này sẽ lặp lại cho đến khi mọi sự kiện trong danh sách đều đã được thực hiện hoặc khi hệ thống đạt được một trạng thái nào

đó (chẳng hạn như thời gian mô phỏng đạt tới một giá tri xác định trước) Theo cách này, người ta cần một cơ chế để thu thập một vài thông tin thống kê hoặc thông tin trạng thái của hệ thống nhằm phục vụ cho việc phân tích Tiến trình thu thập thông tin có thể thực hiện bằng cách thu thập ngay sau khi mọi sự kiện được thực hiện hoặc sử dụng một thực thể đặc biệt để thu thập các thông tin trong quá trình mô phỏng diễn ra

Ví dụ 1.2 Chương trình 1.2 minh họa khung công việc thông thường của một chương trình mô phỏng tiến triển theo sự kiện Dòng 1 và 2 khởi tạo các biến trạng thái của hệ thống và danh sách các sự kiện Dòng 3 xác định điều kiện dừng Từ dòng 4 tới dòng 6 sẽ được thực hiện khi dòng 3 có giá trị TRUE Ở đây, sự kiện được thực hiện trước

đó sẽ bị xóa khỏi danh sách các sự kiện, đồng hồ mô phỏng được thiết lập giá trị của thời gian được lập lịch trước của sự kiện hiện tại và sự kiện hiện tại được thực hiện Trong một vòng lặp, các biến trạng thái hệ thống có thể được điều chỉnh để lưu trữ những sự thay đổi xảy ra trong hệ thống tùy theo sự kiện đã được thực hiện

Trang 20

- 19 -

Ví dụ về mô phỏng mạng máy tính

Phần này minh họa mô phỏng của một hệ thống hàng đợi đơn kênh Xét một liên kết truyền thông điểm - điểm qua đường truyền vật lý có dây được biểu diễn trong hình 1.4 Để đơn giản, ta chỉ xét 1 chiều truyền thông từ nút A tới nút B Đặc biệt, ta quan tâm đến một hệ thống hàng đợi gửi gói tin nội bộ tại nút A, tại đó mỗi thời điểm từng gói tin được lấy ra từ hàng đợi và truyền đi (hoặc phục vụ) Thời gian truyền phụ thuộc vào băng thông hoặc khả năng đáp ứng của liên kết

Hình 1.4 Minh họa về hệ thống hàng đợi đơn kênh Giả sử, các gói tin do các ứng dụng khác nhau bên trong nút A sinh ra một cách ngẫu nhiên và không giới hạn đi tới hàng đợi theo một số phân bố xác suất Khi đó, mỗi gói tin có thể có độ dài bất kỳ và các điều kiện của kênh truyền có thể biến đổi làm cho thời gian truyền mỗi gói tin có thể thay đổi một cách ngẫu nhiên và tuân theo một số phân

bố xác suất Trong trường hợp này, thời gian truyền mỗi gói tin được định nghĩa là khoảng thời gian trôi qua từ thời điểm bắt đầu truyền gói tin đi tới thời điểm nút B nhận thành công gói tin

Nguyên lý hàng đợi triển khai tại nút A là FIFO, nghĩa là các gói tin được đưa vào hàng đợi và được truyền đi theo thứ tự đến Để đơn giản, cơ chế hàng đợi tại nút B được

bỏ qua Thêm vào đó, để đảm bảo tính ổn định của hệ thống, ta giả định rằng tốc độ gói tin

Trang 21

- 20 -

đi tới hàng đợi nhỏ hơn tốc độ truyền gói tin và không có rằng buộc khi xây dựng hàng đợi

Các thực thể

Mô phỏng này bao gồm các thực thể chính sau:

 Kênh truyền: có 2 thuộc tính rỗi và bận

 Gói tin: có 2 thuộc tính là thời gian đi tới hàng đợi và thời gian truyền

 Hàng đợi: có 2 thuộc tính trống và không trống

 Tài nguyên

Trong ví dụ này, chỉ có duy nhất một tài nguyên là thời gian truyền trong kênh truyền

Các biến trạng thái hệ thống và các sự kiện

 Đối với biến trạng thái hệ thống: có 2 biến là:

 num_system: là số lượng gói tin trong hệ thống bao gồm cả gói tin đang được phục vụ và các gói tin trong hàng đợi

 channel_free: là trạng thái của kênh (phục vụ) với 2 trạng thái là rỗi và bận

 Đối với sự kiện: có 2 sự kiện là:

 pkt_arrival: tương ứng với sự kiện một gói tin do ứng dụng sinh ra cần truyền đi Sự kiện này xảy ra khi một gói tin đi tới hàng đợi Như hình vẽ 1.5 minh họa, khi một gói tin sinh ra, nó có thể đi trực tiếp vào môi trường truyền hoặc được đưa vào trong hàng đợi phụ thuộc vào trạng thái của kênh truyền là rỗi hay bận

Hình 1.5 Sự kiện gói tin đến

- pkt_complete: tương ứng với sự kiện truyền thành công một gói tin Sự kiện này

chỉ ra rằng nút B đã nhận thành công một gói tin Tại thời điểm hoàn thành, nút A sẽ bắt đầu truyền (phục vụ) một gói tin khác đang đợi trong hàng đợi của mình Nếu không còn gói tin nào nữa được gửi đi, kênh truyền sẽ chuyển vào trạng thái rỗi Tiến trình này được minh họa trong Hình 1.6

Trang 22

và cập nhật lại đồng hồ mô phỏng trên cơ sở thời gian thực hiện sự kiện

Các độ đo hiệu trong mô phỏng

Trong ví dụ này, ta xét tới 3 độ đo hiệu năng sau:

 Thời gian đợi trung bình: là thời gian trung bình lưu giữ một gói tin trong

hàng đợi Trong mô phỏng, ta định nghĩa một biến public lưu tổng thời gian của tất cả các gói tin trong hàng đợi đã được truyền đi Sau khi kết thúc mô phỏng, ta lấy giá trị này chia cho tổng số gói tin đã được truyền đi sẽ được giá trị trung bình thời gian đợi

 Độ trễ trung bình khi truyền gói tin: Là thời gian trung bình để truyền thành

công một gói tin (từ thời điểm gửi gói tin gửi đi tới thờỉ điểm gói tin đến đích) Giá trị này được tính bằng cách lấy tổng thời gian truyền thành công các gỏi tin chia cho tổng số gói tin đã được truyền

 Độ khai thác kênh truyền trung bình: là phần trăm thời gian khi kênh truyền

ở trạng thái bận Trong khi mô phỏng ta ghi lại tổng thời gian kênh truyền ở trạng thái bận, sau đó ta chia thời gian này cho tổng thời gian mô phỏng sẽ được kết quả là mức độ khai thác kênh trung bình

Cần chú ý rằng mọi độ đo ở trên đều là các giá tri trung bình theo thời gian, điều này chỉ ra rằng nếu thời gian mô phỏng càng dài thì các thông số thống kê này càng chính xác

Chương trình 1.3 minh họa khung của một chương trình mô phỏng có thể được sử dụng để triển khai hệ thống hàng đợi đơn kênh đã mô tả ở trên

Chương trình bắt đầu bằng việc khởi tạo các biến trạng thái hệ thống Ta khai báo 2 biến là num_queue (dòng 3) và num_system (dòng 4) để lưu trữ số lượng các gói tin đang đợi và số lượng tất cả các gói tin hiện có trong hệ thống (trong cả hàng đợi và kênh truyền) Biến SimClock được khởi tạo với giá trị 0 Tiếp theo, dòng 7 thực hiện việc tạo một danh sách sự kiện bằng cách gọi tiến trình create_list() Ta giả định rằng hàm này tự động sinh ra các gói tin và liên kết mỗi gói tin với thời gian gói tin đi tới hàng đợi và thời

Trang 23

- 22 -

gian gói tin đi từ hàng đợi vào kênh truyền Tiếp theo ta giả định rằng event_list ở đây được xây dựng bằng cách sử dụng một vài cấu trúc dữ liệu thích hợp biểu diễn loại sự kiện (đi tới hoặc hoàn thành) và được liên kết với nhãn thời gian (thời gian đi tới và thời gian phục vụ) Khởi đầu, chỉ có các sự kiện gói tin đi tới được đưa vào trong event_list Trong vòng lặp chính, mỗi lần lặp sẽ kiểm tra xem điều kiện kết thúc mô phỏng có thỏa mãn hay không Điều kiện dừng trong dòng 9 là danh sách sự kiện ở trạng thái rỗng hoặc đồng hồ mô phỏng đạt tới ngưỡng được định nghĩa trước Nếu điều kiện này không thỏa mãn, từ dòng 10 đến dòng 12 sẽ thực thi sự kiện tiếp theo bằng cách gọi thủ tục pkt_arrỉval() (dòng 15 đến 25) hoặc thủ tục pkt_complete() (dòng 26 đến 35)

Trang 24

- 23 -

Khi một gói tin đi tới, thủ tục pkt_arrival() (dòng 15-25) sẽ kiểm tra xem kênh

truyền có ở trạng thái rỗi hay không Nếu kênh truyền rỗi, kênh truyền đƣợc thiết lập ở trạng thái bận và sự kiện truyền gói tin thành công đƣợc đƣa vào danh sách sự kiện

event_list Nhãn thời gian đƣợc gán với sự kiện này có giá trị bằng với thời gian đồng hồ hiện tại (SimClock) cộng với thời gian truyền gói tin trên kênh truyền (T) đƣợc sinh một

cách ngẫu nhiên Ngƣợc lại, nếu kênh truyền bận, gói tin đƣợc đƣa vào trong hàng đợi và

bộ đếm số gói tin trong hàng đợi num_queue đƣợc tăng lên 1 đơn vị Số lƣợng gói tin trong hệ thống đƣợc cập nhật

Khi SimClock tiến đến sự kiện truyền một gói tin thành công, thủ tục pkt_complete đƣợc thực hiện (dòng 26 đến 35) Ở đây, số lƣợng gói tin trong hệ thống (num_system) đƣợc cập nhật Bộ đếm num_queue đƣợc giảm đi 1 đơn vị Sau mỗi lần

truyền thành công một gói tin, cần thiết phải kiểm tra xem hàng đợi có rỗng hay không Nếu không gói tin ở đầu hàng đợi sẽ đƣợc phục vụ ở lần kế tiếp Điều này đƣợc thực hiện bằng cách đƣa gói tin vào kênh truyền và lập lịch cho nó sẽ truyền thành công tại thời

điểm SỉmClock + T Tuy nhiên, nếu hàng đợi rỗng, kênh truyền đƣợc thiết lập ở trạng thái

rỗi và số lƣợng gói tin trong hàng đợi và hệ thống đƣợc thiết lập là 0

Thời gian sinh ra gói tin trong hệ thống và thời gian truyền gói tin đƣợc giả định là tuân theo các hàm xác suất số lớn có giá trị trong Bảng 1.1

Bảng 1.1 Xác suất sinh gói tin và thời gian truyền gói tin Đơn vị

Trang 25

- 24 -

Bảng 1.2 Mô phỏng hệ thống hàng đợi đơn kênh

Gói Thời gian

sinh ra

Thời gian truyền

Thời gian đến hàng đợi

Thời gian bắt đầu truyền

Thời gian trong hàng đợi

Thời gian trễ

Bảng 1.3 Trình tự các sự kiện của gói tin theo thời gian mô phỏng

Trên cơ sở kết quả trong Bảng 1.2, ta tính toán thời gian đợi trung bình và thời gian trễ trung bình bằng cách tính trung bình giá trị các cột 6 và cột 7 Kết quả của thời gian

đợi trung bình trong hàng đợi là 1,0 và thời gian trễ trung bình là 3,5

Trang 26

Hình 1 7 Số lƣợng gỏi tin theo thời gian trong hệ thống

Trang 27

- 26 -

CHƯƠNG 2 GIỚI THIỆU VỀ NS2

2.1 Giới thiệu

Network Simulator (phiên bản 2) hầu như được gọi với tên gọi NS2 là một công cụ

mô phỏng hướng sự kiện được xây dựng để sử dụng trong nghiên cứu về lĩnh vực mạng

và truyền thông NS2 có thể mô phỏng các chức năng và các giao thức của cả mạng có dây cũng như mạng không dây chẳng hạn như các thuật toán định tuyến, giao thức TCP, giao thức UDP, Nói chung, NS2 cung cấp cho người dùng cách thức đặc tả các giao thức mạng và mô phỏng hoạt động của chúng

Do tính chất linh hoạt và mô đun hóa tự nhiên, NS2 đã được sử dụng rộng rãi trong cộng đồng những nhà nghiên cứu về lĩnh vực mạng truyền thông kể từ khi được sinh ra vào năm 1989 Kể từ khi ra đời cho đến nay, NS2 đã phát triển và biến đổi mạnh mẽ đánh dấu sự lớn mạnh và trưởng thành của công cụ này với sự đóng góp của rất nhiều tổ chức

và cá nhân trong lĩnh vực nghiên cứu về mạng và truyền thông Trong số đó phải kể đến trường đại học California và trường đại học Comell đã phát triển công cụ mô phỏng mạng

có tên là REAL là nền móng cơ sở để xây dựng NS Vào năm 1995, Cục nghiên cứu các

dự án quốc phòng cao cấp của Mỹ (DARPA) hỗ trợ phát triển NS qua dự án VINT Hiện nay, Quỹ khoa học quốc gia của Mỹ đã phối hợp tài trợ để phát triển NS Cuối cùng, một

số lượng không nhỏ những nhà nghiên cứu và nhà phát triển trên toàn thế giới đang làm việc không ngừng để góp phần làm cho NS2 ngày càng mạnh mẽ và linh hoạt hơn

Mục tiêu chính của giáo trình này là cung cấp cho độc giả một cái nhìn sâu sắc vào kiến trúc bên trong của NS2 Chương này đưa ra các mô tả ngắn gọn về NS2 Những người mới bắt đầu học về NS2 nên sử dụng triệt để các tài nguyên trực tuyến về NS2 Ví

dụ, website chính thức của NS2 (http://www.isi.edu/nam/ns) cung cấp nhiều mã nguồn cũng như hướng dẫn cài đặt cho NS2 Các trang web:http://wwwisi.edu/nsnam/ns/tutorial/

và http://nile.wpi.edu/Ns/ là một trong các địa chỉ bạn đọc nên tham khảo Tại đây bạn đọc

có thể tìm thấy các các hướng dẫn và các ví dụ chi tiết khi thiết lập NS2 ở mức độ cơ bản Khi bạn cần cần danh sách mã nguồn đầy đủ của NS2 do các nhà nghiên cứu cung cấp, bạn có thể truy cập và tải về từ ụa chỉ website: http://nsnam.isi.edu/nsnam/index.php/Con

- tributed Code

Nội dung của chương này chủ yếu là các kiến thức giới thiệu tồng quan về NS2 Cụ thể là, mục 2.2 trình bày về kiến trúc cơ bản của NS2 Mục 2.3 cung cấp thông tin phục vụ quá trình cài đặt NS2 Mục 2.4 đưa ra các thư mục và các quy ước của NS2 Mục 2.5 trình bày các bước chính trong quá trình mô phỏng bằng NS2 Các ví dụ mô phỏng đơn giản được đưa ra trong mục 2.6 Mục 2.7 mô tả cách tích.hợp các module C++ vào NS2 và cuối cùng, mục 2.8 tổng kết lại các vấn đề của chương

Trang 28

- 27 -

2.2 Kiến trúc cơ bản

Hình 2.1 cho ta thấy kiến trúc cơ bản của NS2 Người dùng sẽ sử dụng lệnh ns cùng với tham số đi kèm là tên file script mô phỏng Thông thường sau khi chạy mô phỏng, người dùng sẽ sử dụng file trace được tạo ra để vẽ đồ thị hoặc tạo mô phỏng trực quan

Hình 2.1 Kiến trúc cơ bản của NS2 Hai ngôn ngữ chính trong NS2 là C++ và OTcl (Object-Oriented Tool Command Language) Trong khi C++ tạo ra các mô tả bên trong cho các đối tượng mô phỏng thì OTcl thiết lập mô phỏng bằng cách liên kết và cấu hình các đối tượng cũng như lập lịch cho các sự kiện rời rạc C++ và OTcl được liên kết với nhau bằng Tclcl Một biến trong OTcl ánh xạ vào một đối tượng được gọi là một tham chiếu, về bản chất, một tham chiếu

là một biến chuỗi trong miền OTcl và nó không chứa bất kỳ một hàm nào Các hàm này được định nghĩa trong đối tượng C++ được nó ánh xạ tới Trong miền OTcl, một tham chiếu hoạt động như một điểm truy cập để tương tác với người dùng và các đối tượng OTcl khác Thủ tục và biến có thể được định nghĩa trong một tham chiếu để thực hiện các tương tác Chú ý rằng trong một lớp miền OTcl, thủ tục thành viên được gọi là thủ tục instproc và biến thành viên được gọi là biến instvar

NS2 cung cấp một số lượng lớn các đối tượng C++ đã được xây dựng sẵn Ta nên

sử dụng các đối tượng C++ này trong khi thiết lập trình mô phỏng bằng cách sử dụng mã lệnh Tcl (script) Tuy nhiên, những người dùng cấp cao có thể thấy các đối tượng C++ này chưa phù hợp với nhu cầu của họ Trong tình huống này họ cần phải phát triển các đối tượng C++ của chính mình và sử dụng giao tiếp cấu hình OTcl để đưa các đối tượng này vào sử dụng

Sau khi thực hiện một mô phỏng, NS2 kết xuất kết quả dưới dạng text hoặc mô phỏng trực quan Để dịch và biểu diễn kết quả mô phỏng trực quan, người ta sử dụng 2 công cụ là NAM (Network AniMator) và Xgraph Một phần kết quả dạng text có thể được trích ra nhằm phục vụ cho các phân tích sâu hơn về kết quả mô phỏng

Trang 29

- 28 -

2.3 Cài đặt

NS2 là một công cụ mô phỏng miễn phí Có thể tải về NS2 từ địa chỉ chính thống là:http://nsnam.isi.edu/nsnam/index.php/ Nó có thể chạy được trên nhiều nền hệ điều hành khác nhau bao gồm UNIX (hoặc Linux), Windows và Mac Vì NS2 được phát triển trên môi trường Unix cho nên dễ dàng cài đặt NS2 nhất trên môi trường này Để cài đặt NS2 trên môi trường Windows, cần phải sử dụng một công cụ mô phỏng Unix trên Windows có tên gọi là Cygwin

Mã nguồn NS2 được đưa ra ở 2 dạng Thứ nhất là theo gói cài đặt tích hợp Thứ hai

là theo gói cài đặt từng thành phần Với gói cài đặt tích hợp, người dùng sẽ có mọi thành phần cần thiết cùng với một vài thành phần tùy chọn của NS2 Những người mới bắt đầu

sử dụng NS2 nên lựa chọn gói này Khi đó, họ có thể sử dụng lệnh ―install‖ để cấu hình môi trường NS2 và lệnh ―make‖ để tạo file NS2 có thể thực thi được

Gói NS2 tích hợp bao gồm các thành phần chính sau:

 NS release 2.30

 Tcl/Tk release 8.4.13

 OTcl release 1.12

 TclCLrelease 1.18

Ngoài ra nó còn bao gồm các thành phần tùy chọn sau:

 NAM release 1.12: Công cụ hiển thị kết quả mô phỏng trực quan

 Zlib version 1.2.3: Thư viện cần thiết cho NAM

 Xgraph version 12.T Công cụ vẽ dữ liệu mô phỏng với các nút tương tác như di chuyển, phóng to/thu nhỏ, in ấn,

Cách cài đặt NS2 theo dạng cài đặt từng thành phần là cách cho phép cài đặt riêng

rẽ từng thành phần NS2 đã liệt kê ở trên theo nhu cầu của từng người sử dụng Cách làm này giúp tiết kiệm lượng dữ liệu phải download và không gian lưu trữ Tuy nhiên, cách làm này là tương đối phức tạp đối với những người dùng mới bắt đầu do đó chỉ những

người dùng có kinh nghiệm mới nên sử dụng cách cài đặt này

2.3.1 Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống nền Unix

Trên các hệ điều hành Unix hoặc nền Unix, việc cài đặt NS2 rất đơn giản bằng việc chạy lệnh install và theo các chỉ dẫn cài đặt sau đó Yêu cầu duy nhất là máy tính phải có trình biên dịch C ++ các lệnh sau là các lệnh cài đặt và kiểm tra NS2 theo bộ cài đặt tích hợp:

shell>./install

shell>./validate

Trang 30

- 29 -

Tiến trình kiểm tra NS2 được thực hiện một cách đơn giản bằng cách chạy một số lượng các lệnh làm việc để kiểm tra các chức năng cơ bản của các thảnh phần đã được cài đặt

2.3.2 Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống Windows

Để chạy NS2 trên các hệ điều hành Windows, cần phải đi đường vòng một chút Tư tưởng cơ bản của phương pháp nảy là tạo ra một chương trinh mô phỏng các chức năng giống như trong môi trường Unix trên các máy tính chạy hệ điều hành Windows Một trong những chương trình mô phỏng rất phổ biến là Cygwin Sau khi đã cài đặt đảm bảo Cygwin có thể làm việc được thì cách cài đặt NS2 diễn ra giống như khi cài trên các hệ thống nền Unix Mô tả chi tiết về việc cài đặt NS2 trên hệ điều hành Windows có trên website NS2‘s Wiki (http://nsnam.isi.edu/nsnam/index.php) trong đó có thể tìm thấy cả những thông tin về các biện pháp giải quyết khi việc cài đặt gặp lỗi

Chú ý rằng Cygwin không cài đặt mọi gói cần thiết để chạy NS2 Người dùng, cần cài thêm các gói được liệt kê trong Bảng 2.1 sau:

Bảng 2.1 Các gói Cygwin bổ sung cần thiết để chạy NS2

2.4 Thư mục và quy ước

2.4.1 Thư mục

Giả sử NS2 được cài đặt trong thư mục có tên là nsallinone – 2.30 Hình 2.2 đưa ra cấu trúc thư mục nằm phía trong thư mục nsallinone – 2.30 Trong cây thư mục nsallinone – 2.30 là thư mục 1 Ở mức 2 có thư mục Tclcl-1.18 là thư mục chứa các lớp trong TclCL (VD: lớp Tcl, TclObject, Tcl Class)

Mọi module mô phỏng của NS2 đều nằm trong thư mục ns-2.30 ở mục 2 Từ đây trở về sau ta sẽ quy ước viết thư mục ns2-2.30 là ~ ns/ là thư mục tclcl-1.18 là ~tclcl/

Trang 31

- 30 -

Hình 2.2: cấu trúc thư mục của NS2

Ở mức 3, các module trong cây phân lớp thông dịch đều nằm trong thực mục tcl Trong số các module này, những module được sử dụng thường xuyên nhất đều được lưu trong thư mục lib ở mức 4 Các module mô phỏng trong cây biến dịch được phân bố trong các thư mục ở mức 2 Ví dụ thư mục tools chứa các lớp sinh số ngẫu nhiên Thư mục common chứa các module cơ bản liên quan tới quá trình chuyển tiếp gói tin như simulator, scheduler, connector, lacket, Các thư mục queue, tcp, trace chứa các module

mô phỏng tương ứng với hàng đợi, giao thức TCP và tệp vết

2.4.2 Các quy ước

Trong cuốn sách này và trong NS2 sử dụng một số thuật ngữ và định dạng như sau:

Các thuật ngữ

 Mã lệnh mô phỏng của NS2 được gọi là mã lệnh mô phỏng Tcl

 Cây phân cấp lớp C++ được gọi là cây biên dịch (compiled hierachy) Cây phân cấp lớp OTcl được gọi là cây thông dịch (interpreted hierachy)

Biến và hàm thành viên thuộc một lớp biên dịch được gọi là biến và hàm Biến thành viên và hàm thành viên thuộc một lớp thông dịch được gọi là biến instvar và thủ tục instproc Ta sẽ thấy trong mục 3.4.4, command là một thủ tục instproc đặc biệt được thực thi trong cây biên dịch Do đó mọi đối tượng OTcl sẽ liên quan tới các biến instvar và các thủ tục instprc trong khi một đối tượng C++ sẽ liên quan tới các biến và các hàm

 Mặc dù có đôi chút khác biệt nhưng thuật ngữ ―OTcl‖ và ―thông dịch được sử dụng thay thế cho nhau trong suốt cuốn sách này Tương tự như vậy đối với thuật ngữ

―C++‖ và ―Biên dịch‖ Các biến OTcl và các biến thông dịch đều được coi là các biến trong cây thông dịch, các hàm C++ và các hàm biên dịch đều được coi là các hàm trong cây biên dịch Trình biên dịch C++ được gọi là trình biên dịch và trình thông dịch OTcl được gọi là trình thông dịch

 Đối tượng ―LopMoPhong‖ là cách gọi tắt của một đối tượng của lớp

―LopMoPhong‖ Con trỏ ―LopMoPhong‖ là cách gọi tắt của một con trỏ tham chiếu đến một đối tượng của lớp ―LopMoPhong‖ Ví dụ như trong các câu lệnh ―Queue* q‖ và

Trang 32

―LopCha‖ (chẳng hạn nhƣ các đối tƣợng của các lớp ―LopConl‖ hoặc ―LopCon2‖)

 Đối tƣợng đƣợc khởi tạo từ lớp C++ hoặc lớp OTcl đều đƣợc gọi là đối tƣợng trong cuốn sách này

 NS2 gồm 2 ngôn ngữ Giả sử rằng ―A‖ và ―B‖ là 2 đối tƣợng đƣợc viết trên 2 ngôn ngữ tƣong ứng với nhau Khi đó ―A‖ dƣợc gọi là đối tƣợng bóng (shadow object) của

―B‖ và ―B‖ lại đƣợc gọi là đối tƣợng bóng của ―A‖

 Xét hai nút trong Hình 3.2 Trong sơ đồ này, nút bên phải luôn luôn gửi các gói tin cho nút bên trái Các nút bên phải đƣợc gọi là các nút gửi dữ liệu (upstream objects) và các nút bên trái đƣợc gọi là các nút nhận dữ liệu (downstream objects) hay các nút đích (target objects) Thông thƣòng, một đối tƣợng có thể có một hoặc nhiều đích tuy nhiên mỗi gói tin chỉ đƣợc gửi tới một đích cụ thể trong số các đích này Trên gói của đối tƣợng gửi, một đối tƣợng nhận có thể đƣợc xem là một đối tƣợng chuyển tiếp gói tin (forwarding object)

 Dấu nhắc lệnh trong NS2 bắt đầu bằng dấu ―»‖ -

 Trong cuốn sách này, mã lệnh minh hoạ đƣợc trích từ các file NS2 Tên file chứa mã lệnh có trong dòng đầu tiên của đoạn mã lệnh minh hoạ

 Tên lớp có thể bao gồm nhiều từ Chữ cái đầu tiên của mỗi từ đƣợc viết hoa Trong cây các lớp thông dịch, một lớp thừa kế đƣợc viết với phần tiền tố là tên của các lớp cha và đƣợc ngăn cách bởi dấu ‗V‘ Đối với một lớp thuộc cây các lớp biên dịch, tên lớp đƣợc viết với phần hậu tố là tên các lớp cha viết liền kề Bảng 2.2 minh hoạ các ví dụ về quy ƣớc đặt tên trong NS2

Trang 33

- 32 -

Bảng 2.2 Ví dụ về các quy ước đặt tên trong NS2

Thành phần Cây thông dịch Cây biên dịch

Lớp thừa kế (mức 2) Agent/Tcp/Reno RenoTcpAgent Hàm thuộc lớp installNext install_next Biến thuộc lớp windowOption_ wnd_option_

2.5 Chạy mô phỏng NS2

 Triệu gọi chương trình NS2

Sau khi đã cài đặt và/hoặc biên dịch lại NS2 (xem mục 2.7), file thực thi ns2 được tạo ra trong thư mục gốc NS2 Để gọi ns2 chạy, ta sử dụng cú pháp lệnh sau từ môi trường Shell:

>>ns [< file >] [< args >]

ở đây < file > và < args > là các tham số tuỳ chọn Nếu ta chạy lệnh này mà không

có tham số, lệnh này sẽ khởi tạo môi trường NS2 mà trong đó NS2 sẽ đợi người dùng nhập lệnh từ bàn phím để chạy trực tiếp từng dòng lệnh một Nếu tham số đầu tiên < file > được chỉ định, NS2 sẽ thông dịch file script đầu vào < file > theo cú pháp Tcl Các tham

số < args > nếu có số lượng nhiều hơn 1 được phân tách nhau bằng dấu cách được đưa vào file Tcl < file > Trong file này, tham số đầu vào được lưu trữ trong biến xây dựng bên trong agrv

Bước 2: Cấu hình và chạy mô phỏng

Bước này sẽ triển khai phần thiết kế trong bước 1 Bước này gồm hai giai đoạn chính:

 Giai đoạn cấu hình mạng: Trong giai đoạn này, các thành phần mạng (chẳng hạn như node, TCP, UDP, ) được tạo ra và cấu hỉnh theo thiết kế mô phỏng Các

sự kiện truyền dữ liệu cũng được lập lịch về thời gian bắl đầu diễn ra

Trang 34

- 33 -

 Giai đoạn mô phỏng: Giai đoạn này khởi động tiến trình mô phỏng đã được cấu hình trong pha cấu hình mạng Giai đoạn này sẽ phải duy trì một bộ đồng hồ mô phỏng và thực hiện các sự kiện theo trình tự thời gian Giai đoạn này thường kết thúc khi đồng hồ mô phỏng đạt tới một ngưỡng giá trị thời gian xác định trước trong giai đoạn cấu hình mạng

Trong hầu hết mọi trường hợp, nên định nghĩa kịch bản mô phỏng trong file script Tcl và đưa file này vào làm tham số đầu vào cho lời triệu gọi chạy ns2

Bước 3: Xử lý kết quả mô phỏng

Các tác vụ chính trong bước này là việc kiểm tra độ toàn vẹn của chương trình và đánh giá hiệu năng mô phỏng Trong khi tác vụ đầu tiên thường là tác vụ gỡ rối thì tác vụ thứ hai thường thực hiện việc thu thập các kết quả một cách chính xác và so sánh các kết quả thu thập được

n0 tới n3 sử dụng giao thức UDP và luồng dữ liệu từ nl tới n4 sử dụng giao thức TCP Trong NS2, đối tượng truyền của hai giao thức này là UDP agent và TCP agent trong khi các đối tượng nhận tương ứng là Null agent và TCP sink agent

Hình 2.3 Mô hình mạng mô phỏng

Trang 35

- 34 -

Bước 2: Cấu hình và chạy mô phỏng

Chương trình 2.1-2.2 đưa ra hai phần của mã lệnh mô phỏng Tcl thực hiện mô hình bài toán ví dụ mô phỏng trong Hình 2.3

Xét Chương trình 2.1 Chương trình này tạo ra một đối tượng mô phỏng Simulator trong dòng 1 Tiếp theo nó tạo ra một file vết trace trong các dòng 2-3 và một file vết mô

phỏng trực quan NAM trong các dòng 4-5 Nó định nghĩa thủ tục KetThuc () trong các

dòng 6-13 Cuối cùng, nó tạo ra các nút và liên kết chúng với nhau tương ứng trong các dòng 14-18 và 19-24

Lệnh ―new Simulator‖ trong dòng 1 tạo ra đối tượng Simulator Biến ns chứa tham chiếu của đối tượng Simulator được tạo ra Các dòng 2 và 4 mở các file out.tr và out.nam

để ghi Các biến FileLuuVet và flie Nam là các tham chiếu của 2 file tương ứng Các dòng

3 và 5 dùng để thiết lập chế độ lưu vết thông thường và lưu vết mô phỏng đồ họa vào các tham chiếu của các file tương ứng đã tạo ra

Thủ tục KetThuc [] được gọi trước khi hoạt động mô phỏng kết thúc Từ khoá

―global‖ báo cho trình biên dịch Tcl biết rằng các biến ns, tệp Trace và tệp NAM được

định nghĩa là các biến public Dòng 8 đẩy dữ liệu trong bộ đệm lưu vết các gói tin vào các

biến tương ứng Dòng 9-10 đóng các file có tham chiếu là tệp Trace và tệp NAM Dòng

11 thực thi lệnh ―nam out.nam” từ môi trượng Shell và dòng 12 thực thi lệnh thoát NS2

với mã trả về là 0

# Tao mot simulator

set ns [new Simulator]

# Mo trace file

set f [open cai.tr w]

$ns trace-all $f

# Mo nam trace file

set nf [open cai.nam w]

Trang 36

- 35 -

# Execute nam on the trace file

exec nam cai.nam &

# Xac dinh cach bo tri cua cau truc lien ket

$ns duplex-link-op $n0 $n3 orient down

$ns duplex-link-op $n1 $n3 orient right

$ns duplex-link-op $n2 $n3 orient up

$ns duplex-link-op $n3 $n4 orient right

$ns duplex-link-op $n4 $n5 orient up

Trang 37

- 36 -

$ns duplex-link-op $n4 $n6 orient right

$ns duplex-link-op $n4 $n7 orient down

Dòng 14-18 tạo ra các đối tượng nút mạng bằng cách sử dụng thủ tục ―node‖ của đối tượng Simulator với tham chiếu là ns Các dòng 19-23 sử dụng thủ tục ―duplex-link (src dst bw delay qtype} của lớp Simulator để kết nối mỗi cặp nút bằng liên kết hai chiều với src là nút bắt đầu, dst là nút kết thúc, bw là băng thông của liên kết, delay là độ trễ của liên kết và qtype là kiểu của hàng đợi giữa nút src và nút dst Tương tự như thủ tục duplex-link {…}, dòng 23 tạo một liên kết một chiều bằng cách sử dụng thủ tục sỉmplex- link {…} của lớp Simulator Cuối cùng, dòng 24 thiết lập kích cỡ hàng đợi giữa nút n2 và nút n3 là 40 gói tin

Tiếp theo, ta hãy xem xét phần hai của mã lệnh mô phỏng Tcl trong Chương trình 2.2

Trang 38

- 37 -

Các dòng 25-30 tạo kết nối UDP, dòng 31-34 tạo nguồn lưu lượng phát gói tin CBR, dòng 35-40 tạo kết nối TCP và 41-42 tạo phiên FTP Các dòng từ 43- 47 lập lịch cho các sự kiện rời rạc Cuối cùng trình mô phỏng được khởi động bằng các sử dụng thủ tục run{} được liên kết với tham chiếu ns của chương trình mô phỏng

Để tạo một kết nối UDP, dòng 25 tạo ra tác tử gửi kiểu udp và dòng 27 tạo ra tác tử

nhận kiểu null Dòng 26 là thủ tục attach-agentl } của lớp Simulator với 2 tham số đầu vào là một nút và một tác tử Nó thực hiện nhiệm vụ gắn kết tác tử udp và nút n0 Tương

tự như vậy, dòng 28 thực hiện việc gắn kết tác tử null với nút n3 Thủ tục connect{from_agt to_agt} trong dòng 29 thiết iập kết nối để tác tử from_agt sẽ truyền

dữ liệu được sinh ra tới tác tử to_agt Và cuối cùng, dòng 30 thiết lập định danh dòng UDP là 1 Từ dòng 35 tới 40 là phần thiết lập kết nối TCP tương tự như phần thiết lập kết

nối UDP (từ dòng 25 tới 30) đã được giải thích

Dòng 31 tạo ra một nguồn lưu lượng dữ liệu CBR Nó được gắn vào tác tử udp trong dòng 32 Kích thước gói tin và tốc độ truyền của kết nối CBR được thiết lập là 1000 byte và 2 Mpbs Tương tự như vậy, dòng 41 tạo ra một phiên FTP và gắn nó vào tác tử tcp trong dòng 42

Trong NS2, các sự kiện rời rạc được lập lịch bằng cách sử dụng thủ tục at của lớp Simulator Thủ tục này có 2 tham số đầu vào là giá trị thời điểm thực thi và chuỗi chứa

lệnh sẽ được thực thi tại thời điểm đó Dòng 43 và 44 thực thi phiên ứng dụng FTP tại thời điểm giây thứ 0,05 và thực thi truyền lưu lượng CBR tại giây thứ 0,1 Dòng thứ 45 và 46 kết thúc truyền lưu lượng FTP và CBR tương ứng tại giây thứ 60 và 60,5 Dòng 47 kết

thúc chương trình mô phỏng bằng cách gọi thủ tục KetThuc tại giây 61 Chú ý rằng các nguồn lưu lượng FTP và CBR được khởi động bằng lệnh start và dừng bằng lệnh stop{}

Ta thực hiện chạy đoạn mã mô phỏng trên bằng cách thực hiện lệnh »ns chuongtrinh.tcl trong môi trường Shell Khi các file lưu vết (trace) được tạo ra vào cuối thời gian mô phỏng, chương trình mô phỏng trực quan NAM sẽ được thực thi (từ thủ tục KetThuc () )

Bước 3: Xử lý sau mô phỏng - Phân tích vết gói tin

Việc lưu vết gói tin sẽ ghi lại các thông tín chi tiết về quá trình các luồng truyền gói tin Có 2 kỹ thuật lưu vết là lưu vết kiểu dữ liệu text và lưu vết kiểu dữ liệu mô phỏng trực quan (NAM)

• Lưu vết theo kiểu dữ liệu text

Việc lưu vết kiểu dữ liệu text ghi lại chi tiết quá trình truyền các gỏi tin qua điểm lấy dữ liệu trong mạng Một phần của dữ liệu lưu vết kiểu text được đưa ra ở dưới đây

Trang 39

o ―+‖: đưa gói vào hàng đợi

o ―-― lấy gói ra khỏi hàng đợi

o ―d‖: gói bị thất lạc

 Thời gian (time); thời điểm xảy ra sự kiện

 Nút nguồn: định danh nút nguồn gửi gói tin

 Nút đích: định danh nút đích nhận gói tin

 Tên gói: Tên loại gói tin của tầng ứng dụng

 Kích thước gói tin: Độ dài gói tin tính theo đơn vị byte

 Cờ: Trường này sẽ hiển thị là trong trường hợp không xác định

 Định danh luồng: Giá trị xác định tính duy nhất của luồng dữ liệu

 Địa chỉ nguồn: Địa chỉ của nút nguồn gửi gói tin

 Địa chỉ đích: Địa chỉ của nút đích nhận gói tin

Trang 40

- 39 -

 Số thứ tự: Giá trị nguyên xác định số thứ tự của gói tin

 Định danh gói tin: Giá tri xác định tính duy nhất của gói tin

Toàn bộ dữ liệu lưu vết nếu xử lý thủ công có thể sẽ rất khó khăn và không cần thiết trừ khi ta thực hiện một trong các phương pháp phân tích trên dữ liệu này để trích ra một tập con dữ liệu cần thiết cho các phân tích sau đó Ví dụ như thông lượng trung bình của một liên kết nào đó có thể được tính bằng cách chỉ trích các cột và các trường có liên quan đến liên kết đó trong file lưu vết Có hai ngôn ngữ phổ biến được sử dụng trong những công việc như thế này là AWK và Perl

Tiến trình lưu vết gói tin trên theo kiểu dữ liệu text được kích hoạt bằng lệnh ―$ns trace-all $FileLuuVet‖, trong đó, ns là tham chiếu của đối tượng Simulator và FileLuuVet

là tham chiếu của đối tượng file lưu vết gói tin kiểu text Câu lệnh này báo cho NS2 cần phải làm công việc là lưu vết các gói tin Khi tạo ra một đối tượng, NS2 cũng tạo ra một đối tượng lưu vết để thu thập mọi thông tin chi tiết về quá trình di chuyển của gói tin trong mạng mô phỏng Do đó, câu lệnh ―trace-all‖ phải được thực hiện trước khi các đối tượng được tạo ra

• Lưu vết kiểu dữ liệu mô phỏng trực quan (NAM)

Lưu vết kiểu NAM ghi lại chi tiết về quá trình mô phỏng trong một file text và sử dụng file text để trình diễn lại tiến trình mô phỏng đã lưu vết dưới dạng đồ họa trực quan Lưu vết kiểu NAM được kích hoạt bằng lệnh ―$ns namtrace-all $FỉleNAM‖ trong đó ns là tham chiếu của đối tượng Simulator và FileNAM là handle của file chứa dữ liệu lưu vết kiểu NAM Sau khi kết xuất dữ liệu ra file lưu vết NAM, tiến trình trình diễn có thể được gọi trực tiếp từ dấu nhắc lệnh qua lệnh sau:

>> nam filename.nam

Trong NAM có nhiều đặc tính trình diễn đồ hoạ, chẳng hạn như các luồng truyền các gói tin với màu sắc khác nhau, các nút kéo thả (di chuyển vị trí), hiển thị nhãn nút tại một tình huống cụ thể, thiết lập hình dạng các nút, tạo màu cho các liên kết đặc biệt và theo dõi hàng đợi

2.6 Các thành phần C++ trong NS2 và Công cụ Make

Trong khi phát triển một ứng dụng mô phỏng NS2, ta thường hay phải tạo ra các module C++ của riêng mình để bổ sung vào các thư viện đã có Chẳng hạn như khi một nhà phát triển gặp phải công việc phải theo dõi mọi tất cả các file được tạo ra như là một phần của NS2 Khi có sự thay đổi trong một file, thông thường cần phải dịch lại một số file phụ thuộc vào file thay đổi Việc dịch lại mỗi file như vậy là không khả thi trong thực

tế Trong Unix, có một công cụ tên là make có thể được dùng để giải quyết vấn đề này Trong phần này, ta sẽ giới thiệu về công cụ này và thảo luận cách sử dụng nó theo hướng phát triển trình mô phỏng trong NS2

Công cụ make rất hữu ích trong việc quản lý việc phát triển các phần mềm được viết bằng các ngôn ngữ tương thích với ngôn ngữ lập trình bao gồm cả ngôn ngữ C++ Nói

Ngày đăng: 13/07/2021, 08:10

w