NS2 là bộ mô phỏng mạng vận hành theo sự kiện rời rạc (Discrete Event-Drivent Simulator), được phát triển như một phần của dự án VINT (Virtual Internet Testbeb). Nó được xây dựng dựa trên hai ngôn ngữ là C++ và OTcl. Phần “nhân” của nó ít thay
đổi được viết bằng ngôn ngữ C++, bao gồm các module thực hiện mô phỏng và các chức năng cơ bản nhất của mạng. Phần vỏ được viết bằng ngôn ngữ Otcl, là một dạng ngôn ngữ kịch bản, thực hiện việc định cấu hình và điều khiển mô phỏng.
Hình 20: Tiến trình hoạt động của một trình mô phỏng
Hình trên cho ta thấy, NS2 là bộ thông dịch ngôn ngữ kịch bản hướng đối tượng Otcl bao gồm bộ lập lịch sự kiện, các thành phần mạng và các module thiết đặt mạng.
Để cài đặt và chạy chương trình, người ta phải viết một chương trình mô phỏng bằng ngôn ngữ kịch bản Otcl. Chương trình này sẽ khởi tạo bộ lập lịch, thiết lập cấu hình mạng với các đối tượng mạng và các hàm thiết đặt mạng. Trong quá trình chạy chương trình, chúng ta có thể quan sát trực quan các sự kiện qua công cụ NAM. Khi kết thúc quá trình chạy, kết quả mô phỏng sẽđược ghi lại trong các file vết (trace file). Chúng ta có thểđánh giá, phân tích mạng thông qua các file này.
Ngày nay, NS2 có thể coi là một công cụ quan trọng để nghiên cứu, thiết kế và mô phỏng mạng. Với những mạng quy mô lớn, việc thiết kế, đánh giá hiệu suất mạng trước khi triển khai là vô cùng quan trọng vì nó giúp hạn chế xảy ra các sự cố như ắc nghẽn mạng hay hiệu suất mạng không được như mong muốn. Vì là một phần mềm mã nguồn mở nên nó có thể cài được trên cả Windows 32 bit hay Linux. Cộng đồng sử
dụng NS2 cũng rất lớn: trên một nghìn trường đại học, viện nghiên cứu, ... với hơn mười nghìn người sử dụng trên toàn thế giới.