2.3.2.1 Giới thiệu
Các nhà nghiên cứu mạng đã phát triển trên quy mô lớn các bộ mô phỏng định hướng vào các nghiên cứu chuyên biệt của họ. Do tính chất định hướng của các bộ
mô phỏng này nên các kết quả nghiên cứu thường không phản ánh các kinh nghiệm phổ biến. Việc tạo ra một bộ mô phỏng mạng nhiều tính năng, với một cộng đồng người sử dụng đông đảo, thuộc nhiều lĩnh vực chuyên sâu khác nhau về mạng máy
tính sẽ đem lại những lợi ích to lớn, lâu dài. Tính đúng đắn của bộ mô phỏng sẽ được kiểm nghiệm bởi cả cộng đồng, các kết quả và kinh nghiệm nghiên cứu bằng công cụ mô phỏng này dễ dàng được chia sẻ và thừa nhận. Nhận thức rõ vềđiều đó, Bộ Quốc phòng Mỹ đã cấp kinh phí cho dự án VINT (Virtual InterNetwork Testbed) nhằm xây dựng một bộ mô phỏng công cộng, có chứa một tập rất lớn các mô hình để nghiên cứu về mạng, cung cấp cho các nhà nghiên cứu nhiều khả năng mới trong thực nghiệm, giúp họ đánh giá được các giao thức trong các điều kiện khác nhau. VINT đã chọn bộ mô phỏng mạng NS, do nhóm nghiên cứu tại Phòng thí nghiệm Quốc gia Lawrence Berkeley, Hoa Kỳ, xây dựng để tiếp tục phát triển. NS được phát triển từ bộ mô phỏng REAL (Realistic and Large) của S. Keshav từ
năm 1989, còn REAL thì bắt nguồn từ bộ mô phỏng NEST (Network Simulation Testbed). Các phiên bản 2.xx của NS ra đời sau năm 1997 và từđó người ta thường gọi bộ mô phỏng là NS-2, nó khác khá nhiều so với các phiên bản 1.xx. Đây là một bộ mô phỏng vận hành theo các sự kiện rời rạc. Người sử dụng có thể lập trình thay
đổi cấu hình và mở rộng mô hình mạng mô phỏng một cách dễ dàng, ngay cả khi chương trình mô phỏng đang chạy. NS được thiết kếđể chạy trên nền hệ điều hành Unix/Linux, sau này người ta cũng xây dựng một số phiên bản NS chạy trong môi trường Windows [22].
Kịch bản mô phỏng cho NS có thể chạy theo vết (trace-driven) hoặc chạy tự động. Ởđây, vết là một luồng các sự kiện chính quan sát được trong một hệ thống
đang hoạt động, thời gian xảy ra các sự kiện được ghi lại, sau đó luồng các sự kiện này được sử dụng để đưa vào làm input cho mô hình mô phỏng NS. Trong mô phỏng chạy tự động, chính NS sẽ sinh ra dãy các yêu cầu tài nguyên có tính xác suất. Ưu điểm của mô phỏng chạy tựđộng so với mô phỏng chạy theo vết là: luồng các sự kiện được sinh ra theo cách nhân tạo, do đó, nhà nghiên cứu nắm được và có thể chủ động điều khiển được quá trình sinh ra luồng sự kiện này. Sau khi đã xây dựng mô hình mô phỏng, người nghiên cứu sẽ cho nó hoạt động lặp đi lặp lại với các tham số và cấu hình hệ thống khác nhau, rồi so sánh các kết quả hiệu năng; bằng cách đó xác định được các tham số và cấu hình tối ưu.
Hiện nay, cộng đồng sử dụng NS bao gồm trên một nghìn trường đại học, viện nghiên cứu, công ty... với hơn 10 nghìn người sử dụng trên toàn thế giới. Cộng
đồng sử dụng NS có một diễn đàn chung để trao đổi các vấn đề có liên quan [23]. Ba chủđề chính thường được nghiên cứu bằng NS là: lựa chọn một trong một số
cơ chế, nghiên cứu tỉ mỉ các hành vi phức tạp và điều tra các tương tác còn chưa biết giữa các giao thức.
Nhìn chung, bộ mô phỏng NS có các đặc điểm nổi bật chính sau:
• Khả năng trừu tượng hoá: có thể thay đổi độ mịn của mô phỏng cho phù hợp với cả các mô phỏng chi tiết lẫn các mô phỏng mức cao.
• Khả năng phát sinh ra kịch bản: NS có khả năng tạo ra một cách tự động các mẫu lưu lượng, các hình trạng mạng, các sự kiện thay đổi động và phức tạp, kể
cả việc mô phỏng các nút mạng và đường truyền bị hỏng.
• Khả năng mô phỏng tương tác với mạng thực: NS có một giao diện đặc biệt, cho phép lưu lượng thực đi qua nút mạng tương tác với bộ mô phỏng chạy trên nút mạng đó.
• Khả năng hiển thị trực quan: Công cụ hiển thị NAM giúp chúng ta thấy được hình ảnh hoạt động của mạng bằng trực giác và trợ giúp cho việc gỡ rối giao thức cần nghiên cứu.
• Khả năng mở rộng được: Bộ mô phỏng NS có khả năng mở rộng được dễ dàng khi người nghiên cứu muốn bổ sung các chức năng mới, thử nghiệm các kịch bản khác nhau và nghiên cứu các giao thức mới.
Các thành phần của bộ chương trình mô phỏng NS
Trong bộ chương trình mô phỏng mạng NS, chương trình mô phỏng NS là thành phần chính. Người nghiên cứu có thể lập trình cho nó để định ra hình trạng (tô-pô) mạng tĩnh hoặc động, cũng như tạo ra các luồng lưu lượng theo một số phân bố đã
được định nghĩa trước. Người nghiên cứu có thể lựa chọn chính sách quản lý hàng
đợi tại các nút mạng, cũng như có thể đưa các mô hình sinh lỗi vào các đường truyền. Một số mô hình lưu lượng hay được sử dụng trong nghiên cứu đã được tích hợp trong NS, thí dụ lưu lượng có tốc độ không đổi, lưu lượng với sự đến của các
gói số liệu theo phân bố Poisson. Các ứng dụng phổ biến cũng được tích hợp trong NS, thí dụ web, FTP, telnet, Real-Audio. Các giao thức giao vận như TCP (Tahoe, Reno, New-Reno, Sack, Vegas...), UDP được NS hỗ trợ rất tốt. Rất nhiều thuật toán
định tuyến phổ biến trong các mạng có dây và không dây cũng như các môi trường vật lý khác nhau đã và sẽđược đưa thêm vào bộ mô phỏng.
Thành phần thứ hai là các công cụ hiển thị trực quan NAM và XGRAPH. NAM là công cụ hiển thị, cho phép người nghiên cứu nhìn thấy bằng đồ hoạ hình trạng mạng, gồm các nút mạng, các đường truyền nối các nút ở dạng tĩnh và động; NAM cũng có thể hiển thị hành vi động của hàng đợi tại các nút, cũng như sự chuyển
động của các gói số liệu trên mạng. Đối với mạng di động không dây, các phiên bản mới của NAM có thể hiển thị hình trạng động của mạng, tức là sự chuyển động của các nút mạng trong không gian hai chiều.
XGRAPH [21] là một chương trình ứng dụng chạy trong X-Windows, nó có chức năng vẽđồ thị trong không gian hai chiều, dựa trên dữ liệu nhận vào từ các file dạng text, do chương trình mô phỏng sinh ra. XGRAPH có thể vẽ đồ thị dạng
đường (Line graph), đồ thịđiểm (Scatter plots) và đồ thị cột (Bar charts). Các đồ thị
này có thể được sao lưu (save) dưới dạng các file ảnh thông dụng và sử dụng cho các chương trình ứng dụng khác nhau.
Bộ mô phỏng NS đưa kết quả ra tệp vết (trace file) , chứa thông tin vết của các sự
kiện trong thời gian tiến hành chạy mô phỏng. Chính người nghiên cứu phải xử lý số liệu do bộ mô phỏng sinh ra; công cụ thường được sử dụng là các ngôn ngữ
Awk, Perl, hoặc Tcl. Một số nhà nghiên cứu đã đóng góp các kịch bản mô phỏng hoặc gói phần mềm xử lý kết quả mô phỏng cho cộng đồng người sử dụng NS.
Các chức năng mô phỏng chính của NS [23], [37]
Đối với mạng có dây:
− Các đường truyền điểm-điểm đơn công, song công, mạng cục bộ LAN.
− Các chính sách phục vụ hàng đợi.
− Vấn đềđịnh tuyến Unicast/Multicast (Unicast/Multicast routing).
− Các giao thức tầng Giao vận: TCP/Tahoe/Reno/New-Reno/Sack/Vegas, UDP,
điều khiển lưu lượng và điều khiển tắc nghẽn.
− Các giao thức tầng Ứng dụng, Web caching, truyền luồng dữ liệu đa phương tiện.
Đối với mạng không dây:
− Kênh truyền.
− Sự di chuyển của các nút mạng trong không gian hai chiều.
− Mạng LAN không dây (WLAN) 802.11.
− Mobile IP.
− Các thuật toán định tuyến trong mạng không dây đặc biệt (Adhoc networks): DSDV, DSR, AODV, TORA...
− Liên mạng sử dụng vệ tinh (Satellite Networking).
Trong lĩnh vực mạng hỗn hợp có dây và không dây:
− Trạm cơ sở (Base station) đóng vai trò gateway giữa mạng có dây và mạng không dây.
− Snoop TCP.