Theo quan điểm ngƣời dùng thuần túy , NS là mô ̣t bô ̣ thông di ̣ch các ki ̣ch bản Tcl hƣớng đối tƣợng . NS gồm có các bô ̣ đi ̣nh trình các sƣ̣ kiê ̣n mô phỏng , các thƣ viê ̣n đối tƣơ ̣ng thành phần ma ̣ng , thƣ viê ̣n các m odule ta ̣o lâ ̣p ma ̣ng (thƣ̣c tế viê ̣c kết nối các module đƣơ ̣c thƣ̣c hiê ̣n bằng các hàm thành viên của các đối tƣợng mô phỏng cơ bản ).
Khi sƣ̉ du ̣ng NS -2, ngƣời dùng phải lâ ̣p trình b ằng ngôn ngữ kịch bản Tcl . Để tạo lập và triển khai một mạng mô phỏng , ngƣời dùng viết mô ̣t ki ̣ch bản Tcl để khởi ta ̣o mô ̣t bô ̣ đi ̣nh trình sƣ̣ kiê ̣n , thiết lâ ̣p topo ma ̣ng thông qua viê ̣c sƣ̉ du ̣ng các đối tƣợng thành phần mạng v à các hành liên kết trong các thƣ viện của NS . Viê ̣c thiết lâ ̣p mô ̣t mạng là ghép nối các đƣờng dữ liệu giữa các đối tƣợng mạng bằng cách đặt con trỏ của mô ̣t đối tƣợng này tới đi ̣a chỉ của mô ̣t đối tƣợng khác tƣơng ƣ́ng . Khi muốn ta ̣o mô ̣t đối tƣơ ̣ng ma ̣ng mới, thì ngƣời dùng có thể tạo ra đối tƣợng đó bằng cách xây dựng một đối tƣơ ̣ng mới hoă ̣c tổ hợp các đối tƣợng có sẵn trong các thƣ viê ̣n đối tƣợng của NS và ta ̣o ra các đƣờng liên kết dƣ̃ liê ̣u giƣ̃a chúng.
Mô ̣t thành phần quan tro ̣ng của NS (bên ca ̣nh các đối tƣợng ma ̣ng ) là bộ định trình sự kiện . Mô ̣t sƣ̣ kiê ̣n trong NS là mô ̣t mã nhâ ̣n da ̣ng gói , mã này là duy nhất đối với mô ̣t gói, sƣ̣ kiê ̣n đƣợc đi ̣nh thời và gắn với một con trỏ trỏ đến đối tƣợng sẽ xử lý sự kiê ̣n đó. Trong NS, bô ̣ đi ̣nh trình sƣ̣ kiê ̣n giám sát toàn bô ̣ thời gian mô phỏng , quản lý và kích hoạt các sự kiện theo một hàng đợi . Khi mô ̣t sƣ̣ kiê ̣n đƣợc kích hoa ̣ t, bô ̣ đi ̣nh trình sẽ gọi tới thành phần đối tƣợng mạng xử lý tƣơng ứng (thƣờng cũng là đối tƣợng tạo ra sự kiện đó ), cho phép đối tƣợng này thƣ̣c hiê ̣n các tác vu ̣ thích hợp lên gói gắn với sƣ̣ kiê ̣n. Các thành phần đối tƣợng ma ̣ng truyền thông với nhau bằng cách trao đổi các gói. Về nguyên tắc , tất cả các thành phần ma ̣ng luôn cần phải có mô ̣t khoảng thời gian nhất đi ̣nh để xƣ̉ lý gói (trễ). Trễ này đƣợc thể hiê ̣n thông qua viê ̣c sƣ̉ du ̣ng c ác bộ đi ̣nh trình sƣ̣ kiê ̣n : gƣ̉i đi mô ̣t sƣ̣ kiê ̣n gắn với gói và chờ sƣ̣ kiê ̣n đó đƣợc kích hoa ̣t trở lại trƣớc khi xử lý các gói tiếp theo . Ví dụ: mô ̣t thành phần ma ̣ng mô phỏng mô ̣t thiết bi ̣ chuyển ma ̣ch gói với 20 ms trễ, nó sẽ gửi đi một sự kiện trễ 20 ms gắn với gói cần phải chuyển ma ̣ch tới bô ̣ đi ̣nh trình sƣ̣ kiê ̣n, bô ̣ đi ̣nh trình sau 20 ms sẽ đƣa sƣ̣ kiê ̣n đó ra khỏi hàng đội và kích hoạt nó trở lại thành phần mạng chuyển mạch , thành phần chuyển mạch sẽ thực hiện việc chuyển gói tƣơng ứng tới đối tƣợng liên kết đầu ra của nó .
Mô ̣t ƣ́ng du ̣ng nƣ̃a của bô ̣ đi ̣nh trình sƣ̣ kiê ̣n là ta ̣o ra các bô ̣ đi ̣nh thời . VD: giao thƣ́c TCP cần bô ̣ đi ̣nh thời để giám sát thờ i gian chờ khi phát đi mô ̣t gói nhằm thƣ̣c hiê ̣n
viê ̣c phát la ̣i gói . Khi đó, bô ̣ đi ̣nh thời sƣ̉ du ̣ng bô ̣ đi ̣nh trình tƣơng tƣ̣ nhƣ trong trƣờng hơ ̣p giả lâ ̣p trễ, sƣ̣ khác biê ̣t duy nhất là bô ̣ đi ̣nh thời đo giá tri ̣ thời gian gắn vớ i mô ̣t gói, thƣ̣c hiê ̣n các tác vu ̣ liên quan đến gói đó sau mô ̣t khoảng thời gian nhất đi ̣nh trôi qua mà không thực hiện việc mô phỏng trễ.
NS đƣơ ̣c viết bằng hai ngôn ngƣ̃ OTcl và C ++. Để đảm bảo tính hiê ̣u quả NS phân chia đƣờng dƣ̃ liê ̣u và đƣờng điều khiển riêng biê ̣t. Để giảm thời gian chƣơng trình xƣ̉ lý các sƣ̣ kiê ̣n và gói (thời gian này không phải thời gian mô phỏng ),thì bộ định trình sƣ̣ kiê ̣n và các đối tƣợng ma ̣ng cơ bản trong đƣờng dƣ̃ liê ̣u đ ƣợc viết và biên dịch bằng ngôn ngƣ̃ C++. Các đối tƣợng sau biên dịch vẫn có thể đƣợc sử dụng bởi bộ thông dịch Otcl thông qua các liên kết Otcl , các liên kết này tạo ra đối tƣợng OTcl tƣơng ứng cho mỗi đối tƣơ ̣ng C ++, cũng nh ƣ ta ̣o ra các hàm và các biến thành viên trong đối tƣợng Otcl tƣơng ƣ́ng với các biến và hàm thành viên trong đối tƣợng C ++. Bằng cách này viê ̣c điều khiển các đối tƣợng C ++ có thể đƣợc thực hiện thông quan OTcl , ngoài ra ta cũng có thể thêm các biến và hàm thành viên khác vào đối tƣợng OTcl . Các đối tƣợng đƣơ ̣c viết bằng C ++ mà không cần thiết phải điều khiển trực tiếp trong quá trình mô phỏng cũng không cần phải liên kết sang OTcl.
Mă ̣t khác m ột đối tƣợng không nằm trên đƣờng số liệu có thể đƣợc xây dựng hoàn toàn bằng OTcl . Hình 3-3 minh ho ̣a mô ̣t cây phân cấp đối tƣợng trong C ++ và OTcl.