Xem mẫu

  1. BỘ CÔNG THƢƠNG TRƢỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN TÀI LIỆU HỌC TẬP KỸ THUẬT MÔ PHỎNG Đối tƣợng: HSSV trình độ Đại học, Cao đẳng Ngành đào tạo: Dùng chung cho Khối ngành Công nghệ Lƣu hành nội bộ
  2. M CL C DANH M C VIẾT TẮT ............................................................................................... 5 LỜI NÓI ĐẦU................................................................................................................ 7 CHƢƠNG 1. MÔ PHỎNG MẠNG MÁY TÍNH .......................................................... 9 1.1. Mạng máy tính và kiến trúc phân tầng. .................................................................... 9 1.1.1. Khái niệm phân tầng ......................................................................... 9 1.1.2. Mô hình tham chiếu OSI và TCP/IP ................................................ 11 1.2. Mô hình hệ thống .................................................................................................. 13 1.2.1. Tiếp cận theo phƣơng pháp phân tích .............................................. 13 1.2.2. Tiếp cận theo phƣơng pháp mô phỏng ............................................ 13 1.3. Khái niệm cơ bản về mô phỏng mạng máy tính ..................................................... 14 1.3.1. Định nghĩa chuẩn về mô phỏng ....................................................... 14 1.3.2. Các thành phần của mô phỏng ........................................................ 15 1.4. Mô phỏng phụ thuộc thời gian ............................................................................... 16 1.4.1. Mô phỏng hƣớng thời gian .............................................................. 16 1.4.2. Mô phỏng hƣớng sự kiện ................................................................ 17 1.5. Ví dụ về mô phỏng mạng máy tính ........................................................................ 19 CHƢƠNG 2. GIỚI THIỆU VỀ NS2 ........................................................................... 26 2.1. Giới thiệu .............................................................................................................. 26 2.2. Kiến trúc cơ bản .................................................................................................... 27 2.3. Cài đặt ................................................................................................................... 28 2.3.1. Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống nền Unix ......... 28 2.3.2. Cài đặt NS2 bằng bộ cài tích hợp trên các hệ thống nền Windows .. 29 2.4. Thƣ mục và quy ƣớc.............................................................................................. 29 2.4.1. Thƣ mục ......................................................................................... 29 2.4.2. Các quy ƣớc .................................................................................... 30 2.5. Chạy mô phỏng NS2 ............................................................................................. 32 2.6. Các thành phần C++ trong NS2 và Công cụ Make................................................. 39 CHƢƠNG 3. LIÊN KÉT GIỮA OTCL VÀ C++ TRONG NS2 ................................ 43 3.1. Khái niệm hai ngôn ngữ trong NS2 ....................................................................... 44 3.2. Tạo và huỷ một đối tƣợng ánh xạ TclObject .......................................................... 55 3.3. Liên kết các biến trong cây thông dịch và cây biên dịch ........................................ 58 3.4. Các lệnh OTcl ....................................................................................................... 60 3.5. Tạo đối tƣợng TclObject ....................................................................................... 66 3.6. Gọi lệnh TclCommand .......................................................................................... 67 -1-
  3. 3.7. Lớp EmbeddeđTcl ................................................................................................. 70 CHƢƠNG 4. MÔ PHỎNG ĐIỀU KHIỂN SỰ KIỆN TRONG NS2 ......................... 72 4.1. Phân biệt Event-Driven và Time-Driven................................................................ 72 4.1.1. Mô phỏng hƣớng thời gian ............................................................................. 73 4.1.2. Bƣớc nhảy thời gian trong mô phỏng hƣớng thời gian .................................... 73 4.1.3. Mô phỏng hƣớng sự kiện ................................................................................ 74 4.2. Khái niệm mô phỏng NS2 ..................................................................................... 75 4.3. Events và Handlers ................................................................................................ 75 4.3.1. Tổng quan về sự kiện và thẻ quản lý ............................................... 75 4.3.2. Lớp NsObject ................................................................................. 76 4.3.3. Lớp Packet và lớp AtEvent ............................................................. 77 4.4. Bộ lập lịch ............................................................................................................. 78 4.4.1. Các thành phần chính của bộ lập lịch .............................................. 79 4.4.2. Đóng gói dữ liệu và khái niệm đa hình ............................................ 79 4.4.3. Các hàm chính của bộ lập lịch ........................................................ 80 4.4.4. Tính động của ID định danh sự kiện ............................................... 81 4.4.5. Cơ chế Lập lịch-Thực thi (Scheduling-Dispatching) ....................... 82 4.4.6. Lập lịch cho sự kiện rỗng và sự kiện giả ......................................... 83 CHƢƠNG 5. CÁC THÀNH PHẦN CHÍNH TRONG NS2 ....................................... 89 5.1. Các thành phần chính trong NS2 ........................................................................... 89 5.2. Cây phân lớp C++ ................................................................................................. 90 5.3. Phân lớp NSObjects .............................................................................................. 91 5.3.1.Lớp NsObject........ …………………………………………………………….91 5.3.2. Cơ chế chuyển tiếp gói tin của NsObject ........................................................ 92 5.4. Phân lớp Connector ............................................................................................... 92 5.4.1. Khai báo của lớp Connector ............................................................ 93 5.4.2. Lệnh cấu hình của lớp Connector trong OTcl .................................. 94 5.5. Cơ chế chuyển tiếp gói tin ..................................................................................... 96 CHƢƠNG 6. CÁC NÚT NHƢ ROUTERS VÀ COMPUTER HOSTS ..................... 99 6.1. Tổng quan về các nút trong NS2............................................................................ 99 6.1.1. Các thủ tục instproc của lớp Node................................................. 100 6.1.2. Nút mặc định và Giao tiếp cấu hình nút ........................................ 102 6.2. Cơ chế định tuyến trong NS2 .............................................................................. 102 6.3. Tuyến đƣờng logic .............................................................................................. 104 6.4. Phân lớp Classifier .............................................................................................. 105 6.5. Định tuyến........................................................................................................... 114 -2-
  4. 6.5.1. Tổng quan về module định tuyến .................................................. 114 6.5.2. Lớp RoutingModule trong C++ .................................................... 117 6.5.3. Lớp RtModule trong OTcl ............................................................ 119 6.5.4. Lớp BaseRoutingModule và RtModule/Base ................................ 120 6.6. Cấu hình các đối tƣợng Node .............................................................................. 120 6.7. Khởi tạo nút ........................................................................................................ 123 6.8. Cấu hình đƣờng ................................................................................................... 127 CHƢƠNG 7. QUẢN LÝ VÙNG ĐỆM VÀ ĐƢỜNG LIÊN KẾT ........................... 131 7.1. Giới thiệu về đối tƣợng SimpleLink .................................................................... 131 7.1.1. Các thủ tục instproc để cấu hình đối tƣợng SimpleLink ................ 132 7.1.2. Khởi tạo của Lớp SimpleLink ....................................................... 133 7.2. Mô hình truyền gói tin ......................................................................................... 134 7.3. Quản lý vùng đệm ............................................................................................... 136 7.4. Một ví dụ mạng Two-Node ................................................................................. 143 CHƢƠNG 8. PACKETS, PACKETS HEADERS, VÀ HEADERS FORMAT ...... 145 8.1. Tổng quan về nguyên tắc tạo gói tin .................................................................... 145 8.2. Sắp xếp và phân bổ gói tin................................................................................... 150 8.2.1. Cấp phát gói tin............................................................................. 150 8.2.2. Thu hồi gói tin .............................................................................. 153 8.3. Tiêu đề gói tin ..................................................................................................... 155 8.3.1. Truy cập header gói tin ở Mức 1 ................................................... 156 8.3.2. Header gói tin thông dụng ............................................................. 157 8.3.3. Header gói IP ................................................................................ 157 8.3.4. Loại gói tin ................................................................................... 158 8.3.5. Header theo giao thức ................................................................... 161 8.4. Tải trọng dữ liệu .................................................................................................. 171 8.4.1. Tùy biến gói tin............................................................................. 174 8.4.2. Tự tạo các gói tin .......................................................................... 174 CHƢƠNG 9. TỔNG QUAN VÀ TRIỂN KHAI UDP .............................................. 178 9.1. Khái niệm cơ bản về UDP và TCP ...................................................................... 178 9.1.1. Cơ bản về giao thức UDP ............................................................. 178 9.1.2. Cơ bản về giao thức TCP .............................................................. 178 9.2. Tác tử cơ bản....................................................................................................... 183 9.2.1. Chƣong trình ứng dụng, tác tử và mạng cấp thấp .......................... 183 9.2.2. Cấu hình tác tử.............................................................................. 185 9.2.3. Cơ chế bên trong của tác tử ........................................................... 186 9.2.4. Định nghĩa một tác tử mới tầng giao vận....................................... 189 -3-
  5. 9.3. UDP và tác tử NULL........................................................................................... 190 CHƢƠNG 10. TCP .................................................................................................... 195 10.1. Tổng quan về tác tử TCP trong NS2 .................................................................... 195 10.1.1. Thiết lập kết nối TCP .................................................................... 195 10.1.2. Truyền gói tin và cơ chế báo nhận ................................................ 195 10.1.3. TCP Header .................................................................................. 196 10.1.4. Định nghĩa TCP gửi và TCP nhận ................................................. 197 10.2. TCP Receiver ...................................................................................................... 202 10.2.1. Lớp Acker..................................................................................... 202 10.2.2. Lớp TcpSink ................................................................................. 205 10.3. TCP Sender ......................................................................................................... 207 10.4. Chức năng truyền gói tin TCP ............................................................................. 207 10.4.1. Hàm sendmsg(nbytes) ................................................................... 208 10.4.2. Hàm send_much(force, reason, maxburst) .................................... 209 10.4.3. Hàm output(seqno, reason) ........................................................... 211 10.4.4. Hàm sendone() .............................................................................. 213 CHƢƠNG 11. TẦNG ỨNG D NG .......................................................................... 215 11.1. Mối quan hệ giữa tầng ứng dụng và tầng giao vận ............................................... 215 11.2. Phân tích phân lớp tầng ứng dụng........................................................................ 218 11.2.1. Các hàm của lớp Application và Lớp Agent .................................. 219 11.2.2. Các hàm public của lớp Application ............................................. 219 11.2.3. Các hàm public có liên quan của Lớp Agent ................................. 220 11.2.4. Các lệnh OTcl của Lớp Application .............................................. 221 11.3. Phần tử sinh lƣu lƣợng ........................................................................................ 221 11.4. Lớp CBR Traffic: Một ví dụ về bộ sinh lƣu lƣợng ............................................... 228 11.5. Ứng dụng mô phỏng ............................................................................................ 230 11.5.1. (File Transfer Protocol)................................................................. 230 11.5.2. Telnet ........................................................................................... 231 TÀI LIỆU THAM KHẢO ......................................................................................... 232 -4-
  6. DANH M C VIẾT TẮT Tên viết tắt Nội dung CBR (Constant Bit Rate) Tốc độ bit cố định CBQ (Class Based Queueing ) Hàng đợi dựa trên lớp FTP (File Transfer Protocol) Giao thức truyền tập tin Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên HBT (High priority Best effort Traffic) cao nhất HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn bản ID (Identifier) Mã nhận dạng IEEE (Institute of Electrical and Electronic Engineers ) Viện kỹ thuật điện điện tử IP (Internet Protocol) Giao thức internet LAN (Local Area Network) Mạng cục bộ MAC (Media Access Control) Điều khiển truy cập đƣờng truyền MMS (MPLS Network Simulation) Mô phỏng mạng MPLS MPLS (Multicast-Protocol Label Switching ) Chuyển mạch nhãn đa giao thức NAM (Network Animator) Minh họa mạng NFS (Network FileSystems) Các tập tin hệ thống mạng NS (Network Simulator) Mô phỏng mạng OSPF (Open Shortest Path First ) Đƣờng dẫn ngắn nhất mở đầu tiên RED (Random Early Detection) Hàng đợi dò sớm ngẫu nhiên RT (Realtime Traffic ) Lƣu lƣợng thời gian thực SBT (Simple Best Effort Traffic) Lƣu lƣợng nỗ lực tối đa đơn giản SPF (Shortest Path First ) Đƣờng dẫn ngắn nhất đầu tiên ST (Signaling Traffic) Lƣu lƣợng tín hiệu TCP (Transmission Control Protocol ) Giao thức điều khiển truyền TTL (Time-To-Live) Thời gian tồn tại UDP (User Datagram Protocol) Giao thức gói ngƣời dùng VBR (Variable Bit Rate) Tốc độ bit thay đổi đƣợc -5-
  7. Tên viết tắt Nội dung WAN (Wide Area Network) Mạng diện rộng WLAN (Wireless Local Area Network) Mạng cục bộ không dây CBR (Constant Bit Rate) Tốc độ bit cố định CBQ (Class Based Queueing ) Hàng đợi dựa trên lớp FTP (File Transfer Protocol) Giao thức truyền tập tin Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên HBT (High priority Best effort Traffic) cao nhất HTTP (Hypertext Transfer Protocol) Giao thức truyền tải siêu văn bản -6-
  8. LỜI NÓI ĐẦU Cùng với sự phát triển của khoa học và kỹ thuật, Công nghệ thông tin ở nƣớc ta trong những năm gần đây phát triển rất mạnh. Lĩnh vực Truyền thông và Mạng máy tính cũng đã phát triển một cách nhanh chóng và đa dạng cả về quy mô, hệ điều hành và ứng dụng. Do nhu cầu và trình độ cao, những ngƣời hoạt động chuyên ngành Công nghệ thông tin cần luôn phải nâng cao trình độ để đáp ứng. Tuy nhiên, các mạng máy tính cũng có cùng các điểm chung thông qua đó chúng ta có thể khảo sát, mô phỏng phân loại và đánh giá chúng. Tuy nhiên để nghiên cứu, đánh giá về các hệ thống mạng truyền thông hiện có cũng nhƣ đề xuất về các hệ thống mới thì không phải nhà khoa học nào cũng có điều kiện triển khai bằng thực nghiệm trên các hệ thống thực tế. Do đó, các công cụ mô hình hóa, mô phỏng, phân tích đánh giá về hiệu năng mạng hiện nay đang là các công cụ trợ thủ giúp đắc lực trong các nghiên cứu đóng góp vào sự phát triển của lĩnh vực Truyền thông và Mạng máy tính. Trong số các công cụ mô phỏng hệ thống mạng thì NS (Network Simulator) là một hệ mô phỏng hƣớng sự kiện mã nguồn mở đang đƣợc sử dụng rộng rãi trong học tập và nghiên cứu. Do là một hệ mô phỏng mã nguồn mở nên kể từ khi đƣợc giới thiệu vào năm 1989, NS đã phát triển một cách mạnh mẽ với sự đóng góp cỉa cộng đồng nghiên cứu quốc tế. Hiện nay NS đã đƣợc tích hợp hầu hết các module mô phỏng các thành phần mạng nhƣ các giao thức định tuyến, các giao thức tầng vận chuyển, các giao thức tầng ứng dụng.. và đang là phần mềm đƣợc sử dụng rộng rãi nhất trong số các phần mềm mô phỏng mạng dùng cho nghiên cứu, học tập về lĩnh vực Truyền thông và mạng máy tính. Để đáp ứng với yêu cầu học tập của sinh viên chuyên ngành công nghệ thông tin, Trƣờng Đại học Kinh tế - Kỹ thuật Công nghiệp tổ chức biên soạn bài giảng ―Kỹ thuật mô phỏng‖. Đây là một học phần chuyên sâu của sinh viên chuyên ngành Đại học và Cao đẳng Công nghệ thông tin. Học phần cung cấp cho sinh viên tổng quan về kiến trúc của hệ mô phỏng NS, cách thức cài đặt và sử dụng NS, đồng thời phân tích và thảo luận một cách chi tiết về các đối tƣợng cơ bản nhƣ : Nút mạng, gói tin, module định tuyến, bộ đệm, liên kết,...nhằm giúp cho học viên làm chủ đƣợc hệ mô phỏng này. Bài giảng đƣợc biên soạn theo đúng chƣơng trình đào tạo và các quy định về cách trình bày của Nhà trƣờng. Nội dung của bài giảng bao gồm 11 chƣơng: Chƣơng 1: Giới thiệu với bạn đọc một số lý thuyết cơ bản về mạng máy tính và bài toán mô phỏng mạng. Trọng tâm của chƣơng là phƣơng pháp mô phỏng hƣớng sự kiện đƣợc sử dụng để phát triển NS. Chƣơng 2: Cung cấp các kiến thức tổng quan về NS nhƣ : Kiến trúc hai ngôn ngữ của NS, tổ chức thƣ mục NS, các quy ƣớc đƣợc sử dụng, Cách cài đặt NS trên hệ điều hành Unix và Windows -7-
  9. Chƣơng 3: Trình bày chi tiết về kiến trúc hai ngôn ngữ của NS bao gồm 6 lớp C++ chính : Tcl, Instvar, TclObject, TclCommand và EmbeddedTcl. Chƣơng 4 và 5: Trình bày các thành phần mô phỏng quan trọng trong NS. Chƣơng 4 tập trung vào việc giải thích phƣơng pháp triển khai bài toán mô phỏng sự kiện bằng NS. Chƣơng 5 tập trung vào các đối tƣợng mạng cũng nhƣ cơ chế chuyển tiếp gói tin. Chƣơng 6 đến chƣơng 11, Sinh viên sẽ đƣợc tiếp cận với các module đƣợc sử dụng phổ biến nhất trong NS. Module biểu diễn đối tƣợng nút mạng đƣợc phân tích trong chƣơng 6. Liên kết giữa các nút mạng bằng đối tƣợng simpleLink đƣợc trình bày trong chƣơng 7, Chƣơng 8 sẽ cung cấp cho bạn đọc các kiến thức cơ bản nhất về đối tƣợng mô phỏng gói tin Packet. Các toán tử dùng để tạo gói tin đƣợc biểu diễn bằng đối tƣợng Agent sẽ đƣợc đề cập tới trong chƣơng 9 và chƣơng 10. Chƣơng 11 sẽ trình bàu về đối tƣợng Application dùng để mô phỏng các yêu cầu truyền dữ liệu của ngƣời sử dụng. Mong rằng nội dung bài giảng sẽ giúp cho sinh viên và bạn đọc những kiến thức cần thiết, làm cơ sở để có thể đi sâu vào thiết kế, làm chủ NS. Bài giảng đƣợc dùng để giảng dạy cho sinh viên ngành Công nghệ thông tin, xong cũng có thể giúp sinh viên các ngành điện tử, viễn thông của các trƣờng đại học và bạn đọc cần tham khảo các vấn đề về mô phỏng và đánh giá hiệu năng mạng bằng NS. Vì bài giảng đƣợc biên soạn lần đầu, chúng tôi đã rất cố gắng hoàn chỉnh, song không tránh khỏi thiếu sót. Rất mong nhận đƣợc sự góp ý của bạn đọc để bài giảng đƣợc hoàn thiện hơn. Xin chân thành cám ơn! -8-
  10. CHƢƠNG 1. MÔ PHỎNG MẠNG MÁY TÍNH Mục tiêu Trong một vài thập kỷ qua, nhiều công nghệ và kỹ thuật hỗ trợ truyền thông giữa con ngƣời đã đƣợc phát triển. Từ hệ thống mạng điện thoại cố định đến mạng truyền thanh, mạng truyền hình rồi mạng máy tính. Ban đầu khi mới ra đời, các hệ thống này hoạt động độc lập với nhau và giờ đây con ngƣời mong muốn tích hợp chúng trong cùng một hệ thống. Trên thực tế có thể xem mạng truyền thông máy tính là kết quả của sự hội tụ này. Chƣơng này sẽ cung cấp cho bạn đọc một cách nhìn tổng quan về mạng truyền thông máy tính và những vấn đề cơ bản để mô phỏng chúng. Mục 1.1. Giới thiệu về mạng máy tính với mô hình tham chiếu mô tả kiến trúc của mạng truyền thông máy tính. Mục 1.2. Trình bày vắn tắt về phƣơng pháp thiết kế và mô hình hóa các hệ thống mạng máy tính phức tạp. Trong Mục 1.3. Các vấn đề cơ bản về mô phỏng mạng máy tính đƣợc đề cập đến. Mục 1.4. Trình bày về các kỹ thuật phổ biến khi mô phỏng theo phƣơng pháp mô phỏng theo thời gian. Mục 1.5 đƣa ra một ví dụ điển hình và Mục 1.6 sẽ tổng kết lại các vấn đề của chƣơng. Mạng máy tính và kiến trúc phân tầng. Một mạng máy tính đƣợc định nghĩa là một tập các máy tính có kết nối với nhau để thu thập, xử lý và phân bố thông tin. Thuật ngữ máy tính đƣợc hiểu tƣơng đối rộng bao gồm các thiết bị nhƣ máy trạm, máy chủ, router, modem, các trạm cơ sở, các điểm mở rộng truy cập không dây, ... Các máy tính này đƣợc kết nối bởi các liên kết truyền thông nhƣ cáp quang, cáp đồng, hay các liên kết sóng vi ba, sóng vệ tinh, sóng radio. Một mạng máy tính có thể đƣợc xây dựng bên trong một mạng máy tính khác hoặc kết nối với một mạng máy tính khác. Internet là một ví dụ điển hình về mạng máy tính. Trên thực tế, Internet là mạng của các mạng. 1.1.1. Khái niệm phân tầng Một mạng máy tính là một hệ thống rất phức tạp. Để đơn giản hóa trong việc thiết kế và triển khai một hệ thống nhƣ vậy, ngƣời ta đƣa ra khái niệm phân tầng. Sử dụng kiến trúc phân tầng, các chức năng của một hệ thống mạng máy tính đƣợc tổ chức nhƣ là một ngăn xếp các tầng. Mối quan hệ ngang hàng (hay liên kết ảo) diễn ra giữa 2 tầng đồng mức của 2 nút truyền thông với nhau. Luồng dữ liệu sẽ đi theo chiều dọc trong một tầng từ tầng cao nhất xuống tầng thấp nhất bên nút gửi, tiếp theo sẽ đi qua đƣờng truyền vật lý rồi đến tầng thấp nhất bên nút nhận, sau đó đi ngƣợc lên đến tầng cao nhất bên nút nhận. Mỗi tầng biểu diễn một phần đặc trƣng đƣợc định nghĩa trƣớc của hệ thống và cung cấp một số dịch vụ nào đó cho tầng phía trên. Tầng trên truy cập xuống tầng dƣới thông qua giao tiếp tầng (interface). Các dịch vụ thƣờng định nghĩa những công việc sẽ đƣợc thực hiện theo thuật ngữ các -9-
  11. hoạt động mạng hoặc các nguyên tắc nhƣng đặc biệt lại không chỉ ra cách thực hiện chúng nhƣ thế nào. Vì vậy một giao thức sẽ định nghĩa chi tiết về việc một dịch vụ đƣợc thực hiện nhƣ thế nào. Ví dụ, mạch truyền tại máy tính nguồn có thể sử dụng một giao thức riêng (chẳng hạn nhƣ một kỹ thuật mã hóa dữ liệu) tại tầng vật lý để truyền các bit thông tin tới máy tính nhận. Mạch nhận sẽ sử dụng giao thức riêng này để giải mã thông tin nhận đƣợc trên cơ sở các quy tắc của giao thức. Một trong các ƣu điểm rất lớn của khái niệm phân tầng này là tính độc lập của tầng. Điều này có nghĩa là một thay đổi trong một giao thức của một tầng nào đó không ảnh hƣởng tới toàn bộ hệ thống miễn là các giao tiếp của tầng không thay đổi. Ở đây, ta chú ý vào các thuật ngữ dịch vụ, giao thức và giao tiếp tầng để nhấn mạnh rằng sự tƣơng tác giữa các thành phần này tạo nên khái niệm phân tầng. Môi trƣờng truyền Hình 1.1: Biểu diễn một cách nhìn tổng quan về khái niệm phân tầng đƣợc sử dụng để truyền thông giữa 2 máy tính đầu cuối với nhau. Trong sơ đồ này, các chức năng của mỗi một máy tính đƣợc chia thành 4 tầng. Khi có một liên kết ảo giữa các tầng trên 2 máy tính thi các tầng đó đƣợc gọi là các tầng ngang hàng (peer). Mặc dù không kết nối trực tiếp với nhau nhƣng các tầng ngang hàng giao tiếp với nhau bằng cách sử dụng một giao thức nào đó đƣợc biểu diễn bởi mũi tên 2 chiều trong hình. Nhƣ đã nói ở trên, cần có một tiến trình truyền thông thực sự truyền dữ liệu đi qua ngăn xếp các tầng. Giả sử một tiến trình của ứng dụng chạy ở Tầng 4 của nút nguồn sinh ra dữ liệu hoặc thông điệp muốn truyền tới nút đích. Việc truyền thông bắt đầu bằng việc sinh ra thông diệp D rồi truyền xuống tầng 3. Tại tầng 3, dữ liệu đƣợc phân tách thành 2 gói là D1 và D2 cùng các thông tin điều khiển chứa trong phần header H3 của tầng 3 đƣợc gắn vào đầu của hai gói này. Các thông tin điều khiển có thể là các số thứ tự, kích thƣớc gói, thông tin kiểm soát lỗi. Các thông tin này đƣợc tầng ngang hàng tƣơng ứng bên nút đích đọc và sử dụng để khôi phục lại thông điệp D. Dữ liệu kết quả (VD: H3+D1) do tầng thấp hơn tiếp tục quản lý và tiến trình gắn thêm thông tin điều khiển của các giao thức tầng dƣới lại tiếp tục đƣợc thực hiện. Tiến trình này tiếp tục cho đến khi thông điệp tới đƣợc tầng thấp nhất, tại đó việc truyền thông tin thực sự đƣợc thực hiện qua một môi trƣờng vật lý. Chú ý rằng, theo dòng tiến trình này, có thể cần có thêm các tiến trình phân tách - 10 -
  12. dữ liệu từ các tầng trên thành các gói nhỏ hơn cho các mục đích khác. Khi thông điệp tới đích, tiến trình ngƣợc lại sẽ diễn ra. Khi dữ liệu di chuyển lần lƣợt qua các tầng theo chiều từ dƣới lên trên ở bên nút đích, phần header của chúng sẽ đƣợc gỡ bỏ theo từng tầng tƣơng ứng. Nếu cần thiết, nhiều gói sẽ đƣợc ghép lại với nhau trƣớc khi truyền lên tầng cao hơn. Tiến trình này sẽ tiếp tục cho đến khi thông điệp nguyên thủy (D) đƣợc khôi phục tại tầng 4. 1.1.2. Mô hình tham chiếu OSI và TCP/IP Mô hình OSI (Open Systems Interconnection) là một mô hình tham chiếu đầu tiên do ISO (Tổ chức tiêu chuẩn hóa quốc tế) phát triển để cung cấp một khung chuẩn nhằm mô tả các ngăn xếp giao thức trong một mạng máy tính. Nó bao gồm 7 tầng trong đó mỗi tầng đƣợc thiết kế để thực hiện một nhóm chức năng đã định nghĩa trƣớc. Các tầng trong mô hình OSI bao gồm tầng vật lý, tầng liên kết dữ liệu, tầng mạng, tầng giao vận, tầng phiên, tầng trình diễn và tầng ứng dụng. Mô hình OSI chỉ đƣa ra chức năng của từng tầng trong nó mà không chỉ định một cách chính xác rằng những dịch vụ hoặc giao thức nào sẽ đƣợc sử dụng trong mỗi tầng. Mặc dù mô hình này không đƣợc triển khai trong các hệ thống hiện tại nhƣng tính triết lý của mô hình OSI lại thiết lập một nền móng vững chắc cho các nghiên cứu phát triển trong lĩnh vực mạng máy tính. Mô hình tham chiếu TCP/IP ((Transmission Control Protocol/Internet Protocol) là mô hình dựa trên 2 giao thức cơ sở là TCP và IP đƣợc sử dụng cho Internet hiện nay. Các giao thức này qua thực tế đã chứng minh đƣợc sức mạnh của mình và kết quả là chúng đã đƣợc sử dụng và triển khai rộng rãi trong rất nhiều hệ thống mạng máy tính. Mô hình TCP/IP do ARPANET phát triển từ một nghiên cứu do Bộ quốc phòng Mỹ tài trợ và nó đƣợc xem là mô hình gốc của mọi hệ thống mạng máy tính. Trong mô hình TCP/IP, ngăn xếp giao thức đƣợc chia thành 5 tầng: tầng vật lý, tầng liên kết dữ liệu, tầng mạng, tầng giao vận và tầng ứng dụng. Mỗi tầng chịu trách nhiệm về một số dịch vụ nào đó và sẽ đƣợc mô tả ngắn gọn sau đây. Chú ý rằng, tầng ứng dụng trong mô hình TCP/IP có thể đƣợc xem là sự kết hợp của tầng phiên, tầng giao vận và tầng ứng dụng trong mô hình OSI. Tầng ứng dụng Tầng ứng dụng là tầng cao nhất trong ngăn xếp tầng. Nó sử dụng các dịch vụ của Tầng giao vận để hỗ trợ nhiều giao thức cấp cao chẳng hạn nhƣ HTTP (Giao thức truyền dữ liệu siêu văn bản) dành cho các ứng dụng World Wide Web, SMTP (Giao thức truyền email đơn giản) cho các ứng dụng thƣ điện tử, giao thức Telnet cho các ứng dụng máy trạm ảo kết nối từ xa giao thức DNS (dịch vụ tên miền) cho ứng dụng chuyển đổi tên miền sang địa chỉ mạng và giao thức FTP (Giao thức truyền file) dành cho việc truyền tệp. Tầng giao vận Mục đích của tầng Giao vậnlà vận chuyển các thông điệp từ tầng ứng dụng của nút nguồn tới tầng ứng dụng của nút đích. Đe hoàn thành mục đích này, tại tầng Giao vậncó - 11 -
  13. định nghĩa 2 giao thức chuẩn Ịà TCP và UDP (User Datagram Protocol). Trong khi TCP đƣợc thiết kế với mục đích đảm bảo truyền thông hƣớng kết nối một cách tin cậy giữa 2 nút thì UDP hỗ trợ truyền thông không hƣớng kết nối không tin cậy. TCP thích hợp với các ứng dụng yêu cầu độ chính xác cao hơn là thời gian truyền và ngƣợc lại đối với giao thức UDP. Thông tin điều khiển thƣờng liên quan tới thông tin điều khiển luồng và kiểm soát lỗi cần đƣa vào trong thông điệp. Tiến trình phân đoạn dữ liệu đƣợc diễn ra trƣớc khi gắn thêm phần header vào thông điệp. Sau khi phân đoạn dữ liệu lớn từ tầng ứng dụng, đơn vị dữ liệu tại tầng này đƣợc gọi là segment. Tầng Mạng Tầng này cung cấp dịch vụ định tuyến cho tầng giao vận. Tầng mạng đƣợc thiết kế để vận chuyển các đơn vị dữ liệu thƣờng đƣợc gọi là các packet dọc theo các con đƣờng từ nút nguồn tới nút đích. Để thực hiện chức năng định tuyến, các header chứa thông tin nhƣ địa chỉ mạng nguồn và địa chỉ mạng đích đƣợc gắn vào các đơn vị dữ liệu giao thức tại tầng giao vận để hình thành đơn vị dữ liệu giao thức tại tầng mạng. Tầng Liên kết dữ liệu Đơn vị dữ liệu do tầng mạng tạo ra là packet thƣờng đƣợc định tuyến qua nhiều liên kết truyền thông và các nút trung gian trƣớc khi chúng thực sự tới đƣợc đích. Để định tuyến thành công các packet từ nguồn tới đích, phải có các cơ chế truyền dữ liệu trên mỗi một liên kết vật lý từ nút này sang nút khác. Một giao thức ở tầng liên kết dữ liệu có nhiệm vụ vận chuyển dữ liệu qua một liên kết truyền thông. Giao thức tầng liên kết dữ liệu có 3 chức năng chính. Chức năng thứ nhất là điều khiển luồng dữ liệu liên quan đến tốc độ truyền trong một liên kết truyền thông. Chức năng thứ hai là điều khiển lỗi để đảm bảo tính toàn vẹn dữ liệu khi truyền. Chức năng thứ ba là dồn kênh/tách kênh cho phép ghép nhiều luồng dữ liệu vào một liên kết truyền thông và tách các luồng dữ liệu ra từ một liên kết truyền thông. Việc lựa chọn giao thức tầng liên kết dữ liệu có thể thay đổi trên mỗi một liên kết truyền thông. Ví dụ, các giao thức/công nghệ tầng liên kết dữ liệu đƣợc sử dụng rộng rãi bao gồm Ethernet, PPP , IEEE 802.11, ATM, ... Tầng Vật lý Tầng Vật lý giải quyết bài toán truyền các bit dữ liệu qua một liên kết truyền thông vật lý. Mục đích chính của nó là đảm bảo các tham số truyền (chẳng hạn nhƣ mức hiệu điện thế, kỹ thuật điều chế) đƣợc thiết lập thích hợp để đạt đƣợc hiệu năng truyền phù hợp (chẳng hạn nhƣ đạt đƣợc hiệu năng về tỷ suất lỗi bit thích hợp). Cuối cùng, cả 5 tầng trong mô hình TCP/IP vừa đƣợc mô tả ở trên đều là các tầng phổ biến trong mô hình OSI. Nhƣ đã nói ở trên, mô hình OSI còn 2 tầng phía trên tầng giao vận là tầng phiên và tầng trình diễn. Tầng phiên đơn giản chỉ làm nhiệm vụ cho phép những ngƣời dùng trên nhiều máy tính khác nhau có thể tạo các phiên truyền thông với - 12 -
  14. nhau. Tầng trình diễn có nhiệm vụ cơ bản là giải quyết bài toán biểu diễn các loại dữ liệu khác nhau khi truyền qua mạng. Ví dụ, một hệ thống quản lý mạng thu thập dữ liệu có định dạng khác từ các máy tính khác nhau thì cần phải chuyển đổi định dạng dữ liệu thu thập đƣợc về định dạng dữ liệu đồng nhất của nó. Mô hình hệ thống Mô hình hóa hệ thống có thể hiểu nhƣ là việc biểu diễn một hệ thống thực tế theo một cách đơn giản nào đó. Mô hình hóa hệ thống là một công việc cực kỳ quan trọng trong thiết kế và phát triển hệ thống bởi vì nó dự đoán trƣớc đƣợc hệ thống sẽ thực thi bằng cách nào trƣớc khi đƣợc triển khai trong thực tế. Khi mô hình hóa, các tham số của hệ thống có thể thay đổi, kiểm nghiệm và phân tích. Điều quan trọng là nếu việc mô hình hóa đƣợc xây dựng hợp lý thì có thể giúp tiết kiệm chi phí và giá thành khi phát triển hệ thống. Để mô hình hóa một hệ thống, ngƣời ta phải đƣa ra các giả định làm đơn giản hóa hệ thống. Tuy nhiên khi càng đƣa ra nhiều giả định đơn giản hóa thì hệ thống càng đơn giản nhƣng hệ thống đƣợc mô hình hóa lại càng kém chính xác so với hệ thống thực. Theo truyền thống, có 2 cách tiếp cận mô hình hóa hệ thống: tiếp cận theo phƣơng pháp phân tích và tiếp cận theo phƣơng pháp mô phỏng. 1.1.3. Tiếp cận theo phƣơng pháp phân tích Mô hình hóa hệ thống theo phƣơng pháp phân tích thƣờng bắt đầu bằng việc mô tả một hệ thống toán học với sự trợ giúp của các công cụ toán ứng dụng chẳng hạn nhƣ các lý thuyết hàng đợi và lý thuyết xác suất, sau đó áp dụng các phƣơng pháp số học để rút ra các kết quả phân tích từ mô hình toán học đã phát triển. Khi hệ thống thực tế tƣơng đối nhỏ và đơn giản, mô hình hóa theo phƣơng pháp phân tích có thể là phƣơng pháp phân tích phù hợp hơn so với phƣơng pháp mô phỏng. Trong trƣờng hợp này, có thể dễ dàng vận dụng các công cụ toán học vào việc phân tích và các thuật giải số học vào mô hình này mà không yêu cầu quá nhiều thời gian và tài nguyên tính toán. Nếu đƣợc triển khai thành công, mô hình hóa hệ thống tiếp cận theo phƣơng pháp phân tích sẽ có thể có tính hiệu quả cao về mặt giá thành và có thể đƣa ra một cách nhìn nhận hấp dẫn về mối tƣơng tác giữa các thành phần trong hệ thống. Tuy nhiên nếu sử dụng nhiều giả định ban đầu làm đơn giản hóa hệ thống, mô hình hóa theo phƣơng pháp phân tích có thể biểu diễn không chính xác về hệ thống thực. 1.1.4. Tiếp cận theo phƣơng pháp mô phỏng Phƣơng pháp mô phỏng đƣợc sử dụng rộng rãi vào mô hình hóa hệ thống ứng dụng trong nhiều lĩnh vực nhƣ: Nghiên cứu kỹ thuật, phân tích thƣơng mại, lập kế hoạch sản xuất và thí nghiệm sinh học, ...So với phƣơng pháp phân tích, phƣơng pháp mô phỏng thƣờng yêu cầu ít kỹ thuật trừu tƣợng hóa hơn trong một mô hình (chẳng hạn nhƣ ít các giả định đơn giản hóa hơn), khi đó hầu hết các đặc tính chi tiết của hệ thống thực có thể đƣa vào hệ thống mô hình hóa để mô tả hệ thống thực một cách chính xác nhất. Khi hệ thống thực lớn và phức tạp, phƣơng pháp mô hình hóa hệ thống bằng toán học không còn - 13 -
  15. thích hợp và trong trƣờng hợp này, phƣơng pháp mô hình hóa hệ thống bằng mô phỏng thƣờng đƣợc sử dụng. Phƣơng pháp mô hình hóa hệ thống bằng mô phỏng cũng có thể bỏ đi một vài đặc tính chi tiết của hệ thống thực bởi vì nếu có quá nhiều đặc tính chi tiết đƣợc đƣa vào, nó có thể dẫn đến tình trạng không thể quản lý đƣợc hệ thống mô phỏng và yêu cầu tài nguyên tính toán quá lớn. Đây là điều quan trọng cần đƣợc cân nhắc khi đƣa những đặc tính chi tiết không thích đáng vào hệ thống mô phỏng. Khái niệm cơ bản về mô phỏng mạng máy tính Một quá trình mô phỏng ít hoặc nhiều đều là sự kết hợp của khoa học và nghệ thuật. Trong khi phần khoa học yêu cầu kỹ năng lập trình máy tính và nắm bắt sử dụng các công cụ toán ứng dụng một cách thuần thục thì phần nghệ thuật lại yêu cầu kỹ năng phân tích và phát biểu một cách rõ ràng mô hình khái niệm, về cơ bản, các bƣớc cần phải thực hiện trong một tiến trình mô phỏng đƣợc chia thành 3 tác vụ chính và mỗi một tác vụ có một cấp độ quan trọng khác nhau. Theo Shannon, trong quá trình mô hình hóa hệ thống bằng phƣơng pháp mô phỏng, nếu xét trên phƣơng diện tài nguyên thời gian và năng lực, nên dành 40% để định nghĩa bài toán, thiết kế mô hình thích hợp và đƣa ra tập các thử nghiệm sẽ thực hiện trên mô hình mô phỏng. Tiếp theo, nên dành 20% cho việc lập trình các thành phần kết quả của bƣớc 1. Cuối cùng 40% tài nguyên còn lại nên sử dụng để thực hiện việc kiểm tra/xác thực mô hình mô phỏng, thực hiện các thử nghiệm với các tham số đầu vào đã đƣợc thiết kế trƣớc (có thể tính chỉnh lại các thử nghiệm) và phân tích kết quả. Chú ý rằng công thức này hoàn toàn không cứng nhắc. Bất kỳ một tiến trình mô phỏng bất kỳ nào trong thực tế cũng có thể yêu cầu ít hoặc nhiều tài nguyên hơn phụ thuộc vào ngữ cảnh thực tế và bản thân ngƣời thực hiện việc mô phỏng. Một quá trình mô phỏng có thể đƣợc xem nhƣ là một dòng các tiến trình của các thực thể trong mạng (chẳng hạn nhƣ các nút, các gói tin). Khi những thực thể này di chuyển qua hệ thống, chúng tƣơng tác, kết hợp với các thực thể khác, kích hoạt các sự kiện làm thay đổi trạng thái của hệ thống và kết thúc tiến trình. Theo thời gian, một thực thể có thể cạnh tranh hoặc đợi các tài nguyên với các thực thể khác. Điều này dẫn đến việc phải có một trinh tự thực thi một cách logic sao cho mọi hành động trong hệ thống đều đƣợc xảy ra theo nghĩa có thể hiểu và quản lý đƣợc chúng. Một trình tự thực thi đóng một vai trò quan trọng trong việc giám sát một quá trình mô phỏng và đôi khi chúng đƣợc sử dụng để nhận biết loại mô phỏng. 1.1.5. Định nghĩa chuẩn về mô phỏng Theo Shannon, mô phỏng là ―tiến trình thiết kế một mô hình của hệ thống thực và áp dụng các thí nghiệm với mô hình này nhằm mục đích hiểu đƣợc hành vi của hệ thống và/hoặc đánh giá các chiến lƣợc cho hoạt động của hệ thống‖ Do bản chất của mạng máy tính là động nên trong thực tế ngƣời ta phát triển mô hình động. - 14 -
  16. 1.1.6. Các thành phần của mô phỏng Các thành phần cấu thành của một mô phỏng bao gồm: Thực thể (Entity) Thực thể là các đối tƣợng tƣơng tác với các đối tƣợng khác trong một chƣơng trình mô phỏng để gây ra những thay đổi về tình trạng của hệ thống. Trong ngữ cảnh mạng máy tính, thực thể có thể là các nút mạng, các gói tin các luồng gói tin hoặc các đối tƣợng phi vật lý chẳng hạn nhƣ đồng hồ mô phỏng. Để phân biệt các thực thể khác nhau, ngƣời ta sử dụng các thuộc tính định danh duy nhất thực thể chẳng hạn nhƣ độ dài gói tin, số thứ tự, độ ƣu tiên và phần thông tin điều khiển header. Tài nguyên Tài nguyên là một phần của một hệ thống phức tạp. Thông thƣờng, các thực thể chia sẻ nhau một số lƣợng tài nguyên có hạn. Ví dụ trong mạng máy tính các tài nguyên có thể là băng thông, thời gian truyền, số lƣợng máy chủ. Hoạt động và Sự kiện Theo thời gian, các thực thể sẽ tiến hành các hoạt động của mình. Hoạt động của các thực thể sẽ tạo ra các sự kiện và kích hoạt sự thay đổi trạng thái của hệ thống. Ví dụ điển hình của hoạt động là độ trễ (delay) và xếp hàng (queuing). Khi một máy tính cần gửi một gói tin nhƣng môi trƣờng truyền đang bận, nó sẽ đợi cho đến khi môi trƣờng truyền rỗi, khi đó thực thể gói tin đang tiến hành hoạt động đợi. Bộ lập lịch Một bộ lập lịch bao gồm một danh sách các sự kiện và thời gian thực hiện chúng. Trong quá trinh mô phỏng, các sự kiện trong bộ lập lịch sẽ đƣợc kích hoạt chạy bởi đồng hồ hệ thống mô phỏng. Biến toàn cục Trong mô phỏng, một biến toàn cục (public/global) có thể đƣợc truy cập bởi bất kỳ một hàm hoặc một thực thể nào trong hệ thống và về cơ bản nó thƣờng lƣu trữ các giá trị chung dùng trong mô phỏng. Ví dụ nhƣ đối với mạng máy tính, biến toàn cục có thể biểu diễn độ dài của hàng đợi gói tin trong một mạng có một máy chủ, có thể biểu diễn thời gian trễ hoặc có thể biểu diễn số gói tin đã đƣợc truyền. Bộ sinh số ngẫu nhiên Một mô hình mô phỏng yêu cầu một bộ sinh số ngẫu nhiên (RNG) để tính ra các số ngẫu nhiên trong hệ thống. Các số ngẫu nhiên đƣợc sinh ra bằng cách lấy liên tiếp các số từ một dãy xác định các số ngẫu nhiên giả cho đến khi số đƣợc lấy ra từ dãy đƣợc xem nhƣ là số ngẫu nhiên. Trong hầu hết mọi trƣờng hợp, dãy số ngẫu nhiên giả đƣợc xác định trƣớc và đƣợc sử dụng bởi mọi bộ sinh số ngẫu nhiên. Trong những tình huống yêu cầu nhiều kết quả thống kê, một bộ RNG cần bắt đầu lấy số từ một vị trí khác (hạt giống - seed) trong cùng một dãy số ngẫu nhiên giả. Nói cách - 15 -
  17. khác rất có thể kết quả của mọi lần chạy sẽ là giống nhau. Khi triển khai trong thực tế, một bộ RNG sẽ khởi tạo một hạt giống. Một hạt giống sẽ xác định vị trí bắt đầu trong dãy số ngẫu nhiên giả mà trong đó bộ RNG sẽ bắt đầu lấy số. Các mô phỏng khác nhau sẽ khởi tạo các giá trị hạt giống khác nhau do đó kết quả sinh ra sẽ khác nhau. Ví dụ trong mô phỏng mạng máy tính, tiến trình một gói tin đến, tiến trình đợi và tiến trình phục vụ thƣờng đƣợc mô hình hóa bởi các tiến trình ngẫu nhiên. Một tiến trình ngẫu nhiên đƣợc biểu diễn bởi một dãy các số ngẫu nhiên. Các tiến trình ngẫu nhiên thƣờng đƣợc thực hiện với sự trợ giúp của một bộ RNG. Bộ thu thập thống kê Nhiệm vụ chính của một bộ thu thập thống kê là thu thập dữ liệu sinh ra từ một mô phỏng để suy ra ý nghĩa của dữ liệu thu thập đƣợc. Mô phỏng phụ thuộc thời gian Loại hình mô phỏng chính đƣợc sử dụng hiện nay là mô phỏng theo thời gian trong đó việc xử lý diễn ra theo trình tự thời gian. Loại mô phỏng này duy trì một đồng hồ mô phỏng lƣu trữ thời gian mô phỏng hiện tại. Trong hầu hết mọi trƣờng hợp, bộ mô phỏng sẽ chạy cho đến khi đồng hồ đạt đến một giá trị ngƣỡng xác định trƣớc. Mô phỏng theo thời gian có thể đƣợc chia thành 2 loại là mô phỏng hƣớng thời gian (time-driven simulation) và mô phỏng hƣớng sự kiện (event- drivent simulation). Một bộ mô phỏng hƣớng thời gian sẽ thực thi sự kiện vào các khoảng thời gian cố định. Nói cách khác, nó sẽ hoạt động từ một khoảng thời gian này tới một khoảng thời gian khác và thực thi các sự kiện (nếu có) cho đến khi nó đạt tới một giới hạn nào đó. Đối với một bộ mô phỏng hƣớng sự kiện, các sự kiện có thể diễn ra vào bất kỳ một thời điểm nào. Bộ mô phỏng sẽ di chuyển từ một sự kiện này tới một sự kiện khác và tiếp tục thực thi các sự kiện (nếu có) cho đến khi quá trinh mô phỏng kết thúc. Điều quan trọng cần chú ý đối với loại mô phỏng theo thời gian là việc mô phỏng phải diễn ra theo trình tự thời gian. Chú ý này là rất rõ ràng theo loại mô phỏng hƣớng thời gian. Đối với loại mô phỏng hƣớng sự kiện, có 2 điểm quan trọng khi triển khai mô phỏng theo thời gian: Thứ nhất, mọi sự kiện mới đƣợc lập lịch trong danh sách sự kiện phải đƣợc gán một nhãn thời gian có giá trị lớn hơn hoặc bằng với giá trị nhãn thời gian của sự kiện hiện tại. Nói cách khác không có sự kiện nào trong quá khứ đƣợc lập lịch thực hiện. Thứ hai, sự kiện tiếp theo của bộ mô phỏng đƣợc thực thi phải là sự kiện có giá trị nhãn thời gian nhỏ nhất trong danh sách các sự kiện. Điều này sẽ làm cho bộ mô phỏng phát triển theo hƣớng trình tự thời gian tiến và không bao giờ quay trở lại một sự kiện có trong quá khứ. 1.1.7. Mô phỏng hƣớng thời gian Trong các mô phỏng hƣớng thời gian, nhịp chạy của đồng hồ mô phỏng luôn tiến lên một cách chính xác bởi một đơn vị thời gian A xác định trƣớc. Sau mỗi nhịp chạy của đồng hồ, bộ mô phỏng sẽ tìm kiếm các sự kiện có thể diễn ra vào khoảng thời gian cố định - 16 -
  18. đó. Nếu có, các sự kiện này sẽ đƣợc xem nhƣ chúng đã xảy ra vào thời điểm kết thúc của khoảng thời gian này. Hình 1.2. Bƣớc nhảy thời gian trong mô phỏng hƣởng thời gian Trong hình 1.2, các mũi tên cong biểu diễn tiến triển các sự kiện theo thời gian và a, b, c đánh dấu thời điểm xảy ra các sự kiện. Trong khoảng thời gian thứ nhất, không có sự kiện nào xảy ra, trong khi khoảng thời gian thứ hai chứa sự kiện a. Tuy nhiên sự kiện này chỉ đƣợc quản lý khi thời gian hệ thống có giá trị 2, tức là vào cuối khoảng thời gian thứ hai. Nhƣợc điểm của loại mô phỏng tiến triển theo thời gian đƣợc bộc lộ ra trong khoảng thời gian thứ năm, trong đó sự kiện b và c đều đƣợc coi là xảy ra vào thời điểm 5A. Điều này dẫn đến thủ tục xác định xem sự kiện nào xảy ra trƣớc để quản lý trƣớc. Một trong các giải pháp để giải quyết tình huống này là giảm giá trị khoảng thời gian A xuống sao cho mỗi một khoảng thời gian chỉ xảy ra nhiều nhất là một sự kiện. Tuy nhiên điều này lại tạo ra một gánh nặng tính toán lớn nên hệ thống thực hiện mô phỏng. Do đó, loại mô phỏng hƣớng thời gian đƣợc khuyến cáo không nên sử dụng trong các mô hình hệ thống có các sự kiện xảy ra vào các thời điểm ngẫu nhiên. Ví dụ 1.1. chƣơng trình 1.1 minh họa mã lập trình mô phỏng hƣớng thời gian. dòng 1 và 2 khởi tạo các biến trạng thái hệ thống và đồng hồ mô phỏng. Dòng 3 biểu diễn điều kiện dừng, đó là từ dòng 4 tới dòng 7 sẽ chạy khi đồng hồ mô phỏng (SimClock) nhỏ hơn một ngƣỡng xác định trƣớc (StopTime). Các dòng từ 4 đến 7 minh họa việc thu thập dữ liệu thống kê, thực hiện các sự kiện và tăng giá trị đồng hồ mô phỏng tới thời gian sự kiện hiện tại. 1.1.8. Mô phỏng hƣớng sự kiện Mô phỏng hƣớng sự kiện đƣợc khởi tạo và chạy bằng tập các sự kiện. Thông thƣờng, phải thƣờng xuyên duy trì và cập nhật danh sách chứa mọi sự kiện đã đƣợc lập - 17 -
  19. lịch qua tiến trình mô phỏng. Nói theo ngôn ngữ kỹ thuật, vòng lặp chính trong chƣơng trình mô phỏng thực sự phải chạy qua danh sách này và phải quản lý một sự kiện sau một sự kiện khác cho đến khi danh sách các sự kiện trống hoặc điều kiện dừng đƣợc thỏa mãn. Cơ chế quản lý sự kiện đƣợc minh họa trong hình 1.3. Trong đó, sự kiện a, b và c đƣợc thực thi theo thứ tự. Khoảng thời gian giữa 2 sự kiện là không cố định. Bộ mô phỏng tiến triển từ một sự kiện này tới một sự kiện khác thay vì từ một khoảng thời gian này tới một khoảng thời gian khác nhƣ trong mô phỏng hƣớng thời gian. Ngoại trừ cơ chế tiến triển của bộ mô phỏng, cơ chế mô phỏng hƣớng sự kiện tƣơng đối giống với cơ chế mô phỏng hƣớng thời gian. Tới sự kiện Hình 1.3. Bƣớc nhảy thời gian trong mô phỏng hƣớng sự kiện Trong một mô phỏng hƣớng sự kiện, mọi sự kiện trong toàn bộ mô phỏng có thể không đƣợc tạo ra tại thời điểm ban đầu. Khi bộ mô phỏng tiến triển, một sự kiện cỏ thể sinh ra một hoặc nhiều sự kiện khác. Một sự kiện mới thƣờng đƣợc chèn vào danh sách các sự kiện sắp xếp theo trình tự thời gian. Mô phỏng tiến triển theo sự kiện sẽ bỏ qua các khoảng thời gian không hoạt động bằng cách tăng giá trị đồng hồ mô phỏng từ thời gian của sự kiện này tới thời gian của sự kiện khác. Tiến trình này sẽ lặp lại cho đến khi mọi sự kiện trong danh sách đều đã đƣợc thực hiện hoặc khi hệ thống đạt đƣợc một trạng thái nào đó (chẳng hạn nhƣ thời gian mô phỏng đạt tới một giá tri xác định trƣớc). Theo cách này, ngƣời ta cần một cơ chế để thu thập một vài thông tin thống kê hoặc thông tin trạng thái của hệ thống nhằm phục vụ cho việc phân tích. Tiến trình thu thập thông tin có thể thực hiện bằng cách thu thập ngay sau khi mọi sự kiện đƣợc thực hiện hoặc sử dụng một thực thể đặc biệt để thu thập các thông tin trong quá trình mô phỏng diễn ra. Ví dụ 1.2. Chƣơng trình 1.2 minh họa khung công việc thông thƣờng của một chƣơng trình mô phỏng tiến triển theo sự kiện. Dòng 1 và 2 khởi tạo các biến trạng thái của hệ thống và danh sách các sự kiện. Dòng 3 xác định điều kiện dừng. Từ dòng 4 tới dòng 6 sẽ đƣợc thực hiện khi dòng 3 có giá trị TRUE. Ở đây, sự kiện đƣợc thực hiện trƣớc đó sẽ bị xóa khỏi danh sách các sự kiện, đồng hồ mô phỏng đƣợc thiết lập giá trị của thời gian đƣợc lập lịch trƣớc của sự kiện hiện tại và sự kiện hiện tại đƣợc thực hiện. Trong một vòng lặp, các biến trạng thái hệ thống có thể đƣợc điều chỉnh để lƣu trữ những sự thay đổi xảy ra trong hệ thống tùy theo sự kiện đã đƣợc thực hiện. - 18 -
  20. Ví dụ về mô phỏng mạng máy tính Phần này minh họa mô phỏng của một hệ thống hàng đợi đơn kênh. Xét một liên kết truyền thông điểm - điểm qua đƣờng truyền vật lý có dây đƣợc biểu diễn trong hình 1.4. Để đơn giản, ta chỉ xét 1 chiều truyền thông từ nút A tới nút B. Đặc biệt, ta quan tâm đến một hệ thống hàng đợi gửi gói tin nội bộ tại nút A, tại đó mỗi thời điểm từng gói tin đƣợc lấy ra từ hàng đợi và truyền đi (hoặc phục vụ). Thời gian truyền phụ thuộc vào băng thông hoặc khả năng đáp ứng của liên kết. Hình 1.4. Minh họa về hệ thống hàng đợi đơn kênh Giả sử, các gói tin do các ứng dụng khác nhau bên trong nút A sinh ra một cách ngẫu nhiên và không giới hạn đi tới hàng đợi theo một số phân bố xác suất. Khi đó, mỗi gói tin có thể có độ dài bất kỳ và các điều kiện của kênh truyền có thể biến đổi làm cho thời gian truyền mỗi gói tin có thể thay đổi một cách ngẫu nhiên và tuân theo một số phân bố xác suất. Trong trƣờng hợp này, thời gian truyền mỗi gói tin đƣợc định nghĩa là khoảng thời gian trôi qua từ thời điểm bắt đầu truyền gói tin đi tới thời điểm nút B nhận thành công gói tin. Nguyên lý hàng đợi triển khai tại nút A là FIFO, nghĩa là các gói tin đƣợc đƣa vào hàng đợi và đƣợc truyền đi theo thứ tự đến. Để đơn giản, cơ chế hàng đợi tại nút B đƣợc bỏ qua. Thêm vào đó, để đảm bảo tính ổn định của hệ thống, ta giả định rằng tốc độ gói tin - 19 -
nguon tai.lieu . vn