Đề 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 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. ...

pdf226 trang | Chia sẻ: hunglv | Lượt xem: 1236 | Lượt tải: 1download
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:

  • pdfUnlock-0112067-0112218.pdf