Tài liệu học tập Kỹ thuật mô phỏng

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ộ  
M C L C  
- 1 -  
- 2 -  
- 3 -  
- 4 -  
DANH M C VIẾT TẮT  
Tên viết tắt  
CBR (Constant Bit Rate)  
Nội dung  
Tốc độ bit cố định  
CBQ (Class Based Queueing )  
FTP (File Transfer Protocol)  
Hàng đợi dựa trên lớp  
Giao thức truyền tập tin  
Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên  
cao nhất  
HBT (High priority Best effort Traffic)  
HTTP (Hypertext Transfer Protocol)  
ID (Identifier)  
Giao thức truyền tải siêu văn bản  
Mã nhận dạng  
IEEE (Institute of Electrical and Electronic  
Engineers )  
Viện kỹ thuật điện điện tử  
Giao thức internet  
IP (Internet Protocol)  
LAN (Local Area Network)  
MAC (Media Access Control)  
MMS (MPLS Network Simulation)  
Mạng cục bộ  
Điều khiển truy cập đƣờng truyền  
Mô phỏng mạng MPLS  
MPLS (Multicast-Protocol Label Switching ) Chuyển mạch nhãn đa giao thức  
NAM (Network Animator)  
NFS (Network FileSystems)  
NS (Network Simulator)  
Minh họa mạng  
Các tập tin hệ thống mạng  
Mô phỏng mạng  
OSPF (Open Shortest Path First )  
RED (Random Early Detection)  
RT (Realtime Traffic )  
Đƣờng dẫn ngắn nhất mở đầu tiên  
Hàng đợi dò sớm ngẫu nhiên  
Lƣu lƣợng thời gian thực  
Lƣu lƣợng nỗ lực tối đa đơn giản  
Đƣờng dẫn ngắn nhất đầu tiên  
Lƣu lƣợng tín hiệu  
SBT (Simple Best Effort Traffic)  
SPF (Shortest Path First )  
ST (Signaling Traffic)  
TCP (Transmission Control Protocol )  
TTL (Time-To-Live)  
Giao thức điều khiển truyền  
Thời gian tồn tại  
UDP (User Datagram Protocol)  
VBR (Variable Bit Rate)  
Giao thức gói ngƣời dùng  
Tốc độ bit thay đổi đƣợc  
- 5 -  
 
Tên viết tắt  
WAN (Wide Area Network)  
Nội dung  
Mạng diện rộng  
WLAN (Wireless Local Area Network)  
CBR (Constant Bit Rate)  
Mạng cục bộ không dây  
Tốc độ bit cố định  
CBQ (Class Based Queueing )  
FTP (File Transfer Protocol)  
Hàng đợi dựa trên lớp  
Giao thức truyền tập tin  
Lƣu lƣợng nỗ lực tối đa có độ ƣu tiên  
cao nhất  
HBT (High priority Best effort Traffic)  
HTTP (Hypertext Transfer Protocol)  
Giao thức truyền tải siêu văn bản  
- 6 -  
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 -  
 
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 -  
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 -  
     
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 -  
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 -  
 
đị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 -  
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 -  
     
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 -  
   
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 -  
 
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 -  
   
đó. 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 -  
 
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 -  
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 -  
 
Tải về để xem bản đầy đủ
pdf 233 trang yennguyen 22820 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu học tập Kỹ thuật mô phỏng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_hoc_tap_ky_thuat_mo_phong.pdf