NS-2 là một hệ mô phỏng máy tính được xây dựng và phát triển bởi dự án VINT (Virtual InterNetwork Testbed) của phòng thí nghiệm quốc gia Lawrence Berkeley, Hoa Kỳ, với mục đích ban đầu nhằm xây dựng một bộ mô phỏng công cộng với 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 các nhà nghiên cứu đánh giá được các giao thức trong các điều kiện khác nhau. NS được phát triển từ bộ mô phỏng REAL (Realistic and large) của S.Keshav năm 1989. Các phiên bản 2.xx của NS ra đời sau năm 1997. Phiên bản mới nhất hiện nay là 2.32 và vì vậy, nó được gọi là NS-2 [5,9,15,16].
NS-2 là bộ mô phỏng được xây dựng trên hai ngôn ngữ là OTCL và C++, là một máy mô phỏng vận hành bởi các sự kiện rời rạc, có tính tuần tự. Nhờ vậy, NS-2 có thể mở rộng bởi người sử dụng như cho phép người dùng lập trình thay đổi cấu hình và mở rộng mô hình mạng mô phỏng trên nền của NS-2. Ban đầu, NS-2 được thiết kế để chạy trên nền hệ điều hành Unix/Linux. Hiện nay, đã có phiên bản NS-2 chạy trong môi trường Window.
Kịch bản mô phỏng cho NS-2 có thể chạy theo vết (trace-driven) hoặc chạy tự động. 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 cũng như thời gian xảy ra các sự kiện. Luồng các sự kiện này cũng như thời gian xảy ra được sử dụng để đưa vào làm dữ liệu vào mô hình mô phỏng NS-2. Trong mô phỏng tự động, NS-2 sẽ sinh ra dẫy các yêu cầu tài nguyên có tính xác suất. Các chủ đề chính thường được nghiên cứu bằng NS-2 là: lựa chọn một trong số các cơ chế, nghiên cứu tỉ mỉ các hành trạng 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.