Tài liệu Đề 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: Nhận xét của giáo viên hướng dẫn
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
Nhận xét của giáo viên phản biện
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
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.
...
226 trang |
Chia sẻ: hunglv | Lượt xem: 1236 | Lượt tải: 1
Bạn đang xem trước 20 trang mẫu tài liệu Đề 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, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Nhận xét của giáo viên hướng dẫn
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
Nhận xét của giáo viên phản biện
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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
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
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
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.
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.
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
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
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
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();
}
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);
}
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:
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);
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
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:
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.
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.
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
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
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
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
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
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.
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).
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 :
(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.
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.
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:
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
49
id Net, Host, Router,
Interface
Phân biệt các thành phần
mạng với nhau
idrange [from
to ]
Net, Host, Router,
Interface
Khai báo mãng các đối tượng
có giá trị id từ đến
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
…
]
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 use
… ]
Graph Khai báo protocol cho chồng
giao thức
bitrate Interface Khai báo tốc độ truyền dữ
liệu cho giao tiếp (bits/s)
latency 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)
50
delay 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 route, nhi_route Tham số interface cho
default route
next_hop 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 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 Servers Địa chỉ của servers mà client
kết nối trong traffic
nhi_range [from
to
]
Servers Địa chỉ của các servers mà
client kết nối trong traffic
Port Servers Số hiệu cổng port ứng dụng
trên server mà client kết nối
Frequency 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
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 OR idrange [ from to ]
frequency
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.
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:
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.
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 OR idrange [ from to ]
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 to ]
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 đó.
55
Cú pháp khai báo:
interface [
id OR idrange [ from to <end
range>]
bitrate
latency
buffer
]
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 use
]
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
next_hop ()
]
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à với giao tiếp là .
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 OR idrange [ from to ]
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 OR idrange [ from to <end
range>]
bitrate
latency
buffer
]
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 ]
…
]
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
]
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à đều được chuyển qua cổng giao tiếp
có id là .
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:
59
link [
attach () attach () delay
]
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 () #default gateway
attach ()
attach ()
...
60
attach ()
]
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
servers [ nhi () OR
nhi_range [ from () to
() ]
port
]
]
…
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
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 use
[ … ]
]
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
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 use : 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ị
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.
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 “”
lambda “”# =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
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 “”
lambda “”# =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:
66
graph [
ProtocolSession [ name client use SSF.OS.TCP.test.tcpClient
start_time
start_window
file_size
request_size
show_report
debug
]
ProtocolSession [ name socket use SSF.OS.Socket.socketMaster]
ProtocolSession [ name tcp use SSF.OS.TCP.tcpsessionMaster
tcpinit [
…
]
]
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:
67
graph [
ProtocolSession [ name server use SSF.OS.TCP.test.tcpServer
port
client_limit
request_size
show_report
debug
]
ProtocolSession [ name socket use SSF.OS.Socket.socketMaster]
ProtocolSession [ name tcp use SSF.OS.TCP.tcpsessionMaster
tcpinit [
…
]
]
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 đó.
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.
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
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:
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:
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.
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.
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 address ()
use_return_address ()
hold_time
keep_alive_time
mrai
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
show_rcv_update
75
show_snd_update
]
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
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
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 đủ .
_extend và _find có chức năng tương tự nhau.
76
2.5.3 Từ khóa _dictionary
Cú pháp khai báo:
dictionary [
]
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
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
]
]
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.
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
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
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ộ
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.
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]
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 \
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
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 “” 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 “” Khởi tạo giá trị
năng lượng cho
node
87
rxPower “” Giá trị năng
lượng của node
txPower “” Giá trị năng
lượng của node
idlePower “”
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
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.
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
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
89
TCPSink TCP Reno hoặc Tahoe ở bên nhận
TCPSink/DelAck TCP Del
Các file đính kèm theo tài liệu này:
- Unlock-0112067-0112218.pdf