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

226 15 0
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

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

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

Thông tin tài liệu

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 720054 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 ..................................................... 425 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 ....................................... 676 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 subnetwork 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 NS2 và Ngôn ngữ TCL ........................... 78 Chương 3 Công cụ giả lập mạng NS2 ............................................. 78 3.1 Tổng quan về NS2 ............................................................. 78 3.2 Kiến trúc của NS2 .............................................................. 78 3.3 Các thành phần cấu hình mạng trong NS2 .......................... 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 BaseStation 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 NS2 .......................................................... 88 3.4.1 Giới thiệu ..................................................................... 887 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 NS2 ........................................................... 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 NS2 .............................................. 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 NS2 .................. 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 ............................................... 1188 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 ............................................... 1389 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 Routerlevel .................. 164 9.2.2.1.2 Mô hình đẳng cấp ASlevel ....................... 166 9.2.2.1.3 Mô hình phân cấp topdown ...................... 166 9.2.2.1.4 Mô hình phân cấp bottonup ...................... 167 9.2.2.1.5 Mô hình Imported File ............................... 167 9.3 Các tham số trong giao diện BRITE ................................... 16810 9.4 Hạn chế của BRITE ............................................................ 170 Chương 10 NS2 và NAM ................................................................ 171 10.1 Cài đặt NS2 và NAM trên Window.................................. 171 10.1.1 Download NS2 và NAM ......................................... 171 10.1.2 Cài đặt NS2 ............................................................ 171 10.1.3 Chạy NS2 và NAM ................................................. 172 10.2 Cài đặt NS2 và NAM trên Linx ....................................... 173 10.2.1 Download NS2 và NAM ......................................... 173 10.2 .2 Cài đặt ..................................................................... 174 10.2.3 Chạy NS2 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 Singlehop ............ 186 12.2.2.2 Mạng MANET định tuyến Multihop ............... 186 12.2.2.3 Mô hình MANET định tuyến MobileMultihop 187 12.2.3 Phân loại mạng MANET theo chức năng của Node .. 18711 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 WiredcumWireless ................................................ 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 WiredcumWireless............................... 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 ............................................................................................... 22412 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 NS2 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 IO 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 IO Bảng 4.13 Cú pháp các thao tác trên file13 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 topdown Bảng 9.5 Các tham số của mô hình phân cấp bottonup 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 NS2 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 Wireless14 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 PeertoPeer 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 NS15 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 NS2 Hình 3.4 Cấu trúc Heap giảm Hình 3.5 Hai loại ứng dụng trong NS2 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ị hopcount 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 subnetwork 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 topo16 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 FlatRouterWaxman 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à HeavyTailed Hình 9.11 Mô hình phân cấp topdown Hình 9.12 Mô hình ImportedFile Hình 10.1 Cấu trúc thư mục của NS2 cài đặt trên Window Hình 10.2 Cấu trúc thư mục của NS2 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 Singlehop Hình 12.4 Định tuyến multihop 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ạng17 Hình 14.8 Mô hình mạng wirecumwireless 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ạngWiredcumWireless trong NAM18 DANH SÁCH CÁC TỪ VIẾT TẮT 1. ABR: Associa tivityBased 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 OnDemand 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 interAutonomous 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: BaseStation 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. DACK: DelayedACK – 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: DestinationSequenced 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: DistanceVector 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: Realtime 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: Zonebased 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 NS2. 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 NS2: Network Simulator version 2 OTCL: Object Tool Command Language SSF: Scalable Simulation Framework SSFNet: Scalable Simulation Framework Network Model TCL: Tool Command Language23 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 NS2. Xác nhận của GVHD24 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ọcCao đẳ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ây25 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 NS2 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 LANGUAGE28 Chương 1 SSF và SSFNet Models 1.1 SSF Model: 1.1.1 Giới thiệu SSFScalable 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 SSF29 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 42000 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 52000 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 12001 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++ Java30 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); nullterminated Entity coalignedEntities(); nullterminated process processes(); nullterminated 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(); nullterminated 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(); nullterminated Event activeEvents(); nullterminated outChannel mappedto(); }; public interface inChannel { public Entity owner(); public Event activeEvents(); public outChannel mappedto(); } class outChannel { public: Entity owner(); nullterminated 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 process35 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 SSFNetScalable 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ư multiprotocol, multidomain 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, TCPUDPSocketsclientserver 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

Nhận xét giáo viên hướng dẫn ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… Nhận xét giáo viên phản biện ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… ………………………………………………………………… LỜI CẢM ƠN Chúng xin tỏ lòng biết ơn sâu sắc đến ba mẹ gia đình ni dưỡng, giáo dục tạo điều kiện tốt cho chúng thực đề tài Chúng em xin chân thành cảm ơn khoa Công nghệ thông tin quý Thầy, Cô 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 thực luận văn tốt nghiệp Đặ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, bảo chúng em trình thực đề tài Mặc dù chúng em cố gắng hoàn thành luận văn với tất nỗ lực thân, luận văn chắn không tránh khỏi thiếu sót định, kính mong cảm thơng tận tình bảo q Thầy, Cơ bạn Phú Quý&Quang Hiếu Tháng 7/2005 MỤC LỤC Trang Danh sách bảng 12 Danh sách hình 14 Danh sách từ viết tắt 18 Tóm tắt luận văn 22 Chương mở đầu 24 Dẫn nhập 24 Mục đích ý nghĩa đề tài 25 Đối tượng phạm vi nghiên cứu 25 A Ngôn ngữ mơ hình hóa mạng mơi trường giả lập mạng 27 Phần SSFNet Models Domain Modeling Language 27 Chương SSF SSFNet Models 28 1.1 SSF Model 28 1.1.1 Giới thiệu 28 1.1.2 Các đặc tính SSF 28 1.1.3 Các phiên cài đặt SSF 28 1.1.4 Giới thiệu lớp sở SSF 29 1.1.5 Trình tự 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ợ SSFNet 38 1.2.4 Các gói thư viện SSFNet 39 1.2.4.1 SSF.OS 39 1.2.4.2 SSF.Net 40 Chương Domain Modeling Language 42 2.1 Giới thiệu ngôn ngữ DML 42 2.1.1 DML gì? 42 2.1.2 Cấu trúc ngữ pháp DML 42 2.1.3 Quá trình biên dịch DML 44 2.2 Các bước cài đặt 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 thuộc tính DML 48 2.3.1 Đối tượng Net 50 2.3.1.1 Định nghĩa khai báo 50 2.3.1.2 Các thuộc tính Net 52 2.3.2 Đối tượng Host 54 2.3.2.1 Định nghĩa khai báo 54 2.3.2.2 Các thuộc tính Host 54 2.3.3 Đối tượng Router 56 2.3.3.1 Định nghĩa khai báo 56 2.3.3.2 Các thuộc tính Router 57 2.3.4 Link 58 2.3.4.1 Định nghĩa khai báo 58 2.3.4.2 Các thuộc tính Link 59 2.3.5 Traffic 60 2.3.5.1 Định nghĩa khai báo 60 2.3.5.2 Các thuộc tính Traffic 60 2.3.6 Protocol 60 2.3.6.1 Định nghĩa khai báo 60 2.3.6.2 Các thuộc tính Protocol 61 2.3.6.3 Cấu hình Host FTP Client 65 2.3.6.4 Cấu hình Host FTP Server 66 2.4 Ciao thức BGP SSFNet 67 2.4.1 Giới thiêu giao thức BGP 67 2.4.2 Các yếu tố đánh giá BGP 69 2.4.3 BGP 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 sub-network 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 BGP 73 2.5 Các từ khóa hổ trợ 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 Công cụ giả lập mạng NS-2 Ngôn ngữ TCL 78 Chương Công cụ giả lập mạng NS-2 78 3.1 Tổng quan NS-2 78 3.2 Kiến trúc NS-2 78 3.3 Các thành phần cấu hình mạng 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 lập lịch 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 tham số cấu hình cho Node 85 3.3.3 Tạo liên kết cho Node 87 3.4 Các Agent NS-2 88 3.4.1 Giới thiệu 88 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 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 NS-2 101 3.6.1 Các thành phần cấu hình MobileNode 101 3.6.2 Tạo mơ hình mạng khơng dây NS-2 101 3.6.3 Tạo kịch chuyển động cho 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 Ngôn ngữ TCL 117 4.1 Tổng quan số đặc điểm ngôn ngữ TCL 117 4.2 Cú pháp TCL 118 4.2.1 Khai báo biến mảng 118 4.2.2 Các biểu thức toán học TCL 119 4.2.3 Thay lập nhóm 120 4.2.3.1 Thay 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 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 kiện 125 4.2.4.5.3 Nhóm lệnh file 125 4.2.4.5.4 Nhóm lệnh danh sách 126 4.2.4.5.5 Nhóm lệnh xử lý chuỗi 127 4.2.4.5.6 Nhóm lệnh xử lý biến 127 4.2.4.5.7 Nhóm lệnh thời gian 128 Chương Ngôn ngữ hướng đối tượng Otcl 133 5.1 Otcl ngôn ngữ hướng đối tượng TCL 133 5.2 Lớp đối tượng Otcl 133 5.3 Phương thức khởi tạo hủy cho lớp 133 5.4 Khai báo phương thức cho lớp 134 5.5 Khai báo thành phần liệu 135 B Giới thiệu công cụ phát sinh Topology mạng 137 Phần Các công cụ hổ trợ ngôn ngữ DML 137 Chương DMLEditor 138 6.1 Giới thiệu 138 6.2 Các tính bật DMLEditor 138 6.3 Các bước cài đặt DMLEditor 138 6.4 Quá trình thiết kế DMLEditor 139 Chương RacewayViewer 143 7.1 Giới thiệu 143 7.2 Các tính bật RacewayViewer 143 7.3 Các bước cài đặt RacewayViewer 143 7.4 Quá trình thiết kế RacewayViewer 144 Chương NetViewer 148 8.1 Giới thiệu 148 8.2 Các tính bật NetViewer 148 8.3 Các bước cài đặt NetViewer 148 8.4 Quá trình thiết kế NetViewer 149 Phần Các công cụ hổ trợ ngôn ngữ TCL 155 Chương BRITE 155 9.1 Thiết kế cài đặt BRITE 155 9.1.1 Download cài đặt BRITE 156 9.1.2 Giao diện GUI 158 9.1.3 Giao diện dòng lệnh 158 9.1.4 Các file cấu hình 159 9.1.5 Định dạng output BRITE 160 9.2 Kiến trúc BRITE 162 9.2.1 Qui trình làm viêc BRITE 162 9.2.2 Kiến trúc 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ố giao diện BRITE 168 9.4 Hạn chế BRITE 170 Chương 10 NS-2 NAM 171 10.1 Cài đặt NS-2 NAM Window 171 10.1.1 Download NS-2 NAM 171 10.1.2 Cài đặt NS-2 171 10.1.3 Chạy NS-2 NAM 172 10.2 Cài đặt NS-2 NAM Linx 173 10.2.1 Download NS-2 NAM 173 10.2 Cài đặt 174 10.2.3 Chạy NS-2 NAM 175 Phần 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 bật Otter 176 11.3 Các bước cài đặt Otter 177 11.4 Quá trình thiết kế Otter 178 C Xây dựng chương trình ứng dụng BRITE 182 Phần Cơ sở lý thuyết 182 Chương 12 Lý thuyết 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 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 Node 187 10 PHỤ LỤC Một số ví dụ minh họa ngơn ngữ DML TCL Minh họa ngôn ngữ DML (A Switched-Shared-LAN): # -Mơ hình Topology # # C0 -| # C1 -| # C2 -| // S0 # C3 -| // S1 # C4 -| R1 R2 | # C5 -| \\ S3 # C6 -| \\ S4 # C7 -| # -# Net [ frequency 1000000000 randomstream [ generator MersenneTwister stream "seed starter" reproducibility_level timeline ] # -define the two router R1 and R2 -# router [ id graph [ ProtocolSession [ name ip use SSF.OS.IP ] ] interface [ id buffer 192000 _extends dictionary.1Gbps ] 212 interface [ id buffer 192000 _extends dictionary.100Mbps ] route [ dest default interface ] ] router [ id graph [ ProtocolSession [ name ip use SSF.OS.IP ] ] interface [ id buffer 192000 _extends dictionary.1Gbps ] interface [ idrange [ from to ] buffer 192000 _extends dictionary.100Mbps ] route [ dest default interface ] ] # -Define a shared LAN of clients -# host [ idrange [ from 100 to 107 ] _extends dictionary.TCPRenoTestClient ] # -Define a switched LAN of servers # host [ idrange [ from 201 to 205 ] _extends dictionary.TCPRenoTestServer ] # -Define Network Connections # 213 link [ attach 1(0) attach 2(0) delay 0.0005 ] link [attach 1(1) attach 100(0) attach 101(0) attach 102(0) attach 103(0) attach 104(0) attach 105(0) attach 106(0) attach 107(0) ] link [ attach 2(1) attach 201(0) delay 0.000005 ] link [ attach 2(2) attach 202(0) delay 0.000005 ] link [ attach 2(3) attach 203(0) delay 0.000005 ] link [ attach 2(4) attach 204(0) delay 0.000005 ] link [ attach 2(5) attach 205(0) delay 0.000005 ] # -Define Traffic: A client requests files from servers -# traffic [ pattern [client 100 servers [ nhi_range [ from 201(0) to 202(0) ] port 8080] ] pattern [client 101 servers [nhi_range [ from 203(0) to 205(0) ] port 8080] ] pattern [client 102 servers [nhi_range [ from 202(0) to 204(0) ] port 8080] ] pattern [client 103 servers [ nhi_range [ from 201(0) to 205(0) ] port 8080] ] pattern [ client 104 servers [nhi_range [ from 201(0) to 205(0) ] port 8080 ] ] pattern [client 105 servers [ nhi_range [ from 202(0) to 204(0) ] port 8080 ] ] pattern [client 106 servers [ nhi_range [ from 201(0) to 203(0) ] port 8080 ] ] pattern [ client 107 servers [ nhi_range [ from 201(0) to 205(0) ] port 8080 ] ] ] 214 # end Traffics ] # end Net # -Define dictionary # dictionary [ # Standard Interfaces 100Mbps [bitrate 100000000 # bits/s latency 0.00001 # per packet proc delay, in sec ] 622Mbps [bitrate 622000000 # bits/s latency 0.0001 # per packet proc delay, in sec ] 1Gbps [bitrate 1000000000 # bits/s latency 0.0001 # per packet proc delay, in sec ] single_homed_host [ interface [ id _extends dictionary.100Mbps ] ] TCPRenoTestClient [ _extends dictionary.single_homed_host nhi_route [ dest default interface next_hop 1(1)] #Define client protocol stack graph [ ProtocolSession [ name client use SSF.OS.TCP.test.tcpClient start_time 10.0 # Time to send request (sec) start_window 0.0 # make start time deterministic file_size 10000000 # bytes to be downloaded request_size 100 # client request size in bytes show_report true # show debugging information debug true ] ProtocolSession [ name socket use SSF.OS.Socket.socketMaster ] ProtocolSession [ name tcp use SSF.OS.TCP.tcpSessionMaster 215 _find dictionary.tcpinit ] ProtocolSession [ name ip use SSF.OS.IP ] ] # end of Protocol Graph ] # End of TCPRenoTestClient TCPRenoTestServer [ _extends dictionary.single_homed_host route [ dest default interface ] graph [ ProtocolSession [ name server use SSF.OS.TCP.test.tcpServer # Server configuration port 8080 client_limit 1024 request_size 100 # client request size in bytes show_report true # show debugging information debug true ] ProtocolSession [ name socket use SSF.OS.Socket.socketMaster ] ProtocolSession [ name tcp use SSF.OS.TCP.tcpSessionMaster _find dictionary.tcpinit ] ProtocolSession [ name ip use SSF.OS.IP ] ] # end of Protocol Graph ] # end of server definition # TCP Initial parameters tcpinit [ ISS MSS 1460 SendBufferSize 64 216 RcvWndSize 64 AdvertisedWnd 10000 MaxConWnd 10000 conThresh 10000 fast_recovery true delayed_ack true TCP_FAST_INTERVAL 0.500 show_report true ] ] # End of dictionary Minh họa ngôn ngữ TCL (A wired-cum-wireless Network): # Define Options # global val set val(chan) Channel/WirelessChannel ;#channel type set val(prop) Propagation/TwoRayGround ;#radio-propagation model set val(ant) Antenna/OmniAntenna ;#Antenna type set val(add) hierarchical ;#Addressing type set val(ll) LL ;#Link layer type set val(ifq) Queue/DropTail/PriQueue ;#Interface queue type set val(ifqlen) 50 ;#max packet in ifq set val(netif) Phy/WirelessPhy ;#network interface type set val(mac) Mac/802_11 ;#MAC type set val(rp) DSDV ;#ad-hoc routing protocol set val(nn) ;#number of mobilenodes set val(bs) ;#number of bsnodes set val(wn) ;#number of wirenodes set val(x) 500 ;#X-cordinate set val(y) 500 ;#Y-cordinate 217 set val(seed) 0.0 ;# seed for random number gen # -Check for boundary parameters and random seed if {$val(x) == || $val(y) == 0} { puts "No X-Y boundary values given for wireless topology\n" } if {$val(seed) > 0} { puts "Seeding Random number generator with $val(seed)\n" ns-random $val(seed) } set ns_ [new Simulator] # -Set up for hierarchical routing $ns_ node-config -addressType hierarchical AddrParams set domain_num_ ;#number of domains lappend cluster_num 1 ;#so cluster moi domain AddrParams set cluster_num_ $cluster_num lappend eilastlevel 1 ;#so node moi cluster AddrParams set nodes_num_ $eilastlevel set tracefd [open /home/wire_wireless.tr w ] $ns_ trace-all $tracefd set namtracefd [open /home/wire_wireless.nam w ] $ns_ namtrace-all-wireless $namtracefd $val(x) $val(y) # -Set up topography object set topo [new Topography] $topo load_flatgrid $val(x) $val(y) # -Create God create-god [expr $val(nn) + $val(bs)] # -Create and configure wired Nodes set temp {0.0.0 0.1.0} ;#hierachical addresses for wired domain for {set i 0} {$i < $val(wn)} {incr i} { 218 set W($i) [$ns_ node [lindex $temp $i]] } # -Configure for base-station Nodes $ns_ node-config -adhocRouting DSDV \ -llType LL \ -macType Mac/802_11 \ -propInstance [new $val(prop)] \ -ifqType Queue/DropTail/PriQueue \ -ifqLen $val(ifqlen) \ -phyType Phy/WirelessPhy \ -antType Antenna/OmniAntenna \ -channel [new $val(chan)] \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -wiredRouting ON \ set temp_1 { 1.0.0 1.0.1 1.0.2 1.0.3 } set BS_(0) [$ns_ node [ lindex $temp_1 0]] $BS_(0) random-motion set temp_2 { 2.0.0 2.0.1 2.0.2 } set BS_(1) [$ns_ node [ lindex $temp_2 0]] $BS_(1) random-motion # -Configure for wireless nodes $ns_ node-config -wiredRouting OFF # -Configure for the wireless nodes that have the same configuration $ns_ node-config -adhocRouting DSDV \ -addressingType hierarchical \ -llType LL \ 219 -macType Mac/802_11 \ -propType Propagation/TwoRayGround \ -ifqType Queue/DropTail/PriQueue \ -ifqLen 50 \ -phyType Phy/WirelessPhy \ -antType Antenna/OmniAntenna \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON \ for {set j 0} {$j < 3} {incr j} { set node_($j) [$ns_ node [lindex $temp_1 [expr $j + 1-0]]] $node_($j) base-station [AddrParams addr2id [$BS_(0) node-addr]] $node_($j) random-motion ; #Disable random motion } for {set j 3} {$j < 5} {incr j} { set node_($j) [$ns_ node [lindex $temp_2 [expr $j + 1-3]]] $node_($j) base-station [AddrParams addr2id [$BS_(1) node-addr]] $node_($j) random-motion } $node_(0) label "W0" $node_(0) set X_ 374.0 $node_(0) set Y_ 466.0 $node_(0) set Z_ 0.0 $node_(1) label "W1" $node_(1) set X_ 342.0 $node_(1) set Y_ 454.0 $node_(1) set Z_ 0.0 220 ; #Disable random motion $node_(2) label "W2" $node_(2) set X_ 309.0 $node_(2) set Y_ 427.0 $node_(2) set Z_ 0.0 $node_(3) label "W3" $node_(3) set X_ 239.0 $node_(3) set Y_ 244.0 $node_(3) set Z_ 0.0 $node_(4) label "W4" $node_(4) set X_ 65.0 $node_(4) set Y_ 479.0 $node_(4) set Z_ 0.0 $BS_(0) label "BS0" $BS_(0) set X_ 178.0 $BS_(0) set Y_ 29.0 $BS_(0) set Z_ 0.0 $BS_(1) label "BS1" $BS_(1) set X_ 483.0 $BS_(1) set Y_ 47.0 $BS_(1) set Z_ 0.0 $ns_ at 52.18422 "$node_(0) setdest 394.0 284.0 11.0" $ns_ at 62.195705 "$node_(1) setdest 442.0 480.0 65.0" $ns_ at 84.75359 "$node_(2) setdest 1.0 382.0 86.0" $ns_ at 75.980675 "$node_(3) setdest 441.0 445.0 22.0" $ns_ at 38.467274 "$node_(4) setdest 195.0 32.0 69.0" $ns_ at 19.1865 "$node_(0) setdest 431.0 193.0 69.0" $ns_ at 51.863335 "$node_(1) setdest 193.0 145.0 93.0" $ns_ at 40.75516 "$node_(2) setdest 204.0 459.0 11.0" 221 $ns_ at 92.63895 "$node_(3) setdest 478.0 128.0 69.0" $ns_ at 45.802128 "$node_(4) setdest 30.0 68.0 56.0" # -Create links between wired and bs nodes $ns_ duplex-link $W(0) $W(1) 5Mb 2ms DropTail $ns_ duplex-link-op $W(0) $W(1) orient down $ns_ duplex-link $W(1) $BS_(0) 5Mb 2ms DropTail $ns_ duplex-link-op $W(1) $BS_(0) orient down $ns_ duplex-link $W(1) $BS_(1) 5Mb 2ms DropTail $ns_ duplex-link-op $W(1) $BS_(1) orient down # -Protocol and Application connections between node_(0) and w_(0) set TCP0_0 [new Agent/TCP] $TCP0_0 set class_ set sink0_0 [new Agent/TCPSink] $ns_ attach-agent $node_(0) $TCP0_0 $ns_ attach-agent $W(0) $sink0_0 $ns_ connect $TCP0_0 $sink0_0 set App0_0 [new Application/FTP] $App0_0 attach-agent $TCP0_0 $ns_ at 10 "$App0_0 start" $ns_ at 100 "$App0_0 stop" # -Protocol and Application connections between node_(3) and node_(1) set TCP3_1 [new Agent/TCP] $TCP3_1 set class_ set sink3_1 [new Agent/TCPSink] $ns_ attach-agent $node_(3) $TCP3_1 $ns_ attach-agent $node_(1) $sink3_1 $ns_ connect $TCP3_1 $sink3_1 set App3_1 [new Application/FTP] 222 $App3_1 attach-agent $TCP3_1 $ns_ at 10 "$App3_1 start" $ns_ at 100 "$App3_1 stop" # -Define the node size in nam, must adjust it according to your scenario for {set i 0} {$i < $val(nn)} {incr i} { $ns_ initial_node_pos $node_($i) 40 } # -Tell all nodes when the simulation ends for {set i 0} {$i

Ngày đăng: 04/06/2021, 10:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan