Hình 4.4 minh họa vòng lặp chính của lịch trình sự kiện thời gian thực của NS, được cài đặt chi tiết trong tệp tin scheduler.cc trong thư mục ns- 2.xx\common. Hàm dispatch(e,t) (dòng 19) thiết lập thời gian t cho đồng hồ mô phỏng và thực hiện sự kiện e. Hàm tod() trả về thời gian hiện tại (dòng 9, 23, 29,38). Lịch trình bắt đầu bằng việc thực hiện tất cả các sự kiện “tới hạn” trong hàng đợi (dòng 18 đến 24). Nếu không còn sự kiện nào trong hàng đợi
thì sẽ chờ cho có một sự kiện xảy ra (dòng 28). Trong trường hợp còn sự kiện trong hàng đợi mà chưa tới hạn thì chờ cho đến khi tới hạn hoặc có một sự kiện khác xảy ra (dòng 37). Trong quá trình xử lý sự kiện, các sự kiện phát sinh sẽ được chèn vào hàng đợi.
Bộ lập lịch thời gian thực trên không đảm bảo hoàn toàn chính xác, đơn giản nó chỉ cố gắng đồng bộ hóa thời gian mô phỏng với thời gian thực. Điều này sẽ được phân tích rõ hơn. Thứ nhất, thời gian thực hiện sự kiện mô phỏng có thể cần nhiều thời gian hơn thời gian sự kiện xảy ra ở thế giới thật. Điều này thường xảy ra vì hạn chế của thiết bị phần cứng, phương tiện lưu trữ vật lý của máy tính chạy bộ mô phỏng. Thứ hai, trong một mạng thực, nhiều sự kiện có thể được thực hiện đồng thời tại nhiều nút khác nhau. Điều này không thể thực hiện được trong một bộ mô phỏng như NS. Hơn nữa, nếu nguồn lưu lượng lớn từ mạng thực được nạp vào bộ mô phỏng và nó cần giữ lại để mô phỏng độ trễ đường truyền, thì máy tính chạy bộ mô phỏng cần phải có bộ nhớ RAM rất lớn để có thể tạm thời lưu lại nguồn lưu lượng này. Thí dụ, một đường backbone có dung lượng cỡ 10Gbps, nếu NS muốn giữ các gói tin lại để mô phỏng độ trễ truyền 20ms, thì NS cần sử dụng 25,6MB RAM). Đó là các nhược điểm của bộ mô phỏng khi tương tác với mạng thực. Tuy nhiên, vấn đề này có thể được khắc phục phần nào nếu ta kết hợp được bộ mô phỏng với tính toán phân tán cùng với hệ thống máy tính có hiệu năng cao.
Để sử dụng khả năng emulation của NS, ta phải khai báo lịch trình thời gian thực ở đầu kịch bản mô phỏng như sau:
set ns new Simulator
$ns use-scheduler RealTime
4.3 Tap Agents
Tap agent là đối tượng có thể gửi và nhận gói tin từ mạng thực của các giao thức ở các tầng khác nhau. Vì định dạng gói tin trên mạng thực và trong chương trình mô phỏng khác nhau nên Tap agent có nhiệm vụ chuyển đổi gói tin từ mạng thực sang gói tin mô phỏng và ngược lại.