NS là mô phỏng mạng phát triển tại UC Berkely dùng cho mô phỏng mạng IP. Nó thực thi đầy đủ các giao thức mạng như TCP, UDP, các nguồn lưu lượng như FTP, Telnet, Web, CBR và VBR, các kỹ thuật quản lý hàng đợi như Drop Tail, RED và CBQ, các thuật toán định tuyến như Dijkstra, và nhiều hơn thế. NS 2 viết trên C++ và Otcl (ngôn ngữ lập trình Tcl với mở rộng hướng đối tượng phát triển tại MIT).
Khi dùng NS, kịch bản chương trình mô phỏng được viết trên ngôn ngữ Otcl. Tập lệnh OTcl giúp lập kịch bản các sự kiện (thời gian bắt đầu và kết thúc kết nối), đặt cấu trúc mạng, v.v. Khi người dùng muốn tạo nên đối tượng mạng mới, có thể dễ dàng tạo một đối tượng bằng cách viết đối tượng mới hoặc bằng cách tạo đối tượng ghép từ thư viện đối tượng và tạo (plump) đường dữ liệu qua đối tượng.
Lập biểu sự kiện và các đối tượng thành phần mạng cơ bản trên đường dữ liệu được viết và biên dịch bằng C++. Đối tượng biên dịch thực hiện được qua kết nối Otcl, tạo nên liên kết giữa đối tượng Otcl với mỗi đối tượng C++ và tạo hàm điều khiển và biến cấu hình trong đối tượng C++ thực thi như hàm thành viên và biến
Hình 4.1.1: Mô hình mô phỏng
Hình 4.1.2: Tổng quan đơn giản hóa của NS
thành viên của đối tượng Otcl tương ứng. Với cách này, điều khiển của đối tượng C++ được truyền tới Otcl. Mỗi đối tượng có thể được thực hiện hoàn toàn trong Otcl hoặc C++. Hình 4.1.3 cho thấy ví dụ về hệ thống cấp bậc đối tượng trong C++ và OTcl. Một điều cần chú ý trong hình vẽ là đối tượng C++ có kết nối OTcl tạo thành hệ thống cấp bậc, Trên hình là hệ thống cấp bậc đối tượng Otcl phù hợp và đơn giản của C++.
Hình 4.1.4 chỉ ra cấu trúc chung của NS. Người dùng (không phải người phát triển NS) chỉ cần quan tâm góc dưới bên trái trong hình, và thiết kế, chạy mô phỏng trong Tcl dùng đối tượng mô phỏng trong thư viện Otcl, lập biểu sự kiện thực hiện trong C++ và kết nối tới Otcl khi sử dụng tclcl. Tất cả cùng nhau tạo thành NS, phiên dịch Tcl mở rộng hướng đối tượng với thư viện mô phỏng mạng.
Ở hình 4.1.2, khi một mô phỏng kết thúc, NS đưa ra một hoặc nhiều file text cơ bản bao gồm dữ liệu mô phỏng chi tiết. Dữ liệu đó có thể dùng để phân tích mô phỏng hoặc dữ liệu có thể được đưa vào công cụ trình bầy mô phỏng đồ họa gọi là NAM (Network Animator) a một phát triển của dự án VINT. NAM có giao diện đồ họa đẹp như một player CD (play, fast forward, rewind, pause, v.v.). Hơn nữa, nó có thể đưa ra thông tin bằng biểu đồ về thông lượng và số các gói rơi tại mối đường liên kết, mặc dù thông tin đồ họa không thể dùng cho hiển thị mô phỏng chính xác.