Giáo trình Cơ sở mạng thông tin
1.1. Mục đích của việc mô hình hóa và đánh giá đặc tính hoạt động của hệ thống
Trong thực tế, khi khảo sát các hệ phục vụ nói chung, các hệ thống
máy tính và viễn thông nói riêng, hoặc khi nghiên cứu đưa ra các cơ
chế hoạt động mới trong các hệ thống này, một yêu cầu hàng đầu là
phải khảo sát các đặc tính và hiệu năng hoạt động của các hệ thống,
cơ chế đó.
Thí dụ 1-1:
Một nhà cung cấp dịch vụ điện thoại di động GSM muốn mở rộng
vùng phủ sóng của mình. Với các tham số đầu vào cho trước bao
gồm:
• Lưu lượng đầu vào λ, được tính bằng số yêu cầu kết nối trong
một đơn vị thời gian. Tham số này được khảo sát và đo đạc
thực tế tại vùng cần mở rộng.
• Thời gian trung bình của một cuộc gọi di động µ. Tham số này
đã biết trước dựa trên các dữ liệu thống kê của nhà cung cấp
dịch vụ.
• Tải tối đa u của một trạm gốc (base station), chính là số cuộc
gọi tối đa mà trạm gốc có thể cho phép tại một thời điểm.
• Yêu cầu xác suất từ chối dịch vụ tối đa p. Đây là xác suất một
yêu cầu kết nối bị từ chối do trạm gốc không đủ tài nguyên cung
cấp cho cuộc gọi đó.
Từ các yêu cầu đầu vào, nhà cung cấp cần phải tính toán có bao nhiêu
trạm gốc cần phải lắp đặt mới tại vùng đó, để xác suất từ chối dịch vụ
nhỏ hơn p.
Thí dụ 1-2:
Mạng Ethernet có N máy tính, tổng lưu lượng đầu vào đo được là
λ (Mbit/s). Kênh truyền có dung lượng là C (Mbit/s). Phải tính toán hiệu
suất hoạt động của kênh truyền (tính bằng % của lưu dung lượng C),
trễ trung bình (tính bằng s) của một gói tin khi được truyền từ nguồn tới
đích.
Tuy nhiên, quá trình phân tích một hệ thống thực thông thường tương
đối khó khăn và tốn kém. Để khẳng định tính chất của một hệ thống về
hiệu năng hoạt động, tính kinh tế .v.v., thông thường người ta thường
sử dụng các mô hình để miêu tả các hệ thống đó.2
Định nghĩa 1-1: Mô hình (model) thông thường là sự đơn giản
hóa một hệ thống thực bằng cách miêu tả các hoạt động và trạng
thái của hệ thống đó cùng với các điều kiện khởi đầu và điều kiện
bờ cho trước.
Mục đích của việc mô hình hóa là nó cho phép đánh giá đặc tính, từ
đó cải thiện chất lượng hoạt động của một hệ thống. Để các thí
nghiệm với mô hình cho ra kết quả chính xác và đáng tin cậy, các dữ
liệu đầu vào của mô hình phải phù hợp với hệ thống thực tế.
Các bước trong quá trình mô hình hóa và đánh giá đặc tính hoạt động
của một hệ thống bao gồm:
• Mô hình hóa (modeling): được hiểu là quá trình trừu tượng
hóa và đơn giản hóa một hệ thống thực bằng cách bỏ qua các
yếu tố không quan trọng và chỉ tập trung vào một tập hợp hữu
hạn các thông số đáng chú ý được sử dụng để miêu tả hệ
thống. Một điều khó khăn ở bước này là xác định các yếu tố có
thể bỏ qua và các thông số bắt buộc phải được xem xét. Vì vậy
độ chính xác của một mô hình phụ thuộc rất nhiều vào bước
này.
Thông thường có hai phương pháp mô hình hóa là mô hình toán
học và mô hình mô phỏng (xem 1.2.3).
• Phân tích (analysis): Được hiểu là quá trình tìm hiểu, khám
phá các đặc điểm hoặc chức năng của hệ thống. Trong bước
này, đặc điểm hoặc phản ứng của một hệ thống sẽ được
nghiên cứu tương ứng với các thông số đầu vào cho trước.
• Đánh giá và so sánh (evaluation and comparison): Đặc tính
của một hệ thống với các thông số đầu vào khác nhau sẽ được
kiểm tra và so sánh, thông qua đó có thể đánh giá tính chính
xác của mô hình (validation).
• Đưa kết quả đánh giá về hệ thống thực: Các kết quả
được đưa ra từ các bước trên được đưa trở về phục vụ cho hệ
thống thực (thí dụ như để cải thiện chất lượng hoạt động .v.v.).
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Cơ sở mạng thông tin
n 2) [5] được phát triền bởi trường Đại học Berkeley (Mỹ) là một công cụ cho phép mô phỏng và đánh giá đặc tính của mạng máy tính và viễn thông thay thế cho việc tiến hành thực nghiệm trên thiết bị thực tế. Do có một số ưu điểm như mã nguồn mở, có các module ứng dụng phong phú, NS2 hiện là một trong những công cụ mô phỏng được phổ biến rộng rãi nhất hiện nay trên thế giới, đặc biệt là trong các viện nghiên cứu và trường đại học. Trong chương này, trước tiên chúng tôi sẽ trình bày khái niệm chung về phương pháp mô phỏng dựa trên các sự kiện rời rạc (discrete event simulation). Tiếp theo, nhằm cung cấp cho người đọc một cái nhìn tổng quan về các công cụ mô phỏng cho mạng, chúng tôi sẽ giới thiệu một số công cụ mô phỏng mạng thông dụng hiện nay và phân tích các ưu nhược điểm của chúng. Cấu trúc của NS2, các module có sẵn cũng như ứng dụng của chúng sẽ được trình bày trong phần tiếp theo. Sau cùng là một số kết luận chung về phạm vi ứng dụng cũng như ưu nhược điểm của NS2. 7.2. Mô phỏng dựa trên các sự kiện rời rạc và các công cụ 7.2.1. Phương pháp mô phỏng dựa trên sự kiện rời rạc Trước khi đi vào trình bày khái niệm mô phỏng dựa trên sự kiện rời rạc, chúng tôi định nghĩa một số khái niệm sau: Định nghĩa 6.1 - Mô hình mô phỏng (Simulation Model): là sự biểu diễn một hệ thống cần mô phỏng bằng cách mô tả các mối quan hệ toán học, logic hoặc cấu trúc của nó về mặt trạng thái, các thực thể làm nên hệ thống, sự kiện làm thay đổi trạng thái hệ thống, các tiến trình hoặc các hoạt động của hệ thống đó. Định nghĩa 6.2 - Trạng thái hệ thống (System State): là tập hợp các biến cần thiết chứa đựng đầy đủ thông tin để mô tả một hệ thống tại một thời điểm bất kỳ. Định nghĩa 6.3 - Thực thể (Entity): Một mô hình của hệ thống cần mô phỏng được chia nhỏ thành các thực thể với các chức năng khác nhau (thí dụ hàng đợi, server, gói dữ liệu .v.v.) 146 Định nghĩa 6.4 - Thuộc tính (Attributes): Mỗi thực thể trong một hệ thống sẽ có các thuộc tính khác nhau đặc trưng cho thực thể đó, thí dụ như luật phục vụ các gói trong một hàng đợi .v.v.. Định nghĩa 6.5 - Sự kiện (Event): Sự xuất hiện của một sự kiện sẽ làm thay đổi trạng thái của một hệ thống (thí dụ sự kiện xuất hiện của gói mới sẽ làm tăng số gói đang chờ trong một hàng đợi). Định nghĩa 6.6 - Bản ghi sự kiện (Event Notice): Là một bản ghi có gắn thời gian sẽ xảy ra một sự kiện trong tương lai, cùng với nó là những dữ liệu cần thiết để thực hiện sự kiện đó, thí dụ như kiểu sự kiện và thời gian xảy ra sự kiện. Định nghĩa 6.7 - Danh sách sự kiện (Event List): Là một danh sách chứa nhiều bản ghi sự kiện được sắp xếp theo trình tự thời gian xảy ra các sự kiện đó. Định nghĩa 6.8 - Hoạt động (Activity): là một quãng thời gian với độ dài được xác định (khoảng thời gian truyền một gói tin, thời gian đến giữa hai gói tin liên tiếp) và thời điểm bắt đầu của hoạt động đó cũng đã được xác định. Định nghĩa 6.9 - Trễ (Delay): là một quãng thời gian với độ dài không xác định (như khoảng thời gian đợi của một gói tin trong một hàng đợi khi đằng trước nó còn n gói đang đợi). Định nghĩa 6.10 - Đồng hồ (Clock): Là một biến số thể hiện thời gian mô phỏng của một hệ thống. Từ những khái niệm cơ bản trên, phương pháp mô phỏng dựa trên sự kiện rời rạc được xây dựng bẳng cách mô hình hoá một hệ thống mà trạng thái của nó thay đổi tại các thời điểm rời rạc, tức là thời điểm xảy ra một sự kiện nào đó. Như vậy quá trình chạy một mô phỏng thực chất là quá trình khảo sát một hệ thống khi trạng thái của nó thay đổi từ thời điểm này sang thời điểm khác, tương ứng với thời điểm xảy ra các sự kiện theo trình tự thời gian tăng dần. Thí dụ 6.1: Để dễ hiểu có thể lấy một thí dụ về một hệ thống bao gồm một hàng đợi Q và hai thực thể phục vụ (server) A và B cùng phục vụ các gói đang đợi ở Q. Đầu tiên các gói sẽ đi vào hàng đợi Q và đợi cho đến lượt mình được phục vụ. Thực thể A và B có thời gian phục vụ gói trung bình là tsa và tsb (đây chính là hai thuộc tính tương ứng với A và B). Khi có một gói đến, nếu A đang rỗi thì A sẽ phục vụ gói đó, nếu A bận B rỗi thì B phục vụ, nếu không gói sẽ đợi tại hàng đợi Q (Hình 6.1). 147 Hình 6.1. Hệ thống gồm 1 hàng đợi và 2 thực thể phục vụ Có thể mô hình hoá hệ thống này bằng 3 trạng thái thể hiện bằng 3 tham số: • LQ: độ dài hàng đợi (số gói hiện tại có trong Q) • SA: 0 – A bận; 1 – A rỗi • SB: 0 – B bận; 1 – B rỗi Ngoài ra cũng có thể định nghĩa 3 kiểu sự kiện làm thay đổi trạng thái của hệ thống như sau: 1) Sự kiện E1: một gói Pi nào đó đi vào hàng đợi; 2) Sự kiện E2: gói Pi bắt đầu được phục vụ bởi A hoặc B; 3) Sự kiện E3: gói Pi được phục vụ xong. Giả sử tại thời điểm t1 gói Pn được A phục vụ xong, Pn+1 bắt đầu được phục vụ, tại thời điểm t2 gói Pi đi vào hàng đợi Q. Hình 6.2. Mô phỏng hệ thống với trình tự thời gian tăng dần 148 Hình 6.2 thể hiện quá trình mô phỏng một hệ thống theo trình tự thời gian của đồng hồ và quá trình thay đổi, bổ sung các bản ghi sự kiện trong bản danh sách sự kiện. Việc xử lý danh sách sự kiện là một trong những nhiệm vụ chính của bất kỳ một chương trình mô phỏng nào. Do các bản ghi sự kiện là một chuỗi được sắp xếp theo trình tự thời gian, một danh sách sự kiện bao giờ cũng có hai con trỏ: một con trỏ trỏ vào đầu bản danh sách và con trỏ thứ hai trỏ vào bản ghi cuối cùng trong danh sách. Mỗi bản ghi cũng phải có các con trỏ trỏ đến bản ghi tiếp theo nằm trong bản danh sách. Các thao tác liên quan đến danh sách sự kiện bao gồm: 1) Xoá bản ghi đầu danh sách; 2) Xoá bản ghi ở vị trí bất kỳ trong danh sách; 3) Thêm một bản ghi vào đầu hoặc cuối danh sách; 4) Thêm một bản ghi vào vị trí bất kỳ trong danh sách phụ thuộc vào thời gian xảy ra sự kiện. Các phương pháp mô hình hoá một hệ thống thông tin cũng như các chi tiết về kỹ thuật mô phỏng có thể tìm thấy trong [1][2][3]. 7.2.2. Các công cụ mô phỏng thông dụng dựa trên sự kiện rời rạc Trước khi đi vào trình bày cấu trúc của công cụ NS2, phần này sẽ điểm lại một số công cụ mô phỏng thông dụng hiện nay và nhận xét ưu nhược điểm của chúng. OPNET [8] là một sản phẩm thương mại tương đối nổi tiếng của công ty OPNET, bao gồm hai phần chính là OPNET Modeler và phần mở rộng cho mạng không dây OPNET Wireless Module. OPNET chạy dưới môi trường Windows cũng như Unix/Linux. OPNET rất thích hợp cho các tổ chức công nghiệp trong việc quy hoạch và đánh giá chất lượng dịch vụ của mạng thực tế bởi nó có sẵn một thư viện rất phong phú với các module mô phỏng thiết bị của nhiều nhà sản xuất khác nhau như Cisco, Lucent, Juniper. Tuy nhiên đối với các cơ sở nghiên cứu và trường đại học, có lẽ OPNET không phù hợp do giá tương đối đắt, mặt khác khi mô hình hoá một hệ thống, OPNET yêu cầu phải sử dụng thư viện với các thiết bị cụ thể nên việc xây dựng các mô hình tổng quát sẽ gặp khó khăn. Ptolemy II [9] là một bộ công cụ mô phỏng trên nền Java được phát triển bởi trường Berkeley (Mỹ). Ptolemy II có thể được tải xuống miễn phí, tuy nhiên Ptolemy II chỉ cung cấp môi trường mô phỏng dựa trên sự kiện rời rạc nói chung, các module hỗ trợ cho mô phỏng hệ thống mạng không có nhiều nên người lập trình phải tự phát triển các ứng dụng của riêng mình. OMNET++ [10] là chương trình mô phỏng cho hệ thống mạng được phát triển bởi Andras Varga, trường Đại học Bách khoa Budapest. OMNET++ được viết bằng ngôn ngữ C++ và hỗ trợ cả Windows lẫn Unix/Linux. OMNET++ có thể tải xuống miễn phí. Ngoài ra OMNET++ sử dụng giao diện đồ hoạ thân thiện với người sử dụng (như trong môi trường phát triển của OPNET), do đó khối lượng công việc và độ phức 149 tạp khi phát triển một module mới được giảm nhẹ khá nhiều. Tuy nhiên OMNET++ vẫn còn khá mới trong cộng đồng nghiên cứu nên các module có sẵn vẫn chưa nhiều. NS2 [5] là công cụ mô phỏng mạng được sử dụng khá rộng rãi hiện nay trong các trường đại học và viện nghiên cứu. NS2 được phát triển trong khuôn khổ của dự án VINT, kết hợp giữa trường Berkeley, Viện Khoa học thông tin ISI, Xerox PARC và phòng thí nghiệm quốc gia Lawrence Berkeley. NS2 là công cụ mô phỏng hướng đối tượng, được phát triển dựa trên hai ngôn ngữ là C++ và OTcl (Object-oriented Tcl), chủ yếu chạy trong môi trường Unix/Linux. Ưu điểm của NS2 là mã nguồn mở, có cộng đồng sử dụng và phát triển khá đông đảo nên các module hỗ trợ cho mô phỏng mạng (như các giao thức, các cơ chế đảm bảo chất lượng dịch vụ, các công nghệ mạng lớp 2, 3) rất phong phú. Tuy nhiên nó cũng có một số nhược điểm: • Do không có giao diên đồ hoạ với người sử dụng nên việc tạo các kịch bản mô phỏng cũng như phát triển các module mới phức tạp hơn các công cụ khác như OPNET hoặc OMNET++; • Khả năng hỗ trợ các hệ điều hành khác như Windows kém; • Do được phát triển bởi nhiều cá nhân và tổ chức khác nhau nên cấu trúc NS2 tương đối phức tạp, sau một thời gian làm quen và dùng thử nhất định người sử dụng mới có khả năng làm chủ chương trình, đặc biệt khi phải tạo ra các module chức năng mới. Sau đây chúng tôi sẽ tập trung giới thiệu công cụ NS2. Việc so sánh và liệt kê công cụ mô phỏng và đánh giá hoạt động của mạng có thể tìm thấy trong [2][11][12]. 7.3. Công cụ mô phỏng mạng NS2 7.3.1. Cấu trúc Hình 3. Cấu trúc của công cụ mô phỏng NS Mô phỏng NS được xây dựng trên cơ sở hai ngôn ngữ: • C++: NS có một thư viện phong phú về đối tượng mạng và giao thức được mô tả bằng C++ (thí dụ như các nút mạng, đường nối, nguồn, hàng đợi .v.v.). 150 • OTcl: Ngoài ra chương trình thông dịch OTcl (OTcl là ngôn ngữ mở rộng các chức năng hướng đối tượng của Tcl) cho phép người sử dụng xây dựng các kịch bản mô phỏng cụ thể và truyền tham số cho các thực thể C++. Mỗi đối tượng (tương ứng với từng thực thể) trong C++ sẽ có một đối tượng tương ứng ở lớp OTcl như thể hiện ở Hình 3. Như vậy C++ là phần cho dữ liệu và là lõi của NS còn OTcl là phần đặt cấu hình cho chương trình mô phỏng. NS phải sử dụng 2 ngôn ngữ là do có hai nhiệm vụ khác nhau khi tiến hành mô phỏng. Một mặt, mô tả chi tiết các giao thức, các khối hoặc cơ chế của mạng yêu cầu phải sử dụng các ngôn ngữ bậc cao để xử lý số liệu, thực hiện các thuật toán. Đối với nhiệm vụ này do yêu cầu về tính hiệu quả của chương trình mô phỏng (như khoảng thời gian chạy chương trình, quản lý bộ nhớ .v.v.), các thực thể bắt buộc phải được viết dưới C++. Mặt khác, các quá trình xây dựng một kịch bản mô phỏng như đặt cấu hình cho các phần tử mạng, truyền các tham số cụ thể, thiết lập topo cho mạng thì chỉ sử dụng các phần tử đã có sẵn nên yêu cầu ở khâu này là thời gian thiết lập một cấu hình phải thấp (vì các kịch bản mô phỏng có thể lặp đi lặp lại). Vì vậy, một chương trình thông dịch như OTcl là thích hợp. Trong một kịch bản mô phỏng dưới dạng OTcl do người dung đưa ra, chúng ta có thể thiết lập một topo mạng, những giao thức và ứng dụng cụ thể mà chúng ta muốn mô phỏng và mẫu của đầu ra mà chúng ta mong nhận được từ mô phỏng, OTcl có thể sử dụng những đối tượng được biên dịch trong C++ qua một liên kết OTcl (sử dụng tclCL là thư viện gắn kết để dễ dàng chia sẻ chức năng và biến) để tạo ra một ánh xạ 1-1 của đối tượng OTcl cho mỗi đối tượng C++ cũng như định nghĩa sự liên hệ giữa các đối tượng đó. Như đã trình bày ở trên, một trong những phần cơ bản của NS cũng là bản danh sách sự kiện mà ở đây người ta gọi là bộ phân hoạch sự kiện (event scheduler). NS sử dụng 4 phương pháp phân hoạch sự kiện khác nhau, được trình bày cụ thể trong [4]. Một sự kiện là một đối tượng trong C++ bao gồm một số hiệu nhận dạng (ID) duy nhất, thời gian được phân hoạch và con trỏ trỏ đến một đối tượng thực thi sự kiện đó. Cấu trúc của một sự kiện và bộ phân hoạch sự kiện được định nghĩa như sau: class Event { public: Event* next_; /* event list */ Handler* handler_; /* handler to call when event ready */ double time_; /* time at which event is ready */ int uid_; /* unique ID */ Event() : time_(0), uid_(0) {} 151 }; /* * The base class for all event handlers. When an event’s scheduled * time arrives, it is passed to handle which must consume it. * i.e., if it needs to be freed it, it must be freed by the handler. */ class Handler { public: virtual void handle(Event* event); }; Các gói tin trong NS được định nghĩa từ lớp Event như sau: class Packet : public Event { private: friend class PacketQueue; u_char* bits_; ... protected: static Packet* free_; public: Packet* next_; /* for queues and the free list */ static int hdrlen_; Packet() : bits_(0), datalen_(0), next_(0) {} u_char* const bits() { return (bits_); } static void free(Packet*); ... }; 7.3.2. Các tiện ích trong NS hỗ trợ cho mô phỏng mạng [Pending] Các module phục vụ cho mô phỏng mạng máy tính và viễn thông: Mobile networks, mobile IP, DiffServ, IntServ, MPLS, UDP/TCP/IP, SCTP, routing protocols (mobile ad-hoc, unicast, multicast), RED, RIO, WFQ, CSMA/CD, ON/OFF source, Pareto .v.v. Các chương trình trợ giúp trong việc khai thác số liệu mô phỏng: Nam, XGraph .v.v. 7.3.3. Thí dụ (Pending) 7.4. Kết luận (Pending) 152 7.5. Bài tập (Pending) 153 Tài liệu tham khảo [1] John S. Carson II, Barry L. Nelson, Discrete-Event System Simulation, Jerry Banks, Prentice Hall 1996 [2] Richard Blum, Network Performance Open Source Toolkit Using Netperf, tcptrace, NIST Net, and SSFNet, Wiley Publishing 2003 [3] Raj Jain, The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation and Modeling, John Wiley and Sons 1991 [4] Kannan Varadhan, Kevin Fall, NS Manual, documentation.html [5] [6] Marc Greis, NS Tutorial, [7] Eintan Altman, Tania Jiménez, NS for Beginners, sop.inria.fr/maestro/personnel/Eitan.Altman/COURS-NS/n3.pdf [8] [9] [10] [11] [12] [13] Kishor Shridharbhai Trivedi, Probability and Statistics with Reliability, Queuing, and Computer Science Applications, Wiley-Interscience, 2001 [14] Donald Gross, Carl M. Harris, Fundamentals of Queueing Theory, Wiley- Interscience,1998 [15] Dimitri Bertsekas, Robert Gallager, Data Networks, Prentice-Hall International Editions, 1987 [16] Andrew S. Tanenbaum, Computer Networks, Prentice-Hall, 2003 [17] Joseph L. Hammond, Peter J.P.O' Reilly, Performance Analysis of Local Computer Networks, Addison-Wesley, 1988 [18] Jeremiah F. Hayes, Thimma V. J. Ganesh Babu, Modeling and Analysis of Telecommunications Networks, Wiley-Interscience, 2004 [19] Gunter Bolch, Stefan Greiner, Hermann de Meer, Kishor S. Trivedi, Queuing Networks and Markov Chains, Modeling and Performance Evaluation with Computer Science Evaluation, John Wiley and Sons, 1998 [20] Rudolf Avenhaus, Quantitative Modelle für Rechen- und Kommunikationssysteme, Universität der Bundeswehr München, 2000 154 155 Phụ lục 1
File đính kèm:
- giao_trinh_co_so_mang_thong_tin.pdf