226
Nhn xét ca giáo viên hướng dn ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… …………………………………………………………………

Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

  • Upload
    oc-dien

  • View
    32

  • Download
    5

Embed Size (px)

DESCRIPTION

NS2

Citation preview

Page 1: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

Nhận xét của giáo viên hướng dẫn

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

Page 2: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

Nhận xét của giáo viên phản biện

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

Page 3: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

LỜI CẢM ƠN

Chúng con xin tỏ lòng biết ơn sâu sắc đến ba mẹ và gia đình đã nuôi dưỡng, giáo

dục và tạo điều kiện tốt nhất cho chúng con thực hiện đề tài này.

Chúng em xin chân thành cảm ơn khoa Công nghệ thông tin và quý Thầy, Cô

trong khoa, trường Đại học Khoa học Tự nhiên TpHCM đã tạo điều kiện cho chúng

em học tập và thực hiện luận văn tốt nghiệp này.

Đặc biệt, chúng em xin chân thành cảm ơn Thầy Phan Xuân Huy đã tận tình

hướng dẫn, chỉ bảo chúng em trong quá trình thực hiện đề tài.

Mặc dù chúng em đã cố gắng hoàn thành luận văn với tất cả sự nỗ lực của bản

thân, nhưng luận văn chắc chắn không tránh khỏi những thiếu sót nhất định, kính

mong sự cảm thông và tận tình chỉ bảo của quý Thầy, Cô và các bạn.

Phú Quý&Quang Hiếu

Tháng 7/2005

Page 4: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

4

MỤC LỤC

Trang

Danh sách các bảng................................................................................................ 12

Danh sách các hình ................................................................................................ 14

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

Tóm tắt luận văn .................................................................................................... 22

Chương mở đầu ..................................................................................................... 24

1. Dẫn nhập................................................................................................. 24

2. Mục đích và ý nghĩa đề tài....................................................................... 25

3. Đối tượng và phạm vi nghiên cứu............................................................ 25

A. Ngôn ngữ mô hình hóa mạng và các môi trường giả lập mạng .......................... 27

Phần 1 SSFNet Models và Domain Modeling Language......................... 27

Chương 1 SSF và SSFNet Models .................................................... 28

1.1 SSF Model............................................................................. 28

1.1.1 Giới thiệu.................................................................... 28

1.1.2 Các đặc tính của SSF .................................................. 28

1.1.3 Các phiên bản cài đặt của SSF .................................... 28

1.1.4 Giới thiệu các lớp cơ sở của SSF................................. 29

1.1.5 Trình tự quá trình giả lập............................................. 34

1.2 SSFNet Model ....................................................................... 36

1.2.1 Giới thiệu.................................................................... 36

1.2.2 Tổ chức thư mục SSFNet ............................................ 38

1.2.3 Các giao thức hổ trợ trong SSFNet.............................. 38

1.2.4 Các gói thư viện trong SSFNet.................................... 39

1.2.4.1 SSF.OS................................................................. 39

1.2.4.2 SSF.Net ................................................................ 40

Chương 2 Domain Modeling Language ............................................ 42

2.1 Giới thiệu ngôn ngữ DML ..................................................... 42

Page 5: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

5

2.1.1 DML là gì?.................................................................. 42

2.1.2 Cấu trúc ngữ pháp của DML....................................... 42

2.1.3 Quá trình biên dịch DML............................................ 44

2.2 Các bước cài đặt và biên dịch chương trình............................ 45

2.2.1 Môi trường Windows .................................................. 45

2.2.2 Môi trường Unix ......................................................... 48

2.3 Các đối tượng và thuộc tính của DML .................................. 48

2.3.1 Đối tượng Net ............................................................. 50

2.3.1.1 Định nghĩa và khai báo ......................................... 50

2.3.1.2 Các thuộc tính của Net.......................................... 52

2.3.2 Đối tượng Host ........................................................... 54

2.3.2.1 Định nghĩa và khai báo ......................................... 54

2.3.2.2 Các thuộc tính của Host ........................................ 54

2.3.3 Đối tượng Router ........................................................ 56

2.3.3.1 Định nghĩa và khai báo ......................................... 56

2.3.3.2 Các thuộc tính của Router ..................................... 57

2.3.4 Link ............................................................................ 58

2.3.4.1 Định nghĩa và khai báo ......................................... 58

2.3.4.2 Các thuộc tính của Link ........................................ 59

2.3.5 Traffic......................................................................... 60

2.3.5.1 Định nghĩa và khai báo ......................................... 60

2.3.5.2 Các thuộc tính của Traffic..................................... 60

2.3.6 Protocol ...................................................................... 60

2.3.6.1 Định nghĩa và khai báo ......................................... 60

2.3.6.2 Các thuộc tính của Protocol .................................. 61

2.3.6.3 Cấu hình một Host là FTP Client ......................... 65

2.3.6.4 Cấu hình một Host là FTP Server.......................... 66

2.4 Ciao thức BGP và SSFNet ................................................... 67

2.4.1 Giới thiêu về giao thức BGP ....................................... 67

Page 6: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

6

2.4.2 Các yếu tố đánh giá BGP ............................................ 69

2.4.3 BGP trong SSFNet...................................................... 71

2.4.3.1 Các mô hình tùy chọn cấu hình BGP .................... 71

2.4.3.2 Tạo các sub-network và các AS ............................ 71

2.4.3.3 Chồng giao thức cấu hình cho Boundary Router ... 72

2.4.3.4 Các thuộc tính của BGP........................................ 73

2.5 Các từ khóa hổ trợ trong DML............................................... 75

2.5.1 Từ khóa _extend ......................................................... 75

2.5.2 Từ khóa _find ............................................................. 75

2.5.3 Từ khóa _dictionary .................................................... 76

2.5.4 Ví dụ minh họa ........................................................... 76

Phần 2 Công cụ giả lập mạng NS-2 và Ngôn ngữ TCL ........................... 78

Chương 3 Công cụ giả lập mạng NS-2 ............................................. 78

3.1 Tổng quan về NS-2 ............................................................. 78

3.2 Kiến trúc của NS-2 .............................................................. 78

3.3 Các thành phần cấu hình mạng trong NS-2 .......................... 81

3.3.1 Lớp Simulator ............................................................... 78

3.3.1.1 Khởi tạo đối tượng Simulator................................ 78

3.3.1.2 Các bộ lập lịch và các sự kiện .............................. 78

3.3.1.3 Các phương thức khác ......................................... 83

3.3.1.4 Tóm tắt ................................................................ 83

3.3.2 Cấu hình Node ............................................................. 84

3.3.2.1 Tạo Node ............................................................. 84

3.3.2.2 Cấu hình cho MobileNode ................................... 84

3.3.2.3 Cấu hình cho Base-Station Node .......................... 85

3.3.2.4 Bảng tóm tắt các tham số cấu hình cho Node ....... 85

3.3.3 Tạo liên kết cho các Node ............................................ 87

3.4 Các Agent trong NS-2 .......................................................... 88

3.4.1 Giới thiệu ..................................................................... 88

Page 7: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

7

3.4.2 UDP Agent .................................................................. 89

3.4.3 TCP Agent ................................................................... 91

3.4.3.1 Một số TCP agent bên gởi ................................... 92

3.4.3.1.1 TCP Tahoe .................................................. 92

3.4.3.1.2 TCP Reno .................................................... 93

3.4.3.1.3 TCP Newreno .............................................. 94

3.4.3.2 Một số TCP agent bên nhận ................................. 94

3.4.3.3 TCP agent hai chiều ............................................. 95

3.4.4 Các ví dụ minh họa ...................................................... 96

3.5 Ứng dụng trong NS-2 ........................................................... 97

3.5.1 Lớp Application ........................................................... 97

3.5.2 Phân loại ứng dụng ...................................................... 97

3.5.2.1 Ứng dụng phát sinh lưu lượng mạng .................... 98

3.5.2.2 Ứng dụng giả lập mạng ........................................ 99

3.5.3 Các ví dụ minh họa .................................................... 100

3.6 Mạng không dây trong NS-2 .............................................. 101

3.6.1 Các thành phần cấu hình của một MobileNode .......... 101

3.6.2 Tạo mô hình mạng không dây trong NS-2 .................. 101

3.6.3 Tạo kịch bản chuyển động cho các Node .................... 103

3.6.4 Giao thức định tuyến cho mạng không dây ................. 104

3.6.4.1 Giới thiệu tổng quan .......................................... 104

3.6.4.2 Giao thức định tuyến TORA .............................. 106

3.6.4.3 Giao thức định tuyến DSDV .............................. 108

3.6.4.4 Giao thức định tuyến DSR ................................. 110

3.6.4.5 Giao thức định tuyến AODV ............................. 112

Chương 4 Ngôn ngữ TCL ................................................................ 117

4.1 Tổng quan và một số đặc điểm của ngôn ngữ TCL ............. 117

4.2 Cú pháp của TCL ............................................................... 118

4.2.1 Khai báo biến và mảng ............................................... 118

Page 8: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

8

4.2.2 Các biểu thức toán học trong TCL .............................. 119

4.2.3 Thay thế và lập nhóm ................................................. 120

4.2.3.1 Thay thế ............................................................. 120

4.2.3.2 Lập nhóm ........................................................... 121

4.2.4 Cấu trúc điều khiển .................................................... 121

4.2.4.1 Điều kiện if ........................................................ 121

4.2.4.2 Vòng lặp for ....................................................... 121

4.2.4.3 Vòng lặp while .................................................. 122

4.2.4.4 Thủ tục .............................................................. 122

4.2.4.5 Tập lệnh của TCL .............................................. 124

4.2.4.5.1 Nhóm lệnh điều khiển ................................ 124

4.2.4.5.2 Nhóm lệnh sự kiện ..................................... 125

4.2.4.5.3 Nhóm lệnh về file ...................................... 125

4.2.4.5.4 Nhóm lệnh trên danh sách ......................... 126

4.2.4.5.5 Nhóm lệnh trên xử lý chuỗi ....................... 127

4.2.4.5.6 Nhóm lệnh trên xử lý biến ......................... 127

4.2.4.5.7 Nhóm lệnh về thời gian ............................. 128

Chương 5 Ngôn ngữ hướng đối tượng Otcl ...................................... 133

5.1 Otcl là ngôn ngữ hướng đối tượng của TCL ....................... 133

5.2 Lớp và đối tượng trong Otcl ............................................... 133

5.3 Phương thức khởi tạo và hủy cho lớp ................................. 133

5.4 Khai báo các phương thức cho lớp ..................................... 134

5.5 Khai báo các thành phần dữ liệu ......................................... 135

B. Giới thiệu các công cụ phát sinh Topology mạng ............................................ 137

Phần 3 Các công cụ hổ trợ ngôn ngữ DML ........................................... 137

Chương 6 DMLEditor..................................................................... 138

6.1 Giới thiệu............................................................................. 138

6.2 Các tính năng nổi bật của DMLEditor.................................. 138

6.3 Các bước cài đặt DMLEditor ............................................... 138

Page 9: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

9

6.4 Quá trình thiết kế trên DMLEditor....................................... 139

Chương 7 RacewayViewer ............................................................. 143

7.1 Giới thiệu............................................................................. 143

7.2 Các tính năng nổi bật của RacewayViewer .......................... 143

7.3 Các bước cài đặt RacewayViewer........................................ 143

7.4 Quá trình thiết kế trên RacewayViewer................................ 144

Chương 8 NetViewer ...................................................................... 148

8.1 Giới thiệu............................................................................. 148

8.2 Các tính năng nổi bật của NetViewer ................................... 148

8.3 Các bước cài đặt NetViewer ................................................ 148

8.4 Quá trình thiết kế trên NetViewer ........................................ 149

Phần 4 Các công cụ hổ trợ ngôn ngữ TCL ............................................ 155

Chương 9 BRITE............................................................................ 155

9.1 Thiết kế và cài đặt BRITE .................................................. 155

9.1.1 Download và cài đặt BRITE........................................ 156

9.1.2 Giao diện bằng GUI .................................................... 158

9.1.3 Giao diện bằng dòng lệnh............................................ 158

9.1.4 Các file cấu hình ......................................................... 159

9.1.5 Định dạng output của BRITE ...................................... 160

9.2 Kiến trúc của BRITE .......................................................... 162

9.2.1 Qui trình làm viêc của BRITE .................................... 162

9.2.2 Kiến trúc của BRITE .................................................. 162

9.2.2.1 Lớp Model ......................................................... 163

9.2.2.1.1 Mô hình đẳng cấp Router-level .................. 164

9.2.2.1.2 Mô hình đẳng cấp AS-level ....................... 166

9.2.2.1.3 Mô hình phân cấp top-down ...................... 166

9.2.2.1.4 Mô hình phân cấp botton-up ...................... 167

9.2.2.1.5 Mô hình Imported File ............................... 167

9.3 Các tham số trong giao diện BRITE ................................... 168

Page 10: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

10

9.4 Hạn chế của BRITE ............................................................ 170

Chương 10 NS-2 và NAM ................................................................ 171

10.1 Cài đặt NS-2 và NAM trên Window.................................. 171

10.1.1 Download NS-2 và NAM ......................................... 171

10.1.2 Cài đặt NS-2 ............................................................ 171

10.1.3 Chạy NS-2 và NAM ................................................. 172

10.2 Cài đặt NS-2 và NAM trên Linx ....................................... 173

10.2.1 Download NS-2 và NAM ......................................... 173

10.2 .2 Cài đặt ..................................................................... 174

10.2.3 Chạy NS-2 và NAM ................................................. 175

Phần 5 Các công cụ khác ...................................................................... 176

Chương 11 Otter ............................................................................... 176

11.1 Giới thiệu .......................................................................... 176

11.2 Các tính năng nổi bật của Otter.......................................... 176

11.3 Các bước cài đặt Otter ....................................................... 177

11.4 Quá trình thiết kế trên Otter............................................... 178

C. Xây dựng chương trình ứng dụng BRITE........................................................ 182

Phần 6 Cơ sở lý thuyết .......................................................................... 182

Chương 12 Lý thuyết cơ bản về mạng không dây ............................. 183

12.1 Giới thiệu ......................................................................... 183

12.1.1 Mạng không dây cố định .......................................... 184

12.2.2 Mạng không dây di động .......................................... 185

12.2 Mạng MANET ................................................................. 185

12.2.1 Tổng quan về mạng MANET ................................... 185

12.2.2 Phân loại mạng MANET theo cách thức định tuyến . 186

12.2.2.1 Mạng MANET định tuyến Single-hop ............ 186

12.2.2.2 Mạng MANET định tuyến Multi-hop ............... 186

12.2.2.3 Mô hình MANET định tuyến MobileMulti-hop 187

12.2.3 Phân loại mạng MANET theo chức năng của Node .. 187

Page 11: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

11

12.2.3.1 Mạng MANET đẳng cấp .................................. 187

12.2.3.2 Mạng MANET phân cấp .................................. 187

12.2.3.3 Mạng MANET kết hợp .................................... 188

Phần 7 Xây dựng ứng dụng................................................................... 190

Chương 13 Giới thiệu ứng dụng ........................................................ 190

13.1 Giới thiệu ......................................................................... 190

13.2 Ngôn ngữ cài đặt và tính tương thích ................................ 190

13.3 Các mô hình mạng trong ứng dụng ................................... 191

13.3.1 Mạng MANET ......................................................... 191

13.3.2 Wired-cum-Wireless ................................................ 191

Chương 14 Các chức năng chính của ứng dụng................................. 192

14.1 Giới thiệu các lớp trong module wireless .......................... 192

14.2 Giao diện chính module Wireless ..................................... 193

14.3 Cấu hình các wireless node ............................................... 196

14.4 Tạo kịch bản chuyển động ................................................ 199

14.4.1 Tạo bằng tay ....................................................... 201

14.4.2 Tạo ngẫu nhiên ................................................... 202

14.4.3 Ý nghĩa của tạo bằng tay và ngẫu nhiên ............... 202

14.5 Tạo kịch bản ứng dụng ..................................................... 202

14.6 Giải thuật phát sinh số Domain và Cluster ......................... 204

14.7 Tiến hành giả lập ............................................................... 206

14.7.1 Các bước xây dựng kịch bản và biên dịch ................. 206

14.7.2 Các ví dụ minh họa .................................................. 206

14.7.2.1 Mạng MANET.................................................. 206

14.7.2.2 Mạng Wired-cum-Wireless ............................... 208

Tổng kết............................................................................................................... 210

Phụ lục Các ví dụ minh họa ngôn ngữ DML và TCL ......................................... 212

Tài liệu tham khảo ............................................................................................... 224

Page 12: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

12

DANH SÁCH CÁC BẢNG

Bảng 1.1 Phiên bản hiện tại của SSF

Bảng 1.2 Cài đặt các lớp Event trong C++ và Java

Bảng 1.3 Cài đặt các lớp Entity trong C++ và Java

Bảng 1.4 Cài đặt các lớp inChannel, outChannel trong C++ và Java

Bảng 1.5 Cài đặt các lớp process trong C++ và Java

Bảng 1.6 Đoạn chương trình nguồn của ví dụ về SSF

Bảng 1.7 Các giao thức trong SSFNet

Bảng 1.8 Các gói thư viện hỗ trợ trong SSFNet

Bảng 1.9 Các lớp chính của gói SSF.Net

Bảng 2.1 Các đối tượng và thuộc tính của DML

Bảng 3.1 Các tham số cấu hình cho MobileNode

Bảng 3.2 Các Agent hổ trợ trong NS-2

Bảng 3.3 Các phương thức của lớp Application

Bảng 3.4 Các phương thức của lớp TrafficGenerator

Bảng 4.1 Các toán tử trong TCL

Bảng 4.2 Nhóm lệnh điều khiển

Bảng 4.3 Nhóm lệnh sự kiện

Bảng 4.4 Nhóm lệnh file

Bảng 4.5 Nhóm lệnh xử lý trên danh sách

Bảng 4.6 Nhóm lệnh xử lý trên chuỗi

Bảng 4.7 Nhóm lệnh xử lý biến

Bảng 4.8 Nhóm lệnh xử lý thời gian

Bảng 4.9 Các tham số tùy chọn trên I/O

Bảng 4.10 Các tham số tùy chọn xử lý trên file

Bảng 4.11 Các cờ xử lý tác vụ mở file

Bảng 4.12 cú pháp exec để định hướng I/O

Bảng 4.13 Cú pháp các thao tác trên file

Page 13: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

13

Bảng 9.1 Các tham số thiết lập cho Node

Bảng 9.2 Các tham số thiết lập cho cạnh

Bảng 9.3 Các tham số của mô hình đẳng cấp

Bảng 9.4 Các tham số của mô hình phân cấp top-down

Bảng 9.5 Các tham số của mô hình phân cấp botton-up

Bảng 9.6 Các tham số của mô hình Imported File

Bảng 10.1 Cách thức cài đặt NS-2 trong Window

Bảng 14.1 Các lớp trong module wireless

Bảng 14.2 Các agent được cài đặt trong module Wireless

Bảng 14.3 Các ứng dụng được cài đặt trong module Wireless

Page 14: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

14

DANH SÁCH CÁC HÌNH

Hình 1.1 Sơ đồ mô hình SSFNet

Hình 1.2 Ví dụ HelloWorld trong SSF

Hình 1.3 Sơ đồ của qui trình giả lập

Hình 1.4 Mô hình SSNet

Hình 1.5 Các tầng xử lý của SSFNet

Hình 1.6 Mô hình ProtocolGraph

Hình 1.7 Peer-to-Peer Network

Hình 2.1 Các thành phần mạng được sử dung trong DML

Hình 2.2 Cấu trúc ngữ pháp của DML

Hình 2.3 Quá trình khởi tạo các đối tượng giả lập

Hình 2.4 Trình tự biên dịch file DML

Hình 2.5 Hộp thoại cấu hình biến CLASSPATH

Hình 2.6 Hộp thoại tạo biến CLASSPATH

Hình 2.7 Kết quả biên dịch file DML

Hình 2.8 Minh họa định nghĩa đối tượng Net

Hình 2.9 Ví dụ khai báo chồng giao thức định tuyến cho Router

Hình 2.10 Ví dụ thuộc tính Link

Hình 2.11 ProtocolSession

Hình 2.12 Chồng giao thức của một FTP Client

Hình 2.13 Chồng giao thức của một FTP Server

Hình 2.14 Sơ đồ kiến trúc của quá trình định tuyến động

Hình 2.15 EBGP và IBGP

Hình 2.16 Quá trình xử lý định tuyến của BGP

Hình 2.17 Thuộc tính AS_PATH

Hình 2.18 Thuộc tính NEXT_HOP

Hình 2.19 Chồng giao thức cho một Boundary Router

Hình 3.1 Kiến trúc tổng quan của NS

Page 15: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

15

Hình 3.2 Mô hình đơn giản của NS

Hình 3.3 Mô hình hoạt động của NS-2

Hình 3.4 Cấu trúc Heap giảm

Hình 3.5 Hai loại ứng dụng trong NS-2

Hình 3.6 Các giao thức định tuyến trong mạng MANET

Hình 3.7 Mô hình nước chảy trong mạng với giao thức TORA

Hình 3.8 Các giá trị hop-count trong TORA

Hình 6.1 Giao diện chính của DMLEditor

Hình 6.2 Tạo id cho mạng

Hình 6.3 Giao diện cấu hình cho Host, Router

Hình 6.4 Giao diện tạo liên kết giữa các Host,Router

Hình 6.5 Giao diện thiết lập thông số cho Host, Router

Hình 6.6 Giao diện cấu hình card mạng

Hình 6.7 Giao diện thiết lập bảng định tuyến

Hình 6.8 Danh sách bảng định tuyến

Hình 7.1 Giao diện chính của RacewayViewer

Hình 7.2 Minh họa chức năng zoom toàn bộ network

Hình 7.3 Minh họa chức năng scale một sub-network

Hình 8.1 Giao diện chính của NetViewer

Hình 8.2 Giao diện của NetViewer khi mở một file DML

Hình 8.3 Giao diện tìm kiếm node

Hình 8.4 Giao diện chỉnh sửa các thuộc tính

Hình 8.5 Giao diện thêm Node vào trong mạng

Hình 8.6 Mô hình mạng sau khi cấu hình

Hình 8.7 Các thành phần mạng dưới dạng TreePopUp

Hình 9.1 Cấu trúc tổng quát của BRITE

Hình 9.2 Cấu trúc thư mục của phiên bản Java

Hình 9.3 Cấu trúc thư mục phiên bản C++

Hình 9.4 sự tương tác giữa phần giao diện GUI với phần phát sinh topo

Page 16: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

16

Hình 9.5 File cấu hình của mô hình AS Waxman

Hình 9.6 File cấu hình của mô hình phát sinh NLANR

Hình 9.7 Ví dụ file output của mô hình Flat-RouterWaxman

Hình 9.8 Cấu trúc của một Topology trong BRITE

Hình 9.9 Mô hình của lớp Mode

Hình 9.10 Hai mô hình phân bố node randomly và Heavy-Tailed

Hình 9.11 Mô hình phân cấp top-down

Hình 9.12 Mô hình ImportedFile

Hình 10.1 Cấu trúc thư mục của NS-2 cài đặt trên Window

Hình 10.2 Cấu trúc thư mục của NS-2 trên Linux

Hình 11.1 Giao diện chính của Otter

Hình 11.2 Giao diên load file

Hình 11.3 Giao diên thiết kế trên Otter

Hình 11.4 Mô hình kết xuất theo trạng thái Tunnel

Hình 11.5 Mô hình kết xuất theo Domain Name

Hình 11.6 Mô hình kết xuất theo cấu trúc cây thư mục của một Website

Hình 12.1 Mô hình mạng không dây cố định

Hình 12.2 Mô hình mạng không dây di động (AdHoc)

Hình 12.3 Định tuyến Single-hop

Hình 12.4 Định tuyến multi-hop

Hình 12.5 Mô hình mạng phân cấp

Hình 12.6 Mô hình mạng Aggregate Ad hoc

Hình 14.1 Giao diện chính module Wireless của BRITE

Hình 14.2 Cửa sổ thông báo trạng thái phát sinh topo

Hình 14.3 Giao diện lưu file

Hình 14.4 Giao diện cấu hình chung cho các MobileNode

Hình 14.5 Giao diện cấu hình cho từng MobileNode

Hình 14.6 Giao diện tao kịch bản chuyển động cho các MobileNode

Hình 14.7 Giao diện thiết lập ứng dụng cho mạng

Page 17: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

17

Hình 14.8 Mô hình mạng wire-cum-wireless

Hình 14.9 Mô hình mạng MANET trong NAM ( cảnh 1 )

Hình 14.10 Mô hình mạng MANET trong NAM ( cảnh 2 )

Hình 14.11 Mô hình mạngWired-cum-Wireless trong NAM

Page 18: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

18

DANH SÁCH CÁC TỪ VIẾT TẮT

1. ABR: Associa tivity-Based Routing - Định tuyến dựa trên tính liên kết.

2. ACK: Acknowledgment - Tin báo nhận.

3. AdvertisedWnd: Advertised Receive Window Size – Kích thước cửa sổ nhận

quảng bá.

4. AODV: Ad hoc On-Demand Distance Vector – Giao thức định tuyến vector

khoảng cách theo yêu cầu dùng cho mạng Ad hoc.

5. AP: Access Point - Điểm truy cập.

6. API: application program interface - Hệ giao tiếp lập trình ứng dụng.

7. ARP: Address Resolution Protocol - Giao thức phân giải địa chỉ.

8. AS: Autonomous System - Vùng tự trị.

9. BGP: Border Gateway Protocol - giao thức trao đổi các thông tin định tuyến giữa

các inter-Autonomous System (AS).

10. BRITE: Boston university Representative Internet Topology gEnerator - Công

cụ phát sinh topo theo chuẩn Internet của đại học Boston.

11. BS: Base-Station - Trạm chuyển tiếp giữa wired và wireless network.

12. BSD: Berkeley’s Software Distribution - Nhà phân phối phần mềm của

Berkeley.

13. CBR: constant Bit Rate - Tốc độ bit không đổi.

14. CBRP: Cluster Based Routing Protocol - giao thức định tuyến dựa trên nhóm

15. ConThresh: Threshhold of the Control Window Size - ngưỡng kích thước cửa sổ

điều khiển.

16. D-ACK: Delayed-ACK – Tin báo nhận trễ.

17. DAG: Directed Acyclic Graph - đồ thị không vòng có hướng.

18. DDR: Distributed Dynamic Routing - Định tuyến phân phối động.

19. DML: Domain Modeling Language - Ngôn ngữ mô hình hóa domain mạng.

20. DOS: Disk Operating System - Hệ điều hành đĩa.

Page 19: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

19

21. DSDV: Destination-Sequenced Distance Vector – vector khoảng cách tuần tự

đến địa chỉ đích.

22. DSR: Dynamic Source Routing - Định tuyến source route động.

23. DV: Distance-Vector - vector khoảng cách.

24. EBGP: External Border Gateway Protocol – Giao thức định tuyến liên AS.

25. FTP: File Tranfer Protocol – Giao thức truyền file.

26. GNU

27. GSR: Global State Routing - Định tuyến trạng thái toàn cục.

28. GUI: Graphical User Interface - Giao diện người dùng bằng đồ họa.

29. HTTP: Hypertext Transfer Protocol – Giao thức truyền siêu văn bản.

30. IBGP: Internal Border Gateway Protocol – Giao thức định tuyến nội bộ AS.

31. ICMP: Internet Control Message Protocol – Giao thức điều khiển các thông điệp

Internet.

32. IETF: Internet Engineering Task Force - Tổ chức nghiên cứu Internet.

33. IP: Internet Protocol – Giao thức Internet.

34. ISS: Initial Sequence Number – Giá tri khởi tạo tuần tự.

35. JDK: Java Development Kit - Bộ công cụ phát triển Java.

36. LAN: Local Area Network - Mạng cục bộ.

37. LAR: Location Aided Routing - Định tuyến dựa vào vị trí.

38. MAC: Media Access Control - Kiểm soát truy cập môi trường truyền thông.

39. MANET: Mobile Ad hoc Network - Mạng di động không kiểm soát.

40. MaxConWnd: Maximum Congestion Control Window Size – Kích thước tối đa

khung nghẽn mạch.

41. MaxIdleTime: Maximum Idle Time - Thời gian nhàn rỗi tối đa.

42. MaxRexmitTimes: Maximum Retransmission Times - Số lần tối đa được phép

truyền lại.

43. MPLS: Multiprotocol Label Switching - Chuyển mạch nhãn đa giao thức.

44. MSL: Maximum Segment Lifetime - Thời gian sống tối đa của một phân đoạn

dữ liệu.

Page 20: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

20

45. MSS: Maximum Segment Size – Kích thước tối đa của một phân đoạn.

46. NAM: Network Animator - Bộ mô phỏng mạng.

47. NHI: Network Host Interface - Địa chỉ giao tiếp của các thành phần mạng trong

ngôn ngữ DML.

48. NIC: Network Interface Card – Card giao tiếp mạng.

49. NS: Network Simulator - Bộ giả lập mạng.

50. OSPF: Open Shortest Path First Protocol – Giao thức định tuyến đường đi ngắn

nhất.

51. OTcl: Object Tool Command Language – Ngôn ngữ lệnh hướng đối tượng.

52. PDA : Personal Digital Assistant - Thiết bị hổ trợ cá nhân.

53. RBP: Rate Based Pacing - tạm dịch Nhịp dựa trên tốc độ.

54. RcvWndSize: Receive Window Size – Kích thước vùng cửa sổ bên nhận.

55. RMSS: Receiver Maximum Segment Size – Kích thước tối đa phân đoạn bên

nhận.

56. RREP: Route Reply - Phản hồi thông tin định tuyến.

57. RREQ: Route Request – Yêu cầu thông tin định tuyến.

58. RRER: Route Error – Thông báo lỗi thông tin định tuyến.

59. RTP: Real-time Transport Protocol - Giao thức truyền tải thời gian thực.

60. RTT: Round Trip Time - Thời gian một quá trình gởi và nhận.

61. SendWndSize: Send Window Size – Kích thước vùng cửa sổ gởi.

62. SMSS: Sender Maximum Segment Size – Kích thước tối đa phân đoạn bên gởi.

63. SSF: Scalable Simulation Framework – tạm dịch là Khung giả lập mạng gốc.

64. SSFNet: Scalable Simulation Framework Network Model – Mô hình mạng dựa

trên nền SSF.

65. SYN: Synchronization - sự đồng bộ hoá.

66. TCL: Tool Command Language – Ngôn ngữ lệnh.

67. TCP: Transmission Control Protocol – Giao thức kiểm soát sự truyền.

68. TORA: Temporally Ordered Routing Algorithm - thuật toán định tuyến trình tự

tạm thời.

Page 21: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

21

69. TTL: Time To Live - Thời gian sống.

70. UDP: User Datagram Protocol – tạm dịch là Giao thức dữ liệu người dùng.

71. VINT: Virtual Internet Testbed - Thử nghiệm mạng Internet ảo.

72. WRP: Wireless Routing Protocol - Giao thức định tuyến mạng không dây.

73. ZHLS: Zone-based Hierarchical Link State routing protocol - giao thức định

tuyến trạng thái liên kết phân cấp dựa trên vùng.

74. ZRP: Zone Routing protocol - Giao thức định tuyến dựa theo vùng.

Page 22: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

22

TÓM TẮT LUẬN VĂN

Thông tin chung về đề tài: Tên đề tài:

Tìm hiểu ngôn ngữ mô hình hóa mạng và xây dựng bộ công cụ phát sinh

Topology cho mạng GVHD: Thạc sĩ Phan Xuân Huy

Sinh viên thực hiện:

1. MSSV: 0112067 Họ và tên: Huỳnh Phú Quý

2. MSSV: 0112218 Họ và tên: Nguyễn Trần Quang Hiếu

Tóm tắt nội dung luận văn:

Luận văn tập trung vào việc tìm hiểu cơ sở lý thuyết về mạng không dây và một

số ngôn ngữ mô hình hóa mạng như DML, TCL từ đó xây dựng một ứng dụng dùng

để phát sinh topology, kịch bản chuyển động và các ứng dụng cho mạng không dây

mà chủ yếu là mạng MANET cho bộ công cụ giả lập mạng NS-2.

Một số từ khóa chính liên quan đến nội dung đề tài: - BRITE: Boston university Representative Intenet Topology gEnerator

- DML: Domain Modeling Language

- MANET: Mobile Ad Hoc Network

- NAM: Network Animator

- NS-2: Network Simulator version 2

- OTCL: Object Tool Command Language

- SSF: Scalable Simulation Framework

- SSFNet: Scalable Simulation Framework Network Model

- TCL: Tool Command Language

Page 23: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

23

Lĩnh vực áp dụng: Luận văn được ứng dụng cho việc tìm hiểu, nghiên cứu các thành phần mạng, các

mô hình mạng không dây trong môi trường giả lập.

Các thuật toán, phương pháp, quy trình chính được nghiên cứu, ứng dụng trong đề tài: - Giải thuật phát sinh số Domain và số Cluster cho mô hình mạng không dây và có

dây trong ngôn ngữ TCL.

- Giải thuật tạo địa chỉ cho các node (wired, wireless và BS node) trong mô hình

mạng.

Các công cụ, công nghệ chính được nghiên cứu, ứng dụng trong đề tài: - Môi trường lập trình Java sử dụng bộ JDK 1.4, công cụ thiết kế JBuilder 9.0 trên

window và Linux.

- Trong đề tài này, chúng tôi tập trung vào các ngôn ngữ mô hình hóa mạng DML,

TCL và công cụ phát sinh topology mạng BRITE và công cụ giả lập mạng NS-2.

Xác nhận của GVHD

Page 24: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

24

CHƯƠNG MỞ ĐẦU

1. Dẫn nhập: Ngày nay, mạng máy tính toàn cầu hay còn gọi là mạng Internet đang phát

triển một cách mạnh mẽ và rộng lớn, trở thành nơi trao đổi thông tin và lưu trử dữ

liệu với khối lượng khổng lồ. Các công nghệ mới, các giao thức mới nhanh chóng

được ra đời và triển khai trên thực tế nhằm đáp ứng cho sự phát triển như vũ bão,

cũng như các đòi hỏi ngày càng khắc khe của mạng máy tính tương lai.

Internet giờ đây đã trở nên quá đồ sộ và phức tạp đến nỗi chúng ta khó có thể

hiểu được cách thức hoạt động và nguyên tắc vận hành của nó trong thời kỳ mới.

Do đó, đối với các nhà nghiên cứu và phát triển, việc kiểm tra sự hoạt động của

các tính năng mới, các giao thức mới (như các giao thức truyền dữ liệu, các giao

thức định tuyến,…) trước khi triển khai trên thực tế là rất quan trọng và cần thiết.

Công việc này không những giúp giảm rủi ro và chi phí mà còn đảm bảo sự chắc

chắn và tính ổn định của việc triển khai các công nghệ mới. Chính vì thế mà một

môi trường giả lập mạng hoàn chỉnh là công cụ thiết yếu cho việc kiểm tra, thử

nghiệm các công nghệ mới trên các mạng lớn có cấu trúc phức tạp.

Ngoài mục đích kinh tế thương mại, các công cụ giả lập mạng còn góp phần

rất lớn trong việc hổ trợ cho các mục đích học tập và nghiên cứu của sinh viên,

giảng viên chuyên ngành mạng máy tính ở các trường Đại học-Cao đẳng, cũng

như các cá nhân, tổ chức đang làm việc trong lỉnh vực mạng.

Hiện nay, các công cụ và môi trường giả lập mạng xuất hiện chưa nhiều trong

khi nhu cầu của thị trường là rất lớn, nhất là khi mạng không dây ra đời và ngày

càng trở nên phổ biến thì nhu cầu này càng trở nên cấp thiết. Trong phạm vi của

đề tài luận văn tốt nghiệp – “tìm hiểu ngôn ngữ mô hình hóa mạng và xây

dựng bộ công cụ phát sinh Topology cho mạng”, chúng tôi sẽ nghiên cứu,

tìm hiểu các ngôn ngữ mô hình hóa mạng đang được sử dụng thông dụng, đồng

thời giới thiệu các bộ công cụ phát sinh Topology cho mạng, và cuối cùng là xây

Page 25: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

25

dựng chương trình ứng dụng phát sinh Topology cho mạng không dây có kết hợp

với mạng có dây.

2. Mục đích và ý nghĩa đề tài: Trong khi mạng máy tính đang ngày càng phát triển không ngừng và trở nên

quá tiện dụng kèm theo đó là tính phức tạp và cồng kềnh không kém, thì các dự

án nghiên cứu, xây dựng , phát triển các môi trường giả lập mạng chỉ mới được

đề cập và quan tâm đúng mức trong khoảng thời gian gần đây (khoảng từ năm

1995). Điều này cũng hoàn toàn dễ hiểu bởi chỉ khi mạng máy tính thực sự phát

triển và trở nên phức tạp thì người ta mới nghỉ đến việc xây dựng nên các môi

trường giả lập mạng hổ trợ cho các mục đích học tập, nghiên cứu, thử nghiệm và

triển khai các công nghệ mới trong thực tế. Hơn nữa muốn xây dựng nên các

công cụ mạnh đáp ứng được nhu cầu phát triển của mạng thì phải cần có các công

cụ hổ trợ mạnh mẽ (như các công cụ hổ trợ thiết kế, các ngôn ngữ lập trình cấp

cao như C++, Java, …). Đặt biệt đối với ngành mạng máy tính ở nước ta thì đây

là một lĩnh vực còn khá mới mẽ.

Để không nằm ngoài xu hướng phát triển chung trên, đề tài tập trung nghiên

cứu các môi trường giả lập mạng mạnh, thông dụng, có khả năng được tiếp tục

phát triển và hoàn thiện trong tương lai. Và đây cũng chính là mục đích của đề

tài mà chúng tôi tìm hiểu.

Đề tài còn có ý nghĩa thiết thực trong việc nghiên cứu và phát triển các môi

trường giả lập mạng, đồng thời xây dựng nên một cơ sở nền tảng lý thuyết về xây

dựng môi trường và các công cụ giả lập mạng.

3. Đối tượng và phạm vi nghiên cứu: Đề tài tập trung nghiên cứu chính về các ngôn ngữ mô hình hóa mạng thông

dụng là DML (sử dụng cho bộ giả lập SSFNet) và TCL (sử dụng cho bộ giả lập

NS-2 và NAM), giới thiệu được một số công cụ giả lập mạng khá mạnh đã được

phát triển trên hai ngôn ngữ này.

Page 26: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

26

Trong đề tài có trình bày một số lý thuyết cơ bản về các giao thức thông dụng

như BGP, các giải thuật của TCP như TCP Tahoe, TCP Reno, các cơ sở lý thuyết

về mạng không dây hổ trợ cho phần xây dựng ứng dụng.

Sử dụng ngôn ngữ TCL phát triển phần ứng dung BRITE thêm chức năng tạo

kịch bản giả lập trong mô hình mạng không dây có kết hợp với mạng có dây, mà

tập trung là mạng MANET.

Page 27: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

27

A. NGÔN NGỮ MÔ HÌNH HÓA MẠNG VÀ

CÁC MÔI TRƯỜNG GIẢ LẬP MẠNG

PHẦN 1

SSFNET MODELS VÀ DOMAIN MODELING

LANGUAGE

Page 28: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

28

Chương 1

SSF và SSFNet Models

1.1 SSF Model:

1.1.1 Giới thiệu SSF-Scalable Simulation Framework API là một kiến trúc phần mềm cốt lõi

dùng cho việc lên mô hình, tiến hành giả lập và phân tích cấu trúc của các mạng

lớn, phức tạp.

1.1.2 Các đặc tính của SSF: Độc lập và thống nhất:

SSF cung cấp một giao diện độc lập và thống nhất cho tất cả các cài đặt trên

các sự kiện giả lập khác nhau. Các mô hình hướng đối tượng đã tận dụng tính

năng này để xây dựng nên các môi trường giả lập khác nhau nhằm phục vụ cho

những mục đích nhất định.

Kế thừa và tái sử dụng:

Tính năng kế thừa, sử dụng lại mã nguồn là một trong những ưu điểm lớn

của SSF, điều này góp phần làm hạn chế sự phụ thuộc của các phiên bản cải

tiến vào lõi cài đặt (Kernel Simulator) và giúp cho các nhà phát triển có thể

xây dựng nên các ngôn ngữ mô hình hóa cấp cao hay các môi trường giả lập có

hổ trợ giao diện đồ họa.

Mã nguồn mở và đa ngôn ngữ:

SSF được cài đặt trên 2 ngôn ngữ hướng đối tượng mạnh là Java và C++, và

được công bố rộng rãi mã nguồn cho tất cả mọi cá nhân, tổ chức trên thế giới.

Mạnh mẽ:

SSF có khả năng xây dựng nên những mô hình có hiệu quả cao, tính năng

xử lý song song và đa nhiệm các nguồn tài nguyên, có khả năng quản lý cùng

lúc nhiều thực thể mạng giả lập.

1.1.3 Các phiên bản cài đặt của SSF

Page 29: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

29

Các phiên bản cài đặt hiện tại của SSF:

Tên phiên bản Mô tả

Raceway

Là phiên bản cải tiến trên nền Java SSF API, do Tổ chức

Renesys phát triển và giới thiệu vào năm 1999 với nhiều cài

đặt tốt, mang tính thương mại cao

JSSF Java SSF API, là phiên bản cải tiến của Tổ chức Cooperating

Systems trên nền Java, được giới thiệu vào tháng 4/2000

CSSF

C++SSF API, là một phiên bản cải tiến khác của Tổ chức

Cooperating Systems trên nền C++, được giới thiệu vào tháng

5/2000

DaSSF

Dartmouth Scalable Simulation Framework, là phiên bản cải

tiến trên nền C++ SSF API của trường đại học Dartmouth có

hổ trợ thêm chức năng Wireless Simulation, được giới thiệu

vào tháng 1/2001

Bảng 1.1 Phiên bản hiện tại của SSF

Hình 1.1 Sơ đồ mô hình SSFNet

1.1.4 Giới thiệu các lớp cơ sở của SSF Lớp Event:

Lớp Event quản lý việc lưu trử và phát sinh các sự kiện cho các thực thể

mạng (protocol packet và timer).

Cài đặt:

C++ Java

Page 30: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

30

class Event {

public:

Event* save();

void release();

boolean aliased();

};

public interface Event {

public Event save();

public void release();

public boolean aliased();

}

Bảng 1.2 Cài đặt các lớp Event trong C++ và Java

Lớp Entity:

Lớp Entity là lớp đại diện cho tất cả các thực thể mạng như Host, Router,

Link, TCP Sessions, Protocol, ...

Cài đặt:

C++ Java

class Entity {

public:

virtual void init() =0;

ltime_t now();

void startAll(ltime_t t1);

void startAll(ltime_t t0, ltime_t t1);

ltime_t pauseAll();

void resumeAll();

void joinAll();

Object* alignment();

ltime_t alignto(Entity* s);

// null-terminated

Entity** coalignedEntities();

// null-terminated

process** processes();

// null-terminated

public interface Entity {

public ltime_t now();

public void startAll(ltime_t t1);

public void startAll(ltime_t t0, ltime_t t1);

public ltime_t pauseAll();

public void resumeAll();

public void joinAll();

public ltime_t alignto(Entity s);

public Object alignment();

public java.util.Vector

coalignedEntities();

public void init();

public java.util.Vector processes();

public java.util.Vector inChannels();

public java.util.Vector outChannels();

}

Page 31: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

31

inChannel** inChannels();

// null-terminated

outChannel** outChannels();

};

Bảng 1.3 Cài đặt các lớp Entity trong C++ và Java

Lớp inChannel, outChannel:

Lớp inChannel, outChannel quản lý việc truyền thông các sự kiện cho

mạng (protocol interaction, …).

Cài đặt:

C++ Java

class inChannel {

public:

Entity* owner();

// null-terminated

Event** activeEvents();

// null-terminated

outChannel** mappedto();

};

public interface inChannel {

public Entity owner();

public Event[ ] activeEvents();

public outChannel[ ] mappedto();

}

class outChannel {

public:

Entity* owner();

// null-terminated

inChannel** mappedto();

void write(Event* evt, ltime_t

delay =0);

ltime_t mapto(inChannel* tgt,

ltime_t mapping_delay =0);

ltime_t unmap(inChannel*

public interface outChannel {

public Entity owner();

public inChannel[] mappedto();

public void write(Event evt, ltime_t delay);

public void write(Event evt);

public ltime_t mapto(inChannel tgt);

public ltime_t mapto(inChannel tgt, ltime_t

mapping_delay);

public ltime_t unmap(inChannel tgt);

}

Page 32: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

32

tgt);

};

Bảng 1.4 Cài đặt các lớp inChannel, outChannel trong C++ và Java

Lớp process:

Lớp process quản lý việc xử lý các đối tượng và các sự kiện phát sinh cho

các thực thể mạng (định tuyến, truyền dữ liệu, …).

Cài đặt:

C++ Java

class process {

public:

process(Entity* theowner, int

simple=0);

process(Entity* theowner,

void(Entity::*body)(process*),

int simple=0);

virtual void action();

virtual void init();

virtual boolean isSimple();

Entity* owner();

void waitOn(inChannel**

waitchannels);

void waitOn(inChannel*

waitchannel);

void waitForever();

}

public interface process {

public Entity owner();

public void action();

public void init();

public void waitOn(inChannel[]

waitchannels);

public void waitOn(inChannel

waitchannel);

public void waitForever();

public void waitFor(ltime_t waitinterval);

public boolean waitOnFor(inChannel[]

waitchannels, ltime_t timeout);

public boolean isSimple();

}

Bảng 1.5 Cài đặt các lớp process trong C++ và Java

Ví dụ về SSF:

Page 33: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

33

Hình 1.2 Ví dụ HelloWorld trong SSF

Đoạn chương trình nguồn:

import com.renesys.raceway.SSF.*;

public class HelloWorld extends Entity {

public long delay = 20;

public int rcvd;

public inChannel IN;

public outChannel OUT;

public HelloWorld {

rcvd = 0;

IN = new inChannel (this);

OUT = new outChannel (this, DELAY);

OUT.mapto (IN);

new process (this) {

public void action() {

OUT.write(new Event());

waitFor(DELAY);

}

}

new process (this) {

public void action() {

waitOn(IN);

Page 34: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

34

rcvd++;

}

}

}

public static void main(String [] argv) {

HelloWorld hello = new HelloWorld();

hello.startAll(200);

hello.joinAll();

system.out.println(“Total received events = ” + hello.rcvd);

}

}

Bảng 1.6 Đoạn chương trình nguồn của ví dụ về SSF

1.1.5 Trình tự quá trình giả lập Quá trình giả lập được thực hiện theo trình tự các bước sau:

Starting Simulation:

Quá trình giả lập bắt đầu khi bất kỳ một phương thức startAll() của một

thực thể (Entity) nào được gọi, thông thường xuất phát từ phương thức

main(). Kết quả của phương thức startAll() phụ thuộc vào các phiên bản cài

đặt khác nhau.

Các Entity gọi phương thức startAll() phải được chỉ định 2 tham số về

thời gian: thời gian bắt đầu (start time), với giá trị mặc định là 0 và thời gian

kết thúc (end time) của quá trình giả lập. Tất cả các sự kiện giả lập sẽ được

diễn ra trong khoảng thời gian chỉ định này.

Initialization:

Sau khi startAll() được gọi, phương thức init() sẽ khởi tạo tất cả các

Entity và Process của quá trình giả lập. Cách thức triệu gọi chính xác của

quá trình Initialization phụ thuộc vào các phiên bản cài đặt khác nhau và có

thể xảy ra các trường hợp ngoại lệ (exception) như không có một process

Page 35: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

35

hay Entity nào được khởi tạo. Khi đó, phương thức now() của Entity sẽ trả

về thời gian start time của quá trình giả lập và bắt đầu lại quá trình khởi tạo.

Process Execution:

Sau khi khởi tạo xong, các process có thể được thực thi ngay tại thời

điểm start time thông qua các phương thức action(). Mỗi khi phương thức

action() được thực hiện xong, trình framework sẽ triệu gọi lại phương thức

này liền sau đó và cứ như vậy cho đến khi kết thúc quá trình giả lập (end

time) cho process đó.

Quá trình xử lý cụ thể của phương thức action() phụ thuộc vào các

phiên bản cài đặt khác nhau.

Framework Inner Loop:

SSF cung cấp tính năng xử lý bình đẳng cho tất cả các process trong quá

trình giả lập. Trong quá trình thực thi, các process có thể được gián đoạn

tạm dừng bằng cách gọi các phương thức waitOn() và waitFor(), sau đó sẽ

quay trở lại quá trình xử lý với cùng tham số thời gian của quá trình giả lập.

Start, Pause, Resume, and Join:

Trong nhiều trường hợp, các phương thức startAll(), pauseAll(),

resumeAll() và joinAll() có thể được sử dụng đến.

Phương thức pauseAll() cho phép quá trình giả lập tạm dừng trong một

khoảng thời gian nhất định, sau đó sẽ trở về thời gian hiện tại bằng cách gọi

phương thức resumeAll(), trình giả lập sẽ phục hồi lại trạng thái trước đó và

tiếp tục quá trình giả lập.

Phương thức startAll() khởi tạo lại quá trình giả lập.

Phương thức joinAll() không cho phép thực thi các phương thức

pauseAll() và resumeAll()., quá trình giả lập sẽ được diễn ra cho đến khi kết

thúc.

Sơ đồ diễn giải:

Page 36: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

36

Hình 1.3 Sơ đồ của qui trình giả lập

1.2 SSFNet Model: 1.2.1 Giới thiệu

SSFNet-Scalable Simulation Framework Network Model , là một môi trường

thiết kế các mô hình giả lập mạng hoàn chỉnh với đầy đủ các giao thức hổ trợ

(như IP, TCP, UDP, BGP4, OSPF, …), các thành phần mạng cơ bản (như Router,

Host, Link, LAN, …), và các hổ trợ cấp cao (như multi-protocol, multi-domain

Internet, …).

Đây là một phiên bản cải tiến của SSF, được bắt đầu nghiên cứu và phát triển

vào năm 1999 dựa trên bản cài đặt Raceway.

Page 37: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

37

Hình 1.4 Mô hình SSNet

Hình 1.5 Các tầng xử lý của SSFNet

SSFNet Network models là bộ phần mềm nguồn mở viết trên nền Java SSF

API được quản lý và phân phối bởi tổ chức GNU.

Đội ngũ sáng lập và phát triển SSFNet bao gồm: Andy Ogielski, David Nicol

và Jim Cowie, đây được xem là những người đã đặt nền móng cơ sở cho SSFNet.

Sau này các phiên bản cải tiến và các gói hổ trợ cho SSFNet không ngừng được

nghiên cứu và phát triển, như: BGP4 do BJ Premore phát triển, OSPF do Philip

Kwok, TCP-UDP-Sockets-client/server do Hongbo Liu, …

Các tổ chức bảo hộ của SSFNet bao gồm: DARPA, Institute for Security

Technology Studies at Dartmouth và Renesys Corporation.

Page 38: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

38

1.2.2 Tổ chức thư mục SSFNet SSFNet phiên bản 2.0 (mới nhất) sau khi cài đặt trên đĩa sẽ được tổ chức theo

cây thư mục sau:

Ssfnet | --- doc // Các tài liệu, hướng dẫn | --- lib // Thư viện cài đặt | --- examples // Các mô hình kham thảo

| --- animation // Các mô hình linh hoạt | --- src // Source code của ssfnet | --- ssf | --- Util | | --- random // Bộ phát sinh số ngẫu nhiên | | --- Streams // Quản lý tải dữ liệu lưu thông trên mạng | | --- Plot // Ghi nhận các sự kiện trên mạng | --- Net // Source code của gói SSF.Net, IP, TCPdump | --- Util // Quản lí đánh nhãn IP | --- OS // Source code của gói SSF.OS, IP, TCPdump | | --- UDP // Các gói protocol được phát triển | | --- TCP // … | | --- Socket | | --- BGP4 | | --- OSPFv2 | | --- WWW | | --- Netflow | | --- | --- App // Các phiên bản phân phối ứng dụng. | --- DDoS | --- | --- cern | --- edu | --- com

1.2.3 Các giao thức hổ trợ trong SSFNet SSFNet cung cấp cho người sử dụng rất nhiều cài đặt của các giao thức thông

dụng.

Protocol Status Packet

IP Là giao thức cốt lõi của SSFNet, phiên SSF.OS.IP

Page 39: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

39

bản IPv4,hổ trợ cấu hinh cho các packet

và flow monitoring trong DML

NIC

Network Interface driver-protocol, hổ trợ

cấu hinh cho các packet queue, queue

monitoring và tcpdump trong DML

SSF.Net.NIC

ICMP Xác minh sự tồn tại của các thực thể

mạng SSF.OS.ICMP

TCP

Sử dung các giải thuật TCPTahoe và

TCPReno, có tùy chọn tham số ACK, hổ

trợ truyền nhận dữ liệu giữa client và

server trong DML

SSF.OS.TCP

UDP Hổ trợ truyền nhận dữ liệu giữa

client/server trong DML SSF.OS.UDP

Sockets Sử dụng trong các giao thức TCP và

UDP SSF.OS.Socket

OSPF&OSPFv2 Giao thức định tuyến OSPF, phân phối từ

phiên bản SSFNet 1.4

SSF.OS.OSPF

SSF.OS.OSPFv2

BGP4 Hổ trợ định tuyến giữa các AS trong

DML SSF.OS.BGP4

FTP Hổ trợ việc truyền nhận file trong DML

HTTP Giao thức truyền tin WWW, phiên bản

hiện tại 1.0 và 1.1 SSF.OS.WWW

NetFlow IP flow và flow filter, được cấu hình bởi

nhiều router SSF.OS.NetFlow

Bảng 1.7 Các giao thức trong SSFNet

1.2.4 Các gói thư viện hổ trợ trong SSFNet 1.2.4.1 SSF.OS

Page 40: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

40

Các lớp chính:

Tên lớp Chức năng

ProtocolGraph ProtocolGraph là một đối tượng Entity với các thuộc tính

in-outChannel dùng cho việc trao đổi các PacketEvent

ProtocolSession Định nghĩa các giao thức mới

ProtocolMessage ProtocolMessage đại diện cho các header và tải trọng

(payload) của các gói tin

PacketEvent

PacketEvent là lớp bao bên ngoài, lớp này sẽ chuyển một

ProtocolMessage thành một Event và có thể được gởi đi trên

các in-outChannel

Bảng 1.8 Các gói thư viện hỗ trợ trong SSFNet

Hình 1.6 Mô hình ProtocolGraph

Kiến trúc này làm đơn giản hóa việc cài đặt các giao thức mới, tất cả các cài

đặt về protocol đều được kế thừa từ lớp ProtocolSession mà không làm thay

đổi kiến trúc tầng framework.

Các mô hình giao thức trên Internet được xây dưng trên các gói con của gói

SSF.OS, bao gồm: SSF.OS.IP, SSF.OS.TCP, SSF.OS.OSPF, …

1.2.4.2 SSF.Net

Các lớp chính:

Tên lớp Chức năng

Page 41: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

41

Net

Đối tượng Net nạp các fie cấu hình DML và định nghĩa các

thực thể mạng như Host, Router kèm theo chồng giao thức

tương ứng, các Link giữa Host và Router, các traffic và bộ

phát sinh ngẫu nhiên RandomNumberStream

Host Được kế thừa từ lớp ProtocolGraph, tối thiểu phải được cài

đặt giao thức IP và một NIC-Network Interface Card

Router

Thực hiện việc định tuyến các gói tin lưu thông trên mạng,

cài đặt giống như Host với nhiều NIC và có ProtocolGraph

riêng biệt

NIC Được kế thừa từ lớp ProtocolSession, dùng để kết nối các

thực thể mạng (Link) thông qua in-outChannel

Link Dùng để kết nối các NIC của các thực thể mạng với nhau

Bảng 1.9 Các lớp chính của gói SSF.Net

Hình 1.7 Peer-to-Peer Network

Page 42: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

42

Chương 2

Domain Modeling Language

2.1 Giới thiệu ngôn ngữ DML:

2.1.1 DML là gì? DML-Domain Modeling Language, là một ngôn ngữ đơn giản dùng để mô tả

các mô hình mạng trong môi trường giả lập SSFNet.

Các file DML được viết với một cấu trúc rõ ràng và xác định, diễn tả mô hình

mạng và các thành phần cấu hình nên mạng như Topology, Router, Host, Link,

Routing Protocol, Traffic Pattern, …

Hình 2.1 Các thành phần mạng được sử dung trong DML

Các thành phần mạng được định nghĩa trong một file text đơn thuần có phần

mở rộng là dml. Chúng cũng có thể được định nghĩa trong nhiều file dml khác

nhau với điều kiện là các file đó phải được khai báo với trình giả lập trong quá

trình biên dịch.

Một cách đơn giản ta có thể hiểu ngôn ngữ DML như là một ngôn ngữ đại diện

cho các thực thể của mạng với cấu trúc ngữ pháp được định dạng xác định.

2.1.2 Cấu trúc ngữ pháp của DML

Page 43: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

43

Mỗi file DML bao gồm nhiều dòng lệnh khai báo, mỗi dòng khai báo sẽ tương

ứng với một cặp đối số: từ khóa (keyword) hoặc thuộc tính (attribute) và giá trị

(value), được phân cách nhau bởi khoảng trắng.

Từ khóa là một chuỗi ký tự dùng để xác định ý nghĩa của giá trị. Giá trị là một

chuỗi ký tự liên tục không có khoảng trắng, hoặc là một khai báo con bao gồm

nhiều dòng khai báo khác được chứa trong cặp dấu ngoặc [ ].

Cấu trúc ngữ pháp của DML:

Hình 2.2 Cấu trúc ngữ pháp của DML

Thuật ngữ SSF DML dùng để chỉ các tham số khác nhau của các thành phần

mạng được thiết lập như là các thuộc tính của DML. Các thuộc tính có thể có

kiểu dử liệu là các kiểu dữ liệu cơ bản (float, long, integer, string), có thể là một

thể hiện của đối tượng, hoặc cũng có thể được theo sau là các thuộc tính con

(sub-attribute) của nó.

Ví dụ:

Khi định nghĩa một Host với một giao tiếp Interface, SSFNet sẽ thể hiện như

là một đối tượng Host kèm theo một thể hiên của đối tượng Interface là thuộc

tính con của Host, và trong đối tượng Interface lại có các thuộc tính riêng của

nó (như id, buffer, latency, …).

Chú ý: với những thuộc tính có các thuộc tính con, tên khai báo phải được theo

sau bởi cặp dấu ngoặc [ ].

Ngôn ngữ DML không phân biệt chử hoa hay thường.

Page 44: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

44

DML cũng cung cấp các câu lệnh chú thích nhằm hổ trợ cho người sử dụng

thêm các ghi chú, hướng dẫn vào file DML, các ghi chú này được bắt đầu với ký

tự “#” và kết thúc là một dòng mới. Các sơ đồ mô hình mạng thường được dùng

để hổ trợ cho việc thể hiện topology của mạng đó ở đầu mỗi file DML, và được

viết sau dấu “#”. Trình biên dịch SSFNet sẽ bỏ qua các dòng khai báo này khi

thực thi chương trình.

Ví dụ:

Chú thích sau diễn tả mô hình mạng có topology gồm 3 Client (C100 đến

C102) kết nối đến Server (S201) thông qua Router (R1).

# C100 ---------|

# C101 ---------|------------R1------------S201

# C102 ---------|

2.1.3 Quá trình biên dịch DML Khi biên dịch, bộ giả lập SSFNet sẽ phân tích cấu trúc file DML và xây dựng

nên các thực thể đối tượng đại diện cho các thành phần mạng tương ứng. Tại thời

điểm này, tất cả các thành phần mạng sẽ có một giá trị khởi tạo xác định được

khai báo trong file DML bởi người sử dụng, hoặc chúng sẽ được gán giá trị mặc

định mà SSFNet đã định nghĩa sắn nếu như chưa được khởi tạo.

Hình 2.3 Quá trình khởi tạo các đối tượng giả lập

Sau quá trình khởi tạo trên, file DML sẽ được đóng gói trong một thể hiện của

đối tượng DML. Một thể hiện của đối tượng DML được xem như một mạng hoàn

chỉnh, bao gồm tất cả các thành phần mạng được khai báo trong nó và cả các khai

báo của các mạng con (sub-network).

Page 45: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

45

Hình 2.4 Trình tự biên dịch file DML

2.2 Các bước cài đặt và biên dịch chương trình: 2.2.1 Môi trường Windows

Các file DML được biên dịch bởi trình giả lập SSFNet qua cài đặt Raceway

viết bằng ngôn ngữ Java.

Các bước cài đặt cụ thể như sau:

1. Tải về bộ giả lập SSFNet từ trang chủ của SSFNet : www.ssfnet.org và

cài vào máy (giả sử cài vào ổ đĩa D:\ssfnet).

2. Tải bản jdk phiên bản 1.2 hay mới hơn từ trang Web của Sun :

http://java.sun.com/products/jdk/1.2/docs/tooldocs/tools.html (giả sữ cài vào ổ

đĩa C:\jdk1.2).

3. Thiết lập các tham số cho biến môi trường CLASSPATH:

Vào Control Panel/ System/ System Properties/ Advanced/ chọn

Environment Variables.

Page 46: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

46

Hình 2.5 Hộp thoại cấu hình biến CLASSPATH

Trong biến CLASSPATH khai báo thêm đường dẫn đến các file thư viện

trong thư mục ssfnet\lib, nếu chưa có biến CLASSPATH thì nhấn vào New

để tạo mới.

Hình 2.6 Hộp thoại tạo biến CLASSPATH

Chú ý là bạn cũng phải thêm tham số đường dẫn đến trình biên dịch java,

trong cài đặt này là C:\jdk1.2\bin.

Page 47: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

47

Ta cũng có thể thêm các tham số cho biến CLASSPATH bằng cách gõ

các dòng lệnh sau trong cửa sổ DOS:

set CLASSPATH=D:\ssfnet\lib\raceway.jar;D:\ssfnet\lib\ssfnet.jar

set CLASSPATH=%CLASSPATH%;D:\ssfnet\lib\cernlite.jar

set CLASSPATH=%CLASSPATH%;D:\ssfnet\lib\raceway.jar

set CLASSPATH=%CLASSPATH%;D:\ssfnet\lib\regexp.jar

set CLASSPATH=%CLASSPATH%;D:\ssfnet\src\

4. Biên dịch file DML từ dòng lệnh:

Giã sữ file DML cần biên dịch được lưu tại thư mục

f:\vidu\SimpleLan.dml. Từ cửa sổ dòng lênh DOS bạn vào thư mục gốc

f:\vidu\ và gõ lệnh sau:

java SSF.Net.Net 1000 SimpleLan.dml D:\ssfnet\examples\net.dml

5. Kết quả hiển thị:

Hình 2.7 Kết quả biên dịch file DML

Diễn giải kết quả quá trình biên dịch:

Page 48: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

48

Ở dòng lệnh trên, giá trị 1000 là tham số truyền cho trình biên dịch biết thời

gian kết thúc quá trình giả lập. Tham số D:\ssfnet\examples\net.dml là file

_schema DML SSFNet được sử dụng cho việc tự động làm hợp lệ hóa file

DML SimpleLan.dml nếu như có các khai báo không hợp lệ.

Tại thời điểm bắt đầu quá trình giả lập, đối tượng SSF.Net.Net sẽ sử dụng

các dịch vụ hổ trợ của bộ thư viện DML nạp nội dung các file SimpleLan.dml

và net.dml vào đối tượng cơ sở dữ liệu Configuration, sau đó SSF.Net.Net sẽ

thể hiện và cấu hình một cách tuần tự có hệ thống từ trên xuống tất cả các đối

tượng là các thành phần mạng khai báo trong quá trình giả lập (như các Host,

Router, Protocol, Link, …). Khi tất cả các đối tượng này được thể hiện hoàn

chỉnh, quá trình khởi tạo giá trị cho các thuộc tính bắt đầu (qua trình này được

thực hiện bởi phương thức init() của các thực thể lớp con).

Cuối cùng, đối tượng SSF.Net.Net sẽ gọi phương thức startAll() của nó và

bắt đầu quá trình giả lập với thời gian mốc ban đầu được tính là 0 giây.

Kết quả hiển thị gồm rất nhiều câu thông báo như các sự kiện, các quá trình

trao đổi dữ liệu, quá trình định tuyến, và cả việc tự động phát sinh nhiều block

địa chỉ IP cho các Host và Router, …

2.2.2 Môi trường Unix Trong môi trường Unix-Linux, cách cài đặt cũng tương tự như trong môi

trường Windows, sử dụng biến môi trường –PATH thiết lập các tham số với cấu

hình tương tự như trên.

2.3 Các đối tượng và thuộc tính của DML: DML cung cấp cho người sử dụng gần như tất cả các thành phần mạng với đầy

đủ các thuộc tính cần thiết cho việc mô hình hóa các mạng với cấu trúc lớn và

phức tạp.

Sau đây là bảng mô tả sơ lược các đối tượng và thuộc tính hổ trợ trong DML:

Tên thuộc tính Đối tượng thuộc về Chức năng

Page 49: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

49

id <int> Net, Host, Router,

Interface

Phân biệt các thành phần

mạng với nhau

idrange [from

<int1> to <int2>]

Net, Host, Router,

Interface

Khai báo mãng các đối tượng

có giá trị id từ <int1> đến

<int2>

Net Net, không có Khai báo một Net là một

Network chính hay một sub-

network

Host Net Khai báo một Host trong Net

Router Net Khai báo một Router trong

Net

Interface Host, Router Khai báo một giao tiếp cho

Host hoặc Router

Link [attach <NHI1> … <NHIn>]

Net Tạo một liên kết kết nối giữa

2 giao tiếp của 2 thành phần

mạng (Host và Router) theo

địa chỉ NHI

Graph Host, Router Khai báo chồng giao thức

chạy trên Host và Router

ProtocolSession [ name <str> use <str> … ]

Graph Khai báo protocol cho chồng

giao thức

bitrate <int> Interface Khai báo tốc độ truyền dữ

liệu cho giao tiếp (bits/s)

latency <float> Interface Độ trì hoãn trên giao tiếp (s)

buffer Interface Xác định kích thước vùng

đệm lưu dữ liệu trên giao tiếp

(bytes)

Page 50: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

50

delay <float> Link Độ trể cho mỗi liên kết (s)

nhi_route [dest

default … ]

Host Khai báo default route cho

Host

route [dest default

… ]

Router Khai báo default route cho

Router

interface <int> route, nhi_route Tham số interface cho

default route

next_hop <NHI> route, nhi_route Giao tiếp của next_hop trong

default route

Traffic Net chính (outermost Net) Định nghĩa các tải trên mạng

Pattern Traffic Xác đình các traffic pattern

Client <NHI> Pattern Xác định đối tượng client

trong traffic

Servers Pattern Xác định servers mà client

kết nối đến trong traffic

nhi <NHI> Servers Địa chỉ của servers mà client

kết nối trong traffic

nhi_range [from <NHI1> to <NHI2>]

Servers Địa chỉ của các servers mà

client kết nối trong traffic

Port <int> Servers Số hiệu cổng port ứng dụng

trên server mà client kết nối

Frequency <int> Net chính (outermost Net) Tần số ghi nhận các sự kiện

xảy ra trên mạng

Randomstream [ ] Net chính (outermost Net) Khai báo bộ phát sinh số

ngẫu nhiên sử dụng

Bảng 2.1 Các đối tượng và thuộc tính của DML

2.3.1 Đối tượng Net 2.3.1.1 Định nghĩa và khai báo

Page 51: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

51

Đối tượng Net định nghĩa một thực thể mạng bao gồm các Host, Router,

Link, Traffic và các Network khác (sub-network).

Mỗi mô hình DML đều phải có một đối tượng Net đóng vai trò là đối tượng

chính chứa tất cả các định nghĩa của các thành phần mạng khác.

Cú pháp khai báo:

Net [

id <uniqueID> OR idrange [ from <start range> to <end range>]

frequency <frequencyValue>

randomstream [...]

router [...]

host [...]

link [...]

traffic [

pattern [...]

]

Net […]

]

Chú ý: đối với đối tượng Net khai báo đầu file DML thì không có thuộc

tính id hay idrange, còn tất cả các đối tượng Net còn lại (đóng vai trò là các

sub-network) đều phải có một id để phân biệt với các sub-network khác trong

mạng.

Page 52: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

52

Hình 2.8 Minh họa định nghĩa đối tượng Net

2.3.1.2 Các thuộc tính của Net

Frequency và Randomstream được xem là 2 thuộc tính đặc biệt và quan

trọng của SSFNet, chúng được sử dụng là tham số cho việc thiết lập các thuộc

tính khác cho quá trình giả lập. Các thuộc tính khác như Host, Router, Link,

Protocol, traffic pattern, … sẽ được trình bày ở những phần sau.

Frequency:

Thuộc tính frequency dùng để thiết lập tốc độ thời gian các sự kiện giả

lập được ghi nhận lại, nó được định nghĩa duy nhất một lần trong mỗi file

DML và được dùng chung cho tất cả các sub-network khác trong mô hinh

giả lập.

frequency thiết lập một giá trị vật lý cho việc phân giải thời gian giả lập

như là một số nguyên không thứ nguyên “clock ticks” tính trên mỗi giây giả

lập. Đơn vị này phải nhỏ hơn thời gian xảy ra các sự kiện trong quá trình giả

lập để có thể ghi nhận lại các sự kiện đang xảy ra (như các sự kiện truyền

gói tin trên mạng, trao đổi bảng thông tin định tuyến, …).

Ví du:

Page 53: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

53

Trong mạng LAN thông thường, tốc độ truyền dữ liệu là 100Mbps,

nghĩa là cứ sau mỗi 1/(100.10e6) giây (10 nanogiây) thì một bit được

truyền trên mạng, do đó tần suất phải được thiết lập nhỏ hơn hoặc bằng

10 nanogiây, giả sử ta thiết lập là 1nanogiây thì thuộc tính frequency sẽ

là 1.000.000.000 (“clock ticks”/second). Ta khai báo như sau:

frequency 1000000000

Điều này có nghĩa là mỗi đơn vị thời gian ghi nhận các sự kiện trong

mạng là 1 nanogiây.

Randomstream:

Thuộc tính randomstream dùng để phát sinh các số ngẫu nhiên dùng

trong mô hình mạng. Cũng giống như frequency, thuộc tính randomstream

cũng chỉ được khai báo duy nhất một lần trong mỗi file DML.

Cú pháp khai báo:

randomstream [

generator MersenneTwister

stream “stream generator”

reproducibility_level timeline

]

Thuộc tính generator chỉ ra khai báo sử dụng bộ phát sinh số ngẫu nhiên

nào. SSF cung cấp 2 bộ phát sinh số ngẫu nhiên khá mạnh là:

“MerseMerrcenneTwister” và “Ranlux”.

Giá trị của thuộc tính stream là một chuỗi được sử dụng để gọi quá trình

generator.

Thuộc tính reproducibility_level điều khiển việc chia sẽ bộ phát sinh

randomstream giữa các thành phần của mạng, và cách thức mà các bộ phát

sinh này được tạo ra.

reproducibility_level có các cấp điều khiển sau:

.timeline: cho biết bộ phát sinh số ngẫu nhiên được chia sẽ với tất cả

các host và router trong mạng.

Page 54: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

54

.host: cho biết mỗi host trong mạng, bao gồm cả các host trong các

mạng con (sub-network) sở hữu một bộ phát sinh số ngẫu nhiên của riêng

nó nhưng được chia sẽ với tất cả các giao thức chạy trên host đó.

.distribution: không được chia sẽ với bất kỳ thành phần mạng nào, chỉ

được sử dụng khi có khai báo.

2.3.2 Đối tượng Host 2.3.2.1 Định nghĩa và khai báo

Một đối tượng Host có thể đóng vai trò là một Client hoặc một Server hoặc

vừa là Client vừa là Server.

Host là một thuộc tính của đối tượng Net.

Cú pháp khai báo:

host [

id <uniqueID> OR idrange [ from <start range> to <end range>]

interface [ … ]

graph [ … ]

nhi_route […]

]

Mỗi Host có một id duy nhất dùng để phân biệt với tất cả các Host khác

trong mạng mà nó được khai báo, id có giá trị là một con số nguyên, kiểu

Integer.

Trường hợp có nhiều Host với cấu hình giống nhau (chẳng hạn như các

Client trong một mạng LAN) ta có thể khai báo một mãng các Host với khai

báo phần id như sau:

idrange [ from <star ranget> to < end range> ]

2.3.2.2 Các thuộc tính của Host

Interface:

Mỗi Host có thể có một hay nhiều cổng giao tiếp, mỗi giao tiếp được

định nghĩa bên trong thuộc tính interface của Host đó, có bao nhiêu khai

báo interface thì sẽ có bấy nhiêu giao tiếp trên Host đó.

Page 55: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

55

Cú pháp khai báo:

interface [

id <interfaceID> OR idrange [ from <start range> to <end

range>]

bitrate <transmissionrate>

latency <queuedelay>

buffer <buffersize>

]

Mỗi giao tiếp phải có một id để phân biệt với các giao tiếp khác của Host

và một giá trị bitrate để thiết lập tốc độ truyền-nhận dữ liệu trên giao tiếp

đó. Thuộc tính id còn được dùng như là một tham chiếu khi thực hiện kết

nối đến các thành phần mạng khác. Kiểu dữ liệu của id và bitrate là kiểu

Integer.

Thuộc tính latency là độ trễ thời gian của việc xử lý các gói dữ liệu trên

giao tiếp đó, giá trị mặc định là 0.0 giây. Kiểu dữ liệu là kiểu float.

Thuộc tính buffer xác định giá trị kích thước (bytes) của vùng đệm lưu

dữ liệu trên NIC. Mặc định giá trị là không giới hạn, nghĩa là dữ liệu đến

bao nhiêu cũng được ghi nhận và lưu vào buffer.

Graph:

Thuộc tính graph định nghĩa các giao thức chạy trên Host (TCP, UDP,

IP, …). Một cách dễ hiểu, ta có thể coi quá trình định nghĩa thuộc tính

graph là quá trình khai báo chồng giao thức mà Host đó sẽ sử dụng.

Cú pháp khai báo:

graph [

ProtocolSession [

name <protocolname> use <classpath>

<more attributes>

]

<more protocol sessions>

Page 56: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

56

ProtocolSession [ … ]

]

Thuộc tính ProtocolSession của graph sẽ được trình bày chi tiết ở phần

sau.

Nhi_route:

Thuộc tính nhi_route cấu hình mặc định việc định tuyến các gói dữ liệu

cho Host trong một mạng LAN đến Gateway Router đóng vai trò là Default

Gateway của mạng LAN đó. Khi định nghĩa bất kỳ một Host nào cũng đều

phải kèm theo thuộc tính nhi_route để Host đó có thể liên lạc được với các

Host khác bên ngoài mạng.

Cú pháp khai báo:

nhi_route [

des default interface <idInterfaceHost>

next_hop <idRouter> (<idInterfaceRouter>)

]

Với cách khai báo này, tất cả các gói dữ liệu có địa chỉ đích không cùng

địa chỉ mạng của Host sẽ được mặc định chuyển đến hop kế tiếp là Router

có id chỉ định là <idRouter> với giao tiếp là <idInterfaceRouter>.

2.3.3 Đối tượng Router 2.3.3.1 Định nghĩa và khai báo

Router là một thuộc tính của đối tượng Net. Việc định nghĩa một thành

phần mạng có chứ năng là Router cũng gần giống như định nghĩa một Host

nhưng cách khai báo đơn giản hơn.

Chức năng chính của Router là đinh tuyến các gói dữ liệu lưu thông trên

mạng và liên mạng. Các giao thức định tuyến được cài đặt trong SSFNet sẽ

được trình bày chi tiết trong các phần sau.

Cú pháp khai báo:

router [

id <uniqueID> OR idrange [ from <start range> to <end range>]

Page 57: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

57

interface [ … ]

graph [ … ]

route […]

]

2.3.3.2 Các thuộc tính của Router

Interface:

Cách cấu hình thuộc tính Interface cũng tương tự như cấu hình cho Host.

Cú pháp khai báo:

interface [

id <interfaceID> OR idrange [ from <start range> to <end

range>]

bitrate <transmissionrate>

latency <queuedelay>

buffer <buffersize>

]

Graph:

Trong Router ta có thể sử dụng các giao thức định tuyến khác nhau như

IP, BGP, OSPF, … cho việc định tuyến các gói dữ liệu, các giao thức này

được khai báo trong thuộc tính graph. Cách khai báo tương tự như khai báo

cho Host.

Cú pháp khai báo:

graph [

ProtocolSession [ name ip use SSF.OS.IP ]

ProtocolSession [ name bgp use SSF.OS.BGP4.BGPSession ]

]

Page 58: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

58

Hình 2.9 Ví dụ khai báo chồng giao thức định tuyến cho Router

Route:

Thuộc tính route của Router cũng có chức năng giống như thuộc tính

nhi_route của Host.

Cú pháp khai báo:

route [

dest default interface <idInterfaceRouter>

]

Với khai báo này, tất cả các gói dữ liệu đến Router từ mọi giao tiếp, trừ

giao tiếp có id là <idInterfaceRouter> đều được chuyển qua cổng giao tiếp

có id là <idInterfaceRouter>.

2.3.4 Link 2.3.4.1 Định nghĩa và khai báo

Link là một thuộc tính của đối tượng Net, thuộc tính này thiết lập các liên

kết vật lý theo hướng điểm-điểm (point-to-point) giữa các giao tiếp của các

thành phần mạng (Host và Router).

Chú ý: mỗi giao tiếp chỉ được phép có tối đa một Link.

Cú pháp khai báo:

Page 59: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

59

link [

attach <id>(<interface>) attach <id>(<interface>) delay

<dalay>

]

Hình 2.10 Ví dụ thuộc tính Link

2.3.4.2 Các thuộc tính của Link

Thuộc tính delay là tham số tùy chọn, có thể có hoặc không, giá trị mặc

định là 0.0 giây, kiểu float.

Ta cũng có thể định nghĩa nhiều Link cùng lúc đến một giao tiếp, chẳng

hạn nhiều Client trong một mạng LAN kết nối đến Router đóng vai trò là

Default Gateway của mạng LAN đó. Chú ý rằng liên kết ở đây chỉ có nghĩa về

mặc logic chứ không phải là một liên kết vật lý thực sự, ta nên hiểu rằng các

kết nối này được thông qua một thiết bị tập trung như Hub hay Switch.

Cú pháp khai báo:

link [

attach <RouterID>(<router interface>) #default gateway

attach <Host1ID>(<interface>)

attach <host2ID>(<interface>)

...

Page 60: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

60

attach <hostNID>(<interface>)

]

2.3.5 Traffic 2.3.5.1 Định nghĩa và khai báo

DML cho phép tạo các sự kiện trong quá trình giả lập thông qua thuộc tính

traffic của đối tượng Net, các sự kiện này là các dòng dữ liệu lưu thông trên

mạng.

Cú pháp khai báo:

traffic [

pattern [

client <ClientID>

servers [ nhi <ServerID>(<interface>) OR

nhi_range [ from <ServerID>(<interface>) to

<ServerID>(<interface>) ]

port <portnumber>

]

]

pattern [… ]

]

2.3.5.2 Các thuộc tính của Traffic

Mỗi kết nối giữa một Client và một Server (nhi) hoặc nhiều Server

(nhi_range) được định nghĩa thông qua thuộc tính pattern. Traffic có thể có

một hoặc nhiều pattern.

Thuộc tính servers phải luôn khai báo thuộc tính port đi kèm, đây là số hiệu

cổng ứng dụng mà Server và Client dùng để liên lạc với nhau.

2.3.6 Protocol 2.3.6.1 Định nghĩa và khai báo

Page 61: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

61

Việc định nghĩa các Protocol chạy trên các thành phần mạng (như Host và

Router) là rất quan trọng, vì nó quyết định cách thức mà các thành phần mạng

trao đổi dữ liệu với nhau, các giao thức định tuyến đang được sử dụng (IP,

TCP, UDP hay BGP, OSPF, …), trong mạng đang chạy những ứng dụng gì

(FTP,HTTP hay Web, ...), vai trò của một Host là Server hay là Client, …

Mỗi Protocol được khai báo thông qua thuộc tính ProtocolSession., là một

thuộc tính con của thuộc tính Graph.

Hình 2.11 ProtocolSession

Cú pháp khai báo:

ProtocolSession [

name <protocolname> use <classpath>

<more attributes>

<attribute> [ … ]

]

Chú ý:

Khi khai báo các Protocol chạy trên các đối tượng Host hoặc Router, ta

phải luôn khai báo giao thức IP cho đối tương đó. Nghĩa là trong phần định

nghĩa thuộc tính Graph, phải luôn có dòng khai báo sau:

ProtocolSession [ name ip use SSF.OS.IP ]

2.3.6.2 Các thuộc tính của Protocol

Page 62: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

62

Các Protocol khác nhau có thể có hoặc không có các thuộc tính riêng của

nó.

Các thuộc tính quan trọng của ProtocolSession:

.name <protocolname> use <classpath>: khai báo tên của Protocol

tương ứng với lớp thư viện được sử dụng, name và use thuộc kiểu String.

.port: số hiệu Port ứng dụng, kiểu Integer.

.client_limit: số lượng các Client tối đa được phép kết nối đến Server, giá

trị mặc định là MAXINT, kiểu Integer.

.queue_limit: số lượng tối đa các yêu cầu đang chờ đợi để được kết nối

đến Server, giá trị mặc định là 5, kiểu Integer.

.request_size: kích thước (bytes) của các datagram request, giá trị này

phải như nhau giữa bên gởi và bên nhận, kiểu Integer.

.show_report: cho biết có hiển thị các thông tin ghi nhận được trong các

phiên làm việc (session) hay không, giá trị mặc định là true, kiểu boolean.

.debug: cho biết có hiển thị các thông tin chuẩn đoán của Client/Server

trong quá trình giả lập hay không, giá trị mặc định là false, kiểu boolean.

.tcpinit: TCP là giao thức truyền dữ liệu thông dụng do tính đáng tin cậy

của nó, thuộc tính này dùng để thiết lập cấu hình giao thức TCP cho các

Host, điều này cho phép quá trình giả lập định nghĩa nhiều Host và Router

có thể chạy giao thức TCP chung với các giao thức khác.

Các thuộc tính của tcpinit:

.ISS: Initial Sequence Number, thuộc tính này thiết lập chỉ số tuần

tự khởi tạo các gói dữ liệu của bên gởi và bên nhận, giá trị mặc định là

0, kiểu Integer.

.MSS: Maximum Segment Size, là kích thước (bytes) lớn nhất của

một segment, giá trị mặc định là 1024, kiểu Integer. SSFNet không

cho phép người sử dụng tự thiết lập các thông số RMSS (Receiver

MSS) và SMSS (Sender MSS) mà 2 thông số này được lấy từ giá trị

Page 63: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

63

của thuộc tính MSS nhằm tránh việc sai lệch về MSS giữa bên gởi và

bên nhận.

.RcvWndSize và SendWndSize: Receive Window Size và Send

Window Size, kích thước khung cửa sổ trượt của bên gởi và bên nhận

dữ liệu, tính theo đơn vị MSS, giá trị mặc định là 16, kiểu Integer.

.SendBufferSize: Send Buffer Size, kích thước vùng đệm gởi dữ

liệu, tính theo đơn vị MSS, giá trị mặc định là 16, kiểu Integer.

.MaxConWnd: Maximum Congestion Control Window Size, giá trị

mặc định là MAX_INT/65535, kiểu Integer.

.MaxRexmitTimes: Maximum Retransmission Times, số lần tối đa

được phép truyền lại, giá trị mặc định là 12, kiểu Integer.

.AdvertisedWnd: Advertised Receive Window Size, kiểu Integer.

.conThresh: Threshhold of the Control Window Size ( called

ssthresh in BSD).

.fast_recovery: SSFNet cài đặt 2 phiên bản TCP, TCPReno và

TCPTahoe. Nếu fast_recovery có giá trị là true thì TCP sử dụng là

TCPReno, còn nếu là fasle thì TCP sử dụng là TCPTahoe.

.TCP_SLOW_INTERVAL: bộ định thời gian chuẩn, đơn vị tính là

giây, kiểu float.

.TCP_FAST_INTERVAL: thời gian (s) chờ các gói tin ACK, kiểu

float.

.MSL: Maximum Segment Lifetime, thời gian (s) sống của các

segment, kiểu long.

.MaxIdleTime: Maximum Idle Time, đơn vị tính là giây, kiểu long.

.delayed_ack: các báo nhận được trùy hoãn, tùy chọn này cho phép

thêm các thuật toán xử lý các báo nhận ACK vào giao thức TCP, kiểu

boolean.

.start_time: thời gian (s) bắt đầu gởi các request đến Server, giá trị

mặc định là 1, kiểu long.

Page 64: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

64

.start_window: Start Time Window (s), giá trị mặc định là 0, kiểu

long. Thuộc tính này dùng làm tham số thời gian để gởi request đến

Server theo giá trị thời gian được chọn ngẫu nhiên nằm trong khoảng

[start_time, start_time + start_window], nếu start_window=0 thì thời

gian bắt đầu gởi đến server đúng bằng start_time.

.file_size: kích thước file (bytes) được yêu cầu, giá trị mặc định là

1000, kiểu Integer.

.random_file_size: FTP Client hổ trợ các request với kích file được

tạo ngẫu nhiên. Thuộc tính này cho phép Client phát sinh các request

đến Server yêu cầu một file với kích thước được tạo ngẫu nhiên dựa

trên các tham số khai báo của nó.

Chú ý là chỉ được khai báo một trong hai thuộc tính file_size

hoặc random_file_size.

Cú pháp khai báo:

random_file_size [

distribution [

#distribution-dependent parameters.

name “<distribution class name>”

lambda “<floating point value>”# =1/(distribution

mean)

]

]

Các tham số của thuộc tính name gồm 21 tham số: Beta,

Binomial, BreitWigner, BreitWignerMeanSquare, ChiSquare,

Exponential, Gamma, HyperGeometric, Hyperbolic, Logarithmic,

NegativeBinomial, Normal, Pareto, ParetoII,Poisson, PoissonSlow,

Uniform, VonMises, Weibull, Wald, Zeta.

Các tham số này được định nghĩa trong lớp

SSF.Util.Random.RandomStream

Page 65: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

65

.off_time: việc dùng thuộc tính random_file_size khiến cho mỗi

request FTP Client tự động phát sinh một file với kích thước ngẫu

nhiên và được gởi đến Server. Để cho phép gởi nhiều request một cách

ngẫu nhiên, ta có thể khai báo thêm thuộc tính off_time hoặc

random_off_time.

.random_off_time: với thuộc tính này, FTP Client có thể gởi một

request với một file ngẫu nhiên nào đó.

Cú pháp khai báo:

random_off_time [

distribution [

#distribution-dependent parameters.

name “<distribution class name>”

lambda “<floating point value>”# =1/(distribution

mean)

]

]

Tất cả các thuộc tính trên đều được cài đặt cho 2 phiên bản TCPReno và

TCPTahoe. Lý thuyết về 2 giải thuật trên sẽ được trình bày ở phần sau.

2.3.6.3 Cấu hình một Host là FTP Client

Chồng giao thức cấu hình cho một Host có vai trò là một FTP Client:

Hình 2.12 Chồng giao thức của một FTP Client

Định nghĩa chồng giao thức trong DML:

Page 66: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

66

graph [

ProtocolSession [ name client use SSF.OS.TCP.test.tcpClient

start_time <value>

start_window <value>

file_size <value>

request_size <value>

show_report <true/false>

debug <true/false>

]

ProtocolSession [ name socket use SSF.OS.Socket.socketMaster]

ProtocolSession [ name tcp use SSF.OS.TCP.tcpsessionMaster

tcpinit [

<TCP attributes>

]

]

ProtocolSession [ name ip use SSF.OS.IP ]

]

2.3.6.4 Cấu hình một Host là FTP Server

Chồng giao thức cấu hình cho một Host có vai trò là một FTP Server:

Hình 2.13 Chồng giao thức của một FTP Server

Định nghĩa chồng giao thức trong DML:

Page 67: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

67

graph [

ProtocolSession [ name server use SSF.OS.TCP.test.tcpServer

port <value>

client_limit <value>

request_size <value>

show_report <true/false>

debug <true/false>

]

ProtocolSession [ name socket use SSF.OS.Socket.socketMaster]

ProtocolSession [ name tcp use SSF.OS.TCP.tcpsessionMaster

tcpinit [

<TCP attributes>

]

]

ProtocolSession [ name ip use SSF.OS.IP ]

]

2.4 Giao thức BGP và SSFNet: 2.4.1 Giới thiệu về giao thức BGP

BGP-Boder Gateway Protocol là một giao thức được sử dụng cho việc trao đổi

các thông tin định tuyến giữa các inter-Autonomous System (AS).

Một AS là một Network hay một nhóm các Network chịu sự quản lý tập trung

bởi một tổ chức xác định, và có các chính sách định tuyến riêng cho AS đó.

Page 68: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

68

Hình 2.14 Sơ đồ kiến trúc của quá trình định tuyến động

Các AS kết nối thông qua các Boundary Router, mỗi Boundary Router biết

được thông tin về khoảng cách từ nó đến các AS khác, thông tin này được phân

bố cho tất cả các Backbone Router dùng cho việc định tuyến đến một Network

đích trong một AS khác.

BGP được sử dụng thường xuyên trong việc trao đổi các thông tin định tuyến

giữa các ISPs–Internet Service Providers trên mạng Internet. Nếu BGP được sử

dụng trong việc định tuyến giữa nhiều AS khác nhau, nó được xem là một giao

thức EBGP – External BGP. Nếu BGP được dùng để định tuyến trong cùng một

AS, nó là giao thức IBGP – Internal BGP.

Page 69: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

69

Hình 2.15 EBGP và IBGP

BGP chạy trên giao thức TCP và được kết nối thông qua cổng 179. Hai hệ

thống AS thường xuyên mở kết nối và trao đổi các thông tin về khả năng “đến

được” (reachability) với các AS khác của chúng.

Hình 2.16 Quá trình xử lý định tuyến của BGP

2.4.2 Các yếu tố đánh giá BGP Các tham số đánh giá tính hiệu quả của giao thức BGP:

.AS_PATH

.NEXT_HOP

Page 70: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

70

.ORIGIN

.MULTI_EXIT_DISC (Multi_exit discriminator)

.LOCAL_PREF (local preference)

Minh họa thuộc tính AS_PATH:

Hình 2.17 Thuộc tính AS_PATH

Minh họa thuộc tính NEXT_HOP:

Page 71: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

71

Hình 2.18 Thuộc tính NEXT_HOP

2.4.3 BGP trong SSFNet 2.4.3.1 Các mô hình tùy chọn cấu hình BGP

SSFNet cung cấp cho chúng ta một cài đặt rất tốt về giao thức BGP. Giao

thức này được SSFNet cài đặt chi tiết trong gói SSF.OS.BGP4. BGP-4 là

phiên bản version 4.0 được phát triển từ phiên bản BGP củ và được công bố

vào tháng 3.1995.

SSFNet cung cấp cho người sử dụng 2 tùy chọn cấu hình BGP:

.Cấu hình tự động (autoconfig = true) bởi SSFNet.

.Do người sử dụng tự cấu hình riêng (autoconfig = false).

Với mô hình cấu hình tự động, trình giả lập sẽ tự động cấu hình cho giao

thức BGP trong khi biên dịch. Ưu điểm của cách cấu hình này thể hiện ở tính

đơn giản và ổn định, đảm bảo không có lỗi xảy ra lúc thực thi chương trình,

đặc biệt là khi tiến hành giả lập trên những mạng có cấu trúc lớn, phức tạp.

Trong trường hợp cấu hình BGP là autoconfig, tất cả các Router đang chạy

giao thức BGP đều được kết nối theo kiểu point-to-point đến một Router đã

được SSFNet cấu hình mặc định sẳn. Điều trở ngại trong mô hình này là

SSFNet không cho phép người sử dụng thay đổi bất kỳ một thuộc tính nào của

giao thức BGP. Đây được xem là một hạn chế của việc cài đặt nhưng cũng

được chấp nhận vì nó đảm bảo tính an toàn khi viết mã lệnh cho người sử

dụng.

Với cách cấu hình thứ hai, giá trị của thuộc tính autoconfig=false, lúc này

người sử dụng phải tự cấu hình cho các thuộc tính của BGP nhằm phụ hợp cho

các yêu cầu và mục đích riêng. Tùy chọn này được dùng khi người sử dụng

muốn xem các kết quả khác nhau khi thay đổi giá trị của các thuộc tính trong

giao thức BGP.

2.4.3.2 Tạo các sub-network và các AS

Sub-network:

Page 72: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

72

Cú pháp khai báo:

Net [ #start definition of the DML network

Net [ #start definition of the sub-network

Define a gateway router in the sub-network

Define hosts in the sub-network.

Connect the gateway to the hosts with a point-to-point link.

] #end the definition of the sub-network

define others components in the DML network.

Etc..

] #end the definition of the DML network

Việc tạo các sub-network đơn thuần mà không có chỉ định cụ thể gì thêm

thì các network này chỉ được xem như là các network “con” của network

“cha” mà nó được khai báo chứ chưa trở thành một AS thực sự.

Autonomuos System:

Để phân biệt một sub-network và một AS, SSF cung cấp cho ta thuộc

tính AS_Status của đối tượng Net để giải quyết điều này.

Nếu AS_Status = “boundary” thì sub-network là một AS riêng biệt, còn

nếu không thì nó chỉ là một sub-network bình thường.

Cú pháp khai báo:

Net [

id 0

AS_Status boundary

]

2.4.3.3 Chồng giao thức cấu hình cho Boundary Router

Như đã nói ở trên, các AS trao đổi thông tin định tuyến cho nhau thông qua

các Boundary Router.

Page 73: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

73

Hình 2.19 Chồng giao thức cho một Boundary Router

SSFNet cấu hình chồng giao thức tương ứng cho các Router này như sau:

graph [

ProtocolSession[ name bgp use SSF.OS.BGP4.BGPSession ]

ProtocolSession[ name socket use SSF.OS.Socket.socketMaster]

ProtocolSession[ name tcp use SSF.OS.TCP.tcpSessionMaster]

ProtocolSession[ name ip use SSF.OS.IP]

]

2.4.3.4 Các thuộc tính của BGP

Cấu hình cho các thuộc tính của BGP:

.autoconfig: tham số tùy chọn mô hình cấu hình BGP, kiểu boolean, giá

trị mặc định là true.

.connretry_time: Connect Retry Timer Interval, là khoảng thời gian (s)

được trùy hoãn cho một kết nối hỏng, kiểu Integer, giá trị mặc định trong

mô hình autoconfig là 120.

.min_as_orig_time: Minimum AS Origination Interval, là khoảng thời

gian (s) tối thiểu giữa 2 lần cập nhật các thông tin được gởi từ BGP speaker

đến AS cục bộ, giá trị mặc định trong mô hình autoconfig là 15, kiểu

Integer.

.reflector: thuộc tính này cho biết router BGP có phải là một route

reflector hay không, giá trị mặc định trong mô hình autoconfig là false, kiểu

boolean.

Page 74: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

74

.neighbor: thuộc tính này sẽ xác định các BGP ngang hàng sẽ được trao

đổi các thông tin định tuyến với router BGP hiện tại.

Cú pháp khai báo như sau:

neighbor [

as <Net ID> address <destination router ID>(<interface>)

use_return_address <this Router's ID>(<interface>)

hold_time <value>

keep_alive_time <value>

mrai <value>

infilter [… ]

outfilter [… ]

]

Các thuộc tính của neighbor:

.hold_time: Hold Time Interval, là khoảng thời gian (s) duy trì

liên lạc với các AS láng giềng nhằm giữ cho kết nối không bị

mất, giá trị mặc định trong mô hình autoconfig là 90, kiểu

Integer.

.keep_alive_time: Keep Alive Time Interval, là khoảng thời

gian (s) tối đa được trì hoản để hủy một kết nối với 1 AS, giá trị

mặc định trong mô hình autoconfig là 30, kiểu Integer.

.mrai: Mnimum Route Advertisement Interval, kiểu Integer,

đơn vị tính bằng giây.

.infilter, outfilter: vẩn còn trong giai đoạn phát triển, 2 thuộc

tính này đóng gói các chính sách định tuyến bên trong và bên

ngoài AS.

Các tùy chọn debug của BGP:

bgpoptions [

show_id_data < true/false>

show_rcv_update < true/false>

Page 75: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

75

show_snd_update < true/false>

]

2.5 Các từ khóa hổ trợ trong DML: Khi tính phức tạp và cồng kềnh của file DML tăng lên do sự gia tăng của các

thành phần mạng và mật độ tải của mạng, chúng ta bắt đầu nghỉ đến việc sử dụng

các hổ trợ của DML.

DML cung cấp cho chúng ta một vài từ khóa hổ trợ cho công việc thiết kế trở

nên dễ dàng và mau lẹ hơn. Các từ khóa chính: _extends, _find, _dictionary.

2.5.1 Từ khóa _extend Đây là một từ khóa đặc biệt của DML, nó giúp ta có thể sử dụng lại các đoạn

khai báo trước đó có tính chất được lặp đi lặp lại nhiều lần.

Cú pháp khai báo:

_extend <AttrributeName>

Chú ý: khi sử dụng từ khóa _extend, phải lưu ý trường hợp xoay vòng các sự

kiện tham chiếu.

Ví dụ :

AttributeA [

_extends AttributeB ]

AttributeB [

_extends AttributeA ]

Đây là lỗi mà SSFNet không thể phát hiện được, mặc dù quá trình giả lập vẫn

được thực thi nhưng không cho kết quả như mong muốn.

2.5.2 Từ khóa _find Cú pháp khai báo:

_find <keypath>

Từ khóa _find được sử dụng cho việc thay thế các thuộc tính và giá trị bên

trong của nó dựa vào tham số đường dẫn đầy đủ <keypath>.

_extend và _find có chức năng tương tự nhau.

Page 76: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

76

2.5.3 Từ khóa _dictionary Cú pháp khai báo:

dictionary [

<your definitions here>

]

Từ khóa dictionary được dùng để định nghĩa các thuộc tính hay các giá trị

thường xuyên được sử dụng trong quá trình viết script giả lập.

Chú ý rằng đây không phải là từ khóa do SSFNet qui định mà do người sử

dụng tự đặt, do đó ta có thể đặt với một tên khác nào đó cũng được.

2.5.4 Ví dụ minh họa Định nghĩa khóa dictionary:

dictionary [

1Gbps [ bitrate 1000000000

latency 0.00001 ]

tcpinit [

ISS 0

MSS 1460

TCP_FAST_INTERVAL 0.500

show_report true

]

]

Khai báo Interface và Protocol có sử dụng định nghĩa trong dictionary:

interface [ id 0

buffer 192000

_extend .dictionary.1Gbps ]

ProtocolSession [

name tcp use SSF.OS.TCP.tcpSessionMaster

_find .dictionary.tcpinit

Page 77: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

77

]

Kết quả của thuộc tính interface và ProtocolSession sẽ là:

interface [ id 0

buffer 192000

bitrate 1000000000 # bits/s

latency 0.00001

]

ProtocolSession [

name tcp use SSF.OS.TCP.tcpSessionMaster

tcpinit [

ISS 0

MSS 1460

TCP_FAST_INTERVAL 0.500

sh ow_report true

]

]

Page 78: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

78

PHẦN 2

CÔNG CỤ GIẢ LẬP MẠNG NS-2 VÀ NGÔN NGỮ

TCL

Chương 3

Công cụ giả lập mạng NS-2

3.1 Tổng quan về NS-2:

NS-2-Network Simulator Version 2, là một công cụ giả lập mạng được sử

dụng rất phổ biến trong các nghiên cứu khoa học về mạng, nó được phát triển

trong một phần của dự án VINT-Virtual Internet Testbed được viết bằng ngôn

ngữ C++ và sử dụng ngôn ngữ tạo kịch bản OTcl để tạo các cấu hình ở mức giao

diện bên trên. Đây là dự án được sự cộng tác của nhiều viện nghiên cứu như UC

Berkeley, USC/ISI, LBL, AT&T, XEROX PARC và ETH.

Mục đích của NS-2 là tạo ra một môi trường giả lập cho việc nghiên cứu, kiểm

tra, thiết kế các giao thức, các kiến trúc mới, so sánh các giao thức và tạo ra các

mô hình mạng phức tạp.

Phiên bản thứ nhất của NS được phát triển vào năm 1995 và phiên bản thứ hai

ra đời vào năm 1996. NS-2 là phần mềm mã nguồn mở có thể chạy được trên nền

của Linux và Window.

3.2 Kiến trúc của NS-2: NS-2 là một công cụ giả lập hướng đối tượng được viết bằng ngôn ngữ C++

trong phần nhân và ngôn ngữ thông dịch OTcl ở phần giao tiếp.

Bộ giả lập NS-2 bao gồm 3 module chính:

► Module nhân được gọi là Compiled Hierarchy.

Page 79: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

79

► Module giao tiếp được gọi là Interpreted Hierarchy.

► Module liên kết là module có tác dụng như một lớp keo dùng để gắn kết

các lớp, các đối tượng, các biến tương ứng trong hai module nhân và module

giao tiếp với nhau.

Kiến trúc chung của hai module nhân và module giao tiếp bao gồm một hệ

thống phân cấp các lớp có quan hệ kế thừa nhau. Hai module này có quan hệ mật

thiết với nhau: một lớp trong module giao tiếp OTcl có ánh xạ một-một với lớp

tương ứng trong module nhân thông qua module liên kết như đã trình bày ở trên.

Lớp gốc của hệ thống phân cấp này là lớp TclObject. Khi người dùng tạo một đối

tượng trong trình thông dịch OTcl, thì trình thông dịch này sẽ thông dịch đối

tượng vừa được tạo, sau đó ánh xạ đến đối tượng tương ứng trong module nhân.

Các lớp trong module giao tiếp OTcl sẽ tự động thiết lập các ánh xạ tương ứng

đến các lớp trong module nhân thông qua lớp TclClass của module liên kết.

Hình 3.1 Kiến trúc tổng quan của NS

NS được xây dựng trên nền của hai ngôn ngữ là OTcl và ngôn ngữ C++ nhằm

để đáp ứng yêu cầu của môi trường giả lập: các thành phần mạng có tính chất chi

tiết bên dưới hoặc chi tiết cài đặt của các giao thức, các thành phần mạng đòi hỏi

cần có một ngôn ngữ có tốc độ xử lý cao, trong khi đó, môi trường tương tác với

người dùng cần phải đơn giản, dễ sử dụng trong việc thiết lập, cấu hình các tham

số của các đối tượng và có thể thay đổi một cách linh hoạt.

C++ có đặc điểm là chạy nhanh nhưng khá khó trong việc viết code và thay

đổi mã nguồn nên thích hợp cho việc cài đặt các chi tiết bên dưới. OTcl thì ngược

Page 80: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

80

lại, chạy chậm nhưng dễ dàng viết code và thay đổi cấu hình nên dùng để tạo

các giao tiếp với người dùng.

Do đó, NS đã tận dụng các ưu điểm của hai ngôn ngữ trên để tích hợp vào

trong môi trường giả lập của mình: C++ được dùng để cài đặt trong phần nhân

của NS, xây dựng nên kiến trúc của nhân, thiết kế chi tiết của các giao thức, các

thành phần mạng, xử lý các tiến trình trên các node, … Trong khi OTcl dùng để

xây dựng cấu trúc, topology, cấu hình các tham số cho mạng được dùng cho việc

giả lập của người dùng.

Hình 3.2 Mô hình đơn giản của NS

Tùy theo mục đích của người sử dụng trong việc tạo kịch bản giả lập mạng mà

kết quả giả lập có thể được lưu trữ lại trong các file để các ứng dụng khác phân

tích.

Các ứng dụng dùng để phân tích kịch bản giả lập trong NS-2:

1. Ứng dụng NAM-Network Animator Tool phân tích các file .nam.

2. Ứng dụng XGraph phân tích các file .tr.

Hình 3.3 Mô hình hoạt động của NS-2

Page 81: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

81

3.3 Các thành phần cấu hình mạng trong NS-2: 3.3.1 Lớp Simulator

Trong bộ công cụ giả lập NS-2, lớp quan trọng nhất là lớp Simulator. Nó cung

cấp các thủ tục, giao tiếp để tạo, quản lý topology và lưu giữ các tham số cấu

hình của các thành phần trong topology. Thông thường, các kịch bản giả lập

thường bắt đầu bằng việc tạo một thể nghiệm của lớp Simulator để điều khiển và

thực hiện việc giả lập, sau đó gọi các phương thức để tạo các node, topo và cấu

hình cho các node, các liên kết, ứng dụng …

3.3.1.1 Khởi tạo đối tượng Simulator

Cú pháp để khởi tạo một đối tượng Simulator như sau:

set ten_doi_tuong [new Simulator]

Ví dụ : set ns_ [new Simulator]

Sau khi khởi tạo đối tượng thì thủ tục khởi tạo sẽ thực hiện các công việc:

+ Khởi tạo định dạng của gói dữ liệu (gọi hàm create_packetformat).

+ Tạo một bộ lập lịch (scheduler) , mặc định là calendar scheduler.

+ Tạo một “null agent” . null agent được tạo bằng cú pháp:

set nullAgent_ [new Agent/Null]

3.3.1.2 Các bộ lập lịch và các sự kiện

Hiện tại NS-2 cung cấp bốn bộ lập lịch cho công cụ giả lập:

+ List scheduler.

+ Heap Scheduler.

+ Calendar scheduler.

+ Real time scheduler.

Qui trình làm việc của bộ lập lịch như sau: Bộ lập lịch các sự kiện sẽ chọn

sự kiện kế tiếp gần nhất trong bộ lập lịch để thực thi, sau khi thực thi xong sẽ

trở về để thực thi sự kiện kế tiếp. Đơn vị thời gian dùng trong bộ lập lịch được

tính bằng giây. Hiện tại, bộ công cụ giả lập chỉ sử dụng tiến trình đơn, tức là

tại một thời điểm chỉ có một sự kiện được xử lý. Nếu có nhiều sự kiện trong bộ

Page 82: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

82

lập lịch thì sự kiện nào vào trước sẽ được xử lý trước. Trong mỗi kịch bản giả

lập chỉ được sử dụng một bộ lập lịch.

Bộ lập lịch List Scheduler (lớp Scheduler/List) được cài đăt dựa trên cấu

trúc dữ liệu danh sách liên kết đơn. Bộ lập lịch này dùng thời gian để phân biệt

thứ tự các sự kiện vì vậy khi thêm hoặc xóa một sự kiện cần phải tìm kiếm cả

danh sách để chọn một entry thích hợp. Khi chọn sự kiện kế tiếp để thực thi thì

cần phải dời các sự kiện còn lại lên một vị trí.

Bộ lập lịch Heap Scheduler (lớp Scheduler/Heap) dùng cấu trúc dữ liệu

Heap để cài đặt. Cấu trúc dữ liệu này cao cấp hơn so với danh sách liên kết vì

lưu trữ được nhiều sự kiện hơn. Độ phức tạp của các thao tác thêm, xóa bằng

O(log n) tương ứng với n sự kiện.

Bộ lập lịch Calendar Scheduler (lớp Scheduler/Calendar) sử dụng cấu trúc

dữ liệu tương tự như lịch tính dương lịch, mà các sự kiện cùng ngày, tháng của

các năm khác nhau có thể được lưu trữ trong cùng một ngày.

Bộ lập lịch thời gian thực Real-Time Scheduler (lớp Scheduler/RealTime)

đồng bộ thực thi các sự kiện trong thời gian thực. Bộ lập lịch này vẫn đang

trong giai đoạn phát triển.

Định nghĩa Cấu trúc Heap

Heap là cây nhị phân gần đầy được cài đặt bằng mảng một chiều với các

node trên heap có nội dung nhỏ hơn hoặc bằng nội dung của node cha. Heap

này được gọi là heap giảm (descending heap ). Heap tăng ( ascending heap )

thì ngược lại: các node trên heap có nội dung lớn hơn hoặc bằng nội dung của

node cha.

Page 83: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

83

Hình 3.4 Cấu trúc Heap giảm

Cấu trúc heap giảm được cài đặt bằng cây nhị phân và mảng một chiều

3.3.1.3 Các phương thức khác

Lớp Simulator còn cung cấp thêm một số phương thức cho việc cài đặt các

thông số cho việc giả lập.

Các phương thức này bao gồm ba loại:

+ Các phương thức tạo, quản lý các node, topo và các liên kết.

+ Các phương thức thực hiện việc ghi nhận kết quả của quá trình giả lập.

+ Các phương thức trợ giúp tương tác với bộ lập lịch.

Các phương thức bao gồm:

Simulator instproc now: trả về thời gian hiện tại.

Simulator instproc at args: thực thi sự kiện ở thời điểm cụ thể.

Simulator instproc cancel args: hủy bỏ việc thực thi sự kiện.

Simulator instproc run args: bắt đầu khởi động bộ lập lịch.

Simulator instproc halt: dừng bộ lập lịch.

Simulator instproc flush-trace: flush all trace object write buffers.

Simulator instproc create-trace type files src dst: tạo đối tượng trace.

Simulator instproc create_packetformat: thiết lập định dạng gói dữ liệu.

3.3.1.4 Tóm tắt

Để tạo một kịch bản giả lập trong NS-2, ta cần tạo một đối tượng Simulator

và thiết lập các thông số cần thiết:

set ns_ [new Simulator]

Page 84: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

84

$ns_ use-scheduler Heap

$ns_ at 300 “$self ketthuc”

Trong đoạn Tcl này, trước tiên, ta tạo một đối tượng của lớp Simulator, sau

đó thay đổi bộ lập lịch mặc định sang bộ lập lịch Heap Scheduler và cuối cùng

bộ lập lịch sẽ ghi nhận tại thời điểm giây thứ 300 sẽ thực thi hàm “ketthuc”.

3.3.2 Cấu hình Node 3.3.2.1 Tạo Node

Để tạo một node trong Tcl ta dùng cú pháp:

set ns_ [new Simulator]

$ns node

Một node trong NS chứa ít nhất các thành phần sau:

+ Địa chỉ hoặc số ID, giá trị này khởi tạo bằng 0, và tuần tự tăng 1 đơn vị

khi có một node mới được tạo ra.

+ Danh sách các node láng giềng của nó (neighbor_).

+ Danh sách các Agent (agent_ ).

+ Loại node (nodetype_ ).

+ Module định tuyến của node.

3.3.2.2 Cấu hình cho MobileNode

Cấu hình cho node chủ yếu tập trung vào Wireless. Bao gồm các thông số

sau: loại cấu trúc địa chỉ sử dụng là địa chỉ đẳng cấp hay phân cấp, định nghĩa

các thành phần mạng cho mobilenode: địa chỉ MAC, loại Antenna, sóng

truyền, lựa chọn giao thức định tuyến, định nghĩa mô hình năng lượng, …

set topo [new Topography]

$ns_ node-config -addressingType hierarchical \

-adhocRouting AODV \

-llType LL \

-macType MAC/802_11 \

-ifqType Queue/DropTail/PriQueue \

Page 85: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

85

-ifqLen 50 \

-antType Antenna/OmniAntenna \

-propType Propagation/TwoRayGround \

-phyType Phy/WirelessPhy \

-topologyInstance $topo \

-channel Channel/WirelessChannel \

-agentTrace ON \

-routerTrace ON \

-macTrace OFF \

-movementTrace OFF

Giá trị mặc định của các tham số trên là NULL, ngoại trừ addressingType

có giá trị mặc định là flat.

3.3.2.3 Cấu hình cho Base-Station Node

Cấu hình cho Base-Station Node tương tự như cấu hình của WirelessNode

tuy nhiên, Base-Station có khả năng định tuyến đến mạng có dây trong khi

MobileNode thì không có khả năng đó. Do đó, để cấu hình cho Base-Station

Node, ta thêm thuộc tính:

$ns_ node-config –wiredRouting ON

3.3.2.4 Bảng các tham số cấu hình cho Node

Option Các giá trị Giá trị

default

Chú thích

addressType Flat, hierarchical Flat Loại địa chỉ của

node

MPLS ON ,OFF OFF Chuyển mạch nhãn đa giao thức

wiredRouting ON , OFF OFF Định tuyến

trong mạng

Page 86: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

86

không dây

llType LL “” Loại LinkLayer

macType Mac/802.11 , Mac/Tdma “” Loại địa chỉ

MAC

ifqType Queue/DropTail,

Queue/DropTail/PriQueue

“” Kiểu bộ nhớ

trong card mạng

phyType Phy/WirelessPhy “” Loại card mạng

adhocRouting DIFFUSION/RATE, TORA,

DIFFUSION/PROB, DSDV,

DSR , FLOODING, AODV,

OMNIMCAST,

“” Giao thức định

tuyến

propType Propagation/TwoRayGround,

Propagation/Shadowing

“” Cách thức

truyền dữ liệu

qua mạng

propInstance Propagation/TwoRayGround,

Propagation/Shadowing

“” Thể hiện của đối

tượng propType

antType Antenna/OmniAntennna “” Loại antenna

Channel Channel/WirelessChannel “” Kênh truyền

topoInstance <topology file> “” thể hiện của

topo mạng

mobileIP ON , OFF OFF sử dụng kỹ thuật

MobileIP?

energyModel EnergyModel “” Mô hình năng

lượng

initialEnergy <value in Joules> “” Khởi tạo giá trị

năng lượng cho

node

Page 87: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

87

rxPower <value in W> “” Giá trị năng

lượng của node

txPower <value in W> “” Giá trị năng

lượng của node

idlePower <value in W> “”

agentTrace ON , OFF OFF Ghi nhận các

thông tin cho

việc nghiên cứu,

kiểm tra

routerTrace ON , OFF OFF “”

macTrace ON , OFF OFF “”

movementTrace ON , OFF OFF “”

errProc UniformErrorProc “” “”

toraDebug ON , OFF OFF “”

Bảng 3.1 Các tham số cấu hình cho MobileNode

3.3.3 Tạo liên kết cho các Node

Trong NS-2 có hai loại liên kết các node:

+ Liên kết đơn công.

+ Liên kết song công.

Liên kết đơn công là loại liên kết theo kiểu point-to-point giữa hai node mà

chỉ có một node truyền và một node nhận. Lớp tương ứng trong OTcl của liên kết

đơn công là lớp SimpleLink. Cú pháp của liên kết đơn công giữa hai node:

set ns_ [new Simulator]

$ns_ simplex-link <node0> <node1> <bandwidth><delay>< queue_type>

Câu lệnh trên tạo ra một liên kết từ node0 đến node1 với một giá trị băng

thông bandwidth, thời gian trễ giữa hai lần truyền delay và liên kết sử dụng loại

hàng đợi queue_type. Loại hàng đợi đã được đề cập ở trên.

Page 88: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

88

Liên kết song công cũng là liên kết point-to-point giữa hai node nhưng mỗi

node đều có khả năng vừa truyền và vừa nhận, tức liên kết song công là hai liên

kết đơn công. Cú pháp cũng tương tự như liên kết đơn công:

set ns_ [new Simulator]

$ns_ duplex-link <node0> <node1> <bandwidth> <delay> < queue_type>

3.4 Các Agent trong NS-2: 3.4.1 Giới thiệu

Agent hay có thể gọi là giao thức ở tầng mạng hoặc ở tầng vận tải dùng để xử

lý các gói tin khi node nhận được. lớp Agent được cài đặt một phần trong OTcl

và một phần trong C++. Trong OTcl là file ~ns/tcl/ns-agent.tcl, trong C++ là các

file ~ns/agent.cc và ~ns/agent.h.

Các Agent được cài đặt trong công cụ giả lập này là:

Tên Agent Chú thích

TCP TCP “Tahoe”

TCP/Reno TCP “Reno”

TCP/Newreno TCP “Reno” đã được chỉnh sửa

TCP/Sack1 TCP SACK

TCP/Fack “forward” TCP SACK

TCP/FullTCP TCP hai chiều

TCP/Vegas TCP Vegas

TCP/Vegas/RBP TCP Vegas với “rate based pacing”

TCP/Reno/RBP TCP Reno với “rate based pacing”

TCP/Asym TCP Tahoe với liên kết không đối xứng

TCP/Reno/Asym TCP Reno với liên kết không đối xứng

TCP/Newreno/Asym TCP Newreno với liên kết không đối xứng

Page 89: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

89

TCPSink TCP Reno hoặc Tahoe ở bên nhận

TCPSink/DelAck TCP Delayed-ACK ở bên nhận

TCPSink/Asym TCPSink với liên kết không đối xứng

TCPSink/Sack1 TCP SACK ở bên nhận

TCPSink/Sack1/DelAck TCP Delayed-ACK SACK

UDP Agent UDP

RTP Agent RTP bên gởi và bên nhận

RTCP Agent RTCP bên gởi và bên nhận

LossMonitor Agent ở bên nhận dùng để kiểm tra việc mất các gói

dữ liệu

IVS/Source Agent IVS ở bên gởi

IVS/Receiver Agent IVS ở bên nhận

CtrMcast/Encap Bộ đóng gói “centralized multicast”

CtrMcast/Decap Bộ mở gói “centralized multicast”

Message Giao thức truyền tin nhắn nguyên bản

Message/Prune Xử lý định tuyến multicast với các message đã được

rút gọn

SRM agent SRM không có timer

SRM/Adaptive agent SRM có timer

Tap Agent giao tiếp giữa bộ giả lập với mạng thực

Null

rtProto/DV Agent giao thức định tuyến distance-vector

Bảng 3.2 Các Agent hổ trợ trong NS-2

3.4.2 UDP Agent UDP agent được cài đặt bên node gởi dữ liệu và cũng có thể được cài đặt bên

node nhận. Agent này là agent không hướng kết nối, tức là không có cơ chế để

Page 90: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

90

phát hiện gói tin bị mất khi truyền, và truyền lại gói tin khi bị mất. Nó chỉ thích

hợp cho những ứng dụng không đòi hỏi độ chính xác cao, và chấp nhận chịu sự

mất mát dữ liệu.

Các cú pháp thông dụng dùng để thiết lập UDP agent trong NS-2:

+ Tạo một thể nghiệm của đối tượng UDP agent:

set udp0 [new Agent/UDP]

+ Kết nối agent UDP cho node:

$ns_ attach-agent <node> <agent>

+ Cài đặt ứng dụng cho agent:

$traffic-gen attach-agent <agent>

Ví dụ:

Để cài đặt ứng dụng CBR cho agent udp1, ta có cú pháp:

set cbr1 [new Application/Traffic/CBR]

$cbr1 attach-agent $udp1

+ Tạo một kết nối giữa hai agent:

$ns_ connect <src-agent> <dst-agent>

Các thông số thiết lập chi tiết cho agent UDP:

$udp set packetSize_ <pktsize>

$udp set dst_addr_ <address>

$udp set dst_port_ <portnum>

$udp set class_ <class-type>

$udp set ttl_ <time-to-live>

Ví dụ:

Tạo một ứng dụng CBR, với các agent UDP:

set ns [new Simulator]

set n0 [$ns node]

set n1 [$ns node]

$ns duplex-link $n0 $n1 5Mb 2ms DropTail

set udp0 [new Agent/UDP]

Page 91: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

91

$ns attach-agent $n0 $udp0

set cbr0 [new Application/Traffic/CBR]

$cbr0 attach-agent $udp0

$udp0 set packetSize_ 536 ;# set MSS to 536 bytes

set null0 [new Agent/Null]

$ns attach-agent $n1 $null0

$ns connect $udp0 $null0

$ns at 1.0 "$cbr0 start"

3.4.3 TCP Agent Trong NS-2, TCP agent được chia làm hai loại:

+ Agent một chiều.

+ Agent hai chiều.

Agent một chiều là những agent chỉ đóng một trong hai vai trò hoặc là bên gởi

hoặc là bên nhận. Trong khi đó, agent hai chiều là agent đóng cả hai vai trò vừa là

bên nhận, vừa là bên gởi. Hiện nay, agent này vẫn đang được phát triển.

Các agent một chiều ở bên gởi (one-way TCP sending agents ) đã cài đặt trong

NS:

+ Agent/TCP.

+ Agent/TCP/Reno.

+ Agent/TCP/Newreno.

+ Agent/TCP/Sack1.

+ Agent/TCP/Vegas.

+ Agent/TCP/Fack.

Các TCP agent một chiều ở bên nhận (one-way TCP receiving agents):

+ Agent/TCPSink.

+ Agent/TCPSink/DelAc

+ Agent/TCPSink/Sack1.

+ Agent/TCPSink/Sack1/DelAck.

TCP agent hai chiều ( two-way TCP agent):

Page 92: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

92

+ Agent/TCP/FullTcp.

3.4.3.1 Một số TCP agent bên gởi

3.4.3.1.1 TCP Tahoe

TCP Tahoe (Agent/TCP) là phiên bản sửa đổi của giao thức TCP có thêm

chức năng kiểm soát thông lượng truyền của kết nối ( kiểm soát tắt nghẽn

của kết nối ) và đã được cài đặt dầu tiên trong lõi Unix của BSD (Berkeley’s

Software Distribution) phiên bản 4.3 BSD Tahoe.

Mục tiêu của cơ chế kiểm soát tắt nghẽn của kết nối là tìm ra một giá trị

thích hợp cho khung truyền nằm giữa một MSS-Maximum Segment Size và

giá trị này thay đổi tùy theo hoàn cảnh của mạng hiện tại. Để đạt được điều

này, TCP Tahoe sử dụng ba cơ chế Slow-Start (Khởi động chậm),

Congestion Avoidance (Tránh tắt nghẽn) và Fast Retransmit (Truyền lại

nhanh).

Các tham số của TCP Tahoe:

+ cwnd_ (congestion window) là giới hạn khung truyền lớn nhất có thể

mà truyền mà không bị tắt nghẽn kết nối, đơn vị tính là packet.

+ window_ là kích thước khung truyền bên nhận.

+ swnd_ là kích thước khung truyền hiện tại, được tính theo công thức:

swnd_ = min (cwnd_, window_)

Công thức có ý nghĩa rằng, kích thước của khung truyền hiện tại của

TCP Tahoe có giá trị lớn nhất là bằng với kích thước khung truyền ở bên

nhận.

Slow-Start

Trong TCP chuẩn, khi bắt đầu kết nối, bên gởi có thể gởi dữ liệu với

kích thước khung truyền bằng kích thước khung truyền bên nhận một

cách đột ngột. Khi đó, có thể kích thước vùng đệm của bên nhận không

còn đủ, dẫn đến hiện tượng của các packet bị mất và bên gởi sẽ phải

truyền lại đoạn dữ liệu bị mất đó. Điều đó làm cho kết nối TCP mất đi

tính hiệu quả. Thay vì vậy, trong cơ chế khởi động chậm, TCP sẽ tăng giá

Page 93: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

93

trị cwnd_ dần dần để đạt đến giá trị tối đa. Giá trị khởi tạo của cwnd_

nhỏ hơn hay bằng 2MSS, thông thường được gán bằng 1MSS. Sau đó,

giá trị này tăng thêm 1MSS mỗi khi nhận được thông báo yêu cầu gởi dữ

liệu mới (bên nhận đã nhận thành công dữ liệu trước đó). Cơ chế Slow-

Start sẽ kết thúc khi giá trị cwnd_ vượt quá giá trị ssthresh_ (slow-start

threshold) là giá trị ngưỡng của của cwnd_.

Congestion Avoidance

Trong giai đoạn này, TCP Tahoe hoạt động một cách rất thận trọng khi

khung truyền đã gần đạt đến giá trị mà trước đó đã xảy ra mất dữ liệu.

Khi đó, mỗi khi nhận về một ACK khung sẽ tăng giá trị cwnd_ theo công

thức:

cwnd_ = cwnd_ + 1/cwnd_

Theo công thức này, sau khi nhận được đầy đủ thông tin cho một số

cwnd_ của các packet, cwnd_ sẽ tăng lên 1 MSS.

Fast Retransmit

TCP Tahoe cho rằng một packet đã bị mất (vì bị tắt nghẽn) khi nó

nhận thấy có một số liên tục các giá trị ACK trùng nhau cho cùng một

packet (giá trị mặc định là 3) hoặc thời gian chờ nhận phản hồi gói tin

ACK hết hiệu lực. Khi đó, TCP Tahoe sẽ phản ứng lại bằng cách gán giá

trị ssthresh_ bằng ½ giá trị kích thước của khung truyền hiện tại. Sau đó,

khởi tạo giá trị cwnd_ bằng giá trị windowInit_ (giá trị mặc định là

1MSS) và bắt đầu khởi động lại cơ chế Slow-Start.

3.4.3.1.2 TCP Reno

TCP Reno (Agent/TCP/Reno) là một cải tiến của TCP Tahoe bằng cách

đưa ra cơ chế Fast Recovery (phục hồi nhanh) kết hợp với cơ chế Fast

Retransmit trong TCP Tahoe. Ý tưởng của Fast Recovery là một yêu cầu

truyền lại (D-ACK) sẽ phải chỉ ra băng thông có thể dùng trong khung

truyền từ khi một đoạn dữ liệu được phát đi thành công. Điều này có nghĩa

rằng cwnd_ cần thực sự tăng lên mỗi khi phát đi một D-ACK. Sau khi gởi

Page 94: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

94

đoạn được xem như là bị mất, Fast Recovery sẽ bắt đầu. Lúc đó, cwnd_ sẽ

được tăng lên:

cwnd_ = ssthresh_ + 3 MSS

Sau đó, mỗi khi nhận D-ACK, cwnd_ sẽ tăng lên 1MSS.

Cơ chế Fast Recovery được kích hoạt khi nhận được một số ngưỡng các

D-ACK: bên gởi sẽ truyền lại một đoạn và gán các ngưỡng này giá trị bằng

½ giá trị của cwnd_ hiện tại. Kế đến, thay vì chuyển sang cơ chế Slow-Start

như TCP Tahoe, bên gởi sẽ cộng thêm vào cwnd_ một số bằng với số

ngưỡng. Sau đó, chừng nào bên nhận còn trong trạng thái Fast Recovery thì

cwnd_ sẽ được cộng thêm 1 cho mỗi D-ACK được nhận. Fast Recovery chỉ

được hoàn tất khi một ACK cho dữ liệu mới được nhận. Bên gởi sau đó sẽ

gán cwnd_ bằng với giá trị của ngưỡng hiện tại và chỉnh lại số đếm D-ACK

về giá trị ban đầu.

3.4.3.1.3 TCP Newreno

TCP Newreno (Agent/TCP/Newreno) giải quyết được sự bất khả thi của

TCP Reno đó là việc khắc phục lỗi khi có nhiều packet bị mất đồng thời. Nó

sửa lại quá trình hoạt động của cơ chế Fast Recovery: trong quá trình Fast

Recovery, nếu một “partial ACK” (thông báo không công nhận số byte liên

tiếp cao nhất đã được nhận) được nhận, bên gởi sẽ xem nó như là dấu hiệu

chỉ ra rằng đoạn kế tiếp tương ứng với thông báo đó đã bị mất. TCP

Newreno sẽ truyền lại đoạn đó và đợi thông báo phản hồi tương ứng. Trạng

thái Fast Recovery sẽ không kết thúc chừng nào mà byte được đánh số cao

nhất được gởi đi trước khi phát hiện ra sự mất packet đầu tiên được thừa

nhận. Khi điều này xảy ra, kích thước khung sẽ co lại bằng ssthresh_ và cơ

chế tránh tắt nghẽn được lặp lại.

3.4.3.2 Một số TCP agent bên nhận

TCPSink

Page 95: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

95

TCPSink có nhiệm vụ trả về giá trị ACK mỗi khi nhận gói dữ liệu từ

TCP bên gởi. Nó chỉ phát sinh một ACK cho mỗi packet nhận được. Kích

thước của ACK có thể thay đổi đựoc.

Các tham số cấu hình:

Agent/TCPSink set packetSize_ 40 : thay đổi kích thước của packet.

TCPSink/DelAck

Đối tượng Delayed-ACK TCP Sink (Agent/TCPSink/DelAck) có thể gởi

phản hồi một gói ACK sau khi đã nhận được vài packet. Đối tượng này

chứa tham số interval_ để qui định thời gian chờ giữa hai lần truyền gói tin

ACK.

Các tham số cấu hình:

Agent/TCPSink/DelAck set interval_ 100ms1

3.4.3.3 TCP agent hai chiều

Để có thể tạo kết nối, TCP phải thực hiện việc bắt tay ba lần (3 way_

handshake):

+ Bên gởi gởi một gói SYN sang bên nhận.

+ Bên nhận gởi phản hồi một gói với SYN + ACK tương ứng.

+ Bên gởi sẽ gởi lại một gói ACK để chấp nhận kết nối.

Sau đó dữ liệu sẽ được trao đổi với nhau.

Các tham số cấu hình mặc định cho FullTcp:

+ Agent/TCP/FullTcp set segsperack_ 1.

+ Agent/TCP/FullTcp set segsize_ 536.

+ Agent/TCP/FullTcp set tcprexmtthresh_ 3.

+ Agent/TCP/FullTcp set iss_ 0.

+ Agent/TCP/FullTcp set nodelay_ false.

+ Agent/TCP/FullTcp set data_on_syn_ false.

+ Agent/TCP/FullTcp set dupseg_fix_ true.

+ Agent/TCP/FullTcp set dupack_reset_ false.

+ Agent/TCP/FullTcp set interval_ 0.1.

Page 96: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

96

Ví dụ:

Tạo một agent FullTcp:

set src [new Agent/TCP/FullTcp] ;# create agent

set sink [new Agent/TCP/FullTcp] ;# create agent

$ns_ attach-agent $node_(s1) $src ;# bind src to node

$ns_ attach-agent $node_(k1) $sink ;# bind sink to node

$src set fid_ 0 ;# set flow ID field

$sink set fid_ 0 ;# set flow ID field

$ns_ connect $src $sink ;# active connection src to sink

# set up TCP-level connections

$sink listen ;# will figure out who its peer is

$src set window_ 100;

3.4.4 Ví dụ minh họa Tạo một kết nối TCP giữa hai node n0 và n1 với n0 sử dụng TCP Tahoe và n1

sử dụng TCPSink. lớp TCP đại diện cho giao thức TCP ở bên node gởi dữ liệu.

Nó sẽ gởi dữ liệu đến cho agent TCPSink và TCPSink sẽ xử lý tham số ACK để

kiểm tra tính đúng đắn của gói dữ liệu:

set ns [new Simulator]

set tcp [new Agent/TCP] ;# Khởi tạo agent TCP bên node gởi dữ liệu

$tcp set fid_ 2 ;# set IP-layer flow ID

set sink [new Agent/TCPSink] ;# Khởi tạo agent TCPSink bên node nhận

$ns attach-agent $n0 $tcp ;# Thiết lập agent TCP cho node n0

$ns attach-agent $n1 $sink ;# Thiết lập agent TCPSink cho node n1

$ns connect $tcp $sink ;# Xác lập một kết nối TCP cho hai agent

set ftp [new Application/FTP] ;# Tạo môt ứng dụng FTP

$ftp attach-agent $tcp ;# Cài đặt ứng dụng FTP cho node n0

$ns at 2 "$ftp start" ;# Thực thi ứng dụng FTP tại thời điểm giây thứ 2

Page 97: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

97

3.5 Ứng dụng trong NS-2: 3.5.1 Lớp Application

Ứng dụng trong NS-2 được xây dựng bỡi lớp Application được cài đặt trong

phần nhân của NS-2:

class Application: public TclOject {

public:

Application();

virtual void send(int nbytes);

virtual void recv(int nbytes);

virtual void resume();

protected:

int command(int argc, const char* const* argv);

virtual void start();

virtual void stop();

Agent *agent_;

int enableRecv_; // call Otcl recv or not

int enableResume_; // call Otcl resume or not

};

Bảng 3.3 Các phương thức của lớp Application

Lớp Application cung cấp một số phương thức cơ bản cho quá trình hoạt động

của một ứng dụng: send(), recv(), resume(), start(), stop(), một con trỏ trỏ đến

giao thức ở tầng vận tải bên dưới mà nó kết nối.

3.5.2 Phân loại ứng dụng Trong NS-2 có hai loại ứng dụng cơ bản:

+ Ứng dụng phát sinh lưu lượng mạng (Traffic Generator).

+ Ứng dụng giả lập mạng (Simulated Applications).

Page 98: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

98

Hình 3.5 Hai loại ứng dụng trong NS-2

3.5.2.1 Ứng dụng phát sinh lưu lượng mạng

Loại ứng dụng này được xây dựng bỡi lớp TrafficGenerator:

class TrafficGenerator :

public:

TrafficGenerator();

virtual double next_

virtual void init()

virtual double interval()

virtual int on()

virtual void timeout();

virtual void recv()

virtual void resume()

protected:

virtual void start();

virtual void stop();

double nextPkttime_;

int size_;

int running_;

TrafficTimer timer_;

Page 99: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

99

};

Bảng 3.4 Các phương thức của lớp TrafficGenerator

Ứng dụng phát sinh lưu lượng mạng có thể chia làm ba loại: exponential,

pareto và CBR.

Đối tượng Exponential (Application/Traffic/Exponential) phát sinh lưu

lượng mạng theo hai trạng thái ON/OFF. Ở trạng thái “ON”, các gói dữ liệu

được phát sinh theo một tốc độ truyền không đổi. Ngược lại, trong trạng thái

“OFF”, không phát sinh lưu lượng mạng. Các tham số cấu hình cho đối

tượng:

PacketSize_ : kích thước của gói dữ liệu.

burst_time_ : thời gian trung bình trong ở trạng thái ON.

idle_time_ : thời gian trung bình trong ở trạng thái OFF.

rate_ : tốc độ gởi các gói dữ liệu.

Đối tượng Pareto (Application/Traffic/Pareto) cũng phát sinh lưu lượng

mạng theo hai trạng thái ON, OFF. Các tham số cấu hình:

PacketSize_ : kích thước của gói dữ liệu.

burst_time_ : thời gian trung bình trong ở trạng thái ON.

idle_time_ : thời gian trung bình trong ở trạng thái OFF.

rate_ : tốc độ gởi các gói dữ liệu.

Đối tượng CBR (Application/Traffic/CBR) dùng để phát sinh các gói dữ

liệu theo một tốc độ bit không đổi. Các tham số cấu hình:

PacketSize_ : kích thước của gói dữ liệu.

rate_ : tốc độ truyền dữ liệu.

interval_ : khoảng thời gian giữa hai lần truyền dữ liệu.

random_ : phát sinh tín hiệu nhiễu một cách ngẫu nhiên. Giá trị mặc

định là off.

maxpkts_ : số packet lớn nhất được truyền đi.

3.5.2.2 Ứng dụng giả lập mạng

FTP ( Application/FTP ) là ứng dụng dùng để truyền tải các file qua mạng.

Page 100: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

100

Các phương thức đã được cài đặt trong NS-2:

attach-agent : gắn ứng dụng FTP lên agent vận tải.

start : khởi động ứng dụng FTP.

stop : ngừng ứng dụng.

Tham số cấu hình:

maxpkts : số gói dữ liệu lớn nhất được phát sinh ở bên gởi.

Telnet : ( Application/Telnet ) dùng để phát sinh các gói dữ liệu theo một

trong hai cách dựa vào biến interval_ . Mặc định , giá trị này bằng 0.

3.5.3 Các ví dụ minh họa Ví dụ 1 :

Tạo ứng dụng phát sinh lưu lượng mạng:

set src [new Agent/UDP]

set sink [new Agent/UDP]

$ns_ attach-agent $node_0 $src

$ns_ attach-agent $node_1 $sink

$ns_ connect $src $sink

set e [new Application/Traffic/Exponential]

$e attach-agent $src

$e set packetSize_ 210

$e set burst_time_ 500ms

$e set idle_time_ 500ms

$e set rate_ 100k

$ns_ at 0.0 "$e start"

$ns_ at 100.0 "$e stop"

Ví dụ 2 :

Tạo ứng dụng giả lập mạng:

set Tcp [new Agent/TCP]

set Sink [new Agent/TCPSink]

$ns_ attach-agent $node_0 $Tcp

Page 101: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

101

$ns_ attach-agent $node_1 $Sink

$ns_ connect $Tcp $Sink

set App [new Application/FTP]

$App attach-agent $Tcp

$ns_ at 10 "$App start"

$ns_ at 100 "$App stop"

3.6 Mạng không dây trong NS-2: Thành phần quan trọng nhất trong mô hình mạng không dây là MobileNode.

Trong C++, lớp MobileNode được kế thừa từ lớp cha là lớp Node. Do đó,

MobileNode có đầy đủ các đặc điểm của đối tượng Node, thêm vào đó là các đặc

tính của Wireless như khả năng di chuyển tự do trong phạm vi của topology, có

khả năng truyền và nhận tín hiệu vô tuyến.

Điểm khác nhau quan trọng giữa Node và MobileNode là MobileNode không

dùng khái niệm Link (liên kết có dây) để liên kết với các Node hay các

MobileNode khác. Thay vào đó, MobileNode sử dụng sóng vô tuyến để liên kết

với các MobileNode khác.

Lớp Mobile được cài đặt trong cả C++ và OTcl: Các cài đặt phức tạp như việc

di chuyển của MobileNode, việc cập nhật lại vị trí, duy trì cầu trúc mạng, …

được viết bằng C++. Trong khi đó, việc cấu hình các thành phần trong

MobileNode như địa chỉ Mac, Channel, Antenna, … được cài đặt trong OTcl.

3.6.1 Các thành phần cấu hình của một MobileNode Xem phần 3.3.2 ( Cấu hình Node ).

3.6.2 Tạo mô hình mạng không dây trong NS-2 Một MobileNode bao gồm các thành phần: Link Layer, Interface Queue, ARP,

địa chỉ MAC, mô hình truyền của sóng vô tuyến, Card mạng, kênh truyền. Ngoài

ra, còn có các thành phần khác: kiểu Antenna, loại giao thức định tuyến.

Do đó, để tạo một mô hình mạng không dây, ta cần cấu hình cho MobileNode:

set val(chan) Channel/WirelessChannel ;#channel type

Page 102: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

102

set val(prop) Propagation/TwoRayGround ;#radio-propagation model

set val(ant) Antenna/OmniAntenna ;#Antenna type

set val(add) hierarchical ;#Addressing type

set val(ll) LL ;#Link layer type

set val(ifq) Queue/DropTail/PriQueue ;#Interface queue type

set val(ifqlen) 50 ;#max packet in ifq

set val(netif) Phy/WirelessPhy ;#network interface type

set val(mac) Mac/802_11 ;#MAC type

set val(adhocRouting) DSDV ;#ad-hoc routing protocol

set val(x) 500 ;#X-cordinate

set val(y) 500 ;#Y-cordinate

set topo [new Topography]

set ns_ [new Simulator]

$ns_ node-config -adhocRouting $val(adhocRouting) \

-llType $val(ll) \

-macType $val(mac) \

-ifqType $val(ifq) \

-ifqLen $opt(ifqlen) \

-antType $opt(ant) \

-propInstance [new $opt(prop)] \

-phyType $opt(netif) \

-channel [new $opt(chan)] \

-topoInstance $topo \

-wiredRouting OFF \

-agentTrace ON \

-routerTrace OFF \

-macTrace OFF

Page 103: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

103

Tiếp theo, tạo một mô hình mạng không dây với năm MobileNode theo cú

pháp:

set val(nn) 5

for { set j 0 } { $j < $val(nn)} {incr j} {

set node_($j) [ $ns_ node ]

$node_($i) random-motion 0 ;# disable random motion

}

3.6.3 Tạo kịch bản chuyển động cho các Node Các MobileNode được thiết kế để chuyển động ba chiều ( X,Y,Z ). Tuy nhiên,

trong công cụ giả lập này, thì chiều Z không được sử dụng ( Z=0 ), nên các

MobileNode chỉ chuyển động theo hai chiều X, Y.

Trong NS-2, có hai phương pháp để tạo sự chuyển động cho các MobileNode:

+ Khởi tạo vị trí ban đầu cho các MobileNode và khai báo địa chỉ đích

mà các MobileNode di chuyển tới một cách tường minh.

+ Thiết lập cho các MobileNode di chuyển ngẫu nhiên.

Phương pháp thứ nhất

$node set X_ <x1>

$node set Y_ <y1>

$node set Z_ <z1>

$ns at $time $node setdest <x2> <y2> <speed>

Chú thích:

Ban đầu, ta khởi tạo vị trí bắt đầu cho node với tọa độ (x1,y1,0). Sau đó,

tại thời điểm “$time” giây, node sẽ bắt đầu di chuyển từ vị trí khởi tạo

(x1,y1,0) đến vị trí đích (tọa độ ( x2 , y2 ,0 ) ) với vận tốc speed.

Phương pháp thứ hai

$node start

Chú thích:

MobileNode khởi tạo ngẫu nhiên cho vị trí ban đầu, vị trí đích và tốc độ

di chuyển.

Page 104: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

104

3.6.4 Giao thức định tuyến cho mạng không dây Giao thức định tuyến là một trong những thành phần quan trong trong cấu hình

mạng Trong phạm vi của đề tài này, chúng tôi tập trung tìm hiểu các giao thức

định tuyến đã được cài đặt trong công cụ giả lập mạng NS-2 sử dụng trong mạng

MANET, bao gồm: TORA, DSDV, AODV, DSR.

3.6.4.1 Giới thiệu tổng quan

Trong mạng Ad-hoc, giao thức định tuyến được chia thành ba loại:

+ Giao thức định tuyến kiểu Table-driven (Proactive).

+ Giao thức định tuyến kiểu On-Demand (Reactive).

+ Giao thức định tuyến kết hợp.

Giao thức định tuyến kiểu Table-driven (Proactive)

Trong kiểu giao thức định tuyến này, một node luôn luôn duy trì trong

bảng định tuyến của nó thông tin định tuyến đến tất cả các node khác trong

mạng. Thông tin định tuyến được phát broadcast trên mạng theo một

khoảng thời gian qui định để giúp cho bảng định tuyến luôn cập nhật những

thông tin mới nhất. Tuy nhiên, với những mạng mà các node di chuyển

nhiều, hoặc các liên kết giữa các node bị đứt thì giao thức định tuyến

proactive sẽ phải tìm kiếm hoặc sửa chữa các liên kết bị đứt, nhưng nếu các

liên kết đó không sử dụng thì sẽ trở nên lãng phí tài nguyên, ảnh hưởng đến

băng thông của mạng. Nên giao thức định tuyến này chỉ áp dụng trong các

mô hình mạng MANET mà các node ít di chuyển.

Các giao thức định tuyến theo kiểu Proactive:

+ Destination-Sequenced Distance Vector (DSDV).

+ Wireless Routing Protocol (WRP).

+ Global State Routing (GSR).

+ Clusterhead Gateway Switch Routing (CGSR).

Giao thức định tuyến kiểu On-Demand (Reactive)

Trong loại giao thức định tuyến này, các con đường đi sẽ chỉ được tạo ra

nếu có nhu cầu. Khi một node muốn gởi dữ liệu đến một node đích, nó sẽ

Page 105: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

105

khởi động tiến trình route discovery để tìm kiếm con đường đi đến đích. Sau

khi một đường đi đã được xác lập, nó sẽ duy trì thông tin đó bằng tiến trình

route maintenance cho đến khi hoặc node đích không thể truy cập hoặc con

đường đi đó không còn hiệu lực.

Với các cơ chế đó, giao thức định tuyến theo kiểu Reactive không phát

broadcast các thay đổi của bảng định tuyến theo thời gian, nên tiết kiệm

được tài nguyên mạng. Vì vậy loại giao thức này có thể sử dụng trong các

mạng lớn, các node di chuyển nhiều.

Các giao thức định tuyến dạng Reactive tiêu biểu:

+ Cluster Based Routing Protocol (CBRP).

+ Ad hoc On-Demand Distance Vector (AODV).

+ Dynamic Source Routing (DSR).

+ Temporally Ordered Routing Algorithm (TORA).

+ Associativity-Based Routing (ABR).

+ Signal Stability Routing (SSR).

+ Location Aided Routing (LAR).

Giao thức định tuyến kết hợp(Hybrid)

Trong kiểu định tuyến này, mạng được chia thành các zone. Mỗi node

duy trì cả thông tin về kiến trúc mạng trong zone của nó và thông tin về các

zone láng giềng. Điều đó có nghĩa là: giao thức Hybrid sử dụng giao thức

định tuyến proactive trong zone của nó và giao thức định tuyến reactive

giữa các zone. Do đó, đường đi đến mỗi node trong cùng một zone được xác

lập mà không cần phải định tuyến ra ngoài zone, trong khi đó các tiến trình

route discovery và route maintenance thì được sử dụng để tìm kiếm, duy trì

đường đi giữa các node của các zone với nhau.

Các giao thức định tuyến tiêu biểu sử dụng kiểu Hybrid:

+ Zone Routing protocol (ZRP).

+ Zone-based hierarchical link state (ZHLS) routing protocol.

+ Distributed dynamic routing algorithm (DDR).

Page 106: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

106

Hình 3.6 Các giao thức định tuyến trong mạng MANET

3.6.4.2 Giao thức định tuyến TORA

TORA (Temporally Ordered Routing Algorithm) là một giao thức định

tuyến giải quyết được nhược điểm của các giao thức định tuyến truyền thống là

phá bỏ được vòng lặp (loop-free) và có khả năng thích ứng cao với môi trường

mạng có nhiều thay đổi dựa trên khái niệm “link reversal”, nó tìm kiếm thông

tin về đường đi theo yêu cầu, cung cấp nhiều đường đi đến đích, xác lập đường

đi một cách nhanh chóng.

TORA ít sử dụng con đường đi tối ưu (tức là con đương đi ngắn nhất) mà

nó thường sử dụng các con đường đi dài hơn nhằm để hạn chế việc phải tìm

kiếm các con đường đi mới làm ảnh hưởng đến lưu lượng truyền trên mạng.

Cách thức hoạt động của thuật toán TORA có thể diễn tả như thuật ngữ mô

hình nước chảy từ node nguồn đến node đích của mạng các ống nước như

trong mô hình mạng thực tế. Các ống nước đại diện cho liên kết giữa các node,

giao điểm của các ống nước đại diện cho các node và nước trong ống đại diện

cho các gói dữ liệu truyền đến đích. Mỗi node có một trọng số tới mỗi node

đích được tính toán bỡi giao thức định tuyến. Nếu một ống nước giữa node A

và node B bị chặn làm cho nước không thể chảy qua được, thì trọng số của

node A được đặt trọng số lớn hơn các node láng giềng của nó và do đó nước sẽ

chảy ngược trở ra node A (và chảy vào các node khác mà có thông tin định

tuyến đến đích qua node A).

Page 107: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

107

Hình 3.7 Mô hình nước chảy trong mạng với giao thức TORA

Giao thức định tuyến TORA được sử dụng trong môi trường mạng di động

có tính chất động cao, cung cấp nhiều đường đi khác nhau giữa hai node. Để

làm được điều này, các node cần duy trì thông tin định tuyến đến các node

láng giềng của nó.

Giao thức định tuyến này thực hiện ba chức năng chính :

+ Tạo thông tin định tuyến.

+ Duy trì thông tin định tuyến.

+ Xóa bỏ thông tin định tuyến.

Mỗi node trong mạng luôn duy trì một đồ thị không vòng có hướng

(directed acyclic graph (DAG)) riêng cho mỗi node còn lại trong mạng. Khi

một node muốn định tuyến đến một node đích cụ thể nào đó, nó phát broadcast

một gói QUERY chứa thông tin về địa chỉ đích. Gói QUERY này được truyền

trong mạng cho đến khi nó tìm được node đích hoặc một node trung gian mà

có thông tin định tuyến đến node đích. Sau đó, node đích hoặc node trung gian

đó sẽ phát broadcast một gói UPDATE chứa trọng số của nó đến node nguồn.

Khi gói UPDATE truyền qua mạng, các node trong mạng mà nhận được gói

UPDATE này sẽ cập nhật lại thông tin về trọng số của nó bằng cách đặt giá trị

trọng số lớn hơn giá trị trọng số của node láng giềng mà đã nhận gói UPDATE

trước đó. Điều này tạo ra một chuỗi các liên kết có hướng từ node gởi gói

QUERY đến node gởi gói UPDATE trả lời. Khi một node khám phá rằng một

Page 108: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

108

thông tin định tuyến đến một node đích không còn giá trị, nó sẽ điều chỉnh giá

trị trọng số của nó bằng giá trị lớn nhất so với các node láng giềng của nó và

phát gói UPDATE lên mạng. Nếu node mà có tất cả các láng giềng có trọng số

bằng vô cùng đến node đích này, thì node sẽ bắt đầu khám phá thông tin định

tuyến mới. Khi một node khám phá ra con đường đi mới, nó sẽ phát sinh một

gói CLEAR để thiết lập lại trạng thái bảng định tuyến và xóa các con đường đi

không còn hiệu lực.

Hình 3.8 Các giá trị hop-count trong TORA

Như đã đề cập ở trên, trong quá trình tạo và duy trì thông tin định tuyến, các

node sử dụng giá trị hop-count để xác lập một DAG đến node đích. Sau đó,

hướng của các liên kết được chỉ định dựa trên mối quan hệ giữa các node láng

giềng. Khi các liên kết giữa các node trong một DAG bị đứt, thì cơ chế duy trì

thông tin định tuyến (route maintenance) sẽ xác lập một DAG mới đến node đích.

Sau đó, TORA sẽ phảt broadcast gói tin CLEAR qua mạng để loại bỏ thông tin

định tuyến không còn giá trị đó.

3.6.4.3 Giao thức định tuyến DSDV

DSDV (Destination-Sequenced Distance-Vector) là một biến thể của giao

thức định tuyến distance vector theo kiểu proactive, dựa trên ý tưởng của thuật

toán định tuyến kinh điển Bell-man-Ford với một chút cải tiến.

Cải tiến mới của DSDV là sử dụng kỹ thuật đánh số sequence number. kỹ

thuật này dùng để nhận ra các con đường đi không còn giá trị trong quá trình

cập nhật bảng định tuyến, do đó sẽ tránh được vòng lặp trong quá trình định

Page 109: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

109

tuyến. Mỗi node sẽ tăng số sequence number khi gởi thông tin về bảng định

tuyến của nó cho các node khác trong mạng.Các cơ chế trong DSDV:

Quản lý bản định tuyến

Mỗi node luôn duy trì một bảng định tuyến đến tất cả các node khác trong

mạng. Thông tin của một entry trong bảng định tuyến bao gồm:

+ Địa chỉ của node đích.

+ Số hop đến đích (hop-count ).

+ Next hop.

+ Số sequence number của node đích.

Để đảm bảo cho bảng định tuyến luôn phù hợp với những thay đổi trong

mạng thì các node phải thường xuyên cập nhật bảng định tuyến theo một

khoảng thời gian nhất định hoặc khi mạng có sự thay đổi. Do đó, các node

phải quảng bá thông tin định tuyến của nó cho các node khác trong mạng

bằng cách phát broadcast những thay đổi trong bảng định tuyến của nó. Khi

một node nhận gói tin cập nhật bảng định tuyến, nó sẽ kiểm tra số sequence

number của gói tin cập nhật, nếu số sequence number trong gói tin cập nhật

lớn hơn hoặc bằng với số sequence number trong bảng định tuyến và có số

hop-count nhỏ hơn thì node đó sẽ cập nhật thông tin đó vào bảng định tuyến.

Cách thức cập nhật bảng định tuyến:

Bảng định tuyến cập nhật theo hai cách:

+ Cập nhật toàn bộ bảng định tuyến cho các node láng giềng và có

thể truyền trong nhiều packet, gọi là full- dump.

+ Cập nhật các phần thay đổi trong bảng định tuyến của nó cho các

node láng giềng và các thông tin thay đổi đó chỉ được gởi đi trong một

packet. Cách cập nhật này gọi là incremental- update.

Đối với một mạng Ad-hoc tương đối ổn định, thì kiểu cập nhật

incremental-update sẽ thường được sử dụng để hạn chế lưu lượng truyền

trên mạng. Trong khi đó, full-dump sẽ được sử dụng trong mạng ít có sự ổn

định.

Page 110: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

110

Quản lý sự thay đổi của Topology

Khi một node di chuyển từ nơi này đến nơi khác thì các liên kết của nó

với các node láng giềng có thể không còn hiệu lực. Khi node phát hiện rằng

liên kết đến next hop của nó không còn tồn tại, thì đường đi thông qua next

hop đó lập tức sẽ có hop-count là ∞ và số sequence number được tăng lên 1.

Sau đó node sẽ phát broadcast thông tin đó cho tất cả các node trong mạng

và các node sẽ cập nhật lại bảng định tuyến của mình.

3.6.4.4 Giao thức định tuyến DSR

DSR (Dynamic Source Routing) là giao thức định tuyến đơn giản và hiệu

quả được thiết kế riêng cho mạng MANET. DSR cho phép mạng tự động tổ

chức và cấu hình mà không cần đến sự quản trị hoặc cơ sở hạ tầng sẵn có của

mạng.

Giao thức định tuyến DSR bao gồm hai cơ chế cơ bản: Route Discovery và

Route Maintenance, nhờ hai cơ chế này mà các node có thể tìm và duy trì

được các đường đi đến các node trong mạng.

Một đặc tính nổi bật khác của DSR là nó sử dụng kỹ thuật định tuyến source

routing, khi đó bên gởi sẽ biết toàn bộ thông tin đường đi đến đích, điều này

giúp cho việc định tuyến trên mạng không bị hiện tượng vòng lặp (loop) làm

tăng hiệu năng của mạng. Để định tuyến được thì trong header của packet lưu

giữ thêm thông tin về source route. Thông tin về bảng định tuyến được lưu

trong route cache. Khi một node trong mạng Ad hoc muốn gởi dữ liệu đến một

node đích nó sẽ tìm kiếm thông tin trong route cache nếu chưa có thông tin về

đường đi thì node nguồn sẽ khởi động tiến trình route discovery để tìm kiếm

con đường đi đến đích.

Cơ chế route discovery:

Route Discovery cho phép các host trong mạng Ad hoc tìm kiếm đường

đi đến đích một cách tự động thông qua các node trung gian. Tiến trình

route discovery sẽ phát broadcast gói route request (RREQ) lên mạng.

Ngoài các trường bình thường, Thông tin trong packet RREQ còn chứa một

Page 111: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

111

số request ID_ là một số được tạo ra bỡi node nguồn và là số không trùng

nhau. Khi một node nhận gói RREQ thì nó sẽ tiến hành kiểm tra thông tin

trong RREQ như sau:

1. Nó kiểm tra xem đây có phải là lần đầu tiên nó nhận gói RREQ có

địa chỉ đích và số request ID_ hay không? nếu không phải thì nó sẽ loại

bỏ gói tin này và không xử lý. Ngược lại thì qua bước 2.

2. Nó kiểm tra trong trường source route của gói RREQ đã có địa chỉ

của nó hay chưa? nếu đã tồn tại thì nó cũng sẽ loại bỏ gói tin đó và không

xử lý gì thêm. Ngược lại thì qua bước 3.

3. Nó kiểm tra trong route cache của nó có đường đi đến node đích mà

còn hiệu lực hay không? nếu có đường đi đến đích thì nó sẽ phản hồi lại

cho node nguồn bằng gói route reply (RREP) chứa thông tin về đường đi

đến đích và kết thúc tiến trình. Ngược lại qua bước 4.

4. Nó kiểm tra địa chỉ đích cần tìm có trùng với địa chỉ của nó hay

không? nếu trùng thì nó cũng sẽ gởi lại cho node nguồn gói route reply

(RREP) chứa thông tin về đường đi đến đích và kết thúc tiến trình.

Ngược lại thì nó sẽ phát broadcast đến các node láng giềng của nó.

Quá trình này cứ tiếp tục cho đến khi node nguồn nhận được thông tin về

đường đi đến đích hoặc thông tin rằng không thể định tuyến đến đích. Gói

route reply (RREP) được gởi đến node nguồn bằng cơ chế phát unicast với

source route là đảo ngược source route trong gói RREQ.

Trong quá trình route discovery, thì các node sẽ học các con đường đi

đến các node khác và lưu trong route cache của mình:

+ Khi node nguồn tìm kiếm được đường đi đến node đích thì nó

cũng sẽ biết được đường đi đến các node trung gian.

Ví dụ: Khi node S tìm được đường đi đến node D là [S,E,F,J,D] thì

node S sẽ biết được đường đi đến các node khác như node F là

[S,E,F], node J là [S,E,F,J], …

Page 112: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

112

+ Trong quá trình phát broadcast gói RREQ, các node trung gian

cũng sẽ biết được con đường đi đến node nguồn.

Ví dụ: Khi node K nhận được một gói RREQ với source route là

[S,C,G] thì node K sẽ biết được đường đi đến node nguồn S là

[K,G,C,S].

+ Trong quá trình forward gói RREP thì các node trung gian biết

được đường đi đến node đích.

Ví dụ: Khi node F forward gói RREP với source route là

[S,E,F,J,D], thì node F biết được đường đi đến D là[F,J,D].

Cơ chế route maintenance

Trong giao thức định tuyến DSR, các node khi chuyển gói tin trên mạng

đều phải có nhiệm vụ xác nhận rằng gói tin đó đã chuyển đến next hop hay

chưa? Trong một trường hợp nào đó mà node đó phát hiện rằng gói tin

không thể truyền đến next hop. Nó sẽ gởi gói Route Error (RERR) cho node

nguồn để thông báo tình trạng hiện thời của liên kết và địa chỉ của next hop

mà không thể chuyển đi. Khi node nguồn nhận được gói RERR, nó sẽ xóa

con đường đi mà sử dụng liên kết bị hỏng trong route cache và tìm một

đường đi khác mà nó biết trong route cache hoặc sẽ khởi động một tiến trình

route discovery mới nếu đường đi này đang có nhu cầu sử dụng.

3.6.4.5 Giao thức định tuyến AODV

AODV (Ad hoc On-Demand Distance Vector) là sự kết hợp giữa hai giao

thức định tuyến DSDV và DSR. Cũng giống như DSR, trong giao thức định

tuyến AODV, các node chỉ tìm kiếm và duy trì thông tin định tuyến khi các

node có nhu cầu trao đổi dữ liệu.

AODV vẫn sử dụng cơ chế tìm đường như trong DSR là sử dụng tiến trình

route discovery. Tuy nhiên, AODV còn sử dụng nhiều cơ chế khác để duy trì

thông tin bảng định tuyến. Nó sử dụng bảng định tuyến truyền thống để lưu

trữ thông tin định tuyến với mỗi entry cho một địa chỉ đích . Điều đó trái

ngược với giao thức DSR, có thể duy trì nhiều entry cho một địa chỉ đích.

Page 113: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

113

Không sử dụng source route và chỉ cần biết thông tin về các node láng giềng

của nó, AODV dựa trên các entry của bảng định tuyến để phát gói RREP về

cho node nguồn và node nguồn dùng thông tin đó để gởi dữ liệu đến đích. Để

đảm bảo rằng thông tin trong bảng định tuyến là mới nhất thì AODV sử dụng

khái niệm destination sequence number của giao thức định tuyến DSDV để

loại bỏ những đường đi không còn giá trị trong bảng định tuyến. Mỗi node sẽ

có một bộ tăng số sequence number riêng cho nó. Các cơ chế chính của

AODV:

Cơ chế Route Discovery

Mỗi node luôn có hai bộ đếm (counter): bộ đếm số sequence number và

bộ đếm broadcast ID. Số sequence number được tăng lên trong các trường

hợp:

+ Trước khi một node khởi động tiến trình route discovery, điều này

chống sự xung đột với các gói RREP trước đó.

+ Trước khi một node đích gởi gói RREP trả lời gói RREQ, nó sẽ cập

nhật lại giá trị sequence number lớn nhất của số sequence number hiện

hành mà nó lưu giữ với số sequence number trong gói RREQ.

+ khi có một sự thay đổi trong mạng cục bộ của nó (mạng cục bộ là

các node láng giềng).

Số Broadcast ID được tăng lên khi node khởi động một tiến trình route

discovery mới.

Tiến trình Route Discovery được khởi động khi nào một node muốn trao

đổi dữ liệu với một node khác mà trong bảng định tuyến của nó không có

thông tin định tuyến đến node đích đó. Khi đó tiến trình sẽ phát broadcast

một gói RREQ cho các node láng giềng của nó. Thông tin trong RREQ

ngoài địa chỉ đích, địa chỉ nguồn, số hop count, ... Còn có các trường: số

sequence number của node nguồn, số broadcast ID, số sequence number của

node đích. Cặp thông tin <địa chỉ nguồn, số broadcast ID> là số định danh

Page 114: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

114

duy nhất cho một gói RREQ. Khi node láng giềng nhận được gói RREQ, thì

nó sẽ kiểm tra tuần tự theo các bước:

1. Xem gói RREQ đã được xử lý trước đó hay chưa? nếu đã được xử

lý thì nó sẽ loại bỏ gói tin đó và không xử lý thêm. Ngược lại chuyển qua

bước 2.

2. Nếu trong bảng định tuyến của nó có chứa đường đi đến đích, thì sẽ

kiểm tra giá trị destination sequence number trong entry chứa thông tin

về đường đi với số destination sequence number trong gói RREQ, nếu số

destination sequence number trong RREQ lớn hớn số sequence number

trong entry thì nó sẽ không sử dụng thông tin trong entry của bảng định

tuyến để trả lời cho node nguồn mà nó sẽ tiếp tục phát broadcast gói

RREQ đó đến các node láng giềng của nó. Ngược lại nó sẽ phát unicast

gói RREP ngược trở lại cho node láng giềng mà nó đã nhận gói RREQ.

Gói RREP ngoài các thông tin như: địa chỉ nguồn, địa chỉ đích, còn chứa

các thông tin: destination sequence number, hop-count, giá tr ị TTL.

Ngược lại thì qua bước 3.

3. Nếu trong bảng định tuyến của nó không có đường đi đến đích thì

nó sẽ tăng số hop-count lên 1, đồng thời nó sẽ tự động thiết lập một

đường đi ngược (reverse path) từ nó đến node nguồn bằng cách ghi nhận

lại địa chỉ của của node láng giềng mà nó nhận gói RREQ lần đầu tiên.

Entry chứa đường đi ngược này sẽ được tồn tại trong một khoảng thời

gian đủ để gói RREQ tìm kiếm đường đi đến đích và gói RREP phản hồi

cho node nguồn, sau đó entry này sẽ được xóa đi. Các thông tin bao gồm:

+ Địa chỉ đích.

+ Địa chỉ nguồn.

+ Số broadcast ID.

+ Thời gian timeout cho việc chờ đợi thời gian nhận gói RREP.

+ Số sequence number của node nguồn.

Sau đó phát broadcast đến các node láng giềng của nó.

Page 115: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

115

Và quá trình trên cứ lặp lại cho đến khi gặp node đích hoặc một node

trung gian mà có các điều kiện thỏa bước 2.

Trong quá trình trả về gói RREP, một node có thể nhận cùng lúc nhiều

gói RREP, khi đó nó chỉ sẽ xử lý gói RREP có số destination sequence

number lớn nhất, hoặc nếu cùng số destination sequence number thì nó sẽ

chọn gói RREP có số hop-count nhỏ nhất. Sau đó nó sẽ cập nhật các thông

tin cần thiết vào trong bảng định tuyến của nó và chuyển gói RREP đi.

Cơ chế Route Maintenance

Khi một node nhận thấy rằng next hop của nó không thể tìm thấy, thì nó

sẽ phát một gói RREP khẩn cấp với số sequence number bằng số sequence

number trước đó cộng với 1, và hop count bằng ∞ và gởi đến tất cả các node

láng giềng đang ở trạng thái active, những node đó sẽ tiếp tục chuyển gói tin

đó đến các node láng giềng, … và cứ như vậy cho đến khi tất cả các node

trong mạng mà ở trạng thái active nhận được gói tin này.

Sau khi nhận thông báo đó, các node có thể sẽ khởi động lại tiến trình

route discovery nếu nó có nhu cầu định tuyến dữ liệu đến node bị hỏng đó,

để biết node cần có nhu cầu định tuyến đến đích hay không thì nó sẽ kiểm

tra ở các giao thức bên dưới có kết nối nào đến node đích mà còn mở hay

không? Nếu thấy cần có nhu cầu định tuyến nó sẽ gởi một gói RREQ (với

số sequence number bằng số sequence number mà nó biết trước đó cộng

thêm 1) đến các node láng giềng để tìm đến địa chỉ đích. Để kiểm tra trạng

thái một node có active hay không? AODV sử dụng một bộ timer. Một

entry của bảng định tuyến sẽ bị xem là không active nếu nó không được sử

dụng thường xuyên.

Quản lý bảng định tuyến

Một node duy trì một entry trong bảng định tuyến cho một địa chỉ đích.

Một entry chứa các thông tin:

+ Địa chỉ đích.

+ Next hop.

Page 116: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

116

+ Hop count.

+ Số sequence number của node đích.

+ Các node láng giềng ở trạng thái active.

+ Thời gian hết hạn của entry.

Trong mỗi entry của bảng định tuyến, địa chỉ của các node láng giềng ở

trạng thái active mà có định tuyến đến đích vẫn được lưu giữ. Một node

láng giềng được đặt ở trạng thái là active nếu nó khởi tạo hoặc chuyển tiếp

ít nhất một packet đến node đích trong giới hạn của active_timeout. Thông

tin này cần được lưu giữ để giúp cho việc thông báo một link bị hỏng đến

các node active được thuận lợi. Một entry của bảng định tuyến được xem là

active nếu nó được sử dụng bỡi các node láng giềng ở trạng thái active.

Khi có một đường đi mới đến một node đích, thì node nguồn sẽ so sánh

số sequence number của đường đi mới với số sequence number có trong

entry tương ứng với địa chỉ đích trong bảng định tuyến. Đường đi mà có số

sequence number lớn hơn sẽ được chọn. Nếu số sequence number bằng

nhau, thì đường đi nào có số hop-count nhỏ hơn sẽ được chọn.

Page 117: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

117

Chương 4

Ngôn ngữ TCL

4.1 Tổng quan và một số đặc điểm của ngôn ngữ TCL: TCL -Tool Command Language là một ngôn ngữ lệnh khá mạnh, có thể chạy

được trên các hệ điều hành như Unix, Linux, DOS/Window, OS/2 và MacOS

nhờ các trình thông dịch. Tuy nhiên, ngôn ngữ này chỉ có một số ít các cấu trúc

nền tảng và khá ít các cú pháp.

Các đặc điểm của ngôn ngữ TCL:

TCL là ngôn ngữ lệnh (scripting language)

Cũng như các ngôn ngữ lập trình Unix shell, awk, perl, TCL cung cấp các

đặc tính của ngôn ngữ lập trình cấp cao như:

+ Khai báo biến theo kiểu chuỗi.

+ Khai báo mảng.

+ Khai báo kiểu danh sách (list).

+ Khả năng định nghĩa và tái định nghĩa các thủ tục ở trong lúc run-

time.

+ Truy cập file.

+ Khả năng bắt lỗi.

TCL là ngôn ngữ có khả năng nhúng vào các ứng dụng khác

Ngôn ngữ TCL được thiết kế để nhúng vào trong các ứng dụng khác (ví dụ

như ngôn ngữ C) như là một ngôn ngữ mở rộng. Điều này sẽ làm giảm đến

mức tối đa số lượng ngôn ngữ lập trình mà người lập trình cần phải học nhưng

vẫn có thể tạo ra được những ứng dụng như ý muốn.

TCL là ngôn ngữ có khả năng mở rộng

Ngôn ngữ TCL được thiết kế đặc biệt để có khả năng mở rộng, để tạo một

lệnh mới cho TCL, chỉ cần định định nghĩa thêm các thủ tục hoặc cài đặt hàm

bằng ngôn ngữ C.

Page 118: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

118

Quản lý bộ nhớ tự động

Tất cả các cấu trúc dữ liệu trong ngôn ngữ TCL được cấp phát động và

không giới hạn về kích thước. Do đó, người lập trình sẽ không cần quan tâm

đến việc cấp phát bộ nhớ cho các biến hoặc kích thước của các biến như thế

nào.

Trao đổi giữa các ứng dụng TCL

TCL hỗ trợ khả năng trao đổi dữ liệu giữa các ứng dụng Tcl chạy trên các

máy khác nhau trên mạng. Để làm được điều đó, cần những giao thức theo mô

hình client-server mà tương thích với ngôn ngữ TCL.

4.2 Cú pháp của TCL: Để tạo ra các file Tcl, chúng ta có thể sử dụng bất cứ trình soạn thảo văn bản

nào như vi, emacs, notepad, …với phần mở rộng của file là .tcl.

4.2.1 Khai báo biến và mảng Trong Tcl, chúng ta không cần phải khai báo biến trước khi sử dụng, và Tcl

phân biệt chữ hoa và chữ thường.

Để định nghĩa một biến ta dùng cú pháp:

set tên_biến giá_trị_biến

Ví dụ:

set var1 1

set var2 “day la bien var2”

Để khai báo một biến mà có thể sử dụng trong toàn bộ chương trình, ta dùng từ

khóa global:

global tên_biến

Ví dụ:

global ns

Để lấy giá trị của các biến, ta đặt toán tử $ ở trước tên biến.

Ví dụ:

Để in giá trị của các biến ở trên:

Page 119: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

119

Puts “var1=$var1 , var2=$var2”

Kết quả: 1 , day la bien var2

Các kiểu biến cơ bản trong Tcl là string, list, array. Trong đó, string cũng

được coi là một list với mỗi từ trong string là một phần tử của list. Tcl tự xác

định kiểu và đổi kiểu tự động.

Giống như hầu hết các ngôn ngữ khác, TCL cũng cung cấp cách khai báo

mảng. Tuy nhiên, một ưu điểm của ngôn ngữ TCL là nó không cần phải khai báo

kích thước của mảng:

set n(0) [$ns node]

set n(1) [$ns node]

set opts(bottlenecklinkrate) 1Mb

set opts(ECN) "on"

Trong ví dụ thứ nhất, một mảng n được tạo ra với các chỉ số là các số nguyên.

Trong khi đó, với ví dụ thứ hai, một mảng được tạo ra bằng cách gọi lệnh opts

với các chỉ số index không phải là các số nguyên.

4.2.2 Các biểu thức toán học trong TCL Bản thân trình thông dịch Tcl không thể tính toán các biểu thức toán học, thay

vì vậy Tcl cung cấp lệnh expr để tính toán các biểu thức toán học. Các cú pháp

toán học dùng trong các đối số của lệnh expr giống như trong ngôn ngữ C. Lệnh

expr xử lý được số nguyên, số thực, các giá trị Boolean, … Các toán tử logic trả

về giá trị 0 (false) hay 1 (true).

Cú pháp:

expr bieu_thuc

Trong đó, bieu_thuc là biểu thức toán học cần tính toán. Giá trị trả về của lệnh

expr sẽ là giá trị của biểu thức bieu_thuc sau khi đã tính toán.

Ví dụ:

set var3 [expr 5*10] . kết quả var3=50

Lệnh expr sẽ tự động chuyển đổi các đối số chuỗi thành các giá trị số. Sau đó

thực hiện việc tính toán với giá trị kiểu double, giá trị định dạng cho string là 6

Page 120: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

120

chữ số có ý nghĩa. Việc định dạng này có thể điều chỉnh được thông qua biến

tcl_precision.

Bảng các toán tử và thứ tự ưu tiên từ cao đến thấp:

Toán tử Chú thích

- ~ ! Trừ một ngôi; bitwise NOT; logic NOT

* / % Nhân; chia; phần dư

+- Cộng, trừ hai ngôi

<<>> Dịch trái; Dịch phải

<>

<= >=

So sánh nhỏ hơn, lớn hơn

Nhở hơn hoặc bằng, lớn hơn hoặc bằng

== So sánh bằng

!= So sánh không bằng

& | ^ Bitwise AND; OR; XOR

&& | | Phép toán logic AND, OR

x?y:z Nếu x thì y ngoài ra thì z

Bảng 4.1 Các toán tử trong TCL

4.2.3 Thay thế và lập nhóm Thay thế và lập nhóm là hai vấn đề hết sức quan trọng trong Tcl. Nó giúp cho

người lập trình xây dựng được các chương trình một cách gọn nhẹ.

4.2.3.1 Thay thế

Có hai loại thay thế: thay thế lệnh và thay thế biến.

Thay thế lệnh (command substitution)

Tcl lấy mọi thứ giữa hai dấu “[“ và “]”, đánh giá chúng như một lệnh,

sau đó viết lại lệnh bao ngoài bằng cách thay lệnh được thay thế bỡi giá trị

đã được tính toán của nó.

Thay thế biến

Page 121: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

121

Khi gặp dấu $, Tcl sẽ tự động thay thế giá trị của biến có tên sau nó thế

chỗ.

4.2.3.2 Lập nhóm

Cho phép nhiều từ trong một đối số, được dùng với các biến và các lệnh gọi

lồng nhau Tcl thực hiện lập nhóm trước, sau đó mới thực hiện phép thay thế và

cuối cùng gọi lệnh để thực thi. Có hai loại lập nhóm, lập nhóm bỡi dấu móc

nhọn “{“ “}” và nhóm bỡi dấu trích dẫn “ và “. Lập nhóm bỡi dấu móc nhọn

“{“ và “}” không cho phép thay thế ở bên trong nó. Còn lập nhóm bỡi dấu

trích dẫn cho phép việc thay thế xuất hiện bên trong nó. Thông thường lập

nhóm bằng dấu móc được dùng trong trường hợp muốn làm trễ việc thực thi

một lệnh. Chẳng hạn như với các vòng lặp, các lời gọi hàm, … Dấu ngoặc

vuông [ ] không cho phép lập nhóm.

4.2.4 Cấu trúc điều khiển 4.2.4.1 Điều kiện if

Cú pháp của lệnh if rất đơn giản:

if {$i < 10}{

Puts “i nho hon 10” }

if { $var2 == “day la bien var2”}{

puts “var2= thanh cong!” }

4.2.4.2 Vòng lặp for

Trong rất nhiều ngôn ngữ lập trình, cấu trúc vòng lặp for rất hay được sử

dụng vì tính tiện lợi của nó. Để khai báo một cấu trúc vòng lặp for trong TCL,

ta dùng cú pháp:

for { set i 0 } { $i < 100 } {inrc I } {

set n($i) [$ns node]

}

Vòng lặp for trên khai báo một mảng gồm 100 phần tử với mỗi phần tử là

một node.

4.2.4.3 Vòng lặp while

Page 122: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

122

Cú pháp của vòng lặp while:

set i 0

while { $i < 10 }{

set n($i) [new Node]

incr i

}

4.2.4.4 Thủ tục

Thủ tục là một trong những thành phần quan trọng nhất của ngôn ngữ TCL.

Nó làm cho việc lập trình trong Tcl trở nên đơn giản và hiệu quả, chương trình

trở nên gọn nhẹ, dễ quản lý hơn. Để định nghĩa một thủ tục ta dùng từ khóa

proc với cú pháp:

proc ten_thu_tuc {thamso}{

// cài đặt chức năng cho thủ tục

}

Trong đó:

ten_thu_tuc: tên của thủ tục hay lệnh mới.

thamso: danh sách các tham số, các tham số cách nhau bỡi ít nhất một

khoảng trắng. Thủ tục có thể không cần tham số.

Trình thông dịch sẽ bắt đầu thực thi lệnh trong script từ đầu đến cuối, khi

gặp từ khóa proc nó sẽ hình dung ten_thu_tuc là một thủ tục. Nó sẽ ghi nhớ tên

và nội dung của thủ tục và không thực thi các lệnh trong thủ tục đó cho đến

cuối ký tự “}”. Khi gặp lại ten_thu_tuc lần thứ hai thì trình thông dịch biết là

sẽ triệu gọi thủ tục, lúc này nó sẽ thực thi nội dung của thủ tục ten_thu_tuc, khi

đã chấm dứt thủ tục, dòng lệnh tiếp theo sau thủ tục sẽ tiếp tục đựợc thực thi.

Minh họa các loại thủ tục:

+ Định nghĩa một thủ tục không có tham số:

proc thutuc1 {} {

puts “day la thu tuc thu nhat”

}

Page 123: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

123

Để gọi thủ tục trong chương trình , ta làm như sau:

set i 0

while { $i < 5 }{

thutuc1

incr i

}

+ Định nghĩa một thủ tục có tham số:

proc thutuc2 {parameter1}{

puts “gia tri cua tham so la $parameter1”

}

Để gọi thủ tục có tham số , ta làm như sau:

set i 0

while { $i < 10 }{

thutuc2 i

incr i

}

+ Định nghĩa một thủ tục có giá trị trả về:

proc thutuc3 {min , max } {

set randomvar [ rand $min $max]

return $randomvar

}

Hàm rand dùng để phát sinh một giá trị ngẫu nhiên trong khoảng từ

giá trị min đến giá trị max.

Để lấy giá trị trả về của thủ tục, ta làm như sau:

set i 0

while { $i < 5 }{

set randomvar [thutuc3 0 i]

puts “$randomvar”

incr i

Page 124: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

124

}

4.2.4.5 Tập lệnh của TCL

Tập lệnh của Tcl được chia thành nhiều nhóm lệnh:

4.2.4.5.1 Nhóm lệnh điều khiển

Lệnh Chú thích

break thoát khỏi vòng lặp

case Thực thi các script dựa trên các giá trị đã cho

catch Bắt lỗi

Continue Yêu cầu vòng lặp quay lại thưc thi lệnh kế tiếp

Error Thông báo lỗi

eval Thực thi một kịch bản TCL

exit Kết thúc một ứng dụng

For Vòng lặp for

Foreach Lặp lại trên các phần tử trong một hay nhiều

danh sách

If Thực thi lệnh nếu thỏa điều kiện

Interp Khởi tạo thêm trình thông dịch TCL

Proc Tạo một thủ tục trong TCL

Rename Đổi tên hay xóa một lệnh

Return Giá trị trả về từ một thủ tục

Run Thực thi ứng dụng

Safe

Source Thực thi các lệnh TCL từ một file khác

Switch Cấu trúc rẽ nhánh

Uplevel Thực hiện một script trên một stack frame

khác

Page 125: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

125

While Cấu trúc vòng lặp while

Bảng 4.2 Nhóm lệnh điều khiển

4.2.4.5.2 Nhóm lệnh sự kiện

Lệnh Chú thích

After Thực thi một lệnh sau một khoảng thời gian

định trước

background error Được hỗ trợ để xử lý các lỗi background

Fileevent Thực thi một script khi một channel trở nên có

thể đọc hay có thể viết

Update

Wait Xử lý các sự kiện cho đến khi một biến được

thay thế

Bảng 4.3 Nhóm lệnh sự kiện

4.2.4.5.3 Nhóm lệnh về file

Lệnh Chú thích

close Đóng một channel

Eof Điều kiện để kiểm tra kết thúc file

Fbclocked Thăm dò một kênh I/O để xác định dữ liệu có

sẵn sang hay không

Fconfigure Set và get các option trên một channel

Fcopy Copy dữ liệu từ channel này sang channel

khác

File Thao tác trên file hệ thống

Filename

Flush

Gets Đọc một hàng từ một channel

Page 126: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

126

Global Khai báo các biến toàn cục

Open Mở một file hoặc điều khiển pineline channel

Puts Viết vào một channel

Read Đọc từ một channel

Seek Thay đổi vị trí truy cập cho một channel đã mở

Tell Trả về vị trí truy cập hiện hành của một

channel đã mở

Bảng 4.4 Nhóm lệnh file

4.2.4.5.4 Nhóm lệnh trên danh sách

Lệnh Chú thích

concat Liên kết các danh sách với nhau

join Tạo một chuỗi bằng cách liên kết các phần tử

của danh sách lại với nhau

lappend Bổ sung các phần tử vào cuối một danh sách

lindex Lấy một phần tử của danh sách

list Tạo một danh sách dựa trên các đối số

llength Đếm số phần tử trong danh sách

lrange Trả về một hay nhiều phẩn tử liên tiếp nhau

của một danh sách

lreplace Thay thế các phần tử trong một danh sách

bằng các phần tử mới

lsearch Tìm kiếm một phần tử của một danh sách thõa

mãn một điều kiện nào đó

lsort Sắp xếp các phần tử của một danh sách

split Chuyển một chuỗi thành một danh sách

Bảng 4.5 Nhóm lệnh xử lý trên danh sách

Page 127: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

127

4.2.4.5.5 Nhóm lệnh trên xử lý chuỗi

Lệnh Chú thích

append Nối các đối số vào một biến không thêm

khoảng trắng

binary Chuyển đổi giữa chuỗi và dữ liệu nhị phân

format Định dạng một chuỗi

regexp So sánh các biểu thức chính qui có trùng nhau

không

regsub

scan Phân tích một chuỗi dựa trên đặc tả định dạng

string Thao tác trên các chuỗi

subst Thay thế nhưng không đánh giá kết quả của

một lệnh

Bảng 4.6 Nhóm lệnh xử lý trên chuỗi

4.2.4.5.6 Nhóm lệnh trên xử lý biến

Lệnh Chú thích

array Thao tác trên các biến array

global Khai báo biến toàn cục

namespace Khởi tạo và ngữ cảnh thao tác trên các biến

set Gán giá trị cho biến

stdvars Biến đã được sử dụng trong TCL

trace Giám sát việc gán giá trị biến

unset Xóa biến

upvar Tạo liên kết đến các biến trong một stack

frame khác

variable Tạo và khởi gán một biến namespace

Page 128: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

128

Bảng 4.7 Nhóm lệnh xử lý biến

4.2.4.5.7 Nhóm lệnh về thời gian

Lệnh Chú thích

clock Lấy thời gian và định dạng chuỗi date

time Đo thời gian thực thi một script

Bảng 4.8 Nhóm lệnh xử lý thời gian

Mỗi lệnh TCL thường cho phép rất nhiều thông số, tùy chọn. Minh họa

một số ví dụ về nhóm lệnh thao tác trên I/O:

Tham số Chú thích

open what

access?

permission

Mờ file/pipeline, trả về ID

puts – nonewline

channel

Ghi chuỗi

gets channel?

numbytes

Đọc một dòng

read – nonewline

channel?

Đọc tất cả các byte và bỏ qua \n

tell channel Trả về offset tìm thấy

seek channel?

offset? origin?

Đặt offset tìm từ offset đầu , hiện hành hay

cuối cùng

eof channel? Xác định trạng thái cuối channel

flush channel? Ghi vào channel data từ buffer

close channel? Đóng channel I/O

read channel

numBytes

Đọc tất cả data trả về số bytes

Bảng 4.9 Các tham số tùy chọn trên I/O

Page 129: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

129

Ví dụ:

Mở file để ghi:

set file [open /tmp/book.txt w 0600]

puts $file “hello world!”

close $file

Ta có thể thay tham số w của tác vụ open bằng tham só r+ như sau:

set file [open /tmp/book.txt r+]

puts $file “hello world!”

close $file

Bảng tham số các tác vụ open:

Tham số Chú thích

r Mở file để đọc, điều kiện file phải tồn tại

r+ Mờ file để đọc và ghi nối tiếp vào cuối file

điều kiện file phải tồn tại

w Mở file để ghi, nếu file đã tồn tại thì sẽ bị ghi

đè

w+ Mở file để ghi

a Nối vào cuối file

a+ Mở file để đọc / ghi dữ liệu vào cuối file

Bảng 4.10 Các tham số tùy chọn xử lý trên file

Bảng cờ cho tác vụ open:

Cờ ( flag ) Chú thích

RDONLY Chỉ đọc

WRONLY Chỉ ghi

RDWR Đọc và ghi

APPEND Ghi vào cuối

CREATE Tạo mới

Page 130: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

130

EXCL Tạo mới file đã tồn tại

NOCTTY Lấy biến cố từ terminal để điều khiển

NONBLOCK Trong suốt quá trình mở không sử dụng block

TRUNC Ghi đè file nếu tồn tại

Bảng 4.11 Các cờ xử lý tác vụ mở file

Ví dụ:

set field [open /tmp/book.txt {RDWR CREATE}] hay

if [catch {open /tmp/book.txt} field]{

puts stderr “khong the mo file /tmp/book.txt : $field” }

else{

close $field

}

Bảng cú pháp exec để định hướng I/O:

Thuộc tính Chú thích

-keepnewline Lấy new line từ kết quả

l Xuất chuẩn của pipe từ 1 tiến trình vào một tiến

trình

l& Xuất chuẩn pipe và lỗi

<filename Lấy input từ file filename

<@field Lấy input từ kênh I/O định dạng bỡi field

<<value Lấy input từ giá trị đã cho

>filename Xuất chuẩn ra filename

2>filename Xuất chuẩn lỗi ra filename

>&filename Xuất chuẩn filename và lỗi

2>>filename Ghi lỗi vào filename, nếu filename chưa tồn tại thì

tạo và ghi mới, nếu đã tồn tại thì ghi tiếp vào cuối

Page 131: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

131

file

>>&filename Ghi tiếp xuất chuẩn và lỗi vào trong filename

>@field Xuất chuẩn trực tiếp đến field

2>@field Xuất chuẩn lỗi đến I/O field

>&@field Xuất chuẩn nội dung và lỗi chuẩn đến I/O file

& Ký tự cuối, chỉ định pipe chạy background

Bảng 4.12 cú pháp exec để định hướng I/O

Ví dụ:

set d [exec date]

catch { exec program arg arg } result

Liên kết file (file join). Tùy theo hệ điều hành:

+ Unix:

Disk:SystemFolder:Extension:ToolCommandLanguage:tcl7.6

c:/Program Files/Tcl/lib/Tcl7.6

file join a b/c d

+ Windows:

Disk:System Folder:Extension:Tool Command Language:tcl7.6

c:\Program Files\Tcl\lib\tcl8.0

+ Macitosh :

Disk:Applications:Tcl/Tk4.2

file join /usr/local/lib

Thuộc tính Chú thích

file atime name ? Trả về thời gian truy cập là một chuỗi deci

file attributes na

option ? value ?

Tìm kiếm hay xác định thuộc tính file

file copy – force?

destination?

Sao chép file từ nguồn đến đích. Nguồn và đích là

thư mục

Page 132: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

132

file delete – force Xóa file

file driname name Lấy tên thư mục cha hay tên file

file exist name Trả về 1 nếu tồn tại tên file, ngược lại thì trả về 0

file extension na Trả về tên mở rộng kể từ dấu chấm cuối

file executable n Trả về 1 nếu file cho phép thực thi, ngược lại trả về

0

file isdirectory n Trả về 1 nếu file là thư mục, ngược lại trả về 0

file is file name Trả về 1 nếu name là file, ngược lại trả về 0

file join path path Nối các thành phần thành đường dẫn mới

file lstat name var Lấy thuộc tính name liên kết với var

file mkdir name Tạo thư mục với tên thư mục là “name”

file mtime name Trả về thời gian khi sửa file “name”, giá trị trả về

là chuỗi decimal

file nativename

name

Trả về native version của “name”

file owned name Trả về 1 nếu user là chủ sở hữu của “name”, ngược

lại trả về 0

file readable name Trả về 1 nếu file “name” cho phép đọc, ngược lại

trả về 0

file readlink name Trả về nội dung ký hiệu liên kết của “name”

file rename –

force old? new?

Đổi tên file (thư mục )cũ thành file (thư mục) mới

file size name Trả về số byte của file “name”

file split name Tách nội dung của file “name” thành các thành

phần nhỏ

Bảng 4.13 Cú pháp các thao tác trên file

Page 133: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

133

Chương 5

NGÔN NGỮ HƯỚNG ĐỐI TƯỢNG OTCL

5.1 OTcl là ngôn ngữ hướng đối tượng của TCL:

OTcl (Object TCL) là ngôn ngữ hướng đối tướng được phát triển trên nền của

ngôn ngữ Tcl. Với khả năng hướng đối tượng, chúng ta có thể định nghĩa lớp, các

phương thức, các thành phần dữ liệu của lớp.

Trong NS có một thành phần quan trọng gọi là TclCl được dùng để liên kết các

lớp được viết bằng C++ với các lớp tương ứng trong OTcl. Nghĩa là TclCL là

một lớp keo để liên kết các lớp của hai module với nhau.

5.2 Lớp và đối tượng trong Otcl: Để định nghĩa một lớp OTcl sử dụng từ khóa class và để kế thừa từ một lớp

khác ta dùng từ khóa superclass. Cú pháp khai báo:

class ten_lop –superclass ten_lop_cha

Ví dụ:

Để tạo một lớp có tên là MyNode mà kế thừa từ lớp cha là lớp Node ta khai

báo: class MyNode –superclass Node

Cũng như trong ngôn ngữ C++, khai báo trên có nghĩa là sẽ có một số phương

thức trong lớp Node sẽ có thể được sử dụng trong lớp MyNode.

Để tạo một thể hiện của một lớp ta dùng cú pháp:

set ten_doi_tuong [new ten_lop]

Ví dụ:

Để tạo một thể hiện của lớp MyNode, ta khai báo:

set mynode [new MyNode]

5.3 Phương thức khởi tạo và hủy của lớp:

Page 134: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

134

Trong OTcl để xây dựng phương thức khởi tạo cho lớp, chúng ta sử dụng một

phương thức đặc biệt là phương thức init . Ví dụ để tạo phương thức khởi tạo cho

lớp MyNode ta khai báo phương thức init như sau:

MyNode instproc init {} {

$self next

$self instvar datamember1

set datamember1 0

}

$self next: lệnh này tương tự như lệnh super() trong ngôn ngữ Java, dùng để

gọi phương thức khởi tạo của lớp cha.

Ngoài ra, phương thức khởi tạo init của lớp có thể chứa đối số:

MyNode2 instproc init {arg1 arg2} {

$self next

$self instvar dm1 dm2

set dm1 $arg1

set dm2 $arg2

}

Khởi tạo đố tượng MyNode2:

set mn2 [new MyNode2 1 2]

Phương thức hủy của OTcl là phương thức destroy:

MyNode instproc destroy {} {

$self next

}

5.4 Khai báo các phương thức cho lớp: Sau khi đã tạo được một lớp, ta cần khai báo các phương thức cần dùng cho

lớp đó. Cú pháp khai báo phương thức với từ khóa instproc:

ten_lop instproc ten_phuong_thuc {[tham_so]}{

// cài đặt chi tiết cho phương thức

Page 135: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

135

}

Trong đó:

+ ten_lop: Tên của lớp cần khai báo các phương thức.

+ ten_phuong_thuc: Tên của phương thức cần khai báo.

+ tham_so: Tham số đầu vào của phương thức. Giá trị này là option.

Ví dụ:

Khai báo phương thức với tên là “phuong_thuc_thu_nhat” cho lớp

MyNode:

MyNode instproc phuong_thuc_thu_nhat {} {

puts “day la noi Phuong thuc thu nhat cua lop MyNode!”

}

Để sử dụng phương thức này trong chương trình, ta gọi:

set mynode [new MyNode] // tạo một đối tượng mynode

$mynode phuong_thuc_thu_nhat

5.5 Khai báo các thành phần dữ liệu: Trong OTcl các thành phần dữ liệu của một lớp chỉ được định nghĩa trong các

phương thức của lớp mà không được định nghĩa như là một thành phần của lớp.

Điều này khác với ngôn ngữ C++, với C++ các thành phần dữ liệu của lớp được

khai báo ngay trong phần header của lớp và được xem là một thành phần của lớp.

Để khai báo và tham chiếu các thành phần dữ liệu của lớp ta dùng chỉ thị instvar.

Minh họa cách khai báo các thành phần dữ liệu:

MyNode instproc phuong_thuc_thu_hai {} {

$self instvar datamember1

set datamember1 "data member – phuong_thuc_thu_hai"

}

MyNode instproc phuong_thuc_thu_ba {} {

$self instvar datamember1

Page 136: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

136

puts "datamember1 = $datamember1"

}

Biến self có thể sử dụng trong phạm vi của các phương thức của lớp để đề cập

đến đối tượng cụ thể. Biến seft tương tự như con trỏ this của ngôn ngữ lập trình

C++. Trong những trường hợp cụ thể, biến seft có thể dùng để gọi các phương

thức khác từ trong phạm vi một phương thức.

Cách triệu gọi các phương thức:

set mynode [new MyNode]

$mynode phuong_thu_thu_hai

$mynode phuong_thuc_thu_ba

Một đối tượng MyNode được khởi tạo với tên là mynode. Sau đó, phương thức

phuong_thuc_thu_hai được gọi. phương thức này thực hiện việc gán giá trị cho

thành phần dữ liệu (biến) datamember1. Tiếp theo, phương thức

phuong_thuc_thu_ba được gọi và phương thức này sẽ thực hiện việc in giá trị của

biến datamember1. Giá trị của biến datamember1 chính là giá trị được gán trong

phương thức phuong_thuc_thu_hai

Page 137: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

137

B. GIỚI THIỆU CÁC CÔNG CỤ PHÁT SINH

TOPOLOGY MẠNG

PHẦN 3

CÁC CÔNG CỤ HỔ TRỢ NGÔN NGỮ DML

Page 138: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

138

Chương 6

DMLEditor

6.1 Giới thiệu:

DMLEditor là một công cụ hổ trợ cho việc thiết kế các mô hình mạng theo

hướng trực quan, sinh động dựa trên ngôn ngữ DML và trình giả lập mạng

SSFNet.

DMLEditor được viết bằng ngôn ngữ Java của tác giả Andreas Hartl thuộc

trường đại học Technische Universitat Munchen, được bảo hộ bởi tổ chức GNU.

6.2 Các tính năng nổi bật của DMLEditor: ► Dễ sử dụng và thao tác.

► Chính xác.

► Hiệu quả.

► Save file DML.

► Load file DML.

► Là phần mềm nguồn mở, dễ nâng cấp và mở rộng ứng dụng.

► Gọn, nhẹ.

► Linh hoạt, có thể chạy trên nhiều HDH khác nhau như Window,

Unix, Linux.

6.3 Các bước cài đặt DMLEditor: Quá trình cài đặt DMLEditor (trên Window cũng như trên Linux) tương đối dễ

dàng, tiến hành qua 3 bước sau:

Bước 1:

Tải về bản DMLEditor.jar và tiến hành giải nén (bằng Winzip hoặc Winrar)

ta sẽ được một thư mục là DMLEditor chứa 2 thư mục con là DMLEditor và

Page 139: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

139

META-INF (chú ý là không được thay đổi bất kỳ file hay thư mục nào trong

thư mục gốc).

Bước 2:

Chép thư mục giả nén DMLEditor vào ổ đĩa (chẳng hạn chép vào thư mục

gốc ổ đĩa C:\).

Bước 3:

Từ của sổ DOS, gõ dòng lệnh sau (ở một thư mục bất kỳ, giả sử đang ở thư

mục d:\): D:\> java -classpath c:\DMLEditor DMLEditor.DMLEditor

Chú ý: bạn phải cài jdk phiên bản 1.2 hay mới hơn và thiết lập các biến môi

trường cần thiết theo hướng dẫn ở những phần trên.

6.4 Quá trình thiết kế trên DMLEditor: Giao diện chính của DMLEditor sau khi biên dịch:

Hình 6.1 Giao diện chính của DMLEditor

Các chức năng trên menu File:

Page 140: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

140

New: tạo một Simulation mới.

Open: mở một file DML.

Save/Save as: lưu mô hình theo file DML.

Exit: kết thúc chương trình.

Các chức năng trên Tooolbar:

Create new Network: hiển thị cửa sổ tạo mới Network.

Hình 6.2 Tạo id cho mạng

Create new Peer, Create more Peers: hiển thị cửa sổ cấu hình cho

các Host và Router.

Hình 6.3 Giao diện cấu hình cho Host, Router

Remove Peer(s): xóa các đối tượng Host hoặc Router khỏi mạng mà

người dùng đang chọn (chọn đối tượng bằng cách click phải chuột vào

đối tượng hiễn thị trên cữa sổ view).

Page 141: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

141

Create new Link: tạo link giữa 2 interface của 2 Host hoặc Router.

Chức năng này chỉ có hiệu lực khi đã tạo Host hoặc Router với interface

tương ứng và phải chọn 2 đối tượng cần tạo liên kết.

Hình 6.4 Giao diện tạo liên kết giữa các Host,Router

Remove Link: xóa link giữa 2 interface được chọn.

Edit Dictionary Peer: định nghĩa các thông số thường dùng cho Host

và Router.

Hình 6.5 Giao diện thiết lập thông số cho Host, Router

Edit Dictionary Interface: định nghĩa các thông số thường dùng cho

Interface.

Page 142: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

142

Hình 6.6 Giao diện cấu hình card mạng

Define Route: cấu hình định tuyến cho Host và Router.

Hình 6.7 Giao diện thiết lập bảng định tuyến

List all Routes: danh sách các cấu hình định tuyến cho các interface.

Hình 6.8 Danh sách bảng định tuyến

Page 143: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

143

Chương 7

RacewayViewer

7.1 Giới thiệu:

RacewayViewer là một công cụ khác cũng nhằm hổ trợ cho việc thiết kế các

mô hình mạng theo hướng trực quan, sinh động giống như công cụ DMLEditor.

RacewayViewer do tổ chức Renesys Corporation phát triển vào năm 2001

được viết bằng ngôn ngữ Java, hiện phiên bản mới nhất là phiên bản 2.0 đi kèm

với SSFNet 2.0.

7.2 Các tính năng nổi bật của RacewayViewer: ► Hiển thị trực quan cấu trúc mạng theo hướng phân cấp.

► Cho phép chỉnh sữa các thành phần mạng, thay đổi vị trí, kích

thước, màu sắc các node.

► Save file DML.

► Là phần mềm nguồn mở, dễ nâng cấp và mở rộng ứng dụng.

► Gọn, nhẹ.

► Linh hoạt, có thể chạy trên nhiều HDH khác nhau như Window,

Unix, Linux.

7.3 Các bước cài đặt RacewayViewer: RacewayViewer được tích hợp trong phiên bản SSFNet 2.0 có tên file là

raceway.jar, được chứa trong thư mục lib của ssfnet sau khi cài đặt. Quá trình cài

đặt được tiến hành qua 3 bước sau:

Bước 1:

Giải nén file raceway.jar (bằng Winzip hoặc Winrar) ta sẽ được một thư

mục là Raceway chứa 2 thư mục con là com và META-INF cùng với file

Page 144: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

144

RacewayViewer.class (chú ý là không được thay đổi bất kỳ file hay thư mục

nào trong thư mục gốc).

Bước 2:

Chép thư mục giả nén raceway vào ổ đĩa bất kỳ (chẳng hạn chép vào thư

mục gốc ổ đĩa C:\).

Bước 3:

Từ của sổ DOS, gõ dòng lệnh sau (ở một thư mục bất kỳ, giả sử đang ở thư

mục d:\): D:\> java RacewayViewer <path file DML> <options>

<path file DML> là tham số đường dẫn của file DML.

<option> có các tham số sau (có thể có hoặc không):

-s my_data.dat

-p my_player

-start <start_time>

-stop <stop_time>

Ví dụ: D:\> java RacewayViewer f:\SimpleLan.dml

Các ví dụ về animation được chứa trong thư mục ssfnet/animation.

Chú ý: bạn phải cài jdk phiên bản 1.2 hay mới hơn và thiết lập các biến môi

trường cần thiết theo hướng dẫn ở những phần trên.

7.4 Quá trình thiết kế trên RacewayViewer: Giao diện chính của RacewayViewer sau khi biên dịch:

Page 145: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

145

Hình 7.1 Giao diện chính của RacewayViewer

Các chức năng chính trên menu File và Edit:

Save/Save Copy…0: copy một bản dự phòng với tên file thêm vào

“_0”.

Undo/Redo: trở về các thiết lập trước và sau thiết lập hiện hành.

Select: chọn các thành phần mạng.

Scale/Rotate/Zoom: thay đổi kích thước mô hình mạng.

Page 146: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

146

Hình 7.2 Minh họa chức năng zoom toàn bộ network

Page 147: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

147

Hình 7.3 Minh họa chức năng scale một sub-network

Commit: lưu lại các thiết lập giống nhau cho các thành phần mạng

khác.

Center: điều chỉnh của sổ nhìn về chính giữa.

Page 148: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

148

Chương 8

NetViewer

8.1 Giới thiệu:

NetViewer là cũng là một công cụ hổ trợ cho việc thiết kế các mô hình mạng

theo hướng trực quan, sinh động dựa trên ngôn ngữ DML và trình giả lập

SSFNet.

Tác giả của NetViewer là Jame A. Rome thuộc tổ chức Oak Ridge National

Laboratory, được viết bằng ngôn ngữ Java, sử dung trình dịch jdk phiên bản 1.4

hay hơn.

8.2 Các tính năng nổi bật của NetViewer: ► Dễ sử dụng và thao tác.

► Chính xác.

► Hiệu quả.

► Hiển thị trực quan cấu trúc mạng theo hướng phân cấp.

► Cho phép chỉnh sữa các thành phần mạng.

► Save file DML.

► Load file DML.

► Là phần mềm nguồn mở, dễ nâng cấp và mở rộng ứng dụng.

► Gọn, nhẹ.

► Linh hoạt, có thể chạy trên nhiều HDH khác nhau như Window,

Unix, Linux.

8.3 Các bước cài đặt NetViewer: Cũng giống như RacewayViewer, quá trình cài đặt của NetViewer khá đơn

giản, được tiến hành qua 3 bước sau:

Bước 1:

Page 149: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

149

Tải về bản NetViewer từ địa chỉ:

http://www.ornl.gov/~jar/NetViewer/NetViewer.zip

Giải nén file NetViewer.zip (bằng Winzip hoặc Winrar) ta sẽ được một thư

mục là NetViewer chứa các file: NetViewer.jar, NetSchema.dml, protocols.dat

và 2 file demo (chú ý là không được thay đổi bất kỳ file nào trong thư mục

gốc, trừ 2 file demo).

Bước 2:

Chép thư mục giải nén NetViewer vào ổ đĩa bất kỳ (chẳng hạn chép vào thư

mục gốc ổ đĩa C:\).

Bước 3:

Từ của sổ DOS, chuyển vào thư mục gốc của NetViewer bằng lệnh (giả sử

đang ở ổ đĩa D:\):

d:\> c: ←Enter

c:\> cd NetViewer ←Enter

c:\NetViewer> java -Xmx200m -Xms100m -jar NetViewer.jar

Chú ý: bạn phải cài jdk phiên bản 1.4 hay mới hơn và thiết lập các biến môi

trường cần thiết theo hướng dẫn ở những phần trên.

8.4 Quá trình thiết kế trên NetViewer: Giao diện chính của NetViewer sau khi biên dịch:

Page 150: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

150

Hình 8.1 Giao diện chính của NetViewer

Giao diện của NetViewer sau khi mở một file DML.

Hình 8.2 Giao diện của NetViewer khi mở một file DML

Các chức năng chính trên menu File, Search, View:

Open DML: mở một file DML.

Page 151: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

151

Add file at Node: chèn nội dung một file DML vào vị trí Node đang

được chọn.

Open Template: mở một file DML theo định dạng Template.

Save/ Save as: lưu mô hình thành file DML.

Check Schema: kiểm tra nội dung file Schema dùng trong mô hình.

Find: tìm kiếm một node hay một thuộc tính trong mô hình mạng.

Hình 8.3 Giao diện tìm kiếm node

expand references: trở về trạng thái expand tối thiểu.

undo expand: quay về tình trang expand trước đó.

Look and Feel: các tùy chọn hiển thị giao diện NetViewer, có các

tham số sau: Default, Motif, Java.

Các chức năng chính dưới thanh Tooolbars:

Edit Attribute: chỉnh sữa một thuộc tính đang được chọn.

Page 152: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

152

Hình 8.4 Giao diện chỉnh sửa các thuộc tính

Add Child Node/ Add node: thêm node vào mô hình.

Page 153: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

153

Hình 8.5 Giao diện thêm Node vào trong mạng

Replace Node: thay thế một node.

Delete: xóa một node khỏi mô hình.

Reload Schema: nạp lại file Schema.

Expand Node: trở về trạng thái expand tối thiểu.

Topology: hiển thị topology mạng trong mô hình.

Hình 8.6 Mô hình mạng sau khi cấu hình

Mô tả các chức năng chính trên giao diện Network Topology:

expand Combobox: tùy chọn expand cho các node, có các tham số

sau: near, far right, on bottom.

Port spacing: điều chỉnh khoảng cách giữa các port trên các node.

Print: xuất mô hình ra máy in dưới dạng file ảnh.

Save Image: lưu mô hình Topology thành file ảnh theo định dạng png.

Save Positions: lưu lại các vị trí x-y của các thành phần đã được thay

đổi, chức năng chỉ có hiệu lực khi người dùng chức năng lưu file DML

trong cữa sổ giao diện chính.

Page 154: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

154

Redraw: lưu vị trí mới của các node và vẽ lại mô hình Topology.

Display CIDR: hiển thị tham số CIDR cho các node nếu có.

Expand: mở rộng vùng hiển thị Topology.

Set Area: cho phép người dùng phân bố các giao tiếp OSPF Areas,

chọn Router (có màu xanh lá cây), chon tất cả các giao tiếp trên Router

đó bằng cách nhấn ALT + click từng giao tiếp, nhấn Set Area.

Tất cả các node là Net trong vùng hiển thị khi right-lick sẽ cung cấp các

thông tin về Net đó dưới dạng TreePopUp.

Hình 8.7 Các thành phần mạng dưới dạng TreePopUp

Loại thiết bị và màu sắc:

Net:

Host:

Router, Switch, Hub:

Page 155: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

155

PHẦN 4

CÁC CÔNG CỤ HỔ TRỢ NGÔN NGỮ TCL

Chương 9

BRITE

9.1 Thiết kế và cài đặt của BRITE:

BRITE là công cụ phát sinh topo được thiết kế rất uyển chuyển, có nhiều cách

để phát sinh topo. Ngoài ra, BRITE cũng cung cấp nhiều mô hình phát sinh topo:

Hình 9.1 Cấu trúc tổng quát của BRITE

Như trong hình 9.1, BRITE sẽ đọc các tham số để phát sinh topo cho mạng từ

file cấu hình bằng tay hoặc từ giao diện GUI của BRITE (1). BRITE còn có khả

năng hổ trợ việc import các topo được phát sinh bỡi các công cụ phát sinh khác

(2) và BRITE hổ trợ việc export topo mạng cho các công cụ giả lập mạng (3) như

NS, SSF … Trong BRITE, module đóng vai trò quan trọng nhất là BRITE

Analysis Engine gọi tắt là BRIANA. Module BRIANA được đại học Boston phát

Page 156: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

156

triển, với mục đích chính là dùng để chuyển đổi cú pháp của các công cụ phát

sinh topo khác sang dạng chuẩn của BRITE.

Hiện tại, BRITE có hai giao diện đầu vào: Giao diện đồ họa dựa trên Java, và

dòng lệnh. Do đó, tất cả các tham số dùng để phát sinh topology cho mạng có thể

được cấu hình từ file hoặc từ giao diện đồ họa. và BRITE chỉ có một giao diện

output: xuất ra các file theo các định dạng khác nhau tùy thuộc vào người dùng.

BRITE chưa hổ trợ việc output trực tiếp sang các môi trường giả lập như NS và

SSF.

9.1.1 Download và cài đặt BRITE

Hiện tại, BRITE cung cấp hai phiên bản của bộ công cụ phát sinh: phiên bản

cài đặt bằng Java và phiên bản cài đặt bằng C++ và có thể download từ :

http://cs-pub.bu.edu/brite/index.htm

Cài đặt và chạy phiên bản Java

Để cài đặt và chạy được phiên bản Java thì cần phải cài bộ JDK1.3 hoặc mới

hơn.

Sau khi download thành công, giải nén file theo cú pháp sau:

$gunzip BRITE_JAVA.tar.gz

$tar xvf BRITE_JAVA.tar

Cấu trúc của thư mục sau khi giải nén:

Hình 9.2 Cấu trúc thư mục của phiên bản Java

Chuyển đến thư mục BRITE_JAVA và tiến hành biên dịch:

$ cd BRITE_JAVA

Page 157: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

157

$ make java

Sau khi biên dịch thành công, ta có thể chạy BRITE từ GUI:

$ startGUI.

Hoặc có thể chạy từ màn hình terminal:

$ cd Java

$ java Main>BRITE <config_file.conf> <output_file> <seed_file>

Cài đặt và chạy phiên bản C++

Sau khi đownload thành công, tiến hành giải nén file:

$ gunzip BRITE_CPP.tar.gz

$ tar xvf BRITE_CPP.tar

Cấu trúc thư mục của phiên bản C++:

Hình 9.3 Cấu trúc thư mục phiên bản C++

Chuyển đến thư mục BRITE_CPP và tiến hành biên dịch:

$ cd BRITE_CPP

$ make c++

Sau khi biên dịch thành công, ta có thể chạy BRITE từ GUI:

$ startGUI.

Hoặc có thể chạy từ màn hình terminal:

$ cd C++

$ brite <config_file.conf> <output_file> <seed_file>

9.1.2 Giao diện bằng GUI

Page 158: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

158

Giao diện của BRITE được cài đặt bằng ngôn ngữ Java. Tuy nhiên, nó vẫn có

thể được sử dụng cho phần giao diện của phiên bản BRITE cài đặt bằng C++.

Kiểu kiến trúc này làm cho phần giao diện GUI tách biệt với phần cài đặt các chi

tiết về các mô hình phát sinh topo bên trong.Tất cả các giao tiếp giữa phần giao

diện với phần bên trong được thông qua một file cấu hình. Khi người dùng cấu

hình các tham số, giao diện GUI sẽ phát sinh file cấu hình GUI_GEN.conf thích

hợp. Sau đó, BRITE khởi động một tiến trình C++ hoặc Java (tùy theo phiên bản

cài đặt) và chạy công cụ phát sinh topo với file cấu hình vừa được tạo ra. Hình vẽ

9.4 minh họa sự tương tác giữa phần giao diện GUI với phần phát sinh topo:

Hình 9.4 sự tương tác giữa phần giao diện GUI với phần phát sinh topo

9.1.3 Giao diện bằng dòng lệnh

Page 159: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

159

Giao tiếp bằng dòng lệnh tức là tạo ra các file cấu hình, do đó nó sẽ gọi trực

tiếp engine phát sinh topo. Sau đó, sử dụng các thông tin được lưu trong seed_file

để phát sinh topo. BRITE sử dụng các số giả ngẫu nhiên (pseudo-random) ở các

điểm khác nhau suốt trong quá trình phát sinh topo. seed_file chứa các thông tin

để khởi tạo bộ phát sinh số giả ngẫu nhiên mỗi khi được yêu cầu. Trong quá trình

phát sinh, BRITE lưu lại một file backup của seed_file là last_seed_file để có thể

phát sinh lại topo.

Để sử dụng giao tiếp bằng dòng lệnh, chuyển đến thư mục BRITE và thực hiện

lệnh :

$brite my_config.conf my_export.brite seed_file (C++)

$ java Main.BRITE my_config.conf my_export.brite seed_file (Java)

9.1.4 Các file cấu hình

Tất cả các file cấu hình của BRITE đều bắt đầu bằng từ khóa BriteConfig. Cú

pháp của một dòng trong file cấu hình:

Key = Value

Với Key Thông số cấu hình (kiểu ký tự)

Value giá trị của các thông số

Mỗi mô hình có một thông số khác nhau.

File cấu hình của mô hình AS Waxman:

Page 160: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

160

Hình 9.5 File cấu hình của mô hình AS Waxman

File cấu hình của mô hình phát sinh NLANR:

Hình 9.6 File cấu hình của mô hình phát sinh NLANR

9.1.5 Định dạng output của BRITE

Định dạng output của BRITE gồm ba phần:

+ Thông tin về mô hình: bao gồm số lượng các node, các cạnh, thông tin về

mô hình sử dụng để phát sinh topology.

+ Thông tin về Node: Mỗi node trong file cấu hình output có cú pháp:

Page 161: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

161

NodeId xpos ypos indegree outdregee Asid type

Ý nghĩa của các thông số:

Thông số Ý nghĩa

NodeId số ID của node

xpos tạo độ x của node trong mặt phẳng

ypos tạo độ y của node trong mặt phẳng

indegree Bậc trong của node

outdegree Bậc ngoài của node

ASid id của AS mà node đó đang chịu sự quản lý

type Loại node (Router hoặc AS)

Bảng 9.1 Các tham số thiết lập cho Node

+ Thông tin về các cạnh : Mỗi cạnh trong file cấu hình output có cú pháp:

EdgeId from to length delay bandwidth Asfrom Asto type

Ý nghĩa của các thông số:

Thông số Ý nghĩa

EdgeId số id của cạnh

from chỉ số id của node nguồn

to chỉ số id của node đích

Length Chiều dài của cạnh

delay Độ trễ

bandwidth Băng thông của kết nối

ASfrom chỉ số id của AS nguồn

ASto Chỉ số id của AS đích

type loại cạnh

Bảng 9.2 Các tham số thiết lập cho cạnh

Page 162: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

162

Hình 9.7 Ví dụ file output của mô hình Flat-RouterWaxman

9.2 Kiến trúc của BRITE: 9.2.1 Qui trình hoạt động của BRITE

Qui trình phát sinh topo cho mạng phụ thuộc chủ yếu vào các mô hình phát

sinh cụ thể. Qui trình đó có thể chia thành bốn giai đoạn:

+ Cách thức đặt các node lên mặt phẳng.

+ Tạo các liên kết giữa các node.

+ Thiết lập các thuộc tính cho các thành phần mạng (như địa chỉ của

node, băng thông …).

+ export topo mạng sang một định dạng file của các công cụ giả lập.

9.2.2 Kiến trúc của BRITE Trong BRITE, một topology được biểu diễn bằng lớp Topology. Lớp

Topology chứa hai thành phần dữ liệu (data member) là Model và Graph. Ngoài

ra, lớp Topology còn chứa một số các hàm và phương thức export sang các công

cụ giả lập mạng.

Page 163: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

163

Hình 9.8 Cấu trúc của một Topology trong BRITE

Lớp Model là một lớp trừu tượng và được kế thừa từ các mô hình phát sinh cụ

thể (như trong hình 2: Model1, Model2 …). Một topo được phát sinh bỡi BRITE

có thể dùng một trong các mô hình phát sinh trên nếu cấu trúc của topo là đẳng

cấp (flat), ngược lại, nếu cấu trúc của topo là phân cấp ( hierarchical ) thì sẽ dùng

kết hợp cac mô hình phát sinh khác nhau. Lớp Graph là lớp dùng để tạo ra các

cấu hình chính cho mạng như tạo các node, các liên kết giữa các node, …

9.2.2.1 Lớp Model

Kiến trúc của BRITE chủ yếu tập trung vào lớp Model :

Hình 9.9 Mô hình của lớp Model

Như trong hình, hiện tại BRITE hổ trợ tám mô hình phát sinh topo mạng

khác nhau. Mỗi mô hình đều có một phương thức Generate, phương thức này

trả về lưu đồ (graph ) chứa toàn bộ thông tin của topo vừa được phát sinh. Chi

tiết của các mô hình:

9.2.2.1.1 Mô hình Flat Router-level

Page 164: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

164

Mô hình này chứa một lớp RouterModel kế thừa từ lớp Model. Các mô

hình Router-level được hổ trợ trong BRITE là RouterWaxman và

RouterBarabasiAlbert. Hai mô hình này sử dụng chung một số phương thức

từ lớp RouterModel. Cụ thể, cả hai phương thức giống nhau trong việc đặt

node vào trong mặt phẳng, và cấp phát băng thông cho các liên kết. Điểm

khác nhau giữa hai mô hình là cách thức tăng trưởng của mạng và phương

thức tương tác giữa các node.

Cách thức đặt Node

Đặt node trong mặt phẳng tức là lựa chọn vị trí trên mặt phẳng cho node

và khởi tạo các cấu trúc dữ liệu cho Node. Lớp RouterModel có phương

thức PlaceNodes dùng để đặt các node trên mặt phẳng theo một trong hai

cách: ngẫu nhiên (randomly) hoặc heavy-tailed. Theo phương pháp đặt node

ngẫu nhiên, mỗi node được đặt ở những vị trí ngẫu nhiên trên mặt phẳng.

Trong khi đó, theo phương pháp heavy-tailed, BRITE chia mặt phẳng thành

các ô vuông ( kích thước của mặt phẳng và các ô vuông phụ thuộc vào các

tham số đầu vào ) . Mỗi ô vuông được gán một số lượng các node nhất

định. Sau đó, trong mỗi ô vuông các node được đặt ngẫu nhiên.

Hình 9.10 Hai mô hình phân bố node randomly và Heavy-Tailed

Cấp phát băng thông

Sau khi đã hoàn thành việc phát sinh topo, cả hai mô hình Router-level sẽ

gọi phương thức Assignbandwidth của lớp RouterModel. Để cấp phát băng

thông cho các liện kết giữa các node, người dùng có thể cấu hình giá trị băng

thông lớn nhất (BWmax) giá trị băng thông nhỏ nhất (BWmin) từ file cấu

Page 165: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

165

hình hay từ giao diện GUI. Khi đó, BRITE sẽ cấp phát băng thông cho các

liên kết dựa trên các tham số sau:

Constant: Băng thông cho tất cả các liên kết bằng Bwmin.

Uniform: Giá trị băng thông được cấp phát cùng một giá trị giống

nhau nằm giữa giá trị Bwmin và Bwmax cho tất cả các liên kết.

Exponential: Giá trị được cấp phát theo hàm số mũ với hệ số Bwmin.

Heavy-tailed: Giá trị được cấp phát theo phương pháp heavy-tailed với

giá trị nhỏ nhất là BWmin và giá trị lớn nhất là Bwmax.

Mô hình RouterWaxman

Các mô hình phát sinh topo khác nhau chủ yếu về cách thức tăng trưởng các

node trong mạng và phương thức liến kết giữa các node. Mô hình Waxman là

mô hình phát sinh topo một cách ngẫu nhiên như đã trình bày ở trên. Khả năng

liên kết giữa các node trong topo được tính theo công thức:

P(u,v) =α e-d/βL

Trong đó:

0 <α , β ≤ 1

d: khoảng cách từ node u đến node v.

L: khoảng cách lớn nhất giữa hai node bất kỳ trong mạng.

Mô hình Router BarabasiAlbert

Mô hình này kế thừa từ lớp Model. Nó được gọi là Router BarabasiAlbert vì

nó được cài đặt theo đề xuất của hai tác giả Barabasi và Albert. Theo mô hình

này, quá trình tăng tưởng của mạng là do các node mới liên tục được thêm vào

mạng chứ không phát sinh ngẫu nhiên như trong mô hình Waxman. Độ ưu tiên

của các liên kết của một node mới với các node đã tồn tại trong mạng phụ

thuộc vào số lượng các node trong mạng. Khi một node i gia nhập vào mạng,

khả năng liên kết của nó với node j (đã tồn tại trong mạng ) được tính theo

công thức:

P( i , j ) = dj / ∑kєVdk

Trong đó:

Page 166: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

166

dj: Bậc của node j.

V: Số lượng các node đã tồn tại trong mạng.

∑kєV dk: Tổng số bậc ngoài của tất cả các node trong mạng.

9.2.2.1.2 Mô hình Flat AS-level

Mô hình AS-level cũng tương tự như mô hình Router-level. Điểm khác

nhau giữa hai mô hình này là trong mô hình AS-level AS node có thể chứa

các Router node. Hai mô hình AS-level được cài đặt trong BRITE :

ASWaxman và ASBarabasiAlbert.

9.2.2.1.3 Mô hình phân cấp top-down

Trong mô hình top-down, quá trình phát sinh topo diễn ra như sau: đầu

tiên, BRITE sẽ phát sinh topo ở mức AS-level. Tiếp theo đó, ứng với mỗi

AS node trong AS-level (1), BRITE sẽ tiếp tục phát sinh topo ở mức

Router-level (2). BRITE sử dụng một cơ chế kết nối cạnh (3) để kết nối các

topo ở mức Router-level nếu như các AS node tương ứng có kết nối trực

tiếp với nhau.

Hình 9.11 Mô hình phân cấp top-down

9.2.2.1.4 Mô hình phân cấp Botton-up

Page 167: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

167

Mô hình này ngược với mô hình phân cấp top-down, tronng mô hình này

BRITE sẽ phát sinh topo ở mức Router-level trước, sau đó BRITE sẽ phân

các Router node thành các nhóm khác nhau và mỗi nhóm Router node sẽ

chịu sự quản lý của một AS node

9.2.2.1.5 Mô hình Imported File

Một trong những mục tiêu khi thiết kế của BRITE là có thể tích hợp

nhiều công cụ phát sinh topo vào trong BRITE. Do đó, BRITE xây dựng lớp

ImporteđFileModel kế thừa từ lớp Model để phân tích cấu trúc cú pháp của

các file được phát sinh bỡi các công cụ phát sinh topo đã được tích hợp

trong BRITE như GT-ITM, NLANR, Inet . Ví dụ, chúng ta có thể phát sinh

một mô hình mạng phân cấp top-down với topo mạng ở mức AS-level được

import từ công cụ phát sinh NLANR và topo mạng ở mức Router-level theo

mô hình Waxman được import từ công cụ phát sinh GT-ITM. Hiện tại,

BRITE hổ trợ bốn mô hình ImportedFile:

+ Import topo của BRITE.

+ Import topo của GT-ITM.

+ Import topo của NLANR.

+ Import topo của Inet.

Hình 9.12 Mô hình ImportedFile

9.3 Các tham số của BRITE:

Tham số Ý nghĩa Các giá trị

Page 168: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

168

HS Kích thước một cạnh của mặt phẳng int ≥ 1

LS Kích thước một cạnh của ô vuông int ≥ 1

N Số node trong mô hình int 1 ≤ N ≤ HS*LS

Model Số ID của mô hình int ≥ 1

alpha Giá trị hàm số mũ của mô hình

Waxman

0 < α ≤ 1, α є R

beta Giá trị hàm số mũ của mô hình

Waxman

0 < β ≤ 1, β є R

Node

Placement

Cách thức đặt node trong mặt phẳng 1: Random, 2: HT

Growth Type Cách thức tăng trưởng của mạng 1: Incremental,

2: Random

BWdist Băng thông của các liên kết int ≥ 1

m Số các liên kết của mỗi node int ≥ 1

MaxBW,

MinBW

Giá trị băng thông lớn nhất và nhỏ nhất

của các liên kết

float > 0

Bảng 9.3 Các tham số của mô hình đẳng cấp

Tham số Ý nghĩa Các giá trị

Edge

Connection

Phương thức kết nối các topo ở mức

router-level

1: Random node

2: Smallest degree

3: Smallest degree-

non-leaf

4: k-Degree

Intra Bwdist Cách thức phân phát băng thông trong

domain

1: Constant

2: Uniform

3: Exponential

Page 169: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

169

4: Heavy-tailed

Intra

BWMax/Min

Giá trị băng thông lớn nhất, nhỏ nhất

của các liên kết trong domain

float > 0

Inter Bwdist Cách thức phân phát băng thông giữa

các domain

1: Constant

2: Uniform

3: Exponential

4: Heavy-tailed

Inter

BWMax/Min

Giá trị băng thông lớn nhất, nhỏ nhất

của các liên kết giữa các domain

Float > 0

Bảng 9.4 Các tham số của mô hình phân cấp top-down

Tham số Ý nghĩa Các giá trị

AssignType Cách thức phân bố các router trong AS 1: Constant

2: Uniform

3: Exponential

4: Heavy-tailed

NumAS Số lượng các AS int > 0

Grouping

Method

Cách thức các router được nhóm vào

các AS

1: Random pick

2 : Random Walk

Inter BWdist Giá trị băng thông lớn nhất, nhỏ nhất

của các liên kết giữa các domain

1: Constant

2: Uniform

3: Exponential

4: Heavy-tailed

Inter

BWMax/Min

Giá trị băng thông lớn nhất, nhỏ nhất

của liên kết

float > 0

Bảng 9.5 Các tham số của mô hình phân cấp botton-up

Tham số Ý nghĩa Các giá trị

Format Định dạng file được import 1: BRITE

Page 170: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

170

2: GT-ITM

3: NLANR

4: SKITTER

5:GT-ITM Transit-

Stub

6: Inet

File đường dẫn của file

HS, LS Kích thước của các cạnh Như giá trị trong

bảng B.2.1.1

BWdist Cách thức phân phát băng thông 1: Constant

2: Uniform

3: Exponential

4: HT

BWmin,

BWmax

Giá trị băng thông lớn nhất, nhỏ nhất

của các liên kết

Foat > 0

Bảng 9.6 Các tham số của mô hình Imported File

9.4 Các hạn chế của BRITE: BRITE chỉ đơn thuần là tạo ra các topo cho mạng có dây với các node và các

liên kết giữa các node mà vẫn chưa tạo được các ứng dụng cũng như các giao

thức cho mạng. Ngoài ra, BRITE vẫn chưa phát sinh được topo cho mạng không

dây nói chung và đặt biệt là mạng MANET, là những mô hình mạng đang phát

triển mạnh mẽ trong thời gian gần đây. Do đó, để khắc phục những khuyết điểm

hiện tại của BRITE, đề tài cố gắng giải quyết một hạn chế của BRITE hiện tại là

sẽ xây dựng một module dùng cho việc phát sinh topo, kịch bản chuyển động của

các node không dây, kịch bản ứng dụng cho mô hình mạng không dây, giúp cho

BRITE hoàn thiện hơn.

Page 171: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

171

Chương 10

NS-2 và NAM

10.1 Cài đặt NS-2 và NAM trên Window:

10.1.1 Download NS-2 và NAM Phiên bản NS-2 trên môi trường Window có thể download tại địa chỉ:

http://www.isi.edu/nsnam/dist.

Để chạy được NS-2 trên Window, cần phải cài đặt thêm Microsoft Visual

Studio phiên bản 5.0 hoặc 6.0. Bản NS-2 ở địa chỉ trên bao gồm các gói:

+ Tcl8.3.2.tar.gz

+ tk8.3.2.tar.gz

+ ns-2.1b9a-win32.exe

+ nam-1.0a11a-win32.exe

+ compile_dll_D_Win2000_1.00.zip

Hình 10.1 Cấu trúc thư mục của NS-2 cài đặt trên Window

10.1.2 Cài đặt NS-2 Trình tự cài đặt trên Window theocác bước:

a. Tạo 1 thư mục và chép toàn bộ các gói vừa download ở trên vào thư mục

vừa tạo đó. Ví dụ: tạo thư mục: “C:\NS_2”.

Page 172: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

172

b. Tạo 2 thư mục con trong thư mục vừa tạo ở trên (thư mục NS_2 ) và

dùng các chương trình giải nén như WinZip hoặcWinRar để giải nén các gói

vào các thư mục vừa tạo như sau:

Thư mục con Các gói giải nén

C:\NS_2\DYNAMIC Tcl8.3.2.tar.gz

Tk8.3.2.tar.gz

C:\NS_2\TEMP Compile_dll_D_Win2000_1.00.zip

C:\NS_2\BIN ns-2.1b9a-win32.exe

nam-1.0111a-win32.exe

Bảng 10.1 Cách thức cài đặt NS-2 trong Window

c . Đổi tên các file ns-2.1b9a-win32.exe và nam-1.0a11a-win32.exe thành

ns.exe và nam.exe cho thuận tiện trong việc sử dụng sau này.

d. Tìm tập tin vcvars32.bat trong hệ thống (nằm trong thư mục VC98\Bin

của Microsoft Visual Studio). Sau đó chép tập tin đó vào trong thư mục

“C:\NS_2\TEMP” . Dùng chương trình soạn thảo (như NotePad ) để xóa các

dòng sau:

set VSCommonDir=C:\PROGRA~1\MIAF9D~1\Common .

set MSDevDir=C:\PROGRA~1\MIAF9D~1\Common\msdev98

set MSVCDir=C:\PROGRA~1\MIAF9D~1\VC98

e. Mở chương trình Command Prompt và thực hiện các lệnh sau:

C:\> cd C:\NS_2\TEMP

C:\> NS_2\TEMP>vcvars32.bat

C:\> NS_2\TEMP>compile-dll-win32.bat C:\NS_2

f. Thêm dòng “C:\NS_2\BIN” vào trong biến môi trường PATH của hệ

thống.

10.1.3 Chạy NS-2 và NAM Mở Command Prompt và chuyển đường dẫn đến “C:\NS_2\BIN”. Để chạy ns,

ta gõ lệnh ‘ns <Tclscript>’. Hoặc để chạy ns thông qua trình thông dịch Tcl

Page 173: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

173

Wish83.exe, ta gõ lệnh ‘ns <Tclscript>’ với Tclscript là tên của file .tcl ví dụ

như: ns test.tcl. Để chạy chương trình thực thi NAM, ta gõ lệnh ‘nam <namfile>’

với namfile là tên của file .nam, ví dụ: nam test.nam.

10.2 Cài đặt NS-2 và NAM trên Linux: 10.2.1 Download NS-2 và NAM

Có thể download gói ns-allinone (là gói chứa tất cả các file cần thiết cho NS-

2 trên môi trường Linux) tại địa chỉ:

http://www.isi.edu/nsnam/ns/ns-build.html#allinone.

Gói ns-allinone chứa các gói:

+ Tcl release 8.4.5.

+ Tk release 8.4.5.

+ OTcl release 1.9.

+ TclCL release 1.16.

+ Ns release 2.28.

+ Nam release 1.11.

+ Xgraph version 12.1.

+ CWeb version 3.4g.

+ SGB version 1.0.

+ Gt-itm gt-itm and sgb2ns 1.1.

+ Zlib version 1.1.4.

Để cài đặt thành công NS-2 trên Linux và Unix , các gói sau đây là cần thiết

phải có:

+ Tcl release 8.4.5.

+ Tk release 8.4.5.

+ OTcl release 1.8.

+ TclCL release 1.15.

+ Ns release 2.28.

Page 174: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

174

Hình 10.2 Cấu trúc thư mục của NS-2 trên Linux

10.2.2 Cài đặt Sau khi download gói ns-allinone thành công , giải nén các gói OTcl và TclCL

và ns vào trong cùng một thư mục. Ví dụ giải nén các gói đó vào trong thư muc

/home/ns_2.

Sau đó, biên dịch và cài đặt các gói theo thứ tự sau:

a. Dùng lệnh cd để chuyển đến thư mục OTcl (cd /home/ns_2/OTcl).

+ Thực hiện lệnh : ./configure.

+ Thực hiện lệnh : ./make.

b . Chuyển đến thư mục TclCL bằng lệnh cd /home/ns_2/TclCL.

+ Thực hiện lệnh : ./configure.

+ Thực hiện lệnh : ./make.

c . Chuyển đến thư mục ns bằng lệnh cd /home/ns_2/ns.

+ Thực hiện lệnh : ./configure.

+ Thực hiện lệnh : ./make.

Hoặc đơn giản hơn, chỉ cần chuyền đến thư mục chứa gói ns-allinone đã giải

nén, thực hiện lệnh ./configure, make để ns-allinone tự động cài đặt.

Page 175: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

175

10.2.3 Chạy NS-2 và NAM Khai báo biến môi trường cho ns và nam, thêm dòng /home/ns_2/bin vào

trong biến môi trường PATH như sau: PATH=$PATH:/home/ns_2/bin

Sau đó, để chạy ns hoặc nam, mở màn hình terminal và gõ lệnh:

ns <Tclscript> với <Tclscript> là file với phần mở rộng .tcl.

Ví dụ: ns test.tcl.

Để chạy nam, gõ lệnh:

nam <Namscript> với <Namscript> là file có phần mở rộng .nam.

Ví dụ : nam test.nam. Hoặc chỉ cần gõ nam , khi đó màn hình giao diện của

nam sẽ hiện ra.

Page 176: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

176

PHẦN 5

CÁC CÔNG CỤ KHÁC

Chương 11

Otter

11.1 Giới thiệu: Otter là một công cụ giúp trừu tượng hóa các dữ liệu chuyên dụng của mạng

có thể được thể hiện trực quan như Node, Link, Path. Đây là một công cụ rất tốt

cho việc tái hiện các dữ liệu khổng lồ trên mạng Internet như Topology,

Workload, Routing, Domain Name, SNMP Data, … hay thiết kế cấu trúc cây thư

mục cho Website, …

Otter do tổ chức CAIDA-Cooperative Association for Internet Data Analysis

xây dựng và phát triển trên nền Java bắt đầu từ năm 1999.

11.2 Các tính năng nổi bật của Otter: ► Dễ sử dụng và thao tác.

► Hiển thị trực quan cấu trúc mạng với kích thước lớn và phức tạp.

► Cho phép chỉnh sữa các thành phần mạng như zoom, focus,

graph layout, ...

► Save file dưới dạng file ảnh png.

► Load file dữ liệu odf.

► Là phần mềm nguồn mở, dễ nâng cấp và mở rộng ứng dụng.

► Gọn, nhẹ.

► Linh hoạt, có thể chạy trên nhiều HDH khác nhau như Window,

Unix, Linux.

Page 177: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

177

11.3 Các bước cài đặt Otter: Trong phần cài đặt, chúng em tiến hành cài đặt trên HDH Linux, quá trình cài

đặt của Otter trên Linux khá đơn giản, tiến hành qua các bước sau:

Bước 1:

Tải về bản Otter (phiên bản hiện tại là Otter 0.9.1) từ địa chỉ:

http://www.caida.org/tools/visualization/otter/source/otter-0.9.1.tar.gz

Bước 2:

Giải nén file otter-0.9.1.tar.gz theo cách sau (giả sử đã lưu file nén vào thư

mục /home trên HDH Linux):

+ Mở cửa sổ Terminal và chuyển vào thư mục /home bằng lệnh cd.

+ Gõ lệnh :

$ gunzip otter-0.9.1.tar.gz

$ tar xvf otter-0.9.1.tar

Lúc này trong thư mục /home có thư mục otter-0.9.1 sau khi được giải nén

(thư mục này cũng có sẵn trên đĩa CD, có thể chép thẳng vào đĩa trên Linux để

chạy chương trình mà không cần phải giải nén).

Bước 3:

Chuyển vào thư mục otter-0.9.1 bằng lệnh:

$ cd otter-0.9.1

Biên dịch và chạy chương trình bằng lệnh:

$ ./otter

Chú ý: bạn phải cài JDK phiên bản 1.3 hay mới hơn trên Linux và thiết lập

các biến môi trường cần thiết theo hướng dẫn ở những phần trên (trên đĩa CD

đã có bản JDK 1.5 for Linux: jdk-1_5_0_01-linux-i586.rpm).

Để cài gói này chỉ cần chép gói vào một thư mục nào đó trên Linux, mở

Terminal, chuyển đến thư mục chứa gói và gõ lệnh:

$ rpm -i jdk-1_5_0_01-linux-i586.rpm

Page 178: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

178

Sau khi cài gói, Linux sẽ cài JDK vào thư mục /src/java/jdk-1_5_0_01-

linux-i586 , thiết lập biến môi trường –PATH đến thư mục bin/jdk-1_5_0_01-

linux-i586.

11.4 Quá trình thiết kế trên Otter: Giao diên chính sau khi biên dịch Otter:

Hình 11.1 Giao diện chính của Otter

Giao diên Load file odf:

Page 179: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

179

Hình 11.2 Giao diên load file

Giao diên sau khi Load một file odf:

Hình 11.3 Giao diên thiết kế trên Otter

Giới thiệu một số mô hình kết xuất từ chương trình Otter (được lưu dưới dạng

file ảnh png):

Page 180: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

180

Hình 11.4 Mô hình kết xuất theo trạng thái Tunnel

Hình 11.5 Mô hình kết xuất theo Domain Name

Page 181: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

181

Hình 11.6 Mô hình kết xuất theo cấu trúc cây thư mục của một Website

Page 182: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

182

C. XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG

BRITE

PHẦN 6

CƠ SỞ LÝ THUYẾT

Page 183: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

183

Chương 12

Lý thuyết cơ bản về mạng không dây

12.1 Giới thiệu:

Thuật ngữ “Mạng Máy Tính” đã và đang trở nên phổ biến và gần gũi với mọi

người. Các công ty, nhà máy, trường học, … đều cần sử dụng mạng máy tính cho

những mục đích và nhu cầu riêng của họ. Mạng máy tính ra đời đã làm cho công

việc trở nên đơn giản và hiệu quả hơn, giúp chúng ta trao đổi thông tin, chia sẽ dữ

liệu một cách rất thuận tiện.

Trong mạng máy tính, có hai kiểu mạng chính là mạng có dây và mạng không

dây. Mạng máy tính có dây đã ra đời từ khá lâu và nó đã chứng minh được vai trò

và công dụng to lớn cho nhu cầu phát triển chung của xã hội. Tuy nhiên, với sự

phát triển mạnh mẽ của khoa học kỹ thuật và công nghệ, thì mạng có dây bắt đầu

bộc lộ những hạn chế của nó. Khi những thiết bị di động: laptop, PDA, ... ra đời

thì mạng có dây đã không thể đáp ứng hết tất cả công dụng của các thiết bị đó.

Do đó, mạng máy tính không dây ra đời như một xu thế tất yếu.

Mạng không dây giúp các thiết bị di động được sử dụng một cách hiệu quả,

thuận tiện hơn vì có những đặc tính nổi bật so với mạng có dây:

+ Hệ thống mạng không dây có khả năng cơ động cao, các thiết bị có thể

di chuyển 1 cách tùy ý mà vẫn có thể truy cập mạng và có thể trao đổi dữ

liệu với nhau.

+ Mạng không dây cho phép dễ dàng bổ sung, thay thế các thiết bị tham

gia trong mạng mà không cần phải cấu hình phức tạp lại toàn bộ topo của

mạng.

+ Mạng không dây tỏ rõ ưu thế của nó trong những hoàn cảnh như: hội

nghị, hội thảo, hội chợ thương mại, truy cập internet ở những nơi công

cộng, … Nó tạo nên một không gian sang trọng, lịch sự, và rất thuận tiện

cho những người tham gia.

Page 184: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

184

+ Mạng không dây không phụ thuộc vào vị trí địa hình, nên rất dễ dàng

triển khai lắp đặt.

Tuy mạng không dây còn có những hạn chế về giá cả cũng như về mặt kỹ

thuật: băng thông còn thấp, bán kính phủ sóng còn hạn chế, thiết bị phần cứng

còn đắt, tuổi thọ pin còn thấp, các kết nối chưa thực sự đảm bảo, khả năng bảo

mật chưa cao. Xong, với xu hướng phát triển của khoa học công nghệ, cũng như

sự đầu tư có trọng điểm của các quốc gia, mạng không dây sẽ càng trở nên phổ

biến và sẽ có thể thay thế được mạng có dây.

Căn cứ vào mô hình tổ chức và cách thức hoạt động, ta có thể chia mạng

không dây thành hai loại:

+ Mạng không dây cố định.

+ Mạng không dây không cố định.

12.1.1 Mạng không dây cố định Mạng không dây cố định là loại mạng không dây được phát triển dựa trên

nền của mạng có dây đã có sẵn và loại mạng đang được sử dụng rất phổ biến

hiện nay. Mạng bao gồm một hay nhiều AccessPoint (AP) để mở rộng phạm vi

hoạt động của các máy trạm. AP vừa đóng vai trò là điểm truy cập cho các

máy trạm trong mạng không dây, vừa là trạm chuyển tiếp cho việc liên lạc

giữa hai mạng. Các AP quản lý các máy trạm trong vùng phủ sóng của nó: khi

một máy trạm muốn liên lạc với các máy trạm khác trong mạng thì nó phải

thông qua AP quản lý nó. Khi một máy trạm di chuyển ra khỏi cùng phủ sóng

của một AP thì nó sẽ phải thực hiện cơ chế roaming để tìm kiếm một AP mới.

Page 185: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

185

Hình 12.1 Mô hình mạng không dây cố định

12.1.2 Mạng không dây di động Mạng không dây không cố định hay thường gọi là mạng Mobile Ad-hoc

Network (MANET) (ad-hoc có thể hiểu theo nghĩa là không có tổ chức, hay là

mô hình mạng có tính chất động). Mô hình này gồm hai hay nhiều wireless

mobile kết nối với nhau theo mô hình mạng ngang hàng (peer-to-peer) và các

node có vai trò như nhau, và có thể kết nối với nhau một cách tùy ý và không

cần đến cơ sở hạ tầng của các mạng trước đó. Các node trong mạng này còn

đóng vai trò như là các router có khả năng tìm kiếm, duy trì và định tuyến các

gói dữ liệu cho các node nằm trong vùng phát sóng của nó. Các node trong

mạng di chuyển tùy ý nên kiến trúc của mạng luôn luôn thay đổi. Mô hình

mạng Ad hoc được sử dụng nhiều trong những trường hợp khẩn cấp: Hoạt

động tìm kiếm và cứu hộ, hội nghị, hội thảo, …

Hình 12.2 Mô hình mạng không dây di động (AdHoc)

Trong phạm vi của đề tài, chúng tôi tập trung vào việc tìm hiểu sơ lược về mô

hình, các giao thức định tuyến và minh họa cụ thể cách thức hoạt động của một

mạng MANET bằng cách sử dụng công cụ phát sinh topo mạng BRITE có cài đặt

thêm module wireless để tạo ra các kịch bản minh họa.

12.2 Mô hình mạng MANET:

12.2.1 Tổng quan về mạng MANET

Page 186: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

186

Mạng MANET đang trở thành thế hệ kế tiếp của mạng máy tính. Mạng

MANET là tập hợp các mobile node trong một mạng có tính chất tạm thời mà

không có sự quản lý của các nhà quản trị. Theo định nghĩa của tổ chức Internet

Engineering Task Force (IETF), mạng MANET là một vùng tự trị (Automomous

System) của các router (đó chính là các node ) được kết nối với nhau bằng liên

kết không dây, các node có thể di chuyển một cách tự do nên kiến trúc của mạng

thay đổi liên tục mà không thể dự đoán trước.

12.2.2 Phân loại mạng MANET theo cách thức định tuyến 12.2.2.1 Mạng MANET định tuyến Single-hop

Mạng MANET định tuyến Single-hop là loại mô hình mạng Ad-hoc đơn

giản nhất, trong đó, tất cả các node đều nằm trong cùng một vùng phủ sóng,

nghĩa là các node có thể kết nối trực tiếp với các node khác mà không cần

thông qua các node trung gian.

Hình 12.3 Định tuyến Single-hop

Trong mô hình này, các node có thể di chuyển tự do nhưng chỉ trong một

phạm vi nhất định đủ để node có thể liên lạc trực tiếp với các node khác trong

mạng.

12.2.2.2 Mạng MANET định tuyến Multi-hop

Đây là mô hình phổ biến nhất trong mạng MANET, mô hình này khác với

mô hình trước là các node có thể kết nối với các node khác trong mạng mà có

thể không cần phải kết nối trực tiếp với nhau. Các node có thể định tuyến đến

node khác thông qua các node trung gian trong mạng. Để mô hình này có thể

Page 187: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

187

hoạt động 1 cách hoàn hảo thì cần phải có các giao thức định tuyến phù hợp

với mô hình mạng MANET.

Hình 12.4 Định tuyến multi-hop

12.2.2.3 Mô hình MANET định tuyến Mobile Multi-hop

Mô hình này là sự mở rộng của mô hình thứ hai với một chút khác biệt: mô

hình này tập trung vào các ứng dụng có tính chất thời gian thực như: audio,

video.

12.2.3 Phân loại mạng MANET theo chức năng của Node 12.2.3.1 Mạng MANET đẳng cấp (Flat)

Trong kiến trúc này , tất cả các node có vai trò ngang hàng với nhau ( peer-

to-peer) và các node cũng đóng vai trò như các router dùng để định tuyến các

gói dữ liệu truyền trên mạng . Trong những mạng lớn thì kiến trúc Flat không

tối ưu việc sử dụng tài nguyên băng thông của mạng vì những message điều

khiển (control message) phải truyền trên toàn bộ mạng . Tuy nhiên , nó thích

hợp trong những topo mà các node di chuyển nhiều .

12.2.3.2 Mạng MANET phân cấp (Hierarchical)

Đây là mô hình mạng được sử dụng phổ biến nhất trong mạng MANET.

Trong kiến trúc này, mạng chia làm các domain, trong mỗi domain bao gồm

một hoặc nhiều cluster với mỗi cluster bao gồm một hoặc nhiều node. Do đó,

node trong kiến trúc này chia làm hai loại:

Page 188: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

188

Master node là node quản trị một cluster và có nhiệm vụ chuyển dữ

liệu của các node trong cluster đến các node trong các cluster khác và

ngược lại . Nói cách khác, nó có chức năng như một gateway.

Normal node là các node nằm trong cùng một cluster và chỉ có thể kết

nối với các node trong cùng một cluster hoặc kết nối với các node trong

các cluster khác thông qua master node.

Hình 12.5 Mô hình mạng phân cấp

Với các cơ chế trên, mạng sử dụng tài nguyên băng thông mạng hiệu quả

hơn vì các message điều khiển chỉ phải truyền trong một cluster. Tuy nhiên,

việc quản lý tính chuyển động của các node trở nên phức tạp hơn. kiến trúc

mạng phân cấp thích hợp cho các mạng có tính chuyển động thấp.

12.2.3.3 Mạng MANET kết hợp (Aggregate)

Trong kiến trúc mạng này, mạng phân thành các zone và các node được chia

vào trong các zone. Nên mỗi node bao gồm hai mức topo (topology ): topo

mức thấp ( node level ) và topo mức cao (zone level ) (high level topology ).

Ngoài đó, mỗi node còn đặc trưng bỡi hai số ID: node ID và zone ID. Trong

một zone có thể áp dụng kiến trúc đẳng cấp hoặc kiến trúc phân cấp.

Page 189: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

189

Hình 12.6 Mô hình mạng Aggregate Ad hoc

Page 190: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

190

PHẦN 7

XÂY DỰNG ỨNG DỤNG

Chương 13

Giới thiệu chung

13.1 Giới thiệu: Như đã trình bày trong phần giới thiệu về BRITE, đây là ứng dụng được xây

dựng đầu tiên bỡi các tác giả trong khoa CNTT thuộc trường đại học Boston với

mục đích là tạo ra một công cụ phát sinh topology cho mạng. Đây là ứng dụng

mã nguồn mở và chạy rất ổn định và phát sinh chuẩn xác các mô hình mạng.

Tận dụng những ưu điểm sẵn có của BRITE, chúng tôi quyết định lựa chọn

BRITE để xây dựng ứng dụng cho mình. Mục tiêu chính cần đạt được trong

phạm vi của đề tài này là gắn kết công cụ phát sinh topology với công cụ giả lập

mạng lại với nhau, với công cụ giả lập mạng là NS-2. NS-2 là một môi trường giả

lập mạng rất tốt và đáng tin cậy cho những tìm hiểu, nghiên cứu cũng như hiện

thực các mô hình mạng. Tuy nhiên, NS-2 giao tiếp với người dùng bằng tập lệnh

mà không giao tiếp bằng các giao diện trực quan. Do đó, BRITE trong đề tài này

được phát triển với mục tiêu là tạo ra một giao diện trực quan phục vụ cho việc

tạo ra các topology, các kịch bản chuyển động, các ứng dụng mạng cho công cụ

giả lập mạng NS-2, mà chủ yếu tập trung vào mạng không dây, đặc biệt là mạng

MANET.

13.2 Ngôn ngữ cài đặt và tính tương thích:

Page 191: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

191

BRITE được cài đặt bằng ngôn ngữ Java nhằm mục đích là có thể chạy được

trên nhiều hệ điều hành khác nhau mà tiêu biểu là Linux và Window. Trong đề tài

này, chúng tôi chỉ cài đặt BRITE và NS-2 trên môi trường Linux. Phiên bản

Linux chúng tôi thử nghiệm là Fedora Core 2.

Các chương trình được yêu cầu khi sử dụng BRITE:

NS-2 (Network Simulator version 2).

NAM (Network Animator).

Bộ JDK1.3 hoặc mới hơn (Trong chương trình ứng dụng sử dụng bộ

JDK1.5).

Cách thức cài đặtvà sử dụng NS-2 và NAM đã được hướng dẫn trong phần

trước.

13.3 Các mô hình mạng trong ứng dụng: 13.3.1 Mạng MANET

Mô hình mạng MANET trong đề tài này là mô hình mạng Flat Ad-hoc

Network như đã đề cập trong phần trên: là mô hình mạng peer-to-peer, các node

trong mạng có vai trò như nhau, đồng thời đóng vai trò như các router dùng để

định tuyến.

13.3.2 Wired-cum-Wireless Đây là mô hình mạng thường sử dụng trong thực tế, là sự kết hợp của hai

mạng có dây và mạng không dây thông qua Base-Station đóng vai trò như là

gateway dùng để định tuyến giữa hai mạng. Mạng không dây trong mô hình này

là mạng MANET Hierarchical Adhoc Network. Trong đó, mỗi domain được chia

thành các cluster và mỗi cluster bao gồm một hay nhiêu node. Tất cả các gói dữ

liệu định tuyến đến một node sẽ phải thông qua Base-Station của domain của

node đó và Base-Station sẽ có nhiệm vụ định tuyến gói dữ liệu đó đến node đích.

Page 192: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

192

Chương 14

Các chức năng chính của ứng dụng

14.1 Giới thiệu các lớp trong module wireless: Trong chương trình ứng dụng BRITE, module wireless có chức năng phát sinh

file script tcl tạo kịch bản giả lập cho mạng không dây. Các file source thêm vào

module này nằm trong 2 gói là GUI và Util.

Bảng mô tả các file thêm vào trong chương trình:

Tên lớp Mô tả chức năng Gói

WirelessPanel Là Panel giao diện chính thực hiện quá trình thiết

kế giả lập như khai báo số wireless node, wired

node, bs-node, kích thước vùng giả lập, thiết lập

cấu hình cho các wireless node, tạo kịch bản

chuyển động, kịch bản ứng dụng, thực hiện lưu

file script tcl và gọi chương trình NS tiến hành giả

lập

Wireless Lưu toàn bộ thông tin về mô hình giả lập trong

module wireless do người dùng xây dựng

WNode Lớp WNode lưu các thông tin về cấu hình cho

từng wireless node

TableNode Lưu giữ các thông tin về các Agent và Application

Option Giao diện cấu hình các thông số cần thiết chung

cho tất cả các wireless node trong mô hình giả lập

ModifyNode Giao diện cấu hình riêng các thông số cho từng

wireless node trong mô hình giả lập

GUI

Page 193: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

193

Movement Giao diện thiết lập vị trí khởi tạo và tạo kịch bản

chuyển động cho các wireless node, có thể thiết

lập bằng tay hoặc được phát sinh tự động, ngẫu

nhiên

Application Giao diện tạo kịch bản ứng dụng cho các wireless

và wired node với các tham số là Agent,

Application, start time và end time

AutoRun Thực thi file script tcl bởi NS và NAM

NodeServer Các node dùng để gởi dữ liệu

Node_Client Các node dùng để nhận dữ liệu

Node_Info Thông tin chung về cấu hình của từng node

Table Tạo bảng hổ trợ thiết kế kịch bản ứng dụng

MessageBox Phát sinh các thông báo tương tác với người sử

dụng như các thông báo, cáccảnh báo lổi

Util

Bảng 14.1 Các lớp trong module wireless

14.2 Giao diện chính của module Wirless:

Page 194: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

194

Hình 14.1 Giao diện chính module Wireless của BRITE

Giao diện Wireless giúp người sử dụng thiết kế trực quan mô hình giả lập

mạng wireless Ad-hoc có kết hợp với mạng wired bằng ngôn ngữ TCL.

Mô tả các chức năng trên giao diện:

Wireless Node: số wireless node trong mô hình giả lập.

BS Node: số base-station node trong mô hình giả lập, các BS Node đóng

vai trò là các trạm trung gian liên lạc giữa wired và wireless node.

Wired Node: số wired node trong mô hình giả lập.

X-cordinate, Y-cordinate: kích thước của vùng không gian trong mô

hình giả lập, tính bằng mét.

Page 195: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

195

Set Option: chức năng thiết lập cấu hình chung cho tất cả các wireless

node.

Set App: chức năng tạo kịch bản ứng dụng cho các wireless node trong

mô hình giả lập.

Set Movement: chức năng tạo kịch bản chuyển động cho các wireless

node trong mô hình giả lập.

Set Event: chức năng tạo kịch bản các sự kiện cho ứng dụng trong mô

hình giả lập (chức năng này chưa được hoàn thiện).

Output Script: vùng hiển thị file cấu hình TCL sau khi nhấn nút Build

Topology .

Build Topology: phát sinh file script TCL, sau khi nhấn nút Build

Topology và thông báo dịch thành công trên hộp thoại status window,

chương trình sẽ gọi trình biên dịch NS_2 để dịch file TCL, và tiến hành

quá trình giả lập.

Hình 14.2 Cửa sổ thông báo trạng thái phát sinh topo

Export Topology: đường dẫn đầy đủ lưu file script TCL.

Hộp thoại Save file TCL (sau khi nhấn nút Browse…) cho phép người sử

dụng chọn thư mục cần lưu file với tên do người dùng nhập vào.

Chú ý: không được nhập phần mở rộng tcl, chương trình sẽ tự động thêm

vào nhằm tránh trường hợp nhập sai phần mở rộng sẽ báo lỗi lúc thực thi

bên NS.

Page 196: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

196

Hình 14.3 Giao diện lưu file

14.3 Cấu hình các wireless node: Giao diện Set Options:

Page 197: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

197

Hình 14.4 Giao diện cấu hình chung cho các MobileNode

Giao diện Set Options thiết lập cấu hình chung cho tất cả các wireless node

trong mô hình giả lập. Các giá trị ban đầu là các giá trị mặc định, thường được sử

dung trong cấu hình các wireless node của ngôn ngữ tcl. Đối với các BS Node, do

tính chất nhất quán và đúng đắn của ngôn ngữ TCL, việc cấu hình cho các BS

Node được thiết lập mặc định bởi chương trình.

Mô tả các tham số trên giao diện Set Options:

Channel Type: thiết lập kênh truyền thông cho các wireless node.

Phiên bản NS_2 hiện tại chỉ có một giá trị tham số duy nhất là

WirelessChannel.

Propagation: thiết lập mô hình truyền thông (radio-propagation) cho

các wireless node, giá trị: TwoRayGround và Shadowing.

Interface Type: chọn loại card giao tiếp cho các thiết bị wireless, giá

trị: WirelessPhy.

Page 198: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

198

Addressing Type: kiểu phân bố địa chỉ cho các wireless node, giá trị:

flat, hierarchical.

Antenna Type: kiểu anten sử dụng cho các wireless node, giá trị:

OmniAntenna.

Interface Queue: Interface Queue Type, giá trị: DropTail/PriQueue,

DropTail, FQ, DRR, SRR, PI, VQ, REM, GK, DynamicLink, Filter.

Routing Protocol: giao thức định tuyến cho các wireless node, giá trị:

DSDV, DSR, AODV, TORA.

MAC Type: Media Access Control, giá trị: 802_11, TDMA,

CSMA/CA.

Link Layer Type: chỉ có một giá trị là LL.

MAC Trace: ON/OFF

Agent Trace: ON/OFF.

Movement Trace: tùy chọn này thiết lập bật hoặc tắt chức năng di

chuyển của các wireless node trong quá trình giả lập, giá trị: ON/OFF.

Router Trace: tùy chọn này cho phép các wireless node có khả năng

tự định tuyến các gói tin hay không, giá trị: ON/OFF.

Max Packet: Max Packet in Interface Queue, là kích thước tối đa

vùng đệm trên card giao tiếp của các wireless node, kiểu Integer.

Antenna Radius: bán kính vùng phủ song của các wireless node, đơn

vị tính là mét, kiểu Integer.

Modify each node: chức năng cấu hinh cho từng wireless node riêng

biệt.

Giao diện Modify each Node:

Page 199: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

199

Hình 14.5 Giao diện cấu hình cho từng MobileNode

Giao diện Modify each node cho phép cấu hình từng wireless node riêng biệt.

Các tham số trên giao diện là các tham số có nhiều giá trị.

Để cấu hình cho một wireless node riêng biệt, chọn node trong danh sách

combobox Choose node , thiết lập các tham số thay đổi, sau đó nhấn nút Update

for Node để xác nhận thiết lập.

Kết thúc, nhấn nut Ok.

14.4 Tạo kịch bản chuyển động: Đặc trưng nổi bật nhất của mạng không dây là tính chất động của mạng. Tức là

các node luôn luôn di chuyển. Do đó, để có thể đánh giá, kiểm nghiệm các mô

hình mạng một cách chân thật và chuẩn xác nhất thì nhất thiết phải tạo ra một

giao diện tạo kịch bản chuyển động cho các node trong mạng.

Theo cách thiết kế của NS, các node có thể được chuyển động ngẫu nhiên mỗi

lần thực hiện việc giả lập. Khi kiểm nghiệm các giao thức , ta có thể tiến hành

Page 200: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

200

kiểm nghiệm trên nhiều mẫu thử ngẫu nhiên khác nhau . Tuy nhiên, để có thể

đánh giá chính xác và so sánh tính hiệu quả của các thành phần trong mạng như

các giao thức định tuyến, loại địa chỉ MAC , …, chúng ta cần phải thực hiện trên

cùng một mẫu thử hoặc một nhóm các mẫu thử.

Xuất phát từ yêu cầu đó, trong những phiên bản gần đây, NS có thêm một lệnh

cho phép tạo các chuyển động cho node. Tuy nhiên, còn một số hạn chế : không

có giao tiếp trực quan với người dùng, không cho phép xác định các thông số giới

hạn về số lần chuyển động cần tạo, thời gian, tọa độ … , những điều đó làm khó

khăn trong việc tạo kịch bản giả lập.

Xuất phát từ những khó khăn đó, trong module Wireless của BRITE, chúng tôi

xây dựng thêm một giao diện tạo kịch bản chuyển động cho các node. Muốn thiết

lập các thông số chuyển động cho node, ta click vào button “Set Movement” ở

màn hình chính:

Page 201: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

201

Hình 14.6 Giao diện tao kịch bản chuyển động cho các MobileNode

Ta có thể tạo kịch bản chuyển động theo hai cách:

14.4.1 Tạo bằng tay Đối với BS node: Các BS node chỉ cần tạo vị trí khởi tạo, không cần tạo các

chuyển động.

Đối với MobileNode: Người dùng cần nhập vào các thông số vị trí khởi tạo,

thời gian, vị trí cần di chuyển đến, tốc độ di chuyển cho từng node.

Đối với một Node, vị trí khởi tạo tức là vị trí của node tại thời điểm thời gian

bằng 0, đây là giá trị duy nhất cho từng node, nếu trong quá trình cấu hình, khi có

một giá trị mà thời gian bằng 0, thì vị trí đó sẽ cập nhật vị trí khởi tạo cũ.

Các giá trị khác với giá trị khởi tạo sẽ căn cứ vào thời gian để tạo kịch bản

chuyển động, nếu hai giá trị có cùng thời gian thì sẽ lấy giá trị tọa độ sau.

Page 202: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

202

14.4.2 Tạo ngẫu nhiên Người dùng cần nhập vào một số thông tin: thời điểm lớn nhất, thời điểm nhỏ

nhất để phát sinh kịch bản chuyển động ( hai giá trị này sẽ được ràng buộc bỡi giá

trị Stop Time ) phạm vi tọa độ di chuyển của các node (X1, Y1), (X2, Y2) (hai tọa

độ này bị ràng buộc bỡi hai giá trị MaxX, MaxY), tốc độ lớn nhất, tốc độ nhỏ

nhất, số lần di chuyển của các Node. Sau khi đã thiết lập đầy đủ các thông số,

chương trình sẽ tự động phát sinh ngẫu nhiên kịch bản chuyển động cho mạng.

14.4.3 Ý nghĩa của tạo bằng tay và ngẫu nhiên Cách tạo bằng tay có ưu điểm là nhanh chóng cho những mô hình mạng nhỏ

với ít node di chuyển và thời gian dự định giả lập không lâu. Người dùng có thể

chọn những sự di chuyển với những chủ ý nhằm đánh giá ưu, khuyết điểm của

các mô hình mạng.

Tuy nhiên, đối với những mô hình mạng lớn với hàng trăm node chuyển động

và thời gian giả lập kéo dài, cách tạo bằng tay sẽ không hiệu quả. Đôi khi cách

tạo bằng tay còn bị giới hạn bỡi suy nghĩ chủ quan của người tạo kịch bản làm

ảnh hưởng đến tính ngẫu nhiên của các chuyển động vốn là yếu tố bắt buộc của

các mạng di động. Do đó, chức năng tạo ngẫu nhiên sẽ giải quyết tôt vấn đề này.

14.5 Tạo kịch bản ứng dụng: Một mô hình mạng hoàn chỉnh phải cần có các ứng dụng được thiết lập trên

đó. Ứng dụng cho phép chúng ta có thể đánh giá, kiểm nghiệm các thành phần

mạng như giao thức định tuyến. NS-2 hổ trợ khá nhiều ứng dụng. Tuy nhiên,

trong phạm vi đề tài này, chúng tôi chỉ lựa chọn một số ứng dụng tiêu biểu nhất

để minh họa.

Muốn cấu hình các ứng dụng cho mạng, ta click vào button “Set App” ở màn

hình chính:

Page 203: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

203

Hình 14.7 Giao diện thiết lập ứng dụng cho mạng

Trong List là tất cả các Node có trong mạng (được lấy từ màn hình chính) và

cũng là các Node sẽ gởi dữ liệu. Các Node trong Jtable là các Node sẽ nhận dữ

liệu.

Muốn tạo một ứng dụng cho các Node, ta chọn các Node trong List (có thể

chọn nhiều Node cùng lúc) và chọn các Node trong JTable mà muốn kết nối bằng

cách đánh dấu check vào Node muốn tạo kết nối, sau đó chọn agent và ứng dụng

muốn tạo và thiết lập giá trị thời gian khởi động và thời gian kết thúc của ứng

dụng (có sự ràng buộc giữa hai giá trị này).

Các Agent và các ứng dụng hỗ trợ trong Module Wireless của BRITE:

Agent Chú thích

UDP Giao thức UDP

TCP Giao thức TCP

TCP Tahoe Giao thức TCP Tahoe

TCP Reno Giao thức TCP Reno

TCP Newreno Giao thức TCP Newreno

Bảng 14.2 Các agent được cài đặt trong module Wireless

Page 204: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

204

Ứng dụng Chú thích

FTP Ứng dụng FTP

Telnet Ứng dụng Telnet

Traffic/Exponential Ứng dụng phát sinh lưu lượng mạng

Traffic/Exponential

Traffic/Pareto Ứng dụng phát sinh lưu lượng mạng

Traffic/Pareto

Traffic/CBR Ứng dụng phát sinh lưu lượng mạng

Traffic/CBR

Bảng 14.3 Các ứng dụng được cài đặt trong module Wireless

GUI: Muốn cấu hình các ứng dụng cho mạng, ta click vào button “Set App” ở

màn hình chính.

14.6 Giải thuật phát sinh số Domain và Cluster: Trong mô hình mạng wired-cum-wireless, địa chỉ của các node được quản lí

theo dạng phân cấp (hierarchical), các wired node được nhóm vào một Domain,

các base-station sẽ tương ứng với một Domain quản lý một số wireless node nhất

định.

Mỗi Domain được chia thành các Cluster. Trong Domain wired, mỗi một

wired node tướng ứng với một Cluster, điều này có nghĩa là trong mỗi Cluster

của Domain wired chỉ có một node duy nhất; trong các Domain wireless chỉ có

một Cluster duy nhất chính là Domain wireless đó.

Hình ảnh phân bố các node trong các Domain và Cluster như sau:

Page 205: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

205

Hình 14.8 Mô hình mạng wire-cum-wireless

Địa chỉ của một node trong mô hình được xác định bởi 3 giá trị: Domain,

Cluster, chỉ số node.

Ví dụ:

Địa chỉ của node 0 (2.1.3) có nghĩa node 0 thuộc Domain 2, Cluster 1 và có

chỉ số node là 3.

Giải thuật phân bố các wireless node vào các Domain wireless:

Giả sử trong mô hình mạng wire-cum-wireless có các tham số giá trị sau:

+ Số wired node: K

+ Số BS node: M

+ Số wireless node: N

Theo như trên, số Domain trong mạng sẽ là: M + 1, và được đánh số theo

thứ tự từ Domain wired → Domain BS 0 → Domain BS 1 → … → Domain

BS M.

Các wireless node được phân bố vào các Domain wireless như sau:

Nếu N<=M: mỗi BS sẽ quản lý 1 wireless node (BS 0 → BS (N-1)).

Nếu N>M:

Page 206: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

206

Tính : a = N/M, b = N%M

Khi đó, số wireless node trong Domain BS 0 sẽ là a + b , trong các

Domain của các BS còn lại là a.

14.7 Tiến hành giả lập: 14.7.1 Các bước xây dựng kịch bản và biên dịch Quá trình tiến hành giả lập được thực hiện tuần tự theo các bước:

+ Cấu hình cho các Node như phần 14.3.

+ Tạo kịch bản chuyển động cho các MobileNode như phần 14.4.

+ Tạo kịch bản các ứng dụng cho mạng như phần 14.5.

+ Chương trình sẽ tự động phát sinh ngôn ngữ Tcl tương ứng cho mô hình

mạng vừa tạo.

+ BRITE sẽ gọi ứng dụng NS để biên dịch file Tcl vừa tạo và phát sinh file

.nam

+ Ứng dụng NAM sẽ thực thi file .nam để mô phổng mang.

14.7.2 Các ví dụ minh họa 14.7.2.1 Mạng MANET

Kịch bản được tạo ra gồm 5 mobile node được cấu hình như sau:

$ns_ node-config -addressingType hierarchical \

-adhocRouting AODV \

-llType LL \

-macType MAC/802_11 \

-ifqType Queue/DropTail/PriQueue \

-ifqLen 50 \

-antType Antenna/OmniAntenna n \

-propType Propagation/TwoRayGround n \

-phyType Phy/WirelessPhy \

-topologyInstance $topo n \

-channel Channel/WirelessChannel \

Page 207: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

207

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-movementTrace ON

Hình 14.9 Mô hình mạng MANET trong NAM ( cảnh 1 )

Page 208: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

208

Hình 14.10 Mô hình mạng MANET trong NAM ( cảnh 2 )

14.7.2.2 Mạng Wired-cum-Wireless

Kịch bản được tạo ra gồm 5 mobile node, 2 BS node và 3 wired node.

Đoạn script phát sinh số Domain, số Cluster và số node trong mỗi Cluster

như sau (giải thuật phát sinh đã được trình bày ở phần trên):

AddrParams set domain_num_ 3 ;#number of domains.

lappend cluster_num 2 1 1 ;#so cluster trong moi domain.

AddrParams set cluster_num_ $cluster_num

lappend eilastlevel 1 1 4 3 ;#so node trong moi cluster.

AddrParams set nodes_num_ $eilastlevel

Các BS node được cấu hình như sau:

$ns_ node-config -adhocRouting DSDV \

-llType LL \

-macType Mac/802_11 \

Page 209: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

209

-propInstance [new $val(prop)] \

-ifqType Queue/DropTail/PriQueue \

-ifqLen $val(ifqlen) \

-phyType Phy/WirelessPhy \

-antType Antenna/OmniAntenna \

-channel [new $val(chan)] \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-wiredRouting ON \

Hình 14.11 Mô hình mạngWired-cum-Wireless trong NAM

Page 210: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

210

TỔNG KẾT

Những mục tiêu đã thực hiện được: + Tìm hiểu về mạng không dây và các vấn đề liên quan như: phân loại mạng,

các giao thức định tuyến.

+ Đề tài đã tìm hiểu và trình bày khá chi tiết cơ sở lý thuyết một số ngôn ngữ

dùng để mô hình hóa mạng như DML, TCP, OTCL. Mà đặc biệt, chúng tôi tập

trung vào ngôn ngữ TCL để xây dựng các kịch bản giả lập cho mạng không dây

trong phần ứng dụng.

+ Tìm hiểu các công cụ phát sinh topology và giả lập mạng đã được hổ trợ

trong ứng dụng BRITE nguyên thủy: SSFNet, BRITE, NS-2, Otter … Và đề tài

đã chú trọng hơn vào BRITE và NS-2, hai công cụ dùng trong phần ứng dụng.

+ Giải quyết được hạn chế trong việc giao tiếp với người dùng của bộ công cụ

NS-2 bằng cách sử dụng BRITE như là phần giao diện giao tiếp với NS-2.

+ Mô hình hóa hoàn chỉnh được một số mô hình mạng không dây trong môi

trường NS-2 như mạng MANET, mạng MANET kết hợp với mạng có dây.

Hướng phát triển trong tương lai: Dù đã cố gắng thực hiện, nhưng BRITE vẫn chưa thực sự hoàn chỉnh cho việc

phát sinh tất cả các mô hình mạng trong thực tế vì những nguyên nhân chủ quan

lẫn khách quan: hạn chế về thời gian hoặc một công cụ giả lập mạng không thể

hổ trợ đồng thời tất cả các mô hình mạng trong thực tế.

Trong tương lai, chúng tôi sẽ phát triển thêm một giao diện cho phép hỗ trợ

việc tạo, thiết kế các topology mạng, cấu hình các tham số mạng bằng cách kéo-

thả giúp cho việc tạo các mô hình mạng trở nên đơn giản hơn.

Hiện nay, phần mạng không dây trong bộ công cụ NS-2 vẫn đang trong giai

đoạn phát triển nên chưa thật sự hoàn chỉnh. Do đó, trong phần mạng không dây,

chúng tôi chỉ có thể phát triển thêm mô hình mạng MobileIP. Các mô hình mạng

Page 211: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

211

khác vẫn chưa thể tiến hành giả lập được (hiện tại, NS vẫn chưa hổ trợ), trong

tương lai NS sẽ phát triển thêm module Satellite (vệ tinh) hổ trợ công việc giả lập

cho các vệ tinh.

Một khuyết điểm hiện tại của BRITE là chỉ dừng lại ở việc phát sinh topology

chứ chưa chưa phát sinh được các ứng dụng cho mạng có dây. Đó sẽ là một

hướng phát triển của chúng tôi để BRITE ngày càng hoàn thiện hơn.

Page 212: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

212

PHỤ LỤC

Một số ví dụ minh họa ngôn ngữ DML và TCL

Minh họa ngôn ngữ DML (A Switched-Shared-LAN): # -----------------------------------Mô hình Topology--------------------------------#

# C0 ---------|

# C1 ---------|

# C2 ---------| //------------ S0

# C3 ---------| //-------- S1

# C4 ---------|--------R1------R2----------|

# C5 ---------| \\-------- S3

# C6 ---------| \\------------ S4

# C7 ---------|

#-------------------------------------------------------------------------------------------#

Net [

frequency 1000000000

randomstream [ generator MersenneTwister

stream "seed starter"

reproducibility_level timeline

]

#-----------define the two router R1 and R2-------------#

router [ id 1

graph [

ProtocolSession [ name ip use SSF.OS.IP ] ]

interface [ id 0

buffer 192000

_extends .dictionary.1Gbps

]

Page 213: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

213

interface [ id 1

buffer 192000

_extends .dictionary.100Mbps

]

route [ dest default interface 0 ]

]

router [ id 2

graph [

ProtocolSession [ name ip use SSF.OS.IP ] ]

interface [ id 0

buffer 192000

_extends .dictionary.1Gbps

]

interface [

idrange [ from 1 to 5 ]

buffer 192000

_extends .dictionary.100Mbps

]

route [ dest default interface 0 ]

]

#---------------------Define a shared LAN of 8 clients-----------------------#

host [ idrange [ from 100 to 107 ]

_extends .dictionary.TCPRenoTestClient

]

#---------------------Define a switched LAN of 4 servers--------------------#

host [ idrange [ from 201 to 205 ]

_extends .dictionary.TCPRenoTestServer

]

#---------------------Define Network Connections----------------------------#

Page 214: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

214

link [ attach 1(0) attach 2(0) delay 0.0005 ]

link [attach 1(1)

attach 100(0) attach 101(0) attach 102(0) attach 103(0)

attach 104(0) attach 105(0) attach 106(0) attach 107(0)

]

link [ attach 2(1) attach 201(0) delay 0.000005 ]

link [ attach 2(2) attach 202(0) delay 0.000005 ]

link [ attach 2(3) attach 203(0) delay 0.000005 ]

link [ attach 2(4) attach 204(0) delay 0.000005 ]

link [ attach 2(5) attach 205(0) delay 0.000005 ]

#-------------Define Traffic: A client requests files from 2 servers---------------#

traffic [

pattern [client 100

servers [ nhi_range [ from 201(0) to 202(0) ] port 8080] ]

pattern [client 101

servers [nhi_range [ from 203(0) to 205(0) ] port 8080] ]

pattern [client 102

servers [nhi_range [ from 202(0) to 204(0) ] port 8080] ]

pattern [client 103

servers [ nhi_range [ from 201(0) to 205(0) ] port 8080] ]

pattern [ client 104

servers [nhi_range [ from 201(0) to 205(0) ] port 8080 ] ]

pattern [client 105

servers [ nhi_range [ from 202(0) to 204(0) ] port 8080 ] ]

pattern [client 106

servers [ nhi_range [ from 201(0) to 203(0) ] port 8080 ] ]

pattern [ client 107

servers [ nhi_range [ from 201(0) to 205(0) ] port 8080 ] ]

]

Page 215: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

215

# end Traffics

]

# end Net

#---------------------------------------Define dictionary------------------------------------#

dictionary [

# Standard Interfaces

100Mbps [bitrate 100000000 # bits/s

latency 0.00001 # per packet proc. delay, in sec ]

622Mbps [bitrate 622000000 # bits/s

latency 0.0001 # per packet proc. delay, in sec ]

1Gbps [bitrate 1000000000 # bits/s

latency 0.0001 # per packet proc. delay, in sec ]

single_homed_host [

interface [ id 0 _extends .dictionary.100Mbps ] ]

TCPRenoTestClient [

_extends .dictionary.single_homed_host

nhi_route [ dest default interface 0 next_hop 1(1)]

#Define client protocol stack

graph [

ProtocolSession [ name client use SSF.OS.TCP.test.tcpClient

start_time 10.0 # Time to send request (sec)

start_window 0.0 # make start time deterministic

file_size 10000000 # bytes to be downloaded

request_size 100 # client request size in bytes

show_report true # show debugging information

debug true

]

ProtocolSession [ name socket use SSF.OS.Socket.socketMaster ]

ProtocolSession [ name tcp use SSF.OS.TCP.tcpSessionMaster

Page 216: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

216

_find .dictionary.tcpinit

]

ProtocolSession [ name ip use SSF.OS.IP ]

] # end of Protocol Graph

] # End of TCPRenoTestClient

TCPRenoTestServer [

_extends .dictionary.single_homed_host

route [ dest default interface 0 ]

graph [

ProtocolSession [ name server use SSF.OS.TCP.test.tcpServer

# Server configuration

port 8080

client_limit 1024

request_size 100 # client request size in bytes

show_report true # show debugging information

debug true

]

ProtocolSession [ name socket use SSF.OS.Socket.socketMaster ]

ProtocolSession [ name tcp use SSF.OS.TCP.tcpSessionMaster

_find .dictionary.tcpinit

]

ProtocolSession [ name ip use SSF.OS.IP ]

] # end of Protocol Graph

] # end of server definition

# TCP Initial parameters

tcpinit [

ISS 0

MSS 1460

SendBufferSize 64

Page 217: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

217

RcvWndSize 64

AdvertisedWnd 10000

MaxConWnd 10000

conThresh 10000

fast_recovery true

delayed_ack true

TCP_FAST_INTERVAL 0.500

show_report true

]

] # End of dictionary

Minh họa ngôn ngữ TCL (A wired-cum-wireless Network):

#--------------------Define Options----------------------#

global val

set val(chan) Channel/WirelessChannel ;#channel type

set val(prop) Propagation/TwoRayGround ;#radio-propagation model

set val(ant) Antenna/OmniAntenna ;#Antenna type

set val(add) hierarchical ;#Addressing type

set val(ll) LL ;#Link layer type

set val(ifq) Queue/DropTail/PriQueue ;#Interface queue type

set val(ifqlen) 50 ;#max packet in ifq

set val(netif) Phy/WirelessPhy ;#network interface type

set val(mac) Mac/802_11 ;#MAC type

set val(rp) DSDV ;#ad-hoc routing protocol

set val(nn) 5 ;#number of mobilenodes

set val(bs) 2 ;#number of bsnodes

set val(wn) 2 ;#number of wirenodes

set val(x) 500 ;#X-cordinate

set val(y) 500 ;#Y-cordinate

Page 218: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

218

set val(seed) 0.0 ;# seed for random number gen.

#-----Check for boundary parameters and random seed.

if {$val(x) == 0 || $val(y) == 0} {

puts "No X-Y boundary values given for wireless topology\n"

}

if {$val(seed) > 0} {

puts "Seeding Random number generator with $val(seed)\n"

ns-random $val(seed)

}

set ns_ [new Simulator]

#-----Set up for hierarchical routing.

$ns_ node-config -addressType hierarchical

AddrParams set domain_num_ 3 ;#number of domains.

lappend cluster_num 2 1 1 ;#so cluster trong moi domain.

AddrParams set cluster_num_ $cluster_num

lappend eilastlevel 1 1 4 3 ;#so node trong moi cluster.

AddrParams set nodes_num_ $eilastlevel

set tracefd [open /home/wire_wireless.tr w ]

$ns_ trace-all $tracefd

set namtracefd [open /home/wire_wireless.nam w ]

$ns_ namtrace-all-wireless $namtracefd $val(x) $val(y)

#-----Set up topography object.

set topo [new Topography]

$topo load_flatgrid $val(x) $val(y)

#-----Create God.

create-god [expr $val(nn) + $val(bs)]

#-----Create and configure wired Nodes.

set temp {0.0.0 0.1.0} ;#hierachical addresses for wired domain.

for {set i 0} {$i < $val(wn)} {incr i} {

Page 219: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

219

set W($i) [$ns_ node [lindex $temp $i]]

}

#-----Configure for base-station Nodes.

$ns_ node-config -adhocRouting DSDV \

-llType LL \

-macType Mac/802_11 \

-propInstance [new $val(prop)] \

-ifqType Queue/DropTail/PriQueue \

-ifqLen $val(ifqlen) \

-phyType Phy/WirelessPhy \

-antType Antenna/OmniAntenna \

-channel [new $val(chan)] \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-wiredRouting ON \

set temp_1 { 1.0.0 1.0.1 1.0.2 1.0.3 }

set BS_(0) [$ns_ node [ lindex $temp_1 0]]

$BS_(0) random-motion 0

set temp_2 { 2.0.0 2.0.1 2.0.2 }

set BS_(1) [$ns_ node [ lindex $temp_2 0]]

$BS_(1) random-motion 0

#-----Configure for wireless nodes.

$ns_ node-config -wiredRouting OFF

#-----Configure for the wireless nodes that have the same configuration.

$ns_ node-config -adhocRouting DSDV \

-addressingType hierarchical \

-llType LL \

Page 220: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

220

-macType Mac/802_11 \

-propType Propagation/TwoRayGround \

-ifqType Queue/DropTail/PriQueue \

-ifqLen 50 \

-phyType Phy/WirelessPhy \

-antType Antenna/OmniAntenna \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace ON \

-movementTrace ON \

for {set j 0} {$j < 3} {incr j} {

set node_($j) [$ns_ node [lindex $temp_1 [expr $j + 1-0]]]

$node_($j) base-station [AddrParams addr2id [$BS_(0) node-addr]]

$node_($j) random-motion 0 ; #Disable random motion

}

for {set j 3} {$j < 5} {incr j} {

set node_($j) [$ns_ node [lindex $temp_2 [expr $j + 1-3]]]

$node_($j) base-station [AddrParams addr2id [$BS_(1) node-addr]]

$node_($j) random-motion 0 ; #Disable random motion

}

$node_(0) label "W0"

$node_(0) set X_ 374.0

$node_(0) set Y_ 466.0

$node_(0) set Z_ 0.0

$node_(1) label "W1"

$node_(1) set X_ 342.0

$node_(1) set Y_ 454.0

$node_(1) set Z_ 0.0

Page 221: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

221

$node_(2) label "W2"

$node_(2) set X_ 309.0

$node_(2) set Y_ 427.0

$node_(2) set Z_ 0.0

$node_(3) label "W3"

$node_(3) set X_ 239.0

$node_(3) set Y_ 244.0

$node_(3) set Z_ 0.0

$node_(4) label "W4"

$node_(4) set X_ 65.0

$node_(4) set Y_ 479.0

$node_(4) set Z_ 0.0

$BS_(0) label "BS0"

$BS_(0) set X_ 178.0

$BS_(0) set Y_ 29.0

$BS_(0) set Z_ 0.0

$BS_(1) label "BS1"

$BS_(1) set X_ 483.0

$BS_(1) set Y_ 47.0

$BS_(1) set Z_ 0.0

$ns_ at 52.18422 "$node_(0) setdest 394.0 284.0 11.0"

$ns_ at 62.195705 "$node_(1) setdest 442.0 480.0 65.0"

$ns_ at 84.75359 "$node_(2) setdest 1.0 382.0 86.0"

$ns_ at 75.980675 "$node_(3) setdest 441.0 445.0 22.0"

$ns_ at 38.467274 "$node_(4) setdest 195.0 32.0 69.0"

$ns_ at 19.1865 "$node_(0) setdest 431.0 193.0 69.0"

$ns_ at 51.863335 "$node_(1) setdest 193.0 145.0 93.0"

$ns_ at 40.75516 "$node_(2) setdest 204.0 459.0 11.0"

Page 222: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

222

$ns_ at 92.63895 "$node_(3) setdest 478.0 128.0 69.0"

$ns_ at 45.802128 "$node_(4) setdest 30.0 68.0 56.0"

#-----Create links between wired and bs nodes.

$ns_ duplex-link $W(0) $W(1) 5Mb 2ms DropTail

$ns_ duplex-link-op $W(0) $W(1) orient down

$ns_ duplex-link $W(1) $BS_(0) 5Mb 2ms DropTail

$ns_ duplex-link-op $W(1) $BS_(0) orient down

$ns_ duplex-link $W(1) $BS_(1) 5Mb 2ms DropTail

$ns_ duplex-link-op $W(1) $BS_(1) orient down

#-----Protocol and Application connections between node_(0) and w_(0)

set TCP0_0 [new Agent/TCP]

$TCP0_0 set class_ 2

set sink0_0 [new Agent/TCPSink]

$ns_ attach-agent $node_(0) $TCP0_0

$ns_ attach-agent $W(0) $sink0_0

$ns_ connect $TCP0_0 $sink0_0

set App0_0 [new Application/FTP]

$App0_0 attach-agent $TCP0_0

$ns_ at 10 "$App0_0 start"

$ns_ at 100 "$App0_0 stop"

#-----Protocol and Application connections between node_(3) and

node_(1)

set TCP3_1 [new Agent/TCP]

$TCP3_1 set class_ 2

set sink3_1 [new Agent/TCPSink]

$ns_ attach-agent $node_(3) $TCP3_1

$ns_ attach-agent $node_(1) $sink3_1

$ns_ connect $TCP3_1 $sink3_1

set App3_1 [new Application/FTP]

Page 223: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

223

$App3_1 attach-agent $TCP3_1

$ns_ at 10 "$App3_1 start"

$ns_ at 100 "$App3_1 stop"

#-----Define the node size in nam, must adjust it according to your

scenario.

for {set i 0} {$i < $val(nn)} {incr i} {

$ns_ initial_node_pos $node_($i) 40

}

#-----Tell all nodes when the simulation ends.

for {set i 0} {$i<$val(nn)} {incr i} {

$ns_ at 100.0 "$node_($i) reset";

}

for {set i 0} {$i<$val(bs)} {incr i} {

$ns_ at 100.0 "$BS_($i) reset";

}

$ns_ at 100.0 "stop"

$ns_ at 100.01 "puts \"NS EXITING...\"; $ns_ halt"

proc stop {} {

global ns_ tracefd

$ns_ flush-trace

close $tracefd

exec nam /home/wire_wireless.nam &

exit 0

}

#-----Informative headers for CMUTracefile.

puts $tracefd "M 0.0 nn $val(nn) x $val(x) y $val(y) rp \ $val(rp)"

puts $tracefd "M 0.0 prop $val(prop) ant $val(ant)"

puts "Starting Simulation..."

$ns_ run

Page 224: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

224

TÀI LIỆU THAM KHẢO

[1] Nguyễn Lãm Cao Nguyên, “Giao thức TCP trong mạng không dây”, bản thảo

luận văn thạc sĩ, ĐHKHTN tpHCM, tháng 12 , năm 2003.

[2] Nguyễn Mậu Tuấn, Trương Lê Minh Ngọc, Cao Đăng Tân, “giáo trình Mạng

máy tính không dây kỹ thuật, thiết kế và cài đặt”, Trung Tâm tin học ĐH KHTN,

2005.

[3] Tarek HelmiAbd El-Nabi,Ali Ahmed, “Modeling and Simulation of a routing

protocol for Ad Hoc networks combining queuing network analysis and ANT

colony algorithms”, Master’s Thesis, April, 2005.

http://hvg.ece.concordia.ca/Publications/Thesis/Tarek-Thesis.pdf

[4] Samba Sesay, Zongkai Yang and Jianhua He, “A Survey on Mobile Ad Hoc

Wireless Network”, Asian Network for Scientific Information, Information

Technology Journal 3 (2), 2004, pp: 168-175 .

http://www.ansinet.org/fulltext/itj/itj32168-175.pdf

[5] Paul Meeneghan and Declan Delaney, “An Introduction to NS, Nam and OTcl

scripting”, National University of Ireland, Technical Report, May, 2004.

http://www.cs.nuim.ie/research/reports/2004/nuim-cs-tr-2004-05.pdf

[6] Hung-ying Tyan, “Design, Realization and evaluation of a component-based

compositional software architecture for network simulation “, PhD Thesis, Ohio

State University, 2002.

http://www.j-sim.org/whitepapers/tyan_thesis.pdf

[7] Charles E.Perkins, Elzabeth B.Royer, Samir R.Das, “Ad-hoc On-Demand

Distance Vertor (AODV) Routing”, RFC 3561, July 2003.

http://www.faqs.org/rfcs/rfc3561.html

[8] Alex Song, “Ad hoc Multihop Wireless Networking”, thesis, June 2001.

http://piconet.sourceforge.net/thesis/progressreport.pdf

[9] Guoyou He, “Destination-Sequenced Distance Vector (DSDV) Protocol”,

technical report, December 2, 2003

Page 225: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

225

http://wiki.uni.lu/secan-lab/destination-sequenced-distance-vector2.pdf

[10] David B.Johnson,”Routing in Ad Hoc Networks of Mobile Hosts”, Proceedings

of IEEE Workshop on Mobile Computing Systems and Applicayions, December

1994.

http://www.ics.uci.edu/%7Eatm/adhoc/paper-collection/johnson-routing-adhoc-

94.pdf

[11] Tomasz Imielinski, Hank Korth, ”Mobile Computing”, Kluwer Academic

publisher, 1996.

[12] S.Kannan, John E.Mellor, D.D.Kouvatsos, “Investigation of Distance Vector

Routing for Mobile Ad hoc Networks”, PGNet, 2003.

http://www.cms.livjm.ac.uk/pgnet2003/submissions/Paper-24.pdf

[13] Vinccent D.Park, M. Scott Corson, “A Highly Adaptive Distributed Routing

Algorithm for Mobile Wireless Networks”, IEEE Computer Society, April 1997.

http://lambda.cs.yale.edu/cs425/doc/tora.pdf [14] Theodoros Salonidis, “Scalable Route Caching Methods for Networks with

Many Mobile Nodes”, Master’s Thesis, August 1999.

http://www-ece.rice.edu/~thsalon/publications/MS-thesis.pdf

[15] E. Royer and Chai-Keong Toh, "A Review of Current Routing Protocols

for Ad-Hoc Mobile Wireless Networks", IEEE Personal Communications

Magazine, April 1999, pp. 46-55.

http://www.eecs.harvard.edu/~mdw/course/cs263/fa04/papers/royer-

ieeepc99.pdf

[16] Alberto Medina, Anukool Lakhina, Ibrahim Matta, John Byers,”BRITE:

Universal Topology Generation from a User’s Perspective”, report, April 2001.

http://www.cs.bu.edu/techreports/pdf/2001-003-brite-user-manual.pdf

[17] Kevin Fall, Kannan Varadhan, “The ns Manual”, report, May 2005.

http://www.isi.edu/nsnam/ns/ns-documentation.html

Page 226: Tim Hieu Ngon Ngu Mo Hinh Hoa Mang Va Xay Dung Bo Cong Cu Phat Sinh Topology Cho Mang (Cai Nay c

226

[18] Tony Dongliang Feng, Rob Ballantyne, Ljiljana Trajkovic, “Implementation of

BGP in a Network Simulator”, Applied Telecomunacations Symposium, April 18-22,

2004.

http://www.ensc.sfu.ca/~ljilja/papers/ASTC2004.pdf

[19] Andreas Hartl, “DMLEditor”, report manual.

http://www.net.informatik.tu-muenchen.de/software/DMLEditor.pdf

[20] Andy T. Ogielski, “Scalable Modeling & Simulation of Internet Monitoring

Infrastructure“, Leiden Workshop, Sept 12.2000.

http://www.renesys.com/projects/leiden/Ogielski-Leiden2000.pdf

[21] James H. Cowie, “Scalable Simulation Framework API Reference Manual

version 1.0”, Documentation Draft, March 25,1999.

http://www.ssfnet.org/SSFdocs/ssfapiManual.pdf

[22] Sameh Ibraheem, “Network Simulation Using The Scalable Simulation

Framework (SSFNet)”, SSFNet manual, May 2003.

http://www.cs.sunysb.edu/~kostas/mpls/ssfnet_intro.pdf

[23] Dirk Jacob, “The Scalable Simulation Framework and SSF network models”,

seminar

[24] Thông tin về SSFNet http://www.ssfnet.org

[25] Thông tin về NS-2 http://www.isi.edu/nsnam/ns/

[26] Thông tin về BRITE http://www.cs.bu.edu/brite/