Chơng IV
Xây dựng chơng trình mô phỏng một số
hoạt động báo hiệu trên cơ sở giao thức sip
4.1 Các phơng pháp mô phỏng ứng dụng trong nghiên cứu mạng viễn
thông
Hiện nay có khá nhiều phơng pháp mô phỏng. Trong đồ án này giới thiệu một số
phơng pháp phổ biến đợc sử dụng khá hiệu quả trong mạng viễn thông.
Mô phỏng theo sự kiện rời rạc
Việc mô phỏng sự kiện rời rạc liên quan đễn việc mô hình hóa hệ thống bằng cách
trình diễn vì nó phát triển theo thời gian, trong đó các biến trạng thái thay đổi đột ngột
tại những điểm rời rạc theo thời gian ( về mặt toán học, chúng ta có thể nói rằng hệ
thống chỉ có thể thay đổi tại một số hữu hạn các điểm ). Những điểm này là những
điểm tại đó một sự kiện xảy ra, trong đó sự kiện đợc định nghĩa nh là một sự xảy ra đột
ngột có thể thay đổi trạng thái của hệ thống. Mặc dù việc mô phỏng sự kiện rời rạc về
mặt lý thuyết có thể đợc thực hiện bởi các tính toán bằng tay, nhng dữ liệu phải đợc lu
trữ và thao tác đối với hầu hết các hệ thống thực tế đợc thực hiện bằng máy tính số.
Mô phỏng liên tục
Việc mô hình hóa theo thời gian một hệ thống bằng cách trình diễn trong đó các
biến trạng thái thay đổi liên tục theo thời gian. Điển hình, các mô hình mô phỏng liên
tục liên quan đến các phơng trình vi sai. Phơng trình vi sai đa ra các mối quan hệ cho
tốc độ thay đổi của các biến trạng thái. Nếu các phơng trình vi sai đơn giản thì chúng
có thể đợc giải để có các giá trị biến trạng thái cùng với mọi giá trị thời gian nh một
hàm của các biến trạng thái bắt đầu từ thời điểm 0. Đối với hầu hết việc mô hình hóa
liên tục, giải pháp mang tính phân tích là không khả thi, tuy nhiên các kỹ thuật phân
tích số, ví dụ nh tính tích phân Runge - Kutta đợc sử dụng để tính tích phân số các ph-
ơng trình vi sai cho các giá trị cụ thể, với các biến trạng thái tại thời điểm 0.
Mô phỏng liên tục - rời rạc tổ hợp
Lữ Văn Thắng, D2001VT
98
Vì có những mô hình không hoàn toàn là rời rạc hay liên tục nên một yêu cầu xây
dựng một mô hình với các tính chất của cả mô phỏng rời rạc lẫn mô phỏng liên tục, do
đó ra đời mô phỏng liên tục - rời rạc tổ hợp. Giữa các biến trạng thái thay đổi liên tục
và rời rạc thờng xảy ra ba loại tơng tác cơ bản:
- Một sự liện rời rạc có thể tạo ra sự thay đổi rời rạc theo giá trị biến trạng thái
liên tục.
- Một sự liện rời rạc có thể làm cho mối liên hệ chi phối biến trạng thái liên tục
thay đổi tại một thời điểm cụ thể.
- Một biến trạng thái liên tục khi nhận giá trị ngỡng có thể làm xảy ra sự kiện rời
rạc hoặc đợc ghi lại trong chơng trình.
Mô phỏng Monte Carlo
Là một sơ đồ sử dụng các số ngẫu nhiên, nghĩa là các biến ngẫu nhiên U(0, 1) đợc
sử dụng để giải các bài toán ngẫu nhiên, khi mà ở đây thời gian không đóng vai trò
quyết định.
Nói chung đây là phơng pháp mô phỏng tĩnh hơn là động. ở đây lu ý rằng mặc dù
một số tác giả định nghĩa việc mô phỏng Monte Carlo là cho bất kỳ phơng pháp mô
phỏng liên quan đến việc sử dụng các số ngẫu nhiên, nhng định nghĩa ở đây là hẹp hơn.
4.2 Giới thiệu công cụ mô phỏng mạng NS
4.2.1 Giới thiệu NS - 2
NS - 2 ( Network Simulator phiên bản 2 ) là chơng trình mô phỏng mạng theo ph-
ơng pháp mô phỏng các sự kiện rời rạc. NS - 2 hỗ trợ mô phỏng mạng có dây và không
dây, TCP, UDP, các giao thức truyền thông điểm - đa điểm, các phơng pháp định tuyến,
.v.v. NS - 2 đợc viết bằng C++ và ngôn ngữ hớng đối tợng Tcl ( Otcl: Object - Oriented
Tool Command Language ).
NS - 2 có một lịch sử khá dài, bắt nguồn từ các phần mềm REAL của UCB (1989)
và NEST của Colombia ( 1992 ). Đến năm 1995, NS - 2 đợc phát triển trong dự án
VINT ( Virtual InterNet Testbed hay nền kiểm thử Internet ảo ). VINT là dự án hợp tác
giữa AT&T Reseach, Lawrence Berkeley National Laboratory, ETH TIK, Xerox
PARC, UCB - Berkeley và USC/ISI. Hiện nay, Ns đang tiếp tục đợc phát triển trong
các dự án SAMAN và CONSER, cùng với sự hợp tác của nhiều nhà nghiên cứu và
Lữ Văn Thắng, D2001VT
99
ACIRI. Những tổ chức đã đóng góp đáng kể vào NS - 2 là UCB Daeledus, UMU
Monarch và Sun MicroSystems.
So với các phần mềm mô phỏng mạng khác, NS - 2 có những u thế sau:
- NS - 2 có mã nguồn mở miễn phí.
- NS - 2 có kiến trúc mở, tạo điều kiện thuận lợi cho việc mở rộng.
- NS - 2 đợc phát triển từ các phần mềm nổi tiếng trên thế giới nh REAL, NEST
nên nó có những điểm mạnh và đã khắc phục đợc những yếu điểm của các phần
mềm này.
- NS - 2 hỗ trợ các tính năng cơ bản của mạng IP, từ đó có thể phát triển thêm các
phần tử mạng.
- NS - 2 có cấu trúc modul, rất thuận tiện cho việc nghiên cứu tìm hiểu và phát
triển.
Nhìn từ phía ngời sử dụng, NS - 2 là chơng trình biên dịch mã Otcl đợc liên kết tới
th viện C++. Các đối tợng cơ sở nh TCP, CBR, ... đợc xây dựng trong C++. Đầu vào NS
- 2 là tập mã lệnh Otcl, đầu ra là các tập tin mô phỏng tiến trình theo yêu cầu đợc thể
hiện trong tập lệnh Otcl.
Hình 4.1 Cấu trúc chơng trình NS -2
Kết quả mô phỏng có thể quan sát bằng hình ảnh mô tả trực quan với ứng dụng
Nam ( the Network Animator ), bằng đồ thị ( sử dụng Xgraph ) hoặc có thể đợc xử lý
Lữ Văn Thắng, D2001VT
Tập lệnh
Otcl ( mã
nguồn )
Chương trình
biên dịch Otcl
Kết quả mô
phỏng
Các thư viện
C++
NS-2
100
bằng các tập lệnh tuỳ chọn. Với cấu trúc này, việc sử dụng NS - 2 trở lên đơn giản hơn
nhiều so với sử dụng trực tiếp C++ nhng vẫn có đợc những tính năng của C++.
Với những đặc điểm trên, NS - 2 thực sự là một công cụ phần mềm hữu ích cho
việc học tập, nghiên cứu mạng thông tin, giúp cho việc thực hành mạng trở lên hiệu
quả hơn.
4.2.2 Cơ chế hoạt động của phần mềm NS - 2
Hoạt động của NS - 2 đợc chia thành hai phần là phần dữ liệu ( đợc xây dựng
trong C++ ) và phần điều khiển ( đợc xây dựng trong Otcl ). Để giảm thời gian xử lý
gói và sự kiện, thời biểu sự kiện và các đối tợng thành phần mạng cơ bản trong phần số
liệu đợc viết và biên dịch bằng C++. Các đối tợng đợc biên dịch này đợc tạo sẵn và đợc
liên kết tới Otcl qua bộ thông dịch Otcl. Mỗi đối tợng C++ này đợc điều khiển và đợc
thiết lập các tham số thông qua một đối tợng điều khiển tơng ứng trong Otcl. Các đối t-
ợng C++ không cần điều khiển hoặc chỉ hoạt động nội tại trong phần C++ thì không
cần liên kết đến Otcl. Tơng tự, cũng có một số đối tợng ( không nằm trong phần dữ liệu
) có thể hoạt động hoàn toàn chỉ trong Otcl. Các đối tợng điều khiển trong Otcl đợc
ánh xạ 1 - 1 tới các đối tợng cần điều khiển trong C++. Nh vậy, cấu trúc phân cấp các
đối tợng này trong hai phần C++ và Otcl là tơng tự nhau. Quan hệ giữa C++ và Otcl đ-
ợc minh họa ở hình dới đây.
Hình 4.2 Tính đối ngẫu giữa C++ và Otcl
Hình 4.3 chỉ ra kiến trúc NS - 2. Trong kiến trúc này, ngời sử dụng ( không phải
ngời phát triển NS - 2 ) ở vị trí góc dới bên trái. Dữ liệu đầu vào là tập lệnh Otcl đợc
phân tích bởi lớp Tcl. Việc thiết lập và chạy mô phỏng trong Tcl sử dụng các đối tợng
Lữ Văn Thắng, D2001VT
101
trong th viện Otcl. Thời biểu các sự kiện và hầu hết các thành phần mạng hoạt động
trong C++ và đợc liên kết tới Otcl. Việc này đợc thực hiện bởi lớp tclcl.
Chơng trình NS - 2 có nhiều phiên bản chạy trên các hệ điều hành khác nhau và
với các yêu cầu cài đặt khác nhau. Trong đồ án này, phiên bản ns - allinone - 2.28,
chạy trên Windows trong môi trờng Cygwin /X đợc sử dụng để mô phỏng một số hoạt
động báo hiệu trên cơ sở giao thức khởi tạo phiên SIP. Cygwin /X cung cấp một giao
diện chơng trình ứng dụng ( API ) giống nh hệ điều hành UNIX trên khuôn dạng
Windows do NS - 2 không chạy trực tiếp trên Windows.
Hình 4.3 Kiến trúc tổng quan của NS - 2
4.3 Xây dựng chơng trình mô phỏng
Phần này sẽ dùng NS - 2 phiên bản ns - allinone - 2.28 để mô phỏng một số hoạt
động báo hiệu trên cơ sở giao thức SIP. Phiên bản này đợc chạy trên Windows trong
môi trờng Cygwin /X. Trong chơng trình mô phỏng của đồ án này, kết quả mô phỏng
một số hoạt động báo hiệu trên cơ sở giao thức SIP đợc quan sát bằng hình ảnh mô tả
trực quan với ứng dụng Nam.
Lữ Văn Thắng, D2001VT
Thời biểu các sự kiện NS-2
Các
thành
phần
mạng
Tcl 8.0
Otcl
tclcl
102